linear-cli-agents 0.1.0

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 (40) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +168 -0
  3. package/bin/dev.js +5 -0
  4. package/bin/run.js +5 -0
  5. package/dist/commands/auth/login.d.ts +12 -0
  6. package/dist/commands/auth/login.js +52 -0
  7. package/dist/commands/auth/logout.d.ts +6 -0
  8. package/dist/commands/auth/logout.js +26 -0
  9. package/dist/commands/auth/status.d.ts +6 -0
  10. package/dist/commands/auth/status.js +40 -0
  11. package/dist/commands/issues/create.d.ts +18 -0
  12. package/dist/commands/issues/create.js +109 -0
  13. package/dist/commands/issues/delete.d.ts +12 -0
  14. package/dist/commands/issues/delete.js +61 -0
  15. package/dist/commands/issues/get.d.ts +9 -0
  16. package/dist/commands/issues/get.js +81 -0
  17. package/dist/commands/issues/list.d.ts +14 -0
  18. package/dist/commands/issues/list.js +101 -0
  19. package/dist/commands/issues/update.d.ts +20 -0
  20. package/dist/commands/issues/update.js +110 -0
  21. package/dist/commands/query.d.ts +11 -0
  22. package/dist/commands/query.js +94 -0
  23. package/dist/commands/schema.d.ts +13 -0
  24. package/dist/commands/schema.js +198 -0
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.js +1 -0
  27. package/dist/lib/client.d.ts +17 -0
  28. package/dist/lib/client.js +23 -0
  29. package/dist/lib/config.d.ts +33 -0
  30. package/dist/lib/config.js +97 -0
  31. package/dist/lib/errors.d.ts +30 -0
  32. package/dist/lib/errors.js +79 -0
  33. package/dist/lib/issue-utils.d.ts +17 -0
  34. package/dist/lib/issue-utils.js +56 -0
  35. package/dist/lib/output.d.ts +16 -0
  36. package/dist/lib/output.js +33 -0
  37. package/dist/lib/types.d.ts +33 -0
  38. package/dist/lib/types.js +5 -0
  39. package/oclif.manifest.json +549 -0
  40. package/package.json +69 -0
@@ -0,0 +1,549 @@
1
+ {
2
+ "commands": {
3
+ "query": {
4
+ "aliases": [],
5
+ "args": {},
6
+ "description": "Execute a raw GraphQL query against the Linear API",
7
+ "examples": [
8
+ "<%= config.bin %> query --gql \"query { viewer { id name email } }\"",
9
+ "<%= config.bin %> query --gql \"query { teams { nodes { id key name } } }\"",
10
+ "<%= config.bin %> query --gql \"query($id: String!) { issue(id: $id) { title } }\" --variables '{\"id\":\"xxx\"}'"
11
+ ],
12
+ "flags": {
13
+ "gql": {
14
+ "char": "g",
15
+ "description": "GraphQL query string",
16
+ "name": "gql",
17
+ "required": true,
18
+ "hasDynamicHelp": false,
19
+ "multiple": false,
20
+ "type": "option"
21
+ },
22
+ "variables": {
23
+ "char": "v",
24
+ "description": "JSON object of query variables",
25
+ "name": "variables",
26
+ "hasDynamicHelp": false,
27
+ "multiple": false,
28
+ "type": "option"
29
+ },
30
+ "timeout": {
31
+ "char": "t",
32
+ "description": "Request timeout in seconds (default: 30)",
33
+ "name": "timeout",
34
+ "default": 30,
35
+ "hasDynamicHelp": false,
36
+ "multiple": false,
37
+ "type": "option"
38
+ }
39
+ },
40
+ "hasDynamicHelp": false,
41
+ "hiddenAliases": [],
42
+ "id": "query",
43
+ "pluginAlias": "linear-cli-agents",
44
+ "pluginName": "linear-cli-agents",
45
+ "pluginType": "core",
46
+ "strict": true,
47
+ "enableJsonFlag": false,
48
+ "isESM": true,
49
+ "relativePath": [
50
+ "dist",
51
+ "commands",
52
+ "query.js"
53
+ ]
54
+ },
55
+ "schema": {
56
+ "aliases": [],
57
+ "args": {
58
+ "entity": {
59
+ "description": "Entity name (issues, projects, teams, users, cycles, labels, comments)",
60
+ "name": "entity",
61
+ "required": false
62
+ }
63
+ },
64
+ "description": "Show schema information for entities (useful for LLMs to discover available operations)",
65
+ "examples": [
66
+ "<%= config.bin %> schema",
67
+ "<%= config.bin %> schema issues",
68
+ "<%= config.bin %> schema --full",
69
+ "<%= config.bin %> schema issues --include-examples"
70
+ ],
71
+ "flags": {
72
+ "full": {
73
+ "description": "Show full schema for all entities",
74
+ "name": "full",
75
+ "allowNo": false,
76
+ "type": "boolean"
77
+ },
78
+ "include-examples": {
79
+ "description": "Include usage examples",
80
+ "name": "include-examples",
81
+ "allowNo": false,
82
+ "type": "boolean"
83
+ }
84
+ },
85
+ "hasDynamicHelp": false,
86
+ "hiddenAliases": [],
87
+ "id": "schema",
88
+ "pluginAlias": "linear-cli-agents",
89
+ "pluginName": "linear-cli-agents",
90
+ "pluginType": "core",
91
+ "strict": true,
92
+ "enableJsonFlag": false,
93
+ "isESM": true,
94
+ "relativePath": [
95
+ "dist",
96
+ "commands",
97
+ "schema.js"
98
+ ]
99
+ },
100
+ "auth:login": {
101
+ "aliases": [],
102
+ "args": {
103
+ "key": {
104
+ "description": "Linear API key (alternative to --key flag)",
105
+ "name": "key",
106
+ "required": false
107
+ }
108
+ },
109
+ "description": "Authenticate with Linear using an API key",
110
+ "examples": [
111
+ "<%= config.bin %> auth login --key lin_api_xxxxx",
112
+ "LINEAR_API_KEY=lin_api_xxxxx <%= config.bin %> auth login"
113
+ ],
114
+ "flags": {
115
+ "key": {
116
+ "char": "k",
117
+ "description": "Linear API key (or set LINEAR_API_KEY env var)",
118
+ "env": "LINEAR_API_KEY",
119
+ "name": "key",
120
+ "hasDynamicHelp": false,
121
+ "multiple": false,
122
+ "type": "option"
123
+ }
124
+ },
125
+ "hasDynamicHelp": false,
126
+ "hiddenAliases": [],
127
+ "id": "auth:login",
128
+ "pluginAlias": "linear-cli-agents",
129
+ "pluginName": "linear-cli-agents",
130
+ "pluginType": "core",
131
+ "strict": true,
132
+ "enableJsonFlag": false,
133
+ "isESM": true,
134
+ "relativePath": [
135
+ "dist",
136
+ "commands",
137
+ "auth",
138
+ "login.js"
139
+ ]
140
+ },
141
+ "auth:logout": {
142
+ "aliases": [],
143
+ "args": {},
144
+ "description": "Remove stored Linear API key",
145
+ "examples": [
146
+ "<%= config.bin %> auth logout"
147
+ ],
148
+ "flags": {},
149
+ "hasDynamicHelp": false,
150
+ "hiddenAliases": [],
151
+ "id": "auth:logout",
152
+ "pluginAlias": "linear-cli-agents",
153
+ "pluginName": "linear-cli-agents",
154
+ "pluginType": "core",
155
+ "strict": true,
156
+ "enableJsonFlag": false,
157
+ "isESM": true,
158
+ "relativePath": [
159
+ "dist",
160
+ "commands",
161
+ "auth",
162
+ "logout.js"
163
+ ]
164
+ },
165
+ "auth:status": {
166
+ "aliases": [],
167
+ "args": {},
168
+ "description": "Check authentication status",
169
+ "examples": [
170
+ "<%= config.bin %> auth status"
171
+ ],
172
+ "flags": {},
173
+ "hasDynamicHelp": false,
174
+ "hiddenAliases": [],
175
+ "id": "auth:status",
176
+ "pluginAlias": "linear-cli-agents",
177
+ "pluginName": "linear-cli-agents",
178
+ "pluginType": "core",
179
+ "strict": true,
180
+ "enableJsonFlag": false,
181
+ "isESM": true,
182
+ "relativePath": [
183
+ "dist",
184
+ "commands",
185
+ "auth",
186
+ "status.js"
187
+ ]
188
+ },
189
+ "issues:create": {
190
+ "aliases": [],
191
+ "args": {},
192
+ "description": "Create a new issue",
193
+ "examples": [
194
+ "<%= config.bin %> issues create --input '{\"title\":\"Bug fix\",\"teamId\":\"xxx\"}'",
195
+ "<%= config.bin %> issues create --title \"New feature\" --team-id xxx",
196
+ "<%= config.bin %> issues create --title \"Task\" --team-id xxx --description \"Details here\" --priority 2"
197
+ ],
198
+ "flags": {
199
+ "input": {
200
+ "char": "i",
201
+ "description": "JSON input object (IssueCreateInput)",
202
+ "exclusive": [
203
+ "title"
204
+ ],
205
+ "name": "input",
206
+ "hasDynamicHelp": false,
207
+ "multiple": false,
208
+ "type": "option"
209
+ },
210
+ "title": {
211
+ "description": "Issue title",
212
+ "exclusive": [
213
+ "input"
214
+ ],
215
+ "name": "title",
216
+ "hasDynamicHelp": false,
217
+ "multiple": false,
218
+ "type": "option"
219
+ },
220
+ "team-id": {
221
+ "description": "Team ID",
222
+ "name": "team-id",
223
+ "hasDynamicHelp": false,
224
+ "multiple": false,
225
+ "type": "option"
226
+ },
227
+ "description": {
228
+ "char": "d",
229
+ "description": "Issue description (markdown supported)",
230
+ "name": "description",
231
+ "hasDynamicHelp": false,
232
+ "multiple": false,
233
+ "type": "option"
234
+ },
235
+ "priority": {
236
+ "char": "p",
237
+ "description": "Priority (0=none, 1=urgent, 2=high, 3=medium, 4=low)",
238
+ "name": "priority",
239
+ "hasDynamicHelp": false,
240
+ "multiple": false,
241
+ "type": "option"
242
+ },
243
+ "assignee-id": {
244
+ "description": "Assignee user ID",
245
+ "name": "assignee-id",
246
+ "hasDynamicHelp": false,
247
+ "multiple": false,
248
+ "type": "option"
249
+ },
250
+ "state-id": {
251
+ "description": "State ID",
252
+ "name": "state-id",
253
+ "hasDynamicHelp": false,
254
+ "multiple": false,
255
+ "type": "option"
256
+ },
257
+ "project-id": {
258
+ "description": "Project ID",
259
+ "name": "project-id",
260
+ "hasDynamicHelp": false,
261
+ "multiple": false,
262
+ "type": "option"
263
+ },
264
+ "estimate": {
265
+ "description": "Estimate points",
266
+ "name": "estimate",
267
+ "hasDynamicHelp": false,
268
+ "multiple": false,
269
+ "type": "option"
270
+ },
271
+ "label-ids": {
272
+ "description": "Comma-separated label IDs",
273
+ "name": "label-ids",
274
+ "hasDynamicHelp": false,
275
+ "multiple": false,
276
+ "type": "option"
277
+ }
278
+ },
279
+ "hasDynamicHelp": false,
280
+ "hiddenAliases": [],
281
+ "id": "issues:create",
282
+ "pluginAlias": "linear-cli-agents",
283
+ "pluginName": "linear-cli-agents",
284
+ "pluginType": "core",
285
+ "strict": true,
286
+ "enableJsonFlag": false,
287
+ "isESM": true,
288
+ "relativePath": [
289
+ "dist",
290
+ "commands",
291
+ "issues",
292
+ "create.js"
293
+ ]
294
+ },
295
+ "issues:delete": {
296
+ "aliases": [],
297
+ "args": {
298
+ "id": {
299
+ "description": "Issue ID or identifier (e.g., ENG-123)",
300
+ "name": "id",
301
+ "required": true
302
+ }
303
+ },
304
+ "description": "Delete an issue (moves to trash)",
305
+ "examples": [
306
+ "<%= config.bin %> issues delete abc123",
307
+ "<%= config.bin %> issues delete ENG-123",
308
+ "<%= config.bin %> issues delete ENG-123 --permanent"
309
+ ],
310
+ "flags": {
311
+ "permanent": {
312
+ "description": "Permanently delete (cannot be undone)",
313
+ "name": "permanent",
314
+ "allowNo": false,
315
+ "type": "boolean"
316
+ }
317
+ },
318
+ "hasDynamicHelp": false,
319
+ "hiddenAliases": [],
320
+ "id": "issues:delete",
321
+ "pluginAlias": "linear-cli-agents",
322
+ "pluginName": "linear-cli-agents",
323
+ "pluginType": "core",
324
+ "strict": true,
325
+ "enableJsonFlag": false,
326
+ "isESM": true,
327
+ "relativePath": [
328
+ "dist",
329
+ "commands",
330
+ "issues",
331
+ "delete.js"
332
+ ]
333
+ },
334
+ "issues:get": {
335
+ "aliases": [],
336
+ "args": {
337
+ "id": {
338
+ "description": "Issue ID or identifier (e.g., ENG-123)",
339
+ "name": "id",
340
+ "required": true
341
+ }
342
+ },
343
+ "description": "Get a single issue by ID or identifier",
344
+ "examples": [
345
+ "<%= config.bin %> issues get abc123",
346
+ "<%= config.bin %> issues get ENG-123"
347
+ ],
348
+ "flags": {},
349
+ "hasDynamicHelp": false,
350
+ "hiddenAliases": [],
351
+ "id": "issues:get",
352
+ "pluginAlias": "linear-cli-agents",
353
+ "pluginName": "linear-cli-agents",
354
+ "pluginType": "core",
355
+ "strict": true,
356
+ "enableJsonFlag": false,
357
+ "isESM": true,
358
+ "relativePath": [
359
+ "dist",
360
+ "commands",
361
+ "issues",
362
+ "get.js"
363
+ ]
364
+ },
365
+ "issues:list": {
366
+ "aliases": [],
367
+ "args": {},
368
+ "description": "List issues with optional filtering",
369
+ "examples": [
370
+ "<%= config.bin %> issues list",
371
+ "<%= config.bin %> issues list --team ENG",
372
+ "<%= config.bin %> issues list --assignee me",
373
+ "<%= config.bin %> issues list --filter '{\"state\":{\"name\":{\"eq\":\"In Progress\"}}}'",
374
+ "<%= config.bin %> issues list --first 50 --after cursor123"
375
+ ],
376
+ "flags": {
377
+ "team": {
378
+ "char": "t",
379
+ "description": "Filter by team key (e.g., ENG)",
380
+ "name": "team",
381
+ "hasDynamicHelp": false,
382
+ "multiple": false,
383
+ "type": "option"
384
+ },
385
+ "assignee": {
386
+ "char": "a",
387
+ "description": "Filter by assignee (use \"me\" for current user)",
388
+ "name": "assignee",
389
+ "hasDynamicHelp": false,
390
+ "multiple": false,
391
+ "type": "option"
392
+ },
393
+ "state": {
394
+ "char": "s",
395
+ "description": "Filter by state name (e.g., \"In Progress\")",
396
+ "name": "state",
397
+ "hasDynamicHelp": false,
398
+ "multiple": false,
399
+ "type": "option"
400
+ },
401
+ "filter": {
402
+ "char": "f",
403
+ "description": "JSON filter object (IssueFilter from Linear SDK)",
404
+ "name": "filter",
405
+ "hasDynamicHelp": false,
406
+ "multiple": false,
407
+ "type": "option"
408
+ },
409
+ "first": {
410
+ "description": "Number of issues to fetch (default: 50)",
411
+ "name": "first",
412
+ "default": 50,
413
+ "hasDynamicHelp": false,
414
+ "multiple": false,
415
+ "type": "option"
416
+ },
417
+ "after": {
418
+ "description": "Cursor for pagination",
419
+ "name": "after",
420
+ "hasDynamicHelp": false,
421
+ "multiple": false,
422
+ "type": "option"
423
+ }
424
+ },
425
+ "hasDynamicHelp": false,
426
+ "hiddenAliases": [],
427
+ "id": "issues:list",
428
+ "pluginAlias": "linear-cli-agents",
429
+ "pluginName": "linear-cli-agents",
430
+ "pluginType": "core",
431
+ "strict": true,
432
+ "enableJsonFlag": false,
433
+ "isESM": true,
434
+ "relativePath": [
435
+ "dist",
436
+ "commands",
437
+ "issues",
438
+ "list.js"
439
+ ]
440
+ },
441
+ "issues:update": {
442
+ "aliases": [],
443
+ "args": {
444
+ "id": {
445
+ "description": "Issue ID or identifier (e.g., ENG-123)",
446
+ "name": "id",
447
+ "required": true
448
+ }
449
+ },
450
+ "description": "Update an existing issue",
451
+ "examples": [
452
+ "<%= config.bin %> issues update abc123 --input '{\"title\":\"Updated title\"}'",
453
+ "<%= config.bin %> issues update ENG-123 --title \"New title\"",
454
+ "<%= config.bin %> issues update ENG-123 --state-id xxx --assignee-id yyy"
455
+ ],
456
+ "flags": {
457
+ "input": {
458
+ "char": "i",
459
+ "description": "JSON input object (IssueUpdateInput)",
460
+ "exclusive": [
461
+ "title",
462
+ "description",
463
+ "priority",
464
+ "assignee-id",
465
+ "state-id"
466
+ ],
467
+ "name": "input",
468
+ "hasDynamicHelp": false,
469
+ "multiple": false,
470
+ "type": "option"
471
+ },
472
+ "title": {
473
+ "description": "Issue title",
474
+ "name": "title",
475
+ "hasDynamicHelp": false,
476
+ "multiple": false,
477
+ "type": "option"
478
+ },
479
+ "description": {
480
+ "char": "d",
481
+ "description": "Issue description (markdown supported)",
482
+ "name": "description",
483
+ "hasDynamicHelp": false,
484
+ "multiple": false,
485
+ "type": "option"
486
+ },
487
+ "priority": {
488
+ "char": "p",
489
+ "description": "Priority (0=none, 1=urgent, 2=high, 3=medium, 4=low)",
490
+ "name": "priority",
491
+ "hasDynamicHelp": false,
492
+ "multiple": false,
493
+ "type": "option"
494
+ },
495
+ "assignee-id": {
496
+ "description": "Assignee user ID (use empty string to unassign)",
497
+ "name": "assignee-id",
498
+ "hasDynamicHelp": false,
499
+ "multiple": false,
500
+ "type": "option"
501
+ },
502
+ "state-id": {
503
+ "description": "State ID",
504
+ "name": "state-id",
505
+ "hasDynamicHelp": false,
506
+ "multiple": false,
507
+ "type": "option"
508
+ },
509
+ "project-id": {
510
+ "description": "Project ID",
511
+ "name": "project-id",
512
+ "hasDynamicHelp": false,
513
+ "multiple": false,
514
+ "type": "option"
515
+ },
516
+ "estimate": {
517
+ "description": "Estimate points",
518
+ "name": "estimate",
519
+ "hasDynamicHelp": false,
520
+ "multiple": false,
521
+ "type": "option"
522
+ },
523
+ "label-ids": {
524
+ "description": "Comma-separated label IDs (replaces existing labels)",
525
+ "name": "label-ids",
526
+ "hasDynamicHelp": false,
527
+ "multiple": false,
528
+ "type": "option"
529
+ }
530
+ },
531
+ "hasDynamicHelp": false,
532
+ "hiddenAliases": [],
533
+ "id": "issues:update",
534
+ "pluginAlias": "linear-cli-agents",
535
+ "pluginName": "linear-cli-agents",
536
+ "pluginType": "core",
537
+ "strict": true,
538
+ "enableJsonFlag": false,
539
+ "isESM": true,
540
+ "relativePath": [
541
+ "dist",
542
+ "commands",
543
+ "issues",
544
+ "update.js"
545
+ ]
546
+ }
547
+ },
548
+ "version": "0.1.0"
549
+ }
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "linear-cli-agents",
3
+ "version": "0.1.0",
4
+ "description": "CLI for interacting with Linear, designed for LLMs and agents",
5
+ "author": "Nacho",
6
+ "bin": {
7
+ "linear": "./bin/run.js"
8
+ },
9
+ "homepage": "https://github.com/nacho/linear-cli",
10
+ "license": "MIT",
11
+ "main": "dist/index.js",
12
+ "type": "module",
13
+ "repository": "nacho/linear-cli",
14
+ "files": [
15
+ "/bin",
16
+ "/dist",
17
+ "/oclif.manifest.json"
18
+ ],
19
+ "dependencies": {
20
+ "@linear/sdk": "^29.0.0",
21
+ "@oclif/core": "^4.3.0",
22
+ "@oclif/plugin-help": "^6.2.0"
23
+ },
24
+ "devDependencies": {
25
+ "@oclif/prettier-config": "^0.2.1",
26
+ "@oclif/test": "^4.1.0",
27
+ "@types/node": "^22.0.0",
28
+ "oclif": "^4.17.0",
29
+ "shx": "^0.3.4",
30
+ "typescript": "^5.7.0",
31
+ "vitest": "^3.0.0"
32
+ },
33
+ "oclif": {
34
+ "bin": "linear",
35
+ "dirname": "linear-cli",
36
+ "commands": "./dist/commands",
37
+ "plugins": [
38
+ "@oclif/plugin-help"
39
+ ],
40
+ "topicSeparator": " ",
41
+ "topics": {
42
+ "auth": {
43
+ "description": "Authentication commands"
44
+ },
45
+ "issues": {
46
+ "description": "Issue management commands"
47
+ }
48
+ }
49
+ },
50
+ "scripts": {
51
+ "build": "shx rm -rf dist && tsc -b",
52
+ "lint": "tsc --noEmit",
53
+ "postpack": "shx rm -f oclif.manifest.json",
54
+ "prepack": "pnpm run build && oclif manifest && oclif readme",
55
+ "test": "vitest run",
56
+ "test:watch": "vitest"
57
+ },
58
+ "engines": {
59
+ "node": ">=18.0.0"
60
+ },
61
+ "keywords": [
62
+ "linear",
63
+ "cli",
64
+ "llm",
65
+ "agent",
66
+ "project-management"
67
+ ],
68
+ "packageManager": "pnpm@10.18.1"
69
+ }