@proletariat/cli 0.3.103 → 0.3.105

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 (77) hide show
  1. package/dist/commands/project/configure.d.ts +13 -0
  2. package/dist/commands/project/configure.js +149 -0
  3. package/dist/commands/project/configure.js.map +1 -0
  4. package/dist/commands/session/attach.d.ts +6 -1
  5. package/dist/commands/session/attach.js +82 -28
  6. package/dist/commands/session/attach.js.map +1 -1
  7. package/dist/commands/session/report.d.ts +5 -0
  8. package/dist/commands/session/report.js +53 -0
  9. package/dist/commands/session/report.js.map +1 -1
  10. package/dist/commands/ticket/delete.js +15 -7
  11. package/dist/commands/ticket/delete.js.map +1 -1
  12. package/dist/commands/ticket/move.js +21 -10
  13. package/dist/commands/ticket/move.js.map +1 -1
  14. package/dist/commands/ticket/update.js +18 -9
  15. package/dist/commands/ticket/update.js.map +1 -1
  16. package/dist/commands/update.js +12 -6
  17. package/dist/commands/update.js.map +1 -1
  18. package/dist/commands/work/ship.js +39 -57
  19. package/dist/commands/work/ship.js.map +1 -1
  20. package/dist/commands/work/start.js +63 -77
  21. package/dist/commands/work/start.js.map +1 -1
  22. package/dist/lib/events/events.d.ts +2 -0
  23. package/dist/lib/execution/devcontainer.d.ts +1 -0
  24. package/dist/lib/execution/devcontainer.js +1 -0
  25. package/dist/lib/execution/devcontainer.js.map +1 -1
  26. package/dist/lib/execution/runners/docker-management.d.ts +22 -3
  27. package/dist/lib/execution/runners/docker-management.js +102 -14
  28. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  29. package/dist/lib/execution/runners/prompt-builder.d.ts +12 -0
  30. package/dist/lib/execution/runners/prompt-builder.js +44 -0
  31. package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
  32. package/dist/lib/orchestrate/actions.js +68 -1
  33. package/dist/lib/orchestrate/actions.js.map +1 -1
  34. package/dist/lib/orchestrate/poller.d.ts +4 -1
  35. package/dist/lib/orchestrate/poller.js +63 -13
  36. package/dist/lib/orchestrate/poller.js.map +1 -1
  37. package/dist/lib/orchestrate/presets.js +18 -3
  38. package/dist/lib/orchestrate/presets.js.map +1 -1
  39. package/dist/lib/orchestrate/simple-poller.js +33 -11
  40. package/dist/lib/orchestrate/simple-poller.js.map +1 -1
  41. package/dist/lib/orchestrate/types.d.ts +2 -2
  42. package/dist/lib/orchestrate/types.js +3 -0
  43. package/dist/lib/orchestrate/types.js.map +1 -1
  44. package/dist/lib/pmo/base-command.js +12 -2
  45. package/dist/lib/pmo/base-command.js.map +1 -1
  46. package/dist/lib/pmo/templates-builtin.d.ts +2 -0
  47. package/dist/lib/pmo/templates-builtin.js +13 -0
  48. package/dist/lib/pmo/templates-builtin.js.map +1 -1
  49. package/dist/lib/pr/index.d.ts +9 -0
  50. package/dist/lib/pr/index.js +22 -0
  51. package/dist/lib/pr/index.js.map +1 -1
  52. package/dist/lib/providers/linear-provider.d.ts +11 -12
  53. package/dist/lib/providers/linear-provider.js +150 -177
  54. package/dist/lib/providers/linear-provider.js.map +1 -1
  55. package/dist/lib/providers/resolver.d.ts +5 -5
  56. package/dist/lib/providers/resolver.js +25 -31
  57. package/dist/lib/providers/resolver.js.map +1 -1
  58. package/dist/lib/sync/engine.js +15 -6
  59. package/dist/lib/sync/engine.js.map +1 -1
  60. package/dist/lib/sync/reconciler.d.ts +11 -2
  61. package/dist/lib/sync/reconciler.js +30 -12
  62. package/dist/lib/sync/reconciler.js.map +1 -1
  63. package/dist/lib/update-check.d.ts +24 -0
  64. package/dist/lib/update-check.js +85 -0
  65. package/dist/lib/update-check.js.map +1 -1
  66. package/dist/lib/update-prompt.js +10 -5
  67. package/dist/lib/update-prompt.js.map +1 -1
  68. package/dist/lib/work-lifecycle/hooks/types.d.ts +1 -1
  69. package/dist/lib/work-lifecycle/hooks/types.js +2 -0
  70. package/dist/lib/work-lifecycle/hooks/types.js.map +1 -1
  71. package/dist/lib/work-lifecycle/settings.d.ts +42 -0
  72. package/dist/lib/work-lifecycle/settings.js +65 -0
  73. package/dist/lib/work-lifecycle/settings.js.map +1 -1
  74. package/dist/lib/work-lifecycle/transition.js +45 -31
  75. package/dist/lib/work-lifecycle/transition.js.map +1 -1
  76. package/oclif.manifest.json +1605 -1541
  77. package/package.json +1 -1
@@ -1972,6 +1972,66 @@
1972
1972
  "sync.js"
1973
1973
  ]
1974
1974
  },
1975
+ "autocomplete:setup": {
1976
+ "aliases": [],
1977
+ "args": {},
1978
+ "description": "Auto-detect shell and set up autocomplete",
1979
+ "examples": [
1980
+ "<%= config.bin %> <%= command.id %>",
1981
+ "<%= config.bin %> <%= command.id %> --install",
1982
+ "<%= config.bin %> <%= command.id %> --shell zsh",
1983
+ "<%= config.bin %> <%= command.id %> --shell zsh --install --machine"
1984
+ ],
1985
+ "flags": {
1986
+ "json": {
1987
+ "description": "Output as JSON for AI agents/scripts",
1988
+ "name": "json",
1989
+ "allowNo": false,
1990
+ "type": "boolean"
1991
+ },
1992
+ "machine": {
1993
+ "char": "m",
1994
+ "description": "Output as JSON for AI agents/scripts",
1995
+ "name": "machine",
1996
+ "allowNo": false,
1997
+ "type": "boolean"
1998
+ },
1999
+ "install": {
2000
+ "char": "i",
2001
+ "description": "Automatically install to shell config file",
2002
+ "name": "install",
2003
+ "allowNo": false,
2004
+ "type": "boolean"
2005
+ },
2006
+ "shell": {
2007
+ "char": "s",
2008
+ "description": "Override shell detection (zsh, bash, powershell)",
2009
+ "name": "shell",
2010
+ "hasDynamicHelp": false,
2011
+ "multiple": false,
2012
+ "options": [
2013
+ "zsh",
2014
+ "bash",
2015
+ "powershell"
2016
+ ],
2017
+ "type": "option"
2018
+ }
2019
+ },
2020
+ "hasDynamicHelp": false,
2021
+ "hiddenAliases": [],
2022
+ "id": "autocomplete:setup",
2023
+ "pluginAlias": "@proletariat/cli",
2024
+ "pluginName": "@proletariat/cli",
2025
+ "pluginType": "core",
2026
+ "strict": true,
2027
+ "isESM": true,
2028
+ "relativePath": [
2029
+ "dist",
2030
+ "commands",
2031
+ "autocomplete",
2032
+ "setup.js"
2033
+ ]
2034
+ },
1975
2035
  "branch:create": {
1976
2036
  "aliases": [],
1977
2037
  "args": {
@@ -2516,66 +2576,6 @@
2516
2576
  "stop.js"
2517
2577
  ]
2518
2578
  },
2519
- "autocomplete:setup": {
2520
- "aliases": [],
2521
- "args": {},
2522
- "description": "Auto-detect shell and set up autocomplete",
2523
- "examples": [
2524
- "<%= config.bin %> <%= command.id %>",
2525
- "<%= config.bin %> <%= command.id %> --install",
2526
- "<%= config.bin %> <%= command.id %> --shell zsh",
2527
- "<%= config.bin %> <%= command.id %> --shell zsh --install --machine"
2528
- ],
2529
- "flags": {
2530
- "json": {
2531
- "description": "Output as JSON for AI agents/scripts",
2532
- "name": "json",
2533
- "allowNo": false,
2534
- "type": "boolean"
2535
- },
2536
- "machine": {
2537
- "char": "m",
2538
- "description": "Output as JSON for AI agents/scripts",
2539
- "name": "machine",
2540
- "allowNo": false,
2541
- "type": "boolean"
2542
- },
2543
- "install": {
2544
- "char": "i",
2545
- "description": "Automatically install to shell config file",
2546
- "name": "install",
2547
- "allowNo": false,
2548
- "type": "boolean"
2549
- },
2550
- "shell": {
2551
- "char": "s",
2552
- "description": "Override shell detection (zsh, bash, powershell)",
2553
- "name": "shell",
2554
- "hasDynamicHelp": false,
2555
- "multiple": false,
2556
- "options": [
2557
- "zsh",
2558
- "bash",
2559
- "powershell"
2560
- ],
2561
- "type": "option"
2562
- }
2563
- },
2564
- "hasDynamicHelp": false,
2565
- "hiddenAliases": [],
2566
- "id": "autocomplete:setup",
2567
- "pluginAlias": "@proletariat/cli",
2568
- "pluginName": "@proletariat/cli",
2569
- "pluginType": "core",
2570
- "strict": true,
2571
- "isESM": true,
2572
- "relativePath": [
2573
- "dist",
2574
- "commands",
2575
- "autocomplete",
2576
- "setup.js"
2577
- ]
2578
- },
2579
2579
  "claude": {
2580
2580
  "aliases": [],
2581
2581
  "args": {},
@@ -4053,13 +4053,15 @@
4053
4053
  "sync.js"
4054
4054
  ]
4055
4055
  },
4056
- "feedback": {
4056
+ "gh": {
4057
4057
  "aliases": [],
4058
4058
  "args": {},
4059
- "description": "Interactive menu for feedback and issue operations",
4059
+ "description": "GitHub CLI setup and status for PR workflow",
4060
4060
  "examples": [
4061
4061
  "<%= config.bin %> <%= command.id %>",
4062
- "<%= config.bin %> <%= command.id %> --action submit"
4062
+ "<%= config.bin %> <%= command.id %> status",
4063
+ "<%= config.bin %> <%= command.id %> login",
4064
+ "<%= config.bin %> <%= command.id %> token"
4063
4065
  ],
4064
4066
  "flags": {
4065
4067
  "json": {
@@ -4074,24 +4076,11 @@
4074
4076
  "name": "machine",
4075
4077
  "allowNo": false,
4076
4078
  "type": "boolean"
4077
- },
4078
- "action": {
4079
- "char": "a",
4080
- "description": "Action to perform (submit, list, view)",
4081
- "name": "action",
4082
- "hasDynamicHelp": false,
4083
- "multiple": false,
4084
- "options": [
4085
- "submit",
4086
- "list",
4087
- "view"
4088
- ],
4089
- "type": "option"
4090
4079
  }
4091
4080
  },
4092
4081
  "hasDynamicHelp": false,
4093
4082
  "hiddenAliases": [],
4094
- "id": "feedback",
4083
+ "id": "gh",
4095
4084
  "pluginAlias": "@proletariat/cli",
4096
4085
  "pluginName": "@proletariat/cli",
4097
4086
  "pluginType": "core",
@@ -4101,19 +4090,16 @@
4101
4090
  "relativePath": [
4102
4091
  "dist",
4103
4092
  "commands",
4104
- "feedback",
4093
+ "gh",
4105
4094
  "index.js"
4106
4095
  ]
4107
4096
  },
4108
- "feedback:list": {
4097
+ "gh:login": {
4109
4098
  "aliases": [],
4110
4099
  "args": {},
4111
- "description": "List recent feedback issues from the repository",
4100
+ "description": "Login to GitHub CLI for PR workflow",
4112
4101
  "examples": [
4113
- "<%= config.bin %> <%= command.id %>",
4114
- "<%= config.bin %> <%= command.id %> --category bug",
4115
- "<%= config.bin %> <%= command.id %> --state closed --limit 10",
4116
- "<%= config.bin %> <%= command.id %> --json"
4102
+ "<%= config.bin %> <%= command.id %>"
4117
4103
  ],
4118
4104
  "flags": {
4119
4105
  "json": {
@@ -4128,47 +4114,11 @@
4128
4114
  "name": "machine",
4129
4115
  "allowNo": false,
4130
4116
  "type": "boolean"
4131
- },
4132
- "category": {
4133
- "char": "c",
4134
- "description": "Filter by category (bug, feature, general)",
4135
- "name": "category",
4136
- "hasDynamicHelp": false,
4137
- "multiple": false,
4138
- "options": [
4139
- "bug",
4140
- "feature",
4141
- "general"
4142
- ],
4143
- "type": "option"
4144
- },
4145
- "state": {
4146
- "char": "s",
4147
- "description": "Filter by state",
4148
- "name": "state",
4149
- "default": "open",
4150
- "hasDynamicHelp": false,
4151
- "multiple": false,
4152
- "options": [
4153
- "open",
4154
- "closed",
4155
- "all"
4156
- ],
4157
- "type": "option"
4158
- },
4159
- "limit": {
4160
- "char": "l",
4161
- "description": "Maximum number of issues to show",
4162
- "name": "limit",
4163
- "default": 20,
4164
- "hasDynamicHelp": false,
4165
- "multiple": false,
4166
- "type": "option"
4167
4117
  }
4168
4118
  },
4169
4119
  "hasDynamicHelp": false,
4170
4120
  "hiddenAliases": [],
4171
- "id": "feedback:list",
4121
+ "id": "gh:login",
4172
4122
  "pluginAlias": "@proletariat/cli",
4173
4123
  "pluginName": "@proletariat/cli",
4174
4124
  "pluginType": "core",
@@ -4178,18 +4128,16 @@
4178
4128
  "relativePath": [
4179
4129
  "dist",
4180
4130
  "commands",
4181
- "feedback",
4182
- "list.js"
4131
+ "gh",
4132
+ "login.js"
4183
4133
  ]
4184
4134
  },
4185
- "feedback:submit": {
4135
+ "gh:status": {
4186
4136
  "aliases": [],
4187
4137
  "args": {},
4188
- "description": "Submit feedback, bug reports, or feature requests to GitHub Issues",
4138
+ "description": "Check GitHub CLI status for PR workflow",
4189
4139
  "examples": [
4190
- "<%= config.bin %> <%= command.id %>",
4191
- "<%= config.bin %> <%= command.id %> --title \"Bug in CLI\" --body \"Description here\" --category bug",
4192
- "<%= config.bin %> <%= command.id %> --json"
4140
+ "<%= config.bin %> <%= command.id %>"
4193
4141
  ],
4194
4142
  "flags": {
4195
4143
  "json": {
@@ -4204,65 +4152,30 @@
4204
4152
  "name": "machine",
4205
4153
  "allowNo": false,
4206
4154
  "type": "boolean"
4207
- },
4208
- "title": {
4209
- "char": "t",
4210
- "description": "Issue title (one-liner) [required for non-interactive]",
4211
- "name": "title",
4212
- "hasDynamicHelp": false,
4213
- "multiple": false,
4214
- "type": "option"
4215
- },
4216
- "body": {
4217
- "char": "b",
4218
- "description": "Issue description [required for non-interactive]",
4219
- "name": "body",
4220
- "hasDynamicHelp": false,
4221
- "multiple": false,
4222
- "type": "option"
4223
- },
4224
- "category": {
4225
- "char": "c",
4226
- "description": "Feedback category",
4227
- "name": "category",
4228
- "hasDynamicHelp": false,
4229
- "multiple": false,
4230
- "options": [
4231
- "bug",
4232
- "feature",
4233
- "general"
4234
- ],
4235
- "type": "option"
4236
4155
  }
4237
4156
  },
4238
4157
  "hasDynamicHelp": false,
4239
4158
  "hiddenAliases": [],
4240
- "id": "feedback:submit",
4159
+ "id": "gh:status",
4241
4160
  "pluginAlias": "@proletariat/cli",
4242
4161
  "pluginName": "@proletariat/cli",
4243
4162
  "pluginType": "core",
4244
4163
  "strict": true,
4164
+ "enableJsonFlag": false,
4245
4165
  "isESM": true,
4246
4166
  "relativePath": [
4247
4167
  "dist",
4248
4168
  "commands",
4249
- "feedback",
4250
- "submit.js"
4169
+ "gh",
4170
+ "status.js"
4251
4171
  ]
4252
4172
  },
4253
- "feedback:view": {
4173
+ "gh:token": {
4254
4174
  "aliases": [],
4255
- "args": {
4256
- "number": {
4257
- "description": "Issue number to view",
4258
- "name": "number",
4259
- "required": true
4260
- }
4261
- },
4262
- "description": "View details of a specific feedback issue",
4175
+ "args": {},
4176
+ "description": "Show GH_TOKEN setup for devcontainer PR creation",
4263
4177
  "examples": [
4264
- "<%= config.bin %> <%= command.id %> 123",
4265
- "<%= config.bin %> <%= command.id %> 123 --json"
4178
+ "<%= config.bin %> <%= command.id %>"
4266
4179
  ],
4267
4180
  "flags": {
4268
4181
  "json": {
@@ -4281,7 +4194,7 @@
4281
4194
  },
4282
4195
  "hasDynamicHelp": false,
4283
4196
  "hiddenAliases": [],
4284
- "id": "feedback:view",
4197
+ "id": "gh:token",
4285
4198
  "pluginAlias": "@proletariat/cli",
4286
4199
  "pluginName": "@proletariat/cli",
4287
4200
  "pluginType": "core",
@@ -4291,19 +4204,17 @@
4291
4204
  "relativePath": [
4292
4205
  "dist",
4293
4206
  "commands",
4294
- "feedback",
4295
- "view.js"
4207
+ "gh",
4208
+ "token.js"
4296
4209
  ]
4297
4210
  },
4298
- "gh": {
4211
+ "feedback": {
4299
4212
  "aliases": [],
4300
4213
  "args": {},
4301
- "description": "GitHub CLI setup and status for PR workflow",
4214
+ "description": "Interactive menu for feedback and issue operations",
4302
4215
  "examples": [
4303
4216
  "<%= config.bin %> <%= command.id %>",
4304
- "<%= config.bin %> <%= command.id %> status",
4305
- "<%= config.bin %> <%= command.id %> login",
4306
- "<%= config.bin %> <%= command.id %> token"
4217
+ "<%= config.bin %> <%= command.id %> --action submit"
4307
4218
  ],
4308
4219
  "flags": {
4309
4220
  "json": {
@@ -4318,11 +4229,24 @@
4318
4229
  "name": "machine",
4319
4230
  "allowNo": false,
4320
4231
  "type": "boolean"
4232
+ },
4233
+ "action": {
4234
+ "char": "a",
4235
+ "description": "Action to perform (submit, list, view)",
4236
+ "name": "action",
4237
+ "hasDynamicHelp": false,
4238
+ "multiple": false,
4239
+ "options": [
4240
+ "submit",
4241
+ "list",
4242
+ "view"
4243
+ ],
4244
+ "type": "option"
4321
4245
  }
4322
4246
  },
4323
4247
  "hasDynamicHelp": false,
4324
4248
  "hiddenAliases": [],
4325
- "id": "gh",
4249
+ "id": "feedback",
4326
4250
  "pluginAlias": "@proletariat/cli",
4327
4251
  "pluginName": "@proletariat/cli",
4328
4252
  "pluginType": "core",
@@ -4332,16 +4256,19 @@
4332
4256
  "relativePath": [
4333
4257
  "dist",
4334
4258
  "commands",
4335
- "gh",
4259
+ "feedback",
4336
4260
  "index.js"
4337
4261
  ]
4338
4262
  },
4339
- "gh:login": {
4263
+ "feedback:list": {
4340
4264
  "aliases": [],
4341
4265
  "args": {},
4342
- "description": "Login to GitHub CLI for PR workflow",
4266
+ "description": "List recent feedback issues from the repository",
4343
4267
  "examples": [
4344
- "<%= config.bin %> <%= command.id %>"
4268
+ "<%= config.bin %> <%= command.id %>",
4269
+ "<%= config.bin %> <%= command.id %> --category bug",
4270
+ "<%= config.bin %> <%= command.id %> --state closed --limit 10",
4271
+ "<%= config.bin %> <%= command.id %> --json"
4345
4272
  ],
4346
4273
  "flags": {
4347
4274
  "json": {
@@ -4356,11 +4283,47 @@
4356
4283
  "name": "machine",
4357
4284
  "allowNo": false,
4358
4285
  "type": "boolean"
4286
+ },
4287
+ "category": {
4288
+ "char": "c",
4289
+ "description": "Filter by category (bug, feature, general)",
4290
+ "name": "category",
4291
+ "hasDynamicHelp": false,
4292
+ "multiple": false,
4293
+ "options": [
4294
+ "bug",
4295
+ "feature",
4296
+ "general"
4297
+ ],
4298
+ "type": "option"
4299
+ },
4300
+ "state": {
4301
+ "char": "s",
4302
+ "description": "Filter by state",
4303
+ "name": "state",
4304
+ "default": "open",
4305
+ "hasDynamicHelp": false,
4306
+ "multiple": false,
4307
+ "options": [
4308
+ "open",
4309
+ "closed",
4310
+ "all"
4311
+ ],
4312
+ "type": "option"
4313
+ },
4314
+ "limit": {
4315
+ "char": "l",
4316
+ "description": "Maximum number of issues to show",
4317
+ "name": "limit",
4318
+ "default": 20,
4319
+ "hasDynamicHelp": false,
4320
+ "multiple": false,
4321
+ "type": "option"
4359
4322
  }
4360
4323
  },
4361
4324
  "hasDynamicHelp": false,
4362
4325
  "hiddenAliases": [],
4363
- "id": "gh:login",
4326
+ "id": "feedback:list",
4364
4327
  "pluginAlias": "@proletariat/cli",
4365
4328
  "pluginName": "@proletariat/cli",
4366
4329
  "pluginType": "core",
@@ -4370,16 +4333,18 @@
4370
4333
  "relativePath": [
4371
4334
  "dist",
4372
4335
  "commands",
4373
- "gh",
4374
- "login.js"
4336
+ "feedback",
4337
+ "list.js"
4375
4338
  ]
4376
4339
  },
4377
- "gh:status": {
4340
+ "feedback:submit": {
4378
4341
  "aliases": [],
4379
4342
  "args": {},
4380
- "description": "Check GitHub CLI status for PR workflow",
4343
+ "description": "Submit feedback, bug reports, or feature requests to GitHub Issues",
4381
4344
  "examples": [
4382
- "<%= config.bin %> <%= command.id %>"
4345
+ "<%= config.bin %> <%= command.id %>",
4346
+ "<%= config.bin %> <%= command.id %> --title \"Bug in CLI\" --body \"Description here\" --category bug",
4347
+ "<%= config.bin %> <%= command.id %> --json"
4383
4348
  ],
4384
4349
  "flags": {
4385
4350
  "json": {
@@ -4394,30 +4359,65 @@
4394
4359
  "name": "machine",
4395
4360
  "allowNo": false,
4396
4361
  "type": "boolean"
4362
+ },
4363
+ "title": {
4364
+ "char": "t",
4365
+ "description": "Issue title (one-liner) [required for non-interactive]",
4366
+ "name": "title",
4367
+ "hasDynamicHelp": false,
4368
+ "multiple": false,
4369
+ "type": "option"
4370
+ },
4371
+ "body": {
4372
+ "char": "b",
4373
+ "description": "Issue description [required for non-interactive]",
4374
+ "name": "body",
4375
+ "hasDynamicHelp": false,
4376
+ "multiple": false,
4377
+ "type": "option"
4378
+ },
4379
+ "category": {
4380
+ "char": "c",
4381
+ "description": "Feedback category",
4382
+ "name": "category",
4383
+ "hasDynamicHelp": false,
4384
+ "multiple": false,
4385
+ "options": [
4386
+ "bug",
4387
+ "feature",
4388
+ "general"
4389
+ ],
4390
+ "type": "option"
4397
4391
  }
4398
4392
  },
4399
4393
  "hasDynamicHelp": false,
4400
4394
  "hiddenAliases": [],
4401
- "id": "gh:status",
4395
+ "id": "feedback:submit",
4402
4396
  "pluginAlias": "@proletariat/cli",
4403
4397
  "pluginName": "@proletariat/cli",
4404
4398
  "pluginType": "core",
4405
4399
  "strict": true,
4406
- "enableJsonFlag": false,
4407
4400
  "isESM": true,
4408
4401
  "relativePath": [
4409
4402
  "dist",
4410
4403
  "commands",
4411
- "gh",
4412
- "status.js"
4404
+ "feedback",
4405
+ "submit.js"
4413
4406
  ]
4414
4407
  },
4415
- "gh:token": {
4408
+ "feedback:view": {
4416
4409
  "aliases": [],
4417
- "args": {},
4418
- "description": "Show GH_TOKEN setup for devcontainer PR creation",
4410
+ "args": {
4411
+ "number": {
4412
+ "description": "Issue number to view",
4413
+ "name": "number",
4414
+ "required": true
4415
+ }
4416
+ },
4417
+ "description": "View details of a specific feedback issue",
4419
4418
  "examples": [
4420
- "<%= config.bin %> <%= command.id %>"
4419
+ "<%= config.bin %> <%= command.id %> 123",
4420
+ "<%= config.bin %> <%= command.id %> 123 --json"
4421
4421
  ],
4422
4422
  "flags": {
4423
4423
  "json": {
@@ -4436,7 +4436,7 @@
4436
4436
  },
4437
4437
  "hasDynamicHelp": false,
4438
4438
  "hiddenAliases": [],
4439
- "id": "gh:token",
4439
+ "id": "feedback:view",
4440
4440
  "pluginAlias": "@proletariat/cli",
4441
4441
  "pluginName": "@proletariat/cli",
4442
4442
  "pluginType": "core",
@@ -4446,18 +4446,29 @@
4446
4446
  "relativePath": [
4447
4447
  "dist",
4448
4448
  "commands",
4449
- "gh",
4450
- "token.js"
4449
+ "feedback",
4450
+ "view.js"
4451
4451
  ]
4452
4452
  },
4453
- "hook:export": {
4453
+ "linear:auth": {
4454
4454
  "aliases": [],
4455
4455
  "args": {},
4456
- "description": "Export hook configuration as YAML",
4456
+ "description": "Authenticate with Linear (alias for \"prlt linear connect\")",
4457
4457
  "examples": [
4458
- "<%= config.bin %> <%= command.id %>"
4458
+ "<%= config.bin %> linear connect",
4459
+ "<%= config.bin %> linear connect --check",
4460
+ "<%= config.bin %> linear connect --force",
4461
+ "LINEAR_API_KEY=lin_api_... <%= config.bin %> linear connect"
4459
4462
  ],
4460
4463
  "flags": {
4464
+ "project": {
4465
+ "char": "P",
4466
+ "description": "Project ID (uses first project if only one exists)",
4467
+ "name": "project",
4468
+ "hasDynamicHelp": false,
4469
+ "multiple": false,
4470
+ "type": "option"
4471
+ },
4461
4472
  "json": {
4462
4473
  "description": "Output as JSON for AI agents/scripts",
4463
4474
  "name": "json",
@@ -4470,11 +4481,30 @@
4470
4481
  "name": "machine",
4471
4482
  "allowNo": false,
4472
4483
  "type": "boolean"
4484
+ },
4485
+ "check": {
4486
+ "description": "Only check if Linear credentials exist (do not prompt)",
4487
+ "name": "check",
4488
+ "allowNo": false,
4489
+ "type": "boolean"
4490
+ },
4491
+ "force": {
4492
+ "description": "Force re-authentication even if credentials exist",
4493
+ "name": "force",
4494
+ "allowNo": false,
4495
+ "type": "boolean"
4496
+ },
4497
+ "disconnect": {
4498
+ "description": "Remove stored Linear credentials",
4499
+ "name": "disconnect",
4500
+ "allowNo": false,
4501
+ "type": "boolean"
4473
4502
  }
4474
4503
  },
4475
4504
  "hasDynamicHelp": false,
4505
+ "hidden": true,
4476
4506
  "hiddenAliases": [],
4477
- "id": "hook:export",
4507
+ "id": "linear:auth",
4478
4508
  "pluginAlias": "@proletariat/cli",
4479
4509
  "pluginName": "@proletariat/cli",
4480
4510
  "pluginType": "core",
@@ -4483,48 +4513,32 @@
4483
4513
  "relativePath": [
4484
4514
  "dist",
4485
4515
  "commands",
4486
- "hook",
4487
- "export.js"
4516
+ "linear",
4517
+ "auth.js"
4488
4518
  ]
4489
4519
  },
4490
- "hook:fire": {
4520
+ "linear:connect": {
4491
4521
  "aliases": [],
4492
- "args": {
4493
- "event": {
4494
- "description": "Event name to fire",
4495
- "name": "event",
4496
- "options": [
4497
- "work:started",
4498
- "work:status_changed",
4499
- "work:pr_created",
4500
- "work:pr_merged",
4501
- "work:pr_closed",
4502
- "work:completed",
4503
- "agent:spawned",
4504
- "agent:stopped",
4505
- "on_ci_green",
4506
- "on_ci_failed",
4507
- "on_pr_opened",
4508
- "on_pr_merged",
4509
- "on_pr_conflicting",
4510
- "on_ticket_ready",
4511
- "on_agent_spawned",
4512
- "on_agent_died",
4513
- "on_agent_completed",
4514
- "on_agent_idle",
4515
- "on_version_published"
4516
- ],
4517
- "required": true
4518
- }
4519
- },
4520
- "description": "Fire an orchestrate event to trigger configured hooks",
4522
+ "args": {},
4523
+ "description": "Connect to Linear workspace and configure authentication",
4521
4524
  "examples": [
4522
- "<%= config.bin %> <%= command.id %> on_ci_green --pr 123",
4523
- "<%= config.bin %> <%= command.id %> on_pr_merged --ticket TKT-100 --pr 456",
4524
- "<%= config.bin %> <%= command.id %> on_ticket_ready --ticket TKT-200",
4525
- "<%= config.bin %> <%= command.id %> on_agent_died --ticket TKT-100 --agent bold-turing"
4525
+ "<%= config.bin %> <%= command.id %>",
4526
+ "<%= config.bin %> <%= command.id %> --check",
4527
+ "<%= config.bin %> <%= command.id %> --force",
4528
+ "<%= config.bin %> <%= command.id %> --disconnect",
4529
+ "<%= config.bin %> <%= command.id %> --team ENG",
4530
+ "LINEAR_API_KEY=lin_api_... <%= config.bin %> <%= command.id %>",
4531
+ "<%= config.bin %> <%= command.id %> --json"
4526
4532
  ],
4527
4533
  "flags": {
4534
+ "project": {
4535
+ "char": "P",
4536
+ "description": "Project ID (uses first project if only one exists)",
4537
+ "name": "project",
4538
+ "hasDynamicHelp": false,
4539
+ "multiple": false,
4540
+ "type": "option"
4541
+ },
4528
4542
  "json": {
4529
4543
  "description": "Output as JSON for AI agents/scripts",
4530
4544
  "name": "json",
@@ -4538,51 +4552,150 @@
4538
4552
  "allowNo": false,
4539
4553
  "type": "boolean"
4540
4554
  },
4541
- "ticket": {
4542
- "char": "t",
4543
- "description": "Ticket ID",
4544
- "name": "ticket",
4545
- "hasDynamicHelp": false,
4546
- "multiple": false,
4547
- "type": "option"
4555
+ "check": {
4556
+ "description": "Only check if Linear credentials are valid (do not prompt)",
4557
+ "name": "check",
4558
+ "allowNo": false,
4559
+ "type": "boolean"
4548
4560
  },
4549
- "pr": {
4550
- "description": "PR number",
4551
- "name": "pr",
4552
- "hasDynamicHelp": false,
4561
+ "force": {
4562
+ "description": "Force re-authentication even if credentials exist",
4563
+ "name": "force",
4564
+ "allowNo": false,
4565
+ "type": "boolean"
4566
+ },
4567
+ "disconnect": {
4568
+ "description": "Remove stored Linear credentials and configuration",
4569
+ "name": "disconnect",
4570
+ "allowNo": false,
4571
+ "type": "boolean"
4572
+ },
4573
+ "team": {
4574
+ "description": "Default team key (e.g., \"ENG\") for non-interactive setup",
4575
+ "name": "team",
4576
+ "hasDynamicHelp": false,
4577
+ "multiple": false,
4578
+ "type": "option"
4579
+ }
4580
+ },
4581
+ "hasDynamicHelp": false,
4582
+ "hiddenAliases": [],
4583
+ "id": "linear:connect",
4584
+ "pluginAlias": "@proletariat/cli",
4585
+ "pluginName": "@proletariat/cli",
4586
+ "pluginType": "core",
4587
+ "strict": true,
4588
+ "isESM": true,
4589
+ "relativePath": [
4590
+ "dist",
4591
+ "commands",
4592
+ "linear",
4593
+ "connect.js"
4594
+ ]
4595
+ },
4596
+ "linear:import": {
4597
+ "aliases": [],
4598
+ "args": {},
4599
+ "description": "Import Linear issues into PMO as tickets",
4600
+ "examples": [
4601
+ "<%= config.bin %> <%= command.id %> # Interactive: select team and issues",
4602
+ "<%= config.bin %> <%= command.id %> ENG-123 ENG-124 # Import specific issues by identifier",
4603
+ "<%= config.bin %> <%= command.id %> --team ENG # Import from a specific team",
4604
+ "<%= config.bin %> <%= command.id %> --team ENG --state \"In Progress\" # Filter by state",
4605
+ "<%= config.bin %> <%= command.id %> --team ENG --label bug # Filter by label",
4606
+ "<%= config.bin %> <%= command.id %> --limit 20 --json # Import up to 20 issues, JSON output"
4607
+ ],
4608
+ "flags": {
4609
+ "project": {
4610
+ "char": "P",
4611
+ "description": "Project ID (uses first project if only one exists)",
4612
+ "name": "project",
4613
+ "hasDynamicHelp": false,
4553
4614
  "multiple": false,
4554
4615
  "type": "option"
4555
4616
  },
4556
- "branch": {
4557
- "description": "Branch name",
4558
- "name": "branch",
4617
+ "json": {
4618
+ "description": "Output as JSON for AI agents/scripts",
4619
+ "name": "json",
4620
+ "allowNo": false,
4621
+ "type": "boolean"
4622
+ },
4623
+ "machine": {
4624
+ "char": "m",
4625
+ "description": "Output as JSON for AI agents/scripts",
4626
+ "name": "machine",
4627
+ "allowNo": false,
4628
+ "type": "boolean"
4629
+ },
4630
+ "team": {
4631
+ "char": "t",
4632
+ "description": "Linear team key (e.g., ENG)",
4633
+ "name": "team",
4559
4634
  "hasDynamicHelp": false,
4560
4635
  "multiple": false,
4561
4636
  "type": "option"
4562
4637
  },
4563
- "agent": {
4564
- "description": "Agent name",
4565
- "name": "agent",
4638
+ "state": {
4639
+ "description": "Filter by Linear state name (e.g., \"In Progress\", \"Backlog\")",
4640
+ "name": "state",
4566
4641
  "hasDynamicHelp": false,
4567
4642
  "multiple": false,
4568
4643
  "type": "option"
4569
4644
  },
4570
- "action": {
4571
- "description": "Action to execute (for direct invocation)",
4572
- "name": "action",
4645
+ "state-type": {
4646
+ "description": "Filter by Linear state type",
4647
+ "name": "state-type",
4573
4648
  "hasDynamicHelp": false,
4574
4649
  "multiple": false,
4650
+ "options": [
4651
+ "triage",
4652
+ "backlog",
4653
+ "unstarted",
4654
+ "started",
4655
+ "completed",
4656
+ "canceled"
4657
+ ],
4575
4658
  "type": "option"
4576
4659
  },
4577
- "pr-url": {
4578
- "description": "PR URL",
4579
- "name": "pr-url",
4660
+ "label": {
4661
+ "description": "Filter by Linear label name",
4662
+ "name": "label",
4663
+ "hasDynamicHelp": false,
4664
+ "multiple": false,
4665
+ "type": "option"
4666
+ },
4667
+ "assignee": {
4668
+ "description": "Filter by assignee name or \"me\"",
4669
+ "name": "assignee",
4670
+ "hasDynamicHelp": false,
4671
+ "multiple": false,
4672
+ "type": "option"
4673
+ },
4674
+ "cycle": {
4675
+ "description": "Filter by cycle ID",
4676
+ "name": "cycle",
4677
+ "hasDynamicHelp": false,
4678
+ "multiple": false,
4679
+ "type": "option"
4680
+ },
4681
+ "limit": {
4682
+ "char": "n",
4683
+ "description": "Maximum number of issues to import",
4684
+ "name": "limit",
4685
+ "default": 50,
4580
4686
  "hasDynamicHelp": false,
4581
4687
  "multiple": false,
4582
4688
  "type": "option"
4583
4689
  },
4690
+ "all": {
4691
+ "char": "a",
4692
+ "description": "Import all matching issues without interactive selection",
4693
+ "name": "all",
4694
+ "allowNo": false,
4695
+ "type": "boolean"
4696
+ },
4584
4697
  "dry-run": {
4585
- "description": "Show what would happen without executing",
4698
+ "description": "Preview issues that would be imported without creating tickets",
4586
4699
  "name": "dry-run",
4587
4700
  "allowNo": false,
4588
4701
  "type": "boolean"
@@ -4590,28 +4703,26 @@
4590
4703
  },
4591
4704
  "hasDynamicHelp": false,
4592
4705
  "hiddenAliases": [],
4593
- "id": "hook:fire",
4706
+ "id": "linear:import",
4594
4707
  "pluginAlias": "@proletariat/cli",
4595
4708
  "pluginName": "@proletariat/cli",
4596
4709
  "pluginType": "core",
4597
- "strict": true,
4710
+ "strict": false,
4598
4711
  "isESM": true,
4599
4712
  "relativePath": [
4600
4713
  "dist",
4601
4714
  "commands",
4602
- "hook",
4603
- "fire.js"
4715
+ "linear",
4716
+ "import.js"
4604
4717
  ]
4605
4718
  },
4606
- "hook": {
4719
+ "linear:status": {
4607
4720
  "aliases": [],
4608
4721
  "args": {},
4609
- "description": "Manage orchestrate hooks (event-driven pipeline automation)",
4722
+ "description": "Validate Linear token, team access, and show integration health",
4610
4723
  "examples": [
4611
4724
  "<%= config.bin %> <%= command.id %>",
4612
- "<%= config.bin %> hook fire on_ci_green --pr 123",
4613
- "<%= config.bin %> hook list",
4614
- "<%= config.bin %> hook preset supervised"
4725
+ "<%= config.bin %> <%= command.id %> --json"
4615
4726
  ],
4616
4727
  "flags": {
4617
4728
  "project": {
@@ -4638,7 +4749,7 @@
4638
4749
  },
4639
4750
  "hasDynamicHelp": false,
4640
4751
  "hiddenAliases": [],
4641
- "id": "hook",
4752
+ "id": "linear:status",
4642
4753
  "pluginAlias": "@proletariat/cli",
4643
4754
  "pluginName": "@proletariat/cli",
4644
4755
  "pluginType": "core",
@@ -4647,20 +4758,29 @@
4647
4758
  "relativePath": [
4648
4759
  "dist",
4649
4760
  "commands",
4650
- "hook",
4651
- "index.js"
4761
+ "linear",
4762
+ "status.js"
4652
4763
  ]
4653
4764
  },
4654
- "hook:list": {
4765
+ "linear:sync": {
4655
4766
  "aliases": [],
4656
4767
  "args": {},
4657
- "description": "List configured orchestrate hooks",
4768
+ "description": "Sync PMO ticket status and PR links back to Linear",
4658
4769
  "examples": [
4659
- "<%= config.bin %> <%= command.id %>",
4660
- "<%= config.bin %> <%= command.id %> --event on_ci_green",
4661
- "<%= config.bin %> <%= command.id %> --mode auto"
4770
+ "<%= config.bin %> <%= command.id %> # Sync all mapped tickets",
4771
+ "<%= config.bin %> <%= command.id %> --ticket TKT-001 # Sync a specific ticket",
4772
+ "<%= config.bin %> <%= command.id %> --pr-url https://github.com/... --ticket TKT-001 # Attach PR to Linear issue",
4773
+ "<%= config.bin %> <%= command.id %> --dry-run # Preview what would be synced"
4662
4774
  ],
4663
4775
  "flags": {
4776
+ "project": {
4777
+ "char": "P",
4778
+ "description": "Project ID (uses first project if only one exists)",
4779
+ "name": "project",
4780
+ "hasDynamicHelp": false,
4781
+ "multiple": false,
4782
+ "type": "option"
4783
+ },
4664
4784
  "json": {
4665
4785
  "description": "Output as JSON for AI agents/scripts",
4666
4786
  "name": "json",
@@ -4674,42 +4794,37 @@
4674
4794
  "allowNo": false,
4675
4795
  "type": "boolean"
4676
4796
  },
4677
- "event": {
4678
- "description": "Filter by event name",
4679
- "name": "event",
4797
+ "ticket": {
4798
+ "description": "PMO ticket ID to sync (syncs all if omitted)",
4799
+ "name": "ticket",
4680
4800
  "hasDynamicHelp": false,
4681
4801
  "multiple": false,
4682
4802
  "type": "option"
4683
4803
  },
4684
- "mode": {
4685
- "description": "Filter by mode (auto, confirm, notify, off)",
4686
- "name": "mode",
4804
+ "pr-url": {
4805
+ "description": "PR URL to attach to the Linear issue",
4806
+ "name": "pr-url",
4687
4807
  "hasDynamicHelp": false,
4688
4808
  "multiple": false,
4689
- "options": [
4690
- "auto",
4691
- "confirm",
4692
- "notify",
4693
- "off"
4694
- ],
4695
4809
  "type": "option"
4696
4810
  },
4697
- "source": {
4698
- "description": "Filter by source (yaml, cli, preset)",
4699
- "name": "source",
4811
+ "pr-title": {
4812
+ "description": "PR title for the attachment (defaults to ticket title)",
4813
+ "name": "pr-title",
4700
4814
  "hasDynamicHelp": false,
4701
4815
  "multiple": false,
4702
- "options": [
4703
- "yaml",
4704
- "cli",
4705
- "preset"
4706
- ],
4707
4816
  "type": "option"
4817
+ },
4818
+ "dry-run": {
4819
+ "description": "Preview what would be synced without making changes",
4820
+ "name": "dry-run",
4821
+ "allowNo": false,
4822
+ "type": "boolean"
4708
4823
  }
4709
4824
  },
4710
4825
  "hasDynamicHelp": false,
4711
4826
  "hiddenAliases": [],
4712
- "id": "hook:list",
4827
+ "id": "linear:sync",
4713
4828
  "pluginAlias": "@proletariat/cli",
4714
4829
  "pluginName": "@proletariat/cli",
4715
4830
  "pluginType": "core",
@@ -4718,29 +4833,16 @@
4718
4833
  "relativePath": [
4719
4834
  "dist",
4720
4835
  "commands",
4721
- "hook",
4722
- "list.js"
4836
+ "linear",
4837
+ "sync.js"
4723
4838
  ]
4724
4839
  },
4725
- "hook:preset": {
4840
+ "hook:export": {
4726
4841
  "aliases": [],
4727
- "args": {
4728
- "preset": {
4729
- "description": "Preset name to apply",
4730
- "name": "preset",
4731
- "options": [
4732
- "aggressive",
4733
- "conservative",
4734
- "supervised"
4735
- ],
4736
- "required": true
4737
- }
4738
- },
4739
- "description": "Apply a hook preset (aggressive, conservative, supervised)",
4842
+ "args": {},
4843
+ "description": "Export hook configuration as YAML",
4740
4844
  "examples": [
4741
- "<%= config.bin %> <%= command.id %> aggressive",
4742
- "<%= config.bin %> <%= command.id %> conservative",
4743
- "<%= config.bin %> <%= command.id %> supervised"
4845
+ "<%= config.bin %> <%= command.id %>"
4744
4846
  ],
4745
4847
  "flags": {
4746
4848
  "json": {
@@ -4759,7 +4861,7 @@
4759
4861
  },
4760
4862
  "hasDynamicHelp": false,
4761
4863
  "hiddenAliases": [],
4762
- "id": "hook:preset",
4864
+ "id": "hook:export",
4763
4865
  "pluginAlias": "@proletariat/cli",
4764
4866
  "pluginName": "@proletariat/cli",
4765
4867
  "pluginType": "core",
@@ -4769,28 +4871,49 @@
4769
4871
  "dist",
4770
4872
  "commands",
4771
4873
  "hook",
4772
- "preset.js"
4874
+ "export.js"
4773
4875
  ]
4774
4876
  },
4775
- "linear:auth": {
4877
+ "hook:fire": {
4776
4878
  "aliases": [],
4777
- "args": {},
4778
- "description": "Authenticate with Linear (alias for \"prlt linear connect\")",
4779
- "examples": [
4780
- "<%= config.bin %> linear connect",
4781
- "<%= config.bin %> linear connect --check",
4782
- "<%= config.bin %> linear connect --force",
4783
- "LINEAR_API_KEY=lin_api_... <%= config.bin %> linear connect"
4784
- ],
4785
- "flags": {
4786
- "project": {
4787
- "char": "P",
4788
- "description": "Project ID (uses first project if only one exists)",
4789
- "name": "project",
4790
- "hasDynamicHelp": false,
4791
- "multiple": false,
4792
- "type": "option"
4793
- },
4879
+ "args": {
4880
+ "event": {
4881
+ "description": "Event name to fire",
4882
+ "name": "event",
4883
+ "options": [
4884
+ "work:started",
4885
+ "work:status_changed",
4886
+ "work:pr_created",
4887
+ "work:pr_merged",
4888
+ "work:pr_closed",
4889
+ "work:completed",
4890
+ "agent:spawned",
4891
+ "agent:stopped",
4892
+ "on_ci_green",
4893
+ "on_ci_failed",
4894
+ "on_pr_opened",
4895
+ "on_pr_merged",
4896
+ "on_pr_conflicting",
4897
+ "on_ticket_ready",
4898
+ "on_agent_spawned",
4899
+ "on_agent_died",
4900
+ "on_agent_completed",
4901
+ "on_agent_idle",
4902
+ "on_review_approved",
4903
+ "on_changes_requested",
4904
+ "on_version_published"
4905
+ ],
4906
+ "required": true
4907
+ }
4908
+ },
4909
+ "description": "Fire an orchestrate event to trigger configured hooks",
4910
+ "examples": [
4911
+ "<%= config.bin %> <%= command.id %> on_ci_green --pr 123",
4912
+ "<%= config.bin %> <%= command.id %> on_pr_merged --ticket TKT-100 --pr 456",
4913
+ "<%= config.bin %> <%= command.id %> on_ticket_ready --ticket TKT-200",
4914
+ "<%= config.bin %> <%= command.id %> on_agent_died --ticket TKT-100 --agent bold-turing"
4915
+ ],
4916
+ "flags": {
4794
4917
  "json": {
4795
4918
  "description": "Output as JSON for AI agents/scripts",
4796
4919
  "name": "json",
@@ -4804,29 +4927,59 @@
4804
4927
  "allowNo": false,
4805
4928
  "type": "boolean"
4806
4929
  },
4807
- "check": {
4808
- "description": "Only check if Linear credentials exist (do not prompt)",
4809
- "name": "check",
4810
- "allowNo": false,
4811
- "type": "boolean"
4930
+ "ticket": {
4931
+ "char": "t",
4932
+ "description": "Ticket ID",
4933
+ "name": "ticket",
4934
+ "hasDynamicHelp": false,
4935
+ "multiple": false,
4936
+ "type": "option"
4812
4937
  },
4813
- "force": {
4814
- "description": "Force re-authentication even if credentials exist",
4815
- "name": "force",
4816
- "allowNo": false,
4817
- "type": "boolean"
4938
+ "pr": {
4939
+ "description": "PR number",
4940
+ "name": "pr",
4941
+ "hasDynamicHelp": false,
4942
+ "multiple": false,
4943
+ "type": "option"
4818
4944
  },
4819
- "disconnect": {
4820
- "description": "Remove stored Linear credentials",
4821
- "name": "disconnect",
4945
+ "branch": {
4946
+ "description": "Branch name",
4947
+ "name": "branch",
4948
+ "hasDynamicHelp": false,
4949
+ "multiple": false,
4950
+ "type": "option"
4951
+ },
4952
+ "agent": {
4953
+ "description": "Agent name",
4954
+ "name": "agent",
4955
+ "hasDynamicHelp": false,
4956
+ "multiple": false,
4957
+ "type": "option"
4958
+ },
4959
+ "action": {
4960
+ "description": "Action to execute (for direct invocation)",
4961
+ "name": "action",
4962
+ "hasDynamicHelp": false,
4963
+ "multiple": false,
4964
+ "type": "option"
4965
+ },
4966
+ "pr-url": {
4967
+ "description": "PR URL",
4968
+ "name": "pr-url",
4969
+ "hasDynamicHelp": false,
4970
+ "multiple": false,
4971
+ "type": "option"
4972
+ },
4973
+ "dry-run": {
4974
+ "description": "Show what would happen without executing",
4975
+ "name": "dry-run",
4822
4976
  "allowNo": false,
4823
4977
  "type": "boolean"
4824
4978
  }
4825
4979
  },
4826
4980
  "hasDynamicHelp": false,
4827
- "hidden": true,
4828
4981
  "hiddenAliases": [],
4829
- "id": "linear:auth",
4982
+ "id": "hook:fire",
4830
4983
  "pluginAlias": "@proletariat/cli",
4831
4984
  "pluginName": "@proletariat/cli",
4832
4985
  "pluginType": "core",
@@ -4835,22 +4988,19 @@
4835
4988
  "relativePath": [
4836
4989
  "dist",
4837
4990
  "commands",
4838
- "linear",
4839
- "auth.js"
4991
+ "hook",
4992
+ "fire.js"
4840
4993
  ]
4841
4994
  },
4842
- "linear:connect": {
4995
+ "hook": {
4843
4996
  "aliases": [],
4844
4997
  "args": {},
4845
- "description": "Connect to Linear workspace and configure authentication",
4998
+ "description": "Manage orchestrate hooks (event-driven pipeline automation)",
4846
4999
  "examples": [
4847
5000
  "<%= config.bin %> <%= command.id %>",
4848
- "<%= config.bin %> <%= command.id %> --check",
4849
- "<%= config.bin %> <%= command.id %> --force",
4850
- "<%= config.bin %> <%= command.id %> --disconnect",
4851
- "<%= config.bin %> <%= command.id %> --team ENG",
4852
- "LINEAR_API_KEY=lin_api_... <%= config.bin %> <%= command.id %>",
4853
- "<%= config.bin %> <%= command.id %> --json"
5001
+ "<%= config.bin %> hook fire on_ci_green --pr 123",
5002
+ "<%= config.bin %> hook list",
5003
+ "<%= config.bin %> hook preset supervised"
4854
5004
  ],
4855
5005
  "flags": {
4856
5006
  "project": {
@@ -4873,36 +5023,11 @@
4873
5023
  "name": "machine",
4874
5024
  "allowNo": false,
4875
5025
  "type": "boolean"
4876
- },
4877
- "check": {
4878
- "description": "Only check if Linear credentials are valid (do not prompt)",
4879
- "name": "check",
4880
- "allowNo": false,
4881
- "type": "boolean"
4882
- },
4883
- "force": {
4884
- "description": "Force re-authentication even if credentials exist",
4885
- "name": "force",
4886
- "allowNo": false,
4887
- "type": "boolean"
4888
- },
4889
- "disconnect": {
4890
- "description": "Remove stored Linear credentials and configuration",
4891
- "name": "disconnect",
4892
- "allowNo": false,
4893
- "type": "boolean"
4894
- },
4895
- "team": {
4896
- "description": "Default team key (e.g., \"ENG\") for non-interactive setup",
4897
- "name": "team",
4898
- "hasDynamicHelp": false,
4899
- "multiple": false,
4900
- "type": "option"
4901
5026
  }
4902
5027
  },
4903
5028
  "hasDynamicHelp": false,
4904
5029
  "hiddenAliases": [],
4905
- "id": "linear:connect",
5030
+ "id": "hook",
4906
5031
  "pluginAlias": "@proletariat/cli",
4907
5032
  "pluginName": "@proletariat/cli",
4908
5033
  "pluginType": "core",
@@ -4911,31 +5036,20 @@
4911
5036
  "relativePath": [
4912
5037
  "dist",
4913
5038
  "commands",
4914
- "linear",
4915
- "connect.js"
5039
+ "hook",
5040
+ "index.js"
4916
5041
  ]
4917
5042
  },
4918
- "linear:import": {
5043
+ "hook:list": {
4919
5044
  "aliases": [],
4920
5045
  "args": {},
4921
- "description": "Import Linear issues into PMO as tickets",
5046
+ "description": "List configured orchestrate hooks",
4922
5047
  "examples": [
4923
- "<%= config.bin %> <%= command.id %> # Interactive: select team and issues",
4924
- "<%= config.bin %> <%= command.id %> ENG-123 ENG-124 # Import specific issues by identifier",
4925
- "<%= config.bin %> <%= command.id %> --team ENG # Import from a specific team",
4926
- "<%= config.bin %> <%= command.id %> --team ENG --state \"In Progress\" # Filter by state",
4927
- "<%= config.bin %> <%= command.id %> --team ENG --label bug # Filter by label",
4928
- "<%= config.bin %> <%= command.id %> --limit 20 --json # Import up to 20 issues, JSON output"
5048
+ "<%= config.bin %> <%= command.id %>",
5049
+ "<%= config.bin %> <%= command.id %> --event on_ci_green",
5050
+ "<%= config.bin %> <%= command.id %> --mode auto"
4929
5051
  ],
4930
5052
  "flags": {
4931
- "project": {
4932
- "char": "P",
4933
- "description": "Project ID (uses first project if only one exists)",
4934
- "name": "project",
4935
- "hasDynamicHelp": false,
4936
- "multiple": false,
4937
- "type": "option"
4938
- },
4939
5053
  "json": {
4940
5054
  "description": "Output as JSON for AI agents/scripts",
4941
5055
  "name": "json",
@@ -4949,160 +5063,75 @@
4949
5063
  "allowNo": false,
4950
5064
  "type": "boolean"
4951
5065
  },
4952
- "team": {
4953
- "char": "t",
4954
- "description": "Linear team key (e.g., ENG)",
4955
- "name": "team",
4956
- "hasDynamicHelp": false,
4957
- "multiple": false,
4958
- "type": "option"
4959
- },
4960
- "state": {
4961
- "description": "Filter by Linear state name (e.g., \"In Progress\", \"Backlog\")",
4962
- "name": "state",
5066
+ "event": {
5067
+ "description": "Filter by event name",
5068
+ "name": "event",
4963
5069
  "hasDynamicHelp": false,
4964
5070
  "multiple": false,
4965
5071
  "type": "option"
4966
5072
  },
4967
- "state-type": {
4968
- "description": "Filter by Linear state type",
4969
- "name": "state-type",
5073
+ "mode": {
5074
+ "description": "Filter by mode (auto, confirm, notify, off)",
5075
+ "name": "mode",
4970
5076
  "hasDynamicHelp": false,
4971
5077
  "multiple": false,
4972
5078
  "options": [
4973
- "triage",
4974
- "backlog",
4975
- "unstarted",
4976
- "started",
4977
- "completed",
4978
- "canceled"
5079
+ "auto",
5080
+ "confirm",
5081
+ "notify",
5082
+ "off"
4979
5083
  ],
4980
5084
  "type": "option"
4981
5085
  },
4982
- "label": {
4983
- "description": "Filter by Linear label name",
4984
- "name": "label",
4985
- "hasDynamicHelp": false,
4986
- "multiple": false,
4987
- "type": "option"
4988
- },
4989
- "assignee": {
4990
- "description": "Filter by assignee name or \"me\"",
4991
- "name": "assignee",
4992
- "hasDynamicHelp": false,
4993
- "multiple": false,
4994
- "type": "option"
4995
- },
4996
- "cycle": {
4997
- "description": "Filter by cycle ID",
4998
- "name": "cycle",
4999
- "hasDynamicHelp": false,
5000
- "multiple": false,
5001
- "type": "option"
5002
- },
5003
- "limit": {
5004
- "char": "n",
5005
- "description": "Maximum number of issues to import",
5006
- "name": "limit",
5007
- "default": 50,
5086
+ "source": {
5087
+ "description": "Filter by source (yaml, cli, preset)",
5088
+ "name": "source",
5008
5089
  "hasDynamicHelp": false,
5009
5090
  "multiple": false,
5091
+ "options": [
5092
+ "yaml",
5093
+ "cli",
5094
+ "preset"
5095
+ ],
5010
5096
  "type": "option"
5011
- },
5012
- "all": {
5013
- "char": "a",
5014
- "description": "Import all matching issues without interactive selection",
5015
- "name": "all",
5016
- "allowNo": false,
5017
- "type": "boolean"
5018
- },
5019
- "dry-run": {
5020
- "description": "Preview issues that would be imported without creating tickets",
5021
- "name": "dry-run",
5022
- "allowNo": false,
5023
- "type": "boolean"
5024
5097
  }
5025
5098
  },
5026
5099
  "hasDynamicHelp": false,
5027
5100
  "hiddenAliases": [],
5028
- "id": "linear:import",
5101
+ "id": "hook:list",
5029
5102
  "pluginAlias": "@proletariat/cli",
5030
5103
  "pluginName": "@proletariat/cli",
5031
5104
  "pluginType": "core",
5032
- "strict": false,
5105
+ "strict": true,
5033
5106
  "isESM": true,
5034
5107
  "relativePath": [
5035
5108
  "dist",
5036
5109
  "commands",
5037
- "linear",
5038
- "import.js"
5110
+ "hook",
5111
+ "list.js"
5039
5112
  ]
5040
5113
  },
5041
- "linear:status": {
5114
+ "hook:preset": {
5042
5115
  "aliases": [],
5043
- "args": {},
5044
- "description": "Validate Linear token, team access, and show integration health",
5045
- "examples": [
5046
- "<%= config.bin %> <%= command.id %>",
5047
- "<%= config.bin %> <%= command.id %> --json"
5048
- ],
5049
- "flags": {
5050
- "project": {
5051
- "char": "P",
5052
- "description": "Project ID (uses first project if only one exists)",
5053
- "name": "project",
5054
- "hasDynamicHelp": false,
5055
- "multiple": false,
5056
- "type": "option"
5057
- },
5058
- "json": {
5059
- "description": "Output as JSON for AI agents/scripts",
5060
- "name": "json",
5061
- "allowNo": false,
5062
- "type": "boolean"
5063
- },
5064
- "machine": {
5065
- "char": "m",
5066
- "description": "Output as JSON for AI agents/scripts",
5067
- "name": "machine",
5068
- "allowNo": false,
5069
- "type": "boolean"
5116
+ "args": {
5117
+ "preset": {
5118
+ "description": "Preset name to apply",
5119
+ "name": "preset",
5120
+ "options": [
5121
+ "aggressive",
5122
+ "conservative",
5123
+ "supervised"
5124
+ ],
5125
+ "required": true
5070
5126
  }
5071
5127
  },
5072
- "hasDynamicHelp": false,
5073
- "hiddenAliases": [],
5074
- "id": "linear:status",
5075
- "pluginAlias": "@proletariat/cli",
5076
- "pluginName": "@proletariat/cli",
5077
- "pluginType": "core",
5078
- "strict": true,
5079
- "isESM": true,
5080
- "relativePath": [
5081
- "dist",
5082
- "commands",
5083
- "linear",
5084
- "status.js"
5085
- ]
5086
- },
5087
- "linear:sync": {
5088
- "aliases": [],
5089
- "args": {},
5090
- "description": "Sync PMO ticket status and PR links back to Linear",
5128
+ "description": "Apply a hook preset (aggressive, conservative, supervised)",
5091
5129
  "examples": [
5092
- "<%= config.bin %> <%= command.id %> # Sync all mapped tickets",
5093
- "<%= config.bin %> <%= command.id %> --ticket TKT-001 # Sync a specific ticket",
5094
- "<%= config.bin %> <%= command.id %> --pr-url https://github.com/... --ticket TKT-001 # Attach PR to Linear issue",
5095
- "<%= config.bin %> <%= command.id %> --dry-run # Preview what would be synced"
5130
+ "<%= config.bin %> <%= command.id %> aggressive",
5131
+ "<%= config.bin %> <%= command.id %> conservative",
5132
+ "<%= config.bin %> <%= command.id %> supervised"
5096
5133
  ],
5097
5134
  "flags": {
5098
- "project": {
5099
- "char": "P",
5100
- "description": "Project ID (uses first project if only one exists)",
5101
- "name": "project",
5102
- "hasDynamicHelp": false,
5103
- "multiple": false,
5104
- "type": "option"
5105
- },
5106
5135
  "json": {
5107
5136
  "description": "Output as JSON for AI agents/scripts",
5108
5137
  "name": "json",
@@ -5115,38 +5144,11 @@
5115
5144
  "name": "machine",
5116
5145
  "allowNo": false,
5117
5146
  "type": "boolean"
5118
- },
5119
- "ticket": {
5120
- "description": "PMO ticket ID to sync (syncs all if omitted)",
5121
- "name": "ticket",
5122
- "hasDynamicHelp": false,
5123
- "multiple": false,
5124
- "type": "option"
5125
- },
5126
- "pr-url": {
5127
- "description": "PR URL to attach to the Linear issue",
5128
- "name": "pr-url",
5129
- "hasDynamicHelp": false,
5130
- "multiple": false,
5131
- "type": "option"
5132
- },
5133
- "pr-title": {
5134
- "description": "PR title for the attachment (defaults to ticket title)",
5135
- "name": "pr-title",
5136
- "hasDynamicHelp": false,
5137
- "multiple": false,
5138
- "type": "option"
5139
- },
5140
- "dry-run": {
5141
- "description": "Preview what would be synced without making changes",
5142
- "name": "dry-run",
5143
- "allowNo": false,
5144
- "type": "boolean"
5145
5147
  }
5146
5148
  },
5147
5149
  "hasDynamicHelp": false,
5148
5150
  "hiddenAliases": [],
5149
- "id": "linear:sync",
5151
+ "id": "hook:preset",
5150
5152
  "pluginAlias": "@proletariat/cli",
5151
5153
  "pluginName": "@proletariat/cli",
5152
5154
  "pluginType": "core",
@@ -5155,8 +5157,8 @@
5155
5157
  "relativePath": [
5156
5158
  "dist",
5157
5159
  "commands",
5158
- "linear",
5159
- "sync.js"
5160
+ "hook",
5161
+ "preset.js"
5160
5162
  ]
5161
5163
  },
5162
5164
  "monday:connect": {
@@ -5765,6 +5767,65 @@
5765
5767
  "stop.js"
5766
5768
  ]
5767
5769
  },
5770
+ "project:configure": {
5771
+ "aliases": [],
5772
+ "args": {},
5773
+ "description": "Configure workflow column mapping for a project",
5774
+ "examples": [
5775
+ "<%= config.bin %> <%= command.id %> --workflow",
5776
+ "<%= config.bin %> <%= command.id %> --workflow --show"
5777
+ ],
5778
+ "flags": {
5779
+ "project": {
5780
+ "char": "P",
5781
+ "description": "Project ID (uses first project if only one exists)",
5782
+ "name": "project",
5783
+ "hasDynamicHelp": false,
5784
+ "multiple": false,
5785
+ "type": "option"
5786
+ },
5787
+ "json": {
5788
+ "description": "Output as JSON for AI agents/scripts",
5789
+ "name": "json",
5790
+ "allowNo": false,
5791
+ "type": "boolean"
5792
+ },
5793
+ "machine": {
5794
+ "char": "m",
5795
+ "description": "Output as JSON for AI agents/scripts",
5796
+ "name": "machine",
5797
+ "allowNo": false,
5798
+ "type": "boolean"
5799
+ },
5800
+ "workflow": {
5801
+ "char": "w",
5802
+ "description": "Configure workflow column mapping",
5803
+ "name": "workflow",
5804
+ "allowNo": false,
5805
+ "type": "boolean"
5806
+ },
5807
+ "show": {
5808
+ "description": "Show current workflow mapping without prompting",
5809
+ "name": "show",
5810
+ "allowNo": false,
5811
+ "type": "boolean"
5812
+ }
5813
+ },
5814
+ "hasDynamicHelp": false,
5815
+ "hiddenAliases": [],
5816
+ "id": "project:configure",
5817
+ "pluginAlias": "@proletariat/cli",
5818
+ "pluginName": "@proletariat/cli",
5819
+ "pluginType": "core",
5820
+ "strict": true,
5821
+ "isESM": true,
5822
+ "relativePath": [
5823
+ "dist",
5824
+ "commands",
5825
+ "project",
5826
+ "configure.js"
5827
+ ]
5828
+ },
5768
5829
  "pr:checks": {
5769
5830
  "aliases": [],
5770
5831
  "args": {
@@ -6438,6 +6499,99 @@
6438
6499
  "index.js"
6439
6500
  ]
6440
6501
  },
6502
+ "run": {
6503
+ "aliases": [],
6504
+ "args": {
6505
+ "task": {
6506
+ "description": "Task description for the agent",
6507
+ "name": "task",
6508
+ "required": true
6509
+ }
6510
+ },
6511
+ "description": "Spawn an agent to work on a task (works anywhere, no HQ required)",
6512
+ "examples": [
6513
+ "<%= config.bin %> run \"fix the login bug\"",
6514
+ "<%= config.bin %> run --runner claude-code \"add dark mode\"",
6515
+ "<%= config.bin %> run -d \"fix the bug\"",
6516
+ "<%= config.bin %> run --runner codex \"add tests\""
6517
+ ],
6518
+ "flags": {
6519
+ "json": {
6520
+ "description": "Output as JSON for AI agents/scripts",
6521
+ "name": "json",
6522
+ "allowNo": false,
6523
+ "type": "boolean"
6524
+ },
6525
+ "machine": {
6526
+ "char": "m",
6527
+ "description": "Output as JSON for AI agents/scripts",
6528
+ "name": "machine",
6529
+ "allowNo": false,
6530
+ "type": "boolean"
6531
+ },
6532
+ "runner": {
6533
+ "char": "r",
6534
+ "description": "Runner to use (claude-code, codex, pi)",
6535
+ "name": "runner",
6536
+ "hasDynamicHelp": false,
6537
+ "multiple": false,
6538
+ "type": "option"
6539
+ },
6540
+ "detached": {
6541
+ "char": "d",
6542
+ "description": "Run in background (detached)",
6543
+ "name": "detached",
6544
+ "allowNo": false,
6545
+ "type": "boolean"
6546
+ },
6547
+ "directory": {
6548
+ "description": "Working directory (default: cwd)",
6549
+ "name": "directory",
6550
+ "hasDynamicHelp": false,
6551
+ "multiple": false,
6552
+ "type": "option"
6553
+ },
6554
+ "permission-mode": {
6555
+ "char": "p",
6556
+ "description": "Permission mode (danger: skip prompts, safe: require approval)",
6557
+ "name": "permission-mode",
6558
+ "hasDynamicHelp": false,
6559
+ "multiple": false,
6560
+ "options": [
6561
+ "danger",
6562
+ "safe"
6563
+ ],
6564
+ "type": "option"
6565
+ },
6566
+ "environment": {
6567
+ "char": "e",
6568
+ "description": "Environment to run in",
6569
+ "name": "environment",
6570
+ "hasDynamicHelp": false,
6571
+ "multiple": false,
6572
+ "options": [
6573
+ "host",
6574
+ "docker",
6575
+ "podman"
6576
+ ],
6577
+ "type": "option"
6578
+ }
6579
+ },
6580
+ "hasDynamicHelp": false,
6581
+ "hiddenAliases": [],
6582
+ "id": "run",
6583
+ "pluginAlias": "@proletariat/cli",
6584
+ "pluginName": "@proletariat/cli",
6585
+ "pluginType": "core",
6586
+ "strict": true,
6587
+ "isESM": true,
6588
+ "relativePath": [
6589
+ "dist",
6590
+ "commands",
6591
+ "run",
6592
+ "index.js"
6593
+ ]
6594
+ },
6441
6595
  "repo:add": {
6442
6596
  "aliases": [],
6443
6597
  "args": {
@@ -6843,177 +6997,16 @@
6843
6997
  "view.js"
6844
6998
  ]
6845
6999
  },
6846
- "run": {
7000
+ "session:attach": {
6847
7001
  "aliases": [],
6848
7002
  "args": {
6849
- "task": {
6850
- "description": "Task description for the agent",
6851
- "name": "task",
6852
- "required": true
7003
+ "session": {
7004
+ "description": "Session name or ticket ID to attach to (optional - will prompt if not provided)",
7005
+ "name": "session",
7006
+ "required": false
6853
7007
  }
6854
7008
  },
6855
- "description": "Spawn an agent to work on a task (works anywhere, no HQ required)",
6856
- "examples": [
6857
- "<%= config.bin %> run \"fix the login bug\"",
6858
- "<%= config.bin %> run --runner claude-code \"add dark mode\"",
6859
- "<%= config.bin %> run -d \"fix the bug\"",
6860
- "<%= config.bin %> run --runner codex \"add tests\""
6861
- ],
6862
- "flags": {
6863
- "json": {
6864
- "description": "Output as JSON for AI agents/scripts",
6865
- "name": "json",
6866
- "allowNo": false,
6867
- "type": "boolean"
6868
- },
6869
- "machine": {
6870
- "char": "m",
6871
- "description": "Output as JSON for AI agents/scripts",
6872
- "name": "machine",
6873
- "allowNo": false,
6874
- "type": "boolean"
6875
- },
6876
- "runner": {
6877
- "char": "r",
6878
- "description": "Runner to use (claude-code, codex, pi)",
6879
- "name": "runner",
6880
- "hasDynamicHelp": false,
6881
- "multiple": false,
6882
- "type": "option"
6883
- },
6884
- "detached": {
6885
- "char": "d",
6886
- "description": "Run in background (detached)",
6887
- "name": "detached",
6888
- "allowNo": false,
6889
- "type": "boolean"
6890
- },
6891
- "directory": {
6892
- "description": "Working directory (default: cwd)",
6893
- "name": "directory",
6894
- "hasDynamicHelp": false,
6895
- "multiple": false,
6896
- "type": "option"
6897
- },
6898
- "permission-mode": {
6899
- "char": "p",
6900
- "description": "Permission mode (danger: skip prompts, safe: require approval)",
6901
- "name": "permission-mode",
6902
- "hasDynamicHelp": false,
6903
- "multiple": false,
6904
- "options": [
6905
- "danger",
6906
- "safe"
6907
- ],
6908
- "type": "option"
6909
- },
6910
- "environment": {
6911
- "char": "e",
6912
- "description": "Environment to run in",
6913
- "name": "environment",
6914
- "hasDynamicHelp": false,
6915
- "multiple": false,
6916
- "options": [
6917
- "host",
6918
- "docker",
6919
- "podman"
6920
- ],
6921
- "type": "option"
6922
- }
6923
- },
6924
- "hasDynamicHelp": false,
6925
- "hiddenAliases": [],
6926
- "id": "run",
6927
- "pluginAlias": "@proletariat/cli",
6928
- "pluginName": "@proletariat/cli",
6929
- "pluginType": "core",
6930
- "strict": true,
6931
- "isESM": true,
6932
- "relativePath": [
6933
- "dist",
6934
- "commands",
6935
- "run",
6936
- "index.js"
6937
- ]
6938
- },
6939
- "shortcut:connect": {
6940
- "aliases": [],
6941
- "args": {},
6942
- "description": "Connect to Shortcut workspace and configure authentication",
6943
- "examples": [
6944
- "<%= config.bin %> <%= command.id %>",
6945
- "<%= config.bin %> <%= command.id %> --check",
6946
- "<%= config.bin %> <%= command.id %> --force",
6947
- "<%= config.bin %> <%= command.id %> --disconnect",
6948
- "SHORTCUT_API_TOKEN=... <%= config.bin %> <%= command.id %>",
6949
- "<%= config.bin %> <%= command.id %> --json"
6950
- ],
6951
- "flags": {
6952
- "project": {
6953
- "char": "P",
6954
- "description": "Project ID (uses first project if only one exists)",
6955
- "name": "project",
6956
- "hasDynamicHelp": false,
6957
- "multiple": false,
6958
- "type": "option"
6959
- },
6960
- "json": {
6961
- "description": "Output as JSON for AI agents/scripts",
6962
- "name": "json",
6963
- "allowNo": false,
6964
- "type": "boolean"
6965
- },
6966
- "machine": {
6967
- "char": "m",
6968
- "description": "Output as JSON for AI agents/scripts",
6969
- "name": "machine",
6970
- "allowNo": false,
6971
- "type": "boolean"
6972
- },
6973
- "check": {
6974
- "description": "Only check if Shortcut credentials are valid (do not prompt)",
6975
- "name": "check",
6976
- "allowNo": false,
6977
- "type": "boolean"
6978
- },
6979
- "force": {
6980
- "description": "Force re-authentication even if credentials exist",
6981
- "name": "force",
6982
- "allowNo": false,
6983
- "type": "boolean"
6984
- },
6985
- "disconnect": {
6986
- "description": "Remove stored Shortcut credentials and configuration",
6987
- "name": "disconnect",
6988
- "allowNo": false,
6989
- "type": "boolean"
6990
- }
6991
- },
6992
- "hasDynamicHelp": false,
6993
- "hiddenAliases": [],
6994
- "id": "shortcut:connect",
6995
- "pluginAlias": "@proletariat/cli",
6996
- "pluginName": "@proletariat/cli",
6997
- "pluginType": "core",
6998
- "strict": true,
6999
- "isESM": true,
7000
- "relativePath": [
7001
- "dist",
7002
- "commands",
7003
- "shortcut",
7004
- "connect.js"
7005
- ]
7006
- },
7007
- "session:attach": {
7008
- "aliases": [],
7009
- "args": {
7010
- "session": {
7011
- "description": "Session name or ticket ID to attach to (optional - will prompt if not provided)",
7012
- "name": "session",
7013
- "required": false
7014
- }
7015
- },
7016
- "description": "Attach to an active agent session (DB-first: only attaches to tracked executions)",
7009
+ "description": "Attach to an active agent session (DB-first: only attaches to tracked executions)",
7017
7010
  "examples": [
7018
7011
  "<%= config.bin %> <%= command.id %>",
7019
7012
  "<%= config.bin %> <%= command.id %> TKT-347-implement-altman",
@@ -7043,23 +7036,22 @@
7043
7036
  },
7044
7037
  "new-tab": {
7045
7038
  "char": "n",
7046
- "description": "Open in a new terminal tab (default: true)",
7039
+ "description": "Open in a new terminal tab (requires macOS + supported terminal)",
7047
7040
  "name": "new-tab",
7048
7041
  "allowNo": false,
7049
7042
  "type": "boolean"
7050
7043
  },
7051
7044
  "current-terminal": {
7052
7045
  "char": "c",
7053
- "description": "Attach in current terminal instead of new tab",
7046
+ "description": "Attach in current terminal (this is now the default behavior)",
7054
7047
  "name": "current-terminal",
7055
7048
  "allowNo": false,
7056
7049
  "type": "boolean"
7057
7050
  },
7058
7051
  "terminal": {
7059
7052
  "char": "t",
7060
- "description": "Terminal app to use (iTerm, Terminal, Ghostty)",
7053
+ "description": "Terminal app to use for --new-tab (iTerm, Terminal, Ghostty)",
7061
7054
  "name": "terminal",
7062
- "default": "iTerm",
7063
7055
  "hasDynamicHelp": false,
7064
7056
  "multiple": false,
7065
7057
  "type": "option"
@@ -7937,6 +7929,74 @@
7937
7929
  "watch.js"
7938
7930
  ]
7939
7931
  },
7932
+ "shortcut:connect": {
7933
+ "aliases": [],
7934
+ "args": {},
7935
+ "description": "Connect to Shortcut workspace and configure authentication",
7936
+ "examples": [
7937
+ "<%= config.bin %> <%= command.id %>",
7938
+ "<%= config.bin %> <%= command.id %> --check",
7939
+ "<%= config.bin %> <%= command.id %> --force",
7940
+ "<%= config.bin %> <%= command.id %> --disconnect",
7941
+ "SHORTCUT_API_TOKEN=... <%= config.bin %> <%= command.id %>",
7942
+ "<%= config.bin %> <%= command.id %> --json"
7943
+ ],
7944
+ "flags": {
7945
+ "project": {
7946
+ "char": "P",
7947
+ "description": "Project ID (uses first project if only one exists)",
7948
+ "name": "project",
7949
+ "hasDynamicHelp": false,
7950
+ "multiple": false,
7951
+ "type": "option"
7952
+ },
7953
+ "json": {
7954
+ "description": "Output as JSON for AI agents/scripts",
7955
+ "name": "json",
7956
+ "allowNo": false,
7957
+ "type": "boolean"
7958
+ },
7959
+ "machine": {
7960
+ "char": "m",
7961
+ "description": "Output as JSON for AI agents/scripts",
7962
+ "name": "machine",
7963
+ "allowNo": false,
7964
+ "type": "boolean"
7965
+ },
7966
+ "check": {
7967
+ "description": "Only check if Shortcut credentials are valid (do not prompt)",
7968
+ "name": "check",
7969
+ "allowNo": false,
7970
+ "type": "boolean"
7971
+ },
7972
+ "force": {
7973
+ "description": "Force re-authentication even if credentials exist",
7974
+ "name": "force",
7975
+ "allowNo": false,
7976
+ "type": "boolean"
7977
+ },
7978
+ "disconnect": {
7979
+ "description": "Remove stored Shortcut credentials and configuration",
7980
+ "name": "disconnect",
7981
+ "allowNo": false,
7982
+ "type": "boolean"
7983
+ }
7984
+ },
7985
+ "hasDynamicHelp": false,
7986
+ "hiddenAliases": [],
7987
+ "id": "shortcut:connect",
7988
+ "pluginAlias": "@proletariat/cli",
7989
+ "pluginName": "@proletariat/cli",
7990
+ "pluginType": "core",
7991
+ "strict": true,
7992
+ "isESM": true,
7993
+ "relativePath": [
7994
+ "dist",
7995
+ "commands",
7996
+ "shortcut",
7997
+ "connect.js"
7998
+ ]
7999
+ },
7940
8000
  "support:book": {
7941
8001
  "aliases": [],
7942
8002
  "args": {},
@@ -8196,23 +8256,14 @@
8196
8256
  "logs.js"
8197
8257
  ]
8198
8258
  },
8199
- "sync": {
8259
+ "telemetry:disable": {
8200
8260
  "aliases": [],
8201
8261
  "args": {},
8202
- "description": "Reconcile ticket state with GitHub PR status",
8262
+ "description": "Disable anonymous telemetry",
8203
8263
  "examples": [
8204
- "<%= config.bin %> <%= command.id %>",
8205
- "<%= config.bin %> <%= command.id %> --dry-run"
8264
+ "<%= config.bin %> <%= command.id %>"
8206
8265
  ],
8207
8266
  "flags": {
8208
- "project": {
8209
- "char": "P",
8210
- "description": "Project ID (uses first project if only one exists)",
8211
- "name": "project",
8212
- "hasDynamicHelp": false,
8213
- "multiple": false,
8214
- "type": "option"
8215
- },
8216
8267
  "json": {
8217
8268
  "description": "Output as JSON for AI agents/scripts",
8218
8269
  "name": "json",
@@ -8225,33 +8276,28 @@
8225
8276
  "name": "machine",
8226
8277
  "allowNo": false,
8227
8278
  "type": "boolean"
8228
- },
8229
- "dry-run": {
8230
- "description": "Show what would change without applying",
8231
- "name": "dry-run",
8232
- "allowNo": false,
8233
- "type": "boolean"
8234
8279
  }
8235
8280
  },
8236
8281
  "hasDynamicHelp": false,
8237
8282
  "hiddenAliases": [],
8238
- "id": "sync",
8283
+ "id": "telemetry:disable",
8239
8284
  "pluginAlias": "@proletariat/cli",
8240
8285
  "pluginName": "@proletariat/cli",
8241
8286
  "pluginType": "core",
8242
8287
  "strict": true,
8288
+ "enableJsonFlag": false,
8243
8289
  "isESM": true,
8244
8290
  "relativePath": [
8245
8291
  "dist",
8246
8292
  "commands",
8247
- "sync",
8248
- "index.js"
8293
+ "telemetry",
8294
+ "disable.js"
8249
8295
  ]
8250
8296
  },
8251
- "sync:pause": {
8297
+ "telemetry:enable": {
8252
8298
  "aliases": [],
8253
8299
  "args": {},
8254
- "description": "Pause the merge queue (keep monitoring but stop merging)",
8300
+ "description": "Enable anonymous telemetry",
8255
8301
  "examples": [
8256
8302
  "<%= config.bin %> <%= command.id %>"
8257
8303
  ],
@@ -8272,25 +8318,27 @@
8272
8318
  },
8273
8319
  "hasDynamicHelp": false,
8274
8320
  "hiddenAliases": [],
8275
- "id": "sync:pause",
8321
+ "id": "telemetry:enable",
8276
8322
  "pluginAlias": "@proletariat/cli",
8277
8323
  "pluginName": "@proletariat/cli",
8278
8324
  "pluginType": "core",
8279
8325
  "strict": true,
8326
+ "enableJsonFlag": false,
8280
8327
  "isESM": true,
8281
8328
  "relativePath": [
8282
8329
  "dist",
8283
8330
  "commands",
8284
- "sync",
8285
- "pause.js"
8331
+ "telemetry",
8332
+ "enable.js"
8286
8333
  ]
8287
8334
  },
8288
- "sync:queue": {
8335
+ "telemetry": {
8289
8336
  "aliases": [],
8290
8337
  "args": {},
8291
- "description": "Show the merge queue state",
8338
+ "description": "Show telemetry status",
8292
8339
  "examples": [
8293
- "<%= config.bin %> <%= command.id %>"
8340
+ "<%= config.bin %> <%= command.id %>",
8341
+ "<%= config.bin %> <%= command.id %> --json"
8294
8342
  ],
8295
8343
  "flags": {
8296
8344
  "json": {
@@ -8309,25 +8357,26 @@
8309
8357
  },
8310
8358
  "hasDynamicHelp": false,
8311
8359
  "hiddenAliases": [],
8312
- "id": "sync:queue",
8360
+ "id": "telemetry",
8313
8361
  "pluginAlias": "@proletariat/cli",
8314
8362
  "pluginName": "@proletariat/cli",
8315
8363
  "pluginType": "core",
8316
8364
  "strict": true,
8365
+ "enableJsonFlag": false,
8317
8366
  "isESM": true,
8318
8367
  "relativePath": [
8319
8368
  "dist",
8320
8369
  "commands",
8321
- "sync",
8322
- "queue.js"
8370
+ "telemetry",
8371
+ "index.js"
8323
8372
  ]
8324
8373
  },
8325
- "sync:resume": {
8374
+ "telemetry:status": {
8326
8375
  "aliases": [],
8327
8376
  "args": {},
8328
- "description": "Resume the merge queue",
8377
+ "description": "Show telemetry status",
8329
8378
  "examples": [
8330
- "<%= config.bin %> <%= command.id %>"
8379
+ "<%= config.bin %> telemetry status"
8331
8380
  ],
8332
8381
  "flags": {
8333
8382
  "json": {
@@ -8346,28 +8395,37 @@
8346
8395
  },
8347
8396
  "hasDynamicHelp": false,
8348
8397
  "hiddenAliases": [],
8349
- "id": "sync:resume",
8398
+ "id": "telemetry:status",
8350
8399
  "pluginAlias": "@proletariat/cli",
8351
8400
  "pluginName": "@proletariat/cli",
8352
8401
  "pluginType": "core",
8353
8402
  "strict": true,
8403
+ "enableJsonFlag": false,
8354
8404
  "isESM": true,
8355
8405
  "relativePath": [
8356
8406
  "dist",
8357
8407
  "commands",
8358
- "sync",
8359
- "resume.js"
8408
+ "telemetry",
8409
+ "status.js"
8360
8410
  ]
8361
8411
  },
8362
- "sync:start": {
8412
+ "sync": {
8363
8413
  "aliases": [],
8364
8414
  "args": {},
8365
- "description": "Start the board sync daemon",
8415
+ "description": "Reconcile ticket state with GitHub PR status",
8366
8416
  "examples": [
8367
8417
  "<%= config.bin %> <%= command.id %>",
8368
- "<%= config.bin %> <%= command.id %> --interval 30"
8418
+ "<%= config.bin %> <%= command.id %> --dry-run"
8369
8419
  ],
8370
8420
  "flags": {
8421
+ "project": {
8422
+ "char": "P",
8423
+ "description": "Project ID (uses first project if only one exists)",
8424
+ "name": "project",
8425
+ "hasDynamicHelp": false,
8426
+ "multiple": false,
8427
+ "type": "option"
8428
+ },
8371
8429
  "json": {
8372
8430
  "description": "Output as JSON for AI agents/scripts",
8373
8431
  "name": "json",
@@ -8381,19 +8439,16 @@
8381
8439
  "allowNo": false,
8382
8440
  "type": "boolean"
8383
8441
  },
8384
- "interval": {
8385
- "char": "i",
8386
- "description": "Poll interval in seconds",
8387
- "name": "interval",
8388
- "default": 60,
8389
- "hasDynamicHelp": false,
8390
- "multiple": false,
8391
- "type": "option"
8442
+ "dry-run": {
8443
+ "description": "Show what would change without applying",
8444
+ "name": "dry-run",
8445
+ "allowNo": false,
8446
+ "type": "boolean"
8392
8447
  }
8393
8448
  },
8394
8449
  "hasDynamicHelp": false,
8395
8450
  "hiddenAliases": [],
8396
- "id": "sync:start",
8451
+ "id": "sync",
8397
8452
  "pluginAlias": "@proletariat/cli",
8398
8453
  "pluginName": "@proletariat/cli",
8399
8454
  "pluginType": "core",
@@ -8403,13 +8458,13 @@
8403
8458
  "dist",
8404
8459
  "commands",
8405
8460
  "sync",
8406
- "start.js"
8461
+ "index.js"
8407
8462
  ]
8408
8463
  },
8409
- "sync:status": {
8464
+ "sync:pause": {
8410
8465
  "aliases": [],
8411
8466
  "args": {},
8412
- "description": "Check the board sync daemon status",
8467
+ "description": "Pause the merge queue (keep monitoring but stop merging)",
8413
8468
  "examples": [
8414
8469
  "<%= config.bin %> <%= command.id %>"
8415
8470
  ],
@@ -8430,7 +8485,7 @@
8430
8485
  },
8431
8486
  "hasDynamicHelp": false,
8432
8487
  "hiddenAliases": [],
8433
- "id": "sync:status",
8488
+ "id": "sync:pause",
8434
8489
  "pluginAlias": "@proletariat/cli",
8435
8490
  "pluginName": "@proletariat/cli",
8436
8491
  "pluginType": "core",
@@ -8440,13 +8495,13 @@
8440
8495
  "dist",
8441
8496
  "commands",
8442
8497
  "sync",
8443
- "status.js"
8498
+ "pause.js"
8444
8499
  ]
8445
8500
  },
8446
- "sync:stop": {
8501
+ "sync:queue": {
8447
8502
  "aliases": [],
8448
8503
  "args": {},
8449
- "description": "Stop the board sync daemon",
8504
+ "description": "Show the merge queue state",
8450
8505
  "examples": [
8451
8506
  "<%= config.bin %> <%= command.id %>"
8452
8507
  ],
@@ -8467,7 +8522,7 @@
8467
8522
  },
8468
8523
  "hasDynamicHelp": false,
8469
8524
  "hiddenAliases": [],
8470
- "id": "sync:stop",
8525
+ "id": "sync:queue",
8471
8526
  "pluginAlias": "@proletariat/cli",
8472
8527
  "pluginName": "@proletariat/cli",
8473
8528
  "pluginType": "core",
@@ -8477,33 +8532,17 @@
8477
8532
  "dist",
8478
8533
  "commands",
8479
8534
  "sync",
8480
- "stop.js"
8535
+ "queue.js"
8481
8536
  ]
8482
8537
  },
8483
- "terminal:title": {
8538
+ "sync:resume": {
8484
8539
  "aliases": [],
8485
- "args": {
8486
- "title": {
8487
- "description": "Title to set for the terminal tab/window",
8488
- "name": "title",
8489
- "required": false
8490
- }
8491
- },
8492
- "description": "Set the terminal tab/window title",
8540
+ "args": {},
8541
+ "description": "Resume the merge queue",
8493
8542
  "examples": [
8494
- "<%= config.bin %> <%= command.id %> \"My Custom Name\"",
8495
- "<%= config.bin %> <%= command.id %> # Interactive prompt",
8496
- "<%= config.bin %> <%= command.id %> --reset",
8497
- "<%= config.bin %> <%= command.id %> --machine # JSON mode for agents"
8543
+ "<%= config.bin %> <%= command.id %>"
8498
8544
  ],
8499
8545
  "flags": {
8500
- "reset": {
8501
- "char": "r",
8502
- "description": "Reset terminal title to default",
8503
- "name": "reset",
8504
- "allowNo": false,
8505
- "type": "boolean"
8506
- },
8507
8546
  "json": {
8508
8547
  "description": "Output as JSON for AI agents/scripts",
8509
8548
  "name": "json",
@@ -8520,7 +8559,7 @@
8520
8559
  },
8521
8560
  "hasDynamicHelp": false,
8522
8561
  "hiddenAliases": [],
8523
- "id": "terminal:title",
8562
+ "id": "sync:resume",
8524
8563
  "pluginAlias": "@proletariat/cli",
8525
8564
  "pluginName": "@proletariat/cli",
8526
8565
  "pluginType": "core",
@@ -8529,16 +8568,17 @@
8529
8568
  "relativePath": [
8530
8569
  "dist",
8531
8570
  "commands",
8532
- "terminal",
8533
- "title.js"
8571
+ "sync",
8572
+ "resume.js"
8534
8573
  ]
8535
8574
  },
8536
- "telemetry:disable": {
8575
+ "sync:start": {
8537
8576
  "aliases": [],
8538
8577
  "args": {},
8539
- "description": "Disable anonymous telemetry",
8578
+ "description": "Start the board sync daemon",
8540
8579
  "examples": [
8541
- "<%= config.bin %> <%= command.id %>"
8580
+ "<%= config.bin %> <%= command.id %>",
8581
+ "<%= config.bin %> <%= command.id %> --interval 30"
8542
8582
  ],
8543
8583
  "flags": {
8544
8584
  "json": {
@@ -8553,28 +8593,36 @@
8553
8593
  "name": "machine",
8554
8594
  "allowNo": false,
8555
8595
  "type": "boolean"
8596
+ },
8597
+ "interval": {
8598
+ "char": "i",
8599
+ "description": "Poll interval in seconds",
8600
+ "name": "interval",
8601
+ "default": 60,
8602
+ "hasDynamicHelp": false,
8603
+ "multiple": false,
8604
+ "type": "option"
8556
8605
  }
8557
8606
  },
8558
8607
  "hasDynamicHelp": false,
8559
8608
  "hiddenAliases": [],
8560
- "id": "telemetry:disable",
8609
+ "id": "sync:start",
8561
8610
  "pluginAlias": "@proletariat/cli",
8562
8611
  "pluginName": "@proletariat/cli",
8563
8612
  "pluginType": "core",
8564
8613
  "strict": true,
8565
- "enableJsonFlag": false,
8566
8614
  "isESM": true,
8567
8615
  "relativePath": [
8568
8616
  "dist",
8569
8617
  "commands",
8570
- "telemetry",
8571
- "disable.js"
8618
+ "sync",
8619
+ "start.js"
8572
8620
  ]
8573
8621
  },
8574
- "telemetry:enable": {
8622
+ "sync:status": {
8575
8623
  "aliases": [],
8576
8624
  "args": {},
8577
- "description": "Enable anonymous telemetry",
8625
+ "description": "Check the board sync daemon status",
8578
8626
  "examples": [
8579
8627
  "<%= config.bin %> <%= command.id %>"
8580
8628
  ],
@@ -8595,27 +8643,25 @@
8595
8643
  },
8596
8644
  "hasDynamicHelp": false,
8597
8645
  "hiddenAliases": [],
8598
- "id": "telemetry:enable",
8646
+ "id": "sync:status",
8599
8647
  "pluginAlias": "@proletariat/cli",
8600
8648
  "pluginName": "@proletariat/cli",
8601
8649
  "pluginType": "core",
8602
8650
  "strict": true,
8603
- "enableJsonFlag": false,
8604
8651
  "isESM": true,
8605
8652
  "relativePath": [
8606
8653
  "dist",
8607
8654
  "commands",
8608
- "telemetry",
8609
- "enable.js"
8655
+ "sync",
8656
+ "status.js"
8610
8657
  ]
8611
8658
  },
8612
- "telemetry": {
8659
+ "sync:stop": {
8613
8660
  "aliases": [],
8614
8661
  "args": {},
8615
- "description": "Show telemetry status",
8662
+ "description": "Stop the board sync daemon",
8616
8663
  "examples": [
8617
- "<%= config.bin %> <%= command.id %>",
8618
- "<%= config.bin %> <%= command.id %> --json"
8664
+ "<%= config.bin %> <%= command.id %>"
8619
8665
  ],
8620
8666
  "flags": {
8621
8667
  "json": {
@@ -8634,28 +8680,43 @@
8634
8680
  },
8635
8681
  "hasDynamicHelp": false,
8636
8682
  "hiddenAliases": [],
8637
- "id": "telemetry",
8683
+ "id": "sync:stop",
8638
8684
  "pluginAlias": "@proletariat/cli",
8639
8685
  "pluginName": "@proletariat/cli",
8640
8686
  "pluginType": "core",
8641
8687
  "strict": true,
8642
- "enableJsonFlag": false,
8643
8688
  "isESM": true,
8644
8689
  "relativePath": [
8645
8690
  "dist",
8646
8691
  "commands",
8647
- "telemetry",
8648
- "index.js"
8692
+ "sync",
8693
+ "stop.js"
8649
8694
  ]
8650
8695
  },
8651
- "telemetry:status": {
8696
+ "terminal:title": {
8652
8697
  "aliases": [],
8653
- "args": {},
8654
- "description": "Show telemetry status",
8698
+ "args": {
8699
+ "title": {
8700
+ "description": "Title to set for the terminal tab/window",
8701
+ "name": "title",
8702
+ "required": false
8703
+ }
8704
+ },
8705
+ "description": "Set the terminal tab/window title",
8655
8706
  "examples": [
8656
- "<%= config.bin %> telemetry status"
8707
+ "<%= config.bin %> <%= command.id %> \"My Custom Name\"",
8708
+ "<%= config.bin %> <%= command.id %> # Interactive prompt",
8709
+ "<%= config.bin %> <%= command.id %> --reset",
8710
+ "<%= config.bin %> <%= command.id %> --machine # JSON mode for agents"
8657
8711
  ],
8658
8712
  "flags": {
8713
+ "reset": {
8714
+ "char": "r",
8715
+ "description": "Reset terminal title to default",
8716
+ "name": "reset",
8717
+ "allowNo": false,
8718
+ "type": "boolean"
8719
+ },
8659
8720
  "json": {
8660
8721
  "description": "Output as JSON for AI agents/scripts",
8661
8722
  "name": "json",
@@ -8672,18 +8733,17 @@
8672
8733
  },
8673
8734
  "hasDynamicHelp": false,
8674
8735
  "hiddenAliases": [],
8675
- "id": "telemetry:status",
8736
+ "id": "terminal:title",
8676
8737
  "pluginAlias": "@proletariat/cli",
8677
8738
  "pluginName": "@proletariat/cli",
8678
8739
  "pluginType": "core",
8679
8740
  "strict": true,
8680
- "enableJsonFlag": false,
8681
8741
  "isESM": true,
8682
8742
  "relativePath": [
8683
8743
  "dist",
8684
8744
  "commands",
8685
- "telemetry",
8686
- "status.js"
8745
+ "terminal",
8746
+ "title.js"
8687
8747
  ]
8688
8748
  },
8689
8749
  "theme:add-names": {
@@ -8919,32 +8979,30 @@
8919
8979
  "set.js"
8920
8980
  ]
8921
8981
  },
8922
- "ticket:create": {
8982
+ "tools:add": {
8923
8983
  "aliases": [],
8924
- "args": {},
8925
- "description": "Create a new ticket (routes to Linear when configured, or local PMO)",
8984
+ "args": {
8985
+ "type": {
8986
+ "description": "Tool type (mcp or cli)",
8987
+ "name": "type",
8988
+ "options": [
8989
+ "mcp",
8990
+ "cli"
8991
+ ],
8992
+ "required": true
8993
+ },
8994
+ "name": {
8995
+ "description": "Tool name (unique identifier)",
8996
+ "name": "name",
8997
+ "required": true
8998
+ }
8999
+ },
9000
+ "description": "Register an MCP server or CLI tool",
8926
9001
  "examples": [
8927
- "<%= config.bin %> <%= command.id %>",
8928
- "<%= config.bin %> <%= command.id %> --title \"Fix login bug\" --column Backlog",
8929
- "<%= config.bin %> <%= command.id %> -t \"Add feature\" -c \"In Progress\" -p P1",
8930
- "<%= config.bin %> <%= command.id %> --project mobile-app -t \"New feature\"",
8931
- "<%= config.bin %> <%= command.id %> --epic EPIC-001 -t \"Implement auth flow\"",
8932
- "<%= config.bin %> <%= command.id %> --title \"My ticket\" --description-file ./ticket-desc.md",
8933
- "<%= config.bin %> <%= command.id %> --title \"My ticket\" --description-file - # Read from stdin",
8934
- "<%= config.bin %> <%= command.id %> --json # Output column choices as JSON",
8935
- "<%= config.bin %> <%= command.id %> --title \"Test\" -P PROJ-001 --dry-run --json # Validate without creating",
8936
- "<%= config.bin %> <%= command.id %> --source linear -t \"Fix bug\" --team ENG",
8937
- "<%= config.bin %> <%= command.id %> --source pmo -t \"Local task\" -c Backlog"
9002
+ "<%= config.bin %> tools add mcp arcade --url https://api.arcade.dev/mcp --auth ARCADE_API_KEY --description \"Arcade integrations\"",
9003
+ "<%= config.bin %> tools add cli gh --command gh --detect \"which gh\" --install \"brew install gh\" --description \"GitHub CLI\""
8938
9004
  ],
8939
9005
  "flags": {
8940
- "project": {
8941
- "char": "P",
8942
- "description": "Project ID (uses first project if only one exists)",
8943
- "name": "project",
8944
- "hasDynamicHelp": false,
8945
- "multiple": false,
8946
- "type": "option"
8947
- },
8948
9006
  "json": {
8949
9007
  "description": "Output as JSON for AI agents/scripts",
8950
9008
  "name": "json",
@@ -8958,119 +9016,46 @@
8958
9016
  "allowNo": false,
8959
9017
  "type": "boolean"
8960
9018
  },
8961
- "title": {
8962
- "char": "t",
8963
- "description": "Ticket title [required for non-interactive]",
8964
- "name": "title",
9019
+ "url": {
9020
+ "description": "MCP server URL (for remote servers)",
9021
+ "name": "url",
8965
9022
  "hasDynamicHelp": false,
8966
9023
  "multiple": false,
8967
9024
  "type": "option"
8968
9025
  },
8969
- "column": {
8970
- "char": "c",
8971
- "description": "Column to place the ticket in",
8972
- "name": "column",
9026
+ "command": {
9027
+ "description": "Command to run (MCP server command or CLI tool binary)",
9028
+ "name": "command",
8973
9029
  "hasDynamicHelp": false,
8974
9030
  "multiple": false,
8975
9031
  "type": "option"
8976
9032
  },
8977
- "priority": {
8978
- "char": "p",
8979
- "description": "Ticket priority (uses workspace priority scale)",
8980
- "name": "priority",
9033
+ "auth": {
9034
+ "description": "Environment variable for authentication (e.g., ARCADE_API_KEY)",
9035
+ "name": "auth",
8981
9036
  "hasDynamicHelp": false,
8982
9037
  "multiple": false,
8983
9038
  "type": "option"
8984
9039
  },
8985
- "category": {
8986
- "description": "Ticket category (e.g., bug, feature, refactor)",
8987
- "name": "category",
8988
- "hasDynamicHelp": false,
8989
- "multiple": false,
8990
- "type": "option"
8991
- },
8992
- "description": {
8993
- "char": "d",
8994
- "description": "Ticket description",
8995
- "name": "description",
8996
- "hasDynamicHelp": false,
8997
- "multiple": false,
8998
- "type": "option"
8999
- },
9000
- "description-file": {
9001
- "char": "D",
9002
- "description": "Path to a markdown file for the ticket description (use - for stdin)",
9003
- "exclusive": [
9004
- "description"
9005
- ],
9006
- "name": "description-file",
9007
- "hasDynamicHelp": false,
9008
- "multiple": false,
9009
- "type": "option"
9010
- },
9011
- "id": {
9012
- "description": "Custom ticket ID (auto-generated if not provided)",
9013
- "name": "id",
9014
- "hasDynamicHelp": false,
9015
- "multiple": false,
9016
- "type": "option"
9017
- },
9018
- "interactive": {
9019
- "char": "i",
9020
- "description": "Interactive mode",
9021
- "name": "interactive",
9022
- "allowNo": false,
9023
- "type": "boolean"
9024
- },
9025
- "epic": {
9026
- "char": "e",
9027
- "description": "Link ticket to an epic (e.g., EPIC-001)",
9028
- "name": "epic",
9029
- "hasDynamicHelp": false,
9030
- "multiple": false,
9031
- "type": "option"
9032
- },
9033
- "template": {
9034
- "char": "T",
9035
- "description": "Create from a template (e.g., bug-report, feature-request)",
9036
- "name": "template",
9037
- "hasDynamicHelp": false,
9038
- "multiple": false,
9039
- "type": "option"
9040
- },
9041
- "labels": {
9042
- "aliases": [
9043
- "label"
9044
- ],
9045
- "char": "l",
9046
- "description": "Labels (comma-separated)",
9047
- "name": "labels",
9040
+ "detect": {
9041
+ "description": "Shell command to detect if CLI tool is installed",
9042
+ "name": "detect",
9048
9043
  "hasDynamicHelp": false,
9049
9044
  "multiple": false,
9050
9045
  "type": "option"
9051
9046
  },
9052
- "dry-run": {
9053
- "description": "Validate inputs without creating ticket (use with --json for structured output)",
9054
- "name": "dry-run",
9055
- "allowNo": false,
9056
- "type": "boolean"
9057
- },
9058
- "source": {
9059
- "description": "Ticket source: \"pmo\" for local DB, \"linear\" for Linear API, or \"auto\" to detect (default: auto)",
9060
- "name": "source",
9061
- "default": "auto",
9047
+ "install": {
9048
+ "description": "Shell command to install the CLI tool",
9049
+ "name": "install",
9062
9050
  "hasDynamicHelp": false,
9063
9051
  "multiple": false,
9064
- "options": [
9065
- "auto",
9066
- "pmo",
9067
- "linear"
9068
- ],
9069
9052
  "type": "option"
9070
9053
  },
9071
- "team": {
9072
- "description": "Linear team key (fallback: PRLT_LINEAR_TEAM)",
9073
- "name": "team",
9054
+ "description": {
9055
+ "char": "d",
9056
+ "description": "Human-readable description",
9057
+ "name": "description",
9058
+ "required": true,
9074
9059
  "hasDynamicHelp": false,
9075
9060
  "multiple": false,
9076
9061
  "type": "option"
@@ -9078,7 +9063,7 @@
9078
9063
  },
9079
9064
  "hasDynamicHelp": false,
9080
9065
  "hiddenAliases": [],
9081
- "id": "ticket:create",
9066
+ "id": "tools:add",
9082
9067
  "pluginAlias": "@proletariat/cli",
9083
9068
  "pluginName": "@proletariat/cli",
9084
9069
  "pluginType": "core",
@@ -9087,36 +9072,19 @@
9087
9072
  "relativePath": [
9088
9073
  "dist",
9089
9074
  "commands",
9090
- "ticket",
9091
- "create.js"
9075
+ "tools",
9076
+ "add.js"
9092
9077
  ]
9093
9078
  },
9094
- "ticket:delete": {
9079
+ "tools:check": {
9095
9080
  "aliases": [],
9096
- "args": {
9097
- "ticketId": {
9098
- "description": "Ticket ID to delete - prompts with dropdown if not provided",
9099
- "name": "ticketId",
9100
- "required": false
9101
- }
9102
- },
9103
- "description": "Delete ticket(s) permanently",
9081
+ "args": {},
9082
+ "description": "Verify all registered tools are available and healthy",
9104
9083
  "examples": [
9105
- "<%= config.bin %> <%= command.id %> TICK-001",
9106
- "<%= config.bin %> <%= command.id %> TICK-001 --force",
9107
- "<%= config.bin %> <%= command.id %> # Interactive mode",
9108
- "<%= config.bin %> <%= command.id %> --bulk",
9109
- "<%= config.bin %> <%= command.id %> --json # Output choices as JSON"
9084
+ "<%= config.bin %> tools check",
9085
+ "<%= config.bin %> tools check --json"
9110
9086
  ],
9111
9087
  "flags": {
9112
- "project": {
9113
- "char": "P",
9114
- "description": "Project ID (uses first project if only one exists)",
9115
- "name": "project",
9116
- "hasDynamicHelp": false,
9117
- "multiple": false,
9118
- "type": "option"
9119
- },
9120
9088
  "json": {
9121
9089
  "description": "Output as JSON for AI agents/scripts",
9122
9090
  "name": "json",
@@ -9129,64 +9097,34 @@
9129
9097
  "name": "machine",
9130
9098
  "allowNo": false,
9131
9099
  "type": "boolean"
9132
- },
9133
- "force": {
9134
- "char": "f",
9135
- "description": "Skip confirmation prompt",
9136
- "name": "force",
9137
- "allowNo": false,
9138
- "type": "boolean"
9139
- },
9140
- "bulk": {
9141
- "char": "b",
9142
- "description": "Enable bulk mode to delete multiple tickets",
9143
- "name": "bulk",
9144
- "allowNo": false,
9145
- "type": "boolean"
9146
9100
  }
9147
9101
  },
9148
9102
  "hasDynamicHelp": false,
9149
9103
  "hiddenAliases": [],
9150
- "id": "ticket:delete",
9104
+ "id": "tools:check",
9151
9105
  "pluginAlias": "@proletariat/cli",
9152
9106
  "pluginName": "@proletariat/cli",
9153
9107
  "pluginType": "core",
9154
9108
  "strict": true,
9109
+ "enableJsonFlag": false,
9155
9110
  "isESM": true,
9156
9111
  "relativePath": [
9157
9112
  "dist",
9158
9113
  "commands",
9159
- "ticket",
9160
- "delete.js"
9114
+ "tools",
9115
+ "check.js"
9161
9116
  ]
9162
9117
  },
9163
- "ticket:edit": {
9118
+ "tools:detect": {
9164
9119
  "aliases": [],
9165
- "args": {
9166
- "ticketId": {
9167
- "description": "Ticket ID to edit - prompts with dropdown if not provided",
9168
- "name": "ticketId",
9169
- "required": false
9170
- }
9171
- },
9172
- "description": "Edit an existing ticket",
9120
+ "args": {},
9121
+ "description": "Auto-detect common CLI tools on the system and register them",
9173
9122
  "examples": [
9174
- "<%= config.bin %> <%= command.id %> TICK-001",
9175
- "<%= config.bin %> <%= command.id %> TICK-001 --title \"New title\"",
9176
- "<%= config.bin %> <%= command.id %> TICK-001 --priority P1 --category bug",
9177
- "<%= config.bin %> <%= command.id %> TICK-001 --add-subtask \"Implement feature\" --add-subtask \"Write tests\"",
9178
- "<%= config.bin %> <%= command.id %> TICK-001 --owner \"john\" --assignee \"agent-1\"",
9179
- "<%= config.bin %> <%= command.id %> # Interactive mode"
9123
+ "<%= config.bin %> tools detect",
9124
+ "<%= config.bin %> tools detect --auto",
9125
+ "<%= config.bin %> tools detect --json"
9180
9126
  ],
9181
9127
  "flags": {
9182
- "project": {
9183
- "char": "P",
9184
- "description": "Project ID (uses first project if only one exists)",
9185
- "name": "project",
9186
- "hasDynamicHelp": false,
9187
- "multiple": false,
9188
- "type": "option"
9189
- },
9190
9128
  "json": {
9191
9129
  "description": "Output as JSON for AI agents/scripts",
9192
9130
  "name": "json",
@@ -9200,122 +9138,83 @@
9200
9138
  "allowNo": false,
9201
9139
  "type": "boolean"
9202
9140
  },
9203
- "title": {
9204
- "char": "t",
9205
- "description": "New ticket title",
9206
- "name": "title",
9207
- "hasDynamicHelp": false,
9208
- "multiple": false,
9209
- "type": "option"
9210
- },
9211
- "description": {
9212
- "char": "d",
9213
- "description": "New ticket description",
9214
- "name": "description",
9215
- "hasDynamicHelp": false,
9216
- "multiple": false,
9217
- "type": "option"
9218
- },
9219
- "priority": {
9220
- "char": "p",
9221
- "description": "New ticket priority (uses workspace priority scale, \"none\" to clear)",
9222
- "name": "priority",
9223
- "hasDynamicHelp": false,
9224
- "multiple": false,
9225
- "type": "option"
9226
- },
9227
- "category": {
9228
- "description": "New ticket category",
9229
- "name": "category",
9230
- "hasDynamicHelp": false,
9231
- "multiple": false,
9232
- "type": "option"
9233
- },
9234
- "owner": {
9235
- "char": "o",
9236
- "description": "Ticket owner (human responsible)",
9237
- "name": "owner",
9238
- "hasDynamicHelp": false,
9239
- "multiple": false,
9240
- "type": "option"
9241
- },
9242
- "assignee": {
9243
- "char": "a",
9244
- "description": "Ticket assignee (who executes)",
9245
- "name": "assignee",
9246
- "hasDynamicHelp": false,
9247
- "multiple": false,
9248
- "type": "option"
9249
- },
9250
- "add-subtask": {
9251
- "description": "Add a subtask (can be used multiple times)",
9252
- "name": "add-subtask",
9253
- "hasDynamicHelp": false,
9254
- "multiple": true,
9255
- "type": "option"
9256
- },
9257
- "clear-subtasks": {
9258
- "description": "Clear all existing subtasks before adding new ones",
9259
- "name": "clear-subtasks",
9141
+ "auto": {
9142
+ "description": "Automatically register all detected tools without prompting",
9143
+ "name": "auto",
9260
9144
  "allowNo": false,
9261
9145
  "type": "boolean"
9262
- },
9263
- "add-label": {
9264
- "description": "Add a label (can be used multiple times)",
9265
- "name": "add-label",
9266
- "hasDynamicHelp": false,
9267
- "multiple": true,
9268
- "type": "option"
9269
- },
9270
- "remove-label": {
9271
- "description": "Remove a label",
9272
- "name": "remove-label",
9273
- "hasDynamicHelp": false,
9274
- "multiple": true,
9275
- "type": "option"
9276
- },
9277
- "add-ac": {
9278
- "description": "Add an acceptance criterion (can be used multiple times)",
9279
- "name": "add-ac",
9280
- "hasDynamicHelp": false,
9281
- "multiple": true,
9282
- "type": "option"
9283
- },
9284
- "clear-ac": {
9285
- "description": "Clear all existing acceptance criteria before adding new ones",
9286
- "name": "clear-ac",
9146
+ }
9147
+ },
9148
+ "hasDynamicHelp": false,
9149
+ "hiddenAliases": [],
9150
+ "id": "tools:detect",
9151
+ "pluginAlias": "@proletariat/cli",
9152
+ "pluginName": "@proletariat/cli",
9153
+ "pluginType": "core",
9154
+ "strict": true,
9155
+ "enableJsonFlag": false,
9156
+ "isESM": true,
9157
+ "relativePath": [
9158
+ "dist",
9159
+ "commands",
9160
+ "tools",
9161
+ "detect.js"
9162
+ ]
9163
+ },
9164
+ "tools": {
9165
+ "aliases": [
9166
+ "tools:list"
9167
+ ],
9168
+ "args": {},
9169
+ "description": "Show all registered MCP servers and CLI tools",
9170
+ "examples": [
9171
+ "<%= config.bin %> tools",
9172
+ "<%= config.bin %> tools --json"
9173
+ ],
9174
+ "flags": {
9175
+ "json": {
9176
+ "description": "Output as JSON for AI agents/scripts",
9177
+ "name": "json",
9287
9178
  "allowNo": false,
9288
9179
  "type": "boolean"
9289
9180
  },
9290
- "interactive": {
9291
- "char": "i",
9292
- "description": "Interactive mode - prompts for all fields",
9293
- "name": "interactive",
9181
+ "machine": {
9182
+ "char": "m",
9183
+ "description": "Output as JSON for AI agents/scripts",
9184
+ "name": "machine",
9294
9185
  "allowNo": false,
9295
9186
  "type": "boolean"
9296
9187
  }
9297
9188
  },
9298
9189
  "hasDynamicHelp": false,
9299
9190
  "hiddenAliases": [],
9300
- "id": "ticket:edit",
9191
+ "id": "tools",
9301
9192
  "pluginAlias": "@proletariat/cli",
9302
9193
  "pluginName": "@proletariat/cli",
9303
9194
  "pluginType": "core",
9304
9195
  "strict": true,
9196
+ "enableJsonFlag": false,
9305
9197
  "isESM": true,
9306
9198
  "relativePath": [
9307
9199
  "dist",
9308
9200
  "commands",
9309
- "ticket",
9310
- "edit.js"
9201
+ "tools",
9202
+ "index.js"
9311
9203
  ]
9312
9204
  },
9313
- "ticket": {
9205
+ "tools:remove": {
9314
9206
  "aliases": [],
9315
- "args": {},
9316
- "description": "Interactive menu for ticket operations",
9207
+ "args": {
9208
+ "name": {
9209
+ "description": "Tool name to remove",
9210
+ "name": "name",
9211
+ "required": true
9212
+ }
9213
+ },
9214
+ "description": "Remove a tool from the registry",
9317
9215
  "examples": [
9318
- "<%= config.bin %> <%= command.id %>"
9216
+ "<%= config.bin %> tools remove arcade",
9217
+ "<%= config.bin %> tools remove ffmpeg"
9319
9218
  ],
9320
9219
  "flags": {
9321
9220
  "json": {
@@ -9334,35 +9233,36 @@
9334
9233
  },
9335
9234
  "hasDynamicHelp": false,
9336
9235
  "hiddenAliases": [],
9337
- "id": "ticket",
9236
+ "id": "tools:remove",
9338
9237
  "pluginAlias": "@proletariat/cli",
9339
9238
  "pluginName": "@proletariat/cli",
9340
9239
  "pluginType": "core",
9341
9240
  "strict": true,
9241
+ "enableJsonFlag": false,
9342
9242
  "isESM": true,
9343
9243
  "relativePath": [
9344
9244
  "dist",
9345
9245
  "commands",
9346
- "ticket",
9347
- "index.js"
9246
+ "tools",
9247
+ "remove.js"
9348
9248
  ]
9349
9249
  },
9350
- "ticket:list": {
9250
+ "ticket:create": {
9351
9251
  "aliases": [],
9352
9252
  "args": {},
9353
- "description": "List tickets from the PMO board",
9253
+ "description": "Create a new ticket (routes to Linear when configured, or local PMO)",
9354
9254
  "examples": [
9355
9255
  "<%= config.bin %> <%= command.id %>",
9356
- "<%= config.bin %> <%= command.id %> --column Backlog",
9357
- "<%= config.bin %> <%= command.id %> --priority P0",
9358
- "<%= config.bin %> <%= command.id %> --category bug",
9359
- "<%= config.bin %> <%= command.id %> --search \"login\"",
9360
- "<%= config.bin %> <%= command.id %> --project mobile-app",
9361
- "<%= config.bin %> <%= command.id %> --all",
9362
- "<%= config.bin %> <%= command.id %> --all --group-by priority",
9363
- "<%= config.bin %> <%= command.id %> -g priority",
9364
- "<%= config.bin %> <%= command.id %> --limit 10",
9365
- "<%= config.bin %> <%= command.id %> --limit 10 --offset 20"
9256
+ "<%= config.bin %> <%= command.id %> --title \"Fix login bug\" --column Backlog",
9257
+ "<%= config.bin %> <%= command.id %> -t \"Add feature\" -c \"In Progress\" -p P1",
9258
+ "<%= config.bin %> <%= command.id %> --project mobile-app -t \"New feature\"",
9259
+ "<%= config.bin %> <%= command.id %> --epic EPIC-001 -t \"Implement auth flow\"",
9260
+ "<%= config.bin %> <%= command.id %> --title \"My ticket\" --description-file ./ticket-desc.md",
9261
+ "<%= config.bin %> <%= command.id %> --title \"My ticket\" --description-file - # Read from stdin",
9262
+ "<%= config.bin %> <%= command.id %> --json # Output column choices as JSON",
9263
+ "<%= config.bin %> <%= command.id %> --title \"Test\" -P PROJ-001 --dry-run --json # Validate without creating",
9264
+ "<%= config.bin %> <%= command.id %> --source linear -t \"Fix bug\" --team ENG",
9265
+ "<%= config.bin %> <%= command.id %> --source pmo -t \"Local task\" -c Backlog"
9366
9266
  ],
9367
9267
  "flags": {
9368
9268
  "project": {
@@ -9386,9 +9286,17 @@
9386
9286
  "allowNo": false,
9387
9287
  "type": "boolean"
9388
9288
  },
9289
+ "title": {
9290
+ "char": "t",
9291
+ "description": "Ticket title [required for non-interactive]",
9292
+ "name": "title",
9293
+ "hasDynamicHelp": false,
9294
+ "multiple": false,
9295
+ "type": "option"
9296
+ },
9389
9297
  "column": {
9390
9298
  "char": "c",
9391
- "description": "Filter by column",
9299
+ "description": "Column to place the ticket in",
9392
9300
  "name": "column",
9393
9301
  "hasDynamicHelp": false,
9394
9302
  "multiple": false,
@@ -9396,82 +9304,84 @@
9396
9304
  },
9397
9305
  "priority": {
9398
9306
  "char": "p",
9399
- "description": "Filter by priority (uses workspace priority scale)",
9307
+ "description": "Ticket priority (uses workspace priority scale)",
9400
9308
  "name": "priority",
9401
9309
  "hasDynamicHelp": false,
9402
9310
  "multiple": false,
9403
9311
  "type": "option"
9404
9312
  },
9405
9313
  "category": {
9406
- "description": "Filter by category",
9314
+ "description": "Ticket category (e.g., bug, feature, refactor)",
9407
9315
  "name": "category",
9408
9316
  "hasDynamicHelp": false,
9409
9317
  "multiple": false,
9410
9318
  "type": "option"
9411
9319
  },
9412
- "search": {
9413
- "char": "s",
9414
- "description": "Search in title and description",
9415
- "name": "search",
9320
+ "description": {
9321
+ "char": "d",
9322
+ "description": "Ticket description",
9323
+ "name": "description",
9416
9324
  "hasDynamicHelp": false,
9417
9325
  "multiple": false,
9418
9326
  "type": "option"
9419
9327
  },
9420
- "format": {
9421
- "char": "f",
9422
- "description": "Output format",
9423
- "name": "format",
9424
- "default": "table",
9328
+ "description-file": {
9329
+ "char": "D",
9330
+ "description": "Path to a markdown file for the ticket description (use - for stdin)",
9331
+ "exclusive": [
9332
+ "description"
9333
+ ],
9334
+ "name": "description-file",
9425
9335
  "hasDynamicHelp": false,
9426
9336
  "multiple": false,
9427
- "options": [
9428
- "table",
9429
- "compact",
9430
- "json"
9431
- ],
9432
9337
  "type": "option"
9433
9338
  },
9434
- "all": {
9435
- "char": "a",
9436
- "description": "Show tickets across all projects",
9437
- "name": "all",
9339
+ "id": {
9340
+ "description": "Custom ticket ID (auto-generated if not provided)",
9341
+ "name": "id",
9342
+ "hasDynamicHelp": false,
9343
+ "multiple": false,
9344
+ "type": "option"
9345
+ },
9346
+ "interactive": {
9347
+ "char": "i",
9348
+ "description": "Interactive mode",
9349
+ "name": "interactive",
9438
9350
  "allowNo": false,
9439
9351
  "type": "boolean"
9440
9352
  },
9441
- "label": {
9442
- "description": "Filter by label name",
9443
- "name": "label",
9353
+ "epic": {
9354
+ "char": "e",
9355
+ "description": "Link ticket to an epic (e.g., EPIC-001)",
9356
+ "name": "epic",
9444
9357
  "hasDynamicHelp": false,
9445
9358
  "multiple": false,
9446
9359
  "type": "option"
9447
9360
  },
9448
- "group-by": {
9449
- "char": "g",
9450
- "description": "Group tickets by field",
9451
- "name": "group-by",
9452
- "default": "status",
9361
+ "template": {
9362
+ "char": "T",
9363
+ "description": "Create from a template (e.g., bug-report, feature-request)",
9364
+ "name": "template",
9453
9365
  "hasDynamicHelp": false,
9454
9366
  "multiple": false,
9455
- "options": [
9456
- "status",
9457
- "priority"
9458
- ],
9459
9367
  "type": "option"
9460
9368
  },
9461
- "limit": {
9369
+ "labels": {
9370
+ "aliases": [
9371
+ "label"
9372
+ ],
9462
9373
  "char": "l",
9463
- "description": "Maximum number of tickets to display",
9464
- "name": "limit",
9374
+ "description": "Labels (comma-separated)",
9375
+ "name": "labels",
9465
9376
  "hasDynamicHelp": false,
9466
9377
  "multiple": false,
9467
9378
  "type": "option"
9468
9379
  },
9469
- "offset": {
9470
- "description": "Skip first N tickets (for pagination)",
9471
- "name": "offset",
9472
- "hasDynamicHelp": false,
9473
- "multiple": false,
9474
- "type": "option"
9380
+ "dry-run": {
9381
+ "description": "Validate inputs without creating ticket (use with --json for structured output)",
9382
+ "name": "dry-run",
9383
+ "allowNo": false,
9384
+ "type": "boolean"
9475
9385
  },
9476
9386
  "source": {
9477
9387
  "description": "Ticket source: \"pmo\" for local DB, \"linear\" for Linear API, or \"auto\" to detect (default: auto)",
@@ -9496,105 +9406,7 @@
9496
9406
  },
9497
9407
  "hasDynamicHelp": false,
9498
9408
  "hiddenAliases": [],
9499
- "id": "ticket:list",
9500
- "pluginAlias": "@proletariat/cli",
9501
- "pluginName": "@proletariat/cli",
9502
- "pluginType": "core",
9503
- "strict": true,
9504
- "enableJsonFlag": false,
9505
- "isESM": true,
9506
- "relativePath": [
9507
- "dist",
9508
- "commands",
9509
- "ticket",
9510
- "list.js"
9511
- ]
9512
- },
9513
- "ticket:move": {
9514
- "aliases": [],
9515
- "args": {
9516
- "ticketId": {
9517
- "description": "Ticket ID - prompts with dropdown if not provided",
9518
- "name": "ticketId",
9519
- "required": false
9520
- },
9521
- "column": {
9522
- "description": "Target column - prompts with dropdown if not provided",
9523
- "name": "column",
9524
- "required": false
9525
- }
9526
- },
9527
- "description": "Move ticket(s) to a different column",
9528
- "examples": [
9529
- "<%= config.bin %> <%= command.id %> my-ticket \"In Progress\"",
9530
- "<%= config.bin %> <%= command.id %> implement-auth Done",
9531
- "<%= config.bin %> <%= command.id %> TKT-123 --status \"In Review\"",
9532
- "<%= config.bin %> <%= command.id %> fix-bug \"In Review\" --position 0",
9533
- "<%= config.bin %> <%= command.id %> TKT-123 --to-project PROJ-002",
9534
- "<%= config.bin %> <%= command.id %> --bulk"
9535
- ],
9536
- "flags": {
9537
- "project": {
9538
- "char": "P",
9539
- "description": "Project ID (uses first project if only one exists)",
9540
- "name": "project",
9541
- "hasDynamicHelp": false,
9542
- "multiple": false,
9543
- "type": "option"
9544
- },
9545
- "json": {
9546
- "description": "Output as JSON for AI agents/scripts",
9547
- "name": "json",
9548
- "allowNo": false,
9549
- "type": "boolean"
9550
- },
9551
- "machine": {
9552
- "char": "m",
9553
- "description": "Output as JSON for AI agents/scripts",
9554
- "name": "machine",
9555
- "allowNo": false,
9556
- "type": "boolean"
9557
- },
9558
- "status": {
9559
- "char": "s",
9560
- "description": "Target status/column (alternative to positional column argument)",
9561
- "name": "status",
9562
- "hasDynamicHelp": false,
9563
- "multiple": false,
9564
- "type": "option"
9565
- },
9566
- "position": {
9567
- "description": "Position within the column (0 = top)",
9568
- "name": "position",
9569
- "hasDynamicHelp": false,
9570
- "multiple": false,
9571
- "type": "option"
9572
- },
9573
- "to-project": {
9574
- "description": "Move ticket to a different project (uses Backlog/default column)",
9575
- "name": "to-project",
9576
- "hasDynamicHelp": false,
9577
- "multiple": false,
9578
- "type": "option"
9579
- },
9580
- "bulk": {
9581
- "char": "b",
9582
- "description": "Enable bulk mode to move multiple tickets",
9583
- "name": "bulk",
9584
- "allowNo": false,
9585
- "type": "boolean"
9586
- },
9587
- "force": {
9588
- "char": "f",
9589
- "description": "Skip confirmation prompt (bulk mode only)",
9590
- "name": "force",
9591
- "allowNo": false,
9592
- "type": "boolean"
9593
- }
9594
- },
9595
- "hasDynamicHelp": false,
9596
- "hiddenAliases": [],
9597
- "id": "ticket:move",
9409
+ "id": "ticket:create",
9598
9410
  "pluginAlias": "@proletariat/cli",
9599
9411
  "pluginName": "@proletariat/cli",
9600
9412
  "pluginType": "core",
@@ -9604,22 +9416,25 @@
9604
9416
  "dist",
9605
9417
  "commands",
9606
9418
  "ticket",
9607
- "move.js"
9419
+ "create.js"
9608
9420
  ]
9609
9421
  },
9610
- "ticket:show": {
9422
+ "ticket:delete": {
9611
9423
  "aliases": [],
9612
9424
  "args": {
9613
9425
  "ticketId": {
9614
- "description": "Ticket ID to view - prompts with dropdown if not provided",
9426
+ "description": "Ticket ID to delete - prompts with dropdown if not provided",
9615
9427
  "name": "ticketId",
9616
9428
  "required": false
9617
9429
  }
9618
9430
  },
9619
- "description": "View detailed ticket information",
9431
+ "description": "Delete ticket(s) permanently",
9620
9432
  "examples": [
9621
9433
  "<%= config.bin %> <%= command.id %> TICK-001",
9622
- "<%= config.bin %> <%= command.id %> # Interactive mode"
9434
+ "<%= config.bin %> <%= command.id %> TICK-001 --force",
9435
+ "<%= config.bin %> <%= command.id %> # Interactive mode",
9436
+ "<%= config.bin %> <%= command.id %> --bulk",
9437
+ "<%= config.bin %> <%= command.id %> --json # Output choices as JSON"
9623
9438
  ],
9624
9439
  "flags": {
9625
9440
  "project": {
@@ -9642,11 +9457,25 @@
9642
9457
  "name": "machine",
9643
9458
  "allowNo": false,
9644
9459
  "type": "boolean"
9460
+ },
9461
+ "force": {
9462
+ "char": "f",
9463
+ "description": "Skip confirmation prompt",
9464
+ "name": "force",
9465
+ "allowNo": false,
9466
+ "type": "boolean"
9467
+ },
9468
+ "bulk": {
9469
+ "char": "b",
9470
+ "description": "Enable bulk mode to delete multiple tickets",
9471
+ "name": "bulk",
9472
+ "allowNo": false,
9473
+ "type": "boolean"
9645
9474
  }
9646
9475
  },
9647
9476
  "hasDynamicHelp": false,
9648
9477
  "hiddenAliases": [],
9649
- "id": "ticket:show",
9478
+ "id": "ticket:delete",
9650
9479
  "pluginAlias": "@proletariat/cli",
9651
9480
  "pluginName": "@proletariat/cli",
9652
9481
  "pluginType": "core",
@@ -9656,29 +9485,26 @@
9656
9485
  "dist",
9657
9486
  "commands",
9658
9487
  "ticket",
9659
- "show.js"
9488
+ "delete.js"
9660
9489
  ]
9661
9490
  },
9662
- "ticket:update": {
9491
+ "ticket:edit": {
9663
9492
  "aliases": [],
9664
9493
  "args": {
9665
9494
  "ticketId": {
9666
- "description": "Ticket ID - prompts with dropdown if not provided",
9495
+ "description": "Ticket ID to edit - prompts with dropdown if not provided",
9667
9496
  "name": "ticketId",
9668
9497
  "required": false
9669
9498
  }
9670
9499
  },
9671
- "description": "Update ticket fields (title, description, priority, category, labels, status)",
9500
+ "description": "Edit an existing ticket",
9672
9501
  "examples": [
9673
- "<%= config.bin %> <%= command.id %> TKT-001 --title \"New title\"",
9674
- "<%= config.bin %> <%= command.id %> TKT-001 --description \"Updated description\"",
9675
- "<%= config.bin %> <%= command.id %> TKT-001 --description-file ./spec.md",
9676
- "<%= config.bin %> <%= command.id %> TKT-001 --priority P1",
9677
- "<%= config.bin %> <%= command.id %> TKT-001 --category bug",
9678
- "<%= config.bin %> <%= command.id %> TKT-001 --labels frontend,urgent",
9679
- "<%= config.bin %> <%= command.id %> TKT-001 --status \"In Progress\"",
9680
- "<%= config.bin %> <%= command.id %> TKT-001 --title \"Fix auth\" --priority P0 --status \"In Progress\" --json",
9681
- "<%= config.bin %> <%= command.id %> --bulk --priority P1"
9502
+ "<%= config.bin %> <%= command.id %> TICK-001",
9503
+ "<%= config.bin %> <%= command.id %> TICK-001 --title \"New title\"",
9504
+ "<%= config.bin %> <%= command.id %> TICK-001 --priority P1 --category bug",
9505
+ "<%= config.bin %> <%= command.id %> TICK-001 --add-subtask \"Implement feature\" --add-subtask \"Write tests\"",
9506
+ "<%= config.bin %> <%= command.id %> TICK-001 --owner \"john\" --assignee \"agent-1\"",
9507
+ "<%= config.bin %> <%= command.id %> # Interactive mode"
9682
9508
  ],
9683
9509
  "flags": {
9684
9510
  "project": {
@@ -9704,7 +9530,7 @@
9704
9530
  },
9705
9531
  "title": {
9706
9532
  "char": "t",
9707
- "description": "Set ticket title",
9533
+ "description": "New ticket title",
9708
9534
  "name": "title",
9709
9535
  "hasDynamicHelp": false,
9710
9536
  "multiple": false,
@@ -9712,69 +9538,94 @@
9712
9538
  },
9713
9539
  "description": {
9714
9540
  "char": "d",
9715
- "description": "Set ticket description",
9541
+ "description": "New ticket description",
9716
9542
  "name": "description",
9717
9543
  "hasDynamicHelp": false,
9718
9544
  "multiple": false,
9719
9545
  "type": "option"
9720
9546
  },
9721
- "description-file": {
9722
- "description": "Read ticket description from a file",
9723
- "name": "description-file",
9724
- "hasDynamicHelp": false,
9725
- "multiple": false,
9726
- "type": "option"
9727
- },
9728
9547
  "priority": {
9729
9548
  "char": "p",
9730
- "description": "Set priority (uses workspace priority scale, \"none\" to clear)",
9549
+ "description": "New ticket priority (uses workspace priority scale, \"none\" to clear)",
9731
9550
  "name": "priority",
9732
9551
  "hasDynamicHelp": false,
9733
9552
  "multiple": false,
9734
9553
  "type": "option"
9735
9554
  },
9736
9555
  "category": {
9737
- "char": "c",
9738
- "description": "Set category (e.g., feature, bug, refactor, \"none\" to clear)",
9556
+ "description": "New ticket category",
9739
9557
  "name": "category",
9740
9558
  "hasDynamicHelp": false,
9741
9559
  "multiple": false,
9742
9560
  "type": "option"
9743
9561
  },
9744
- "labels": {
9745
- "char": "l",
9746
- "description": "Set labels (comma-separated, replaces existing labels; use \"\" to clear)",
9747
- "name": "labels",
9562
+ "owner": {
9563
+ "char": "o",
9564
+ "description": "Ticket owner (human responsible)",
9565
+ "name": "owner",
9748
9566
  "hasDynamicHelp": false,
9749
9567
  "multiple": false,
9750
9568
  "type": "option"
9751
9569
  },
9752
- "status": {
9753
- "char": "s",
9754
- "description": "Set status/column (e.g., \"In Progress\", \"Done\")",
9755
- "name": "status",
9570
+ "assignee": {
9571
+ "char": "a",
9572
+ "description": "Ticket assignee (who executes)",
9573
+ "name": "assignee",
9756
9574
  "hasDynamicHelp": false,
9757
9575
  "multiple": false,
9758
9576
  "type": "option"
9759
9577
  },
9760
- "bulk": {
9761
- "char": "b",
9762
- "description": "Enable bulk mode to update multiple tickets",
9763
- "name": "bulk",
9578
+ "add-subtask": {
9579
+ "description": "Add a subtask (can be used multiple times)",
9580
+ "name": "add-subtask",
9581
+ "hasDynamicHelp": false,
9582
+ "multiple": true,
9583
+ "type": "option"
9584
+ },
9585
+ "clear-subtasks": {
9586
+ "description": "Clear all existing subtasks before adding new ones",
9587
+ "name": "clear-subtasks",
9764
9588
  "allowNo": false,
9765
9589
  "type": "boolean"
9766
9590
  },
9767
- "force": {
9768
- "char": "f",
9769
- "description": "Skip confirmation prompt",
9770
- "name": "force",
9591
+ "add-label": {
9592
+ "description": "Add a label (can be used multiple times)",
9593
+ "name": "add-label",
9594
+ "hasDynamicHelp": false,
9595
+ "multiple": true,
9596
+ "type": "option"
9597
+ },
9598
+ "remove-label": {
9599
+ "description": "Remove a label",
9600
+ "name": "remove-label",
9601
+ "hasDynamicHelp": false,
9602
+ "multiple": true,
9603
+ "type": "option"
9604
+ },
9605
+ "add-ac": {
9606
+ "description": "Add an acceptance criterion (can be used multiple times)",
9607
+ "name": "add-ac",
9608
+ "hasDynamicHelp": false,
9609
+ "multiple": true,
9610
+ "type": "option"
9611
+ },
9612
+ "clear-ac": {
9613
+ "description": "Clear all existing acceptance criteria before adding new ones",
9614
+ "name": "clear-ac",
9615
+ "allowNo": false,
9616
+ "type": "boolean"
9617
+ },
9618
+ "interactive": {
9619
+ "char": "i",
9620
+ "description": "Interactive mode - prompts for all fields",
9621
+ "name": "interactive",
9771
9622
  "allowNo": false,
9772
9623
  "type": "boolean"
9773
9624
  }
9774
9625
  },
9775
9626
  "hasDynamicHelp": false,
9776
9627
  "hiddenAliases": [],
9777
- "id": "ticket:update",
9628
+ "id": "ticket:edit",
9778
9629
  "pluginAlias": "@proletariat/cli",
9779
9630
  "pluginName": "@proletariat/cli",
9780
9631
  "pluginType": "core",
@@ -9784,20 +9635,62 @@
9784
9635
  "dist",
9785
9636
  "commands",
9786
9637
  "ticket",
9787
- "update.js"
9638
+ "edit.js"
9788
9639
  ]
9789
9640
  },
9790
- "trello:configure": {
9641
+ "ticket": {
9791
9642
  "aliases": [],
9792
9643
  "args": {},
9793
- "description": "Connect to Trello and configure authentication",
9644
+ "description": "Interactive menu for ticket operations",
9645
+ "examples": [
9646
+ "<%= config.bin %> <%= command.id %>"
9647
+ ],
9648
+ "flags": {
9649
+ "json": {
9650
+ "description": "Output as JSON for AI agents/scripts",
9651
+ "name": "json",
9652
+ "allowNo": false,
9653
+ "type": "boolean"
9654
+ },
9655
+ "machine": {
9656
+ "char": "m",
9657
+ "description": "Output as JSON for AI agents/scripts",
9658
+ "name": "machine",
9659
+ "allowNo": false,
9660
+ "type": "boolean"
9661
+ }
9662
+ },
9663
+ "hasDynamicHelp": false,
9664
+ "hiddenAliases": [],
9665
+ "id": "ticket",
9666
+ "pluginAlias": "@proletariat/cli",
9667
+ "pluginName": "@proletariat/cli",
9668
+ "pluginType": "core",
9669
+ "strict": true,
9670
+ "isESM": true,
9671
+ "relativePath": [
9672
+ "dist",
9673
+ "commands",
9674
+ "ticket",
9675
+ "index.js"
9676
+ ]
9677
+ },
9678
+ "ticket:list": {
9679
+ "aliases": [],
9680
+ "args": {},
9681
+ "description": "List tickets from the PMO board",
9794
9682
  "examples": [
9795
9683
  "<%= config.bin %> <%= command.id %>",
9796
- "<%= config.bin %> <%= command.id %> --check",
9797
- "<%= config.bin %> <%= command.id %> --force",
9798
- "<%= config.bin %> <%= command.id %> --disconnect",
9799
- "TRELLO_API_KEY=... TRELLO_API_TOKEN=... <%= config.bin %> <%= command.id %>",
9800
- "<%= config.bin %> <%= command.id %> --json"
9684
+ "<%= config.bin %> <%= command.id %> --column Backlog",
9685
+ "<%= config.bin %> <%= command.id %> --priority P0",
9686
+ "<%= config.bin %> <%= command.id %> --category bug",
9687
+ "<%= config.bin %> <%= command.id %> --search \"login\"",
9688
+ "<%= config.bin %> <%= command.id %> --project mobile-app",
9689
+ "<%= config.bin %> <%= command.id %> --all",
9690
+ "<%= config.bin %> <%= command.id %> --all --group-by priority",
9691
+ "<%= config.bin %> <%= command.id %> -g priority",
9692
+ "<%= config.bin %> <%= command.id %> --limit 10",
9693
+ "<%= config.bin %> <%= command.id %> --limit 10 --offset 20"
9801
9694
  ],
9802
9695
  "flags": {
9803
9696
  "project": {
@@ -9808,40 +9701,122 @@
9808
9701
  "multiple": false,
9809
9702
  "type": "option"
9810
9703
  },
9811
- "json": {
9812
- "description": "Output as JSON for AI agents/scripts",
9813
- "name": "json",
9814
- "allowNo": false,
9815
- "type": "boolean"
9816
- },
9817
- "machine": {
9818
- "char": "m",
9819
- "description": "Output as JSON for AI agents/scripts",
9820
- "name": "machine",
9821
- "allowNo": false,
9822
- "type": "boolean"
9823
- },
9824
- "check": {
9825
- "description": "Only check if Trello credentials are valid (do not prompt)",
9826
- "name": "check",
9827
- "allowNo": false,
9828
- "type": "boolean"
9704
+ "json": {
9705
+ "description": "Output as JSON for AI agents/scripts",
9706
+ "name": "json",
9707
+ "allowNo": false,
9708
+ "type": "boolean"
9709
+ },
9710
+ "machine": {
9711
+ "char": "m",
9712
+ "description": "Output as JSON for AI agents/scripts",
9713
+ "name": "machine",
9714
+ "allowNo": false,
9715
+ "type": "boolean"
9716
+ },
9717
+ "column": {
9718
+ "char": "c",
9719
+ "description": "Filter by column",
9720
+ "name": "column",
9721
+ "hasDynamicHelp": false,
9722
+ "multiple": false,
9723
+ "type": "option"
9724
+ },
9725
+ "priority": {
9726
+ "char": "p",
9727
+ "description": "Filter by priority (uses workspace priority scale)",
9728
+ "name": "priority",
9729
+ "hasDynamicHelp": false,
9730
+ "multiple": false,
9731
+ "type": "option"
9732
+ },
9733
+ "category": {
9734
+ "description": "Filter by category",
9735
+ "name": "category",
9736
+ "hasDynamicHelp": false,
9737
+ "multiple": false,
9738
+ "type": "option"
9739
+ },
9740
+ "search": {
9741
+ "char": "s",
9742
+ "description": "Search in title and description",
9743
+ "name": "search",
9744
+ "hasDynamicHelp": false,
9745
+ "multiple": false,
9746
+ "type": "option"
9747
+ },
9748
+ "format": {
9749
+ "char": "f",
9750
+ "description": "Output format",
9751
+ "name": "format",
9752
+ "default": "table",
9753
+ "hasDynamicHelp": false,
9754
+ "multiple": false,
9755
+ "options": [
9756
+ "table",
9757
+ "compact",
9758
+ "json"
9759
+ ],
9760
+ "type": "option"
9761
+ },
9762
+ "all": {
9763
+ "char": "a",
9764
+ "description": "Show tickets across all projects",
9765
+ "name": "all",
9766
+ "allowNo": false,
9767
+ "type": "boolean"
9768
+ },
9769
+ "label": {
9770
+ "description": "Filter by label name",
9771
+ "name": "label",
9772
+ "hasDynamicHelp": false,
9773
+ "multiple": false,
9774
+ "type": "option"
9775
+ },
9776
+ "group-by": {
9777
+ "char": "g",
9778
+ "description": "Group tickets by field",
9779
+ "name": "group-by",
9780
+ "default": "status",
9781
+ "hasDynamicHelp": false,
9782
+ "multiple": false,
9783
+ "options": [
9784
+ "status",
9785
+ "priority"
9786
+ ],
9787
+ "type": "option"
9788
+ },
9789
+ "limit": {
9790
+ "char": "l",
9791
+ "description": "Maximum number of tickets to display",
9792
+ "name": "limit",
9793
+ "hasDynamicHelp": false,
9794
+ "multiple": false,
9795
+ "type": "option"
9829
9796
  },
9830
- "force": {
9831
- "description": "Force re-authentication even if credentials exist",
9832
- "name": "force",
9833
- "allowNo": false,
9834
- "type": "boolean"
9797
+ "offset": {
9798
+ "description": "Skip first N tickets (for pagination)",
9799
+ "name": "offset",
9800
+ "hasDynamicHelp": false,
9801
+ "multiple": false,
9802
+ "type": "option"
9835
9803
  },
9836
- "disconnect": {
9837
- "description": "Remove stored Trello credentials and configuration",
9838
- "name": "disconnect",
9839
- "allowNo": false,
9840
- "type": "boolean"
9804
+ "source": {
9805
+ "description": "Ticket source: \"pmo\" for local DB, \"linear\" for Linear API, or \"auto\" to detect (default: auto)",
9806
+ "name": "source",
9807
+ "default": "auto",
9808
+ "hasDynamicHelp": false,
9809
+ "multiple": false,
9810
+ "options": [
9811
+ "auto",
9812
+ "pmo",
9813
+ "linear"
9814
+ ],
9815
+ "type": "option"
9841
9816
  },
9842
- "board": {
9843
- "description": "Default board ID or name",
9844
- "name": "board",
9817
+ "team": {
9818
+ "description": "Linear team key (fallback: PRLT_LINEAR_TEAM)",
9819
+ "name": "team",
9845
9820
  "hasDynamicHelp": false,
9846
9821
  "multiple": false,
9847
9822
  "type": "option"
@@ -9849,29 +9824,42 @@
9849
9824
  },
9850
9825
  "hasDynamicHelp": false,
9851
9826
  "hiddenAliases": [],
9852
- "id": "trello:configure",
9827
+ "id": "ticket:list",
9853
9828
  "pluginAlias": "@proletariat/cli",
9854
9829
  "pluginName": "@proletariat/cli",
9855
9830
  "pluginType": "core",
9856
9831
  "strict": true,
9832
+ "enableJsonFlag": false,
9857
9833
  "isESM": true,
9858
9834
  "relativePath": [
9859
9835
  "dist",
9860
9836
  "commands",
9861
- "trello",
9862
- "configure.js"
9837
+ "ticket",
9838
+ "list.js"
9863
9839
  ]
9864
9840
  },
9865
- "trello:import": {
9841
+ "ticket:move": {
9866
9842
  "aliases": [],
9867
- "args": {},
9868
- "description": "Import Trello cards into PMO as tickets",
9843
+ "args": {
9844
+ "ticketId": {
9845
+ "description": "Ticket ID - prompts with dropdown if not provided",
9846
+ "name": "ticketId",
9847
+ "required": false
9848
+ },
9849
+ "column": {
9850
+ "description": "Target column - prompts with dropdown if not provided",
9851
+ "name": "column",
9852
+ "required": false
9853
+ }
9854
+ },
9855
+ "description": "Move ticket(s) to a different column",
9869
9856
  "examples": [
9870
- "<%= config.bin %> <%= command.id %> # Interactive: select cards from board",
9871
- "<%= config.bin %> <%= command.id %> --limit 50 # Import up to 50 cards",
9872
- "<%= config.bin %> <%= command.id %> --all # Import all matching cards",
9873
- "<%= config.bin %> <%= command.id %> --dry-run # Preview what would be imported",
9874
- "<%= config.bin %> <%= command.id %> --json # JSON output for scripting"
9857
+ "<%= config.bin %> <%= command.id %> my-ticket \"In Progress\"",
9858
+ "<%= config.bin %> <%= command.id %> implement-auth Done",
9859
+ "<%= config.bin %> <%= command.id %> TKT-123 --status \"In Review\"",
9860
+ "<%= config.bin %> <%= command.id %> fix-bug \"In Review\" --position 0",
9861
+ "<%= config.bin %> <%= command.id %> TKT-123 --to-project PROJ-002",
9862
+ "<%= config.bin %> <%= command.id %> --bulk"
9875
9863
  ],
9876
9864
  "flags": {
9877
9865
  "project": {
@@ -9895,32 +9883,46 @@
9895
9883
  "allowNo": false,
9896
9884
  "type": "boolean"
9897
9885
  },
9898
- "limit": {
9899
- "char": "n",
9900
- "description": "Maximum number of cards to import",
9901
- "name": "limit",
9902
- "default": 50,
9886
+ "status": {
9887
+ "char": "s",
9888
+ "description": "Target status/column (alternative to positional column argument)",
9889
+ "name": "status",
9903
9890
  "hasDynamicHelp": false,
9904
9891
  "multiple": false,
9905
9892
  "type": "option"
9906
9893
  },
9907
- "all": {
9908
- "char": "a",
9909
- "description": "Import all matching cards without interactive selection",
9910
- "name": "all",
9894
+ "position": {
9895
+ "description": "Position within the column (0 = top)",
9896
+ "name": "position",
9897
+ "hasDynamicHelp": false,
9898
+ "multiple": false,
9899
+ "type": "option"
9900
+ },
9901
+ "to-project": {
9902
+ "description": "Move ticket to a different project (uses Backlog/default column)",
9903
+ "name": "to-project",
9904
+ "hasDynamicHelp": false,
9905
+ "multiple": false,
9906
+ "type": "option"
9907
+ },
9908
+ "bulk": {
9909
+ "char": "b",
9910
+ "description": "Enable bulk mode to move multiple tickets",
9911
+ "name": "bulk",
9911
9912
  "allowNo": false,
9912
9913
  "type": "boolean"
9913
9914
  },
9914
- "dry-run": {
9915
- "description": "Preview cards that would be imported without creating tickets",
9916
- "name": "dry-run",
9915
+ "force": {
9916
+ "char": "f",
9917
+ "description": "Skip confirmation prompt (bulk mode only)",
9918
+ "name": "force",
9917
9919
  "allowNo": false,
9918
9920
  "type": "boolean"
9919
9921
  }
9920
9922
  },
9921
9923
  "hasDynamicHelp": false,
9922
9924
  "hiddenAliases": [],
9923
- "id": "trello:import",
9925
+ "id": "ticket:move",
9924
9926
  "pluginAlias": "@proletariat/cli",
9925
9927
  "pluginName": "@proletariat/cli",
9926
9928
  "pluginType": "core",
@@ -9929,18 +9931,23 @@
9929
9931
  "relativePath": [
9930
9932
  "dist",
9931
9933
  "commands",
9932
- "trello",
9933
- "import.js"
9934
+ "ticket",
9935
+ "move.js"
9934
9936
  ]
9935
9937
  },
9936
- "trello:sync": {
9938
+ "ticket:show": {
9937
9939
  "aliases": [],
9938
- "args": {},
9939
- "description": "Sync PMO tickets to Trello cards",
9940
+ "args": {
9941
+ "ticketId": {
9942
+ "description": "Ticket ID to view - prompts with dropdown if not provided",
9943
+ "name": "ticketId",
9944
+ "required": false
9945
+ }
9946
+ },
9947
+ "description": "View detailed ticket information",
9940
9948
  "examples": [
9941
- "<%= config.bin %> <%= command.id %> --ticket TKT-001 --card abc123",
9942
- "<%= config.bin %> <%= command.id %> --ticket TKT-001 --create-missing",
9943
- "<%= config.bin %> <%= command.id %> --dry-run"
9949
+ "<%= config.bin %> <%= command.id %> TICK-001",
9950
+ "<%= config.bin %> <%= command.id %> # Interactive mode"
9944
9951
  ],
9945
9952
  "flags": {
9946
9953
  "project": {
@@ -9963,44 +9970,11 @@
9963
9970
  "name": "machine",
9964
9971
  "allowNo": false,
9965
9972
  "type": "boolean"
9966
- },
9967
- "ticket": {
9968
- "description": "PMO ticket ID to sync (syncs all mapped tickets if omitted)",
9969
- "name": "ticket",
9970
- "hasDynamicHelp": false,
9971
- "multiple": false,
9972
- "type": "option"
9973
- },
9974
- "card": {
9975
- "description": "Trello card ID to map to --ticket",
9976
- "name": "card",
9977
- "hasDynamicHelp": false,
9978
- "multiple": false,
9979
- "type": "option"
9980
- },
9981
- "list": {
9982
- "description": "Trello list ID used with --create-missing",
9983
- "name": "list",
9984
- "hasDynamicHelp": false,
9985
- "multiple": false,
9986
- "type": "option"
9987
- },
9988
- "create-missing": {
9989
- "description": "Create Trello card when no mapping exists (requires list)",
9990
- "name": "create-missing",
9991
- "allowNo": false,
9992
- "type": "boolean"
9993
- },
9994
- "dry-run": {
9995
- "description": "Preview sync operations without making changes",
9996
- "name": "dry-run",
9997
- "allowNo": false,
9998
- "type": "boolean"
9999
9973
  }
10000
9974
  },
10001
9975
  "hasDynamicHelp": false,
10002
9976
  "hiddenAliases": [],
10003
- "id": "trello:sync",
9977
+ "id": "ticket:show",
10004
9978
  "pluginAlias": "@proletariat/cli",
10005
9979
  "pluginName": "@proletariat/cli",
10006
9980
  "pluginType": "core",
@@ -10009,34 +9983,40 @@
10009
9983
  "relativePath": [
10010
9984
  "dist",
10011
9985
  "commands",
10012
- "trello",
10013
- "sync.js"
9986
+ "ticket",
9987
+ "show.js"
10014
9988
  ]
10015
9989
  },
10016
- "tools:add": {
9990
+ "ticket:update": {
10017
9991
  "aliases": [],
10018
9992
  "args": {
10019
- "type": {
10020
- "description": "Tool type (mcp or cli)",
10021
- "name": "type",
10022
- "options": [
10023
- "mcp",
10024
- "cli"
10025
- ],
10026
- "required": true
10027
- },
10028
- "name": {
10029
- "description": "Tool name (unique identifier)",
10030
- "name": "name",
10031
- "required": true
9993
+ "ticketId": {
9994
+ "description": "Ticket ID - prompts with dropdown if not provided",
9995
+ "name": "ticketId",
9996
+ "required": false
10032
9997
  }
10033
9998
  },
10034
- "description": "Register an MCP server or CLI tool",
9999
+ "description": "Update ticket fields (title, description, priority, category, labels, status)",
10035
10000
  "examples": [
10036
- "<%= config.bin %> tools add mcp arcade --url https://api.arcade.dev/mcp --auth ARCADE_API_KEY --description \"Arcade integrations\"",
10037
- "<%= config.bin %> tools add cli gh --command gh --detect \"which gh\" --install \"brew install gh\" --description \"GitHub CLI\""
10001
+ "<%= config.bin %> <%= command.id %> TKT-001 --title \"New title\"",
10002
+ "<%= config.bin %> <%= command.id %> TKT-001 --description \"Updated description\"",
10003
+ "<%= config.bin %> <%= command.id %> TKT-001 --description-file ./spec.md",
10004
+ "<%= config.bin %> <%= command.id %> TKT-001 --priority P1",
10005
+ "<%= config.bin %> <%= command.id %> TKT-001 --category bug",
10006
+ "<%= config.bin %> <%= command.id %> TKT-001 --labels frontend,urgent",
10007
+ "<%= config.bin %> <%= command.id %> TKT-001 --status \"In Progress\"",
10008
+ "<%= config.bin %> <%= command.id %> TKT-001 --title \"Fix auth\" --priority P0 --status \"In Progress\" --json",
10009
+ "<%= config.bin %> <%= command.id %> --bulk --priority P1"
10038
10010
  ],
10039
10011
  "flags": {
10012
+ "project": {
10013
+ "char": "P",
10014
+ "description": "Project ID (uses first project if only one exists)",
10015
+ "name": "project",
10016
+ "hasDynamicHelp": false,
10017
+ "multiple": false,
10018
+ "type": "option"
10019
+ },
10040
10020
  "json": {
10041
10021
  "description": "Output as JSON for AI agents/scripts",
10042
10022
  "name": "json",
@@ -10050,54 +10030,79 @@
10050
10030
  "allowNo": false,
10051
10031
  "type": "boolean"
10052
10032
  },
10053
- "url": {
10054
- "description": "MCP server URL (for remote servers)",
10055
- "name": "url",
10033
+ "title": {
10034
+ "char": "t",
10035
+ "description": "Set ticket title",
10036
+ "name": "title",
10037
+ "hasDynamicHelp": false,
10038
+ "multiple": false,
10039
+ "type": "option"
10040
+ },
10041
+ "description": {
10042
+ "char": "d",
10043
+ "description": "Set ticket description",
10044
+ "name": "description",
10056
10045
  "hasDynamicHelp": false,
10057
10046
  "multiple": false,
10058
10047
  "type": "option"
10059
10048
  },
10060
- "command": {
10061
- "description": "Command to run (MCP server command or CLI tool binary)",
10062
- "name": "command",
10049
+ "description-file": {
10050
+ "description": "Read ticket description from a file",
10051
+ "name": "description-file",
10063
10052
  "hasDynamicHelp": false,
10064
10053
  "multiple": false,
10065
10054
  "type": "option"
10066
10055
  },
10067
- "auth": {
10068
- "description": "Environment variable for authentication (e.g., ARCADE_API_KEY)",
10069
- "name": "auth",
10056
+ "priority": {
10057
+ "char": "p",
10058
+ "description": "Set priority (uses workspace priority scale, \"none\" to clear)",
10059
+ "name": "priority",
10070
10060
  "hasDynamicHelp": false,
10071
10061
  "multiple": false,
10072
10062
  "type": "option"
10073
10063
  },
10074
- "detect": {
10075
- "description": "Shell command to detect if CLI tool is installed",
10076
- "name": "detect",
10064
+ "category": {
10065
+ "char": "c",
10066
+ "description": "Set category (e.g., feature, bug, refactor, \"none\" to clear)",
10067
+ "name": "category",
10077
10068
  "hasDynamicHelp": false,
10078
10069
  "multiple": false,
10079
10070
  "type": "option"
10080
10071
  },
10081
- "install": {
10082
- "description": "Shell command to install the CLI tool",
10083
- "name": "install",
10072
+ "labels": {
10073
+ "char": "l",
10074
+ "description": "Set labels (comma-separated, replaces existing labels; use \"\" to clear)",
10075
+ "name": "labels",
10084
10076
  "hasDynamicHelp": false,
10085
10077
  "multiple": false,
10086
10078
  "type": "option"
10087
10079
  },
10088
- "description": {
10089
- "char": "d",
10090
- "description": "Human-readable description",
10091
- "name": "description",
10092
- "required": true,
10080
+ "status": {
10081
+ "char": "s",
10082
+ "description": "Set status/column (e.g., \"In Progress\", \"Done\")",
10083
+ "name": "status",
10093
10084
  "hasDynamicHelp": false,
10094
10085
  "multiple": false,
10095
10086
  "type": "option"
10087
+ },
10088
+ "bulk": {
10089
+ "char": "b",
10090
+ "description": "Enable bulk mode to update multiple tickets",
10091
+ "name": "bulk",
10092
+ "allowNo": false,
10093
+ "type": "boolean"
10094
+ },
10095
+ "force": {
10096
+ "char": "f",
10097
+ "description": "Skip confirmation prompt",
10098
+ "name": "force",
10099
+ "allowNo": false,
10100
+ "type": "boolean"
10096
10101
  }
10097
10102
  },
10098
10103
  "hasDynamicHelp": false,
10099
10104
  "hiddenAliases": [],
10100
- "id": "tools:add",
10105
+ "id": "ticket:update",
10101
10106
  "pluginAlias": "@proletariat/cli",
10102
10107
  "pluginName": "@proletariat/cli",
10103
10108
  "pluginType": "core",
@@ -10106,19 +10111,31 @@
10106
10111
  "relativePath": [
10107
10112
  "dist",
10108
10113
  "commands",
10109
- "tools",
10110
- "add.js"
10114
+ "ticket",
10115
+ "update.js"
10111
10116
  ]
10112
10117
  },
10113
- "tools:check": {
10118
+ "trello:configure": {
10114
10119
  "aliases": [],
10115
10120
  "args": {},
10116
- "description": "Verify all registered tools are available and healthy",
10121
+ "description": "Connect to Trello and configure authentication",
10117
10122
  "examples": [
10118
- "<%= config.bin %> tools check",
10119
- "<%= config.bin %> tools check --json"
10123
+ "<%= config.bin %> <%= command.id %>",
10124
+ "<%= config.bin %> <%= command.id %> --check",
10125
+ "<%= config.bin %> <%= command.id %> --force",
10126
+ "<%= config.bin %> <%= command.id %> --disconnect",
10127
+ "TRELLO_API_KEY=... TRELLO_API_TOKEN=... <%= config.bin %> <%= command.id %>",
10128
+ "<%= config.bin %> <%= command.id %> --json"
10120
10129
  ],
10121
10130
  "flags": {
10131
+ "project": {
10132
+ "char": "P",
10133
+ "description": "Project ID (uses first project if only one exists)",
10134
+ "name": "project",
10135
+ "hasDynamicHelp": false,
10136
+ "multiple": false,
10137
+ "type": "option"
10138
+ },
10122
10139
  "json": {
10123
10140
  "description": "Output as JSON for AI agents/scripts",
10124
10141
  "name": "json",
@@ -10131,34 +10148,68 @@
10131
10148
  "name": "machine",
10132
10149
  "allowNo": false,
10133
10150
  "type": "boolean"
10151
+ },
10152
+ "check": {
10153
+ "description": "Only check if Trello credentials are valid (do not prompt)",
10154
+ "name": "check",
10155
+ "allowNo": false,
10156
+ "type": "boolean"
10157
+ },
10158
+ "force": {
10159
+ "description": "Force re-authentication even if credentials exist",
10160
+ "name": "force",
10161
+ "allowNo": false,
10162
+ "type": "boolean"
10163
+ },
10164
+ "disconnect": {
10165
+ "description": "Remove stored Trello credentials and configuration",
10166
+ "name": "disconnect",
10167
+ "allowNo": false,
10168
+ "type": "boolean"
10169
+ },
10170
+ "board": {
10171
+ "description": "Default board ID or name",
10172
+ "name": "board",
10173
+ "hasDynamicHelp": false,
10174
+ "multiple": false,
10175
+ "type": "option"
10134
10176
  }
10135
10177
  },
10136
10178
  "hasDynamicHelp": false,
10137
10179
  "hiddenAliases": [],
10138
- "id": "tools:check",
10180
+ "id": "trello:configure",
10139
10181
  "pluginAlias": "@proletariat/cli",
10140
10182
  "pluginName": "@proletariat/cli",
10141
10183
  "pluginType": "core",
10142
10184
  "strict": true,
10143
- "enableJsonFlag": false,
10144
10185
  "isESM": true,
10145
10186
  "relativePath": [
10146
10187
  "dist",
10147
10188
  "commands",
10148
- "tools",
10149
- "check.js"
10189
+ "trello",
10190
+ "configure.js"
10150
10191
  ]
10151
10192
  },
10152
- "tools:detect": {
10193
+ "trello:import": {
10153
10194
  "aliases": [],
10154
10195
  "args": {},
10155
- "description": "Auto-detect common CLI tools on the system and register them",
10196
+ "description": "Import Trello cards into PMO as tickets",
10156
10197
  "examples": [
10157
- "<%= config.bin %> tools detect",
10158
- "<%= config.bin %> tools detect --auto",
10159
- "<%= config.bin %> tools detect --json"
10198
+ "<%= config.bin %> <%= command.id %> # Interactive: select cards from board",
10199
+ "<%= config.bin %> <%= command.id %> --limit 50 # Import up to 50 cards",
10200
+ "<%= config.bin %> <%= command.id %> --all # Import all matching cards",
10201
+ "<%= config.bin %> <%= command.id %> --dry-run # Preview what would be imported",
10202
+ "<%= config.bin %> <%= command.id %> --json # JSON output for scripting"
10160
10203
  ],
10161
10204
  "flags": {
10205
+ "project": {
10206
+ "char": "P",
10207
+ "description": "Project ID (uses first project if only one exists)",
10208
+ "name": "project",
10209
+ "hasDynamicHelp": false,
10210
+ "multiple": false,
10211
+ "type": "option"
10212
+ },
10162
10213
  "json": {
10163
10214
  "description": "Output as JSON for AI agents/scripts",
10164
10215
  "name": "json",
@@ -10172,40 +10223,62 @@
10172
10223
  "allowNo": false,
10173
10224
  "type": "boolean"
10174
10225
  },
10175
- "auto": {
10176
- "description": "Automatically register all detected tools without prompting",
10177
- "name": "auto",
10226
+ "limit": {
10227
+ "char": "n",
10228
+ "description": "Maximum number of cards to import",
10229
+ "name": "limit",
10230
+ "default": 50,
10231
+ "hasDynamicHelp": false,
10232
+ "multiple": false,
10233
+ "type": "option"
10234
+ },
10235
+ "all": {
10236
+ "char": "a",
10237
+ "description": "Import all matching cards without interactive selection",
10238
+ "name": "all",
10239
+ "allowNo": false,
10240
+ "type": "boolean"
10241
+ },
10242
+ "dry-run": {
10243
+ "description": "Preview cards that would be imported without creating tickets",
10244
+ "name": "dry-run",
10178
10245
  "allowNo": false,
10179
10246
  "type": "boolean"
10180
10247
  }
10181
10248
  },
10182
10249
  "hasDynamicHelp": false,
10183
10250
  "hiddenAliases": [],
10184
- "id": "tools:detect",
10251
+ "id": "trello:import",
10185
10252
  "pluginAlias": "@proletariat/cli",
10186
10253
  "pluginName": "@proletariat/cli",
10187
10254
  "pluginType": "core",
10188
10255
  "strict": true,
10189
- "enableJsonFlag": false,
10190
10256
  "isESM": true,
10191
10257
  "relativePath": [
10192
10258
  "dist",
10193
10259
  "commands",
10194
- "tools",
10195
- "detect.js"
10260
+ "trello",
10261
+ "import.js"
10196
10262
  ]
10197
10263
  },
10198
- "tools": {
10199
- "aliases": [
10200
- "tools:list"
10201
- ],
10264
+ "trello:sync": {
10265
+ "aliases": [],
10202
10266
  "args": {},
10203
- "description": "Show all registered MCP servers and CLI tools",
10267
+ "description": "Sync PMO tickets to Trello cards",
10204
10268
  "examples": [
10205
- "<%= config.bin %> tools",
10206
- "<%= config.bin %> tools --json"
10269
+ "<%= config.bin %> <%= command.id %> --ticket TKT-001 --card abc123",
10270
+ "<%= config.bin %> <%= command.id %> --ticket TKT-001 --create-missing",
10271
+ "<%= config.bin %> <%= command.id %> --dry-run"
10207
10272
  ],
10208
10273
  "flags": {
10274
+ "project": {
10275
+ "char": "P",
10276
+ "description": "Project ID (uses first project if only one exists)",
10277
+ "name": "project",
10278
+ "hasDynamicHelp": false,
10279
+ "multiple": false,
10280
+ "type": "option"
10281
+ },
10209
10282
  "json": {
10210
10283
  "description": "Output as JSON for AI agents/scripts",
10211
10284
  "name": "json",
@@ -10218,67 +10291,54 @@
10218
10291
  "name": "machine",
10219
10292
  "allowNo": false,
10220
10293
  "type": "boolean"
10221
- }
10222
- },
10223
- "hasDynamicHelp": false,
10224
- "hiddenAliases": [],
10225
- "id": "tools",
10226
- "pluginAlias": "@proletariat/cli",
10227
- "pluginName": "@proletariat/cli",
10228
- "pluginType": "core",
10229
- "strict": true,
10230
- "enableJsonFlag": false,
10231
- "isESM": true,
10232
- "relativePath": [
10233
- "dist",
10234
- "commands",
10235
- "tools",
10236
- "index.js"
10237
- ]
10238
- },
10239
- "tools:remove": {
10240
- "aliases": [],
10241
- "args": {
10242
- "name": {
10243
- "description": "Tool name to remove",
10244
- "name": "name",
10245
- "required": true
10246
- }
10247
- },
10248
- "description": "Remove a tool from the registry",
10249
- "examples": [
10250
- "<%= config.bin %> tools remove arcade",
10251
- "<%= config.bin %> tools remove ffmpeg"
10252
- ],
10253
- "flags": {
10254
- "json": {
10255
- "description": "Output as JSON for AI agents/scripts",
10256
- "name": "json",
10294
+ },
10295
+ "ticket": {
10296
+ "description": "PMO ticket ID to sync (syncs all mapped tickets if omitted)",
10297
+ "name": "ticket",
10298
+ "hasDynamicHelp": false,
10299
+ "multiple": false,
10300
+ "type": "option"
10301
+ },
10302
+ "card": {
10303
+ "description": "Trello card ID to map to --ticket",
10304
+ "name": "card",
10305
+ "hasDynamicHelp": false,
10306
+ "multiple": false,
10307
+ "type": "option"
10308
+ },
10309
+ "list": {
10310
+ "description": "Trello list ID used with --create-missing",
10311
+ "name": "list",
10312
+ "hasDynamicHelp": false,
10313
+ "multiple": false,
10314
+ "type": "option"
10315
+ },
10316
+ "create-missing": {
10317
+ "description": "Create Trello card when no mapping exists (requires list)",
10318
+ "name": "create-missing",
10257
10319
  "allowNo": false,
10258
10320
  "type": "boolean"
10259
10321
  },
10260
- "machine": {
10261
- "char": "m",
10262
- "description": "Output as JSON for AI agents/scripts",
10263
- "name": "machine",
10322
+ "dry-run": {
10323
+ "description": "Preview sync operations without making changes",
10324
+ "name": "dry-run",
10264
10325
  "allowNo": false,
10265
10326
  "type": "boolean"
10266
10327
  }
10267
10328
  },
10268
10329
  "hasDynamicHelp": false,
10269
10330
  "hiddenAliases": [],
10270
- "id": "tools:remove",
10331
+ "id": "trello:sync",
10271
10332
  "pluginAlias": "@proletariat/cli",
10272
10333
  "pluginName": "@proletariat/cli",
10273
10334
  "pluginType": "core",
10274
10335
  "strict": true,
10275
- "enableJsonFlag": false,
10276
10336
  "isESM": true,
10277
10337
  "relativePath": [
10278
10338
  "dist",
10279
10339
  "commands",
10280
- "tools",
10281
- "remove.js"
10340
+ "trello",
10341
+ "sync.js"
10282
10342
  ]
10283
10343
  },
10284
10344
  "version:bump": {
@@ -13589,6 +13649,8 @@
13589
13649
  "on_agent_died",
13590
13650
  "on_agent_completed",
13591
13651
  "on_agent_idle",
13652
+ "on_review_approved",
13653
+ "on_changes_requested",
13592
13654
  "on_version_published"
13593
13655
  ],
13594
13656
  "type": "option"
@@ -13727,6 +13789,8 @@
13727
13789
  "on_agent_died",
13728
13790
  "on_agent_completed",
13729
13791
  "on_agent_idle",
13792
+ "on_review_approved",
13793
+ "on_changes_requested",
13730
13794
  "on_version_published"
13731
13795
  ],
13732
13796
  "type": "option"
@@ -13913,5 +13977,5 @@
13913
13977
  ]
13914
13978
  }
13915
13979
  },
13916
- "version": "0.3.103"
13980
+ "version": "0.3.105"
13917
13981
  }