@proletariat/cli 0.3.54 → 0.3.56

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 (255) hide show
  1. package/README.md +5 -4
  2. package/dist/commands/agent/cleanup.d.ts +1 -0
  3. package/dist/commands/agent/cleanup.js +11 -1
  4. package/dist/commands/agent/cleanup.js.map +1 -1
  5. package/dist/commands/agent/rebuild.js +1 -1
  6. package/dist/commands/agent/rebuild.js.map +1 -1
  7. package/dist/commands/asana/import.d.ts +14 -0
  8. package/dist/commands/asana/import.js +240 -0
  9. package/dist/commands/asana/import.js.map +1 -0
  10. package/dist/commands/claude-yolo.d.ts +20 -0
  11. package/dist/commands/claude-yolo.js +86 -0
  12. package/dist/commands/claude-yolo.js.map +1 -0
  13. package/dist/commands/codex/index.d.ts +23 -0
  14. package/dist/commands/codex/index.js +168 -0
  15. package/dist/commands/codex/index.js.map +1 -0
  16. package/dist/commands/codex-yolo.d.ts +20 -0
  17. package/dist/commands/codex-yolo.js +86 -0
  18. package/dist/commands/codex-yolo.js.map +1 -0
  19. package/dist/commands/config/index.js +2 -2
  20. package/dist/commands/config/index.js.map +1 -1
  21. package/dist/commands/docker/clean.js +1 -1
  22. package/dist/commands/docker/clean.js.map +1 -1
  23. package/dist/commands/docker/list.js +1 -1
  24. package/dist/commands/docker/list.js.map +1 -1
  25. package/dist/commands/docker/logs.js +1 -1
  26. package/dist/commands/docker/logs.js.map +1 -1
  27. package/dist/commands/docker/restart.js +1 -1
  28. package/dist/commands/docker/restart.js.map +1 -1
  29. package/dist/commands/docker/shell.js +1 -1
  30. package/dist/commands/docker/shell.js.map +1 -1
  31. package/dist/commands/docker/start.js +1 -1
  32. package/dist/commands/docker/start.js.map +1 -1
  33. package/dist/commands/docker/stop.js +1 -1
  34. package/dist/commands/docker/stop.js.map +1 -1
  35. package/dist/commands/docker/sync.js +1 -1
  36. package/dist/commands/docker/sync.js.map +1 -1
  37. package/dist/commands/execution/config.js +2 -2
  38. package/dist/commands/execution/config.js.map +1 -1
  39. package/dist/commands/execution/list.js +1 -1
  40. package/dist/commands/execution/list.js.map +1 -1
  41. package/dist/commands/execution/logs.js +10 -8
  42. package/dist/commands/execution/logs.js.map +1 -1
  43. package/dist/commands/execution/stop.js +1 -1
  44. package/dist/commands/execution/stop.js.map +1 -1
  45. package/dist/commands/execution/view.js +1 -1
  46. package/dist/commands/execution/view.js.map +1 -1
  47. package/dist/commands/init.d.ts +0 -16
  48. package/dist/commands/init.js +50 -160
  49. package/dist/commands/init.js.map +1 -1
  50. package/dist/commands/logs.d.ts +20 -0
  51. package/dist/commands/logs.js +84 -0
  52. package/dist/commands/logs.js.map +1 -0
  53. package/dist/commands/mcp-server.js +1 -1
  54. package/dist/commands/mcp-server.js.map +1 -1
  55. package/dist/commands/new.d.ts +27 -0
  56. package/dist/commands/new.js +184 -0
  57. package/dist/commands/new.js.map +1 -0
  58. package/dist/commands/orchestrator/attach.d.ts +1 -0
  59. package/dist/commands/orchestrator/attach.js +159 -26
  60. package/dist/commands/orchestrator/attach.js.map +1 -1
  61. package/dist/commands/orchestrator/start.d.ts +20 -0
  62. package/dist/commands/orchestrator/start.js +122 -14
  63. package/dist/commands/orchestrator/start.js.map +1 -1
  64. package/dist/commands/orchestrator/status.d.ts +4 -0
  65. package/dist/commands/orchestrator/status.js +70 -29
  66. package/dist/commands/orchestrator/status.js.map +1 -1
  67. package/dist/commands/orchestrator/stop.js +57 -23
  68. package/dist/commands/orchestrator/stop.js.map +1 -1
  69. package/dist/commands/peek.d.ts +20 -0
  70. package/dist/commands/peek.js +84 -0
  71. package/dist/commands/peek.js.map +1 -0
  72. package/dist/commands/poke.d.ts +20 -0
  73. package/dist/commands/poke.js +89 -0
  74. package/dist/commands/poke.js.map +1 -0
  75. package/dist/commands/pr/link.js +1 -1
  76. package/dist/commands/pr/link.js.map +1 -1
  77. package/dist/commands/pr/status.js +1 -1
  78. package/dist/commands/pr/status.js.map +1 -1
  79. package/dist/commands/ps.d.ts +18 -0
  80. package/dist/commands/ps.js +123 -0
  81. package/dist/commands/ps.js.map +1 -0
  82. package/dist/commands/qa/index.js +1 -1
  83. package/dist/commands/qa/index.js.map +1 -1
  84. package/dist/commands/repo/add.js +1 -1
  85. package/dist/commands/repo/add.js.map +1 -1
  86. package/dist/commands/repo/list.js +1 -1
  87. package/dist/commands/repo/list.js.map +1 -1
  88. package/dist/commands/repo/remove.js +1 -1
  89. package/dist/commands/repo/remove.js.map +1 -1
  90. package/dist/commands/repo/view.js +1 -1
  91. package/dist/commands/repo/view.js.map +1 -1
  92. package/dist/commands/run/index.d.ts +25 -0
  93. package/dist/commands/run/index.js +212 -0
  94. package/dist/commands/run/index.js.map +1 -0
  95. package/dist/commands/session/index.js +4 -0
  96. package/dist/commands/session/index.js.map +1 -1
  97. package/dist/commands/session/prune.d.ts +18 -0
  98. package/dist/commands/session/prune.js +327 -0
  99. package/dist/commands/session/prune.js.map +1 -0
  100. package/dist/commands/shortcut/connect.d.ts +15 -0
  101. package/dist/commands/shortcut/connect.js +210 -0
  102. package/dist/commands/shortcut/connect.js.map +1 -0
  103. package/dist/commands/stop.d.ts +19 -0
  104. package/dist/commands/stop.js +83 -0
  105. package/dist/commands/stop.js.map +1 -0
  106. package/dist/commands/work/asana.d.ts +23 -0
  107. package/dist/commands/work/asana.js +213 -0
  108. package/dist/commands/work/asana.js.map +1 -0
  109. package/dist/commands/work/complete.js +1 -1
  110. package/dist/commands/work/complete.js.map +1 -1
  111. package/dist/commands/work/ready.js +1 -1
  112. package/dist/commands/work/ready.js.map +1 -1
  113. package/dist/commands/work/review.js +1 -1
  114. package/dist/commands/work/review.js.map +1 -1
  115. package/dist/commands/work/revise.js +1 -1
  116. package/dist/commands/work/revise.js.map +1 -1
  117. package/dist/commands/work/shortcut.d.ts +23 -0
  118. package/dist/commands/work/shortcut.js +212 -0
  119. package/dist/commands/work/shortcut.js.map +1 -0
  120. package/dist/commands/work/spawn.d.ts +3 -0
  121. package/dist/commands/work/spawn.js +175 -2
  122. package/dist/commands/work/spawn.js.map +1 -1
  123. package/dist/commands/work/start.js +22 -30
  124. package/dist/commands/work/start.js.map +1 -1
  125. package/dist/commands/work/watch.js +1 -1
  126. package/dist/commands/work/watch.js.map +1 -1
  127. package/dist/commands/workspace/add.js +1 -1
  128. package/dist/commands/workspace/add.js.map +1 -1
  129. package/dist/commands/workspace/list.js +1 -1
  130. package/dist/commands/workspace/list.js.map +1 -1
  131. package/dist/hooks/init.d.ts +1 -1
  132. package/dist/hooks/init.js +9 -7
  133. package/dist/hooks/init.js.map +1 -1
  134. package/dist/lib/agent-naming.d.ts +15 -0
  135. package/dist/lib/agent-naming.js +32 -0
  136. package/dist/lib/agent-naming.js.map +1 -0
  137. package/dist/lib/agents/commands.d.ts +2 -0
  138. package/dist/lib/agents/commands.js +51 -44
  139. package/dist/lib/agents/commands.js.map +1 -1
  140. package/dist/lib/agents/index.js +5 -0
  141. package/dist/lib/agents/index.js.map +1 -1
  142. package/dist/lib/asana/client.d.ts +8 -0
  143. package/dist/lib/asana/client.js +26 -7
  144. package/dist/lib/asana/client.js.map +1 -1
  145. package/dist/lib/asana/types.d.ts +20 -0
  146. package/dist/lib/branch/index.d.ts +36 -0
  147. package/dist/lib/branch/index.js +129 -0
  148. package/dist/lib/branch/index.js.map +1 -1
  149. package/dist/lib/database/drizzle-schema.d.ts +2 -2
  150. package/dist/lib/database/index.js +1 -1
  151. package/dist/lib/database/index.js.map +1 -1
  152. package/dist/lib/events/emitting-runner.d.ts +30 -0
  153. package/dist/lib/events/emitting-runner.js +95 -0
  154. package/dist/lib/events/emitting-runner.js.map +1 -0
  155. package/dist/lib/events/event-bus.d.ts +54 -0
  156. package/dist/lib/events/event-bus.js +107 -0
  157. package/dist/lib/events/event-bus.js.map +1 -0
  158. package/dist/lib/events/events.d.ts +67 -0
  159. package/dist/lib/events/events.js +8 -0
  160. package/dist/lib/events/events.js.map +1 -0
  161. package/dist/lib/events/index.d.ts +7 -0
  162. package/dist/lib/events/index.js +6 -0
  163. package/dist/lib/events/index.js.map +1 -0
  164. package/dist/lib/execution/devcontainer.d.ts +27 -0
  165. package/dist/lib/execution/devcontainer.js +80 -0
  166. package/dist/lib/execution/devcontainer.js.map +1 -1
  167. package/dist/lib/execution/runners.d.ts +28 -0
  168. package/dist/lib/execution/runners.js +459 -31
  169. package/dist/lib/execution/runners.js.map +1 -1
  170. package/dist/lib/execution/spawner.js +35 -17
  171. package/dist/lib/execution/spawner.js.map +1 -1
  172. package/dist/lib/execution/types.d.ts +1 -0
  173. package/dist/lib/execution/types.js.map +1 -1
  174. package/dist/lib/external-issues/adapters.d.ts +34 -0
  175. package/dist/lib/external-issues/adapters.js +191 -0
  176. package/dist/lib/external-issues/adapters.js.map +1 -1
  177. package/dist/lib/external-issues/asana.d.ts +75 -0
  178. package/dist/lib/external-issues/asana.js +243 -0
  179. package/dist/lib/external-issues/asana.js.map +1 -0
  180. package/dist/lib/external-issues/index.d.ts +5 -3
  181. package/dist/lib/external-issues/index.js +7 -3
  182. package/dist/lib/external-issues/index.js.map +1 -1
  183. package/dist/lib/external-issues/jira.d.ts +46 -0
  184. package/dist/lib/external-issues/jira.js +68 -0
  185. package/dist/lib/external-issues/jira.js.map +1 -1
  186. package/dist/lib/external-issues/linear.js +22 -2
  187. package/dist/lib/external-issues/linear.js.map +1 -1
  188. package/dist/lib/external-issues/mapping-store.js +1 -1
  189. package/dist/lib/external-issues/shortcut.d.ts +86 -0
  190. package/dist/lib/external-issues/shortcut.js +274 -0
  191. package/dist/lib/external-issues/shortcut.js.map +1 -0
  192. package/dist/lib/external-issues/types.d.ts +3 -3
  193. package/dist/lib/external-issues/types.js +1 -1
  194. package/dist/lib/external-issues/types.js.map +1 -1
  195. package/dist/lib/linear/client.js +2 -0
  196. package/dist/lib/linear/client.js.map +1 -1
  197. package/dist/lib/linear/mapper.d.ts +7 -1
  198. package/dist/lib/linear/mapper.js +42 -12
  199. package/dist/lib/linear/mapper.js.map +1 -1
  200. package/dist/lib/linear/types.d.ts +1 -0
  201. package/dist/lib/linear/types.js.map +1 -1
  202. package/dist/lib/mcp/tools/cli-passthrough.js +1 -1
  203. package/dist/lib/mcp/tools/cli-passthrough.js.map +1 -1
  204. package/dist/lib/mcp/tools/work.js +1 -1
  205. package/dist/lib/mcp/tools/work.js.map +1 -1
  206. package/dist/lib/pmo/index.d.ts +2 -2
  207. package/dist/lib/pmo/index.js +3 -3
  208. package/dist/lib/pmo/index.js.map +1 -1
  209. package/dist/lib/pmo/sync-manager.js +1 -1
  210. package/dist/lib/pmo/sync-manager.js.map +1 -1
  211. package/dist/lib/pmo/watcher.js +1 -1
  212. package/dist/lib/pmo/watcher.js.map +1 -1
  213. package/dist/lib/repos/index.js +1 -1
  214. package/dist/lib/repos/index.js.map +1 -1
  215. package/dist/lib/runners/agent-runner.d.ts +92 -0
  216. package/dist/lib/runners/agent-runner.js +9 -0
  217. package/dist/lib/runners/agent-runner.js.map +1 -0
  218. package/dist/lib/runners/claude-code-runner.d.ts +53 -0
  219. package/dist/lib/runners/claude-code-runner.js +132 -0
  220. package/dist/lib/runners/claude-code-runner.js.map +1 -0
  221. package/dist/lib/runners/index.d.ts +34 -0
  222. package/dist/lib/runners/index.js +97 -0
  223. package/dist/lib/runners/index.js.map +1 -0
  224. package/dist/lib/session-store.d.ts +70 -0
  225. package/dist/lib/session-store.js +167 -0
  226. package/dist/lib/session-store.js.map +1 -0
  227. package/dist/lib/shortcut/config.d.ts +44 -0
  228. package/dist/lib/shortcut/config.js +98 -0
  229. package/dist/lib/shortcut/config.js.map +1 -0
  230. package/dist/lib/shortcut/index.d.ts +7 -0
  231. package/dist/lib/shortcut/index.js +7 -0
  232. package/dist/lib/shortcut/index.js.map +1 -0
  233. package/dist/lib/signal-handler.js +8 -0
  234. package/dist/lib/signal-handler.js.map +1 -1
  235. package/dist/lib/telemetry/analytics.js +29 -15
  236. package/dist/lib/telemetry/analytics.js.map +1 -1
  237. package/dist/lib/update-check.d.ts +27 -0
  238. package/dist/lib/update-check.js +72 -0
  239. package/dist/lib/update-check.js.map +1 -1
  240. package/dist/lib/update-prompt.d.ts +10 -2
  241. package/dist/lib/update-prompt.js +38 -5
  242. package/dist/lib/update-prompt.js.map +1 -1
  243. package/dist/lib/work-source/client.d.ts +10 -0
  244. package/dist/lib/work-source/client.js +74 -0
  245. package/dist/lib/work-source/client.js.map +1 -0
  246. package/dist/lib/work-source/config.d.ts +1 -1
  247. package/dist/lib/work-source/config.js +17 -1
  248. package/dist/lib/work-source/config.js.map +1 -1
  249. package/dist/lib/work-source/index.d.ts +1 -0
  250. package/dist/lib/work-source/index.js +1 -0
  251. package/dist/lib/work-source/index.js.map +1 -1
  252. package/dist/lib/workspace.js +2 -2
  253. package/dist/lib/workspace.js.map +1 -1
  254. package/oclif.manifest.json +2230 -1187
  255. package/package.json +1 -1
@@ -1,5 +1,91 @@
1
1
  {
2
2
  "commands": {
3
+ "claude-yolo": {
4
+ "aliases": [],
5
+ "args": {
6
+ "task": {
7
+ "description": "Task description for the agent",
8
+ "name": "task",
9
+ "required": true
10
+ }
11
+ },
12
+ "description": "Launch Claude Code immediately with max autonomy (no prompts, background)",
13
+ "examples": [
14
+ "<%= config.bin %> claude-yolo \"fix the login bug\"",
15
+ "<%= config.bin %> claude-yolo \"add dark mode support\""
16
+ ],
17
+ "flags": {
18
+ "json": {
19
+ "description": "Output as JSON for AI agents/scripts",
20
+ "name": "json",
21
+ "allowNo": false,
22
+ "type": "boolean"
23
+ },
24
+ "machine": {
25
+ "char": "m",
26
+ "description": "Output as JSON for AI agents/scripts",
27
+ "name": "machine",
28
+ "allowNo": false,
29
+ "type": "boolean"
30
+ }
31
+ },
32
+ "hasDynamicHelp": false,
33
+ "hiddenAliases": [],
34
+ "id": "claude-yolo",
35
+ "pluginAlias": "@proletariat/cli",
36
+ "pluginName": "@proletariat/cli",
37
+ "pluginType": "core",
38
+ "strict": true,
39
+ "isESM": true,
40
+ "relativePath": [
41
+ "dist",
42
+ "commands",
43
+ "claude-yolo.js"
44
+ ]
45
+ },
46
+ "codex-yolo": {
47
+ "aliases": [],
48
+ "args": {
49
+ "task": {
50
+ "description": "Task description for the agent",
51
+ "name": "task",
52
+ "required": true
53
+ }
54
+ },
55
+ "description": "Launch Codex immediately with max autonomy (no prompts, background)",
56
+ "examples": [
57
+ "<%= config.bin %> codex-yolo \"fix the login bug\"",
58
+ "<%= config.bin %> codex-yolo \"add dark mode support\""
59
+ ],
60
+ "flags": {
61
+ "json": {
62
+ "description": "Output as JSON for AI agents/scripts",
63
+ "name": "json",
64
+ "allowNo": false,
65
+ "type": "boolean"
66
+ },
67
+ "machine": {
68
+ "char": "m",
69
+ "description": "Output as JSON for AI agents/scripts",
70
+ "name": "machine",
71
+ "allowNo": false,
72
+ "type": "boolean"
73
+ }
74
+ },
75
+ "hasDynamicHelp": false,
76
+ "hiddenAliases": [],
77
+ "id": "codex-yolo",
78
+ "pluginAlias": "@proletariat/cli",
79
+ "pluginName": "@proletariat/cli",
80
+ "pluginType": "core",
81
+ "strict": true,
82
+ "isESM": true,
83
+ "relativePath": [
84
+ "dist",
85
+ "commands",
86
+ "codex-yolo.js"
87
+ ]
88
+ },
3
89
  "commit": {
4
90
  "aliases": [],
5
91
  "args": {
@@ -173,11 +259,10 @@
173
259
  "init": {
174
260
  "aliases": [],
175
261
  "args": {},
176
- "description": "Initialize an HQ (headquarters) for managing repositories, agents, and projects",
262
+ "description": "Initialize machine-level Proletariat configuration (~/.proletariat)",
177
263
  "examples": [
178
264
  "<%= config.bin %> <%= command.id %>",
179
- "<%= config.bin %> <%= command.id %> --json --name myproject",
180
- "<%= config.bin %> <%= command.id %> --json --name myproject --path /path/to/hq --agents agent1,agent2 --pmo"
265
+ "<%= config.bin %> <%= command.id %> --json"
181
266
  ],
182
267
  "flags": {
183
268
  "json": {
@@ -192,59 +277,74 @@
192
277
  "name": "machine",
193
278
  "allowNo": false,
194
279
  "type": "boolean"
280
+ }
281
+ },
282
+ "hasDynamicHelp": false,
283
+ "hiddenAliases": [],
284
+ "id": "init",
285
+ "pluginAlias": "@proletariat/cli",
286
+ "pluginName": "@proletariat/cli",
287
+ "pluginType": "core",
288
+ "strict": true,
289
+ "enableJsonFlag": false,
290
+ "isESM": true,
291
+ "relativePath": [
292
+ "dist",
293
+ "commands",
294
+ "init.js"
295
+ ]
296
+ },
297
+ "logs": {
298
+ "aliases": [],
299
+ "args": {
300
+ "agent": {
301
+ "description": "Agent name or session ID",
302
+ "name": "agent",
303
+ "required": true
304
+ }
305
+ },
306
+ "description": "View full agent logs (full tmux scrollback)",
307
+ "examples": [
308
+ "<%= config.bin %> logs bold-fox",
309
+ "<%= config.bin %> logs SES-ABC123",
310
+ "<%= config.bin %> logs bold-fox --lines 500"
311
+ ],
312
+ "flags": {
313
+ "json": {
314
+ "description": "Output as JSON for AI agents/scripts",
315
+ "name": "json",
316
+ "allowNo": false,
317
+ "type": "boolean"
195
318
  },
196
- "name": {
197
- "char": "n",
198
- "description": "HQ name",
199
- "name": "name",
200
- "hasDynamicHelp": false,
201
- "multiple": false,
202
- "type": "option"
203
- },
204
- "path": {
205
- "char": "p",
206
- "description": "HQ path (defaults to ./{name}-hq)",
207
- "name": "path",
208
- "hasDynamicHelp": false,
209
- "multiple": false,
210
- "type": "option"
211
- },
212
- "agents": {
213
- "char": "a",
214
- "description": "Comma-separated list of agent names",
215
- "name": "agents",
216
- "hasDynamicHelp": false,
217
- "multiple": false,
218
- "type": "option"
319
+ "machine": {
320
+ "char": "m",
321
+ "description": "Output as JSON for AI agents/scripts",
322
+ "name": "machine",
323
+ "allowNo": false,
324
+ "type": "boolean"
219
325
  },
220
- "repos": {
221
- "char": "r",
222
- "description": "Comma-separated list of repository paths to clone/move",
223
- "name": "repos",
326
+ "lines": {
327
+ "char": "l",
328
+ "description": "Number of scrollback lines to capture",
329
+ "name": "lines",
330
+ "default": 10000,
224
331
  "hasDynamicHelp": false,
225
332
  "multiple": false,
226
333
  "type": "option"
227
- },
228
- "pmo": {
229
- "description": "Include PMO (Project Management Org)",
230
- "name": "pmo",
231
- "allowNo": true,
232
- "type": "boolean"
233
334
  }
234
335
  },
235
336
  "hasDynamicHelp": false,
236
337
  "hiddenAliases": [],
237
- "id": "init",
338
+ "id": "logs",
238
339
  "pluginAlias": "@proletariat/cli",
239
340
  "pluginName": "@proletariat/cli",
240
341
  "pluginType": "core",
241
342
  "strict": true,
242
- "enableJsonFlag": false,
243
343
  "isESM": true,
244
344
  "relativePath": [
245
345
  "dist",
246
346
  "commands",
247
- "init.js"
347
+ "logs.js"
248
348
  ]
249
349
  },
250
350
  "mcp-server": {
@@ -271,25 +371,16 @@
271
371
  "mcp-server.js"
272
372
  ]
273
373
  },
274
- "pull": {
374
+ "new": {
275
375
  "aliases": [],
276
376
  "args": {},
277
- "description": "Pull tickets from Backlog to Ready using diet ratio enforcement",
377
+ "description": "Create a new headquarters for managing repositories, agents, and projects",
278
378
  "examples": [
279
379
  "<%= config.bin %> <%= command.id %>",
280
- "<%= config.bin %> <%= command.id %> --count 20",
281
- "<%= config.bin %> <%= command.id %> --dry-run",
282
- "<%= config.bin %> <%= command.id %> --count 50 --dry-run"
380
+ "<%= config.bin %> <%= command.id %> --json --name myproject",
381
+ "<%= config.bin %> <%= command.id %> --json --name myproject --path /path/to/hq --agents agent1,agent2 --pmo"
283
382
  ],
284
383
  "flags": {
285
- "project": {
286
- "char": "P",
287
- "description": "Project ID (uses first project if only one exists)",
288
- "name": "project",
289
- "hasDynamicHelp": false,
290
- "multiple": false,
291
- "type": "option"
292
- },
293
384
  "json": {
294
385
  "description": "Output as JSON for AI agents/scripts",
295
386
  "name": "json",
@@ -303,43 +394,74 @@
303
394
  "allowNo": false,
304
395
  "type": "boolean"
305
396
  },
306
- "count": {
397
+ "name": {
307
398
  "char": "n",
308
- "description": "Number of tickets to pull to Ready",
309
- "name": "count",
310
- "default": 50,
399
+ "description": "HQ name",
400
+ "name": "name",
311
401
  "hasDynamicHelp": false,
312
402
  "multiple": false,
313
403
  "type": "option"
314
404
  },
315
- "dry-run": {
316
- "char": "d",
317
- "description": "Show what would be pulled without moving tickets",
318
- "name": "dry-run",
319
- "allowNo": false,
405
+ "path": {
406
+ "char": "p",
407
+ "description": "HQ path (defaults to ./{name}-hq)",
408
+ "name": "path",
409
+ "hasDynamicHelp": false,
410
+ "multiple": false,
411
+ "type": "option"
412
+ },
413
+ "agents": {
414
+ "char": "a",
415
+ "description": "Comma-separated list of agent names",
416
+ "name": "agents",
417
+ "hasDynamicHelp": false,
418
+ "multiple": false,
419
+ "type": "option"
420
+ },
421
+ "repos": {
422
+ "char": "r",
423
+ "description": "Comma-separated list of repository paths to clone/move",
424
+ "name": "repos",
425
+ "hasDynamicHelp": false,
426
+ "multiple": false,
427
+ "type": "option"
428
+ },
429
+ "pmo": {
430
+ "description": "Include PMO (Project Management Org)",
431
+ "name": "pmo",
432
+ "allowNo": true,
320
433
  "type": "boolean"
321
434
  }
322
435
  },
323
436
  "hasDynamicHelp": false,
324
437
  "hiddenAliases": [],
325
- "id": "pull",
438
+ "id": "new",
326
439
  "pluginAlias": "@proletariat/cli",
327
440
  "pluginName": "@proletariat/cli",
328
441
  "pluginType": "core",
329
442
  "strict": true,
443
+ "enableJsonFlag": false,
330
444
  "isESM": true,
331
445
  "relativePath": [
332
446
  "dist",
333
447
  "commands",
334
- "pull.js"
448
+ "new.js"
335
449
  ]
336
450
  },
337
- "whoami": {
451
+ "peek": {
338
452
  "aliases": [],
339
- "args": {},
340
- "description": "Show current agent/environment context",
453
+ "args": {
454
+ "agent": {
455
+ "description": "Agent name or session ID",
456
+ "name": "agent",
457
+ "required": true
458
+ }
459
+ },
460
+ "description": "View agent output (last N lines from tmux pane)",
341
461
  "examples": [
342
- "<%= config.bin %> <%= command.id %>"
462
+ "<%= config.bin %> peek bold-fox",
463
+ "<%= config.bin %> peek bold-fox --lines 100",
464
+ "<%= config.bin %> peek SES-ABC123"
343
465
  ],
344
466
  "flags": {
345
467
  "json": {
@@ -354,44 +476,289 @@
354
476
  "name": "machine",
355
477
  "allowNo": false,
356
478
  "type": "boolean"
479
+ },
480
+ "lines": {
481
+ "char": "l",
482
+ "description": "Number of scrollback lines to capture",
483
+ "name": "lines",
484
+ "default": 50,
485
+ "hasDynamicHelp": false,
486
+ "multiple": false,
487
+ "type": "option"
357
488
  }
358
489
  },
359
490
  "hasDynamicHelp": false,
360
491
  "hiddenAliases": [],
361
- "id": "whoami",
492
+ "id": "peek",
362
493
  "pluginAlias": "@proletariat/cli",
363
494
  "pluginName": "@proletariat/cli",
364
495
  "pluginType": "core",
365
496
  "strict": true,
366
- "enableJsonFlag": false,
367
497
  "isESM": true,
368
498
  "relativePath": [
369
499
  "dist",
370
500
  "commands",
371
- "whoami.js"
501
+ "peek.js"
372
502
  ]
373
503
  },
374
- "action:create": {
504
+ "poke": {
375
505
  "aliases": [],
376
506
  "args": {
377
- "name": {
378
- "description": "Name for the new action",
379
- "name": "name",
380
- "required": false
507
+ "agent": {
508
+ "description": "Agent name or session ID",
509
+ "name": "agent",
510
+ "required": true
511
+ },
512
+ "message": {
513
+ "description": "Message to send to the agent",
514
+ "name": "message",
515
+ "required": true
381
516
  }
382
517
  },
383
- "description": "Create a new work action",
518
+ "description": "Send a message to a running agent",
384
519
  "examples": [
385
- "<%= config.bin %> <%= command.id %> \"Security Review\" --prompt \"Review for vulnerabilities...\"",
386
- "<%= config.bin %> <%= command.id %> \"Write Docs\" --prompt \"Document this feature...\" --suggested-for completed",
387
- "<%= config.bin %> <%= command.id %> # Interactive mode"
520
+ "<%= config.bin %> poke bold-fox \"focus on the login bug\"",
521
+ "<%= config.bin %> poke bold-fox \"yes\"",
522
+ "<%= config.bin %> poke SES-ABC123 \"approved\""
388
523
  ],
389
524
  "flags": {
390
- "project": {
391
- "char": "P",
392
- "description": "Project ID (uses first project if only one exists)",
393
- "name": "project",
394
- "hasDynamicHelp": false,
525
+ "json": {
526
+ "description": "Output as JSON for AI agents/scripts",
527
+ "name": "json",
528
+ "allowNo": false,
529
+ "type": "boolean"
530
+ },
531
+ "machine": {
532
+ "char": "m",
533
+ "description": "Output as JSON for AI agents/scripts",
534
+ "name": "machine",
535
+ "allowNo": false,
536
+ "type": "boolean"
537
+ }
538
+ },
539
+ "hasDynamicHelp": false,
540
+ "hiddenAliases": [],
541
+ "id": "poke",
542
+ "pluginAlias": "@proletariat/cli",
543
+ "pluginName": "@proletariat/cli",
544
+ "pluginType": "core",
545
+ "strict": true,
546
+ "isESM": true,
547
+ "relativePath": [
548
+ "dist",
549
+ "commands",
550
+ "poke.js"
551
+ ]
552
+ },
553
+ "ps": {
554
+ "aliases": [],
555
+ "args": {},
556
+ "description": "List running agents (works anywhere, no HQ required)",
557
+ "examples": [
558
+ "<%= config.bin %> ps",
559
+ "<%= config.bin %> ps --all",
560
+ "<%= config.bin %> ps --json"
561
+ ],
562
+ "flags": {
563
+ "json": {
564
+ "description": "Output as JSON for AI agents/scripts",
565
+ "name": "json",
566
+ "allowNo": false,
567
+ "type": "boolean"
568
+ },
569
+ "machine": {
570
+ "char": "m",
571
+ "description": "Output as JSON for AI agents/scripts",
572
+ "name": "machine",
573
+ "allowNo": false,
574
+ "type": "boolean"
575
+ },
576
+ "all": {
577
+ "char": "a",
578
+ "description": "Show all sessions including completed",
579
+ "name": "all",
580
+ "allowNo": false,
581
+ "type": "boolean"
582
+ }
583
+ },
584
+ "hasDynamicHelp": false,
585
+ "hiddenAliases": [],
586
+ "id": "ps",
587
+ "pluginAlias": "@proletariat/cli",
588
+ "pluginName": "@proletariat/cli",
589
+ "pluginType": "core",
590
+ "strict": true,
591
+ "isESM": true,
592
+ "relativePath": [
593
+ "dist",
594
+ "commands",
595
+ "ps.js"
596
+ ]
597
+ },
598
+ "pull": {
599
+ "aliases": [],
600
+ "args": {},
601
+ "description": "Pull tickets from Backlog to Ready using diet ratio enforcement",
602
+ "examples": [
603
+ "<%= config.bin %> <%= command.id %>",
604
+ "<%= config.bin %> <%= command.id %> --count 20",
605
+ "<%= config.bin %> <%= command.id %> --dry-run",
606
+ "<%= config.bin %> <%= command.id %> --count 50 --dry-run"
607
+ ],
608
+ "flags": {
609
+ "project": {
610
+ "char": "P",
611
+ "description": "Project ID (uses first project if only one exists)",
612
+ "name": "project",
613
+ "hasDynamicHelp": false,
614
+ "multiple": false,
615
+ "type": "option"
616
+ },
617
+ "json": {
618
+ "description": "Output as JSON for AI agents/scripts",
619
+ "name": "json",
620
+ "allowNo": false,
621
+ "type": "boolean"
622
+ },
623
+ "machine": {
624
+ "char": "m",
625
+ "description": "Output as JSON for AI agents/scripts",
626
+ "name": "machine",
627
+ "allowNo": false,
628
+ "type": "boolean"
629
+ },
630
+ "count": {
631
+ "char": "n",
632
+ "description": "Number of tickets to pull to Ready",
633
+ "name": "count",
634
+ "default": 50,
635
+ "hasDynamicHelp": false,
636
+ "multiple": false,
637
+ "type": "option"
638
+ },
639
+ "dry-run": {
640
+ "char": "d",
641
+ "description": "Show what would be pulled without moving tickets",
642
+ "name": "dry-run",
643
+ "allowNo": false,
644
+ "type": "boolean"
645
+ }
646
+ },
647
+ "hasDynamicHelp": false,
648
+ "hiddenAliases": [],
649
+ "id": "pull",
650
+ "pluginAlias": "@proletariat/cli",
651
+ "pluginName": "@proletariat/cli",
652
+ "pluginType": "core",
653
+ "strict": true,
654
+ "isESM": true,
655
+ "relativePath": [
656
+ "dist",
657
+ "commands",
658
+ "pull.js"
659
+ ]
660
+ },
661
+ "stop": {
662
+ "aliases": [],
663
+ "args": {
664
+ "agent": {
665
+ "description": "Agent name or session ID",
666
+ "name": "agent",
667
+ "required": true
668
+ }
669
+ },
670
+ "description": "Stop a running agent",
671
+ "examples": [
672
+ "<%= config.bin %> stop bold-fox",
673
+ "<%= config.bin %> stop SES-ABC123"
674
+ ],
675
+ "flags": {
676
+ "json": {
677
+ "description": "Output as JSON for AI agents/scripts",
678
+ "name": "json",
679
+ "allowNo": false,
680
+ "type": "boolean"
681
+ },
682
+ "machine": {
683
+ "char": "m",
684
+ "description": "Output as JSON for AI agents/scripts",
685
+ "name": "machine",
686
+ "allowNo": false,
687
+ "type": "boolean"
688
+ }
689
+ },
690
+ "hasDynamicHelp": false,
691
+ "hiddenAliases": [],
692
+ "id": "stop",
693
+ "pluginAlias": "@proletariat/cli",
694
+ "pluginName": "@proletariat/cli",
695
+ "pluginType": "core",
696
+ "strict": true,
697
+ "isESM": true,
698
+ "relativePath": [
699
+ "dist",
700
+ "commands",
701
+ "stop.js"
702
+ ]
703
+ },
704
+ "whoami": {
705
+ "aliases": [],
706
+ "args": {},
707
+ "description": "Show current agent/environment context",
708
+ "examples": [
709
+ "<%= config.bin %> <%= command.id %>"
710
+ ],
711
+ "flags": {
712
+ "json": {
713
+ "description": "Output as JSON for AI agents/scripts",
714
+ "name": "json",
715
+ "allowNo": false,
716
+ "type": "boolean"
717
+ },
718
+ "machine": {
719
+ "char": "m",
720
+ "description": "Output as JSON for AI agents/scripts",
721
+ "name": "machine",
722
+ "allowNo": false,
723
+ "type": "boolean"
724
+ }
725
+ },
726
+ "hasDynamicHelp": false,
727
+ "hiddenAliases": [],
728
+ "id": "whoami",
729
+ "pluginAlias": "@proletariat/cli",
730
+ "pluginName": "@proletariat/cli",
731
+ "pluginType": "core",
732
+ "strict": true,
733
+ "enableJsonFlag": false,
734
+ "isESM": true,
735
+ "relativePath": [
736
+ "dist",
737
+ "commands",
738
+ "whoami.js"
739
+ ]
740
+ },
741
+ "action:create": {
742
+ "aliases": [],
743
+ "args": {
744
+ "name": {
745
+ "description": "Name for the new action",
746
+ "name": "name",
747
+ "required": false
748
+ }
749
+ },
750
+ "description": "Create a new work action",
751
+ "examples": [
752
+ "<%= config.bin %> <%= command.id %> \"Security Review\" --prompt \"Review for vulnerabilities...\"",
753
+ "<%= config.bin %> <%= command.id %> \"Write Docs\" --prompt \"Document this feature...\" --suggested-for completed",
754
+ "<%= config.bin %> <%= command.id %> # Interactive mode"
755
+ ],
756
+ "flags": {
757
+ "project": {
758
+ "char": "P",
759
+ "description": "Project ID (uses first project if only one exists)",
760
+ "name": "project",
761
+ "hasDynamicHelp": false,
395
762
  "multiple": false,
396
763
  "type": "option"
397
764
  },
@@ -983,6 +1350,7 @@
983
1350
  "<%= config.bin %> <%= command.id %> --temp",
984
1351
  "<%= config.bin %> <%= command.id %> --temp --dry-run",
985
1352
  "<%= config.bin %> <%= command.id %> --all",
1353
+ "<%= config.bin %> <%= command.id %> bold-bezos-1 --keep-dir",
986
1354
  "<%= config.bin %> <%= command.id %> --json"
987
1355
  ],
988
1356
  "flags": {
@@ -1045,6 +1413,12 @@
1045
1413
  "allowNo": false,
1046
1414
  "type": "boolean"
1047
1415
  },
1416
+ "keep-dir": {
1417
+ "description": "Kill containers and tmux sessions but preserve the agent directory",
1418
+ "name": "keep-dir",
1419
+ "allowNo": false,
1420
+ "type": "boolean"
1421
+ },
1048
1422
  "no-interactive": {
1049
1423
  "description": "Alias for --json flag",
1050
1424
  "name": "no-interactive",
@@ -1678,18 +2052,21 @@
1678
2052
  "connect.js"
1679
2053
  ]
1680
2054
  },
1681
- "asana:sync": {
2055
+ "asana:import": {
1682
2056
  "aliases": [],
1683
2057
  "args": {},
1684
- "description": "Sync PMO tickets to Asana tasks",
2058
+ "description": "Import Asana tasks into PMO as tickets",
1685
2059
  "examples": [
1686
- "<%= config.bin %> <%= command.id %> --ticket TKT-001 --task 123456789",
1687
- "<%= config.bin %> <%= command.id %> --ticket TKT-001 --create-missing",
1688
- "<%= config.bin %> <%= command.id %> --dry-run"
2060
+ "<%= config.bin %> <%= command.id %> # Interactive: select tasks from project",
2061
+ "<%= config.bin %> <%= command.id %> --limit 50 # Import up to 50 tasks",
2062
+ "<%= config.bin %> <%= command.id %> --all # Import all matching tasks",
2063
+ "<%= config.bin %> <%= command.id %> --dry-run # Preview what would be imported",
2064
+ "<%= config.bin %> <%= command.id %> --json # JSON output for scripting"
1689
2065
  ],
1690
2066
  "flags": {
1691
2067
  "project": {
1692
- "description": "Asana project gid used with --create-missing",
2068
+ "char": "P",
2069
+ "description": "Project ID (uses first project if only one exists)",
1693
2070
  "name": "project",
1694
2071
  "hasDynamicHelp": false,
1695
2072
  "multiple": false,
@@ -1708,28 +2085,24 @@
1708
2085
  "allowNo": false,
1709
2086
  "type": "boolean"
1710
2087
  },
1711
- "ticket": {
1712
- "description": "PMO ticket ID to sync (syncs all mapped tickets if omitted)",
1713
- "name": "ticket",
1714
- "hasDynamicHelp": false,
1715
- "multiple": false,
1716
- "type": "option"
1717
- },
1718
- "task": {
1719
- "description": "Asana task gid to map to --ticket",
1720
- "name": "task",
2088
+ "limit": {
2089
+ "char": "n",
2090
+ "description": "Maximum number of tasks to import",
2091
+ "name": "limit",
2092
+ "default": 50,
1721
2093
  "hasDynamicHelp": false,
1722
2094
  "multiple": false,
1723
2095
  "type": "option"
1724
2096
  },
1725
- "create-missing": {
1726
- "description": "Create Asana task when no mapping exists (requires project)",
1727
- "name": "create-missing",
2097
+ "all": {
2098
+ "char": "a",
2099
+ "description": "Import all matching tasks without interactive selection",
2100
+ "name": "all",
1728
2101
  "allowNo": false,
1729
2102
  "type": "boolean"
1730
2103
  },
1731
2104
  "dry-run": {
1732
- "description": "Preview sync operations without making changes",
2105
+ "description": "Preview tasks that would be imported without creating tickets",
1733
2106
  "name": "dry-run",
1734
2107
  "allowNo": false,
1735
2108
  "type": "boolean"
@@ -1737,7 +2110,7 @@
1737
2110
  },
1738
2111
  "hasDynamicHelp": false,
1739
2112
  "hiddenAliases": [],
1740
- "id": "asana:sync",
2113
+ "id": "asana:import",
1741
2114
  "pluginAlias": "@proletariat/cli",
1742
2115
  "pluginName": "@proletariat/cli",
1743
2116
  "pluginType": "core",
@@ -1747,7 +2120,79 @@
1747
2120
  "dist",
1748
2121
  "commands",
1749
2122
  "asana",
1750
- "sync.js"
2123
+ "import.js"
2124
+ ]
2125
+ },
2126
+ "asana:sync": {
2127
+ "aliases": [],
2128
+ "args": {},
2129
+ "description": "Sync PMO tickets to Asana tasks",
2130
+ "examples": [
2131
+ "<%= config.bin %> <%= command.id %> --ticket TKT-001 --task 123456789",
2132
+ "<%= config.bin %> <%= command.id %> --ticket TKT-001 --create-missing",
2133
+ "<%= config.bin %> <%= command.id %> --dry-run"
2134
+ ],
2135
+ "flags": {
2136
+ "project": {
2137
+ "description": "Asana project gid used with --create-missing",
2138
+ "name": "project",
2139
+ "hasDynamicHelp": false,
2140
+ "multiple": false,
2141
+ "type": "option"
2142
+ },
2143
+ "json": {
2144
+ "description": "Output as JSON for AI agents/scripts",
2145
+ "name": "json",
2146
+ "allowNo": false,
2147
+ "type": "boolean"
2148
+ },
2149
+ "machine": {
2150
+ "char": "m",
2151
+ "description": "Output as JSON for AI agents/scripts",
2152
+ "name": "machine",
2153
+ "allowNo": false,
2154
+ "type": "boolean"
2155
+ },
2156
+ "ticket": {
2157
+ "description": "PMO ticket ID to sync (syncs all mapped tickets if omitted)",
2158
+ "name": "ticket",
2159
+ "hasDynamicHelp": false,
2160
+ "multiple": false,
2161
+ "type": "option"
2162
+ },
2163
+ "task": {
2164
+ "description": "Asana task gid to map to --ticket",
2165
+ "name": "task",
2166
+ "hasDynamicHelp": false,
2167
+ "multiple": false,
2168
+ "type": "option"
2169
+ },
2170
+ "create-missing": {
2171
+ "description": "Create Asana task when no mapping exists (requires project)",
2172
+ "name": "create-missing",
2173
+ "allowNo": false,
2174
+ "type": "boolean"
2175
+ },
2176
+ "dry-run": {
2177
+ "description": "Preview sync operations without making changes",
2178
+ "name": "dry-run",
2179
+ "allowNo": false,
2180
+ "type": "boolean"
2181
+ }
2182
+ },
2183
+ "hasDynamicHelp": false,
2184
+ "hiddenAliases": [],
2185
+ "id": "asana:sync",
2186
+ "pluginAlias": "@proletariat/cli",
2187
+ "pluginName": "@proletariat/cli",
2188
+ "pluginType": "core",
2189
+ "strict": true,
2190
+ "isESM": true,
2191
+ "relativePath": [
2192
+ "dist",
2193
+ "commands",
2194
+ "asana",
2195
+ "sync.js"
1751
2196
  ]
1752
2197
  },
1753
2198
  "autocomplete:setup": {
@@ -3076,6 +3521,77 @@
3076
3521
  "open.js"
3077
3522
  ]
3078
3523
  },
3524
+ "codex": {
3525
+ "aliases": [],
3526
+ "args": {
3527
+ "task": {
3528
+ "description": "Task description for the agent",
3529
+ "name": "task",
3530
+ "required": false
3531
+ }
3532
+ },
3533
+ "description": "Quick launch Codex for ad-hoc sessions (works anywhere, no HQ required)",
3534
+ "examples": [
3535
+ "<%= config.bin %> codex \"fix the bug\"",
3536
+ "<%= config.bin %> codex \"add dark mode\" --permission-mode danger",
3537
+ "<%= config.bin %> codex \"add tests\" --directory ./my-project"
3538
+ ],
3539
+ "flags": {
3540
+ "json": {
3541
+ "description": "Output as JSON for AI agents/scripts",
3542
+ "name": "json",
3543
+ "allowNo": false,
3544
+ "type": "boolean"
3545
+ },
3546
+ "machine": {
3547
+ "char": "m",
3548
+ "description": "Output as JSON for AI agents/scripts",
3549
+ "name": "machine",
3550
+ "allowNo": false,
3551
+ "type": "boolean"
3552
+ },
3553
+ "permission-mode": {
3554
+ "char": "p",
3555
+ "description": "Permission mode (danger: skip prompts, safe: require approval)",
3556
+ "name": "permission-mode",
3557
+ "hasDynamicHelp": false,
3558
+ "multiple": false,
3559
+ "options": [
3560
+ "danger",
3561
+ "safe"
3562
+ ],
3563
+ "type": "option"
3564
+ },
3565
+ "directory": {
3566
+ "description": "Directory to run in (default: cwd)",
3567
+ "name": "directory",
3568
+ "hasDynamicHelp": false,
3569
+ "multiple": false,
3570
+ "type": "option"
3571
+ },
3572
+ "detached": {
3573
+ "char": "d",
3574
+ "description": "Run in background (detached)",
3575
+ "name": "detached",
3576
+ "allowNo": false,
3577
+ "type": "boolean"
3578
+ }
3579
+ },
3580
+ "hasDynamicHelp": false,
3581
+ "hiddenAliases": [],
3582
+ "id": "codex",
3583
+ "pluginAlias": "@proletariat/cli",
3584
+ "pluginName": "@proletariat/cli",
3585
+ "pluginType": "core",
3586
+ "strict": true,
3587
+ "isESM": true,
3588
+ "relativePath": [
3589
+ "dist",
3590
+ "commands",
3591
+ "codex",
3592
+ "index.js"
3593
+ ]
3594
+ },
3079
3595
  "config": {
3080
3596
  "aliases": [],
3081
3597
  "args": {},
@@ -3780,19 +4296,18 @@
3780
4296
  "sync.js"
3781
4297
  ]
3782
4298
  },
3783
- "epic:activate": {
4299
+ "execution:config": {
3784
4300
  "aliases": [],
3785
- "args": {
3786
- "id": {
3787
- "description": "Epic ID",
3788
- "name": "id",
3789
- "required": false
3790
- }
3791
- },
3792
- "description": "Activate a draft or archived epic",
4301
+ "args": {},
4302
+ "description": "View and update execution preferences",
3793
4303
  "examples": [
3794
- "<%= config.bin %> <%= command.id %> EPIC-004",
3795
- "<%= config.bin %> <%= command.id %>"
4304
+ "<%= config.bin %> execution config # Interactive menu",
4305
+ "<%= config.bin %> execution config --json # Output current config as JSON",
4306
+ "<%= config.bin %> execution config --list # Show all settings",
4307
+ "<%= config.bin %> execution config --set defaultEnvironment host",
4308
+ "<%= config.bin %> execution config --set outputMode interactive",
4309
+ "<%= config.bin %> execution config --set permissionMode safe",
4310
+ "<%= config.bin %> execution config --setting outputMode --json # Show output mode choices"
3796
4311
  ],
3797
4312
  "flags": {
3798
4313
  "project": {
@@ -3815,11 +4330,33 @@
3815
4330
  "name": "machine",
3816
4331
  "allowNo": false,
3817
4332
  "type": "boolean"
4333
+ },
4334
+ "set": {
4335
+ "char": "s",
4336
+ "description": "Set a config value (format: key value)",
4337
+ "name": "set",
4338
+ "hasDynamicHelp": false,
4339
+ "multiple": true,
4340
+ "type": "option"
4341
+ },
4342
+ "list": {
4343
+ "char": "l",
4344
+ "description": "List all configuration values",
4345
+ "name": "list",
4346
+ "allowNo": false,
4347
+ "type": "boolean"
4348
+ },
4349
+ "setting": {
4350
+ "description": "Navigate to a specific setting prompt (for agent navigation)",
4351
+ "name": "setting",
4352
+ "hasDynamicHelp": false,
4353
+ "multiple": false,
4354
+ "type": "option"
3818
4355
  }
3819
4356
  },
3820
4357
  "hasDynamicHelp": false,
3821
4358
  "hiddenAliases": [],
3822
- "id": "epic:activate",
4359
+ "id": "execution:config",
3823
4360
  "pluginAlias": "@proletariat/cli",
3824
4361
  "pluginName": "@proletariat/cli",
3825
4362
  "pluginType": "core",
@@ -3828,23 +4365,19 @@
3828
4365
  "relativePath": [
3829
4366
  "dist",
3830
4367
  "commands",
3831
- "epic",
3832
- "activate.js"
4368
+ "execution",
4369
+ "config.js"
3833
4370
  ]
3834
4371
  },
3835
- "epic:archive": {
4372
+ "execution": {
3836
4373
  "aliases": [],
3837
- "args": {
3838
- "id": {
3839
- "description": "Epic ID",
3840
- "name": "id",
3841
- "required": false
3842
- }
3843
- },
3844
- "description": "Archive a completed epic",
4374
+ "args": {},
4375
+ "description": "Single execution operations (view, logs, stop)",
3845
4376
  "examples": [
3846
- "<%= config.bin %> <%= command.id %> EPIC-002",
3847
- "<%= config.bin %> <%= command.id %> --force"
4377
+ "<%= config.bin %> <%= command.id %>",
4378
+ "<%= config.bin %> <%= command.id %> view WORK-001",
4379
+ "<%= config.bin %> <%= command.id %> logs WORK-001",
4380
+ "<%= config.bin %> <%= command.id %> stop WORK-001"
3848
4381
  ],
3849
4382
  "flags": {
3850
4383
  "project": {
@@ -3867,18 +4400,11 @@
3867
4400
  "name": "machine",
3868
4401
  "allowNo": false,
3869
4402
  "type": "boolean"
3870
- },
3871
- "force": {
3872
- "char": "f",
3873
- "description": "Skip ticket completion check",
3874
- "name": "force",
3875
- "allowNo": false,
3876
- "type": "boolean"
3877
4403
  }
3878
4404
  },
3879
4405
  "hasDynamicHelp": false,
3880
4406
  "hiddenAliases": [],
3881
- "id": "epic:archive",
4407
+ "id": "execution",
3882
4408
  "pluginAlias": "@proletariat/cli",
3883
4409
  "pluginName": "@proletariat/cli",
3884
4410
  "pluginType": "core",
@@ -3887,20 +4413,27 @@
3887
4413
  "relativePath": [
3888
4414
  "dist",
3889
4415
  "commands",
3890
- "epic",
3891
- "archive.js"
4416
+ "execution",
4417
+ "index.js"
3892
4418
  ]
3893
4419
  },
3894
- "epic:create": {
4420
+ "execution:kill": {
3895
4421
  "aliases": [],
3896
- "args": {},
3897
- "description": "Create a new epic",
4422
+ "args": {
4423
+ "id": {
4424
+ "description": "Execution ID - prompts if not provided (ignored if --all or --agent used)",
4425
+ "name": "id",
4426
+ "required": false
4427
+ }
4428
+ },
4429
+ "description": "Stop running execution(s) (alias for \"execution stop\")",
3898
4430
  "examples": [
3899
- "<%= config.bin %> <%= command.id %>",
3900
- "<%= config.bin %> <%= command.id %> --title \"User Authentication System\"",
3901
- "<%= config.bin %> <%= command.id %> -t \"API Design\" --status draft",
3902
- "<%= config.bin %> <%= command.id %> -t \"Implement Auth\" --spec SPEC-001",
3903
- "<%= config.bin %> <%= command.id %> --title \"Test\" -P PROJ-001 --dry-run --json # Validate without creating"
4431
+ "<%= config.bin %> <%= command.id %> WORK-001",
4432
+ "<%= config.bin %> <%= command.id %> WORK-001 --force",
4433
+ "<%= config.bin %> <%= command.id %> # Interactive mode",
4434
+ "<%= config.bin %> <%= command.id %> --all",
4435
+ "<%= config.bin %> <%= command.id %> --all --force",
4436
+ "<%= config.bin %> <%= command.id %> --agent altman"
3904
4437
  ],
3905
4438
  "flags": {
3906
4439
  "project": {
@@ -3924,78 +4457,51 @@
3924
4457
  "allowNo": false,
3925
4458
  "type": "boolean"
3926
4459
  },
3927
- "title": {
3928
- "char": "t",
3929
- "description": "Epic title [required for non-interactive]",
3930
- "name": "title",
3931
- "hasDynamicHelp": false,
3932
- "multiple": false,
3933
- "type": "option"
4460
+ "force": {
4461
+ "char": "f",
4462
+ "description": "Force kill (SIGKILL instead of SIGTERM)",
4463
+ "name": "force",
4464
+ "allowNo": false,
4465
+ "type": "boolean"
3934
4466
  },
3935
- "status": {
3936
- "char": "s",
3937
- "description": "Initial status",
3938
- "name": "status",
3939
- "default": "active",
3940
- "hasDynamicHelp": false,
3941
- "multiple": false,
3942
- "options": [
3943
- "active",
3944
- "draft"
3945
- ],
3946
- "type": "option"
3947
- },
3948
- "description": {
3949
- "char": "d",
3950
- "description": "Epic description",
3951
- "name": "description",
3952
- "hasDynamicHelp": false,
3953
- "multiple": false,
3954
- "type": "option"
4467
+ "all": {
4468
+ "description": "Stop all running executions",
4469
+ "name": "all",
4470
+ "allowNo": false,
4471
+ "type": "boolean"
3955
4472
  },
3956
- "spec": {
3957
- "description": "Link to spec ID (the design spec that describes this epic)",
3958
- "name": "spec",
4473
+ "agent": {
4474
+ "char": "a",
4475
+ "description": "Stop all executions for a specific agent",
4476
+ "name": "agent",
3959
4477
  "hasDynamicHelp": false,
3960
4478
  "multiple": false,
3961
4479
  "type": "option"
3962
- },
3963
- "dry-run": {
3964
- "description": "Validate inputs without creating epic (use with --json for structured output)",
3965
- "name": "dry-run",
3966
- "allowNo": false,
3967
- "type": "boolean"
3968
4480
  }
3969
4481
  },
3970
4482
  "hasDynamicHelp": false,
3971
4483
  "hiddenAliases": [],
3972
- "id": "epic:create",
4484
+ "id": "execution:kill",
3973
4485
  "pluginAlias": "@proletariat/cli",
3974
4486
  "pluginName": "@proletariat/cli",
3975
4487
  "pluginType": "core",
3976
- "strict": true,
3977
4488
  "isESM": true,
3978
4489
  "relativePath": [
3979
4490
  "dist",
3980
4491
  "commands",
3981
- "epic",
3982
- "create.js"
4492
+ "execution",
4493
+ "kill.js"
3983
4494
  ]
3984
4495
  },
3985
- "epic:delete": {
4496
+ "execution:list": {
3986
4497
  "aliases": [],
3987
- "args": {
3988
- "id": {
3989
- "description": "Epic ID to delete",
3990
- "name": "id",
3991
- "required": false
3992
- }
3993
- },
3994
- "description": "Delete an epic permanently",
4498
+ "args": {},
4499
+ "description": "List running and recent executions",
3995
4500
  "examples": [
3996
- "<%= config.bin %> <%= command.id %> EPIC-001",
3997
- "<%= config.bin %> <%= command.id %> EPIC-001 --force",
3998
- "<%= config.bin %> <%= command.id %> # Interactive mode"
4501
+ "<%= config.bin %> <%= command.id %>",
4502
+ "<%= config.bin %> <%= command.id %> --status running",
4503
+ "<%= config.bin %> <%= command.id %> --agent alice",
4504
+ "<%= config.bin %> <%= command.id %> --limit 50"
3999
4505
  ],
4000
4506
  "flags": {
4001
4507
  "project": {
@@ -4007,7 +4513,7 @@
4007
4513
  "type": "option"
4008
4514
  },
4009
4515
  "json": {
4010
- "description": "Output prompt configuration as JSON (for AI agents/scripts)",
4516
+ "description": "Output as JSON for AI agents/scripts",
4011
4517
  "name": "json",
4012
4518
  "allowNo": false,
4013
4519
  "type": "boolean"
@@ -4019,17 +4525,42 @@
4019
4525
  "allowNo": false,
4020
4526
  "type": "boolean"
4021
4527
  },
4022
- "force": {
4023
- "char": "f",
4024
- "description": "Skip confirmation prompt",
4025
- "name": "force",
4026
- "allowNo": false,
4027
- "type": "boolean"
4528
+ "status": {
4529
+ "char": "s",
4530
+ "description": "Filter by status",
4531
+ "name": "status",
4532
+ "hasDynamicHelp": false,
4533
+ "multiple": false,
4534
+ "options": [
4535
+ "starting",
4536
+ "running",
4537
+ "completed",
4538
+ "failed",
4539
+ "stopped"
4540
+ ],
4541
+ "type": "option"
4542
+ },
4543
+ "agent": {
4544
+ "char": "a",
4545
+ "description": "Filter by agent name",
4546
+ "name": "agent",
4547
+ "hasDynamicHelp": false,
4548
+ "multiple": false,
4549
+ "type": "option"
4550
+ },
4551
+ "limit": {
4552
+ "char": "l",
4553
+ "description": "Number of results",
4554
+ "name": "limit",
4555
+ "default": 20,
4556
+ "hasDynamicHelp": false,
4557
+ "multiple": false,
4558
+ "type": "option"
4028
4559
  }
4029
4560
  },
4030
4561
  "hasDynamicHelp": false,
4031
4562
  "hiddenAliases": [],
4032
- "id": "epic:delete",
4563
+ "id": "execution:list",
4033
4564
  "pluginAlias": "@proletariat/cli",
4034
4565
  "pluginName": "@proletariat/cli",
4035
4566
  "pluginType": "core",
@@ -4038,16 +4569,25 @@
4038
4569
  "relativePath": [
4039
4570
  "dist",
4040
4571
  "commands",
4041
- "epic",
4042
- "delete.js"
4572
+ "execution",
4573
+ "list.js"
4043
4574
  ]
4044
4575
  },
4045
- "epic": {
4576
+ "execution:logs": {
4046
4577
  "aliases": [],
4047
- "args": {},
4048
- "description": "Interactive menu for epic operations",
4578
+ "args": {
4579
+ "id": {
4580
+ "description": "Execution ID - prompts if not provided",
4581
+ "name": "id",
4582
+ "required": false
4583
+ }
4584
+ },
4585
+ "description": "View execution logs",
4049
4586
  "examples": [
4050
- "<%= config.bin %> <%= command.id %>"
4587
+ "<%= config.bin %> <%= command.id %> WORK-001",
4588
+ "<%= config.bin %> <%= command.id %> WORK-001 --follow",
4589
+ "<%= config.bin %> <%= command.id %> WORK-001 --tail 50",
4590
+ "<%= config.bin %> <%= command.id %> # Interactive mode"
4051
4591
  ],
4052
4592
  "flags": {
4053
4593
  "project": {
@@ -4070,11 +4610,26 @@
4070
4610
  "name": "machine",
4071
4611
  "allowNo": false,
4072
4612
  "type": "boolean"
4613
+ },
4614
+ "follow": {
4615
+ "char": "f",
4616
+ "description": "Stream logs in real-time",
4617
+ "name": "follow",
4618
+ "allowNo": false,
4619
+ "type": "boolean"
4620
+ },
4621
+ "tail": {
4622
+ "char": "n",
4623
+ "description": "Show last n lines",
4624
+ "name": "tail",
4625
+ "hasDynamicHelp": false,
4626
+ "multiple": false,
4627
+ "type": "option"
4073
4628
  }
4074
4629
  },
4075
4630
  "hasDynamicHelp": false,
4076
4631
  "hiddenAliases": [],
4077
- "id": "epic",
4632
+ "id": "execution:logs",
4078
4633
  "pluginAlias": "@proletariat/cli",
4079
4634
  "pluginName": "@proletariat/cli",
4080
4635
  "pluginType": "core",
@@ -4083,17 +4638,27 @@
4083
4638
  "relativePath": [
4084
4639
  "dist",
4085
4640
  "commands",
4086
- "epic",
4087
- "index.js"
4641
+ "execution",
4642
+ "logs.js"
4088
4643
  ]
4089
4644
  },
4090
- "epic:list": {
4645
+ "execution:stop": {
4091
4646
  "aliases": [],
4092
- "args": {},
4093
- "description": "List all epics",
4647
+ "args": {
4648
+ "id": {
4649
+ "description": "Execution ID - prompts if not provided (ignored if --all or --agent used)",
4650
+ "name": "id",
4651
+ "required": false
4652
+ }
4653
+ },
4654
+ "description": "Stop running execution(s)",
4094
4655
  "examples": [
4095
- "<%= config.bin %> <%= command.id %>",
4096
- "<%= config.bin %> <%= command.id %> --status active"
4656
+ "<%= config.bin %> <%= command.id %> WORK-001",
4657
+ "<%= config.bin %> <%= command.id %> WORK-001 --force",
4658
+ "<%= config.bin %> <%= command.id %> # Interactive mode",
4659
+ "<%= config.bin %> <%= command.id %> --all",
4660
+ "<%= config.bin %> <%= command.id %> --all --force",
4661
+ "<%= config.bin %> <%= command.id %> --agent altman"
4097
4662
  ],
4098
4663
  "flags": {
4099
4664
  "project": {
@@ -4117,25 +4682,31 @@
4117
4682
  "allowNo": false,
4118
4683
  "type": "boolean"
4119
4684
  },
4120
- "status": {
4121
- "char": "s",
4122
- "description": "Filter by status",
4123
- "name": "status",
4685
+ "force": {
4686
+ "char": "f",
4687
+ "description": "Force kill (SIGKILL instead of SIGTERM)",
4688
+ "name": "force",
4689
+ "allowNo": false,
4690
+ "type": "boolean"
4691
+ },
4692
+ "all": {
4693
+ "description": "Stop all running executions",
4694
+ "name": "all",
4695
+ "allowNo": false,
4696
+ "type": "boolean"
4697
+ },
4698
+ "agent": {
4699
+ "char": "a",
4700
+ "description": "Stop all executions for a specific agent",
4701
+ "name": "agent",
4124
4702
  "hasDynamicHelp": false,
4125
4703
  "multiple": false,
4126
- "options": [
4127
- "active",
4128
- "draft",
4129
- "complete",
4130
- "dropped",
4131
- "future"
4132
- ],
4133
4704
  "type": "option"
4134
4705
  }
4135
4706
  },
4136
4707
  "hasDynamicHelp": false,
4137
4708
  "hiddenAliases": [],
4138
- "id": "epic:list",
4709
+ "id": "execution:stop",
4139
4710
  "pluginAlias": "@proletariat/cli",
4140
4711
  "pluginName": "@proletariat/cli",
4141
4712
  "pluginType": "core",
@@ -4144,35 +4715,23 @@
4144
4715
  "relativePath": [
4145
4716
  "dist",
4146
4717
  "commands",
4147
- "epic",
4148
- "list.js"
4718
+ "execution",
4719
+ "stop.js"
4149
4720
  ]
4150
4721
  },
4151
- "epic:move": {
4722
+ "execution:view": {
4152
4723
  "aliases": [],
4153
4724
  "args": {
4154
4725
  "id": {
4155
- "description": "Epic ID",
4726
+ "description": "Execution ID - prompts if not provided",
4156
4727
  "name": "id",
4157
4728
  "required": false
4158
- },
4159
- "status": {
4160
- "description": "Target status",
4161
- "name": "status",
4162
- "options": [
4163
- "active",
4164
- "draft",
4165
- "complete",
4166
- "dropped",
4167
- "future"
4168
- ],
4169
- "required": false
4170
4729
  }
4171
4730
  },
4172
- "description": "Move epic between status folders",
4731
+ "description": "View details of a specific execution",
4173
4732
  "examples": [
4174
- "<%= config.bin %> <%= command.id %> EPIC-002 complete",
4175
- "<%= config.bin %> <%= command.id %> --force"
4733
+ "<%= config.bin %> <%= command.id %> WORK-001",
4734
+ "<%= config.bin %> <%= command.id %> # Interactive mode"
4176
4735
  ],
4177
4736
  "flags": {
4178
4737
  "project": {
@@ -4195,18 +4754,11 @@
4195
4754
  "name": "machine",
4196
4755
  "allowNo": false,
4197
4756
  "type": "boolean"
4198
- },
4199
- "force": {
4200
- "char": "f",
4201
- "description": "Skip validation checks",
4202
- "name": "force",
4203
- "allowNo": false,
4204
- "type": "boolean"
4205
4757
  }
4206
4758
  },
4207
4759
  "hasDynamicHelp": false,
4208
4760
  "hiddenAliases": [],
4209
- "id": "epic:move",
4761
+ "id": "execution:view",
4210
4762
  "pluginAlias": "@proletariat/cli",
4211
4763
  "pluginName": "@proletariat/cli",
4212
4764
  "pluginType": "core",
@@ -4215,11 +4767,11 @@
4215
4767
  "relativePath": [
4216
4768
  "dist",
4217
4769
  "commands",
4218
- "epic",
4219
- "move.js"
4770
+ "execution",
4771
+ "view.js"
4220
4772
  ]
4221
4773
  },
4222
- "epic:progress": {
4774
+ "epic:activate": {
4223
4775
  "aliases": [],
4224
4776
  "args": {
4225
4777
  "id": {
@@ -4228,10 +4780,10 @@
4228
4780
  "required": false
4229
4781
  }
4230
4782
  },
4231
- "description": "Show epic completion progress",
4783
+ "description": "Activate a draft or archived epic",
4232
4784
  "examples": [
4233
- "<%= config.bin %> <%= command.id %> EPIC-001",
4234
- "<%= config.bin %> <%= command.id %> --all"
4785
+ "<%= config.bin %> <%= command.id %> EPIC-004",
4786
+ "<%= config.bin %> <%= command.id %>"
4235
4787
  ],
4236
4788
  "flags": {
4237
4789
  "project": {
@@ -4254,18 +4806,11 @@
4254
4806
  "name": "machine",
4255
4807
  "allowNo": false,
4256
4808
  "type": "boolean"
4257
- },
4258
- "all": {
4259
- "char": "a",
4260
- "description": "Show progress for all epics",
4261
- "name": "all",
4262
- "allowNo": false,
4263
- "type": "boolean"
4264
4809
  }
4265
4810
  },
4266
4811
  "hasDynamicHelp": false,
4267
4812
  "hiddenAliases": [],
4268
- "id": "epic:progress",
4813
+ "id": "epic:activate",
4269
4814
  "pluginAlias": "@proletariat/cli",
4270
4815
  "pluginName": "@proletariat/cli",
4271
4816
  "pluginType": "core",
@@ -4275,29 +4820,22 @@
4275
4820
  "dist",
4276
4821
  "commands",
4277
4822
  "epic",
4278
- "progress.js"
4823
+ "activate.js"
4279
4824
  ]
4280
4825
  },
4281
- "epic:project": {
4826
+ "epic:archive": {
4282
4827
  "aliases": [],
4283
4828
  "args": {
4284
- "epicId": {
4829
+ "id": {
4285
4830
  "description": "Epic ID",
4286
- "name": "epicId",
4287
- "required": false
4288
- },
4289
- "targetProject": {
4290
- "description": "Target project ID",
4291
- "name": "targetProject",
4831
+ "name": "id",
4292
4832
  "required": false
4293
4833
  }
4294
4834
  },
4295
- "description": "Move an epic to a different project (optionally with its tickets)",
4835
+ "description": "Archive a completed epic",
4296
4836
  "examples": [
4297
- "<%= config.bin %> <%= command.id %> EPIC-001 new-project",
4298
- "<%= config.bin %> <%= command.id %> EPIC-001 new-project --with-tickets",
4299
- "<%= config.bin %> <%= command.id %> EPIC-001",
4300
- "<%= config.bin %> <%= command.id %>"
4837
+ "<%= config.bin %> <%= command.id %> EPIC-002",
4838
+ "<%= config.bin %> <%= command.id %> --force"
4301
4839
  ],
4302
4840
  "flags": {
4303
4841
  "project": {
@@ -4321,17 +4859,17 @@
4321
4859
  "allowNo": false,
4322
4860
  "type": "boolean"
4323
4861
  },
4324
- "with-tickets": {
4325
- "char": "t",
4326
- "description": "Also move all tickets assigned to this epic",
4327
- "name": "with-tickets",
4862
+ "force": {
4863
+ "char": "f",
4864
+ "description": "Skip ticket completion check",
4865
+ "name": "force",
4328
4866
  "allowNo": false,
4329
4867
  "type": "boolean"
4330
4868
  }
4331
4869
  },
4332
4870
  "hasDynamicHelp": false,
4333
4871
  "hiddenAliases": [],
4334
- "id": "epic:project",
4872
+ "id": "epic:archive",
4335
4873
  "pluginAlias": "@proletariat/cli",
4336
4874
  "pluginName": "@proletariat/cli",
4337
4875
  "pluginType": "core",
@@ -4341,28 +4879,19 @@
4341
4879
  "dist",
4342
4880
  "commands",
4343
4881
  "epic",
4344
- "project.js"
4882
+ "archive.js"
4345
4883
  ]
4346
4884
  },
4347
- "epic:reorder": {
4885
+ "epic:create": {
4348
4886
  "aliases": [],
4349
- "args": {
4350
- "id": {
4351
- "description": "Epic ID to reorder",
4352
- "name": "id",
4353
- "required": false
4354
- },
4355
- "position": {
4356
- "description": "New position (1-based rank)",
4357
- "name": "position",
4358
- "required": false
4359
- }
4360
- },
4361
- "description": "Reorder epic priority/rank",
4887
+ "args": {},
4888
+ "description": "Create a new epic",
4362
4889
  "examples": [
4363
- "<%= config.bin %> <%= command.id %> EPIC-001 1",
4364
- "<%= config.bin %> <%= command.id %> EPIC-003 --first",
4365
- "<%= config.bin %> <%= command.id %> EPIC-002 --after EPIC-001"
4890
+ "<%= config.bin %> <%= command.id %>",
4891
+ "<%= config.bin %> <%= command.id %> --title \"User Authentication System\"",
4892
+ "<%= config.bin %> <%= command.id %> -t \"API Design\" --status draft",
4893
+ "<%= config.bin %> <%= command.id %> -t \"Implement Auth\" --spec SPEC-001",
4894
+ "<%= config.bin %> <%= command.id %> --title \"Test\" -P PROJ-001 --dry-run --json # Validate without creating"
4366
4895
  ],
4367
4896
  "flags": {
4368
4897
  "project": {
@@ -4386,56 +4915,52 @@
4386
4915
  "allowNo": false,
4387
4916
  "type": "boolean"
4388
4917
  },
4389
- "first": {
4390
- "description": "Move to first position (highest priority)",
4391
- "exclusive": [
4392
- "last",
4393
- "after",
4394
- "before"
4395
- ],
4396
- "name": "first",
4397
- "allowNo": false,
4398
- "type": "boolean"
4918
+ "title": {
4919
+ "char": "t",
4920
+ "description": "Epic title [required for non-interactive]",
4921
+ "name": "title",
4922
+ "hasDynamicHelp": false,
4923
+ "multiple": false,
4924
+ "type": "option"
4399
4925
  },
4400
- "last": {
4401
- "description": "Move to last position (lowest priority)",
4402
- "exclusive": [
4403
- "first",
4404
- "after",
4405
- "before"
4926
+ "status": {
4927
+ "char": "s",
4928
+ "description": "Initial status",
4929
+ "name": "status",
4930
+ "default": "active",
4931
+ "hasDynamicHelp": false,
4932
+ "multiple": false,
4933
+ "options": [
4934
+ "active",
4935
+ "draft"
4406
4936
  ],
4407
- "name": "last",
4408
- "allowNo": false,
4409
- "type": "boolean"
4937
+ "type": "option"
4410
4938
  },
4411
- "after": {
4412
- "description": "Move after this epic ID",
4413
- "exclusive": [
4414
- "first",
4415
- "last",
4416
- "before"
4417
- ],
4418
- "name": "after",
4939
+ "description": {
4940
+ "char": "d",
4941
+ "description": "Epic description",
4942
+ "name": "description",
4419
4943
  "hasDynamicHelp": false,
4420
4944
  "multiple": false,
4421
4945
  "type": "option"
4422
4946
  },
4423
- "before": {
4424
- "description": "Move before this epic ID",
4425
- "exclusive": [
4426
- "first",
4427
- "last",
4428
- "after"
4429
- ],
4430
- "name": "before",
4947
+ "spec": {
4948
+ "description": "Link to spec ID (the design spec that describes this epic)",
4949
+ "name": "spec",
4431
4950
  "hasDynamicHelp": false,
4432
4951
  "multiple": false,
4433
4952
  "type": "option"
4953
+ },
4954
+ "dry-run": {
4955
+ "description": "Validate inputs without creating epic (use with --json for structured output)",
4956
+ "name": "dry-run",
4957
+ "allowNo": false,
4958
+ "type": "boolean"
4434
4959
  }
4435
4960
  },
4436
4961
  "hasDynamicHelp": false,
4437
4962
  "hiddenAliases": [],
4438
- "id": "epic:reorder",
4963
+ "id": "epic:create",
4439
4964
  "pluginAlias": "@proletariat/cli",
4440
4965
  "pluginName": "@proletariat/cli",
4441
4966
  "pluginType": "core",
@@ -4445,22 +4970,23 @@
4445
4970
  "dist",
4446
4971
  "commands",
4447
4972
  "epic",
4448
- "reorder.js"
4973
+ "create.js"
4449
4974
  ]
4450
4975
  },
4451
- "epic:show": {
4976
+ "epic:delete": {
4452
4977
  "aliases": [],
4453
4978
  "args": {
4454
4979
  "id": {
4455
- "description": "Epic ID",
4980
+ "description": "Epic ID to delete",
4456
4981
  "name": "id",
4457
4982
  "required": false
4458
4983
  }
4459
4984
  },
4460
- "description": "View epic details and linked tickets (alias for epic view)",
4985
+ "description": "Delete an epic permanently",
4461
4986
  "examples": [
4462
4987
  "<%= config.bin %> <%= command.id %> EPIC-001",
4463
- "<%= config.bin %> <%= command.id %>"
4988
+ "<%= config.bin %> <%= command.id %> EPIC-001 --force",
4989
+ "<%= config.bin %> <%= command.id %> # Interactive mode"
4464
4990
  ],
4465
4991
  "flags": {
4466
4992
  "project": {
@@ -4472,7 +4998,7 @@
4472
4998
  "type": "option"
4473
4999
  },
4474
5000
  "json": {
4475
- "description": "Output as JSON for AI agents/scripts",
5001
+ "description": "Output prompt configuration as JSON (for AI agents/scripts)",
4476
5002
  "name": "json",
4477
5003
  "allowNo": false,
4478
5004
  "type": "boolean"
@@ -4483,43 +5009,36 @@
4483
5009
  "name": "machine",
4484
5010
  "allowNo": false,
4485
5011
  "type": "boolean"
5012
+ },
5013
+ "force": {
5014
+ "char": "f",
5015
+ "description": "Skip confirmation prompt",
5016
+ "name": "force",
5017
+ "allowNo": false,
5018
+ "type": "boolean"
4486
5019
  }
4487
5020
  },
4488
5021
  "hasDynamicHelp": false,
4489
- "hidden": true,
4490
5022
  "hiddenAliases": [],
4491
- "id": "epic:show",
5023
+ "id": "epic:delete",
4492
5024
  "pluginAlias": "@proletariat/cli",
4493
5025
  "pluginName": "@proletariat/cli",
4494
5026
  "pluginType": "core",
5027
+ "strict": true,
4495
5028
  "isESM": true,
4496
5029
  "relativePath": [
4497
5030
  "dist",
4498
5031
  "commands",
4499
5032
  "epic",
4500
- "show.js"
5033
+ "delete.js"
4501
5034
  ]
4502
5035
  },
4503
- "epic:spec": {
5036
+ "epic": {
4504
5037
  "aliases": [],
4505
- "args": {
4506
- "epicId": {
4507
- "description": "Epic ID",
4508
- "name": "epicId",
4509
- "required": false
4510
- },
4511
- "specId": {
4512
- "description": "Spec ID to link",
4513
- "name": "specId",
4514
- "required": false
4515
- }
4516
- },
4517
- "description": "Assign a spec to an epic (design document)",
5038
+ "args": {},
5039
+ "description": "Interactive menu for epic operations",
4518
5040
  "examples": [
4519
- "<%= config.bin %> <%= command.id %> EPIC-001 SPEC-001",
4520
- "<%= config.bin %> <%= command.id %> EPIC-001",
4521
- "<%= config.bin %> <%= command.id %>",
4522
- "<%= config.bin %> <%= command.id %> EPIC-001 --unlink"
5041
+ "<%= config.bin %> <%= command.id %>"
4523
5042
  ],
4524
5043
  "flags": {
4525
5044
  "project": {
@@ -4542,24 +5061,11 @@
4542
5061
  "name": "machine",
4543
5062
  "allowNo": false,
4544
5063
  "type": "boolean"
4545
- },
4546
- "unlink": {
4547
- "char": "u",
4548
- "description": "Remove spec from epic instead of adding",
4549
- "name": "unlink",
4550
- "allowNo": false,
4551
- "type": "boolean"
4552
- },
4553
- "align-tickets": {
4554
- "description": "Also update all tickets in the epic to use the same spec",
4555
- "name": "align-tickets",
4556
- "allowNo": false,
4557
- "type": "boolean"
4558
5064
  }
4559
5065
  },
4560
5066
  "hasDynamicHelp": false,
4561
5067
  "hiddenAliases": [],
4562
- "id": "epic:spec",
5068
+ "id": "epic",
4563
5069
  "pluginAlias": "@proletariat/cli",
4564
5070
  "pluginName": "@proletariat/cli",
4565
5071
  "pluginType": "core",
@@ -4569,30 +5075,16 @@
4569
5075
  "dist",
4570
5076
  "commands",
4571
5077
  "epic",
4572
- "spec.js"
5078
+ "index.js"
4573
5079
  ]
4574
5080
  },
4575
- "epic:ticket": {
5081
+ "epic:list": {
4576
5082
  "aliases": [],
4577
- "args": {
4578
- "id": {
4579
- "description": "Epic ID",
4580
- "name": "id",
4581
- "required": false
4582
- },
4583
- "tickets": {
4584
- "description": "Ticket IDs to link (space-separated)",
4585
- "name": "tickets",
4586
- "required": false
4587
- }
4588
- },
4589
- "description": "Assign tickets to an epic, or link epic to a spec (parent-child)",
5083
+ "args": {},
5084
+ "description": "List all epics",
4590
5085
  "examples": [
4591
- "<%= config.bin %> <%= command.id %> EPIC-001 TKT-001 TKT-002",
4592
- "<%= config.bin %> <%= command.id %> EPIC-001",
4593
5086
  "<%= config.bin %> <%= command.id %>",
4594
- "<%= config.bin %> <%= command.id %> EPIC-001 --unlink TKT-001",
4595
- "<%= config.bin %> <%= command.id %> EPIC-001 --spec SPEC-001"
5087
+ "<%= config.bin %> <%= command.id %> --status active"
4596
5088
  ],
4597
5089
  "flags": {
4598
5090
  "project": {
@@ -4616,74 +5108,62 @@
4616
5108
  "allowNo": false,
4617
5109
  "type": "boolean"
4618
5110
  },
4619
- "unlink": {
4620
- "char": "u",
4621
- "description": "Remove tickets from this epic instead of adding",
4622
- "name": "unlink",
4623
- "allowNo": false,
4624
- "type": "boolean"
4625
- },
4626
- "spec": {
5111
+ "status": {
4627
5112
  "char": "s",
4628
- "description": "Link epic to a spec (design document)",
4629
- "name": "spec",
4630
- "hasDynamicHelp": false,
4631
- "multiple": false,
4632
- "type": "option"
4633
- },
4634
- "unlink-spec": {
4635
- "description": "Remove spec link from epic",
4636
- "name": "unlink-spec",
4637
- "allowNo": false,
4638
- "type": "boolean"
4639
- },
4640
- "reconcile": {
4641
- "description": "How to handle spec mismatch: keep (keep ticket spec), epic (use epic spec), skip",
4642
- "name": "reconcile",
5113
+ "description": "Filter by status",
5114
+ "name": "status",
4643
5115
  "hasDynamicHelp": false,
4644
5116
  "multiple": false,
4645
5117
  "options": [
4646
- "keep",
4647
- "epic",
4648
- "skip"
5118
+ "active",
5119
+ "draft",
5120
+ "complete",
5121
+ "dropped",
5122
+ "future"
4649
5123
  ],
4650
5124
  "type": "option"
4651
- },
4652
- "inherit-spec": {
4653
- "description": "Inherit spec from epic when ticket has no spec",
4654
- "name": "inherit-spec",
4655
- "allowNo": true,
4656
- "type": "boolean"
4657
5125
  }
4658
5126
  },
4659
5127
  "hasDynamicHelp": false,
4660
5128
  "hiddenAliases": [],
4661
- "id": "epic:ticket",
5129
+ "id": "epic:list",
4662
5130
  "pluginAlias": "@proletariat/cli",
4663
5131
  "pluginName": "@proletariat/cli",
4664
5132
  "pluginType": "core",
4665
- "strict": false,
5133
+ "strict": true,
4666
5134
  "isESM": true,
4667
5135
  "relativePath": [
4668
5136
  "dist",
4669
5137
  "commands",
4670
5138
  "epic",
4671
- "ticket.js"
5139
+ "list.js"
4672
5140
  ]
4673
5141
  },
4674
- "epic:view": {
5142
+ "epic:move": {
4675
5143
  "aliases": [],
4676
5144
  "args": {
4677
5145
  "id": {
4678
5146
  "description": "Epic ID",
4679
5147
  "name": "id",
4680
5148
  "required": false
4681
- }
4682
- },
4683
- "description": "View epic details and linked tickets",
4684
- "examples": [
4685
- "<%= config.bin %> <%= command.id %> EPIC-001",
4686
- "<%= config.bin %> <%= command.id %>"
5149
+ },
5150
+ "status": {
5151
+ "description": "Target status",
5152
+ "name": "status",
5153
+ "options": [
5154
+ "active",
5155
+ "draft",
5156
+ "complete",
5157
+ "dropped",
5158
+ "future"
5159
+ ],
5160
+ "required": false
5161
+ }
5162
+ },
5163
+ "description": "Move epic between status folders",
5164
+ "examples": [
5165
+ "<%= config.bin %> <%= command.id %> EPIC-002 complete",
5166
+ "<%= config.bin %> <%= command.id %> --force"
4687
5167
  ],
4688
5168
  "flags": {
4689
5169
  "project": {
@@ -4706,11 +5186,18 @@
4706
5186
  "name": "machine",
4707
5187
  "allowNo": false,
4708
5188
  "type": "boolean"
5189
+ },
5190
+ "force": {
5191
+ "char": "f",
5192
+ "description": "Skip validation checks",
5193
+ "name": "force",
5194
+ "allowNo": false,
5195
+ "type": "boolean"
4709
5196
  }
4710
5197
  },
4711
5198
  "hasDynamicHelp": false,
4712
5199
  "hiddenAliases": [],
4713
- "id": "epic:view",
5200
+ "id": "epic:move",
4714
5201
  "pluginAlias": "@proletariat/cli",
4715
5202
  "pluginName": "@proletariat/cli",
4716
5203
  "pluginType": "core",
@@ -4720,21 +5207,22 @@
4720
5207
  "dist",
4721
5208
  "commands",
4722
5209
  "epic",
4723
- "view.js"
5210
+ "move.js"
4724
5211
  ]
4725
5212
  },
4726
- "execution:config": {
5213
+ "epic:progress": {
4727
5214
  "aliases": [],
4728
- "args": {},
4729
- "description": "View and update execution preferences",
5215
+ "args": {
5216
+ "id": {
5217
+ "description": "Epic ID",
5218
+ "name": "id",
5219
+ "required": false
5220
+ }
5221
+ },
5222
+ "description": "Show epic completion progress",
4730
5223
  "examples": [
4731
- "<%= config.bin %> execution config # Interactive menu",
4732
- "<%= config.bin %> execution config --json # Output current config as JSON",
4733
- "<%= config.bin %> execution config --list # Show all settings",
4734
- "<%= config.bin %> execution config --set defaultEnvironment host",
4735
- "<%= config.bin %> execution config --set outputMode interactive",
4736
- "<%= config.bin %> execution config --set permissionMode safe",
4737
- "<%= config.bin %> execution config --setting outputMode --json # Show output mode choices"
5224
+ "<%= config.bin %> <%= command.id %> EPIC-001",
5225
+ "<%= config.bin %> <%= command.id %> --all"
4738
5226
  ],
4739
5227
  "flags": {
4740
5228
  "project": {
@@ -4758,32 +5246,17 @@
4758
5246
  "allowNo": false,
4759
5247
  "type": "boolean"
4760
5248
  },
4761
- "set": {
4762
- "char": "s",
4763
- "description": "Set a config value (format: key value)",
4764
- "name": "set",
4765
- "hasDynamicHelp": false,
4766
- "multiple": true,
4767
- "type": "option"
4768
- },
4769
- "list": {
4770
- "char": "l",
4771
- "description": "List all configuration values",
4772
- "name": "list",
5249
+ "all": {
5250
+ "char": "a",
5251
+ "description": "Show progress for all epics",
5252
+ "name": "all",
4773
5253
  "allowNo": false,
4774
5254
  "type": "boolean"
4775
- },
4776
- "setting": {
4777
- "description": "Navigate to a specific setting prompt (for agent navigation)",
4778
- "name": "setting",
4779
- "hasDynamicHelp": false,
4780
- "multiple": false,
4781
- "type": "option"
4782
5255
  }
4783
5256
  },
4784
5257
  "hasDynamicHelp": false,
4785
5258
  "hiddenAliases": [],
4786
- "id": "execution:config",
5259
+ "id": "epic:progress",
4787
5260
  "pluginAlias": "@proletariat/cli",
4788
5261
  "pluginName": "@proletariat/cli",
4789
5262
  "pluginType": "core",
@@ -4792,19 +5265,30 @@
4792
5265
  "relativePath": [
4793
5266
  "dist",
4794
5267
  "commands",
4795
- "execution",
4796
- "config.js"
5268
+ "epic",
5269
+ "progress.js"
4797
5270
  ]
4798
5271
  },
4799
- "execution": {
5272
+ "epic:project": {
4800
5273
  "aliases": [],
4801
- "args": {},
4802
- "description": "Single execution operations (view, logs, stop)",
5274
+ "args": {
5275
+ "epicId": {
5276
+ "description": "Epic ID",
5277
+ "name": "epicId",
5278
+ "required": false
5279
+ },
5280
+ "targetProject": {
5281
+ "description": "Target project ID",
5282
+ "name": "targetProject",
5283
+ "required": false
5284
+ }
5285
+ },
5286
+ "description": "Move an epic to a different project (optionally with its tickets)",
4803
5287
  "examples": [
4804
- "<%= config.bin %> <%= command.id %>",
4805
- "<%= config.bin %> <%= command.id %> view WORK-001",
4806
- "<%= config.bin %> <%= command.id %> logs WORK-001",
4807
- "<%= config.bin %> <%= command.id %> stop WORK-001"
5288
+ "<%= config.bin %> <%= command.id %> EPIC-001 new-project",
5289
+ "<%= config.bin %> <%= command.id %> EPIC-001 new-project --with-tickets",
5290
+ "<%= config.bin %> <%= command.id %> EPIC-001",
5291
+ "<%= config.bin %> <%= command.id %>"
4808
5292
  ],
4809
5293
  "flags": {
4810
5294
  "project": {
@@ -4827,11 +5311,18 @@
4827
5311
  "name": "machine",
4828
5312
  "allowNo": false,
4829
5313
  "type": "boolean"
5314
+ },
5315
+ "with-tickets": {
5316
+ "char": "t",
5317
+ "description": "Also move all tickets assigned to this epic",
5318
+ "name": "with-tickets",
5319
+ "allowNo": false,
5320
+ "type": "boolean"
4830
5321
  }
4831
5322
  },
4832
5323
  "hasDynamicHelp": false,
4833
5324
  "hiddenAliases": [],
4834
- "id": "execution",
5325
+ "id": "epic:project",
4835
5326
  "pluginAlias": "@proletariat/cli",
4836
5327
  "pluginName": "@proletariat/cli",
4837
5328
  "pluginType": "core",
@@ -4840,27 +5331,29 @@
4840
5331
  "relativePath": [
4841
5332
  "dist",
4842
5333
  "commands",
4843
- "execution",
4844
- "index.js"
5334
+ "epic",
5335
+ "project.js"
4845
5336
  ]
4846
5337
  },
4847
- "execution:kill": {
5338
+ "epic:reorder": {
4848
5339
  "aliases": [],
4849
5340
  "args": {
4850
5341
  "id": {
4851
- "description": "Execution ID - prompts if not provided (ignored if --all or --agent used)",
5342
+ "description": "Epic ID to reorder",
4852
5343
  "name": "id",
4853
5344
  "required": false
5345
+ },
5346
+ "position": {
5347
+ "description": "New position (1-based rank)",
5348
+ "name": "position",
5349
+ "required": false
4854
5350
  }
4855
5351
  },
4856
- "description": "Stop running execution(s) (alias for \"execution stop\")",
5352
+ "description": "Reorder epic priority/rank",
4857
5353
  "examples": [
4858
- "<%= config.bin %> <%= command.id %> WORK-001",
4859
- "<%= config.bin %> <%= command.id %> WORK-001 --force",
4860
- "<%= config.bin %> <%= command.id %> # Interactive mode",
4861
- "<%= config.bin %> <%= command.id %> --all",
4862
- "<%= config.bin %> <%= command.id %> --all --force",
4863
- "<%= config.bin %> <%= command.id %> --agent altman"
5354
+ "<%= config.bin %> <%= command.id %> EPIC-001 1",
5355
+ "<%= config.bin %> <%= command.id %> EPIC-003 --first",
5356
+ "<%= config.bin %> <%= command.id %> EPIC-002 --after EPIC-001"
4864
5357
  ],
4865
5358
  "flags": {
4866
5359
  "project": {
@@ -4884,23 +5377,48 @@
4884
5377
  "allowNo": false,
4885
5378
  "type": "boolean"
4886
5379
  },
4887
- "force": {
4888
- "char": "f",
4889
- "description": "Force kill (SIGKILL instead of SIGTERM)",
4890
- "name": "force",
5380
+ "first": {
5381
+ "description": "Move to first position (highest priority)",
5382
+ "exclusive": [
5383
+ "last",
5384
+ "after",
5385
+ "before"
5386
+ ],
5387
+ "name": "first",
4891
5388
  "allowNo": false,
4892
5389
  "type": "boolean"
4893
5390
  },
4894
- "all": {
4895
- "description": "Stop all running executions",
4896
- "name": "all",
5391
+ "last": {
5392
+ "description": "Move to last position (lowest priority)",
5393
+ "exclusive": [
5394
+ "first",
5395
+ "after",
5396
+ "before"
5397
+ ],
5398
+ "name": "last",
4897
5399
  "allowNo": false,
4898
5400
  "type": "boolean"
4899
5401
  },
4900
- "agent": {
4901
- "char": "a",
4902
- "description": "Stop all executions for a specific agent",
4903
- "name": "agent",
5402
+ "after": {
5403
+ "description": "Move after this epic ID",
5404
+ "exclusive": [
5405
+ "first",
5406
+ "last",
5407
+ "before"
5408
+ ],
5409
+ "name": "after",
5410
+ "hasDynamicHelp": false,
5411
+ "multiple": false,
5412
+ "type": "option"
5413
+ },
5414
+ "before": {
5415
+ "description": "Move before this epic ID",
5416
+ "exclusive": [
5417
+ "first",
5418
+ "last",
5419
+ "after"
5420
+ ],
5421
+ "name": "before",
4904
5422
  "hasDynamicHelp": false,
4905
5423
  "multiple": false,
4906
5424
  "type": "option"
@@ -4908,27 +5426,32 @@
4908
5426
  },
4909
5427
  "hasDynamicHelp": false,
4910
5428
  "hiddenAliases": [],
4911
- "id": "execution:kill",
5429
+ "id": "epic:reorder",
4912
5430
  "pluginAlias": "@proletariat/cli",
4913
5431
  "pluginName": "@proletariat/cli",
4914
5432
  "pluginType": "core",
5433
+ "strict": true,
4915
5434
  "isESM": true,
4916
5435
  "relativePath": [
4917
5436
  "dist",
4918
5437
  "commands",
4919
- "execution",
4920
- "kill.js"
5438
+ "epic",
5439
+ "reorder.js"
4921
5440
  ]
4922
5441
  },
4923
- "execution:list": {
5442
+ "epic:show": {
4924
5443
  "aliases": [],
4925
- "args": {},
4926
- "description": "List running and recent executions",
5444
+ "args": {
5445
+ "id": {
5446
+ "description": "Epic ID",
5447
+ "name": "id",
5448
+ "required": false
5449
+ }
5450
+ },
5451
+ "description": "View epic details and linked tickets (alias for epic view)",
4927
5452
  "examples": [
4928
- "<%= config.bin %> <%= command.id %>",
4929
- "<%= config.bin %> <%= command.id %> --status running",
4930
- "<%= config.bin %> <%= command.id %> --agent alice",
4931
- "<%= config.bin %> <%= command.id %> --limit 50"
5453
+ "<%= config.bin %> <%= command.id %> EPIC-001",
5454
+ "<%= config.bin %> <%= command.id %>"
4932
5455
  ],
4933
5456
  "flags": {
4934
5457
  "project": {
@@ -4951,70 +5474,43 @@
4951
5474
  "name": "machine",
4952
5475
  "allowNo": false,
4953
5476
  "type": "boolean"
4954
- },
4955
- "status": {
4956
- "char": "s",
4957
- "description": "Filter by status",
4958
- "name": "status",
4959
- "hasDynamicHelp": false,
4960
- "multiple": false,
4961
- "options": [
4962
- "starting",
4963
- "running",
4964
- "completed",
4965
- "failed",
4966
- "stopped"
4967
- ],
4968
- "type": "option"
4969
- },
4970
- "agent": {
4971
- "char": "a",
4972
- "description": "Filter by agent name",
4973
- "name": "agent",
4974
- "hasDynamicHelp": false,
4975
- "multiple": false,
4976
- "type": "option"
4977
- },
4978
- "limit": {
4979
- "char": "l",
4980
- "description": "Number of results",
4981
- "name": "limit",
4982
- "default": 20,
4983
- "hasDynamicHelp": false,
4984
- "multiple": false,
4985
- "type": "option"
4986
5477
  }
4987
5478
  },
4988
5479
  "hasDynamicHelp": false,
5480
+ "hidden": true,
4989
5481
  "hiddenAliases": [],
4990
- "id": "execution:list",
5482
+ "id": "epic:show",
4991
5483
  "pluginAlias": "@proletariat/cli",
4992
5484
  "pluginName": "@proletariat/cli",
4993
5485
  "pluginType": "core",
4994
- "strict": true,
4995
5486
  "isESM": true,
4996
5487
  "relativePath": [
4997
5488
  "dist",
4998
5489
  "commands",
4999
- "execution",
5000
- "list.js"
5490
+ "epic",
5491
+ "show.js"
5001
5492
  ]
5002
5493
  },
5003
- "execution:logs": {
5494
+ "epic:spec": {
5004
5495
  "aliases": [],
5005
5496
  "args": {
5006
- "id": {
5007
- "description": "Execution ID - prompts if not provided",
5008
- "name": "id",
5009
- "required": false
5497
+ "epicId": {
5498
+ "description": "Epic ID",
5499
+ "name": "epicId",
5500
+ "required": false
5501
+ },
5502
+ "specId": {
5503
+ "description": "Spec ID to link",
5504
+ "name": "specId",
5505
+ "required": false
5010
5506
  }
5011
5507
  },
5012
- "description": "View execution logs",
5508
+ "description": "Assign a spec to an epic (design document)",
5013
5509
  "examples": [
5014
- "<%= config.bin %> <%= command.id %> WORK-001",
5015
- "<%= config.bin %> <%= command.id %> WORK-001 --follow",
5016
- "<%= config.bin %> <%= command.id %> WORK-001 --tail 50",
5017
- "<%= config.bin %> <%= command.id %> # Interactive mode"
5510
+ "<%= config.bin %> <%= command.id %> EPIC-001 SPEC-001",
5511
+ "<%= config.bin %> <%= command.id %> EPIC-001",
5512
+ "<%= config.bin %> <%= command.id %>",
5513
+ "<%= config.bin %> <%= command.id %> EPIC-001 --unlink"
5018
5514
  ],
5019
5515
  "flags": {
5020
5516
  "project": {
@@ -5038,25 +5534,23 @@
5038
5534
  "allowNo": false,
5039
5535
  "type": "boolean"
5040
5536
  },
5041
- "follow": {
5042
- "char": "f",
5043
- "description": "Stream logs in real-time",
5044
- "name": "follow",
5537
+ "unlink": {
5538
+ "char": "u",
5539
+ "description": "Remove spec from epic instead of adding",
5540
+ "name": "unlink",
5045
5541
  "allowNo": false,
5046
5542
  "type": "boolean"
5047
5543
  },
5048
- "tail": {
5049
- "char": "n",
5050
- "description": "Show last n lines",
5051
- "name": "tail",
5052
- "hasDynamicHelp": false,
5053
- "multiple": false,
5054
- "type": "option"
5544
+ "align-tickets": {
5545
+ "description": "Also update all tickets in the epic to use the same spec",
5546
+ "name": "align-tickets",
5547
+ "allowNo": false,
5548
+ "type": "boolean"
5055
5549
  }
5056
5550
  },
5057
5551
  "hasDynamicHelp": false,
5058
5552
  "hiddenAliases": [],
5059
- "id": "execution:logs",
5553
+ "id": "epic:spec",
5060
5554
  "pluginAlias": "@proletariat/cli",
5061
5555
  "pluginName": "@proletariat/cli",
5062
5556
  "pluginType": "core",
@@ -5065,27 +5559,31 @@
5065
5559
  "relativePath": [
5066
5560
  "dist",
5067
5561
  "commands",
5068
- "execution",
5069
- "logs.js"
5562
+ "epic",
5563
+ "spec.js"
5070
5564
  ]
5071
5565
  },
5072
- "execution:stop": {
5566
+ "epic:ticket": {
5073
5567
  "aliases": [],
5074
5568
  "args": {
5075
5569
  "id": {
5076
- "description": "Execution ID - prompts if not provided (ignored if --all or --agent used)",
5570
+ "description": "Epic ID",
5077
5571
  "name": "id",
5078
5572
  "required": false
5573
+ },
5574
+ "tickets": {
5575
+ "description": "Ticket IDs to link (space-separated)",
5576
+ "name": "tickets",
5577
+ "required": false
5079
5578
  }
5080
5579
  },
5081
- "description": "Stop running execution(s)",
5580
+ "description": "Assign tickets to an epic, or link epic to a spec (parent-child)",
5082
5581
  "examples": [
5083
- "<%= config.bin %> <%= command.id %> WORK-001",
5084
- "<%= config.bin %> <%= command.id %> WORK-001 --force",
5085
- "<%= config.bin %> <%= command.id %> # Interactive mode",
5086
- "<%= config.bin %> <%= command.id %> --all",
5087
- "<%= config.bin %> <%= command.id %> --all --force",
5088
- "<%= config.bin %> <%= command.id %> --agent altman"
5582
+ "<%= config.bin %> <%= command.id %> EPIC-001 TKT-001 TKT-002",
5583
+ "<%= config.bin %> <%= command.id %> EPIC-001",
5584
+ "<%= config.bin %> <%= command.id %>",
5585
+ "<%= config.bin %> <%= command.id %> EPIC-001 --unlink TKT-001",
5586
+ "<%= config.bin %> <%= command.id %> EPIC-001 --spec SPEC-001"
5089
5587
  ],
5090
5588
  "flags": {
5091
5589
  "project": {
@@ -5109,56 +5607,74 @@
5109
5607
  "allowNo": false,
5110
5608
  "type": "boolean"
5111
5609
  },
5112
- "force": {
5113
- "char": "f",
5114
- "description": "Force kill (SIGKILL instead of SIGTERM)",
5115
- "name": "force",
5610
+ "unlink": {
5611
+ "char": "u",
5612
+ "description": "Remove tickets from this epic instead of adding",
5613
+ "name": "unlink",
5116
5614
  "allowNo": false,
5117
5615
  "type": "boolean"
5118
5616
  },
5119
- "all": {
5120
- "description": "Stop all running executions",
5121
- "name": "all",
5617
+ "spec": {
5618
+ "char": "s",
5619
+ "description": "Link epic to a spec (design document)",
5620
+ "name": "spec",
5621
+ "hasDynamicHelp": false,
5622
+ "multiple": false,
5623
+ "type": "option"
5624
+ },
5625
+ "unlink-spec": {
5626
+ "description": "Remove spec link from epic",
5627
+ "name": "unlink-spec",
5122
5628
  "allowNo": false,
5123
5629
  "type": "boolean"
5124
5630
  },
5125
- "agent": {
5126
- "char": "a",
5127
- "description": "Stop all executions for a specific agent",
5128
- "name": "agent",
5631
+ "reconcile": {
5632
+ "description": "How to handle spec mismatch: keep (keep ticket spec), epic (use epic spec), skip",
5633
+ "name": "reconcile",
5129
5634
  "hasDynamicHelp": false,
5130
5635
  "multiple": false,
5636
+ "options": [
5637
+ "keep",
5638
+ "epic",
5639
+ "skip"
5640
+ ],
5131
5641
  "type": "option"
5642
+ },
5643
+ "inherit-spec": {
5644
+ "description": "Inherit spec from epic when ticket has no spec",
5645
+ "name": "inherit-spec",
5646
+ "allowNo": true,
5647
+ "type": "boolean"
5132
5648
  }
5133
5649
  },
5134
5650
  "hasDynamicHelp": false,
5135
5651
  "hiddenAliases": [],
5136
- "id": "execution:stop",
5652
+ "id": "epic:ticket",
5137
5653
  "pluginAlias": "@proletariat/cli",
5138
5654
  "pluginName": "@proletariat/cli",
5139
5655
  "pluginType": "core",
5140
- "strict": true,
5656
+ "strict": false,
5141
5657
  "isESM": true,
5142
5658
  "relativePath": [
5143
5659
  "dist",
5144
5660
  "commands",
5145
- "execution",
5146
- "stop.js"
5661
+ "epic",
5662
+ "ticket.js"
5147
5663
  ]
5148
5664
  },
5149
- "execution:view": {
5665
+ "epic:view": {
5150
5666
  "aliases": [],
5151
5667
  "args": {
5152
5668
  "id": {
5153
- "description": "Execution ID - prompts if not provided",
5669
+ "description": "Epic ID",
5154
5670
  "name": "id",
5155
5671
  "required": false
5156
5672
  }
5157
5673
  },
5158
- "description": "View details of a specific execution",
5674
+ "description": "View epic details and linked tickets",
5159
5675
  "examples": [
5160
- "<%= config.bin %> <%= command.id %> WORK-001",
5161
- "<%= config.bin %> <%= command.id %> # Interactive mode"
5676
+ "<%= config.bin %> <%= command.id %> EPIC-001",
5677
+ "<%= config.bin %> <%= command.id %>"
5162
5678
  ],
5163
5679
  "flags": {
5164
5680
  "project": {
@@ -5185,7 +5701,7 @@
5185
5701
  },
5186
5702
  "hasDynamicHelp": false,
5187
5703
  "hiddenAliases": [],
5188
- "id": "execution:view",
5704
+ "id": "epic:view",
5189
5705
  "pluginAlias": "@proletariat/cli",
5190
5706
  "pluginName": "@proletariat/cli",
5191
5707
  "pluginType": "core",
@@ -5194,17 +5710,19 @@
5194
5710
  "relativePath": [
5195
5711
  "dist",
5196
5712
  "commands",
5197
- "execution",
5713
+ "epic",
5198
5714
  "view.js"
5199
5715
  ]
5200
5716
  },
5201
- "feedback": {
5717
+ "gh": {
5202
5718
  "aliases": [],
5203
5719
  "args": {},
5204
- "description": "Interactive menu for feedback and issue operations",
5720
+ "description": "GitHub CLI setup and status for PR workflow",
5205
5721
  "examples": [
5206
5722
  "<%= config.bin %> <%= command.id %>",
5207
- "<%= config.bin %> <%= command.id %> --action submit"
5723
+ "<%= config.bin %> <%= command.id %> status",
5724
+ "<%= config.bin %> <%= command.id %> login",
5725
+ "<%= config.bin %> <%= command.id %> token"
5208
5726
  ],
5209
5727
  "flags": {
5210
5728
  "json": {
@@ -5219,24 +5737,11 @@
5219
5737
  "name": "machine",
5220
5738
  "allowNo": false,
5221
5739
  "type": "boolean"
5222
- },
5223
- "action": {
5224
- "char": "a",
5225
- "description": "Action to perform (submit, list, view)",
5226
- "name": "action",
5227
- "hasDynamicHelp": false,
5228
- "multiple": false,
5229
- "options": [
5230
- "submit",
5231
- "list",
5232
- "view"
5233
- ],
5234
- "type": "option"
5235
5740
  }
5236
5741
  },
5237
5742
  "hasDynamicHelp": false,
5238
5743
  "hiddenAliases": [],
5239
- "id": "feedback",
5744
+ "id": "gh",
5240
5745
  "pluginAlias": "@proletariat/cli",
5241
5746
  "pluginName": "@proletariat/cli",
5242
5747
  "pluginType": "core",
@@ -5246,19 +5751,16 @@
5246
5751
  "relativePath": [
5247
5752
  "dist",
5248
5753
  "commands",
5249
- "feedback",
5754
+ "gh",
5250
5755
  "index.js"
5251
5756
  ]
5252
5757
  },
5253
- "feedback:list": {
5758
+ "gh:login": {
5254
5759
  "aliases": [],
5255
5760
  "args": {},
5256
- "description": "List recent feedback issues from the repository",
5761
+ "description": "Login to GitHub CLI for PR workflow",
5257
5762
  "examples": [
5258
- "<%= config.bin %> <%= command.id %>",
5259
- "<%= config.bin %> <%= command.id %> --category bug",
5260
- "<%= config.bin %> <%= command.id %> --state closed --limit 10",
5261
- "<%= config.bin %> <%= command.id %> --json"
5763
+ "<%= config.bin %> <%= command.id %>"
5262
5764
  ],
5263
5765
  "flags": {
5264
5766
  "json": {
@@ -5273,47 +5775,11 @@
5273
5775
  "name": "machine",
5274
5776
  "allowNo": false,
5275
5777
  "type": "boolean"
5276
- },
5277
- "category": {
5278
- "char": "c",
5279
- "description": "Filter by category (bug, feature, general)",
5280
- "name": "category",
5281
- "hasDynamicHelp": false,
5282
- "multiple": false,
5283
- "options": [
5284
- "bug",
5285
- "feature",
5286
- "general"
5287
- ],
5288
- "type": "option"
5289
- },
5290
- "state": {
5291
- "char": "s",
5292
- "description": "Filter by state",
5293
- "name": "state",
5294
- "default": "open",
5295
- "hasDynamicHelp": false,
5296
- "multiple": false,
5297
- "options": [
5298
- "open",
5299
- "closed",
5300
- "all"
5301
- ],
5302
- "type": "option"
5303
- },
5304
- "limit": {
5305
- "char": "l",
5306
- "description": "Maximum number of issues to show",
5307
- "name": "limit",
5308
- "default": 20,
5309
- "hasDynamicHelp": false,
5310
- "multiple": false,
5311
- "type": "option"
5312
5778
  }
5313
5779
  },
5314
5780
  "hasDynamicHelp": false,
5315
5781
  "hiddenAliases": [],
5316
- "id": "feedback:list",
5782
+ "id": "gh:login",
5317
5783
  "pluginAlias": "@proletariat/cli",
5318
5784
  "pluginName": "@proletariat/cli",
5319
5785
  "pluginType": "core",
@@ -5323,18 +5789,16 @@
5323
5789
  "relativePath": [
5324
5790
  "dist",
5325
5791
  "commands",
5326
- "feedback",
5327
- "list.js"
5792
+ "gh",
5793
+ "login.js"
5328
5794
  ]
5329
5795
  },
5330
- "feedback:submit": {
5796
+ "gh:status": {
5331
5797
  "aliases": [],
5332
5798
  "args": {},
5333
- "description": "Submit feedback, bug reports, or feature requests to GitHub Issues",
5799
+ "description": "Check GitHub CLI status for PR workflow",
5334
5800
  "examples": [
5335
- "<%= config.bin %> <%= command.id %>",
5336
- "<%= config.bin %> <%= command.id %> --title \"Bug in CLI\" --body \"Description here\" --category bug",
5337
- "<%= config.bin %> <%= command.id %> --json"
5801
+ "<%= config.bin %> <%= command.id %>"
5338
5802
  ],
5339
5803
  "flags": {
5340
5804
  "json": {
@@ -5349,65 +5813,30 @@
5349
5813
  "name": "machine",
5350
5814
  "allowNo": false,
5351
5815
  "type": "boolean"
5352
- },
5353
- "title": {
5354
- "char": "t",
5355
- "description": "Issue title (one-liner) [required for non-interactive]",
5356
- "name": "title",
5357
- "hasDynamicHelp": false,
5358
- "multiple": false,
5359
- "type": "option"
5360
- },
5361
- "body": {
5362
- "char": "b",
5363
- "description": "Issue description [required for non-interactive]",
5364
- "name": "body",
5365
- "hasDynamicHelp": false,
5366
- "multiple": false,
5367
- "type": "option"
5368
- },
5369
- "category": {
5370
- "char": "c",
5371
- "description": "Feedback category",
5372
- "name": "category",
5373
- "hasDynamicHelp": false,
5374
- "multiple": false,
5375
- "options": [
5376
- "bug",
5377
- "feature",
5378
- "general"
5379
- ],
5380
- "type": "option"
5381
5816
  }
5382
5817
  },
5383
5818
  "hasDynamicHelp": false,
5384
5819
  "hiddenAliases": [],
5385
- "id": "feedback:submit",
5820
+ "id": "gh:status",
5386
5821
  "pluginAlias": "@proletariat/cli",
5387
5822
  "pluginName": "@proletariat/cli",
5388
5823
  "pluginType": "core",
5389
5824
  "strict": true,
5825
+ "enableJsonFlag": false,
5390
5826
  "isESM": true,
5391
5827
  "relativePath": [
5392
5828
  "dist",
5393
5829
  "commands",
5394
- "feedback",
5395
- "submit.js"
5830
+ "gh",
5831
+ "status.js"
5396
5832
  ]
5397
5833
  },
5398
- "feedback:view": {
5834
+ "gh:token": {
5399
5835
  "aliases": [],
5400
- "args": {
5401
- "number": {
5402
- "description": "Issue number to view",
5403
- "name": "number",
5404
- "required": true
5405
- }
5406
- },
5407
- "description": "View details of a specific feedback issue",
5836
+ "args": {},
5837
+ "description": "Show GH_TOKEN setup for devcontainer PR creation",
5408
5838
  "examples": [
5409
- "<%= config.bin %> <%= command.id %> 123",
5410
- "<%= config.bin %> <%= command.id %> 123 --json"
5839
+ "<%= config.bin %> <%= command.id %>"
5411
5840
  ],
5412
5841
  "flags": {
5413
5842
  "json": {
@@ -5426,7 +5855,7 @@
5426
5855
  },
5427
5856
  "hasDynamicHelp": false,
5428
5857
  "hiddenAliases": [],
5429
- "id": "feedback:view",
5858
+ "id": "gh:token",
5430
5859
  "pluginAlias": "@proletariat/cli",
5431
5860
  "pluginName": "@proletariat/cli",
5432
5861
  "pluginType": "core",
@@ -5436,19 +5865,17 @@
5436
5865
  "relativePath": [
5437
5866
  "dist",
5438
5867
  "commands",
5439
- "feedback",
5440
- "view.js"
5868
+ "gh",
5869
+ "token.js"
5441
5870
  ]
5442
5871
  },
5443
- "gh": {
5872
+ "feedback": {
5444
5873
  "aliases": [],
5445
5874
  "args": {},
5446
- "description": "GitHub CLI setup and status for PR workflow",
5875
+ "description": "Interactive menu for feedback and issue operations",
5447
5876
  "examples": [
5448
5877
  "<%= config.bin %> <%= command.id %>",
5449
- "<%= config.bin %> <%= command.id %> status",
5450
- "<%= config.bin %> <%= command.id %> login",
5451
- "<%= config.bin %> <%= command.id %> token"
5878
+ "<%= config.bin %> <%= command.id %> --action submit"
5452
5879
  ],
5453
5880
  "flags": {
5454
5881
  "json": {
@@ -5463,11 +5890,24 @@
5463
5890
  "name": "machine",
5464
5891
  "allowNo": false,
5465
5892
  "type": "boolean"
5893
+ },
5894
+ "action": {
5895
+ "char": "a",
5896
+ "description": "Action to perform (submit, list, view)",
5897
+ "name": "action",
5898
+ "hasDynamicHelp": false,
5899
+ "multiple": false,
5900
+ "options": [
5901
+ "submit",
5902
+ "list",
5903
+ "view"
5904
+ ],
5905
+ "type": "option"
5466
5906
  }
5467
5907
  },
5468
5908
  "hasDynamicHelp": false,
5469
5909
  "hiddenAliases": [],
5470
- "id": "gh",
5910
+ "id": "feedback",
5471
5911
  "pluginAlias": "@proletariat/cli",
5472
5912
  "pluginName": "@proletariat/cli",
5473
5913
  "pluginType": "core",
@@ -5477,16 +5917,19 @@
5477
5917
  "relativePath": [
5478
5918
  "dist",
5479
5919
  "commands",
5480
- "gh",
5920
+ "feedback",
5481
5921
  "index.js"
5482
5922
  ]
5483
5923
  },
5484
- "gh:login": {
5924
+ "feedback:list": {
5485
5925
  "aliases": [],
5486
5926
  "args": {},
5487
- "description": "Login to GitHub CLI for PR workflow",
5927
+ "description": "List recent feedback issues from the repository",
5488
5928
  "examples": [
5489
- "<%= config.bin %> <%= command.id %>"
5929
+ "<%= config.bin %> <%= command.id %>",
5930
+ "<%= config.bin %> <%= command.id %> --category bug",
5931
+ "<%= config.bin %> <%= command.id %> --state closed --limit 10",
5932
+ "<%= config.bin %> <%= command.id %> --json"
5490
5933
  ],
5491
5934
  "flags": {
5492
5935
  "json": {
@@ -5501,11 +5944,47 @@
5501
5944
  "name": "machine",
5502
5945
  "allowNo": false,
5503
5946
  "type": "boolean"
5947
+ },
5948
+ "category": {
5949
+ "char": "c",
5950
+ "description": "Filter by category (bug, feature, general)",
5951
+ "name": "category",
5952
+ "hasDynamicHelp": false,
5953
+ "multiple": false,
5954
+ "options": [
5955
+ "bug",
5956
+ "feature",
5957
+ "general"
5958
+ ],
5959
+ "type": "option"
5960
+ },
5961
+ "state": {
5962
+ "char": "s",
5963
+ "description": "Filter by state",
5964
+ "name": "state",
5965
+ "default": "open",
5966
+ "hasDynamicHelp": false,
5967
+ "multiple": false,
5968
+ "options": [
5969
+ "open",
5970
+ "closed",
5971
+ "all"
5972
+ ],
5973
+ "type": "option"
5974
+ },
5975
+ "limit": {
5976
+ "char": "l",
5977
+ "description": "Maximum number of issues to show",
5978
+ "name": "limit",
5979
+ "default": 20,
5980
+ "hasDynamicHelp": false,
5981
+ "multiple": false,
5982
+ "type": "option"
5504
5983
  }
5505
5984
  },
5506
5985
  "hasDynamicHelp": false,
5507
5986
  "hiddenAliases": [],
5508
- "id": "gh:login",
5987
+ "id": "feedback:list",
5509
5988
  "pluginAlias": "@proletariat/cli",
5510
5989
  "pluginName": "@proletariat/cli",
5511
5990
  "pluginType": "core",
@@ -5515,16 +5994,18 @@
5515
5994
  "relativePath": [
5516
5995
  "dist",
5517
5996
  "commands",
5518
- "gh",
5519
- "login.js"
5997
+ "feedback",
5998
+ "list.js"
5520
5999
  ]
5521
6000
  },
5522
- "gh:status": {
6001
+ "feedback:submit": {
5523
6002
  "aliases": [],
5524
6003
  "args": {},
5525
- "description": "Check GitHub CLI status for PR workflow",
6004
+ "description": "Submit feedback, bug reports, or feature requests to GitHub Issues",
5526
6005
  "examples": [
5527
- "<%= config.bin %> <%= command.id %>"
6006
+ "<%= config.bin %> <%= command.id %>",
6007
+ "<%= config.bin %> <%= command.id %> --title \"Bug in CLI\" --body \"Description here\" --category bug",
6008
+ "<%= config.bin %> <%= command.id %> --json"
5528
6009
  ],
5529
6010
  "flags": {
5530
6011
  "json": {
@@ -5539,30 +6020,65 @@
5539
6020
  "name": "machine",
5540
6021
  "allowNo": false,
5541
6022
  "type": "boolean"
6023
+ },
6024
+ "title": {
6025
+ "char": "t",
6026
+ "description": "Issue title (one-liner) [required for non-interactive]",
6027
+ "name": "title",
6028
+ "hasDynamicHelp": false,
6029
+ "multiple": false,
6030
+ "type": "option"
6031
+ },
6032
+ "body": {
6033
+ "char": "b",
6034
+ "description": "Issue description [required for non-interactive]",
6035
+ "name": "body",
6036
+ "hasDynamicHelp": false,
6037
+ "multiple": false,
6038
+ "type": "option"
6039
+ },
6040
+ "category": {
6041
+ "char": "c",
6042
+ "description": "Feedback category",
6043
+ "name": "category",
6044
+ "hasDynamicHelp": false,
6045
+ "multiple": false,
6046
+ "options": [
6047
+ "bug",
6048
+ "feature",
6049
+ "general"
6050
+ ],
6051
+ "type": "option"
5542
6052
  }
5543
6053
  },
5544
6054
  "hasDynamicHelp": false,
5545
6055
  "hiddenAliases": [],
5546
- "id": "gh:status",
6056
+ "id": "feedback:submit",
5547
6057
  "pluginAlias": "@proletariat/cli",
5548
6058
  "pluginName": "@proletariat/cli",
5549
6059
  "pluginType": "core",
5550
6060
  "strict": true,
5551
- "enableJsonFlag": false,
5552
6061
  "isESM": true,
5553
6062
  "relativePath": [
5554
6063
  "dist",
5555
6064
  "commands",
5556
- "gh",
5557
- "status.js"
6065
+ "feedback",
6066
+ "submit.js"
5558
6067
  ]
5559
6068
  },
5560
- "gh:token": {
6069
+ "feedback:view": {
5561
6070
  "aliases": [],
5562
- "args": {},
5563
- "description": "Show GH_TOKEN setup for devcontainer PR creation",
6071
+ "args": {
6072
+ "number": {
6073
+ "description": "Issue number to view",
6074
+ "name": "number",
6075
+ "required": true
6076
+ }
6077
+ },
6078
+ "description": "View details of a specific feedback issue",
5564
6079
  "examples": [
5565
- "<%= config.bin %> <%= command.id %>"
6080
+ "<%= config.bin %> <%= command.id %> 123",
6081
+ "<%= config.bin %> <%= command.id %> 123 --json"
5566
6082
  ],
5567
6083
  "flags": {
5568
6084
  "json": {
@@ -5581,7 +6097,7 @@
5581
6097
  },
5582
6098
  "hasDynamicHelp": false,
5583
6099
  "hiddenAliases": [],
5584
- "id": "gh:token",
6100
+ "id": "feedback:view",
5585
6101
  "pluginAlias": "@proletariat/cli",
5586
6102
  "pluginName": "@proletariat/cli",
5587
6103
  "pluginType": "core",
@@ -5591,8 +6107,8 @@
5591
6107
  "relativePath": [
5592
6108
  "dist",
5593
6109
  "commands",
5594
- "gh",
5595
- "token.js"
6110
+ "feedback",
6111
+ "view.js"
5596
6112
  ]
5597
6113
  },
5598
6114
  "label:create": {
@@ -5828,26 +6344,15 @@
5828
6344
  "list.js"
5829
6345
  ]
5830
6346
  },
5831
- "link:create": {
6347
+ "linear:auth": {
5832
6348
  "aliases": [],
5833
- "args": {
5834
- "from": {
5835
- "description": "Source entity ID (TKT-xxx, SPEC-xxx, or EPIC-xxx)",
5836
- "name": "from",
5837
- "required": true
5838
- },
5839
- "to": {
5840
- "description": "Target entity ID",
5841
- "name": "to",
5842
- "required": true
5843
- }
5844
- },
5845
- "description": "Create a link (dependency) between two entities",
6349
+ "args": {},
6350
+ "description": "Authenticate with Linear (alias for \"prlt linear connect\")",
5846
6351
  "examples": [
5847
- "<%= config.bin %> <%= command.id %> TKT-001 TKT-002 --type blocks # TKT-001 is blocked by TKT-002",
5848
- "<%= config.bin %> <%= command.id %> TKT-001 TKT-002 --type relates # TKT-001 relates to TKT-002",
5849
- "<%= config.bin %> <%= command.id %> SPEC-001 SPEC-002 --type depends # SPEC-001 depends on SPEC-002",
5850
- "<%= config.bin %> <%= command.id %> EPIC-001 EPIC-002 --type blocks # EPIC-001 is blocked by EPIC-002"
6352
+ "<%= config.bin %> linear connect",
6353
+ "<%= config.bin %> linear connect --check",
6354
+ "<%= config.bin %> linear connect --force",
6355
+ "LINEAR_API_KEY=lin_api_... <%= config.bin %> linear connect"
5851
6356
  ],
5852
6357
  "flags": {
5853
6358
  "project": {
@@ -5871,25 +6376,29 @@
5871
6376
  "allowNo": false,
5872
6377
  "type": "boolean"
5873
6378
  },
5874
- "type": {
5875
- "char": "t",
5876
- "description": "Link type",
5877
- "name": "type",
5878
- "required": true,
5879
- "hasDynamicHelp": false,
5880
- "multiple": false,
5881
- "options": [
5882
- "blocks",
5883
- "relates",
5884
- "duplicates",
5885
- "depends"
5886
- ],
5887
- "type": "option"
6379
+ "check": {
6380
+ "description": "Only check if Linear credentials exist (do not prompt)",
6381
+ "name": "check",
6382
+ "allowNo": false,
6383
+ "type": "boolean"
6384
+ },
6385
+ "force": {
6386
+ "description": "Force re-authentication even if credentials exist",
6387
+ "name": "force",
6388
+ "allowNo": false,
6389
+ "type": "boolean"
6390
+ },
6391
+ "disconnect": {
6392
+ "description": "Remove stored Linear credentials",
6393
+ "name": "disconnect",
6394
+ "allowNo": false,
6395
+ "type": "boolean"
5888
6396
  }
5889
6397
  },
5890
6398
  "hasDynamicHelp": false,
6399
+ "hidden": true,
5891
6400
  "hiddenAliases": [],
5892
- "id": "link:create",
6401
+ "id": "linear:auth",
5893
6402
  "pluginAlias": "@proletariat/cli",
5894
6403
  "pluginName": "@proletariat/cli",
5895
6404
  "pluginType": "core",
@@ -5898,29 +6407,22 @@
5898
6407
  "relativePath": [
5899
6408
  "dist",
5900
6409
  "commands",
5901
- "link",
5902
- "create.js"
6410
+ "linear",
6411
+ "auth.js"
5903
6412
  ]
5904
6413
  },
5905
- "link": {
6414
+ "linear:connect": {
5906
6415
  "aliases": [],
5907
- "args": {
5908
- "action": {
5909
- "description": "Action to perform",
5910
- "name": "action",
5911
- "options": [
5912
- "create",
5913
- "list",
5914
- "remove"
5915
- ],
5916
- "required": false
5917
- }
5918
- },
5919
- "description": "Manage links (dependencies) between entities",
6416
+ "args": {},
6417
+ "description": "Connect to Linear workspace and configure authentication",
5920
6418
  "examples": [
5921
- "<%= config.bin %> <%= command.id %> create TKT-001 TKT-002 --type blocks",
5922
- "<%= config.bin %> <%= command.id %> list TKT-001",
5923
- "<%= config.bin %> <%= command.id %> remove TKT-001 TKT-002"
6419
+ "<%= config.bin %> <%= command.id %>",
6420
+ "<%= config.bin %> <%= command.id %> --check",
6421
+ "<%= config.bin %> <%= command.id %> --force",
6422
+ "<%= config.bin %> <%= command.id %> --disconnect",
6423
+ "<%= config.bin %> <%= command.id %> --team ENG",
6424
+ "LINEAR_API_KEY=lin_api_... <%= config.bin %> <%= command.id %>",
6425
+ "<%= config.bin %> <%= command.id %> --json"
5924
6426
  ],
5925
6427
  "flags": {
5926
6428
  "project": {
@@ -5943,38 +6445,59 @@
5943
6445
  "name": "machine",
5944
6446
  "allowNo": false,
5945
6447
  "type": "boolean"
5946
- }
5947
- },
5948
- "hasDynamicHelp": false,
5949
- "hiddenAliases": [],
5950
- "id": "link",
5951
- "pluginAlias": "@proletariat/cli",
5952
- "pluginName": "@proletariat/cli",
5953
- "pluginType": "core",
5954
- "strict": true,
5955
- "isESM": true,
5956
- "relativePath": [
6448
+ },
6449
+ "check": {
6450
+ "description": "Only check if Linear credentials are valid (do not prompt)",
6451
+ "name": "check",
6452
+ "allowNo": false,
6453
+ "type": "boolean"
6454
+ },
6455
+ "force": {
6456
+ "description": "Force re-authentication even if credentials exist",
6457
+ "name": "force",
6458
+ "allowNo": false,
6459
+ "type": "boolean"
6460
+ },
6461
+ "disconnect": {
6462
+ "description": "Remove stored Linear credentials and configuration",
6463
+ "name": "disconnect",
6464
+ "allowNo": false,
6465
+ "type": "boolean"
6466
+ },
6467
+ "team": {
6468
+ "description": "Default team key (e.g., \"ENG\") for non-interactive setup",
6469
+ "name": "team",
6470
+ "hasDynamicHelp": false,
6471
+ "multiple": false,
6472
+ "type": "option"
6473
+ }
6474
+ },
6475
+ "hasDynamicHelp": false,
6476
+ "hiddenAliases": [],
6477
+ "id": "linear:connect",
6478
+ "pluginAlias": "@proletariat/cli",
6479
+ "pluginName": "@proletariat/cli",
6480
+ "pluginType": "core",
6481
+ "strict": true,
6482
+ "isESM": true,
6483
+ "relativePath": [
5957
6484
  "dist",
5958
6485
  "commands",
5959
- "link",
5960
- "index.js"
6486
+ "linear",
6487
+ "connect.js"
5961
6488
  ]
5962
6489
  },
5963
- "link:list": {
6490
+ "linear:import": {
5964
6491
  "aliases": [],
5965
- "args": {
5966
- "id": {
5967
- "description": "Entity ID (TKT-xxx, SPEC-xxx, or EPIC-xxx)",
5968
- "name": "id",
5969
- "required": true
5970
- }
5971
- },
5972
- "description": "List all links (dependencies) for an entity",
6492
+ "args": {},
6493
+ "description": "Import Linear issues into PMO as tickets",
5973
6494
  "examples": [
5974
- "<%= config.bin %> <%= command.id %> TKT-001 # List ticket links",
5975
- "<%= config.bin %> <%= command.id %> SPEC-001 # List spec links",
5976
- "<%= config.bin %> <%= command.id %> EPIC-001 # List epic links",
5977
- "<%= config.bin %> <%= command.id %> TKT-001 --all # Include reverse links"
6495
+ "<%= config.bin %> <%= command.id %> # Interactive: select team and issues",
6496
+ "<%= config.bin %> <%= command.id %> ENG-123 ENG-124 # Import specific issues by identifier",
6497
+ "<%= config.bin %> <%= command.id %> --team ENG # Import from a specific team",
6498
+ "<%= config.bin %> <%= command.id %> --team ENG --state \"In Progress\" # Filter by state",
6499
+ "<%= config.bin %> <%= command.id %> --team ENG --label bug # Filter by label",
6500
+ "<%= config.bin %> <%= command.id %> --limit 20 --json # Import up to 20 issues, JSON output"
5978
6501
  ],
5979
6502
  "flags": {
5980
6503
  "project": {
@@ -5998,48 +6521,102 @@
5998
6521
  "allowNo": false,
5999
6522
  "type": "boolean"
6000
6523
  },
6524
+ "team": {
6525
+ "char": "t",
6526
+ "description": "Linear team key (e.g., ENG)",
6527
+ "name": "team",
6528
+ "hasDynamicHelp": false,
6529
+ "multiple": false,
6530
+ "type": "option"
6531
+ },
6532
+ "state": {
6533
+ "description": "Filter by Linear state name (e.g., \"In Progress\", \"Backlog\")",
6534
+ "name": "state",
6535
+ "hasDynamicHelp": false,
6536
+ "multiple": false,
6537
+ "type": "option"
6538
+ },
6539
+ "state-type": {
6540
+ "description": "Filter by Linear state type",
6541
+ "name": "state-type",
6542
+ "hasDynamicHelp": false,
6543
+ "multiple": false,
6544
+ "options": [
6545
+ "triage",
6546
+ "backlog",
6547
+ "unstarted",
6548
+ "started",
6549
+ "completed",
6550
+ "canceled"
6551
+ ],
6552
+ "type": "option"
6553
+ },
6554
+ "label": {
6555
+ "description": "Filter by Linear label name",
6556
+ "name": "label",
6557
+ "hasDynamicHelp": false,
6558
+ "multiple": false,
6559
+ "type": "option"
6560
+ },
6561
+ "assignee": {
6562
+ "description": "Filter by assignee name or \"me\"",
6563
+ "name": "assignee",
6564
+ "hasDynamicHelp": false,
6565
+ "multiple": false,
6566
+ "type": "option"
6567
+ },
6568
+ "cycle": {
6569
+ "description": "Filter by cycle ID",
6570
+ "name": "cycle",
6571
+ "hasDynamicHelp": false,
6572
+ "multiple": false,
6573
+ "type": "option"
6574
+ },
6575
+ "limit": {
6576
+ "char": "n",
6577
+ "description": "Maximum number of issues to import",
6578
+ "name": "limit",
6579
+ "default": 50,
6580
+ "hasDynamicHelp": false,
6581
+ "multiple": false,
6582
+ "type": "option"
6583
+ },
6001
6584
  "all": {
6002
6585
  "char": "a",
6003
- "description": "Show all links including reverse dependencies (what blocks this, what this blocks)",
6586
+ "description": "Import all matching issues without interactive selection",
6004
6587
  "name": "all",
6005
6588
  "allowNo": false,
6006
6589
  "type": "boolean"
6590
+ },
6591
+ "dry-run": {
6592
+ "description": "Preview issues that would be imported without creating tickets",
6593
+ "name": "dry-run",
6594
+ "allowNo": false,
6595
+ "type": "boolean"
6007
6596
  }
6008
6597
  },
6009
6598
  "hasDynamicHelp": false,
6010
6599
  "hiddenAliases": [],
6011
- "id": "link:list",
6600
+ "id": "linear:import",
6012
6601
  "pluginAlias": "@proletariat/cli",
6013
6602
  "pluginName": "@proletariat/cli",
6014
6603
  "pluginType": "core",
6015
- "strict": true,
6604
+ "strict": false,
6016
6605
  "isESM": true,
6017
6606
  "relativePath": [
6018
6607
  "dist",
6019
6608
  "commands",
6020
- "link",
6021
- "list.js"
6609
+ "linear",
6610
+ "import.js"
6022
6611
  ]
6023
6612
  },
6024
- "link:remove": {
6613
+ "linear:status": {
6025
6614
  "aliases": [],
6026
- "args": {
6027
- "from": {
6028
- "description": "Source entity ID (TKT-xxx, SPEC-xxx, or EPIC-xxx)",
6029
- "name": "from",
6030
- "required": true
6031
- },
6032
- "to": {
6033
- "description": "Target entity ID",
6034
- "name": "to",
6035
- "required": true
6036
- }
6037
- },
6038
- "description": "Remove a link (dependency) between two entities",
6615
+ "args": {},
6616
+ "description": "Validate Linear token, team access, and show integration health",
6039
6617
  "examples": [
6040
- "<%= config.bin %> <%= command.id %> TKT-001 TKT-002 # Remove link between tickets",
6041
- "<%= config.bin %> <%= command.id %> SPEC-001 SPEC-002 # Remove link between specs",
6042
- "<%= config.bin %> <%= command.id %> EPIC-001 EPIC-002 # Remove link between epics"
6618
+ "<%= config.bin %> <%= command.id %>",
6619
+ "<%= config.bin %> <%= command.id %> --json"
6043
6620
  ],
6044
6621
  "flags": {
6045
6622
  "project": {
@@ -6062,25 +6639,11 @@
6062
6639
  "name": "machine",
6063
6640
  "allowNo": false,
6064
6641
  "type": "boolean"
6065
- },
6066
- "type": {
6067
- "char": "t",
6068
- "description": "Link type to remove (if not specified, removes any link)",
6069
- "name": "type",
6070
- "hasDynamicHelp": false,
6071
- "multiple": false,
6072
- "options": [
6073
- "blocks",
6074
- "relates",
6075
- "duplicates",
6076
- "depends"
6077
- ],
6078
- "type": "option"
6079
6642
  }
6080
6643
  },
6081
6644
  "hasDynamicHelp": false,
6082
6645
  "hiddenAliases": [],
6083
- "id": "link:remove",
6646
+ "id": "linear:status",
6084
6647
  "pluginAlias": "@proletariat/cli",
6085
6648
  "pluginName": "@proletariat/cli",
6086
6649
  "pluginType": "core",
@@ -6089,19 +6652,19 @@
6089
6652
  "relativePath": [
6090
6653
  "dist",
6091
6654
  "commands",
6092
- "link",
6093
- "remove.js"
6655
+ "linear",
6656
+ "status.js"
6094
6657
  ]
6095
6658
  },
6096
- "linear:auth": {
6659
+ "linear:sync": {
6097
6660
  "aliases": [],
6098
6661
  "args": {},
6099
- "description": "Authenticate with Linear (alias for \"prlt linear connect\")",
6662
+ "description": "Sync PMO ticket status and PR links back to Linear",
6100
6663
  "examples": [
6101
- "<%= config.bin %> linear connect",
6102
- "<%= config.bin %> linear connect --check",
6103
- "<%= config.bin %> linear connect --force",
6104
- "LINEAR_API_KEY=lin_api_... <%= config.bin %> linear connect"
6664
+ "<%= config.bin %> <%= command.id %> # Sync all mapped tickets",
6665
+ "<%= config.bin %> <%= command.id %> --ticket TKT-001 # Sync a specific ticket",
6666
+ "<%= config.bin %> <%= command.id %> --pr-url https://github.com/... --ticket TKT-001 # Attach PR to Linear issue",
6667
+ "<%= config.bin %> <%= command.id %> --dry-run # Preview what would be synced"
6105
6668
  ],
6106
6669
  "flags": {
6107
6670
  "project": {
@@ -6125,29 +6688,37 @@
6125
6688
  "allowNo": false,
6126
6689
  "type": "boolean"
6127
6690
  },
6128
- "check": {
6129
- "description": "Only check if Linear credentials exist (do not prompt)",
6130
- "name": "check",
6131
- "allowNo": false,
6132
- "type": "boolean"
6691
+ "ticket": {
6692
+ "description": "PMO ticket ID to sync (syncs all if omitted)",
6693
+ "name": "ticket",
6694
+ "hasDynamicHelp": false,
6695
+ "multiple": false,
6696
+ "type": "option"
6133
6697
  },
6134
- "force": {
6135
- "description": "Force re-authentication even if credentials exist",
6136
- "name": "force",
6137
- "allowNo": false,
6138
- "type": "boolean"
6698
+ "pr-url": {
6699
+ "description": "PR URL to attach to the Linear issue",
6700
+ "name": "pr-url",
6701
+ "hasDynamicHelp": false,
6702
+ "multiple": false,
6703
+ "type": "option"
6139
6704
  },
6140
- "disconnect": {
6141
- "description": "Remove stored Linear credentials",
6142
- "name": "disconnect",
6705
+ "pr-title": {
6706
+ "description": "PR title for the attachment (defaults to ticket title)",
6707
+ "name": "pr-title",
6708
+ "hasDynamicHelp": false,
6709
+ "multiple": false,
6710
+ "type": "option"
6711
+ },
6712
+ "dry-run": {
6713
+ "description": "Preview what would be synced without making changes",
6714
+ "name": "dry-run",
6143
6715
  "allowNo": false,
6144
6716
  "type": "boolean"
6145
6717
  }
6146
6718
  },
6147
6719
  "hasDynamicHelp": false,
6148
- "hidden": true,
6149
6720
  "hiddenAliases": [],
6150
- "id": "linear:auth",
6721
+ "id": "linear:sync",
6151
6722
  "pluginAlias": "@proletariat/cli",
6152
6723
  "pluginName": "@proletariat/cli",
6153
6724
  "pluginType": "core",
@@ -6157,21 +6728,29 @@
6157
6728
  "dist",
6158
6729
  "commands",
6159
6730
  "linear",
6160
- "auth.js"
6731
+ "sync.js"
6161
6732
  ]
6162
6733
  },
6163
- "linear:connect": {
6734
+ "link:create": {
6164
6735
  "aliases": [],
6165
- "args": {},
6166
- "description": "Connect to Linear workspace and configure authentication",
6736
+ "args": {
6737
+ "from": {
6738
+ "description": "Source entity ID (TKT-xxx, SPEC-xxx, or EPIC-xxx)",
6739
+ "name": "from",
6740
+ "required": true
6741
+ },
6742
+ "to": {
6743
+ "description": "Target entity ID",
6744
+ "name": "to",
6745
+ "required": true
6746
+ }
6747
+ },
6748
+ "description": "Create a link (dependency) between two entities",
6167
6749
  "examples": [
6168
- "<%= config.bin %> <%= command.id %>",
6169
- "<%= config.bin %> <%= command.id %> --check",
6170
- "<%= config.bin %> <%= command.id %> --force",
6171
- "<%= config.bin %> <%= command.id %> --disconnect",
6172
- "<%= config.bin %> <%= command.id %> --team ENG",
6173
- "LINEAR_API_KEY=lin_api_... <%= config.bin %> <%= command.id %>",
6174
- "<%= config.bin %> <%= command.id %> --json"
6750
+ "<%= config.bin %> <%= command.id %> TKT-001 TKT-002 --type blocks # TKT-001 is blocked by TKT-002",
6751
+ "<%= config.bin %> <%= command.id %> TKT-001 TKT-002 --type relates # TKT-001 relates to TKT-002",
6752
+ "<%= config.bin %> <%= command.id %> SPEC-001 SPEC-002 --type depends # SPEC-001 depends on SPEC-002",
6753
+ "<%= config.bin %> <%= command.id %> EPIC-001 EPIC-002 --type blocks # EPIC-001 is blocked by EPIC-002"
6175
6754
  ],
6176
6755
  "flags": {
6177
6756
  "project": {
@@ -6195,35 +6774,25 @@
6195
6774
  "allowNo": false,
6196
6775
  "type": "boolean"
6197
6776
  },
6198
- "check": {
6199
- "description": "Only check if Linear credentials are valid (do not prompt)",
6200
- "name": "check",
6201
- "allowNo": false,
6202
- "type": "boolean"
6203
- },
6204
- "force": {
6205
- "description": "Force re-authentication even if credentials exist",
6206
- "name": "force",
6207
- "allowNo": false,
6208
- "type": "boolean"
6209
- },
6210
- "disconnect": {
6211
- "description": "Remove stored Linear credentials and configuration",
6212
- "name": "disconnect",
6213
- "allowNo": false,
6214
- "type": "boolean"
6215
- },
6216
- "team": {
6217
- "description": "Default team key (e.g., \"ENG\") for non-interactive setup",
6218
- "name": "team",
6777
+ "type": {
6778
+ "char": "t",
6779
+ "description": "Link type",
6780
+ "name": "type",
6781
+ "required": true,
6219
6782
  "hasDynamicHelp": false,
6220
6783
  "multiple": false,
6784
+ "options": [
6785
+ "blocks",
6786
+ "relates",
6787
+ "duplicates",
6788
+ "depends"
6789
+ ],
6221
6790
  "type": "option"
6222
6791
  }
6223
6792
  },
6224
6793
  "hasDynamicHelp": false,
6225
6794
  "hiddenAliases": [],
6226
- "id": "linear:connect",
6795
+ "id": "link:create",
6227
6796
  "pluginAlias": "@proletariat/cli",
6228
6797
  "pluginName": "@proletariat/cli",
6229
6798
  "pluginType": "core",
@@ -6232,21 +6801,29 @@
6232
6801
  "relativePath": [
6233
6802
  "dist",
6234
6803
  "commands",
6235
- "linear",
6236
- "connect.js"
6804
+ "link",
6805
+ "create.js"
6237
6806
  ]
6238
6807
  },
6239
- "linear:import": {
6808
+ "link": {
6240
6809
  "aliases": [],
6241
- "args": {},
6242
- "description": "Import Linear issues into PMO as tickets",
6810
+ "args": {
6811
+ "action": {
6812
+ "description": "Action to perform",
6813
+ "name": "action",
6814
+ "options": [
6815
+ "create",
6816
+ "list",
6817
+ "remove"
6818
+ ],
6819
+ "required": false
6820
+ }
6821
+ },
6822
+ "description": "Manage links (dependencies) between entities",
6243
6823
  "examples": [
6244
- "<%= config.bin %> <%= command.id %> # Interactive: select team and issues",
6245
- "<%= config.bin %> <%= command.id %> ENG-123 ENG-124 # Import specific issues by identifier",
6246
- "<%= config.bin %> <%= command.id %> --team ENG # Import from a specific team",
6247
- "<%= config.bin %> <%= command.id %> --team ENG --state \"In Progress\" # Filter by state",
6248
- "<%= config.bin %> <%= command.id %> --team ENG --label bug # Filter by label",
6249
- "<%= config.bin %> <%= command.id %> --limit 20 --json # Import up to 20 issues, JSON output"
6824
+ "<%= config.bin %> <%= command.id %> create TKT-001 TKT-002 --type blocks",
6825
+ "<%= config.bin %> <%= command.id %> list TKT-001",
6826
+ "<%= config.bin %> <%= command.id %> remove TKT-001 TKT-002"
6250
6827
  ],
6251
6828
  "flags": {
6252
6829
  "project": {
@@ -6269,103 +6846,38 @@
6269
6846
  "name": "machine",
6270
6847
  "allowNo": false,
6271
6848
  "type": "boolean"
6272
- },
6273
- "team": {
6274
- "char": "t",
6275
- "description": "Linear team key (e.g., ENG)",
6276
- "name": "team",
6277
- "hasDynamicHelp": false,
6278
- "multiple": false,
6279
- "type": "option"
6280
- },
6281
- "state": {
6282
- "description": "Filter by Linear state name (e.g., \"In Progress\", \"Backlog\")",
6283
- "name": "state",
6284
- "hasDynamicHelp": false,
6285
- "multiple": false,
6286
- "type": "option"
6287
- },
6288
- "state-type": {
6289
- "description": "Filter by Linear state type",
6290
- "name": "state-type",
6291
- "hasDynamicHelp": false,
6292
- "multiple": false,
6293
- "options": [
6294
- "triage",
6295
- "backlog",
6296
- "unstarted",
6297
- "started",
6298
- "completed",
6299
- "canceled"
6300
- ],
6301
- "type": "option"
6302
- },
6303
- "label": {
6304
- "description": "Filter by Linear label name",
6305
- "name": "label",
6306
- "hasDynamicHelp": false,
6307
- "multiple": false,
6308
- "type": "option"
6309
- },
6310
- "assignee": {
6311
- "description": "Filter by assignee name or \"me\"",
6312
- "name": "assignee",
6313
- "hasDynamicHelp": false,
6314
- "multiple": false,
6315
- "type": "option"
6316
- },
6317
- "cycle": {
6318
- "description": "Filter by cycle ID",
6319
- "name": "cycle",
6320
- "hasDynamicHelp": false,
6321
- "multiple": false,
6322
- "type": "option"
6323
- },
6324
- "limit": {
6325
- "char": "n",
6326
- "description": "Maximum number of issues to import",
6327
- "name": "limit",
6328
- "default": 50,
6329
- "hasDynamicHelp": false,
6330
- "multiple": false,
6331
- "type": "option"
6332
- },
6333
- "all": {
6334
- "char": "a",
6335
- "description": "Import all matching issues without interactive selection",
6336
- "name": "all",
6337
- "allowNo": false,
6338
- "type": "boolean"
6339
- },
6340
- "dry-run": {
6341
- "description": "Preview issues that would be imported without creating tickets",
6342
- "name": "dry-run",
6343
- "allowNo": false,
6344
- "type": "boolean"
6345
6849
  }
6346
6850
  },
6347
6851
  "hasDynamicHelp": false,
6348
6852
  "hiddenAliases": [],
6349
- "id": "linear:import",
6853
+ "id": "link",
6350
6854
  "pluginAlias": "@proletariat/cli",
6351
6855
  "pluginName": "@proletariat/cli",
6352
6856
  "pluginType": "core",
6353
- "strict": false,
6857
+ "strict": true,
6354
6858
  "isESM": true,
6355
6859
  "relativePath": [
6356
6860
  "dist",
6357
6861
  "commands",
6358
- "linear",
6359
- "import.js"
6862
+ "link",
6863
+ "index.js"
6360
6864
  ]
6361
6865
  },
6362
- "linear:status": {
6866
+ "link:list": {
6363
6867
  "aliases": [],
6364
- "args": {},
6365
- "description": "Validate Linear token, team access, and show integration health",
6868
+ "args": {
6869
+ "id": {
6870
+ "description": "Entity ID (TKT-xxx, SPEC-xxx, or EPIC-xxx)",
6871
+ "name": "id",
6872
+ "required": true
6873
+ }
6874
+ },
6875
+ "description": "List all links (dependencies) for an entity",
6366
6876
  "examples": [
6367
- "<%= config.bin %> <%= command.id %>",
6368
- "<%= config.bin %> <%= command.id %> --json"
6877
+ "<%= config.bin %> <%= command.id %> TKT-001 # List ticket links",
6878
+ "<%= config.bin %> <%= command.id %> SPEC-001 # List spec links",
6879
+ "<%= config.bin %> <%= command.id %> EPIC-001 # List epic links",
6880
+ "<%= config.bin %> <%= command.id %> TKT-001 --all # Include reverse links"
6369
6881
  ],
6370
6882
  "flags": {
6371
6883
  "project": {
@@ -6388,11 +6900,18 @@
6388
6900
  "name": "machine",
6389
6901
  "allowNo": false,
6390
6902
  "type": "boolean"
6903
+ },
6904
+ "all": {
6905
+ "char": "a",
6906
+ "description": "Show all links including reverse dependencies (what blocks this, what this blocks)",
6907
+ "name": "all",
6908
+ "allowNo": false,
6909
+ "type": "boolean"
6391
6910
  }
6392
6911
  },
6393
6912
  "hasDynamicHelp": false,
6394
6913
  "hiddenAliases": [],
6395
- "id": "linear:status",
6914
+ "id": "link:list",
6396
6915
  "pluginAlias": "@proletariat/cli",
6397
6916
  "pluginName": "@proletariat/cli",
6398
6917
  "pluginType": "core",
@@ -6401,19 +6920,29 @@
6401
6920
  "relativePath": [
6402
6921
  "dist",
6403
6922
  "commands",
6404
- "linear",
6405
- "status.js"
6923
+ "link",
6924
+ "list.js"
6406
6925
  ]
6407
6926
  },
6408
- "linear:sync": {
6927
+ "link:remove": {
6409
6928
  "aliases": [],
6410
- "args": {},
6411
- "description": "Sync PMO ticket status and PR links back to Linear",
6929
+ "args": {
6930
+ "from": {
6931
+ "description": "Source entity ID (TKT-xxx, SPEC-xxx, or EPIC-xxx)",
6932
+ "name": "from",
6933
+ "required": true
6934
+ },
6935
+ "to": {
6936
+ "description": "Target entity ID",
6937
+ "name": "to",
6938
+ "required": true
6939
+ }
6940
+ },
6941
+ "description": "Remove a link (dependency) between two entities",
6412
6942
  "examples": [
6413
- "<%= config.bin %> <%= command.id %> # Sync all mapped tickets",
6414
- "<%= config.bin %> <%= command.id %> --ticket TKT-001 # Sync a specific ticket",
6415
- "<%= config.bin %> <%= command.id %> --pr-url https://github.com/... --ticket TKT-001 # Attach PR to Linear issue",
6416
- "<%= config.bin %> <%= command.id %> --dry-run # Preview what would be synced"
6943
+ "<%= config.bin %> <%= command.id %> TKT-001 TKT-002 # Remove link between tickets",
6944
+ "<%= config.bin %> <%= command.id %> SPEC-001 SPEC-002 # Remove link between specs",
6945
+ "<%= config.bin %> <%= command.id %> EPIC-001 EPIC-002 # Remove link between epics"
6417
6946
  ],
6418
6947
  "flags": {
6419
6948
  "project": {
@@ -6437,37 +6966,24 @@
6437
6966
  "allowNo": false,
6438
6967
  "type": "boolean"
6439
6968
  },
6440
- "ticket": {
6441
- "description": "PMO ticket ID to sync (syncs all if omitted)",
6442
- "name": "ticket",
6443
- "hasDynamicHelp": false,
6444
- "multiple": false,
6445
- "type": "option"
6446
- },
6447
- "pr-url": {
6448
- "description": "PR URL to attach to the Linear issue",
6449
- "name": "pr-url",
6450
- "hasDynamicHelp": false,
6451
- "multiple": false,
6452
- "type": "option"
6453
- },
6454
- "pr-title": {
6455
- "description": "PR title for the attachment (defaults to ticket title)",
6456
- "name": "pr-title",
6969
+ "type": {
6970
+ "char": "t",
6971
+ "description": "Link type to remove (if not specified, removes any link)",
6972
+ "name": "type",
6457
6973
  "hasDynamicHelp": false,
6458
6974
  "multiple": false,
6975
+ "options": [
6976
+ "blocks",
6977
+ "relates",
6978
+ "duplicates",
6979
+ "depends"
6980
+ ],
6459
6981
  "type": "option"
6460
- },
6461
- "dry-run": {
6462
- "description": "Preview what would be synced without making changes",
6463
- "name": "dry-run",
6464
- "allowNo": false,
6465
- "type": "boolean"
6466
6982
  }
6467
6983
  },
6468
6984
  "hasDynamicHelp": false,
6469
6985
  "hiddenAliases": [],
6470
- "id": "linear:sync",
6986
+ "id": "link:remove",
6471
6987
  "pluginAlias": "@proletariat/cli",
6472
6988
  "pluginName": "@proletariat/cli",
6473
6989
  "pluginType": "core",
@@ -6476,8 +6992,8 @@
6476
6992
  "relativePath": [
6477
6993
  "dist",
6478
6994
  "commands",
6479
- "linear",
6480
- "sync.js"
6995
+ "link",
6996
+ "remove.js"
6481
6997
  ]
6482
6998
  },
6483
6999
  "monday:connect": {
@@ -6835,6 +7351,24 @@
6835
7351
  "name": "foreground",
6836
7352
  "allowNo": false,
6837
7353
  "type": "boolean"
7354
+ },
7355
+ "docker": {
7356
+ "description": "Run orchestrator in a Docker container (sibling container pattern)",
7357
+ "exclusive": [
7358
+ "run-on-host"
7359
+ ],
7360
+ "name": "docker",
7361
+ "allowNo": false,
7362
+ "type": "boolean"
7363
+ },
7364
+ "run-on-host": {
7365
+ "description": "Run orchestrator on host (default behavior)",
7366
+ "exclusive": [
7367
+ "docker"
7368
+ ],
7369
+ "name": "run-on-host",
7370
+ "allowNo": false,
7371
+ "type": "boolean"
6838
7372
  }
6839
7373
  },
6840
7374
  "hasDynamicHelp": false,
@@ -9112,6 +9646,167 @@
9112
9646
  "view.js"
9113
9647
  ]
9114
9648
  },
9649
+ "run": {
9650
+ "aliases": [],
9651
+ "args": {
9652
+ "task": {
9653
+ "description": "Task description for the agent",
9654
+ "name": "task",
9655
+ "required": true
9656
+ }
9657
+ },
9658
+ "description": "Spawn an agent to work on a task (works anywhere, no HQ required)",
9659
+ "examples": [
9660
+ "<%= config.bin %> run \"fix the login bug\"",
9661
+ "<%= config.bin %> run --runner claude-code \"add dark mode\"",
9662
+ "<%= config.bin %> run -d \"fix the bug\"",
9663
+ "<%= config.bin %> run --runner codex \"add tests\""
9664
+ ],
9665
+ "flags": {
9666
+ "json": {
9667
+ "description": "Output as JSON for AI agents/scripts",
9668
+ "name": "json",
9669
+ "allowNo": false,
9670
+ "type": "boolean"
9671
+ },
9672
+ "machine": {
9673
+ "char": "m",
9674
+ "description": "Output as JSON for AI agents/scripts",
9675
+ "name": "machine",
9676
+ "allowNo": false,
9677
+ "type": "boolean"
9678
+ },
9679
+ "runner": {
9680
+ "char": "r",
9681
+ "description": "Runner to use (claude-code, codex, pi)",
9682
+ "name": "runner",
9683
+ "hasDynamicHelp": false,
9684
+ "multiple": false,
9685
+ "type": "option"
9686
+ },
9687
+ "detached": {
9688
+ "char": "d",
9689
+ "description": "Run in background (detached)",
9690
+ "name": "detached",
9691
+ "allowNo": false,
9692
+ "type": "boolean"
9693
+ },
9694
+ "directory": {
9695
+ "description": "Working directory (default: cwd)",
9696
+ "name": "directory",
9697
+ "hasDynamicHelp": false,
9698
+ "multiple": false,
9699
+ "type": "option"
9700
+ },
9701
+ "permission-mode": {
9702
+ "char": "p",
9703
+ "description": "Permission mode (danger: skip prompts, safe: require approval)",
9704
+ "name": "permission-mode",
9705
+ "hasDynamicHelp": false,
9706
+ "multiple": false,
9707
+ "options": [
9708
+ "danger",
9709
+ "safe"
9710
+ ],
9711
+ "type": "option"
9712
+ },
9713
+ "environment": {
9714
+ "char": "e",
9715
+ "description": "Environment to run in",
9716
+ "name": "environment",
9717
+ "hasDynamicHelp": false,
9718
+ "multiple": false,
9719
+ "options": [
9720
+ "host",
9721
+ "docker",
9722
+ "podman"
9723
+ ],
9724
+ "type": "option"
9725
+ }
9726
+ },
9727
+ "hasDynamicHelp": false,
9728
+ "hiddenAliases": [],
9729
+ "id": "run",
9730
+ "pluginAlias": "@proletariat/cli",
9731
+ "pluginName": "@proletariat/cli",
9732
+ "pluginType": "core",
9733
+ "strict": true,
9734
+ "isESM": true,
9735
+ "relativePath": [
9736
+ "dist",
9737
+ "commands",
9738
+ "run",
9739
+ "index.js"
9740
+ ]
9741
+ },
9742
+ "shortcut:connect": {
9743
+ "aliases": [],
9744
+ "args": {},
9745
+ "description": "Connect to Shortcut workspace and configure authentication",
9746
+ "examples": [
9747
+ "<%= config.bin %> <%= command.id %>",
9748
+ "<%= config.bin %> <%= command.id %> --check",
9749
+ "<%= config.bin %> <%= command.id %> --force",
9750
+ "<%= config.bin %> <%= command.id %> --disconnect",
9751
+ "SHORTCUT_API_TOKEN=... <%= config.bin %> <%= command.id %>",
9752
+ "<%= config.bin %> <%= command.id %> --json"
9753
+ ],
9754
+ "flags": {
9755
+ "project": {
9756
+ "char": "P",
9757
+ "description": "Project ID (uses first project if only one exists)",
9758
+ "name": "project",
9759
+ "hasDynamicHelp": false,
9760
+ "multiple": false,
9761
+ "type": "option"
9762
+ },
9763
+ "json": {
9764
+ "description": "Output as JSON for AI agents/scripts",
9765
+ "name": "json",
9766
+ "allowNo": false,
9767
+ "type": "boolean"
9768
+ },
9769
+ "machine": {
9770
+ "char": "m",
9771
+ "description": "Output as JSON for AI agents/scripts",
9772
+ "name": "machine",
9773
+ "allowNo": false,
9774
+ "type": "boolean"
9775
+ },
9776
+ "check": {
9777
+ "description": "Only check if Shortcut credentials are valid (do not prompt)",
9778
+ "name": "check",
9779
+ "allowNo": false,
9780
+ "type": "boolean"
9781
+ },
9782
+ "force": {
9783
+ "description": "Force re-authentication even if credentials exist",
9784
+ "name": "force",
9785
+ "allowNo": false,
9786
+ "type": "boolean"
9787
+ },
9788
+ "disconnect": {
9789
+ "description": "Remove stored Shortcut credentials and configuration",
9790
+ "name": "disconnect",
9791
+ "allowNo": false,
9792
+ "type": "boolean"
9793
+ }
9794
+ },
9795
+ "hasDynamicHelp": false,
9796
+ "hiddenAliases": [],
9797
+ "id": "shortcut:connect",
9798
+ "pluginAlias": "@proletariat/cli",
9799
+ "pluginName": "@proletariat/cli",
9800
+ "pluginType": "core",
9801
+ "strict": true,
9802
+ "isESM": true,
9803
+ "relativePath": [
9804
+ "dist",
9805
+ "commands",
9806
+ "shortcut",
9807
+ "connect.js"
9808
+ ]
9809
+ },
9115
9810
  "roadmap:add-project": {
9116
9811
  "aliases": [],
9117
9812
  "args": {
@@ -10126,27 +10821,75 @@
10126
10821
  "dist",
10127
10822
  "commands",
10128
10823
  "session",
10129
- "peek.js"
10824
+ "peek.js"
10825
+ ]
10826
+ },
10827
+ "session:poke": {
10828
+ "aliases": [],
10829
+ "args": {
10830
+ "agent": {
10831
+ "description": "Agent name or ticket ID of the running agent",
10832
+ "name": "agent",
10833
+ "required": true
10834
+ },
10835
+ "message": {
10836
+ "description": "Message to send to the agent session",
10837
+ "name": "message",
10838
+ "required": true
10839
+ }
10840
+ },
10841
+ "description": "Send a message to a running agent's Claude Code session",
10842
+ "examples": [
10843
+ "<%= config.bin %> session poke altman \"Please focus on the tests first\"",
10844
+ "<%= config.bin %> session poke TKT-123 \"Add error handling for edge cases\""
10845
+ ],
10846
+ "flags": {
10847
+ "project": {
10848
+ "char": "P",
10849
+ "description": "Project ID (uses first project if only one exists)",
10850
+ "name": "project",
10851
+ "hasDynamicHelp": false,
10852
+ "multiple": false,
10853
+ "type": "option"
10854
+ },
10855
+ "json": {
10856
+ "description": "Output as JSON for AI agents/scripts",
10857
+ "name": "json",
10858
+ "allowNo": false,
10859
+ "type": "boolean"
10860
+ },
10861
+ "machine": {
10862
+ "char": "m",
10863
+ "description": "Output as JSON for AI agents/scripts",
10864
+ "name": "machine",
10865
+ "allowNo": false,
10866
+ "type": "boolean"
10867
+ }
10868
+ },
10869
+ "hasDynamicHelp": false,
10870
+ "hiddenAliases": [],
10871
+ "id": "session:poke",
10872
+ "pluginAlias": "@proletariat/cli",
10873
+ "pluginName": "@proletariat/cli",
10874
+ "pluginType": "core",
10875
+ "strict": true,
10876
+ "isESM": true,
10877
+ "relativePath": [
10878
+ "dist",
10879
+ "commands",
10880
+ "session",
10881
+ "poke.js"
10130
10882
  ]
10131
10883
  },
10132
- "session:poke": {
10884
+ "session:prune": {
10133
10885
  "aliases": [],
10134
- "args": {
10135
- "agent": {
10136
- "description": "Agent name or ticket ID of the running agent",
10137
- "name": "agent",
10138
- "required": true
10139
- },
10140
- "message": {
10141
- "description": "Message to send to the agent session",
10142
- "name": "message",
10143
- "required": true
10144
- }
10145
- },
10146
- "description": "Send a message to a running agent's Claude Code session",
10886
+ "args": {},
10887
+ "description": "Clean up stale sessions, orphan tmux sessions, and idle ephemeral agents",
10147
10888
  "examples": [
10148
- "<%= config.bin %> session poke altman \"Please focus on the tests first\"",
10149
- "<%= config.bin %> session poke TKT-123 \"Add error handling for edge cases\""
10889
+ "<%= config.bin %> session prune",
10890
+ "<%= config.bin %> session prune --dry-run",
10891
+ "<%= config.bin %> session prune --force",
10892
+ "<%= config.bin %> session prune --age 24"
10150
10893
  ],
10151
10894
  "flags": {
10152
10895
  "project": {
@@ -10169,11 +10912,40 @@
10169
10912
  "name": "machine",
10170
10913
  "allowNo": false,
10171
10914
  "type": "boolean"
10915
+ },
10916
+ "dry-run": {
10917
+ "char": "d",
10918
+ "description": "Show what would be pruned without actually doing it",
10919
+ "name": "dry-run",
10920
+ "allowNo": false,
10921
+ "type": "boolean"
10922
+ },
10923
+ "force": {
10924
+ "char": "f",
10925
+ "description": "Force cleanup even if agents have uncommitted/unpushed work",
10926
+ "name": "force",
10927
+ "allowNo": false,
10928
+ "type": "boolean"
10929
+ },
10930
+ "yes": {
10931
+ "char": "y",
10932
+ "description": "Skip confirmation prompt",
10933
+ "name": "yes",
10934
+ "allowNo": false,
10935
+ "type": "boolean"
10936
+ },
10937
+ "age": {
10938
+ "description": "Only prune sessions/agents idle for more than N hours (default: 0 = all idle)",
10939
+ "name": "age",
10940
+ "default": 0,
10941
+ "hasDynamicHelp": false,
10942
+ "multiple": false,
10943
+ "type": "option"
10172
10944
  }
10173
10945
  },
10174
10946
  "hasDynamicHelp": false,
10175
10947
  "hiddenAliases": [],
10176
- "id": "session:poke",
10948
+ "id": "session:prune",
10177
10949
  "pluginAlias": "@proletariat/cli",
10178
10950
  "pluginName": "@proletariat/cli",
10179
10951
  "pluginType": "core",
@@ -10183,7 +10955,7 @@
10183
10955
  "dist",
10184
10956
  "commands",
10185
10957
  "session",
10186
- "poke.js"
10958
+ "prune.js"
10187
10959
  ]
10188
10960
  },
10189
10961
  "staff:add": {
@@ -11512,13 +12284,12 @@
11512
12284
  "update.js"
11513
12285
  ]
11514
12286
  },
11515
- "support:book": {
12287
+ "telemetry:disable": {
11516
12288
  "aliases": [],
11517
12289
  "args": {},
11518
- "description": "Book a call for support",
12290
+ "description": "Disable anonymous telemetry",
11519
12291
  "examples": [
11520
- "<%= config.bin %> <%= command.id %>",
11521
- "<%= config.bin %> <%= command.id %> --json"
12292
+ "<%= config.bin %> <%= command.id %>"
11522
12293
  ],
11523
12294
  "flags": {
11524
12295
  "json": {
@@ -11537,7 +12308,7 @@
11537
12308
  },
11538
12309
  "hasDynamicHelp": false,
11539
12310
  "hiddenAliases": [],
11540
- "id": "support:book",
12311
+ "id": "telemetry:disable",
11541
12312
  "pluginAlias": "@proletariat/cli",
11542
12313
  "pluginName": "@proletariat/cli",
11543
12314
  "pluginType": "core",
@@ -11547,17 +12318,16 @@
11547
12318
  "relativePath": [
11548
12319
  "dist",
11549
12320
  "commands",
11550
- "support",
11551
- "book.js"
12321
+ "telemetry",
12322
+ "disable.js"
11552
12323
  ]
11553
12324
  },
11554
- "support:discord": {
12325
+ "telemetry:enable": {
11555
12326
  "aliases": [],
11556
12327
  "args": {},
11557
- "description": "Join the Discord community",
12328
+ "description": "Enable anonymous telemetry",
11558
12329
  "examples": [
11559
- "<%= config.bin %> <%= command.id %>",
11560
- "<%= config.bin %> <%= command.id %> --json"
12330
+ "<%= config.bin %> <%= command.id %>"
11561
12331
  ],
11562
12332
  "flags": {
11563
12333
  "json": {
@@ -11576,7 +12346,7 @@
11576
12346
  },
11577
12347
  "hasDynamicHelp": false,
11578
12348
  "hiddenAliases": [],
11579
- "id": "support:discord",
12349
+ "id": "telemetry:enable",
11580
12350
  "pluginAlias": "@proletariat/cli",
11581
12351
  "pluginName": "@proletariat/cli",
11582
12352
  "pluginType": "core",
@@ -11586,14 +12356,14 @@
11586
12356
  "relativePath": [
11587
12357
  "dist",
11588
12358
  "commands",
11589
- "support",
11590
- "discord.js"
12359
+ "telemetry",
12360
+ "enable.js"
11591
12361
  ]
11592
12362
  },
11593
- "support:docs": {
12363
+ "telemetry": {
11594
12364
  "aliases": [],
11595
12365
  "args": {},
11596
- "description": "Open documentation in browser",
12366
+ "description": "Show telemetry status",
11597
12367
  "examples": [
11598
12368
  "<%= config.bin %> <%= command.id %>",
11599
12369
  "<%= config.bin %> <%= command.id %> --json"
@@ -11615,7 +12385,7 @@
11615
12385
  },
11616
12386
  "hasDynamicHelp": false,
11617
12387
  "hiddenAliases": [],
11618
- "id": "support:docs",
12388
+ "id": "telemetry",
11619
12389
  "pluginAlias": "@proletariat/cli",
11620
12390
  "pluginName": "@proletariat/cli",
11621
12391
  "pluginType": "core",
@@ -11625,21 +12395,16 @@
11625
12395
  "relativePath": [
11626
12396
  "dist",
11627
12397
  "commands",
11628
- "support",
11629
- "docs.js"
12398
+ "telemetry",
12399
+ "index.js"
11630
12400
  ]
11631
12401
  },
11632
- "support": {
12402
+ "telemetry:status": {
11633
12403
  "aliases": [],
11634
12404
  "args": {},
11635
- "description": "Get help, troubleshoot, and connect with the community",
12405
+ "description": "Show telemetry status",
11636
12406
  "examples": [
11637
- "<%= config.bin %> <%= command.id %>",
11638
- "<%= config.bin %> <%= command.id %> book",
11639
- "<%= config.bin %> <%= command.id %> docs",
11640
- "<%= config.bin %> <%= command.id %> discord",
11641
- "<%= config.bin %> <%= command.id %> issues",
11642
- "<%= config.bin %> <%= command.id %> logs"
12407
+ "<%= config.bin %> telemetry status"
11643
12408
  ],
11644
12409
  "flags": {
11645
12410
  "json": {
@@ -11658,7 +12423,7 @@
11658
12423
  },
11659
12424
  "hasDynamicHelp": false,
11660
12425
  "hiddenAliases": [],
11661
- "id": "support",
12426
+ "id": "telemetry:status",
11662
12427
  "pluginAlias": "@proletariat/cli",
11663
12428
  "pluginName": "@proletariat/cli",
11664
12429
  "pluginType": "core",
@@ -11668,17 +12433,16 @@
11668
12433
  "relativePath": [
11669
12434
  "dist",
11670
12435
  "commands",
11671
- "support",
11672
- "index.js"
12436
+ "telemetry",
12437
+ "status.js"
11673
12438
  ]
11674
12439
  },
11675
- "support:issues": {
12440
+ "support:book": {
11676
12441
  "aliases": [],
11677
12442
  "args": {},
11678
- "description": "Browse GitHub Issues",
12443
+ "description": "Book a call for support",
11679
12444
  "examples": [
11680
12445
  "<%= config.bin %> <%= command.id %>",
11681
- "<%= config.bin %> <%= command.id %> --browser",
11682
12446
  "<%= config.bin %> <%= command.id %> --json"
11683
12447
  ],
11684
12448
  "flags": {
@@ -11694,17 +12458,11 @@
11694
12458
  "name": "machine",
11695
12459
  "allowNo": false,
11696
12460
  "type": "boolean"
11697
- },
11698
- "browser": {
11699
- "description": "Open issues in browser (default behavior)",
11700
- "name": "browser",
11701
- "allowNo": true,
11702
- "type": "boolean"
11703
12461
  }
11704
12462
  },
11705
12463
  "hasDynamicHelp": false,
11706
12464
  "hiddenAliases": [],
11707
- "id": "support:issues",
12465
+ "id": "support:book",
11708
12466
  "pluginAlias": "@proletariat/cli",
11709
12467
  "pluginName": "@proletariat/cli",
11710
12468
  "pluginType": "core",
@@ -11715,27 +12473,18 @@
11715
12473
  "dist",
11716
12474
  "commands",
11717
12475
  "support",
11718
- "issues.js"
12476
+ "book.js"
11719
12477
  ]
11720
12478
  },
11721
- "support:logs": {
12479
+ "support:discord": {
11722
12480
  "aliases": [],
11723
12481
  "args": {},
11724
- "description": "Collect diagnostic info for troubleshooting",
12482
+ "description": "Join the Discord community",
11725
12483
  "examples": [
11726
12484
  "<%= config.bin %> <%= command.id %>",
11727
- "<%= config.bin %> <%= command.id %> --clipboard",
11728
12485
  "<%= config.bin %> <%= command.id %> --json"
11729
12486
  ],
11730
12487
  "flags": {
11731
- "project": {
11732
- "char": "P",
11733
- "description": "Project ID (uses first project if only one exists)",
11734
- "name": "project",
11735
- "hasDynamicHelp": false,
11736
- "multiple": false,
11737
- "type": "option"
11738
- },
11739
12488
  "json": {
11740
12489
  "description": "Output as JSON for AI agents/scripts",
11741
12490
  "name": "json",
@@ -11748,53 +12497,33 @@
11748
12497
  "name": "machine",
11749
12498
  "allowNo": false,
11750
12499
  "type": "boolean"
11751
- },
11752
- "clipboard": {
11753
- "description": "Copy diagnostics to clipboard",
11754
- "name": "clipboard",
11755
- "allowNo": false,
11756
- "type": "boolean"
11757
12500
  }
11758
12501
  },
11759
12502
  "hasDynamicHelp": false,
11760
12503
  "hiddenAliases": [],
11761
- "id": "support:logs",
12504
+ "id": "support:discord",
11762
12505
  "pluginAlias": "@proletariat/cli",
11763
12506
  "pluginName": "@proletariat/cli",
11764
12507
  "pluginType": "core",
11765
12508
  "strict": true,
12509
+ "enableJsonFlag": false,
11766
12510
  "isESM": true,
11767
12511
  "relativePath": [
11768
12512
  "dist",
11769
12513
  "commands",
11770
12514
  "support",
11771
- "logs.js"
12515
+ "discord.js"
11772
12516
  ]
11773
12517
  },
11774
- "terminal:title": {
12518
+ "support:docs": {
11775
12519
  "aliases": [],
11776
- "args": {
11777
- "title": {
11778
- "description": "Title to set for the terminal tab/window",
11779
- "name": "title",
11780
- "required": false
11781
- }
11782
- },
11783
- "description": "Set the terminal tab/window title",
12520
+ "args": {},
12521
+ "description": "Open documentation in browser",
11784
12522
  "examples": [
11785
- "<%= config.bin %> <%= command.id %> \"My Custom Name\"",
11786
- "<%= config.bin %> <%= command.id %> # Interactive prompt",
11787
- "<%= config.bin %> <%= command.id %> --reset",
11788
- "<%= config.bin %> <%= command.id %> --machine # JSON mode for agents"
12523
+ "<%= config.bin %> <%= command.id %>",
12524
+ "<%= config.bin %> <%= command.id %> --json"
11789
12525
  ],
11790
12526
  "flags": {
11791
- "reset": {
11792
- "char": "r",
11793
- "description": "Reset terminal title to default",
11794
- "name": "reset",
11795
- "allowNo": false,
11796
- "type": "boolean"
11797
- },
11798
12527
  "json": {
11799
12528
  "description": "Output as JSON for AI agents/scripts",
11800
12529
  "name": "json",
@@ -11811,25 +12540,31 @@
11811
12540
  },
11812
12541
  "hasDynamicHelp": false,
11813
12542
  "hiddenAliases": [],
11814
- "id": "terminal:title",
12543
+ "id": "support:docs",
11815
12544
  "pluginAlias": "@proletariat/cli",
11816
12545
  "pluginName": "@proletariat/cli",
11817
12546
  "pluginType": "core",
11818
12547
  "strict": true,
12548
+ "enableJsonFlag": false,
11819
12549
  "isESM": true,
11820
12550
  "relativePath": [
11821
12551
  "dist",
11822
12552
  "commands",
11823
- "terminal",
11824
- "title.js"
12553
+ "support",
12554
+ "docs.js"
11825
12555
  ]
11826
12556
  },
11827
- "telemetry:disable": {
12557
+ "support": {
11828
12558
  "aliases": [],
11829
12559
  "args": {},
11830
- "description": "Disable anonymous telemetry",
12560
+ "description": "Get help, troubleshoot, and connect with the community",
11831
12561
  "examples": [
11832
- "<%= config.bin %> <%= command.id %>"
12562
+ "<%= config.bin %> <%= command.id %>",
12563
+ "<%= config.bin %> <%= command.id %> book",
12564
+ "<%= config.bin %> <%= command.id %> docs",
12565
+ "<%= config.bin %> <%= command.id %> discord",
12566
+ "<%= config.bin %> <%= command.id %> issues",
12567
+ "<%= config.bin %> <%= command.id %> logs"
11833
12568
  ],
11834
12569
  "flags": {
11835
12570
  "json": {
@@ -11848,7 +12583,7 @@
11848
12583
  },
11849
12584
  "hasDynamicHelp": false,
11850
12585
  "hiddenAliases": [],
11851
- "id": "telemetry:disable",
12586
+ "id": "support",
11852
12587
  "pluginAlias": "@proletariat/cli",
11853
12588
  "pluginName": "@proletariat/cli",
11854
12589
  "pluginType": "core",
@@ -11858,16 +12593,18 @@
11858
12593
  "relativePath": [
11859
12594
  "dist",
11860
12595
  "commands",
11861
- "telemetry",
11862
- "disable.js"
12596
+ "support",
12597
+ "index.js"
11863
12598
  ]
11864
12599
  },
11865
- "telemetry:enable": {
12600
+ "support:issues": {
11866
12601
  "aliases": [],
11867
12602
  "args": {},
11868
- "description": "Enable anonymous telemetry",
12603
+ "description": "Browse GitHub Issues",
11869
12604
  "examples": [
11870
- "<%= config.bin %> <%= command.id %>"
12605
+ "<%= config.bin %> <%= command.id %>",
12606
+ "<%= config.bin %> <%= command.id %> --browser",
12607
+ "<%= config.bin %> <%= command.id %> --json"
11871
12608
  ],
11872
12609
  "flags": {
11873
12610
  "json": {
@@ -11882,11 +12619,17 @@
11882
12619
  "name": "machine",
11883
12620
  "allowNo": false,
11884
12621
  "type": "boolean"
12622
+ },
12623
+ "browser": {
12624
+ "description": "Open issues in browser (default behavior)",
12625
+ "name": "browser",
12626
+ "allowNo": true,
12627
+ "type": "boolean"
11885
12628
  }
11886
12629
  },
11887
12630
  "hasDynamicHelp": false,
11888
12631
  "hiddenAliases": [],
11889
- "id": "telemetry:enable",
12632
+ "id": "support:issues",
11890
12633
  "pluginAlias": "@proletariat/cli",
11891
12634
  "pluginName": "@proletariat/cli",
11892
12635
  "pluginType": "core",
@@ -11896,19 +12639,28 @@
11896
12639
  "relativePath": [
11897
12640
  "dist",
11898
12641
  "commands",
11899
- "telemetry",
11900
- "enable.js"
12642
+ "support",
12643
+ "issues.js"
11901
12644
  ]
11902
12645
  },
11903
- "telemetry": {
12646
+ "support:logs": {
11904
12647
  "aliases": [],
11905
12648
  "args": {},
11906
- "description": "Show telemetry status",
12649
+ "description": "Collect diagnostic info for troubleshooting",
11907
12650
  "examples": [
11908
12651
  "<%= config.bin %> <%= command.id %>",
12652
+ "<%= config.bin %> <%= command.id %> --clipboard",
11909
12653
  "<%= config.bin %> <%= command.id %> --json"
11910
12654
  ],
11911
12655
  "flags": {
12656
+ "project": {
12657
+ "char": "P",
12658
+ "description": "Project ID (uses first project if only one exists)",
12659
+ "name": "project",
12660
+ "hasDynamicHelp": false,
12661
+ "multiple": false,
12662
+ "type": "option"
12663
+ },
11912
12664
  "json": {
11913
12665
  "description": "Output as JSON for AI agents/scripts",
11914
12666
  "name": "json",
@@ -11921,32 +12673,53 @@
11921
12673
  "name": "machine",
11922
12674
  "allowNo": false,
11923
12675
  "type": "boolean"
12676
+ },
12677
+ "clipboard": {
12678
+ "description": "Copy diagnostics to clipboard",
12679
+ "name": "clipboard",
12680
+ "allowNo": false,
12681
+ "type": "boolean"
11924
12682
  }
11925
12683
  },
11926
12684
  "hasDynamicHelp": false,
11927
12685
  "hiddenAliases": [],
11928
- "id": "telemetry",
12686
+ "id": "support:logs",
11929
12687
  "pluginAlias": "@proletariat/cli",
11930
12688
  "pluginName": "@proletariat/cli",
11931
12689
  "pluginType": "core",
11932
12690
  "strict": true,
11933
- "enableJsonFlag": false,
11934
12691
  "isESM": true,
11935
12692
  "relativePath": [
11936
12693
  "dist",
11937
12694
  "commands",
11938
- "telemetry",
11939
- "index.js"
12695
+ "support",
12696
+ "logs.js"
11940
12697
  ]
11941
12698
  },
11942
- "telemetry:status": {
12699
+ "terminal:title": {
11943
12700
  "aliases": [],
11944
- "args": {},
11945
- "description": "Show telemetry status",
12701
+ "args": {
12702
+ "title": {
12703
+ "description": "Title to set for the terminal tab/window",
12704
+ "name": "title",
12705
+ "required": false
12706
+ }
12707
+ },
12708
+ "description": "Set the terminal tab/window title",
11946
12709
  "examples": [
11947
- "<%= config.bin %> telemetry status"
12710
+ "<%= config.bin %> <%= command.id %> \"My Custom Name\"",
12711
+ "<%= config.bin %> <%= command.id %> # Interactive prompt",
12712
+ "<%= config.bin %> <%= command.id %> --reset",
12713
+ "<%= config.bin %> <%= command.id %> --machine # JSON mode for agents"
11948
12714
  ],
11949
12715
  "flags": {
12716
+ "reset": {
12717
+ "char": "r",
12718
+ "description": "Reset terminal title to default",
12719
+ "name": "reset",
12720
+ "allowNo": false,
12721
+ "type": "boolean"
12722
+ },
11950
12723
  "json": {
11951
12724
  "description": "Output as JSON for AI agents/scripts",
11952
12725
  "name": "json",
@@ -11963,18 +12736,17 @@
11963
12736
  },
11964
12737
  "hasDynamicHelp": false,
11965
12738
  "hiddenAliases": [],
11966
- "id": "telemetry:status",
12739
+ "id": "terminal:title",
11967
12740
  "pluginAlias": "@proletariat/cli",
11968
12741
  "pluginName": "@proletariat/cli",
11969
12742
  "pluginType": "core",
11970
12743
  "strict": true,
11971
- "enableJsonFlag": false,
11972
12744
  "isESM": true,
11973
12745
  "relativePath": [
11974
12746
  "dist",
11975
12747
  "commands",
11976
- "telemetry",
11977
- "status.js"
12748
+ "terminal",
12749
+ "title.js"
11978
12750
  ]
11979
12751
  },
11980
12752
  "template:apply": {
@@ -13245,6 +14017,136 @@
13245
14017
  "view.js"
13246
14018
  ]
13247
14019
  },
14020
+ "work:asana": {
14021
+ "aliases": [],
14022
+ "args": {},
14023
+ "description": "List/select Asana tasks and spawn work using the existing work-start flow",
14024
+ "examples": [
14025
+ "<%= config.bin %> <%= command.id %>",
14026
+ "<%= config.bin %> <%= command.id %> --task 1234567890",
14027
+ "<%= config.bin %> <%= command.id %> --task 1234567890 --yes --skip-permissions --display terminal"
14028
+ ],
14029
+ "flags": {
14030
+ "project": {
14031
+ "char": "P",
14032
+ "description": "Project ID (uses first project if only one exists)",
14033
+ "name": "project",
14034
+ "hasDynamicHelp": false,
14035
+ "multiple": false,
14036
+ "type": "option"
14037
+ },
14038
+ "json": {
14039
+ "description": "Output as JSON for AI agents/scripts",
14040
+ "name": "json",
14041
+ "allowNo": false,
14042
+ "type": "boolean"
14043
+ },
14044
+ "machine": {
14045
+ "char": "m",
14046
+ "description": "Output as JSON for AI agents/scripts",
14047
+ "name": "machine",
14048
+ "allowNo": false,
14049
+ "type": "boolean"
14050
+ },
14051
+ "task": {
14052
+ "description": "Asana task GID (for example: 1234567890)",
14053
+ "name": "task",
14054
+ "hasDynamicHelp": false,
14055
+ "multiple": false,
14056
+ "type": "option"
14057
+ },
14058
+ "limit": {
14059
+ "char": "l",
14060
+ "description": "Maximum number of Asana tasks to fetch",
14061
+ "name": "limit",
14062
+ "default": 20,
14063
+ "hasDynamicHelp": false,
14064
+ "multiple": false,
14065
+ "type": "option"
14066
+ },
14067
+ "executor": {
14068
+ "char": "e",
14069
+ "description": "Override executor",
14070
+ "name": "executor",
14071
+ "hasDynamicHelp": false,
14072
+ "multiple": false,
14073
+ "options": [
14074
+ "claude-code",
14075
+ "codex",
14076
+ "custom"
14077
+ ],
14078
+ "type": "option"
14079
+ },
14080
+ "display": {
14081
+ "char": "d",
14082
+ "description": "Display mode",
14083
+ "name": "display",
14084
+ "hasDynamicHelp": false,
14085
+ "multiple": false,
14086
+ "options": [
14087
+ "terminal",
14088
+ "background",
14089
+ "foreground"
14090
+ ],
14091
+ "type": "option"
14092
+ },
14093
+ "action": {
14094
+ "char": "A",
14095
+ "description": "Action to run in work start (default: implement)",
14096
+ "name": "action",
14097
+ "default": "implement",
14098
+ "hasDynamicHelp": false,
14099
+ "multiple": false,
14100
+ "type": "option"
14101
+ },
14102
+ "message": {
14103
+ "description": "Additional instructions appended to spawn context",
14104
+ "name": "message",
14105
+ "hasDynamicHelp": false,
14106
+ "multiple": false,
14107
+ "type": "option"
14108
+ },
14109
+ "run-on-host": {
14110
+ "description": "Run on host even if devcontainer exists",
14111
+ "name": "run-on-host",
14112
+ "allowNo": false,
14113
+ "type": "boolean"
14114
+ },
14115
+ "skip-permissions": {
14116
+ "description": "Skip permission prompts (danger mode)",
14117
+ "name": "skip-permissions",
14118
+ "allowNo": false,
14119
+ "type": "boolean"
14120
+ },
14121
+ "create-pr": {
14122
+ "description": "Create PR when work is ready",
14123
+ "name": "create-pr",
14124
+ "allowNo": false,
14125
+ "type": "boolean"
14126
+ },
14127
+ "yes": {
14128
+ "char": "y",
14129
+ "description": "Skip confirmation prompts in downstream work start",
14130
+ "name": "yes",
14131
+ "allowNo": false,
14132
+ "type": "boolean"
14133
+ }
14134
+ },
14135
+ "hasDynamicHelp": false,
14136
+ "hiddenAliases": [],
14137
+ "id": "work:asana",
14138
+ "pluginAlias": "@proletariat/cli",
14139
+ "pluginName": "@proletariat/cli",
14140
+ "pluginType": "core",
14141
+ "strict": true,
14142
+ "isESM": true,
14143
+ "relativePath": [
14144
+ "dist",
14145
+ "commands",
14146
+ "work",
14147
+ "asana.js"
14148
+ ]
14149
+ },
13248
14150
  "work:complete": {
13249
14151
  "aliases": [],
13250
14152
  "args": {
@@ -14016,6 +14918,136 @@
14016
14918
  "revise.js"
14017
14919
  ]
14018
14920
  },
14921
+ "work:shortcut": {
14922
+ "aliases": [],
14923
+ "args": {},
14924
+ "description": "List/select Shortcut stories and spawn work using the existing work-start flow",
14925
+ "examples": [
14926
+ "<%= config.bin %> <%= command.id %>",
14927
+ "<%= config.bin %> <%= command.id %> --issue sc-123",
14928
+ "<%= config.bin %> <%= command.id %> --issue sc-123 --yes --skip-permissions --display terminal"
14929
+ ],
14930
+ "flags": {
14931
+ "project": {
14932
+ "char": "P",
14933
+ "description": "Project ID (uses first project if only one exists)",
14934
+ "name": "project",
14935
+ "hasDynamicHelp": false,
14936
+ "multiple": false,
14937
+ "type": "option"
14938
+ },
14939
+ "json": {
14940
+ "description": "Output as JSON for AI agents/scripts",
14941
+ "name": "json",
14942
+ "allowNo": false,
14943
+ "type": "boolean"
14944
+ },
14945
+ "machine": {
14946
+ "char": "m",
14947
+ "description": "Output as JSON for AI agents/scripts",
14948
+ "name": "machine",
14949
+ "allowNo": false,
14950
+ "type": "boolean"
14951
+ },
14952
+ "issue": {
14953
+ "description": "Shortcut story key (for example: sc-123 or 123)",
14954
+ "name": "issue",
14955
+ "hasDynamicHelp": false,
14956
+ "multiple": false,
14957
+ "type": "option"
14958
+ },
14959
+ "limit": {
14960
+ "char": "l",
14961
+ "description": "Maximum number of Shortcut stories to fetch",
14962
+ "name": "limit",
14963
+ "default": 20,
14964
+ "hasDynamicHelp": false,
14965
+ "multiple": false,
14966
+ "type": "option"
14967
+ },
14968
+ "executor": {
14969
+ "char": "e",
14970
+ "description": "Override executor",
14971
+ "name": "executor",
14972
+ "hasDynamicHelp": false,
14973
+ "multiple": false,
14974
+ "options": [
14975
+ "claude-code",
14976
+ "codex",
14977
+ "custom"
14978
+ ],
14979
+ "type": "option"
14980
+ },
14981
+ "display": {
14982
+ "char": "d",
14983
+ "description": "Display mode",
14984
+ "name": "display",
14985
+ "hasDynamicHelp": false,
14986
+ "multiple": false,
14987
+ "options": [
14988
+ "terminal",
14989
+ "background",
14990
+ "foreground"
14991
+ ],
14992
+ "type": "option"
14993
+ },
14994
+ "action": {
14995
+ "char": "A",
14996
+ "description": "Action to run in work start (default: implement)",
14997
+ "name": "action",
14998
+ "default": "implement",
14999
+ "hasDynamicHelp": false,
15000
+ "multiple": false,
15001
+ "type": "option"
15002
+ },
15003
+ "message": {
15004
+ "description": "Additional instructions appended to spawn context",
15005
+ "name": "message",
15006
+ "hasDynamicHelp": false,
15007
+ "multiple": false,
15008
+ "type": "option"
15009
+ },
15010
+ "run-on-host": {
15011
+ "description": "Run on host even if devcontainer exists",
15012
+ "name": "run-on-host",
15013
+ "allowNo": false,
15014
+ "type": "boolean"
15015
+ },
15016
+ "skip-permissions": {
15017
+ "description": "Skip permission prompts (danger mode)",
15018
+ "name": "skip-permissions",
15019
+ "allowNo": false,
15020
+ "type": "boolean"
15021
+ },
15022
+ "create-pr": {
15023
+ "description": "Create PR when work is ready",
15024
+ "name": "create-pr",
15025
+ "allowNo": false,
15026
+ "type": "boolean"
15027
+ },
15028
+ "yes": {
15029
+ "char": "y",
15030
+ "description": "Skip confirmation prompts in downstream work start",
15031
+ "name": "yes",
15032
+ "allowNo": false,
15033
+ "type": "boolean"
15034
+ }
15035
+ },
15036
+ "hasDynamicHelp": false,
15037
+ "hiddenAliases": [],
15038
+ "id": "work:shortcut",
15039
+ "pluginAlias": "@proletariat/cli",
15040
+ "pluginName": "@proletariat/cli",
15041
+ "pluginType": "core",
15042
+ "strict": true,
15043
+ "isESM": true,
15044
+ "relativePath": [
15045
+ "dist",
15046
+ "commands",
15047
+ "work",
15048
+ "shortcut.js"
15049
+ ]
15050
+ },
14019
15051
  "work:source": {
14020
15052
  "aliases": [],
14021
15053
  "args": {},
@@ -14177,7 +15209,10 @@
14177
15209
  "<%= config.bin %> <%= command.id %> --from jira:PROJ # Pull Jira issues → PMO → spawn",
14178
15210
  "<%= config.bin %> <%= command.id %> --from jira:PROJ PROJ-123 PROJ-456 # Pull specific Jira issues",
14179
15211
  "<%= config.bin %> <%= command.id %> --from jira --jira-project PROJ # Jira with explicit project key",
14180
- "<%= config.bin %> work source set jira:PROJ # Persist Jira as default source"
15212
+ "<%= config.bin %> work source set jira:PROJ # Persist Jira as default source",
15213
+ "<%= config.bin %> <%= command.id %> --from shortcut # Pull Shortcut stories → PMO → spawn",
15214
+ "<%= config.bin %> <%= command.id %> --from shortcut sc-123 sc-456 # Pull specific Shortcut stories",
15215
+ "<%= config.bin %> work source set shortcut # Persist Shortcut as default source"
14181
15216
  ],
14182
15217
  "flags": {
14183
15218
  "project": {
@@ -14474,6 +15509,14 @@
14474
15509
  "hasDynamicHelp": false,
14475
15510
  "multiple": false,
14476
15511
  "type": "option"
15512
+ },
15513
+ "shortcut-limit": {
15514
+ "description": "Maximum number of Shortcut stories to pull",
15515
+ "name": "shortcut-limit",
15516
+ "default": 20,
15517
+ "hasDynamicHelp": false,
15518
+ "multiple": false,
15519
+ "type": "option"
14477
15520
  }
14478
15521
  },
14479
15522
  "hasDynamicHelp": false,
@@ -18639,5 +19682,5 @@
18639
19682
  ]
18640
19683
  }
18641
19684
  },
18642
- "version": "0.3.54"
19685
+ "version": "0.3.56"
18643
19686
  }