@proletariat/cli 0.3.17 → 0.3.19
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/LICENSE +21 -0
- package/bin/dev.js +0 -0
- package/dist/commands/action/create.d.ts +1 -0
- package/dist/commands/action/create.js +74 -38
- package/dist/commands/action/delete.d.ts +1 -0
- package/dist/commands/action/delete.js +23 -24
- package/dist/commands/action/index.d.ts +1 -0
- package/dist/commands/action/index.js +5 -10
- package/dist/commands/action/list.d.ts +1 -0
- package/dist/commands/action/list.js +3 -1
- package/dist/commands/action/run.d.ts +1 -0
- package/dist/commands/action/run.js +44 -32
- package/dist/commands/action/show.d.ts +2 -0
- package/dist/commands/action/update.d.ts +1 -0
- package/dist/commands/action/update.js +80 -39
- package/dist/commands/agent/auth.d.ts +2 -0
- package/dist/commands/agent/auth.js +44 -3
- package/dist/commands/agent/discover.d.ts +2 -0
- package/dist/commands/agent/discover.js +35 -3
- package/dist/commands/agent/index.d.ts +1 -0
- package/dist/commands/agent/index.js +25 -45
- package/dist/commands/agent/list.d.ts +8 -3
- package/dist/commands/agent/list.js +16 -29
- package/dist/commands/agent/login.d.ts +1 -0
- package/dist/commands/agent/login.js +14 -32
- package/dist/commands/agent/rebuild.d.ts +1 -0
- package/dist/commands/agent/rebuild.js +2 -2
- package/dist/commands/agent/remove.d.ts +17 -0
- package/dist/commands/agent/remove.js +144 -0
- package/dist/commands/agent/restart.d.ts +1 -0
- package/dist/commands/agent/restart.js +2 -2
- package/dist/commands/agent/shell.d.ts +1 -0
- package/dist/commands/agent/shell.js +63 -76
- package/dist/commands/agent/staff/add.d.ts +1 -0
- package/dist/commands/agent/staff/add.js +7 -1
- package/dist/commands/agent/staff/index.d.ts +1 -0
- package/dist/commands/agent/staff/index.js +5 -4
- package/dist/commands/agent/staff/remove.d.ts +1 -0
- package/dist/commands/agent/status.d.ts +1 -0
- package/dist/commands/agent/status.js +11 -23
- package/dist/commands/agent/temp/cleanup.d.ts +1 -0
- package/dist/commands/agent/temp/index.d.ts +1 -0
- package/dist/commands/agent/temp/index.js +4 -3
- package/dist/commands/agent/themes/index.d.ts +1 -0
- package/dist/commands/agent/themes/index.js +9 -3
- package/dist/commands/agent/themes/set.d.ts +1 -0
- package/dist/commands/agent/themes/set.js +7 -1
- package/dist/commands/agent/visit.d.ts +1 -0
- package/dist/commands/agent/visit.js +11 -23
- package/dist/commands/autocomplete/setup.d.ts +11 -0
- package/dist/commands/autocomplete/setup.js +113 -8
- package/dist/commands/board/index.d.ts +4 -0
- package/dist/commands/board/index.js +32 -30
- package/dist/commands/board/watch.d.ts +2 -0
- package/dist/commands/branch/create.d.ts +1 -0
- package/dist/commands/branch/create.js +33 -41
- package/dist/commands/branch/index.d.ts +1 -0
- package/dist/commands/branch/list.d.ts +2 -0
- package/dist/commands/branch/validate.d.ts +2 -0
- package/dist/commands/branch/where.d.ts +1 -0
- package/dist/commands/claude.d.ts +6 -0
- package/dist/commands/claude.js +166 -116
- package/dist/commands/commit.d.ts +6 -0
- package/dist/commands/commit.js +68 -73
- package/dist/commands/config/index.d.ts +13 -0
- package/dist/commands/config/index.js +142 -98
- package/dist/commands/docker/clean.d.ts +2 -1
- package/dist/commands/docker/clean.js +20 -29
- package/dist/commands/docker/index.d.ts +1 -0
- package/dist/commands/docker/index.js +37 -41
- package/dist/commands/docker/prune.d.ts +2 -1
- package/dist/commands/docker/prune.js +20 -27
- package/dist/commands/docker/restart.d.ts +2 -1
- package/dist/commands/docker/restart.js +20 -29
- package/dist/commands/docker/stop.d.ts +2 -1
- package/dist/commands/docker/stop.js +20 -29
- package/dist/commands/epic/activate.d.ts +1 -0
- package/dist/commands/epic/archive.d.ts +1 -0
- package/dist/commands/epic/create.d.ts +1 -0
- package/dist/commands/epic/index.d.ts +1 -0
- package/dist/commands/epic/link/block.d.ts +1 -0
- package/dist/commands/epic/link/duplicates.d.ts +1 -0
- package/dist/commands/epic/link/index.d.ts +1 -0
- package/dist/commands/epic/link/relates.d.ts +1 -0
- package/dist/commands/epic/link/remove.d.ts +1 -0
- package/dist/commands/epic/list.d.ts +2 -0
- package/dist/commands/epic/move.d.ts +1 -0
- package/dist/commands/epic/progress.d.ts +1 -0
- package/dist/commands/epic/project.d.ts +1 -0
- package/dist/commands/epic/reorder.d.ts +1 -0
- package/dist/commands/epic/spec.d.ts +1 -0
- package/dist/commands/epic/ticket.d.ts +1 -0
- package/dist/commands/epic/view.d.ts +1 -0
- package/dist/commands/execution/index.d.ts +1 -0
- package/dist/commands/execution/index.js +9 -25
- package/dist/commands/execution/list.d.ts +2 -0
- package/dist/commands/execution/logs.d.ts +1 -0
- package/dist/commands/execution/logs.js +6 -16
- package/dist/commands/execution/stop.d.ts +1 -0
- package/dist/commands/execution/stop.js +4 -15
- package/dist/commands/gh/index.d.ts +1 -0
- package/dist/commands/gh/index.js +27 -27
- package/dist/commands/gh/login.d.ts +4 -0
- package/dist/commands/gh/login.js +31 -0
- package/dist/commands/gh/status.d.ts +4 -0
- package/dist/commands/gh/status.js +27 -4
- package/dist/commands/gh/token.d.ts +4 -0
- package/dist/commands/gh/token.js +49 -5
- package/dist/commands/phase/create.d.ts +1 -1
- package/dist/commands/phase/create.js +116 -74
- package/dist/commands/phase/delete.d.ts +1 -0
- package/dist/commands/phase/delete.js +23 -22
- package/dist/commands/phase/list.d.ts +1 -0
- package/dist/commands/phase/list.js +3 -5
- package/dist/commands/phase/move.d.ts +1 -0
- package/dist/commands/phase/move.js +39 -39
- package/dist/commands/phase/template/apply.d.ts +1 -0
- package/dist/commands/phase/template/create.d.ts +2 -0
- package/dist/commands/phase/template/delete.d.ts +1 -0
- package/dist/commands/phase/template/index.d.ts +1 -0
- package/dist/commands/phase/template/list.d.ts +1 -0
- package/dist/commands/phase/template/update.d.ts +2 -0
- package/dist/commands/phase/update.d.ts +1 -1
- package/dist/commands/phase/update.js +89 -55
- package/dist/commands/pmo/init.d.ts +2 -0
- package/dist/commands/pmo/init.js +84 -22
- package/dist/commands/pr/create.d.ts +12 -3
- package/dist/commands/pr/create.js +130 -147
- package/dist/commands/pr/index.d.ts +6 -3
- package/dist/commands/pr/index.js +41 -39
- package/dist/commands/pr/link.d.ts +7 -3
- package/dist/commands/pr/link.js +126 -150
- package/dist/commands/pr/status.d.ts +6 -3
- package/dist/commands/pr/status.js +101 -126
- package/dist/commands/project/archive.d.ts +1 -0
- package/dist/commands/project/archive.js +15 -20
- package/dist/commands/project/create.d.ts +1 -0
- package/dist/commands/project/create.js +13 -5
- package/dist/commands/project/delete.d.ts +1 -0
- package/dist/commands/project/delete.js +14 -28
- package/dist/commands/project/index.d.ts +1 -0
- package/dist/commands/project/index.js +0 -5
- package/dist/commands/project/list.d.ts +2 -0
- package/dist/commands/project/list.js +21 -3
- package/dist/commands/project/spec.d.ts +1 -0
- package/dist/commands/project/spec.js +17 -23
- package/dist/commands/project/unarchive.d.ts +2 -0
- package/dist/commands/project/unarchive.js +21 -2
- package/dist/commands/project/view.d.ts +1 -0
- package/dist/commands/project/view.js +34 -22
- package/dist/commands/repo/add.d.ts +2 -0
- package/dist/commands/repo/add.js +44 -1
- package/dist/commands/repo/index.d.ts +1 -0
- package/dist/commands/repo/index.js +20 -38
- package/dist/commands/repo/list.d.ts +2 -0
- package/dist/commands/repo/remove.d.ts +1 -0
- package/dist/commands/repo/remove.js +45 -63
- package/dist/commands/repo/view.d.ts +2 -0
- package/dist/commands/repo/view.js +30 -5
- package/dist/commands/roadmap/add-project.d.ts +1 -0
- package/dist/commands/roadmap/create.d.ts +1 -0
- package/dist/commands/roadmap/delete.d.ts +1 -0
- package/dist/commands/roadmap/generate.d.ts +1 -0
- package/dist/commands/roadmap/index.d.ts +1 -0
- package/dist/commands/roadmap/list.d.ts +2 -0
- package/dist/commands/roadmap/remove-project.d.ts +1 -0
- package/dist/commands/roadmap/reorder.d.ts +1 -0
- package/dist/commands/roadmap/update.d.ts +1 -0
- package/dist/commands/roadmap/view.d.ts +1 -0
- package/dist/commands/session/attach.d.ts +1 -0
- package/dist/commands/session/index.d.ts +1 -0
- package/dist/commands/session/index.js +8 -25
- package/dist/commands/session/list.d.ts +2 -0
- package/dist/commands/spec/create.d.ts +1 -1
- package/dist/commands/spec/create.js +64 -65
- package/dist/commands/spec/index.d.ts +1 -0
- package/dist/commands/spec/index.js +36 -22
- package/dist/commands/spec/link/depends.d.ts +1 -0
- package/dist/commands/spec/link/depends.js +6 -6
- package/dist/commands/spec/link/duplicates.d.ts +1 -0
- package/dist/commands/spec/link/duplicates.js +6 -6
- package/dist/commands/spec/link/index.d.ts +2 -1
- package/dist/commands/spec/link/index.js +0 -4
- package/dist/commands/spec/link/relates.d.ts +1 -0
- package/dist/commands/spec/link/relates.js +6 -6
- package/dist/commands/spec/link/remove.d.ts +2 -1
- package/dist/commands/spec/link/remove.js +6 -6
- package/dist/commands/spec/list.d.ts +2 -0
- package/dist/commands/spec/list.js +25 -0
- package/dist/commands/spec/plan.d.ts +2 -1
- package/dist/commands/spec/plan.js +19 -26
- package/dist/commands/spec/ticket.d.ts +2 -1
- package/dist/commands/spec/ticket.js +48 -34
- package/dist/commands/spec/view.d.ts +2 -1
- package/dist/commands/spec/view.js +25 -16
- package/dist/commands/status/create.d.ts +1 -1
- package/dist/commands/status/create.js +80 -64
- package/dist/commands/status/delete.d.ts +2 -1
- package/dist/commands/status/delete.js +26 -22
- package/dist/commands/status/index.d.ts +1 -0
- package/dist/commands/status/index.js +26 -19
- package/dist/commands/status/list.d.ts +1 -0
- package/dist/commands/status/list.js +12 -7
- package/dist/commands/status/move.d.ts +2 -1
- package/dist/commands/status/move.js +62 -61
- package/dist/commands/status/update.d.ts +2 -2
- package/dist/commands/status/update.js +110 -77
- package/dist/commands/template/delete.d.ts +1 -0
- package/dist/commands/template/delete.js +47 -48
- package/dist/commands/template/index.d.ts +1 -0
- package/dist/commands/template/index.js +26 -33
- package/dist/commands/template/list.d.ts +1 -0
- package/dist/commands/template/phase/create.d.ts +1 -0
- package/dist/commands/template/phase/create.js +6 -0
- package/dist/commands/template/phase/index.d.ts +1 -0
- package/dist/commands/template/phase/index.js +27 -26
- package/dist/commands/template/phase/update.d.ts +1 -0
- package/dist/commands/template/phase/update.js +6 -0
- package/dist/commands/template/ticket/index.d.ts +1 -0
- package/dist/commands/template/ticket/index.js +27 -26
- package/dist/commands/template/ticket/save.d.ts +1 -0
- package/dist/commands/template/ticket/save.js +6 -0
- package/dist/commands/terminal/title.d.ts +26 -0
- package/dist/commands/terminal/title.js +37 -3
- package/dist/commands/ticket/bulk.d.ts +1 -0
- package/dist/commands/ticket/complete.d.ts +1 -0
- package/dist/commands/ticket/complete.js +18 -14
- package/dist/commands/ticket/create.d.ts +1 -0
- package/dist/commands/ticket/create.js +45 -41
- package/dist/commands/ticket/delete.d.ts +1 -0
- package/dist/commands/ticket/delete.js +1 -1
- package/dist/commands/ticket/edit.d.ts +1 -0
- package/dist/commands/ticket/edit.js +1 -1
- package/dist/commands/ticket/epic.d.ts +1 -0
- package/dist/commands/ticket/epic.js +2 -2
- package/dist/commands/ticket/index.d.ts +1 -0
- package/dist/commands/ticket/link/block.d.ts +1 -0
- package/dist/commands/ticket/link/block.js +1 -1
- package/dist/commands/ticket/link/duplicates.d.ts +1 -0
- package/dist/commands/ticket/link/duplicates.js +1 -1
- package/dist/commands/ticket/link/index.d.ts +1 -0
- package/dist/commands/ticket/link/index.js +9 -8
- package/dist/commands/ticket/link/relates.d.ts +1 -0
- package/dist/commands/ticket/link/relates.js +1 -1
- package/dist/commands/ticket/link/remove.d.ts +1 -0
- package/dist/commands/ticket/link/remove.js +1 -1
- package/dist/commands/ticket/list.d.ts +2 -0
- package/dist/commands/ticket/move.d.ts +1 -0
- package/dist/commands/ticket/move.js +27 -19
- package/dist/commands/ticket/project.d.ts +1 -0
- package/dist/commands/ticket/project.js +3 -3
- package/dist/commands/ticket/reassign.d.ts +1 -0
- package/dist/commands/ticket/reassign.js +1 -1
- package/dist/commands/ticket/spec.d.ts +1 -0
- package/dist/commands/ticket/spec.js +3 -3
- package/dist/commands/ticket/status.d.ts +1 -0
- package/dist/commands/ticket/status.js +1 -1
- package/dist/commands/ticket/template/apply.d.ts +1 -0
- package/dist/commands/ticket/template/create.d.ts +2 -0
- package/dist/commands/ticket/template/delete.d.ts +1 -0
- package/dist/commands/ticket/template/index.d.ts +1 -0
- package/dist/commands/ticket/template/list.d.ts +1 -0
- package/dist/commands/ticket/template/save.d.ts +2 -0
- package/dist/commands/ticket/update.d.ts +1 -0
- package/dist/commands/ticket/update.js +1 -1
- package/dist/commands/ticket/view.d.ts +1 -0
- package/dist/commands/ticket/view.js +1 -1
- package/dist/commands/work/complete.d.ts +1 -0
- package/dist/commands/work/index.d.ts +1 -0
- package/dist/commands/work/ready.d.ts +1 -0
- package/dist/commands/work/revise.d.ts +1 -0
- package/dist/commands/work/spawn-all.d.ts +2 -0
- package/dist/commands/work/spawn-all.js +11 -4
- package/dist/commands/work/spawn.d.ts +1 -0
- package/dist/commands/work/spawn.js +261 -166
- package/dist/commands/work/start.d.ts +1 -0
- package/dist/commands/work/start.js +270 -189
- package/dist/commands/work/watch.d.ts +1 -0
- package/dist/commands/work/watch.js +63 -58
- package/dist/commands/workflow/create.d.ts +1 -0
- package/dist/commands/workflow/create.js +2 -4
- package/dist/commands/workflow/delete.d.ts +1 -0
- package/dist/commands/workflow/delete.js +21 -33
- package/dist/commands/workflow/index.d.ts +1 -0
- package/dist/commands/workflow/list.d.ts +1 -0
- package/dist/commands/workflow/list.js +3 -6
- package/dist/commands/workflow/switch.d.ts +2 -0
- package/dist/commands/workflow/switch.js +46 -21
- package/dist/commands/workflow/view.d.ts +1 -0
- package/dist/commands/workflow/view.js +18 -27
- package/dist/commands/workspace/remove.d.ts +2 -2
- package/dist/commands/workspace/remove.js +16 -21
- package/dist/commands/workspace/use.d.ts +2 -2
- package/dist/commands/workspace/use.js +12 -18
- package/dist/lib/agents/commands.d.ts +1 -1
- package/dist/lib/agents/commands.js +4 -4
- package/dist/lib/database/drizzle-schema.d.ts +5009 -0
- package/dist/lib/database/drizzle-schema.js +699 -0
- package/dist/lib/database/drizzle.d.ts +29 -0
- package/dist/lib/database/drizzle.js +37 -0
- package/dist/lib/database/index.d.ts +1 -0
- package/dist/lib/database/index.js +1 -1
- package/dist/lib/execution/config.d.ts +6 -0
- package/dist/lib/execution/config.js +31 -13
- package/dist/lib/execution/devcontainer.js +12 -6
- package/dist/lib/execution/runners.js +13 -7
- package/dist/lib/execution/spawner.js +19 -0
- package/dist/lib/flags/index.d.ts +4 -0
- package/dist/lib/flags/index.js +4 -0
- package/dist/lib/flags/resolver.d.ts +224 -0
- package/dist/lib/flags/resolver.js +313 -0
- package/dist/lib/pmo/base-command.d.ts +53 -3
- package/dist/lib/pmo/base-command.js +92 -13
- package/dist/lib/pmo/find-pmo.d.ts +1 -1
- package/dist/lib/pmo/find-pmo.js +4 -4
- package/dist/lib/pmo/index.d.ts +1 -1
- package/dist/lib/pmo/index.js +1 -1
- package/dist/lib/pmo/storage/helpers.js +2 -1
- package/dist/lib/pmo/storage/index.d.ts +9 -0
- package/dist/lib/pmo/storage/index.js +14 -0
- package/dist/lib/pmo/storage/projects.d.ts +28 -13
- package/dist/lib/pmo/storage/projects.js +110 -34
- package/dist/lib/pmo/storage/roadmaps.d.ts +2 -0
- package/dist/lib/pmo/storage/roadmaps.js +182 -111
- package/dist/lib/pmo/storage/specs.js +13 -16
- package/dist/lib/pmo/storage/subtasks.js +17 -2
- package/dist/lib/pmo/storage/tickets.d.ts +12 -2
- package/dist/lib/pmo/storage/tickets.js +63 -5
- package/dist/lib/pmo/storage/types.d.ts +7 -3
- package/dist/lib/pmo/storage/views.d.ts +12 -1
- package/dist/lib/pmo/storage/views.js +61 -6
- package/dist/lib/prompt-command.d.ts +90 -0
- package/dist/lib/prompt-command.js +102 -0
- package/dist/lib/prompt-json.d.ts +34 -4
- package/dist/lib/prompt-json.js +35 -3
- package/dist/lib/repos/index.js +15 -15
- package/dist/lib/workspace.d.ts +4 -3
- package/dist/lib/workspace.js +3 -3
- package/oclif.manifest.json +4193 -2580
- package/package.json +9 -6
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Flags, Args } from '@oclif/core';
|
|
2
|
-
import inquirer from 'inquirer';
|
|
3
2
|
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
4
3
|
import { styles } from '../../lib/styles.js';
|
|
5
4
|
import { STATE_CATEGORY_ORDER } from '../../lib/pmo/types.js';
|
|
6
|
-
import { shouldOutputJson
|
|
5
|
+
import { shouldOutputJson } from '../../lib/prompt-json.js';
|
|
6
|
+
import { FlagResolver } from '../../lib/flags/index.js';
|
|
7
7
|
export default class PhaseCreate extends PMOCommand {
|
|
8
8
|
static description = 'Create a new project lifecycle phase';
|
|
9
9
|
static examples = [
|
|
@@ -40,84 +40,126 @@ export default class PhaseCreate extends PMOCommand {
|
|
|
40
40
|
description: 'Interactive mode',
|
|
41
41
|
default: false,
|
|
42
42
|
}),
|
|
43
|
-
json: Flags.boolean({
|
|
44
|
-
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
45
|
-
default: false,
|
|
46
|
-
}),
|
|
47
43
|
};
|
|
48
44
|
getPMOOptions() {
|
|
49
45
|
return { promptIfMultiple: false };
|
|
50
46
|
}
|
|
51
47
|
async execute() {
|
|
52
48
|
const { args, flags } = await this.parse(PhaseCreate);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
backlog: 'Backlog - Not yet scheduled for work',
|
|
64
|
-
unstarted: 'Unstarted - Scheduled but work hasn\'t begun',
|
|
65
|
-
started: 'Started - Work is actively in progress',
|
|
66
|
-
completed: 'Completed - Work finished successfully',
|
|
67
|
-
canceled: 'Canceled - Work won\'t be done',
|
|
68
|
-
};
|
|
69
|
-
const categoryChoices = STATE_CATEGORY_ORDER.map(cat => ({ name: categoryLabels[cat], value: cat }));
|
|
70
|
-
// Define fields once - single source of truth for both JSON and interactive modes
|
|
71
|
-
const fields = [
|
|
72
|
-
{ type: 'input', name: 'name', message: 'Phase name:', default: args.name },
|
|
73
|
-
{ type: 'list', name: 'category', message: 'Category:', choices: categoryChoices, default: flags.category },
|
|
74
|
-
{ type: 'input', name: 'color', message: 'Color (hex, optional):', default: flags.color },
|
|
75
|
-
{ type: 'input', name: 'description', message: 'Description (optional):', default: flags.description },
|
|
76
|
-
{ type: 'confirm', name: 'isDefault', message: 'Set as default for new projects?', default: flags.default || false },
|
|
77
|
-
];
|
|
78
|
-
if (jsonMode) {
|
|
79
|
-
outputPromptAsJson(buildFormPromptConfig(fields), createMetadata('phase create', flags));
|
|
80
|
-
}
|
|
81
|
-
phaseData = await this.promptPhaseData(fields);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
phaseData = {
|
|
85
|
-
name: args.name,
|
|
86
|
-
category: flags.category,
|
|
87
|
-
color: flags.color,
|
|
88
|
-
description: flags.description,
|
|
89
|
-
isDefault: flags.default,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
const phase = await this.storage.createPhase(phaseData);
|
|
93
|
-
this.log(styles.success(`\nCreated phase "${styles.emphasis(phase.name)}"`));
|
|
94
|
-
this.log(styles.muted(` ID: ${phase.id}`));
|
|
95
|
-
this.log(styles.muted(` Category: ${phase.category}`));
|
|
96
|
-
if (phase.color) {
|
|
97
|
-
this.log(styles.muted(` Color: ${phase.color}`));
|
|
98
|
-
}
|
|
99
|
-
if (phase.description) {
|
|
100
|
-
this.log(styles.muted(` Description: ${phase.description}`));
|
|
101
|
-
}
|
|
102
|
-
if (phase.isDefault) {
|
|
103
|
-
this.log(styles.muted(` Default: Yes`));
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
async promptPhaseData(fields) {
|
|
108
|
-
// Build inquirer prompts from fields, adding validators
|
|
109
|
-
const answers = await inquirer.prompt(fields.map(field => ({
|
|
110
|
-
...field,
|
|
111
|
-
validate: field.name === 'name'
|
|
112
|
-
? ((input) => input.length > 0 || 'Name is required')
|
|
113
|
-
: undefined,
|
|
114
|
-
})));
|
|
115
|
-
return {
|
|
116
|
-
name: answers.name,
|
|
117
|
-
category: answers.category,
|
|
118
|
-
color: answers.color || undefined,
|
|
119
|
-
description: answers.description || undefined,
|
|
120
|
-
isDefault: answers.isDefault,
|
|
49
|
+
// Check if JSON output mode is active
|
|
50
|
+
const jsonMode = shouldOutputJson(flags);
|
|
51
|
+
// Define category labels - single source of truth
|
|
52
|
+
const categoryLabels = {
|
|
53
|
+
triage: 'Triage - Inbox, needs review',
|
|
54
|
+
backlog: 'Backlog - Not yet scheduled for work',
|
|
55
|
+
unstarted: 'Unstarted - Scheduled but work hasn\'t begun',
|
|
56
|
+
started: 'Started - Work is actively in progress',
|
|
57
|
+
completed: 'Completed - Work finished successfully',
|
|
58
|
+
canceled: 'Canceled - Work won\'t be done',
|
|
121
59
|
};
|
|
60
|
+
// Build base command with positional arg if name provided
|
|
61
|
+
const baseCmd = args.name
|
|
62
|
+
? `prlt phase create "${args.name}"`
|
|
63
|
+
: 'prlt phase create';
|
|
64
|
+
// Use FlagResolver for unified JSON mode and interactive handling
|
|
65
|
+
const resolver = new FlagResolver({
|
|
66
|
+
commandName: 'phase create',
|
|
67
|
+
baseCommand: baseCmd,
|
|
68
|
+
jsonMode,
|
|
69
|
+
flags: {
|
|
70
|
+
category: flags.category,
|
|
71
|
+
color: flags.color,
|
|
72
|
+
description: flags.description,
|
|
73
|
+
default: flags.default,
|
|
74
|
+
machine: flags.machine,
|
|
75
|
+
json: flags.json,
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
// Store name in context for later use
|
|
79
|
+
let phaseName = args.name;
|
|
80
|
+
// Name prompt - required (only if not provided as positional arg)
|
|
81
|
+
if (!args.name) {
|
|
82
|
+
resolver.addPrompt({
|
|
83
|
+
flagName: 'name',
|
|
84
|
+
type: 'input',
|
|
85
|
+
message: 'Phase name:',
|
|
86
|
+
validate: (value) => value.length > 0 || 'Name is required',
|
|
87
|
+
context: {
|
|
88
|
+
hint: 'Provide name with: prlt phase create "Phase Name" --category <category>',
|
|
89
|
+
example: 'prlt phase create "In Review" --category started',
|
|
90
|
+
},
|
|
91
|
+
// For input prompts, the agent will re-run with the positional arg
|
|
92
|
+
getCommand: (value) => `prlt phase create "${value}" --json`,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
// Category prompt - required
|
|
96
|
+
resolver.addPrompt({
|
|
97
|
+
flagName: 'category',
|
|
98
|
+
type: 'list',
|
|
99
|
+
message: 'Category:',
|
|
100
|
+
choices: () => STATE_CATEGORY_ORDER.map(cat => ({
|
|
101
|
+
name: categoryLabels[cat],
|
|
102
|
+
value: cat,
|
|
103
|
+
})),
|
|
104
|
+
when: () => !!args.name && !flags.category,
|
|
105
|
+
});
|
|
106
|
+
// Color prompt - optional (only in interactive mode)
|
|
107
|
+
if (flags.interactive) {
|
|
108
|
+
resolver.addPrompt({
|
|
109
|
+
flagName: 'color',
|
|
110
|
+
type: 'input',
|
|
111
|
+
message: 'Color (hex, optional):',
|
|
112
|
+
when: (ctx) => ctx.flags.category !== undefined && ctx.flags.color === undefined,
|
|
113
|
+
});
|
|
114
|
+
// Description prompt - optional (only in interactive mode)
|
|
115
|
+
resolver.addPrompt({
|
|
116
|
+
flagName: 'description',
|
|
117
|
+
type: 'input',
|
|
118
|
+
message: 'Description (optional):',
|
|
119
|
+
when: (ctx) => ctx.flags.category !== undefined && ctx.flags.description === undefined,
|
|
120
|
+
});
|
|
121
|
+
// Default prompt - optional (only in interactive mode)
|
|
122
|
+
resolver.addPrompt({
|
|
123
|
+
flagName: 'default',
|
|
124
|
+
type: 'list',
|
|
125
|
+
message: 'Set as default for new projects?',
|
|
126
|
+
choices: () => [
|
|
127
|
+
{ name: 'No', value: false },
|
|
128
|
+
{ name: 'Yes', value: true },
|
|
129
|
+
],
|
|
130
|
+
when: (ctx) => ctx.flags.category !== undefined && ctx.flags.default === undefined,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
// Resolve missing flags
|
|
134
|
+
const resolved = await resolver.resolve();
|
|
135
|
+
// Get name from args or resolved (for interactive mode)
|
|
136
|
+
phaseName = phaseName || resolved.name;
|
|
137
|
+
// Validate required fields
|
|
138
|
+
if (!phaseName) {
|
|
139
|
+
this.error('Name is required. Use positional arg or --interactive mode.');
|
|
140
|
+
}
|
|
141
|
+
if (!resolved.category) {
|
|
142
|
+
this.error('Category is required. Use --category flag or --interactive mode.');
|
|
143
|
+
}
|
|
144
|
+
// Create the phase
|
|
145
|
+
const phase = await this.storage.createPhase({
|
|
146
|
+
name: phaseName,
|
|
147
|
+
category: resolved.category,
|
|
148
|
+
color: resolved.color || undefined,
|
|
149
|
+
description: resolved.description || undefined,
|
|
150
|
+
isDefault: resolved.default || false,
|
|
151
|
+
});
|
|
152
|
+
this.log(styles.success(`\nCreated phase "${styles.emphasis(phase.name)}"`));
|
|
153
|
+
this.log(styles.muted(` ID: ${phase.id}`));
|
|
154
|
+
this.log(styles.muted(` Category: ${phase.category}`));
|
|
155
|
+
if (phase.color) {
|
|
156
|
+
this.log(styles.muted(` Color: ${phase.color}`));
|
|
157
|
+
}
|
|
158
|
+
if (phase.description) {
|
|
159
|
+
this.log(styles.muted(` Description: ${phase.description}`));
|
|
160
|
+
}
|
|
161
|
+
if (phase.isDefault) {
|
|
162
|
+
this.log(styles.muted(` Default: Yes`));
|
|
163
|
+
}
|
|
122
164
|
}
|
|
123
165
|
}
|
|
@@ -7,6 +7,7 @@ export default class PhaseDelete extends PMOCommand {
|
|
|
7
7
|
};
|
|
8
8
|
static flags: {
|
|
9
9
|
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
11
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
12
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
13
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Args, Flags } from '@oclif/core';
|
|
2
|
-
import inquirer from 'inquirer';
|
|
3
2
|
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
4
3
|
import { styles } from '../../lib/styles.js';
|
|
5
|
-
import { shouldOutputJson,
|
|
4
|
+
import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
|
|
5
|
+
import { FlagResolver } from '../../lib/flags/index.js';
|
|
6
6
|
export default class PhaseDelete extends PMOCommand {
|
|
7
7
|
static description = 'Delete a project lifecycle phase';
|
|
8
8
|
static examples = [
|
|
@@ -22,10 +22,6 @@ export default class PhaseDelete extends PMOCommand {
|
|
|
22
22
|
description: 'Skip confirmation',
|
|
23
23
|
default: false,
|
|
24
24
|
}),
|
|
25
|
-
json: Flags.boolean({
|
|
26
|
-
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
27
|
-
default: false,
|
|
28
|
-
}),
|
|
29
25
|
};
|
|
30
26
|
getPMOOptions() {
|
|
31
27
|
return { promptIfMultiple: false };
|
|
@@ -47,22 +43,27 @@ export default class PhaseDelete extends PMOCommand {
|
|
|
47
43
|
return handleError('PHASE_NOT_FOUND', `Phase "${args.id}" not found.`);
|
|
48
44
|
}
|
|
49
45
|
if (!flags.force) {
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
46
|
+
// Use FlagResolver for confirmation
|
|
47
|
+
const resolver = new FlagResolver({
|
|
48
|
+
commandName: 'phase delete',
|
|
49
|
+
baseCommand: `prlt phase delete ${args.id}`,
|
|
50
|
+
jsonMode,
|
|
51
|
+
flags: { machine: flags.machine, json: flags.json },
|
|
52
|
+
});
|
|
53
|
+
resolver.addPrompt({
|
|
54
|
+
flagName: 'confirmed',
|
|
55
|
+
type: 'list',
|
|
56
|
+
message: `Delete phase "${phase.name}"?`,
|
|
57
|
+
choices: () => [
|
|
58
|
+
{ name: 'No', value: false },
|
|
59
|
+
{ name: 'Yes', value: true },
|
|
60
|
+
],
|
|
61
|
+
getCommand: (value) => value
|
|
62
|
+
? `prlt phase delete ${args.id} --force --json`
|
|
63
|
+
: '',
|
|
64
|
+
});
|
|
65
|
+
const resolved = await resolver.resolve();
|
|
66
|
+
if (!resolved.confirmed) {
|
|
66
67
|
this.log(styles.muted('Cancelled.'));
|
|
67
68
|
return;
|
|
68
69
|
}
|
|
@@ -4,6 +4,7 @@ export default class PhaseList extends PMOCommand {
|
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static flags: {
|
|
6
6
|
category: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
8
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
9
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
10
|
};
|
|
@@ -2,11 +2,13 @@ import { Flags } from '@oclif/core';
|
|
|
2
2
|
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
3
3
|
import { styles } from '../../lib/styles.js';
|
|
4
4
|
import { STATE_CATEGORY_ORDER } from '../../lib/pmo/types.js';
|
|
5
|
+
import { isMachineOutput } from '../../lib/prompt-json.js';
|
|
5
6
|
export default class PhaseList extends PMOCommand {
|
|
6
7
|
static description = 'List all project lifecycle phases';
|
|
7
8
|
static examples = [
|
|
8
9
|
'<%= config.bin %> <%= command.id %>',
|
|
9
10
|
'<%= config.bin %> <%= command.id %> --category started',
|
|
11
|
+
'<%= config.bin %> <%= command.id %> --machine',
|
|
10
12
|
'<%= config.bin %> <%= command.id %> --json',
|
|
11
13
|
];
|
|
12
14
|
static flags = {
|
|
@@ -16,15 +18,11 @@ export default class PhaseList extends PMOCommand {
|
|
|
16
18
|
description: 'Filter by category',
|
|
17
19
|
options: ['backlog', 'unstarted', 'started', 'completed', 'canceled'],
|
|
18
20
|
}),
|
|
19
|
-
json: Flags.boolean({
|
|
20
|
-
description: 'Output as JSON',
|
|
21
|
-
default: false,
|
|
22
|
-
}),
|
|
23
21
|
};
|
|
24
22
|
async execute() {
|
|
25
23
|
const { flags } = await this.parse(PhaseList);
|
|
26
24
|
const phases = await this.storage.listPhases(flags.category ? { category: flags.category } : undefined);
|
|
27
|
-
if (flags
|
|
25
|
+
if (isMachineOutput(flags)) {
|
|
28
26
|
this.log(JSON.stringify(phases, null, 2));
|
|
29
27
|
return;
|
|
30
28
|
}
|
|
@@ -7,6 +7,7 @@ export default class PhaseMove extends PMOCommand {
|
|
|
7
7
|
};
|
|
8
8
|
static flags: {
|
|
9
9
|
position: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
11
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
12
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
13
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Args, Flags } from '@oclif/core';
|
|
2
|
-
import inquirer from 'inquirer';
|
|
3
2
|
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
4
3
|
import { styles } from '../../lib/styles.js';
|
|
5
|
-
import { shouldOutputJson,
|
|
4
|
+
import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
|
|
5
|
+
import { FlagResolver } from '../../lib/flags/index.js';
|
|
6
6
|
export default class PhaseMove extends PMOCommand {
|
|
7
7
|
static description = 'Change the position of a phase within its category';
|
|
8
8
|
static examples = [
|
|
@@ -23,10 +23,6 @@ export default class PhaseMove extends PMOCommand {
|
|
|
23
23
|
description: 'New position (0-indexed)',
|
|
24
24
|
required: false,
|
|
25
25
|
}),
|
|
26
|
-
json: Flags.boolean({
|
|
27
|
-
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
28
|
-
default: false,
|
|
29
|
-
}),
|
|
30
26
|
};
|
|
31
27
|
getPMOOptions() {
|
|
32
28
|
return { promptIfMultiple: false };
|
|
@@ -50,25 +46,28 @@ export default class PhaseMove extends PMOCommand {
|
|
|
50
46
|
if (phases.length === 0) {
|
|
51
47
|
return handleError('NO_PHASES', 'No phases found. Create a phase first with "prlt phase create".');
|
|
52
48
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
const idResolver = new FlagResolver({
|
|
50
|
+
commandName: 'phase move',
|
|
51
|
+
baseCommand: 'prlt phase move',
|
|
52
|
+
jsonMode,
|
|
53
|
+
flags: { machine: flags.machine, json: flags.json },
|
|
54
|
+
});
|
|
55
|
+
idResolver.addPrompt({
|
|
56
|
+
flagName: 'phaseId',
|
|
57
|
+
type: 'list',
|
|
58
|
+
message: 'Select phase to move:',
|
|
59
|
+
choices: () => phases.map(p => ({
|
|
56
60
|
name: `${p.name} (${p.category}, position ${p.position})`,
|
|
57
61
|
value: p.id,
|
|
58
|
-
}))
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
})),
|
|
63
|
+
// Use positional arg format for phase ID
|
|
64
|
+
getCommand: (value) => `prlt phase move ${value} --json`,
|
|
65
|
+
});
|
|
66
|
+
const resolved = await idResolver.resolve();
|
|
67
|
+
if (!resolved.phaseId) {
|
|
68
|
+
return; // Cancelled
|
|
61
69
|
}
|
|
62
|
-
|
|
63
|
-
type: 'list',
|
|
64
|
-
name: 'selectedId',
|
|
65
|
-
message: 'Select phase to move:',
|
|
66
|
-
choices: phases.map(p => ({
|
|
67
|
-
name: `${p.name} (${p.category}, position ${p.position})`,
|
|
68
|
-
value: p.id,
|
|
69
|
-
})),
|
|
70
|
-
}]);
|
|
71
|
-
phaseId = selectedId;
|
|
70
|
+
phaseId = resolved.phaseId;
|
|
72
71
|
}
|
|
73
72
|
const phase = await this.storage.getPhase(phaseId);
|
|
74
73
|
if (!phase) {
|
|
@@ -80,26 +79,27 @@ export default class PhaseMove extends PMOCommand {
|
|
|
80
79
|
// Get phases in the same category to show valid positions
|
|
81
80
|
const phases = await this.storage.listPhases();
|
|
82
81
|
const categoryPhases = phases.filter(p => p.category === phase.category);
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
const posResolver = new FlagResolver({
|
|
83
|
+
commandName: 'phase move',
|
|
84
|
+
baseCommand: `prlt phase move ${phaseId}`,
|
|
85
|
+
jsonMode,
|
|
86
|
+
flags: { machine: flags.machine, json: flags.json },
|
|
87
|
+
});
|
|
88
|
+
posResolver.addPrompt({
|
|
89
|
+
flagName: 'position',
|
|
90
|
+
type: 'list',
|
|
91
|
+
message: `New position within ${phase.category} (currently ${phase.position}):`,
|
|
92
|
+
choices: () => categoryPhases.map((_, idx) => ({
|
|
86
93
|
name: `Position ${idx}${idx === phase.position ? ' (current)' : ''}`,
|
|
87
94
|
value: String(idx),
|
|
88
|
-
}))
|
|
89
|
-
|
|
90
|
-
|
|
95
|
+
})),
|
|
96
|
+
default: String(phase.position),
|
|
97
|
+
});
|
|
98
|
+
const resolved = await posResolver.resolve();
|
|
99
|
+
if (!resolved.position) {
|
|
100
|
+
return; // Cancelled
|
|
91
101
|
}
|
|
92
|
-
|
|
93
|
-
type: 'list',
|
|
94
|
-
name: 'position',
|
|
95
|
-
message: `New position within ${phase.category} (currently ${phase.position}):`,
|
|
96
|
-
choices: categoryPhases.map((_, idx) => ({
|
|
97
|
-
name: `Position ${idx}${idx === phase.position ? ' (current)' : ''}`,
|
|
98
|
-
value: idx,
|
|
99
|
-
})),
|
|
100
|
-
default: phase.position,
|
|
101
|
-
}]);
|
|
102
|
-
newPosition = position;
|
|
102
|
+
newPosition = parseInt(resolved.position, 10);
|
|
103
103
|
}
|
|
104
104
|
if (newPosition < 0) {
|
|
105
105
|
this.error('Position must be >= 0');
|
|
@@ -8,6 +8,7 @@ export default class PhaseTemplateApply extends PMOCommand {
|
|
|
8
8
|
static flags: {
|
|
9
9
|
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
10
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
12
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
13
|
};
|
|
13
14
|
protected getPMOOptions(): {
|
|
@@ -7,6 +7,8 @@ export default class PhaseTemplateCreate extends PMOCommand {
|
|
|
7
7
|
};
|
|
8
8
|
static flags: {
|
|
9
9
|
description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
12
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
13
|
};
|
|
12
14
|
protected getPMOOptions(): {
|
|
@@ -8,6 +8,7 @@ export default class PhaseTemplateDelete extends PMOCommand {
|
|
|
8
8
|
static flags: {
|
|
9
9
|
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
10
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
12
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
13
|
};
|
|
13
14
|
protected getPMOOptions(): {
|
|
@@ -5,6 +5,7 @@ export default class PhaseTemplateMenu extends PMOCommand {
|
|
|
5
5
|
static examples: string[];
|
|
6
6
|
static flags: {
|
|
7
7
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
9
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
10
|
};
|
|
10
11
|
protected getPMOOptions(): {
|
|
@@ -6,6 +6,7 @@ export default class PhaseTemplateList extends PMOCommand {
|
|
|
6
6
|
builtin: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
7
|
custom: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
8
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
10
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
11
|
};
|
|
11
12
|
protected getPMOOptions(): {
|
|
@@ -8,6 +8,8 @@ export default class PhaseTemplateUpdate extends PMOCommand {
|
|
|
8
8
|
static flags: {
|
|
9
9
|
name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
13
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
14
|
};
|
|
13
15
|
protected getPMOOptions(): {
|
|
@@ -12,6 +12,7 @@ export default class PhaseUpdate extends PMOCommand {
|
|
|
12
12
|
description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
13
|
default: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
14
|
interactive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
16
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
17
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
18
|
};
|
|
@@ -19,5 +20,4 @@ export default class PhaseUpdate extends PMOCommand {
|
|
|
19
20
|
promptIfMultiple: boolean;
|
|
20
21
|
};
|
|
21
22
|
execute(): Promise<void>;
|
|
22
|
-
private promptUpdates;
|
|
23
23
|
}
|