103 lines
3.1 KiB
TypeScript
103 lines
3.1 KiB
TypeScript
import { z, IntegrationDefinitionProps, messages, ConfigurationDefinition } from '@botpress/sdk'
|
|
import { issueSchema } from './schemas'
|
|
|
|
export { actions } from './actions'
|
|
export { events } from './events'
|
|
export { states } from './states'
|
|
export * as schemas from './schemas'
|
|
|
|
export const configuration = {
|
|
identifier: {
|
|
linkTemplateScript: 'linkTemplate.vrl',
|
|
},
|
|
schema: z.object({
|
|
displayName: z.string().optional().title('Display Name').describe('The name displayed in message transmissions'),
|
|
avatarUrl: z.string().optional().title('Avatar URL').describe('The web address for the profile picture'),
|
|
}),
|
|
} as const satisfies ConfigurationDefinition
|
|
|
|
export const configurations = {
|
|
apiKey: {
|
|
title: 'API Key',
|
|
description: 'Configure Linear with an API Key.',
|
|
schema: z.object({
|
|
apiKey: z.string().title('API Key').describe('The API key for Linear'),
|
|
webhookSigningSecret: z
|
|
.string()
|
|
.secret()
|
|
.optional()
|
|
.title('Webhook Signing Secret (deprecated)')
|
|
.describe(
|
|
'The secret key for verifying incoming Linear webhook events if the webhook has been registered manually. ' +
|
|
"If you don't provide this value, a webhook will be created automatically."
|
|
),
|
|
}),
|
|
},
|
|
} as const satisfies IntegrationDefinitionProps['configurations']
|
|
|
|
export const channels = {
|
|
issue: {
|
|
title: 'Issue',
|
|
description: 'A linear issue',
|
|
messages: { ...messages.defaults, markdown: messages.markdown, bloc: messages.markdownBloc },
|
|
message: {
|
|
tags: {
|
|
id: {
|
|
title: 'Comment ID',
|
|
description: 'The ID of the comment on Linear',
|
|
},
|
|
},
|
|
},
|
|
conversation: {
|
|
tags: {
|
|
id: {
|
|
title: 'Issue ID',
|
|
description: 'The ID of the issue on Linear',
|
|
},
|
|
title: {
|
|
title: 'Issue Title',
|
|
description: 'The title of the issue',
|
|
},
|
|
url: {
|
|
title: 'Issue URL',
|
|
description: 'The URL of the issue on Linear',
|
|
},
|
|
parentId: {
|
|
title: 'Parent Issue ID',
|
|
description: 'The ID of the parent issue on Linear',
|
|
},
|
|
parentTitle: {
|
|
title: 'Parent Issue Title',
|
|
description: 'The title of the parent issue',
|
|
},
|
|
parentUrl: {
|
|
title: 'Parent Issue URL',
|
|
description: 'The URL of the parent issue on Linear',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
} as const satisfies IntegrationDefinitionProps['channels']
|
|
|
|
export const user = {
|
|
tags: {
|
|
id: {
|
|
title: 'User ID',
|
|
description: 'The ID of the user on Linear',
|
|
},
|
|
},
|
|
} as const satisfies IntegrationDefinitionProps['user']
|
|
|
|
export const entities = {
|
|
issue: {
|
|
title: 'Issue',
|
|
description: 'A linear issue',
|
|
schema: issueSchema,
|
|
},
|
|
issueConversation: {
|
|
title: 'Issue Conversation',
|
|
description: 'A conversation representing a linear issue',
|
|
schema: z.object({ id: z.string().title('Issue ID').describe('The issue ID on Linear') }),
|
|
},
|
|
} as const satisfies IntegrationDefinitionProps['entities']
|