@proletariat/cli 0.3.85 → 0.3.86

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 (85) hide show
  1. package/bin/validate-better-sqlite3.cjs +11 -0
  2. package/dist/commands/session/cleanup.d.ts +2 -0
  3. package/dist/commands/session/cleanup.js +89 -42
  4. package/dist/commands/session/cleanup.js.map +1 -1
  5. package/dist/commands/session/index.js +4 -0
  6. package/dist/commands/session/index.js.map +1 -1
  7. package/dist/commands/session/report.d.ts +27 -0
  8. package/dist/commands/session/report.js +217 -0
  9. package/dist/commands/session/report.js.map +1 -0
  10. package/dist/commands/telemetry/disable.js +1 -1
  11. package/dist/commands/telemetry/disable.js.map +1 -1
  12. package/dist/commands/telemetry/enable.js +1 -1
  13. package/dist/commands/telemetry/enable.js.map +1 -1
  14. package/dist/commands/ticket/create.d.ts +3 -2
  15. package/dist/commands/ticket/create.js +6 -69
  16. package/dist/commands/ticket/create.js.map +1 -1
  17. package/dist/commands/work/groom.d.ts +15 -0
  18. package/dist/commands/work/groom.js +77 -0
  19. package/dist/commands/work/groom.js.map +1 -0
  20. package/dist/commands/work/implement.d.ts +16 -0
  21. package/dist/commands/work/implement.js +85 -0
  22. package/dist/commands/work/implement.js.map +1 -0
  23. package/dist/commands/work/index.js +38 -34
  24. package/dist/commands/work/index.js.map +1 -1
  25. package/dist/commands/work/peek.d.ts +18 -0
  26. package/dist/commands/work/peek.js +78 -0
  27. package/dist/commands/work/peek.js.map +1 -0
  28. package/dist/commands/work/poke.d.ts +19 -0
  29. package/dist/commands/work/poke.js +79 -0
  30. package/dist/commands/work/poke.js.map +1 -0
  31. package/dist/commands/work/review.d.ts +1 -31
  32. package/dist/commands/work/review.js +44 -368
  33. package/dist/commands/work/review.js.map +1 -1
  34. package/dist/commands/work/spawn.js +1 -1
  35. package/dist/commands/work/spawn.js.map +1 -1
  36. package/dist/commands/work/start.d.ts +2 -0
  37. package/dist/commands/work/start.js +24 -19
  38. package/dist/commands/work/start.js.map +1 -1
  39. package/dist/commands/work/stop.d.ts +14 -0
  40. package/dist/commands/work/stop.js +103 -0
  41. package/dist/commands/work/stop.js.map +1 -0
  42. package/dist/hooks/init.d.ts +1 -1
  43. package/dist/hooks/init.js +1 -1
  44. package/dist/lib/execution/config.d.ts +17 -1
  45. package/dist/lib/execution/config.js +38 -0
  46. package/dist/lib/execution/config.js.map +1 -1
  47. package/dist/lib/execution/devcontainer.js +0 -1
  48. package/dist/lib/execution/devcontainer.js.map +1 -1
  49. package/dist/lib/execution/runners/docker-management.js +20 -0
  50. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  51. package/dist/lib/execution/runners/prompt-builder.js +1 -2
  52. package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
  53. package/dist/lib/execution/runners/shared.js +3 -1
  54. package/dist/lib/execution/runners/shared.js.map +1 -1
  55. package/dist/lib/execution/spawner.d.ts +3 -1
  56. package/dist/lib/execution/spawner.js +10 -4
  57. package/dist/lib/execution/spawner.js.map +1 -1
  58. package/dist/lib/execution/storage.d.ts +2 -1
  59. package/dist/lib/execution/storage.js +4 -3
  60. package/dist/lib/execution/storage.js.map +1 -1
  61. package/dist/lib/execution/types.d.ts +9 -0
  62. package/dist/lib/execution/types.js.map +1 -1
  63. package/dist/lib/mcp/tools/tmux.d.ts +1 -1
  64. package/dist/lib/mcp/tools/tmux.js +1 -1
  65. package/dist/lib/mcp/tools/work.js +4 -35
  66. package/dist/lib/mcp/tools/work.js.map +1 -1
  67. package/dist/lib/pmo/schema.d.ts +1 -1
  68. package/dist/lib/pmo/schema.js +1 -0
  69. package/dist/lib/pmo/schema.js.map +1 -1
  70. package/dist/lib/pmo/storage/base.js +59 -501
  71. package/dist/lib/pmo/storage/base.js.map +1 -1
  72. package/dist/lib/pmo/utils.d.ts +22 -0
  73. package/dist/lib/pmo/utils.js +31 -0
  74. package/dist/lib/pmo/utils.js.map +1 -1
  75. package/dist/lib/telemetry/analytics.d.ts +10 -13
  76. package/dist/lib/telemetry/analytics.js +35 -125
  77. package/dist/lib/telemetry/analytics.js.map +1 -1
  78. package/dist/lib/telemetry/feature-flags.d.ts +12 -37
  79. package/dist/lib/telemetry/feature-flags.js +15 -63
  80. package/dist/lib/telemetry/feature-flags.js.map +1 -1
  81. package/oclif.manifest.json +1751 -1488
  82. package/package.json +2 -3
  83. package/dist/commands/work/revise.d.ts +0 -20
  84. package/dist/commands/work/revise.js +0 -377
  85. package/dist/commands/work/revise.js.map +0 -1
@@ -1529,66 +1529,6 @@
1529
1529
  "update.js"
1530
1530
  ]
1531
1531
  },
1532
- "autocomplete:setup": {
1533
- "aliases": [],
1534
- "args": {},
1535
- "description": "Auto-detect shell and set up autocomplete",
1536
- "examples": [
1537
- "<%= config.bin %> <%= command.id %>",
1538
- "<%= config.bin %> <%= command.id %> --install",
1539
- "<%= config.bin %> <%= command.id %> --shell zsh",
1540
- "<%= config.bin %> <%= command.id %> --shell zsh --install --machine"
1541
- ],
1542
- "flags": {
1543
- "json": {
1544
- "description": "Output as JSON for AI agents/scripts",
1545
- "name": "json",
1546
- "allowNo": false,
1547
- "type": "boolean"
1548
- },
1549
- "machine": {
1550
- "char": "m",
1551
- "description": "Output as JSON for AI agents/scripts",
1552
- "name": "machine",
1553
- "allowNo": false,
1554
- "type": "boolean"
1555
- },
1556
- "install": {
1557
- "char": "i",
1558
- "description": "Automatically install to shell config file",
1559
- "name": "install",
1560
- "allowNo": false,
1561
- "type": "boolean"
1562
- },
1563
- "shell": {
1564
- "char": "s",
1565
- "description": "Override shell detection (zsh, bash, powershell)",
1566
- "name": "shell",
1567
- "hasDynamicHelp": false,
1568
- "multiple": false,
1569
- "options": [
1570
- "zsh",
1571
- "bash",
1572
- "powershell"
1573
- ],
1574
- "type": "option"
1575
- }
1576
- },
1577
- "hasDynamicHelp": false,
1578
- "hiddenAliases": [],
1579
- "id": "autocomplete:setup",
1580
- "pluginAlias": "@proletariat/cli",
1581
- "pluginName": "@proletariat/cli",
1582
- "pluginType": "core",
1583
- "strict": true,
1584
- "isESM": true,
1585
- "relativePath": [
1586
- "dist",
1587
- "commands",
1588
- "autocomplete",
1589
- "setup.js"
1590
- ]
1591
- },
1592
1532
  "agent:auth": {
1593
1533
  "aliases": [],
1594
1534
  "args": {},
@@ -2292,89 +2232,17 @@
2292
2232
  "visit.js"
2293
2233
  ]
2294
2234
  },
2295
- "board": {
2296
- "aliases": [],
2297
- "args": {},
2298
- "description": "Interactive menu for board operations",
2299
- "examples": [
2300
- "<%= config.bin %> <%= command.id %>"
2301
- ],
2302
- "flags": {
2303
- "project": {
2304
- "char": "P",
2305
- "description": "Project ID (uses first project if only one exists)",
2306
- "name": "project",
2307
- "hasDynamicHelp": false,
2308
- "multiple": false,
2309
- "type": "option"
2310
- },
2311
- "json": {
2312
- "description": "Output as JSON for AI agents/scripts",
2313
- "name": "json",
2314
- "allowNo": false,
2315
- "type": "boolean"
2316
- },
2317
- "machine": {
2318
- "char": "m",
2319
- "description": "Output as JSON for AI agents/scripts",
2320
- "name": "machine",
2321
- "allowNo": false,
2322
- "type": "boolean"
2323
- },
2324
- "action": {
2325
- "description": "Action to execute directly (view, markdown, export, sync)",
2326
- "name": "action",
2327
- "hasDynamicHelp": false,
2328
- "multiple": false,
2329
- "options": [
2330
- "view",
2331
- "open",
2332
- "markdown",
2333
- "export",
2334
- "sync"
2335
- ],
2336
- "type": "option"
2337
- },
2338
- "force": {
2339
- "description": "Skip confirmation prompts",
2340
- "name": "force",
2341
- "allowNo": false,
2342
- "type": "boolean"
2343
- }
2344
- },
2345
- "hasDynamicHelp": false,
2346
- "hiddenAliases": [],
2347
- "id": "board",
2348
- "pluginAlias": "@proletariat/cli",
2349
- "pluginName": "@proletariat/cli",
2350
- "pluginType": "core",
2351
- "strict": true,
2352
- "isESM": true,
2353
- "relativePath": [
2354
- "dist",
2355
- "commands",
2356
- "board",
2357
- "index.js"
2358
- ]
2359
- },
2360
- "board:view": {
2235
+ "autocomplete:setup": {
2361
2236
  "aliases": [],
2362
2237
  "args": {},
2363
- "description": "View the kanban board",
2238
+ "description": "Auto-detect shell and set up autocomplete",
2364
2239
  "examples": [
2365
2240
  "<%= config.bin %> <%= command.id %>",
2366
- "<%= config.bin %> <%= command.id %> --compact",
2367
- "<%= config.bin %> <%= command.id %> --json"
2241
+ "<%= config.bin %> <%= command.id %> --install",
2242
+ "<%= config.bin %> <%= command.id %> --shell zsh",
2243
+ "<%= config.bin %> <%= command.id %> --shell zsh --install --machine"
2368
2244
  ],
2369
2245
  "flags": {
2370
- "project": {
2371
- "char": "P",
2372
- "description": "Project ID (uses first project if only one exists)",
2373
- "name": "project",
2374
- "hasDynamicHelp": false,
2375
- "multiple": false,
2376
- "type": "option"
2377
- },
2378
2246
  "json": {
2379
2247
  "description": "Output as JSON for AI agents/scripts",
2380
2248
  "name": "json",
@@ -2388,72 +2256,30 @@
2388
2256
  "allowNo": false,
2389
2257
  "type": "boolean"
2390
2258
  },
2391
- "compact": {
2392
- "char": "c",
2393
- "description": "Show compact ticket view (ID and title only)",
2394
- "name": "compact",
2395
- "allowNo": false,
2396
- "type": "boolean"
2397
- }
2398
- },
2399
- "hasDynamicHelp": false,
2400
- "hiddenAliases": [],
2401
- "id": "board:view",
2402
- "pluginAlias": "@proletariat/cli",
2403
- "pluginName": "@proletariat/cli",
2404
- "pluginType": "core",
2405
- "strict": true,
2406
- "isESM": true,
2407
- "relativePath": [
2408
- "dist",
2409
- "commands",
2410
- "board",
2411
- "view.js"
2412
- ]
2413
- },
2414
- "board:watch": {
2415
- "aliases": [],
2416
- "args": {},
2417
- "description": "Watch board.md for changes and auto-sync to SQLite",
2418
- "examples": [
2419
- "<%= config.bin %> <%= command.id %>",
2420
- "<%= config.bin %> <%= command.id %> --debounce 1000"
2421
- ],
2422
- "flags": {
2423
- "project": {
2424
- "char": "P",
2425
- "description": "Project ID (uses first project if only one exists)",
2426
- "name": "project",
2427
- "hasDynamicHelp": false,
2428
- "multiple": false,
2429
- "type": "option"
2430
- },
2431
- "json": {
2432
- "description": "Output as JSON for AI agents/scripts",
2433
- "name": "json",
2434
- "allowNo": false,
2435
- "type": "boolean"
2436
- },
2437
- "machine": {
2438
- "char": "m",
2439
- "description": "Output as JSON for AI agents/scripts",
2440
- "name": "machine",
2259
+ "install": {
2260
+ "char": "i",
2261
+ "description": "Automatically install to shell config file",
2262
+ "name": "install",
2441
2263
  "allowNo": false,
2442
2264
  "type": "boolean"
2443
2265
  },
2444
- "debounce": {
2445
- "char": "d",
2446
- "description": "Debounce delay in milliseconds",
2447
- "name": "debounce",
2448
- "default": 500,
2266
+ "shell": {
2267
+ "char": "s",
2268
+ "description": "Override shell detection (zsh, bash, powershell)",
2269
+ "name": "shell",
2449
2270
  "hasDynamicHelp": false,
2450
2271
  "multiple": false,
2272
+ "options": [
2273
+ "zsh",
2274
+ "bash",
2275
+ "powershell"
2276
+ ],
2451
2277
  "type": "option"
2452
2278
  }
2453
2279
  },
2454
2280
  "hasDynamicHelp": false,
2455
2281
  "hiddenAliases": [],
2456
- "id": "board:watch",
2282
+ "id": "autocomplete:setup",
2457
2283
  "pluginAlias": "@proletariat/cli",
2458
2284
  "pluginName": "@proletariat/cli",
2459
2285
  "pluginType": "core",
@@ -2462,8 +2288,8 @@
2462
2288
  "relativePath": [
2463
2289
  "dist",
2464
2290
  "commands",
2465
- "board",
2466
- "watch.js"
2291
+ "autocomplete",
2292
+ "setup.js"
2467
2293
  ]
2468
2294
  },
2469
2295
  "asana:connect": {
@@ -2681,22 +2507,12 @@
2681
2507
  "sync.js"
2682
2508
  ]
2683
2509
  },
2684
- "branch:create": {
2510
+ "board": {
2685
2511
  "aliases": [],
2686
- "args": {
2687
- "name": {
2688
- "description": "Full branch name (bypasses wizard)",
2689
- "name": "name",
2690
- "required": false
2691
- }
2692
- },
2693
- "description": "Create a new branch with conventional naming",
2512
+ "args": {},
2513
+ "description": "Interactive menu for board operations",
2694
2514
  "examples": [
2695
- "<%= config.bin %> <%= command.id %>",
2696
- "<%= config.bin %> <%= command.id %> -T TKT-001",
2697
- "<%= config.bin %> <%= command.id %> -T TKT-001 -e",
2698
- "<%= config.bin %> <%= command.id %> feat/chris/add-user-auth",
2699
- "<%= config.bin %> <%= command.id %> -t feat -c chris -d add-user-auth"
2515
+ "<%= config.bin %> <%= command.id %>"
2700
2516
  ],
2701
2517
  "flags": {
2702
2518
  "project": {
@@ -2720,22 +2536,206 @@
2720
2536
  "allowNo": false,
2721
2537
  "type": "boolean"
2722
2538
  },
2723
- "ticket": {
2724
- "char": "T",
2725
- "description": "Ticket ID - auto-generates branch from ticket (or use with -t/-d for manual)",
2726
- "name": "ticket",
2539
+ "action": {
2540
+ "description": "Action to execute directly (view, markdown, export, sync)",
2541
+ "name": "action",
2727
2542
  "hasDynamicHelp": false,
2728
2543
  "multiple": false,
2544
+ "options": [
2545
+ "view",
2546
+ "open",
2547
+ "markdown",
2548
+ "export",
2549
+ "sync"
2550
+ ],
2729
2551
  "type": "option"
2730
2552
  },
2731
- "type": {
2732
- "char": "t",
2733
- "description": "Branch type [required for non-interactive with -d]",
2734
- "name": "type",
2735
- "hasDynamicHelp": false,
2736
- "multiple": false,
2737
- "options": [
2738
- "feat",
2553
+ "force": {
2554
+ "description": "Skip confirmation prompts",
2555
+ "name": "force",
2556
+ "allowNo": false,
2557
+ "type": "boolean"
2558
+ }
2559
+ },
2560
+ "hasDynamicHelp": false,
2561
+ "hiddenAliases": [],
2562
+ "id": "board",
2563
+ "pluginAlias": "@proletariat/cli",
2564
+ "pluginName": "@proletariat/cli",
2565
+ "pluginType": "core",
2566
+ "strict": true,
2567
+ "isESM": true,
2568
+ "relativePath": [
2569
+ "dist",
2570
+ "commands",
2571
+ "board",
2572
+ "index.js"
2573
+ ]
2574
+ },
2575
+ "board:view": {
2576
+ "aliases": [],
2577
+ "args": {},
2578
+ "description": "View the kanban board",
2579
+ "examples": [
2580
+ "<%= config.bin %> <%= command.id %>",
2581
+ "<%= config.bin %> <%= command.id %> --compact",
2582
+ "<%= config.bin %> <%= command.id %> --json"
2583
+ ],
2584
+ "flags": {
2585
+ "project": {
2586
+ "char": "P",
2587
+ "description": "Project ID (uses first project if only one exists)",
2588
+ "name": "project",
2589
+ "hasDynamicHelp": false,
2590
+ "multiple": false,
2591
+ "type": "option"
2592
+ },
2593
+ "json": {
2594
+ "description": "Output as JSON for AI agents/scripts",
2595
+ "name": "json",
2596
+ "allowNo": false,
2597
+ "type": "boolean"
2598
+ },
2599
+ "machine": {
2600
+ "char": "m",
2601
+ "description": "Output as JSON for AI agents/scripts",
2602
+ "name": "machine",
2603
+ "allowNo": false,
2604
+ "type": "boolean"
2605
+ },
2606
+ "compact": {
2607
+ "char": "c",
2608
+ "description": "Show compact ticket view (ID and title only)",
2609
+ "name": "compact",
2610
+ "allowNo": false,
2611
+ "type": "boolean"
2612
+ }
2613
+ },
2614
+ "hasDynamicHelp": false,
2615
+ "hiddenAliases": [],
2616
+ "id": "board:view",
2617
+ "pluginAlias": "@proletariat/cli",
2618
+ "pluginName": "@proletariat/cli",
2619
+ "pluginType": "core",
2620
+ "strict": true,
2621
+ "isESM": true,
2622
+ "relativePath": [
2623
+ "dist",
2624
+ "commands",
2625
+ "board",
2626
+ "view.js"
2627
+ ]
2628
+ },
2629
+ "board:watch": {
2630
+ "aliases": [],
2631
+ "args": {},
2632
+ "description": "Watch board.md for changes and auto-sync to SQLite",
2633
+ "examples": [
2634
+ "<%= config.bin %> <%= command.id %>",
2635
+ "<%= config.bin %> <%= command.id %> --debounce 1000"
2636
+ ],
2637
+ "flags": {
2638
+ "project": {
2639
+ "char": "P",
2640
+ "description": "Project ID (uses first project if only one exists)",
2641
+ "name": "project",
2642
+ "hasDynamicHelp": false,
2643
+ "multiple": false,
2644
+ "type": "option"
2645
+ },
2646
+ "json": {
2647
+ "description": "Output as JSON for AI agents/scripts",
2648
+ "name": "json",
2649
+ "allowNo": false,
2650
+ "type": "boolean"
2651
+ },
2652
+ "machine": {
2653
+ "char": "m",
2654
+ "description": "Output as JSON for AI agents/scripts",
2655
+ "name": "machine",
2656
+ "allowNo": false,
2657
+ "type": "boolean"
2658
+ },
2659
+ "debounce": {
2660
+ "char": "d",
2661
+ "description": "Debounce delay in milliseconds",
2662
+ "name": "debounce",
2663
+ "default": 500,
2664
+ "hasDynamicHelp": false,
2665
+ "multiple": false,
2666
+ "type": "option"
2667
+ }
2668
+ },
2669
+ "hasDynamicHelp": false,
2670
+ "hiddenAliases": [],
2671
+ "id": "board:watch",
2672
+ "pluginAlias": "@proletariat/cli",
2673
+ "pluginName": "@proletariat/cli",
2674
+ "pluginType": "core",
2675
+ "strict": true,
2676
+ "isESM": true,
2677
+ "relativePath": [
2678
+ "dist",
2679
+ "commands",
2680
+ "board",
2681
+ "watch.js"
2682
+ ]
2683
+ },
2684
+ "branch:create": {
2685
+ "aliases": [],
2686
+ "args": {
2687
+ "name": {
2688
+ "description": "Full branch name (bypasses wizard)",
2689
+ "name": "name",
2690
+ "required": false
2691
+ }
2692
+ },
2693
+ "description": "Create a new branch with conventional naming",
2694
+ "examples": [
2695
+ "<%= config.bin %> <%= command.id %>",
2696
+ "<%= config.bin %> <%= command.id %> -T TKT-001",
2697
+ "<%= config.bin %> <%= command.id %> -T TKT-001 -e",
2698
+ "<%= config.bin %> <%= command.id %> feat/chris/add-user-auth",
2699
+ "<%= config.bin %> <%= command.id %> -t feat -c chris -d add-user-auth"
2700
+ ],
2701
+ "flags": {
2702
+ "project": {
2703
+ "char": "P",
2704
+ "description": "Project ID (uses first project if only one exists)",
2705
+ "name": "project",
2706
+ "hasDynamicHelp": false,
2707
+ "multiple": false,
2708
+ "type": "option"
2709
+ },
2710
+ "json": {
2711
+ "description": "Output as JSON for AI agents/scripts",
2712
+ "name": "json",
2713
+ "allowNo": false,
2714
+ "type": "boolean"
2715
+ },
2716
+ "machine": {
2717
+ "char": "m",
2718
+ "description": "Output as JSON for AI agents/scripts",
2719
+ "name": "machine",
2720
+ "allowNo": false,
2721
+ "type": "boolean"
2722
+ },
2723
+ "ticket": {
2724
+ "char": "T",
2725
+ "description": "Ticket ID - auto-generates branch from ticket (or use with -t/-d for manual)",
2726
+ "name": "ticket",
2727
+ "hasDynamicHelp": false,
2728
+ "multiple": false,
2729
+ "type": "option"
2730
+ },
2731
+ "type": {
2732
+ "char": "t",
2733
+ "description": "Branch type [required for non-interactive with -d]",
2734
+ "name": "type",
2735
+ "hasDynamicHelp": false,
2736
+ "multiple": false,
2737
+ "options": [
2738
+ "feat",
2739
2739
  "fix",
2740
2740
  "rfct",
2741
2741
  "docs",
@@ -3563,27 +3563,40 @@
3563
3563
  "index.js"
3564
3564
  ]
3565
3565
  },
3566
- "execution:config": {
3566
+ "docker:clean": {
3567
3567
  "aliases": [],
3568
3568
  "args": {},
3569
- "description": "View and update execution preferences",
3569
+ "description": "Remove orphaned containers (containers without running agents)",
3570
3570
  "examples": [
3571
- "<%= config.bin %> execution config # Interactive menu",
3572
- "<%= config.bin %> execution config --json # Output current config as JSON",
3573
- "<%= config.bin %> execution config --list # Show all settings",
3574
- "<%= config.bin %> execution config --set defaultEnvironment host",
3575
- "<%= config.bin %> execution config --set outputMode interactive",
3576
- "<%= config.bin %> execution config --set permissionMode safe",
3577
- "<%= config.bin %> execution config --setting outputMode --json # Show output mode choices"
3571
+ "<%= config.bin %> <%= command.id %>",
3572
+ "<%= config.bin %> <%= command.id %> --force",
3573
+ "<%= config.bin %> <%= command.id %> --dry-run"
3578
3574
  ],
3579
3575
  "flags": {
3580
- "project": {
3581
- "char": "P",
3582
- "description": "Project ID (uses first project if only one exists)",
3583
- "name": "project",
3584
- "hasDynamicHelp": false,
3585
- "multiple": false,
3586
- "type": "option"
3576
+ "force": {
3577
+ "aliases": [
3578
+ "yes",
3579
+ "y"
3580
+ ],
3581
+ "char": "f",
3582
+ "description": "Skip confirmation prompt",
3583
+ "name": "force",
3584
+ "allowNo": false,
3585
+ "type": "boolean"
3586
+ },
3587
+ "dry-run": {
3588
+ "char": "d",
3589
+ "description": "Show what would be removed without removing",
3590
+ "name": "dry-run",
3591
+ "allowNo": false,
3592
+ "type": "boolean"
3593
+ },
3594
+ "all": {
3595
+ "char": "a",
3596
+ "description": "Remove all stopped devcontainers (not just orphaned)",
3597
+ "name": "all",
3598
+ "allowNo": false,
3599
+ "type": "boolean"
3587
3600
  },
3588
3601
  "json": {
3589
3602
  "description": "Output as JSON for AI agents/scripts",
@@ -3597,64 +3610,42 @@
3597
3610
  "name": "machine",
3598
3611
  "allowNo": false,
3599
3612
  "type": "boolean"
3600
- },
3601
- "set": {
3602
- "char": "s",
3603
- "description": "Set a config value (format: key value)",
3604
- "name": "set",
3605
- "hasDynamicHelp": false,
3606
- "multiple": true,
3607
- "type": "option"
3608
- },
3609
- "list": {
3610
- "char": "l",
3611
- "description": "List all configuration values",
3612
- "name": "list",
3613
- "allowNo": false,
3614
- "type": "boolean"
3615
- },
3616
- "setting": {
3617
- "description": "Navigate to a specific setting prompt (for agent navigation)",
3618
- "name": "setting",
3619
- "hasDynamicHelp": false,
3620
- "multiple": false,
3621
- "type": "option"
3622
3613
  }
3623
3614
  },
3624
3615
  "hasDynamicHelp": false,
3625
3616
  "hiddenAliases": [],
3626
- "id": "execution:config",
3617
+ "id": "docker:clean",
3627
3618
  "pluginAlias": "@proletariat/cli",
3628
3619
  "pluginName": "@proletariat/cli",
3629
3620
  "pluginType": "core",
3630
3621
  "strict": true,
3622
+ "enableJsonFlag": false,
3631
3623
  "isESM": true,
3632
3624
  "relativePath": [
3633
3625
  "dist",
3634
3626
  "commands",
3635
- "execution",
3636
- "config.js"
3627
+ "docker",
3628
+ "clean.js"
3637
3629
  ]
3638
3630
  },
3639
- "execution": {
3631
+ "docker": {
3640
3632
  "aliases": [],
3641
3633
  "args": {},
3642
- "description": "Single execution operations (view, logs, stop)",
3634
+ "description": "Manage Docker containers used by agents",
3643
3635
  "examples": [
3644
3636
  "<%= config.bin %> <%= command.id %>",
3645
- "<%= config.bin %> <%= command.id %> view WORK-001",
3646
- "<%= config.bin %> <%= command.id %> logs WORK-001",
3647
- "<%= config.bin %> <%= command.id %> stop WORK-001"
3637
+ "<%= config.bin %> docker status",
3638
+ "<%= config.bin %> docker list",
3639
+ "<%= config.bin %> docker logs WORK-001",
3640
+ "<%= config.bin %> docker start WORK-001",
3641
+ "<%= config.bin %> docker stop kalanick",
3642
+ "<%= config.bin %> docker shell WORK-001",
3643
+ "<%= config.bin %> docker restart abc123",
3644
+ "<%= config.bin %> docker sync",
3645
+ "<%= config.bin %> docker clean",
3646
+ "<%= config.bin %> docker prune"
3648
3647
  ],
3649
3648
  "flags": {
3650
- "project": {
3651
- "char": "P",
3652
- "description": "Project ID (uses first project if only one exists)",
3653
- "name": "project",
3654
- "hasDynamicHelp": false,
3655
- "multiple": false,
3656
- "type": "option"
3657
- },
3658
3649
  "json": {
3659
3650
  "description": "Output as JSON for AI agents/scripts",
3660
3651
  "name": "json",
@@ -3671,7 +3662,7 @@
3671
3662
  },
3672
3663
  "hasDynamicHelp": false,
3673
3664
  "hiddenAliases": [],
3674
- "id": "execution",
3665
+ "id": "docker",
3675
3666
  "pluginAlias": "@proletariat/cli",
3676
3667
  "pluginName": "@proletariat/cli",
3677
3668
  "pluginType": "core",
@@ -3680,29 +3671,20 @@
3680
3671
  "relativePath": [
3681
3672
  "dist",
3682
3673
  "commands",
3683
- "execution",
3674
+ "docker",
3684
3675
  "index.js"
3685
3676
  ]
3686
3677
  },
3687
- "execution:list": {
3678
+ "docker:list": {
3688
3679
  "aliases": [],
3689
3680
  "args": {},
3690
- "description": "List running and recent executions",
3681
+ "description": "Show Docker containers from agent_work table with status",
3691
3682
  "examples": [
3692
3683
  "<%= config.bin %> <%= command.id %>",
3693
- "<%= config.bin %> <%= command.id %> --status running",
3694
- "<%= config.bin %> <%= command.id %> --agent alice",
3695
- "<%= config.bin %> <%= command.id %> --limit 50"
3684
+ "<%= config.bin %> <%= command.id %> --all",
3685
+ "<%= config.bin %> <%= command.id %> --running"
3696
3686
  ],
3697
3687
  "flags": {
3698
- "project": {
3699
- "char": "P",
3700
- "description": "Project ID (uses first project if only one exists)",
3701
- "name": "project",
3702
- "hasDynamicHelp": false,
3703
- "multiple": false,
3704
- "type": "option"
3705
- },
3706
3688
  "json": {
3707
3689
  "description": "Output as JSON for AI agents/scripts",
3708
3690
  "name": "json",
@@ -3716,79 +3698,54 @@
3716
3698
  "allowNo": false,
3717
3699
  "type": "boolean"
3718
3700
  },
3719
- "status": {
3720
- "char": "s",
3721
- "description": "Filter by status",
3722
- "name": "status",
3723
- "hasDynamicHelp": false,
3724
- "multiple": false,
3725
- "options": [
3726
- "starting",
3727
- "running",
3728
- "completed",
3729
- "failed",
3730
- "stopped"
3731
- ],
3732
- "type": "option"
3733
- },
3734
- "agent": {
3701
+ "all": {
3735
3702
  "char": "a",
3736
- "description": "Filter by agent name",
3737
- "name": "agent",
3738
- "hasDynamicHelp": false,
3739
- "multiple": false,
3740
- "type": "option"
3703
+ "description": "Show all containers (including non-devcontainer)",
3704
+ "name": "all",
3705
+ "allowNo": false,
3706
+ "type": "boolean"
3741
3707
  },
3742
- "limit": {
3743
- "char": "l",
3744
- "description": "Number of results",
3745
- "name": "limit",
3746
- "default": 20,
3747
- "hasDynamicHelp": false,
3748
- "multiple": false,
3749
- "type": "option"
3708
+ "running": {
3709
+ "char": "r",
3710
+ "description": "Only show running containers",
3711
+ "name": "running",
3712
+ "allowNo": false,
3713
+ "type": "boolean"
3750
3714
  }
3751
3715
  },
3752
3716
  "hasDynamicHelp": false,
3753
3717
  "hiddenAliases": [],
3754
- "id": "execution:list",
3718
+ "id": "docker:list",
3755
3719
  "pluginAlias": "@proletariat/cli",
3756
3720
  "pluginName": "@proletariat/cli",
3757
3721
  "pluginType": "core",
3758
3722
  "strict": true,
3723
+ "enableJsonFlag": false,
3759
3724
  "isESM": true,
3760
3725
  "relativePath": [
3761
3726
  "dist",
3762
3727
  "commands",
3763
- "execution",
3728
+ "docker",
3764
3729
  "list.js"
3765
3730
  ]
3766
3731
  },
3767
- "execution:logs": {
3732
+ "docker:logs": {
3768
3733
  "aliases": [],
3769
3734
  "args": {
3770
- "id": {
3771
- "description": "Execution ID - prompts if not provided",
3772
- "name": "id",
3773
- "required": false
3735
+ "target": {
3736
+ "description": "Execution ID (WORK-XXX), agent name, or container ID",
3737
+ "name": "target",
3738
+ "required": true
3774
3739
  }
3775
3740
  },
3776
- "description": "View execution logs",
3741
+ "description": "View logs from a container (by execution ID, agent name, or container ID)",
3777
3742
  "examples": [
3778
3743
  "<%= config.bin %> <%= command.id %> WORK-001",
3779
- "<%= config.bin %> <%= command.id %> WORK-001 --follow",
3780
- "<%= config.bin %> <%= command.id %> WORK-001 --tail 50",
3781
- "<%= config.bin %> <%= command.id %> # Interactive mode"
3744
+ "<%= config.bin %> <%= command.id %> kalanick",
3745
+ "<%= config.bin %> <%= command.id %> abc123 --follow",
3746
+ "<%= config.bin %> <%= command.id %> WORK-001 --tail 100"
3782
3747
  ],
3783
3748
  "flags": {
3784
- "project": {
3785
- "char": "P",
3786
- "description": "Project ID (uses first project if only one exists)",
3787
- "name": "project",
3788
- "hasDynamicHelp": false,
3789
- "multiple": false,
3790
- "type": "option"
3791
- },
3792
3749
  "json": {
3793
3750
  "description": "Output as JSON for AI agents/scripts",
3794
3751
  "name": "json",
@@ -3804,134 +3761,85 @@
3804
3761
  },
3805
3762
  "follow": {
3806
3763
  "char": "f",
3807
- "description": "Stream logs in real-time",
3764
+ "description": "Follow log output",
3808
3765
  "name": "follow",
3809
3766
  "allowNo": false,
3810
3767
  "type": "boolean"
3811
3768
  },
3812
3769
  "tail": {
3813
3770
  "char": "n",
3814
- "description": "Show last n lines",
3771
+ "description": "Number of lines to show from the end",
3815
3772
  "name": "tail",
3773
+ "default": 100,
3816
3774
  "hasDynamicHelp": false,
3817
3775
  "multiple": false,
3818
3776
  "type": "option"
3777
+ },
3778
+ "timestamps": {
3779
+ "char": "t",
3780
+ "description": "Show timestamps",
3781
+ "name": "timestamps",
3782
+ "allowNo": false,
3783
+ "type": "boolean"
3819
3784
  }
3820
3785
  },
3821
3786
  "hasDynamicHelp": false,
3822
3787
  "hiddenAliases": [],
3823
- "id": "execution:logs",
3788
+ "id": "docker:logs",
3824
3789
  "pluginAlias": "@proletariat/cli",
3825
3790
  "pluginName": "@proletariat/cli",
3826
3791
  "pluginType": "core",
3827
3792
  "strict": true,
3793
+ "enableJsonFlag": false,
3828
3794
  "isESM": true,
3829
3795
  "relativePath": [
3830
3796
  "dist",
3831
3797
  "commands",
3832
- "execution",
3798
+ "docker",
3833
3799
  "logs.js"
3834
3800
  ]
3835
3801
  },
3836
- "execution:stop": {
3802
+ "docker:prune": {
3837
3803
  "aliases": [],
3838
- "args": {
3839
- "id": {
3840
- "description": "Execution ID - prompts if not provided (ignored if --all or --agent used)",
3841
- "name": "id",
3842
- "required": false
3843
- }
3844
- },
3845
- "description": "Stop running execution(s)",
3804
+ "args": {},
3805
+ "description": "Remove unused Docker resources (containers, images, volumes, networks)",
3846
3806
  "examples": [
3847
- "<%= config.bin %> <%= command.id %> WORK-001",
3848
- "<%= config.bin %> <%= command.id %> WORK-001 --force",
3849
- "<%= config.bin %> <%= command.id %> # Interactive mode",
3807
+ "<%= config.bin %> <%= command.id %>",
3850
3808
  "<%= config.bin %> <%= command.id %> --all",
3851
- "<%= config.bin %> <%= command.id %> --all --force",
3852
- "<%= config.bin %> <%= command.id %> --agent altman"
3809
+ "<%= config.bin %> <%= command.id %> --volumes",
3810
+ "<%= config.bin %> <%= command.id %> --dry-run"
3853
3811
  ],
3854
3812
  "flags": {
3855
- "project": {
3856
- "char": "P",
3857
- "description": "Project ID (uses first project if only one exists)",
3858
- "name": "project",
3859
- "hasDynamicHelp": false,
3860
- "multiple": false,
3861
- "type": "option"
3862
- },
3863
- "json": {
3864
- "description": "Output as JSON for AI agents/scripts",
3865
- "name": "json",
3866
- "allowNo": false,
3867
- "type": "boolean"
3868
- },
3869
- "machine": {
3870
- "char": "m",
3871
- "description": "Output as JSON for AI agents/scripts",
3872
- "name": "machine",
3873
- "allowNo": false,
3874
- "type": "boolean"
3875
- },
3876
3813
  "force": {
3814
+ "aliases": [
3815
+ "yes",
3816
+ "y"
3817
+ ],
3877
3818
  "char": "f",
3878
- "description": "Force kill (SIGKILL instead of SIGTERM)",
3819
+ "description": "Skip confirmation prompt",
3879
3820
  "name": "force",
3880
3821
  "allowNo": false,
3881
3822
  "type": "boolean"
3882
3823
  },
3824
+ "dry-run": {
3825
+ "char": "d",
3826
+ "description": "Show what would be removed without removing",
3827
+ "name": "dry-run",
3828
+ "allowNo": false,
3829
+ "type": "boolean"
3830
+ },
3883
3831
  "all": {
3884
- "description": "Stop all running executions",
3832
+ "char": "a",
3833
+ "description": "Remove all unused images, not just dangling ones",
3885
3834
  "name": "all",
3886
3835
  "allowNo": false,
3887
3836
  "type": "boolean"
3888
3837
  },
3889
- "agent": {
3890
- "char": "a",
3891
- "description": "Stop all executions for a specific agent",
3892
- "name": "agent",
3893
- "hasDynamicHelp": false,
3894
- "multiple": false,
3895
- "type": "option"
3896
- }
3897
- },
3898
- "hasDynamicHelp": false,
3899
- "hiddenAliases": [],
3900
- "id": "execution:stop",
3901
- "pluginAlias": "@proletariat/cli",
3902
- "pluginName": "@proletariat/cli",
3903
- "pluginType": "core",
3904
- "strict": true,
3905
- "isESM": true,
3906
- "relativePath": [
3907
- "dist",
3908
- "commands",
3909
- "execution",
3910
- "stop.js"
3911
- ]
3912
- },
3913
- "execution:view": {
3914
- "aliases": [],
3915
- "args": {
3916
- "id": {
3917
- "description": "Execution ID - prompts if not provided",
3918
- "name": "id",
3919
- "required": false
3920
- }
3921
- },
3922
- "description": "View details of a specific execution",
3923
- "examples": [
3924
- "<%= config.bin %> <%= command.id %> WORK-001",
3925
- "<%= config.bin %> <%= command.id %> # Interactive mode"
3926
- ],
3927
- "flags": {
3928
- "project": {
3929
- "char": "P",
3930
- "description": "Project ID (uses first project if only one exists)",
3931
- "name": "project",
3932
- "hasDynamicHelp": false,
3933
- "multiple": false,
3934
- "type": "option"
3838
+ "volumes": {
3839
+ "description": "Also prune volumes (dangerous - data loss possible)",
3840
+ "name": "volumes",
3841
+ "allowNo": false,
3842
+ "type": "boolean"
3935
3843
  },
3936
3844
  "json": {
3937
3845
  "description": "Output as JSON for AI agents/scripts",
@@ -3949,27 +3857,34 @@
3949
3857
  },
3950
3858
  "hasDynamicHelp": false,
3951
3859
  "hiddenAliases": [],
3952
- "id": "execution:view",
3860
+ "id": "docker:prune",
3953
3861
  "pluginAlias": "@proletariat/cli",
3954
3862
  "pluginName": "@proletariat/cli",
3955
3863
  "pluginType": "core",
3956
3864
  "strict": true,
3865
+ "enableJsonFlag": false,
3957
3866
  "isESM": true,
3958
3867
  "relativePath": [
3959
3868
  "dist",
3960
3869
  "commands",
3961
- "execution",
3962
- "view.js"
3870
+ "docker",
3871
+ "prune.js"
3963
3872
  ]
3964
3873
  },
3965
- "docker:clean": {
3874
+ "docker:restart": {
3966
3875
  "aliases": [],
3967
- "args": {},
3968
- "description": "Remove orphaned containers (containers without running agents)",
3876
+ "args": {
3877
+ "target": {
3878
+ "description": "Execution ID (WORK-XXX), agent name, or container ID",
3879
+ "name": "target",
3880
+ "required": true
3881
+ }
3882
+ },
3883
+ "description": "Restart a container (by execution ID, agent name, or container ID)",
3969
3884
  "examples": [
3970
- "<%= config.bin %> <%= command.id %>",
3971
- "<%= config.bin %> <%= command.id %> --force",
3972
- "<%= config.bin %> <%= command.id %> --dry-run"
3885
+ "<%= config.bin %> <%= command.id %> WORK-001",
3886
+ "<%= config.bin %> <%= command.id %> kalanick",
3887
+ "<%= config.bin %> <%= command.id %> abc123 --force"
3973
3888
  ],
3974
3889
  "flags": {
3975
3890
  "force": {
@@ -3983,19 +3898,14 @@
3983
3898
  "allowNo": false,
3984
3899
  "type": "boolean"
3985
3900
  },
3986
- "dry-run": {
3987
- "char": "d",
3988
- "description": "Show what would be removed without removing",
3989
- "name": "dry-run",
3990
- "allowNo": false,
3991
- "type": "boolean"
3992
- },
3993
- "all": {
3994
- "char": "a",
3995
- "description": "Remove all stopped devcontainers (not just orphaned)",
3996
- "name": "all",
3997
- "allowNo": false,
3998
- "type": "boolean"
3901
+ "time": {
3902
+ "char": "t",
3903
+ "description": "Seconds to wait before killing the container during stop",
3904
+ "name": "time",
3905
+ "default": 10,
3906
+ "hasDynamicHelp": false,
3907
+ "multiple": false,
3908
+ "type": "option"
3999
3909
  },
4000
3910
  "json": {
4001
3911
  "description": "Output as JSON for AI agents/scripts",
@@ -4013,7 +3923,7 @@
4013
3923
  },
4014
3924
  "hasDynamicHelp": false,
4015
3925
  "hiddenAliases": [],
4016
- "id": "docker:clean",
3926
+ "id": "docker:restart",
4017
3927
  "pluginAlias": "@proletariat/cli",
4018
3928
  "pluginName": "@proletariat/cli",
4019
3929
  "pluginType": "core",
@@ -4024,64 +3934,23 @@
4024
3934
  "dist",
4025
3935
  "commands",
4026
3936
  "docker",
4027
- "clean.js"
3937
+ "restart.js"
4028
3938
  ]
4029
3939
  },
4030
- "docker": {
3940
+ "docker:shell": {
4031
3941
  "aliases": [],
4032
- "args": {},
4033
- "description": "Manage Docker containers used by agents",
4034
- "examples": [
4035
- "<%= config.bin %> <%= command.id %>",
4036
- "<%= config.bin %> docker status",
4037
- "<%= config.bin %> docker list",
4038
- "<%= config.bin %> docker logs WORK-001",
4039
- "<%= config.bin %> docker start WORK-001",
4040
- "<%= config.bin %> docker stop kalanick",
4041
- "<%= config.bin %> docker shell WORK-001",
4042
- "<%= config.bin %> docker restart abc123",
4043
- "<%= config.bin %> docker sync",
4044
- "<%= config.bin %> docker clean",
4045
- "<%= config.bin %> docker prune"
4046
- ],
4047
- "flags": {
4048
- "json": {
4049
- "description": "Output as JSON for AI agents/scripts",
4050
- "name": "json",
4051
- "allowNo": false,
4052
- "type": "boolean"
4053
- },
4054
- "machine": {
4055
- "char": "m",
4056
- "description": "Output as JSON for AI agents/scripts",
4057
- "name": "machine",
4058
- "allowNo": false,
4059
- "type": "boolean"
3942
+ "args": {
3943
+ "target": {
3944
+ "description": "Execution ID (WORK-XXX), agent name, or container ID",
3945
+ "name": "target",
3946
+ "required": true
4060
3947
  }
4061
3948
  },
4062
- "hasDynamicHelp": false,
4063
- "hiddenAliases": [],
4064
- "id": "docker",
4065
- "pluginAlias": "@proletariat/cli",
4066
- "pluginName": "@proletariat/cli",
4067
- "pluginType": "core",
4068
- "strict": true,
4069
- "isESM": true,
4070
- "relativePath": [
4071
- "dist",
4072
- "commands",
4073
- "docker",
4074
- "index.js"
4075
- ]
4076
- },
4077
- "docker:list": {
4078
- "aliases": [],
4079
- "args": {},
4080
- "description": "Show Docker containers from agent_work table with status",
3949
+ "description": "Open a shell in a running container (by execution ID, agent name, or container ID)",
4081
3950
  "examples": [
4082
- "<%= config.bin %> <%= command.id %>",
4083
- "<%= config.bin %> <%= command.id %> --all",
4084
- "<%= config.bin %> <%= command.id %> --running"
3951
+ "<%= config.bin %> <%= command.id %> WORK-001",
3952
+ "<%= config.bin %> <%= command.id %> kalanick",
3953
+ "<%= config.bin %> <%= command.id %> abc123 --shell /bin/bash"
4085
3954
  ],
4086
3955
  "flags": {
4087
3956
  "json": {
@@ -4097,24 +3966,35 @@
4097
3966
  "allowNo": false,
4098
3967
  "type": "boolean"
4099
3968
  },
4100
- "all": {
4101
- "char": "a",
4102
- "description": "Show all containers (including non-devcontainer)",
4103
- "name": "all",
4104
- "allowNo": false,
4105
- "type": "boolean"
3969
+ "shell": {
3970
+ "char": "s",
3971
+ "description": "Shell to use",
3972
+ "name": "shell",
3973
+ "default": "/bin/sh",
3974
+ "hasDynamicHelp": false,
3975
+ "multiple": false,
3976
+ "type": "option"
4106
3977
  },
4107
- "running": {
4108
- "char": "r",
4109
- "description": "Only show running containers",
4110
- "name": "running",
4111
- "allowNo": false,
4112
- "type": "boolean"
3978
+ "user": {
3979
+ "char": "u",
3980
+ "description": "User to run as",
3981
+ "name": "user",
3982
+ "hasDynamicHelp": false,
3983
+ "multiple": false,
3984
+ "type": "option"
3985
+ },
3986
+ "workdir": {
3987
+ "char": "w",
3988
+ "description": "Working directory inside the container",
3989
+ "name": "workdir",
3990
+ "hasDynamicHelp": false,
3991
+ "multiple": false,
3992
+ "type": "option"
4113
3993
  }
4114
3994
  },
4115
3995
  "hasDynamicHelp": false,
4116
3996
  "hiddenAliases": [],
4117
- "id": "docker:list",
3997
+ "id": "docker:shell",
4118
3998
  "pluginAlias": "@proletariat/cli",
4119
3999
  "pluginName": "@proletariat/cli",
4120
4000
  "pluginType": "core",
@@ -4125,10 +4005,10 @@
4125
4005
  "dist",
4126
4006
  "commands",
4127
4007
  "docker",
4128
- "list.js"
4008
+ "shell.js"
4129
4009
  ]
4130
4010
  },
4131
- "docker:logs": {
4011
+ "docker:start": {
4132
4012
  "aliases": [],
4133
4013
  "args": {
4134
4014
  "target": {
@@ -4137,12 +4017,11 @@
4137
4017
  "required": true
4138
4018
  }
4139
4019
  },
4140
- "description": "View logs from a container (by execution ID, agent name, or container ID)",
4020
+ "description": "Start a stopped container (by execution ID, agent name, or container ID)",
4141
4021
  "examples": [
4142
4022
  "<%= config.bin %> <%= command.id %> WORK-001",
4143
4023
  "<%= config.bin %> <%= command.id %> kalanick",
4144
- "<%= config.bin %> <%= command.id %> abc123 --follow",
4145
- "<%= config.bin %> <%= command.id %> WORK-001 --tail 100"
4024
+ "<%= config.bin %> <%= command.id %> abc123"
4146
4025
  ],
4147
4026
  "flags": {
4148
4027
  "json": {
@@ -4158,33 +4037,17 @@
4158
4037
  "allowNo": false,
4159
4038
  "type": "boolean"
4160
4039
  },
4161
- "follow": {
4162
- "char": "f",
4163
- "description": "Follow log output",
4164
- "name": "follow",
4165
- "allowNo": false,
4166
- "type": "boolean"
4167
- },
4168
- "tail": {
4169
- "char": "n",
4170
- "description": "Number of lines to show from the end",
4171
- "name": "tail",
4172
- "default": 100,
4173
- "hasDynamicHelp": false,
4174
- "multiple": false,
4175
- "type": "option"
4176
- },
4177
- "timestamps": {
4178
- "char": "t",
4179
- "description": "Show timestamps",
4180
- "name": "timestamps",
4040
+ "attach": {
4041
+ "char": "a",
4042
+ "description": "Attach to container after starting",
4043
+ "name": "attach",
4181
4044
  "allowNo": false,
4182
4045
  "type": "boolean"
4183
4046
  }
4184
4047
  },
4185
4048
  "hasDynamicHelp": false,
4186
4049
  "hiddenAliases": [],
4187
- "id": "docker:logs",
4050
+ "id": "docker:start",
4188
4051
  "pluginAlias": "@proletariat/cli",
4189
4052
  "pluginName": "@proletariat/cli",
4190
4053
  "pluginType": "core",
@@ -4195,51 +4058,17 @@
4195
4058
  "dist",
4196
4059
  "commands",
4197
4060
  "docker",
4198
- "logs.js"
4061
+ "start.js"
4199
4062
  ]
4200
4063
  },
4201
- "docker:prune": {
4064
+ "docker:status": {
4202
4065
  "aliases": [],
4203
4066
  "args": {},
4204
- "description": "Remove unused Docker resources (containers, images, volumes, networks)",
4067
+ "description": "Check if Docker daemon is running",
4205
4068
  "examples": [
4206
- "<%= config.bin %> <%= command.id %>",
4207
- "<%= config.bin %> <%= command.id %> --all",
4208
- "<%= config.bin %> <%= command.id %> --volumes",
4209
- "<%= config.bin %> <%= command.id %> --dry-run"
4069
+ "<%= config.bin %> <%= command.id %>"
4210
4070
  ],
4211
4071
  "flags": {
4212
- "force": {
4213
- "aliases": [
4214
- "yes",
4215
- "y"
4216
- ],
4217
- "char": "f",
4218
- "description": "Skip confirmation prompt",
4219
- "name": "force",
4220
- "allowNo": false,
4221
- "type": "boolean"
4222
- },
4223
- "dry-run": {
4224
- "char": "d",
4225
- "description": "Show what would be removed without removing",
4226
- "name": "dry-run",
4227
- "allowNo": false,
4228
- "type": "boolean"
4229
- },
4230
- "all": {
4231
- "char": "a",
4232
- "description": "Remove all unused images, not just dangling ones",
4233
- "name": "all",
4234
- "allowNo": false,
4235
- "type": "boolean"
4236
- },
4237
- "volumes": {
4238
- "description": "Also prune volumes (dangerous - data loss possible)",
4239
- "name": "volumes",
4240
- "allowNo": false,
4241
- "type": "boolean"
4242
- },
4243
4072
  "json": {
4244
4073
  "description": "Output as JSON for AI agents/scripts",
4245
4074
  "name": "json",
@@ -4256,7 +4085,7 @@
4256
4085
  },
4257
4086
  "hasDynamicHelp": false,
4258
4087
  "hiddenAliases": [],
4259
- "id": "docker:prune",
4088
+ "id": "docker:status",
4260
4089
  "pluginAlias": "@proletariat/cli",
4261
4090
  "pluginName": "@proletariat/cli",
4262
4091
  "pluginType": "core",
@@ -4267,10 +4096,10 @@
4267
4096
  "dist",
4268
4097
  "commands",
4269
4098
  "docker",
4270
- "prune.js"
4099
+ "status.js"
4271
4100
  ]
4272
4101
  },
4273
- "docker:restart": {
4102
+ "docker:stop": {
4274
4103
  "aliases": [],
4275
4104
  "args": {
4276
4105
  "target": {
@@ -4279,7 +4108,7 @@
4279
4108
  "required": true
4280
4109
  }
4281
4110
  },
4282
- "description": "Restart a container (by execution ID, agent name, or container ID)",
4111
+ "description": "Stop a running container (by execution ID, agent name, or container ID)",
4283
4112
  "examples": [
4284
4113
  "<%= config.bin %> <%= command.id %> WORK-001",
4285
4114
  "<%= config.bin %> <%= command.id %> kalanick",
@@ -4299,7 +4128,7 @@
4299
4128
  },
4300
4129
  "time": {
4301
4130
  "char": "t",
4302
- "description": "Seconds to wait before killing the container during stop",
4131
+ "description": "Seconds to wait before killing the container",
4303
4132
  "name": "time",
4304
4133
  "default": 10,
4305
4134
  "hasDynamicHelp": false,
@@ -4322,7 +4151,7 @@
4322
4151
  },
4323
4152
  "hasDynamicHelp": false,
4324
4153
  "hiddenAliases": [],
4325
- "id": "docker:restart",
4154
+ "id": "docker:stop",
4326
4155
  "pluginAlias": "@proletariat/cli",
4327
4156
  "pluginName": "@proletariat/cli",
4328
4157
  "pluginType": "core",
@@ -4333,23 +4162,15 @@
4333
4162
  "dist",
4334
4163
  "commands",
4335
4164
  "docker",
4336
- "restart.js"
4165
+ "stop.js"
4337
4166
  ]
4338
4167
  },
4339
- "docker:shell": {
4168
+ "docker:sync": {
4340
4169
  "aliases": [],
4341
- "args": {
4342
- "target": {
4343
- "description": "Execution ID (WORK-XXX), agent name, or container ID",
4344
- "name": "target",
4345
- "required": true
4346
- }
4347
- },
4348
- "description": "Open a shell in a running container (by execution ID, agent name, or container ID)",
4170
+ "args": {},
4171
+ "description": "Sync container status from Docker into the database",
4349
4172
  "examples": [
4350
- "<%= config.bin %> <%= command.id %> WORK-001",
4351
- "<%= config.bin %> <%= command.id %> kalanick",
4352
- "<%= config.bin %> <%= command.id %> abc123 --shell /bin/bash"
4173
+ "<%= config.bin %> <%= command.id %>"
4353
4174
  ],
4354
4175
  "flags": {
4355
4176
  "json": {
@@ -4364,28 +4185,77 @@
4364
4185
  "name": "machine",
4365
4186
  "allowNo": false,
4366
4187
  "type": "boolean"
4367
- },
4368
- "shell": {
4369
- "char": "s",
4370
- "description": "Shell to use",
4371
- "name": "shell",
4372
- "default": "/bin/sh",
4373
- "hasDynamicHelp": false,
4374
- "multiple": false,
4375
- "type": "option"
4376
- },
4377
- "user": {
4378
- "char": "u",
4379
- "description": "User to run as",
4380
- "name": "user",
4188
+ }
4189
+ },
4190
+ "hasDynamicHelp": false,
4191
+ "hiddenAliases": [],
4192
+ "id": "docker:sync",
4193
+ "pluginAlias": "@proletariat/cli",
4194
+ "pluginName": "@proletariat/cli",
4195
+ "pluginType": "core",
4196
+ "strict": true,
4197
+ "enableJsonFlag": false,
4198
+ "isESM": true,
4199
+ "relativePath": [
4200
+ "dist",
4201
+ "commands",
4202
+ "docker",
4203
+ "sync.js"
4204
+ ]
4205
+ },
4206
+ "execution:config": {
4207
+ "aliases": [],
4208
+ "args": {},
4209
+ "description": "View and update execution preferences",
4210
+ "examples": [
4211
+ "<%= config.bin %> execution config # Interactive menu",
4212
+ "<%= config.bin %> execution config --json # Output current config as JSON",
4213
+ "<%= config.bin %> execution config --list # Show all settings",
4214
+ "<%= config.bin %> execution config --set defaultEnvironment host",
4215
+ "<%= config.bin %> execution config --set outputMode interactive",
4216
+ "<%= config.bin %> execution config --set permissionMode safe",
4217
+ "<%= config.bin %> execution config --setting outputMode --json # Show output mode choices"
4218
+ ],
4219
+ "flags": {
4220
+ "project": {
4221
+ "char": "P",
4222
+ "description": "Project ID (uses first project if only one exists)",
4223
+ "name": "project",
4381
4224
  "hasDynamicHelp": false,
4382
4225
  "multiple": false,
4383
4226
  "type": "option"
4384
4227
  },
4385
- "workdir": {
4386
- "char": "w",
4387
- "description": "Working directory inside the container",
4388
- "name": "workdir",
4228
+ "json": {
4229
+ "description": "Output as JSON for AI agents/scripts",
4230
+ "name": "json",
4231
+ "allowNo": false,
4232
+ "type": "boolean"
4233
+ },
4234
+ "machine": {
4235
+ "char": "m",
4236
+ "description": "Output as JSON for AI agents/scripts",
4237
+ "name": "machine",
4238
+ "allowNo": false,
4239
+ "type": "boolean"
4240
+ },
4241
+ "set": {
4242
+ "char": "s",
4243
+ "description": "Set a config value (format: key value)",
4244
+ "name": "set",
4245
+ "hasDynamicHelp": false,
4246
+ "multiple": true,
4247
+ "type": "option"
4248
+ },
4249
+ "list": {
4250
+ "char": "l",
4251
+ "description": "List all configuration values",
4252
+ "name": "list",
4253
+ "allowNo": false,
4254
+ "type": "boolean"
4255
+ },
4256
+ "setting": {
4257
+ "description": "Navigate to a specific setting prompt (for agent navigation)",
4258
+ "name": "setting",
4389
4259
  "hasDynamicHelp": false,
4390
4260
  "multiple": false,
4391
4261
  "type": "option"
@@ -4393,36 +4263,38 @@
4393
4263
  },
4394
4264
  "hasDynamicHelp": false,
4395
4265
  "hiddenAliases": [],
4396
- "id": "docker:shell",
4266
+ "id": "execution:config",
4397
4267
  "pluginAlias": "@proletariat/cli",
4398
4268
  "pluginName": "@proletariat/cli",
4399
4269
  "pluginType": "core",
4400
4270
  "strict": true,
4401
- "enableJsonFlag": false,
4402
4271
  "isESM": true,
4403
4272
  "relativePath": [
4404
4273
  "dist",
4405
4274
  "commands",
4406
- "docker",
4407
- "shell.js"
4275
+ "execution",
4276
+ "config.js"
4408
4277
  ]
4409
4278
  },
4410
- "docker:start": {
4279
+ "execution": {
4411
4280
  "aliases": [],
4412
- "args": {
4413
- "target": {
4414
- "description": "Execution ID (WORK-XXX), agent name, or container ID",
4415
- "name": "target",
4416
- "required": true
4417
- }
4418
- },
4419
- "description": "Start a stopped container (by execution ID, agent name, or container ID)",
4281
+ "args": {},
4282
+ "description": "Single execution operations (view, logs, stop)",
4420
4283
  "examples": [
4421
- "<%= config.bin %> <%= command.id %> WORK-001",
4422
- "<%= config.bin %> <%= command.id %> kalanick",
4423
- "<%= config.bin %> <%= command.id %> abc123"
4284
+ "<%= config.bin %> <%= command.id %>",
4285
+ "<%= config.bin %> <%= command.id %> view WORK-001",
4286
+ "<%= config.bin %> <%= command.id %> logs WORK-001",
4287
+ "<%= config.bin %> <%= command.id %> stop WORK-001"
4424
4288
  ],
4425
4289
  "flags": {
4290
+ "project": {
4291
+ "char": "P",
4292
+ "description": "Project ID (uses first project if only one exists)",
4293
+ "name": "project",
4294
+ "hasDynamicHelp": false,
4295
+ "multiple": false,
4296
+ "type": "option"
4297
+ },
4426
4298
  "json": {
4427
4299
  "description": "Output as JSON for AI agents/scripts",
4428
4300
  "name": "json",
@@ -4435,39 +4307,42 @@
4435
4307
  "name": "machine",
4436
4308
  "allowNo": false,
4437
4309
  "type": "boolean"
4438
- },
4439
- "attach": {
4440
- "char": "a",
4441
- "description": "Attach to container after starting",
4442
- "name": "attach",
4443
- "allowNo": false,
4444
- "type": "boolean"
4445
4310
  }
4446
4311
  },
4447
4312
  "hasDynamicHelp": false,
4448
4313
  "hiddenAliases": [],
4449
- "id": "docker:start",
4314
+ "id": "execution",
4450
4315
  "pluginAlias": "@proletariat/cli",
4451
4316
  "pluginName": "@proletariat/cli",
4452
4317
  "pluginType": "core",
4453
4318
  "strict": true,
4454
- "enableJsonFlag": false,
4455
4319
  "isESM": true,
4456
4320
  "relativePath": [
4457
4321
  "dist",
4458
4322
  "commands",
4459
- "docker",
4460
- "start.js"
4323
+ "execution",
4324
+ "index.js"
4461
4325
  ]
4462
4326
  },
4463
- "docker:status": {
4327
+ "execution:list": {
4464
4328
  "aliases": [],
4465
4329
  "args": {},
4466
- "description": "Check if Docker daemon is running",
4330
+ "description": "List running and recent executions",
4467
4331
  "examples": [
4468
- "<%= config.bin %> <%= command.id %>"
4332
+ "<%= config.bin %> <%= command.id %>",
4333
+ "<%= config.bin %> <%= command.id %> --status running",
4334
+ "<%= config.bin %> <%= command.id %> --agent alice",
4335
+ "<%= config.bin %> <%= command.id %> --limit 50"
4469
4336
  ],
4470
4337
  "flags": {
4338
+ "project": {
4339
+ "char": "P",
4340
+ "description": "Project ID (uses first project if only one exists)",
4341
+ "name": "project",
4342
+ "hasDynamicHelp": false,
4343
+ "multiple": false,
4344
+ "type": "option"
4345
+ },
4471
4346
  "json": {
4472
4347
  "description": "Output as JSON for AI agents/scripts",
4473
4348
  "name": "json",
@@ -4480,56 +4355,147 @@
4480
4355
  "name": "machine",
4481
4356
  "allowNo": false,
4482
4357
  "type": "boolean"
4358
+ },
4359
+ "status": {
4360
+ "char": "s",
4361
+ "description": "Filter by status",
4362
+ "name": "status",
4363
+ "hasDynamicHelp": false,
4364
+ "multiple": false,
4365
+ "options": [
4366
+ "starting",
4367
+ "running",
4368
+ "completed",
4369
+ "failed",
4370
+ "stopped"
4371
+ ],
4372
+ "type": "option"
4373
+ },
4374
+ "agent": {
4375
+ "char": "a",
4376
+ "description": "Filter by agent name",
4377
+ "name": "agent",
4378
+ "hasDynamicHelp": false,
4379
+ "multiple": false,
4380
+ "type": "option"
4381
+ },
4382
+ "limit": {
4383
+ "char": "l",
4384
+ "description": "Number of results",
4385
+ "name": "limit",
4386
+ "default": 20,
4387
+ "hasDynamicHelp": false,
4388
+ "multiple": false,
4389
+ "type": "option"
4483
4390
  }
4484
4391
  },
4485
4392
  "hasDynamicHelp": false,
4486
4393
  "hiddenAliases": [],
4487
- "id": "docker:status",
4394
+ "id": "execution:list",
4488
4395
  "pluginAlias": "@proletariat/cli",
4489
4396
  "pluginName": "@proletariat/cli",
4490
4397
  "pluginType": "core",
4491
4398
  "strict": true,
4492
- "enableJsonFlag": false,
4493
4399
  "isESM": true,
4494
4400
  "relativePath": [
4495
4401
  "dist",
4496
4402
  "commands",
4497
- "docker",
4498
- "status.js"
4403
+ "execution",
4404
+ "list.js"
4499
4405
  ]
4500
4406
  },
4501
- "docker:stop": {
4407
+ "execution:logs": {
4502
4408
  "aliases": [],
4503
4409
  "args": {
4504
- "target": {
4505
- "description": "Execution ID (WORK-XXX), agent name, or container ID",
4506
- "name": "target",
4507
- "required": true
4410
+ "id": {
4411
+ "description": "Execution ID - prompts if not provided",
4412
+ "name": "id",
4413
+ "required": false
4508
4414
  }
4509
4415
  },
4510
- "description": "Stop a running container (by execution ID, agent name, or container ID)",
4416
+ "description": "View execution logs",
4511
4417
  "examples": [
4512
4418
  "<%= config.bin %> <%= command.id %> WORK-001",
4513
- "<%= config.bin %> <%= command.id %> kalanick",
4514
- "<%= config.bin %> <%= command.id %> abc123 --force"
4419
+ "<%= config.bin %> <%= command.id %> WORK-001 --follow",
4420
+ "<%= config.bin %> <%= command.id %> WORK-001 --tail 50",
4421
+ "<%= config.bin %> <%= command.id %> # Interactive mode"
4515
4422
  ],
4516
4423
  "flags": {
4517
- "force": {
4518
- "aliases": [
4519
- "yes",
4520
- "y"
4521
- ],
4424
+ "project": {
4425
+ "char": "P",
4426
+ "description": "Project ID (uses first project if only one exists)",
4427
+ "name": "project",
4428
+ "hasDynamicHelp": false,
4429
+ "multiple": false,
4430
+ "type": "option"
4431
+ },
4432
+ "json": {
4433
+ "description": "Output as JSON for AI agents/scripts",
4434
+ "name": "json",
4435
+ "allowNo": false,
4436
+ "type": "boolean"
4437
+ },
4438
+ "machine": {
4439
+ "char": "m",
4440
+ "description": "Output as JSON for AI agents/scripts",
4441
+ "name": "machine",
4442
+ "allowNo": false,
4443
+ "type": "boolean"
4444
+ },
4445
+ "follow": {
4522
4446
  "char": "f",
4523
- "description": "Skip confirmation prompt",
4524
- "name": "force",
4447
+ "description": "Stream logs in real-time",
4448
+ "name": "follow",
4525
4449
  "allowNo": false,
4526
4450
  "type": "boolean"
4527
4451
  },
4528
- "time": {
4529
- "char": "t",
4530
- "description": "Seconds to wait before killing the container",
4531
- "name": "time",
4532
- "default": 10,
4452
+ "tail": {
4453
+ "char": "n",
4454
+ "description": "Show last n lines",
4455
+ "name": "tail",
4456
+ "hasDynamicHelp": false,
4457
+ "multiple": false,
4458
+ "type": "option"
4459
+ }
4460
+ },
4461
+ "hasDynamicHelp": false,
4462
+ "hiddenAliases": [],
4463
+ "id": "execution:logs",
4464
+ "pluginAlias": "@proletariat/cli",
4465
+ "pluginName": "@proletariat/cli",
4466
+ "pluginType": "core",
4467
+ "strict": true,
4468
+ "isESM": true,
4469
+ "relativePath": [
4470
+ "dist",
4471
+ "commands",
4472
+ "execution",
4473
+ "logs.js"
4474
+ ]
4475
+ },
4476
+ "execution:stop": {
4477
+ "aliases": [],
4478
+ "args": {
4479
+ "id": {
4480
+ "description": "Execution ID - prompts if not provided (ignored if --all or --agent used)",
4481
+ "name": "id",
4482
+ "required": false
4483
+ }
4484
+ },
4485
+ "description": "Stop running execution(s)",
4486
+ "examples": [
4487
+ "<%= config.bin %> <%= command.id %> WORK-001",
4488
+ "<%= config.bin %> <%= command.id %> WORK-001 --force",
4489
+ "<%= config.bin %> <%= command.id %> # Interactive mode",
4490
+ "<%= config.bin %> <%= command.id %> --all",
4491
+ "<%= config.bin %> <%= command.id %> --all --force",
4492
+ "<%= config.bin %> <%= command.id %> --agent altman"
4493
+ ],
4494
+ "flags": {
4495
+ "project": {
4496
+ "char": "P",
4497
+ "description": "Project ID (uses first project if only one exists)",
4498
+ "name": "project",
4533
4499
  "hasDynamicHelp": false,
4534
4500
  "multiple": false,
4535
4501
  "type": "option"
@@ -4546,32 +4512,67 @@
4546
4512
  "name": "machine",
4547
4513
  "allowNo": false,
4548
4514
  "type": "boolean"
4515
+ },
4516
+ "force": {
4517
+ "char": "f",
4518
+ "description": "Force kill (SIGKILL instead of SIGTERM)",
4519
+ "name": "force",
4520
+ "allowNo": false,
4521
+ "type": "boolean"
4522
+ },
4523
+ "all": {
4524
+ "description": "Stop all running executions",
4525
+ "name": "all",
4526
+ "allowNo": false,
4527
+ "type": "boolean"
4528
+ },
4529
+ "agent": {
4530
+ "char": "a",
4531
+ "description": "Stop all executions for a specific agent",
4532
+ "name": "agent",
4533
+ "hasDynamicHelp": false,
4534
+ "multiple": false,
4535
+ "type": "option"
4549
4536
  }
4550
4537
  },
4551
4538
  "hasDynamicHelp": false,
4552
4539
  "hiddenAliases": [],
4553
- "id": "docker:stop",
4540
+ "id": "execution:stop",
4554
4541
  "pluginAlias": "@proletariat/cli",
4555
4542
  "pluginName": "@proletariat/cli",
4556
4543
  "pluginType": "core",
4557
4544
  "strict": true,
4558
- "enableJsonFlag": false,
4559
4545
  "isESM": true,
4560
4546
  "relativePath": [
4561
4547
  "dist",
4562
4548
  "commands",
4563
- "docker",
4549
+ "execution",
4564
4550
  "stop.js"
4565
4551
  ]
4566
4552
  },
4567
- "docker:sync": {
4553
+ "execution:view": {
4568
4554
  "aliases": [],
4569
- "args": {},
4570
- "description": "Sync container status from Docker into the database",
4555
+ "args": {
4556
+ "id": {
4557
+ "description": "Execution ID - prompts if not provided",
4558
+ "name": "id",
4559
+ "required": false
4560
+ }
4561
+ },
4562
+ "description": "View details of a specific execution",
4571
4563
  "examples": [
4572
- "<%= config.bin %> <%= command.id %>"
4564
+ "<%= config.bin %> <%= command.id %> WORK-001",
4565
+ "<%= config.bin %> <%= command.id %> # Interactive mode"
4573
4566
  ],
4574
4567
  "flags": {
4568
+ "project": {
4569
+ "char": "P",
4570
+ "description": "Project ID (uses first project if only one exists)",
4571
+ "name": "project",
4572
+ "hasDynamicHelp": false,
4573
+ "multiple": false,
4574
+ "type": "option"
4575
+ },
4575
4576
  "json": {
4576
4577
  "description": "Output as JSON for AI agents/scripts",
4577
4578
  "name": "json",
@@ -4588,18 +4589,17 @@
4588
4589
  },
4589
4590
  "hasDynamicHelp": false,
4590
4591
  "hiddenAliases": [],
4591
- "id": "docker:sync",
4592
+ "id": "execution:view",
4592
4593
  "pluginAlias": "@proletariat/cli",
4593
4594
  "pluginName": "@proletariat/cli",
4594
4595
  "pluginType": "core",
4595
4596
  "strict": true,
4596
- "enableJsonFlag": false,
4597
4597
  "isESM": true,
4598
4598
  "relativePath": [
4599
4599
  "dist",
4600
4600
  "commands",
4601
- "docker",
4602
- "sync.js"
4601
+ "execution",
4602
+ "view.js"
4603
4603
  ]
4604
4604
  },
4605
4605
  "feedback": {
@@ -7233,6 +7233,99 @@
7233
7233
  "index.js"
7234
7234
  ]
7235
7235
  },
7236
+ "run": {
7237
+ "aliases": [],
7238
+ "args": {
7239
+ "task": {
7240
+ "description": "Task description for the agent",
7241
+ "name": "task",
7242
+ "required": true
7243
+ }
7244
+ },
7245
+ "description": "Spawn an agent to work on a task (works anywhere, no HQ required)",
7246
+ "examples": [
7247
+ "<%= config.bin %> run \"fix the login bug\"",
7248
+ "<%= config.bin %> run --runner claude-code \"add dark mode\"",
7249
+ "<%= config.bin %> run -d \"fix the bug\"",
7250
+ "<%= config.bin %> run --runner codex \"add tests\""
7251
+ ],
7252
+ "flags": {
7253
+ "json": {
7254
+ "description": "Output as JSON for AI agents/scripts",
7255
+ "name": "json",
7256
+ "allowNo": false,
7257
+ "type": "boolean"
7258
+ },
7259
+ "machine": {
7260
+ "char": "m",
7261
+ "description": "Output as JSON for AI agents/scripts",
7262
+ "name": "machine",
7263
+ "allowNo": false,
7264
+ "type": "boolean"
7265
+ },
7266
+ "runner": {
7267
+ "char": "r",
7268
+ "description": "Runner to use (claude-code, codex, pi)",
7269
+ "name": "runner",
7270
+ "hasDynamicHelp": false,
7271
+ "multiple": false,
7272
+ "type": "option"
7273
+ },
7274
+ "detached": {
7275
+ "char": "d",
7276
+ "description": "Run in background (detached)",
7277
+ "name": "detached",
7278
+ "allowNo": false,
7279
+ "type": "boolean"
7280
+ },
7281
+ "directory": {
7282
+ "description": "Working directory (default: cwd)",
7283
+ "name": "directory",
7284
+ "hasDynamicHelp": false,
7285
+ "multiple": false,
7286
+ "type": "option"
7287
+ },
7288
+ "permission-mode": {
7289
+ "char": "p",
7290
+ "description": "Permission mode (danger: skip prompts, safe: require approval)",
7291
+ "name": "permission-mode",
7292
+ "hasDynamicHelp": false,
7293
+ "multiple": false,
7294
+ "options": [
7295
+ "danger",
7296
+ "safe"
7297
+ ],
7298
+ "type": "option"
7299
+ },
7300
+ "environment": {
7301
+ "char": "e",
7302
+ "description": "Environment to run in",
7303
+ "name": "environment",
7304
+ "hasDynamicHelp": false,
7305
+ "multiple": false,
7306
+ "options": [
7307
+ "host",
7308
+ "docker",
7309
+ "podman"
7310
+ ],
7311
+ "type": "option"
7312
+ }
7313
+ },
7314
+ "hasDynamicHelp": false,
7315
+ "hiddenAliases": [],
7316
+ "id": "run",
7317
+ "pluginAlias": "@proletariat/cli",
7318
+ "pluginName": "@proletariat/cli",
7319
+ "pluginType": "core",
7320
+ "strict": true,
7321
+ "isESM": true,
7322
+ "relativePath": [
7323
+ "dist",
7324
+ "commands",
7325
+ "run",
7326
+ "index.js"
7327
+ ]
7328
+ },
7236
7329
  "repo:add": {
7237
7330
  "aliases": [],
7238
7331
  "args": {
@@ -7678,99 +7771,6 @@
7678
7771
  "view.js"
7679
7772
  ]
7680
7773
  },
7681
- "run": {
7682
- "aliases": [],
7683
- "args": {
7684
- "task": {
7685
- "description": "Task description for the agent",
7686
- "name": "task",
7687
- "required": true
7688
- }
7689
- },
7690
- "description": "Spawn an agent to work on a task (works anywhere, no HQ required)",
7691
- "examples": [
7692
- "<%= config.bin %> run \"fix the login bug\"",
7693
- "<%= config.bin %> run --runner claude-code \"add dark mode\"",
7694
- "<%= config.bin %> run -d \"fix the bug\"",
7695
- "<%= config.bin %> run --runner codex \"add tests\""
7696
- ],
7697
- "flags": {
7698
- "json": {
7699
- "description": "Output as JSON for AI agents/scripts",
7700
- "name": "json",
7701
- "allowNo": false,
7702
- "type": "boolean"
7703
- },
7704
- "machine": {
7705
- "char": "m",
7706
- "description": "Output as JSON for AI agents/scripts",
7707
- "name": "machine",
7708
- "allowNo": false,
7709
- "type": "boolean"
7710
- },
7711
- "runner": {
7712
- "char": "r",
7713
- "description": "Runner to use (claude-code, codex, pi)",
7714
- "name": "runner",
7715
- "hasDynamicHelp": false,
7716
- "multiple": false,
7717
- "type": "option"
7718
- },
7719
- "detached": {
7720
- "char": "d",
7721
- "description": "Run in background (detached)",
7722
- "name": "detached",
7723
- "allowNo": false,
7724
- "type": "boolean"
7725
- },
7726
- "directory": {
7727
- "description": "Working directory (default: cwd)",
7728
- "name": "directory",
7729
- "hasDynamicHelp": false,
7730
- "multiple": false,
7731
- "type": "option"
7732
- },
7733
- "permission-mode": {
7734
- "char": "p",
7735
- "description": "Permission mode (danger: skip prompts, safe: require approval)",
7736
- "name": "permission-mode",
7737
- "hasDynamicHelp": false,
7738
- "multiple": false,
7739
- "options": [
7740
- "danger",
7741
- "safe"
7742
- ],
7743
- "type": "option"
7744
- },
7745
- "environment": {
7746
- "char": "e",
7747
- "description": "Environment to run in",
7748
- "name": "environment",
7749
- "hasDynamicHelp": false,
7750
- "multiple": false,
7751
- "options": [
7752
- "host",
7753
- "docker",
7754
- "podman"
7755
- ],
7756
- "type": "option"
7757
- }
7758
- },
7759
- "hasDynamicHelp": false,
7760
- "hiddenAliases": [],
7761
- "id": "run",
7762
- "pluginAlias": "@proletariat/cli",
7763
- "pluginName": "@proletariat/cli",
7764
- "pluginType": "core",
7765
- "strict": true,
7766
- "isESM": true,
7767
- "relativePath": [
7768
- "dist",
7769
- "commands",
7770
- "run",
7771
- "index.js"
7772
- ]
7773
- },
7774
7774
  "shortcut:connect": {
7775
7775
  "aliases": [],
7776
7776
  "args": {},
@@ -7922,7 +7922,8 @@
7922
7922
  "examples": [
7923
7923
  "<%= config.bin %> session cleanup",
7924
7924
  "<%= config.bin %> session cleanup --dry-run",
7925
- "<%= config.bin %> session cleanup --force"
7925
+ "<%= config.bin %> session cleanup --force",
7926
+ "<%= config.bin %> session cleanup --force --yes"
7926
7927
  ],
7927
7928
  "flags": {
7928
7929
  "project": {
@@ -7959,6 +7960,13 @@
7959
7960
  "name": "force",
7960
7961
  "allowNo": false,
7961
7962
  "type": "boolean"
7963
+ },
7964
+ "yes": {
7965
+ "char": "y",
7966
+ "description": "Skip confirmation prompt when using --force",
7967
+ "name": "yes",
7968
+ "allowNo": false,
7969
+ "type": "boolean"
7962
7970
  }
7963
7971
  },
7964
7972
  "hasDynamicHelp": false,
@@ -8574,32 +8582,101 @@
8574
8582
  "allowNo": false,
8575
8583
  "type": "boolean"
8576
8584
  },
8577
- "force": {
8578
- "char": "f",
8579
- "description": "Force cleanup even if agents have uncommitted/unpushed work",
8580
- "name": "force",
8585
+ "force": {
8586
+ "char": "f",
8587
+ "description": "Force cleanup even if agents have uncommitted/unpushed work",
8588
+ "name": "force",
8589
+ "allowNo": false,
8590
+ "type": "boolean"
8591
+ },
8592
+ "yes": {
8593
+ "char": "y",
8594
+ "description": "Skip confirmation prompt",
8595
+ "name": "yes",
8596
+ "allowNo": false,
8597
+ "type": "boolean"
8598
+ },
8599
+ "age": {
8600
+ "description": "Only prune sessions/agents idle for more than N hours (default: 0 = all idle)",
8601
+ "name": "age",
8602
+ "default": 0,
8603
+ "hasDynamicHelp": false,
8604
+ "multiple": false,
8605
+ "type": "option"
8606
+ }
8607
+ },
8608
+ "hasDynamicHelp": false,
8609
+ "hiddenAliases": [],
8610
+ "id": "session:prune",
8611
+ "pluginAlias": "@proletariat/cli",
8612
+ "pluginName": "@proletariat/cli",
8613
+ "pluginType": "core",
8614
+ "strict": true,
8615
+ "isESM": true,
8616
+ "relativePath": [
8617
+ "dist",
8618
+ "commands",
8619
+ "session",
8620
+ "prune.js"
8621
+ ]
8622
+ },
8623
+ "session:report": {
8624
+ "aliases": [],
8625
+ "args": {},
8626
+ "description": "Report agent session lifecycle events and trigger cleanup",
8627
+ "examples": [
8628
+ "<%= config.bin %> session report --agent bold-turing --status exited",
8629
+ "<%= config.bin %> session report --agent bold-turing --status completed",
8630
+ "<%= config.bin %> session report --agent bold-turing --status errored"
8631
+ ],
8632
+ "flags": {
8633
+ "project": {
8634
+ "char": "P",
8635
+ "description": "Project ID (uses first project if only one exists)",
8636
+ "name": "project",
8637
+ "hasDynamicHelp": false,
8638
+ "multiple": false,
8639
+ "type": "option"
8640
+ },
8641
+ "json": {
8642
+ "description": "Output as JSON for AI agents/scripts",
8643
+ "name": "json",
8581
8644
  "allowNo": false,
8582
8645
  "type": "boolean"
8583
8646
  },
8584
- "yes": {
8585
- "char": "y",
8586
- "description": "Skip confirmation prompt",
8587
- "name": "yes",
8647
+ "machine": {
8648
+ "char": "m",
8649
+ "description": "Output as JSON for AI agents/scripts",
8650
+ "name": "machine",
8588
8651
  "allowNo": false,
8589
8652
  "type": "boolean"
8590
8653
  },
8591
- "age": {
8592
- "description": "Only prune sessions/agents idle for more than N hours (default: 0 = all idle)",
8593
- "name": "age",
8594
- "default": 0,
8654
+ "agent": {
8655
+ "description": "Agent name",
8656
+ "name": "agent",
8657
+ "required": true,
8658
+ "hasDynamicHelp": false,
8659
+ "multiple": false,
8660
+ "type": "option"
8661
+ },
8662
+ "status": {
8663
+ "description": "Session status (started, completed, errored, exited)",
8664
+ "name": "status",
8665
+ "required": true,
8595
8666
  "hasDynamicHelp": false,
8596
8667
  "multiple": false,
8668
+ "options": [
8669
+ "started",
8670
+ "completed",
8671
+ "errored",
8672
+ "exited"
8673
+ ],
8597
8674
  "type": "option"
8598
8675
  }
8599
8676
  },
8600
8677
  "hasDynamicHelp": false,
8601
8678
  "hiddenAliases": [],
8602
- "id": "session:prune",
8679
+ "id": "session:report",
8603
8680
  "pluginAlias": "@proletariat/cli",
8604
8681
  "pluginName": "@proletariat/cli",
8605
8682
  "pluginType": "core",
@@ -8609,7 +8686,7 @@
8609
8686
  "dist",
8610
8687
  "commands",
8611
8688
  "session",
8612
- "prune.js"
8689
+ "report.js"
8613
8690
  ]
8614
8691
  },
8615
8692
  "session:restart": {
@@ -9367,17 +9444,244 @@
9367
9444
  "allowNo": false,
9368
9445
  "type": "boolean"
9369
9446
  },
9370
- "machine": {
9371
- "char": "m",
9372
- "description": "Output as JSON for AI agents/scripts",
9373
- "name": "machine",
9447
+ "machine": {
9448
+ "char": "m",
9449
+ "description": "Output as JSON for AI agents/scripts",
9450
+ "name": "machine",
9451
+ "allowNo": false,
9452
+ "type": "boolean"
9453
+ }
9454
+ },
9455
+ "hasDynamicHelp": false,
9456
+ "hiddenAliases": [],
9457
+ "id": "theme:set",
9458
+ "pluginAlias": "@proletariat/cli",
9459
+ "pluginName": "@proletariat/cli",
9460
+ "pluginType": "core",
9461
+ "strict": true,
9462
+ "isESM": true,
9463
+ "relativePath": [
9464
+ "dist",
9465
+ "commands",
9466
+ "agent",
9467
+ "themes",
9468
+ "set.js"
9469
+ ]
9470
+ },
9471
+ "trello:configure": {
9472
+ "aliases": [],
9473
+ "args": {},
9474
+ "description": "Connect to Trello and configure authentication",
9475
+ "examples": [
9476
+ "<%= config.bin %> <%= command.id %>",
9477
+ "<%= config.bin %> <%= command.id %> --check",
9478
+ "<%= config.bin %> <%= command.id %> --force",
9479
+ "<%= config.bin %> <%= command.id %> --disconnect",
9480
+ "TRELLO_API_KEY=... TRELLO_API_TOKEN=... <%= config.bin %> <%= command.id %>",
9481
+ "<%= config.bin %> <%= command.id %> --json"
9482
+ ],
9483
+ "flags": {
9484
+ "project": {
9485
+ "char": "P",
9486
+ "description": "Project ID (uses first project if only one exists)",
9487
+ "name": "project",
9488
+ "hasDynamicHelp": false,
9489
+ "multiple": false,
9490
+ "type": "option"
9491
+ },
9492
+ "json": {
9493
+ "description": "Output as JSON for AI agents/scripts",
9494
+ "name": "json",
9495
+ "allowNo": false,
9496
+ "type": "boolean"
9497
+ },
9498
+ "machine": {
9499
+ "char": "m",
9500
+ "description": "Output as JSON for AI agents/scripts",
9501
+ "name": "machine",
9502
+ "allowNo": false,
9503
+ "type": "boolean"
9504
+ },
9505
+ "check": {
9506
+ "description": "Only check if Trello credentials are valid (do not prompt)",
9507
+ "name": "check",
9508
+ "allowNo": false,
9509
+ "type": "boolean"
9510
+ },
9511
+ "force": {
9512
+ "description": "Force re-authentication even if credentials exist",
9513
+ "name": "force",
9514
+ "allowNo": false,
9515
+ "type": "boolean"
9516
+ },
9517
+ "disconnect": {
9518
+ "description": "Remove stored Trello credentials and configuration",
9519
+ "name": "disconnect",
9520
+ "allowNo": false,
9521
+ "type": "boolean"
9522
+ },
9523
+ "board": {
9524
+ "description": "Default board ID or name",
9525
+ "name": "board",
9526
+ "hasDynamicHelp": false,
9527
+ "multiple": false,
9528
+ "type": "option"
9529
+ }
9530
+ },
9531
+ "hasDynamicHelp": false,
9532
+ "hiddenAliases": [],
9533
+ "id": "trello:configure",
9534
+ "pluginAlias": "@proletariat/cli",
9535
+ "pluginName": "@proletariat/cli",
9536
+ "pluginType": "core",
9537
+ "strict": true,
9538
+ "isESM": true,
9539
+ "relativePath": [
9540
+ "dist",
9541
+ "commands",
9542
+ "trello",
9543
+ "configure.js"
9544
+ ]
9545
+ },
9546
+ "trello:import": {
9547
+ "aliases": [],
9548
+ "args": {},
9549
+ "description": "Import Trello cards into PMO as tickets",
9550
+ "examples": [
9551
+ "<%= config.bin %> <%= command.id %> # Interactive: select cards from board",
9552
+ "<%= config.bin %> <%= command.id %> --limit 50 # Import up to 50 cards",
9553
+ "<%= config.bin %> <%= command.id %> --all # Import all matching cards",
9554
+ "<%= config.bin %> <%= command.id %> --dry-run # Preview what would be imported",
9555
+ "<%= config.bin %> <%= command.id %> --json # JSON output for scripting"
9556
+ ],
9557
+ "flags": {
9558
+ "project": {
9559
+ "char": "P",
9560
+ "description": "Project ID (uses first project if only one exists)",
9561
+ "name": "project",
9562
+ "hasDynamicHelp": false,
9563
+ "multiple": false,
9564
+ "type": "option"
9565
+ },
9566
+ "json": {
9567
+ "description": "Output as JSON for AI agents/scripts",
9568
+ "name": "json",
9569
+ "allowNo": false,
9570
+ "type": "boolean"
9571
+ },
9572
+ "machine": {
9573
+ "char": "m",
9574
+ "description": "Output as JSON for AI agents/scripts",
9575
+ "name": "machine",
9576
+ "allowNo": false,
9577
+ "type": "boolean"
9578
+ },
9579
+ "limit": {
9580
+ "char": "n",
9581
+ "description": "Maximum number of cards to import",
9582
+ "name": "limit",
9583
+ "default": 50,
9584
+ "hasDynamicHelp": false,
9585
+ "multiple": false,
9586
+ "type": "option"
9587
+ },
9588
+ "all": {
9589
+ "char": "a",
9590
+ "description": "Import all matching cards without interactive selection",
9591
+ "name": "all",
9592
+ "allowNo": false,
9593
+ "type": "boolean"
9594
+ },
9595
+ "dry-run": {
9596
+ "description": "Preview cards that would be imported without creating tickets",
9597
+ "name": "dry-run",
9598
+ "allowNo": false,
9599
+ "type": "boolean"
9600
+ }
9601
+ },
9602
+ "hasDynamicHelp": false,
9603
+ "hiddenAliases": [],
9604
+ "id": "trello:import",
9605
+ "pluginAlias": "@proletariat/cli",
9606
+ "pluginName": "@proletariat/cli",
9607
+ "pluginType": "core",
9608
+ "strict": true,
9609
+ "isESM": true,
9610
+ "relativePath": [
9611
+ "dist",
9612
+ "commands",
9613
+ "trello",
9614
+ "import.js"
9615
+ ]
9616
+ },
9617
+ "trello:sync": {
9618
+ "aliases": [],
9619
+ "args": {},
9620
+ "description": "Sync PMO tickets to Trello cards",
9621
+ "examples": [
9622
+ "<%= config.bin %> <%= command.id %> --ticket TKT-001 --card abc123",
9623
+ "<%= config.bin %> <%= command.id %> --ticket TKT-001 --create-missing",
9624
+ "<%= config.bin %> <%= command.id %> --dry-run"
9625
+ ],
9626
+ "flags": {
9627
+ "project": {
9628
+ "char": "P",
9629
+ "description": "Project ID (uses first project if only one exists)",
9630
+ "name": "project",
9631
+ "hasDynamicHelp": false,
9632
+ "multiple": false,
9633
+ "type": "option"
9634
+ },
9635
+ "json": {
9636
+ "description": "Output as JSON for AI agents/scripts",
9637
+ "name": "json",
9638
+ "allowNo": false,
9639
+ "type": "boolean"
9640
+ },
9641
+ "machine": {
9642
+ "char": "m",
9643
+ "description": "Output as JSON for AI agents/scripts",
9644
+ "name": "machine",
9645
+ "allowNo": false,
9646
+ "type": "boolean"
9647
+ },
9648
+ "ticket": {
9649
+ "description": "PMO ticket ID to sync (syncs all mapped tickets if omitted)",
9650
+ "name": "ticket",
9651
+ "hasDynamicHelp": false,
9652
+ "multiple": false,
9653
+ "type": "option"
9654
+ },
9655
+ "card": {
9656
+ "description": "Trello card ID to map to --ticket",
9657
+ "name": "card",
9658
+ "hasDynamicHelp": false,
9659
+ "multiple": false,
9660
+ "type": "option"
9661
+ },
9662
+ "list": {
9663
+ "description": "Trello list ID used with --create-missing",
9664
+ "name": "list",
9665
+ "hasDynamicHelp": false,
9666
+ "multiple": false,
9667
+ "type": "option"
9668
+ },
9669
+ "create-missing": {
9670
+ "description": "Create Trello card when no mapping exists (requires list)",
9671
+ "name": "create-missing",
9672
+ "allowNo": false,
9673
+ "type": "boolean"
9674
+ },
9675
+ "dry-run": {
9676
+ "description": "Preview sync operations without making changes",
9677
+ "name": "dry-run",
9374
9678
  "allowNo": false,
9375
9679
  "type": "boolean"
9376
9680
  }
9377
9681
  },
9378
9682
  "hasDynamicHelp": false,
9379
9683
  "hiddenAliases": [],
9380
- "id": "theme:set",
9684
+ "id": "trello:sync",
9381
9685
  "pluginAlias": "@proletariat/cli",
9382
9686
  "pluginName": "@proletariat/cli",
9383
9687
  "pluginType": "core",
@@ -9386,9 +9690,8 @@
9386
9690
  "relativePath": [
9387
9691
  "dist",
9388
9692
  "commands",
9389
- "agent",
9390
- "themes",
9391
- "set.js"
9693
+ "trello",
9694
+ "sync.js"
9392
9695
  ]
9393
9696
  },
9394
9697
  "tools:add": {
@@ -9625,264 +9928,38 @@
9625
9928
  },
9626
9929
  "description": "Remove a tool from the registry",
9627
9930
  "examples": [
9628
- "<%= config.bin %> tools remove arcade",
9629
- "<%= config.bin %> tools remove ffmpeg"
9630
- ],
9631
- "flags": {
9632
- "json": {
9633
- "description": "Output as JSON for AI agents/scripts",
9634
- "name": "json",
9635
- "allowNo": false,
9636
- "type": "boolean"
9637
- },
9638
- "machine": {
9639
- "char": "m",
9640
- "description": "Output as JSON for AI agents/scripts",
9641
- "name": "machine",
9642
- "allowNo": false,
9643
- "type": "boolean"
9644
- }
9645
- },
9646
- "hasDynamicHelp": false,
9647
- "hiddenAliases": [],
9648
- "id": "tools:remove",
9649
- "pluginAlias": "@proletariat/cli",
9650
- "pluginName": "@proletariat/cli",
9651
- "pluginType": "core",
9652
- "strict": true,
9653
- "enableJsonFlag": false,
9654
- "isESM": true,
9655
- "relativePath": [
9656
- "dist",
9657
- "commands",
9658
- "tools",
9659
- "remove.js"
9660
- ]
9661
- },
9662
- "trello:configure": {
9663
- "aliases": [],
9664
- "args": {},
9665
- "description": "Connect to Trello and configure authentication",
9666
- "examples": [
9667
- "<%= config.bin %> <%= command.id %>",
9668
- "<%= config.bin %> <%= command.id %> --check",
9669
- "<%= config.bin %> <%= command.id %> --force",
9670
- "<%= config.bin %> <%= command.id %> --disconnect",
9671
- "TRELLO_API_KEY=... TRELLO_API_TOKEN=... <%= config.bin %> <%= command.id %>",
9672
- "<%= config.bin %> <%= command.id %> --json"
9673
- ],
9674
- "flags": {
9675
- "project": {
9676
- "char": "P",
9677
- "description": "Project ID (uses first project if only one exists)",
9678
- "name": "project",
9679
- "hasDynamicHelp": false,
9680
- "multiple": false,
9681
- "type": "option"
9682
- },
9683
- "json": {
9684
- "description": "Output as JSON for AI agents/scripts",
9685
- "name": "json",
9686
- "allowNo": false,
9687
- "type": "boolean"
9688
- },
9689
- "machine": {
9690
- "char": "m",
9691
- "description": "Output as JSON for AI agents/scripts",
9692
- "name": "machine",
9693
- "allowNo": false,
9694
- "type": "boolean"
9695
- },
9696
- "check": {
9697
- "description": "Only check if Trello credentials are valid (do not prompt)",
9698
- "name": "check",
9699
- "allowNo": false,
9700
- "type": "boolean"
9701
- },
9702
- "force": {
9703
- "description": "Force re-authentication even if credentials exist",
9704
- "name": "force",
9705
- "allowNo": false,
9706
- "type": "boolean"
9707
- },
9708
- "disconnect": {
9709
- "description": "Remove stored Trello credentials and configuration",
9710
- "name": "disconnect",
9711
- "allowNo": false,
9712
- "type": "boolean"
9713
- },
9714
- "board": {
9715
- "description": "Default board ID or name",
9716
- "name": "board",
9717
- "hasDynamicHelp": false,
9718
- "multiple": false,
9719
- "type": "option"
9720
- }
9721
- },
9722
- "hasDynamicHelp": false,
9723
- "hiddenAliases": [],
9724
- "id": "trello:configure",
9725
- "pluginAlias": "@proletariat/cli",
9726
- "pluginName": "@proletariat/cli",
9727
- "pluginType": "core",
9728
- "strict": true,
9729
- "isESM": true,
9730
- "relativePath": [
9731
- "dist",
9732
- "commands",
9733
- "trello",
9734
- "configure.js"
9735
- ]
9736
- },
9737
- "trello:import": {
9738
- "aliases": [],
9739
- "args": {},
9740
- "description": "Import Trello cards into PMO as tickets",
9741
- "examples": [
9742
- "<%= config.bin %> <%= command.id %> # Interactive: select cards from board",
9743
- "<%= config.bin %> <%= command.id %> --limit 50 # Import up to 50 cards",
9744
- "<%= config.bin %> <%= command.id %> --all # Import all matching cards",
9745
- "<%= config.bin %> <%= command.id %> --dry-run # Preview what would be imported",
9746
- "<%= config.bin %> <%= command.id %> --json # JSON output for scripting"
9747
- ],
9748
- "flags": {
9749
- "project": {
9750
- "char": "P",
9751
- "description": "Project ID (uses first project if only one exists)",
9752
- "name": "project",
9753
- "hasDynamicHelp": false,
9754
- "multiple": false,
9755
- "type": "option"
9756
- },
9757
- "json": {
9758
- "description": "Output as JSON for AI agents/scripts",
9759
- "name": "json",
9760
- "allowNo": false,
9761
- "type": "boolean"
9762
- },
9763
- "machine": {
9764
- "char": "m",
9765
- "description": "Output as JSON for AI agents/scripts",
9766
- "name": "machine",
9767
- "allowNo": false,
9768
- "type": "boolean"
9769
- },
9770
- "limit": {
9771
- "char": "n",
9772
- "description": "Maximum number of cards to import",
9773
- "name": "limit",
9774
- "default": 50,
9775
- "hasDynamicHelp": false,
9776
- "multiple": false,
9777
- "type": "option"
9778
- },
9779
- "all": {
9780
- "char": "a",
9781
- "description": "Import all matching cards without interactive selection",
9782
- "name": "all",
9783
- "allowNo": false,
9784
- "type": "boolean"
9785
- },
9786
- "dry-run": {
9787
- "description": "Preview cards that would be imported without creating tickets",
9788
- "name": "dry-run",
9789
- "allowNo": false,
9790
- "type": "boolean"
9791
- }
9792
- },
9793
- "hasDynamicHelp": false,
9794
- "hiddenAliases": [],
9795
- "id": "trello:import",
9796
- "pluginAlias": "@proletariat/cli",
9797
- "pluginName": "@proletariat/cli",
9798
- "pluginType": "core",
9799
- "strict": true,
9800
- "isESM": true,
9801
- "relativePath": [
9802
- "dist",
9803
- "commands",
9804
- "trello",
9805
- "import.js"
9806
- ]
9807
- },
9808
- "trello:sync": {
9809
- "aliases": [],
9810
- "args": {},
9811
- "description": "Sync PMO tickets to Trello cards",
9812
- "examples": [
9813
- "<%= config.bin %> <%= command.id %> --ticket TKT-001 --card abc123",
9814
- "<%= config.bin %> <%= command.id %> --ticket TKT-001 --create-missing",
9815
- "<%= config.bin %> <%= command.id %> --dry-run"
9816
- ],
9817
- "flags": {
9818
- "project": {
9819
- "char": "P",
9820
- "description": "Project ID (uses first project if only one exists)",
9821
- "name": "project",
9822
- "hasDynamicHelp": false,
9823
- "multiple": false,
9824
- "type": "option"
9825
- },
9826
- "json": {
9827
- "description": "Output as JSON for AI agents/scripts",
9828
- "name": "json",
9829
- "allowNo": false,
9830
- "type": "boolean"
9831
- },
9832
- "machine": {
9833
- "char": "m",
9834
- "description": "Output as JSON for AI agents/scripts",
9835
- "name": "machine",
9836
- "allowNo": false,
9837
- "type": "boolean"
9838
- },
9839
- "ticket": {
9840
- "description": "PMO ticket ID to sync (syncs all mapped tickets if omitted)",
9841
- "name": "ticket",
9842
- "hasDynamicHelp": false,
9843
- "multiple": false,
9844
- "type": "option"
9845
- },
9846
- "card": {
9847
- "description": "Trello card ID to map to --ticket",
9848
- "name": "card",
9849
- "hasDynamicHelp": false,
9850
- "multiple": false,
9851
- "type": "option"
9852
- },
9853
- "list": {
9854
- "description": "Trello list ID used with --create-missing",
9855
- "name": "list",
9856
- "hasDynamicHelp": false,
9857
- "multiple": false,
9858
- "type": "option"
9859
- },
9860
- "create-missing": {
9861
- "description": "Create Trello card when no mapping exists (requires list)",
9862
- "name": "create-missing",
9931
+ "<%= config.bin %> tools remove arcade",
9932
+ "<%= config.bin %> tools remove ffmpeg"
9933
+ ],
9934
+ "flags": {
9935
+ "json": {
9936
+ "description": "Output as JSON for AI agents/scripts",
9937
+ "name": "json",
9863
9938
  "allowNo": false,
9864
9939
  "type": "boolean"
9865
9940
  },
9866
- "dry-run": {
9867
- "description": "Preview sync operations without making changes",
9868
- "name": "dry-run",
9941
+ "machine": {
9942
+ "char": "m",
9943
+ "description": "Output as JSON for AI agents/scripts",
9944
+ "name": "machine",
9869
9945
  "allowNo": false,
9870
9946
  "type": "boolean"
9871
9947
  }
9872
9948
  },
9873
9949
  "hasDynamicHelp": false,
9874
9950
  "hiddenAliases": [],
9875
- "id": "trello:sync",
9951
+ "id": "tools:remove",
9876
9952
  "pluginAlias": "@proletariat/cli",
9877
9953
  "pluginName": "@proletariat/cli",
9878
9954
  "pluginType": "core",
9879
9955
  "strict": true,
9956
+ "enableJsonFlag": false,
9880
9957
  "isESM": true,
9881
9958
  "relativePath": [
9882
9959
  "dist",
9883
9960
  "commands",
9884
- "trello",
9885
- "sync.js"
9961
+ "tools",
9962
+ "remove.js"
9886
9963
  ]
9887
9964
  },
9888
9965
  "ticket:bulk": {
@@ -11545,241 +11622,7 @@
11545
11622
  "dist",
11546
11623
  "commands",
11547
11624
  "version",
11548
- "bump.js"
11549
- ]
11550
- },
11551
- "workspace:add": {
11552
- "aliases": [],
11553
- "args": {
11554
- "path": {
11555
- "description": "Path to the workspace to register",
11556
- "name": "path",
11557
- "required": true
11558
- }
11559
- },
11560
- "description": "Register an existing workspace in the machine config",
11561
- "examples": [
11562
- "<%= config.bin %> <%= command.id %> /path/to/workspace",
11563
- "<%= config.bin %> <%= command.id %> . --name my-workspace",
11564
- "<%= config.bin %> <%= command.id %> ~/projects/my-hq"
11565
- ],
11566
- "flags": {
11567
- "json": {
11568
- "description": "Output as JSON for AI agents/scripts",
11569
- "name": "json",
11570
- "allowNo": false,
11571
- "type": "boolean"
11572
- },
11573
- "machine": {
11574
- "char": "m",
11575
- "description": "Output as JSON for AI agents/scripts",
11576
- "name": "machine",
11577
- "allowNo": false,
11578
- "type": "boolean"
11579
- },
11580
- "name": {
11581
- "char": "n",
11582
- "description": "Custom name for the workspace (defaults to directory basename or workspace config name)",
11583
- "name": "name",
11584
- "hasDynamicHelp": false,
11585
- "multiple": false,
11586
- "type": "option"
11587
- }
11588
- },
11589
- "hasDynamicHelp": false,
11590
- "hiddenAliases": [],
11591
- "id": "workspace:add",
11592
- "pluginAlias": "@proletariat/cli",
11593
- "pluginName": "@proletariat/cli",
11594
- "pluginType": "core",
11595
- "strict": true,
11596
- "enableJsonFlag": false,
11597
- "isESM": true,
11598
- "relativePath": [
11599
- "dist",
11600
- "commands",
11601
- "workspace",
11602
- "add.js"
11603
- ]
11604
- },
11605
- "workspace:list": {
11606
- "aliases": [],
11607
- "args": {},
11608
- "description": "List all registered and discovered HQ workspaces",
11609
- "examples": [
11610
- "<%= config.bin %> <%= command.id %>",
11611
- "<%= config.bin %> <%= command.id %> --json"
11612
- ],
11613
- "flags": {
11614
- "json": {
11615
- "description": "Output as JSON for AI agents/scripts",
11616
- "name": "json",
11617
- "allowNo": false,
11618
- "type": "boolean"
11619
- },
11620
- "machine": {
11621
- "char": "m",
11622
- "description": "Output as JSON for AI agents/scripts",
11623
- "name": "machine",
11624
- "allowNo": false,
11625
- "type": "boolean"
11626
- }
11627
- },
11628
- "hasDynamicHelp": false,
11629
- "hiddenAliases": [],
11630
- "id": "workspace:list",
11631
- "pluginAlias": "@proletariat/cli",
11632
- "pluginName": "@proletariat/cli",
11633
- "pluginType": "core",
11634
- "strict": true,
11635
- "enableJsonFlag": false,
11636
- "isESM": true,
11637
- "relativePath": [
11638
- "dist",
11639
- "commands",
11640
- "workspace",
11641
- "list.js"
11642
- ]
11643
- },
11644
- "workspace:prune": {
11645
- "aliases": [],
11646
- "args": {},
11647
- "description": "Remove stale workspace entries and agents with deleted worktrees",
11648
- "examples": [
11649
- "<%= config.bin %> <%= command.id %> --dry-run",
11650
- "<%= config.bin %> <%= command.id %>",
11651
- "<%= config.bin %> <%= command.id %> --force"
11652
- ],
11653
- "flags": {
11654
- "json": {
11655
- "description": "Output as JSON for AI agents/scripts",
11656
- "name": "json",
11657
- "allowNo": false,
11658
- "type": "boolean"
11659
- },
11660
- "machine": {
11661
- "char": "m",
11662
- "description": "Output as JSON for AI agents/scripts",
11663
- "name": "machine",
11664
- "allowNo": false,
11665
- "type": "boolean"
11666
- },
11667
- "dry-run": {
11668
- "char": "d",
11669
- "description": "Show what would be removed without removing",
11670
- "name": "dry-run",
11671
- "allowNo": false,
11672
- "type": "boolean"
11673
- },
11674
- "force": {
11675
- "char": "f",
11676
- "description": "Skip confirmation prompt and prune immediately",
11677
- "name": "force",
11678
- "allowNo": false,
11679
- "type": "boolean"
11680
- }
11681
- },
11682
- "hasDynamicHelp": false,
11683
- "hiddenAliases": [],
11684
- "id": "workspace:prune",
11685
- "pluginAlias": "@proletariat/cli",
11686
- "pluginName": "@proletariat/cli",
11687
- "pluginType": "core",
11688
- "strict": true,
11689
- "isESM": true,
11690
- "relativePath": [
11691
- "dist",
11692
- "commands",
11693
- "workspace",
11694
- "prune.js"
11695
- ]
11696
- },
11697
- "workspace:remove": {
11698
- "aliases": [],
11699
- "args": {
11700
- "nameOrPath": {
11701
- "description": "Workspace name or path to unregister",
11702
- "name": "nameOrPath",
11703
- "required": true
11704
- }
11705
- },
11706
- "description": "Unregister a workspace from the machine config (does NOT delete files)",
11707
- "examples": [
11708
- "<%= config.bin %> <%= command.id %> my-workspace",
11709
- "<%= config.bin %> <%= command.id %> /path/to/workspace"
11710
- ],
11711
- "flags": {
11712
- "json": {
11713
- "description": "Output as JSON for AI agents/scripts",
11714
- "name": "json",
11715
- "allowNo": false,
11716
- "type": "boolean"
11717
- },
11718
- "machine": {
11719
- "char": "m",
11720
- "description": "Output as JSON for AI agents/scripts",
11721
- "name": "machine",
11722
- "allowNo": false,
11723
- "type": "boolean"
11724
- }
11725
- },
11726
- "hasDynamicHelp": false,
11727
- "hiddenAliases": [],
11728
- "id": "workspace:remove",
11729
- "pluginAlias": "@proletariat/cli",
11730
- "pluginName": "@proletariat/cli",
11731
- "pluginType": "core",
11732
- "strict": true,
11733
- "isESM": true,
11734
- "relativePath": [
11735
- "dist",
11736
- "commands",
11737
- "workspace",
11738
- "remove.js"
11739
- ]
11740
- },
11741
- "workspace:use": {
11742
- "aliases": [],
11743
- "args": {
11744
- "nameOrPath": {
11745
- "description": "Workspace name or path",
11746
- "name": "nameOrPath",
11747
- "required": true
11748
- }
11749
- },
11750
- "description": "Set the active workspace",
11751
- "examples": [
11752
- "<%= config.bin %> <%= command.id %> my-workspace",
11753
- "<%= config.bin %> <%= command.id %> /path/to/workspace"
11754
- ],
11755
- "flags": {
11756
- "json": {
11757
- "description": "Output as JSON for AI agents/scripts",
11758
- "name": "json",
11759
- "allowNo": false,
11760
- "type": "boolean"
11761
- },
11762
- "machine": {
11763
- "char": "m",
11764
- "description": "Output as JSON for AI agents/scripts",
11765
- "name": "machine",
11766
- "allowNo": false,
11767
- "type": "boolean"
11768
- }
11769
- },
11770
- "hasDynamicHelp": false,
11771
- "hiddenAliases": [],
11772
- "id": "workspace:use",
11773
- "pluginAlias": "@proletariat/cli",
11774
- "pluginName": "@proletariat/cli",
11775
- "pluginType": "core",
11776
- "strict": true,
11777
- "isESM": true,
11778
- "relativePath": [
11779
- "dist",
11780
- "commands",
11781
- "workspace",
11782
- "use.js"
11625
+ "bump.js"
11783
11626
  ]
11784
11627
  },
11785
11628
  "work:asana": {
@@ -11964,6 +11807,128 @@
11964
11807
  "complete.js"
11965
11808
  ]
11966
11809
  },
11810
+ "work:groom": {
11811
+ "aliases": [],
11812
+ "args": {
11813
+ "ticketId": {
11814
+ "description": "Ticket ID(s) to groom - prompts with picker if not provided",
11815
+ "name": "ticketId",
11816
+ "required": false
11817
+ }
11818
+ },
11819
+ "description": "Enrich a ticket with requirements, acceptance criteria, and subtasks",
11820
+ "examples": [
11821
+ "<%= config.bin %> work groom TKT-001",
11822
+ "<%= config.bin %> work groom TKT-001 TKT-002",
11823
+ "<%= config.bin %> work groom # Interactive picker for backlog tickets"
11824
+ ],
11825
+ "flags": {
11826
+ "project": {
11827
+ "char": "P",
11828
+ "description": "Project ID (uses first project if only one exists)",
11829
+ "name": "project",
11830
+ "hasDynamicHelp": false,
11831
+ "multiple": false,
11832
+ "type": "option"
11833
+ },
11834
+ "json": {
11835
+ "aliases": [
11836
+ "machine"
11837
+ ],
11838
+ "char": "m",
11839
+ "description": "Output prompt configuration as JSON (for AI agents/scripts)",
11840
+ "name": "json",
11841
+ "allowNo": false,
11842
+ "type": "boolean"
11843
+ },
11844
+ "machine": {
11845
+ "char": "m",
11846
+ "description": "Output as JSON for AI agents/scripts",
11847
+ "name": "machine",
11848
+ "allowNo": false,
11849
+ "type": "boolean"
11850
+ }
11851
+ },
11852
+ "hasDynamicHelp": false,
11853
+ "hiddenAliases": [],
11854
+ "id": "work:groom",
11855
+ "pluginAlias": "@proletariat/cli",
11856
+ "pluginName": "@proletariat/cli",
11857
+ "pluginType": "core",
11858
+ "strict": false,
11859
+ "isESM": true,
11860
+ "relativePath": [
11861
+ "dist",
11862
+ "commands",
11863
+ "work",
11864
+ "groom.js"
11865
+ ]
11866
+ },
11867
+ "work:implement": {
11868
+ "aliases": [],
11869
+ "args": {
11870
+ "ticketId": {
11871
+ "description": "Ticket ID(s) to work on - prompts with picker if not provided",
11872
+ "name": "ticketId",
11873
+ "required": false
11874
+ }
11875
+ },
11876
+ "description": "Spawn agent to implement, continue, revise, or test a ticket (context-driven)",
11877
+ "examples": [
11878
+ "<%= config.bin %> work implement TKT-001",
11879
+ "<%= config.bin %> work implement TKT-001 --message \"Focus on the auth module\"",
11880
+ "<%= config.bin %> work implement # Interactive picker for todo/in-progress tickets"
11881
+ ],
11882
+ "flags": {
11883
+ "project": {
11884
+ "char": "P",
11885
+ "description": "Project ID (uses first project if only one exists)",
11886
+ "name": "project",
11887
+ "hasDynamicHelp": false,
11888
+ "multiple": false,
11889
+ "type": "option"
11890
+ },
11891
+ "json": {
11892
+ "aliases": [
11893
+ "machine"
11894
+ ],
11895
+ "char": "m",
11896
+ "description": "Output prompt configuration as JSON (for AI agents/scripts)",
11897
+ "name": "json",
11898
+ "allowNo": false,
11899
+ "type": "boolean"
11900
+ },
11901
+ "machine": {
11902
+ "char": "m",
11903
+ "description": "Output as JSON for AI agents/scripts",
11904
+ "name": "machine",
11905
+ "allowNo": false,
11906
+ "type": "boolean"
11907
+ },
11908
+ "message": {
11909
+ "char": "M",
11910
+ "description": "Additional instructions for the agent",
11911
+ "name": "message",
11912
+ "hasDynamicHelp": false,
11913
+ "multiple": false,
11914
+ "type": "option"
11915
+ }
11916
+ },
11917
+ "hasDynamicHelp": false,
11918
+ "hiddenAliases": [],
11919
+ "id": "work:implement",
11920
+ "pluginAlias": "@proletariat/cli",
11921
+ "pluginName": "@proletariat/cli",
11922
+ "pluginType": "core",
11923
+ "strict": false,
11924
+ "isESM": true,
11925
+ "relativePath": [
11926
+ "dist",
11927
+ "commands",
11928
+ "work",
11929
+ "implement.js"
11930
+ ]
11931
+ },
11967
11932
  "work": {
11968
11933
  "aliases": [],
11969
11934
  "args": {},
@@ -12282,23 +12247,198 @@
12282
12247
  "allowNo": false,
12283
12248
  "type": "boolean"
12284
12249
  },
12285
- "create-pr": {
12286
- "description": "Create PR when work is ready",
12287
- "name": "create-pr",
12250
+ "create-pr": {
12251
+ "description": "Create PR when work is ready",
12252
+ "name": "create-pr",
12253
+ "allowNo": false,
12254
+ "type": "boolean"
12255
+ },
12256
+ "yes": {
12257
+ "char": "y",
12258
+ "description": "Skip confirmation prompts in downstream work start",
12259
+ "name": "yes",
12260
+ "allowNo": false,
12261
+ "type": "boolean"
12262
+ }
12263
+ },
12264
+ "hasDynamicHelp": false,
12265
+ "hiddenAliases": [],
12266
+ "id": "work:linear",
12267
+ "pluginAlias": "@proletariat/cli",
12268
+ "pluginName": "@proletariat/cli",
12269
+ "pluginType": "core",
12270
+ "strict": true,
12271
+ "isESM": true,
12272
+ "relativePath": [
12273
+ "dist",
12274
+ "commands",
12275
+ "work",
12276
+ "linear.js"
12277
+ ]
12278
+ },
12279
+ "work:peek": {
12280
+ "aliases": [],
12281
+ "args": {
12282
+ "ticketId": {
12283
+ "description": "Ticket ID to peek at",
12284
+ "name": "ticketId",
12285
+ "required": true
12286
+ }
12287
+ },
12288
+ "description": "View what an agent is doing on a ticket (non-interactive)",
12289
+ "examples": [
12290
+ "<%= config.bin %> work peek TKT-001",
12291
+ "<%= config.bin %> work peek TKT-001 --lines 100",
12292
+ "<%= config.bin %> work peek TKT-001 --follow",
12293
+ "<%= config.bin %> work peek TKT-001 --full"
12294
+ ],
12295
+ "flags": {
12296
+ "project": {
12297
+ "char": "P",
12298
+ "description": "Project ID (uses first project if only one exists)",
12299
+ "name": "project",
12300
+ "hasDynamicHelp": false,
12301
+ "multiple": false,
12302
+ "type": "option"
12303
+ },
12304
+ "json": {
12305
+ "aliases": [
12306
+ "machine"
12307
+ ],
12308
+ "char": "m",
12309
+ "description": "Output as JSON",
12310
+ "name": "json",
12311
+ "allowNo": false,
12312
+ "type": "boolean"
12313
+ },
12314
+ "machine": {
12315
+ "char": "m",
12316
+ "description": "Output as JSON for AI agents/scripts",
12317
+ "name": "machine",
12318
+ "allowNo": false,
12319
+ "type": "boolean"
12320
+ },
12321
+ "lines": {
12322
+ "char": "l",
12323
+ "description": "Number of scrollback lines to capture",
12324
+ "name": "lines",
12325
+ "default": 200,
12326
+ "hasDynamicHelp": false,
12327
+ "multiple": false,
12328
+ "type": "option"
12329
+ },
12330
+ "full": {
12331
+ "description": "Capture entire scrollback buffer",
12332
+ "name": "full",
12333
+ "allowNo": false,
12334
+ "type": "boolean"
12335
+ },
12336
+ "follow": {
12337
+ "char": "f",
12338
+ "description": "Stream output continuously (like tail -f)",
12339
+ "name": "follow",
12340
+ "allowNo": false,
12341
+ "type": "boolean"
12342
+ },
12343
+ "since": {
12344
+ "description": "Filter output to lines after this timestamp (ISO 8601)",
12345
+ "name": "since",
12346
+ "hasDynamicHelp": false,
12347
+ "multiple": false,
12348
+ "type": "option"
12349
+ }
12350
+ },
12351
+ "hasDynamicHelp": false,
12352
+ "hiddenAliases": [],
12353
+ "id": "work:peek",
12354
+ "pluginAlias": "@proletariat/cli",
12355
+ "pluginName": "@proletariat/cli",
12356
+ "pluginType": "core",
12357
+ "strict": true,
12358
+ "isESM": true,
12359
+ "relativePath": [
12360
+ "dist",
12361
+ "commands",
12362
+ "work",
12363
+ "peek.js"
12364
+ ]
12365
+ },
12366
+ "work:poke": {
12367
+ "aliases": [
12368
+ "work:steer"
12369
+ ],
12370
+ "args": {
12371
+ "ticketId": {
12372
+ "description": "Ticket ID of the running agent",
12373
+ "name": "ticketId",
12374
+ "required": true
12375
+ },
12376
+ "message": {
12377
+ "description": "Message to send (use \"-\" to read from stdin, or omit with --file)",
12378
+ "name": "message",
12379
+ "required": false
12380
+ }
12381
+ },
12382
+ "description": "Send a message to steer an agent working on a ticket",
12383
+ "examples": [
12384
+ "<%= config.bin %> work poke TKT-001 \"Focus on the tests first\"",
12385
+ "<%= config.bin %> work poke TKT-001 --file instructions.md",
12386
+ "<%= config.bin %> work poke TKT-001 \"Run the tests\" --wait",
12387
+ "<%= config.bin %> work steer TKT-001 \"Add error handling\""
12388
+ ],
12389
+ "flags": {
12390
+ "project": {
12391
+ "char": "P",
12392
+ "description": "Project ID (uses first project if only one exists)",
12393
+ "name": "project",
12394
+ "hasDynamicHelp": false,
12395
+ "multiple": false,
12396
+ "type": "option"
12397
+ },
12398
+ "json": {
12399
+ "aliases": [
12400
+ "machine"
12401
+ ],
12402
+ "char": "m",
12403
+ "description": "Output as JSON",
12404
+ "name": "json",
12405
+ "allowNo": false,
12406
+ "type": "boolean"
12407
+ },
12408
+ "machine": {
12409
+ "char": "m",
12410
+ "description": "Output as JSON for AI agents/scripts",
12411
+ "name": "machine",
12412
+ "allowNo": false,
12413
+ "type": "boolean"
12414
+ },
12415
+ "file": {
12416
+ "char": "F",
12417
+ "description": "Read message from a file",
12418
+ "name": "file",
12419
+ "hasDynamicHelp": false,
12420
+ "multiple": false,
12421
+ "type": "option"
12422
+ },
12423
+ "wait": {
12424
+ "char": "w",
12425
+ "description": "Wait for response after sending",
12426
+ "name": "wait",
12288
12427
  "allowNo": false,
12289
12428
  "type": "boolean"
12290
12429
  },
12291
- "yes": {
12292
- "char": "y",
12293
- "description": "Skip confirmation prompts in downstream work start",
12294
- "name": "yes",
12295
- "allowNo": false,
12296
- "type": "boolean"
12430
+ "timeout": {
12431
+ "description": "Timeout in seconds for --wait mode",
12432
+ "name": "timeout",
12433
+ "default": 120,
12434
+ "hasDynamicHelp": false,
12435
+ "multiple": false,
12436
+ "type": "option"
12297
12437
  }
12298
12438
  },
12299
12439
  "hasDynamicHelp": false,
12300
12440
  "hiddenAliases": [],
12301
- "id": "work:linear",
12441
+ "id": "work:poke",
12302
12442
  "pluginAlias": "@proletariat/cli",
12303
12443
  "pluginName": "@proletariat/cli",
12304
12444
  "pluginType": "core",
@@ -12308,7 +12448,7 @@
12308
12448
  "dist",
12309
12449
  "commands",
12310
12450
  "work",
12311
- "linear.js"
12451
+ "poke.js"
12312
12452
  ]
12313
12453
  },
12314
12454
  "work:ready": {
@@ -12445,17 +12585,16 @@
12445
12585
  "aliases": [],
12446
12586
  "args": {
12447
12587
  "ticketId": {
12448
- "description": "Ticket ID to review",
12588
+ "description": "Ticket ID(s) to review - prompts with picker if not provided",
12449
12589
  "name": "ticketId",
12450
12590
  "required": false
12451
12591
  }
12452
12592
  },
12453
- "description": "Automated review-fix pipeline: review fix re-review until clean",
12593
+ "description": "Evaluate the output/PR for a ticket (model decides whether to comment, fix, or both)",
12454
12594
  "examples": [
12455
- "<%= config.bin %> <%= command.id %> TKT-001",
12456
- "<%= config.bin %> <%= command.id %> TKT-001 --max-cycles 5",
12457
- "<%= config.bin %> <%= command.id %> TKT-001 --auto # Skip confirmations between cycles",
12458
- "<%= config.bin %> <%= command.id %> # Interactive mode"
12595
+ "<%= config.bin %> work review TKT-001",
12596
+ "<%= config.bin %> work review TKT-001 TKT-002",
12597
+ "<%= config.bin %> work review # Interactive picker for reviewable tickets"
12459
12598
  ],
12460
12599
  "flags": {
12461
12600
  "project": {
@@ -12467,7 +12606,11 @@
12467
12606
  "type": "option"
12468
12607
  },
12469
12608
  "json": {
12470
- "description": "Output as JSON for AI agents/scripts",
12609
+ "aliases": [
12610
+ "machine"
12611
+ ],
12612
+ "char": "m",
12613
+ "description": "Output prompt configuration as JSON (for AI agents/scripts)",
12471
12614
  "name": "json",
12472
12615
  "allowNo": false,
12473
12616
  "type": "boolean"
@@ -12478,87 +12621,6 @@
12478
12621
  "name": "machine",
12479
12622
  "allowNo": false,
12480
12623
  "type": "boolean"
12481
- },
12482
- "max-cycles": {
12483
- "description": "Maximum review-fix cycles before stopping (default: 3)",
12484
- "name": "max-cycles",
12485
- "default": 3,
12486
- "hasDynamicHelp": false,
12487
- "multiple": false,
12488
- "type": "option"
12489
- },
12490
- "auto": {
12491
- "description": "Skip confirmations between cycles (fully automated)",
12492
- "name": "auto",
12493
- "allowNo": false,
12494
- "type": "boolean"
12495
- },
12496
- "executor": {
12497
- "char": "e",
12498
- "description": "Override executor",
12499
- "name": "executor",
12500
- "hasDynamicHelp": false,
12501
- "multiple": false,
12502
- "options": [
12503
- "claude-code",
12504
- "codex",
12505
- "custom"
12506
- ],
12507
- "type": "option"
12508
- },
12509
- "run-on-host": {
12510
- "description": "Run on host even if devcontainer exists (bypasses sandbox)",
12511
- "name": "run-on-host",
12512
- "allowNo": false,
12513
- "type": "boolean"
12514
- },
12515
- "skip-permissions": {
12516
- "description": "Skip permission checks for agents",
12517
- "name": "skip-permissions",
12518
- "allowNo": false,
12519
- "type": "boolean"
12520
- },
12521
- "display": {
12522
- "char": "d",
12523
- "description": "Display mode for agents",
12524
- "name": "display",
12525
- "default": "background",
12526
- "hasDynamicHelp": false,
12527
- "multiple": false,
12528
- "options": [
12529
- "foreground",
12530
- "terminal",
12531
- "background"
12532
- ],
12533
- "type": "option"
12534
- },
12535
- "session": {
12536
- "char": "s",
12537
- "description": "Session manager inside container",
12538
- "name": "session",
12539
- "default": "tmux",
12540
- "hasDynamicHelp": false,
12541
- "multiple": false,
12542
- "options": [
12543
- "tmux",
12544
- "direct"
12545
- ],
12546
- "type": "option"
12547
- },
12548
- "poll-interval": {
12549
- "description": "Polling interval in seconds to check agent completion (default: 10)",
12550
- "name": "poll-interval",
12551
- "default": 10,
12552
- "hasDynamicHelp": false,
12553
- "multiple": false,
12554
- "type": "option"
12555
- },
12556
- "force": {
12557
- "char": "f",
12558
- "description": "Force spawn even if ticket has running executions",
12559
- "name": "force",
12560
- "allowNo": false,
12561
- "type": "boolean"
12562
12624
  }
12563
12625
  },
12564
12626
  "hasDynamicHelp": false,
@@ -12567,7 +12629,7 @@
12567
12629
  "pluginAlias": "@proletariat/cli",
12568
12630
  "pluginName": "@proletariat/cli",
12569
12631
  "pluginType": "core",
12570
- "strict": true,
12632
+ "strict": false,
12571
12633
  "isESM": true,
12572
12634
  "relativePath": [
12573
12635
  "dist",
@@ -12576,113 +12638,6 @@
12576
12638
  "review.js"
12577
12639
  ]
12578
12640
  },
12579
- "work:revise": {
12580
- "aliases": [],
12581
- "args": {
12582
- "ticketId": {
12583
- "description": "Ticket ID - prompts with dropdown if not provided",
12584
- "name": "ticketId",
12585
- "required": false
12586
- }
12587
- },
12588
- "description": "Address PR feedback on a ticket (fetches reviews/comments and spawns agent)",
12589
- "examples": [
12590
- "<%= config.bin %> <%= command.id %> TKT-001",
12591
- "<%= config.bin %> <%= command.id %> # Interactive mode",
12592
- "<%= config.bin %> <%= command.id %> --json # Output choices as JSON"
12593
- ],
12594
- "flags": {
12595
- "project": {
12596
- "char": "P",
12597
- "description": "Project ID (uses first project if only one exists)",
12598
- "name": "project",
12599
- "hasDynamicHelp": false,
12600
- "multiple": false,
12601
- "type": "option"
12602
- },
12603
- "json": {
12604
- "description": "Output as JSON for AI agents/scripts",
12605
- "name": "json",
12606
- "allowNo": false,
12607
- "type": "boolean"
12608
- },
12609
- "machine": {
12610
- "char": "m",
12611
- "description": "Output as JSON for AI agents/scripts",
12612
- "name": "machine",
12613
- "allowNo": false,
12614
- "type": "boolean"
12615
- },
12616
- "mode": {
12617
- "char": "d",
12618
- "description": "Runtime mode",
12619
- "name": "mode",
12620
- "hasDynamicHelp": false,
12621
- "multiple": false,
12622
- "options": [
12623
- "foreground",
12624
- "background",
12625
- "tmux",
12626
- "terminal",
12627
- "devcontainer"
12628
- ],
12629
- "type": "option"
12630
- },
12631
- "executor": {
12632
- "char": "e",
12633
- "description": "Override executor",
12634
- "name": "executor",
12635
- "hasDynamicHelp": false,
12636
- "multiple": false,
12637
- "options": [
12638
- "claude-code",
12639
- "codex",
12640
- "custom"
12641
- ],
12642
- "type": "option"
12643
- },
12644
- "force": {
12645
- "char": "f",
12646
- "description": "Start even if no pending feedback",
12647
- "name": "force",
12648
- "allowNo": false,
12649
- "type": "boolean"
12650
- },
12651
- "run-on-host": {
12652
- "description": "Run on host even if devcontainer exists (bypasses sandbox)",
12653
- "name": "run-on-host",
12654
- "allowNo": false,
12655
- "type": "boolean"
12656
- },
12657
- "session": {
12658
- "char": "s",
12659
- "description": "Session manager inside container (tmux runs agent in tmux inside container)",
12660
- "name": "session",
12661
- "default": "tmux",
12662
- "hasDynamicHelp": false,
12663
- "multiple": false,
12664
- "options": [
12665
- "tmux",
12666
- "direct"
12667
- ],
12668
- "type": "option"
12669
- }
12670
- },
12671
- "hasDynamicHelp": false,
12672
- "hiddenAliases": [],
12673
- "id": "work:revise",
12674
- "pluginAlias": "@proletariat/cli",
12675
- "pluginName": "@proletariat/cli",
12676
- "pluginType": "core",
12677
- "strict": true,
12678
- "isESM": true,
12679
- "relativePath": [
12680
- "dist",
12681
- "commands",
12682
- "work",
12683
- "revise.js"
12684
- ]
12685
- },
12686
12641
  "work:shortcut": {
12687
12642
  "aliases": [],
12688
12643
  "args": {},
@@ -13505,6 +13460,24 @@
13505
13460
  "hasDynamicHelp": false,
13506
13461
  "multiple": false,
13507
13462
  "type": "option"
13463
+ },
13464
+ "keep-alive": {
13465
+ "description": "Keep container running after agent exits (shorthand for --cleanup persistent)",
13466
+ "name": "keep-alive",
13467
+ "allowNo": false,
13468
+ "type": "boolean"
13469
+ },
13470
+ "cleanup": {
13471
+ "description": "Container cleanup policy (on-exit, persistent, on-error-keep)",
13472
+ "name": "cleanup",
13473
+ "hasDynamicHelp": false,
13474
+ "multiple": false,
13475
+ "options": [
13476
+ "on-exit",
13477
+ "persistent",
13478
+ "on-error-keep"
13479
+ ],
13480
+ "type": "option"
13508
13481
  }
13509
13482
  },
13510
13483
  "hasDynamicHelp": false,
@@ -13519,16 +13492,68 @@
13519
13492
  "dist",
13520
13493
  "commands",
13521
13494
  "work",
13522
- "start.js"
13495
+ "start.js"
13496
+ ]
13497
+ },
13498
+ "work:status": {
13499
+ "aliases": [],
13500
+ "args": {},
13501
+ "description": "Show current work status (in-progress tickets)",
13502
+ "examples": [
13503
+ "<%= config.bin %> <%= command.id %>",
13504
+ "<%= config.bin %> <%= command.id %> --json"
13505
+ ],
13506
+ "flags": {
13507
+ "project": {
13508
+ "char": "P",
13509
+ "description": "Project ID (uses first project if only one exists)",
13510
+ "name": "project",
13511
+ "hasDynamicHelp": false,
13512
+ "multiple": false,
13513
+ "type": "option"
13514
+ },
13515
+ "json": {
13516
+ "description": "Output as JSON for AI agents/scripts",
13517
+ "name": "json",
13518
+ "allowNo": false,
13519
+ "type": "boolean"
13520
+ },
13521
+ "machine": {
13522
+ "char": "m",
13523
+ "description": "Output as JSON for AI agents/scripts",
13524
+ "name": "machine",
13525
+ "allowNo": false,
13526
+ "type": "boolean"
13527
+ }
13528
+ },
13529
+ "hasDynamicHelp": false,
13530
+ "hiddenAliases": [],
13531
+ "id": "work:status",
13532
+ "pluginAlias": "@proletariat/cli",
13533
+ "pluginName": "@proletariat/cli",
13534
+ "pluginType": "core",
13535
+ "strict": true,
13536
+ "isESM": true,
13537
+ "relativePath": [
13538
+ "dist",
13539
+ "commands",
13540
+ "work",
13541
+ "status.js"
13523
13542
  ]
13524
13543
  },
13525
- "work:status": {
13544
+ "work:stop": {
13526
13545
  "aliases": [],
13527
- "args": {},
13528
- "description": "Show current work status (in-progress tickets)",
13546
+ "args": {
13547
+ "ticketId": {
13548
+ "description": "Ticket ID to stop",
13549
+ "name": "ticketId",
13550
+ "required": true
13551
+ }
13552
+ },
13553
+ "description": "Stop a running agent working on a ticket",
13529
13554
  "examples": [
13530
- "<%= config.bin %> <%= command.id %>",
13531
- "<%= config.bin %> <%= command.id %> --json"
13555
+ "<%= config.bin %> work stop TKT-001",
13556
+ "<%= config.bin %> work stop TKT-001 --json"
13532
13557
  ],
13533
13558
  "flags": {
13534
13559
  "project": {
@@ -13540,7 +13565,11 @@
13540
13565
  "type": "option"
13541
13566
  },
13542
13567
  "json": {
13543
- "description": "Output as JSON for AI agents/scripts",
13568
+ "aliases": [
13569
+ "machine"
13570
+ ],
13571
+ "char": "m",
13572
+ "description": "Output as JSON",
13544
13573
  "name": "json",
13545
13574
  "allowNo": false,
13546
13575
  "type": "boolean"
@@ -13555,7 +13584,7 @@
13555
13584
  },
13556
13585
  "hasDynamicHelp": false,
13557
13586
  "hiddenAliases": [],
13558
- "id": "work:status",
13587
+ "id": "work:stop",
13559
13588
  "pluginAlias": "@proletariat/cli",
13560
13589
  "pluginName": "@proletariat/cli",
13561
13590
  "pluginType": "core",
@@ -13565,7 +13594,7 @@
13565
13594
  "dist",
13566
13595
  "commands",
13567
13596
  "work",
13568
- "status.js"
13597
+ "stop.js"
13569
13598
  ]
13570
13599
  },
13571
13600
  "work:watch": {
@@ -13694,6 +13723,240 @@
13694
13723
  "watch.js"
13695
13724
  ]
13696
13725
  },
13726
+ "workspace:add": {
13727
+ "aliases": [],
13728
+ "args": {
13729
+ "path": {
13730
+ "description": "Path to the workspace to register",
13731
+ "name": "path",
13732
+ "required": true
13733
+ }
13734
+ },
13735
+ "description": "Register an existing workspace in the machine config",
13736
+ "examples": [
13737
+ "<%= config.bin %> <%= command.id %> /path/to/workspace",
13738
+ "<%= config.bin %> <%= command.id %> . --name my-workspace",
13739
+ "<%= config.bin %> <%= command.id %> ~/projects/my-hq"
13740
+ ],
13741
+ "flags": {
13742
+ "json": {
13743
+ "description": "Output as JSON for AI agents/scripts",
13744
+ "name": "json",
13745
+ "allowNo": false,
13746
+ "type": "boolean"
13747
+ },
13748
+ "machine": {
13749
+ "char": "m",
13750
+ "description": "Output as JSON for AI agents/scripts",
13751
+ "name": "machine",
13752
+ "allowNo": false,
13753
+ "type": "boolean"
13754
+ },
13755
+ "name": {
13756
+ "char": "n",
13757
+ "description": "Custom name for the workspace (defaults to directory basename or workspace config name)",
13758
+ "name": "name",
13759
+ "hasDynamicHelp": false,
13760
+ "multiple": false,
13761
+ "type": "option"
13762
+ }
13763
+ },
13764
+ "hasDynamicHelp": false,
13765
+ "hiddenAliases": [],
13766
+ "id": "workspace:add",
13767
+ "pluginAlias": "@proletariat/cli",
13768
+ "pluginName": "@proletariat/cli",
13769
+ "pluginType": "core",
13770
+ "strict": true,
13771
+ "enableJsonFlag": false,
13772
+ "isESM": true,
13773
+ "relativePath": [
13774
+ "dist",
13775
+ "commands",
13776
+ "workspace",
13777
+ "add.js"
13778
+ ]
13779
+ },
13780
+ "workspace:list": {
13781
+ "aliases": [],
13782
+ "args": {},
13783
+ "description": "List all registered and discovered HQ workspaces",
13784
+ "examples": [
13785
+ "<%= config.bin %> <%= command.id %>",
13786
+ "<%= config.bin %> <%= command.id %> --json"
13787
+ ],
13788
+ "flags": {
13789
+ "json": {
13790
+ "description": "Output as JSON for AI agents/scripts",
13791
+ "name": "json",
13792
+ "allowNo": false,
13793
+ "type": "boolean"
13794
+ },
13795
+ "machine": {
13796
+ "char": "m",
13797
+ "description": "Output as JSON for AI agents/scripts",
13798
+ "name": "machine",
13799
+ "allowNo": false,
13800
+ "type": "boolean"
13801
+ }
13802
+ },
13803
+ "hasDynamicHelp": false,
13804
+ "hiddenAliases": [],
13805
+ "id": "workspace:list",
13806
+ "pluginAlias": "@proletariat/cli",
13807
+ "pluginName": "@proletariat/cli",
13808
+ "pluginType": "core",
13809
+ "strict": true,
13810
+ "enableJsonFlag": false,
13811
+ "isESM": true,
13812
+ "relativePath": [
13813
+ "dist",
13814
+ "commands",
13815
+ "workspace",
13816
+ "list.js"
13817
+ ]
13818
+ },
13819
+ "workspace:prune": {
13820
+ "aliases": [],
13821
+ "args": {},
13822
+ "description": "Remove stale workspace entries and agents with deleted worktrees",
13823
+ "examples": [
13824
+ "<%= config.bin %> <%= command.id %> --dry-run",
13825
+ "<%= config.bin %> <%= command.id %>",
13826
+ "<%= config.bin %> <%= command.id %> --force"
13827
+ ],
13828
+ "flags": {
13829
+ "json": {
13830
+ "description": "Output as JSON for AI agents/scripts",
13831
+ "name": "json",
13832
+ "allowNo": false,
13833
+ "type": "boolean"
13834
+ },
13835
+ "machine": {
13836
+ "char": "m",
13837
+ "description": "Output as JSON for AI agents/scripts",
13838
+ "name": "machine",
13839
+ "allowNo": false,
13840
+ "type": "boolean"
13841
+ },
13842
+ "dry-run": {
13843
+ "char": "d",
13844
+ "description": "Show what would be removed without removing",
13845
+ "name": "dry-run",
13846
+ "allowNo": false,
13847
+ "type": "boolean"
13848
+ },
13849
+ "force": {
13850
+ "char": "f",
13851
+ "description": "Skip confirmation prompt and prune immediately",
13852
+ "name": "force",
13853
+ "allowNo": false,
13854
+ "type": "boolean"
13855
+ }
13856
+ },
13857
+ "hasDynamicHelp": false,
13858
+ "hiddenAliases": [],
13859
+ "id": "workspace:prune",
13860
+ "pluginAlias": "@proletariat/cli",
13861
+ "pluginName": "@proletariat/cli",
13862
+ "pluginType": "core",
13863
+ "strict": true,
13864
+ "isESM": true,
13865
+ "relativePath": [
13866
+ "dist",
13867
+ "commands",
13868
+ "workspace",
13869
+ "prune.js"
13870
+ ]
13871
+ },
13872
+ "workspace:remove": {
13873
+ "aliases": [],
13874
+ "args": {
13875
+ "nameOrPath": {
13876
+ "description": "Workspace name or path to unregister",
13877
+ "name": "nameOrPath",
13878
+ "required": true
13879
+ }
13880
+ },
13881
+ "description": "Unregister a workspace from the machine config (does NOT delete files)",
13882
+ "examples": [
13883
+ "<%= config.bin %> <%= command.id %> my-workspace",
13884
+ "<%= config.bin %> <%= command.id %> /path/to/workspace"
13885
+ ],
13886
+ "flags": {
13887
+ "json": {
13888
+ "description": "Output as JSON for AI agents/scripts",
13889
+ "name": "json",
13890
+ "allowNo": false,
13891
+ "type": "boolean"
13892
+ },
13893
+ "machine": {
13894
+ "char": "m",
13895
+ "description": "Output as JSON for AI agents/scripts",
13896
+ "name": "machine",
13897
+ "allowNo": false,
13898
+ "type": "boolean"
13899
+ }
13900
+ },
13901
+ "hasDynamicHelp": false,
13902
+ "hiddenAliases": [],
13903
+ "id": "workspace:remove",
13904
+ "pluginAlias": "@proletariat/cli",
13905
+ "pluginName": "@proletariat/cli",
13906
+ "pluginType": "core",
13907
+ "strict": true,
13908
+ "isESM": true,
13909
+ "relativePath": [
13910
+ "dist",
13911
+ "commands",
13912
+ "workspace",
13913
+ "remove.js"
13914
+ ]
13915
+ },
13916
+ "workspace:use": {
13917
+ "aliases": [],
13918
+ "args": {
13919
+ "nameOrPath": {
13920
+ "description": "Workspace name or path",
13921
+ "name": "nameOrPath",
13922
+ "required": true
13923
+ }
13924
+ },
13925
+ "description": "Set the active workspace",
13926
+ "examples": [
13927
+ "<%= config.bin %> <%= command.id %> my-workspace",
13928
+ "<%= config.bin %> <%= command.id %> /path/to/workspace"
13929
+ ],
13930
+ "flags": {
13931
+ "json": {
13932
+ "description": "Output as JSON for AI agents/scripts",
13933
+ "name": "json",
13934
+ "allowNo": false,
13935
+ "type": "boolean"
13936
+ },
13937
+ "machine": {
13938
+ "char": "m",
13939
+ "description": "Output as JSON for AI agents/scripts",
13940
+ "name": "machine",
13941
+ "allowNo": false,
13942
+ "type": "boolean"
13943
+ }
13944
+ },
13945
+ "hasDynamicHelp": false,
13946
+ "hiddenAliases": [],
13947
+ "id": "workspace:use",
13948
+ "pluginAlias": "@proletariat/cli",
13949
+ "pluginName": "@proletariat/cli",
13950
+ "pluginType": "core",
13951
+ "strict": true,
13952
+ "isESM": true,
13953
+ "relativePath": [
13954
+ "dist",
13955
+ "commands",
13956
+ "workspace",
13957
+ "use.js"
13958
+ ]
13959
+ },
13697
13960
  "agent:staff:add": {
13698
13961
  "aliases": [],
13699
13962
  "args": {
@@ -14759,5 +15022,5 @@
14759
15022
  ]
14760
15023
  }
14761
15024
  },
14762
- "version": "0.3.85"
15025
+ "version": "0.3.86"
14763
15026
  }