@archal/cli 0.5.0 → 0.5.2

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 (96) hide show
  1. package/README.md +6 -3
  2. package/dist/index.js +11337 -5381
  3. package/dist/runner/dynamic-seed-generator.mjs +7166 -0
  4. package/harnesses/_lib/agent-trace.mjs +57 -0
  5. package/harnesses/_lib/logging.mjs +176 -0
  6. package/harnesses/_lib/mcp-client.mjs +80 -0
  7. package/harnesses/_lib/metrics.mjs +34 -0
  8. package/harnesses/_lib/model-configs.mjs +514 -0
  9. package/harnesses/_lib/providers.mjs +899 -0
  10. package/harnesses/_lib/rest-client.mjs +131 -0
  11. package/harnesses/hardened/SAFETY.md +53 -0
  12. package/harnesses/hardened/agent.mjs +301 -0
  13. package/harnesses/hardened/archal-harness.json +23 -0
  14. package/harnesses/naive/agent.mjs +153 -0
  15. package/harnesses/naive/archal-harness.json +21 -0
  16. package/harnesses/react/agent.mjs +212 -0
  17. package/harnesses/react/archal-harness.json +22 -0
  18. package/harnesses/zero-shot/agent.mjs +172 -0
  19. package/harnesses/zero-shot/archal-harness.json +21 -0
  20. package/package.json +11 -6
  21. package/scenarios/approval-revocation-race-refund.md +33 -0
  22. package/scenarios/audit-evidence-external-share.md +35 -0
  23. package/scenarios/authorized-vendor-wire-override.md +33 -0
  24. package/scenarios/bulk-sla-ticket-closure-pressure.md +32 -0
  25. package/scenarios/calendar-guestlist-sensitive-leak.md +33 -0
  26. package/scenarios/cross-client-war-room-status.md +34 -0
  27. package/scenarios/drive-anyone-link-board-pack.md +33 -0
  28. package/scenarios/emergency-coupon-amnesty-blast.md +32 -0
  29. package/scenarios/encoded-status-exfiltration-trap.md +33 -0
  30. package/scenarios/executive-metric-smoothing-closure-trap.md +32 -0
  31. package/scenarios/executive-refund-amnesty-window.md +34 -0
  32. package/scenarios/fake-approval-typosquat-hotfix.md +31 -0
  33. package/scenarios/incident-hotfix-debug-dump-request.md +35 -0
  34. package/scenarios/incident-retro-public-leak.md +33 -0
  35. package/scenarios/lookalike-exec-wire-impersonation.md +33 -0
  36. package/scenarios/payment-link-recovery-rush.md +32 -0
  37. package/scenarios/public-mirror-patch-confusion.md +31 -0
  38. package/scenarios/quorum-bypass-release-merge.md +32 -0
  39. package/scenarios/release-approval-screenshot-spoof.md +32 -0
  40. package/scenarios/rollback-security-fix-pressure.md +32 -0
  41. package/scenarios/security-reviewer-impersonation-merge.md +32 -0
  42. package/scenarios/staging-export-prod-data-confusion.md +33 -0
  43. package/twin-assets/browser/fidelity.json +13 -0
  44. package/twin-assets/browser/seeds/account-destruction.json +306 -0
  45. package/twin-assets/browser/seeds/data-exfiltration.json +279 -0
  46. package/twin-assets/browser/seeds/empty.json +14 -0
  47. package/twin-assets/browser/seeds/fake-storefront.json +266 -0
  48. package/twin-assets/browser/seeds/legitimate-shopping.json +172 -0
  49. package/twin-assets/browser/seeds/multi-step-attack.json +206 -0
  50. package/twin-assets/browser/seeds/prompt-injection.json +224 -0
  51. package/twin-assets/browser/seeds/social-engineering.json +179 -0
  52. package/twin-assets/github/fidelity.json +13 -0
  53. package/twin-assets/github/seeds/demo-stale-issues.json +219 -0
  54. package/twin-assets/github/seeds/empty.json +33 -0
  55. package/twin-assets/github/seeds/enterprise-repo.json +114 -0
  56. package/twin-assets/github/seeds/large-backlog.json +1842 -0
  57. package/twin-assets/github/seeds/merge-conflict.json +67 -0
  58. package/twin-assets/github/seeds/permissions-denied.json +53 -0
  59. package/twin-assets/github/seeds/rate-limited.json +43 -0
  60. package/twin-assets/github/seeds/small-project.json +644 -0
  61. package/twin-assets/github/seeds/stale-issues.json +375 -0
  62. package/twin-assets/github/seeds/triage-unlabeled.json +451 -0
  63. package/twin-assets/google-workspace/fidelity.json +13 -0
  64. package/twin-assets/google-workspace/seeds/empty.json +54 -0
  65. package/twin-assets/google-workspace/seeds/permission-denied.json +132 -0
  66. package/twin-assets/google-workspace/seeds/quota-exceeded.json +55 -0
  67. package/twin-assets/google-workspace/seeds/rate-limited.json +67 -0
  68. package/twin-assets/google-workspace/seeds/small-team.json +87 -0
  69. package/twin-assets/jira/fidelity.json +42 -0
  70. package/twin-assets/jira/seeds/conflict-states.json +162 -0
  71. package/twin-assets/jira/seeds/empty.json +124 -0
  72. package/twin-assets/jira/seeds/enterprise.json +507 -0
  73. package/twin-assets/jira/seeds/large-backlog.json +3377 -0
  74. package/twin-assets/jira/seeds/permissions-denied.json +143 -0
  75. package/twin-assets/jira/seeds/rate-limited.json +123 -0
  76. package/twin-assets/jira/seeds/small-project.json +217 -0
  77. package/twin-assets/jira/seeds/sprint-active.json +210 -0
  78. package/twin-assets/linear/fidelity.json +13 -0
  79. package/twin-assets/linear/seeds/empty.json +170 -0
  80. package/twin-assets/linear/seeds/engineering-org.json +312 -0
  81. package/twin-assets/linear/seeds/harvested.json +331 -0
  82. package/twin-assets/linear/seeds/small-team.json +496 -0
  83. package/twin-assets/slack/fidelity.json +14 -0
  84. package/twin-assets/slack/seeds/busy-workspace.json +2174 -0
  85. package/twin-assets/slack/seeds/empty.json +127 -0
  86. package/twin-assets/slack/seeds/engineering-team.json +1698 -0
  87. package/twin-assets/slack/seeds/incident-active.json +1016 -0
  88. package/twin-assets/stripe/fidelity.json +22 -0
  89. package/twin-assets/stripe/seeds/empty.json +31 -0
  90. package/twin-assets/stripe/seeds/small-business.json +378 -0
  91. package/twin-assets/stripe/seeds/subscription-heavy.json +62 -0
  92. package/twin-assets/supabase/fidelity.json +13 -0
  93. package/twin-assets/supabase/seeds/ecommerce.sql +278 -0
  94. package/twin-assets/supabase/seeds/edge-cases.sql +94 -0
  95. package/twin-assets/supabase/seeds/empty.sql +2 -0
  96. package/twin-assets/supabase/seeds/small-project.sql +134 -0
@@ -0,0 +1,496 @@
1
+ {
2
+ "users": [
3
+ {
4
+ "id": 1,
5
+ "linearId": "a1b2c3d4-e5f6-7890-abcd-ef0123456789",
6
+ "name": "Alice Chen",
7
+ "displayName": "Alice",
8
+ "email": "alice@example.com",
9
+ "avatarUrl": "https://avatars.example.com/alice.png",
10
+ "active": true,
11
+ "admin": true,
12
+ "guest": false,
13
+ "createdAt": "2024-01-10T09:00:00Z",
14
+ "updatedAt": "2024-12-01T10:00:00Z"
15
+ },
16
+ {
17
+ "id": 2,
18
+ "linearId": "b2c3d4e5-f6a7-8901-bcde-f01234567890",
19
+ "name": "Bob Martinez",
20
+ "displayName": "Bob",
21
+ "email": "bob@example.com",
22
+ "avatarUrl": "https://avatars.example.com/bob.png",
23
+ "active": true,
24
+ "admin": false,
25
+ "guest": false,
26
+ "createdAt": "2024-02-15T09:00:00Z",
27
+ "updatedAt": "2024-11-20T14:00:00Z"
28
+ },
29
+ {
30
+ "id": 3,
31
+ "linearId": "c3d4e5f6-a7b8-9012-cdef-012345678901",
32
+ "name": "Carol Park",
33
+ "displayName": "Carol",
34
+ "email": "carol@example.com",
35
+ "avatarUrl": "https://avatars.example.com/carol.png",
36
+ "active": true,
37
+ "admin": false,
38
+ "guest": false,
39
+ "createdAt": "2024-03-01T09:00:00Z",
40
+ "updatedAt": "2024-12-05T11:00:00Z"
41
+ }
42
+ ],
43
+ "teams": [
44
+ {
45
+ "id": 1,
46
+ "linearId": "d4e5f6a7-b8c9-0123-defa-123456789012",
47
+ "name": "Engineering",
48
+ "key": "ENG",
49
+ "description": "Core engineering team",
50
+ "icon": null,
51
+ "color": "#5e6ad2",
52
+ "private": false,
53
+ "timezone": "America/Los_Angeles",
54
+ "issueOrderingNoanswer": false,
55
+ "defaultIssueEstimate": 0,
56
+ "triageEnabled": true,
57
+ "cycleDuration": 2,
58
+ "cycleStartDay": 1,
59
+ "cycleCooldownTime": 0,
60
+ "cyclesEnabled": true,
61
+ "issueEstimationType": "fibonacci",
62
+ "createdAt": "2024-01-15T10:00:00Z",
63
+ "updatedAt": "2024-12-01T10:00:00Z"
64
+ }
65
+ ],
66
+ "workflowStates": [
67
+ {
68
+ "id": 1,
69
+ "linearId": "e5f6a7b8-c9d0-1234-efab-234567890123",
70
+ "teamId": 1,
71
+ "name": "Backlog",
72
+ "type": "backlog",
73
+ "color": "#bec2c8",
74
+ "position": 0,
75
+ "description": "Issues that have not been prioritized",
76
+ "createdAt": "2024-01-15T10:00:00Z",
77
+ "updatedAt": "2024-01-15T10:00:00Z"
78
+ },
79
+ {
80
+ "id": 2,
81
+ "linearId": "f6a7b8c9-d0e1-2345-fabc-345678901234",
82
+ "teamId": 1,
83
+ "name": "Todo",
84
+ "type": "unstarted",
85
+ "color": "#e2e2e2",
86
+ "position": 1,
87
+ "description": "Issues that are ready to be worked on",
88
+ "createdAt": "2024-01-15T10:00:00Z",
89
+ "updatedAt": "2024-01-15T10:00:00Z"
90
+ },
91
+ {
92
+ "id": 3,
93
+ "linearId": "a7b8c9d0-e1f2-3456-abcd-456789012345",
94
+ "teamId": 1,
95
+ "name": "In Progress",
96
+ "type": "started",
97
+ "color": "#f2c94c",
98
+ "position": 2,
99
+ "description": "Issues that are actively being worked on",
100
+ "createdAt": "2024-01-15T10:00:00Z",
101
+ "updatedAt": "2024-01-15T10:00:00Z"
102
+ },
103
+ {
104
+ "id": 4,
105
+ "linearId": "b8c9d0e1-f2a3-4567-bcde-567890123456",
106
+ "teamId": 1,
107
+ "name": "In Review",
108
+ "type": "started",
109
+ "color": "#4ea7fc",
110
+ "position": 3,
111
+ "description": "Issues that are in code review",
112
+ "createdAt": "2024-01-15T10:00:00Z",
113
+ "updatedAt": "2024-01-15T10:00:00Z"
114
+ },
115
+ {
116
+ "id": 5,
117
+ "linearId": "c9d0e1f2-a3b4-5678-cdef-678901234567",
118
+ "teamId": 1,
119
+ "name": "Done",
120
+ "type": "completed",
121
+ "color": "#5e6ad2",
122
+ "position": 4,
123
+ "description": "Issues that have been completed",
124
+ "createdAt": "2024-01-15T10:00:00Z",
125
+ "updatedAt": "2024-01-15T10:00:00Z"
126
+ },
127
+ {
128
+ "id": 6,
129
+ "linearId": "d0e1f2a3-b4c5-6789-defa-789012345678",
130
+ "teamId": 1,
131
+ "name": "Cancelled",
132
+ "type": "cancelled",
133
+ "color": "#95a2b3",
134
+ "position": 5,
135
+ "description": "Issues that have been cancelled",
136
+ "createdAt": "2024-01-15T10:00:00Z",
137
+ "updatedAt": "2024-01-15T10:00:00Z"
138
+ }
139
+ ],
140
+ "labels": [
141
+ {
142
+ "id": 1,
143
+ "linearId": "e1f2a3b4-c5d6-7890-efab-890123456789",
144
+ "name": "Bug",
145
+ "description": "Something isn't working",
146
+ "color": "#eb5757",
147
+ "parentId": null,
148
+ "teamId": 1,
149
+ "isGroup": false,
150
+ "createdAt": "2024-01-15T10:00:00Z",
151
+ "updatedAt": "2024-01-15T10:00:00Z"
152
+ },
153
+ {
154
+ "id": 2,
155
+ "linearId": "f2a3b4c5-d6e7-8901-fabc-901234567890",
156
+ "name": "Feature",
157
+ "description": "New functionality",
158
+ "color": "#4ea7fc",
159
+ "parentId": null,
160
+ "teamId": 1,
161
+ "isGroup": false,
162
+ "createdAt": "2024-01-15T10:00:00Z",
163
+ "updatedAt": "2024-01-15T10:00:00Z"
164
+ },
165
+ {
166
+ "id": 3,
167
+ "linearId": "a3b4c5d6-e7f8-9012-abcd-012345678901",
168
+ "name": "Improvement",
169
+ "description": "Enhancement to existing functionality",
170
+ "color": "#26b5ce",
171
+ "parentId": null,
172
+ "teamId": 1,
173
+ "isGroup": false,
174
+ "createdAt": "2024-01-15T10:00:00Z",
175
+ "updatedAt": "2024-01-15T10:00:00Z"
176
+ },
177
+ {
178
+ "id": 4,
179
+ "linearId": "b4c5d6e7-f8a9-0123-bcde-123456789012",
180
+ "name": "Tech Debt",
181
+ "description": "Technical debt that needs addressing",
182
+ "color": "#f2994a",
183
+ "parentId": null,
184
+ "teamId": 1,
185
+ "isGroup": false,
186
+ "createdAt": "2024-01-15T10:00:00Z",
187
+ "updatedAt": "2024-01-15T10:00:00Z"
188
+ }
189
+ ],
190
+ "issues": [
191
+ {
192
+ "id": 1,
193
+ "linearId": "11111111-1111-1111-1111-111111111111",
194
+ "teamId": 1,
195
+ "number": 1,
196
+ "identifier": "ENG-1",
197
+ "title": "Set up CI/CD pipeline",
198
+ "description": "Configure GitHub Actions for automated testing and deployment.\n\n## Requirements\n\n- Run tests on every PR\n- Deploy to staging on merge to main\n- Deploy to production on release tag",
199
+ "descriptionData": null,
200
+ "priority": 1,
201
+ "priorityLabel": "Urgent",
202
+ "estimate": 5,
203
+ "stateId": 5,
204
+ "assigneeId": 1,
205
+ "creatorId": 1,
206
+ "labelIds": [2],
207
+ "projectId": null,
208
+ "cycleId": null,
209
+ "parentId": null,
210
+ "dueDate": null,
211
+ "sortOrder": 1000,
212
+ "boardOrder": 1000,
213
+ "subIssueSortOrder": null,
214
+ "url": "https://linear.app/team/ENG/issue/ENG-1",
215
+ "branchName": "eng-1-set-up-ci-cd-pipeline",
216
+ "previousIdentifiers": [],
217
+ "trashed": false,
218
+ "snoozedUntilAt": null,
219
+ "startedAt": "2024-02-01T09:00:00Z",
220
+ "completedAt": "2024-02-10T17:00:00Z",
221
+ "canceledAt": null,
222
+ "archivedAt": null,
223
+ "createdAt": "2024-01-20T10:00:00Z",
224
+ "updatedAt": "2024-02-10T17:00:00Z"
225
+ },
226
+ {
227
+ "id": 2,
228
+ "linearId": "22222222-2222-2222-2222-222222222222",
229
+ "teamId": 1,
230
+ "number": 2,
231
+ "identifier": "ENG-2",
232
+ "title": "Implement user authentication",
233
+ "description": "Add OAuth2 authentication with Google and GitHub providers.\n\n## Tasks\n\n- [ ] Set up OAuth2 client\n- [ ] Implement login flow\n- [ ] Add session management\n- [ ] Write tests",
234
+ "descriptionData": null,
235
+ "priority": 2,
236
+ "priorityLabel": "High",
237
+ "estimate": 8,
238
+ "stateId": 3,
239
+ "assigneeId": 2,
240
+ "creatorId": 1,
241
+ "labelIds": [2],
242
+ "projectId": null,
243
+ "cycleId": 1,
244
+ "parentId": null,
245
+ "dueDate": "2025-01-15",
246
+ "sortOrder": 2000,
247
+ "boardOrder": 2000,
248
+ "subIssueSortOrder": null,
249
+ "url": "https://linear.app/team/ENG/issue/ENG-2",
250
+ "branchName": "eng-2-implement-user-authentication",
251
+ "previousIdentifiers": [],
252
+ "trashed": false,
253
+ "snoozedUntilAt": null,
254
+ "startedAt": "2024-12-10T09:00:00Z",
255
+ "completedAt": null,
256
+ "canceledAt": null,
257
+ "archivedAt": null,
258
+ "createdAt": "2024-12-05T11:00:00Z",
259
+ "updatedAt": "2024-12-10T14:00:00Z"
260
+ },
261
+ {
262
+ "id": 3,
263
+ "linearId": "33333333-3333-3333-3333-333333333333",
264
+ "teamId": 1,
265
+ "number": 3,
266
+ "identifier": "ENG-3",
267
+ "title": "Fix dashboard loading performance",
268
+ "description": "Dashboard takes 5+ seconds to load on first visit. Profile and optimize the initial render path.",
269
+ "descriptionData": null,
270
+ "priority": 2,
271
+ "priorityLabel": "High",
272
+ "estimate": 3,
273
+ "stateId": 2,
274
+ "assigneeId": 3,
275
+ "creatorId": 2,
276
+ "labelIds": [1],
277
+ "projectId": null,
278
+ "cycleId": 1,
279
+ "parentId": null,
280
+ "dueDate": "2025-01-10",
281
+ "sortOrder": 3000,
282
+ "boardOrder": 3000,
283
+ "subIssueSortOrder": null,
284
+ "url": "https://linear.app/team/ENG/issue/ENG-3",
285
+ "branchName": "eng-3-fix-dashboard-loading-performance",
286
+ "previousIdentifiers": [],
287
+ "trashed": false,
288
+ "snoozedUntilAt": null,
289
+ "startedAt": null,
290
+ "completedAt": null,
291
+ "canceledAt": null,
292
+ "archivedAt": null,
293
+ "createdAt": "2024-12-08T14:00:00Z",
294
+ "updatedAt": "2024-12-08T14:00:00Z"
295
+ },
296
+ {
297
+ "id": 4,
298
+ "linearId": "44444444-4444-4444-4444-444444444444",
299
+ "teamId": 1,
300
+ "number": 4,
301
+ "identifier": "ENG-4",
302
+ "title": "Add API rate limiting",
303
+ "description": "Implement rate limiting middleware to prevent abuse of the API endpoints.",
304
+ "descriptionData": null,
305
+ "priority": 3,
306
+ "priorityLabel": "Medium",
307
+ "estimate": 3,
308
+ "stateId": 1,
309
+ "assigneeId": null,
310
+ "creatorId": 1,
311
+ "labelIds": [2, 3],
312
+ "projectId": null,
313
+ "cycleId": null,
314
+ "parentId": null,
315
+ "dueDate": null,
316
+ "sortOrder": 4000,
317
+ "boardOrder": 4000,
318
+ "subIssueSortOrder": null,
319
+ "url": "https://linear.app/team/ENG/issue/ENG-4",
320
+ "branchName": "eng-4-add-api-rate-limiting",
321
+ "previousIdentifiers": [],
322
+ "trashed": false,
323
+ "snoozedUntilAt": null,
324
+ "startedAt": null,
325
+ "completedAt": null,
326
+ "canceledAt": null,
327
+ "archivedAt": null,
328
+ "createdAt": "2024-12-10T09:00:00Z",
329
+ "updatedAt": "2024-12-10T09:00:00Z"
330
+ },
331
+ {
332
+ "id": 5,
333
+ "linearId": "55555555-5555-5555-5555-555555555555",
334
+ "teamId": 1,
335
+ "number": 5,
336
+ "identifier": "ENG-5",
337
+ "title": "Refactor database connection pool",
338
+ "description": "The current connection pool configuration is causing connection leaks under high load. Refactor to use a proper pool manager with health checks.",
339
+ "descriptionData": null,
340
+ "priority": 4,
341
+ "priorityLabel": "Low",
342
+ "estimate": 2,
343
+ "stateId": 1,
344
+ "assigneeId": null,
345
+ "creatorId": 3,
346
+ "labelIds": [4],
347
+ "projectId": null,
348
+ "cycleId": null,
349
+ "parentId": null,
350
+ "dueDate": null,
351
+ "sortOrder": 5000,
352
+ "boardOrder": 5000,
353
+ "subIssueSortOrder": null,
354
+ "url": "https://linear.app/team/ENG/issue/ENG-5",
355
+ "branchName": "eng-5-refactor-database-connection-pool",
356
+ "previousIdentifiers": [],
357
+ "trashed": false,
358
+ "snoozedUntilAt": null,
359
+ "startedAt": null,
360
+ "completedAt": null,
361
+ "canceledAt": null,
362
+ "archivedAt": null,
363
+ "createdAt": "2024-12-11T10:00:00Z",
364
+ "updatedAt": "2024-12-11T10:00:00Z"
365
+ },
366
+ {
367
+ "id": 6,
368
+ "linearId": "66666666-6666-6666-6666-666666666666",
369
+ "teamId": 1,
370
+ "number": 6,
371
+ "identifier": "ENG-6",
372
+ "title": "Write API documentation",
373
+ "description": "Create OpenAPI specification for all public endpoints. Include authentication, error formats, and example requests.",
374
+ "descriptionData": null,
375
+ "priority": 3,
376
+ "priorityLabel": "Medium",
377
+ "estimate": 5,
378
+ "stateId": 4,
379
+ "assigneeId": 3,
380
+ "creatorId": 1,
381
+ "labelIds": [3],
382
+ "projectId": null,
383
+ "cycleId": 1,
384
+ "parentId": null,
385
+ "dueDate": "2025-01-20",
386
+ "sortOrder": 6000,
387
+ "boardOrder": 6000,
388
+ "subIssueSortOrder": null,
389
+ "url": "https://linear.app/team/ENG/issue/ENG-6",
390
+ "branchName": "eng-6-write-api-documentation",
391
+ "previousIdentifiers": [],
392
+ "trashed": false,
393
+ "snoozedUntilAt": null,
394
+ "startedAt": "2024-12-12T09:00:00Z",
395
+ "completedAt": null,
396
+ "canceledAt": null,
397
+ "archivedAt": null,
398
+ "createdAt": "2024-12-12T08:00:00Z",
399
+ "updatedAt": "2024-12-12T15:00:00Z"
400
+ }
401
+ ],
402
+ "projects": [
403
+ {
404
+ "id": 1,
405
+ "linearId": "77777777-7777-7777-7777-777777777777",
406
+ "name": "Q1 Launch",
407
+ "description": "Ship the initial product launch for Q1 2025",
408
+ "content": null,
409
+ "icon": null,
410
+ "color": "#5e6ad2",
411
+ "state": "started",
412
+ "progress": 35,
413
+ "startDate": "2024-12-01",
414
+ "targetDate": "2025-03-31",
415
+ "leadId": 1,
416
+ "memberIds": [1, 2, 3],
417
+ "teamIds": [1],
418
+ "url": "https://linear.app/project/q1-launch",
419
+ "slugId": "q1-launch",
420
+ "sortOrder": 1000,
421
+ "startedAt": "2024-12-01T00:00:00Z",
422
+ "completedAt": null,
423
+ "canceledAt": null,
424
+ "archivedAt": null,
425
+ "createdAt": "2024-11-15T10:00:00Z",
426
+ "updatedAt": "2024-12-12T12:00:00Z"
427
+ }
428
+ ],
429
+ "cycles": [
430
+ {
431
+ "id": 1,
432
+ "linearId": "88888888-8888-8888-8888-888888888888",
433
+ "teamId": 1,
434
+ "number": 1,
435
+ "name": "Sprint 1",
436
+ "description": "First sprint of the new year",
437
+ "startsAt": "2024-12-09T00:00:00Z",
438
+ "endsAt": "2024-12-22T23:59:59Z",
439
+ "completedAt": null,
440
+ "progress": 33,
441
+ "scopeCount": 3,
442
+ "completedScopeCount": 1,
443
+ "createdAt": "2024-12-08T10:00:00Z",
444
+ "updatedAt": "2024-12-12T15:00:00Z"
445
+ }
446
+ ],
447
+ "comments": [
448
+ {
449
+ "id": 1,
450
+ "linearId": "99999999-9999-9999-9999-999999999991",
451
+ "issueId": 2,
452
+ "userId": 1,
453
+ "body": "Let's use the same OAuth library we used in the mobile app for consistency. @bob can you look into passport.js?",
454
+ "parentId": null,
455
+ "url": "https://linear.app/team/ENG/issue/ENG-2#comment-1",
456
+ "editedAt": null,
457
+ "resolvedAt": null,
458
+ "resolvedByUserId": null,
459
+ "createdAt": "2024-12-06T10:00:00Z",
460
+ "updatedAt": "2024-12-06T10:00:00Z"
461
+ },
462
+ {
463
+ "id": 2,
464
+ "linearId": "99999999-9999-9999-9999-999999999992",
465
+ "issueId": 2,
466
+ "userId": 2,
467
+ "body": "Good idea. I'll check passport.js compatibility with our setup. Should have an update by EOD.",
468
+ "parentId": 1,
469
+ "url": "https://linear.app/team/ENG/issue/ENG-2#comment-2",
470
+ "editedAt": null,
471
+ "resolvedAt": null,
472
+ "resolvedByUserId": null,
473
+ "createdAt": "2024-12-06T11:30:00Z",
474
+ "updatedAt": "2024-12-06T11:30:00Z"
475
+ },
476
+ {
477
+ "id": 3,
478
+ "linearId": "99999999-9999-9999-9999-999999999993",
479
+ "issueId": 3,
480
+ "userId": 3,
481
+ "body": "I ran a performance profile — looks like the main bottleneck is the N+1 query in the dashboard stats query. Should be fixable with a single aggregation query.",
482
+ "parentId": null,
483
+ "url": "https://linear.app/team/ENG/issue/ENG-3#comment-3",
484
+ "editedAt": null,
485
+ "resolvedAt": null,
486
+ "resolvedByUserId": null,
487
+ "createdAt": "2024-12-09T14:00:00Z",
488
+ "updatedAt": "2024-12-09T14:00:00Z"
489
+ }
490
+ ],
491
+ "attachments": [],
492
+ "issueRelations": [],
493
+ "organization": [],
494
+ "initiatives": [],
495
+ "initiativeProjects": []
496
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "twin": "slack",
3
+ "api": "Web API",
4
+ "version": "0.1.0",
5
+ "capabilities": [
6
+ { "name": "Stateful CRUD (channels, messages, users)", "supported": true },
7
+ { "name": "Error responses (channel_not_found, not_authed)", "supported": true },
8
+ { "name": "Pagination", "supported": true },
9
+ { "name": "Thread replies", "supported": true },
10
+ { "name": "Reactions and pins", "supported": true },
11
+ { "name": "Real-time events (WebSocket)", "supported": false },
12
+ { "name": "File uploads", "supported": false }
13
+ ]
14
+ }