@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
|
@@ -20,7 +20,7 @@ export { CREATE_TABLES_SQL } from './workspace-schema.js';
|
|
|
20
20
|
// Workspace lifecycle
|
|
21
21
|
export { withDrizzle, getDatabasePath, getConfigPath, openWorkspaceDatabase, openWorkspaceDriver, createWorkspaceDatabase, getWorkspaceConfig, } from './workspace.js';
|
|
22
22
|
// Agent operations
|
|
23
|
-
export { addAgentsToDatabase, addEphemeralAgentToDatabase, tryAddEphemeralAgentToDatabase, getEphemeralAgentNames, removeEphemeralAgent, getWorkspaceAgents, getAgentByPath, markAgentCleaned, syncAgentsWithDisk, discoverAgentsOnDisk, removeAgentsFromDatabase, } from './agents.js';
|
|
23
|
+
export { RECYCLABLE_STATUSES, ACTIVE_STATUSES, addAgentsToDatabase, addEphemeralAgentToDatabase, tryAddEphemeralAgentToDatabase, getEphemeralAgentNames, removeEphemeralAgent, getWorkspaceAgents, getAgentByPath, getAgent, markAgentCleaned, markAgentRunning, markAgentCompleted, markAgentDead, reactivateAgent, pruneAgentRecords, syncAgentsWithDisk, discoverAgentsOnDisk, removeAgentsFromDatabase, } from './agents.js';
|
|
24
24
|
// Repository operations
|
|
25
25
|
export { addRepositoriesToDatabase, getWorkspaceRepositories, } from './repositories.js';
|
|
26
26
|
// Theme operations
|
|
@@ -35,6 +35,8 @@ export { checkPMOExists, getPMOSetting, dropPMOTables, upsertWorkspaceSetting, }
|
|
|
35
35
|
export { BetterSqlite3Driver, wrapDatabase, openDriver, getRawDatabase, } from './driver.js';
|
|
36
36
|
// Settings store
|
|
37
37
|
export { SettingsStore, createSettingsStore, } from './settings-store.js';
|
|
38
|
+
// Credential store (PRLT-1114: agent secret isolation)
|
|
39
|
+
export { isCredentialKey, getCredentialDatabasePath, getCredential, setCredential, deleteCredential, hasCredential, closeAllCredentialStores, migrateCredentials, } from './credential-store.js';
|
|
38
40
|
// Database safety (WAL, backup, integrity, repair)
|
|
39
41
|
export { enableWALMode, createRotatingBackup, checkIntegrity, quickCheckIntegrity, repairDatabase, getBackupPath, } from './db-safety.js';
|
|
40
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/database/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,0DAA0D;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAEzD,sBAAsB;AACtB,OAAO,EAEL,WAAW,EACX,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AAEvB,mBAAmB;AACnB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/database/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,0DAA0D;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAEzD,sBAAsB;AACtB,OAAO,EAEL,WAAW,EACX,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AAEvB,mBAAmB;AACnB,OAAO,EAQL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,8BAA8B,EAC9B,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,aAAa,CAAA;AAEpB,wBAAwB;AACxB,OAAO,EAEL,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,mBAAmB,CAAA;AAE1B,mBAAmB;AACnB,OAAO,EAGL,cAAc,EACd,cAAc,EACd,SAAS,EACT,QAAQ,EACR,WAAW,EACX,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,aAAa,GACd,MAAM,aAAa,CAAA;AAEpB,sBAAsB;AACtB,OAAO,EAEL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AAEvB,wBAAwB;AACxB,OAAO,EAEL,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,2BAA2B,GAC5B,MAAM,YAAY,CAAA;AAEnB,2BAA2B;AAC3B,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAE3B,8BAA8B;AAC9B,OAAO,EAIL,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,cAAc,GACf,MAAM,aAAa,CAAA;AAEpB,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,qBAAqB,CAAA;AAE5B,uDAAuD;AACvD,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,uBAAuB,CAAA;AAE9B,mDAAmD;AACnD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,aAAa,GAGd,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 0013 — Add agent lifecycle states
|
|
3
|
+
*
|
|
4
|
+
* Extends the agents.status column to support lifecycle states:
|
|
5
|
+
* 'active', 'running', 'completed', 'dead', 'cleaned'
|
|
6
|
+
*
|
|
7
|
+
* SQLite doesn't support ALTER CHECK constraints directly,
|
|
8
|
+
* so we recreate the table with the new constraint.
|
|
9
|
+
*/
|
|
10
|
+
import type { Migration } from '../migrator.js';
|
|
11
|
+
export declare const agentLifecycleStates: Migration;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 0013 — Add agent lifecycle states
|
|
3
|
+
*
|
|
4
|
+
* Extends the agents.status column to support lifecycle states:
|
|
5
|
+
* 'active', 'running', 'completed', 'dead', 'cleaned'
|
|
6
|
+
*
|
|
7
|
+
* SQLite doesn't support ALTER CHECK constraints directly,
|
|
8
|
+
* so we recreate the table with the new constraint.
|
|
9
|
+
*/
|
|
10
|
+
export const agentLifecycleStates = {
|
|
11
|
+
id: '0013',
|
|
12
|
+
name: 'agent_lifecycle_states',
|
|
13
|
+
up: (db) => {
|
|
14
|
+
// SQLite doesn't support modifying CHECK constraints, so we need to
|
|
15
|
+
// recreate the table. We use a migration-safe approach:
|
|
16
|
+
// 1. Create new table with updated constraint
|
|
17
|
+
// 2. Copy data
|
|
18
|
+
// 3. Drop old table
|
|
19
|
+
// 4. Rename new table
|
|
20
|
+
db.exec(`
|
|
21
|
+
CREATE TABLE IF NOT EXISTS agents_new (
|
|
22
|
+
name TEXT PRIMARY KEY,
|
|
23
|
+
type TEXT NOT NULL DEFAULT 'persistent' CHECK (type IN ('persistent', 'ephemeral')),
|
|
24
|
+
status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'running', 'completed', 'dead', 'cleaned')),
|
|
25
|
+
base_name TEXT,
|
|
26
|
+
theme_id TEXT,
|
|
27
|
+
worktree_path TEXT,
|
|
28
|
+
mount_mode TEXT NOT NULL DEFAULT 'worktree' CHECK (mount_mode IN ('worktree', 'clone')),
|
|
29
|
+
created_at TEXT NOT NULL,
|
|
30
|
+
cleaned_at TEXT,
|
|
31
|
+
FOREIGN KEY (theme_id) REFERENCES agent_themes(id) ON DELETE SET NULL
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
INSERT OR IGNORE INTO agents_new (name, type, status, base_name, theme_id, worktree_path, mount_mode, created_at, cleaned_at)
|
|
35
|
+
SELECT name, type, status, base_name, theme_id, worktree_path, mount_mode, created_at, cleaned_at
|
|
36
|
+
FROM agents;
|
|
37
|
+
|
|
38
|
+
DROP TABLE agents;
|
|
39
|
+
|
|
40
|
+
ALTER TABLE agents_new RENAME TO agents;
|
|
41
|
+
|
|
42
|
+
CREATE INDEX IF NOT EXISTS idx_agents_theme ON agents(theme_id);
|
|
43
|
+
CREATE INDEX IF NOT EXISTS idx_agents_status ON agents(status);
|
|
44
|
+
`);
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=0013_agent_lifecycle_states.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0013_agent_lifecycle_states.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0013_agent_lifecycle_states.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,CAAC,MAAM,oBAAoB,GAAc;IAC7C,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,wBAAwB;IAC9B,EAAE,EAAE,CAAC,EAAqB,EAAE,EAAE;QAC5B,oEAAoE;QACpE,wDAAwD;QACxD,8CAA8C;QAC9C,eAAe;QACf,oBAAoB;QACpB,sBAAsB;QAEtB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;KAwBP,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 0014 — Agent Work Lifecycle States
|
|
3
|
+
*
|
|
4
|
+
* Adds lifecycle tracking columns to agent_work for the orchestrate daemon.
|
|
5
|
+
* - last_heartbeat: tracks when the agent last reported activity
|
|
6
|
+
* - retries: tracks respawn attempts for on_agent_died hooks
|
|
7
|
+
* - lifecycle_state: high-level state (healthy, idle, died, completed)
|
|
8
|
+
*/
|
|
9
|
+
import type { Migration } from '../migrator.js';
|
|
10
|
+
export declare const agentWorkLifecycle: Migration;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 0014 — Agent Work Lifecycle States
|
|
3
|
+
*
|
|
4
|
+
* Adds lifecycle tracking columns to agent_work for the orchestrate daemon.
|
|
5
|
+
* - last_heartbeat: tracks when the agent last reported activity
|
|
6
|
+
* - retries: tracks respawn attempts for on_agent_died hooks
|
|
7
|
+
* - lifecycle_state: high-level state (healthy, idle, died, completed)
|
|
8
|
+
*/
|
|
9
|
+
export const agentWorkLifecycle = {
|
|
10
|
+
id: '0014',
|
|
11
|
+
name: 'agent_work_lifecycle',
|
|
12
|
+
up: (db) => {
|
|
13
|
+
const tableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agent_work'").get();
|
|
14
|
+
if (!tableExists)
|
|
15
|
+
return;
|
|
16
|
+
const tableInfo = db.prepare("PRAGMA table_info(agent_work)").all();
|
|
17
|
+
const existingCols = new Set(tableInfo.map(col => col.name));
|
|
18
|
+
if (!existingCols.has('last_heartbeat')) {
|
|
19
|
+
db.exec("ALTER TABLE agent_work ADD COLUMN last_heartbeat TEXT");
|
|
20
|
+
}
|
|
21
|
+
if (!existingCols.has('retries')) {
|
|
22
|
+
db.exec("ALTER TABLE agent_work ADD COLUMN retries INTEGER NOT NULL DEFAULT 0");
|
|
23
|
+
}
|
|
24
|
+
if (!existingCols.has('lifecycle_state')) {
|
|
25
|
+
db.exec("ALTER TABLE agent_work ADD COLUMN lifecycle_state TEXT DEFAULT 'healthy' CHECK (lifecycle_state IN ('healthy', 'idle', 'died', 'completed'))");
|
|
26
|
+
}
|
|
27
|
+
// Index for lifecycle state queries (used by orchestrate polling)
|
|
28
|
+
db.exec("CREATE INDEX IF NOT EXISTS idx_agent_work_lifecycle ON agent_work(lifecycle_state, status)");
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=0014_agent_work_lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0014_agent_work_lifecycle.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0014_agent_work_lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,sBAAsB;IAC5B,EAAE,EAAE,CAAC,EAAqB,EAAE,EAAE;QAC5B,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,yEAAyE,CAC1E,CAAC,GAAG,EAAE,CAAA;QACP,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,GAAG,EAAwB,CAAA;QACzF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QAE5D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxC,EAAE,CAAC,IAAI,CACL,uDAAuD,CACxD,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,IAAI,CACL,sEAAsE,CACvE,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACzC,EAAE,CAAC,IAAI,CACL,8IAA8I,CAC/I,CAAA;QACH,CAAC;QAED,kEAAkE;QAClE,EAAE,CAAC,IAAI,CACL,4FAA4F,CAC7F,CAAA;IACH,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 0015 — Orchestrate Hooks
|
|
3
|
+
*
|
|
4
|
+
* Extends pmo_work_hooks with mode (auto/confirm/notify/off), priority,
|
|
5
|
+
* project_id, source, and config columns for the orchestrate daemon.
|
|
6
|
+
*/
|
|
7
|
+
import type { Migration } from '../migrator.js';
|
|
8
|
+
export declare const orchestrateHooks: Migration;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 0015 — Orchestrate Hooks
|
|
3
|
+
*
|
|
4
|
+
* Extends pmo_work_hooks with mode (auto/confirm/notify/off), priority,
|
|
5
|
+
* project_id, source, and config columns for the orchestrate daemon.
|
|
6
|
+
*/
|
|
7
|
+
export const orchestrateHooks = {
|
|
8
|
+
id: '0015',
|
|
9
|
+
name: 'orchestrate_hooks',
|
|
10
|
+
up: (db) => {
|
|
11
|
+
const tableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='pmo_work_hooks'").get();
|
|
12
|
+
if (!tableExists)
|
|
13
|
+
return;
|
|
14
|
+
const tableInfo = db.prepare("PRAGMA table_info(pmo_work_hooks)").all();
|
|
15
|
+
const existingCols = new Set(tableInfo.map(col => col.name));
|
|
16
|
+
if (!existingCols.has('mode')) {
|
|
17
|
+
db.exec("ALTER TABLE pmo_work_hooks ADD COLUMN mode TEXT NOT NULL DEFAULT 'auto' CHECK (mode IN ('auto', 'confirm', 'notify', 'off'))");
|
|
18
|
+
}
|
|
19
|
+
if (!existingCols.has('priority')) {
|
|
20
|
+
db.exec("ALTER TABLE pmo_work_hooks ADD COLUMN priority INTEGER NOT NULL DEFAULT 0");
|
|
21
|
+
}
|
|
22
|
+
if (!existingCols.has('project_id')) {
|
|
23
|
+
db.exec("ALTER TABLE pmo_work_hooks ADD COLUMN project_id TEXT");
|
|
24
|
+
}
|
|
25
|
+
if (!existingCols.has('source')) {
|
|
26
|
+
db.exec("ALTER TABLE pmo_work_hooks ADD COLUMN source TEXT NOT NULL DEFAULT 'cli' CHECK (source IN ('yaml', 'cli', 'preset'))");
|
|
27
|
+
}
|
|
28
|
+
if (!existingCols.has('config')) {
|
|
29
|
+
db.exec("ALTER TABLE pmo_work_hooks ADD COLUMN config TEXT");
|
|
30
|
+
}
|
|
31
|
+
// Create index for priority-ordered lookup
|
|
32
|
+
db.exec("CREATE INDEX IF NOT EXISTS idx_pmo_work_hooks_priority ON pmo_work_hooks(event, priority)");
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=0015_orchestrate_hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0015_orchestrate_hooks.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0015_orchestrate_hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,gBAAgB,GAAc;IACzC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,mBAAmB;IACzB,EAAE,EAAE,CAAC,EAAqB,EAAE,EAAE;QAC5B,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,6EAA6E,CAC9E,CAAC,GAAG,EAAE,CAAA;QACP,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EAAwB,CAAA;QAC7F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QAE5D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,IAAI,CACL,8HAA8H,CAC/H,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,EAAE,CAAC,IAAI,CACL,2EAA2E,CAC5E,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,EAAE,CAAC,IAAI,CACL,uDAAuD,CACxD,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,EAAE,CAAC,IAAI,CACL,sHAAsH,CACvH,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,EAAE,CAAC,IAAI,CACL,mDAAmD,CACpD,CAAA;QACH,CAAC;QAED,2CAA2C;QAC3C,EAAE,CAAC,IAAI,CACL,2FAA2F,CAC5F,CAAA;IACH,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 0016 — Idempotent Schema Catch-up
|
|
3
|
+
*
|
|
4
|
+
* Brings ANY schema version up to the current state. Safe to run on:
|
|
5
|
+
* - A fresh (empty) database
|
|
6
|
+
* - A database from v0.3.80 or earlier
|
|
7
|
+
* - An already-current database (no-op)
|
|
8
|
+
*
|
|
9
|
+
* Strategy:
|
|
10
|
+
* 1. CREATE TABLE IF NOT EXISTS for every table (no indexes yet)
|
|
11
|
+
* 2. PRAGMA table_info() checks + ALTER TABLE ADD COLUMN for missing columns
|
|
12
|
+
* 3. CREATE INDEX IF NOT EXISTS for all indexes (columns now guaranteed to exist)
|
|
13
|
+
*/
|
|
14
|
+
import type { Migration } from '../migrator.js';
|
|
15
|
+
export declare const schemaCatchup: Migration;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 0016 — Idempotent Schema Catch-up
|
|
3
|
+
*
|
|
4
|
+
* Brings ANY schema version up to the current state. Safe to run on:
|
|
5
|
+
* - A fresh (empty) database
|
|
6
|
+
* - A database from v0.3.80 or earlier
|
|
7
|
+
* - An already-current database (no-op)
|
|
8
|
+
*
|
|
9
|
+
* Strategy:
|
|
10
|
+
* 1. CREATE TABLE IF NOT EXISTS for every table (no indexes yet)
|
|
11
|
+
* 2. PRAGMA table_info() checks + ALTER TABLE ADD COLUMN for missing columns
|
|
12
|
+
* 3. CREATE INDEX IF NOT EXISTS for all indexes (columns now guaranteed to exist)
|
|
13
|
+
*/
|
|
14
|
+
import { CREATE_TABLES_SQL } from '../workspace-schema.js';
|
|
15
|
+
import { PMO_TABLE_SCHEMAS, PMO_INDEXES } from '../../pmo/schema.js';
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
// Helpers
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
function getColumns(db, table) {
|
|
20
|
+
const rows = db.prepare(`PRAGMA table_info('${table}')`).all();
|
|
21
|
+
return new Set(rows.map(r => r.name));
|
|
22
|
+
}
|
|
23
|
+
function hasTable(db, table) {
|
|
24
|
+
const row = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=?").get(table);
|
|
25
|
+
return !!row;
|
|
26
|
+
}
|
|
27
|
+
function addColumnIfMissing(db, table, column, definition, cols) {
|
|
28
|
+
if (!cols.has(column)) {
|
|
29
|
+
db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// Migration
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
export const schemaCatchup = {
|
|
36
|
+
id: '0016',
|
|
37
|
+
name: 'schema_catchup',
|
|
38
|
+
up(db) {
|
|
39
|
+
// =======================================================================
|
|
40
|
+
// 1. Ensure every table exists (CREATE TABLE IF NOT EXISTS — no-op when
|
|
41
|
+
// the table already exists). Run table creation BEFORE indexes so that
|
|
42
|
+
// missing columns can be added in step 2.
|
|
43
|
+
// =======================================================================
|
|
44
|
+
// Core workspace tables (includes its own indexes using IF NOT EXISTS,
|
|
45
|
+
// but workspace-schema indexes only reference columns from their own
|
|
46
|
+
// CREATE TABLE, so they're safe to run here).
|
|
47
|
+
db.exec(CREATE_TABLES_SQL);
|
|
48
|
+
// PMO tables — create each individually WITHOUT indexes.
|
|
49
|
+
// PMO_INDEXES reference columns that may not exist yet on old tables.
|
|
50
|
+
for (const sql of Object.values(PMO_TABLE_SCHEMAS)) {
|
|
51
|
+
db.exec(sql);
|
|
52
|
+
}
|
|
53
|
+
// =======================================================================
|
|
54
|
+
// 2. Back-fill missing columns on tables that may predate later changes.
|
|
55
|
+
// Each block checks table existence first (for truly empty DBs where
|
|
56
|
+
// step 1 already created the full table, this is a no-op).
|
|
57
|
+
// =======================================================================
|
|
58
|
+
// --- agents ---
|
|
59
|
+
if (hasTable(db, 'agents')) {
|
|
60
|
+
const cols = getColumns(db, 'agents');
|
|
61
|
+
addColumnIfMissing(db, 'agents', 'base_name', 'TEXT', cols);
|
|
62
|
+
addColumnIfMissing(db, 'agents', 'mount_mode', "TEXT NOT NULL DEFAULT 'worktree'", cols);
|
|
63
|
+
addColumnIfMissing(db, 'agents', 'cleaned_at', 'TEXT', cols);
|
|
64
|
+
}
|
|
65
|
+
// --- agent_worktrees ---
|
|
66
|
+
if (hasTable(db, 'agent_worktrees')) {
|
|
67
|
+
const cols = getColumns(db, 'agent_worktrees');
|
|
68
|
+
addColumnIfMissing(db, 'agent_worktrees', 'last_commit_hash', 'TEXT', cols);
|
|
69
|
+
addColumnIfMissing(db, 'agent_worktrees', 'commits_ahead', 'INTEGER NOT NULL DEFAULT 0', cols);
|
|
70
|
+
addColumnIfMissing(db, 'agent_worktrees', 'is_clean', 'INTEGER NOT NULL DEFAULT 1', cols);
|
|
71
|
+
addColumnIfMissing(db, 'agent_worktrees', 'last_checked', 'TEXT', cols);
|
|
72
|
+
}
|
|
73
|
+
// --- pmo_tickets ---
|
|
74
|
+
if (hasTable(db, 'pmo_tickets')) {
|
|
75
|
+
const cols = getColumns(db, 'pmo_tickets');
|
|
76
|
+
addColumnIfMissing(db, 'pmo_tickets', 'status_id', 'TEXT', cols);
|
|
77
|
+
addColumnIfMissing(db, 'pmo_tickets', 'position', 'INTEGER NOT NULL DEFAULT 0', cols);
|
|
78
|
+
addColumnIfMissing(db, 'pmo_tickets', 'epic_id', 'TEXT', cols);
|
|
79
|
+
addColumnIfMissing(db, 'pmo_tickets', 'labels', "TEXT NOT NULL DEFAULT '[]'", cols);
|
|
80
|
+
addColumnIfMissing(db, 'pmo_tickets', 'last_synced_from_spec', 'TIMESTAMP', cols);
|
|
81
|
+
addColumnIfMissing(db, 'pmo_tickets', 'last_synced_from_board', 'TIMESTAMP', cols);
|
|
82
|
+
}
|
|
83
|
+
// --- pmo_actions ---
|
|
84
|
+
if (hasTable(db, 'pmo_actions')) {
|
|
85
|
+
const cols = getColumns(db, 'pmo_actions');
|
|
86
|
+
addColumnIfMissing(db, 'pmo_actions', 'from_state', 'TEXT', cols);
|
|
87
|
+
addColumnIfMissing(db, 'pmo_actions', 'to_state', 'TEXT', cols);
|
|
88
|
+
addColumnIfMissing(db, 'pmo_actions', 'executor', 'TEXT', cols);
|
|
89
|
+
addColumnIfMissing(db, 'pmo_actions', 'environment', 'TEXT', cols);
|
|
90
|
+
addColumnIfMissing(db, 'pmo_actions', 'permission_mode', 'TEXT', cols);
|
|
91
|
+
addColumnIfMissing(db, 'pmo_actions', 'timeout', 'INTEGER', cols);
|
|
92
|
+
addColumnIfMissing(db, 'pmo_actions', 'model', 'TEXT', cols);
|
|
93
|
+
addColumnIfMissing(db, 'pmo_actions', 'is_default', 'INTEGER NOT NULL DEFAULT 0', cols);
|
|
94
|
+
addColumnIfMissing(db, 'pmo_actions', 'updated_at', 'TIMESTAMP', cols);
|
|
95
|
+
addColumnIfMissing(db, 'pmo_actions', 'review_gate', 'TEXT', cols);
|
|
96
|
+
addColumnIfMissing(db, 'pmo_actions', 'network_allowlist', 'TEXT', cols);
|
|
97
|
+
}
|
|
98
|
+
// --- agent_work ---
|
|
99
|
+
if (hasTable(db, 'agent_work')) {
|
|
100
|
+
const cols = getColumns(db, 'agent_work');
|
|
101
|
+
addColumnIfMissing(db, 'agent_work', 'session_id', 'TEXT', cols);
|
|
102
|
+
addColumnIfMissing(db, 'agent_work', 'host', 'TEXT', cols);
|
|
103
|
+
addColumnIfMissing(db, 'agent_work', 'external_source', 'TEXT', cols);
|
|
104
|
+
addColumnIfMissing(db, 'agent_work', 'external_key', 'TEXT', cols);
|
|
105
|
+
addColumnIfMissing(db, 'agent_work', 'external_id', 'TEXT', cols);
|
|
106
|
+
addColumnIfMissing(db, 'agent_work', 'external_url', 'TEXT', cols);
|
|
107
|
+
addColumnIfMissing(db, 'agent_work', 'cleanup_policy', "TEXT NOT NULL DEFAULT 'on-exit'", cols);
|
|
108
|
+
addColumnIfMissing(db, 'agent_work', 'last_heartbeat', 'TEXT', cols);
|
|
109
|
+
addColumnIfMissing(db, 'agent_work', 'retries', 'INTEGER DEFAULT 0', cols);
|
|
110
|
+
addColumnIfMissing(db, 'agent_work', 'lifecycle_state', "TEXT DEFAULT 'healthy'", cols);
|
|
111
|
+
}
|
|
112
|
+
// --- pmo_work_hooks ---
|
|
113
|
+
if (hasTable(db, 'pmo_work_hooks')) {
|
|
114
|
+
const cols = getColumns(db, 'pmo_work_hooks');
|
|
115
|
+
addColumnIfMissing(db, 'pmo_work_hooks', 'mode', "TEXT DEFAULT 'auto'", cols);
|
|
116
|
+
addColumnIfMissing(db, 'pmo_work_hooks', 'priority', 'INTEGER DEFAULT 0', cols);
|
|
117
|
+
addColumnIfMissing(db, 'pmo_work_hooks', 'project_id', 'TEXT', cols);
|
|
118
|
+
addColumnIfMissing(db, 'pmo_work_hooks', 'source', "TEXT DEFAULT 'cli'", cols);
|
|
119
|
+
addColumnIfMissing(db, 'pmo_work_hooks', 'config', 'TEXT', cols);
|
|
120
|
+
}
|
|
121
|
+
// --- pmo_projects ---
|
|
122
|
+
if (hasTable(db, 'pmo_projects')) {
|
|
123
|
+
const cols = getColumns(db, 'pmo_projects');
|
|
124
|
+
addColumnIfMissing(db, 'pmo_projects', 'phase_id', 'TEXT', cols);
|
|
125
|
+
addColumnIfMissing(db, 'pmo_projects', 'workflow_id', 'TEXT', cols);
|
|
126
|
+
addColumnIfMissing(db, 'pmo_projects', 'is_archived', 'INTEGER NOT NULL DEFAULT 0', cols);
|
|
127
|
+
addColumnIfMissing(db, 'pmo_projects', 'target_date', 'TIMESTAMP', cols);
|
|
128
|
+
addColumnIfMissing(db, 'pmo_projects', 'initiative_id', 'TEXT', cols);
|
|
129
|
+
}
|
|
130
|
+
// --- pmo_epics ---
|
|
131
|
+
if (hasTable(db, 'pmo_epics')) {
|
|
132
|
+
const cols = getColumns(db, 'pmo_epics');
|
|
133
|
+
addColumnIfMissing(db, 'pmo_epics', 'file_path', 'TEXT', cols);
|
|
134
|
+
addColumnIfMissing(db, 'pmo_epics', 'spec_id', 'TEXT', cols);
|
|
135
|
+
}
|
|
136
|
+
// --- containers ---
|
|
137
|
+
if (hasTable(db, 'containers')) {
|
|
138
|
+
const cols = getColumns(db, 'containers');
|
|
139
|
+
addColumnIfMissing(db, 'containers', 'docker_name', 'TEXT', cols);
|
|
140
|
+
addColumnIfMissing(db, 'containers', 'image', 'TEXT', cols);
|
|
141
|
+
addColumnIfMissing(db, 'containers', 'current_execution_id', 'TEXT', cols);
|
|
142
|
+
addColumnIfMissing(db, 'containers', 'last_seen_at', 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP', cols);
|
|
143
|
+
}
|
|
144
|
+
// =======================================================================
|
|
145
|
+
// 3. Create all indexes (now safe — all columns are guaranteed to exist)
|
|
146
|
+
// =======================================================================
|
|
147
|
+
// PMO indexes (covers most tables)
|
|
148
|
+
db.exec(PMO_INDEXES);
|
|
149
|
+
// Migration-added indexes not in PMO_INDEXES
|
|
150
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_agent_work_lifecycle ON agent_work(lifecycle_state, status)');
|
|
151
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_pmo_work_hooks_priority ON pmo_work_hooks(event, priority)');
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=0016_schema_catchup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0016_schema_catchup.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0016_schema_catchup.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,10 @@ import { createMediaItems } from './0009_create_media_items.js';
|
|
|
16
16
|
import { addTicketPosition } from './0010_add_ticket_position.js';
|
|
17
17
|
import { addReviewGate } from './0011_add_review_gate.js';
|
|
18
18
|
import { addActionNetworkAllowlist } from './0012_add_action_network_allowlist.js';
|
|
19
|
+
import { agentLifecycleStates } from './0013_agent_lifecycle_states.js';
|
|
20
|
+
import { agentWorkLifecycle } from './0014_agent_work_lifecycle.js';
|
|
21
|
+
import { orchestrateHooks } from './0015_orchestrate_hooks.js';
|
|
22
|
+
import { schemaCatchup } from './0016_schema_catchup.js';
|
|
19
23
|
/**
|
|
20
24
|
* Ordered list of all migrations.
|
|
21
25
|
* New migrations should be appended to the end of this array.
|
|
@@ -33,5 +37,9 @@ export const ALL_MIGRATIONS = [
|
|
|
33
37
|
addTicketPosition,
|
|
34
38
|
addReviewGate,
|
|
35
39
|
addActionNetworkAllowlist,
|
|
40
|
+
agentLifecycleStates,
|
|
41
|
+
agentWorkLifecycle,
|
|
42
|
+
orchestrateHooks,
|
|
43
|
+
schemaCatchup,
|
|
36
44
|
];
|
|
37
45
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,QAAQ;IACR,SAAS;IACT,eAAe;IACf,aAAa;IACb,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,aAAa;IACb,yBAAyB;IACzB,oBAAoB;IACpB,kBAAkB;IAClB,gBAAgB;IAChB,aAAa;CACd,CAAA"}
|
|
@@ -3,6 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Raw SQL operations required for PMO initialization and teardown.
|
|
5
5
|
* These run before the storage layer is available.
|
|
6
|
+
*
|
|
7
|
+
* All database opens go through openSafeDatabase() which provides:
|
|
8
|
+
* - Rotating backup before open
|
|
9
|
+
* - Quick integrity check on startup
|
|
10
|
+
* - Auto-repair on corruption (dump/reimport or backup restore)
|
|
11
|
+
*
|
|
12
|
+
* See: PRLT-1152
|
|
6
13
|
*/
|
|
7
14
|
import Database from 'better-sqlite3';
|
|
8
15
|
/**
|
|
@@ -3,24 +3,63 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Raw SQL operations required for PMO initialization and teardown.
|
|
5
5
|
* These run before the storage layer is available.
|
|
6
|
+
*
|
|
7
|
+
* All database opens go through openSafeDatabase() which provides:
|
|
8
|
+
* - Rotating backup before open
|
|
9
|
+
* - Quick integrity check on startup
|
|
10
|
+
* - Auto-repair on corruption (dump/reimport or backup restore)
|
|
11
|
+
*
|
|
12
|
+
* See: PRLT-1152
|
|
6
13
|
*/
|
|
7
14
|
import Database from 'better-sqlite3';
|
|
8
15
|
import { throwIfNativeBindingError } from './native-validation.js';
|
|
9
16
|
import { createDrizzleConnection } from './drizzle.js';
|
|
10
17
|
import { workspaceSettings as workspaceSettingsTable, } from './drizzle-schema.js';
|
|
18
|
+
import { createRotatingBackup, quickCheckIntegrity, repairDatabase, } from './db-safety.js';
|
|
11
19
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
20
|
+
* Open a database connection with safety features (backup, integrity check, auto-repair).
|
|
21
|
+
* Used by PMO bootstrap functions that need raw SQL access before the full workspace
|
|
22
|
+
* database lifecycle is available.
|
|
14
23
|
*/
|
|
15
|
-
|
|
24
|
+
function openSafeDatabase(dbPath, caller) {
|
|
25
|
+
// Create backup before opening (cheap insurance against corruption)
|
|
26
|
+
createRotatingBackup(dbPath);
|
|
16
27
|
let db;
|
|
17
28
|
try {
|
|
18
29
|
db = new Database(dbPath);
|
|
19
30
|
}
|
|
20
31
|
catch (error) {
|
|
21
|
-
throwIfNativeBindingError(error,
|
|
32
|
+
throwIfNativeBindingError(error, caller);
|
|
22
33
|
throw error;
|
|
23
34
|
}
|
|
35
|
+
// Quick integrity check — auto-repair if corrupt
|
|
36
|
+
const integrity = quickCheckIntegrity(db);
|
|
37
|
+
if (!integrity.ok) {
|
|
38
|
+
db.close();
|
|
39
|
+
const repair = repairDatabase(dbPath);
|
|
40
|
+
if (!repair.success) {
|
|
41
|
+
throw new Error(`Database corruption detected in ${dbPath}.\n` +
|
|
42
|
+
`Integrity errors: ${integrity.errors.join('; ')}\n` +
|
|
43
|
+
`Auto-repair failed: ${repair.message}\n` +
|
|
44
|
+
`Run 'prlt db repair' for manual recovery options.`);
|
|
45
|
+
}
|
|
46
|
+
// Re-open the repaired database
|
|
47
|
+
try {
|
|
48
|
+
db = new Database(dbPath);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
throwIfNativeBindingError(error, `${caller} (post-repair)`);
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return db;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Check if PMO tables exist and get basic stats.
|
|
59
|
+
* Raw SQL: uses sqlite_master introspection (pre-migration bootstrap).
|
|
60
|
+
*/
|
|
61
|
+
export function checkPMOExists(dbPath) {
|
|
62
|
+
const db = openSafeDatabase(dbPath, 'checkPMOExists');
|
|
24
63
|
try {
|
|
25
64
|
const result = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='pmo_projects'").get();
|
|
26
65
|
if (result === undefined) {
|
|
@@ -30,8 +69,8 @@ export function checkPMOExists(dbPath) {
|
|
|
30
69
|
const ticketCountResult = db.prepare('SELECT COUNT(*) as count FROM pmo_tickets').get();
|
|
31
70
|
return {
|
|
32
71
|
exists: true,
|
|
33
|
-
projectCount: projectCountResult
|
|
34
|
-
ticketCount: ticketCountResult
|
|
72
|
+
projectCount: projectCountResult?.count ?? 0,
|
|
73
|
+
ticketCount: ticketCountResult?.count ?? 0,
|
|
35
74
|
};
|
|
36
75
|
}
|
|
37
76
|
finally {
|
|
@@ -43,14 +82,7 @@ export function checkPMOExists(dbPath) {
|
|
|
43
82
|
* Raw SQL: pre-migration bootstrap query.
|
|
44
83
|
*/
|
|
45
84
|
export function getPMOSetting(dbPath, key) {
|
|
46
|
-
|
|
47
|
-
try {
|
|
48
|
-
db = new Database(dbPath);
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
throwIfNativeBindingError(error, 'getPMOSetting');
|
|
52
|
-
throw error;
|
|
53
|
-
}
|
|
85
|
+
const db = openSafeDatabase(dbPath, 'getPMOSetting');
|
|
54
86
|
try {
|
|
55
87
|
const result = db.prepare('SELECT value FROM pmo_settings WHERE key = ?').get(key);
|
|
56
88
|
return result?.value ?? null;
|
|
@@ -67,14 +99,7 @@ export function getPMOSetting(dbPath, key) {
|
|
|
67
99
|
* Raw SQL: DDL operations (DROP TABLE) are not supported by Drizzle.
|
|
68
100
|
*/
|
|
69
101
|
export function dropPMOTables(dbPath, tables) {
|
|
70
|
-
|
|
71
|
-
try {
|
|
72
|
-
db = new Database(dbPath);
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
throwIfNativeBindingError(error, 'dropPMOTables');
|
|
76
|
-
throw error;
|
|
77
|
-
}
|
|
102
|
+
const db = openSafeDatabase(dbPath, 'dropPMOTables');
|
|
78
103
|
try {
|
|
79
104
|
for (const table of tables) {
|
|
80
105
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pmo-bootstrap.js","sourceRoot":"","sources":["../../../src/lib/database/pmo-bootstrap.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pmo-bootstrap.js","sourceRoot":"","sources":["../../../src/lib/database/pmo-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* Extracted so migration files can reference the SQL without
|
|
5
5
|
* creating a circular import through database/index.ts.
|
|
6
6
|
*/
|
|
7
|
-
export declare const CREATE_TABLES_SQL = "\n-- Core workspace metadata\nCREATE TABLE IF NOT EXISTS workspace (\n id INTEGER PRIMARY KEY CHECK (id = 1),\n type TEXT NOT NULL CHECK (type IN ('hq', 'workspace')),\n workspace_name TEXT NOT NULL,\n has_pmo BOOLEAN DEFAULT FALSE,\n active_theme_id TEXT,\n created_at TEXT NOT NULL,\n FOREIGN KEY (active_theme_id) REFERENCES agent_themes(id) ON DELETE SET NULL\n);\n\n-- Repository management\nCREATE TABLE IF NOT EXISTS repositories (\n name TEXT PRIMARY KEY,\n path TEXT NOT NULL,\n type TEXT DEFAULT 'main' CHECK (type IN ('main', 'dependency')),\n source_url TEXT,\n action TEXT CHECK (action IN ('clone', 'move', 'link')),\n added_at TEXT NOT NULL\n);\n\n-- Agent naming themes (optional)\nCREATE TABLE IF NOT EXISTS agent_themes (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL UNIQUE,\n display_name TEXT NOT NULL,\n description TEXT,\n builtin BOOLEAN DEFAULT FALSE,\n created_at TEXT NOT NULL\n);\n\n-- Names available within each theme\nCREATE TABLE IF NOT EXISTS agent_theme_names (\n theme_id TEXT NOT NULL,\n name TEXT NOT NULL,\n PRIMARY KEY (theme_id, name),\n FOREIGN KEY (theme_id) REFERENCES agent_themes(id) ON DELETE CASCADE\n);\n\n-- Agent instances in workspace\nCREATE TABLE IF NOT EXISTS agents (\n name TEXT PRIMARY KEY,\n type TEXT NOT NULL DEFAULT 'persistent' CHECK (type IN ('persistent', 'ephemeral')),\n status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'cleaned')),\n base_name TEXT,\n theme_id TEXT,\n worktree_path TEXT,\n mount_mode TEXT NOT NULL DEFAULT 'worktree' CHECK (mount_mode IN ('worktree', 'clone')),\n created_at TEXT NOT NULL,\n cleaned_at TEXT,\n FOREIGN KEY (theme_id) REFERENCES agent_themes(id) ON DELETE SET NULL\n);\n\n-- Agent-owned worktrees\nCREATE TABLE IF NOT EXISTS agent_worktrees (\n agent_name TEXT NOT NULL,\n repo_name TEXT NOT NULL,\n worktree_path TEXT NOT NULL,\n branch TEXT NOT NULL,\n created_at TEXT NOT NULL,\n last_commit_hash TEXT,\n commits_ahead INTEGER NOT NULL DEFAULT 0,\n is_clean INTEGER NOT NULL DEFAULT 1,\n last_checked TEXT,\n PRIMARY KEY (agent_name, repo_name),\n FOREIGN KEY (agent_name) REFERENCES agents(name) ON DELETE CASCADE,\n FOREIGN KEY (repo_name) REFERENCES repositories(name) ON DELETE CASCADE\n);\n\n-- Workspace-level settings (key-value store)\nCREATE TABLE IF NOT EXISTS workspace_settings (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL\n);\n\n-- Media items (videos, audio files with preprocessed assets)\nCREATE TABLE IF NOT EXISTS media_items (\n name TEXT PRIMARY KEY,\n path TEXT NOT NULL,\n source_path TEXT,\n media_type TEXT NOT NULL DEFAULT 'video' CHECK (media_type IN ('video', 'audio')),\n duration_seconds REAL,\n resolution TEXT,\n frame_count INTEGER NOT NULL DEFAULT 0,\n has_transcript INTEGER NOT NULL DEFAULT 0,\n frame_interval INTEGER NOT NULL DEFAULT 30,\n status TEXT NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'processing', 'ready', 'error')),\n error_message TEXT,\n added_at TEXT NOT NULL,\n processed_at TEXT\n);\n\n-- =============================================================================\n-- Indexes\n-- =============================================================================\n\nCREATE INDEX IF NOT EXISTS idx_worktrees_agent ON agent_worktrees(agent_name);\nCREATE INDEX IF NOT EXISTS idx_worktrees_repo ON agent_worktrees(repo_name);\nCREATE INDEX IF NOT EXISTS idx_theme_names_theme ON agent_theme_names(theme_id);\nCREATE INDEX IF NOT EXISTS idx_agents_theme ON agents(theme_id);\n";
|
|
7
|
+
export declare const CREATE_TABLES_SQL = "\n-- Core workspace metadata\nCREATE TABLE IF NOT EXISTS workspace (\n id INTEGER PRIMARY KEY CHECK (id = 1),\n type TEXT NOT NULL CHECK (type IN ('hq', 'workspace')),\n workspace_name TEXT NOT NULL,\n has_pmo BOOLEAN DEFAULT FALSE,\n active_theme_id TEXT,\n created_at TEXT NOT NULL,\n FOREIGN KEY (active_theme_id) REFERENCES agent_themes(id) ON DELETE SET NULL\n);\n\n-- Repository management\nCREATE TABLE IF NOT EXISTS repositories (\n name TEXT PRIMARY KEY,\n path TEXT NOT NULL,\n type TEXT DEFAULT 'main' CHECK (type IN ('main', 'dependency')),\n source_url TEXT,\n action TEXT CHECK (action IN ('clone', 'move', 'link')),\n added_at TEXT NOT NULL\n);\n\n-- Agent naming themes (optional)\nCREATE TABLE IF NOT EXISTS agent_themes (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL UNIQUE,\n display_name TEXT NOT NULL,\n description TEXT,\n builtin BOOLEAN DEFAULT FALSE,\n created_at TEXT NOT NULL\n);\n\n-- Names available within each theme\nCREATE TABLE IF NOT EXISTS agent_theme_names (\n theme_id TEXT NOT NULL,\n name TEXT NOT NULL,\n PRIMARY KEY (theme_id, name),\n FOREIGN KEY (theme_id) REFERENCES agent_themes(id) ON DELETE CASCADE\n);\n\n-- Agent instances in workspace\nCREATE TABLE IF NOT EXISTS agents (\n name TEXT PRIMARY KEY,\n type TEXT NOT NULL DEFAULT 'persistent' CHECK (type IN ('persistent', 'ephemeral')),\n status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'running', 'completed', 'dead', 'cleaned')),\n base_name TEXT,\n theme_id TEXT,\n worktree_path TEXT,\n mount_mode TEXT NOT NULL DEFAULT 'worktree' CHECK (mount_mode IN ('worktree', 'clone')),\n created_at TEXT NOT NULL,\n cleaned_at TEXT,\n FOREIGN KEY (theme_id) REFERENCES agent_themes(id) ON DELETE SET NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_agents_status ON agents(status);\n\n-- Agent-owned worktrees\nCREATE TABLE IF NOT EXISTS agent_worktrees (\n agent_name TEXT NOT NULL,\n repo_name TEXT NOT NULL,\n worktree_path TEXT NOT NULL,\n branch TEXT NOT NULL,\n created_at TEXT NOT NULL,\n last_commit_hash TEXT,\n commits_ahead INTEGER NOT NULL DEFAULT 0,\n is_clean INTEGER NOT NULL DEFAULT 1,\n last_checked TEXT,\n PRIMARY KEY (agent_name, repo_name),\n FOREIGN KEY (agent_name) REFERENCES agents(name) ON DELETE CASCADE,\n FOREIGN KEY (repo_name) REFERENCES repositories(name) ON DELETE CASCADE\n);\n\n-- Workspace-level settings (key-value store)\nCREATE TABLE IF NOT EXISTS workspace_settings (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL\n);\n\n-- Media items (videos, audio files with preprocessed assets)\nCREATE TABLE IF NOT EXISTS media_items (\n name TEXT PRIMARY KEY,\n path TEXT NOT NULL,\n source_path TEXT,\n media_type TEXT NOT NULL DEFAULT 'video' CHECK (media_type IN ('video', 'audio')),\n duration_seconds REAL,\n resolution TEXT,\n frame_count INTEGER NOT NULL DEFAULT 0,\n has_transcript INTEGER NOT NULL DEFAULT 0,\n frame_interval INTEGER NOT NULL DEFAULT 30,\n status TEXT NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'processing', 'ready', 'error')),\n error_message TEXT,\n added_at TEXT NOT NULL,\n processed_at TEXT\n);\n\n-- =============================================================================\n-- Indexes\n-- =============================================================================\n\nCREATE INDEX IF NOT EXISTS idx_worktrees_agent ON agent_worktrees(agent_name);\nCREATE INDEX IF NOT EXISTS idx_worktrees_repo ON agent_worktrees(repo_name);\nCREATE INDEX IF NOT EXISTS idx_theme_names_theme ON agent_theme_names(theme_id);\nCREATE INDEX IF NOT EXISTS idx_agents_theme ON agents(theme_id);\n";
|
|
@@ -48,7 +48,7 @@ CREATE TABLE IF NOT EXISTS agent_theme_names (
|
|
|
48
48
|
CREATE TABLE IF NOT EXISTS agents (
|
|
49
49
|
name TEXT PRIMARY KEY,
|
|
50
50
|
type TEXT NOT NULL DEFAULT 'persistent' CHECK (type IN ('persistent', 'ephemeral')),
|
|
51
|
-
status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'cleaned')),
|
|
51
|
+
status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'running', 'completed', 'dead', 'cleaned')),
|
|
52
52
|
base_name TEXT,
|
|
53
53
|
theme_id TEXT,
|
|
54
54
|
worktree_path TEXT,
|
|
@@ -58,6 +58,8 @@ CREATE TABLE IF NOT EXISTS agents (
|
|
|
58
58
|
FOREIGN KEY (theme_id) REFERENCES agent_themes(id) ON DELETE SET NULL
|
|
59
59
|
);
|
|
60
60
|
|
|
61
|
+
CREATE INDEX IF NOT EXISTS idx_agents_status ON agents(status);
|
|
62
|
+
|
|
61
63
|
-- Agent-owned worktrees
|
|
62
64
|
CREATE TABLE IF NOT EXISTS agent_worktrees (
|
|
63
65
|
agent_name TEXT NOT NULL,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-schema.js","sourceRoot":"","sources":["../../../src/lib/database/workspace-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG
|
|
1
|
+
{"version":3,"file":"workspace-schema.js","sourceRoot":"","sources":["../../../src/lib/database/workspace-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuGhC,CAAC"}
|
|
@@ -11,6 +11,7 @@ import { isReadOnlyHQMount } from '../container.js';
|
|
|
11
11
|
import { throwIfNativeBindingError } from './native-validation.js';
|
|
12
12
|
import { runDrizzleMigrations } from './migrator.js';
|
|
13
13
|
import { ALL_MIGRATIONS } from './migrations/index.js';
|
|
14
|
+
import { migrateCredentials } from './credential-store.js';
|
|
14
15
|
import { createDrizzleConnection } from './drizzle.js';
|
|
15
16
|
import { workspace as workspaceTable, } from './drizzle-schema.js';
|
|
16
17
|
import { BetterSqlite3Driver } from './driver.js';
|
|
@@ -134,6 +135,9 @@ export function openWorkspaceDatabase(workspacePath, options) {
|
|
|
134
135
|
}
|
|
135
136
|
runDrizzleMigrations(db, ALL_MIGRATIONS);
|
|
136
137
|
ensureEphemeralAgentTypes(db);
|
|
138
|
+
// PRLT-1114: Move credentials from workspace.db to separate credentials.db
|
|
139
|
+
// so they are not exposed when .proletariat/ is mounted into agent containers
|
|
140
|
+
migrateCredentials(db);
|
|
137
141
|
}
|
|
138
142
|
return db;
|
|
139
143
|
}
|