Files
2026-07-13 13:34:48 +08:00

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']