mirror of
https://github.com/simstudioai/sim.git
synced 2026-02-06 04:35:03 -05:00
fix(linear): align tool outputs, queries, and pagination with API (#3150)
* fix(linear): align tool outputs, queries, and pagination with API * fix(linear): coerce first param to number, remove duplicate conditions, add null guard
This commit is contained in:
@@ -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\) |
|
||||
|
||||
|
||||
|
||||
@@ -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' },
|
||||
|
||||
@@ -131,8 +131,12 @@ export const linearCreateCustomerTool: ToolConfig<
|
||||
domains
|
||||
externalIds
|
||||
logoUrl
|
||||
slugId
|
||||
approximateNeedCount
|
||||
revenue
|
||||
size
|
||||
createdAt
|
||||
updatedAt
|
||||
archivedAt
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<LinearCreateCycleParams, LinearCreateCycleResponse> =
|
||||
@@ -72,7 +73,9 @@ export const linearCreateCycleTool: ToolConfig<LinearCreateCycleParams, LinearCr
|
||||
name
|
||||
startsAt
|
||||
endsAt
|
||||
completedAt
|
||||
progress
|
||||
createdAt
|
||||
team {
|
||||
id
|
||||
name
|
||||
@@ -120,14 +123,7 @@ export const linearCreateCycleTool: ToolConfig<LinearCreateCycleParams, LinearCr
|
||||
cycle: {
|
||||
type: 'object',
|
||||
description: 'The created cycle',
|
||||
properties: {
|
||||
id: { type: 'string', description: 'Cycle ID' },
|
||||
number: { type: 'number', description: 'Cycle number' },
|
||||
name: { type: 'string', description: 'Cycle name' },
|
||||
startsAt: { type: 'string', description: 'Start date' },
|
||||
endsAt: { type: 'string', description: 'End date' },
|
||||
team: { type: 'object', description: 'Team this cycle belongs to' },
|
||||
},
|
||||
properties: CYCLE_FULL_OUTPUT_PROPERTIES,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -73,6 +73,10 @@ export const linearCreateLabelTool: ToolConfig<LinearCreateLabelParams, LinearCr
|
||||
name
|
||||
color
|
||||
description
|
||||
isGroup
|
||||
createdAt
|
||||
updatedAt
|
||||
archivedAt
|
||||
team {
|
||||
id
|
||||
name
|
||||
|
||||
@@ -2,6 +2,7 @@ import type {
|
||||
LinearCreateProjectLabelParams,
|
||||
LinearCreateProjectLabelResponse,
|
||||
} from '@/tools/linear/types'
|
||||
import { PROJECT_LABEL_OUTPUT_PROPERTIES } from '@/tools/linear/types'
|
||||
import type { ToolConfig } from '@/tools/types'
|
||||
|
||||
export const linearCreateProjectLabelTool: ToolConfig<
|
||||
@@ -93,6 +94,7 @@ export const linearCreateProjectLabelTool: ToolConfig<
|
||||
color
|
||||
isGroup
|
||||
createdAt
|
||||
updatedAt
|
||||
archivedAt
|
||||
}
|
||||
}
|
||||
@@ -137,6 +139,7 @@ export const linearCreateProjectLabelTool: ToolConfig<
|
||||
projectLabel: {
|
||||
type: 'object',
|
||||
description: 'The created project label',
|
||||
properties: PROJECT_LABEL_OUTPUT_PROPERTIES,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import type {
|
||||
LinearCreateProjectMilestoneParams,
|
||||
LinearCreateProjectMilestoneResponse,
|
||||
} from '@/tools/linear/types'
|
||||
import { PROJECT_MILESTONE_OUTPUT_PROPERTIES } from '@/tools/linear/types'
|
||||
import type { ToolConfig } from '@/tools/types'
|
||||
|
||||
export const linearCreateProjectMilestoneTool: ToolConfig<
|
||||
@@ -79,10 +80,15 @@ export const linearCreateProjectMilestoneTool: ToolConfig<
|
||||
id
|
||||
name
|
||||
description
|
||||
projectId
|
||||
targetDate
|
||||
progress
|
||||
sortOrder
|
||||
status
|
||||
createdAt
|
||||
archivedAt
|
||||
project {
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -114,10 +120,15 @@ export const linearCreateProjectMilestoneTool: ToolConfig<
|
||||
}
|
||||
}
|
||||
|
||||
const milestone = result.projectMilestone
|
||||
return {
|
||||
success: true,
|
||||
output: {
|
||||
projectMilestone: result.projectMilestone,
|
||||
projectMilestone: {
|
||||
...milestone,
|
||||
projectId: milestone.project?.id ?? null,
|
||||
project: undefined,
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
@@ -126,6 +137,7 @@ export const linearCreateProjectMilestoneTool: ToolConfig<
|
||||
projectMilestone: {
|
||||
type: 'object',
|
||||
description: 'The created project milestone',
|
||||
properties: PROJECT_MILESTONE_OUTPUT_PROPERTIES,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import type {
|
||||
LinearCreateProjectStatusParams,
|
||||
LinearCreateProjectStatusResponse,
|
||||
} from '@/tools/linear/types'
|
||||
import { PROJECT_STATUS_OUTPUT_PROPERTIES } from '@/tools/linear/types'
|
||||
import type { ToolConfig } from '@/tools/types'
|
||||
|
||||
export const linearCreateProjectStatusTool: ToolConfig<
|
||||
@@ -97,7 +98,9 @@ export const linearCreateProjectStatusTool: ToolConfig<
|
||||
color
|
||||
indefinite
|
||||
position
|
||||
type
|
||||
createdAt
|
||||
updatedAt
|
||||
archivedAt
|
||||
}
|
||||
}
|
||||
@@ -142,6 +145,7 @@ export const linearCreateProjectStatusTool: ToolConfig<
|
||||
projectStatus: {
|
||||
type: 'object',
|
||||
description: 'The created project status',
|
||||
properties: PROJECT_STATUS_OUTPUT_PROPERTIES,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import type {
|
||||
LinearCreateWorkflowStateParams,
|
||||
LinearCreateWorkflowStateResponse,
|
||||
} from '@/tools/linear/types'
|
||||
import { WORKFLOW_STATE_OUTPUT_PROPERTIES } from '@/tools/linear/types'
|
||||
import type { ToolConfig } from '@/tools/types'
|
||||
|
||||
export const linearCreateWorkflowStateTool: ToolConfig<
|
||||
@@ -94,9 +95,13 @@ export const linearCreateWorkflowStateTool: ToolConfig<
|
||||
workflowState {
|
||||
id
|
||||
name
|
||||
description
|
||||
type
|
||||
color
|
||||
position
|
||||
createdAt
|
||||
updatedAt
|
||||
archivedAt
|
||||
team {
|
||||
id
|
||||
name
|
||||
@@ -144,14 +149,7 @@ export const linearCreateWorkflowStateTool: ToolConfig<
|
||||
state: {
|
||||
type: 'object',
|
||||
description: 'The created workflow state',
|
||||
properties: {
|
||||
id: { type: 'string', description: 'State ID' },
|
||||
name: { type: 'string', description: 'State name' },
|
||||
type: { type: 'string', description: 'State type' },
|
||||
color: { type: 'string', description: 'State color' },
|
||||
position: { type: 'number', description: 'State position' },
|
||||
team: { type: 'object', description: 'Team this state belongs to' },
|
||||
},
|
||||
properties: WORKFLOW_STATE_OUTPUT_PROPERTIES,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import type { LinearGetActiveCycleParams, LinearGetActiveCycleResponse } from '@/tools/linear/types'
|
||||
import { CYCLE_FULL_OUTPUT_PROPERTIES } from '@/tools/linear/types'
|
||||
import type { ToolConfig } from '@/tools/types'
|
||||
|
||||
export const linearGetActiveCycleTool: ToolConfig<
|
||||
@@ -48,6 +49,7 @@ export const linearGetActiveCycleTool: ToolConfig<
|
||||
endsAt
|
||||
completedAt
|
||||
progress
|
||||
createdAt
|
||||
team {
|
||||
id
|
||||
name
|
||||
@@ -93,15 +95,7 @@ export const linearGetActiveCycleTool: ToolConfig<
|
||||
cycle: {
|
||||
type: 'object',
|
||||
description: 'The active cycle (null if no active cycle)',
|
||||
properties: {
|
||||
id: { type: 'string', description: 'Cycle ID' },
|
||||
number: { type: 'number', description: 'Cycle number' },
|
||||
name: { type: 'string', description: 'Cycle name' },
|
||||
startsAt: { type: 'string', description: 'Start date' },
|
||||
endsAt: { type: 'string', description: 'End date' },
|
||||
progress: { type: 'number', description: 'Progress percentage' },
|
||||
team: { type: 'object', description: 'Team this cycle belongs to' },
|
||||
},
|
||||
properties: CYCLE_FULL_OUTPUT_PROPERTIES,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -44,8 +44,12 @@ export const linearGetCustomerTool: ToolConfig<LinearGetCustomerParams, LinearGe
|
||||
domains
|
||||
externalIds
|
||||
logoUrl
|
||||
slugId
|
||||
approximateNeedCount
|
||||
revenue
|
||||
size
|
||||
createdAt
|
||||
updatedAt
|
||||
archivedAt
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ export const linearGetCycleTool: ToolConfig<LinearGetCycleParams, LinearGetCycle
|
||||
endsAt
|
||||
completedAt
|
||||
progress
|
||||
createdAt
|
||||
team {
|
||||
id
|
||||
name
|
||||
|
||||
@@ -88,7 +88,7 @@ export const linearListCustomerRequestsTool: ToolConfig<
|
||||
}
|
||||
`,
|
||||
variables: {
|
||||
first: params.first || 50,
|
||||
first: params.first ? Number(params.first) : 50,
|
||||
after: params.after,
|
||||
includeArchived: params.includeArchived || false,
|
||||
},
|
||||
|
||||
@@ -2,7 +2,7 @@ import type {
|
||||
LinearListCustomerStatusesParams,
|
||||
LinearListCustomerStatusesResponse,
|
||||
} from '@/tools/linear/types'
|
||||
import { CUSTOMER_STATUS_OUTPUT_PROPERTIES } from '@/tools/linear/types'
|
||||
import { CUSTOMER_STATUS_OUTPUT_PROPERTIES, PAGE_INFO_OUTPUT } from '@/tools/linear/types'
|
||||
import type { ToolConfig } from '@/tools/types'
|
||||
|
||||
export const linearListCustomerStatusesTool: ToolConfig<
|
||||
@@ -19,7 +19,20 @@ export const linearListCustomerStatusesTool: 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',
|
||||
@@ -33,23 +46,32 @@ export const linearListCustomerStatusesTool: ToolConfig<
|
||||
Authorization: `Bearer ${params.accessToken}`,
|
||||
}
|
||||
},
|
||||
body: () => ({
|
||||
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,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
|
||||
@@ -64,6 +64,7 @@ export const linearListCyclesTool: ToolConfig<LinearListCyclesParams, LinearList
|
||||
endsAt
|
||||
completedAt
|
||||
progress
|
||||
createdAt
|
||||
team {
|
||||
id
|
||||
name
|
||||
|
||||
@@ -61,6 +61,10 @@ export const linearListLabelsTool: ToolConfig<LinearListLabelsParams, LinearList
|
||||
name
|
||||
color
|
||||
description
|
||||
isGroup
|
||||
createdAt
|
||||
updatedAt
|
||||
archivedAt
|
||||
team {
|
||||
id
|
||||
name
|
||||
|
||||
@@ -2,6 +2,7 @@ import type {
|
||||
LinearListProjectLabelsParams,
|
||||
LinearListProjectLabelsResponse,
|
||||
} from '@/tools/linear/types'
|
||||
import { PAGE_INFO_OUTPUT, PROJECT_LABEL_OUTPUT_PROPERTIES } from '@/tools/linear/types'
|
||||
import type { ToolConfig } from '@/tools/types'
|
||||
|
||||
export const linearListProjectLabelsTool: ToolConfig<
|
||||
@@ -25,6 +26,18 @@ export const linearListProjectLabelsTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Optional project ID to filter labels for a specific project',
|
||||
},
|
||||
first: {
|
||||
type: 'number',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Number of labels to return (default: 50)',
|
||||
},
|
||||
after: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Cursor for pagination',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
@@ -40,15 +53,14 @@ export const linearListProjectLabelsTool: ToolConfig<
|
||||
}
|
||||
},
|
||||
body: (params) => {
|
||||
// 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,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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<string, unknown>) => ({
|
||||
...node,
|
||||
projectId: (node.project as Record<string, string>)?.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,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
|
||||
@@ -65,9 +65,13 @@ export const linearListWorkflowStatesTool: ToolConfig<
|
||||
nodes {
|
||||
id
|
||||
name
|
||||
description
|
||||
type
|
||||
color
|
||||
position
|
||||
createdAt
|
||||
updatedAt
|
||||
archivedAt
|
||||
team {
|
||||
id
|
||||
name
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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<string, OutputProperty>
|
||||
|
||||
@@ -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<string, OutputProperty>
|
||||
|
||||
@@ -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<string, OutputProperty>
|
||||
|
||||
@@ -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<string, OutputProperty>
|
||||
|
||||
@@ -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<string, OutputProperty>
|
||||
|
||||
@@ -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<string, OutputProperty>
|
||||
|
||||
@@ -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<string, OutputProperty>
|
||||
@@ -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<string, OutputProperty>
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -71,6 +71,7 @@ export const linearUpdateAttachmentTool: ToolConfig<
|
||||
title
|
||||
subtitle
|
||||
url
|
||||
createdAt
|
||||
updatedAt
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,8 +137,12 @@ export const linearUpdateCustomerTool: ToolConfig<
|
||||
domains
|
||||
externalIds
|
||||
logoUrl
|
||||
slugId
|
||||
approximateNeedCount
|
||||
revenue
|
||||
size
|
||||
createdAt
|
||||
updatedAt
|
||||
archivedAt
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -71,6 +71,10 @@ export const linearUpdateLabelTool: ToolConfig<LinearUpdateLabelParams, LinearUp
|
||||
name
|
||||
color
|
||||
description
|
||||
isGroup
|
||||
createdAt
|
||||
updatedAt
|
||||
archivedAt
|
||||
team {
|
||||
id
|
||||
name
|
||||
|
||||
@@ -2,6 +2,7 @@ import type {
|
||||
LinearUpdateProjectLabelParams,
|
||||
LinearUpdateProjectLabelResponse,
|
||||
} from '@/tools/linear/types'
|
||||
import { PROJECT_LABEL_OUTPUT_PROPERTIES } from '@/tools/linear/types'
|
||||
import type { ToolConfig } from '@/tools/types'
|
||||
|
||||
export const linearUpdateProjectLabelTool: ToolConfig<
|
||||
@@ -82,6 +83,7 @@ export const linearUpdateProjectLabelTool: ToolConfig<
|
||||
color
|
||||
isGroup
|
||||
createdAt
|
||||
updatedAt
|
||||
archivedAt
|
||||
}
|
||||
}
|
||||
@@ -119,6 +121,7 @@ export const linearUpdateProjectLabelTool: ToolConfig<
|
||||
projectLabel: {
|
||||
type: 'object',
|
||||
description: 'The updated project label',
|
||||
properties: PROJECT_LABEL_OUTPUT_PROPERTIES,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import type {
|
||||
LinearUpdateProjectMilestoneParams,
|
||||
LinearUpdateProjectMilestoneResponse,
|
||||
} from '@/tools/linear/types'
|
||||
import { PROJECT_MILESTONE_OUTPUT_PROPERTIES } from '@/tools/linear/types'
|
||||
import type { ToolConfig } from '@/tools/types'
|
||||
|
||||
export const linearUpdateProjectMilestoneTool: ToolConfig<
|
||||
@@ -79,10 +80,15 @@ export const linearUpdateProjectMilestoneTool: ToolConfig<
|
||||
id
|
||||
name
|
||||
description
|
||||
projectId
|
||||
targetDate
|
||||
progress
|
||||
sortOrder
|
||||
status
|
||||
createdAt
|
||||
archivedAt
|
||||
project {
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -107,10 +113,23 @@ export const linearUpdateProjectMilestoneTool: ToolConfig<
|
||||
}
|
||||
|
||||
const result = data.data.projectMilestoneUpdate
|
||||
if (!result.success) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Project milestone update was not successful',
|
||||
output: {},
|
||||
}
|
||||
}
|
||||
|
||||
const milestone = result.projectMilestone
|
||||
return {
|
||||
success: result.success,
|
||||
success: true,
|
||||
output: {
|
||||
projectMilestone: result.projectMilestone,
|
||||
projectMilestone: {
|
||||
...milestone,
|
||||
projectId: milestone.project?.id ?? null,
|
||||
project: undefined,
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
@@ -119,6 +138,7 @@ export const linearUpdateProjectMilestoneTool: ToolConfig<
|
||||
projectMilestone: {
|
||||
type: 'object',
|
||||
description: 'The updated project milestone',
|
||||
properties: PROJECT_MILESTONE_OUTPUT_PROPERTIES,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import type {
|
||||
LinearUpdateProjectStatusParams,
|
||||
LinearUpdateProjectStatusResponse,
|
||||
} from '@/tools/linear/types'
|
||||
import { PROJECT_STATUS_OUTPUT_PROPERTIES } from '@/tools/linear/types'
|
||||
import type { ToolConfig } from '@/tools/types'
|
||||
|
||||
export const linearUpdateProjectStatusTool: ToolConfig<
|
||||
@@ -100,7 +101,9 @@ export const linearUpdateProjectStatusTool: ToolConfig<
|
||||
color
|
||||
indefinite
|
||||
position
|
||||
type
|
||||
createdAt
|
||||
updatedAt
|
||||
archivedAt
|
||||
}
|
||||
}
|
||||
@@ -138,6 +141,7 @@ export const linearUpdateProjectStatusTool: ToolConfig<
|
||||
projectStatus: {
|
||||
type: 'object',
|
||||
description: 'The updated project status',
|
||||
properties: PROJECT_STATUS_OUTPUT_PROPERTIES,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import type {
|
||||
LinearUpdateWorkflowStateParams,
|
||||
LinearUpdateWorkflowStateResponse,
|
||||
} from '@/tools/linear/types'
|
||||
import { WORKFLOW_STATE_OUTPUT_PROPERTIES } from '@/tools/linear/types'
|
||||
import type { ToolConfig } from '@/tools/types'
|
||||
|
||||
export const linearUpdateWorkflowStateTool: ToolConfig<
|
||||
@@ -87,9 +88,13 @@ export const linearUpdateWorkflowStateTool: ToolConfig<
|
||||
workflowState {
|
||||
id
|
||||
name
|
||||
description
|
||||
type
|
||||
color
|
||||
position
|
||||
createdAt
|
||||
updatedAt
|
||||
archivedAt
|
||||
team {
|
||||
id
|
||||
name
|
||||
@@ -138,13 +143,7 @@ export const linearUpdateWorkflowStateTool: ToolConfig<
|
||||
state: {
|
||||
type: 'object',
|
||||
description: 'The updated workflow state',
|
||||
properties: {
|
||||
id: { type: 'string', description: 'State ID' },
|
||||
name: { type: 'string', description: 'State name' },
|
||||
type: { type: 'string', description: 'State type' },
|
||||
color: { type: 'string', description: 'State color' },
|
||||
position: { type: 'number', description: 'State position' },
|
||||
},
|
||||
properties: WORKFLOW_STATE_OUTPUT_PROPERTIES,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user