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" />
111 lines
3.4 KiB
TypeScript
111 lines
3.4 KiB
TypeScript
import { defineLogicFunction } from 'twenty-sdk/define';
|
|
|
|
import { LIST_LINEAR_ISSUE_OPTIONS_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
|
|
import { listLinearIssueOptionsHandler } from 'src/logic-functions/handlers/list-linear-issue-options-handler';
|
|
|
|
export default defineLogicFunction({
|
|
universalIdentifier: LIST_LINEAR_ISSUE_OPTIONS_UNIVERSAL_IDENTIFIER,
|
|
name: 'list-linear-issue-options',
|
|
description:
|
|
'Returns available options for creating a Linear issue in a specific team: workflow states, members, projects, labels, cycles, and estimation settings. Requires a teamId (call list-linear-teams to discover one).',
|
|
timeoutSeconds: 15,
|
|
handler: listLinearIssueOptionsHandler,
|
|
toolTriggerSettings: {
|
|
inputSchema: {
|
|
type: 'object',
|
|
properties: {
|
|
teamId: {
|
|
type: 'string',
|
|
description:
|
|
'The Linear team ID to fetch issue options for. Use list-linear-teams to discover available teams.',
|
|
},
|
|
},
|
|
required: ['teamId'],
|
|
},
|
|
},
|
|
workflowActionTriggerSettings: {
|
|
label: 'List Linear Issue Options',
|
|
inputSchema: [
|
|
{
|
|
type: 'object',
|
|
properties: {
|
|
teamId: { type: 'string' },
|
|
},
|
|
},
|
|
],
|
|
outputSchema: [
|
|
{
|
|
type: 'object',
|
|
properties: {
|
|
success: { type: 'boolean' },
|
|
options: {
|
|
type: 'object',
|
|
properties: {
|
|
states: {
|
|
type: 'array',
|
|
items: {
|
|
type: 'object',
|
|
properties: {
|
|
id: { type: 'string' },
|
|
name: { type: 'string' },
|
|
type: { type: 'string' },
|
|
position: { type: 'number' },
|
|
},
|
|
},
|
|
},
|
|
members: {
|
|
type: 'array',
|
|
items: {
|
|
type: 'object',
|
|
properties: {
|
|
id: { type: 'string' },
|
|
name: { type: 'string' },
|
|
displayName: { type: 'string' },
|
|
},
|
|
},
|
|
},
|
|
projects: {
|
|
type: 'array',
|
|
items: {
|
|
type: 'object',
|
|
properties: {
|
|
id: { type: 'string' },
|
|
name: { type: 'string' },
|
|
},
|
|
},
|
|
},
|
|
labels: {
|
|
type: 'array',
|
|
items: {
|
|
type: 'object',
|
|
properties: {
|
|
id: { type: 'string' },
|
|
name: { type: 'string' },
|
|
color: { type: 'string' },
|
|
},
|
|
},
|
|
},
|
|
cycles: {
|
|
type: 'array',
|
|
items: {
|
|
type: 'object',
|
|
properties: {
|
|
id: { type: 'string' },
|
|
name: { type: 'string' },
|
|
number: { type: 'number' },
|
|
startsAt: { type: 'string' },
|
|
endsAt: { type: 'string' },
|
|
},
|
|
},
|
|
},
|
|
estimationType: { type: 'string' },
|
|
estimationAllowZero: { type: 'boolean' },
|
|
},
|
|
},
|
|
error: { type: 'string' },
|
|
},
|
|
},
|
|
],
|
|
},
|
|
});
|