diff --git a/apps/docs/content/docs/en/tools/linear.mdx b/apps/docs/content/docs/en/tools/linear.mdx index b64d9a915..7d472afce 100644 --- a/apps/docs/content/docs/en/tools/linear.mdx +++ b/apps/docs/content/docs/en/tools/linear.mdx @@ -320,6 +320,7 @@ Search for issues in Linear using full-text search | `teamId` | string | No | Filter by team ID | | `includeArchived` | boolean | No | Include archived issues in search results | | `first` | number | No | Number of results to return \(default: 50\) | +| `after` | string | No | Cursor for pagination | #### Output @@ -754,6 +755,10 @@ List all labels in Linear workspace or team | ↳ `name` | string | Label name | | ↳ `color` | string | Label color \(hex\) | | ↳ `description` | string | Label description | +| ↳ `isGroup` | boolean | Whether this label is a group | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last update timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | @@ -780,6 +785,10 @@ Create a new label in Linear | ↳ `name` | string | Label name | | ↳ `color` | string | Label color \(hex\) | | ↳ `description` | string | Label description | +| ↳ `isGroup` | boolean | Whether this label is a group | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last update timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | @@ -806,6 +815,10 @@ Update an existing label in Linear | ↳ `name` | string | Label name | | ↳ `color` | string | Label color \(hex\) | | ↳ `description` | string | Label description | +| ↳ `isGroup` | boolean | Whether this label is a group | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last update timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | @@ -849,9 +862,13 @@ List all workflow states (statuses) in Linear | `states` | array | Array of workflow states | | ↳ `id` | string | State ID | | ↳ `name` | string | State name \(e.g., "Todo", "In Progress"\) | -| ↳ `type` | string | State type \(unstarted, started, completed, canceled\) | +| ↳ `description` | string | State description | +| ↳ `type` | string | State type \(triage, backlog, unstarted, started, completed, canceled\) | | ↳ `color` | string | State color \(hex\) | | ↳ `position` | number | State position in workflow | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last update timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | @@ -877,11 +894,17 @@ Create a new workflow state (status) in Linear | --------- | ---- | ----------- | | `state` | object | The created workflow state | | ↳ `id` | string | State ID | -| ↳ `name` | string | State name | -| ↳ `type` | string | State type | -| ↳ `color` | string | State color | -| ↳ `position` | number | State position | -| ↳ `team` | object | Team this state belongs to | +| ↳ `name` | string | State name \(e.g., "Todo", "In Progress"\) | +| ↳ `description` | string | State description | +| ↳ `type` | string | State type \(triage, backlog, unstarted, started, completed, canceled\) | +| ↳ `color` | string | State color \(hex\) | +| ↳ `position` | number | State position in workflow | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last update timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | +| ↳ `team` | object | Team object | +| ↳ `id` | string | Team ID | +| ↳ `name` | string | Team name | ### `linear_update_workflow_state` @@ -903,10 +926,17 @@ Update an existing workflow state in Linear | --------- | ---- | ----------- | | `state` | object | The updated workflow state | | ↳ `id` | string | State ID | -| ↳ `name` | string | State name | -| ↳ `type` | string | State type | -| ↳ `color` | string | State color | -| ↳ `position` | number | State position | +| ↳ `name` | string | State name \(e.g., "Todo", "In Progress"\) | +| ↳ `description` | string | State description | +| ↳ `type` | string | State type \(triage, backlog, unstarted, started, completed, canceled\) | +| ↳ `color` | string | State color \(hex\) | +| ↳ `position` | number | State position in workflow | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last update timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | +| ↳ `team` | object | Team object | +| ↳ `id` | string | Team ID | +| ↳ `name` | string | Team name | ### `linear_list_cycles` @@ -935,6 +965,7 @@ List cycles (sprints/iterations) in Linear | ↳ `endsAt` | string | End date \(ISO 8601\) | | ↳ `completedAt` | string | Completion date \(ISO 8601\) | | ↳ `progress` | number | Progress percentage \(0-1\) | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | @@ -961,6 +992,7 @@ Get a single cycle by ID from Linear | ↳ `endsAt` | string | End date \(ISO 8601\) | | ↳ `completedAt` | string | Completion date \(ISO 8601\) | | ↳ `progress` | number | Progress percentage \(0-1\) | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | | ↳ `team` | object | Team object | | ↳ `id` | string | Team ID | | ↳ `name` | string | Team name | @@ -986,9 +1018,14 @@ Create a new cycle (sprint/iteration) in Linear | ↳ `id` | string | Cycle ID | | ↳ `number` | number | Cycle number | | ↳ `name` | string | Cycle name | -| ↳ `startsAt` | string | Start date | -| ↳ `endsAt` | string | End date | -| ↳ `team` | object | Team this cycle belongs to | +| ↳ `startsAt` | string | Start date \(ISO 8601\) | +| ↳ `endsAt` | string | End date \(ISO 8601\) | +| ↳ `completedAt` | string | Completion date \(ISO 8601\) | +| ↳ `progress` | number | Progress percentage \(0-1\) | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `team` | object | Team object | +| ↳ `id` | string | Team ID | +| ↳ `name` | string | Team name | ### `linear_get_active_cycle` @@ -1008,10 +1045,14 @@ Get the currently active cycle for a team | ↳ `id` | string | Cycle ID | | ↳ `number` | number | Cycle number | | ↳ `name` | string | Cycle name | -| ↳ `startsAt` | string | Start date | -| ↳ `endsAt` | string | End date | -| ↳ `progress` | number | Progress percentage | -| ↳ `team` | object | Team this cycle belongs to | +| ↳ `startsAt` | string | Start date \(ISO 8601\) | +| ↳ `endsAt` | string | End date \(ISO 8601\) | +| ↳ `completedAt` | string | Completion date \(ISO 8601\) | +| ↳ `progress` | number | Progress percentage \(0-1\) | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `team` | object | Team object | +| ↳ `id` | string | Team ID | +| ↳ `name` | string | Team name | ### `linear_create_attachment` @@ -1334,8 +1375,12 @@ Create a new customer in Linear | ↳ `domains` | array | Associated domains | | ↳ `externalIds` | array | External IDs from other systems | | ↳ `logoUrl` | string | Logo URL | +| ↳ `slugId` | string | Unique URL slug | | ↳ `approximateNeedCount` | number | Number of customer needs | +| ↳ `revenue` | number | Annual revenue | +| ↳ `size` | number | Organization size | | ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last update timestamp \(ISO 8601\) | | ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_list_customers` @@ -1363,8 +1408,12 @@ List all customers in Linear | ↳ `domains` | array | Associated domains | | ↳ `externalIds` | array | External IDs from other systems | | ↳ `logoUrl` | string | Logo URL | +| ↳ `slugId` | string | Unique URL slug | | ↳ `approximateNeedCount` | number | Number of customer needs | +| ↳ `revenue` | number | Annual revenue | +| ↳ `size` | number | Organization size | | ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last update timestamp \(ISO 8601\) | | ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_create_customer_request` @@ -1480,8 +1529,12 @@ Get a single customer by ID in Linear | ↳ `domains` | array | Associated domains | | ↳ `externalIds` | array | External IDs from other systems | | ↳ `logoUrl` | string | Logo URL | +| ↳ `slugId` | string | Unique URL slug | | ↳ `approximateNeedCount` | number | Number of customer needs | +| ↳ `revenue` | number | Annual revenue | +| ↳ `size` | number | Organization size | | ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last update timestamp \(ISO 8601\) | | ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_update_customer` @@ -1513,8 +1566,12 @@ Update a customer in Linear | ↳ `domains` | array | Associated domains | | ↳ `externalIds` | array | External IDs from other systems | | ↳ `logoUrl` | string | Logo URL | +| ↳ `slugId` | string | Unique URL slug | | ↳ `approximateNeedCount` | number | Number of customer needs | +| ↳ `revenue` | number | Annual revenue | +| ↳ `size` | number | Organization size | | ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last update timestamp \(ISO 8601\) | | ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_delete_customer` @@ -1560,8 +1617,8 @@ Create a new customer status in Linear | --------- | ---- | -------- | ----------- | | `name` | string | Yes | Customer status name | | `color` | string | Yes | Status color \(hex code\) | -| `displayName` | string | No | Display name for the status | | `description` | string | No | Status description | +| `displayName` | string | No | Display name for the status | | `position` | number | No | Position in status list | #### Output @@ -1571,11 +1628,12 @@ Create a new customer status in Linear | `customerStatus` | object | The created customer status | | ↳ `id` | string | Customer status ID | | ↳ `name` | string | Status name | -| ↳ `displayName` | string | Display name | | ↳ `description` | string | Status description | | ↳ `color` | string | Status color \(hex\) | | ↳ `position` | number | Position in list | +| ↳ `type` | string | Status type \(active, inactive\) | | ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last updated timestamp \(ISO 8601\) | | ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_update_customer_status` @@ -1589,8 +1647,8 @@ Update a customer status in Linear | `statusId` | string | Yes | Customer status ID to update | | `name` | string | No | Updated status name | | `color` | string | No | Updated status color | -| `displayName` | string | No | Updated display name | | `description` | string | No | Updated description | +| `displayName` | string | No | Updated display name | | `position` | number | No | Updated position | #### Output @@ -1598,6 +1656,15 @@ Update a customer status in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `customerStatus` | object | The updated customer status | +| ↳ `id` | string | Customer status ID | +| ↳ `name` | string | Status name | +| ↳ `description` | string | Status description | +| ↳ `color` | string | Status color \(hex\) | +| ↳ `position` | number | Position in list | +| ↳ `type` | string | Status type \(active, inactive\) | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last updated timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_delete_customer_status` @@ -1623,19 +1690,25 @@ List all customer statuses in Linear | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | +| `first` | number | No | Number of statuses to return \(default: 50\) | +| `after` | string | No | Cursor for pagination | #### Output | Parameter | Type | Description | | --------- | ---- | ----------- | +| `pageInfo` | object | Pagination information | +| ↳ `hasNextPage` | boolean | Whether there are more results | +| ↳ `endCursor` | string | Cursor for the next page | | `customerStatuses` | array | List of customer statuses | | ↳ `id` | string | Customer status ID | | ↳ `name` | string | Status name | -| ↳ `displayName` | string | Display name | | ↳ `description` | string | Status description | | ↳ `color` | string | Status color \(hex\) | | ↳ `position` | number | Position in list | +| ↳ `type` | string | Status type \(active, inactive\) | | ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last updated timestamp \(ISO 8601\) | | ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_create_customer_tier` @@ -1711,11 +1784,16 @@ List all customer tiers in Linear | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | +| `first` | number | No | Number of tiers to return \(default: 50\) | +| `after` | string | No | Cursor for pagination | #### Output | Parameter | Type | Description | | --------- | ---- | ----------- | +| `pageInfo` | object | Pagination information | +| ↳ `hasNextPage` | boolean | Whether there are more results | +| ↳ `endCursor` | string | Cursor for the next page | | `customerTiers` | array | List of customer tiers | | ↳ `id` | string | Customer tier ID | | ↳ `name` | string | Tier name | @@ -1761,6 +1839,14 @@ Create a new project label in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `projectLabel` | object | The created project label | +| ↳ `id` | string | Project label ID | +| ↳ `name` | string | Label name | +| ↳ `description` | string | Label description | +| ↳ `color` | string | Label color \(hex\) | +| ↳ `isGroup` | boolean | Whether this label is a group | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last update timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_update_project_label` @@ -1780,6 +1866,14 @@ Update a project label in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `projectLabel` | object | The updated project label | +| ↳ `id` | string | Project label ID | +| ↳ `name` | string | Label name | +| ↳ `description` | string | Label description | +| ↳ `color` | string | Label color \(hex\) | +| ↳ `isGroup` | boolean | Whether this label is a group | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last update timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_delete_project_label` @@ -1806,12 +1900,25 @@ List all project labels in Linear | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | | `projectId` | string | No | Optional project ID to filter labels for a specific project | +| `first` | number | No | Number of labels to return \(default: 50\) | +| `after` | string | No | Cursor for pagination | #### Output | Parameter | Type | Description | | --------- | ---- | ----------- | +| `pageInfo` | object | Pagination information | +| ↳ `hasNextPage` | boolean | Whether there are more results | +| ↳ `endCursor` | string | Cursor for the next page | | `projectLabels` | array | List of project labels | +| ↳ `id` | string | Project label ID | +| ↳ `name` | string | Label name | +| ↳ `description` | string | Label description | +| ↳ `color` | string | Label color \(hex\) | +| ↳ `isGroup` | boolean | Whether this label is a group | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last update timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_add_label_to_project` @@ -1867,6 +1974,16 @@ Create a new project milestone in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `projectMilestone` | object | The created project milestone | +| ↳ `id` | string | Project milestone ID | +| ↳ `name` | string | Milestone name | +| ↳ `description` | string | Milestone description | +| ↳ `projectId` | string | Project ID | +| ↳ `targetDate` | string | Target date \(YYYY-MM-DD\) | +| ↳ `progress` | number | Progress percentage \(0-1\) | +| ↳ `sortOrder` | number | Sort order within the project | +| ↳ `status` | string | Milestone status \(done, next, overdue, unstarted\) | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_update_project_milestone` @@ -1886,6 +2003,16 @@ Update a project milestone in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `projectMilestone` | object | The updated project milestone | +| ↳ `id` | string | Project milestone ID | +| ↳ `name` | string | Milestone name | +| ↳ `description` | string | Milestone description | +| ↳ `projectId` | string | Project ID | +| ↳ `targetDate` | string | Target date \(YYYY-MM-DD\) | +| ↳ `progress` | number | Progress percentage \(0-1\) | +| ↳ `sortOrder` | number | Sort order within the project | +| ↳ `status` | string | Milestone status \(done, next, overdue, unstarted\) | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_delete_project_milestone` @@ -1912,12 +2039,27 @@ List all milestones for a project in Linear | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | | `projectId` | string | Yes | Project ID to list milestones for | +| `first` | number | No | Number of milestones to return \(default: 50\) | +| `after` | string | No | Cursor for pagination | #### Output | Parameter | Type | Description | | --------- | ---- | ----------- | +| `pageInfo` | object | Pagination information | +| ↳ `hasNextPage` | boolean | Whether there are more results | +| ↳ `endCursor` | string | Cursor for the next page | | `projectMilestones` | array | List of project milestones | +| ↳ `id` | string | Project milestone ID | +| ↳ `name` | string | Milestone name | +| ↳ `description` | string | Milestone description | +| ↳ `projectId` | string | Project ID | +| ↳ `targetDate` | string | Target date \(YYYY-MM-DD\) | +| ↳ `progress` | number | Progress percentage \(0-1\) | +| ↳ `sortOrder` | number | Sort order within the project | +| ↳ `status` | string | Milestone status \(done, next, overdue, unstarted\) | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_create_project_status` @@ -1939,6 +2081,16 @@ Create a new project status in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `projectStatus` | object | The created project status | +| ↳ `id` | string | Project status ID | +| ↳ `name` | string | Status name | +| ↳ `description` | string | Status description | +| ↳ `color` | string | Status color \(hex\) | +| ↳ `indefinite` | boolean | Whether this status is indefinite | +| ↳ `position` | number | Position in list | +| ↳ `type` | string | Status type \(backlog, planned, started, paused, completed, canceled\) | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last updated timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_update_project_status` @@ -1960,6 +2112,16 @@ Update a project status in Linear | Parameter | Type | Description | | --------- | ---- | ----------- | | `projectStatus` | object | The updated project status | +| ↳ `id` | string | Project status ID | +| ↳ `name` | string | Status name | +| ↳ `description` | string | Status description | +| ↳ `color` | string | Status color \(hex\) | +| ↳ `indefinite` | boolean | Whether this status is indefinite | +| ↳ `position` | number | Position in list | +| ↳ `type` | string | Status type \(backlog, planned, started, paused, completed, canceled\) | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last updated timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | ### `linear_delete_project_status` @@ -1985,11 +2147,26 @@ List all project statuses in Linear | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | +| `first` | number | No | Number of statuses to return \(default: 50\) | +| `after` | string | No | Cursor for pagination | #### Output | Parameter | Type | Description | | --------- | ---- | ----------- | +| `pageInfo` | object | Pagination information | +| ↳ `hasNextPage` | boolean | Whether there are more results | +| ↳ `endCursor` | string | Cursor for the next page | | `projectStatuses` | array | List of project statuses | +| ↳ `id` | string | Project status ID | +| ↳ `name` | string | Status name | +| ↳ `description` | string | Status description | +| ↳ `color` | string | Status color \(hex\) | +| ↳ `indefinite` | boolean | Whether this status is indefinite | +| ↳ `position` | number | Position in list | +| ↳ `type` | string | Status type \(backlog, planned, started, paused, completed, canceled\) | +| ↳ `createdAt` | string | Creation timestamp \(ISO 8601\) | +| ↳ `updatedAt` | string | Last updated timestamp \(ISO 8601\) | +| ↳ `archivedAt` | string | Archive timestamp \(ISO 8601\) | diff --git a/apps/sim/blocks/blocks/linear.ts b/apps/sim/blocks/blocks/linear.ts index 4774f7fe1..b7b838ef2 100644 --- a/apps/sim/blocks/blocks/linear.ts +++ b/apps/sim/blocks/blocks/linear.ts @@ -810,7 +810,29 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n placeholder: 'Number of items to return (default: 50)', condition: { field: 'operation', - value: ['linear_list_favorites'], + value: [ + 'linear_read_issues', + 'linear_search_issues', + 'linear_list_comments', + 'linear_list_projects', + 'linear_list_users', + 'linear_list_teams', + 'linear_list_labels', + 'linear_list_workflow_states', + 'linear_list_cycles', + 'linear_list_attachments', + 'linear_list_issue_relations', + 'linear_list_favorites', + 'linear_list_project_updates', + 'linear_list_notifications', + 'linear_list_customer_statuses', + 'linear_list_customer_tiers', + 'linear_list_customers', + 'linear_list_customer_requests', + 'linear_list_project_labels', + 'linear_list_project_milestones', + 'linear_list_project_statuses', + ], }, }, // Pagination - After (for list operations) @@ -821,7 +843,29 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n placeholder: 'Cursor for pagination', condition: { field: 'operation', - value: ['linear_list_favorites'], + value: [ + 'linear_read_issues', + 'linear_search_issues', + 'linear_list_comments', + 'linear_list_projects', + 'linear_list_users', + 'linear_list_teams', + 'linear_list_labels', + 'linear_list_workflow_states', + 'linear_list_cycles', + 'linear_list_attachments', + 'linear_list_issue_relations', + 'linear_list_favorites', + 'linear_list_project_updates', + 'linear_list_notifications', + 'linear_list_customers', + 'linear_list_customer_requests', + 'linear_list_customer_statuses', + 'linear_list_customer_tiers', + 'linear_list_project_labels', + 'linear_list_project_milestones', + 'linear_list_project_statuses', + ], }, }, // Project health (for project updates) @@ -1053,28 +1097,6 @@ Return ONLY the description text - no explanations.`, value: ['linear_create_customer_request', 'linear_update_customer_request'], }, }, - // Pagination - first - { - id: 'first', - title: 'Limit', - type: 'short-input', - placeholder: 'Number of items (default: 50)', - condition: { - field: 'operation', - value: ['linear_list_customers', 'linear_list_customer_requests'], - }, - }, - // Pagination - after - { - id: 'after', - title: 'After Cursor', - type: 'short-input', - placeholder: 'Cursor for pagination', - condition: { - field: 'operation', - value: ['linear_list_customers', 'linear_list_customer_requests'], - }, - }, // Customer ID for get/update/delete/merge operations { id: 'customerIdTarget', @@ -1493,6 +1515,8 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n teamId: effectiveTeamId || undefined, projectId: effectiveProjectId || undefined, includeArchived: params.includeArchived, + first: params.first ? Number(params.first) : undefined, + after: params.after, } case 'linear_get_issue': @@ -1558,6 +1582,8 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n query: params.query.trim(), teamId: effectiveTeamId, includeArchived: params.includeArchived, + first: params.first ? Number(params.first) : undefined, + after: params.after, } case 'linear_add_label_to_issue': @@ -1607,6 +1633,8 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n return { ...baseParams, issueId: params.issueId.trim(), + first: params.first ? Number(params.first) : undefined, + after: params.after, } case 'linear_list_projects': @@ -1614,6 +1642,8 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n ...baseParams, teamId: effectiveTeamId, includeArchived: params.includeArchived, + first: params.first ? Number(params.first) : undefined, + after: params.after, } case 'linear_get_project': @@ -1665,6 +1695,12 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n case 'linear_list_users': case 'linear_list_teams': + return { + ...baseParams, + first: params.first ? Number(params.first) : undefined, + after: params.after, + } + case 'linear_get_viewer': return baseParams @@ -1672,6 +1708,8 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n return { ...baseParams, teamId: effectiveTeamId, + first: params.first ? Number(params.first) : undefined, + after: params.after, } case 'linear_create_label': @@ -1709,6 +1747,8 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n return { ...baseParams, teamId: effectiveTeamId, + first: params.first ? Number(params.first) : undefined, + after: params.after, } case 'linear_create_workflow_state': @@ -1738,6 +1778,8 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n return { ...baseParams, teamId: effectiveTeamId, + first: params.first ? Number(params.first) : undefined, + after: params.after, } case 'linear_get_cycle': @@ -1801,6 +1843,8 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n return { ...baseParams, issueId: params.issueId.trim(), + first: params.first ? Number(params.first) : undefined, + after: params.after, } case 'linear_update_attachment': @@ -1840,6 +1884,8 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n return { ...baseParams, issueId: params.issueId.trim(), + first: params.first ? Number(params.first) : undefined, + after: params.after, } case 'linear_delete_issue_relation': @@ -1886,10 +1932,16 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n return { ...baseParams, projectId: effectiveProjectId, + first: params.first ? Number(params.first) : undefined, + after: params.after, } case 'linear_list_notifications': - return baseParams + return { + ...baseParams, + first: params.first ? Number(params.first) : undefined, + after: params.after, + } case 'linear_update_notification': if (!params.notificationId?.trim()) { @@ -2018,9 +2070,9 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n return { ...baseParams, name: params.statusName.trim(), - displayName: params.statusDisplayName?.trim() || params.statusName.trim(), color: params.statusColor.trim(), description: params.statusDescription?.trim() || undefined, + displayName: params.statusDisplayName?.trim() || undefined, } case 'linear_update_customer_status': @@ -2031,9 +2083,9 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n ...baseParams, statusId: params.statusId.trim(), name: params.statusName?.trim() || undefined, - displayName: params.statusDisplayName?.trim() || undefined, color: params.statusColor?.trim() || undefined, description: params.statusDescription?.trim() || undefined, + displayName: params.statusDisplayName?.trim() || undefined, } case 'linear_delete_customer_status': @@ -2046,7 +2098,11 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n } case 'linear_list_customer_statuses': - return baseParams + return { + ...baseParams, + first: params.first ? Number(params.first) : undefined, + after: params.after, + } // Customer Tier Operations case 'linear_create_customer_tier': @@ -2084,7 +2140,11 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n } case 'linear_list_customer_tiers': - return baseParams + return { + ...baseParams, + first: params.first ? Number(params.first) : undefined, + after: params.after, + } // Project Management Operations case 'linear_delete_project': @@ -2135,6 +2195,8 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n return { ...baseParams, projectId: effectiveProjectId || undefined, + first: params.first ? Number(params.first) : undefined, + after: params.after, } case 'linear_add_label_to_project': @@ -2198,6 +2260,8 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n return { ...baseParams, projectId: params.projectIdForMilestone.trim(), + first: params.first ? Number(params.first) : undefined, + after: params.after, } // Project Status Operations @@ -2245,7 +2309,11 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n } case 'linear_list_project_statuses': - return baseParams + return { + ...baseParams, + first: params.first ? Number(params.first) : undefined, + after: params.after, + } default: return baseParams @@ -2321,9 +2389,9 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n // Customer status and tier inputs statusId: { type: 'string', description: 'Status identifier' }, statusName: { type: 'string', description: 'Status name' }, - statusDisplayName: { type: 'string', description: 'Status display name' }, statusColor: { type: 'string', description: 'Status color in hex format' }, statusDescription: { type: 'string', description: 'Status description' }, + statusDisplayName: { type: 'string', description: 'Status display name' }, tierId: { type: 'string', description: 'Tier identifier' }, tierName: { type: 'string', description: 'Tier name' }, tierDisplayName: { type: 'string', description: 'Tier display name' }, diff --git a/apps/sim/tools/linear/create_customer.ts b/apps/sim/tools/linear/create_customer.ts index 1b286d178..241a9c8dc 100644 --- a/apps/sim/tools/linear/create_customer.ts +++ b/apps/sim/tools/linear/create_customer.ts @@ -131,8 +131,12 @@ export const linearCreateCustomerTool: ToolConfig< domains externalIds logoUrl + slugId approximateNeedCount + revenue + size createdAt + updatedAt archivedAt } } diff --git a/apps/sim/tools/linear/create_customer_status.ts b/apps/sim/tools/linear/create_customer_status.ts index ef1869f2d..5e1467d5e 100644 --- a/apps/sim/tools/linear/create_customer_status.ts +++ b/apps/sim/tools/linear/create_customer_status.ts @@ -32,18 +32,18 @@ export const linearCreateCustomerStatusTool: ToolConfig< visibility: 'user-or-llm', description: 'Status color (hex code)', }, - displayName: { - type: 'string', - required: false, - visibility: 'user-or-llm', - description: 'Display name for the status', - }, description: { type: 'string', required: false, visibility: 'user-or-llm', description: 'Status description', }, + displayName: { + type: 'string', + required: false, + visibility: 'user-or-llm', + description: 'Display name for the status', + }, position: { type: 'number', required: false, @@ -70,12 +70,12 @@ export const linearCreateCustomerStatusTool: ToolConfig< color: params.color, } - if (params.displayName != null && params.displayName !== '') { - input.displayName = params.displayName - } if (params.description != null && params.description !== '') { input.description = params.description } + if (params.displayName != null && params.displayName !== '') { + input.displayName = params.displayName + } if (params.position != null) { input.position = params.position } @@ -88,11 +88,12 @@ export const linearCreateCustomerStatusTool: ToolConfig< status { id name - displayName description color position + type createdAt + updatedAt archivedAt } } diff --git a/apps/sim/tools/linear/create_cycle.ts b/apps/sim/tools/linear/create_cycle.ts index 81974a310..da3d67b55 100644 --- a/apps/sim/tools/linear/create_cycle.ts +++ b/apps/sim/tools/linear/create_cycle.ts @@ -1,4 +1,5 @@ import type { LinearCreateCycleParams, LinearCreateCycleResponse } from '@/tools/linear/types' +import { CYCLE_FULL_OUTPUT_PROPERTIES } from '@/tools/linear/types' import type { ToolConfig } from '@/tools/types' export const linearCreateCycleTool: ToolConfig = @@ -72,7 +73,9 @@ export const linearCreateCycleTool: ToolConfig ({ + body: (params) => ({ query: ` - query CustomerStatuses { - customerStatuses { + query CustomerStatuses($first: Int, $after: String) { + customerStatuses(first: $first, after: $after) { nodes { id name - displayName description color position + type createdAt + updatedAt archivedAt } + pageInfo { + hasNextPage + endCursor + } } } `, + variables: { + first: params.first ? Number(params.first) : 50, + after: params.after, + }, }), }, @@ -64,10 +86,15 @@ export const linearListCustomerStatusesTool: ToolConfig< } } + const result = data.data.customerStatuses return { success: true, output: { - customerStatuses: data.data.customerStatuses.nodes, + customerStatuses: result.nodes, + pageInfo: { + hasNextPage: result.pageInfo.hasNextPage, + endCursor: result.pageInfo.endCursor, + }, }, } }, @@ -81,5 +108,6 @@ export const linearListCustomerStatusesTool: ToolConfig< properties: CUSTOMER_STATUS_OUTPUT_PROPERTIES, }, }, + pageInfo: PAGE_INFO_OUTPUT, }, } diff --git a/apps/sim/tools/linear/list_customer_tiers.ts b/apps/sim/tools/linear/list_customer_tiers.ts index ee699912f..5b16c968d 100644 --- a/apps/sim/tools/linear/list_customer_tiers.ts +++ b/apps/sim/tools/linear/list_customer_tiers.ts @@ -2,7 +2,7 @@ import type { LinearListCustomerTiersParams, LinearListCustomerTiersResponse, } from '@/tools/linear/types' -import { CUSTOMER_TIER_OUTPUT_PROPERTIES } from '@/tools/linear/types' +import { CUSTOMER_TIER_OUTPUT_PROPERTIES, PAGE_INFO_OUTPUT } from '@/tools/linear/types' import type { ToolConfig } from '@/tools/types' export const linearListCustomerTiersTool: ToolConfig< @@ -19,7 +19,20 @@ export const linearListCustomerTiersTool: ToolConfig< provider: 'linear', }, - params: {}, + params: { + first: { + type: 'number', + required: false, + visibility: 'user-or-llm', + description: 'Number of tiers to return (default: 50)', + }, + after: { + type: 'string', + required: false, + visibility: 'user-or-llm', + description: 'Cursor for pagination', + }, + }, request: { url: 'https://api.linear.app/graphql', @@ -33,10 +46,10 @@ export const linearListCustomerTiersTool: ToolConfig< Authorization: `Bearer ${params.accessToken}`, } }, - body: () => ({ + body: (params) => ({ query: ` - query CustomerTiers { - customerTiers { + query CustomerTiers($first: Int, $after: String) { + customerTiers(first: $first, after: $after) { nodes { id name @@ -47,9 +60,17 @@ export const linearListCustomerTiersTool: ToolConfig< createdAt archivedAt } + pageInfo { + hasNextPage + endCursor + } } } `, + variables: { + first: params.first ? Number(params.first) : 50, + after: params.after, + }, }), }, @@ -64,10 +85,15 @@ export const linearListCustomerTiersTool: ToolConfig< } } + const result = data.data.customerTiers return { success: true, output: { - customerTiers: data.data.customerTiers.nodes, + customerTiers: result.nodes, + pageInfo: { + hasNextPage: result.pageInfo.hasNextPage, + endCursor: result.pageInfo.endCursor, + }, }, } }, @@ -81,5 +107,6 @@ export const linearListCustomerTiersTool: ToolConfig< properties: CUSTOMER_TIER_OUTPUT_PROPERTIES, }, }, + pageInfo: PAGE_INFO_OUTPUT, }, } diff --git a/apps/sim/tools/linear/list_customers.ts b/apps/sim/tools/linear/list_customers.ts index 9248cec58..4aa4fe75a 100644 --- a/apps/sim/tools/linear/list_customers.ts +++ b/apps/sim/tools/linear/list_customers.ts @@ -59,8 +59,12 @@ export const linearListCustomersTool: ToolConfig< domains externalIds logoUrl + slugId approximateNeedCount + revenue + size createdAt + updatedAt archivedAt } pageInfo { @@ -71,7 +75,7 @@ export const linearListCustomersTool: ToolConfig< } `, variables: { - first: params.first || 50, + first: params.first ? Number(params.first) : 50, after: params.after, includeArchived: params.includeArchived || false, }, diff --git a/apps/sim/tools/linear/list_cycles.ts b/apps/sim/tools/linear/list_cycles.ts index 90bcf7990..b351bc77b 100644 --- a/apps/sim/tools/linear/list_cycles.ts +++ b/apps/sim/tools/linear/list_cycles.ts @@ -64,6 +64,7 @@ export const linearListCyclesTool: ToolConfig { - // If projectId is provided, query the specific project's labels if (params.projectId?.trim()) { return { query: ` - query ProjectWithLabels($id: String!) { + query ProjectWithLabels($id: String!, $first: Int, $after: String) { project(id: $id) { id name - labels { + labels(first: $first, after: $after) { nodes { id name @@ -56,23 +68,29 @@ export const linearListProjectLabelsTool: ToolConfig< color isGroup createdAt + updatedAt archivedAt } + pageInfo { + hasNextPage + endCursor + } } } } `, variables: { id: params.projectId.trim(), + first: params.first ? Number(params.first) : 50, + after: params.after, }, } } - // Otherwise, list all project labels return { query: ` - query ProjectLabels { - projectLabels { + query ProjectLabels($first: Int, $after: String) { + projectLabels(first: $first, after: $after) { nodes { id name @@ -80,11 +98,20 @@ export const linearListProjectLabelsTool: ToolConfig< color isGroup createdAt + updatedAt archivedAt } + pageInfo { + hasNextPage + endCursor + } } } `, + variables: { + first: params.first ? Number(params.first) : 50, + after: params.after, + }, } }, }, @@ -100,21 +127,29 @@ export const linearListProjectLabelsTool: ToolConfig< } } - // Handle project-specific query response if (data.data.project) { + const result = data.data.project.labels return { success: true, output: { - projectLabels: data.data.project.labels.nodes, + projectLabels: result.nodes, + pageInfo: { + hasNextPage: result.pageInfo.hasNextPage, + endCursor: result.pageInfo.endCursor, + }, }, } } - // Handle global projectLabels query response + const result = data.data.projectLabels return { success: true, output: { - projectLabels: data.data.projectLabels.nodes, + projectLabels: result.nodes, + pageInfo: { + hasNextPage: result.pageInfo.hasNextPage, + endCursor: result.pageInfo.endCursor, + }, }, } }, @@ -123,6 +158,11 @@ export const linearListProjectLabelsTool: ToolConfig< projectLabels: { type: 'array', description: 'List of project labels', + items: { + type: 'object', + properties: PROJECT_LABEL_OUTPUT_PROPERTIES, + }, }, + pageInfo: PAGE_INFO_OUTPUT, }, } diff --git a/apps/sim/tools/linear/list_project_milestones.ts b/apps/sim/tools/linear/list_project_milestones.ts index 7a80bbb69..afcde75c2 100644 --- a/apps/sim/tools/linear/list_project_milestones.ts +++ b/apps/sim/tools/linear/list_project_milestones.ts @@ -2,6 +2,7 @@ import type { LinearListProjectMilestonesParams, LinearListProjectMilestonesResponse, } from '@/tools/linear/types' +import { PAGE_INFO_OUTPUT, PROJECT_MILESTONE_OUTPUT_PROPERTIES } from '@/tools/linear/types' import type { ToolConfig } from '@/tools/types' export const linearListProjectMilestonesTool: ToolConfig< @@ -25,6 +26,18 @@ export const linearListProjectMilestonesTool: ToolConfig< visibility: 'user-or-llm', description: 'Project ID to list milestones for', }, + first: { + type: 'number', + required: false, + visibility: 'user-or-llm', + description: 'Number of milestones to return (default: 50)', + }, + after: { + type: 'string', + required: false, + visibility: 'user-or-llm', + description: 'Cursor for pagination', + }, }, request: { @@ -41,17 +54,26 @@ export const linearListProjectMilestonesTool: ToolConfig< }, body: (params) => ({ query: ` - query Project($id: String!) { + query Project($id: String!, $first: Int, $after: String) { project(id: $id) { - projectMilestones { + projectMilestones(first: $first, after: $after) { nodes { id name description - projectId targetDate + progress + sortOrder + status createdAt archivedAt + project { + id + } + } + pageInfo { + hasNextPage + endCursor } } } @@ -59,6 +81,8 @@ export const linearListProjectMilestonesTool: ToolConfig< `, variables: { id: params.projectId, + first: params.first ? Number(params.first) : 50, + after: params.after, }, }), }, @@ -74,10 +98,20 @@ export const linearListProjectMilestonesTool: ToolConfig< } } + const result = data.data.project?.projectMilestones + const milestones = (result?.nodes || []).map((node: Record) => ({ + ...node, + projectId: (node.project as Record)?.id ?? null, + project: undefined, + })) return { success: true, output: { - projectMilestones: data.data.project?.projectMilestones?.nodes || [], + projectMilestones: milestones, + pageInfo: { + hasNextPage: result?.pageInfo?.hasNextPage ?? false, + endCursor: result?.pageInfo?.endCursor, + }, }, } }, @@ -86,6 +120,11 @@ export const linearListProjectMilestonesTool: ToolConfig< projectMilestones: { type: 'array', description: 'List of project milestones', + items: { + type: 'object', + properties: PROJECT_MILESTONE_OUTPUT_PROPERTIES, + }, }, + pageInfo: PAGE_INFO_OUTPUT, }, } diff --git a/apps/sim/tools/linear/list_project_statuses.ts b/apps/sim/tools/linear/list_project_statuses.ts index 1ccaa8bb7..c0266c1a5 100644 --- a/apps/sim/tools/linear/list_project_statuses.ts +++ b/apps/sim/tools/linear/list_project_statuses.ts @@ -2,6 +2,7 @@ import type { LinearListProjectStatusesParams, LinearListProjectStatusesResponse, } from '@/tools/linear/types' +import { PAGE_INFO_OUTPUT, PROJECT_STATUS_OUTPUT_PROPERTIES } from '@/tools/linear/types' import type { ToolConfig } from '@/tools/types' export const linearListProjectStatusesTool: ToolConfig< @@ -18,7 +19,20 @@ export const linearListProjectStatusesTool: ToolConfig< provider: 'linear', }, - params: {}, + params: { + first: { + type: 'number', + required: false, + visibility: 'user-or-llm', + description: 'Number of statuses to return (default: 50)', + }, + after: { + type: 'string', + required: false, + visibility: 'user-or-llm', + description: 'Cursor for pagination', + }, + }, request: { url: 'https://api.linear.app/graphql', @@ -32,10 +46,10 @@ export const linearListProjectStatusesTool: ToolConfig< Authorization: `Bearer ${params.accessToken}`, } }, - body: () => ({ + body: (params) => ({ query: ` - query ProjectStatuses { - projectStatuses { + query ProjectStatuses($first: Int, $after: String) { + projectStatuses(first: $first, after: $after) { nodes { id name @@ -43,12 +57,22 @@ export const linearListProjectStatusesTool: ToolConfig< color indefinite position + type createdAt + updatedAt archivedAt } + pageInfo { + hasNextPage + endCursor + } } } `, + variables: { + first: params.first ? Number(params.first) : 50, + after: params.after, + }, }), }, @@ -63,10 +87,15 @@ export const linearListProjectStatusesTool: ToolConfig< } } + const result = data.data.projectStatuses return { success: true, output: { - projectStatuses: data.data.projectStatuses.nodes, + projectStatuses: result.nodes, + pageInfo: { + hasNextPage: result.pageInfo.hasNextPage, + endCursor: result.pageInfo.endCursor, + }, }, } }, @@ -75,6 +104,11 @@ export const linearListProjectStatusesTool: ToolConfig< projectStatuses: { type: 'array', description: 'List of project statuses', + items: { + type: 'object', + properties: PROJECT_STATUS_OUTPUT_PROPERTIES, + }, }, + pageInfo: PAGE_INFO_OUTPUT, }, } diff --git a/apps/sim/tools/linear/list_projects.ts b/apps/sim/tools/linear/list_projects.ts index 5e5d881f2..a9700f324 100644 --- a/apps/sim/tools/linear/list_projects.ts +++ b/apps/sim/tools/linear/list_projects.ts @@ -93,7 +93,7 @@ export const linearListProjectsTool: ToolConfig< } `, variables: { - first: params.first || 50, + first: params.first ? Number(params.first) : 50, after: params.after, includeArchived: params.includeArchived || false, }, diff --git a/apps/sim/tools/linear/list_workflow_states.ts b/apps/sim/tools/linear/list_workflow_states.ts index b24e72c4c..dffb5fcb4 100644 --- a/apps/sim/tools/linear/list_workflow_states.ts +++ b/apps/sim/tools/linear/list_workflow_states.ts @@ -65,9 +65,13 @@ export const linearListWorkflowStatesTool: ToolConfig< nodes { id name + description type color position + createdAt + updatedAt + archivedAt team { id name diff --git a/apps/sim/tools/linear/search_issues.ts b/apps/sim/tools/linear/search_issues.ts index 8ec097792..33f77730a 100644 --- a/apps/sim/tools/linear/search_issues.ts +++ b/apps/sim/tools/linear/search_issues.ts @@ -41,6 +41,12 @@ export const linearSearchIssuesTool: ToolConfig< visibility: 'user-or-llm', description: 'Number of results to return (default: 50)', }, + after: { + type: 'string', + required: false, + visibility: 'user-or-llm', + description: 'Cursor for pagination', + }, }, request: { @@ -63,8 +69,8 @@ export const linearSearchIssuesTool: ToolConfig< return { query: ` - query SearchIssues($term: String!, $filter: IssueFilter, $first: Int, $includeArchived: Boolean) { - searchIssues(term: $term, filter: $filter, first: $first, includeArchived: $includeArchived) { + query SearchIssues($term: String!, $filter: IssueFilter, $first: Int, $after: String, $includeArchived: Boolean) { + searchIssues(term: $term, filter: $filter, first: $first, after: $after, includeArchived: $includeArchived) { nodes { id title @@ -111,7 +117,8 @@ export const linearSearchIssuesTool: ToolConfig< variables: { term: params.query, filter: Object.keys(filter).length > 0 ? filter : undefined, - first: params.first || 50, + first: params.first ? Number(params.first) : 50, + after: params.after, includeArchived: params.includeArchived || false, }, } diff --git a/apps/sim/tools/linear/types.ts b/apps/sim/tools/linear/types.ts index b66bae5b4..5c3f644c2 100644 --- a/apps/sim/tools/linear/types.ts +++ b/apps/sim/tools/linear/types.ts @@ -112,6 +112,10 @@ export const LABEL_FULL_OUTPUT_PROPERTIES = { name: { type: 'string', description: 'Label name' }, color: { type: 'string', description: 'Label color (hex)' }, description: { type: 'string', description: 'Label description' }, + isGroup: { type: 'boolean', description: 'Whether this label is a group' }, + createdAt: { type: 'string', description: 'Creation timestamp (ISO 8601)' }, + updatedAt: { type: 'string', description: 'Last update timestamp (ISO 8601)' }, + archivedAt: { type: 'string', description: 'Archive timestamp (ISO 8601)' }, team: TEAM_OUTPUT, } as const satisfies Record @@ -144,6 +148,7 @@ export const CYCLE_FULL_OUTPUT_PROPERTIES = { endsAt: { type: 'string', description: 'End date (ISO 8601)' }, completedAt: { type: 'string', description: 'Completion date (ISO 8601)' }, progress: { type: 'number', description: 'Progress percentage (0-1)' }, + createdAt: { type: 'string', description: 'Creation timestamp (ISO 8601)' }, team: TEAM_OUTPUT, } as const satisfies Record @@ -277,9 +282,16 @@ export const ATTACHMENT_OUTPUT_PROPERTIES = { export const WORKFLOW_STATE_OUTPUT_PROPERTIES = { id: { type: 'string', description: 'State ID' }, name: { type: 'string', description: 'State name (e.g., "Todo", "In Progress")' }, - type: { type: 'string', description: 'State type (unstarted, started, completed, canceled)' }, + description: { type: 'string', description: 'State description' }, + type: { + type: 'string', + description: 'State type (triage, backlog, unstarted, started, completed, canceled)', + }, color: { type: 'string', description: 'State color (hex)' }, position: { type: 'number', description: 'State position in workflow' }, + createdAt: { type: 'string', description: 'Creation timestamp (ISO 8601)' }, + updatedAt: { type: 'string', description: 'Last update timestamp (ISO 8601)' }, + archivedAt: { type: 'string', description: 'Archive timestamp (ISO 8601)' }, team: TEAM_OUTPUT, } as const satisfies Record @@ -343,8 +355,12 @@ export const CUSTOMER_OUTPUT_PROPERTIES = { items: { type: 'string', description: 'External ID' }, }, logoUrl: { type: 'string', description: 'Logo URL' }, + slugId: { type: 'string', description: 'Unique URL slug' }, approximateNeedCount: { type: 'number', description: 'Number of customer needs' }, + revenue: { type: 'number', description: 'Annual revenue' }, + size: { type: 'number', description: 'Organization size' }, createdAt: { type: 'string', description: 'Creation timestamp (ISO 8601)' }, + updatedAt: { type: 'string', description: 'Last update timestamp (ISO 8601)' }, archivedAt: { type: 'string', description: 'Archive timestamp (ISO 8601)' }, } as const satisfies Record @@ -378,11 +394,12 @@ export const CUSTOMER_NEED_OUTPUT_PROPERTIES = { export const CUSTOMER_STATUS_OUTPUT_PROPERTIES = { id: { type: 'string', description: 'Customer status ID' }, name: { type: 'string', description: 'Status name' }, - displayName: { type: 'string', description: 'Display name' }, description: { type: 'string', description: 'Status description' }, color: { type: 'string', description: 'Status color (hex)' }, position: { type: 'number', description: 'Position in list' }, + type: { type: 'string', description: 'Status type (active, inactive)' }, createdAt: { type: 'string', description: 'Creation timestamp (ISO 8601)' }, + updatedAt: { type: 'string', description: 'Last updated timestamp (ISO 8601)' }, archivedAt: { type: 'string', description: 'Archive timestamp (ISO 8601)' }, } as const satisfies Record @@ -410,6 +427,7 @@ export const PROJECT_LABEL_OUTPUT_PROPERTIES = { color: { type: 'string', description: 'Label color (hex)' }, isGroup: { type: 'boolean', description: 'Whether this label is a group' }, createdAt: { type: 'string', description: 'Creation timestamp (ISO 8601)' }, + updatedAt: { type: 'string', description: 'Last update timestamp (ISO 8601)' }, archivedAt: { type: 'string', description: 'Archive timestamp (ISO 8601)' }, } as const satisfies Record @@ -422,6 +440,9 @@ export const PROJECT_MILESTONE_OUTPUT_PROPERTIES = { description: { type: 'string', description: 'Milestone description' }, projectId: { type: 'string', description: 'Project ID' }, targetDate: { type: 'string', description: 'Target date (YYYY-MM-DD)' }, + progress: { type: 'number', description: 'Progress percentage (0-1)' }, + sortOrder: { type: 'number', description: 'Sort order within the project' }, + status: { type: 'string', description: 'Milestone status (done, next, overdue, unstarted)' }, createdAt: { type: 'string', description: 'Creation timestamp (ISO 8601)' }, archivedAt: { type: 'string', description: 'Archive timestamp (ISO 8601)' }, } as const satisfies Record @@ -444,7 +465,12 @@ export const PROJECT_STATUS_OUTPUT_PROPERTIES = { color: { type: 'string', description: 'Status color (hex)' }, indefinite: { type: 'boolean', description: 'Whether this status is indefinite' }, position: { type: 'number', description: 'Position in list' }, + type: { + type: 'string', + description: 'Status type (backlog, planned, started, paused, completed, canceled)', + }, createdAt: { type: 'string', description: 'Creation timestamp (ISO 8601)' }, + updatedAt: { type: 'string', description: 'Last updated timestamp (ISO 8601)' }, archivedAt: { type: 'string', description: 'Archive timestamp (ISO 8601)' }, } as const satisfies Record @@ -587,6 +613,10 @@ export interface LinearLabel { name: string color: string description?: string + isGroup: boolean + createdAt: string + updatedAt: string + archivedAt?: string team?: { id: string name: string @@ -596,9 +626,13 @@ export interface LinearLabel { export interface LinearWorkflowState { id: string name: string + description?: string type: string color: string position: number + createdAt: string + updatedAt: string + archivedAt?: string team: { id: string name: string @@ -613,6 +647,7 @@ export interface LinearCycle { endsAt: string completedAt?: string progress: number + createdAt: string team: { id: string name: string @@ -710,6 +745,7 @@ export interface LinearSearchIssuesParams { teamId?: string includeArchived?: boolean first?: number + after?: string accessToken?: string } @@ -1205,7 +1241,7 @@ export interface LinearAttachment { subtitle?: string url: string createdAt: string - updatedAt?: string + updatedAt: string } export interface LinearCreateAttachmentResponse extends ToolResponse { @@ -1366,8 +1402,12 @@ export interface LinearCustomer { domains: string[] externalIds: string[] logoUrl?: string + slugId: string approximateNeedCount: number + revenue?: number + size?: number createdAt: string + updatedAt: string archivedAt?: string } @@ -1542,11 +1582,12 @@ export interface LinearMergeCustomersResponse extends ToolResponse { export interface LinearCustomerStatus { id: string name: string - displayName: string description?: string color: string position: number + type: string createdAt: string + updatedAt: string archivedAt?: string } @@ -1593,12 +1634,18 @@ export interface LinearDeleteCustomerStatusResponse extends ToolResponse { } export interface LinearListCustomerStatusesParams { + first?: number + after?: string accessToken?: string } export interface LinearListCustomerStatusesResponse extends ToolResponse { output: { customerStatuses?: LinearCustomerStatus[] + pageInfo?: { + hasNextPage: boolean + endCursor?: string + } } } @@ -1658,12 +1705,18 @@ export interface LinearDeleteCustomerTierResponse extends ToolResponse { } export interface LinearListCustomerTiersParams { + first?: number + after?: string accessToken?: string } export interface LinearListCustomerTiersResponse extends ToolResponse { output: { customerTiers?: LinearCustomerTier[] + pageInfo?: { + hasNextPage: boolean + endCursor?: string + } } } @@ -1676,6 +1729,7 @@ export interface LinearProjectLabel { color?: string isGroup: boolean createdAt: string + updatedAt: string archivedAt?: string } @@ -1720,13 +1774,19 @@ export interface LinearDeleteProjectLabelResponse extends ToolResponse { } export interface LinearListProjectLabelsParams { - accessToken?: string projectId?: string + first?: number + after?: string + accessToken?: string } export interface LinearListProjectLabelsResponse extends ToolResponse { output: { projectLabels?: LinearProjectLabel[] + pageInfo?: { + hasNextPage: boolean + endCursor?: string + } } } @@ -1764,6 +1824,9 @@ export interface LinearProjectMilestone { description?: string projectId: string targetDate?: string + progress: number + sortOrder: number + status: string createdAt: string archivedAt?: string } @@ -1809,12 +1872,18 @@ export interface LinearDeleteProjectMilestoneResponse extends ToolResponse { export interface LinearListProjectMilestonesParams { projectId: string + first?: number + after?: string accessToken?: string } export interface LinearListProjectMilestonesResponse extends ToolResponse { output: { projectMilestones?: LinearProjectMilestone[] + pageInfo?: { + hasNextPage: boolean + endCursor?: string + } } } @@ -1827,7 +1896,9 @@ export interface LinearProjectStatus { color: string indefinite: boolean position: number + type: string createdAt: string + updatedAt: string archivedAt?: string } @@ -1875,12 +1946,18 @@ export interface LinearDeleteProjectStatusResponse extends ToolResponse { } export interface LinearListProjectStatusesParams { + first?: number + after?: string accessToken?: string } export interface LinearListProjectStatusesResponse extends ToolResponse { output: { projectStatuses?: LinearProjectStatus[] + pageInfo?: { + hasNextPage: boolean + endCursor?: string + } } } diff --git a/apps/sim/tools/linear/update_attachment.ts b/apps/sim/tools/linear/update_attachment.ts index 7fcddeeb7..4afbe56bb 100644 --- a/apps/sim/tools/linear/update_attachment.ts +++ b/apps/sim/tools/linear/update_attachment.ts @@ -71,6 +71,7 @@ export const linearUpdateAttachmentTool: ToolConfig< title subtitle url + createdAt updatedAt } } diff --git a/apps/sim/tools/linear/update_customer.ts b/apps/sim/tools/linear/update_customer.ts index cc2ee8ffd..e635d5f29 100644 --- a/apps/sim/tools/linear/update_customer.ts +++ b/apps/sim/tools/linear/update_customer.ts @@ -137,8 +137,12 @@ export const linearUpdateCustomerTool: ToolConfig< domains externalIds logoUrl + slugId approximateNeedCount + revenue + size createdAt + updatedAt archivedAt } } diff --git a/apps/sim/tools/linear/update_customer_status.ts b/apps/sim/tools/linear/update_customer_status.ts index 1fbcb58a7..290ceedd3 100644 --- a/apps/sim/tools/linear/update_customer_status.ts +++ b/apps/sim/tools/linear/update_customer_status.ts @@ -2,6 +2,7 @@ import type { LinearUpdateCustomerStatusParams, LinearUpdateCustomerStatusResponse, } from '@/tools/linear/types' +import { CUSTOMER_STATUS_OUTPUT_PROPERTIES } from '@/tools/linear/types' import type { ToolConfig } from '@/tools/types' export const linearUpdateCustomerStatusTool: ToolConfig< @@ -37,18 +38,18 @@ export const linearUpdateCustomerStatusTool: ToolConfig< visibility: 'user-or-llm', description: 'Updated status color', }, - displayName: { - type: 'string', - required: false, - visibility: 'user-or-llm', - description: 'Updated display name', - }, description: { type: 'string', required: false, visibility: 'user-or-llm', description: 'Updated description', }, + displayName: { + type: 'string', + required: false, + visibility: 'user-or-llm', + description: 'Updated display name', + }, position: { type: 'number', required: false, @@ -78,12 +79,12 @@ export const linearUpdateCustomerStatusTool: ToolConfig< if (params.color != null && params.color !== '') { input.color = params.color } - if (params.displayName != null && params.displayName !== '') { - input.displayName = params.displayName - } if (params.description != null && params.description !== '') { input.description = params.description } + if (params.displayName != null && params.displayName !== '') { + input.displayName = params.displayName + } if (params.position != null) { input.position = params.position } @@ -96,11 +97,12 @@ export const linearUpdateCustomerStatusTool: ToolConfig< customerStatus { id name - displayName description color position + type createdAt + updatedAt archivedAt } } @@ -138,6 +140,7 @@ export const linearUpdateCustomerStatusTool: ToolConfig< customerStatus: { type: 'object', description: 'The updated customer status', + properties: CUSTOMER_STATUS_OUTPUT_PROPERTIES, }, }, } diff --git a/apps/sim/tools/linear/update_label.ts b/apps/sim/tools/linear/update_label.ts index 42c548892..ea34b0882 100644 --- a/apps/sim/tools/linear/update_label.ts +++ b/apps/sim/tools/linear/update_label.ts @@ -71,6 +71,10 @@ export const linearUpdateLabelTool: ToolConfig