@proletariat/cli 0.3.92 → 0.3.94
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 -1
- package/dist/commands/action/delete.d.ts +1 -1
- package/dist/commands/action/index.d.ts +1 -1
- package/dist/commands/action/list.d.ts +1 -1
- package/dist/commands/action/run.d.ts +1 -1
- package/dist/commands/action/show.d.ts +1 -1
- package/dist/commands/action/update.d.ts +1 -1
- package/dist/commands/agent/auth.js +2 -6
- package/dist/commands/agent/auth.js.map +1 -1
- package/dist/commands/agent/cleanup.d.ts +1 -1
- package/dist/commands/agent/cleanup.js +5 -5
- package/dist/commands/agent/cleanup.js.map +1 -1
- package/dist/commands/{project/list.d.ts → agent/gc.d.ts} +4 -3
- package/dist/commands/agent/gc.js +75 -0
- package/dist/commands/agent/gc.js.map +1 -0
- package/dist/commands/agent/index.d.ts +1 -1
- package/dist/commands/agent/list.d.ts +1 -1
- package/dist/commands/agent/list.js +2 -2
- package/dist/commands/agent/list.js.map +1 -1
- package/dist/commands/agent/login.d.ts +1 -1
- package/dist/commands/agent/rebuild.d.ts +1 -1
- package/dist/commands/agent/remove.d.ts +1 -1
- package/dist/commands/agent/restart.d.ts +1 -1
- package/dist/commands/agent/shell.d.ts +1 -1
- package/dist/commands/agent/shell.js +3 -5
- package/dist/commands/agent/shell.js.map +1 -1
- package/dist/commands/agent/staff/index.d.ts +1 -1
- package/dist/commands/agent/staff/remove.d.ts +1 -1
- package/dist/commands/agent/status.d.ts +1 -1
- package/dist/commands/agent/visit.d.ts +1 -1
- package/dist/commands/asana/import.d.ts +1 -1
- package/dist/commands/branch/create.d.ts +1 -1
- package/dist/commands/branch/create.js +2 -2
- package/dist/commands/branch/create.js.map +1 -1
- package/dist/commands/branch/index.d.ts +1 -1
- package/dist/commands/branch/list.d.ts +1 -1
- package/dist/commands/branch/validate.d.ts +1 -1
- package/dist/commands/branch/where.d.ts +1 -1
- package/dist/commands/claude/index.js +2 -2
- package/dist/commands/claude/index.js.map +1 -1
- package/dist/commands/claude/open.js +11 -5
- package/dist/commands/claude/open.js.map +1 -1
- package/dist/commands/config/index.js +88 -7
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/db/repair.js +2 -2
- package/dist/commands/db/repair.js.map +1 -1
- package/dist/commands/diet.d.ts +1 -1
- package/dist/commands/docker/clean.js +2 -4
- package/dist/commands/docker/clean.js.map +1 -1
- package/dist/commands/docker/index.js +4 -4
- package/dist/commands/docker/index.js.map +1 -1
- package/dist/commands/docker/list.js +2 -4
- package/dist/commands/docker/list.js.map +1 -1
- package/dist/commands/docker/logs.js +2 -4
- package/dist/commands/docker/logs.js.map +1 -1
- package/dist/commands/docker/rebuild-cache.d.ts +12 -0
- package/dist/commands/docker/rebuild-cache.js +144 -0
- package/dist/commands/docker/rebuild-cache.js.map +1 -0
- package/dist/commands/docker/restart.js +2 -4
- package/dist/commands/docker/restart.js.map +1 -1
- package/dist/commands/docker/shell.js +2 -4
- package/dist/commands/docker/shell.js.map +1 -1
- package/dist/commands/docker/start.js +2 -4
- package/dist/commands/docker/start.js.map +1 -1
- package/dist/commands/docker/stop.js +2 -4
- package/dist/commands/docker/stop.js.map +1 -1
- package/dist/commands/docker/sync.js +2 -4
- package/dist/commands/docker/sync.js.map +1 -1
- package/dist/commands/execution/config.d.ts +1 -1
- package/dist/commands/execution/config.js +39 -0
- package/dist/commands/execution/config.js.map +1 -1
- package/dist/commands/execution/index.d.ts +1 -1
- package/dist/commands/execution/list.d.ts +1 -1
- package/dist/commands/execution/list.js +2 -4
- package/dist/commands/execution/list.js.map +1 -1
- package/dist/commands/execution/logs.d.ts +1 -1
- package/dist/commands/execution/logs.js +2 -4
- package/dist/commands/execution/logs.js.map +1 -1
- package/dist/commands/execution/stop.d.ts +1 -1
- package/dist/commands/execution/stop.js +2 -4
- package/dist/commands/execution/stop.js.map +1 -1
- package/dist/commands/execution/view.d.ts +1 -1
- package/dist/commands/execution/view.js +2 -4
- package/dist/commands/execution/view.js.map +1 -1
- package/dist/commands/gh/login.js +2 -1
- package/dist/commands/gh/login.js.map +1 -1
- package/dist/commands/gh/status.js +18 -2
- package/dist/commands/gh/status.js.map +1 -1
- package/dist/commands/{ticket/bulk.d.ts → hook/export.d.ts} +8 -5
- package/dist/commands/hook/export.js +52 -0
- package/dist/commands/hook/export.js.map +1 -0
- package/dist/commands/hook/fire.d.ts +29 -0
- package/dist/commands/hook/fire.js +139 -0
- package/dist/commands/hook/fire.js.map +1 -0
- package/dist/commands/{project → hook}/index.d.ts +5 -5
- package/dist/commands/hook/index.js +53 -0
- package/dist/commands/hook/index.js.map +1 -0
- package/dist/commands/{board/index.d.ts → hook/list.d.ts} +10 -12
- package/dist/commands/hook/list.js +136 -0
- package/dist/commands/hook/list.js.map +1 -0
- package/dist/commands/{project/archive.d.ts → hook/preset.d.ts} +11 -7
- package/dist/commands/hook/preset.js +76 -0
- package/dist/commands/hook/preset.js.map +1 -0
- package/dist/commands/linear/auth.d.ts +1 -1
- package/dist/commands/linear/connect.d.ts +1 -1
- package/dist/commands/linear/import.d.ts +1 -1
- package/dist/commands/linear/status.d.ts +1 -1
- package/dist/commands/linear/sync.d.ts +1 -1
- package/dist/commands/mcp-server.d.ts +8 -2
- package/dist/commands/mcp-server.js +17 -31
- package/dist/commands/mcp-server.js.map +1 -1
- package/dist/commands/monday/connect.d.ts +1 -1
- package/dist/commands/monday/sync.d.ts +1 -1
- package/dist/commands/orchestrate/index.d.ts +35 -0
- package/dist/commands/orchestrate/index.js +267 -0
- package/dist/commands/orchestrate/index.js.map +1 -0
- package/dist/commands/orchestrator/attach.js +2 -3
- package/dist/commands/orchestrator/attach.js.map +1 -1
- package/dist/commands/orchestrator/index.d.ts +1 -1
- package/dist/commands/orchestrator/start.d.ts +3 -3
- package/dist/commands/orchestrator/start.js +32 -43
- package/dist/commands/orchestrator/start.js.map +1 -1
- package/dist/commands/orchestrator/stop.js +21 -26
- package/dist/commands/orchestrator/stop.js.map +1 -1
- package/dist/commands/pr/checks.d.ts +1 -1
- package/dist/commands/pr/close.d.ts +1 -1
- package/dist/commands/pr/create.d.ts +1 -1
- package/dist/commands/pr/index.d.ts +1 -1
- package/dist/commands/pr/link.d.ts +1 -1
- package/dist/commands/pr/list.d.ts +1 -1
- package/dist/commands/pr/merge.d.ts +1 -1
- package/dist/commands/pr/status.d.ts +1 -1
- package/dist/commands/pull.d.ts +1 -1
- package/dist/commands/qa/index.js +3 -3
- package/dist/commands/qa/index.js.map +1 -1
- package/dist/commands/repo/add.d.ts +1 -1
- package/dist/commands/repo/create.d.ts +1 -1
- package/dist/commands/repo/fix-remotes.d.ts +1 -1
- package/dist/commands/repo/index.d.ts +1 -1
- package/dist/commands/repo/list.d.ts +1 -1
- package/dist/commands/repo/remove.d.ts +1 -1
- package/dist/commands/repo/view.d.ts +1 -1
- package/dist/commands/session/attach.d.ts +1 -1
- package/dist/commands/session/attach.js +5 -7
- package/dist/commands/session/attach.js.map +1 -1
- package/dist/commands/session/cleanup.d.ts +1 -1
- package/dist/commands/session/cleanup.js +2 -4
- package/dist/commands/session/cleanup.js.map +1 -1
- package/dist/commands/session/create.d.ts +1 -1
- package/dist/commands/session/exec.d.ts +1 -1
- package/dist/commands/session/exec.js +2 -3
- package/dist/commands/session/exec.js.map +1 -1
- package/dist/commands/session/health.d.ts +1 -1
- package/dist/commands/session/health.js +2 -4
- package/dist/commands/session/health.js.map +1 -1
- package/dist/commands/session/index.d.ts +1 -1
- package/dist/commands/session/inspect.d.ts +1 -1
- package/dist/commands/session/inspect.js +2 -3
- package/dist/commands/session/inspect.js.map +1 -1
- package/dist/commands/session/list.d.ts +1 -1
- package/dist/commands/session/list.js +2 -4
- package/dist/commands/session/list.js.map +1 -1
- package/dist/commands/session/peek.d.ts +1 -1
- package/dist/commands/session/peek.js +3 -6
- package/dist/commands/session/peek.js.map +1 -1
- package/dist/commands/session/poke.js +2 -4
- package/dist/commands/session/poke.js.map +1 -1
- package/dist/commands/session/prune.d.ts +1 -1
- package/dist/commands/session/prune.js +2 -4
- package/dist/commands/session/prune.js.map +1 -1
- package/dist/commands/session/report.d.ts +1 -1
- package/dist/commands/session/report.js +2 -4
- package/dist/commands/session/report.js.map +1 -1
- package/dist/commands/session/restart.d.ts +1 -1
- package/dist/commands/session/restart.js +2 -3
- package/dist/commands/session/restart.js.map +1 -1
- package/dist/commands/shortcut/connect.d.ts +1 -1
- package/dist/commands/support/logs.d.ts +1 -1
- package/dist/commands/ticket/create.d.ts +4 -5
- package/dist/commands/ticket/create.js +69 -88
- package/dist/commands/ticket/create.js.map +1 -1
- package/dist/commands/ticket/delete.d.ts +1 -1
- package/dist/commands/ticket/edit.d.ts +1 -1
- package/dist/commands/ticket/edit.js +22 -14
- package/dist/commands/ticket/edit.js.map +1 -1
- package/dist/commands/ticket/index.d.ts +1 -1
- package/dist/commands/ticket/index.js +6 -36
- package/dist/commands/ticket/index.js.map +1 -1
- package/dist/commands/ticket/list.d.ts +1 -1
- package/dist/commands/ticket/move.d.ts +1 -1
- package/dist/commands/ticket/show.d.ts +8 -7
- package/dist/commands/ticket/show.js +101 -8
- package/dist/commands/ticket/show.js.map +1 -1
- package/dist/commands/ticket/update.d.ts +1 -1
- package/dist/commands/ticket/update.js +31 -14
- package/dist/commands/ticket/update.js.map +1 -1
- package/dist/commands/trello/configure.d.ts +1 -1
- package/dist/commands/trello/import.d.ts +1 -1
- package/dist/commands/trello/sync.d.ts +1 -1
- package/dist/commands/work/asana.d.ts +1 -1
- package/dist/commands/work/complete.d.ts +1 -1
- package/dist/commands/work/complete.js +2 -3
- package/dist/commands/work/complete.js.map +1 -1
- package/dist/commands/work/groom.d.ts +1 -1
- package/dist/commands/work/hooks/add.d.ts +1 -1
- package/dist/commands/work/hooks/add.js +2 -4
- package/dist/commands/work/hooks/add.js.map +1 -1
- package/dist/commands/work/hooks/index.d.ts +1 -1
- package/dist/commands/work/hooks/list.d.ts +1 -1
- package/dist/commands/work/hooks/list.js +2 -4
- package/dist/commands/work/hooks/list.js.map +1 -1
- package/dist/commands/work/hooks/remove.d.ts +1 -1
- package/dist/commands/work/hooks/remove.js +2 -4
- package/dist/commands/work/hooks/remove.js.map +1 -1
- package/dist/commands/work/hooks/toggle.d.ts +1 -1
- package/dist/commands/work/hooks/toggle.js +2 -4
- package/dist/commands/work/hooks/toggle.js.map +1 -1
- package/dist/commands/work/implement.d.ts +1 -1
- package/dist/commands/work/index.d.ts +1 -1
- package/dist/commands/work/index.js +4 -0
- package/dist/commands/work/index.js.map +1 -1
- package/dist/commands/work/jira.d.ts +1 -1
- package/dist/commands/work/linear.d.ts +1 -1
- package/dist/commands/work/peek.d.ts +1 -1
- package/dist/commands/work/ready.d.ts +1 -1
- package/dist/commands/work/ready.js +2 -3
- package/dist/commands/work/ready.js.map +1 -1
- package/dist/commands/work/rebase.d.ts +33 -0
- package/dist/commands/work/rebase.js +394 -0
- package/dist/commands/work/rebase.js.map +1 -0
- package/dist/commands/work/resolve.d.ts +1 -1
- package/dist/commands/work/review.d.ts +1 -1
- package/dist/commands/work/ship.d.ts +2 -1
- package/dist/commands/work/ship.js +49 -4
- package/dist/commands/work/ship.js.map +1 -1
- package/dist/commands/work/shortcut.d.ts +1 -1
- package/dist/commands/work/source/set.d.ts +1 -1
- package/dist/commands/work/source.d.ts +1 -1
- package/dist/commands/work/spawn.d.ts +1 -1
- package/dist/commands/work/spawn.js +2 -4
- package/dist/commands/work/spawn.js.map +1 -1
- package/dist/commands/work/start.d.ts +8 -1
- package/dist/commands/work/start.js +190 -22
- package/dist/commands/work/start.js.map +1 -1
- package/dist/commands/work/status.d.ts +1 -1
- package/dist/commands/work/stop.d.ts +1 -1
- package/dist/commands/work/stop.js +2 -4
- package/dist/commands/work/stop.js.map +1 -1
- package/dist/commands/work/watch.d.ts +1 -1
- package/dist/commands/work/watch.js +2 -4
- package/dist/commands/work/watch.js.map +1 -1
- package/dist/hooks/init.js +2 -2
- package/dist/hooks/init.js.map +1 -1
- package/dist/lib/agents/commands.d.ts +9 -3
- package/dist/lib/agents/commands.js +103 -88
- package/dist/lib/agents/commands.js.map +1 -1
- package/dist/lib/asana/config.js +13 -7
- package/dist/lib/asana/config.js.map +1 -1
- package/dist/lib/clickup/client.d.ts +92 -0
- package/dist/lib/clickup/client.js +150 -0
- package/dist/lib/clickup/client.js.map +1 -0
- package/dist/lib/clickup/config.d.ts +41 -0
- package/dist/lib/clickup/config.js +104 -0
- package/dist/lib/clickup/config.js.map +1 -0
- package/dist/lib/clickup/index.d.ts +4 -0
- package/dist/lib/clickup/index.js +4 -0
- package/dist/lib/clickup/index.js.map +1 -0
- package/dist/lib/clickup/types.d.ts +104 -0
- package/dist/lib/clickup/types.js +34 -0
- package/dist/lib/clickup/types.js.map +1 -0
- package/dist/lib/dashboard/server.js +1 -1
- package/dist/lib/dashboard/server.js.map +1 -1
- package/dist/lib/database/agents.d.ts +62 -4
- package/dist/lib/database/agents.js +161 -8
- package/dist/lib/database/agents.js.map +1 -1
- package/dist/lib/database/credential-store.d.ts +64 -0
- package/dist/lib/database/credential-store.js +306 -0
- package/dist/lib/database/credential-store.js.map +1 -0
- package/dist/lib/database/db-safety.js +4 -4
- package/dist/lib/database/db-safety.js.map +1 -1
- package/dist/lib/database/drizzle-schema.d.ts +2 -2
- package/dist/lib/database/drizzle-schema.js +2 -1
- package/dist/lib/database/drizzle-schema.js.map +1 -1
- package/dist/lib/database/index.d.ts +2 -1
- package/dist/lib/database/index.js +3 -1
- package/dist/lib/database/index.js.map +1 -1
- package/dist/lib/database/migrations/0013_agent_lifecycle_states.d.ts +11 -0
- package/dist/lib/database/migrations/0013_agent_lifecycle_states.js +47 -0
- package/dist/lib/database/migrations/0013_agent_lifecycle_states.js.map +1 -0
- package/dist/lib/database/migrations/0014_agent_work_lifecycle.d.ts +10 -0
- package/dist/lib/database/migrations/0014_agent_work_lifecycle.js +31 -0
- package/dist/lib/database/migrations/0014_agent_work_lifecycle.js.map +1 -0
- package/dist/lib/database/migrations/0015_orchestrate_hooks.d.ts +8 -0
- package/dist/lib/database/migrations/0015_orchestrate_hooks.js +35 -0
- package/dist/lib/database/migrations/0015_orchestrate_hooks.js.map +1 -0
- package/dist/lib/database/migrations/0016_schema_catchup.d.ts +15 -0
- package/dist/lib/database/migrations/0016_schema_catchup.js +154 -0
- package/dist/lib/database/migrations/0016_schema_catchup.js.map +1 -0
- package/dist/lib/database/migrations/index.js +8 -0
- package/dist/lib/database/migrations/index.js.map +1 -1
- package/dist/lib/database/pmo-bootstrap.d.ts +7 -0
- package/dist/lib/database/pmo-bootstrap.js +47 -22
- package/dist/lib/database/pmo-bootstrap.js.map +1 -1
- package/dist/lib/database/workspace-schema.d.ts +1 -1
- package/dist/lib/database/workspace-schema.js +3 -1
- package/dist/lib/database/workspace-schema.js.map +1 -1
- package/dist/lib/database/workspace.js +4 -0
- package/dist/lib/database/workspace.js.map +1 -1
- package/dist/lib/events/events.d.ts +28 -0
- package/dist/lib/events/index.d.ts +1 -1
- package/dist/lib/events/index.js.map +1 -1
- package/dist/lib/execution/config.d.ts +2 -0
- package/dist/lib/execution/config.js +14 -0
- package/dist/lib/execution/config.js.map +1 -1
- package/dist/lib/execution/devcontainer.js +51 -0
- package/dist/lib/execution/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/devcontainer-tmux.js +1 -1
- package/dist/lib/execution/runners/devcontainer-tmux.js.map +1 -1
- package/dist/lib/execution/runners/devcontainer.js +9 -1
- package/dist/lib/execution/runners/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/docker-credentials.d.ts +8 -0
- package/dist/lib/execution/runners/docker-credentials.js +20 -3
- package/dist/lib/execution/runners/docker-credentials.js.map +1 -1
- package/dist/lib/execution/runners/docker-management.d.ts +54 -0
- package/dist/lib/execution/runners/docker-management.js +194 -7
- package/dist/lib/execution/runners/docker-management.js.map +1 -1
- package/dist/lib/execution/runners/index.d.ts +1 -1
- package/dist/lib/execution/runners/index.js +1 -1
- package/dist/lib/execution/runners/index.js.map +1 -1
- package/dist/lib/execution/runners/shared.d.ts +23 -1
- package/dist/lib/execution/runners/shared.js +112 -1
- package/dist/lib/execution/runners/shared.js.map +1 -1
- package/dist/lib/execution/session-utils.d.ts +4 -0
- package/dist/lib/execution/session-utils.js +34 -24
- package/dist/lib/execution/session-utils.js.map +1 -1
- package/dist/lib/execution/spawner.js +8 -1
- package/dist/lib/execution/spawner.js.map +1 -1
- package/dist/lib/execution/types.js +1 -1
- package/dist/lib/external-issues/types.d.ts +3 -3
- package/dist/lib/external-issues/types.js +1 -1
- package/dist/lib/external-issues/types.js.map +1 -1
- package/dist/lib/jira/config.js +10 -4
- package/dist/lib/jira/config.js.map +1 -1
- package/dist/lib/linear/client.d.ts +13 -0
- package/dist/lib/linear/client.js +37 -0
- package/dist/lib/linear/client.js.map +1 -1
- package/dist/lib/linear/config.js +13 -8
- package/dist/lib/linear/config.js.map +1 -1
- package/dist/lib/mcp/generator.d.ts +26 -0
- package/dist/lib/mcp/generator.js +219 -0
- package/dist/lib/mcp/generator.js.map +1 -0
- package/dist/lib/mcp/index.d.ts +1 -0
- package/dist/lib/mcp/index.js +1 -0
- package/dist/lib/mcp/index.js.map +1 -1
- package/dist/lib/mcp/tools/index.d.ts +0 -11
- package/dist/lib/mcp/tools/index.js +0 -11
- package/dist/lib/mcp/tools/index.js.map +1 -1
- package/dist/lib/mcp/tools/overrides/index.d.ts +23 -0
- package/dist/lib/mcp/tools/overrides/index.js +30 -0
- package/dist/lib/mcp/tools/overrides/index.js.map +1 -0
- package/dist/lib/mcp/tools/overrides/tmux.d.ts +11 -0
- package/dist/lib/mcp/tools/overrides/tmux.js +184 -0
- package/dist/lib/mcp/tools/overrides/tmux.js.map +1 -0
- package/dist/lib/mcp/tools/overrides/work-start.d.ts +12 -0
- package/dist/lib/mcp/tools/overrides/work-start.js +108 -0
- package/dist/lib/mcp/tools/overrides/work-start.js.map +1 -0
- package/dist/lib/mcp/tools/ticket.js +10 -48
- package/dist/lib/mcp/tools/ticket.js.map +1 -1
- package/dist/lib/monday/config.js +11 -5
- package/dist/lib/monday/config.js.map +1 -1
- package/dist/lib/orchestrate/actions.d.ts +20 -0
- package/dist/lib/orchestrate/actions.js +194 -0
- package/dist/lib/orchestrate/actions.js.map +1 -0
- package/dist/lib/orchestrate/config-loader.d.ts +31 -0
- package/dist/lib/orchestrate/config-loader.js +201 -0
- package/dist/lib/orchestrate/config-loader.js.map +1 -0
- package/dist/lib/orchestrate/engine.d.ts +94 -0
- package/dist/lib/orchestrate/engine.js +290 -0
- package/dist/lib/orchestrate/engine.js.map +1 -0
- package/dist/lib/orchestrate/index.d.ts +16 -0
- package/dist/lib/orchestrate/index.js +14 -0
- package/dist/lib/orchestrate/index.js.map +1 -0
- package/dist/lib/orchestrate/poller.d.ts +58 -0
- package/dist/lib/orchestrate/poller.js +282 -0
- package/dist/lib/orchestrate/poller.js.map +1 -0
- package/dist/lib/orchestrate/presets.d.ts +27 -0
- package/dist/lib/orchestrate/presets.js +65 -0
- package/dist/lib/orchestrate/presets.js.map +1 -0
- package/dist/lib/orchestrate/types.d.ts +93 -0
- package/dist/lib/orchestrate/types.js +46 -0
- package/dist/lib/orchestrate/types.js.map +1 -0
- package/dist/lib/pmo/base-command.d.ts +20 -152
- package/dist/lib/pmo/base-command.js +32 -198
- package/dist/lib/pmo/base-command.js.map +1 -1
- package/dist/lib/pmo/index.d.ts +1 -0
- package/dist/lib/pmo/index.js +3 -0
- package/dist/lib/pmo/index.js.map +1 -1
- package/dist/lib/pmo/storage/base.d.ts +0 -18
- package/dist/lib/pmo/storage/base.js +0 -231
- package/dist/lib/pmo/storage/base.js.map +1 -1
- package/dist/lib/pmo/storage/index.d.ts +1 -76
- package/dist/lib/pmo/storage/index.js +1 -215
- package/dist/lib/pmo/storage/index.js.map +1 -1
- package/dist/lib/pmo/storage/specs.js.map +1 -1
- package/dist/lib/pmo/storage/tickets.d.ts +2 -2
- package/dist/lib/pmo/storage/tickets.js +4 -34
- package/dist/lib/pmo/storage/tickets.js.map +1 -1
- package/dist/lib/pmo/types.d.ts +0 -37
- package/dist/lib/pr/index.d.ts +28 -0
- package/dist/lib/pr/index.js +100 -0
- package/dist/lib/pr/index.js.map +1 -1
- package/dist/lib/providers/clickup-provider.d.ts +28 -0
- package/dist/lib/providers/clickup-provider.js +353 -0
- package/dist/lib/providers/clickup-provider.js.map +1 -0
- package/dist/lib/providers/event-emitting-provider.d.ts +4 -2
- package/dist/lib/providers/event-emitting-provider.js +12 -0
- package/dist/lib/providers/event-emitting-provider.js.map +1 -1
- package/dist/lib/providers/index.d.ts +1 -1
- package/dist/lib/providers/index.js.map +1 -1
- package/dist/lib/providers/linear-provider.d.ts +4 -2
- package/dist/lib/providers/linear-provider.js +106 -0
- package/dist/lib/providers/linear-provider.js.map +1 -1
- package/dist/lib/providers/pmo-provider.d.ts +4 -2
- package/dist/lib/providers/pmo-provider.js +26 -0
- package/dist/lib/providers/pmo-provider.js.map +1 -1
- package/dist/lib/providers/resolver.d.ts +1 -1
- package/dist/lib/providers/resolver.js +16 -5
- package/dist/lib/providers/resolver.js.map +1 -1
- package/dist/lib/providers/types.d.ts +31 -2
- package/dist/lib/runners/claude-code-runner.js +13 -4
- package/dist/lib/runners/claude-code-runner.js.map +1 -1
- package/dist/lib/runtime-command.d.ts +219 -0
- package/dist/lib/runtime-command.js +320 -0
- package/dist/lib/runtime-command.js.map +1 -0
- package/dist/lib/shortcut/config.js +13 -7
- package/dist/lib/shortcut/config.js.map +1 -1
- package/dist/lib/telemetry/analytics.d.ts +1 -1
- package/dist/lib/telemetry/analytics.js +16 -8
- package/dist/lib/telemetry/analytics.js.map +1 -1
- package/dist/lib/trello/config.js +17 -12
- package/dist/lib/trello/config.js.map +1 -1
- package/dist/lib/update-check.d.ts +8 -3
- package/dist/lib/update-check.js +16 -5
- package/dist/lib/update-check.js.map +1 -1
- package/dist/lib/work-lifecycle/events.d.ts +1 -1
- package/dist/lib/work-lifecycle/hooks/types.d.ts +3 -2
- package/dist/lib/work-lifecycle/hooks/types.js +12 -0
- package/dist/lib/work-lifecycle/hooks/types.js.map +1 -1
- package/dist/lib/work-source/config.d.ts +1 -1
- package/dist/lib/work-source/config.js +11 -1
- package/dist/lib/work-source/config.js.map +1 -1
- package/dist/lib/work-source/provider-sources.js +6 -1
- package/dist/lib/work-source/provider-sources.js.map +1 -1
- package/oclif.manifest.json +2682 -3839
- package/package.json +1 -1
- package/dist/commands/board/index.js +0 -263
- package/dist/commands/board/index.js.map +0 -1
- package/dist/commands/board/view.d.ts +0 -15
- package/dist/commands/board/view.js +0 -137
- package/dist/commands/board/view.js.map +0 -1
- package/dist/commands/board/watch.d.ts +0 -15
- package/dist/commands/board/watch.js +0 -59
- package/dist/commands/board/watch.js.map +0 -1
- package/dist/commands/dashboard/index.d.ts +0 -14
- package/dist/commands/dashboard/index.js +0 -117
- package/dist/commands/dashboard/index.js.map +0 -1
- package/dist/commands/dashboard.d.ts +0 -38
- package/dist/commands/dashboard.js +0 -353
- package/dist/commands/dashboard.js.map +0 -1
- package/dist/commands/pmo/init.d.ts +0 -28
- package/dist/commands/pmo/init.js +0 -410
- package/dist/commands/pmo/init.js.map +0 -1
- package/dist/commands/project/archive.js +0 -79
- package/dist/commands/project/archive.js.map +0 -1
- package/dist/commands/project/create.d.ts +0 -24
- package/dist/commands/project/create.js +0 -191
- package/dist/commands/project/create.js.map +0 -1
- package/dist/commands/project/delete.d.ts +0 -18
- package/dist/commands/project/delete.js +0 -115
- package/dist/commands/project/delete.js.map +0 -1
- package/dist/commands/project/index.js +0 -60
- package/dist/commands/project/index.js.map +0 -1
- package/dist/commands/project/list.js +0 -115
- package/dist/commands/project/list.js.map +0 -1
- package/dist/commands/project/spec.d.ts +0 -19
- package/dist/commands/project/spec.js +0 -218
- package/dist/commands/project/spec.js.map +0 -1
- package/dist/commands/project/unarchive.d.ts +0 -17
- package/dist/commands/project/unarchive.js +0 -55
- package/dist/commands/project/unarchive.js.map +0 -1
- package/dist/commands/project/update.d.ts +0 -19
- package/dist/commands/project/update.js +0 -161
- package/dist/commands/project/update.js.map +0 -1
- package/dist/commands/project/view.d.ts +0 -17
- package/dist/commands/project/view.js +0 -107
- package/dist/commands/project/view.js.map +0 -1
- package/dist/commands/ticket/bulk.js +0 -141
- package/dist/commands/ticket/bulk.js.map +0 -1
- package/dist/commands/ticket/cancel.d.ts +0 -17
- package/dist/commands/ticket/cancel.js +0 -206
- package/dist/commands/ticket/cancel.js.map +0 -1
- package/dist/commands/ticket/category.d.ts +0 -15
- package/dist/commands/ticket/category.js +0 -64
- package/dist/commands/ticket/category.js.map +0 -1
- package/dist/commands/ticket/complete.d.ts +0 -17
- package/dist/commands/ticket/complete.js +0 -178
- package/dist/commands/ticket/complete.js.map +0 -1
- package/dist/commands/ticket/epic.d.ts +0 -21
- package/dist/commands/ticket/epic.js +0 -306
- package/dist/commands/ticket/epic.js.map +0 -1
- package/dist/commands/ticket/link/block.d.ts +0 -15
- package/dist/commands/ticket/link/block.js +0 -96
- package/dist/commands/ticket/link/block.js.map +0 -1
- package/dist/commands/ticket/link/duplicates.d.ts +0 -15
- package/dist/commands/ticket/link/duplicates.js +0 -96
- package/dist/commands/ticket/link/duplicates.js.map +0 -1
- package/dist/commands/ticket/link/index.d.ts +0 -14
- package/dist/commands/ticket/link/index.js +0 -99
- package/dist/commands/ticket/link/index.js.map +0 -1
- package/dist/commands/ticket/link/relates.d.ts +0 -15
- package/dist/commands/ticket/link/relates.js +0 -96
- package/dist/commands/ticket/link/relates.js.map +0 -1
- package/dist/commands/ticket/project.d.ts +0 -19
- package/dist/commands/ticket/project.js +0 -257
- package/dist/commands/ticket/project.js.map +0 -1
- package/dist/commands/ticket/reassign.d.ts +0 -20
- package/dist/commands/ticket/reassign.js +0 -311
- package/dist/commands/ticket/reassign.js.map +0 -1
- package/dist/commands/ticket/resolve.d.ts +0 -68
- package/dist/commands/ticket/resolve.js +0 -296
- package/dist/commands/ticket/resolve.js.map +0 -1
- package/dist/commands/ticket/spec.d.ts +0 -19
- package/dist/commands/ticket/spec.js +0 -260
- package/dist/commands/ticket/spec.js.map +0 -1
- package/dist/commands/ticket/status.d.ts +0 -14
- package/dist/commands/ticket/status.js +0 -84
- package/dist/commands/ticket/status.js.map +0 -1
- package/dist/commands/ticket/view.d.ts +0 -14
- package/dist/commands/ticket/view.js +0 -109
- package/dist/commands/ticket/view.js.map +0 -1
- package/dist/lib/mcp/tools/board.d.ts +0 -6
- package/dist/lib/mcp/tools/board.js +0 -190
- package/dist/lib/mcp/tools/board.js.map +0 -1
- package/dist/lib/mcp/tools/category.d.ts +0 -6
- package/dist/lib/mcp/tools/category.js +0 -85
- package/dist/lib/mcp/tools/category.js.map +0 -1
- package/dist/lib/mcp/tools/epic.d.ts +0 -6
- package/dist/lib/mcp/tools/epic.js +0 -184
- package/dist/lib/mcp/tools/epic.js.map +0 -1
- package/dist/lib/mcp/tools/label.d.ts +0 -6
- package/dist/lib/mcp/tools/label.js +0 -339
- package/dist/lib/mcp/tools/label.js.map +0 -1
- package/dist/lib/mcp/tools/phase.d.ts +0 -6
- package/dist/lib/mcp/tools/phase.js +0 -132
- package/dist/lib/mcp/tools/phase.js.map +0 -1
- package/dist/lib/mcp/tools/project.d.ts +0 -6
- package/dist/lib/mcp/tools/project.js +0 -197
- package/dist/lib/mcp/tools/project.js.map +0 -1
- package/dist/lib/mcp/tools/roadmap.d.ts +0 -6
- package/dist/lib/mcp/tools/roadmap.js +0 -124
- package/dist/lib/mcp/tools/roadmap.js.map +0 -1
- package/dist/lib/mcp/tools/status.d.ts +0 -6
- package/dist/lib/mcp/tools/status.js +0 -110
- package/dist/lib/mcp/tools/status.js.map +0 -1
- package/dist/lib/mcp/tools/template.d.ts +0 -6
- package/dist/lib/mcp/tools/template.js +0 -108
- package/dist/lib/mcp/tools/template.js.map +0 -1
- package/dist/lib/mcp/tools/view.d.ts +0 -6
- package/dist/lib/mcp/tools/view.js +0 -77
- package/dist/lib/mcp/tools/view.js.map +0 -1
- package/dist/lib/mcp/tools/workflow.d.ts +0 -6
- package/dist/lib/mcp/tools/workflow.js +0 -96
- package/dist/lib/mcp/tools/workflow.js.map +0 -1
- package/dist/lib/pmo/storage/categories.d.ts +0 -50
- package/dist/lib/pmo/storage/categories.js +0 -206
- package/dist/lib/pmo/storage/categories.js.map +0 -1
- package/dist/lib/pmo/storage/labels.d.ts +0 -55
- package/dist/lib/pmo/storage/labels.js +0 -347
- package/dist/lib/pmo/storage/labels.js.map +0 -1
- package/dist/lib/pmo/storage/phases.d.ts +0 -65
- package/dist/lib/pmo/storage/phases.js +0 -393
- package/dist/lib/pmo/storage/phases.js.map +0 -1
- package/dist/lib/pmo/storage/roadmaps.d.ts +0 -64
- package/dist/lib/pmo/storage/roadmaps.js +0 -373
- package/dist/lib/pmo/storage/roadmaps.js.map +0 -1
- package/dist/lib/pmo/storage/views.d.ts +0 -57
- package/dist/lib/pmo/storage/views.js +0 -456
- package/dist/lib/pmo/storage/views.js.map +0 -1
|
@@ -3,7 +3,6 @@ import { Args, Flags } from '@oclif/core';
|
|
|
3
3
|
import * as fs from 'node:fs';
|
|
4
4
|
import * as path from 'node:path';
|
|
5
5
|
import { execSync } from 'node:child_process';
|
|
6
|
-
import Database from 'better-sqlite3';
|
|
7
6
|
import { PMOCommand, pmoBaseFlags, autoExportToBoard } from '../../lib/pmo/index.js';
|
|
8
7
|
import { trackAgentSpawned, trackPrimitiveExecuted } from '../../lib/telemetry/analytics.js';
|
|
9
8
|
import { enrichAgentSession } from '../../lib/telemetry/telemetry-bridge.js';
|
|
@@ -13,6 +12,7 @@ import { FlagResolver } from '../../lib/flags/index.js';
|
|
|
13
12
|
import { getWorkColumnSetting, findColumnByName, getTicketExternalMetadata, resolveExternalTicketId, resolveReviewGate } from '../../lib/pmo/utils.js';
|
|
14
13
|
import { styles } from '../../lib/styles.js';
|
|
15
14
|
import { getWorkspaceInfo, createEphemeralAgent, getTicketTmuxSession, killTmuxSession, findWorktreeForBranch, resolveAgentDir, } from '../../lib/agents/commands.js';
|
|
15
|
+
import { openWorkspaceDatabase } from '../../lib/database/index.js';
|
|
16
16
|
import { generateBranchName, DEFAULT_EXECUTION_CONFIG, } from '../../lib/execution/types.js';
|
|
17
17
|
import { runExecution, isDockerRunning, isGitHubTokenAvailable, isDevcontainerCliInstalled, dockerCredentialsExist, getDockerCredentialInfo, isClaudeExecutor, getExecutorDisplayName } from '../../lib/execution/runners.js';
|
|
18
18
|
import { ExecutionStorage, ContainerStorage } from '../../lib/execution/storage.js';
|
|
@@ -41,7 +41,7 @@ function tryGitCommand(cmd, cwd) {
|
|
|
41
41
|
return true;
|
|
42
42
|
}
|
|
43
43
|
catch {
|
|
44
|
-
return false;
|
|
44
|
+
return false; /* git command failed — caller uses boolean to branch logic */
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
@@ -137,6 +137,7 @@ function buildExternalSpawnContextMessage(envelope, additionalMessage) {
|
|
|
137
137
|
}
|
|
138
138
|
export default class WorkStart extends PMOCommand {
|
|
139
139
|
static description = 'Start work on a ticket (launches an agent to implement it)';
|
|
140
|
+
static strict = false; // Allow multiple ticket ID args for batch spawn
|
|
140
141
|
static examples = [
|
|
141
142
|
'<%= config.bin %> <%= command.id %> TKT-001',
|
|
142
143
|
'<%= config.bin %> <%= command.id %> TKT-001 --create-pr # Create PR when work is ready',
|
|
@@ -157,10 +158,12 @@ export default class WorkStart extends PMOCommand {
|
|
|
157
158
|
'<%= config.bin %> <%= command.id %> --from-issue # Uses workspace default source',
|
|
158
159
|
'<%= config.bin %> <%= command.id %> TKT-001 --review-gate auto # Ship directly, no approval needed',
|
|
159
160
|
'<%= config.bin %> <%= command.id %> TKT-001 --review-gate post # Ship then human reviews after',
|
|
161
|
+
'<%= config.bin %> <%= command.id %> PRLT-1085 PRLT-1086 PRLT-1087 --action implement --create-pr # Batch spawn in parallel',
|
|
162
|
+
'<%= config.bin %> <%= command.id %> TKT-001 TKT-002 TKT-003 --max-parallel 2 # Limit concurrent spawns',
|
|
160
163
|
];
|
|
161
164
|
static args = {
|
|
162
165
|
ticketId: Args.string({
|
|
163
|
-
description: 'Ticket ID - prompts with dropdown if not provided',
|
|
166
|
+
description: 'Ticket ID(s) - prompts with dropdown if not provided. Pass multiple IDs for batch spawn.',
|
|
164
167
|
required: false,
|
|
165
168
|
}),
|
|
166
169
|
};
|
|
@@ -309,6 +312,10 @@ export default class WorkStart extends PMOCommand {
|
|
|
309
312
|
description: 'Repository to mount in agent workspace (can be specified multiple times, first is primary)',
|
|
310
313
|
multiple: true,
|
|
311
314
|
}),
|
|
315
|
+
'max-parallel': Flags.integer({
|
|
316
|
+
description: 'Maximum number of concurrent spawns when starting multiple tickets (default: unlimited)',
|
|
317
|
+
min: 1,
|
|
318
|
+
}),
|
|
312
319
|
};
|
|
313
320
|
async findLinkedTicketByEnvelope(projectId, envelope) {
|
|
314
321
|
const tickets = await this.storage.listTickets(projectId);
|
|
@@ -444,7 +451,7 @@ export default class WorkStart extends PMOCommand {
|
|
|
444
451
|
};
|
|
445
452
|
}
|
|
446
453
|
async execute() {
|
|
447
|
-
const { args, flags } = await this.parse(WorkStart);
|
|
454
|
+
const { args, flags, argv } = await this.parse(WorkStart);
|
|
448
455
|
let projectId = flags.project;
|
|
449
456
|
// Check for conflicting PR flags
|
|
450
457
|
if (flags['create-pr'] && flags['no-pr']) {
|
|
@@ -492,8 +499,7 @@ export default class WorkStart extends PMOCommand {
|
|
|
492
499
|
return handleError('NOT_IN_WORKSPACE', 'Not in a workspace. Run "prlt new" first.');
|
|
493
500
|
}
|
|
494
501
|
// Open database for execution storage
|
|
495
|
-
const
|
|
496
|
-
const db = new Database(dbPath);
|
|
502
|
+
const db = openWorkspaceDatabase(workspaceInfo.path);
|
|
497
503
|
const executionStorage = new ExecutionStorage(db);
|
|
498
504
|
try {
|
|
499
505
|
// Handle batch mode (--all)
|
|
@@ -501,6 +507,12 @@ export default class WorkStart extends PMOCommand {
|
|
|
501
507
|
await this.runBatchMode(workspaceInfo, db, executionStorage, flags);
|
|
502
508
|
return;
|
|
503
509
|
}
|
|
510
|
+
// Handle multi-ticket batch spawn: prlt work start TICKET1 TICKET2 TICKET3
|
|
511
|
+
const ticketIdArgs = argv.filter(a => !a.startsWith('-'));
|
|
512
|
+
if (ticketIdArgs.length > 1) {
|
|
513
|
+
await this.runMultiTicketBatch(ticketIdArgs, workspaceInfo, db, executionStorage, flags);
|
|
514
|
+
return;
|
|
515
|
+
}
|
|
504
516
|
// Get ticketId - prompt if not provided
|
|
505
517
|
let ticketId = args.ticketId;
|
|
506
518
|
let externalIssueContextMessage;
|
|
@@ -1484,9 +1496,10 @@ export default class WorkStart extends PMOCommand {
|
|
|
1484
1496
|
this.log(styles.warning('Docker daemon is not running. Start Docker Desktop or use --run-on-host.'));
|
|
1485
1497
|
this.log('');
|
|
1486
1498
|
if (flags.yes || !process.stdout.isTTY) {
|
|
1487
|
-
// Non-interactive mode:
|
|
1488
|
-
|
|
1489
|
-
this.
|
|
1499
|
+
// Non-interactive mode: error instead of silently falling back to host
|
|
1500
|
+
db.close();
|
|
1501
|
+
this.error('Cannot start in Docker — Docker daemon is not running.\n' +
|
|
1502
|
+
'Start Docker Desktop, or use --run-on-host to explicitly run on host.');
|
|
1490
1503
|
}
|
|
1491
1504
|
else {
|
|
1492
1505
|
const dockerChoices = [
|
|
@@ -1538,10 +1551,10 @@ export default class WorkStart extends PMOCommand {
|
|
|
1538
1551
|
const hasCredentials = dockerCredentialsExist();
|
|
1539
1552
|
if (!hasCredentials) {
|
|
1540
1553
|
if (flags.yes || !process.stdout.isTTY) {
|
|
1541
|
-
// Non-interactive mode:
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1554
|
+
// Non-interactive mode: error instead of silently falling back to host
|
|
1555
|
+
db.close();
|
|
1556
|
+
this.error('Cannot start in Docker — OAuth credentials not found.\n' +
|
|
1557
|
+
`Run \`${this.config.bin} agent auth\` to set up credentials, or use --run-on-host to explicitly run on host.`);
|
|
1545
1558
|
}
|
|
1546
1559
|
else {
|
|
1547
1560
|
this.log('');
|
|
@@ -1563,9 +1576,10 @@ export default class WorkStart extends PMOCommand {
|
|
|
1563
1576
|
else {
|
|
1564
1577
|
// No saved preference and no OAuth credentials — prompt user
|
|
1565
1578
|
if (flags.yes || !process.stdout.isTTY) {
|
|
1566
|
-
// Non-interactive mode:
|
|
1567
|
-
|
|
1568
|
-
this.
|
|
1579
|
+
// Non-interactive mode: error instead of silently falling back to host
|
|
1580
|
+
db.close();
|
|
1581
|
+
this.error('Cannot start in Docker — OAuth credentials not found.\n' +
|
|
1582
|
+
`Run \`${this.config.bin} agent auth\` to set up credentials, or use --run-on-host to explicitly run on host.`);
|
|
1569
1583
|
}
|
|
1570
1584
|
else {
|
|
1571
1585
|
this.log('');
|
|
@@ -2278,6 +2292,158 @@ export default class WorkStart extends PMOCommand {
|
|
|
2278
2292
|
throw error;
|
|
2279
2293
|
}
|
|
2280
2294
|
}
|
|
2295
|
+
/**
|
|
2296
|
+
* Run multi-ticket batch spawn: prlt work start TICKET1 TICKET2 TICKET3
|
|
2297
|
+
* Spawns agents in parallel with optional --max-parallel concurrency limit.
|
|
2298
|
+
*/
|
|
2299
|
+
async runMultiTicketBatch(ticketIds, workspaceInfo, db, executionStorage, flags) {
|
|
2300
|
+
const jsonMode = shouldOutputJson(flags);
|
|
2301
|
+
const maxParallel = flags['max-parallel'] || ticketIds.length;
|
|
2302
|
+
if (!jsonMode) {
|
|
2303
|
+
this.log('');
|
|
2304
|
+
this.log(styles.header(`Batch spawn: ${ticketIds.length} ticket(s)${maxParallel < ticketIds.length ? ` (max ${maxParallel} concurrent)` : ''}`));
|
|
2305
|
+
this.log('');
|
|
2306
|
+
}
|
|
2307
|
+
// Resolve project ID (needed for ticket lookups)
|
|
2308
|
+
let projectId = flags.project;
|
|
2309
|
+
projectId = projectId || await this.requireProject({
|
|
2310
|
+
jsonMode: jsonMode ? { flags, commandName: 'work start', baseCommand: `prlt work start ${ticketIds.join(' ')}` } : undefined,
|
|
2311
|
+
});
|
|
2312
|
+
const tickets = [];
|
|
2313
|
+
for (const rawId of ticketIds) {
|
|
2314
|
+
// Try direct lookup first
|
|
2315
|
+
let ticket = await this.storage.getTicket(rawId);
|
|
2316
|
+
// If not found, try resolving as external ticket ID
|
|
2317
|
+
if (!ticket) {
|
|
2318
|
+
const resolved = resolveExternalTicketId({ id: rawId, metadata: {} });
|
|
2319
|
+
if (resolved !== rawId) {
|
|
2320
|
+
ticket = await this.storage.getTicket(resolved);
|
|
2321
|
+
}
|
|
2322
|
+
}
|
|
2323
|
+
// Still not found — try searching by external key in metadata
|
|
2324
|
+
if (!ticket) {
|
|
2325
|
+
const allTickets = await this.storage.listTickets(projectId);
|
|
2326
|
+
ticket = allTickets.find(t => {
|
|
2327
|
+
const ext = getTicketExternalMetadata(t);
|
|
2328
|
+
return ext.key === rawId;
|
|
2329
|
+
}) ?? null;
|
|
2330
|
+
}
|
|
2331
|
+
if (!ticket) {
|
|
2332
|
+
if (jsonMode) {
|
|
2333
|
+
outputErrorAsJson('TICKET_NOT_FOUND', `Ticket "${rawId}" not found.`, createMetadata('work start', flags));
|
|
2334
|
+
db.close();
|
|
2335
|
+
return;
|
|
2336
|
+
}
|
|
2337
|
+
this.error(`Ticket "${rawId}" not found.`);
|
|
2338
|
+
return; // unreachable but helps TS narrowing
|
|
2339
|
+
}
|
|
2340
|
+
tickets.push({ ticket, originalId: rawId });
|
|
2341
|
+
}
|
|
2342
|
+
// Build start args that apply to all tickets (same flags for all)
|
|
2343
|
+
const buildStartArgs = (ticketId, projId) => {
|
|
2344
|
+
const startArgs = [ticketId, '--project', projId, '--ephemeral'];
|
|
2345
|
+
if (flags.action)
|
|
2346
|
+
startArgs.push('--action', flags.action);
|
|
2347
|
+
if (flags.prompt)
|
|
2348
|
+
startArgs.push('--prompt', flags.prompt);
|
|
2349
|
+
if (flags.message)
|
|
2350
|
+
startArgs.push('--message', flags.message);
|
|
2351
|
+
if (flags.display)
|
|
2352
|
+
startArgs.push('--display', flags.display);
|
|
2353
|
+
if (flags['run-on-host'])
|
|
2354
|
+
startArgs.push('--run-on-host');
|
|
2355
|
+
if (flags.executor)
|
|
2356
|
+
startArgs.push('--executor', flags.executor);
|
|
2357
|
+
if (flags['permission-mode'])
|
|
2358
|
+
startArgs.push('--permission-mode', flags['permission-mode']);
|
|
2359
|
+
if (flags['skip-permissions'])
|
|
2360
|
+
startArgs.push('--skip-permissions');
|
|
2361
|
+
if (flags['create-pr'])
|
|
2362
|
+
startArgs.push('--create-pr');
|
|
2363
|
+
if (flags['no-pr'])
|
|
2364
|
+
startArgs.push('--no-pr');
|
|
2365
|
+
if (flags.session)
|
|
2366
|
+
startArgs.push('--session', flags.session);
|
|
2367
|
+
if (flags.force)
|
|
2368
|
+
startArgs.push('--force');
|
|
2369
|
+
if (flags.focus)
|
|
2370
|
+
startArgs.push('--focus');
|
|
2371
|
+
if (flags.clone)
|
|
2372
|
+
startArgs.push('--clone');
|
|
2373
|
+
if (flags['review-gate'])
|
|
2374
|
+
startArgs.push('--review-gate', flags['review-gate']);
|
|
2375
|
+
if (flags['tool-policy'])
|
|
2376
|
+
startArgs.push('--tool-policy', flags['tool-policy']);
|
|
2377
|
+
if (flags['keep-alive'])
|
|
2378
|
+
startArgs.push('--keep-alive');
|
|
2379
|
+
if (flags.cleanup)
|
|
2380
|
+
startArgs.push('--cleanup', flags.cleanup);
|
|
2381
|
+
if (flags['allow-network'])
|
|
2382
|
+
startArgs.push('--allow-network', flags['allow-network']);
|
|
2383
|
+
if (flags['use-api-key'])
|
|
2384
|
+
startArgs.push('--use-api-key');
|
|
2385
|
+
if (flags.yes)
|
|
2386
|
+
startArgs.push('--yes');
|
|
2387
|
+
return startArgs;
|
|
2388
|
+
};
|
|
2389
|
+
let successCount = 0;
|
|
2390
|
+
let failCount = 0;
|
|
2391
|
+
const executionResults = [];
|
|
2392
|
+
// Spawn agents with concurrency control
|
|
2393
|
+
const spawnOne = async (entry) => {
|
|
2394
|
+
const { ticket, originalId } = entry;
|
|
2395
|
+
try {
|
|
2396
|
+
if (!jsonMode) {
|
|
2397
|
+
this.log(styles.muted(`Starting ${ticket.id}...`));
|
|
2398
|
+
}
|
|
2399
|
+
const startArgs = buildStartArgs(ticket.id, ticket.projectId || projectId);
|
|
2400
|
+
await this.config.runCommand('work:start', startArgs);
|
|
2401
|
+
successCount++;
|
|
2402
|
+
executionResults.push({
|
|
2403
|
+
workId: `WORK-${ticket.id}`,
|
|
2404
|
+
ticketId: ticket.id,
|
|
2405
|
+
agent: 'ephemeral',
|
|
2406
|
+
status: 'running',
|
|
2407
|
+
});
|
|
2408
|
+
}
|
|
2409
|
+
catch (error) {
|
|
2410
|
+
failCount++;
|
|
2411
|
+
if (!jsonMode) {
|
|
2412
|
+
this.log(styles.error(`Failed to start ${originalId}: ${error instanceof Error ? error.message : error}`));
|
|
2413
|
+
}
|
|
2414
|
+
executionResults.push({
|
|
2415
|
+
workId: '',
|
|
2416
|
+
ticketId: ticket.id,
|
|
2417
|
+
agent: '',
|
|
2418
|
+
status: 'failed',
|
|
2419
|
+
});
|
|
2420
|
+
}
|
|
2421
|
+
};
|
|
2422
|
+
// Run with concurrency limit
|
|
2423
|
+
if (maxParallel >= tickets.length) {
|
|
2424
|
+
// Unlimited: spawn all in parallel
|
|
2425
|
+
await Promise.all(tickets.map(entry => spawnOne(entry)));
|
|
2426
|
+
}
|
|
2427
|
+
else {
|
|
2428
|
+
// Limited concurrency: process in batches
|
|
2429
|
+
for (let i = 0; i < tickets.length; i += maxParallel) {
|
|
2430
|
+
const batch = tickets.slice(i, i + maxParallel);
|
|
2431
|
+
// eslint-disable-next-line no-await-in-loop
|
|
2432
|
+
await Promise.all(batch.map(entry => spawnOne(entry)));
|
|
2433
|
+
}
|
|
2434
|
+
}
|
|
2435
|
+
await autoExportToBoard(this.pmoPath, this.storage, () => { });
|
|
2436
|
+
db.close();
|
|
2437
|
+
// Output results
|
|
2438
|
+
if (jsonMode) {
|
|
2439
|
+
const metadata = createMetadata('work start', flags);
|
|
2440
|
+
outputExecutionResultAsJson(executionResults, successCount, failCount, metadata);
|
|
2441
|
+
}
|
|
2442
|
+
else {
|
|
2443
|
+
this.log('');
|
|
2444
|
+
this.log(styles.success(`Batch complete: ${successCount} started, ${failCount} failed`));
|
|
2445
|
+
}
|
|
2446
|
+
}
|
|
2281
2447
|
/**
|
|
2282
2448
|
* Run batch mode: spawn work for all unassigned backlog tickets
|
|
2283
2449
|
*/
|
|
@@ -2413,9 +2579,10 @@ export default class WorkStart extends PMOCommand {
|
|
|
2413
2579
|
this.log(styles.warning('Docker daemon is not running. Start Docker Desktop or use --run-on-host.'));
|
|
2414
2580
|
this.log('');
|
|
2415
2581
|
if (!process.stdout.isTTY) {
|
|
2416
|
-
// Non-interactive mode:
|
|
2417
|
-
|
|
2418
|
-
this.
|
|
2582
|
+
// Non-interactive mode: error instead of silently falling back to host
|
|
2583
|
+
db.close();
|
|
2584
|
+
this.error('Cannot start in Docker — Docker daemon is not running.\n' +
|
|
2585
|
+
'Start Docker Desktop, or use --run-on-host to explicitly run on host.');
|
|
2419
2586
|
}
|
|
2420
2587
|
else {
|
|
2421
2588
|
const { dockerAction } = await this.prompt([
|
|
@@ -2442,9 +2609,10 @@ export default class WorkStart extends PMOCommand {
|
|
|
2442
2609
|
const hasCredentials = dockerCredentialsExist();
|
|
2443
2610
|
if (!hasCredentials) {
|
|
2444
2611
|
if (!process.stdout.isTTY) {
|
|
2445
|
-
// Non-interactive mode:
|
|
2446
|
-
|
|
2447
|
-
|
|
2612
|
+
// Non-interactive mode: error instead of silently falling back to host
|
|
2613
|
+
db.close();
|
|
2614
|
+
this.error('Cannot start in Docker — OAuth credentials not found.\n' +
|
|
2615
|
+
`Run \`${this.config.bin} agent auth\` to set up credentials, or use --run-on-host to explicitly run on host.`);
|
|
2448
2616
|
}
|
|
2449
2617
|
else {
|
|
2450
2618
|
const hasApiKey = !!process.env.ANTHROPIC_API_KEY;
|