@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
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized signal handler for graceful CLI shutdown
|
|
3
|
+
*
|
|
4
|
+
* Manages SIGINT (Ctrl+C) and SIGTERM handling across the CLI:
|
|
5
|
+
* - Runs registered cleanup callbacks in LIFO order
|
|
6
|
+
* - Kills tracked child processes
|
|
7
|
+
* - Exits with code 130 (standard Unix SIGINT convention)
|
|
8
|
+
* - Prevents ERR_USE_AFTER_CLOSE from dangling inquirer prompts
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { onShutdown, trackChildProcess } from '../lib/signal-handler.js'
|
|
13
|
+
*
|
|
14
|
+
* // Register cleanup (returns unregister function)
|
|
15
|
+
* const unregister = onShutdown(async () => {
|
|
16
|
+
* db.close()
|
|
17
|
+
* })
|
|
18
|
+
*
|
|
19
|
+
* // Track a child process for automatic cleanup
|
|
20
|
+
* trackChildProcess(childProc)
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
const cleanupCallbacks = [];
|
|
24
|
+
const trackedProcesses = new Set();
|
|
25
|
+
let isShuttingDown = false;
|
|
26
|
+
let installed = false;
|
|
27
|
+
/**
|
|
28
|
+
* Run all cleanup callbacks and exit.
|
|
29
|
+
* Called on SIGINT or SIGTERM.
|
|
30
|
+
*/
|
|
31
|
+
async function shutdown() {
|
|
32
|
+
if (isShuttingDown)
|
|
33
|
+
return;
|
|
34
|
+
isShuttingDown = true;
|
|
35
|
+
// Kill tracked child processes first
|
|
36
|
+
for (const child of trackedProcesses) {
|
|
37
|
+
try {
|
|
38
|
+
if (child.pid && !child.killed) {
|
|
39
|
+
child.kill('SIGTERM');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Process may have already exited
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
trackedProcesses.clear();
|
|
47
|
+
// Run cleanup callbacks in LIFO order (most recent first)
|
|
48
|
+
const callbacks = [...cleanupCallbacks].reverse();
|
|
49
|
+
for (const cb of callbacks) {
|
|
50
|
+
try {
|
|
51
|
+
await cb();
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Swallow errors during cleanup
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
cleanupCallbacks.length = 0;
|
|
58
|
+
// Exit with 130 = 128 + 2 (SIGINT)
|
|
59
|
+
process.exit(130);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Install global signal handlers. Called once at CLI startup.
|
|
63
|
+
* Safe to call multiple times (idempotent).
|
|
64
|
+
*/
|
|
65
|
+
export function installSignalHandlers() {
|
|
66
|
+
if (installed)
|
|
67
|
+
return;
|
|
68
|
+
installed = true;
|
|
69
|
+
process.on('SIGINT', () => {
|
|
70
|
+
// Write a newline to avoid dangling prompt characters
|
|
71
|
+
if (process.stdout.isTTY) {
|
|
72
|
+
process.stdout.write('\n');
|
|
73
|
+
}
|
|
74
|
+
void shutdown();
|
|
75
|
+
});
|
|
76
|
+
process.on('SIGTERM', () => {
|
|
77
|
+
void shutdown();
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Register a cleanup callback to run on shutdown.
|
|
82
|
+
* Callbacks run in LIFO order (most recently registered runs first).
|
|
83
|
+
*
|
|
84
|
+
* @returns Unregister function to remove the callback
|
|
85
|
+
*/
|
|
86
|
+
export function onShutdown(fn) {
|
|
87
|
+
cleanupCallbacks.push(fn);
|
|
88
|
+
return () => {
|
|
89
|
+
const idx = cleanupCallbacks.indexOf(fn);
|
|
90
|
+
if (idx !== -1) {
|
|
91
|
+
cleanupCallbacks.splice(idx, 1);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Track a child process for automatic cleanup on shutdown.
|
|
97
|
+
* The process will receive SIGTERM when the CLI exits.
|
|
98
|
+
*
|
|
99
|
+
* Automatically removes itself from tracking when it exits.
|
|
100
|
+
*/
|
|
101
|
+
export function trackChildProcess(child) {
|
|
102
|
+
trackedProcesses.add(child);
|
|
103
|
+
child.on('exit', () => {
|
|
104
|
+
trackedProcesses.delete(child);
|
|
105
|
+
});
|
|
106
|
+
child.on('error', () => {
|
|
107
|
+
trackedProcesses.delete(child);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Check if the process is currently shutting down.
|
|
112
|
+
* Useful for avoiding work after SIGINT.
|
|
113
|
+
*/
|
|
114
|
+
export function isExiting() {
|
|
115
|
+
return isShuttingDown;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Wrap an inquirer prompt call to handle SIGINT gracefully.
|
|
119
|
+
* On SIGINT during a prompt, triggers the shutdown sequence
|
|
120
|
+
* instead of letting inquirer throw ERR_USE_AFTER_CLOSE.
|
|
121
|
+
*
|
|
122
|
+
* @param promptFn - Function that calls inquirer.prompt()
|
|
123
|
+
* @returns The prompt result
|
|
124
|
+
*/
|
|
125
|
+
export async function withSignalSafePrompt(promptFn) {
|
|
126
|
+
if (isShuttingDown) {
|
|
127
|
+
// If already shutting down, just exit
|
|
128
|
+
process.exit(130);
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
return await promptFn();
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
// Check if this is a prompt close error from SIGINT
|
|
135
|
+
if (isShuttingDown) {
|
|
136
|
+
// We're already in shutdown, just wait for it
|
|
137
|
+
await new Promise(() => {
|
|
138
|
+
// Never resolves - shutdown() will call process.exit
|
|
139
|
+
});
|
|
140
|
+
// Unreachable, but satisfies TypeScript
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
// Check for readline/inquirer close errors that indicate SIGINT
|
|
144
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
145
|
+
if (message.includes('ERR_USE_AFTER_CLOSE') ||
|
|
146
|
+
message.includes('readline was closed')) {
|
|
147
|
+
// Inquirer's readline was closed by SIGINT - trigger clean shutdown
|
|
148
|
+
void shutdown();
|
|
149
|
+
await new Promise(() => { });
|
|
150
|
+
throw error; // Unreachable
|
|
151
|
+
}
|
|
152
|
+
// Re-throw other errors normally
|
|
153
|
+
throw error;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=signal-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-handler.js","sourceRoot":"","sources":["../../src/lib/signal-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/string-utils.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../src/lib/string-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,WAAW,MAAM,cAAc,CAAA;AAEtC;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,KAAa;IACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,QAAQ,IAAI,KAAK;QAAE,OAAO,GAAG,CAAA;IACjC,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAA;AAC3C,CAAC"}
|
package/dist/lib/styles.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/lib/styles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Product Analytics (Statsig) & Event Tracking
|
|
3
|
+
*
|
|
4
|
+
* Provides anonymous usage analytics for the CLI using Statsig client SDK.
|
|
5
|
+
* All data is anonymous — identified by a machine UUID only, no PII is ever sent.
|
|
6
|
+
*
|
|
7
|
+
* Telemetry can be disabled via:
|
|
8
|
+
* - `prlt telemetry disable`
|
|
9
|
+
* - `DO_NOT_TRACK=1` environment variable
|
|
10
|
+
* - `PRLT_TELEMETRY_DISABLED=1` environment variable
|
|
11
|
+
*
|
|
12
|
+
* Privacy:
|
|
13
|
+
* - Anonymous machine ID (UUID) stored in ~/.proletariat/telemetry.json
|
|
14
|
+
* - No file paths, usernames, or ticket content ever sent
|
|
15
|
+
* - Events are fired async and never block command execution
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Check if telemetry is disabled by environment variables or config.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isTelemetryEnabled(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Enable telemetry.
|
|
23
|
+
*/
|
|
24
|
+
export declare function enableTelemetry(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Disable telemetry.
|
|
27
|
+
*/
|
|
28
|
+
export declare function disableTelemetry(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Get current telemetry status for display.
|
|
31
|
+
*/
|
|
32
|
+
export declare function getTelemetryStatus(): {
|
|
33
|
+
enabled: boolean;
|
|
34
|
+
machineId: string;
|
|
35
|
+
envOverride: boolean;
|
|
36
|
+
envVar?: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Get the anonymous machine ID for this installation.
|
|
40
|
+
*/
|
|
41
|
+
export declare function getMachineId(): string;
|
|
42
|
+
/**
|
|
43
|
+
* Initialize the Statsig SDK. Called from the init hook.
|
|
44
|
+
* No-op if telemetry is disabled.
|
|
45
|
+
*/
|
|
46
|
+
export declare function initAnalytics(version: string): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Track an analytics event. Fire-and-forget — never blocks.
|
|
49
|
+
*
|
|
50
|
+
* @param eventName - Event name (e.g., 'command_run')
|
|
51
|
+
* @param value - Optional numeric or string value
|
|
52
|
+
* @param metadata - Event-specific metadata
|
|
53
|
+
*/
|
|
54
|
+
export declare function trackEvent(eventName: string, value?: string | number | null, metadata?: Record<string, unknown> | null): void;
|
|
55
|
+
/**
|
|
56
|
+
* Track a command execution.
|
|
57
|
+
*/
|
|
58
|
+
export declare function trackCommandRun(options: {
|
|
59
|
+
command: string;
|
|
60
|
+
durationMs: number;
|
|
61
|
+
success: boolean;
|
|
62
|
+
flags?: string[];
|
|
63
|
+
}): void;
|
|
64
|
+
/**
|
|
65
|
+
* Track an agent being spawned.
|
|
66
|
+
*/
|
|
67
|
+
export declare function trackAgentSpawned(options: {
|
|
68
|
+
executor: string;
|
|
69
|
+
environment: string;
|
|
70
|
+
action: string;
|
|
71
|
+
ephemeral: boolean;
|
|
72
|
+
}): void;
|
|
73
|
+
/**
|
|
74
|
+
* Track an orchestrator being started.
|
|
75
|
+
*/
|
|
76
|
+
export declare function trackOrchestratorStarted(options: {
|
|
77
|
+
executor: string;
|
|
78
|
+
name: string;
|
|
79
|
+
displayMode: string;
|
|
80
|
+
}): void;
|
|
81
|
+
/**
|
|
82
|
+
* Track work being completed.
|
|
83
|
+
*/
|
|
84
|
+
export declare function trackWorkCompleted(options: {
|
|
85
|
+
durationMs: number;
|
|
86
|
+
prCreated: boolean;
|
|
87
|
+
}): void;
|
|
88
|
+
/**
|
|
89
|
+
* Track a PR being created.
|
|
90
|
+
*/
|
|
91
|
+
export declare function trackPRCreated(options: {
|
|
92
|
+
source: 'prlt' | 'manual';
|
|
93
|
+
}): void;
|
|
94
|
+
/**
|
|
95
|
+
* Track an MCP tool call.
|
|
96
|
+
*/
|
|
97
|
+
export declare function trackMCPToolCalled(options: {
|
|
98
|
+
toolName: string;
|
|
99
|
+
success: boolean;
|
|
100
|
+
}): void;
|
|
101
|
+
/**
|
|
102
|
+
* Flush pending events and shut down the Statsig client.
|
|
103
|
+
* Called from the postrun hook. Times out to avoid blocking CLI exit.
|
|
104
|
+
*/
|
|
105
|
+
export declare function shutdownAnalytics(): Promise<void>;
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Product Analytics (Statsig) & Event Tracking
|
|
3
|
+
*
|
|
4
|
+
* Provides anonymous usage analytics for the CLI using Statsig client SDK.
|
|
5
|
+
* All data is anonymous — identified by a machine UUID only, no PII is ever sent.
|
|
6
|
+
*
|
|
7
|
+
* Telemetry can be disabled via:
|
|
8
|
+
* - `prlt telemetry disable`
|
|
9
|
+
* - `DO_NOT_TRACK=1` environment variable
|
|
10
|
+
* - `PRLT_TELEMETRY_DISABLED=1` environment variable
|
|
11
|
+
*
|
|
12
|
+
* Privacy:
|
|
13
|
+
* - Anonymous machine ID (UUID) stored in ~/.proletariat/telemetry.json
|
|
14
|
+
* - No file paths, usernames, or ticket content ever sent
|
|
15
|
+
* - Events are fired async and never block command execution
|
|
16
|
+
*/
|
|
17
|
+
import * as fs from 'node:fs';
|
|
18
|
+
import * as path from 'node:path';
|
|
19
|
+
import * as crypto from 'node:crypto';
|
|
20
|
+
import { getMachineConfigDir, ensureMachineConfigDir } from '../machine-config.js';
|
|
21
|
+
// Statsig client SDK key (public — safe to embed in open source repos)
|
|
22
|
+
const STATSIG_CLIENT_KEY = 'client-kvxMxRhn9NFSmH8orl7e2W9nYTfWVS7Kjf7yRTdIecc';
|
|
23
|
+
// Flush timeout — don't let analytics delay CLI exit
|
|
24
|
+
const FLUSH_TIMEOUT_MS = 2000;
|
|
25
|
+
// Module-level state
|
|
26
|
+
let statsigClient = null;
|
|
27
|
+
let telemetryConfig = null;
|
|
28
|
+
let cliVersion = null;
|
|
29
|
+
// ─── Telemetry Config ────────────────────────────────────────────────────────
|
|
30
|
+
function getTelemetryConfigPath() {
|
|
31
|
+
return path.join(getMachineConfigDir(), 'telemetry.json');
|
|
32
|
+
}
|
|
33
|
+
function readTelemetryConfig() {
|
|
34
|
+
if (telemetryConfig)
|
|
35
|
+
return telemetryConfig;
|
|
36
|
+
const configPath = getTelemetryConfigPath();
|
|
37
|
+
if (fs.existsSync(configPath)) {
|
|
38
|
+
try {
|
|
39
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
40
|
+
telemetryConfig = JSON.parse(content);
|
|
41
|
+
return telemetryConfig;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Fall through to create new config
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Create new config with generated machine ID
|
|
48
|
+
telemetryConfig = {
|
|
49
|
+
enabled: true,
|
|
50
|
+
noticeShown: false,
|
|
51
|
+
machineId: crypto.randomUUID(),
|
|
52
|
+
createdAt: new Date().toISOString(),
|
|
53
|
+
updatedAt: new Date().toISOString(),
|
|
54
|
+
};
|
|
55
|
+
writeTelemetryConfig(telemetryConfig);
|
|
56
|
+
return telemetryConfig;
|
|
57
|
+
}
|
|
58
|
+
function writeTelemetryConfig(config) {
|
|
59
|
+
ensureMachineConfigDir();
|
|
60
|
+
const configPath = getTelemetryConfigPath();
|
|
61
|
+
const tempPath = `${configPath}.tmp.${process.pid}`;
|
|
62
|
+
try {
|
|
63
|
+
fs.writeFileSync(tempPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
64
|
+
fs.renameSync(tempPath, configPath);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
try {
|
|
68
|
+
if (fs.existsSync(tempPath))
|
|
69
|
+
fs.unlinkSync(tempPath);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Ignore cleanup errors
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// ─── Opt-out Detection ───────────────────────────────────────────────────────
|
|
77
|
+
/**
|
|
78
|
+
* Check if telemetry is disabled by environment variables or config.
|
|
79
|
+
*/
|
|
80
|
+
export function isTelemetryEnabled() {
|
|
81
|
+
// Environment variable opt-outs (standard + prlt-specific)
|
|
82
|
+
if (process.env.DO_NOT_TRACK === '1' || process.env.DO_NOT_TRACK === 'true')
|
|
83
|
+
return false;
|
|
84
|
+
if (process.env.PRLT_TELEMETRY_DISABLED === '1' || process.env.PRLT_TELEMETRY_DISABLED === 'true')
|
|
85
|
+
return false;
|
|
86
|
+
// Config-based opt-out
|
|
87
|
+
const config = readTelemetryConfig();
|
|
88
|
+
return config.enabled;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Enable telemetry.
|
|
92
|
+
*/
|
|
93
|
+
export function enableTelemetry() {
|
|
94
|
+
const config = readTelemetryConfig();
|
|
95
|
+
config.enabled = true;
|
|
96
|
+
config.updatedAt = new Date().toISOString();
|
|
97
|
+
telemetryConfig = config;
|
|
98
|
+
writeTelemetryConfig(config);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Disable telemetry.
|
|
102
|
+
*/
|
|
103
|
+
export function disableTelemetry() {
|
|
104
|
+
const config = readTelemetryConfig();
|
|
105
|
+
config.enabled = false;
|
|
106
|
+
config.updatedAt = new Date().toISOString();
|
|
107
|
+
telemetryConfig = config;
|
|
108
|
+
writeTelemetryConfig(config);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get current telemetry status for display.
|
|
112
|
+
*/
|
|
113
|
+
export function getTelemetryStatus() {
|
|
114
|
+
const config = readTelemetryConfig();
|
|
115
|
+
// Check for env var overrides
|
|
116
|
+
if (process.env.DO_NOT_TRACK === '1' || process.env.DO_NOT_TRACK === 'true') {
|
|
117
|
+
return { enabled: false, machineId: config.machineId, envOverride: true, envVar: 'DO_NOT_TRACK' };
|
|
118
|
+
}
|
|
119
|
+
if (process.env.PRLT_TELEMETRY_DISABLED === '1' || process.env.PRLT_TELEMETRY_DISABLED === 'true') {
|
|
120
|
+
return { enabled: false, machineId: config.machineId, envOverride: true, envVar: 'PRLT_TELEMETRY_DISABLED' };
|
|
121
|
+
}
|
|
122
|
+
return { enabled: config.enabled, machineId: config.machineId, envOverride: false };
|
|
123
|
+
}
|
|
124
|
+
// ─── First-Run Notice ────────────────────────────────────────────────────────
|
|
125
|
+
/**
|
|
126
|
+
* Show a one-time notice that telemetry is active.
|
|
127
|
+
* Only shown in interactive TTY sessions.
|
|
128
|
+
*/
|
|
129
|
+
function showTelemetryNotice() {
|
|
130
|
+
const config = readTelemetryConfig();
|
|
131
|
+
if (config.noticeShown)
|
|
132
|
+
return;
|
|
133
|
+
if (!process.stdout.isTTY) {
|
|
134
|
+
// Mark as shown so we don't try again, but don't print in non-TTY
|
|
135
|
+
config.noticeShown = true;
|
|
136
|
+
writeTelemetryConfig(config);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
console.log('');
|
|
140
|
+
console.log('Proletariat collects anonymous usage analytics to improve the CLI.');
|
|
141
|
+
console.log('Only command names and durations are tracked — no values, arguments, or personal data.');
|
|
142
|
+
console.log('You can opt out at any time:');
|
|
143
|
+
console.log('');
|
|
144
|
+
console.log(' prlt telemetry disable');
|
|
145
|
+
console.log('');
|
|
146
|
+
config.noticeShown = true;
|
|
147
|
+
telemetryConfig = config;
|
|
148
|
+
writeTelemetryConfig(config);
|
|
149
|
+
}
|
|
150
|
+
// ─── Machine ID ──────────────────────────────────────────────────────────────
|
|
151
|
+
/**
|
|
152
|
+
* Get the anonymous machine ID for this installation.
|
|
153
|
+
*/
|
|
154
|
+
export function getMachineId() {
|
|
155
|
+
return readTelemetryConfig().machineId;
|
|
156
|
+
}
|
|
157
|
+
// ─── Statsig Client ──────────────────────────────────────────────────────────
|
|
158
|
+
/**
|
|
159
|
+
* Initialize the Statsig SDK. Called from the init hook.
|
|
160
|
+
* No-op if telemetry is disabled.
|
|
161
|
+
*/
|
|
162
|
+
export async function initAnalytics(version) {
|
|
163
|
+
cliVersion = version;
|
|
164
|
+
if (!isTelemetryEnabled())
|
|
165
|
+
return;
|
|
166
|
+
showTelemetryNotice();
|
|
167
|
+
try {
|
|
168
|
+
const { StatsigClient: StatsigClientClass } = await import('@statsig/js-client');
|
|
169
|
+
const client = new StatsigClientClass(STATSIG_CLIENT_KEY, { userID: getMachineId(), custom: { cli_version: version } });
|
|
170
|
+
await client.initializeAsync();
|
|
171
|
+
statsigClient = client;
|
|
172
|
+
// Share Statsig client with feature-flags for synchronous gate checks
|
|
173
|
+
const { setStatsigClient } = await import('./feature-flags.js');
|
|
174
|
+
setStatsigClient(client);
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// If Statsig can't initialize, fail silently — analytics should never break the CLI
|
|
178
|
+
statsigClient = null;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// ─── Event Tracking ──────────────────────────────────────────────────────────
|
|
182
|
+
/**
|
|
183
|
+
* Track an analytics event. Fire-and-forget — never blocks.
|
|
184
|
+
*
|
|
185
|
+
* @param eventName - Event name (e.g., 'command_run')
|
|
186
|
+
* @param value - Optional numeric or string value
|
|
187
|
+
* @param metadata - Event-specific metadata
|
|
188
|
+
*/
|
|
189
|
+
export function trackEvent(eventName, value, metadata) {
|
|
190
|
+
if (!statsigClient || !isTelemetryEnabled())
|
|
191
|
+
return;
|
|
192
|
+
try {
|
|
193
|
+
// Convert metadata values to strings as required by the client SDK
|
|
194
|
+
const stringMetadata = metadata
|
|
195
|
+
? Object.fromEntries(Object.entries({ ...metadata, cli_version: cliVersion }).map(([k, v]) => [k, String(v)]))
|
|
196
|
+
: cliVersion
|
|
197
|
+
? { cli_version: cliVersion }
|
|
198
|
+
: null;
|
|
199
|
+
statsigClient.logEvent(eventName, value, stringMetadata);
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
// Never let analytics errors affect the CLI
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Track a command execution.
|
|
207
|
+
*/
|
|
208
|
+
export function trackCommandRun(options) {
|
|
209
|
+
trackEvent('command_run', options.durationMs, {
|
|
210
|
+
command: options.command,
|
|
211
|
+
success: options.success,
|
|
212
|
+
flags_used: (options.flags ?? []).join(','),
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Track an agent being spawned.
|
|
217
|
+
*/
|
|
218
|
+
export function trackAgentSpawned(options) {
|
|
219
|
+
trackEvent('agent_spawned', null, {
|
|
220
|
+
executor: options.executor,
|
|
221
|
+
environment: options.environment,
|
|
222
|
+
action: options.action,
|
|
223
|
+
ephemeral: String(options.ephemeral),
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Track an orchestrator being started.
|
|
228
|
+
*/
|
|
229
|
+
export function trackOrchestratorStarted(options) {
|
|
230
|
+
trackEvent('orchestrator_started', null, {
|
|
231
|
+
executor: options.executor,
|
|
232
|
+
name: options.name,
|
|
233
|
+
display_mode: options.displayMode,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Track work being completed.
|
|
238
|
+
*/
|
|
239
|
+
export function trackWorkCompleted(options) {
|
|
240
|
+
trackEvent('work_completed', options.durationMs, {
|
|
241
|
+
pr_created: String(options.prCreated),
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Track a PR being created.
|
|
246
|
+
*/
|
|
247
|
+
export function trackPRCreated(options) {
|
|
248
|
+
trackEvent('pr_created', null, {
|
|
249
|
+
source: options.source,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Track an MCP tool call.
|
|
254
|
+
*/
|
|
255
|
+
export function trackMCPToolCalled(options) {
|
|
256
|
+
trackEvent('mcp_tool_called', null, {
|
|
257
|
+
tool_name: options.toolName,
|
|
258
|
+
success: String(options.success),
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
// ─── Shutdown ────────────────────────────────────────────────────────────────
|
|
262
|
+
/**
|
|
263
|
+
* Flush pending events and shut down the Statsig client.
|
|
264
|
+
* Called from the postrun hook. Times out to avoid blocking CLI exit.
|
|
265
|
+
*/
|
|
266
|
+
export async function shutdownAnalytics() {
|
|
267
|
+
if (!statsigClient)
|
|
268
|
+
return;
|
|
269
|
+
try {
|
|
270
|
+
// Give the client a moment to flush, but don't block the CLI
|
|
271
|
+
await new Promise((resolve) => setTimeout(resolve, FLUSH_TIMEOUT_MS));
|
|
272
|
+
statsigClient.shutdown();
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
// Never let shutdown errors affect the CLI
|
|
276
|
+
}
|
|
277
|
+
finally {
|
|
278
|
+
statsigClient = null;
|
|
279
|
+
// Clear feature-flags module reference
|
|
280
|
+
try {
|
|
281
|
+
const { setStatsigClient } = await import('./feature-flags.js');
|
|
282
|
+
setStatsigClient(null);
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
// Ignore
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../src/lib/telemetry/analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Flags (Statsig Feature Gates)
|
|
3
|
+
*
|
|
4
|
+
* Wraps Statsig feature gate checks with a simple API for the CLI.
|
|
5
|
+
* Feature flags are evaluated locally after SDK initialization,
|
|
6
|
+
* so checks are near-instant after the initial fetch.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* import { isEnabled } from '../lib/telemetry/feature-flags.js'
|
|
10
|
+
* if (isEnabled('new_board_view')) { ... }
|
|
11
|
+
*
|
|
12
|
+
* Feature flags require Statsig to be initialized (via initAnalytics).
|
|
13
|
+
* If Statsig is unavailable or telemetry is disabled, all flags return false.
|
|
14
|
+
*/
|
|
15
|
+
interface StatsigClientRef {
|
|
16
|
+
checkGate(gateName: string): boolean;
|
|
17
|
+
getDynamicConfig(configName: string): {
|
|
18
|
+
get(key: string, defaultValue: unknown): unknown;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Set the Statsig client reference (called from analytics.ts after init).
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export declare function setStatsigClient(client: StatsigClientRef | null): void;
|
|
26
|
+
/**
|
|
27
|
+
* Check if a feature gate is enabled for the current machine.
|
|
28
|
+
*
|
|
29
|
+
* Uses Statsig's local evaluation (near-zero latency after init).
|
|
30
|
+
* Returns false if Statsig is not initialized or telemetry is disabled.
|
|
31
|
+
*
|
|
32
|
+
* @param gateName - The feature gate name (e.g., 'new_board_view')
|
|
33
|
+
* @returns Whether the gate is enabled
|
|
34
|
+
*/
|
|
35
|
+
export declare function isEnabled(gateName: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Get a dynamic config value from Statsig.
|
|
38
|
+
*
|
|
39
|
+
* Useful for remote configuration (not just boolean flags).
|
|
40
|
+
* Returns the default value if Statsig is unavailable.
|
|
41
|
+
*
|
|
42
|
+
* @param configName - The dynamic config name
|
|
43
|
+
* @param key - The key within the config
|
|
44
|
+
* @param defaultValue - Default value if unavailable
|
|
45
|
+
* @returns The config value, or the default
|
|
46
|
+
*/
|
|
47
|
+
export declare function getConfigValue<T>(configName: string, key: string, defaultValue: T): T;
|
|
48
|
+
/**
|
|
49
|
+
* Clear the local flag cache.
|
|
50
|
+
* Useful for testing or when you want to force re-evaluation.
|
|
51
|
+
*/
|
|
52
|
+
export declare function clearFlagCache(): void;
|
|
53
|
+
export {};
|