@proletariat/cli 0.3.20 → 0.3.22
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/dist/commands/action/create.d.ts +0 -1
- package/dist/commands/action/delete.d.ts +0 -1
- package/dist/commands/action/index.d.ts +0 -1
- package/dist/commands/action/list.d.ts +0 -1
- package/dist/commands/action/list.js +2 -0
- package/dist/commands/action/run.d.ts +0 -1
- package/dist/commands/action/show.d.ts +0 -1
- package/dist/commands/action/update.d.ts +0 -1
- package/dist/commands/agent/auth.d.ts +0 -1
- package/dist/commands/agent/auth.js +3 -7
- package/dist/commands/agent/discover.d.ts +0 -1
- package/dist/commands/agent/discover.js +3 -7
- package/dist/commands/agent/index.d.ts +0 -1
- package/dist/commands/agent/index.js +2 -0
- package/dist/commands/agent/list.d.ts +0 -1
- package/dist/commands/agent/list.js +30 -1
- package/dist/commands/agent/login.d.ts +0 -1
- package/dist/commands/agent/login.js +4 -2
- package/dist/commands/agent/rebuild.d.ts +0 -1
- package/dist/commands/agent/rebuild.js +2 -0
- package/dist/commands/agent/remove.d.ts +1 -1
- package/dist/commands/agent/remove.js +38 -28
- package/dist/commands/agent/restart.d.ts +0 -1
- package/dist/commands/agent/restart.js +2 -0
- package/dist/commands/agent/shell.d.ts +0 -1
- package/dist/commands/agent/shell.js +4 -2
- package/dist/commands/agent/staff/add.d.ts +0 -1
- package/dist/commands/agent/staff/add.js +3 -7
- package/dist/commands/agent/staff/index.d.ts +0 -1
- package/dist/commands/agent/staff/index.js +2 -0
- package/dist/commands/agent/staff/remove.d.ts +0 -1
- package/dist/commands/agent/staff/remove.js +4 -2
- package/dist/commands/agent/status.d.ts +0 -1
- package/dist/commands/agent/status.js +4 -2
- package/dist/commands/agent/temp/cleanup.d.ts +0 -1
- package/dist/commands/agent/temp/cleanup.js +2 -0
- package/dist/commands/agent/temp/index.d.ts +0 -1
- package/dist/commands/agent/temp/index.js +2 -0
- package/dist/commands/agent/themes/add-names.d.ts +1 -0
- package/dist/commands/agent/themes/add-names.js +5 -1
- package/dist/commands/agent/themes/index.d.ts +0 -1
- package/dist/commands/agent/themes/index.js +3 -7
- package/dist/commands/agent/themes/set.d.ts +0 -1
- package/dist/commands/agent/themes/set.js +3 -7
- package/dist/commands/agent/visit.d.ts +0 -1
- package/dist/commands/agent/visit.js +4 -2
- package/dist/commands/autocomplete/setup.d.ts +0 -1
- package/dist/commands/board/index.d.ts +0 -1
- package/dist/commands/board/view.d.ts +0 -1
- package/dist/commands/board/watch.d.ts +0 -1
- package/dist/commands/branch/create.d.ts +0 -1
- package/dist/commands/branch/create.js +2 -0
- package/dist/commands/branch/index.d.ts +0 -1
- package/dist/commands/branch/index.js +2 -0
- package/dist/commands/branch/list.d.ts +0 -1
- package/dist/commands/branch/validate.d.ts +0 -1
- package/dist/commands/branch/where.d.ts +0 -1
- package/dist/commands/branch/where.js +2 -0
- package/dist/commands/category/create.d.ts +18 -0
- package/dist/commands/category/create.js +108 -0
- package/dist/commands/category/delete.d.ts +17 -0
- package/dist/commands/category/delete.js +103 -0
- package/dist/commands/category/index.d.ts +15 -0
- package/dist/commands/category/index.js +87 -0
- package/dist/commands/category/list.d.ts +17 -0
- package/dist/commands/category/list.js +85 -0
- package/dist/commands/category/rename.d.ts +18 -0
- package/dist/commands/category/rename.js +127 -0
- package/dist/commands/claude.js +2 -0
- package/dist/commands/commit.js +2 -0
- package/dist/commands/config/index.js +2 -0
- package/dist/commands/docker/clean.d.ts +0 -1
- package/dist/commands/docker/index.d.ts +0 -1
- package/dist/commands/docker/prune.d.ts +0 -1
- package/dist/commands/docker/restart.d.ts +0 -1
- package/dist/commands/docker/stop.d.ts +0 -1
- package/dist/commands/epic/activate.d.ts +0 -1
- package/dist/commands/epic/activate.js +2 -0
- package/dist/commands/epic/archive.d.ts +0 -1
- package/dist/commands/epic/archive.js +2 -0
- package/dist/commands/epic/create.d.ts +0 -1
- package/dist/commands/epic/create.js +3 -1
- package/dist/commands/epic/delete.d.ts +14 -0
- package/dist/commands/epic/delete.js +129 -0
- package/dist/commands/epic/index.d.ts +0 -1
- package/dist/commands/epic/index.js +6 -0
- package/dist/commands/epic/link/block.d.ts +0 -1
- package/dist/commands/epic/link/block.js +2 -0
- package/dist/commands/epic/link/duplicates.d.ts +0 -1
- package/dist/commands/epic/link/duplicates.js +2 -0
- package/dist/commands/epic/link/index.d.ts +0 -1
- package/dist/commands/epic/link/index.js +19 -0
- package/dist/commands/epic/link/relates.d.ts +0 -1
- package/dist/commands/epic/link/relates.js +2 -0
- package/dist/commands/epic/link/remove.d.ts +0 -1
- package/dist/commands/epic/link/remove.js +2 -0
- package/dist/commands/epic/list.d.ts +0 -1
- package/dist/commands/epic/move.d.ts +0 -1
- package/dist/commands/epic/move.js +2 -0
- package/dist/commands/epic/progress.d.ts +0 -1
- package/dist/commands/epic/progress.js +2 -0
- package/dist/commands/epic/project.d.ts +0 -1
- package/dist/commands/epic/project.js +2 -0
- package/dist/commands/epic/reorder.d.ts +0 -1
- package/dist/commands/epic/reorder.js +2 -0
- package/dist/commands/epic/spec.d.ts +0 -1
- package/dist/commands/epic/spec.js +2 -0
- package/dist/commands/epic/ticket.d.ts +0 -1
- package/dist/commands/epic/ticket.js +2 -0
- package/dist/commands/epic/view.d.ts +0 -1
- package/dist/commands/epic/view.js +2 -0
- package/dist/commands/execution/config.d.ts +0 -1
- package/dist/commands/execution/config.js +24 -0
- package/dist/commands/execution/index.d.ts +0 -1
- package/dist/commands/execution/index.js +3 -1
- package/dist/commands/execution/kill.d.ts +3 -0
- package/dist/commands/execution/kill.js +1 -0
- package/dist/commands/execution/list.d.ts +0 -1
- package/dist/commands/execution/list.js +5 -4
- package/dist/commands/execution/logs.d.ts +0 -1
- package/dist/commands/execution/logs.js +4 -1
- package/dist/commands/execution/stop.d.ts +0 -1
- package/dist/commands/execution/stop.js +3 -1
- package/dist/commands/execution/view.d.ts +0 -1
- package/dist/commands/execution/view.js +3 -1
- package/dist/commands/gh/index.d.ts +0 -1
- package/dist/commands/gh/login.d.ts +0 -1
- package/dist/commands/gh/status.d.ts +0 -1
- package/dist/commands/gh/token.d.ts +0 -1
- package/dist/commands/init.js +2 -0
- package/dist/commands/phase/create.d.ts +0 -1
- package/dist/commands/phase/create.js +1 -2
- package/dist/commands/phase/delete.d.ts +0 -1
- package/dist/commands/phase/delete.js +1 -1
- package/dist/commands/phase/list.d.ts +0 -1
- package/dist/commands/phase/move.d.ts +0 -1
- package/dist/commands/phase/move.js +10 -2
- package/dist/commands/phase/template/apply.d.ts +0 -1
- package/dist/commands/phase/template/apply.js +4 -2
- package/dist/commands/phase/template/create.d.ts +0 -1
- package/dist/commands/phase/template/create.js +6 -7
- package/dist/commands/phase/template/delete.d.ts +0 -1
- package/dist/commands/phase/template/delete.js +2 -0
- package/dist/commands/phase/template/index.d.ts +0 -1
- package/dist/commands/phase/template/index.js +2 -0
- package/dist/commands/phase/template/list.d.ts +0 -1
- package/dist/commands/phase/template/list.js +3 -1
- package/dist/commands/phase/template/update.d.ts +0 -1
- package/dist/commands/phase/update.d.ts +0 -1
- package/dist/commands/phase/update.js +2 -2
- package/dist/commands/pmo/init.js +2 -0
- package/dist/commands/pr/create.d.ts +0 -1
- package/dist/commands/pr/index.d.ts +0 -1
- package/dist/commands/pr/link.d.ts +0 -1
- package/dist/commands/pr/list.d.ts +0 -1
- package/dist/commands/pr/status.d.ts +0 -1
- package/dist/commands/project/archive.d.ts +0 -1
- package/dist/commands/project/create.d.ts +0 -1
- package/dist/commands/project/delete.d.ts +0 -1
- package/dist/commands/project/index.d.ts +0 -1
- package/dist/commands/project/list.d.ts +0 -1
- package/dist/commands/project/spec.d.ts +0 -1
- package/dist/commands/project/unarchive.d.ts +0 -1
- package/dist/commands/project/update.d.ts +0 -1
- package/dist/commands/project/view.d.ts +0 -1
- package/dist/commands/repo/add.d.ts +0 -1
- package/dist/commands/repo/add.js +2 -0
- package/dist/commands/repo/index.d.ts +0 -1
- package/dist/commands/repo/list.d.ts +0 -1
- package/dist/commands/repo/remove.d.ts +0 -1
- package/dist/commands/repo/view.d.ts +0 -1
- package/dist/commands/roadmap/add-project.d.ts +0 -1
- package/dist/commands/roadmap/add-project.js +2 -0
- package/dist/commands/roadmap/create.d.ts +0 -1
- package/dist/commands/roadmap/create.js +2 -0
- package/dist/commands/roadmap/delete.d.ts +0 -1
- package/dist/commands/roadmap/delete.js +12 -1
- package/dist/commands/roadmap/generate.d.ts +0 -1
- package/dist/commands/roadmap/generate.js +2 -0
- package/dist/commands/roadmap/index.d.ts +0 -1
- package/dist/commands/roadmap/index.js +2 -0
- package/dist/commands/roadmap/list.d.ts +0 -1
- package/dist/commands/roadmap/remove-project.d.ts +0 -1
- package/dist/commands/roadmap/remove-project.js +2 -0
- package/dist/commands/roadmap/reorder.d.ts +0 -1
- package/dist/commands/roadmap/reorder.js +2 -0
- package/dist/commands/roadmap/update.d.ts +0 -1
- package/dist/commands/roadmap/update.js +2 -0
- package/dist/commands/roadmap/view.d.ts +0 -1
- package/dist/commands/roadmap/view.js +2 -0
- package/dist/commands/session/attach.d.ts +0 -1
- package/dist/commands/session/attach.js +9 -0
- package/dist/commands/session/index.d.ts +0 -1
- package/dist/commands/session/index.js +2 -0
- package/dist/commands/session/list.d.ts +0 -1
- package/dist/commands/spec/create.d.ts +0 -1
- package/dist/commands/spec/create.js +1 -1
- package/dist/commands/spec/delete.d.ts +0 -1
- package/dist/commands/spec/edit.d.ts +0 -1
- package/dist/commands/spec/index.d.ts +0 -1
- package/dist/commands/spec/link/depends.d.ts +0 -1
- package/dist/commands/spec/link/duplicates.d.ts +0 -1
- package/dist/commands/spec/link/index.d.ts +0 -1
- package/dist/commands/spec/link/relates.d.ts +0 -1
- package/dist/commands/spec/link/remove.d.ts +0 -1
- package/dist/commands/spec/list.d.ts +0 -1
- package/dist/commands/spec/plan.d.ts +0 -1
- package/dist/commands/spec/ticket.d.ts +0 -3
- package/dist/commands/spec/ticket.js +7 -38
- package/dist/commands/spec/view.d.ts +0 -1
- package/dist/commands/status/category.d.ts +14 -0
- package/dist/commands/status/category.js +63 -0
- package/dist/commands/status/create.d.ts +0 -1
- package/dist/commands/status/create.js +1 -1
- package/dist/commands/status/delete.d.ts +0 -1
- package/dist/commands/status/index.d.ts +0 -1
- package/dist/commands/status/list.d.ts +0 -1
- package/dist/commands/status/list.js +5 -3
- package/dist/commands/status/move.d.ts +0 -1
- package/dist/commands/status/update.d.ts +0 -1
- package/dist/commands/template/delete.d.ts +0 -1
- package/dist/commands/template/delete.js +2 -0
- package/dist/commands/template/index.d.ts +0 -1
- package/dist/commands/template/list.d.ts +0 -1
- package/dist/commands/template/list.js +2 -0
- package/dist/commands/template/phase/apply.js +2 -0
- package/dist/commands/template/phase/create.d.ts +0 -1
- package/dist/commands/template/phase/create.js +3 -9
- package/dist/commands/template/phase/delete.js +2 -0
- package/dist/commands/template/phase/index.d.ts +0 -1
- package/dist/commands/template/phase/index.js +4 -4
- package/dist/commands/template/phase/list.js +2 -0
- package/dist/commands/template/phase/update.js +2 -0
- package/dist/commands/template/ticket/apply.js +2 -0
- package/dist/commands/template/ticket/create.js +2 -0
- package/dist/commands/template/ticket/delete.d.ts +1 -1
- package/dist/commands/template/ticket/delete.js +6 -2
- package/dist/commands/template/ticket/index.d.ts +0 -1
- package/dist/commands/template/ticket/list.js +2 -0
- package/dist/commands/template/ticket/save.d.ts +0 -1
- package/dist/commands/template/ticket/save.js +0 -6
- package/dist/commands/terminal/title.d.ts +0 -1
- package/dist/commands/ticket/bulk.d.ts +0 -1
- package/dist/commands/ticket/bulk.js +2 -0
- package/dist/commands/ticket/category.d.ts +14 -0
- package/dist/commands/ticket/category.js +63 -0
- package/dist/commands/ticket/complete.d.ts +0 -1
- package/dist/commands/ticket/complete.js +2 -0
- package/dist/commands/ticket/create.d.ts +0 -1
- package/dist/commands/ticket/create.js +7 -5
- package/dist/commands/ticket/delete.d.ts +0 -1
- package/dist/commands/ticket/delete.js +2 -0
- package/dist/commands/ticket/edit.d.ts +0 -1
- package/dist/commands/ticket/edit.js +5 -3
- package/dist/commands/ticket/epic.d.ts +0 -1
- package/dist/commands/ticket/epic.js +2 -0
- package/dist/commands/ticket/index.d.ts +0 -1
- package/dist/commands/ticket/index.js +2 -0
- package/dist/commands/ticket/link/block.d.ts +0 -1
- package/dist/commands/ticket/link/block.js +2 -0
- package/dist/commands/ticket/link/duplicates.d.ts +0 -1
- package/dist/commands/ticket/link/duplicates.js +2 -0
- package/dist/commands/ticket/link/index.d.ts +0 -1
- package/dist/commands/ticket/link/index.js +2 -0
- package/dist/commands/ticket/link/relates.d.ts +0 -1
- package/dist/commands/ticket/link/relates.js +2 -0
- package/dist/commands/ticket/link/remove.d.ts +0 -1
- package/dist/commands/ticket/link/remove.js +2 -0
- package/dist/commands/ticket/list.d.ts +2 -1
- package/dist/commands/ticket/list.js +39 -2
- package/dist/commands/ticket/move.d.ts +0 -1
- package/dist/commands/ticket/move.js +2 -0
- package/dist/commands/ticket/project.d.ts +0 -1
- package/dist/commands/ticket/project.js +2 -0
- package/dist/commands/ticket/reassign.d.ts +0 -1
- package/dist/commands/ticket/reassign.js +29 -0
- package/dist/commands/ticket/spec.d.ts +0 -1
- package/dist/commands/ticket/spec.js +2 -0
- package/dist/commands/ticket/status.d.ts +0 -1
- package/dist/commands/ticket/status.js +2 -0
- package/dist/commands/ticket/template/apply.d.ts +0 -1
- package/dist/commands/ticket/template/apply.js +2 -0
- package/dist/commands/ticket/template/create.d.ts +0 -1
- package/dist/commands/ticket/template/create.js +4 -2
- package/dist/commands/ticket/template/delete.d.ts +0 -1
- package/dist/commands/ticket/template/delete.js +2 -0
- package/dist/commands/ticket/template/index.d.ts +0 -1
- package/dist/commands/ticket/template/index.js +2 -0
- package/dist/commands/ticket/template/list.d.ts +0 -1
- package/dist/commands/ticket/template/list.js +2 -0
- package/dist/commands/ticket/template/save.d.ts +0 -1
- package/dist/commands/ticket/template/save.js +2 -0
- package/dist/commands/ticket/update.d.ts +0 -1
- package/dist/commands/ticket/update.js +4 -2
- package/dist/commands/ticket/view.d.ts +0 -1
- package/dist/commands/ticket/view.js +2 -0
- package/dist/commands/work/complete.d.ts +0 -1
- package/dist/commands/work/complete.js +2 -0
- package/dist/commands/work/index.d.ts +0 -1
- package/dist/commands/work/index.js +2 -0
- package/dist/commands/work/ready.d.ts +1 -2
- package/dist/commands/work/ready.js +11 -5
- package/dist/commands/work/revise.d.ts +0 -1
- package/dist/commands/work/revise.js +3 -1
- package/dist/commands/work/spawn-all.d.ts +0 -1
- package/dist/commands/work/spawn-all.js +2 -0
- package/dist/commands/work/spawn.d.ts +0 -1
- package/dist/commands/work/spawn.js +34 -8
- package/dist/commands/work/start.d.ts +0 -1
- package/dist/commands/work/start.js +6 -0
- package/dist/commands/work/watch.d.ts +0 -1
- package/dist/commands/work/watch.js +5 -1
- package/dist/commands/workflow/create.d.ts +0 -1
- package/dist/commands/workflow/delete.d.ts +0 -1
- package/dist/commands/workflow/index.d.ts +0 -1
- package/dist/commands/workflow/index.js +2 -0
- package/dist/commands/workflow/list.d.ts +0 -1
- package/dist/commands/workflow/switch.d.ts +0 -1
- package/dist/commands/workflow/view.d.ts +0 -1
- package/dist/commands/workspace/list.js +2 -0
- package/dist/commands/workspace/prune.d.ts +13 -0
- package/dist/commands/workspace/prune.js +186 -0
- package/dist/commands/workspace/remove.js +2 -0
- package/dist/commands/workspace/use.js +2 -0
- package/dist/lib/agents/commands.d.ts +7 -0
- package/dist/lib/agents/commands.js +11 -0
- package/dist/lib/execution/runners.js +1 -2
- package/dist/lib/pmo/base-command.d.ts +2 -4
- package/dist/lib/pmo/base-command.js +8 -10
- package/dist/lib/pmo/schema.d.ts +2 -0
- package/dist/lib/pmo/schema.js +17 -0
- package/dist/lib/pmo/storage/base.d.ts +4 -0
- package/dist/lib/pmo/storage/base.js +31 -0
- package/dist/lib/pmo/storage/categories.d.ts +50 -0
- package/dist/lib/pmo/storage/categories.js +205 -0
- package/dist/lib/pmo/storage/epics.js +20 -10
- package/dist/lib/pmo/storage/helpers.d.ts +10 -0
- package/dist/lib/pmo/storage/helpers.js +59 -1
- package/dist/lib/pmo/storage/index.d.ts +14 -1
- package/dist/lib/pmo/storage/index.js +35 -1
- package/dist/lib/pmo/storage/projects.js +20 -8
- package/dist/lib/pmo/storage/specs.js +23 -13
- package/dist/lib/pmo/storage/statuses.js +39 -18
- package/dist/lib/pmo/storage/subtasks.js +19 -8
- package/dist/lib/pmo/storage/tickets.d.ts +5 -0
- package/dist/lib/pmo/storage/tickets.js +57 -17
- package/dist/lib/pmo/storage/types.d.ts +10 -0
- package/dist/lib/pmo/types.d.ts +25 -0
- package/dist/lib/prompt-json.d.ts +10 -16
- package/dist/lib/prompt-json.js +8 -16
- package/oclif.manifest.json +3831 -3864
- package/package.json +1 -1
|
@@ -9,7 +9,6 @@ export default class EpicProject extends PMOCommand {
|
|
|
9
9
|
static flags: {
|
|
10
10
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
11
|
'with-tickets': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
12
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
13
|
};
|
|
15
14
|
execute(): Promise<void>;
|
|
@@ -24,6 +24,8 @@ export default class EpicProject extends PMOCommand {
|
|
|
24
24
|
static flags = {
|
|
25
25
|
...pmoBaseFlags,
|
|
26
26
|
json: Flags.boolean({
|
|
27
|
+
char: 'm',
|
|
28
|
+
aliases: ['machine'],
|
|
27
29
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
28
30
|
default: false,
|
|
29
31
|
}),
|
|
@@ -15,7 +15,6 @@ export default class EpicReorder extends PMOCommand {
|
|
|
15
15
|
after: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
16
|
before: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
17
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
18
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
19
18
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
19
|
};
|
|
21
20
|
execute(): Promise<void>;
|
|
@@ -39,6 +39,8 @@ export default class EpicReorder extends PMOCommand {
|
|
|
39
39
|
exclusive: ['first', 'last', 'after'],
|
|
40
40
|
}),
|
|
41
41
|
json: Flags.boolean({
|
|
42
|
+
char: 'm',
|
|
43
|
+
aliases: ['machine'],
|
|
42
44
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
43
45
|
default: false,
|
|
44
46
|
}),
|
|
@@ -9,7 +9,6 @@ export default class EpicSpec extends PMOCommand {
|
|
|
9
9
|
static flags: {
|
|
10
10
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
11
|
unlink: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
12
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
13
|
};
|
|
15
14
|
execute(): Promise<void>;
|
|
@@ -12,7 +12,6 @@ export default class EpicTicket extends PMOCommand {
|
|
|
12
12
|
unlink: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
13
|
spec: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
14
|
'unlink-spec': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
15
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
16
|
};
|
|
18
17
|
execute(): Promise<void>;
|
|
@@ -27,6 +27,8 @@ export default class EpicTicket extends PMOCommand {
|
|
|
27
27
|
static flags = {
|
|
28
28
|
...pmoBaseFlags,
|
|
29
29
|
json: Flags.boolean({
|
|
30
|
+
char: 'm',
|
|
31
|
+
aliases: ['machine'],
|
|
30
32
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
31
33
|
default: false,
|
|
32
34
|
}),
|
|
@@ -7,7 +7,6 @@ export default class EpicView extends PMOCommand {
|
|
|
7
7
|
};
|
|
8
8
|
static flags: {
|
|
9
9
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
10
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
11
|
};
|
|
13
12
|
execute(): Promise<void>;
|
|
@@ -7,7 +7,6 @@ export default class ExecutionConfig extends PMOCommand {
|
|
|
7
7
|
set: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
8
|
list: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
9
|
setting: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
10
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
11
|
};
|
|
13
12
|
protected getPMOOptions(): {
|
|
@@ -21,6 +21,8 @@ export default class ExecutionConfig extends PMOCommand {
|
|
|
21
21
|
static flags = {
|
|
22
22
|
...pmoBaseFlags,
|
|
23
23
|
json: Flags.boolean({
|
|
24
|
+
char: 'm',
|
|
25
|
+
aliases: ['machine'],
|
|
24
26
|
description: 'Output configuration as JSON (for AI agents/scripts)',
|
|
25
27
|
default: false,
|
|
26
28
|
}),
|
|
@@ -348,6 +350,28 @@ export default class ExecutionConfig extends PMOCommand {
|
|
|
348
350
|
}
|
|
349
351
|
setConfigValue(db, key, value, jsonMode) {
|
|
350
352
|
const normalizedKey = key.toLowerCase();
|
|
353
|
+
// Define valid values for each config key
|
|
354
|
+
const VALID_VALUES = {
|
|
355
|
+
defaultenvironment: ['host', 'devcontainer', 'docker', 'vm'],
|
|
356
|
+
outputmode: ['interactive', 'print'],
|
|
357
|
+
sandboxed: ['true', 'false'],
|
|
358
|
+
'terminal.app': ['Terminal', 'iTerm', 'Alacritty', 'Ghostty', 'Kitty', 'tmux', 'Warp', 'WezTerm'],
|
|
359
|
+
'terminal.openinbackground': ['true', 'false'],
|
|
360
|
+
shell: ['bash', 'zsh', 'fish'],
|
|
361
|
+
'tmux.controlmode': ['true', 'false'],
|
|
362
|
+
};
|
|
363
|
+
// Validate value against allowed options
|
|
364
|
+
const validValues = VALID_VALUES[normalizedKey];
|
|
365
|
+
if (validValues && !validValues.includes(value)) {
|
|
366
|
+
const errorMsg = `Invalid value "${value}" for ${key}. Valid options: ${validValues.join(', ')}`;
|
|
367
|
+
if (jsonMode) {
|
|
368
|
+
outputErrorAsJson('INVALID_VALUE', errorMsg, createMetadata('execution config', {}));
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
this.error(errorMsg);
|
|
372
|
+
}
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
351
375
|
switch (normalizedKey) {
|
|
352
376
|
case 'defaultenvironment':
|
|
353
377
|
saveExecutionSetting(db, 'defaultMode', value);
|
|
@@ -4,7 +4,6 @@ export default class Execution extends PMOCommand {
|
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static flags: {
|
|
6
6
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
7
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
8
|
};
|
|
10
9
|
protected getPMOOptions(): {
|
|
@@ -12,6 +12,8 @@ export default class Execution extends PMOCommand {
|
|
|
12
12
|
static flags = {
|
|
13
13
|
...pmoBaseFlags,
|
|
14
14
|
json: Flags.boolean({
|
|
15
|
+
char: 'm',
|
|
16
|
+
aliases: ['machine'],
|
|
15
17
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
16
18
|
default: false,
|
|
17
19
|
}),
|
|
@@ -21,7 +23,7 @@ export default class Execution extends PMOCommand {
|
|
|
21
23
|
}
|
|
22
24
|
async execute() {
|
|
23
25
|
const { flags } = await this.parse(Execution);
|
|
24
|
-
const jsonModeConfig =
|
|
26
|
+
const jsonModeConfig = flags.json ? { flags, commandName: 'execution' } : null;
|
|
25
27
|
const { action } = await this.prompt([
|
|
26
28
|
{
|
|
27
29
|
type: 'list',
|
|
@@ -5,5 +5,8 @@ import ExecutionStop from './stop.js';
|
|
|
5
5
|
*/
|
|
6
6
|
export default class ExecutionKill extends ExecutionStop {
|
|
7
7
|
static description: string;
|
|
8
|
+
static args: {
|
|
9
|
+
id: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
10
|
+
};
|
|
8
11
|
static examples: string[];
|
|
9
12
|
}
|
|
@@ -5,6 +5,7 @@ import ExecutionStop from './stop.js';
|
|
|
5
5
|
*/
|
|
6
6
|
export default class ExecutionKill extends ExecutionStop {
|
|
7
7
|
static description = 'Stop running execution(s) (alias for "execution stop")';
|
|
8
|
+
static args = ExecutionStop.args;
|
|
8
9
|
static examples = [
|
|
9
10
|
'<%= config.bin %> <%= command.id %> WORK-001',
|
|
10
11
|
'<%= config.bin %> <%= command.id %> WORK-001 --force',
|
|
@@ -6,7 +6,6 @@ export default class ExecutionList extends PMOCommand {
|
|
|
6
6
|
status: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
7
|
agent: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
8
|
limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
9
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
10
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
11
|
};
|
|
@@ -28,6 +28,7 @@ export default class ExecutionList extends PMOCommand {
|
|
|
28
28
|
char: 'l',
|
|
29
29
|
description: 'Number of results',
|
|
30
30
|
default: 20,
|
|
31
|
+
min: 1,
|
|
31
32
|
}),
|
|
32
33
|
};
|
|
33
34
|
getPMOOptions() {
|
|
@@ -61,10 +62,10 @@ export default class ExecutionList extends PMOCommand {
|
|
|
61
62
|
this.log('');
|
|
62
63
|
this.log(styles.header('🚀 Agent Work'));
|
|
63
64
|
this.log('═'.repeat(100));
|
|
64
|
-
this.log(styles.muted(padEnd('ID',
|
|
65
|
+
this.log(styles.muted(padEnd('ID', 14) +
|
|
65
66
|
padEnd('Ticket', 9) +
|
|
66
67
|
padEnd('Agent', 10) +
|
|
67
|
-
padEnd('Env',
|
|
68
|
+
padEnd('Env', 13) +
|
|
68
69
|
padEnd('Display', 11) +
|
|
69
70
|
padEnd('Perms', 8) +
|
|
70
71
|
padEnd('Status', 10) +
|
|
@@ -78,10 +79,10 @@ export default class ExecutionList extends PMOCommand {
|
|
|
78
79
|
const envStr = `${envIcon} ${exec.environment}`;
|
|
79
80
|
const permsStr = exec.sandboxed ? 'safe' : 'danger';
|
|
80
81
|
const permsColor = exec.sandboxed ? styles.success : styles.warning;
|
|
81
|
-
this.log(padEnd(exec.id,
|
|
82
|
+
this.log(padEnd(exec.id, 14) +
|
|
82
83
|
padEnd(exec.ticketId, 9) +
|
|
83
84
|
padEnd(exec.agentName, 10) +
|
|
84
|
-
padEnd(envStr,
|
|
85
|
+
padEnd(envStr, 13) +
|
|
85
86
|
padEnd(exec.displayMode, 11) +
|
|
86
87
|
permsColor(padEnd(permsStr, 8)) +
|
|
87
88
|
statusColor(padEnd(exec.status, 10)) +
|
|
@@ -9,7 +9,6 @@ export default class ExecutionLogs extends PMOCommand {
|
|
|
9
9
|
follow: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
10
|
tail: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
11
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
12
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
13
|
};
|
|
15
14
|
protected getPMOOptions(): {
|
|
@@ -32,8 +32,11 @@ export default class ExecutionLogs extends PMOCommand {
|
|
|
32
32
|
tail: Flags.integer({
|
|
33
33
|
char: 'n',
|
|
34
34
|
description: 'Show last n lines',
|
|
35
|
+
min: 1,
|
|
35
36
|
}),
|
|
36
37
|
json: Flags.boolean({
|
|
38
|
+
char: 'm',
|
|
39
|
+
aliases: ['machine'],
|
|
37
40
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
38
41
|
default: false,
|
|
39
42
|
}),
|
|
@@ -69,7 +72,7 @@ export default class ExecutionLogs extends PMOCommand {
|
|
|
69
72
|
}
|
|
70
73
|
this.error('No executions found.');
|
|
71
74
|
}
|
|
72
|
-
const jsonModeConfig =
|
|
75
|
+
const jsonModeConfig = flags.json ? { flags, commandName: 'execution logs' } : null;
|
|
73
76
|
const { selectedId } = await this.prompt([
|
|
74
77
|
{
|
|
75
78
|
type: 'list',
|
|
@@ -10,7 +10,6 @@ export default class ExecutionStop extends PMOCommand {
|
|
|
10
10
|
all: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
11
|
agent: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
12
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
13
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
14
|
};
|
|
16
15
|
protected getPMOOptions(): {
|
|
@@ -39,6 +39,8 @@ export default class ExecutionStop extends PMOCommand {
|
|
|
39
39
|
description: 'Stop all executions for a specific agent',
|
|
40
40
|
}),
|
|
41
41
|
json: Flags.boolean({
|
|
42
|
+
char: 'm',
|
|
43
|
+
aliases: ['machine'],
|
|
42
44
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
43
45
|
default: false,
|
|
44
46
|
}),
|
|
@@ -137,7 +139,7 @@ export default class ExecutionStop extends PMOCommand {
|
|
|
137
139
|
this.log(styles.muted('\nNo running executions found.\n'));
|
|
138
140
|
return;
|
|
139
141
|
}
|
|
140
|
-
const jsonModeConfig =
|
|
142
|
+
const jsonModeConfig = flags.json ? { flags: flags, commandName: 'execution stop' } : null;
|
|
141
143
|
const { selectedId } = await this.prompt([
|
|
142
144
|
{
|
|
143
145
|
type: 'list',
|
|
@@ -7,7 +7,6 @@ export default class ExecutionView extends PMOCommand {
|
|
|
7
7
|
};
|
|
8
8
|
static flags: {
|
|
9
9
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
10
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
11
|
};
|
|
13
12
|
protected getPMOOptions(): {
|
|
@@ -22,6 +22,8 @@ export default class ExecutionView extends PMOCommand {
|
|
|
22
22
|
static flags = {
|
|
23
23
|
...pmoBaseFlags,
|
|
24
24
|
json: Flags.boolean({
|
|
25
|
+
char: 'm',
|
|
26
|
+
aliases: ['machine'],
|
|
25
27
|
description: 'Output execution details as JSON',
|
|
26
28
|
default: false,
|
|
27
29
|
}),
|
|
@@ -67,7 +69,7 @@ export default class ExecutionView extends PMOCommand {
|
|
|
67
69
|
this.log(styles.muted('\nNo executions found.\n'));
|
|
68
70
|
return;
|
|
69
71
|
}
|
|
70
|
-
const jsonModeConfig =
|
|
72
|
+
const jsonModeConfig = flags.json ? { flags, commandName: 'execution view' } : null;
|
|
71
73
|
const { selectedId } = await this.prompt([
|
|
72
74
|
{
|
|
73
75
|
type: 'list',
|
|
@@ -3,7 +3,6 @@ export default class GH extends Command {
|
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static flags: {
|
|
6
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
6
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
7
|
};
|
|
9
8
|
run(): Promise<void>;
|
|
@@ -3,7 +3,6 @@ export default class GHLogin extends Command {
|
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static flags: {
|
|
6
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
6
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
7
|
};
|
|
9
8
|
run(): Promise<void>;
|
|
@@ -3,7 +3,6 @@ export default class GHStatus extends Command {
|
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static flags: {
|
|
6
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
6
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
7
|
};
|
|
9
8
|
run(): Promise<void>;
|
|
@@ -3,7 +3,6 @@ export default class GHToken extends Command {
|
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static flags: {
|
|
6
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
6
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
7
|
};
|
|
9
8
|
run(): Promise<void>;
|
package/dist/commands/init.js
CHANGED
|
@@ -11,7 +11,6 @@ export default class PhaseCreate extends PMOCommand {
|
|
|
11
11
|
description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
12
|
default: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
13
|
interactive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
14
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
15
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
16
|
};
|
|
@@ -71,7 +71,6 @@ export default class PhaseCreate extends PMOCommand {
|
|
|
71
71
|
color: flags.color,
|
|
72
72
|
description: flags.description,
|
|
73
73
|
default: flags.default,
|
|
74
|
-
machine: flags.machine,
|
|
75
74
|
json: flags.json,
|
|
76
75
|
},
|
|
77
76
|
});
|
|
@@ -83,7 +82,7 @@ export default class PhaseCreate extends PMOCommand {
|
|
|
83
82
|
flagName: 'name',
|
|
84
83
|
type: 'input',
|
|
85
84
|
message: 'Phase name:',
|
|
86
|
-
validate: (value) => value.
|
|
85
|
+
validate: (value) => value.trim() ? true : 'Name cannot be empty',
|
|
87
86
|
context: {
|
|
88
87
|
hint: 'Provide name with: prlt phase create "Phase Name" --category <category>',
|
|
89
88
|
example: 'prlt phase create "In Review" --category started',
|
|
@@ -7,7 +7,6 @@ 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>;
|
|
11
10
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
11
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
12
|
};
|
|
@@ -48,7 +48,7 @@ export default class PhaseDelete extends PMOCommand {
|
|
|
48
48
|
commandName: 'phase delete',
|
|
49
49
|
baseCommand: `prlt phase delete ${args.id}`,
|
|
50
50
|
jsonMode,
|
|
51
|
-
flags: {
|
|
51
|
+
flags: { json: flags.json },
|
|
52
52
|
});
|
|
53
53
|
resolver.addPrompt({
|
|
54
54
|
flagName: 'confirmed',
|
|
@@ -4,7 +4,6 @@ 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>;
|
|
8
7
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
8
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
9
|
};
|
|
@@ -7,7 +7,6 @@ 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>;
|
|
11
10
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
11
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
12
|
};
|
|
@@ -50,7 +50,7 @@ export default class PhaseMove extends PMOCommand {
|
|
|
50
50
|
commandName: 'phase move',
|
|
51
51
|
baseCommand: 'prlt phase move',
|
|
52
52
|
jsonMode,
|
|
53
|
-
flags: {
|
|
53
|
+
flags: { json: flags.json },
|
|
54
54
|
});
|
|
55
55
|
idResolver.addPrompt({
|
|
56
56
|
flagName: 'phaseId',
|
|
@@ -83,7 +83,7 @@ export default class PhaseMove extends PMOCommand {
|
|
|
83
83
|
commandName: 'phase move',
|
|
84
84
|
baseCommand: `prlt phase move ${phaseId}`,
|
|
85
85
|
jsonMode,
|
|
86
|
-
flags: {
|
|
86
|
+
flags: { json: flags.json },
|
|
87
87
|
});
|
|
88
88
|
posResolver.addPrompt({
|
|
89
89
|
flagName: 'position',
|
|
@@ -101,9 +101,17 @@ export default class PhaseMove extends PMOCommand {
|
|
|
101
101
|
}
|
|
102
102
|
newPosition = parseInt(resolved.position, 10);
|
|
103
103
|
}
|
|
104
|
+
// Get phases in same category for validation
|
|
105
|
+
const allPhases = await this.storage.listPhases();
|
|
106
|
+
const categoryPhases = allPhases.filter(p => p.category === phase.category);
|
|
107
|
+
const maxPosition = categoryPhases.length - 1;
|
|
104
108
|
if (newPosition < 0) {
|
|
105
109
|
this.error('Position must be >= 0');
|
|
106
110
|
}
|
|
111
|
+
if (newPosition > maxPosition) {
|
|
112
|
+
this.warn(`Position ${newPosition} exceeds max (${maxPosition}). Clamping to ${maxPosition}.`);
|
|
113
|
+
newPosition = maxPosition;
|
|
114
|
+
}
|
|
107
115
|
const updated = await this.storage.reorderPhase(phaseId, newPosition);
|
|
108
116
|
if (phase.position === updated.position) {
|
|
109
117
|
this.log(styles.muted(`Phase "${updated.name}" is already at position ${updated.position}`));
|
|
@@ -8,7 +8,6 @@ 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>;
|
|
12
11
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
12
|
};
|
|
14
13
|
protected getPMOOptions(): {
|
|
@@ -24,6 +24,8 @@ export default class PhaseTemplateApply extends PMOCommand {
|
|
|
24
24
|
default: false,
|
|
25
25
|
}),
|
|
26
26
|
json: Flags.boolean({
|
|
27
|
+
char: 'm',
|
|
28
|
+
aliases: ['machine'],
|
|
27
29
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
28
30
|
default: false,
|
|
29
31
|
}),
|
|
@@ -48,7 +50,7 @@ export default class PhaseTemplateApply extends PMOCommand {
|
|
|
48
50
|
if (!templateId) {
|
|
49
51
|
const templates = await this.storage.listPhaseTemplates();
|
|
50
52
|
if (templates.length === 0) {
|
|
51
|
-
return handleError('NO_TEMPLATES', `No phase templates found.\nCreate one with: prlt phase
|
|
53
|
+
return handleError('NO_TEMPLATES', `No phase templates found.\nCreate one with: prlt template phase create "Template Name"`);
|
|
52
54
|
}
|
|
53
55
|
const { selectedTemplate } = await inquirer.prompt([{
|
|
54
56
|
type: 'list',
|
|
@@ -64,7 +66,7 @@ export default class PhaseTemplateApply extends PMOCommand {
|
|
|
64
66
|
// Verify template exists
|
|
65
67
|
const template = await this.storage.getPhaseTemplate(templateId);
|
|
66
68
|
if (!template) {
|
|
67
|
-
return handleError('TEMPLATE_NOT_FOUND', `Phase template not found: ${templateId}. Run 'prlt phase
|
|
69
|
+
return handleError('TEMPLATE_NOT_FOUND', `Phase template not found: ${templateId}. Run 'prlt template phase list' to see available templates.`);
|
|
68
70
|
}
|
|
69
71
|
// Check if workspace has existing phases
|
|
70
72
|
const existingPhases = await this.storage.listPhases();
|
|
@@ -7,7 +7,6 @@ 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
10
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
11
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
12
|
};
|
|
@@ -32,8 +32,8 @@ export default class PhaseTemplateCreate extends PMOCommand {
|
|
|
32
32
|
const jsonMode = shouldOutputJson(flags);
|
|
33
33
|
// Build base command with positional arg if name provided
|
|
34
34
|
const baseCmd = args.name
|
|
35
|
-
? `prlt phase
|
|
36
|
-
: 'prlt phase
|
|
35
|
+
? `prlt template phase create "${args.name}"`
|
|
36
|
+
: 'prlt template phase create';
|
|
37
37
|
// Use FlagResolver for unified JSON mode and interactive handling
|
|
38
38
|
const resolver = new FlagResolver({
|
|
39
39
|
commandName: 'phase template create',
|
|
@@ -41,7 +41,6 @@ export default class PhaseTemplateCreate extends PMOCommand {
|
|
|
41
41
|
jsonMode,
|
|
42
42
|
flags: {
|
|
43
43
|
description: flags.description,
|
|
44
|
-
machine: flags.machine,
|
|
45
44
|
json: flags.json,
|
|
46
45
|
},
|
|
47
46
|
args: { name: args.name },
|
|
@@ -54,11 +53,11 @@ export default class PhaseTemplateCreate extends PMOCommand {
|
|
|
54
53
|
message: 'Template name:',
|
|
55
54
|
validate: (value) => value.length > 0 || 'Name is required',
|
|
56
55
|
context: {
|
|
57
|
-
hint: 'Provide name with: prlt phase
|
|
58
|
-
example: 'prlt phase
|
|
56
|
+
hint: 'Provide name with: prlt template phase create "Template Name"',
|
|
57
|
+
example: 'prlt template phase create "My Phases" --description "Custom phases"',
|
|
59
58
|
},
|
|
60
59
|
// For input prompts, the agent will re-run with the positional arg
|
|
61
|
-
getCommand: (value) => `prlt phase
|
|
60
|
+
getCommand: (value) => `prlt template phase create "${value}" --json`,
|
|
62
61
|
});
|
|
63
62
|
}
|
|
64
63
|
// Description prompt - optional (only in interactive mode without --json)
|
|
@@ -75,7 +74,7 @@ export default class PhaseTemplateCreate extends PMOCommand {
|
|
|
75
74
|
const templateName = args.name || resolved.name;
|
|
76
75
|
// Validate required fields
|
|
77
76
|
if (!templateName) {
|
|
78
|
-
this.error('Name is required. Provide as positional argument: prlt phase
|
|
77
|
+
this.error('Name is required. Provide as positional argument: prlt template phase create "Template Name"');
|
|
79
78
|
}
|
|
80
79
|
// Get description from flags or resolved
|
|
81
80
|
const description = flags.description ?? resolved.description ?? undefined;
|
|
@@ -8,7 +8,6 @@ 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>;
|
|
12
11
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
12
|
};
|
|
14
13
|
protected getPMOOptions(): {
|
|
@@ -5,7 +5,6 @@ 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>;
|
|
9
8
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
9
|
};
|
|
11
10
|
protected getPMOOptions(): {
|
|
@@ -11,6 +11,8 @@ export default class PhaseTemplateMenu extends PMOCommand {
|
|
|
11
11
|
static flags = {
|
|
12
12
|
...pmoBaseFlags,
|
|
13
13
|
json: Flags.boolean({
|
|
14
|
+
char: 'm',
|
|
15
|
+
aliases: ['machine'],
|
|
14
16
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
15
17
|
default: false,
|
|
16
18
|
}),
|
|
@@ -6,7 +6,6 @@ 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>;
|
|
10
9
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
10
|
};
|
|
12
11
|
protected getPMOOptions(): {
|