@proletariat/cli 0.3.92 → 0.3.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/action/create.d.ts +1 -1
- package/dist/commands/action/delete.d.ts +1 -1
- package/dist/commands/action/index.d.ts +1 -1
- package/dist/commands/action/list.d.ts +1 -1
- package/dist/commands/action/run.d.ts +1 -1
- package/dist/commands/action/show.d.ts +1 -1
- package/dist/commands/action/update.d.ts +1 -1
- package/dist/commands/agent/auth.js +2 -6
- package/dist/commands/agent/auth.js.map +1 -1
- package/dist/commands/agent/cleanup.d.ts +1 -1
- package/dist/commands/agent/cleanup.js +5 -5
- package/dist/commands/agent/cleanup.js.map +1 -1
- package/dist/commands/{project/list.d.ts → agent/gc.d.ts} +4 -3
- package/dist/commands/agent/gc.js +75 -0
- package/dist/commands/agent/gc.js.map +1 -0
- package/dist/commands/agent/index.d.ts +1 -1
- package/dist/commands/agent/list.d.ts +1 -1
- package/dist/commands/agent/list.js +2 -2
- package/dist/commands/agent/list.js.map +1 -1
- package/dist/commands/agent/login.d.ts +1 -1
- package/dist/commands/agent/rebuild.d.ts +1 -1
- package/dist/commands/agent/remove.d.ts +1 -1
- package/dist/commands/agent/restart.d.ts +1 -1
- package/dist/commands/agent/shell.d.ts +1 -1
- package/dist/commands/agent/shell.js +3 -5
- package/dist/commands/agent/shell.js.map +1 -1
- package/dist/commands/agent/staff/index.d.ts +1 -1
- package/dist/commands/agent/staff/remove.d.ts +1 -1
- package/dist/commands/agent/status.d.ts +1 -1
- package/dist/commands/agent/visit.d.ts +1 -1
- package/dist/commands/asana/import.d.ts +1 -1
- package/dist/commands/branch/create.d.ts +1 -1
- package/dist/commands/branch/create.js +2 -2
- package/dist/commands/branch/create.js.map +1 -1
- package/dist/commands/branch/index.d.ts +1 -1
- package/dist/commands/branch/list.d.ts +1 -1
- package/dist/commands/branch/validate.d.ts +1 -1
- package/dist/commands/branch/where.d.ts +1 -1
- package/dist/commands/claude/index.js +2 -2
- package/dist/commands/claude/index.js.map +1 -1
- package/dist/commands/claude/open.js +11 -5
- package/dist/commands/claude/open.js.map +1 -1
- package/dist/commands/config/index.js +88 -7
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/db/repair.js +2 -2
- package/dist/commands/db/repair.js.map +1 -1
- package/dist/commands/diet.d.ts +1 -1
- package/dist/commands/docker/clean.js +2 -4
- package/dist/commands/docker/clean.js.map +1 -1
- package/dist/commands/docker/index.js +4 -4
- package/dist/commands/docker/index.js.map +1 -1
- package/dist/commands/docker/list.js +2 -4
- package/dist/commands/docker/list.js.map +1 -1
- package/dist/commands/docker/logs.js +2 -4
- package/dist/commands/docker/logs.js.map +1 -1
- package/dist/commands/docker/rebuild-cache.d.ts +12 -0
- package/dist/commands/docker/rebuild-cache.js +144 -0
- package/dist/commands/docker/rebuild-cache.js.map +1 -0
- package/dist/commands/docker/restart.js +2 -4
- package/dist/commands/docker/restart.js.map +1 -1
- package/dist/commands/docker/shell.js +2 -4
- package/dist/commands/docker/shell.js.map +1 -1
- package/dist/commands/docker/start.js +2 -4
- package/dist/commands/docker/start.js.map +1 -1
- package/dist/commands/docker/stop.js +2 -4
- package/dist/commands/docker/stop.js.map +1 -1
- package/dist/commands/docker/sync.js +2 -4
- package/dist/commands/docker/sync.js.map +1 -1
- package/dist/commands/execution/config.d.ts +1 -1
- package/dist/commands/execution/config.js +39 -0
- package/dist/commands/execution/config.js.map +1 -1
- package/dist/commands/execution/index.d.ts +1 -1
- package/dist/commands/execution/list.d.ts +1 -1
- package/dist/commands/execution/list.js +2 -4
- package/dist/commands/execution/list.js.map +1 -1
- package/dist/commands/execution/logs.d.ts +1 -1
- package/dist/commands/execution/logs.js +2 -4
- package/dist/commands/execution/logs.js.map +1 -1
- package/dist/commands/execution/stop.d.ts +1 -1
- package/dist/commands/execution/stop.js +2 -4
- package/dist/commands/execution/stop.js.map +1 -1
- package/dist/commands/execution/view.d.ts +1 -1
- package/dist/commands/execution/view.js +2 -4
- package/dist/commands/execution/view.js.map +1 -1
- package/dist/commands/gh/login.js +2 -1
- package/dist/commands/gh/login.js.map +1 -1
- package/dist/commands/gh/status.js +18 -2
- package/dist/commands/gh/status.js.map +1 -1
- package/dist/commands/{ticket/bulk.d.ts → hook/export.d.ts} +8 -5
- package/dist/commands/hook/export.js +52 -0
- package/dist/commands/hook/export.js.map +1 -0
- package/dist/commands/hook/fire.d.ts +29 -0
- package/dist/commands/hook/fire.js +139 -0
- package/dist/commands/hook/fire.js.map +1 -0
- package/dist/commands/{project → hook}/index.d.ts +5 -5
- package/dist/commands/hook/index.js +53 -0
- package/dist/commands/hook/index.js.map +1 -0
- package/dist/commands/{board/index.d.ts → hook/list.d.ts} +10 -12
- package/dist/commands/hook/list.js +136 -0
- package/dist/commands/hook/list.js.map +1 -0
- package/dist/commands/{project/archive.d.ts → hook/preset.d.ts} +11 -7
- package/dist/commands/hook/preset.js +76 -0
- package/dist/commands/hook/preset.js.map +1 -0
- package/dist/commands/linear/auth.d.ts +1 -1
- package/dist/commands/linear/connect.d.ts +1 -1
- package/dist/commands/linear/import.d.ts +1 -1
- package/dist/commands/linear/status.d.ts +1 -1
- package/dist/commands/linear/sync.d.ts +1 -1
- package/dist/commands/mcp-server.d.ts +8 -2
- package/dist/commands/mcp-server.js +17 -31
- package/dist/commands/mcp-server.js.map +1 -1
- package/dist/commands/monday/connect.d.ts +1 -1
- package/dist/commands/monday/sync.d.ts +1 -1
- package/dist/commands/orchestrate/index.d.ts +35 -0
- package/dist/commands/orchestrate/index.js +267 -0
- package/dist/commands/orchestrate/index.js.map +1 -0
- package/dist/commands/orchestrator/attach.js +2 -3
- package/dist/commands/orchestrator/attach.js.map +1 -1
- package/dist/commands/orchestrator/index.d.ts +1 -1
- package/dist/commands/orchestrator/start.d.ts +3 -3
- package/dist/commands/orchestrator/start.js +32 -43
- package/dist/commands/orchestrator/start.js.map +1 -1
- package/dist/commands/orchestrator/stop.js +21 -26
- package/dist/commands/orchestrator/stop.js.map +1 -1
- package/dist/commands/pr/checks.d.ts +1 -1
- package/dist/commands/pr/close.d.ts +1 -1
- package/dist/commands/pr/create.d.ts +1 -1
- package/dist/commands/pr/index.d.ts +1 -1
- package/dist/commands/pr/link.d.ts +1 -1
- package/dist/commands/pr/list.d.ts +1 -1
- package/dist/commands/pr/merge.d.ts +1 -1
- package/dist/commands/pr/status.d.ts +1 -1
- package/dist/commands/pull.d.ts +1 -1
- package/dist/commands/qa/index.js +3 -3
- package/dist/commands/qa/index.js.map +1 -1
- package/dist/commands/repo/add.d.ts +1 -1
- package/dist/commands/repo/create.d.ts +1 -1
- package/dist/commands/repo/fix-remotes.d.ts +1 -1
- package/dist/commands/repo/index.d.ts +1 -1
- package/dist/commands/repo/list.d.ts +1 -1
- package/dist/commands/repo/remove.d.ts +1 -1
- package/dist/commands/repo/view.d.ts +1 -1
- package/dist/commands/session/attach.d.ts +1 -1
- package/dist/commands/session/attach.js +5 -7
- package/dist/commands/session/attach.js.map +1 -1
- package/dist/commands/session/cleanup.d.ts +1 -1
- package/dist/commands/session/cleanup.js +2 -4
- package/dist/commands/session/cleanup.js.map +1 -1
- package/dist/commands/session/create.d.ts +1 -1
- package/dist/commands/session/exec.d.ts +1 -1
- package/dist/commands/session/exec.js +2 -3
- package/dist/commands/session/exec.js.map +1 -1
- package/dist/commands/session/health.d.ts +1 -1
- package/dist/commands/session/health.js +2 -4
- package/dist/commands/session/health.js.map +1 -1
- package/dist/commands/session/index.d.ts +1 -1
- package/dist/commands/session/inspect.d.ts +1 -1
- package/dist/commands/session/inspect.js +2 -3
- package/dist/commands/session/inspect.js.map +1 -1
- package/dist/commands/session/list.d.ts +1 -1
- package/dist/commands/session/list.js +2 -4
- package/dist/commands/session/list.js.map +1 -1
- package/dist/commands/session/peek.d.ts +1 -1
- package/dist/commands/session/peek.js +3 -6
- package/dist/commands/session/peek.js.map +1 -1
- package/dist/commands/session/poke.js +2 -4
- package/dist/commands/session/poke.js.map +1 -1
- package/dist/commands/session/prune.d.ts +1 -1
- package/dist/commands/session/prune.js +2 -4
- package/dist/commands/session/prune.js.map +1 -1
- package/dist/commands/session/report.d.ts +1 -1
- package/dist/commands/session/report.js +2 -4
- package/dist/commands/session/report.js.map +1 -1
- package/dist/commands/session/restart.d.ts +1 -1
- package/dist/commands/session/restart.js +2 -3
- package/dist/commands/session/restart.js.map +1 -1
- package/dist/commands/shortcut/connect.d.ts +1 -1
- package/dist/commands/support/logs.d.ts +1 -1
- package/dist/commands/ticket/create.d.ts +4 -5
- package/dist/commands/ticket/create.js +69 -88
- package/dist/commands/ticket/create.js.map +1 -1
- package/dist/commands/ticket/delete.d.ts +1 -1
- package/dist/commands/ticket/edit.d.ts +1 -1
- package/dist/commands/ticket/edit.js +22 -14
- package/dist/commands/ticket/edit.js.map +1 -1
- package/dist/commands/ticket/index.d.ts +1 -1
- package/dist/commands/ticket/index.js +6 -36
- package/dist/commands/ticket/index.js.map +1 -1
- package/dist/commands/ticket/list.d.ts +1 -1
- package/dist/commands/ticket/move.d.ts +1 -1
- package/dist/commands/ticket/show.d.ts +8 -7
- package/dist/commands/ticket/show.js +101 -8
- package/dist/commands/ticket/show.js.map +1 -1
- package/dist/commands/ticket/update.d.ts +1 -1
- package/dist/commands/ticket/update.js +31 -14
- package/dist/commands/ticket/update.js.map +1 -1
- package/dist/commands/trello/configure.d.ts +1 -1
- package/dist/commands/trello/import.d.ts +1 -1
- package/dist/commands/trello/sync.d.ts +1 -1
- package/dist/commands/work/asana.d.ts +1 -1
- package/dist/commands/work/complete.d.ts +1 -1
- package/dist/commands/work/complete.js +2 -3
- package/dist/commands/work/complete.js.map +1 -1
- package/dist/commands/work/groom.d.ts +1 -1
- package/dist/commands/work/hooks/add.d.ts +1 -1
- package/dist/commands/work/hooks/add.js +2 -4
- package/dist/commands/work/hooks/add.js.map +1 -1
- package/dist/commands/work/hooks/index.d.ts +1 -1
- package/dist/commands/work/hooks/list.d.ts +1 -1
- package/dist/commands/work/hooks/list.js +2 -4
- package/dist/commands/work/hooks/list.js.map +1 -1
- package/dist/commands/work/hooks/remove.d.ts +1 -1
- package/dist/commands/work/hooks/remove.js +2 -4
- package/dist/commands/work/hooks/remove.js.map +1 -1
- package/dist/commands/work/hooks/toggle.d.ts +1 -1
- package/dist/commands/work/hooks/toggle.js +2 -4
- package/dist/commands/work/hooks/toggle.js.map +1 -1
- package/dist/commands/work/implement.d.ts +1 -1
- package/dist/commands/work/index.d.ts +1 -1
- package/dist/commands/work/index.js +4 -0
- package/dist/commands/work/index.js.map +1 -1
- package/dist/commands/work/jira.d.ts +1 -1
- package/dist/commands/work/linear.d.ts +1 -1
- package/dist/commands/work/peek.d.ts +1 -1
- package/dist/commands/work/ready.d.ts +1 -1
- package/dist/commands/work/ready.js +2 -3
- package/dist/commands/work/ready.js.map +1 -1
- package/dist/commands/work/rebase.d.ts +33 -0
- package/dist/commands/work/rebase.js +394 -0
- package/dist/commands/work/rebase.js.map +1 -0
- package/dist/commands/work/resolve.d.ts +1 -1
- package/dist/commands/work/review.d.ts +1 -1
- package/dist/commands/work/ship.d.ts +2 -1
- package/dist/commands/work/ship.js +49 -4
- package/dist/commands/work/ship.js.map +1 -1
- package/dist/commands/work/shortcut.d.ts +1 -1
- package/dist/commands/work/source/set.d.ts +1 -1
- package/dist/commands/work/source.d.ts +1 -1
- package/dist/commands/work/spawn.d.ts +1 -1
- package/dist/commands/work/spawn.js +2 -4
- package/dist/commands/work/spawn.js.map +1 -1
- package/dist/commands/work/start.d.ts +8 -1
- package/dist/commands/work/start.js +190 -22
- package/dist/commands/work/start.js.map +1 -1
- package/dist/commands/work/status.d.ts +1 -1
- package/dist/commands/work/stop.d.ts +1 -1
- package/dist/commands/work/stop.js +2 -4
- package/dist/commands/work/stop.js.map +1 -1
- package/dist/commands/work/watch.d.ts +1 -1
- package/dist/commands/work/watch.js +2 -4
- package/dist/commands/work/watch.js.map +1 -1
- package/dist/hooks/init.js +2 -2
- package/dist/hooks/init.js.map +1 -1
- package/dist/lib/agents/commands.d.ts +9 -3
- package/dist/lib/agents/commands.js +103 -88
- package/dist/lib/agents/commands.js.map +1 -1
- package/dist/lib/asana/config.js +13 -7
- package/dist/lib/asana/config.js.map +1 -1
- package/dist/lib/clickup/client.d.ts +92 -0
- package/dist/lib/clickup/client.js +150 -0
- package/dist/lib/clickup/client.js.map +1 -0
- package/dist/lib/clickup/config.d.ts +41 -0
- package/dist/lib/clickup/config.js +104 -0
- package/dist/lib/clickup/config.js.map +1 -0
- package/dist/lib/clickup/index.d.ts +4 -0
- package/dist/lib/clickup/index.js +4 -0
- package/dist/lib/clickup/index.js.map +1 -0
- package/dist/lib/clickup/types.d.ts +104 -0
- package/dist/lib/clickup/types.js +34 -0
- package/dist/lib/clickup/types.js.map +1 -0
- package/dist/lib/dashboard/server.js +1 -1
- package/dist/lib/dashboard/server.js.map +1 -1
- package/dist/lib/database/agents.d.ts +62 -4
- package/dist/lib/database/agents.js +161 -8
- package/dist/lib/database/agents.js.map +1 -1
- package/dist/lib/database/credential-store.d.ts +64 -0
- package/dist/lib/database/credential-store.js +306 -0
- package/dist/lib/database/credential-store.js.map +1 -0
- package/dist/lib/database/db-safety.js +4 -4
- package/dist/lib/database/db-safety.js.map +1 -1
- package/dist/lib/database/drizzle-schema.d.ts +2 -2
- package/dist/lib/database/drizzle-schema.js +2 -1
- package/dist/lib/database/drizzle-schema.js.map +1 -1
- package/dist/lib/database/index.d.ts +2 -1
- package/dist/lib/database/index.js +3 -1
- package/dist/lib/database/index.js.map +1 -1
- package/dist/lib/database/migrations/0013_agent_lifecycle_states.d.ts +11 -0
- package/dist/lib/database/migrations/0013_agent_lifecycle_states.js +47 -0
- package/dist/lib/database/migrations/0013_agent_lifecycle_states.js.map +1 -0
- package/dist/lib/database/migrations/0014_agent_work_lifecycle.d.ts +10 -0
- package/dist/lib/database/migrations/0014_agent_work_lifecycle.js +31 -0
- package/dist/lib/database/migrations/0014_agent_work_lifecycle.js.map +1 -0
- package/dist/lib/database/migrations/0015_orchestrate_hooks.d.ts +8 -0
- package/dist/lib/database/migrations/0015_orchestrate_hooks.js +35 -0
- package/dist/lib/database/migrations/0015_orchestrate_hooks.js.map +1 -0
- package/dist/lib/database/migrations/0016_schema_catchup.d.ts +15 -0
- package/dist/lib/database/migrations/0016_schema_catchup.js +154 -0
- package/dist/lib/database/migrations/0016_schema_catchup.js.map +1 -0
- package/dist/lib/database/migrations/index.js +8 -0
- package/dist/lib/database/migrations/index.js.map +1 -1
- package/dist/lib/database/pmo-bootstrap.d.ts +7 -0
- package/dist/lib/database/pmo-bootstrap.js +47 -22
- package/dist/lib/database/pmo-bootstrap.js.map +1 -1
- package/dist/lib/database/workspace-schema.d.ts +1 -1
- package/dist/lib/database/workspace-schema.js +3 -1
- package/dist/lib/database/workspace-schema.js.map +1 -1
- package/dist/lib/database/workspace.js +4 -0
- package/dist/lib/database/workspace.js.map +1 -1
- package/dist/lib/events/events.d.ts +28 -0
- package/dist/lib/events/index.d.ts +1 -1
- package/dist/lib/events/index.js.map +1 -1
- package/dist/lib/execution/config.d.ts +2 -0
- package/dist/lib/execution/config.js +14 -0
- package/dist/lib/execution/config.js.map +1 -1
- package/dist/lib/execution/devcontainer.js +51 -0
- package/dist/lib/execution/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/devcontainer-tmux.js +1 -1
- package/dist/lib/execution/runners/devcontainer-tmux.js.map +1 -1
- package/dist/lib/execution/runners/devcontainer.js +9 -1
- package/dist/lib/execution/runners/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/docker-credentials.d.ts +8 -0
- package/dist/lib/execution/runners/docker-credentials.js +20 -3
- package/dist/lib/execution/runners/docker-credentials.js.map +1 -1
- package/dist/lib/execution/runners/docker-management.d.ts +54 -0
- package/dist/lib/execution/runners/docker-management.js +194 -7
- package/dist/lib/execution/runners/docker-management.js.map +1 -1
- package/dist/lib/execution/runners/index.d.ts +1 -1
- package/dist/lib/execution/runners/index.js +1 -1
- package/dist/lib/execution/runners/index.js.map +1 -1
- package/dist/lib/execution/runners/shared.d.ts +23 -1
- package/dist/lib/execution/runners/shared.js +112 -1
- package/dist/lib/execution/runners/shared.js.map +1 -1
- package/dist/lib/execution/session-utils.d.ts +4 -0
- package/dist/lib/execution/session-utils.js +34 -24
- package/dist/lib/execution/session-utils.js.map +1 -1
- package/dist/lib/execution/spawner.js +8 -1
- package/dist/lib/execution/spawner.js.map +1 -1
- package/dist/lib/execution/types.js +1 -1
- package/dist/lib/external-issues/types.d.ts +3 -3
- package/dist/lib/external-issues/types.js +1 -1
- package/dist/lib/external-issues/types.js.map +1 -1
- package/dist/lib/jira/config.js +10 -4
- package/dist/lib/jira/config.js.map +1 -1
- package/dist/lib/linear/client.d.ts +13 -0
- package/dist/lib/linear/client.js +37 -0
- package/dist/lib/linear/client.js.map +1 -1
- package/dist/lib/linear/config.js +13 -8
- package/dist/lib/linear/config.js.map +1 -1
- package/dist/lib/mcp/generator.d.ts +26 -0
- package/dist/lib/mcp/generator.js +219 -0
- package/dist/lib/mcp/generator.js.map +1 -0
- package/dist/lib/mcp/index.d.ts +1 -0
- package/dist/lib/mcp/index.js +1 -0
- package/dist/lib/mcp/index.js.map +1 -1
- package/dist/lib/mcp/tools/index.d.ts +0 -11
- package/dist/lib/mcp/tools/index.js +0 -11
- package/dist/lib/mcp/tools/index.js.map +1 -1
- package/dist/lib/mcp/tools/overrides/index.d.ts +23 -0
- package/dist/lib/mcp/tools/overrides/index.js +30 -0
- package/dist/lib/mcp/tools/overrides/index.js.map +1 -0
- package/dist/lib/mcp/tools/overrides/tmux.d.ts +11 -0
- package/dist/lib/mcp/tools/overrides/tmux.js +184 -0
- package/dist/lib/mcp/tools/overrides/tmux.js.map +1 -0
- package/dist/lib/mcp/tools/overrides/work-start.d.ts +12 -0
- package/dist/lib/mcp/tools/overrides/work-start.js +108 -0
- package/dist/lib/mcp/tools/overrides/work-start.js.map +1 -0
- package/dist/lib/mcp/tools/ticket.js +10 -48
- package/dist/lib/mcp/tools/ticket.js.map +1 -1
- package/dist/lib/monday/config.js +11 -5
- package/dist/lib/monday/config.js.map +1 -1
- package/dist/lib/orchestrate/actions.d.ts +20 -0
- package/dist/lib/orchestrate/actions.js +194 -0
- package/dist/lib/orchestrate/actions.js.map +1 -0
- package/dist/lib/orchestrate/config-loader.d.ts +31 -0
- package/dist/lib/orchestrate/config-loader.js +201 -0
- package/dist/lib/orchestrate/config-loader.js.map +1 -0
- package/dist/lib/orchestrate/engine.d.ts +94 -0
- package/dist/lib/orchestrate/engine.js +290 -0
- package/dist/lib/orchestrate/engine.js.map +1 -0
- package/dist/lib/orchestrate/index.d.ts +16 -0
- package/dist/lib/orchestrate/index.js +14 -0
- package/dist/lib/orchestrate/index.js.map +1 -0
- package/dist/lib/orchestrate/poller.d.ts +58 -0
- package/dist/lib/orchestrate/poller.js +282 -0
- package/dist/lib/orchestrate/poller.js.map +1 -0
- package/dist/lib/orchestrate/presets.d.ts +27 -0
- package/dist/lib/orchestrate/presets.js +65 -0
- package/dist/lib/orchestrate/presets.js.map +1 -0
- package/dist/lib/orchestrate/types.d.ts +93 -0
- package/dist/lib/orchestrate/types.js +46 -0
- package/dist/lib/orchestrate/types.js.map +1 -0
- package/dist/lib/pmo/base-command.d.ts +20 -152
- package/dist/lib/pmo/base-command.js +32 -198
- package/dist/lib/pmo/base-command.js.map +1 -1
- package/dist/lib/pmo/index.d.ts +1 -0
- package/dist/lib/pmo/index.js +3 -0
- package/dist/lib/pmo/index.js.map +1 -1
- package/dist/lib/pmo/storage/base.d.ts +0 -18
- package/dist/lib/pmo/storage/base.js +0 -231
- package/dist/lib/pmo/storage/base.js.map +1 -1
- package/dist/lib/pmo/storage/index.d.ts +1 -76
- package/dist/lib/pmo/storage/index.js +1 -215
- package/dist/lib/pmo/storage/index.js.map +1 -1
- package/dist/lib/pmo/storage/specs.js.map +1 -1
- package/dist/lib/pmo/storage/tickets.d.ts +2 -2
- package/dist/lib/pmo/storage/tickets.js +4 -34
- package/dist/lib/pmo/storage/tickets.js.map +1 -1
- package/dist/lib/pmo/types.d.ts +0 -37
- package/dist/lib/pr/index.d.ts +28 -0
- package/dist/lib/pr/index.js +100 -0
- package/dist/lib/pr/index.js.map +1 -1
- package/dist/lib/providers/clickup-provider.d.ts +28 -0
- package/dist/lib/providers/clickup-provider.js +353 -0
- package/dist/lib/providers/clickup-provider.js.map +1 -0
- package/dist/lib/providers/event-emitting-provider.d.ts +4 -2
- package/dist/lib/providers/event-emitting-provider.js +12 -0
- package/dist/lib/providers/event-emitting-provider.js.map +1 -1
- package/dist/lib/providers/index.d.ts +1 -1
- package/dist/lib/providers/index.js.map +1 -1
- package/dist/lib/providers/linear-provider.d.ts +4 -2
- package/dist/lib/providers/linear-provider.js +106 -0
- package/dist/lib/providers/linear-provider.js.map +1 -1
- package/dist/lib/providers/pmo-provider.d.ts +4 -2
- package/dist/lib/providers/pmo-provider.js +26 -0
- package/dist/lib/providers/pmo-provider.js.map +1 -1
- package/dist/lib/providers/resolver.d.ts +1 -1
- package/dist/lib/providers/resolver.js +16 -5
- package/dist/lib/providers/resolver.js.map +1 -1
- package/dist/lib/providers/types.d.ts +31 -2
- package/dist/lib/runners/claude-code-runner.js +13 -4
- package/dist/lib/runners/claude-code-runner.js.map +1 -1
- package/dist/lib/runtime-command.d.ts +219 -0
- package/dist/lib/runtime-command.js +320 -0
- package/dist/lib/runtime-command.js.map +1 -0
- package/dist/lib/shortcut/config.js +13 -7
- package/dist/lib/shortcut/config.js.map +1 -1
- package/dist/lib/telemetry/analytics.d.ts +1 -1
- package/dist/lib/telemetry/analytics.js +16 -8
- package/dist/lib/telemetry/analytics.js.map +1 -1
- package/dist/lib/trello/config.js +17 -12
- package/dist/lib/trello/config.js.map +1 -1
- package/dist/lib/update-check.d.ts +8 -3
- package/dist/lib/update-check.js +16 -5
- package/dist/lib/update-check.js.map +1 -1
- package/dist/lib/work-lifecycle/events.d.ts +1 -1
- package/dist/lib/work-lifecycle/hooks/types.d.ts +3 -2
- package/dist/lib/work-lifecycle/hooks/types.js +12 -0
- package/dist/lib/work-lifecycle/hooks/types.js.map +1 -1
- package/dist/lib/work-source/config.d.ts +1 -1
- package/dist/lib/work-source/config.js +11 -1
- package/dist/lib/work-source/config.js.map +1 -1
- package/dist/lib/work-source/provider-sources.js +6 -1
- package/dist/lib/work-source/provider-sources.js.map +1 -1
- package/oclif.manifest.json +2682 -3839
- package/package.json +1 -1
- package/dist/commands/board/index.js +0 -263
- package/dist/commands/board/index.js.map +0 -1
- package/dist/commands/board/view.d.ts +0 -15
- package/dist/commands/board/view.js +0 -137
- package/dist/commands/board/view.js.map +0 -1
- package/dist/commands/board/watch.d.ts +0 -15
- package/dist/commands/board/watch.js +0 -59
- package/dist/commands/board/watch.js.map +0 -1
- package/dist/commands/dashboard/index.d.ts +0 -14
- package/dist/commands/dashboard/index.js +0 -117
- package/dist/commands/dashboard/index.js.map +0 -1
- package/dist/commands/dashboard.d.ts +0 -38
- package/dist/commands/dashboard.js +0 -353
- package/dist/commands/dashboard.js.map +0 -1
- package/dist/commands/pmo/init.d.ts +0 -28
- package/dist/commands/pmo/init.js +0 -410
- package/dist/commands/pmo/init.js.map +0 -1
- package/dist/commands/project/archive.js +0 -79
- package/dist/commands/project/archive.js.map +0 -1
- package/dist/commands/project/create.d.ts +0 -24
- package/dist/commands/project/create.js +0 -191
- package/dist/commands/project/create.js.map +0 -1
- package/dist/commands/project/delete.d.ts +0 -18
- package/dist/commands/project/delete.js +0 -115
- package/dist/commands/project/delete.js.map +0 -1
- package/dist/commands/project/index.js +0 -60
- package/dist/commands/project/index.js.map +0 -1
- package/dist/commands/project/list.js +0 -115
- package/dist/commands/project/list.js.map +0 -1
- package/dist/commands/project/spec.d.ts +0 -19
- package/dist/commands/project/spec.js +0 -218
- package/dist/commands/project/spec.js.map +0 -1
- package/dist/commands/project/unarchive.d.ts +0 -17
- package/dist/commands/project/unarchive.js +0 -55
- package/dist/commands/project/unarchive.js.map +0 -1
- package/dist/commands/project/update.d.ts +0 -19
- package/dist/commands/project/update.js +0 -161
- package/dist/commands/project/update.js.map +0 -1
- package/dist/commands/project/view.d.ts +0 -17
- package/dist/commands/project/view.js +0 -107
- package/dist/commands/project/view.js.map +0 -1
- package/dist/commands/ticket/bulk.js +0 -141
- package/dist/commands/ticket/bulk.js.map +0 -1
- package/dist/commands/ticket/cancel.d.ts +0 -17
- package/dist/commands/ticket/cancel.js +0 -206
- package/dist/commands/ticket/cancel.js.map +0 -1
- package/dist/commands/ticket/category.d.ts +0 -15
- package/dist/commands/ticket/category.js +0 -64
- package/dist/commands/ticket/category.js.map +0 -1
- package/dist/commands/ticket/complete.d.ts +0 -17
- package/dist/commands/ticket/complete.js +0 -178
- package/dist/commands/ticket/complete.js.map +0 -1
- package/dist/commands/ticket/epic.d.ts +0 -21
- package/dist/commands/ticket/epic.js +0 -306
- package/dist/commands/ticket/epic.js.map +0 -1
- package/dist/commands/ticket/link/block.d.ts +0 -15
- package/dist/commands/ticket/link/block.js +0 -96
- package/dist/commands/ticket/link/block.js.map +0 -1
- package/dist/commands/ticket/link/duplicates.d.ts +0 -15
- package/dist/commands/ticket/link/duplicates.js +0 -96
- package/dist/commands/ticket/link/duplicates.js.map +0 -1
- package/dist/commands/ticket/link/index.d.ts +0 -14
- package/dist/commands/ticket/link/index.js +0 -99
- package/dist/commands/ticket/link/index.js.map +0 -1
- package/dist/commands/ticket/link/relates.d.ts +0 -15
- package/dist/commands/ticket/link/relates.js +0 -96
- package/dist/commands/ticket/link/relates.js.map +0 -1
- package/dist/commands/ticket/project.d.ts +0 -19
- package/dist/commands/ticket/project.js +0 -257
- package/dist/commands/ticket/project.js.map +0 -1
- package/dist/commands/ticket/reassign.d.ts +0 -20
- package/dist/commands/ticket/reassign.js +0 -311
- package/dist/commands/ticket/reassign.js.map +0 -1
- package/dist/commands/ticket/resolve.d.ts +0 -68
- package/dist/commands/ticket/resolve.js +0 -296
- package/dist/commands/ticket/resolve.js.map +0 -1
- package/dist/commands/ticket/spec.d.ts +0 -19
- package/dist/commands/ticket/spec.js +0 -260
- package/dist/commands/ticket/spec.js.map +0 -1
- package/dist/commands/ticket/status.d.ts +0 -14
- package/dist/commands/ticket/status.js +0 -84
- package/dist/commands/ticket/status.js.map +0 -1
- package/dist/commands/ticket/view.d.ts +0 -14
- package/dist/commands/ticket/view.js +0 -109
- package/dist/commands/ticket/view.js.map +0 -1
- package/dist/lib/mcp/tools/board.d.ts +0 -6
- package/dist/lib/mcp/tools/board.js +0 -190
- package/dist/lib/mcp/tools/board.js.map +0 -1
- package/dist/lib/mcp/tools/category.d.ts +0 -6
- package/dist/lib/mcp/tools/category.js +0 -85
- package/dist/lib/mcp/tools/category.js.map +0 -1
- package/dist/lib/mcp/tools/epic.d.ts +0 -6
- package/dist/lib/mcp/tools/epic.js +0 -184
- package/dist/lib/mcp/tools/epic.js.map +0 -1
- package/dist/lib/mcp/tools/label.d.ts +0 -6
- package/dist/lib/mcp/tools/label.js +0 -339
- package/dist/lib/mcp/tools/label.js.map +0 -1
- package/dist/lib/mcp/tools/phase.d.ts +0 -6
- package/dist/lib/mcp/tools/phase.js +0 -132
- package/dist/lib/mcp/tools/phase.js.map +0 -1
- package/dist/lib/mcp/tools/project.d.ts +0 -6
- package/dist/lib/mcp/tools/project.js +0 -197
- package/dist/lib/mcp/tools/project.js.map +0 -1
- package/dist/lib/mcp/tools/roadmap.d.ts +0 -6
- package/dist/lib/mcp/tools/roadmap.js +0 -124
- package/dist/lib/mcp/tools/roadmap.js.map +0 -1
- package/dist/lib/mcp/tools/status.d.ts +0 -6
- package/dist/lib/mcp/tools/status.js +0 -110
- package/dist/lib/mcp/tools/status.js.map +0 -1
- package/dist/lib/mcp/tools/template.d.ts +0 -6
- package/dist/lib/mcp/tools/template.js +0 -108
- package/dist/lib/mcp/tools/template.js.map +0 -1
- package/dist/lib/mcp/tools/view.d.ts +0 -6
- package/dist/lib/mcp/tools/view.js +0 -77
- package/dist/lib/mcp/tools/view.js.map +0 -1
- package/dist/lib/mcp/tools/workflow.d.ts +0 -6
- package/dist/lib/mcp/tools/workflow.js +0 -96
- package/dist/lib/mcp/tools/workflow.js.map +0 -1
- package/dist/lib/pmo/storage/categories.d.ts +0 -50
- package/dist/lib/pmo/storage/categories.js +0 -206
- package/dist/lib/pmo/storage/categories.js.map +0 -1
- package/dist/lib/pmo/storage/labels.d.ts +0 -55
- package/dist/lib/pmo/storage/labels.js +0 -347
- package/dist/lib/pmo/storage/labels.js.map +0 -1
- package/dist/lib/pmo/storage/phases.d.ts +0 -65
- package/dist/lib/pmo/storage/phases.js +0 -393
- package/dist/lib/pmo/storage/phases.js.map +0 -1
- package/dist/lib/pmo/storage/roadmaps.d.ts +0 -64
- package/dist/lib/pmo/storage/roadmaps.js +0 -373
- package/dist/lib/pmo/storage/roadmaps.js.map +0 -1
- package/dist/lib/pmo/storage/views.d.ts +0 -57
- package/dist/lib/pmo/storage/views.js +0 -456
- package/dist/lib/pmo/storage/views.js.map +0 -1
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Auto-Generator
|
|
3
|
+
*
|
|
4
|
+
* Walks oclif command definitions and auto-generates MCP tool registrations.
|
|
5
|
+
* Each generated tool calls `ctx.runCommand('prlt <command> --json')` to invoke
|
|
6
|
+
* the CLI command, routing through the proper provider adapter.
|
|
7
|
+
*
|
|
8
|
+
* Manual overrides in `tools/overrides/` take precedence over generated tools.
|
|
9
|
+
*/
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
import { strictTool, textResponse, errorResponse } from './helpers.js';
|
|
12
|
+
/**
|
|
13
|
+
* Commands excluded from auto-generation.
|
|
14
|
+
* These are oclif internals, the MCP server itself, or commands
|
|
15
|
+
* that don't make sense as MCP tools.
|
|
16
|
+
*/
|
|
17
|
+
const EXCLUDED_COMMANDS = new Set([
|
|
18
|
+
// MCP server itself (would be recursive)
|
|
19
|
+
'mcp-server',
|
|
20
|
+
// oclif plugin commands
|
|
21
|
+
'plugins',
|
|
22
|
+
'plugins:inspect',
|
|
23
|
+
'plugins:install',
|
|
24
|
+
'plugins:add',
|
|
25
|
+
'plugins:link',
|
|
26
|
+
'plugins:reset',
|
|
27
|
+
'plugins:uninstall',
|
|
28
|
+
'plugins:unlink',
|
|
29
|
+
'plugins:remove',
|
|
30
|
+
'plugins:update',
|
|
31
|
+
// oclif built-ins
|
|
32
|
+
'help',
|
|
33
|
+
'commands',
|
|
34
|
+
'autocomplete',
|
|
35
|
+
'autocomplete:setup',
|
|
36
|
+
// Self-update (not useful for MCP)
|
|
37
|
+
'update',
|
|
38
|
+
'self-update',
|
|
39
|
+
]);
|
|
40
|
+
/**
|
|
41
|
+
* Convert an oclif command ID to an MCP tool name.
|
|
42
|
+
* E.g., "ticket:list" → "ticket_list", "agent:staff:add" → "agent_staff_add"
|
|
43
|
+
*/
|
|
44
|
+
export function commandIdToToolName(commandId) {
|
|
45
|
+
return commandId.replace(/:/g, '_').replace(/-/g, '_');
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Convert an MCP tool name back to CLI command args.
|
|
49
|
+
* Uses the original command ID (with colons) and the oclif topic separator (space).
|
|
50
|
+
* E.g., "ticket:list" → "ticket list"
|
|
51
|
+
*/
|
|
52
|
+
function commandIdToCliArgs(commandId) {
|
|
53
|
+
return commandId.replace(/:/g, ' ');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Build a Zod schema shape from oclif flag and arg definitions.
|
|
57
|
+
*/
|
|
58
|
+
function buildZodSchema(command) {
|
|
59
|
+
const shape = {};
|
|
60
|
+
// Add args as schema parameters
|
|
61
|
+
if (command.args) {
|
|
62
|
+
for (const [name, arg] of Object.entries(command.args)) {
|
|
63
|
+
const argName = toSnakeCase(name);
|
|
64
|
+
let schema = z.string();
|
|
65
|
+
if (arg.options && arg.options.length > 0) {
|
|
66
|
+
schema = z.enum(arg.options);
|
|
67
|
+
}
|
|
68
|
+
schema = schema.describe(arg.description || `Positional argument: ${name}`);
|
|
69
|
+
if (!arg.required) {
|
|
70
|
+
schema = schema.optional();
|
|
71
|
+
}
|
|
72
|
+
shape[argName] = schema;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Add flags as schema parameters
|
|
76
|
+
if (command.flags) {
|
|
77
|
+
for (const [name, flag] of Object.entries(command.flags)) {
|
|
78
|
+
// Skip internal/meta flags that we handle automatically
|
|
79
|
+
if (name === 'json' || name === 'machine')
|
|
80
|
+
continue;
|
|
81
|
+
const paramName = toSnakeCase(name);
|
|
82
|
+
if (flag.type === 'boolean') {
|
|
83
|
+
let schema = z.boolean().describe(flag.description || `Flag: --${name}`);
|
|
84
|
+
schema = schema.optional();
|
|
85
|
+
shape[paramName] = schema;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// option type - string value
|
|
89
|
+
let schema;
|
|
90
|
+
if (flag.options && flag.options.length > 0) {
|
|
91
|
+
schema = z.enum(flag.options);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
schema = z.string();
|
|
95
|
+
}
|
|
96
|
+
schema = schema.describe(flag.description || `Option: --${name}`);
|
|
97
|
+
schema = schema.optional();
|
|
98
|
+
shape[paramName] = schema;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return shape;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Convert a kebab-case or camelCase name to snake_case.
|
|
106
|
+
*/
|
|
107
|
+
function toSnakeCase(name) {
|
|
108
|
+
return name
|
|
109
|
+
.replace(/-/g, '_')
|
|
110
|
+
.replace(/([a-z])([A-Z])/g, '$1_$2')
|
|
111
|
+
.toLowerCase();
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Convert a snake_case param name back to kebab-case flag name.
|
|
115
|
+
*/
|
|
116
|
+
function snakeCaseToKebab(name) {
|
|
117
|
+
return name.replace(/_/g, '-');
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Shell-escape a string value for safe inclusion in a command.
|
|
121
|
+
*/
|
|
122
|
+
function shellEscape(value) {
|
|
123
|
+
// If the value contains special characters, wrap in single quotes
|
|
124
|
+
// and escape any single quotes within
|
|
125
|
+
if (/[^a-zA-Z0-9_\-./:@=]/.test(value)) {
|
|
126
|
+
return `'${value.replace(/'/g, "'\\''")}'`;
|
|
127
|
+
}
|
|
128
|
+
return value;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Build a CLI command string from a command definition and params.
|
|
132
|
+
*/
|
|
133
|
+
function buildCommandString(command, params) {
|
|
134
|
+
const parts = ['prlt', ...commandIdToCliArgs(command.id).split(' ')];
|
|
135
|
+
// Separate arg names from flag names
|
|
136
|
+
const argNames = new Set(Object.keys(command.args || {}).map(toSnakeCase));
|
|
137
|
+
const flagDefs = command.flags || {};
|
|
138
|
+
// Add positional args first (in definition order)
|
|
139
|
+
if (command.args) {
|
|
140
|
+
for (const [name] of Object.entries(command.args)) {
|
|
141
|
+
const paramName = toSnakeCase(name);
|
|
142
|
+
const value = params[paramName];
|
|
143
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
144
|
+
parts.push(shellEscape(String(value)));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Add flags
|
|
149
|
+
for (const [paramName, value] of Object.entries(params)) {
|
|
150
|
+
// Skip args (already handled) and undefined values
|
|
151
|
+
if (argNames.has(paramName) || value === undefined || value === null)
|
|
152
|
+
continue;
|
|
153
|
+
const flagName = snakeCaseToKebab(paramName);
|
|
154
|
+
// Look up the original flag definition
|
|
155
|
+
const flagDef = flagDefs[flagName];
|
|
156
|
+
if (!flagDef)
|
|
157
|
+
continue;
|
|
158
|
+
if (flagDef.type === 'boolean') {
|
|
159
|
+
if (value === true) {
|
|
160
|
+
parts.push(`--${flagName}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
// option type
|
|
165
|
+
parts.push(`--${flagName}`, shellEscape(String(value)));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Always add --json for structured output if the command supports it
|
|
169
|
+
const hasJsonFlag = 'json' in flagDefs || 'machine' in flagDefs;
|
|
170
|
+
if (hasJsonFlag) {
|
|
171
|
+
parts.push('--json');
|
|
172
|
+
}
|
|
173
|
+
return parts.join(' ');
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Check if a command should be excluded from auto-generation.
|
|
177
|
+
*/
|
|
178
|
+
function isExcluded(command) {
|
|
179
|
+
// Explicit exclusion list
|
|
180
|
+
if (EXCLUDED_COMMANDS.has(command.id))
|
|
181
|
+
return true;
|
|
182
|
+
// Exclude hidden commands
|
|
183
|
+
if (command.hidden)
|
|
184
|
+
return true;
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Register auto-generated MCP tools from oclif command definitions.
|
|
189
|
+
*
|
|
190
|
+
* @param server - MCP server instance
|
|
191
|
+
* @param ctx - MCP tool context
|
|
192
|
+
* @param commands - Array of oclif command definitions from config.commands
|
|
193
|
+
* @param overrideNames - Set of tool names that have manual overrides (skip generation)
|
|
194
|
+
*/
|
|
195
|
+
export function registerAutoGeneratedTools(server, ctx, commands, overrideNames) {
|
|
196
|
+
for (const command of commands) {
|
|
197
|
+
const toolName = commandIdToToolName(command.id);
|
|
198
|
+
// Skip if override exists
|
|
199
|
+
if (overrideNames.has(toolName))
|
|
200
|
+
continue;
|
|
201
|
+
// Skip excluded commands
|
|
202
|
+
if (isExcluded(command))
|
|
203
|
+
continue;
|
|
204
|
+
// Build Zod schema from command metadata
|
|
205
|
+
const schema = buildZodSchema(command);
|
|
206
|
+
// Register the tool
|
|
207
|
+
strictTool(server, toolName, command.description || `Run: prlt ${commandIdToCliArgs(command.id)}`, schema, async (params) => {
|
|
208
|
+
try {
|
|
209
|
+
const cmdString = buildCommandString(command, params);
|
|
210
|
+
const output = ctx.runCommand(cmdString);
|
|
211
|
+
return textResponse(output);
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
return errorResponse(error);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/lib/mcp/generator.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/mcp/index.d.ts
CHANGED
package/dist/lib/mcp/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA"}
|
|
@@ -2,19 +2,8 @@
|
|
|
2
2
|
* MCP Tools - Export all tool registrars
|
|
3
3
|
*/
|
|
4
4
|
export { registerTicketTools } from './ticket.js';
|
|
5
|
-
export { registerProjectTools } from './project.js';
|
|
6
|
-
export { registerBoardTools } from './board.js';
|
|
7
|
-
export { registerEpicTools } from './epic.js';
|
|
8
5
|
export { registerWorkTools } from './work.js';
|
|
9
|
-
export { registerWorkflowTools } from './workflow.js';
|
|
10
|
-
export { registerStatusTools } from './status.js';
|
|
11
|
-
export { registerPhaseTools } from './phase.js';
|
|
12
6
|
export { registerActionTools } from './action.js';
|
|
13
|
-
export { registerRoadmapTools } from './roadmap.js';
|
|
14
|
-
export { registerCategoryTools } from './category.js';
|
|
15
|
-
export { registerTemplateTools } from './template.js';
|
|
16
|
-
export { registerViewTools } from './view.js';
|
|
17
7
|
export { registerDietTools } from './diet.js';
|
|
18
|
-
export { registerLabelTools } from './label.js';
|
|
19
8
|
export { registerTmuxTools } from './tmux.js';
|
|
20
9
|
export { registerAgentTools, registerDockerTools, registerRepoTools, registerBranchTools, registerGitHubTools, registerInitTools, registerUtilityTools, } from './cli-passthrough.js';
|
|
@@ -2,20 +2,9 @@
|
|
|
2
2
|
* MCP Tools - Export all tool registrars
|
|
3
3
|
*/
|
|
4
4
|
export { registerTicketTools } from './ticket.js';
|
|
5
|
-
export { registerProjectTools } from './project.js';
|
|
6
|
-
export { registerBoardTools } from './board.js';
|
|
7
|
-
export { registerEpicTools } from './epic.js';
|
|
8
5
|
export { registerWorkTools } from './work.js';
|
|
9
|
-
export { registerWorkflowTools } from './workflow.js';
|
|
10
|
-
export { registerStatusTools } from './status.js';
|
|
11
|
-
export { registerPhaseTools } from './phase.js';
|
|
12
6
|
export { registerActionTools } from './action.js';
|
|
13
|
-
export { registerRoadmapTools } from './roadmap.js';
|
|
14
|
-
export { registerCategoryTools } from './category.js';
|
|
15
|
-
export { registerTemplateTools } from './template.js';
|
|
16
|
-
export { registerViewTools } from './view.js';
|
|
17
7
|
export { registerDietTools } from './diet.js';
|
|
18
|
-
export { registerLabelTools } from './label.js';
|
|
19
8
|
export { registerTmuxTools } from './tmux.js';
|
|
20
9
|
// CLI passthrough tools
|
|
21
10
|
export { registerAgentTools, registerDockerTools, registerRepoTools, registerBranchTools, registerGitHubTools, registerInitTools, registerUtilityTools, } from './cli-passthrough.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/mcp/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/mcp/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAE7C,wBAAwB;AACxB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Overrides Index
|
|
3
|
+
*
|
|
4
|
+
* Manual override implementations that take precedence over auto-generated tools.
|
|
5
|
+
* Add overrides here for tools that need custom MCP logic (e.g., direct tmux
|
|
6
|
+
* interaction, in-process workspace context, streaming, etc.).
|
|
7
|
+
*
|
|
8
|
+
* To add a new override:
|
|
9
|
+
* 1. Create a file in this directory exporting a registrar function and tool names
|
|
10
|
+
* 2. Import and register it below
|
|
11
|
+
* 3. Add the tool names to `overrideToolNames`
|
|
12
|
+
*/
|
|
13
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
14
|
+
import type { McpToolContext } from '../../types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Set of tool names that have manual overrides.
|
|
17
|
+
* The auto-generator will skip these names.
|
|
18
|
+
*/
|
|
19
|
+
export declare const overrideToolNames: Set<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Register all manually overridden MCP tools.
|
|
22
|
+
*/
|
|
23
|
+
export declare function registerOverrideTools(server: McpServer, ctx: McpToolContext): void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Overrides Index
|
|
3
|
+
*
|
|
4
|
+
* Manual override implementations that take precedence over auto-generated tools.
|
|
5
|
+
* Add overrides here for tools that need custom MCP logic (e.g., direct tmux
|
|
6
|
+
* interaction, in-process workspace context, streaming, etc.).
|
|
7
|
+
*
|
|
8
|
+
* To add a new override:
|
|
9
|
+
* 1. Create a file in this directory exporting a registrar function and tool names
|
|
10
|
+
* 2. Import and register it below
|
|
11
|
+
* 3. Add the tool names to `overrideToolNames`
|
|
12
|
+
*/
|
|
13
|
+
import { tmuxOverrideNames, registerTmuxOverrides } from './tmux.js';
|
|
14
|
+
import { workStartOverrideNames, registerWorkStartOverride } from './work-start.js';
|
|
15
|
+
/**
|
|
16
|
+
* Set of tool names that have manual overrides.
|
|
17
|
+
* The auto-generator will skip these names.
|
|
18
|
+
*/
|
|
19
|
+
export const overrideToolNames = new Set([
|
|
20
|
+
...tmuxOverrideNames,
|
|
21
|
+
...workStartOverrideNames,
|
|
22
|
+
]);
|
|
23
|
+
/**
|
|
24
|
+
* Register all manually overridden MCP tools.
|
|
25
|
+
*/
|
|
26
|
+
export function registerOverrideTools(server, ctx) {
|
|
27
|
+
registerTmuxOverrides(server, ctx);
|
|
28
|
+
registerWorkStartOverride(server, ctx);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/mcp/tools/overrides/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAEnF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAgB,IAAI,GAAG,CAAC;IACpD,GAAG,iBAAiB;IACpB,GAAG,sBAAsB;CAC1B,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,GAAmB;IAC1E,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAClC,yBAAyB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AACxC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tmux Tool Overrides
|
|
3
|
+
*
|
|
4
|
+
* These tools interact directly with tmux (not through CLI commands),
|
|
5
|
+
* so they need custom MCP implementations rather than auto-generation.
|
|
6
|
+
*/
|
|
7
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
8
|
+
import type { McpToolContext } from '../../types.js';
|
|
9
|
+
/** Tool names provided by this override module. */
|
|
10
|
+
export declare const tmuxOverrideNames: string[];
|
|
11
|
+
export declare function registerTmuxOverrides(server: McpServer, _ctx: McpToolContext): void;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tmux Tool Overrides
|
|
3
|
+
*
|
|
4
|
+
* These tools interact directly with tmux (not through CLI commands),
|
|
5
|
+
* so they need custom MCP implementations rather than auto-generation.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { execFileSync } from 'node:child_process';
|
|
9
|
+
import { errorResponse, strictTool, successResponse } from '../../helpers.js';
|
|
10
|
+
const TMUX_ENV = { ...process.env, TERM: process.env.TERM || 'xterm-256color' };
|
|
11
|
+
/**
|
|
12
|
+
* Execute a tmux command with args passed as an array (no shell interpretation).
|
|
13
|
+
*/
|
|
14
|
+
function runTmux(args, timeoutMs = 10_000) {
|
|
15
|
+
return execFileSync('tmux', args, {
|
|
16
|
+
encoding: 'utf-8',
|
|
17
|
+
timeout: timeoutMs,
|
|
18
|
+
env: TMUX_ENV,
|
|
19
|
+
}).trim();
|
|
20
|
+
}
|
|
21
|
+
/** Validate session name — alphanumeric, hyphens, underscores, dots only. */
|
|
22
|
+
function validateSessionName(name) {
|
|
23
|
+
if (!/^[a-zA-Z0-9_.-]+$/.test(name)) {
|
|
24
|
+
throw new Error(`Invalid session name: "${name}". Only alphanumeric, hyphens, underscores, and dots allowed.`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Check if a tmux session exists.
|
|
29
|
+
*/
|
|
30
|
+
function sessionExists(sessionName) {
|
|
31
|
+
try {
|
|
32
|
+
runTmux(['has-session', '-t', sessionName]);
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** Tool names provided by this override module. */
|
|
40
|
+
export const tmuxOverrideNames = [
|
|
41
|
+
'tmux_send_keys',
|
|
42
|
+
'tmux_capture_pane',
|
|
43
|
+
'tmux_start_session',
|
|
44
|
+
'tmux_list_sessions',
|
|
45
|
+
'tmux_kill_session',
|
|
46
|
+
];
|
|
47
|
+
export function registerTmuxOverrides(server, _ctx) {
|
|
48
|
+
// ── tmux_send_keys ───────────────────────────────────────────────────
|
|
49
|
+
strictTool(server, 'tmux_send_keys', 'Send keystrokes to a tmux session. Supports text input and special keys like Enter, Escape, Up, Down, Left, Right, C-c (Ctrl+C), Tab, BSpace, etc. Use this to interact with interactive CLI menus and prompts.', {
|
|
50
|
+
session: z.string().describe('Tmux session name to send keys to'),
|
|
51
|
+
keys: z.string().describe('Keys to send. Text is sent literally; special keys: Enter, Escape, Up, Down, Left, Right, C-c, C-d, Tab, BSpace, Space, Home, End, PPage, NPage'),
|
|
52
|
+
literal: z.boolean().optional().describe('If true, send keys as literal text (disables special key lookup). Default false.'),
|
|
53
|
+
delay_ms: z.number().optional().describe('Milliseconds to wait after sending keys before returning (default 100). Useful to let the UI render.'),
|
|
54
|
+
}, async (params) => {
|
|
55
|
+
try {
|
|
56
|
+
validateSessionName(params.session);
|
|
57
|
+
if (!sessionExists(params.session)) {
|
|
58
|
+
return errorResponse(new Error(`Tmux session not found: ${params.session}`));
|
|
59
|
+
}
|
|
60
|
+
const args = ['send-keys', '-t', params.session];
|
|
61
|
+
if (params.literal)
|
|
62
|
+
args.push('-l');
|
|
63
|
+
args.push(params.keys);
|
|
64
|
+
runTmux(args);
|
|
65
|
+
// Wait for UI to render
|
|
66
|
+
const delay = Math.min(params.delay_ms ?? 100, 30_000);
|
|
67
|
+
if (delay > 0) {
|
|
68
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
69
|
+
}
|
|
70
|
+
return successResponse({ sent: params.keys, session: params.session });
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
return errorResponse(error);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
// ── tmux_capture_pane ────────────────────────────────────────────────
|
|
77
|
+
strictTool(server, 'tmux_capture_pane', 'Capture the current visible content of a tmux pane. Returns the terminal screen text, useful for reading CLI output, menu states, error messages, and interactive prompt displays.', {
|
|
78
|
+
session: z.string().describe('Tmux session name to capture from'),
|
|
79
|
+
start_line: z.number().optional().describe('Start line for capture (negative = scrollback). Default: beginning of visible pane.'),
|
|
80
|
+
end_line: z.number().optional().describe('End line for capture. Default: end of visible pane.'),
|
|
81
|
+
escape_sequences: z.boolean().optional().describe('If true, include ANSI escape sequences in output. Default false (plain text).'),
|
|
82
|
+
}, async (params) => {
|
|
83
|
+
try {
|
|
84
|
+
validateSessionName(params.session);
|
|
85
|
+
if (!sessionExists(params.session)) {
|
|
86
|
+
return errorResponse(new Error(`Tmux session not found: ${params.session}`));
|
|
87
|
+
}
|
|
88
|
+
const args = ['capture-pane', '-t', params.session, '-p'];
|
|
89
|
+
if (params.escape_sequences)
|
|
90
|
+
args.push('-e');
|
|
91
|
+
if (params.start_line !== undefined)
|
|
92
|
+
args.push('-S', String(params.start_line));
|
|
93
|
+
if (params.end_line !== undefined)
|
|
94
|
+
args.push('-E', String(params.end_line));
|
|
95
|
+
const content = runTmux(args);
|
|
96
|
+
return successResponse({
|
|
97
|
+
session: params.session,
|
|
98
|
+
content,
|
|
99
|
+
lines: content.split('\n').length,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
return errorResponse(error);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
// ── tmux_start_session ───────────────────────────────────────────────
|
|
107
|
+
strictTool(server, 'tmux_start_session', 'Start a new tmux session, optionally running a command inside it. Use this to launch a CLI session for exploratory testing.', {
|
|
108
|
+
session: z.string().describe('Name for the new tmux session'),
|
|
109
|
+
command: z.string().optional().describe('Command to run in the session (e.g., "prlt" to launch the CLI)'),
|
|
110
|
+
width: z.number().optional().describe('Terminal width in columns (default 120)'),
|
|
111
|
+
height: z.number().optional().describe('Terminal height in rows (default 40)'),
|
|
112
|
+
}, async (params) => {
|
|
113
|
+
try {
|
|
114
|
+
validateSessionName(params.session);
|
|
115
|
+
if (sessionExists(params.session)) {
|
|
116
|
+
return errorResponse(new Error(`Tmux session already exists: ${params.session}`));
|
|
117
|
+
}
|
|
118
|
+
const width = params.width ?? 120;
|
|
119
|
+
const height = params.height ?? 40;
|
|
120
|
+
const args = ['new-session', '-d', '-s', params.session, '-x', String(width), '-y', String(height)];
|
|
121
|
+
if (params.command)
|
|
122
|
+
args.push(params.command);
|
|
123
|
+
runTmux(args);
|
|
124
|
+
// Give the session a moment to initialize
|
|
125
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
126
|
+
return successResponse({
|
|
127
|
+
session: params.session,
|
|
128
|
+
width,
|
|
129
|
+
height,
|
|
130
|
+
command: params.command || '(default shell)',
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
return errorResponse(error);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
// ── tmux_list_sessions ───────────────────────────────────────────────
|
|
138
|
+
strictTool(server, 'tmux_list_sessions', 'List all active tmux sessions with their status and dimensions.', {}, async () => {
|
|
139
|
+
try {
|
|
140
|
+
let output;
|
|
141
|
+
try {
|
|
142
|
+
output = runTmux(['list-sessions', '-F', '#{session_name}|#{session_width}|#{session_height}|#{session_windows}|#{session_created}']);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// No sessions running
|
|
146
|
+
return successResponse({ sessions: [] });
|
|
147
|
+
}
|
|
148
|
+
const sessions = output.split('\n').filter(Boolean).map((line) => {
|
|
149
|
+
const [name, width, height, windows, created] = line.split('|');
|
|
150
|
+
return {
|
|
151
|
+
name,
|
|
152
|
+
width: parseInt(width, 10),
|
|
153
|
+
height: parseInt(height, 10),
|
|
154
|
+
windows: parseInt(windows, 10),
|
|
155
|
+
created: new Date(parseInt(created, 10) * 1000).toISOString(),
|
|
156
|
+
};
|
|
157
|
+
});
|
|
158
|
+
return successResponse({ sessions });
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
return errorResponse(error);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
// ── tmux_kill_session ────────────────────────────────────────────────
|
|
165
|
+
strictTool(server, 'tmux_kill_session', 'Kill (terminate) a tmux session and all processes running in it.', {
|
|
166
|
+
session: z.string().describe('Name of the tmux session to kill'),
|
|
167
|
+
}, async (params) => {
|
|
168
|
+
try {
|
|
169
|
+
validateSessionName(params.session);
|
|
170
|
+
if (!sessionExists(params.session)) {
|
|
171
|
+
return errorResponse(new Error(`Tmux session not found: ${params.session}`));
|
|
172
|
+
}
|
|
173
|
+
runTmux(['kill-session', '-t', params.session]);
|
|
174
|
+
return successResponse({
|
|
175
|
+
killed: params.session,
|
|
176
|
+
message: `Session "${params.session}" terminated`,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
return errorResponse(error);
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=tmux.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../../../../src/lib/mcp/tools/overrides/tmux.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Work Start Override
|
|
3
|
+
*
|
|
4
|
+
* The work_start tool requires in-process workspace context for agent spawning
|
|
5
|
+
* (ephemeral agent creation, execution storage, etc.), so it cannot be
|
|
6
|
+
* auto-generated as a simple CLI passthrough.
|
|
7
|
+
*/
|
|
8
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
9
|
+
import type { McpToolContext } from '../../types.js';
|
|
10
|
+
/** Tool names provided by this override module. */
|
|
11
|
+
export declare const workStartOverrideNames: string[];
|
|
12
|
+
export declare function registerWorkStartOverride(server: McpServer, ctx: McpToolContext): void;
|