@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
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
3
|
+
import { shouldOutputJson } from '../../lib/prompt-json.js';
|
|
4
|
+
export default class TicketCategory extends PMOCommand {
|
|
5
|
+
static description = 'Manage ticket categories (feature, bug, refactor, etc.)';
|
|
6
|
+
static aliases = ['ticket:categories'];
|
|
7
|
+
static examples = [
|
|
8
|
+
'<%= config.bin %> <%= command.id %>',
|
|
9
|
+
'<%= config.bin %> <%= command.id %> list',
|
|
10
|
+
'<%= config.bin %> <%= command.id %> create spike',
|
|
11
|
+
'<%= config.bin %> <%= command.id %> rename spike investigation',
|
|
12
|
+
'<%= config.bin %> <%= command.id %> delete spike',
|
|
13
|
+
];
|
|
14
|
+
static flags = {
|
|
15
|
+
...pmoBaseFlags,
|
|
16
|
+
json: Flags.boolean({
|
|
17
|
+
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
18
|
+
default: false,
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
getPMOOptions() {
|
|
22
|
+
return { promptIfMultiple: false };
|
|
23
|
+
}
|
|
24
|
+
async execute() {
|
|
25
|
+
const { flags } = await this.parse(TicketCategory);
|
|
26
|
+
// Check if JSON output mode is active
|
|
27
|
+
const jsonMode = shouldOutputJson(flags);
|
|
28
|
+
// Show the action menu for ticket categories
|
|
29
|
+
const menuChoices = [
|
|
30
|
+
{ id: 'list', name: 'List all ticket categories', command: 'prlt category list --type ticket' },
|
|
31
|
+
{ id: 'create', name: 'Create new ticket category', command: 'prlt category create --type ticket --json' },
|
|
32
|
+
{ id: 'rename', name: 'Rename ticket category', command: 'prlt category rename --type ticket --json' },
|
|
33
|
+
{ id: 'delete', name: 'Delete ticket category', command: 'prlt category delete --type ticket --json' },
|
|
34
|
+
{ id: 'cancel', name: 'Cancel', command: '' },
|
|
35
|
+
];
|
|
36
|
+
const action = await this.selectFromList({
|
|
37
|
+
message: '🏷️ Ticket Categories - What would you like to do?',
|
|
38
|
+
items: menuChoices,
|
|
39
|
+
getName: (c) => c.name,
|
|
40
|
+
getValue: (c) => c.id,
|
|
41
|
+
getCommand: (c) => c.command,
|
|
42
|
+
jsonMode: jsonMode ? { flags, commandName: 'ticket category' } : null,
|
|
43
|
+
});
|
|
44
|
+
if (action === 'cancel' || !action) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Run the selected subcommand
|
|
48
|
+
switch (action) {
|
|
49
|
+
case 'list':
|
|
50
|
+
await this.config.runCommand('category:list', ['--type', 'ticket']);
|
|
51
|
+
break;
|
|
52
|
+
case 'create':
|
|
53
|
+
await this.config.runCommand('category:create', ['--type', 'ticket']);
|
|
54
|
+
break;
|
|
55
|
+
case 'rename':
|
|
56
|
+
await this.config.runCommand('category:rename', ['--type', 'ticket']);
|
|
57
|
+
break;
|
|
58
|
+
case 'delete':
|
|
59
|
+
await this.config.runCommand('category:delete', ['--type', 'ticket']);
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -9,7 +9,6 @@ export default class TicketComplete extends PMOCommand {
|
|
|
9
9
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
10
|
bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
11
|
force: 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>;
|
|
@@ -18,6 +18,8 @@ export default class TicketComplete extends PMOCommand {
|
|
|
18
18
|
static flags = {
|
|
19
19
|
...pmoBaseFlags,
|
|
20
20
|
json: Flags.boolean({
|
|
21
|
+
char: 'm',
|
|
22
|
+
aliases: ['machine'],
|
|
21
23
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
22
24
|
default: false,
|
|
23
25
|
}),
|
|
@@ -14,7 +14,6 @@ export default class TicketCreate extends PMOCommand {
|
|
|
14
14
|
epic: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
15
|
template: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
16
|
labels: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
18
17
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
18
|
};
|
|
20
19
|
execute(): Promise<void>;
|
|
@@ -11,7 +11,7 @@ export default class TicketCreate extends PMOCommand {
|
|
|
11
11
|
static examples = [
|
|
12
12
|
'<%= config.bin %> <%= command.id %>',
|
|
13
13
|
'<%= config.bin %> <%= command.id %> --title "Fix login bug" --column Backlog',
|
|
14
|
-
'<%= config.bin %> <%= command.id %> -t "Add feature" -c "In Progress" -p
|
|
14
|
+
'<%= config.bin %> <%= command.id %> -t "Add feature" -c "In Progress" -p P1',
|
|
15
15
|
'<%= config.bin %> <%= command.id %> --project mobile-app -t "New feature"',
|
|
16
16
|
'<%= config.bin %> <%= command.id %> --epic EPIC-001 -t "Implement auth flow"',
|
|
17
17
|
'<%= config.bin %> <%= command.id %> --json # Output column choices as JSON',
|
|
@@ -19,6 +19,8 @@ export default class TicketCreate extends PMOCommand {
|
|
|
19
19
|
static flags = {
|
|
20
20
|
...pmoBaseFlags,
|
|
21
21
|
json: Flags.boolean({
|
|
22
|
+
char: 'm',
|
|
23
|
+
aliases: ['machine'],
|
|
22
24
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
23
25
|
default: false,
|
|
24
26
|
}),
|
|
@@ -138,7 +140,7 @@ export default class TicketCreate extends PMOCommand {
|
|
|
138
140
|
type: 'input',
|
|
139
141
|
message: 'Enter ticket title:',
|
|
140
142
|
when: (ctx) => !ctx.flags.title && ctx.flags.column !== undefined,
|
|
141
|
-
validate: (value) => value.
|
|
143
|
+
validate: (value) => value.trim() ? true : 'Title cannot be empty',
|
|
142
144
|
context: (ctx) => ({
|
|
143
145
|
hint: `Provide title with: ${ctx.baseCommand}${ctx.projectId ? ` -P ${ctx.projectId}` : ''} --column "${ctx.flags.column}" --title "Your title here"`,
|
|
144
146
|
requiredFields: ['--title'],
|
|
@@ -261,7 +263,7 @@ export default class TicketCreate extends PMOCommand {
|
|
|
261
263
|
name: 'title',
|
|
262
264
|
message: 'Ticket title:',
|
|
263
265
|
default: flags.title || template?.titlePattern,
|
|
264
|
-
validate: (input) => input.
|
|
266
|
+
validate: (input) => input.trim() ? true : 'Title cannot be empty',
|
|
265
267
|
},
|
|
266
268
|
{
|
|
267
269
|
type: 'list',
|
|
@@ -316,7 +318,7 @@ export default class TicketCreate extends PMOCommand {
|
|
|
316
318
|
name: 'customCategory',
|
|
317
319
|
message: 'Enter custom category:',
|
|
318
320
|
when: (answers) => answers.categoryChoice === '__custom__',
|
|
319
|
-
validate: (input) => input.
|
|
321
|
+
validate: (input) => input.trim() ? true : 'Category cannot be empty',
|
|
320
322
|
},
|
|
321
323
|
]);
|
|
322
324
|
// Resolve category from choice or custom input
|
|
@@ -351,7 +353,7 @@ export default class TicketCreate extends PMOCommand {
|
|
|
351
353
|
type: 'input',
|
|
352
354
|
name: 'what',
|
|
353
355
|
message: 'What is the concrete outcome? (one sentence):',
|
|
354
|
-
validate: (input) => input.
|
|
356
|
+
validate: (input) => input.trim() ? true : 'Outcome cannot be empty - what does success look like?',
|
|
355
357
|
},
|
|
356
358
|
{
|
|
357
359
|
type: 'input',
|
|
@@ -9,7 +9,6 @@ export default class TicketDelete extends PMOCommand {
|
|
|
9
9
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
10
|
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
11
|
bulk: 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>;
|
|
@@ -21,6 +21,8 @@ export default class TicketDelete extends PMOCommand {
|
|
|
21
21
|
static flags = {
|
|
22
22
|
...pmoBaseFlags,
|
|
23
23
|
json: Flags.boolean({
|
|
24
|
+
char: 'm',
|
|
25
|
+
aliases: ['machine'],
|
|
24
26
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
25
27
|
default: false,
|
|
26
28
|
}),
|
|
@@ -20,7 +20,6 @@ export default class TicketEdit extends PMOCommand {
|
|
|
20
20
|
'clear-ac': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
21
21
|
interactive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
22
22
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
23
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
24
23
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
25
24
|
};
|
|
26
25
|
execute(): Promise<void>;
|
|
@@ -9,7 +9,7 @@ export default class TicketEdit extends PMOCommand {
|
|
|
9
9
|
static examples = [
|
|
10
10
|
'<%= config.bin %> <%= command.id %> TICK-001',
|
|
11
11
|
'<%= config.bin %> <%= command.id %> TICK-001 --title "New title"',
|
|
12
|
-
'<%= config.bin %> <%= command.id %> TICK-001 --priority
|
|
12
|
+
'<%= config.bin %> <%= command.id %> TICK-001 --priority P1 --category bug',
|
|
13
13
|
'<%= config.bin %> <%= command.id %> TICK-001 --add-subtask "Implement feature" --add-subtask "Write tests"',
|
|
14
14
|
'<%= config.bin %> <%= command.id %> TICK-001 --owner "john" --assignee "agent-1"',
|
|
15
15
|
'<%= config.bin %> <%= command.id %> # Interactive mode',
|
|
@@ -76,6 +76,8 @@ export default class TicketEdit extends PMOCommand {
|
|
|
76
76
|
default: false,
|
|
77
77
|
}),
|
|
78
78
|
json: Flags.boolean({
|
|
79
|
+
char: 'm',
|
|
80
|
+
aliases: ['machine'],
|
|
79
81
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
80
82
|
default: false,
|
|
81
83
|
}),
|
|
@@ -248,7 +250,7 @@ export default class TicketEdit extends PMOCommand {
|
|
|
248
250
|
name: 'title',
|
|
249
251
|
message: 'Title:',
|
|
250
252
|
default: ticket.title,
|
|
251
|
-
validate: (input) => input.
|
|
253
|
+
validate: (input) => input.trim() ? true : 'Title cannot be empty',
|
|
252
254
|
},
|
|
253
255
|
{
|
|
254
256
|
type: 'editor',
|
|
@@ -303,7 +305,7 @@ export default class TicketEdit extends PMOCommand {
|
|
|
303
305
|
name: 'customCategory',
|
|
304
306
|
message: 'Enter custom category:',
|
|
305
307
|
when: (answers) => answers.categoryChoice === '__custom__',
|
|
306
|
-
validate: (input) => input.
|
|
308
|
+
validate: (input) => input.trim() ? true : 'Category cannot be empty',
|
|
307
309
|
},
|
|
308
310
|
]);
|
|
309
311
|
// Build updates object with only changed fields
|
|
@@ -13,7 +13,6 @@ export default class TicketEpic extends PMOCommand {
|
|
|
13
13
|
'to-epic': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
14
|
'from-epic': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
15
|
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
17
16
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
17
|
};
|
|
19
18
|
execute(): Promise<void>;
|
|
@@ -24,6 +24,8 @@ export default class TicketEpic 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
|
}),
|
|
@@ -4,7 +4,6 @@ export default class Ticket 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(): {
|
|
@@ -8,7 +8,6 @@ export default class TicketLinkBlock extends PMOCommand {
|
|
|
8
8
|
};
|
|
9
9
|
static flags: {
|
|
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
|
execute(): Promise<void>;
|
|
@@ -21,6 +21,8 @@ export default class TicketLinkBlock extends PMOCommand {
|
|
|
21
21
|
static flags = {
|
|
22
22
|
...pmoBaseFlags,
|
|
23
23
|
json: Flags.boolean({
|
|
24
|
+
char: 'm',
|
|
25
|
+
aliases: ['machine'],
|
|
24
26
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
25
27
|
default: false,
|
|
26
28
|
}),
|
|
@@ -8,7 +8,6 @@ export default class TicketLinkDuplicates extends PMOCommand {
|
|
|
8
8
|
};
|
|
9
9
|
static flags: {
|
|
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
|
execute(): Promise<void>;
|
|
@@ -21,6 +21,8 @@ export default class TicketLinkDuplicates extends PMOCommand {
|
|
|
21
21
|
static flags = {
|
|
22
22
|
...pmoBaseFlags,
|
|
23
23
|
json: Flags.boolean({
|
|
24
|
+
char: 'm',
|
|
25
|
+
aliases: ['machine'],
|
|
24
26
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
25
27
|
default: false,
|
|
26
28
|
}),
|
|
@@ -11,7 +11,6 @@ export default class TicketLink extends PMOCommand {
|
|
|
11
11
|
relates: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
12
|
duplicates: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
13
|
all: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
14
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
15
|
};
|
|
17
16
|
execute(): Promise<void>;
|
|
@@ -20,6 +20,8 @@ export default class TicketLink extends PMOCommand {
|
|
|
20
20
|
static flags = {
|
|
21
21
|
...pmoBaseFlags,
|
|
22
22
|
json: Flags.boolean({
|
|
23
|
+
char: 'm',
|
|
24
|
+
aliases: ['machine'],
|
|
23
25
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
24
26
|
default: false,
|
|
25
27
|
}),
|
|
@@ -8,7 +8,6 @@ export default class TicketLinkRelates extends PMOCommand {
|
|
|
8
8
|
};
|
|
9
9
|
static flags: {
|
|
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
|
execute(): Promise<void>;
|
|
@@ -21,6 +21,8 @@ export default class TicketLinkRelates extends PMOCommand {
|
|
|
21
21
|
static flags = {
|
|
22
22
|
...pmoBaseFlags,
|
|
23
23
|
json: Flags.boolean({
|
|
24
|
+
char: 'm',
|
|
25
|
+
aliases: ['machine'],
|
|
24
26
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
25
27
|
default: false,
|
|
26
28
|
}),
|
|
@@ -10,7 +10,6 @@ export default class TicketLinkRemove extends PMOCommand {
|
|
|
10
10
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
11
|
type: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
12
|
all: 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
|
execute(): Promise<void>;
|
|
@@ -23,6 +23,8 @@ export default class TicketLinkRemove extends PMOCommand {
|
|
|
23
23
|
static flags = {
|
|
24
24
|
...pmoBaseFlags,
|
|
25
25
|
json: Flags.boolean({
|
|
26
|
+
char: 'm',
|
|
27
|
+
aliases: ['machine'],
|
|
26
28
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
27
29
|
default: false,
|
|
28
30
|
}),
|
|
@@ -10,7 +10,8 @@ export default class TicketList extends Command {
|
|
|
10
10
|
format: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
11
|
all: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
12
|
'group-by': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
-
|
|
13
|
+
limit: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
offset: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
15
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
16
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
17
|
};
|
|
@@ -10,13 +10,15 @@ export default class TicketList extends Command {
|
|
|
10
10
|
static examples = [
|
|
11
11
|
'<%= config.bin %> <%= command.id %>',
|
|
12
12
|
'<%= config.bin %> <%= command.id %> --column Backlog',
|
|
13
|
-
'<%= config.bin %> <%= command.id %> --priority
|
|
13
|
+
'<%= config.bin %> <%= command.id %> --priority P0',
|
|
14
14
|
'<%= config.bin %> <%= command.id %> --category bug',
|
|
15
15
|
'<%= config.bin %> <%= command.id %> --search "login"',
|
|
16
16
|
'<%= config.bin %> <%= command.id %> --project mobile-app',
|
|
17
17
|
'<%= config.bin %> <%= command.id %> --all',
|
|
18
18
|
'<%= config.bin %> <%= command.id %> --all --group-by priority',
|
|
19
19
|
'<%= config.bin %> <%= command.id %> -g priority',
|
|
20
|
+
'<%= config.bin %> <%= command.id %> --limit 10',
|
|
21
|
+
'<%= config.bin %> <%= command.id %> --limit 10 --offset 20',
|
|
20
22
|
];
|
|
21
23
|
static flags = {
|
|
22
24
|
...pmoBaseFlags,
|
|
@@ -53,6 +55,15 @@ export default class TicketList extends Command {
|
|
|
53
55
|
options: ['status', 'priority'],
|
|
54
56
|
default: 'status',
|
|
55
57
|
}),
|
|
58
|
+
limit: Flags.integer({
|
|
59
|
+
char: 'l',
|
|
60
|
+
description: 'Maximum number of tickets to display',
|
|
61
|
+
min: 1,
|
|
62
|
+
}),
|
|
63
|
+
offset: Flags.integer({
|
|
64
|
+
description: 'Skip first N tickets (for pagination)',
|
|
65
|
+
min: 0,
|
|
66
|
+
}),
|
|
56
67
|
};
|
|
57
68
|
async run() {
|
|
58
69
|
const { flags } = await this.parse(TicketList);
|
|
@@ -85,7 +96,33 @@ export default class TicketList extends Command {
|
|
|
85
96
|
}
|
|
86
97
|
// Determine projectId for the query
|
|
87
98
|
const projectId = flags.all ? undefined : (filter.projectId || undefined);
|
|
88
|
-
|
|
99
|
+
// Validate project if specified (not in --all mode)
|
|
100
|
+
if (flags.project && !flags.all) {
|
|
101
|
+
const project = await pmoContext.storage.getProject(flags.project);
|
|
102
|
+
if (!project) {
|
|
103
|
+
const allProjects = await pmoContext.storage.listProjectSummaries();
|
|
104
|
+
const validProjectIds = allProjects.map(p => p.id);
|
|
105
|
+
this.error(`Project "${flags.project}" not found. Valid projects: ${validProjectIds.join(', ')}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Validate column if specified (requires knowing the project)
|
|
109
|
+
if (flags.column && !flags.all) {
|
|
110
|
+
// Get the project board to validate the column
|
|
111
|
+
const targetProjectId = projectId || (await pmoContext.storage.listProjectSummaries())[0]?.id;
|
|
112
|
+
if (targetProjectId) {
|
|
113
|
+
const board = await pmoContext.storage.getBoard(targetProjectId);
|
|
114
|
+
const validColumns = board.columns.map(c => c.name);
|
|
115
|
+
if (!validColumns.includes(flags.column)) {
|
|
116
|
+
this.error(`Column "${flags.column}" not found. Valid columns: ${validColumns.join(', ')}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
let tickets = await pmoContext.storage.listTickets(projectId, filter);
|
|
121
|
+
// Apply pagination
|
|
122
|
+
if (flags.offset)
|
|
123
|
+
tickets = tickets.slice(flags.offset);
|
|
124
|
+
if (flags.limit)
|
|
125
|
+
tickets = tickets.slice(0, flags.limit);
|
|
89
126
|
if (tickets.length === 0) {
|
|
90
127
|
this.log(styles.warning('No tickets found.'));
|
|
91
128
|
return;
|
|
@@ -11,7 +11,6 @@ export default class TicketMove extends PMOCommand {
|
|
|
11
11
|
position: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
12
|
bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
13
|
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
14
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
15
|
};
|
|
17
16
|
execute(): Promise<void>;
|
|
@@ -23,6 +23,8 @@ export default class TicketMove extends PMOCommand {
|
|
|
23
23
|
static flags = {
|
|
24
24
|
...pmoBaseFlags,
|
|
25
25
|
json: Flags.boolean({
|
|
26
|
+
char: 'm',
|
|
27
|
+
aliases: ['machine'],
|
|
26
28
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
27
29
|
default: false,
|
|
28
30
|
}),
|
|
@@ -11,7 +11,6 @@ export default class TicketProject extends PMOCommand {
|
|
|
11
11
|
'keep-epic': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
12
|
bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
13
|
target: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
14
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
15
|
};
|
|
17
16
|
execute(): Promise<void>;
|
|
@@ -24,6 +24,8 @@ export default class TicketProject 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
|
}),
|
|
@@ -12,7 +12,6 @@ export default class TicketReassign extends PMOCommand {
|
|
|
12
12
|
from: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
13
|
bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
14
|
force: 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>;
|
|
@@ -3,6 +3,7 @@ import inquirer from 'inquirer';
|
|
|
3
3
|
import { PMOCommand, pmoBaseFlags, autoExportToBoard } from '../../lib/pmo/index.js';
|
|
4
4
|
import { styles } from '../../lib/styles.js';
|
|
5
5
|
import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
|
|
6
|
+
import { getWorkspaceInfo } from '../../lib/agents/commands.js';
|
|
6
7
|
export default class TicketReassign extends PMOCommand {
|
|
7
8
|
static description = 'Reassign ticket(s) to a different agent';
|
|
8
9
|
static examples = [
|
|
@@ -25,6 +26,8 @@ export default class TicketReassign extends PMOCommand {
|
|
|
25
26
|
static flags = {
|
|
26
27
|
...pmoBaseFlags,
|
|
27
28
|
json: Flags.boolean({
|
|
29
|
+
char: 'm',
|
|
30
|
+
aliases: ['machine'],
|
|
28
31
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
29
32
|
default: false,
|
|
30
33
|
}),
|
|
@@ -140,6 +143,19 @@ export default class TicketReassign extends PMOCommand {
|
|
|
140
143
|
if (targetAssignee === 'none' || targetAssignee === 'unassigned') {
|
|
141
144
|
targetAssignee = undefined;
|
|
142
145
|
}
|
|
146
|
+
// Validate agent name if provided directly (not through interactive prompt)
|
|
147
|
+
if (targetAssignee && (args.assignee || flags.to)) {
|
|
148
|
+
try {
|
|
149
|
+
const workspaceInfo = getWorkspaceInfo();
|
|
150
|
+
const agent = workspaceInfo.agents.find(a => a.name === targetAssignee);
|
|
151
|
+
if (!agent) {
|
|
152
|
+
this.error(`Agent "${targetAssignee}" not found. Run 'prlt agent list' to see available agents.`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// Not in a workspace or agents table doesn't exist - skip validation
|
|
157
|
+
}
|
|
158
|
+
}
|
|
143
159
|
// Check if same
|
|
144
160
|
if (targetAssignee === ticket.assignee) {
|
|
145
161
|
this.log(styles.muted(`Ticket "${ticketId}" is already assigned to "${targetAssignee || 'none'}".`));
|
|
@@ -222,6 +238,19 @@ export default class TicketReassign extends PMOCommand {
|
|
|
222
238
|
if (targetAssignee === 'none' || targetAssignee === 'unassigned') {
|
|
223
239
|
targetAssignee = undefined;
|
|
224
240
|
}
|
|
241
|
+
// Validate agent name if provided directly via --to flag (not through interactive prompt)
|
|
242
|
+
if (targetAssignee && flags.to) {
|
|
243
|
+
try {
|
|
244
|
+
const workspaceInfo = getWorkspaceInfo();
|
|
245
|
+
const agent = workspaceInfo.agents.find(a => a.name === targetAssignee);
|
|
246
|
+
if (!agent) {
|
|
247
|
+
this.error(`Agent "${targetAssignee}" not found. Run 'prlt agent list' to see available agents.`);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// Not in a workspace or agents table doesn't exist - skip validation
|
|
252
|
+
}
|
|
253
|
+
}
|
|
225
254
|
// Confirmation
|
|
226
255
|
if (!flags.force) {
|
|
227
256
|
const assigneeLabel = targetAssignee || 'None (unassigning)';
|
|
@@ -11,7 +11,6 @@ export default class TicketSpec extends PMOCommand {
|
|
|
11
11
|
unlink: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
12
|
bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
13
|
spec: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
14
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
15
|
};
|
|
17
16
|
execute(): Promise<void>;
|
|
@@ -25,6 +25,8 @@ export default class TicketSpec extends PMOCommand {
|
|
|
25
25
|
static flags = {
|
|
26
26
|
...pmoBaseFlags,
|
|
27
27
|
json: Flags.boolean({
|
|
28
|
+
char: 'm',
|
|
29
|
+
aliases: ['machine'],
|
|
28
30
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
29
31
|
default: false,
|
|
30
32
|
}),
|
|
@@ -7,7 +7,6 @@ export default class TicketStatus 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>;
|
|
@@ -17,6 +17,8 @@ export default class TicketStatus extends PMOCommand {
|
|
|
17
17
|
static flags = {
|
|
18
18
|
...pmoBaseFlags,
|
|
19
19
|
json: Flags.boolean({
|
|
20
|
+
char: 'm',
|
|
21
|
+
aliases: ['machine'],
|
|
20
22
|
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
21
23
|
default: false,
|
|
22
24
|
}),
|
|
@@ -19,7 +19,6 @@ export default class TicketTemplateApply extends PMOCommand {
|
|
|
19
19
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
20
20
|
'no-subtasks': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
21
21
|
epic: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
23
22
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
24
23
|
};
|
|
25
24
|
execute(): Promise<void>;
|
|
@@ -15,7 +15,6 @@ export default class TicketTemplateCreate extends PMOCommand {
|
|
|
15
15
|
ac: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
16
|
label: 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
|
protected getPMOOptions(): {
|