c4e897a7b5
- Add front component form to create linear issue <img width="1512" height="831" alt="image" src="https://github.com/user-attachments/assets/ffbb223f-30a8-4c64-ac6d-002c29b604c1" /> <img width="1512" height="829" alt="image" src="https://github.com/user-attachments/assets/a5ed2464-35a9-4a60-804c-5f15eb0043b4" /> - improve marketplace Linear app page <img width="1302" height="834" alt="image" src="https://github.com/user-attachments/assets/cdec7ec2-953d-4a49-a797-5369834b03c1" /> - update admin settings to display non secret values <img width="861" height="473" alt="image" src="https://github.com/user-attachments/assets/41dadf02-aa5d-4eb6-befe-0ad8ad4049b2" />
113 lines
3.5 KiB
TypeScript
113 lines
3.5 KiB
TypeScript
import { defineLogicFunction } from 'twenty-sdk/define';
|
|
|
|
import { CREATE_LINEAR_ISSUE_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
|
|
import { createLinearIssueHandler } from 'src/logic-functions/handlers/create-linear-issue-handler';
|
|
|
|
export default defineLogicFunction({
|
|
universalIdentifier: CREATE_LINEAR_ISSUE_UNIVERSAL_IDENTIFIER,
|
|
name: 'create-linear-issue',
|
|
description:
|
|
'Create a Linear issue on behalf of the connected user. Requires a teamId (call list-linear-teams to discover one) and a title.',
|
|
timeoutSeconds: 30,
|
|
handler: createLinearIssueHandler,
|
|
toolTriggerSettings: {
|
|
inputSchema: {
|
|
type: 'object',
|
|
properties: {
|
|
teamId: {
|
|
type: 'string',
|
|
description:
|
|
'The Linear team ID to create the issue in. Use list-linear-teams to discover available teams.',
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
description: 'The issue title.',
|
|
},
|
|
description: {
|
|
type: 'string',
|
|
description: 'Optional issue description (Markdown supported).',
|
|
},
|
|
priority: {
|
|
type: 'integer',
|
|
description:
|
|
'Issue priority: 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low.',
|
|
minimum: 0,
|
|
maximum: 4,
|
|
},
|
|
stateId: {
|
|
type: 'string',
|
|
description:
|
|
'The workflow state ID for the issue status. Use list-linear-issue-options to discover available states for a team.',
|
|
},
|
|
assigneeId: {
|
|
type: 'string',
|
|
description:
|
|
'The user ID to assign the issue to. Use list-linear-issue-options to discover team members.',
|
|
},
|
|
projectId: {
|
|
type: 'string',
|
|
description: 'The project ID to associate the issue with.',
|
|
},
|
|
estimate: {
|
|
type: 'number',
|
|
description:
|
|
'The estimate value for the issue. Must match the team estimate scale.',
|
|
},
|
|
labelIds: {
|
|
type: 'array',
|
|
items: { type: 'string' },
|
|
description: 'Array of label IDs to apply to the issue.',
|
|
},
|
|
cycleId: {
|
|
type: 'string',
|
|
description: 'The cycle ID to add the issue to.',
|
|
},
|
|
dueDate: {
|
|
type: 'string',
|
|
description: 'Due date in YYYY-MM-DD format.',
|
|
},
|
|
},
|
|
required: ['teamId', 'title'],
|
|
},
|
|
},
|
|
workflowActionTriggerSettings: {
|
|
label: 'Create Linear Issue',
|
|
inputSchema: [
|
|
{
|
|
type: 'object',
|
|
properties: {
|
|
teamId: { type: 'string' },
|
|
title: { type: 'string' },
|
|
description: { type: 'string' },
|
|
priority: { type: 'number' },
|
|
stateId: { type: 'string' },
|
|
assigneeId: { type: 'string' },
|
|
projectId: { type: 'string' },
|
|
estimate: { type: 'number' },
|
|
labelIds: { type: 'array', items: { type: 'string' } },
|
|
cycleId: { type: 'string' },
|
|
dueDate: { type: 'string' },
|
|
},
|
|
},
|
|
],
|
|
outputSchema: [
|
|
{
|
|
type: 'object',
|
|
properties: {
|
|
success: { type: 'boolean' },
|
|
issue: {
|
|
type: 'object',
|
|
properties: {
|
|
id: { type: 'string' },
|
|
identifier: { type: 'string' },
|
|
title: { type: 'string' },
|
|
url: { type: 'string' },
|
|
},
|
|
},
|
|
error: { type: 'string' },
|
|
},
|
|
},
|
|
],
|
|
},
|
|
});
|