@proletariat/cli 0.3.33 → 0.3.35
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 +1 -0
- package/dist/commands/action/delete.d.ts +1 -0
- package/dist/commands/action/index.d.ts +1 -0
- package/dist/commands/action/list.d.ts +1 -0
- package/dist/commands/action/list.js +0 -6
- package/dist/commands/action/run.d.ts +1 -0
- package/dist/commands/action/show.d.ts +1 -0
- package/dist/commands/action/update.d.ts +1 -0
- package/dist/commands/agent/auth.d.ts +5 -2
- package/dist/commands/agent/auth.js +10 -17
- package/dist/commands/agent/cleanup.d.ts +2 -1
- package/dist/commands/agent/cleanup.js +0 -6
- package/dist/commands/agent/discover.d.ts +2 -1
- package/dist/commands/agent/discover.js +2 -6
- package/dist/commands/agent/index.d.ts +1 -0
- package/dist/commands/agent/index.js +11 -9
- package/dist/commands/agent/list.d.ts +1 -0
- package/dist/commands/agent/login.d.ts +1 -0
- package/dist/commands/agent/login.js +1 -7
- package/dist/commands/agent/rebuild.d.ts +2 -1
- package/dist/commands/agent/rebuild.js +0 -6
- package/dist/commands/agent/remove.d.ts +2 -1
- package/dist/commands/agent/remove.js +0 -6
- package/dist/commands/agent/restart.d.ts +1 -0
- package/dist/commands/agent/restart.js +1 -7
- package/dist/commands/agent/shell.d.ts +1 -0
- package/dist/commands/agent/shell.js +1 -7
- package/dist/commands/agent/staff/add.d.ts +1 -0
- package/dist/commands/agent/staff/add.js +1 -0
- package/dist/commands/agent/staff/index.d.ts +15 -0
- package/dist/commands/agent/staff/index.js +83 -0
- package/dist/commands/agent/staff/list.d.ts +1 -0
- package/dist/commands/agent/staff/list.js +1 -0
- package/dist/commands/agent/staff/remove.d.ts +1 -0
- package/dist/commands/agent/staff/remove.js +1 -0
- package/dist/commands/agent/status.d.ts +1 -0
- package/dist/commands/agent/status.js +1 -7
- package/dist/commands/agent/themes/add-names.d.ts +1 -0
- package/dist/commands/agent/themes/add-names.js +1 -0
- package/dist/commands/agent/themes/create.d.ts +1 -0
- package/dist/commands/agent/themes/create.js +1 -0
- package/dist/commands/agent/themes/index.d.ts +10 -0
- package/dist/commands/agent/themes/index.js +144 -0
- package/dist/commands/agent/themes/list.d.ts +1 -0
- package/dist/commands/agent/themes/list.js +1 -0
- package/dist/commands/agent/themes/set.d.ts +1 -0
- package/dist/commands/agent/themes/set.js +1 -0
- package/dist/commands/agent/visit.d.ts +1 -0
- package/dist/commands/agent/visit.js +1 -7
- package/dist/commands/agents/themes/add-names.d.ts +1 -0
- package/dist/commands/agents/themes/add-names.js +1 -0
- package/dist/commands/agents/themes/create.d.ts +1 -0
- package/dist/commands/agents/themes/create.js +1 -0
- package/dist/commands/agents/themes/list.d.ts +1 -0
- package/dist/commands/agents/themes/list.js +1 -0
- package/dist/commands/autocomplete/setup.d.ts +1 -0
- package/dist/commands/board/index.d.ts +1 -0
- package/dist/commands/board/view.d.ts +1 -0
- package/dist/commands/board/watch.d.ts +1 -0
- package/dist/commands/branch/create.d.ts +1 -0
- package/dist/commands/branch/create.js +0 -6
- package/dist/commands/branch/index.d.ts +1 -0
- package/dist/commands/branch/index.js +0 -7
- package/dist/commands/branch/list.d.ts +1 -0
- package/dist/commands/branch/validate.d.ts +1 -0
- package/dist/commands/branch/where.d.ts +1 -0
- package/dist/commands/branch/where.js +3 -9
- package/dist/commands/category/create.d.ts +1 -0
- package/dist/commands/category/delete.d.ts +1 -0
- package/dist/commands/category/index.d.ts +1 -0
- package/dist/commands/category/list.d.ts +1 -0
- package/dist/commands/category/list.js +2 -2
- package/dist/commands/category/rename.d.ts +1 -0
- package/dist/commands/claude.d.ts +2 -1
- package/dist/commands/claude.js +2 -6
- package/dist/commands/commit.d.ts +2 -1
- package/dist/commands/commit.js +2 -6
- package/dist/commands/config/index.d.ts +2 -1
- package/dist/commands/config/index.js +3 -7
- package/dist/commands/diet.d.ts +1 -0
- package/dist/commands/docker/clean.d.ts +1 -0
- package/dist/commands/docker/index.d.ts +1 -0
- package/dist/commands/docker/list.d.ts +1 -0
- package/dist/commands/docker/logs.d.ts +2 -0
- package/dist/commands/docker/logs.js +2 -0
- package/dist/commands/docker/prune.d.ts +1 -0
- package/dist/commands/docker/restart.d.ts +1 -0
- package/dist/commands/docker/shell.d.ts +2 -0
- package/dist/commands/docker/shell.js +2 -0
- package/dist/commands/docker/start.d.ts +2 -0
- package/dist/commands/docker/start.js +2 -0
- package/dist/commands/docker/status.d.ts +1 -0
- package/dist/commands/docker/stop.d.ts +1 -0
- package/dist/commands/epic/activate.d.ts +1 -0
- package/dist/commands/epic/activate.js +1 -7
- package/dist/commands/epic/archive.d.ts +2 -1
- package/dist/commands/epic/archive.js +0 -6
- package/dist/commands/epic/create.d.ts +2 -1
- package/dist/commands/epic/create.js +0 -6
- package/dist/commands/epic/delete.d.ts +1 -0
- package/dist/commands/epic/index.d.ts +1 -0
- package/dist/commands/epic/index.js +0 -7
- package/dist/commands/epic/list.d.ts +1 -0
- package/dist/commands/epic/move.d.ts +2 -1
- package/dist/commands/epic/move.js +0 -6
- package/dist/commands/epic/progress.d.ts +2 -1
- package/dist/commands/epic/progress.js +0 -6
- package/dist/commands/epic/project.d.ts +2 -1
- package/dist/commands/epic/project.js +0 -6
- package/dist/commands/epic/reorder.d.ts +1 -0
- package/dist/commands/epic/reorder.js +0 -6
- package/dist/commands/epic/spec.d.ts +2 -1
- package/dist/commands/epic/spec.js +0 -6
- package/dist/commands/epic/ticket.d.ts +2 -1
- package/dist/commands/epic/ticket.js +0 -6
- package/dist/commands/epic/view.d.ts +1 -0
- package/dist/commands/epic/view.js +1 -7
- package/dist/commands/execution/config.d.ts +2 -1
- package/dist/commands/execution/config.js +1 -7
- package/dist/commands/execution/index.d.ts +1 -0
- package/dist/commands/execution/index.js +1 -8
- package/dist/commands/execution/list.d.ts +1 -0
- package/dist/commands/execution/logs.d.ts +1 -0
- package/dist/commands/execution/logs.js +1 -7
- package/dist/commands/execution/stop.d.ts +1 -0
- package/dist/commands/execution/stop.js +1 -7
- package/dist/commands/execution/view.d.ts +1 -0
- package/dist/commands/execution/view.js +2 -8
- package/dist/commands/feedback/index.d.ts +1 -0
- package/dist/commands/feedback/list.d.ts +1 -0
- package/dist/commands/feedback/submit.d.ts +1 -0
- package/dist/commands/feedback/view.d.ts +1 -0
- package/dist/commands/gh/index.d.ts +1 -0
- package/dist/commands/gh/login.d.ts +1 -0
- package/dist/commands/gh/status.d.ts +1 -0
- package/dist/commands/gh/token.d.ts +1 -0
- package/dist/commands/init.d.ts +2 -1
- package/dist/commands/init.js +3 -8
- package/dist/commands/label/create.d.ts +20 -0
- package/dist/commands/label/create.js +56 -0
- package/dist/commands/label/delete.d.ts +17 -0
- package/dist/commands/label/delete.js +31 -0
- package/dist/commands/label/group/create.d.ts +20 -0
- package/dist/commands/label/group/create.js +54 -0
- package/dist/commands/label/group/list.d.ts +14 -0
- package/dist/commands/label/group/list.js +51 -0
- package/dist/commands/label/index.d.ts +15 -0
- package/dist/commands/label/index.js +58 -0
- package/dist/commands/label/list.d.ts +16 -0
- package/dist/commands/label/list.js +82 -0
- package/dist/commands/link/create.d.ts +1 -0
- package/dist/commands/link/create.js +0 -6
- package/dist/commands/link/index.d.ts +1 -0
- package/dist/commands/link/index.js +1 -7
- package/dist/commands/link/list.d.ts +1 -0
- package/dist/commands/link/list.js +3 -8
- package/dist/commands/link/remove.d.ts +1 -0
- package/dist/commands/link/remove.js +0 -6
- package/dist/commands/mcp-server.js +2 -1
- package/dist/commands/phase/create.d.ts +1 -0
- package/dist/commands/phase/create.js +1 -1
- package/dist/commands/phase/delete.d.ts +1 -0
- package/dist/commands/phase/delete.js +1 -1
- package/dist/commands/phase/list.d.ts +1 -0
- package/dist/commands/phase/move.d.ts +1 -0
- package/dist/commands/phase/move.js +2 -2
- package/dist/commands/phase/template/apply.d.ts +26 -0
- package/dist/commands/phase/template/apply.js +14 -0
- package/dist/commands/phase/template/create.d.ts +23 -0
- package/dist/commands/phase/template/create.js +14 -0
- package/dist/commands/phase/template/delete.d.ts +18 -0
- package/dist/commands/phase/template/delete.js +61 -0
- package/dist/commands/phase/template/list.d.ts +17 -0
- package/dist/commands/phase/template/list.js +88 -0
- package/dist/commands/phase/template/update.d.ts +1 -0
- package/dist/commands/phase/template/update.js +1 -0
- package/dist/commands/phase/update.d.ts +1 -0
- package/dist/commands/phase/update.js +2 -2
- package/dist/commands/pmo/init.d.ts +4 -3
- package/dist/commands/pmo/init.js +2 -7
- package/dist/commands/pr/create.d.ts +1 -0
- package/dist/commands/pr/index.d.ts +1 -0
- package/dist/commands/pr/link.d.ts +1 -0
- package/dist/commands/pr/list.d.ts +1 -0
- package/dist/commands/pr/status.d.ts +1 -0
- package/dist/commands/priority/add.d.ts +1 -0
- package/dist/commands/priority/add.js +1 -1
- package/dist/commands/priority/list.d.ts +1 -0
- package/dist/commands/priority/remove.d.ts +1 -0
- package/dist/commands/priority/set.d.ts +1 -0
- package/dist/commands/project/archive.d.ts +1 -0
- package/dist/commands/project/create.d.ts +1 -0
- package/dist/commands/project/delete.d.ts +1 -0
- package/dist/commands/project/index.d.ts +1 -0
- package/dist/commands/project/list.d.ts +1 -0
- package/dist/commands/project/spec.d.ts +1 -0
- package/dist/commands/project/unarchive.d.ts +1 -0
- package/dist/commands/project/update.d.ts +1 -0
- package/dist/commands/project/update.js +0 -2
- package/dist/commands/project/view.d.ts +1 -0
- package/dist/commands/pull.d.ts +1 -0
- package/dist/commands/repo/add.d.ts +1 -0
- package/dist/commands/repo/add.js +0 -6
- package/dist/commands/repo/create.d.ts +1 -0
- package/dist/commands/repo/index.d.ts +1 -0
- package/dist/commands/repo/list.d.ts +1 -0
- package/dist/commands/repo/remove.d.ts +1 -0
- package/dist/commands/repo/view.d.ts +1 -0
- package/dist/commands/roadmap/add-project.d.ts +1 -0
- package/dist/commands/roadmap/add-project.js +0 -6
- package/dist/commands/roadmap/create.d.ts +1 -0
- package/dist/commands/roadmap/create.js +0 -6
- package/dist/commands/roadmap/delete.d.ts +1 -0
- package/dist/commands/roadmap/delete.js +0 -6
- package/dist/commands/roadmap/generate.d.ts +1 -0
- package/dist/commands/roadmap/generate.js +1 -8
- package/dist/commands/roadmap/index.d.ts +1 -0
- package/dist/commands/roadmap/index.js +0 -7
- package/dist/commands/roadmap/list.d.ts +1 -0
- package/dist/commands/roadmap/remove-project.d.ts +1 -0
- package/dist/commands/roadmap/remove-project.js +0 -6
- package/dist/commands/roadmap/reorder.d.ts +1 -0
- package/dist/commands/roadmap/reorder.js +0 -6
- package/dist/commands/roadmap/update.d.ts +1 -0
- package/dist/commands/roadmap/update.js +0 -6
- package/dist/commands/roadmap/view.d.ts +1 -0
- package/dist/commands/roadmap/view.js +1 -7
- package/dist/commands/session/attach.d.ts +2 -1
- package/dist/commands/session/attach.js +0 -6
- package/dist/commands/session/health.d.ts +1 -0
- package/dist/commands/session/health.js +1 -1
- package/dist/commands/session/index.d.ts +1 -0
- package/dist/commands/session/index.js +0 -7
- package/dist/commands/session/list.d.ts +1 -0
- package/dist/commands/spec/create.d.ts +1 -0
- package/dist/commands/spec/delete.d.ts +1 -0
- package/dist/commands/spec/edit.d.ts +1 -0
- package/dist/commands/spec/index.d.ts +1 -0
- package/dist/commands/spec/link/depends.d.ts +18 -0
- package/dist/commands/spec/link/depends.js +86 -0
- package/dist/commands/spec/link/index.d.ts +17 -0
- package/dist/commands/spec/link/index.js +92 -0
- package/dist/commands/spec/link/remove.d.ts +18 -0
- package/dist/commands/spec/link/remove.js +90 -0
- package/dist/commands/spec/list.d.ts +1 -0
- package/dist/commands/spec/plan.d.ts +1 -0
- package/dist/commands/spec/ticket.d.ts +1 -0
- package/dist/commands/spec/view.d.ts +1 -0
- package/dist/commands/staff/add.d.ts +3 -2
- package/dist/commands/staff/add.js +2 -6
- package/dist/commands/staff/index.d.ts +2 -1
- package/dist/commands/staff/index.js +0 -6
- package/dist/commands/staff/list.d.ts +1 -0
- package/dist/commands/staff/remove.d.ts +2 -1
- package/dist/commands/staff/remove.js +0 -6
- package/dist/commands/status/category.d.ts +1 -0
- package/dist/commands/status/create.d.ts +1 -0
- package/dist/commands/status/delete.d.ts +1 -0
- package/dist/commands/status/index.d.ts +1 -0
- package/dist/commands/status/list.d.ts +1 -0
- package/dist/commands/status/move.d.ts +1 -0
- package/dist/commands/status/update.d.ts +1 -0
- package/dist/commands/support/book.d.ts +1 -0
- package/dist/commands/support/discord.d.ts +1 -0
- package/dist/commands/support/docs.d.ts +1 -0
- package/dist/commands/support/index.d.ts +1 -0
- package/dist/commands/support/issues.d.ts +1 -0
- package/dist/commands/support/logs.d.ts +1 -0
- package/dist/commands/support/logs.js +2 -2
- package/dist/commands/template/apply.d.ts +1 -0
- package/dist/commands/template/apply.js +5 -10
- package/dist/commands/template/create.d.ts +1 -0
- package/dist/commands/template/create.js +1 -7
- package/dist/commands/template/delete.d.ts +1 -0
- package/dist/commands/template/delete.js +0 -6
- package/dist/commands/template/index.d.ts +1 -0
- package/dist/commands/template/index.js +2 -7
- package/dist/commands/template/list.d.ts +1 -0
- package/dist/commands/template/list.js +1 -7
- package/dist/commands/template/save.d.ts +1 -0
- package/dist/commands/template/save.js +0 -6
- package/dist/commands/template/update.d.ts +1 -0
- package/dist/commands/template/update.js +0 -6
- package/dist/commands/terminal/title.d.ts +1 -0
- package/dist/commands/theme/index.d.ts +1 -0
- package/dist/commands/theme/index.js +2 -7
- package/dist/commands/theme/list.d.ts +1 -0
- package/dist/commands/theme/set.d.ts +1 -0
- package/dist/commands/theme/set.js +3 -7
- package/dist/commands/ticket/bulk.d.ts +1 -0
- package/dist/commands/ticket/bulk.js +0 -7
- package/dist/commands/ticket/category.d.ts +1 -0
- package/dist/commands/ticket/complete.d.ts +2 -1
- package/dist/commands/ticket/complete.js +2 -8
- package/dist/commands/ticket/create.d.ts +2 -1
- package/dist/commands/ticket/create.js +0 -6
- package/dist/commands/ticket/delete.d.ts +2 -1
- package/dist/commands/ticket/delete.js +0 -6
- package/dist/commands/ticket/edit.d.ts +1 -0
- package/dist/commands/ticket/edit.js +0 -6
- package/dist/commands/ticket/epic.d.ts +2 -1
- package/dist/commands/ticket/epic.js +0 -6
- package/dist/commands/ticket/index.d.ts +1 -0
- package/dist/commands/ticket/index.js +6 -9
- package/dist/commands/ticket/link/block.d.ts +15 -0
- package/dist/commands/ticket/link/block.js +95 -0
- package/dist/commands/ticket/link/index.d.ts +14 -0
- package/dist/commands/ticket/link/index.js +96 -0
- package/dist/commands/ticket/list.d.ts +2 -0
- package/dist/commands/ticket/list.js +6 -0
- package/dist/commands/ticket/move.d.ts +2 -1
- package/dist/commands/ticket/move.js +2 -8
- package/dist/commands/ticket/project.d.ts +2 -1
- package/dist/commands/ticket/project.js +0 -6
- package/dist/commands/ticket/reassign.d.ts +2 -1
- package/dist/commands/ticket/reassign.js +0 -6
- package/dist/commands/ticket/resolve.d.ts +68 -0
- package/dist/commands/ticket/resolve.js +294 -0
- package/dist/commands/ticket/spec.d.ts +2 -1
- package/dist/commands/ticket/spec.js +0 -6
- package/dist/commands/ticket/status.d.ts +1 -0
- package/dist/commands/ticket/status.js +1 -7
- package/dist/commands/ticket/template/apply.d.ts +26 -0
- package/dist/commands/ticket/template/apply.js +14 -0
- package/dist/commands/ticket/template/delete.d.ts +18 -0
- package/dist/commands/ticket/template/delete.js +61 -0
- package/dist/commands/ticket/template/list.d.ts +17 -0
- package/dist/commands/ticket/template/list.js +77 -0
- package/dist/commands/ticket/template/save.d.ts +17 -0
- package/dist/commands/ticket/template/save.js +97 -0
- package/dist/commands/ticket/update.d.ts +2 -1
- package/dist/commands/ticket/update.js +0 -6
- package/dist/commands/ticket/view.d.ts +2 -0
- package/dist/commands/ticket/view.js +2 -7
- package/dist/commands/whoami.d.ts +1 -0
- package/dist/commands/work/complete.d.ts +1 -0
- package/dist/commands/work/complete.js +1 -7
- package/dist/commands/work/index.d.ts +1 -0
- package/dist/commands/work/index.js +4 -7
- package/dist/commands/work/ready.d.ts +2 -1
- package/dist/commands/work/ready.js +38 -14
- package/dist/commands/work/resolve.d.ts +15 -0
- package/dist/commands/work/resolve.js +76 -0
- package/dist/commands/work/revise.d.ts +2 -1
- package/dist/commands/work/revise.js +0 -6
- package/dist/commands/work/spawn-all.d.ts +2 -1
- package/dist/commands/work/spawn-all.js +2 -6
- package/dist/commands/work/spawn.d.ts +2 -1
- package/dist/commands/work/spawn.js +4 -10
- package/dist/commands/work/start.d.ts +3 -1
- package/dist/commands/work/start.js +52 -23
- package/dist/commands/work/watch.d.ts +2 -1
- package/dist/commands/work/watch.js +0 -6
- package/dist/commands/workflow/create.d.ts +1 -0
- package/dist/commands/workflow/delete.d.ts +1 -0
- package/dist/commands/workflow/index.d.ts +1 -0
- package/dist/commands/workflow/index.js +1 -7
- package/dist/commands/workflow/list.d.ts +1 -0
- package/dist/commands/workflow/switch.d.ts +1 -0
- package/dist/commands/workflow/view.d.ts +1 -0
- package/dist/commands/workspace/add.d.ts +2 -0
- package/dist/commands/workspace/add.js +2 -0
- package/dist/commands/workspace/list.d.ts +1 -0
- package/dist/commands/workspace/list.js +4 -8
- package/dist/commands/workspace/prune.d.ts +1 -0
- package/dist/commands/workspace/prune.js +4 -6
- package/dist/commands/workspace/remove.d.ts +1 -0
- package/dist/commands/workspace/remove.js +3 -7
- package/dist/commands/workspace/use.d.ts +1 -0
- package/dist/commands/workspace/use.js +3 -7
- package/dist/lib/database/drizzle-schema.d.ts +1 -1
- package/dist/lib/database/index.d.ts +1 -1
- package/dist/lib/database/index.js +20 -0
- package/dist/lib/execution/devcontainer.js +3 -1
- package/dist/lib/execution/runners.d.ts +7 -2
- package/dist/lib/execution/runners.js +18 -10
- package/dist/lib/execution/types.d.ts +1 -0
- package/dist/lib/flags/resolver.js +1 -0
- package/dist/lib/mcp/helpers.d.ts +1 -2
- package/dist/lib/mcp/tools/diet.js +1 -0
- package/dist/lib/mcp/tools/index.d.ts +1 -0
- package/dist/lib/mcp/tools/index.js +1 -0
- package/dist/lib/mcp/tools/label.d.ts +6 -0
- package/dist/lib/mcp/tools/label.js +338 -0
- package/dist/lib/mcp/tools/ticket.js +53 -17
- package/dist/lib/multiline-input.js +6 -18
- package/dist/lib/pmo/base-command.d.ts +4 -2
- package/dist/lib/pmo/base-command.js +9 -4
- package/dist/lib/pmo/schema.d.ts +6 -0
- package/dist/lib/pmo/schema.js +44 -0
- package/dist/lib/pmo/storage/base.d.ts +6 -0
- package/dist/lib/pmo/storage/base.js +185 -7
- package/dist/lib/pmo/storage/index.d.ts +23 -1
- package/dist/lib/pmo/storage/index.js +59 -1
- package/dist/lib/pmo/storage/labels.d.ts +55 -0
- package/dist/lib/pmo/storage/labels.js +346 -0
- package/dist/lib/pmo/storage/tickets.js +17 -0
- package/dist/lib/pmo/storage/types.d.ts +24 -0
- package/dist/lib/pmo/types.d.ts +44 -0
- package/dist/lib/pmo/utils.js +1 -1
- package/dist/lib/prompt-json.d.ts +5 -2
- package/dist/lib/prompt-json.js +4 -4
- package/oclif.manifest.json +6571 -3748
- package/package.json +1 -1
package/dist/commands/init.d.ts
CHANGED
|
@@ -3,12 +3,13 @@ export default class Init extends Command {
|
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static flags: {
|
|
6
|
-
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
6
|
name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
7
|
path: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
8
|
agents: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
9
|
repos: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
10
|
pmo: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
};
|
|
13
14
|
run(): Promise<void>;
|
|
14
15
|
/**
|
package/dist/commands/init.js
CHANGED
|
@@ -5,7 +5,7 @@ import * as fs from 'node:fs';
|
|
|
5
5
|
import { promptForHQName, promptForHQLocation, initializeHQ, showNextSteps, validateHQLocation } from '../lib/init/index.js';
|
|
6
6
|
import { promptForAgentsWithTheme } from '../lib/agents/index.js';
|
|
7
7
|
import { promptForRepositories } from '../lib/repos/index.js';
|
|
8
|
-
import { promptForPMOSetup } from '../lib/pmo/index.js';
|
|
8
|
+
import { promptForPMOSetup, machineOutputFlags } from '../lib/pmo/index.js';
|
|
9
9
|
export default class Init extends Command {
|
|
10
10
|
static description = 'Initialize an HQ (headquarters) for managing repositories, agents, and projects';
|
|
11
11
|
static examples = [
|
|
@@ -16,12 +16,7 @@ export default class Init extends Command {
|
|
|
16
16
|
'<%= config.bin %> <%= command.id %> --json --name myproject --path /path/to/hq --agents agent1,agent2 --pmo',
|
|
17
17
|
];
|
|
18
18
|
static flags = {
|
|
19
|
-
|
|
20
|
-
char: 'm',
|
|
21
|
-
aliases: ['machine'],
|
|
22
|
-
description: 'Agent mode: use flags instead of prompts, output JSON',
|
|
23
|
-
default: false,
|
|
24
|
-
}),
|
|
19
|
+
...machineOutputFlags,
|
|
25
20
|
name: Flags.string({
|
|
26
21
|
description: 'HQ name (required in --json mode)',
|
|
27
22
|
char: 'n',
|
|
@@ -46,7 +41,7 @@ export default class Init extends Command {
|
|
|
46
41
|
};
|
|
47
42
|
async run() {
|
|
48
43
|
const { flags } = await this.parse(Init);
|
|
49
|
-
if (flags.json) {
|
|
44
|
+
if (flags.json || flags.machine) {
|
|
50
45
|
await this.runAgentMode(flags);
|
|
51
46
|
}
|
|
52
47
|
else if (!process.stdin.isTTY) {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
+
export default class LabelCreate extends PMOCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
name: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
color: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
group: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
};
|
|
16
|
+
protected getPMOOptions(): {
|
|
17
|
+
promptIfMultiple: boolean;
|
|
18
|
+
};
|
|
19
|
+
execute(): Promise<void>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
3
|
+
import { styles } from '../../lib/styles.js';
|
|
4
|
+
export default class LabelCreate extends PMOCommand {
|
|
5
|
+
static description = 'Create a new label';
|
|
6
|
+
static examples = [
|
|
7
|
+
'<%= config.bin %> <%= command.id %> my-label',
|
|
8
|
+
'<%= config.bin %> <%= command.id %> urgent --color "#ff0000" --group type',
|
|
9
|
+
'<%= config.bin %> <%= command.id %> frontend --group area --description "Frontend work"',
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
name: Args.string({
|
|
13
|
+
description: 'Label name',
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
static flags = {
|
|
18
|
+
...pmoBaseFlags,
|
|
19
|
+
color: Flags.string({
|
|
20
|
+
char: 'c',
|
|
21
|
+
description: 'Label color (hex, e.g. #ff0000)',
|
|
22
|
+
}),
|
|
23
|
+
description: Flags.string({
|
|
24
|
+
char: 'd',
|
|
25
|
+
description: 'Label description',
|
|
26
|
+
}),
|
|
27
|
+
group: Flags.string({
|
|
28
|
+
char: 'g',
|
|
29
|
+
description: 'Label group ID to add this label to',
|
|
30
|
+
}),
|
|
31
|
+
};
|
|
32
|
+
getPMOOptions() {
|
|
33
|
+
return { promptIfMultiple: false };
|
|
34
|
+
}
|
|
35
|
+
async execute() {
|
|
36
|
+
const { args, flags } = await this.parse(LabelCreate);
|
|
37
|
+
const label = await this.storage.createLabel({
|
|
38
|
+
name: args.name,
|
|
39
|
+
color: flags.color,
|
|
40
|
+
description: flags.description,
|
|
41
|
+
groupId: flags.group,
|
|
42
|
+
});
|
|
43
|
+
if (flags.machine || flags.json) {
|
|
44
|
+
this.log(JSON.stringify(label, null, 2));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
this.log(styles.success(`\nCreated label: ${label.name} (${label.id})`));
|
|
48
|
+
if (label.groupName) {
|
|
49
|
+
this.log(styles.muted(` Group: ${label.groupName}`));
|
|
50
|
+
}
|
|
51
|
+
if (label.color) {
|
|
52
|
+
this.log(styles.muted(` Color: ${label.color}`));
|
|
53
|
+
}
|
|
54
|
+
this.log('');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
+
export default class LabelDelete extends PMOCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
};
|
|
13
|
+
protected getPMOOptions(): {
|
|
14
|
+
promptIfMultiple: boolean;
|
|
15
|
+
};
|
|
16
|
+
execute(): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Args } from '@oclif/core';
|
|
2
|
+
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
3
|
+
import { styles } from '../../lib/styles.js';
|
|
4
|
+
export default class LabelDelete extends PMOCommand {
|
|
5
|
+
static description = 'Delete a label (removes from all tickets)';
|
|
6
|
+
static examples = [
|
|
7
|
+
'<%= config.bin %> <%= command.id %> my-label',
|
|
8
|
+
];
|
|
9
|
+
static args = {
|
|
10
|
+
id: Args.string({
|
|
11
|
+
description: 'Label ID to delete',
|
|
12
|
+
required: true,
|
|
13
|
+
}),
|
|
14
|
+
};
|
|
15
|
+
static flags = {
|
|
16
|
+
...pmoBaseFlags,
|
|
17
|
+
};
|
|
18
|
+
getPMOOptions() {
|
|
19
|
+
return { promptIfMultiple: false };
|
|
20
|
+
}
|
|
21
|
+
async execute() {
|
|
22
|
+
const { args, flags } = await this.parse(LabelDelete);
|
|
23
|
+
await this.storage.deleteLabel(args.id);
|
|
24
|
+
if (flags.machine || flags.json) {
|
|
25
|
+
this.log(JSON.stringify({ success: true, deleted: args.id }));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
this.log(styles.success(`\nDeleted label: ${args.id}`));
|
|
29
|
+
this.log('');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PMOCommand } from '../../../lib/pmo/index.js';
|
|
2
|
+
export default class LabelGroupCreate extends PMOCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
name: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
exclusive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
required: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
};
|
|
16
|
+
protected getPMOOptions(): {
|
|
17
|
+
promptIfMultiple: boolean;
|
|
18
|
+
};
|
|
19
|
+
execute(): Promise<void>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { PMOCommand, pmoBaseFlags } from '../../../lib/pmo/index.js';
|
|
3
|
+
import { styles } from '../../../lib/styles.js';
|
|
4
|
+
export default class LabelGroupCreate extends PMOCommand {
|
|
5
|
+
static description = 'Create a new label group';
|
|
6
|
+
static examples = [
|
|
7
|
+
'<%= config.bin %> <%= command.id %> Priority',
|
|
8
|
+
'<%= config.bin %> <%= command.id %> Severity --exclusive --required',
|
|
9
|
+
'<%= config.bin %> <%= command.id %> Tags --no-exclusive --description "Free-form tags"',
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
name: Args.string({
|
|
13
|
+
description: 'Group name',
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
static flags = {
|
|
18
|
+
...pmoBaseFlags,
|
|
19
|
+
description: Flags.string({
|
|
20
|
+
char: 'd',
|
|
21
|
+
description: 'Group description',
|
|
22
|
+
}),
|
|
23
|
+
exclusive: Flags.boolean({
|
|
24
|
+
description: 'Only one label from this group per ticket (default: true)',
|
|
25
|
+
default: true,
|
|
26
|
+
allowNo: true,
|
|
27
|
+
}),
|
|
28
|
+
required: Flags.boolean({
|
|
29
|
+
description: 'Must have one label from this group',
|
|
30
|
+
default: false,
|
|
31
|
+
}),
|
|
32
|
+
};
|
|
33
|
+
getPMOOptions() {
|
|
34
|
+
return { promptIfMultiple: false };
|
|
35
|
+
}
|
|
36
|
+
async execute() {
|
|
37
|
+
const { args, flags } = await this.parse(LabelGroupCreate);
|
|
38
|
+
const group = await this.storage.createLabelGroup({
|
|
39
|
+
name: args.name,
|
|
40
|
+
description: flags.description,
|
|
41
|
+
isExclusive: flags.exclusive,
|
|
42
|
+
isRequired: flags.required,
|
|
43
|
+
});
|
|
44
|
+
if (flags.machine || flags.json) {
|
|
45
|
+
this.log(JSON.stringify(group, null, 2));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const exclusive = group.isExclusive ? 'exclusive' : 'non-exclusive';
|
|
49
|
+
const required = group.isRequired ? ', required' : '';
|
|
50
|
+
this.log(styles.success(`\nCreated label group: ${group.name} (${group.id})`));
|
|
51
|
+
this.log(styles.muted(` ${exclusive}${required}`));
|
|
52
|
+
this.log('');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PMOCommand } from '../../../lib/pmo/index.js';
|
|
2
|
+
export default class LabelGroupList extends PMOCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
};
|
|
10
|
+
protected getPMOOptions(): {
|
|
11
|
+
promptIfMultiple: boolean;
|
|
12
|
+
};
|
|
13
|
+
execute(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import { PMOCommand, pmoBaseFlags } from '../../../lib/pmo/index.js';
|
|
3
|
+
import { styles } from '../../../lib/styles.js';
|
|
4
|
+
export default class LabelGroupList extends PMOCommand {
|
|
5
|
+
static description = 'List label groups';
|
|
6
|
+
static examples = [
|
|
7
|
+
'<%= config.bin %> <%= command.id %>',
|
|
8
|
+
'<%= config.bin %> <%= command.id %> --json',
|
|
9
|
+
];
|
|
10
|
+
static flags = {
|
|
11
|
+
...pmoBaseFlags,
|
|
12
|
+
json: Flags.boolean({
|
|
13
|
+
description: 'Output as JSON',
|
|
14
|
+
default: false,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
getPMOOptions() {
|
|
18
|
+
return { promptIfMultiple: false };
|
|
19
|
+
}
|
|
20
|
+
async execute() {
|
|
21
|
+
const { flags } = await this.parse(LabelGroupList);
|
|
22
|
+
const groups = await this.storage.listLabelGroups();
|
|
23
|
+
if (flags.json || flags.machine) {
|
|
24
|
+
this.log(JSON.stringify(groups, null, 2));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (groups.length === 0) {
|
|
28
|
+
this.log(styles.muted('\nNo label groups found.'));
|
|
29
|
+
this.log(styles.muted('Create one: prlt label group create <name>'));
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
this.log(`\n${styles.emphasis('Label Groups')}`);
|
|
33
|
+
this.log('═'.repeat(60));
|
|
34
|
+
for (const group of groups) {
|
|
35
|
+
const exclusive = group.isExclusive ? 'exclusive' : 'non-exclusive';
|
|
36
|
+
const required = group.isRequired ? ', required' : '';
|
|
37
|
+
this.log(`\n ${styles.emphasis(group.name)} ${styles.muted(`(${group.id})`)}`);
|
|
38
|
+
this.log(` ${styles.muted(`${exclusive}${required}`)}`);
|
|
39
|
+
if (group.description) {
|
|
40
|
+
this.log(` ${styles.muted(group.description)}`);
|
|
41
|
+
}
|
|
42
|
+
// Show labels in this group
|
|
43
|
+
const labels = await this.storage.listLabels({ groupId: group.id });
|
|
44
|
+
if (labels.length > 0) {
|
|
45
|
+
const labelNames = labels.map(l => l.name).join(', ');
|
|
46
|
+
this.log(` Labels: ${labelNames}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
this.log('');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
+
export default class LabelIndex extends PMOCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static aliases: string[];
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static flags: {
|
|
7
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
};
|
|
11
|
+
protected getPMOOptions(): {
|
|
12
|
+
promptIfMultiple: boolean;
|
|
13
|
+
};
|
|
14
|
+
execute(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
2
|
+
import { shouldOutputJson } from '../../lib/prompt-json.js';
|
|
3
|
+
export default class LabelIndex extends PMOCommand {
|
|
4
|
+
static description = 'Manage labels and label groups';
|
|
5
|
+
static aliases = ['labels'];
|
|
6
|
+
static examples = [
|
|
7
|
+
'<%= config.bin %> <%= command.id %>',
|
|
8
|
+
'<%= config.bin %> label list',
|
|
9
|
+
'<%= config.bin %> label create my-label',
|
|
10
|
+
'<%= config.bin %> label group list',
|
|
11
|
+
];
|
|
12
|
+
static flags = {
|
|
13
|
+
...pmoBaseFlags,
|
|
14
|
+
};
|
|
15
|
+
getPMOOptions() {
|
|
16
|
+
return { promptIfMultiple: false };
|
|
17
|
+
}
|
|
18
|
+
async execute() {
|
|
19
|
+
const { flags } = await this.parse(LabelIndex);
|
|
20
|
+
const jsonMode = shouldOutputJson(flags);
|
|
21
|
+
const menuChoices = [
|
|
22
|
+
{ id: 'list', name: 'List all labels', command: 'prlt label list' },
|
|
23
|
+
{ id: 'create', name: 'Create new label', command: 'prlt label create' },
|
|
24
|
+
{ id: 'delete', name: 'Delete label', command: 'prlt label delete' },
|
|
25
|
+
{ id: 'groups', name: 'List label groups', command: 'prlt label group list' },
|
|
26
|
+
{ id: 'create-group', name: 'Create label group', command: 'prlt label group create' },
|
|
27
|
+
{ id: 'cancel', name: 'Cancel', command: '' },
|
|
28
|
+
];
|
|
29
|
+
const action = await this.selectFromList({
|
|
30
|
+
message: 'Labels - What would you like to do?',
|
|
31
|
+
items: menuChoices,
|
|
32
|
+
getName: (c) => c.name,
|
|
33
|
+
getValue: (c) => c.id,
|
|
34
|
+
getCommand: (c) => c.command,
|
|
35
|
+
jsonMode: jsonMode ? { flags, commandName: 'label' } : null,
|
|
36
|
+
});
|
|
37
|
+
if (action === 'cancel' || !action) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
switch (action) {
|
|
41
|
+
case 'list':
|
|
42
|
+
await this.config.runCommand('label:list');
|
|
43
|
+
break;
|
|
44
|
+
case 'create':
|
|
45
|
+
await this.config.runCommand('label:create');
|
|
46
|
+
break;
|
|
47
|
+
case 'delete':
|
|
48
|
+
await this.config.runCommand('label:delete');
|
|
49
|
+
break;
|
|
50
|
+
case 'groups':
|
|
51
|
+
await this.config.runCommand('label:group:list');
|
|
52
|
+
break;
|
|
53
|
+
case 'create-group':
|
|
54
|
+
await this.config.runCommand('label:group:create');
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
+
export default class LabelList extends PMOCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
group: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
};
|
|
11
|
+
protected getPMOOptions(): {
|
|
12
|
+
promptIfMultiple: boolean;
|
|
13
|
+
};
|
|
14
|
+
execute(): Promise<void>;
|
|
15
|
+
private printLabel;
|
|
16
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
3
|
+
import { styles } from '../../lib/styles.js';
|
|
4
|
+
export default class LabelList extends PMOCommand {
|
|
5
|
+
static description = 'List labels, optionally filtered by group';
|
|
6
|
+
static examples = [
|
|
7
|
+
'<%= config.bin %> <%= command.id %>',
|
|
8
|
+
'<%= config.bin %> <%= command.id %> --group function',
|
|
9
|
+
'<%= config.bin %> <%= command.id %> --json',
|
|
10
|
+
];
|
|
11
|
+
static flags = {
|
|
12
|
+
...pmoBaseFlags,
|
|
13
|
+
group: Flags.string({
|
|
14
|
+
char: 'g',
|
|
15
|
+
description: 'Filter by group ID',
|
|
16
|
+
}),
|
|
17
|
+
json: Flags.boolean({
|
|
18
|
+
description: 'Output as JSON',
|
|
19
|
+
default: false,
|
|
20
|
+
}),
|
|
21
|
+
};
|
|
22
|
+
getPMOOptions() {
|
|
23
|
+
return { promptIfMultiple: false };
|
|
24
|
+
}
|
|
25
|
+
async execute() {
|
|
26
|
+
const { flags } = await this.parse(LabelList);
|
|
27
|
+
const labels = await this.storage.listLabels({
|
|
28
|
+
groupId: flags.group,
|
|
29
|
+
});
|
|
30
|
+
if (flags.json || flags.machine) {
|
|
31
|
+
this.log(JSON.stringify(labels, null, 2));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (labels.length === 0) {
|
|
35
|
+
this.log(styles.muted('\nNo labels found.'));
|
|
36
|
+
this.log(styles.muted('Create one: prlt label create <name>'));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.log(`\n${styles.emphasis('Labels')}`);
|
|
40
|
+
this.log('═'.repeat(60));
|
|
41
|
+
// Group labels by group
|
|
42
|
+
const grouped = new Map();
|
|
43
|
+
const ungrouped = [];
|
|
44
|
+
for (const label of labels) {
|
|
45
|
+
if (label.groupName) {
|
|
46
|
+
const group = grouped.get(label.groupName) || [];
|
|
47
|
+
group.push(label);
|
|
48
|
+
grouped.set(label.groupName, group);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
ungrouped.push(label);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
for (const [groupName, groupLabels] of grouped) {
|
|
55
|
+
// Look up group info
|
|
56
|
+
const group = await this.storage.getLabelGroupByName(groupName);
|
|
57
|
+
const exclusive = group?.isExclusive ? ' (exclusive)' : '';
|
|
58
|
+
const required = group?.isRequired ? ' (required)' : '';
|
|
59
|
+
this.log(`\n${styles.emphasis(groupName)}${styles.muted(exclusive + required)}`);
|
|
60
|
+
this.log('─'.repeat(40));
|
|
61
|
+
for (const label of groupLabels) {
|
|
62
|
+
this.printLabel(label);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (ungrouped.length > 0) {
|
|
66
|
+
this.log(`\n${styles.emphasis('Ungrouped')}`);
|
|
67
|
+
this.log('─'.repeat(40));
|
|
68
|
+
for (const label of ungrouped) {
|
|
69
|
+
this.printLabel(label);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
this.log('');
|
|
73
|
+
}
|
|
74
|
+
printLabel(label) {
|
|
75
|
+
const colorDot = label.color ? `${label.color} ` : '';
|
|
76
|
+
const builtinBadge = label.isBuiltin ? '' : ' [custom]';
|
|
77
|
+
this.log(` ${colorDot}${styles.emphasis(label.name)} ${styles.muted(`(${label.id})`)}${builtinBadge}`);
|
|
78
|
+
if (label.description) {
|
|
79
|
+
this.log(` ${styles.muted(label.description)}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -9,6 +9,7 @@ export default class LinkCreate extends PMOCommand {
|
|
|
9
9
|
static flags: {
|
|
10
10
|
type: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
11
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
14
|
};
|
|
14
15
|
execute(): Promise<void>;
|
|
@@ -41,12 +41,6 @@ export default class LinkCreate extends PMOCommand {
|
|
|
41
41
|
options: ['blocks', 'relates', 'duplicates', 'depends'],
|
|
42
42
|
required: true,
|
|
43
43
|
}),
|
|
44
|
-
json: Flags.boolean({
|
|
45
|
-
char: 'm',
|
|
46
|
-
aliases: ['machine'],
|
|
47
|
-
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
48
|
-
default: false,
|
|
49
|
-
}),
|
|
50
44
|
};
|
|
51
45
|
async execute() {
|
|
52
46
|
const { args, flags } = await this.parse(LinkCreate);
|
|
@@ -7,6 +7,7 @@ export default class Link 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>;
|
|
10
11
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
12
|
};
|
|
12
13
|
execute(): Promise<void>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Args
|
|
1
|
+
import { Args } from '@oclif/core';
|
|
2
2
|
import inquirer from 'inquirer';
|
|
3
3
|
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
4
4
|
import { styles } from '../../lib/styles.js';
|
|
@@ -19,12 +19,6 @@ export default class Link extends PMOCommand {
|
|
|
19
19
|
};
|
|
20
20
|
static flags = {
|
|
21
21
|
...pmoBaseFlags,
|
|
22
|
-
json: Flags.boolean({
|
|
23
|
-
char: 'm',
|
|
24
|
-
aliases: ['machine'],
|
|
25
|
-
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
26
|
-
default: false,
|
|
27
|
-
}),
|
|
28
22
|
};
|
|
29
23
|
async execute() {
|
|
30
24
|
const { args, flags } = await this.parse(Link);
|
|
@@ -8,6 +8,7 @@ export default class LinkList extends PMOCommand {
|
|
|
8
8
|
static flags: {
|
|
9
9
|
all: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
10
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
12
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
13
|
};
|
|
13
14
|
execute(): Promise<void>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable no-await-in-loop */
|
|
1
2
|
import { Args, Flags } from '@oclif/core';
|
|
2
3
|
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
3
4
|
import { styles } from '../../lib/styles.js';
|
|
@@ -36,12 +37,6 @@ export default class LinkList extends PMOCommand {
|
|
|
36
37
|
description: 'Show all links including reverse dependencies (what blocks this, what this blocks)',
|
|
37
38
|
default: false,
|
|
38
39
|
}),
|
|
39
|
-
json: Flags.boolean({
|
|
40
|
-
char: 'm',
|
|
41
|
-
aliases: ['machine'],
|
|
42
|
-
description: 'Output as JSON for AI agents/scripts',
|
|
43
|
-
default: false,
|
|
44
|
-
}),
|
|
45
40
|
};
|
|
46
41
|
async execute() {
|
|
47
42
|
const { args, flags } = await this.parse(LinkList);
|
|
@@ -113,7 +108,7 @@ export default class LinkList extends PMOCommand {
|
|
|
113
108
|
}
|
|
114
109
|
this.log('');
|
|
115
110
|
}
|
|
116
|
-
async listSpecLinks(specId,
|
|
111
|
+
async listSpecLinks(specId, _showAll) {
|
|
117
112
|
const spec = await this.storage.getSpec(specId);
|
|
118
113
|
if (!spec) {
|
|
119
114
|
this.error(`Spec not found: ${specId}`);
|
|
@@ -143,7 +138,7 @@ export default class LinkList extends PMOCommand {
|
|
|
143
138
|
}
|
|
144
139
|
this.log('');
|
|
145
140
|
}
|
|
146
|
-
async listEpicLinks(epicId,
|
|
141
|
+
async listEpicLinks(epicId, _showAll) {
|
|
147
142
|
const epic = await this.storage.getEpic(epicId);
|
|
148
143
|
if (!epic) {
|
|
149
144
|
this.error(`Epic not found: ${epicId}`);
|
|
@@ -9,6 +9,7 @@ export default class LinkRemove extends PMOCommand {
|
|
|
9
9
|
static flags: {
|
|
10
10
|
type: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
11
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
14
|
};
|
|
14
15
|
execute(): Promise<void>;
|
|
@@ -39,12 +39,6 @@ export default class LinkRemove extends PMOCommand {
|
|
|
39
39
|
description: 'Link type to remove (if not specified, removes any link)',
|
|
40
40
|
options: ['blocks', 'relates', 'duplicates', 'depends'],
|
|
41
41
|
}),
|
|
42
|
-
json: Flags.boolean({
|
|
43
|
-
char: 'm',
|
|
44
|
-
aliases: ['machine'],
|
|
45
|
-
description: 'Output prompt configuration as JSON (for AI agents/scripts)',
|
|
46
|
-
default: false,
|
|
47
|
-
}),
|
|
48
42
|
};
|
|
49
43
|
async execute() {
|
|
50
44
|
const { args, flags } = await this.parse(LinkRemove);
|