@proletariat/cli 0.3.52 → 0.3.54
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/README.md +39 -7
- package/bin/run.js +21 -11
- package/bin/validate-better-sqlite3.cjs +17 -6
- package/dist/commands/action/create.js +1 -0
- package/dist/commands/action/create.js.map +1 -0
- package/dist/commands/action/delete.js +1 -0
- package/dist/commands/action/delete.js.map +1 -0
- package/dist/commands/action/index.js +1 -0
- package/dist/commands/action/index.js.map +1 -0
- package/dist/commands/action/list.js +1 -0
- package/dist/commands/action/list.js.map +1 -0
- package/dist/commands/action/run.js +1 -0
- package/dist/commands/action/run.js.map +1 -0
- package/dist/commands/action/show.js +1 -0
- package/dist/commands/action/show.js.map +1 -0
- package/dist/commands/action/update.js +1 -0
- package/dist/commands/action/update.js.map +1 -0
- package/dist/commands/agent/auth.js +1 -0
- package/dist/commands/agent/auth.js.map +1 -0
- package/dist/commands/agent/cleanup.js +1 -0
- package/dist/commands/agent/cleanup.js.map +1 -0
- package/dist/commands/agent/discover.js +1 -0
- package/dist/commands/agent/discover.js.map +1 -0
- package/dist/commands/agent/index.js +1 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/agent/list.js +1 -0
- package/dist/commands/agent/list.js.map +1 -0
- package/dist/commands/agent/login.js +1 -0
- package/dist/commands/agent/login.js.map +1 -0
- package/dist/commands/agent/rebuild.js +1 -0
- package/dist/commands/agent/rebuild.js.map +1 -0
- package/dist/commands/agent/remove.js +1 -0
- package/dist/commands/agent/remove.js.map +1 -0
- package/dist/commands/agent/restart.js +1 -0
- package/dist/commands/agent/restart.js.map +1 -0
- package/dist/commands/agent/shell.js +5 -1
- package/dist/commands/agent/shell.js.map +1 -0
- package/dist/commands/agent/staff/add.js +1 -0
- package/dist/commands/agent/staff/add.js.map +1 -0
- package/dist/commands/agent/staff/index.js +1 -0
- package/dist/commands/agent/staff/index.js.map +1 -0
- package/dist/commands/agent/staff/list.js +1 -0
- package/dist/commands/agent/staff/list.js.map +1 -0
- package/dist/commands/agent/staff/remove.js +1 -0
- package/dist/commands/agent/staff/remove.js.map +1 -0
- package/dist/commands/agent/status.js +1 -0
- package/dist/commands/agent/status.js.map +1 -0
- package/dist/commands/agent/themes/add-names.js +1 -0
- package/dist/commands/agent/themes/add-names.js.map +1 -0
- package/dist/commands/agent/themes/create.js +1 -0
- package/dist/commands/agent/themes/create.js.map +1 -0
- package/dist/commands/agent/themes/index.js +1 -0
- package/dist/commands/agent/themes/index.js.map +1 -0
- package/dist/commands/agent/themes/list.js +1 -0
- package/dist/commands/agent/themes/list.js.map +1 -0
- package/dist/commands/agent/themes/set.js +1 -0
- package/dist/commands/agent/themes/set.js.map +1 -0
- package/dist/commands/agent/visit.js +1 -0
- package/dist/commands/agent/visit.js.map +1 -0
- package/dist/commands/agents/themes/add-names.js +1 -0
- package/dist/commands/agents/themes/add-names.js.map +1 -0
- package/dist/commands/agents/themes/create.js +1 -0
- package/dist/commands/agents/themes/create.js.map +1 -0
- package/dist/commands/agents/themes/list.js +1 -0
- package/dist/commands/agents/themes/list.js.map +1 -0
- package/dist/commands/asana/connect.js +1 -0
- package/dist/commands/asana/connect.js.map +1 -0
- package/dist/commands/asana/sync.js +1 -0
- package/dist/commands/asana/sync.js.map +1 -0
- package/dist/commands/autocomplete/setup.js +1 -0
- package/dist/commands/autocomplete/setup.js.map +1 -0
- package/dist/commands/board/index.js +1 -0
- package/dist/commands/board/index.js.map +1 -0
- package/dist/commands/board/view.js +1 -0
- package/dist/commands/board/view.js.map +1 -0
- package/dist/commands/board/watch.js +1 -0
- package/dist/commands/board/watch.js.map +1 -0
- package/dist/commands/branch/create.js +1 -0
- package/dist/commands/branch/create.js.map +1 -0
- package/dist/commands/branch/index.js +1 -0
- package/dist/commands/branch/index.js.map +1 -0
- package/dist/commands/branch/list.js +1 -0
- package/dist/commands/branch/list.js.map +1 -0
- package/dist/commands/branch/validate.js +1 -0
- package/dist/commands/branch/validate.js.map +1 -0
- package/dist/commands/branch/where.js +1 -0
- package/dist/commands/branch/where.js.map +1 -0
- package/dist/commands/caffeinate/index.js +1 -0
- package/dist/commands/caffeinate/index.js.map +1 -0
- package/dist/commands/caffeinate/start.js +1 -0
- package/dist/commands/caffeinate/start.js.map +1 -0
- package/dist/commands/caffeinate/status.js +1 -0
- package/dist/commands/caffeinate/status.js.map +1 -0
- package/dist/commands/caffeinate/stop.js +1 -0
- package/dist/commands/caffeinate/stop.js.map +1 -0
- package/dist/commands/category/create.js +1 -0
- package/dist/commands/category/create.js.map +1 -0
- package/dist/commands/category/delete.js +1 -0
- package/dist/commands/category/delete.js.map +1 -0
- package/dist/commands/category/index.js +1 -0
- package/dist/commands/category/index.js.map +1 -0
- package/dist/commands/category/list.js +1 -0
- package/dist/commands/category/list.js.map +1 -0
- package/dist/commands/category/rename.js +1 -0
- package/dist/commands/category/rename.js.map +1 -0
- package/dist/commands/claude/index.js +11 -5
- package/dist/commands/claude/index.js.map +1 -0
- package/dist/commands/claude/open.js +1 -0
- package/dist/commands/claude/open.js.map +1 -0
- package/dist/commands/commit.js +1 -0
- package/dist/commands/commit.js.map +1 -0
- package/dist/commands/config/index.js +1 -0
- package/dist/commands/config/index.js.map +1 -0
- package/dist/commands/diet.js +1 -0
- package/dist/commands/diet.js.map +1 -0
- package/dist/commands/docker/clean.js +1 -0
- package/dist/commands/docker/clean.js.map +1 -0
- package/dist/commands/docker/index.js +1 -0
- package/dist/commands/docker/index.js.map +1 -0
- package/dist/commands/docker/list.js +1 -0
- package/dist/commands/docker/list.js.map +1 -0
- package/dist/commands/docker/logs.js +4 -1
- package/dist/commands/docker/logs.js.map +1 -0
- package/dist/commands/docker/prune.js +1 -0
- package/dist/commands/docker/prune.js.map +1 -0
- package/dist/commands/docker/restart.js +1 -0
- package/dist/commands/docker/restart.js.map +1 -0
- package/dist/commands/docker/shell.js +4 -1
- package/dist/commands/docker/shell.js.map +1 -0
- package/dist/commands/docker/start.js +1 -0
- package/dist/commands/docker/start.js.map +1 -0
- package/dist/commands/docker/status.js +1 -0
- package/dist/commands/docker/status.js.map +1 -0
- package/dist/commands/docker/stop.js +1 -0
- package/dist/commands/docker/stop.js.map +1 -0
- package/dist/commands/docker/sync.js +1 -0
- package/dist/commands/docker/sync.js.map +1 -0
- package/dist/commands/epic/activate.js +1 -0
- package/dist/commands/epic/activate.js.map +1 -0
- package/dist/commands/epic/archive.js +1 -0
- package/dist/commands/epic/archive.js.map +1 -0
- package/dist/commands/epic/create.js +1 -0
- package/dist/commands/epic/create.js.map +1 -0
- package/dist/commands/epic/delete.js +1 -0
- package/dist/commands/epic/delete.js.map +1 -0
- package/dist/commands/epic/index.js +1 -0
- package/dist/commands/epic/index.js.map +1 -0
- package/dist/commands/epic/list.js +1 -0
- package/dist/commands/epic/list.js.map +1 -0
- package/dist/commands/epic/move.js +1 -0
- package/dist/commands/epic/move.js.map +1 -0
- package/dist/commands/epic/progress.js +1 -0
- package/dist/commands/epic/progress.js.map +1 -0
- package/dist/commands/epic/project.js +1 -0
- package/dist/commands/epic/project.js.map +1 -0
- package/dist/commands/epic/reorder.js +1 -0
- package/dist/commands/epic/reorder.js.map +1 -0
- package/dist/commands/epic/show.js +1 -0
- package/dist/commands/epic/show.js.map +1 -0
- package/dist/commands/epic/spec.js +1 -0
- package/dist/commands/epic/spec.js.map +1 -0
- package/dist/commands/epic/ticket.js +1 -0
- package/dist/commands/epic/ticket.js.map +1 -0
- package/dist/commands/epic/view.js +1 -0
- package/dist/commands/epic/view.js.map +1 -0
- package/dist/commands/execution/config.js +1 -0
- package/dist/commands/execution/config.js.map +1 -0
- package/dist/commands/execution/index.js +1 -0
- package/dist/commands/execution/index.js.map +1 -0
- package/dist/commands/execution/kill.js +1 -0
- package/dist/commands/execution/kill.js.map +1 -0
- package/dist/commands/execution/list.js +1 -0
- package/dist/commands/execution/list.js.map +1 -0
- package/dist/commands/execution/logs.js +4 -5
- package/dist/commands/execution/logs.js.map +1 -0
- package/dist/commands/execution/stop.js +1 -0
- package/dist/commands/execution/stop.js.map +1 -0
- package/dist/commands/execution/view.js +1 -0
- package/dist/commands/execution/view.js.map +1 -0
- package/dist/commands/feedback/index.js +1 -0
- package/dist/commands/feedback/index.js.map +1 -0
- package/dist/commands/feedback/list.js +1 -0
- package/dist/commands/feedback/list.js.map +1 -0
- package/dist/commands/feedback/submit.js +1 -0
- package/dist/commands/feedback/submit.js.map +1 -0
- package/dist/commands/feedback/view.js +1 -0
- package/dist/commands/feedback/view.js.map +1 -0
- package/dist/commands/gh/index.js +1 -0
- package/dist/commands/gh/index.js.map +1 -0
- package/dist/commands/gh/login.js +4 -1
- package/dist/commands/gh/login.js.map +1 -0
- package/dist/commands/gh/status.js +1 -0
- package/dist/commands/gh/status.js.map +1 -0
- package/dist/commands/gh/token.js +1 -0
- package/dist/commands/gh/token.js.map +1 -0
- package/dist/commands/init.js +1 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/label/create.js +1 -0
- package/dist/commands/label/create.js.map +1 -0
- package/dist/commands/label/delete.js +1 -0
- package/dist/commands/label/delete.js.map +1 -0
- package/dist/commands/label/group/create.js +1 -0
- package/dist/commands/label/group/create.js.map +1 -0
- package/dist/commands/label/group/list.js +1 -0
- package/dist/commands/label/group/list.js.map +1 -0
- package/dist/commands/label/index.js +1 -0
- package/dist/commands/label/index.js.map +1 -0
- package/dist/commands/label/list.js +1 -0
- package/dist/commands/label/list.js.map +1 -0
- package/dist/commands/linear/auth.d.ts +1 -0
- package/dist/commands/linear/auth.js +7 -5
- package/dist/commands/linear/auth.js.map +1 -0
- package/dist/commands/linear/connect.d.ts +17 -0
- package/dist/commands/linear/connect.js +298 -0
- package/dist/commands/linear/connect.js.map +1 -0
- package/dist/commands/linear/import.js +3 -2
- package/dist/commands/linear/import.js.map +1 -0
- package/dist/commands/linear/status.js +42 -5
- package/dist/commands/linear/status.js.map +1 -0
- package/dist/commands/linear/sync.js +3 -2
- package/dist/commands/linear/sync.js.map +1 -0
- package/dist/commands/link/create.js +1 -0
- package/dist/commands/link/create.js.map +1 -0
- package/dist/commands/link/index.js +1 -0
- package/dist/commands/link/index.js.map +1 -0
- package/dist/commands/link/list.js +1 -0
- package/dist/commands/link/list.js.map +1 -0
- package/dist/commands/link/remove.js +1 -0
- package/dist/commands/link/remove.js.map +1 -0
- package/dist/commands/mcp-server.js +1 -0
- package/dist/commands/mcp-server.js.map +1 -0
- package/dist/commands/monday/connect.js +1 -0
- package/dist/commands/monday/connect.js.map +1 -0
- package/dist/commands/monday/sync.js +1 -0
- package/dist/commands/monday/sync.js.map +1 -0
- package/dist/commands/orchestrator/attach.js +50 -13
- package/dist/commands/orchestrator/attach.js.map +1 -0
- package/dist/commands/orchestrator/index.js +1 -0
- package/dist/commands/orchestrator/index.js.map +1 -0
- package/dist/commands/orchestrator/start.d.ts +9 -0
- package/dist/commands/orchestrator/start.js +55 -15
- package/dist/commands/orchestrator/start.js.map +1 -0
- package/dist/commands/orchestrator/status.js +63 -28
- package/dist/commands/orchestrator/status.js.map +1 -0
- package/dist/commands/orchestrator/stop.js +65 -17
- package/dist/commands/orchestrator/stop.js.map +1 -0
- package/dist/commands/phase/create.js +1 -0
- package/dist/commands/phase/create.js.map +1 -0
- package/dist/commands/phase/delete.js +1 -0
- package/dist/commands/phase/delete.js.map +1 -0
- package/dist/commands/phase/list.js +1 -0
- package/dist/commands/phase/list.js.map +1 -0
- package/dist/commands/phase/move.js +1 -0
- package/dist/commands/phase/move.js.map +1 -0
- package/dist/commands/phase/template/apply.js +1 -0
- package/dist/commands/phase/template/apply.js.map +1 -0
- package/dist/commands/phase/template/create.js +1 -0
- package/dist/commands/phase/template/create.js.map +1 -0
- package/dist/commands/phase/template/delete.js +1 -0
- package/dist/commands/phase/template/delete.js.map +1 -0
- package/dist/commands/phase/template/list.js +1 -0
- package/dist/commands/phase/template/list.js.map +1 -0
- package/dist/commands/phase/template/update.js +1 -0
- package/dist/commands/phase/template/update.js.map +1 -0
- package/dist/commands/phase/update.js +1 -0
- package/dist/commands/phase/update.js.map +1 -0
- package/dist/commands/pmo/init.js +1 -0
- package/dist/commands/pmo/init.js.map +1 -0
- package/dist/commands/pr/create.js +4 -0
- package/dist/commands/pr/create.js.map +1 -0
- package/dist/commands/pr/index.js +1 -0
- package/dist/commands/pr/index.js.map +1 -0
- package/dist/commands/pr/link.js +1 -0
- package/dist/commands/pr/link.js.map +1 -0
- package/dist/commands/pr/list.js +1 -0
- package/dist/commands/pr/list.js.map +1 -0
- package/dist/commands/pr/status.js +1 -0
- package/dist/commands/pr/status.js.map +1 -0
- package/dist/commands/priority/add.js +1 -0
- package/dist/commands/priority/add.js.map +1 -0
- package/dist/commands/priority/list.js +1 -0
- package/dist/commands/priority/list.js.map +1 -0
- package/dist/commands/priority/remove.js +1 -0
- package/dist/commands/priority/remove.js.map +1 -0
- package/dist/commands/priority/set.js +1 -0
- package/dist/commands/priority/set.js.map +1 -0
- package/dist/commands/project/archive.js +1 -0
- package/dist/commands/project/archive.js.map +1 -0
- package/dist/commands/project/create.js +1 -0
- package/dist/commands/project/create.js.map +1 -0
- package/dist/commands/project/delete.js +1 -0
- package/dist/commands/project/delete.js.map +1 -0
- package/dist/commands/project/index.js +1 -0
- package/dist/commands/project/index.js.map +1 -0
- package/dist/commands/project/list.js +1 -0
- package/dist/commands/project/list.js.map +1 -0
- package/dist/commands/project/spec.js +1 -0
- package/dist/commands/project/spec.js.map +1 -0
- package/dist/commands/project/unarchive.js +1 -0
- package/dist/commands/project/unarchive.js.map +1 -0
- package/dist/commands/project/update.js +1 -0
- package/dist/commands/project/update.js.map +1 -0
- package/dist/commands/project/view.js +1 -0
- package/dist/commands/project/view.js.map +1 -0
- package/dist/commands/pull.js +1 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/qa/index.js +11 -5
- package/dist/commands/qa/index.js.map +1 -0
- package/dist/commands/repo/add.js +1 -0
- package/dist/commands/repo/add.js.map +1 -0
- package/dist/commands/repo/create.js +1 -0
- package/dist/commands/repo/create.js.map +1 -0
- package/dist/commands/repo/index.js +1 -0
- package/dist/commands/repo/index.js.map +1 -0
- package/dist/commands/repo/list.js +1 -0
- package/dist/commands/repo/list.js.map +1 -0
- package/dist/commands/repo/remove.js +1 -0
- package/dist/commands/repo/remove.js.map +1 -0
- package/dist/commands/repo/view.js +1 -0
- package/dist/commands/repo/view.js.map +1 -0
- package/dist/commands/roadmap/add-project.js +1 -0
- package/dist/commands/roadmap/add-project.js.map +1 -0
- package/dist/commands/roadmap/create.js +1 -0
- package/dist/commands/roadmap/create.js.map +1 -0
- package/dist/commands/roadmap/delete.js +1 -0
- package/dist/commands/roadmap/delete.js.map +1 -0
- package/dist/commands/roadmap/generate.js +1 -0
- package/dist/commands/roadmap/generate.js.map +1 -0
- package/dist/commands/roadmap/index.js +1 -0
- package/dist/commands/roadmap/index.js.map +1 -0
- package/dist/commands/roadmap/list.js +1 -0
- package/dist/commands/roadmap/list.js.map +1 -0
- package/dist/commands/roadmap/remove-project.js +1 -0
- package/dist/commands/roadmap/remove-project.js.map +1 -0
- package/dist/commands/roadmap/reorder.js +1 -0
- package/dist/commands/roadmap/reorder.js.map +1 -0
- package/dist/commands/roadmap/update.js +1 -0
- package/dist/commands/roadmap/update.js.map +1 -0
- package/dist/commands/roadmap/view.js +1 -0
- package/dist/commands/roadmap/view.js.map +1 -0
- package/dist/commands/session/attach.js +1 -0
- package/dist/commands/session/attach.js.map +1 -0
- package/dist/commands/session/create.js +2 -1
- package/dist/commands/session/create.js.map +1 -0
- package/dist/commands/session/health.js +5 -7
- package/dist/commands/session/health.js.map +1 -0
- package/dist/commands/session/index.js +1 -0
- package/dist/commands/session/index.js.map +1 -0
- package/dist/commands/session/list.js +1 -0
- package/dist/commands/session/list.js.map +1 -0
- package/dist/commands/session/peek.js +1 -0
- package/dist/commands/session/peek.js.map +1 -0
- package/dist/commands/session/poke.js +20 -1
- package/dist/commands/session/poke.js.map +1 -0
- package/dist/commands/spec/create.js +1 -0
- package/dist/commands/spec/create.js.map +1 -0
- package/dist/commands/spec/delete.js +1 -0
- package/dist/commands/spec/delete.js.map +1 -0
- package/dist/commands/spec/edit.js +1 -0
- package/dist/commands/spec/edit.js.map +1 -0
- package/dist/commands/spec/index.js +1 -0
- package/dist/commands/spec/index.js.map +1 -0
- package/dist/commands/spec/link/depends.js +1 -0
- package/dist/commands/spec/link/depends.js.map +1 -0
- package/dist/commands/spec/link/index.js +1 -0
- package/dist/commands/spec/link/index.js.map +1 -0
- package/dist/commands/spec/link/remove.js +1 -0
- package/dist/commands/spec/link/remove.js.map +1 -0
- package/dist/commands/spec/list.js +1 -0
- package/dist/commands/spec/list.js.map +1 -0
- package/dist/commands/spec/plan.js +1 -0
- package/dist/commands/spec/plan.js.map +1 -0
- package/dist/commands/spec/ticket.js +1 -0
- package/dist/commands/spec/ticket.js.map +1 -0
- package/dist/commands/spec/view.js +1 -0
- package/dist/commands/spec/view.js.map +1 -0
- package/dist/commands/staff/add.js +1 -0
- package/dist/commands/staff/add.js.map +1 -0
- package/dist/commands/staff/index.js +1 -0
- package/dist/commands/staff/index.js.map +1 -0
- package/dist/commands/staff/list.js +1 -0
- package/dist/commands/staff/list.js.map +1 -0
- package/dist/commands/staff/remove.js +1 -0
- package/dist/commands/staff/remove.js.map +1 -0
- package/dist/commands/status/category.js +1 -0
- package/dist/commands/status/category.js.map +1 -0
- package/dist/commands/status/create.js +1 -0
- package/dist/commands/status/create.js.map +1 -0
- package/dist/commands/status/delete.js +1 -0
- package/dist/commands/status/delete.js.map +1 -0
- package/dist/commands/status/index.js +1 -0
- package/dist/commands/status/index.js.map +1 -0
- package/dist/commands/status/list.js +1 -0
- package/dist/commands/status/list.js.map +1 -0
- package/dist/commands/status/move.js +1 -0
- package/dist/commands/status/move.js.map +1 -0
- package/dist/commands/status/update.js +1 -0
- package/dist/commands/status/update.js.map +1 -0
- package/dist/commands/support/book.js +1 -0
- package/dist/commands/support/book.js.map +1 -0
- package/dist/commands/support/discord.js +1 -0
- package/dist/commands/support/discord.js.map +1 -0
- package/dist/commands/support/docs.js +1 -0
- package/dist/commands/support/docs.js.map +1 -0
- package/dist/commands/support/index.js +1 -0
- package/dist/commands/support/index.js.map +1 -0
- package/dist/commands/support/issues.js +1 -0
- package/dist/commands/support/issues.js.map +1 -0
- package/dist/commands/support/logs.js +1 -0
- package/dist/commands/support/logs.js.map +1 -0
- package/dist/commands/telemetry/disable.d.ts +10 -0
- package/dist/commands/telemetry/disable.js +27 -0
- package/dist/commands/telemetry/disable.js.map +1 -0
- package/dist/commands/telemetry/enable.d.ts +10 -0
- package/dist/commands/telemetry/enable.js +27 -0
- package/dist/commands/telemetry/enable.js.map +1 -0
- package/dist/commands/telemetry/index.d.ts +10 -0
- package/dist/commands/telemetry/index.js +41 -0
- package/dist/commands/telemetry/index.js.map +1 -0
- package/dist/commands/telemetry/status.d.ts +10 -0
- package/dist/commands/telemetry/status.js +42 -0
- package/dist/commands/telemetry/status.js.map +1 -0
- package/dist/commands/template/apply.js +1 -0
- package/dist/commands/template/apply.js.map +1 -0
- package/dist/commands/template/create.js +1 -0
- package/dist/commands/template/create.js.map +1 -0
- package/dist/commands/template/delete.js +1 -0
- package/dist/commands/template/delete.js.map +1 -0
- package/dist/commands/template/index.js +1 -0
- package/dist/commands/template/index.js.map +1 -0
- package/dist/commands/template/list.js +1 -0
- package/dist/commands/template/list.js.map +1 -0
- package/dist/commands/template/save.js +1 -0
- package/dist/commands/template/save.js.map +1 -0
- package/dist/commands/template/update.js +1 -0
- package/dist/commands/template/update.js.map +1 -0
- package/dist/commands/terminal/title.js +1 -0
- package/dist/commands/terminal/title.js.map +1 -0
- package/dist/commands/theme/add-names.js +1 -0
- package/dist/commands/theme/add-names.js.map +1 -0
- package/dist/commands/theme/create.js +1 -0
- package/dist/commands/theme/create.js.map +1 -0
- package/dist/commands/theme/index.js +1 -0
- package/dist/commands/theme/index.js.map +1 -0
- package/dist/commands/theme/list.js +1 -0
- package/dist/commands/theme/list.js.map +1 -0
- package/dist/commands/theme/set.js +1 -0
- package/dist/commands/theme/set.js.map +1 -0
- package/dist/commands/ticket/bulk.js +1 -0
- package/dist/commands/ticket/bulk.js.map +1 -0
- package/dist/commands/ticket/category.js +1 -0
- package/dist/commands/ticket/category.js.map +1 -0
- package/dist/commands/ticket/complete.js +1 -0
- package/dist/commands/ticket/complete.js.map +1 -0
- package/dist/commands/ticket/create.js +1 -0
- package/dist/commands/ticket/create.js.map +1 -0
- package/dist/commands/ticket/delete.js +1 -0
- package/dist/commands/ticket/delete.js.map +1 -0
- package/dist/commands/ticket/edit.js +1 -0
- package/dist/commands/ticket/edit.js.map +1 -0
- package/dist/commands/ticket/epic.js +1 -0
- package/dist/commands/ticket/epic.js.map +1 -0
- package/dist/commands/ticket/index.js +1 -0
- package/dist/commands/ticket/index.js.map +1 -0
- package/dist/commands/ticket/link/block.js +1 -0
- package/dist/commands/ticket/link/block.js.map +1 -0
- package/dist/commands/ticket/link/duplicates.js +1 -0
- package/dist/commands/ticket/link/duplicates.js.map +1 -0
- package/dist/commands/ticket/link/index.js +1 -0
- package/dist/commands/ticket/link/index.js.map +1 -0
- package/dist/commands/ticket/link/relates.js +1 -0
- package/dist/commands/ticket/link/relates.js.map +1 -0
- package/dist/commands/ticket/list.js +1 -0
- package/dist/commands/ticket/list.js.map +1 -0
- package/dist/commands/ticket/move.js +1 -0
- package/dist/commands/ticket/move.js.map +1 -0
- package/dist/commands/ticket/project.js +1 -0
- package/dist/commands/ticket/project.js.map +1 -0
- package/dist/commands/ticket/reassign.js +1 -0
- package/dist/commands/ticket/reassign.js.map +1 -0
- package/dist/commands/ticket/resolve.js +1 -0
- package/dist/commands/ticket/resolve.js.map +1 -0
- package/dist/commands/ticket/show.js +1 -0
- package/dist/commands/ticket/show.js.map +1 -0
- package/dist/commands/ticket/spec.js +1 -0
- package/dist/commands/ticket/spec.js.map +1 -0
- package/dist/commands/ticket/status.js +1 -0
- package/dist/commands/ticket/status.js.map +1 -0
- package/dist/commands/ticket/template/apply.js +1 -0
- package/dist/commands/ticket/template/apply.js.map +1 -0
- package/dist/commands/ticket/template/delete.js +1 -0
- package/dist/commands/ticket/template/delete.js.map +1 -0
- package/dist/commands/ticket/template/list.js +1 -0
- package/dist/commands/ticket/template/list.js.map +1 -0
- package/dist/commands/ticket/template/save.js +1 -0
- package/dist/commands/ticket/template/save.js.map +1 -0
- package/dist/commands/ticket/update.js +1 -0
- package/dist/commands/ticket/update.js.map +1 -0
- package/dist/commands/ticket/view.js +1 -0
- package/dist/commands/ticket/view.js.map +1 -0
- package/dist/commands/whoami.js +1 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/commands/work/complete.js +6 -0
- package/dist/commands/work/complete.js.map +1 -0
- package/dist/commands/work/index.js +1 -0
- package/dist/commands/work/index.js.map +1 -0
- package/dist/commands/work/jira.js +2 -1
- package/dist/commands/work/jira.js.map +1 -0
- package/dist/commands/work/linear.js +2 -1
- package/dist/commands/work/linear.js.map +1 -0
- package/dist/commands/work/ready.js +1 -0
- package/dist/commands/work/ready.js.map +1 -0
- package/dist/commands/work/resolve.js +1 -0
- package/dist/commands/work/resolve.js.map +1 -0
- package/dist/commands/work/review.js +2 -1
- package/dist/commands/work/review.js.map +1 -0
- package/dist/commands/work/revise.js +2 -1
- package/dist/commands/work/revise.js.map +1 -0
- package/dist/commands/work/source/set.js +1 -0
- package/dist/commands/work/source/set.js.map +1 -0
- package/dist/commands/work/source.js +1 -0
- package/dist/commands/work/source.js.map +1 -0
- package/dist/commands/work/spawn-all.js +2 -1
- package/dist/commands/work/spawn-all.js.map +1 -0
- package/dist/commands/work/spawn.d.ts +5 -0
- package/dist/commands/work/spawn.js +274 -29
- package/dist/commands/work/spawn.js.map +1 -0
- package/dist/commands/work/start.d.ts +1 -0
- package/dist/commands/work/start.js +388 -235
- package/dist/commands/work/start.js.map +1 -0
- package/dist/commands/work/status.js +1 -0
- package/dist/commands/work/status.js.map +1 -0
- package/dist/commands/work/watch.js +5 -8
- package/dist/commands/work/watch.js.map +1 -0
- package/dist/commands/workflow/create.js +1 -0
- package/dist/commands/workflow/create.js.map +1 -0
- package/dist/commands/workflow/delete.js +1 -0
- package/dist/commands/workflow/delete.js.map +1 -0
- package/dist/commands/workflow/index.js +1 -0
- package/dist/commands/workflow/index.js.map +1 -0
- package/dist/commands/workflow/list.js +1 -0
- package/dist/commands/workflow/list.js.map +1 -0
- package/dist/commands/workflow/show.js +1 -0
- package/dist/commands/workflow/show.js.map +1 -0
- package/dist/commands/workflow/switch.js +1 -0
- package/dist/commands/workflow/switch.js.map +1 -0
- package/dist/commands/workflow/view.js +1 -0
- package/dist/commands/workflow/view.js.map +1 -0
- package/dist/commands/workspace/add.js +1 -0
- package/dist/commands/workspace/add.js.map +1 -0
- package/dist/commands/workspace/list.js +1 -0
- package/dist/commands/workspace/list.js.map +1 -0
- package/dist/commands/workspace/prune.js +1 -0
- package/dist/commands/workspace/prune.js.map +1 -0
- package/dist/commands/workspace/remove.js +1 -0
- package/dist/commands/workspace/remove.js.map +1 -0
- package/dist/commands/workspace/use.js +1 -0
- package/dist/commands/workspace/use.js.map +1 -0
- package/dist/hooks/init.d.ts +6 -1
- package/dist/hooks/init.js +34 -2
- package/dist/hooks/init.js.map +1 -0
- package/dist/hooks/postrun.d.ts +9 -0
- package/dist/hooks/postrun.js +30 -0
- package/dist/hooks/postrun.js.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/agents/commands.js +1 -0
- package/dist/lib/agents/commands.js.map +1 -0
- package/dist/lib/agents/index.js +1 -0
- package/dist/lib/agents/index.js.map +1 -0
- package/dist/lib/asana/client.js +1 -0
- package/dist/lib/asana/client.js.map +1 -0
- package/dist/lib/asana/config.js +1 -0
- package/dist/lib/asana/config.js.map +1 -0
- package/dist/lib/asana/index.js +1 -0
- package/dist/lib/asana/index.js.map +1 -0
- package/dist/lib/asana/mapper.js +1 -0
- package/dist/lib/asana/mapper.js.map +1 -0
- package/dist/lib/asana/sync.js +1 -0
- package/dist/lib/asana/sync.js.map +1 -0
- package/dist/lib/asana/types.js +1 -0
- package/dist/lib/asana/types.js.map +1 -0
- package/dist/lib/branch/index.js +1 -0
- package/dist/lib/branch/index.js.map +1 -0
- package/dist/lib/caffeinate.js +1 -0
- package/dist/lib/caffeinate.js.map +1 -0
- package/dist/lib/colors.js +1 -0
- package/dist/lib/colors.js.map +1 -0
- package/dist/lib/commands/docker-command.js +1 -0
- package/dist/lib/commands/docker-command.js.map +1 -0
- package/dist/lib/database/drizzle-schema.js +1 -0
- package/dist/lib/database/drizzle-schema.js.map +1 -0
- package/dist/lib/database/drizzle.js +10 -1
- package/dist/lib/database/drizzle.js.map +1 -0
- package/dist/lib/database/index.js +42 -5
- package/dist/lib/database/index.js.map +1 -0
- package/dist/lib/database/native-validation.d.ts +17 -0
- package/dist/lib/database/native-validation.js +51 -6
- package/dist/lib/database/native-validation.js.map +1 -0
- package/dist/lib/docker/resolve.js +1 -0
- package/dist/lib/docker/resolve.js.map +1 -0
- package/dist/lib/execution/codex-adapter.js +1 -0
- package/dist/lib/execution/codex-adapter.js.map +1 -0
- package/dist/lib/execution/config.js +1 -0
- package/dist/lib/execution/config.js.map +1 -0
- package/dist/lib/execution/context.js +1 -0
- package/dist/lib/execution/context.js.map +1 -0
- package/dist/lib/execution/devcontainer.js +1 -0
- package/dist/lib/execution/devcontainer.js.map +1 -0
- package/dist/lib/execution/index.js +1 -0
- package/dist/lib/execution/index.js.map +1 -0
- package/dist/lib/execution/runners.d.ts +4 -3
- package/dist/lib/execution/runners.js +84 -25
- package/dist/lib/execution/runners.js.map +1 -0
- package/dist/lib/execution/session-utils.js +1 -0
- package/dist/lib/execution/session-utils.js.map +1 -0
- package/dist/lib/execution/spawner.js +1 -0
- package/dist/lib/execution/spawner.js.map +1 -0
- package/dist/lib/execution/storage.js +1 -0
- package/dist/lib/execution/storage.js.map +1 -0
- package/dist/lib/execution/types.d.ts +3 -1
- package/dist/lib/execution/types.js +1 -0
- package/dist/lib/execution/types.js.map +1 -0
- package/dist/lib/external-issues/adapters.js +1 -0
- package/dist/lib/external-issues/adapters.js.map +1 -0
- package/dist/lib/external-issues/index.d.ts +1 -0
- package/dist/lib/external-issues/index.js +3 -0
- package/dist/lib/external-issues/index.js.map +1 -0
- package/dist/lib/external-issues/jira.js +1 -0
- package/dist/lib/external-issues/jira.js.map +1 -0
- package/dist/lib/external-issues/linear.js +13 -0
- package/dist/lib/external-issues/linear.js.map +1 -0
- package/dist/lib/external-issues/mapper.js +1 -0
- package/dist/lib/external-issues/mapper.js.map +1 -0
- package/dist/lib/external-issues/mapping-store.js +1 -0
- package/dist/lib/external-issues/mapping-store.js.map +1 -0
- package/dist/lib/external-issues/redact.d.ts +50 -0
- package/dist/lib/external-issues/redact.js +130 -0
- package/dist/lib/external-issues/redact.js.map +1 -0
- package/dist/lib/external-issues/types.d.ts +1 -1
- package/dist/lib/external-issues/types.js +1 -0
- package/dist/lib/external-issues/types.js.map +1 -0
- package/dist/lib/external-issues/validation.js +1 -0
- package/dist/lib/external-issues/validation.js.map +1 -0
- package/dist/lib/external-issues/work-start.js +1 -0
- package/dist/lib/external-issues/work-start.js.map +1 -0
- package/dist/lib/flags/index.js +1 -0
- package/dist/lib/flags/index.js.map +1 -0
- package/dist/lib/flags/resolver.js +4 -2
- package/dist/lib/flags/resolver.js.map +1 -0
- package/dist/lib/init/index.js +1 -0
- package/dist/lib/init/index.js.map +1 -0
- package/dist/lib/jira/config.d.ts +33 -0
- package/dist/lib/jira/config.js +97 -0
- package/dist/lib/jira/config.js.map +1 -0
- package/dist/lib/jira/index.d.ts +7 -0
- package/dist/lib/jira/index.js +7 -0
- package/dist/lib/jira/index.js.map +1 -0
- package/dist/lib/linear/client.js +1 -0
- package/dist/lib/linear/client.js.map +1 -0
- package/dist/lib/linear/config.js +1 -0
- package/dist/lib/linear/config.js.map +1 -0
- package/dist/lib/linear/index.js +1 -0
- package/dist/lib/linear/index.js.map +1 -0
- package/dist/lib/linear/mapper.js +1 -0
- package/dist/lib/linear/mapper.js.map +1 -0
- package/dist/lib/linear/sync.js +1 -0
- package/dist/lib/linear/sync.js.map +1 -0
- package/dist/lib/linear/types.js +1 -0
- package/dist/lib/linear/types.js.map +1 -0
- package/dist/lib/machine-config.js +1 -0
- package/dist/lib/machine-config.js.map +1 -0
- package/dist/lib/mcp/helpers.js +1 -0
- package/dist/lib/mcp/helpers.js.map +1 -0
- package/dist/lib/mcp/index.js +1 -0
- package/dist/lib/mcp/index.js.map +1 -0
- package/dist/lib/mcp/tools/action.js +1 -0
- package/dist/lib/mcp/tools/action.js.map +1 -0
- package/dist/lib/mcp/tools/board.js +1 -0
- package/dist/lib/mcp/tools/board.js.map +1 -0
- package/dist/lib/mcp/tools/category.js +1 -0
- package/dist/lib/mcp/tools/category.js.map +1 -0
- package/dist/lib/mcp/tools/cli-passthrough.js +1 -0
- package/dist/lib/mcp/tools/cli-passthrough.js.map +1 -0
- package/dist/lib/mcp/tools/diet.js +1 -0
- package/dist/lib/mcp/tools/diet.js.map +1 -0
- package/dist/lib/mcp/tools/epic.js +1 -0
- package/dist/lib/mcp/tools/epic.js.map +1 -0
- package/dist/lib/mcp/tools/index.js +1 -0
- package/dist/lib/mcp/tools/index.js.map +1 -0
- package/dist/lib/mcp/tools/label.js +1 -0
- package/dist/lib/mcp/tools/label.js.map +1 -0
- package/dist/lib/mcp/tools/phase.js +1 -0
- package/dist/lib/mcp/tools/phase.js.map +1 -0
- package/dist/lib/mcp/tools/project.js +1 -0
- package/dist/lib/mcp/tools/project.js.map +1 -0
- package/dist/lib/mcp/tools/roadmap.js +1 -0
- package/dist/lib/mcp/tools/roadmap.js.map +1 -0
- package/dist/lib/mcp/tools/spec.js +1 -0
- package/dist/lib/mcp/tools/spec.js.map +1 -0
- package/dist/lib/mcp/tools/status.js +1 -0
- package/dist/lib/mcp/tools/status.js.map +1 -0
- package/dist/lib/mcp/tools/template.js +1 -0
- package/dist/lib/mcp/tools/template.js.map +1 -0
- package/dist/lib/mcp/tools/ticket.js +1 -0
- package/dist/lib/mcp/tools/ticket.js.map +1 -0
- package/dist/lib/mcp/tools/tmux.js +1 -0
- package/dist/lib/mcp/tools/tmux.js.map +1 -0
- package/dist/lib/mcp/tools/view.js +1 -0
- package/dist/lib/mcp/tools/view.js.map +1 -0
- package/dist/lib/mcp/tools/work.js +1 -0
- package/dist/lib/mcp/tools/work.js.map +1 -0
- package/dist/lib/mcp/tools/workflow.js +1 -0
- package/dist/lib/mcp/tools/workflow.js.map +1 -0
- package/dist/lib/mcp/types.js +1 -0
- package/dist/lib/mcp/types.js.map +1 -0
- package/dist/lib/monday/client.js +1 -0
- package/dist/lib/monday/client.js.map +1 -0
- package/dist/lib/monday/config.js +1 -0
- package/dist/lib/monday/config.js.map +1 -0
- package/dist/lib/monday/index.js +1 -0
- package/dist/lib/monday/index.js.map +1 -0
- package/dist/lib/monday/mapper.js +1 -0
- package/dist/lib/monday/mapper.js.map +1 -0
- package/dist/lib/monday/sync.js +1 -0
- package/dist/lib/monday/sync.js.map +1 -0
- package/dist/lib/monday/types.js +1 -0
- package/dist/lib/monday/types.js.map +1 -0
- package/dist/lib/multiline-input.js +1 -0
- package/dist/lib/multiline-input.js.map +1 -0
- package/dist/lib/pmo/base-command.js +8 -6
- package/dist/lib/pmo/base-command.js.map +1 -0
- package/dist/lib/pmo/create-spec-folders.js +1 -0
- package/dist/lib/pmo/create-spec-folders.js.map +1 -0
- package/dist/lib/pmo/diet.js +1 -0
- package/dist/lib/pmo/diet.js.map +1 -0
- package/dist/lib/pmo/epic-files.js +1 -0
- package/dist/lib/pmo/epic-files.js.map +1 -0
- package/dist/lib/pmo/find-pmo.js +6 -1
- package/dist/lib/pmo/find-pmo.js.map +1 -0
- package/dist/lib/pmo/index.js +1 -0
- package/dist/lib/pmo/index.js.map +1 -0
- package/dist/lib/pmo/markdown.js +1 -0
- package/dist/lib/pmo/markdown.js.map +1 -0
- package/dist/lib/pmo/pmo-context.js +1 -0
- package/dist/lib/pmo/pmo-context.js.map +1 -0
- package/dist/lib/pmo/schema.js +1 -0
- package/dist/lib/pmo/schema.js.map +1 -0
- package/dist/lib/pmo/spec-parser.js +1 -0
- package/dist/lib/pmo/spec-parser.js.map +1 -0
- package/dist/lib/pmo/spec-types.js +1 -0
- package/dist/lib/pmo/spec-types.js.map +1 -0
- package/dist/lib/pmo/storage/actions.js +1 -0
- package/dist/lib/pmo/storage/actions.js.map +1 -0
- package/dist/lib/pmo/storage/base.js +1 -0
- package/dist/lib/pmo/storage/base.js.map +1 -0
- package/dist/lib/pmo/storage/categories.js +1 -0
- package/dist/lib/pmo/storage/categories.js.map +1 -0
- package/dist/lib/pmo/storage/dependencies.js +1 -0
- package/dist/lib/pmo/storage/dependencies.js.map +1 -0
- package/dist/lib/pmo/storage/epics.js +1 -0
- package/dist/lib/pmo/storage/epics.js.map +1 -0
- package/dist/lib/pmo/storage/helpers.js +1 -0
- package/dist/lib/pmo/storage/helpers.js.map +1 -0
- package/dist/lib/pmo/storage/index.js +1 -0
- package/dist/lib/pmo/storage/index.js.map +1 -0
- package/dist/lib/pmo/storage/labels.js +1 -0
- package/dist/lib/pmo/storage/labels.js.map +1 -0
- package/dist/lib/pmo/storage/phases.js +1 -0
- package/dist/lib/pmo/storage/phases.js.map +1 -0
- package/dist/lib/pmo/storage/projects.js +1 -0
- package/dist/lib/pmo/storage/projects.js.map +1 -0
- package/dist/lib/pmo/storage/roadmaps.js +1 -0
- package/dist/lib/pmo/storage/roadmaps.js.map +1 -0
- package/dist/lib/pmo/storage/specs.js +1 -0
- package/dist/lib/pmo/storage/specs.js.map +1 -0
- package/dist/lib/pmo/storage/statuses.js +1 -0
- package/dist/lib/pmo/storage/statuses.js.map +1 -0
- package/dist/lib/pmo/storage/subtasks.js +1 -0
- package/dist/lib/pmo/storage/subtasks.js.map +1 -0
- package/dist/lib/pmo/storage/templates.js +1 -0
- package/dist/lib/pmo/storage/templates.js.map +1 -0
- package/dist/lib/pmo/storage/tickets.js +1 -0
- package/dist/lib/pmo/storage/tickets.js.map +1 -0
- package/dist/lib/pmo/storage/types.js +1 -0
- package/dist/lib/pmo/storage/types.js.map +1 -0
- package/dist/lib/pmo/storage/views.js +1 -0
- package/dist/lib/pmo/storage/views.js.map +1 -0
- package/dist/lib/pmo/storage-sqlite.js +1 -0
- package/dist/lib/pmo/storage-sqlite.js.map +1 -0
- package/dist/lib/pmo/sync-manager.js +1 -0
- package/dist/lib/pmo/sync-manager.js.map +1 -0
- package/dist/lib/pmo/templates-builtin.js +1 -0
- package/dist/lib/pmo/templates-builtin.js.map +1 -0
- package/dist/lib/pmo/types.js +1 -0
- package/dist/lib/pmo/types.js.map +1 -0
- package/dist/lib/pmo/utils.js +1 -0
- package/dist/lib/pmo/utils.js.map +1 -0
- package/dist/lib/pmo/watcher.d.ts +1 -1
- package/dist/lib/pmo/watcher.js +6 -7
- package/dist/lib/pmo/watcher.js.map +1 -0
- package/dist/lib/pr/index.js +1 -0
- package/dist/lib/pr/index.js.map +1 -0
- package/dist/lib/prompt-command.js +4 -2
- package/dist/lib/prompt-command.js.map +1 -0
- package/dist/lib/prompt-json.d.ts +5 -0
- package/dist/lib/prompt-json.js +1 -0
- package/dist/lib/prompt-json.js.map +1 -0
- package/dist/lib/repos/git.js +1 -0
- package/dist/lib/repos/git.js.map +1 -0
- package/dist/lib/repos/index.js +1 -0
- package/dist/lib/repos/index.js.map +1 -0
- package/dist/lib/signal-handler.d.ts +59 -0
- package/dist/lib/signal-handler.js +156 -0
- package/dist/lib/signal-handler.js.map +1 -0
- package/dist/lib/string-utils.js +1 -0
- package/dist/lib/string-utils.js.map +1 -0
- package/dist/lib/styles.js +1 -0
- package/dist/lib/styles.js.map +1 -0
- package/dist/lib/telemetry/analytics.d.ts +105 -0
- package/dist/lib/telemetry/analytics.js +289 -0
- package/dist/lib/telemetry/analytics.js.map +1 -0
- package/dist/lib/telemetry/feature-flags.d.ts +53 -0
- package/dist/lib/telemetry/feature-flags.js +83 -0
- package/dist/lib/telemetry/feature-flags.js.map +1 -0
- package/dist/lib/telemetry.d.ts +63 -0
- package/dist/lib/telemetry.js +217 -0
- package/dist/lib/telemetry.js.map +1 -0
- package/dist/lib/terminal.js +1 -0
- package/dist/lib/terminal.js.map +1 -0
- package/dist/lib/themes.js +1 -0
- package/dist/lib/themes.js.map +1 -0
- package/dist/lib/ui/BoardUI.js +1 -0
- package/dist/lib/ui/BoardUI.js.map +1 -0
- package/dist/lib/ui/ClaimTicketUI.js +1 -0
- package/dist/lib/ui/ClaimTicketUI.js.map +1 -0
- package/dist/lib/ui/CreateTicketUI.js +1 -0
- package/dist/lib/ui/CreateTicketUI.js.map +1 -0
- package/dist/lib/update-check.d.ts +83 -0
- package/dist/lib/update-check.js +275 -0
- package/dist/lib/update-check.js.map +1 -0
- package/dist/lib/update-prompt.d.ts +47 -0
- package/dist/lib/update-prompt.js +163 -0
- package/dist/lib/update-prompt.js.map +1 -0
- package/dist/lib/work-source/config.js +9 -0
- package/dist/lib/work-source/config.js.map +1 -0
- package/dist/lib/work-source/index.js +1 -0
- package/dist/lib/work-source/index.js.map +1 -0
- package/dist/lib/workspace-config.js +1 -0
- package/dist/lib/workspace-config.js.map +1 -0
- package/dist/lib/workspace.js +1 -0
- package/dist/lib/workspace.js.map +1 -0
- package/oclif.manifest.json +3540 -3282
- package/package.json +10 -10
|
@@ -5,6 +5,7 @@ import * as path from 'node:path';
|
|
|
5
5
|
import { execSync } from 'node:child_process';
|
|
6
6
|
import Database from 'better-sqlite3';
|
|
7
7
|
import { PMOCommand, pmoBaseFlags, autoExportToBoard } from '../../lib/pmo/index.js';
|
|
8
|
+
import { trackAgentSpawned } from '../../lib/telemetry/analytics.js';
|
|
8
9
|
import { shouldOutputJson, outputErrorAsJson, createMetadata, outputConfirmationNeededAsJson, outputExecutionResultAsJson, } from '../../lib/prompt-json.js';
|
|
9
10
|
import { FlagResolver } from '../../lib/flags/index.js';
|
|
10
11
|
import { getWorkColumnSetting, findColumnByName } from '../../lib/pmo/utils.js';
|
|
@@ -21,6 +22,7 @@ import { buildLinearMetadata, buildLinearSpawnContextMessage, buildLinearTicketD
|
|
|
21
22
|
import { buildJiraMetadata, buildJiraSpawnContextMessage, buildJiraTicketDescription, getJiraIssueByKey, } from '../../lib/external-issues/jira.js';
|
|
22
23
|
import { resolveMirrorToPmo } from '../../lib/external-issues/work-start.js';
|
|
23
24
|
import { ExternalIssueAdapterError } from '../../lib/external-issues/types.js';
|
|
25
|
+
import { loadActiveWorkSource, saveActiveWorkSource, } from '../../lib/work-source/index.js';
|
|
24
26
|
/**
|
|
25
27
|
* Try to execute a git command, return true if successful
|
|
26
28
|
*/
|
|
@@ -127,6 +129,9 @@ export default class WorkStart extends PMOCommand {
|
|
|
127
129
|
'<%= config.bin %> <%= command.id %> TKT-001 --prompt "Add unit tests for the API" # Custom prompt',
|
|
128
130
|
'<%= config.bin %> <%= command.id %> --from-issue --source linear --key ENG-123',
|
|
129
131
|
'<%= config.bin %> <%= command.id %> --from-issue --source jira --key PROJ-123 --mirror-to-pmo',
|
|
132
|
+
'<%= config.bin %> <%= command.id %> --from linear:ENG-123 # Unified: provider:key shorthand',
|
|
133
|
+
'<%= config.bin %> <%= command.id %> --from jira:PROJ-123 # Unified: Jira shorthand',
|
|
134
|
+
'<%= config.bin %> <%= command.id %> --from-issue # Uses workspace active source',
|
|
130
135
|
];
|
|
131
136
|
static args = {
|
|
132
137
|
ticketId: Args.string({
|
|
@@ -144,7 +149,7 @@ export default class WorkStart extends PMOCommand {
|
|
|
144
149
|
executor: Flags.string({
|
|
145
150
|
char: 'e',
|
|
146
151
|
description: 'Override executor',
|
|
147
|
-
options: ['claude-code', 'codex', '
|
|
152
|
+
options: ['claude-code', 'codex', 'custom'],
|
|
148
153
|
}),
|
|
149
154
|
action: Flags.string({
|
|
150
155
|
char: 'A',
|
|
@@ -157,6 +162,9 @@ export default class WorkStart extends PMOCommand {
|
|
|
157
162
|
message: Flags.string({
|
|
158
163
|
description: 'Additional instructions appended to any action prompt',
|
|
159
164
|
}),
|
|
165
|
+
from: Flags.string({
|
|
166
|
+
description: 'External issue ref in provider:key format (e.g., linear:ENG-123, jira:PROJ-456). Shorthand for --from-issue --source X --key Y.',
|
|
167
|
+
}),
|
|
160
168
|
'from-issue': Flags.boolean({
|
|
161
169
|
description: 'Start from external issue source instead of internal ticket id',
|
|
162
170
|
default: false,
|
|
@@ -294,6 +302,15 @@ export default class WorkStart extends PMOCommand {
|
|
|
294
302
|
async resolveIssueSourceAndKey(input, jsonMode) {
|
|
295
303
|
let source = input.source;
|
|
296
304
|
let key = input.key;
|
|
305
|
+
let sourceResolutionMethod = 'flag';
|
|
306
|
+
// If no explicit source flag, try workspace active source
|
|
307
|
+
if (!isIssueSource(source) && input.db) {
|
|
308
|
+
const activeSource = loadActiveWorkSource(input.db);
|
|
309
|
+
if (activeSource && isIssueSource(activeSource.provider)) {
|
|
310
|
+
source = activeSource.provider;
|
|
311
|
+
sourceResolutionMethod = 'active-source';
|
|
312
|
+
}
|
|
313
|
+
}
|
|
297
314
|
const sourceResolver = new FlagResolver({
|
|
298
315
|
commandName: 'work start',
|
|
299
316
|
baseCommand: 'prlt work start --from-issue',
|
|
@@ -307,18 +324,25 @@ export default class WorkStart extends PMOCommand {
|
|
|
307
324
|
default: isIssueSource(source) ? source : undefined,
|
|
308
325
|
when: () => !isIssueSource(source),
|
|
309
326
|
choices: () => [
|
|
310
|
-
{ name: 'Linear', value: 'linear', command: 'prlt work start --from
|
|
311
|
-
{ name: 'Jira', value: 'jira', command: 'prlt work start --from
|
|
327
|
+
{ name: 'Linear', value: 'linear', command: 'prlt work start --from linear:ISSUE-KEY --json' },
|
|
328
|
+
{ name: 'Jira', value: 'jira', command: 'prlt work start --from jira:ISSUE-KEY --json' },
|
|
312
329
|
],
|
|
313
330
|
});
|
|
314
331
|
const sourceResult = await sourceResolver.resolve();
|
|
315
|
-
|
|
332
|
+
if (!isIssueSource(source)) {
|
|
333
|
+
source = sourceResult.source;
|
|
334
|
+
sourceResolutionMethod = 'interactive';
|
|
335
|
+
// Persist selected source as default
|
|
336
|
+
if (input.db && isIssueSource(source)) {
|
|
337
|
+
saveActiveWorkSource(input.db, { provider: source });
|
|
338
|
+
}
|
|
339
|
+
}
|
|
316
340
|
if (!isIssueSource(source)) {
|
|
317
341
|
throw new Error('Invalid source');
|
|
318
342
|
}
|
|
319
343
|
const keyResolver = new FlagResolver({
|
|
320
344
|
commandName: 'work start',
|
|
321
|
-
baseCommand: `prlt work start --from
|
|
345
|
+
baseCommand: `prlt work start --from ${source}:`,
|
|
322
346
|
jsonMode,
|
|
323
347
|
flags: {},
|
|
324
348
|
});
|
|
@@ -335,7 +359,11 @@ export default class WorkStart extends PMOCommand {
|
|
|
335
359
|
if (!resolvedKey) {
|
|
336
360
|
throw new Error('Issue key is required');
|
|
337
361
|
}
|
|
338
|
-
return {
|
|
362
|
+
return {
|
|
363
|
+
source,
|
|
364
|
+
key: resolvedKey,
|
|
365
|
+
sourceResolution: { method: sourceResolutionMethod, provider: source },
|
|
366
|
+
};
|
|
339
367
|
}
|
|
340
368
|
async execute() {
|
|
341
369
|
const { args, flags } = await this.parse(WorkStart);
|
|
@@ -392,22 +420,49 @@ export default class WorkStart extends PMOCommand {
|
|
|
392
420
|
let externalIssueContextMessage;
|
|
393
421
|
let fromIssueMirror;
|
|
394
422
|
let fromIssueMirrorSource;
|
|
395
|
-
|
|
423
|
+
let sourceResolutionMeta;
|
|
424
|
+
// Handle --from shorthand: parse provider:key into source + key
|
|
425
|
+
let fromFlag = flags.from;
|
|
426
|
+
let fromIssueActive = flags['from-issue'];
|
|
427
|
+
if (fromFlag) {
|
|
428
|
+
if (flags['from-issue'] || flags.source || flags.key) {
|
|
429
|
+
db.close();
|
|
430
|
+
return handleError('CONFLICTING_FLAGS', '--from cannot be used with --from-issue, --source, or --key. Use either --from provider:key or --from-issue --source X --key Y.');
|
|
431
|
+
}
|
|
432
|
+
fromIssueActive = true;
|
|
433
|
+
// Parse provider:key from --from value
|
|
434
|
+
const colonIndex = fromFlag.indexOf(':');
|
|
435
|
+
if (colonIndex !== -1) {
|
|
436
|
+
flags.source = fromFlag.slice(0, colonIndex).toLowerCase();
|
|
437
|
+
flags.key = fromFlag.slice(colonIndex + 1).trim();
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
// Provider only, no key - will prompt for key
|
|
441
|
+
flags.source = fromFlag.toLowerCase();
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
if (fromIssueActive) {
|
|
396
445
|
if (ticketId) {
|
|
397
446
|
db.close();
|
|
398
|
-
return handleError('INVALID_FLAGS', 'Cannot provide a ticket ID positional argument when using --from-issue.');
|
|
447
|
+
return handleError('INVALID_FLAGS', 'Cannot provide a ticket ID positional argument when using --from-issue or --from.');
|
|
399
448
|
}
|
|
449
|
+
const fromBaseCmd = fromFlag ? `prlt work start --from ${fromFlag}` : 'prlt work start --from-issue';
|
|
400
450
|
projectId = projectId || await this.requireProject({
|
|
401
451
|
jsonMode: {
|
|
402
452
|
flags,
|
|
403
453
|
commandName: 'work start',
|
|
404
|
-
baseCommand:
|
|
454
|
+
baseCommand: fromBaseCmd,
|
|
405
455
|
},
|
|
406
456
|
});
|
|
407
457
|
const sourceAndKey = await this.resolveIssueSourceAndKey({
|
|
408
458
|
source: flags.source,
|
|
409
459
|
key: flags.key,
|
|
460
|
+
db,
|
|
410
461
|
}, jsonMode);
|
|
462
|
+
sourceResolutionMeta = sourceAndKey.sourceResolution;
|
|
463
|
+
if (!jsonMode && sourceResolutionMeta.method !== 'flag') {
|
|
464
|
+
this.log(styles.muted(`Source resolved via ${sourceResolutionMeta.method}: ${sourceResolutionMeta.provider}`));
|
|
465
|
+
}
|
|
411
466
|
const envMirrorDefault = parseBooleanSetting(process.env.PRLT_MIRROR_TO_PMO_DEFAULT);
|
|
412
467
|
const configMirrorDefault = getMirrorToPmoDefault(db);
|
|
413
468
|
const mirrorResolution = resolveMirrorToPmo({
|
|
@@ -509,9 +564,12 @@ export default class WorkStart extends PMOCommand {
|
|
|
509
564
|
url: externalMetadata.url ?? null,
|
|
510
565
|
};
|
|
511
566
|
}
|
|
512
|
-
if (
|
|
567
|
+
if (fromIssueActive) {
|
|
513
568
|
metadata.mirrorToPmo = fromIssueMirror ?? null;
|
|
514
569
|
metadata.mirrorToPmoSource = fromIssueMirrorSource ?? null;
|
|
570
|
+
if (sourceResolutionMeta) {
|
|
571
|
+
metadata.sourceResolution = sourceResolutionMeta;
|
|
572
|
+
}
|
|
515
573
|
}
|
|
516
574
|
// Build the confirm command with --yes
|
|
517
575
|
let confirmCmd = `prlt work start ${ticketId}`;
|
|
@@ -569,12 +627,14 @@ export default class WorkStart extends PMOCommand {
|
|
|
569
627
|
if (isBlocked && !flags.force) {
|
|
570
628
|
const blockers = await this.storage.getTicketBlockers(ticketId);
|
|
571
629
|
const incompleteBlockers = blockers.filter(b => b.status !== 'done' && b.status !== 'canceled');
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
630
|
+
if (!jsonMode) {
|
|
631
|
+
this.log('');
|
|
632
|
+
this.log(styles.warning(`⚠️ ${ticketId} is blocked by:`));
|
|
633
|
+
for (const blocker of incompleteBlockers) {
|
|
634
|
+
this.log(styles.muted(` - ${blocker.id}: ${blocker.title} (${blocker.status})`));
|
|
635
|
+
}
|
|
636
|
+
this.log('');
|
|
576
637
|
}
|
|
577
|
-
this.log('');
|
|
578
638
|
// Use FlagResolver for blocked ticket confirmation
|
|
579
639
|
const blockedResolver = new FlagResolver({
|
|
580
640
|
commandName: 'work start',
|
|
@@ -602,8 +662,10 @@ export default class WorkStart extends PMOCommand {
|
|
|
602
662
|
// Check for existing tmux session for this ticket
|
|
603
663
|
const existingSession = getTicketTmuxSession(ticketId);
|
|
604
664
|
if (existingSession && !flags.force) {
|
|
605
|
-
|
|
606
|
-
|
|
665
|
+
if (!jsonMode) {
|
|
666
|
+
this.log('');
|
|
667
|
+
this.log(styles.warning(`Ticket ${ticketId} has an active tmux session (${existingSession.agent})`));
|
|
668
|
+
}
|
|
607
669
|
// Use FlagResolver for session action
|
|
608
670
|
const sessionResolver = new FlagResolver({
|
|
609
671
|
commandName: 'work start',
|
|
@@ -631,7 +693,7 @@ export default class WorkStart extends PMOCommand {
|
|
|
631
693
|
}
|
|
632
694
|
if (sessionAction === 'attach') {
|
|
633
695
|
// Attach to existing session
|
|
634
|
-
execSync(`tmux attach -t "${existingSession.sessionName}"`, { stdio: 'inherit' });
|
|
696
|
+
execSync(`tmux attach -d -t "${existingSession.sessionName}"`, { stdio: 'inherit' });
|
|
635
697
|
db.close();
|
|
636
698
|
return;
|
|
637
699
|
}
|
|
@@ -696,12 +758,15 @@ export default class WorkStart extends PMOCommand {
|
|
|
696
758
|
// No agent specified - default to creating ephemeral agent (new behavior)
|
|
697
759
|
// Or prompt for agent selection if staff agents exist
|
|
698
760
|
// Get staff agents that exist on disk (warns about missing directories)
|
|
699
|
-
const activeStaffAgents = getActiveStaffAgents(workspaceInfo, (msg) =>
|
|
761
|
+
const activeStaffAgents = getActiveStaffAgents(workspaceInfo, (msg) => {
|
|
762
|
+
if (!jsonMode)
|
|
763
|
+
this.log(msg);
|
|
764
|
+
});
|
|
700
765
|
if (activeStaffAgents.length > 0) {
|
|
701
766
|
// Clean up stale executions before checking availability (TKT-604)
|
|
702
767
|
// This fixes agents appearing as "busy" when their sessions have terminated
|
|
703
768
|
const cleanedUp = executionStorage.cleanupStaleExecutions();
|
|
704
|
-
if (cleanedUp > 0) {
|
|
769
|
+
if (cleanedUp > 0 && !jsonMode) {
|
|
705
770
|
this.log(styles.muted(` Cleaned up ${cleanedUp} stale execution(s)`));
|
|
706
771
|
}
|
|
707
772
|
// Get list of busy agents (already running something)
|
|
@@ -744,16 +809,19 @@ export default class WorkStart extends PMOCommand {
|
|
|
744
809
|
const selectedAgent = agentResult.selectedAgent;
|
|
745
810
|
if (selectedAgent === '__ephemeral__') {
|
|
746
811
|
// Create ephemeral agent
|
|
747
|
-
|
|
812
|
+
if (!jsonMode)
|
|
813
|
+
this.log(styles.muted('Creating ephemeral agent...'));
|
|
748
814
|
const ephemeralResult = await createEphemeralAgent(workspaceInfo, {
|
|
749
815
|
skipDevcontainer: flags['run-on-host'],
|
|
750
|
-
log: (msg) =>
|
|
816
|
+
log: (msg) => { if (!jsonMode)
|
|
817
|
+
this.log(msg); },
|
|
751
818
|
mountMode: flags.clone ? 'clone' : 'worktree',
|
|
752
819
|
});
|
|
753
820
|
agentName = ephemeralResult.name;
|
|
754
821
|
agentWorktreePath = ephemeralResult.worktreePath;
|
|
755
822
|
isEphemeralAgent = true;
|
|
756
|
-
|
|
823
|
+
if (!jsonMode)
|
|
824
|
+
this.log(styles.success(`Created ephemeral agent: ${agentName}`));
|
|
757
825
|
}
|
|
758
826
|
else {
|
|
759
827
|
agentName = selectedAgent;
|
|
@@ -761,16 +829,19 @@ export default class WorkStart extends PMOCommand {
|
|
|
761
829
|
}
|
|
762
830
|
else {
|
|
763
831
|
// No pre-registered agents - create ephemeral agent by default
|
|
764
|
-
|
|
832
|
+
if (!jsonMode)
|
|
833
|
+
this.log(styles.muted('Creating ephemeral agent...'));
|
|
765
834
|
const ephemeralResult = await createEphemeralAgent(workspaceInfo, {
|
|
766
835
|
skipDevcontainer: flags['run-on-host'],
|
|
767
|
-
log: (msg) =>
|
|
836
|
+
log: (msg) => { if (!jsonMode)
|
|
837
|
+
this.log(msg); },
|
|
768
838
|
mountMode: flags.clone ? 'clone' : 'worktree',
|
|
769
839
|
});
|
|
770
840
|
agentName = ephemeralResult.name;
|
|
771
841
|
agentWorktreePath = ephemeralResult.worktreePath;
|
|
772
842
|
isEphemeralAgent = true;
|
|
773
|
-
|
|
843
|
+
if (!jsonMode)
|
|
844
|
+
this.log(styles.success(`Created ephemeral agent: ${agentName}`));
|
|
774
845
|
}
|
|
775
846
|
}
|
|
776
847
|
// At this point agentName is guaranteed to be set
|
|
@@ -784,7 +855,7 @@ export default class WorkStart extends PMOCommand {
|
|
|
784
855
|
}
|
|
785
856
|
// Check for running execution on this ticket (warning only, allows parallel work)
|
|
786
857
|
const runningExecution = executionStorage.getRunningExecution(ticketId);
|
|
787
|
-
if (runningExecution) {
|
|
858
|
+
if (runningExecution && !jsonMode) {
|
|
788
859
|
this.log(styles.warning(`⚠️ Ticket "${ticketId}" already has work in progress: ${runningExecution.id}`));
|
|
789
860
|
this.log(styles.muted(` Starting parallel execution. Note: status updates may conflict.`));
|
|
790
861
|
}
|
|
@@ -829,16 +900,18 @@ export default class WorkStart extends PMOCommand {
|
|
|
829
900
|
const { getAgentGitStatus, pushAgentWork } = await import('../../lib/agents/commands.js');
|
|
830
901
|
const gitStatus = getAgentGitStatus(workspaceInfo, assignedAgent);
|
|
831
902
|
if (gitStatus.hasUnsavedWork) {
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
903
|
+
if (!jsonMode) {
|
|
904
|
+
this.log(styles.warning(`\n⚠️ Agent "${assignedAgent}" has unsaved work:`));
|
|
905
|
+
for (const wt of gitStatus.worktrees) {
|
|
906
|
+
if (wt.hasUncommittedChanges) {
|
|
907
|
+
this.log(styles.muted(` ${wt.repoName}: ${wt.uncommittedFiles.length} uncommitted file(s)`));
|
|
908
|
+
}
|
|
909
|
+
if (wt.hasUnpushedCommits) {
|
|
910
|
+
this.log(styles.muted(` ${wt.repoName}: ${wt.unpushedCount} unpushed commit(s) on ${wt.branch}`));
|
|
911
|
+
}
|
|
839
912
|
}
|
|
913
|
+
this.log('');
|
|
840
914
|
}
|
|
841
|
-
this.log('');
|
|
842
915
|
// Use FlagResolver for unsaved work action
|
|
843
916
|
const unsavedResolver = new FlagResolver({
|
|
844
917
|
commandName: 'work start',
|
|
@@ -1261,96 +1334,139 @@ export default class WorkStart extends PMOCommand {
|
|
|
1261
1334
|
// Auth method resolution for devcontainer environment
|
|
1262
1335
|
// Only needed for Claude Code executor - other executors handle auth differently
|
|
1263
1336
|
if (environment === 'devcontainer' && !useApiKey && isClaudeExecutor(executor)) {
|
|
1264
|
-
//
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
if (
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1337
|
+
// First, verify Docker daemon is actually running before checking credentials.
|
|
1338
|
+
// dockerCredentialsExist() runs a Docker command that fails silently when the daemon
|
|
1339
|
+
// is down, which would trigger a misleading OAuth credentials warning.
|
|
1340
|
+
if (!isDockerRunning()) {
|
|
1341
|
+
this.log('');
|
|
1342
|
+
this.log(styles.warning('Docker daemon is not running. Start Docker Desktop or use --run-on-host.'));
|
|
1343
|
+
this.log('');
|
|
1344
|
+
if (jsonMode && flags.yes) {
|
|
1345
|
+
// In JSON mode with --yes, auto-switch to host
|
|
1346
|
+
environment = 'host';
|
|
1347
|
+
this.log(styles.muted('Switched to host environment (Docker not running).'));
|
|
1275
1348
|
}
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1349
|
+
else {
|
|
1350
|
+
const dockerChoices = [
|
|
1351
|
+
{ name: '💻 Switch to host environment', value: 'host' },
|
|
1352
|
+
{ name: '✗ Cancel', value: 'cancel' },
|
|
1353
|
+
];
|
|
1354
|
+
const dockerMessage = 'Docker is not running. What would you like to do?';
|
|
1355
|
+
const dockerResolver = new FlagResolver({
|
|
1356
|
+
commandName: 'work start',
|
|
1357
|
+
baseCommand: `prlt work start ${ticketId}`,
|
|
1358
|
+
jsonMode,
|
|
1359
|
+
flags: {},
|
|
1360
|
+
});
|
|
1361
|
+
dockerResolver.addPrompt({
|
|
1362
|
+
flagName: 'dockerAction',
|
|
1363
|
+
type: 'list',
|
|
1364
|
+
message: dockerMessage,
|
|
1365
|
+
choices: () => dockerChoices,
|
|
1366
|
+
});
|
|
1367
|
+
const dockerResult = await dockerResolver.resolve();
|
|
1368
|
+
const dockerAction = dockerResult.dockerAction;
|
|
1369
|
+
if (dockerAction === 'cancel') {
|
|
1370
|
+
db.close();
|
|
1371
|
+
this.log(styles.muted('Cancelled.'));
|
|
1372
|
+
return;
|
|
1373
|
+
}
|
|
1374
|
+
environment = 'host';
|
|
1375
|
+
this.log(styles.muted('Switched to host environment.'));
|
|
1287
1376
|
}
|
|
1288
|
-
// OAuth credentials valid — continue (useApiKey stays false)
|
|
1289
1377
|
}
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1378
|
+
// Only check credentials if Docker is running and still using devcontainer
|
|
1379
|
+
if (environment === 'devcontainer') {
|
|
1380
|
+
// Check for saved auth method preference
|
|
1381
|
+
const savedAuthMethod = getAuthMethod(db);
|
|
1382
|
+
const hasApiKey = !!process.env.ANTHROPIC_API_KEY;
|
|
1383
|
+
if (savedAuthMethod === 'apikey') {
|
|
1384
|
+
// Saved preference: API key — validate it's still set
|
|
1385
|
+
if (!hasApiKey) {
|
|
1386
|
+
this.log('');
|
|
1387
|
+
this.log(styles.warning('⚠️ Saved auth method is "apikey" but ANTHROPIC_API_KEY is not set in your environment.'));
|
|
1388
|
+
this.log(styles.muted(' Set the env var or run "' + this.config.bin + ' agent auth" to switch to OAuth.'));
|
|
1389
|
+
db.close();
|
|
1390
|
+
return;
|
|
1391
|
+
}
|
|
1392
|
+
useApiKey = true;
|
|
1393
|
+
}
|
|
1394
|
+
else if (savedAuthMethod === 'oauth') {
|
|
1395
|
+
// Saved preference: OAuth — validate credentials exist
|
|
1396
|
+
const hasCredentials = dockerCredentialsExist();
|
|
1397
|
+
if (!hasCredentials) {
|
|
1398
|
+
this.log('');
|
|
1399
|
+
this.log(styles.warning('⚠️ Saved auth method is "oauth" but no OAuth credentials found.'));
|
|
1400
|
+
this.log(styles.muted(' Run "' + this.config.bin + ' agent auth" to authenticate.'));
|
|
1401
|
+
db.close();
|
|
1402
|
+
return;
|
|
1403
|
+
}
|
|
1404
|
+
// OAuth credentials valid — continue (useApiKey stays false)
|
|
1296
1405
|
}
|
|
1297
1406
|
else {
|
|
1298
|
-
// No saved preference
|
|
1299
|
-
|
|
1300
|
-
if (
|
|
1301
|
-
//
|
|
1407
|
+
// No saved preference — show auth method menu
|
|
1408
|
+
const hasCredentials = dockerCredentialsExist();
|
|
1409
|
+
if (hasCredentials) {
|
|
1410
|
+
// OAuth credentials exist, use them silently (no menu needed)
|
|
1411
|
+
// useApiKey stays false
|
|
1302
1412
|
}
|
|
1303
1413
|
else {
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
// Build auth method choices
|
|
1309
|
-
const authChoices = [
|
|
1310
|
-
{ name: `🔐 OAuth (recommended — uses Max subscription)`, value: 'oauth' },
|
|
1311
|
-
];
|
|
1312
|
-
if (hasApiKey) {
|
|
1313
|
-
authChoices.push({ name: '🔑 API key (uses API credits, not Max subscription)', value: 'apikey' });
|
|
1414
|
+
// No saved preference and no OAuth credentials — prompt user
|
|
1415
|
+
// In JSON mode with --yes, continue anyway (agent can run /login)
|
|
1416
|
+
if (jsonMode && flags.yes) {
|
|
1417
|
+
// Continue without prompting - agent will need to handle auth
|
|
1314
1418
|
}
|
|
1315
|
-
|
|
1316
|
-
// Use FlagResolver for auth method selection
|
|
1317
|
-
const authResolver = new FlagResolver({
|
|
1318
|
-
commandName: 'work start',
|
|
1319
|
-
baseCommand: `prlt work start ${ticketId}`,
|
|
1320
|
-
jsonMode,
|
|
1321
|
-
flags: {},
|
|
1322
|
-
});
|
|
1323
|
-
authResolver.addPrompt({
|
|
1324
|
-
flagName: 'authAction',
|
|
1325
|
-
type: 'list',
|
|
1326
|
-
message: 'How should the agent authenticate with Claude?',
|
|
1327
|
-
choices: () => authChoices,
|
|
1328
|
-
});
|
|
1329
|
-
const authResult = await authResolver.resolve();
|
|
1330
|
-
const authAction = authResult.authAction;
|
|
1331
|
-
if (authAction === 'cancel') {
|
|
1332
|
-
db.close();
|
|
1333
|
-
this.log(styles.muted('Cancelled.'));
|
|
1334
|
-
return;
|
|
1335
|
-
}
|
|
1336
|
-
if (authAction === 'host') {
|
|
1337
|
-
environment = 'host';
|
|
1338
|
-
this.log(styles.muted('Switched to host environment.'));
|
|
1339
|
-
}
|
|
1340
|
-
else if (authAction === 'apikey') {
|
|
1341
|
-
useApiKey = true;
|
|
1342
|
-
this.log(styles.warning('Using ANTHROPIC_API_KEY — this will consume API credits.'));
|
|
1343
|
-
this.log(styles.muted(`Run "${this.config.bin} agent auth" to set up OAuth and use your Max subscription instead.`));
|
|
1344
|
-
this.log('');
|
|
1345
|
-
}
|
|
1346
|
-
else if (authAction === 'oauth') {
|
|
1419
|
+
else {
|
|
1347
1420
|
this.log('');
|
|
1348
|
-
this.log(styles.
|
|
1421
|
+
this.log(styles.warning('⚠️ No Claude Code OAuth credentials found for Docker containers'));
|
|
1422
|
+
this.log(styles.muted(' Agents need credentials to authenticate with Claude.'));
|
|
1349
1423
|
this.log('');
|
|
1350
|
-
//
|
|
1351
|
-
const
|
|
1352
|
-
|
|
1353
|
-
|
|
1424
|
+
// Build auth method choices
|
|
1425
|
+
const authChoices = [
|
|
1426
|
+
{ name: `🔐 OAuth (recommended — uses Max subscription)`, value: 'oauth' },
|
|
1427
|
+
];
|
|
1428
|
+
if (hasApiKey) {
|
|
1429
|
+
authChoices.push({ name: '🔑 API key (uses API credits, not Max subscription)', value: 'apikey' });
|
|
1430
|
+
}
|
|
1431
|
+
authChoices.push({ name: '💻 Switch to host environment instead', value: 'host' }, { name: '✗ Cancel', value: 'cancel' });
|
|
1432
|
+
// Use FlagResolver for auth method selection
|
|
1433
|
+
const authResolver = new FlagResolver({
|
|
1434
|
+
commandName: 'work start',
|
|
1435
|
+
baseCommand: `prlt work start ${ticketId}`,
|
|
1436
|
+
jsonMode,
|
|
1437
|
+
flags: {},
|
|
1438
|
+
});
|
|
1439
|
+
authResolver.addPrompt({
|
|
1440
|
+
flagName: 'authAction',
|
|
1441
|
+
type: 'list',
|
|
1442
|
+
message: 'How should the agent authenticate with Claude?',
|
|
1443
|
+
choices: () => authChoices,
|
|
1444
|
+
});
|
|
1445
|
+
const authResult = await authResolver.resolve();
|
|
1446
|
+
const authAction = authResult.authAction;
|
|
1447
|
+
if (authAction === 'cancel') {
|
|
1448
|
+
db.close();
|
|
1449
|
+
this.log(styles.muted('Cancelled.'));
|
|
1450
|
+
return;
|
|
1451
|
+
}
|
|
1452
|
+
if (authAction === 'host') {
|
|
1453
|
+
environment = 'host';
|
|
1454
|
+
this.log(styles.muted('Switched to host environment.'));
|
|
1455
|
+
}
|
|
1456
|
+
else if (authAction === 'apikey') {
|
|
1457
|
+
useApiKey = true;
|
|
1458
|
+
this.log(styles.warning('Using ANTHROPIC_API_KEY — this will consume API credits.'));
|
|
1459
|
+
this.log(styles.muted(`Run "${this.config.bin} agent auth" to set up OAuth and use your Max subscription instead.`));
|
|
1460
|
+
this.log('');
|
|
1461
|
+
}
|
|
1462
|
+
else if (authAction === 'oauth') {
|
|
1463
|
+
this.log('');
|
|
1464
|
+
this.log(styles.primary(`Opening ${this.config.bin} agent auth in new tab...`));
|
|
1465
|
+
this.log('');
|
|
1466
|
+
// Open auth in a new terminal tab
|
|
1467
|
+
const authCmd = `${process.argv[1]} agent auth`;
|
|
1468
|
+
try {
|
|
1469
|
+
execSync(`osascript -e '
|
|
1354
1470
|
tell application "iTerm"
|
|
1355
1471
|
tell current window
|
|
1356
1472
|
create tab with default profile
|
|
@@ -1360,69 +1476,70 @@ export default class WorkStart extends PMOCommand {
|
|
|
1360
1476
|
end tell
|
|
1361
1477
|
end tell
|
|
1362
1478
|
'`);
|
|
1363
|
-
}
|
|
1364
|
-
catch {
|
|
1365
|
-
// Fallback: try Terminal.app
|
|
1366
|
-
try {
|
|
1367
|
-
execSync(`osascript -e 'tell application "Terminal" to do script "${authCmd}"'`);
|
|
1368
1479
|
}
|
|
1369
1480
|
catch {
|
|
1370
|
-
|
|
1371
|
-
|
|
1481
|
+
// Fallback: try Terminal.app
|
|
1482
|
+
try {
|
|
1483
|
+
execSync(`osascript -e 'tell application "Terminal" to do script "${authCmd}"'`);
|
|
1484
|
+
}
|
|
1485
|
+
catch {
|
|
1486
|
+
this.log(styles.warning('Could not open new terminal tab.'));
|
|
1487
|
+
this.log(styles.muted(`Please run manually: ${authCmd}`));
|
|
1488
|
+
}
|
|
1372
1489
|
}
|
|
1373
|
-
|
|
1374
|
-
this.log(styles.muted('Complete the /login flow in the new tab, then press Enter here...'));
|
|
1375
|
-
this.log('');
|
|
1376
|
-
// Wait for user to complete auth
|
|
1377
|
-
await this.prompt([{
|
|
1378
|
-
type: 'input',
|
|
1379
|
-
name: 'done',
|
|
1380
|
-
message: 'Press Enter when authentication is complete:',
|
|
1381
|
-
}]);
|
|
1382
|
-
// Check if credentials now exist
|
|
1383
|
-
if (!dockerCredentialsExist()) {
|
|
1490
|
+
this.log(styles.muted('Complete the /login flow in the new tab, then press Enter here...'));
|
|
1384
1491
|
this.log('');
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
const saveMessage = 'Save as default auth method?';
|
|
1406
|
-
const saveResolver = new FlagResolver({
|
|
1407
|
-
commandName: 'work start',
|
|
1408
|
-
baseCommand: `prlt work start ${ticketId}`,
|
|
1409
|
-
jsonMode,
|
|
1410
|
-
flags: {},
|
|
1411
|
-
});
|
|
1412
|
-
saveResolver.addPrompt({
|
|
1413
|
-
flagName: 'saveDefault',
|
|
1414
|
-
type: 'list',
|
|
1415
|
-
message: saveMessage,
|
|
1416
|
-
default: true,
|
|
1417
|
-
choices: () => saveChoices,
|
|
1418
|
-
});
|
|
1419
|
-
const saveResult = await saveResolver.resolve();
|
|
1420
|
-
if (saveResult.saveDefault) {
|
|
1421
|
-
const methodToSave = authAction === 'apikey' ? 'apikey' : 'oauth';
|
|
1422
|
-
saveAuthMethod(db, methodToSave);
|
|
1423
|
-
this.log(styles.muted(`Auth method saved: ${methodToSave}. Will skip this menu next time.`));
|
|
1492
|
+
// Wait for user to complete auth
|
|
1493
|
+
await this.prompt([{
|
|
1494
|
+
type: 'input',
|
|
1495
|
+
name: 'done',
|
|
1496
|
+
message: 'Press Enter when authentication is complete:',
|
|
1497
|
+
}]);
|
|
1498
|
+
// Check if credentials now exist
|
|
1499
|
+
if (!dockerCredentialsExist()) {
|
|
1500
|
+
this.log('');
|
|
1501
|
+
this.log(styles.warning('Authentication did not complete. No credentials found.'));
|
|
1502
|
+
db.close();
|
|
1503
|
+
return;
|
|
1504
|
+
}
|
|
1505
|
+
const info = getDockerCredentialInfo();
|
|
1506
|
+
this.log('');
|
|
1507
|
+
this.log(styles.success('✓ Credentials configured'));
|
|
1508
|
+
if (info) {
|
|
1509
|
+
this.log(styles.muted(` Subscription: ${info.subscriptionType || 'unknown'}`));
|
|
1510
|
+
this.log(styles.muted(` Expires: ${info.expiresAt.toLocaleDateString()}`));
|
|
1511
|
+
}
|
|
1424
1512
|
this.log('');
|
|
1425
1513
|
}
|
|
1514
|
+
// Prompt "Save as default?" after a successful auth method choice
|
|
1515
|
+
// (only if they chose oauth or apikey, not host/cancel)
|
|
1516
|
+
if (authAction === 'oauth' || authAction === 'apikey') {
|
|
1517
|
+
const saveChoices = [
|
|
1518
|
+
{ name: 'Yes — skip this menu next time', value: true },
|
|
1519
|
+
{ name: 'No — ask me each time', value: false },
|
|
1520
|
+
];
|
|
1521
|
+
const saveMessage = 'Save as default auth method?';
|
|
1522
|
+
const saveResolver = new FlagResolver({
|
|
1523
|
+
commandName: 'work start',
|
|
1524
|
+
baseCommand: `prlt work start ${ticketId}`,
|
|
1525
|
+
jsonMode,
|
|
1526
|
+
flags: {},
|
|
1527
|
+
});
|
|
1528
|
+
saveResolver.addPrompt({
|
|
1529
|
+
flagName: 'saveDefault',
|
|
1530
|
+
type: 'list',
|
|
1531
|
+
message: saveMessage,
|
|
1532
|
+
default: true,
|
|
1533
|
+
choices: () => saveChoices,
|
|
1534
|
+
});
|
|
1535
|
+
const saveResult = await saveResolver.resolve();
|
|
1536
|
+
if (saveResult.saveDefault) {
|
|
1537
|
+
const methodToSave = authAction === 'apikey' ? 'apikey' : 'oauth';
|
|
1538
|
+
saveAuthMethod(db, methodToSave);
|
|
1539
|
+
this.log(styles.muted(`Auth method saved: ${methodToSave}. Will skip this menu next time.`));
|
|
1540
|
+
this.log('');
|
|
1541
|
+
}
|
|
1542
|
+
}
|
|
1426
1543
|
}
|
|
1427
1544
|
}
|
|
1428
1545
|
}
|
|
@@ -1819,6 +1936,13 @@ export default class WorkStart extends PMOCommand {
|
|
|
1819
1936
|
sessionManager: environment === 'devcontainer' ? sessionManager : undefined,
|
|
1820
1937
|
});
|
|
1821
1938
|
if (result.success) {
|
|
1939
|
+
// Track agent spawn analytics
|
|
1940
|
+
trackAgentSpawned({
|
|
1941
|
+
executor,
|
|
1942
|
+
environment,
|
|
1943
|
+
action: context.actionId || 'implement',
|
|
1944
|
+
ephemeral: isEphemeralAgent,
|
|
1945
|
+
});
|
|
1822
1946
|
// Update execution record with process info
|
|
1823
1947
|
executionStorage.updateStatus(execution.id, 'running');
|
|
1824
1948
|
executionStorage.updateProcessInfo(execution.id, {
|
|
@@ -2015,52 +2139,79 @@ export default class WorkStart extends PMOCommand {
|
|
|
2015
2139
|
let batchUseApiKey = false;
|
|
2016
2140
|
// Credential check only applies to Claude Code executor
|
|
2017
2141
|
if (anyUseDevcontainer && isClaudeExecutor(batchExecutor)) {
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2142
|
+
// First, verify Docker daemon is actually running before checking credentials.
|
|
2143
|
+
// dockerCredentialsExist() runs a Docker command that fails silently when the daemon
|
|
2144
|
+
// is down, which would trigger a misleading OAuth credentials warning.
|
|
2145
|
+
if (!isDockerRunning()) {
|
|
2021
2146
|
this.log('');
|
|
2022
|
-
this.log(styles.warning('
|
|
2023
|
-
this.log(styles.muted(' Agents need credentials to authenticate with Claude.'));
|
|
2147
|
+
this.log(styles.warning('Docker daemon is not running. Start Docker Desktop or use --run-on-host.'));
|
|
2024
2148
|
this.log('');
|
|
2025
|
-
|
|
2026
|
-
const batchAuthChoices = [
|
|
2027
|
-
{ name: `🔐 Run ${this.config.bin} agent auth now (recommended — uses Max subscription)`, value: 'auth', command: `${this.config.bin} agent auth` },
|
|
2028
|
-
];
|
|
2029
|
-
if (hasApiKey) {
|
|
2030
|
-
batchAuthChoices.push({ name: '🔑 Use ANTHROPIC_API_KEY (⚠️ uses API credits, not Max subscription)', value: 'apikey', command: '' });
|
|
2031
|
-
}
|
|
2032
|
-
batchAuthChoices.push({ name: '💻 Run all agents on host instead (--run-on-host)', value: 'host', command: 'prlt work start --all --run-on-host --json' }, { name: '✗ Cancel', value: 'cancel', command: '' });
|
|
2033
|
-
const { authAction } = await this.prompt([
|
|
2149
|
+
const { dockerAction } = await this.prompt([
|
|
2034
2150
|
{
|
|
2035
2151
|
type: 'list',
|
|
2036
|
-
name: '
|
|
2037
|
-
message: 'What would you like to do?',
|
|
2038
|
-
choices:
|
|
2152
|
+
name: 'dockerAction',
|
|
2153
|
+
message: 'Docker is not running. What would you like to do?',
|
|
2154
|
+
choices: [
|
|
2155
|
+
{ name: '💻 Run all agents on host instead (--run-on-host)', value: 'host', command: 'prlt work start --all --run-on-host --json' },
|
|
2156
|
+
{ name: '✗ Cancel', value: 'cancel', command: '' },
|
|
2157
|
+
],
|
|
2039
2158
|
},
|
|
2040
2159
|
], batchJsonModeConfig);
|
|
2041
|
-
if (
|
|
2160
|
+
if (dockerAction === 'cancel') {
|
|
2042
2161
|
db.close();
|
|
2043
2162
|
this.log(styles.muted('Cancelled.'));
|
|
2044
2163
|
return;
|
|
2045
2164
|
}
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
this.log(styles.muted(`Run "${this.config.bin} agent auth" to set up OAuth and use your Max subscription instead.`));
|
|
2054
|
-
this.log('');
|
|
2055
|
-
}
|
|
2056
|
-
else if (authAction === 'auth') {
|
|
2165
|
+
flags['run-on-host'] = true;
|
|
2166
|
+
this.log(styles.muted('All agents will run on host.'));
|
|
2167
|
+
}
|
|
2168
|
+
if (!flags['run-on-host']) {
|
|
2169
|
+
const hasCredentials = dockerCredentialsExist();
|
|
2170
|
+
if (!hasCredentials) {
|
|
2171
|
+
const hasApiKey = !!process.env.ANTHROPIC_API_KEY;
|
|
2057
2172
|
this.log('');
|
|
2058
|
-
this.log(styles.
|
|
2173
|
+
this.log(styles.warning('⚠️ No Claude Code OAuth credentials found for Docker containers'));
|
|
2174
|
+
this.log(styles.muted(' Agents need credentials to authenticate with Claude.'));
|
|
2059
2175
|
this.log('');
|
|
2060
|
-
//
|
|
2061
|
-
const
|
|
2062
|
-
|
|
2063
|
-
|
|
2176
|
+
// Build choices based on available options
|
|
2177
|
+
const batchAuthChoices = [
|
|
2178
|
+
{ name: `🔐 Run ${this.config.bin} agent auth now (recommended — uses Max subscription)`, value: 'auth', command: `${this.config.bin} agent auth` },
|
|
2179
|
+
];
|
|
2180
|
+
if (hasApiKey) {
|
|
2181
|
+
batchAuthChoices.push({ name: '🔑 Use ANTHROPIC_API_KEY (⚠️ uses API credits, not Max subscription)', value: 'apikey', command: '' });
|
|
2182
|
+
}
|
|
2183
|
+
batchAuthChoices.push({ name: '💻 Run all agents on host instead (--run-on-host)', value: 'host', command: 'prlt work start --all --run-on-host --json' }, { name: '✗ Cancel', value: 'cancel', command: '' });
|
|
2184
|
+
const { authAction } = await this.prompt([
|
|
2185
|
+
{
|
|
2186
|
+
type: 'list',
|
|
2187
|
+
name: 'authAction',
|
|
2188
|
+
message: 'What would you like to do?',
|
|
2189
|
+
choices: batchAuthChoices,
|
|
2190
|
+
},
|
|
2191
|
+
], batchJsonModeConfig);
|
|
2192
|
+
if (authAction === 'cancel') {
|
|
2193
|
+
db.close();
|
|
2194
|
+
this.log(styles.muted('Cancelled.'));
|
|
2195
|
+
return;
|
|
2196
|
+
}
|
|
2197
|
+
if (authAction === 'host') {
|
|
2198
|
+
flags['run-on-host'] = true;
|
|
2199
|
+
this.log(styles.muted('All agents will run on host.'));
|
|
2200
|
+
}
|
|
2201
|
+
else if (authAction === 'apikey') {
|
|
2202
|
+
batchUseApiKey = true;
|
|
2203
|
+
this.log(styles.warning('Using ANTHROPIC_API_KEY — this will consume API credits.'));
|
|
2204
|
+
this.log(styles.muted(`Run "${this.config.bin} agent auth" to set up OAuth and use your Max subscription instead.`));
|
|
2205
|
+
this.log('');
|
|
2206
|
+
}
|
|
2207
|
+
else if (authAction === 'auth') {
|
|
2208
|
+
this.log('');
|
|
2209
|
+
this.log(styles.primary(`Opening ${this.config.bin} agent auth in new tab...`));
|
|
2210
|
+
this.log('');
|
|
2211
|
+
// Open auth in a new terminal tab
|
|
2212
|
+
const authCmd = `${process.argv[1]} agent auth`;
|
|
2213
|
+
try {
|
|
2214
|
+
execSync(`osascript -e '
|
|
2064
2215
|
tell application "iTerm"
|
|
2065
2216
|
tell current window
|
|
2066
2217
|
create tab with default profile
|
|
@@ -2070,40 +2221,41 @@ export default class WorkStart extends PMOCommand {
|
|
|
2070
2221
|
end tell
|
|
2071
2222
|
end tell
|
|
2072
2223
|
'`);
|
|
2073
|
-
}
|
|
2074
|
-
catch {
|
|
2075
|
-
// Fallback: try Terminal.app
|
|
2076
|
-
try {
|
|
2077
|
-
execSync(`osascript -e 'tell application "Terminal" to do script "${authCmd}"'`);
|
|
2078
2224
|
}
|
|
2079
2225
|
catch {
|
|
2080
|
-
|
|
2081
|
-
|
|
2226
|
+
// Fallback: try Terminal.app
|
|
2227
|
+
try {
|
|
2228
|
+
execSync(`osascript -e 'tell application "Terminal" to do script "${authCmd}"'`);
|
|
2229
|
+
}
|
|
2230
|
+
catch {
|
|
2231
|
+
this.log(styles.warning('Could not open new terminal tab.'));
|
|
2232
|
+
this.log(styles.muted(`Please run manually: ${authCmd}`));
|
|
2233
|
+
}
|
|
2234
|
+
}
|
|
2235
|
+
this.log(styles.muted('Complete the /login flow in the new tab, then press Enter here...'));
|
|
2236
|
+
this.log('');
|
|
2237
|
+
// Wait for user to complete auth
|
|
2238
|
+
await this.prompt([{
|
|
2239
|
+
type: 'input',
|
|
2240
|
+
name: 'done',
|
|
2241
|
+
message: 'Press Enter when authentication is complete:',
|
|
2242
|
+
}], batchJsonModeConfig);
|
|
2243
|
+
// Check if credentials now exist
|
|
2244
|
+
if (!dockerCredentialsExist()) {
|
|
2245
|
+
this.log('');
|
|
2246
|
+
this.log(styles.warning('Authentication did not complete. No credentials found.'));
|
|
2247
|
+
db.close();
|
|
2248
|
+
return;
|
|
2249
|
+
}
|
|
2250
|
+
const info = getDockerCredentialInfo();
|
|
2251
|
+
this.log('');
|
|
2252
|
+
this.log(styles.success('✓ Credentials configured'));
|
|
2253
|
+
if (info) {
|
|
2254
|
+
this.log(styles.muted(` Subscription: ${info.subscriptionType || 'unknown'}`));
|
|
2255
|
+
this.log(styles.muted(` Expires: ${info.expiresAt.toLocaleDateString()}`));
|
|
2082
2256
|
}
|
|
2083
|
-
}
|
|
2084
|
-
this.log(styles.muted('Complete the /login flow in the new tab, then press Enter here...'));
|
|
2085
|
-
this.log('');
|
|
2086
|
-
// Wait for user to complete auth
|
|
2087
|
-
await this.prompt([{
|
|
2088
|
-
type: 'input',
|
|
2089
|
-
name: 'done',
|
|
2090
|
-
message: 'Press Enter when authentication is complete:',
|
|
2091
|
-
}], batchJsonModeConfig);
|
|
2092
|
-
// Check if credentials now exist
|
|
2093
|
-
if (!dockerCredentialsExist()) {
|
|
2094
2257
|
this.log('');
|
|
2095
|
-
this.log(styles.warning('Authentication did not complete. No credentials found.'));
|
|
2096
|
-
db.close();
|
|
2097
|
-
return;
|
|
2098
|
-
}
|
|
2099
|
-
const info = getDockerCredentialInfo();
|
|
2100
|
-
this.log('');
|
|
2101
|
-
this.log(styles.success('✓ Credentials configured'));
|
|
2102
|
-
if (info) {
|
|
2103
|
-
this.log(styles.muted(` Subscription: ${info.subscriptionType || 'unknown'}`));
|
|
2104
|
-
this.log(styles.muted(` Expires: ${info.expiresAt.toLocaleDateString()}`));
|
|
2105
2258
|
}
|
|
2106
|
-
this.log('');
|
|
2107
2259
|
}
|
|
2108
2260
|
}
|
|
2109
2261
|
}
|
|
@@ -2315,3 +2467,4 @@ export default class WorkStart extends PMOCommand {
|
|
|
2315
2467
|
}
|
|
2316
2468
|
}
|
|
2317
2469
|
}
|
|
2470
|
+
//# sourceMappingURL=start.js.map
|