@proletariat/cli 0.3.80 → 0.3.82
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.
- package/README.md +2 -46
- package/dist/commands/action/run.js +2 -2
- package/dist/commands/action/run.js.map +1 -1
- package/dist/commands/agent/staff/add.d.ts +17 -1
- package/dist/commands/agent/staff/add.js +274 -1
- package/dist/commands/agent/staff/add.js.map +1 -1
- package/dist/commands/agent/staff/list.d.ts +10 -1
- package/dist/commands/agent/staff/list.js +103 -1
- package/dist/commands/agent/staff/list.js.map +1 -1
- package/dist/commands/agent/staff/remove.d.ts +18 -1
- package/dist/commands/agent/staff/remove.js +143 -1
- package/dist/commands/agent/staff/remove.js.map +1 -1
- package/dist/commands/{epic/activate.d.ts → pr/close.d.ts} +8 -2
- package/dist/commands/pr/close.js +157 -0
- package/dist/commands/pr/close.js.map +1 -0
- package/dist/commands/pr/index.js +6 -2
- package/dist/commands/pr/index.js.map +1 -1
- package/dist/commands/pr/list.d.ts +1 -0
- package/dist/commands/pr/list.js +37 -3
- package/dist/commands/pr/list.js.map +1 -1
- package/dist/commands/pr/merge.js +1 -1
- package/dist/commands/pr/merge.js.map +1 -1
- package/dist/commands/pr/status.js +33 -1
- package/dist/commands/pr/status.js.map +1 -1
- package/dist/commands/self-update.d.ts +7 -14
- package/dist/commands/self-update.js +11 -179
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/{workflow/switch.d.ts → ticket/cancel.d.ts} +4 -2
- package/dist/commands/ticket/cancel.js +204 -0
- package/dist/commands/ticket/cancel.js.map +1 -0
- package/dist/commands/ticket/create.d.ts +7 -2
- package/dist/commands/ticket/create.js +45 -29
- package/dist/commands/ticket/create.js.map +1 -1
- package/dist/commands/ticket/link/index.js +0 -12
- package/dist/commands/ticket/link/index.js.map +1 -1
- package/dist/commands/ticket/move.d.ts +1 -0
- package/dist/commands/ticket/move.js +10 -3
- package/dist/commands/ticket/move.js.map +1 -1
- package/dist/commands/update.d.ts +18 -0
- package/dist/commands/update.js +184 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/lib/database/index.js +0 -134
- package/dist/lib/database/index.js.map +1 -1
- package/dist/lib/database/migrations/0006_drop_theme_names_used.d.ts +8 -0
- package/dist/lib/database/migrations/0006_drop_theme_names_used.js +30 -0
- package/dist/lib/database/migrations/0006_drop_theme_names_used.js.map +1 -0
- package/dist/lib/database/migrations/0007_add_worktree_columns.d.ts +8 -0
- package/dist/lib/database/migrations/0007_add_worktree_columns.js +24 -0
- package/dist/lib/database/migrations/0007_add_worktree_columns.js.map +1 -0
- package/dist/lib/database/migrations/0008_add_agent_mount_mode.d.ts +8 -0
- package/dist/lib/database/migrations/0008_add_agent_mount_mode.js +18 -0
- package/dist/lib/database/migrations/0008_add_agent_mount_mode.js.map +1 -0
- package/dist/lib/database/migrations/0009_create_media_items.d.ts +7 -0
- package/dist/lib/database/migrations/0009_create_media_items.js +29 -0
- package/dist/lib/database/migrations/0009_create_media_items.js.map +1 -0
- package/dist/lib/database/migrations/0010_add_ticket_position.d.ts +9 -0
- package/dist/lib/database/migrations/0010_add_ticket_position.js +44 -0
- package/dist/lib/database/migrations/0010_add_ticket_position.js.map +1 -0
- package/dist/lib/database/migrations/index.js +10 -0
- package/dist/lib/database/migrations/index.js.map +1 -1
- package/dist/lib/events/events.d.ts +2 -1
- package/dist/lib/pmo/storage/dependencies.js +45 -21
- package/dist/lib/pmo/storage/dependencies.js.map +1 -1
- package/dist/lib/pmo/storage/statuses.d.ts +2 -0
- package/dist/lib/pmo/storage/statuses.js +209 -150
- package/dist/lib/pmo/storage/statuses.js.map +1 -1
- package/dist/lib/pr/index.d.ts +14 -0
- package/dist/lib/pr/index.js +48 -0
- package/dist/lib/pr/index.js.map +1 -1
- package/dist/lib/update-check.js +1 -1
- package/dist/lib/update-check.js.map +1 -1
- package/dist/lib/update-prompt.js +1 -1
- package/dist/lib/work-lifecycle/events.d.ts +11 -0
- package/oclif.manifest.json +5060 -11723
- package/package.json +1 -1
- package/dist/commands/agents/index.d.ts +0 -11
- package/dist/commands/agents/index.js +0 -105
- package/dist/commands/agents/index.js.map +0 -1
- package/dist/commands/agents/themes/add-names.d.ts +0 -1
- package/dist/commands/agents/themes/add-names.js +0 -2
- package/dist/commands/agents/themes/add-names.js.map +0 -1
- package/dist/commands/agents/themes/create.d.ts +0 -1
- package/dist/commands/agents/themes/create.js +0 -2
- package/dist/commands/agents/themes/create.js.map +0 -1
- package/dist/commands/agents/themes/list.d.ts +0 -1
- package/dist/commands/agents/themes/list.js +0 -2
- package/dist/commands/agents/themes/list.js.map +0 -1
- package/dist/commands/category/create.d.ts +0 -19
- package/dist/commands/category/create.js +0 -130
- package/dist/commands/category/create.js.map +0 -1
- package/dist/commands/category/delete.d.ts +0 -18
- package/dist/commands/category/delete.js +0 -124
- package/dist/commands/category/delete.js.map +0 -1
- package/dist/commands/category/index.d.ts +0 -16
- package/dist/commands/category/index.js +0 -88
- package/dist/commands/category/index.js.map +0 -1
- package/dist/commands/category/list.d.ts +0 -19
- package/dist/commands/category/list.js +0 -111
- package/dist/commands/category/list.js.map +0 -1
- package/dist/commands/category/rename.d.ts +0 -19
- package/dist/commands/category/rename.js +0 -160
- package/dist/commands/category/rename.js.map +0 -1
- package/dist/commands/epic/activate.js +0 -107
- package/dist/commands/epic/activate.js.map +0 -1
- package/dist/commands/epic/archive.d.ts +0 -15
- package/dist/commands/epic/archive.js +0 -118
- package/dist/commands/epic/archive.js.map +0 -1
- package/dist/commands/epic/create.d.ts +0 -17
- package/dist/commands/epic/create.js +0 -179
- package/dist/commands/epic/create.js.map +0 -1
- package/dist/commands/epic/delete.d.ts +0 -15
- package/dist/commands/epic/delete.js +0 -129
- package/dist/commands/epic/delete.js.map +0 -1
- package/dist/commands/epic/index.d.ts +0 -14
- package/dist/commands/epic/index.js +0 -88
- package/dist/commands/epic/index.js.map +0 -1
- package/dist/commands/epic/list.d.ts +0 -13
- package/dist/commands/epic/list.js +0 -103
- package/dist/commands/epic/list.js.map +0 -1
- package/dist/commands/epic/move.d.ts +0 -16
- package/dist/commands/epic/move.js +0 -162
- package/dist/commands/epic/move.js.map +0 -1
- package/dist/commands/epic/progress.d.ts +0 -17
- package/dist/commands/epic/progress.js +0 -170
- package/dist/commands/epic/progress.js.map +0 -1
- package/dist/commands/epic/project.d.ts +0 -16
- package/dist/commands/epic/project.js +0 -199
- package/dist/commands/epic/project.js.map +0 -1
- package/dist/commands/epic/reorder.d.ts +0 -22
- package/dist/commands/epic/reorder.js +0 -152
- package/dist/commands/epic/reorder.js.map +0 -1
- package/dist/commands/epic/show.d.ts +0 -13
- package/dist/commands/epic/show.js +0 -17
- package/dist/commands/epic/show.js.map +0 -1
- package/dist/commands/epic/spec.d.ts +0 -17
- package/dist/commands/epic/spec.js +0 -189
- package/dist/commands/epic/spec.js.map +0 -1
- package/dist/commands/epic/ticket.d.ts +0 -21
- package/dist/commands/epic/ticket.js +0 -300
- package/dist/commands/epic/ticket.js.map +0 -1
- package/dist/commands/epic/view.d.ts +0 -14
- package/dist/commands/epic/view.js +0 -141
- package/dist/commands/epic/view.js.map +0 -1
- package/dist/commands/execution/kill.d.ts +0 -12
- package/dist/commands/execution/kill.js +0 -18
- package/dist/commands/execution/kill.js.map +0 -1
- package/dist/commands/label/create.d.ts +0 -20
- package/dist/commands/label/create.js +0 -58
- package/dist/commands/label/create.js.map +0 -1
- package/dist/commands/label/delete.d.ts +0 -17
- package/dist/commands/label/delete.js +0 -33
- package/dist/commands/label/delete.js.map +0 -1
- package/dist/commands/label/group/create.d.ts +0 -20
- package/dist/commands/label/group/create.js +0 -56
- package/dist/commands/label/group/create.js.map +0 -1
- package/dist/commands/label/group/list.d.ts +0 -14
- package/dist/commands/label/group/list.js +0 -53
- package/dist/commands/label/group/list.js.map +0 -1
- package/dist/commands/label/index.d.ts +0 -15
- package/dist/commands/label/index.js +0 -59
- package/dist/commands/label/index.js.map +0 -1
- package/dist/commands/label/list.d.ts +0 -16
- package/dist/commands/label/list.js +0 -84
- package/dist/commands/label/list.js.map +0 -1
- package/dist/commands/link/create.d.ts +0 -16
- package/dist/commands/link/create.js +0 -136
- package/dist/commands/link/create.js.map +0 -1
- package/dist/commands/link/index.d.ts +0 -14
- package/dist/commands/link/index.js +0 -82
- package/dist/commands/link/index.js.map +0 -1
- package/dist/commands/link/list.d.ts +0 -18
- package/dist/commands/link/list.js +0 -178
- package/dist/commands/link/list.js.map +0 -1
- package/dist/commands/link/remove.d.ts +0 -16
- package/dist/commands/link/remove.js +0 -115
- package/dist/commands/link/remove.js.map +0 -1
- package/dist/commands/media/add.d.ts +0 -19
- package/dist/commands/media/add.js +0 -98
- package/dist/commands/media/add.js.map +0 -1
- package/dist/commands/media/index.d.ts +0 -14
- package/dist/commands/media/index.js +0 -93
- package/dist/commands/media/index.js.map +0 -1
- package/dist/commands/media/list.d.ts +0 -15
- package/dist/commands/media/list.js +0 -94
- package/dist/commands/media/list.js.map +0 -1
- package/dist/commands/media/preprocess.d.ts +0 -19
- package/dist/commands/media/preprocess.js +0 -91
- package/dist/commands/media/preprocess.js.map +0 -1
- package/dist/commands/media/remove.d.ts +0 -18
- package/dist/commands/media/remove.js +0 -105
- package/dist/commands/media/remove.js.map +0 -1
- package/dist/commands/media/show.d.ts +0 -17
- package/dist/commands/media/show.js +0 -122
- package/dist/commands/media/show.js.map +0 -1
- package/dist/commands/phase/create.d.ts +0 -22
- package/dist/commands/phase/create.js +0 -165
- package/dist/commands/phase/create.js.map +0 -1
- package/dist/commands/phase/delete.d.ts +0 -18
- package/dist/commands/phase/delete.js +0 -75
- package/dist/commands/phase/delete.js.map +0 -1
- package/dist/commands/phase/list.d.ts +0 -13
- package/dist/commands/phase/list.js +0 -75
- package/dist/commands/phase/list.js.map +0 -1
- package/dist/commands/phase/move.d.ts +0 -18
- package/dist/commands/phase/move.js +0 -124
- package/dist/commands/phase/move.js.map +0 -1
- package/dist/commands/phase/template/apply.d.ts +0 -26
- package/dist/commands/phase/template/apply.js +0 -15
- package/dist/commands/phase/template/apply.js.map +0 -1
- package/dist/commands/phase/template/create.d.ts +0 -23
- package/dist/commands/phase/template/create.js +0 -15
- package/dist/commands/phase/template/create.js.map +0 -1
- package/dist/commands/phase/template/delete.d.ts +0 -18
- package/dist/commands/phase/template/delete.js +0 -63
- package/dist/commands/phase/template/delete.js.map +0 -1
- package/dist/commands/phase/template/list.d.ts +0 -17
- package/dist/commands/phase/template/list.js +0 -90
- package/dist/commands/phase/template/list.js.map +0 -1
- package/dist/commands/phase/template/update.d.ts +0 -1
- package/dist/commands/phase/template/update.js +0 -2
- package/dist/commands/phase/template/update.js.map +0 -1
- package/dist/commands/phase/update.d.ts +0 -23
- package/dist/commands/phase/update.js +0 -209
- package/dist/commands/phase/update.js.map +0 -1
- package/dist/commands/priority/add.d.ts +0 -16
- package/dist/commands/priority/add.js +0 -71
- package/dist/commands/priority/add.js.map +0 -1
- package/dist/commands/priority/list.d.ts +0 -11
- package/dist/commands/priority/list.js +0 -35
- package/dist/commands/priority/list.js.map +0 -1
- package/dist/commands/priority/remove.d.ts +0 -14
- package/dist/commands/priority/remove.js +0 -55
- package/dist/commands/priority/remove.js.map +0 -1
- package/dist/commands/priority/set.d.ts +0 -15
- package/dist/commands/priority/set.js +0 -61
- package/dist/commands/priority/set.js.map +0 -1
- package/dist/commands/roadmap/add-project.d.ts +0 -19
- package/dist/commands/roadmap/add-project.js +0 -119
- package/dist/commands/roadmap/add-project.js.map +0 -1
- package/dist/commands/roadmap/create.d.ts +0 -22
- package/dist/commands/roadmap/create.js +0 -168
- package/dist/commands/roadmap/create.js.map +0 -1
- package/dist/commands/roadmap/delete.d.ts +0 -18
- package/dist/commands/roadmap/delete.js +0 -96
- package/dist/commands/roadmap/delete.js.map +0 -1
- package/dist/commands/roadmap/generate.d.ts +0 -24
- package/dist/commands/roadmap/generate.js +0 -201
- package/dist/commands/roadmap/generate.js.map +0 -1
- package/dist/commands/roadmap/index.d.ts +0 -14
- package/dist/commands/roadmap/index.js +0 -57
- package/dist/commands/roadmap/index.js.map +0 -1
- package/dist/commands/roadmap/list.d.ts +0 -14
- package/dist/commands/roadmap/list.js +0 -58
- package/dist/commands/roadmap/list.js.map +0 -1
- package/dist/commands/roadmap/remove-project.d.ts +0 -19
- package/dist/commands/roadmap/remove-project.js +0 -124
- package/dist/commands/roadmap/remove-project.js.map +0 -1
- package/dist/commands/roadmap/reorder.d.ts +0 -18
- package/dist/commands/roadmap/reorder.js +0 -147
- package/dist/commands/roadmap/reorder.js.map +0 -1
- package/dist/commands/roadmap/update.d.ts +0 -20
- package/dist/commands/roadmap/update.js +0 -134
- package/dist/commands/roadmap/update.js.map +0 -1
- package/dist/commands/roadmap/view.d.ts +0 -17
- package/dist/commands/roadmap/view.js +0 -93
- package/dist/commands/roadmap/view.js.map +0 -1
- package/dist/commands/staff/add.d.ts +0 -17
- package/dist/commands/staff/add.js +0 -275
- package/dist/commands/staff/add.js.map +0 -1
- package/dist/commands/staff/index.d.ts +0 -15
- package/dist/commands/staff/index.js +0 -88
- package/dist/commands/staff/index.js.map +0 -1
- package/dist/commands/staff/list.d.ts +0 -10
- package/dist/commands/staff/list.js +0 -104
- package/dist/commands/staff/list.js.map +0 -1
- package/dist/commands/staff/remove.d.ts +0 -18
- package/dist/commands/staff/remove.js +0 -144
- package/dist/commands/staff/remove.js.map +0 -1
- package/dist/commands/status/category.d.ts +0 -15
- package/dist/commands/status/category.js +0 -64
- package/dist/commands/status/category.js.map +0 -1
- package/dist/commands/status/create.d.ts +0 -21
- package/dist/commands/status/create.js +0 -161
- package/dist/commands/status/create.js.map +0 -1
- package/dist/commands/status/delete.d.ts +0 -14
- package/dist/commands/status/delete.js +0 -86
- package/dist/commands/status/delete.js.map +0 -1
- package/dist/commands/status/index.d.ts +0 -15
- package/dist/commands/status/index.js +0 -98
- package/dist/commands/status/index.js.map +0 -1
- package/dist/commands/status/list.d.ts +0 -13
- package/dist/commands/status/list.js +0 -97
- package/dist/commands/status/list.js.map +0 -1
- package/dist/commands/status/move.d.ts +0 -15
- package/dist/commands/status/move.js +0 -126
- package/dist/commands/status/move.js.map +0 -1
- package/dist/commands/status/update.d.ts +0 -20
- package/dist/commands/status/update.js +0 -214
- package/dist/commands/status/update.js.map +0 -1
- package/dist/commands/template/apply.d.ts +0 -28
- package/dist/commands/template/apply.js +0 -258
- package/dist/commands/template/apply.js.map +0 -1
- package/dist/commands/template/create.d.ts +0 -28
- package/dist/commands/template/create.js +0 -238
- package/dist/commands/template/create.js.map +0 -1
- package/dist/commands/template/delete.d.ts +0 -16
- package/dist/commands/template/delete.js +0 -141
- package/dist/commands/template/delete.js.map +0 -1
- package/dist/commands/template/index.d.ts +0 -11
- package/dist/commands/template/index.js +0 -65
- package/dist/commands/template/index.js.map +0 -1
- package/dist/commands/template/list.d.ts +0 -19
- package/dist/commands/template/list.js +0 -155
- package/dist/commands/template/list.js.map +0 -1
- package/dist/commands/template/save.d.ts +0 -17
- package/dist/commands/template/save.js +0 -101
- package/dist/commands/template/save.js.map +0 -1
- package/dist/commands/template/update.d.ts +0 -19
- package/dist/commands/template/update.js +0 -94
- package/dist/commands/template/update.js.map +0 -1
- package/dist/commands/ticket/template/apply.d.ts +0 -26
- package/dist/commands/ticket/template/apply.js +0 -15
- package/dist/commands/ticket/template/apply.js.map +0 -1
- package/dist/commands/ticket/template/delete.d.ts +0 -18
- package/dist/commands/ticket/template/delete.js +0 -63
- package/dist/commands/ticket/template/delete.js.map +0 -1
- package/dist/commands/ticket/template/list.d.ts +0 -17
- package/dist/commands/ticket/template/list.js +0 -79
- package/dist/commands/ticket/template/list.js.map +0 -1
- package/dist/commands/ticket/template/save.d.ts +0 -17
- package/dist/commands/ticket/template/save.js +0 -99
- package/dist/commands/ticket/template/save.js.map +0 -1
- package/dist/commands/work/spawn-all.d.ts +0 -19
- package/dist/commands/work/spawn-all.js +0 -64
- package/dist/commands/work/spawn-all.js.map +0 -1
- package/dist/commands/workflow/create.d.ts +0 -19
- package/dist/commands/workflow/create.js +0 -118
- package/dist/commands/workflow/create.js.map +0 -1
- package/dist/commands/workflow/delete.d.ts +0 -18
- package/dist/commands/workflow/delete.js +0 -108
- package/dist/commands/workflow/delete.js.map +0 -1
- package/dist/commands/workflow/index.d.ts +0 -16
- package/dist/commands/workflow/index.js +0 -73
- package/dist/commands/workflow/index.js.map +0 -1
- package/dist/commands/workflow/list.d.ts +0 -16
- package/dist/commands/workflow/list.js +0 -73
- package/dist/commands/workflow/list.js.map +0 -1
- package/dist/commands/workflow/setup.d.ts +0 -24
- package/dist/commands/workflow/setup.js +0 -351
- package/dist/commands/workflow/setup.js.map +0 -1
- package/dist/commands/workflow/show.d.ts +0 -13
- package/dist/commands/workflow/show.js +0 -17
- package/dist/commands/workflow/show.js.map +0 -1
- package/dist/commands/workflow/switch.js +0 -144
- package/dist/commands/workflow/switch.js.map +0 -1
- package/dist/commands/workflow/view.d.ts +0 -17
- package/dist/commands/workflow/view.js +0 -106
- package/dist/commands/workflow/view.js.map +0 -1
- package/dist/commands/workflow-rule/create.d.ts +0 -19
- package/dist/commands/workflow-rule/create.js +0 -141
- package/dist/commands/workflow-rule/create.js.map +0 -1
- package/dist/commands/workflow-rule/delete.d.ts +0 -18
- package/dist/commands/workflow-rule/delete.js +0 -72
- package/dist/commands/workflow-rule/delete.js.map +0 -1
- package/dist/commands/workflow-rule/index.d.ts +0 -16
- package/dist/commands/workflow-rule/index.js +0 -83
- package/dist/commands/workflow-rule/index.js.map +0 -1
- package/dist/commands/workflow-rule/list.d.ts +0 -17
- package/dist/commands/workflow-rule/list.js +0 -72
- package/dist/commands/workflow-rule/list.js.map +0 -1
- package/dist/commands/workflow-rule/update.d.ts +0 -22
- package/dist/commands/workflow-rule/update.js +0 -84
- package/dist/commands/workflow-rule/update.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/pr/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,UAAU,EACV,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,aAAa,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/pr/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import Update from './update.js';
|
|
2
|
+
/**
|
|
3
|
+
* Backward-compatible alias for `prlt update`.
|
|
4
|
+
* `prlt self-update` continues to work but `prlt update` is now the primary command.
|
|
5
|
+
*/
|
|
6
|
+
export default class SelfUpdate extends Update {
|
|
7
|
+
static hidden: boolean;
|
|
3
8
|
static description: string;
|
|
4
9
|
static examples: string[];
|
|
5
|
-
static flags: {
|
|
6
|
-
check: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
|
-
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
-
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
-
};
|
|
11
|
-
run(): Promise<void>;
|
|
12
|
-
/**
|
|
13
|
-
* Build the shell command for the detected install method.
|
|
14
|
-
*/
|
|
15
|
-
private getUpdateShellCommand;
|
|
16
|
-
private printTroubleshootingHelp;
|
|
17
10
|
}
|
|
@@ -1,183 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
static description = '
|
|
1
|
+
import Update from './update.js';
|
|
2
|
+
/**
|
|
3
|
+
* Backward-compatible alias for `prlt update`.
|
|
4
|
+
* `prlt self-update` continues to work but `prlt update` is now the primary command.
|
|
5
|
+
*/
|
|
6
|
+
export default class SelfUpdate extends Update {
|
|
7
|
+
static hidden = true;
|
|
8
|
+
static description = 'Alias for "prlt update"';
|
|
9
9
|
static examples = [
|
|
10
|
-
'<%= config.bin %>
|
|
11
|
-
'<%= config.bin %>
|
|
12
|
-
'<%= config.bin %>
|
|
10
|
+
'<%= config.bin %> update',
|
|
11
|
+
'<%= config.bin %> update --check',
|
|
12
|
+
'<%= config.bin %> update --force',
|
|
13
13
|
];
|
|
14
|
-
static flags = {
|
|
15
|
-
...machineOutputFlags,
|
|
16
|
-
check: Flags.boolean({
|
|
17
|
-
description: 'Check for updates without installing',
|
|
18
|
-
default: false,
|
|
19
|
-
}),
|
|
20
|
-
force: Flags.boolean({
|
|
21
|
-
description: 'Force update even if already on latest version',
|
|
22
|
-
default: false,
|
|
23
|
-
}),
|
|
24
|
-
};
|
|
25
|
-
async run() {
|
|
26
|
-
const { flags } = await this.parse(SelfUpdate);
|
|
27
|
-
const jsonMode = shouldOutputJson(flags);
|
|
28
|
-
const currentVersion = this.config.version;
|
|
29
|
-
const pm = detectPackageManager();
|
|
30
|
-
if (!jsonMode) {
|
|
31
|
-
this.log('');
|
|
32
|
-
this.log(colors.primary('Proletariat CLI Self-Update'));
|
|
33
|
-
this.log('');
|
|
34
|
-
this.log(` Current version: ${colors.text(currentVersion)}`);
|
|
35
|
-
this.log(` Install method: ${colors.text(pm)}`);
|
|
36
|
-
}
|
|
37
|
-
// Fetch latest version
|
|
38
|
-
const latestVersion = await fetchLatestVersion(pm === 'standalone' ? 'npm' : pm);
|
|
39
|
-
if (!latestVersion) {
|
|
40
|
-
if (jsonMode) {
|
|
41
|
-
this.log(JSON.stringify({
|
|
42
|
-
success: false,
|
|
43
|
-
error: 'Could not fetch latest version from registry',
|
|
44
|
-
currentVersion,
|
|
45
|
-
packageManager: pm,
|
|
46
|
-
}, null, 2));
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
this.log('');
|
|
50
|
-
this.log(colors.error('Could not fetch latest version. Check your network connection.'));
|
|
51
|
-
}
|
|
52
|
-
this.exit(1);
|
|
53
|
-
}
|
|
54
|
-
const updateAvailable = isNewerVersion(currentVersion, latestVersion);
|
|
55
|
-
if (!jsonMode) {
|
|
56
|
-
this.log(` Latest version: ${colors.text(latestVersion)}`);
|
|
57
|
-
this.log('');
|
|
58
|
-
}
|
|
59
|
-
// --check mode: just report and exit
|
|
60
|
-
if (flags.check) {
|
|
61
|
-
if (jsonMode) {
|
|
62
|
-
this.log(JSON.stringify({
|
|
63
|
-
success: true,
|
|
64
|
-
currentVersion,
|
|
65
|
-
latestVersion,
|
|
66
|
-
updateAvailable,
|
|
67
|
-
packageManager: pm,
|
|
68
|
-
updateCommand: getUpdateCommand(pm),
|
|
69
|
-
}, null, 2));
|
|
70
|
-
}
|
|
71
|
-
else if (updateAvailable) {
|
|
72
|
-
this.log(` ${colors.warning('Update available!')} ${currentVersion} → ${colors.success(latestVersion)}`);
|
|
73
|
-
this.log(` Run ${colors.primary('prlt self-update')} to install`);
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
this.log(` ${colors.success('You are on the latest version.')}`);
|
|
77
|
-
}
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
// No update available (and not forced)
|
|
81
|
-
if (!updateAvailable && !flags.force) {
|
|
82
|
-
if (jsonMode) {
|
|
83
|
-
this.log(JSON.stringify({
|
|
84
|
-
success: true,
|
|
85
|
-
currentVersion,
|
|
86
|
-
latestVersion,
|
|
87
|
-
updateAvailable: false,
|
|
88
|
-
message: 'Already on the latest version',
|
|
89
|
-
}, null, 2));
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
this.log(` ${colors.success('Already on the latest version.')}`);
|
|
93
|
-
this.log('');
|
|
94
|
-
}
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
// Perform the update
|
|
98
|
-
const command = this.getUpdateShellCommand(pm, latestVersion);
|
|
99
|
-
if (jsonMode) {
|
|
100
|
-
this.log(JSON.stringify({
|
|
101
|
-
success: true,
|
|
102
|
-
action: 'updating',
|
|
103
|
-
currentVersion,
|
|
104
|
-
latestVersion,
|
|
105
|
-
packageManager: pm,
|
|
106
|
-
command,
|
|
107
|
-
}, null, 2));
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
this.log(` Updating ${currentVersion} → ${latestVersion}…`);
|
|
111
|
-
this.log('');
|
|
112
|
-
this.log(` Running: ${colors.textMuted(command)}`);
|
|
113
|
-
this.log('');
|
|
114
|
-
}
|
|
115
|
-
try {
|
|
116
|
-
execSync(command, {
|
|
117
|
-
stdio: 'inherit',
|
|
118
|
-
timeout: 120_000,
|
|
119
|
-
});
|
|
120
|
-
if (!jsonMode) {
|
|
121
|
-
this.log('');
|
|
122
|
-
this.log(colors.success('Update complete!') + ' Run your command again to use the new version.');
|
|
123
|
-
this.log('');
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
catch {
|
|
127
|
-
if (!jsonMode) {
|
|
128
|
-
this.log('');
|
|
129
|
-
this.log(colors.error('Update failed.') + ' Try running the command manually:');
|
|
130
|
-
this.log(` ${command}`);
|
|
131
|
-
this.log('');
|
|
132
|
-
this.printTroubleshootingHelp(pm);
|
|
133
|
-
}
|
|
134
|
-
this.exit(1);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Build the shell command for the detected install method.
|
|
139
|
-
*/
|
|
140
|
-
getUpdateShellCommand(pm, version) {
|
|
141
|
-
switch (pm) {
|
|
142
|
-
case 'brew':
|
|
143
|
-
return 'brew upgrade chrismcdermut/proletariat/prlt';
|
|
144
|
-
case 'standalone': {
|
|
145
|
-
const installDir = getStandaloneInstallDir();
|
|
146
|
-
const parts = [
|
|
147
|
-
'curl -fsSL https://raw.githubusercontent.com/chrismcdermut/proletariat/main/scripts/install.sh | bash',
|
|
148
|
-
];
|
|
149
|
-
const args = [];
|
|
150
|
-
if (version)
|
|
151
|
-
args.push(`--version ${version}`);
|
|
152
|
-
if (installDir)
|
|
153
|
-
args.push(`--prefix ${installDir}`);
|
|
154
|
-
if (args.length > 0) {
|
|
155
|
-
parts[0] += ` -s -- ${args.join(' ')}`;
|
|
156
|
-
}
|
|
157
|
-
return parts[0];
|
|
158
|
-
}
|
|
159
|
-
default:
|
|
160
|
-
return 'npm install -g @proletariat/cli';
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
printTroubleshootingHelp(pm) {
|
|
164
|
-
if (pm === 'brew') {
|
|
165
|
-
this.log(' If brew reports "already installed", your tap may be stale:');
|
|
166
|
-
this.log(` ${colors.textMuted('brew tap --force chrismcdermut/proletariat')}`);
|
|
167
|
-
this.log(` ${colors.textMuted('brew upgrade chrismcdermut/proletariat/prlt')}`);
|
|
168
|
-
this.log('');
|
|
169
|
-
}
|
|
170
|
-
if (pm === 'npm') {
|
|
171
|
-
this.log(' If npm fails with EEXIST, another install method may be conflicting.');
|
|
172
|
-
this.log(` See: ${colors.textMuted('prlt self-update --help')} or`);
|
|
173
|
-
this.log(` Docs: ${colors.textMuted('https://github.com/chrismcdermut/proletariat/blob/main/docs/switching-install-methods.md')}`);
|
|
174
|
-
this.log('');
|
|
175
|
-
}
|
|
176
|
-
if (pm === 'standalone') {
|
|
177
|
-
this.log(' If the standalone installer fails, try re-running manually:');
|
|
178
|
-
this.log(` ${colors.textMuted('curl -fsSL https://raw.githubusercontent.com/chrismcdermut/proletariat/main/scripts/install.sh | bash')}`);
|
|
179
|
-
this.log('');
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
14
|
}
|
|
183
15
|
//# sourceMappingURL=self-update.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,MAAM;IAC5C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAA;IAEpB,MAAM,CAAC,WAAW,GAAG,yBAAyB,CAAA;IAE9C,MAAM,CAAC,QAAQ,GAAG;QAChB,0BAA0B;QAC1B,kCAAkC;QAClC,kCAAkC;KACnC,CAAA"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
-
export default class
|
|
2
|
+
export default class TicketCancel extends PMOCommand {
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static args: {
|
|
6
|
-
|
|
6
|
+
ticketId: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
7
7
|
};
|
|
8
8
|
static flags: {
|
|
9
|
+
bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
10
|
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
11
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
12
|
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
14
|
};
|
|
14
15
|
execute(): Promise<void>;
|
|
16
|
+
private executeBulk;
|
|
15
17
|
}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { autoExportToBoard, PMOCommand, pmoBaseFlags, } from '../../lib/pmo/index.js';
|
|
3
|
+
import { styles } from '../../lib/styles.js';
|
|
4
|
+
import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
|
|
5
|
+
import { formatTicket } from '../../lib/mcp/helpers.js';
|
|
6
|
+
export default class TicketCancel extends PMOCommand {
|
|
7
|
+
static description = 'Cancel ticket(s) (move to Canceled column)';
|
|
8
|
+
static examples = [
|
|
9
|
+
'<%= config.bin %> <%= command.id %>',
|
|
10
|
+
'<%= config.bin %> <%= command.id %> TKT-001',
|
|
11
|
+
'<%= config.bin %> <%= command.id %> --bulk',
|
|
12
|
+
];
|
|
13
|
+
static args = {
|
|
14
|
+
ticketId: Args.string({
|
|
15
|
+
description: 'Ticket ID - prompts with dropdown if not provided',
|
|
16
|
+
required: false,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
static flags = {
|
|
20
|
+
...pmoBaseFlags,
|
|
21
|
+
bulk: Flags.boolean({
|
|
22
|
+
char: 'b',
|
|
23
|
+
description: 'Enable bulk mode to cancel multiple tickets',
|
|
24
|
+
default: false,
|
|
25
|
+
}),
|
|
26
|
+
force: Flags.boolean({
|
|
27
|
+
char: 'f',
|
|
28
|
+
description: 'Skip confirmation prompt (bulk mode only)',
|
|
29
|
+
default: false,
|
|
30
|
+
}),
|
|
31
|
+
};
|
|
32
|
+
async execute() {
|
|
33
|
+
const { args, flags } = await this.parse(TicketCancel);
|
|
34
|
+
const projectId = flags.project;
|
|
35
|
+
// Check if JSON output mode is active
|
|
36
|
+
const jsonMode = shouldOutputJson(flags);
|
|
37
|
+
// Helper to handle errors in JSON mode
|
|
38
|
+
const handleError = (code, message) => {
|
|
39
|
+
if (jsonMode) {
|
|
40
|
+
outputErrorAsJson(code, message, createMetadata('ticket cancel', flags));
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
this.error(message);
|
|
44
|
+
};
|
|
45
|
+
// Get all active tickets (not already canceled or done)
|
|
46
|
+
const allTickets = await this.storage.listTickets(projectId);
|
|
47
|
+
const activeTickets = allTickets.filter(t => t.statusName &&
|
|
48
|
+
!t.statusName.toLowerCase().includes('cancel') &&
|
|
49
|
+
!t.statusName.toLowerCase().includes('done'));
|
|
50
|
+
if (activeTickets.length === 0) {
|
|
51
|
+
if (jsonMode) {
|
|
52
|
+
outputErrorAsJson('NO_ACTIVE_TICKETS', 'No active tickets found to cancel.', createMetadata('ticket cancel', flags));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this.log(styles.info('No active tickets found to cancel.'));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Get board for columns (use the first active ticket's project)
|
|
59
|
+
const board = await this.storage.getProjectBoard(activeTickets[0].projectId);
|
|
60
|
+
if (!board) {
|
|
61
|
+
return handleError('PROJECT_NOT_FOUND', `Project "${activeTickets[0].projectId}" not found. The ticket may belong to an orphaned project.`);
|
|
62
|
+
}
|
|
63
|
+
// Find the "Canceled" column (case-insensitive, match both "Canceled" and "Cancelled")
|
|
64
|
+
const canceledColumn = board.columns.find(col => col.name.toLowerCase().includes('cancel'));
|
|
65
|
+
if (!canceledColumn) {
|
|
66
|
+
return handleError('NO_CANCELED_COLUMN', 'No "Canceled" column found in board configuration.');
|
|
67
|
+
}
|
|
68
|
+
// Bulk mode
|
|
69
|
+
if (flags.bulk) {
|
|
70
|
+
await this.executeBulk(activeTickets, canceledColumn.name, flags);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// Single ticket mode
|
|
74
|
+
let ticketId = args.ticketId;
|
|
75
|
+
if (!ticketId) {
|
|
76
|
+
const selected = await this.selectFromList({
|
|
77
|
+
message: 'Select ticket to cancel:',
|
|
78
|
+
items: activeTickets,
|
|
79
|
+
getName: (t) => `${t.id} - ${t.title} (${t.statusName})`,
|
|
80
|
+
getValue: (t) => t.id,
|
|
81
|
+
getCommand: (t) => `prlt ticket cancel ${t.id}${projectId ? ` -P ${projectId}` : ''} --json`,
|
|
82
|
+
jsonMode: jsonMode ? { flags, commandName: 'ticket cancel' } : null,
|
|
83
|
+
});
|
|
84
|
+
if (!selected) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
ticketId = selected;
|
|
88
|
+
}
|
|
89
|
+
// Get ticket
|
|
90
|
+
const ticket = await this.storage.getTicket(ticketId);
|
|
91
|
+
if (!ticket) {
|
|
92
|
+
return handleError('TICKET_NOT_FOUND', `Ticket "${ticketId}" not found.`);
|
|
93
|
+
}
|
|
94
|
+
// Move to Canceled column through provider (routes to Linear/Jira/PMO as appropriate)
|
|
95
|
+
const provider = await this.resolveTicketProvider(ticketId, ticket.projectId);
|
|
96
|
+
const moveResult = await provider.moveTicket(ticketId, canceledColumn.name);
|
|
97
|
+
if (!moveResult.success) {
|
|
98
|
+
return handleError('CANCEL_FAILED', `Failed to cancel ticket: ${moveResult.error}`);
|
|
99
|
+
}
|
|
100
|
+
// Refresh ticket to get updated status
|
|
101
|
+
const canceled = await this.storage.getTicket(ticketId) || ticket;
|
|
102
|
+
// Auto-export to board.md if configured
|
|
103
|
+
await autoExportToBoard(this.pmoPath, this.storage, (msg) => this.log(styles.muted(msg)));
|
|
104
|
+
// JSON output mode
|
|
105
|
+
if (jsonMode) {
|
|
106
|
+
this.log(JSON.stringify({
|
|
107
|
+
success: true,
|
|
108
|
+
ticket: formatTicket(canceled),
|
|
109
|
+
provider: moveResult.provider,
|
|
110
|
+
}, null, 2));
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
this.log(styles.success(`Canceled ${ticketId}`));
|
|
114
|
+
this.log(styles.muted(` Title: ${ticket.title}`));
|
|
115
|
+
this.log(styles.muted(` Moved to: ${canceled.statusName}`));
|
|
116
|
+
if (moveResult.provider !== 'pmo') {
|
|
117
|
+
this.log(styles.muted(` Provider: ${moveResult.provider}`));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async executeBulk(activeTickets, canceledColumnName, flags) {
|
|
121
|
+
// Only show header in interactive mode
|
|
122
|
+
if (!shouldOutputJson(flags)) {
|
|
123
|
+
this.log(styles.emphasis('Cancel Multiple Tickets\n'));
|
|
124
|
+
}
|
|
125
|
+
// Agent mode config for prompts
|
|
126
|
+
const jsonModeConfig = shouldOutputJson(flags) ? { flags, commandName: 'ticket cancel --bulk' } : null;
|
|
127
|
+
// Select tickets to cancel
|
|
128
|
+
const { selectedTickets } = await this.prompt([{
|
|
129
|
+
type: 'checkbox',
|
|
130
|
+
name: 'selectedTickets',
|
|
131
|
+
message: 'Select tickets to cancel:',
|
|
132
|
+
choices: activeTickets.map(t => ({
|
|
133
|
+
name: `${t.id} - ${t.title} (${t.statusName})`,
|
|
134
|
+
value: t.id,
|
|
135
|
+
command: `prlt ticket cancel ${t.id}${flags.project ? ` -P ${flags.project}` : ''} --json`,
|
|
136
|
+
})),
|
|
137
|
+
}], jsonModeConfig);
|
|
138
|
+
if (selectedTickets.length === 0) {
|
|
139
|
+
this.log(styles.muted('No tickets selected.'));
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
// Confirmation
|
|
143
|
+
if (!flags.force) {
|
|
144
|
+
this.log(styles.warning('\nWill cancel:'));
|
|
145
|
+
for (const ticketId of selectedTickets) {
|
|
146
|
+
const ticket = activeTickets.find(t => t.id === ticketId);
|
|
147
|
+
this.log(styles.primary(` • ${ticketId}: ${ticket?.title}`));
|
|
148
|
+
}
|
|
149
|
+
this.log(styles.primary(` → Move to: ${canceledColumnName}\n`));
|
|
150
|
+
const { confirm } = await this.prompt([{
|
|
151
|
+
type: 'list',
|
|
152
|
+
name: 'confirm',
|
|
153
|
+
message: 'Continue?',
|
|
154
|
+
choices: [
|
|
155
|
+
{ name: 'No, keep tickets', value: 'false', command: '' },
|
|
156
|
+
{ name: 'Yes, cancel tickets', value: 'true', command: `prlt ticket cancel ${selectedTickets.join(' ')}${flags.project ? ` -P ${flags.project}` : ''} --force --json` }
|
|
157
|
+
],
|
|
158
|
+
}], jsonModeConfig);
|
|
159
|
+
if (!confirm) {
|
|
160
|
+
this.log(styles.muted('Operation cancelled.'));
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
this.log('');
|
|
165
|
+
// Cancel each ticket
|
|
166
|
+
let successCount = 0;
|
|
167
|
+
let failCount = 0;
|
|
168
|
+
for (const ticketId of selectedTickets) {
|
|
169
|
+
try {
|
|
170
|
+
const ticket = activeTickets.find(t => t.id === ticketId);
|
|
171
|
+
if (!ticket) {
|
|
172
|
+
throw new Error('Ticket not found in active tickets list');
|
|
173
|
+
}
|
|
174
|
+
// eslint-disable-next-line no-await-in-loop
|
|
175
|
+
const provider = await this.resolveTicketProvider(ticketId, ticket.projectId);
|
|
176
|
+
// eslint-disable-next-line no-await-in-loop
|
|
177
|
+
const result = await provider.moveTicket(ticketId, canceledColumnName);
|
|
178
|
+
if (result.success) {
|
|
179
|
+
this.log(styles.success(`Canceled ${ticketId}`));
|
|
180
|
+
successCount++;
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
this.log(styles.error(`Failed to cancel ${ticketId}: ${result.error}`));
|
|
184
|
+
failCount++;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
this.log(styles.error(`Failed to cancel ${ticketId}: ${error instanceof Error ? error.message : String(error)}`));
|
|
189
|
+
failCount++;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Auto-export to board.md
|
|
193
|
+
await autoExportToBoard(this.pmoPath, this.storage, (msg) => this.log(styles.muted(msg)));
|
|
194
|
+
// Summary
|
|
195
|
+
this.log('');
|
|
196
|
+
if (successCount > 0) {
|
|
197
|
+
this.log(styles.success(`Canceled ${successCount} ticket(s)`));
|
|
198
|
+
}
|
|
199
|
+
if (failCount > 0) {
|
|
200
|
+
this.log(styles.error(`Failed to cancel ${failCount} ticket(s)`));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=cancel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancel.js","sourceRoot":"","sources":["../../../src/commands/ticket/cancel.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,8 +24,13 @@ export default class TicketCreate extends PMOCommand {
|
|
|
24
24
|
execute(): Promise<void>;
|
|
25
25
|
/**
|
|
26
26
|
* Determine whether to route through Linear or PMO based on --source flag
|
|
27
|
-
* and workspace config.
|
|
28
|
-
*
|
|
27
|
+
* and workspace config.
|
|
28
|
+
*
|
|
29
|
+
* Resolution order for auto mode:
|
|
30
|
+
* 1. Explicit default work source (loadDefaultWorkSource) — user preference
|
|
31
|
+
* 2. Single external provider configured — auto-select it
|
|
32
|
+
* 3. Multiple external providers — prompt user to choose
|
|
33
|
+
* 4. No external providers — fall back to PMO
|
|
29
34
|
*/
|
|
30
35
|
private resolveSource;
|
|
31
36
|
/**
|
|
@@ -12,9 +12,9 @@ import { multiLineInput } from '../../lib/multiline-input.js';
|
|
|
12
12
|
import { loadLinearConfig, getLinearApiKey, LinearClient } from '../../lib/linear/index.js';
|
|
13
13
|
import { LinearMapper } from '../../lib/linear/mapper.js';
|
|
14
14
|
import { PMO_PRIORITY_TO_LINEAR, LINEAR_PRIORITY_TO_PMO } from '../../lib/linear/types.js';
|
|
15
|
-
import { getRegisteredWorkSources } from '../../lib/work-source/config.js';
|
|
15
|
+
import { getRegisteredWorkSources, loadDefaultWorkSource } from '../../lib/work-source/config.js';
|
|
16
16
|
export default class TicketCreate extends PMOCommand {
|
|
17
|
-
static description = 'Create a new ticket
|
|
17
|
+
static description = 'Create a new ticket (routes to Linear when configured, or local PMO)';
|
|
18
18
|
static examples = [
|
|
19
19
|
'<%= config.bin %> <%= command.id %>',
|
|
20
20
|
'<%= config.bin %> <%= command.id %> --title "Fix login bug" --column Backlog',
|
|
@@ -360,8 +360,13 @@ export default class TicketCreate extends PMOCommand {
|
|
|
360
360
|
}
|
|
361
361
|
/**
|
|
362
362
|
* Determine whether to route through Linear or PMO based on --source flag
|
|
363
|
-
* and workspace config.
|
|
364
|
-
*
|
|
363
|
+
* and workspace config.
|
|
364
|
+
*
|
|
365
|
+
* Resolution order for auto mode:
|
|
366
|
+
* 1. Explicit default work source (loadDefaultWorkSource) — user preference
|
|
367
|
+
* 2. Single external provider configured — auto-select it
|
|
368
|
+
* 3. Multiple external providers — prompt user to choose
|
|
369
|
+
* 4. No external providers — fall back to PMO
|
|
365
370
|
*/
|
|
366
371
|
async resolveSource(flags, jsonMode) {
|
|
367
372
|
const source = flags.source || 'auto';
|
|
@@ -369,38 +374,49 @@ export default class TicketCreate extends PMOCommand {
|
|
|
369
374
|
return 'pmo';
|
|
370
375
|
if (source === 'linear')
|
|
371
376
|
return 'linear';
|
|
372
|
-
// auto:
|
|
373
|
-
|
|
377
|
+
// auto: resolve from workspace config
|
|
378
|
+
const db = this.storage.getDatabase();
|
|
374
379
|
try {
|
|
375
|
-
|
|
380
|
+
// 1. Respect explicit default work source if configured
|
|
381
|
+
const defaultSource = loadDefaultWorkSource(db);
|
|
382
|
+
if (defaultSource?.provider === 'linear')
|
|
383
|
+
return 'linear';
|
|
384
|
+
if (defaultSource?.provider === 'pmo')
|
|
385
|
+
return 'pmo';
|
|
386
|
+
// 2. Check registered providers (PMO is always implicitly registered)
|
|
376
387
|
const registeredSources = getRegisteredWorkSources(db);
|
|
377
|
-
|
|
388
|
+
const externalProviders = [...new Set(registeredSources.map(s => s.provider).filter(p => p !== 'pmo'))];
|
|
389
|
+
// No external providers — use PMO
|
|
390
|
+
if (externalProviders.length === 0)
|
|
391
|
+
return 'pmo';
|
|
392
|
+
// Single external provider — auto-select it
|
|
393
|
+
if (externalProviders.length === 1) {
|
|
394
|
+
return externalProviders[0] === 'linear' ? 'linear' : 'pmo';
|
|
395
|
+
}
|
|
396
|
+
// Multiple external providers — prompt user to select
|
|
397
|
+
const allProviders = ['pmo', ...externalProviders];
|
|
398
|
+
const choices = allProviders.map(p => ({
|
|
399
|
+
name: p === 'pmo' ? 'PMO (local)' : `${p.charAt(0).toUpperCase() + p.slice(1)}`,
|
|
400
|
+
value: p,
|
|
401
|
+
}));
|
|
402
|
+
const message = 'Multiple ticket providers configured. Where should this ticket be created?';
|
|
403
|
+
if (jsonMode) {
|
|
404
|
+
outputPromptAsJson(buildPromptConfig('list', 'source', message, choices), createMetadata('ticket create', flags));
|
|
405
|
+
return 'pmo';
|
|
406
|
+
}
|
|
407
|
+
const { selectedSource } = await inquirer.prompt([{
|
|
408
|
+
type: 'list',
|
|
409
|
+
name: 'selectedSource',
|
|
410
|
+
message,
|
|
411
|
+
choices,
|
|
412
|
+
}]);
|
|
413
|
+
// Only 'linear' gets the special path; everything else falls through to PMO
|
|
414
|
+
return selectedSource === 'linear' ? 'linear' : 'pmo';
|
|
378
415
|
}
|
|
379
416
|
catch {
|
|
380
417
|
// workspace_settings table may not exist in older/test databases
|
|
381
418
|
return 'pmo';
|
|
382
419
|
}
|
|
383
|
-
// If only PMO is available, use it directly
|
|
384
|
-
if (providerTypes.length <= 1)
|
|
385
|
-
return 'pmo';
|
|
386
|
-
// Multiple providers configured — prompt user to select
|
|
387
|
-
const choices = providerTypes.map(p => ({
|
|
388
|
-
name: p === 'pmo' ? 'PMO (local)' : `${p.charAt(0).toUpperCase() + p.slice(1)}`,
|
|
389
|
-
value: p,
|
|
390
|
-
}));
|
|
391
|
-
const message = 'Multiple ticket providers configured. Where should this ticket be created?';
|
|
392
|
-
if (jsonMode) {
|
|
393
|
-
outputPromptAsJson(buildPromptConfig('list', 'source', message, choices), createMetadata('ticket create', flags));
|
|
394
|
-
return 'pmo';
|
|
395
|
-
}
|
|
396
|
-
const { selectedSource } = await inquirer.prompt([{
|
|
397
|
-
type: 'list',
|
|
398
|
-
name: 'selectedSource',
|
|
399
|
-
message,
|
|
400
|
-
choices,
|
|
401
|
-
}]);
|
|
402
|
-
// Only 'linear' gets the special path; everything else falls through to PMO
|
|
403
|
-
return selectedSource === 'linear' ? 'linear' : 'pmo';
|
|
404
420
|
}
|
|
405
421
|
/**
|
|
406
422
|
* Create an issue in Linear instead of the local PMO database.
|