@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,351 +0,0 @@
|
|
|
1
|
-
import { Flags } from '@oclif/core';
|
|
2
|
-
import inquirer from 'inquirer';
|
|
3
|
-
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
4
|
-
import { styles } from '../../lib/styles.js';
|
|
5
|
-
import { shouldOutputJson, outputPromptAsJson, outputSuccessAsJson, outputErrorAsJson, createMetadata, buildPromptConfig, } from '../../lib/prompt-json.js';
|
|
6
|
-
import { loadDefaultWorkSource, getRegisteredWorkSources, } from '../../lib/work-source/config.js';
|
|
7
|
-
import { LinearClient, isLinearConfigured, loadLinearConfig, getLinearApiKey, } from '../../lib/linear/index.js';
|
|
8
|
-
/**
|
|
9
|
-
* Map Linear state type → PMO StateCategory
|
|
10
|
-
*/
|
|
11
|
-
const LINEAR_TYPE_TO_CATEGORY = {
|
|
12
|
-
triage: 'triage',
|
|
13
|
-
backlog: 'backlog',
|
|
14
|
-
unstarted: 'unstarted',
|
|
15
|
-
started: 'started',
|
|
16
|
-
completed: 'completed',
|
|
17
|
-
canceled: 'canceled',
|
|
18
|
-
};
|
|
19
|
-
/**
|
|
20
|
-
* Suggest a default action for a state based on its category.
|
|
21
|
-
* Returns action ID or null for "no action".
|
|
22
|
-
*/
|
|
23
|
-
function suggestDefaultAction(category, stateName) {
|
|
24
|
-
// Review doesn't need an on_enter action — the implement lifecycle hook
|
|
25
|
-
// moves tickets there when a PR is created
|
|
26
|
-
const lowerName = stateName.toLowerCase();
|
|
27
|
-
if (lowerName === 'review' || lowerName === 'in review') {
|
|
28
|
-
return { actionId: null, label: 'No auto-action (implement moves here on PR)' };
|
|
29
|
-
}
|
|
30
|
-
switch (category) {
|
|
31
|
-
case 'triage':
|
|
32
|
-
return { actionId: null, label: 'No action (manual triage)' };
|
|
33
|
-
case 'backlog':
|
|
34
|
-
return { actionId: 'groom', label: 'groom (Recommended)' };
|
|
35
|
-
case 'unstarted':
|
|
36
|
-
return { actionId: null, label: 'No action' };
|
|
37
|
-
case 'started':
|
|
38
|
-
return { actionId: 'implement', label: 'implement (Recommended)' };
|
|
39
|
-
case 'completed':
|
|
40
|
-
return { actionId: 'merge', label: 'merge (Recommended)' };
|
|
41
|
-
case 'canceled':
|
|
42
|
-
return { actionId: null, label: 'No action' };
|
|
43
|
-
default:
|
|
44
|
-
return { actionId: null, label: 'No action' };
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
export default class WorkflowSetup extends PMOCommand {
|
|
48
|
-
static description = 'Pull board states from provider and wire actions to state transitions';
|
|
49
|
-
static examples = [
|
|
50
|
-
'<%= config.bin %> <%= command.id %>',
|
|
51
|
-
'<%= config.bin %> <%= command.id %> --accept-defaults',
|
|
52
|
-
'<%= config.bin %> <%= command.id %> --machine',
|
|
53
|
-
];
|
|
54
|
-
static flags = {
|
|
55
|
-
...pmoBaseFlags,
|
|
56
|
-
'accept-defaults': Flags.boolean({
|
|
57
|
-
description: 'Accept all default action suggestions without prompting',
|
|
58
|
-
default: false,
|
|
59
|
-
}),
|
|
60
|
-
};
|
|
61
|
-
getPMOOptions() {
|
|
62
|
-
return { promptIfMultiple: false };
|
|
63
|
-
}
|
|
64
|
-
async execute() {
|
|
65
|
-
const { flags } = await this.parse(WorkflowSetup);
|
|
66
|
-
const jsonMode = shouldOutputJson(flags);
|
|
67
|
-
const db = this.storage.getDatabase();
|
|
68
|
-
// 1. Determine connected provider
|
|
69
|
-
const defaultSource = loadDefaultWorkSource(db);
|
|
70
|
-
let provider = defaultSource?.provider ?? null;
|
|
71
|
-
if (!provider || provider === 'pmo') {
|
|
72
|
-
// Try to find any registered external source
|
|
73
|
-
const sources = getRegisteredWorkSources(db);
|
|
74
|
-
const external = sources.filter(s => s.provider !== 'pmo');
|
|
75
|
-
if (external.length === 1) {
|
|
76
|
-
provider = external[0].provider;
|
|
77
|
-
}
|
|
78
|
-
else if (external.length > 1) {
|
|
79
|
-
// In JSON mode, output choices
|
|
80
|
-
if (jsonMode) {
|
|
81
|
-
const choices = external.map(s => ({
|
|
82
|
-
name: `${s.provider}${s.context ? ` (${s.context})` : ''}`,
|
|
83
|
-
value: s.provider,
|
|
84
|
-
}));
|
|
85
|
-
outputPromptAsJson(buildPromptConfig('list', 'provider', 'Select provider to pull states from:', choices), createMetadata('workflow setup', flags));
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
const { selectedProvider } = await inquirer.prompt([{
|
|
89
|
-
type: 'list',
|
|
90
|
-
name: 'selectedProvider',
|
|
91
|
-
message: 'Select provider to pull states from:',
|
|
92
|
-
choices: external.map(s => ({
|
|
93
|
-
name: `${s.provider}${s.context ? ` (${s.context})` : ''}`,
|
|
94
|
-
value: s.provider,
|
|
95
|
-
})),
|
|
96
|
-
}]);
|
|
97
|
-
provider = selectedProvider;
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
const msg = 'No external provider connected. Run "prlt linear connect" (or jira/asana) first.';
|
|
101
|
-
if (jsonMode) {
|
|
102
|
-
outputErrorAsJson('NO_PROVIDER', msg, createMetadata('workflow setup', flags));
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
this.error(msg);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
// 2. Fetch workflow states from provider
|
|
109
|
-
let providerStates = [];
|
|
110
|
-
let providerLabel = '';
|
|
111
|
-
if (provider === 'linear') {
|
|
112
|
-
const linearApiKey = getLinearApiKey(db);
|
|
113
|
-
if (!linearApiKey || !isLinearConfigured(db)) {
|
|
114
|
-
const msg = 'Linear is not configured. Run "prlt linear connect" first.';
|
|
115
|
-
if (jsonMode) {
|
|
116
|
-
outputErrorAsJson('LINEAR_NOT_CONFIGURED', msg, createMetadata('workflow setup', flags));
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
this.error(msg);
|
|
120
|
-
}
|
|
121
|
-
const linearConfig = loadLinearConfig(db);
|
|
122
|
-
const client = new LinearClient(linearApiKey);
|
|
123
|
-
// Get team ID
|
|
124
|
-
let teamId = linearConfig.defaultTeamId;
|
|
125
|
-
if (!teamId) {
|
|
126
|
-
const teams = await client.listTeams();
|
|
127
|
-
if (teams.length === 0) {
|
|
128
|
-
const msg = 'No Linear teams found.';
|
|
129
|
-
if (jsonMode) {
|
|
130
|
-
outputErrorAsJson('NO_TEAMS', msg, createMetadata('workflow setup', flags));
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
this.error(msg);
|
|
134
|
-
}
|
|
135
|
-
teamId = teams[0].id;
|
|
136
|
-
providerLabel = `Linear (${teams[0].name} team)`;
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
providerLabel = `Linear (${linearConfig.defaultTeamKey ?? 'default'} team)`;
|
|
140
|
-
}
|
|
141
|
-
const states = await client.listStates(teamId);
|
|
142
|
-
// Sort by position
|
|
143
|
-
states.sort((a, b) => a.position - b.position);
|
|
144
|
-
providerStates = states.map(s => ({
|
|
145
|
-
name: s.name,
|
|
146
|
-
category: LINEAR_TYPE_TO_CATEGORY[s.type] || 'backlog',
|
|
147
|
-
position: s.position,
|
|
148
|
-
}));
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
// For now, only Linear is fully supported for state fetching.
|
|
152
|
-
// Other providers can be added later.
|
|
153
|
-
const msg = `Provider "${provider}" is not yet supported for workflow setup. Currently supported: linear`;
|
|
154
|
-
if (jsonMode) {
|
|
155
|
-
outputErrorAsJson('UNSUPPORTED_PROVIDER', msg, createMetadata('workflow setup', flags));
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
this.error(msg);
|
|
159
|
-
}
|
|
160
|
-
if (providerStates.length === 0) {
|
|
161
|
-
const msg = 'No workflow states found from provider.';
|
|
162
|
-
if (jsonMode) {
|
|
163
|
-
outputErrorAsJson('NO_STATES', msg, createMetadata('workflow setup', flags));
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
this.error(msg);
|
|
167
|
-
}
|
|
168
|
-
// 3. Get available actions for building choices
|
|
169
|
-
const allActions = await this.storage.listActions();
|
|
170
|
-
// 4. Build default wiring based on category
|
|
171
|
-
const wirings = providerStates.map(state => {
|
|
172
|
-
const suggestion = suggestDefaultAction(state.category, state.name);
|
|
173
|
-
return {
|
|
174
|
-
stateName: state.name,
|
|
175
|
-
category: state.category,
|
|
176
|
-
actionId: suggestion.actionId,
|
|
177
|
-
trigger: suggestion.actionId ? 'manual' : 'manual',
|
|
178
|
-
};
|
|
179
|
-
});
|
|
180
|
-
// 5. Display states and defaults
|
|
181
|
-
if (!jsonMode) {
|
|
182
|
-
this.log('');
|
|
183
|
-
this.log(styles.emphasis(`Connected to: ${providerLabel}`));
|
|
184
|
-
this.log('');
|
|
185
|
-
this.log(styles.emphasis('Your board states:'));
|
|
186
|
-
for (const wiring of wirings) {
|
|
187
|
-
const suggestion = suggestDefaultAction(wiring.category, wiring.stateName);
|
|
188
|
-
const arrow = '\u2190';
|
|
189
|
-
this.log(` ${styles.emphasis(wiring.stateName)} ${styles.muted(`(${wiring.category})`)} ${arrow} ${styles.muted(suggestion.label)}`);
|
|
190
|
-
}
|
|
191
|
-
this.log('');
|
|
192
|
-
}
|
|
193
|
-
// 6. Accept defaults or customize
|
|
194
|
-
if (jsonMode && !flags['accept-defaults']) {
|
|
195
|
-
// In JSON mode without --accept-defaults, output the plan for review
|
|
196
|
-
const plan = wirings.map(w => ({
|
|
197
|
-
state: w.stateName,
|
|
198
|
-
category: w.category,
|
|
199
|
-
action: w.actionId ?? 'none',
|
|
200
|
-
trigger: w.trigger,
|
|
201
|
-
}));
|
|
202
|
-
outputSuccessAsJson({
|
|
203
|
-
provider: provider,
|
|
204
|
-
providerLabel,
|
|
205
|
-
states: plan,
|
|
206
|
-
message: 'Default wiring plan. Re-run with --accept-defaults to apply, or run interactively to customize.',
|
|
207
|
-
}, createMetadata('workflow setup', flags));
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
if (!flags['accept-defaults'] && !jsonMode) {
|
|
211
|
-
const { action } = await inquirer.prompt([{
|
|
212
|
-
type: 'list',
|
|
213
|
-
name: 'action',
|
|
214
|
-
message: 'How would you like to proceed?',
|
|
215
|
-
choices: [
|
|
216
|
-
{ name: 'Accept defaults', value: 'accept' },
|
|
217
|
-
{ name: 'Customize each state', value: 'customize' },
|
|
218
|
-
],
|
|
219
|
-
}]);
|
|
220
|
-
if (action === 'customize') {
|
|
221
|
-
await this.customizeWirings(wirings, allActions);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
// 7. Save wiring to workflow_rules table (re-runnable: delete existing rules first)
|
|
225
|
-
await this.saveWirings(wirings);
|
|
226
|
-
if (jsonMode) {
|
|
227
|
-
const savedRules = wirings
|
|
228
|
-
.filter(w => w.actionId)
|
|
229
|
-
.map(w => ({
|
|
230
|
-
state: w.stateName,
|
|
231
|
-
category: w.category,
|
|
232
|
-
action: w.actionId,
|
|
233
|
-
trigger: w.trigger,
|
|
234
|
-
}));
|
|
235
|
-
outputSuccessAsJson({
|
|
236
|
-
provider: provider,
|
|
237
|
-
providerLabel,
|
|
238
|
-
rulesCreated: savedRules.length,
|
|
239
|
-
rules: savedRules,
|
|
240
|
-
}, createMetadata('workflow setup', flags));
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
|
-
this.log('');
|
|
244
|
-
this.log(styles.success('Workflow rules saved successfully!'));
|
|
245
|
-
this.log('');
|
|
246
|
-
// Show summary
|
|
247
|
-
const activeRules = wirings.filter(w => w.actionId);
|
|
248
|
-
if (activeRules.length > 0) {
|
|
249
|
-
this.log(styles.emphasis('Active rules:'));
|
|
250
|
-
for (const rule of activeRules) {
|
|
251
|
-
this.log(` ${styles.muted(`${rule.stateName} \u2192 ${rule.actionId} (${rule.trigger})`)}`);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
const skippedStates = wirings.filter(w => !w.actionId);
|
|
255
|
-
if (skippedStates.length > 0) {
|
|
256
|
-
this.log('');
|
|
257
|
-
this.log(styles.muted(`States with no action: ${skippedStates.map(s => s.stateName).join(', ')}`));
|
|
258
|
-
}
|
|
259
|
-
this.log('');
|
|
260
|
-
this.log(styles.muted('View rules: prlt workflow rules'));
|
|
261
|
-
this.log(styles.muted('Re-run setup: prlt workflow setup'));
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Let user customize the action for each state.
|
|
265
|
-
*/
|
|
266
|
-
async customizeWirings(wirings, allActions) {
|
|
267
|
-
for (const wiring of wirings) {
|
|
268
|
-
const suggestion = suggestDefaultAction(wiring.category, wiring.stateName);
|
|
269
|
-
const choices = [
|
|
270
|
-
{ name: 'No action', value: '__none__' },
|
|
271
|
-
...allActions.map(a => ({
|
|
272
|
-
name: `${a.id}${a.id === suggestion.actionId ? ' (Recommended)' : ''} — ${a.description || a.name}`,
|
|
273
|
-
value: a.id,
|
|
274
|
-
})),
|
|
275
|
-
];
|
|
276
|
-
// Set default to recommended action or 'No action'
|
|
277
|
-
const defaultValue = suggestion.actionId ?? '__none__';
|
|
278
|
-
// eslint-disable-next-line no-await-in-loop
|
|
279
|
-
const { selectedAction } = await inquirer.prompt([{
|
|
280
|
-
type: 'list',
|
|
281
|
-
name: 'selectedAction',
|
|
282
|
-
message: `Action for "${wiring.stateName}" (${wiring.category}):`,
|
|
283
|
-
choices,
|
|
284
|
-
default: defaultValue,
|
|
285
|
-
}]);
|
|
286
|
-
wiring.actionId = selectedAction === '__none__' ? null : selectedAction;
|
|
287
|
-
// If an action was selected, ask for trigger type
|
|
288
|
-
if (wiring.actionId) {
|
|
289
|
-
// eslint-disable-next-line no-await-in-loop
|
|
290
|
-
const { selectedTrigger } = await inquirer.prompt([{
|
|
291
|
-
type: 'list',
|
|
292
|
-
name: 'selectedTrigger',
|
|
293
|
-
message: `Trigger for "${wiring.stateName}" \u2192 ${wiring.actionId}:`,
|
|
294
|
-
choices: [
|
|
295
|
-
{ name: 'Manual — agent picks up work when assigned', value: 'manual' },
|
|
296
|
-
{ name: 'On enter — fires automatically when ticket enters this state', value: 'on_enter' },
|
|
297
|
-
],
|
|
298
|
-
default: 'manual',
|
|
299
|
-
}]);
|
|
300
|
-
wiring.trigger = selectedTrigger;
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Save wirings to the workflow_rules table.
|
|
306
|
-
* Re-runnable: deletes all existing rules with matching IDs before creating new ones.
|
|
307
|
-
*/
|
|
308
|
-
async saveWirings(wirings) {
|
|
309
|
-
// Delete existing setup-generated rules (those with 'setup-' prefix)
|
|
310
|
-
const existingRules = await this.storage.listWorkflowRules();
|
|
311
|
-
for (const rule of existingRules) {
|
|
312
|
-
if (rule.id.startsWith('setup-')) {
|
|
313
|
-
// eslint-disable-next-line no-await-in-loop
|
|
314
|
-
await this.storage.deleteWorkflowRule(rule.id);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
// Create new rules for states with actions
|
|
318
|
-
for (const wiring of wirings) {
|
|
319
|
-
if (!wiring.actionId)
|
|
320
|
-
continue;
|
|
321
|
-
const ruleId = `setup-${wiring.stateName.toLowerCase().replace(/\s+/g, '-')}-${wiring.actionId}`;
|
|
322
|
-
try {
|
|
323
|
-
// eslint-disable-next-line no-await-in-loop
|
|
324
|
-
await this.storage.createWorkflowRule({
|
|
325
|
-
id: ruleId,
|
|
326
|
-
fromState: undefined, // any source state
|
|
327
|
-
toState: wiring.stateName,
|
|
328
|
-
actionId: wiring.actionId,
|
|
329
|
-
trigger: wiring.trigger,
|
|
330
|
-
enabled: true,
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
catch (error) {
|
|
334
|
-
// If a rule with this ID already exists (e.g. from a re-run race), update it
|
|
335
|
-
if (error instanceof Error && error.message.includes('already exists')) {
|
|
336
|
-
// eslint-disable-next-line no-await-in-loop
|
|
337
|
-
await this.storage.updateWorkflowRule(ruleId, {
|
|
338
|
-
toState: wiring.stateName,
|
|
339
|
-
actionId: wiring.actionId,
|
|
340
|
-
trigger: wiring.trigger,
|
|
341
|
-
enabled: true,
|
|
342
|
-
});
|
|
343
|
-
}
|
|
344
|
-
else {
|
|
345
|
-
throw error;
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/workflow/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import WorkflowView from './view.js';
|
|
2
|
-
export default class WorkflowShow extends WorkflowView {
|
|
3
|
-
static description: string;
|
|
4
|
-
static hidden: boolean;
|
|
5
|
-
static args: {
|
|
6
|
-
id: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
7
|
-
};
|
|
8
|
-
static flags: {
|
|
9
|
-
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
-
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
-
};
|
|
13
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Args } from '@oclif/core';
|
|
2
|
-
import { pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
3
|
-
import WorkflowView from './view.js';
|
|
4
|
-
export default class WorkflowShow extends WorkflowView {
|
|
5
|
-
static description = 'View details of a workflow (alias for workflow view)';
|
|
6
|
-
static hidden = true;
|
|
7
|
-
static args = {
|
|
8
|
-
id: Args.string({
|
|
9
|
-
description: 'Workflow ID - prompts with dropdown if not provided',
|
|
10
|
-
required: false,
|
|
11
|
-
}),
|
|
12
|
-
};
|
|
13
|
-
static flags = {
|
|
14
|
-
...pmoBaseFlags,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=show.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/workflow/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,YAAY,MAAM,WAAW,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,YAAY;IACpD,MAAM,CAAC,WAAW,GAAG,sDAAsD,CAAC;IAC5E,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IAErB,MAAM,CAAC,IAAI,GAAG;QACZ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACd,WAAW,EAAE,qDAAqD;YAClE,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,YAAY;KAChB,CAAC"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { Args, Flags } from '@oclif/core';
|
|
2
|
-
import { 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
|
-
export default class WorkflowSwitch extends PMOCommand {
|
|
6
|
-
static description = 'Switch a project to use a different workflow';
|
|
7
|
-
static examples = [
|
|
8
|
-
'<%= config.bin %> <%= command.id %> kanban',
|
|
9
|
-
'<%= config.bin %> <%= command.id %> linear --project my-project',
|
|
10
|
-
'<%= config.bin %> <%= command.id %> --force # Skip confirmation',
|
|
11
|
-
'<%= config.bin %> <%= command.id %> --machine # JSON output for AI agents',
|
|
12
|
-
];
|
|
13
|
-
static args = {
|
|
14
|
-
workflow: Args.string({
|
|
15
|
-
description: 'Workflow ID to switch to',
|
|
16
|
-
required: false,
|
|
17
|
-
}),
|
|
18
|
-
};
|
|
19
|
-
static flags = {
|
|
20
|
-
...pmoBaseFlags,
|
|
21
|
-
force: Flags.boolean({
|
|
22
|
-
char: 'f',
|
|
23
|
-
description: 'Skip confirmation prompt',
|
|
24
|
-
default: false,
|
|
25
|
-
}),
|
|
26
|
-
};
|
|
27
|
-
async execute() {
|
|
28
|
-
const { args, flags } = await this.parse(WorkflowSwitch);
|
|
29
|
-
// Check if JSON output mode is active
|
|
30
|
-
const jsonMode = shouldOutputJson(flags);
|
|
31
|
-
// Helper to handle errors in JSON mode
|
|
32
|
-
const handleError = (code, message) => {
|
|
33
|
-
if (jsonMode) {
|
|
34
|
-
outputErrorAsJson(code, message, createMetadata('workflow switch', flags));
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
this.error(message);
|
|
38
|
-
};
|
|
39
|
-
// Agent mode config for prompts
|
|
40
|
-
const agentConfig = jsonMode ? { flags, commandName: 'workflow switch' } : null;
|
|
41
|
-
const projectId = await this.requireProject({
|
|
42
|
-
jsonMode: {
|
|
43
|
-
flags,
|
|
44
|
-
commandName: 'workflow switch',
|
|
45
|
-
baseCommand: 'prlt workflow switch',
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
|
-
// Get workflow - prompt for selection if not provided
|
|
49
|
-
let workflowId = args.workflow;
|
|
50
|
-
if (!workflowId) {
|
|
51
|
-
const workflows = await this.storage.listWorkflows();
|
|
52
|
-
if (workflows.length === 0) {
|
|
53
|
-
return handleError('NO_WORKFLOWS', 'No workflows found. Create one with: prlt workflow create "Workflow Name"');
|
|
54
|
-
}
|
|
55
|
-
// Use selectFromList for workflow selection (handles JSON mode automatically)
|
|
56
|
-
// Include project flag if specified to maintain stateless navigation
|
|
57
|
-
const projectFlag = flags.project ? ` -P ${flags.project}` : '';
|
|
58
|
-
const selected = await this.selectFromList({
|
|
59
|
-
message: 'Select a workflow:',
|
|
60
|
-
items: workflows,
|
|
61
|
-
getName: (w) => `${w.name}${w.description ? ` - ${w.description}` : ''}`,
|
|
62
|
-
getValue: (w) => w.id,
|
|
63
|
-
getCommand: (w) => `prlt workflow switch ${w.id}${projectFlag} --json`,
|
|
64
|
-
jsonMode: agentConfig,
|
|
65
|
-
});
|
|
66
|
-
if (!selected) {
|
|
67
|
-
return; // Cancelled or JSON mode (already exited)
|
|
68
|
-
}
|
|
69
|
-
workflowId = selected;
|
|
70
|
-
}
|
|
71
|
-
// Verify workflow exists
|
|
72
|
-
const workflow = await this.storage.getWorkflow(workflowId);
|
|
73
|
-
if (!workflow) {
|
|
74
|
-
return handleError('WORKFLOW_NOT_FOUND', `Workflow not found: ${workflowId}. Run 'prlt workflow list' to see available workflows.`);
|
|
75
|
-
}
|
|
76
|
-
// Get current project info
|
|
77
|
-
const project = await this.storage.getProject(projectId);
|
|
78
|
-
const currentWorkflowId = project?.workflowId;
|
|
79
|
-
// Check if already using this workflow
|
|
80
|
-
if (currentWorkflowId === workflowId) {
|
|
81
|
-
this.log(styles.muted(`Project is already using workflow "${workflow.name}".`));
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
// Get tickets that will be affected
|
|
85
|
-
const tickets = await this.storage.listTickets(projectId);
|
|
86
|
-
if (tickets.length > 0 && !flags.force) {
|
|
87
|
-
const projectName = await this.getProjectName(projectId);
|
|
88
|
-
this.log(styles.warning(`\nProject "${projectName}" has ${tickets.length} ticket(s).`));
|
|
89
|
-
this.log(styles.warning('Tickets will be mapped to matching status categories in the new workflow.'));
|
|
90
|
-
this.log('');
|
|
91
|
-
// Use prompt for confirmation (handles JSON mode automatically)
|
|
92
|
-
// Include project flag if specified to maintain stateless navigation
|
|
93
|
-
const confirmProjectFlag = flags.project ? ` -P ${flags.project}` : '';
|
|
94
|
-
const { confirm } = await this.prompt([{
|
|
95
|
-
type: 'list',
|
|
96
|
-
name: 'confirm',
|
|
97
|
-
message: `Switch to workflow "${workflow.name}"?`,
|
|
98
|
-
choices: [
|
|
99
|
-
{ name: 'No', value: false, command: '' },
|
|
100
|
-
{ name: 'Yes, switch workflow', value: true, command: `prlt workflow switch ${workflowId}${confirmProjectFlag} --force --json` },
|
|
101
|
-
],
|
|
102
|
-
}], agentConfig);
|
|
103
|
-
if (!confirm) {
|
|
104
|
-
this.log(styles.muted('Cancelled'));
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
// Get new workflow statuses
|
|
109
|
-
const newStatuses = await this.storage.listStatuses(workflowId);
|
|
110
|
-
// Build category -> status mapping for the new workflow
|
|
111
|
-
const categoryToStatus = {};
|
|
112
|
-
for (const status of newStatuses) {
|
|
113
|
-
if (!categoryToStatus[status.category]) {
|
|
114
|
-
categoryToStatus[status.category] = { id: status.id, name: status.name };
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
// Find default status
|
|
118
|
-
const defaultStatus = newStatuses.find(s => s.isDefault) || newStatuses[0];
|
|
119
|
-
// Update project workflow_id
|
|
120
|
-
await this.storage.updateProject(projectId, { workflowId: workflowId });
|
|
121
|
-
// Migrate tickets to new statuses - sequential for data integrity
|
|
122
|
-
let migratedCount = 0;
|
|
123
|
-
for (const ticket of tickets) {
|
|
124
|
-
// Get old status category
|
|
125
|
-
const oldCategory = ticket.statusCategory || 'backlog';
|
|
126
|
-
// Find matching status in new workflow, or use default
|
|
127
|
-
const newStatus = categoryToStatus[oldCategory] ||
|
|
128
|
-
(defaultStatus ? { id: defaultStatus.id, name: defaultStatus.name } : null);
|
|
129
|
-
if (newStatus) {
|
|
130
|
-
// eslint-disable-next-line no-await-in-loop
|
|
131
|
-
await this.storage.moveTicket(projectId, ticket.id, newStatus.name);
|
|
132
|
-
migratedCount++;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
const projectName = await this.getProjectName(projectId);
|
|
136
|
-
this.log(styles.success(`\nSwitched project "${projectName}" to workflow "${styles.emphasis(workflow.name)}"`));
|
|
137
|
-
if (migratedCount > 0) {
|
|
138
|
-
this.log(styles.muted(`Migrated ${migratedCount} ticket(s) to matching statuses.`));
|
|
139
|
-
}
|
|
140
|
-
this.log('');
|
|
141
|
-
this.log(styles.muted(`View statuses: prlt status list`));
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=switch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/commands/workflow/switch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
-
export default class WorkflowView extends PMOCommand {
|
|
3
|
-
static description: string;
|
|
4
|
-
static examples: string[];
|
|
5
|
-
static args: {
|
|
6
|
-
id: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
7
|
-
};
|
|
8
|
-
static flags: {
|
|
9
|
-
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
-
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
-
};
|
|
13
|
-
protected getPMOOptions(): {
|
|
14
|
-
promptIfMultiple: boolean;
|
|
15
|
-
};
|
|
16
|
-
execute(): Promise<void>;
|
|
17
|
-
}
|