@relayfile/adapter-linear 0.3.15 → 0.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/discovery/linear/.adapter.md +23 -2
  2. package/discovery/linear/issues/.schema.json +18 -0
  3. package/discovery/linear/labels/.create.example.json +4 -0
  4. package/discovery/linear/labels/.schema.json +100 -0
  5. package/dist/__tests__/aliases.test.js +59 -1
  6. package/dist/__tests__/aliases.test.js.map +1 -1
  7. package/dist/__tests__/emit-auxiliary-files.test.js +78 -1
  8. package/dist/__tests__/emit-auxiliary-files.test.js.map +1 -1
  9. package/dist/__tests__/index-emission.test.js +14 -2
  10. package/dist/__tests__/index-emission.test.js.map +1 -1
  11. package/dist/__tests__/linear-adapter.test.js +7 -0
  12. package/dist/__tests__/linear-adapter.test.js.map +1 -1
  13. package/dist/__tests__/path-mapper.test.js +13 -1
  14. package/dist/__tests__/path-mapper.test.js.map +1 -1
  15. package/dist/__tests__/types.test.js +1 -0
  16. package/dist/__tests__/types.test.js.map +1 -1
  17. package/dist/emit-auxiliary-files.d.ts +9 -1
  18. package/dist/emit-auxiliary-files.d.ts.map +1 -1
  19. package/dist/emit-auxiliary-files.js +43 -3
  20. package/dist/emit-auxiliary-files.js.map +1 -1
  21. package/dist/index-emitter.d.ts +2 -2
  22. package/dist/index-emitter.d.ts.map +1 -1
  23. package/dist/index-emitter.js +4 -1
  24. package/dist/index-emitter.js.map +1 -1
  25. package/dist/layout-prompt.d.ts +1 -1
  26. package/dist/layout-prompt.d.ts.map +1 -1
  27. package/dist/layout-prompt.js +10 -3
  28. package/dist/layout-prompt.js.map +1 -1
  29. package/dist/layout.d.ts.map +1 -1
  30. package/dist/layout.js +11 -2
  31. package/dist/layout.js.map +1 -1
  32. package/dist/linear-adapter.d.ts.map +1 -1
  33. package/dist/linear-adapter.js +114 -14
  34. package/dist/linear-adapter.js.map +1 -1
  35. package/dist/path-mapper.d.ts +4 -1
  36. package/dist/path-mapper.d.ts.map +1 -1
  37. package/dist/path-mapper.js +20 -0
  38. package/dist/path-mapper.js.map +1 -1
  39. package/dist/queries.d.ts +2 -1
  40. package/dist/queries.d.ts.map +1 -1
  41. package/dist/queries.js +7 -0
  42. package/dist/queries.js.map +1 -1
  43. package/dist/resources.d.ts +7 -0
  44. package/dist/resources.d.ts.map +1 -1
  45. package/dist/resources.js +8 -0
  46. package/dist/resources.js.map +1 -1
  47. package/dist/types.d.ts +19 -2
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/types.js +1 -0
  50. package/dist/types.js.map +1 -1
  51. package/dist/writeback.d.ts +2 -0
  52. package/dist/writeback.d.ts.map +1 -1
  53. package/dist/writeback.js +108 -14
  54. package/dist/writeback.js.map +1 -1
  55. package/dist/writeback.test.js +69 -0
  56. package/dist/writeback.test.js.map +1 -1
  57. package/package.json +3 -3
@@ -1,10 +1,11 @@
1
1
  # Linear adapter
2
2
 
3
- The Linear adapter exposes teams, issues, users, comments, projects, cycles, milestones, and roadmaps under `/linear`, with writeback routes for creating issues and comments plus creating, updating, archiving, and grouping issues into Linear projects. Companion cloud actions use slugs `create-project`, `update-project`, `add-issues-to-project`, and `archive-project` at `POST /linear/projects`, `PATCH /linear/projects/:id`, `POST /linear/projects/:id/add-issues`, and `POST /linear/projects/:id/archive` with Linear OAuth scope `write`.
3
+ The Linear adapter exposes teams, issues, users, comments, labels, projects, cycles, milestones, and roadmaps under `/linear`, with writeback routes for creating issues and comments, creating/updating/deleting labels, and creating, updating, archiving, and grouping issues into Linear projects. Companion cloud actions use slugs `create-project`, `update-project`, `add-issues-to-project`, and `archive-project` at `POST /linear/projects`, `PATCH /linear/projects/:id`, `POST /linear/projects/:id/add-issues`, and `POST /linear/projects/:id/archive` with Linear OAuth scope `write`.
4
4
 
5
5
  Read-only mounts:
6
6
  - `/linear/teams/<teamId>.json` - Team records.
7
7
  - `/linear/issues/<issueId>.json` - Issue records.
8
+ - `/linear/labels/<labelId>.json` - Label records. Labels also expose by-id, by-name, and by-team aliases.
8
9
  - `/linear/projects/<projectId>/meta.json` - Project records. Projects also expose by-id, by-name, by-state, and by-team aliases; multi-team projects appear under every team.
9
10
  - `/linear/users/<userId>.json` - User records.
10
11
  - `/linear/comments/<name>__<commentId>/meta.json` - Comment records (directory records so per-comment children can nest without a file/dir collision).
@@ -15,6 +16,7 @@ Resources:
15
16
  |---|---|---|---|---|
16
17
  | `/linear/issues/<id>.json` | `/linear/issues/.schema.json` | `/linear/issues/.create.example.json` | `^(?:[A-Za-z0-9_.~-]+(?:--\|__))?(?:[0-9a-f]{32}\|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$` | Creates a Linear issue. |
17
18
  | `/linear/issues/{issueId}/comments/<id>.json` | `/linear/issues/{issueId}/comments/.schema.json` | `/linear/issues/{issueId}/comments/.create.example.json` | `^(?:[A-Za-z0-9_.~-]+(?:--\|__))?(?:[0-9a-f]{32}\|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$` | Creates a comment on a Linear issue. |
19
+ | `/linear/labels/<id>.json` | `/linear/labels/.schema.json` | `/linear/labels/.create.example.json` | `^(?:[A-Za-z0-9_.~-]+(?:--\|__))?(?:[0-9a-f]{32}\|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$` | Creates a Linear issue label when written to a non-canonical draft filename, updates mutable label fields when written to `/linear/labels/{labelId}.json`, and deletes a label when the canonical file is removed. |
18
20
  | `/linear/projects/<id>.json` | `/linear/projects/.schema.json` | `/linear/projects/.create.example.json` | `^(?:[A-Za-z0-9_.~-]+(?:--\|__))?(?:[0-9a-f]{32}\|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$` | Creates a Linear project. The draft filename (for example `factory-create-<uuid>.json`) is an operator-supplied idempotency key; the created Linear UUID is returned as `id` by the companion action. Payloads must provide `teamId` or `teamIds`. |
19
21
  | `/linear/projects/{projectId}/meta.json` | `/linear/projects/{projectId}/meta.json/.schema.json` | `/linear/projects/{projectId}/meta.json/.create.example.json` | exact file path | Updates mutable Linear project fields. Archive is represented by writing `{ "archived": true }`, which the adapter maps to Linear `projectArchive` with soft archive semantics only; it never sets `trash`, and hard-trash requires the Linear UI. Hard delete is out of scope. |
20
22
  | `/linear/projects/{projectId}/add-issues.json` | `/linear/projects/{projectId}/add-issues.json/.schema.json` | `/linear/projects/{projectId}/add-issues.json/.create.example.json` | exact file path | Moves existing Linear issues into the project. The companion cloud action endpoint is `POST /linear/projects/:id/add-issues` and returns per-issue partial-success results. |
@@ -33,6 +35,7 @@ Resources:
33
35
  ## ID Patterns
34
36
  - `/linear/issues/<id>.json`: `^(?:[A-Za-z0-9_.~-]+(?:--|__))?(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$`. Filenames that do not match this pattern are treated as create drafts.
35
37
  - `/linear/issues/{issueId}/comments/<id>.json`: `^(?:[A-Za-z0-9_.~-]+(?:--|__))?(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$`. Filenames that do not match this pattern are treated as create drafts.
38
+ - `/linear/labels/<id>.json`: `^(?:[A-Za-z0-9_.~-]+(?:--|__))?(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$`. Filenames that do not match this pattern are treated as create drafts.
36
39
  - `/linear/projects/<id>.json`: `^(?:[A-Za-z0-9_.~-]+(?:--|__))?(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$`. Filenames that do not match this pattern are treated as create drafts.
37
40
  - `/linear/projects/{projectId}/meta.json`: exact file path.
38
41
  - `/linear/projects/{projectId}/add-issues.json`: exact file path.
@@ -46,7 +49,7 @@ Resource: `/linear/issues/<id>.json`
46
49
  Schema: `/linear/issues/.schema.json`
47
50
  Create example: `/linear/issues/.create.example.json`
48
51
  Required fields: `teamId`, `title`.
49
- Optional fields: `description`, `priority`, `assigneeId`, `stateId`, `projectId`, `cycleId`, `labelIds`, `dueDate`, `estimate`, `parentId`.
52
+ Optional fields: `description`, `priority`, `assigneeId`, `stateId`, `projectId`, `cycleId`, `labelIds`, `addedLabelIds`, `removedLabelIds`, `dueDate`, `estimate`, `parentId`.
50
53
 
51
54
  Fields:
52
55
 
@@ -59,6 +62,8 @@ Fields:
59
62
  - `projectId` (optional, string, uuid) - Linear project UUID.
60
63
  - `cycleId` (optional, string, uuid) - Linear cycle UUID.
61
64
  - `labelIds` (optional, array) - Linear label UUIDs.
65
+ - `addedLabelIds` (optional, array) - Linear label UUIDs to add without replacing the full label set. Do not combine with `labelIds`.
66
+ - `removedLabelIds` (optional, array) - Linear label UUIDs to remove without replacing the full label set. Do not combine with `labelIds`.
62
67
  - `dueDate` (optional, string, date) - Due date in YYYY-MM-DD form.
63
68
  - `estimate` (optional, number) - Linear estimate value.
64
69
  - `parentId` (optional, string, uuid) - Parent issue UUID.
@@ -77,6 +82,22 @@ Fields:
77
82
  - `parentId` (optional, string, uuid) - Parent comment UUID for threaded replies.
78
83
  - `doNotSubscribeToIssue` (optional, boolean) - Whether to avoid subscribing the commenter to the issue.
79
84
 
85
+ ### Create Linear label
86
+
87
+ Resource: `/linear/labels/<id>.json`
88
+ Schema: `/linear/labels/.schema.json`
89
+ Create example: `/linear/labels/.create.example.json`
90
+ Required fields: `name`.
91
+ Optional fields: `description`, `color`, `teamId`, `parentId`.
92
+
93
+ Fields:
94
+
95
+ - `name` (required, string) - Label name.
96
+ - `description` (optional, string) - Label description.
97
+ - `color` (optional, string) - Label color as a hex string.
98
+ - `teamId` (optional, string, uuid) - Linear team UUID for a team-scoped label. Omit for a workspace-level label.
99
+ - `parentId` (optional, string, uuid) - Parent label UUID for nested labels.
100
+
80
101
  ### Create Linear project
81
102
 
82
103
  Resource: `/linear/projects/<id>.json`
@@ -60,6 +60,24 @@
60
60
  "description": "Linear label UUID."
61
61
  }
62
62
  },
63
+ "addedLabelIds": {
64
+ "type": "array",
65
+ "description": "Linear label UUIDs to add without replacing the full label set. Do not combine with `labelIds`.",
66
+ "items": {
67
+ "type": "string",
68
+ "format": "uuid",
69
+ "description": "Linear label UUID."
70
+ }
71
+ },
72
+ "removedLabelIds": {
73
+ "type": "array",
74
+ "description": "Linear label UUIDs to remove without replacing the full label set. Do not combine with `labelIds`.",
75
+ "items": {
76
+ "type": "string",
77
+ "format": "uuid",
78
+ "description": "Linear label UUID."
79
+ }
80
+ },
63
81
  "dueDate": {
64
82
  "type": "string",
65
83
  "format": "date",
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "Replace example label name",
3
+ "color": "#bec2c8"
4
+ }
@@ -0,0 +1,100 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Linear label",
4
+ "type": "object",
5
+ "required": [
6
+ "name"
7
+ ],
8
+ "properties": {
9
+ "name": {
10
+ "type": "string",
11
+ "description": "Label name.",
12
+ "minLength": 1
13
+ },
14
+ "description": {
15
+ "type": "string",
16
+ "description": "Label description."
17
+ },
18
+ "color": {
19
+ "type": "string",
20
+ "description": "Label color as a hex string."
21
+ },
22
+ "teamId": {
23
+ "type": "string",
24
+ "format": "uuid",
25
+ "description": "Linear team UUID for a team-scoped label. Omit for a workspace-level label."
26
+ },
27
+ "parentId": {
28
+ "type": "string",
29
+ "format": "uuid",
30
+ "description": "Parent label UUID for nested labels."
31
+ },
32
+ "id": {
33
+ "type": "string",
34
+ "description": "Provider canonical record id.",
35
+ "readOnly": true
36
+ },
37
+ "createdAt": {
38
+ "type": "string",
39
+ "format": "date-time",
40
+ "description": "Provider creation timestamp.",
41
+ "readOnly": true
42
+ },
43
+ "updatedAt": {
44
+ "type": "string",
45
+ "format": "date-time",
46
+ "description": "Provider last update timestamp.",
47
+ "readOnly": true
48
+ },
49
+ "url": {
50
+ "type": "string",
51
+ "format": "uri",
52
+ "description": "Provider URL for the record.",
53
+ "readOnly": true
54
+ },
55
+ "identifier": {
56
+ "type": "string",
57
+ "description": "Provider human-readable identifier or key.",
58
+ "readOnly": true
59
+ },
60
+ "provider": {
61
+ "type": "string",
62
+ "description": "Relayfile provider name.",
63
+ "readOnly": true
64
+ },
65
+ "objectType": {
66
+ "type": "string",
67
+ "description": "Relayfile object type.",
68
+ "readOnly": true
69
+ },
70
+ "objectId": {
71
+ "type": "string",
72
+ "description": "Relayfile object id.",
73
+ "readOnly": true
74
+ },
75
+ "workspaceId": {
76
+ "type": "string",
77
+ "description": "Relayfile workspace id.",
78
+ "readOnly": true
79
+ },
80
+ "connectionId": {
81
+ "type": "string",
82
+ "description": "Relayfile connection id.",
83
+ "readOnly": true
84
+ },
85
+ "_webhook": {
86
+ "type": "object",
87
+ "description": "Provider webhook metadata captured during sync.",
88
+ "readOnly": true,
89
+ "additionalProperties": true
90
+ },
91
+ "_connection": {
92
+ "type": "object",
93
+ "description": "Relayfile connection metadata captured during sync.",
94
+ "readOnly": true,
95
+ "additionalProperties": true
96
+ }
97
+ },
98
+ "additionalProperties": false,
99
+ "description": "Full resource record schema. Fields marked readOnly are synced from the provider and cannot be written by agents."
100
+ }
@@ -2,7 +2,7 @@ import assert from 'node:assert/strict';
2
2
  import { describe, it } from 'node:test';
3
3
  import { aliasCollisionSuffix, slugifyAlias } from '../alias-slug.js';
4
4
  import { LinearAdapter } from '../index.js';
5
- import { linearByIdAliasPath, linearByNameAliasPath, linearByTitleAliasPath, linearIssuePath, linearProjectPath, } from '../path-mapper.js';
5
+ import { linearByIdAliasPath, linearByNameAliasPath, linearByTitleAliasPath, linearIssuePath, linearLabelByTeamPath, linearLabelPath, linearProjectPath, } from '../path-mapper.js';
6
6
  function createAdapter() {
7
7
  const files = new Map();
8
8
  const deletedPaths = [];
@@ -109,6 +109,64 @@ describe('linear aliases', () => {
109
109
  assert.strictEqual(client.readFile(collisionAliasPath), client.readFile(secondCanonicalPath));
110
110
  assert.ok(collisionAliasPath.endsWith(`${aliasCollisionSuffix('project-2')}.json`));
111
111
  });
112
+ it('writes label by-id, by-name, and by-team aliases', async () => {
113
+ const { adapter, client } = createAdapter();
114
+ await adapter.ingestWebhook('ws-linear', {
115
+ provider: 'linear',
116
+ eventType: 'label.create',
117
+ objectType: 'label',
118
+ objectId: 'label-1',
119
+ payload: {
120
+ id: 'label-1',
121
+ name: 'Bug',
122
+ team_id: 'team-1',
123
+ },
124
+ });
125
+ const canonicalPath = linearLabelPath('label-1');
126
+ const byIdPath = linearByIdAliasPath('/linear/labels', 'label-1');
127
+ const byNamePath = linearByNameAliasPath('/linear/labels', 'Bug', 'label-1');
128
+ const byTeamPath = linearLabelByTeamPath('team-1', 'label-1');
129
+ assert.strictEqual(client.readFile(byIdPath), client.readFile(canonicalPath));
130
+ assert.strictEqual(client.readFile(byNamePath), client.readFile(canonicalPath));
131
+ assert.strictEqual(client.readFile(byTeamPath), client.readFile(canonicalPath));
132
+ });
133
+ it('normalizes IssueLabel webhooks and removes label aliases on delete', async () => {
134
+ const { adapter, files, deletedPaths } = createAdapter();
135
+ await adapter.ingestWebhook('ws-linear', {
136
+ type: 'IssueLabel',
137
+ action: 'create',
138
+ data: {
139
+ id: 'label-1',
140
+ name: 'Bug',
141
+ team: { id: 'team-1' },
142
+ },
143
+ });
144
+ const canonicalPath = linearLabelPath('label-1');
145
+ const byIdPath = linearByIdAliasPath('/linear/labels', 'label-1');
146
+ const byNamePath = linearByNameAliasPath('/linear/labels', 'Bug', 'label-1');
147
+ const byTeamPath = linearLabelByTeamPath('team-1', 'label-1');
148
+ assert.ok(files.has(canonicalPath));
149
+ assert.ok(files.has(byIdPath));
150
+ assert.ok(files.has(byNamePath));
151
+ assert.ok(files.has(byTeamPath));
152
+ await adapter.ingestWebhook('ws-linear', {
153
+ type: 'IssueLabel',
154
+ action: 'remove',
155
+ data: {
156
+ id: 'label-1',
157
+ name: 'Bug',
158
+ team: { id: 'team-1' },
159
+ },
160
+ });
161
+ assert.strictEqual(files.has(canonicalPath), false);
162
+ assert.strictEqual(files.has(byIdPath), false);
163
+ assert.strictEqual(files.has(byNamePath), false);
164
+ assert.strictEqual(files.has(byTeamPath), false);
165
+ assert.ok(deletedPaths.includes(canonicalPath));
166
+ assert.ok(deletedPaths.includes(byIdPath));
167
+ assert.ok(deletedPaths.includes(byNamePath));
168
+ assert.ok(deletedPaths.includes(byTeamPath));
169
+ });
112
170
  it('falls back to the object id for issue by-id aliases when the public identifier is missing', async () => {
113
171
  const { adapter, client } = createAdapter();
114
172
  const objectId = 'issue-uuid-42';
@@ -1 +1 @@
1
- {"version":3,"file":"aliases.test.js","sourceRoot":"","sources":["../../src/__tests__/aliases.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aliases.test.js","sourceRoot":"","sources":["../../src/__tests__/aliases.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { describe, it } from 'node:test';
2
2
  import assert from 'node:assert/strict';
3
3
  import { emitLinearAuxiliaryFiles } from '../emit-auxiliary-files.js';
4
- import { LINEAR_PATH_ROOT, linearByIdAliasPath, linearByNameAliasPath, linearByTitleAliasPath, linearByUuidAliasPath, linearCyclesIndexPath, linearIssueByAssigneePath, linearIssueByCreatorPath, linearIssueByEditedPath, linearIssueByPriorityPath, linearIssueByStatePath, linearIssuePath, linearIssuesIndexPath, linearProjectByStatePath, linearProjectByTeamPath, linearProjectLegacyPath, linearProjectsIndexPath, linearProjectPath, linearRootIndexPath, linearStatesIndexPath, linearStatePath, linearTeamPath, linearTeamsIndexPath, linearUserPath, linearUsersIndexPath, } from '../path-mapper.js';
4
+ import { LINEAR_PATH_ROOT, linearByIdAliasPath, linearByNameAliasPath, linearByTitleAliasPath, linearByUuidAliasPath, linearCyclesIndexPath, linearIssueByAssigneePath, linearIssueByCreatorPath, linearIssueByEditedPath, linearIssueByPriorityPath, linearIssueByStatePath, linearIssuePath, linearIssuesIndexPath, linearLabelByTeamPath, linearLabelPath, linearLabelsIndexPath, linearProjectByStatePath, linearProjectByTeamPath, linearProjectLegacyPath, linearProjectsIndexPath, linearProjectPath, linearRootIndexPath, linearStatesIndexPath, linearStatePath, linearTeamPath, linearTeamsIndexPath, linearUserPath, linearUsersIndexPath, } from '../path-mapper.js';
5
5
  const ISSUES_SCOPE = `${LINEAR_PATH_ROOT}/issues`;
6
6
  function createClient(options = {}) {
7
7
  const files = new Map(Object.entries(options.initialFiles ?? {}));
@@ -53,6 +53,7 @@ describe('emitLinearAuxiliaryFiles', () => {
53
53
  assert.deepEqual(rows, [
54
54
  { id: 'issues', title: 'Issues' },
55
55
  { id: 'comments', title: 'Comments' },
56
+ { id: 'labels', title: 'Labels' },
56
57
  { id: 'teams', title: 'Teams' },
57
58
  { id: 'users', title: 'Users' },
58
59
  { id: 'projects', title: 'Projects' },
@@ -150,6 +151,37 @@ describe('emitLinearAuxiliaryFiles', () => {
150
151
  assert.ok(client.files.has(linearByNameAliasPath(`${LINEAR_PATH_ROOT}/teams`, 'Core', 'team-1')));
151
152
  assert.ok(client.files.has(linearByNameAliasPath(`${LINEAR_PATH_ROOT}/teams`, 'Core!!!', 'team-2', true)));
152
153
  });
154
+ it('materializes label aliases and disambiguates by-name collisions', async () => {
155
+ const client = createClient();
156
+ const result = await emitLinearAuxiliaryFiles(client, {
157
+ workspaceId: 'ws-1',
158
+ labels: [
159
+ {
160
+ id: 'label-1',
161
+ name: 'Bug',
162
+ color: '#d00',
163
+ team_id: 'team-1',
164
+ updatedAt: '2026-05-12T00:00:00Z',
165
+ },
166
+ {
167
+ id: 'label-2',
168
+ name: 'Bug!!!',
169
+ team: { id: 'team-1', name: 'Engineering' },
170
+ updatedAt: '2026-05-13T00:00:00Z',
171
+ },
172
+ ],
173
+ });
174
+ assert.deepEqual(result.errors, []);
175
+ assert.ok(client.files.has(linearLabelPath('label-1')));
176
+ assert.ok(client.files.has(linearByIdAliasPath(`${LINEAR_PATH_ROOT}/labels`, 'label-1')));
177
+ assert.ok(client.files.has(linearByNameAliasPath(`${LINEAR_PATH_ROOT}/labels`, 'Bug', 'label-1')));
178
+ assert.ok(client.files.has(linearByNameAliasPath(`${LINEAR_PATH_ROOT}/labels`, 'Bug!!!', 'label-2', true)));
179
+ assert.ok(client.files.has(linearLabelByTeamPath('team-1', 'label-1')));
180
+ assert.ok(client.files.has(linearLabelByTeamPath('team-1', 'label-2')));
181
+ const rows = JSON.parse(client.files.get(linearLabelsIndexPath()));
182
+ assert.deepEqual(rows.map((row) => row.id), ['label-2', 'label-1']);
183
+ assert.deepEqual(rows.map((row) => row.title), ['Bug!!!', 'Bug']);
184
+ });
153
185
  it('disambiguates project and team alias slug collisions without readFile support', async () => {
154
186
  const client = createClient({ noRead: true });
155
187
  const result = await emitLinearAuxiliaryFiles(client, {
@@ -585,6 +617,51 @@ describe('emitLinearAuxiliaryFiles', () => {
585
617
  assert.deepEqual(writtenRows.map((r) => r.id), ['project-456']);
586
618
  assert.equal(result.deleted, expectedDeletes.length);
587
619
  });
620
+ it('delete tombstone for a label removes canonical + aliases and drops the index row', async () => {
621
+ const priorPayload = {
622
+ provider: 'linear',
623
+ objectType: 'label',
624
+ objectId: 'label-123',
625
+ payload: {
626
+ id: 'label-123',
627
+ name: 'Bug',
628
+ team_id: 'team-1',
629
+ updatedAt: '2026-05-11T00:00:00Z',
630
+ },
631
+ };
632
+ const priorIndex = [
633
+ { id: 'label-123', title: 'Bug', updated: '2026-05-12T00:00:00Z' },
634
+ { id: 'label-456', title: 'Feature', updated: '2026-05-11T00:00:00Z' },
635
+ ];
636
+ const client = createClient({
637
+ initialFiles: {
638
+ [linearLabelPath('label-123')]: JSON.stringify(priorPayload),
639
+ [linearByIdAliasPath(`${LINEAR_PATH_ROOT}/labels`, 'label-123')]: JSON.stringify(priorPayload),
640
+ [linearByNameAliasPath(`${LINEAR_PATH_ROOT}/labels`, 'Bug', 'label-123')]: JSON.stringify(priorPayload),
641
+ [linearLabelByTeamPath('team-1', 'label-123')]: JSON.stringify(priorPayload),
642
+ [linearLabelsIndexPath()]: JSON.stringify(priorIndex),
643
+ },
644
+ });
645
+ const result = await emitLinearAuxiliaryFiles(client, {
646
+ workspaceId: 'ws-1',
647
+ labels: [{ id: 'label-123', _deleted: true }],
648
+ });
649
+ const deletedPaths = new Set(client.deletes.map((d) => d.path));
650
+ const expectedDeletes = [
651
+ linearLabelPath('label-123'),
652
+ linearByIdAliasPath(`${LINEAR_PATH_ROOT}/labels`, 'label-123'),
653
+ linearByNameAliasPath(`${LINEAR_PATH_ROOT}/labels`, 'Bug', 'label-123'),
654
+ linearLabelByTeamPath('team-1', 'label-123'),
655
+ ];
656
+ for (const path of expectedDeletes) {
657
+ assert.ok(deletedPaths.has(path), `expected delete at ${path}`);
658
+ }
659
+ const indexWrite = client.writes.find((w) => w.path === linearLabelsIndexPath());
660
+ assert.ok(indexWrite, 'expected an index write after delete to prune the row');
661
+ const writtenRows = JSON.parse(indexWrite.content);
662
+ assert.deepEqual(writtenRows.map((r) => r.id), ['label-456']);
663
+ assert.equal(result.deleted, expectedDeletes.length);
664
+ });
588
665
  it('delete tombstone for a user drops the index row', async () => {
589
666
  const priorIndex = [
590
667
  { id: 'user-1', title: 'Alice', updated: '2026-05-12T00:00:00Z' },