@stoneforge/smithy 0.1.0
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/LICENSE +13 -0
- package/README.md +114 -0
- package/dist/api/index.d.ts +7 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +7 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/orchestrator-api.d.ts +153 -0
- package/dist/api/orchestrator-api.d.ts.map +1 -0
- package/dist/api/orchestrator-api.js +374 -0
- package/dist/api/orchestrator-api.js.map +1 -0
- package/dist/bin/sf.d.ts +3 -0
- package/dist/bin/sf.d.ts.map +1 -0
- package/dist/bin/sf.js +10 -0
- package/dist/bin/sf.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +20 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +861 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/daemon.d.ts +14 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -0
- package/dist/cli/commands/daemon.js +272 -0
- package/dist/cli/commands/daemon.js.map +1 -0
- package/dist/cli/commands/dispatch.d.ts +9 -0
- package/dist/cli/commands/dispatch.d.ts.map +1 -0
- package/dist/cli/commands/dispatch.js +128 -0
- package/dist/cli/commands/dispatch.js.map +1 -0
- package/dist/cli/commands/merge.d.ts +11 -0
- package/dist/cli/commands/merge.d.ts.map +1 -0
- package/dist/cli/commands/merge.js +246 -0
- package/dist/cli/commands/merge.js.map +1 -0
- package/dist/cli/commands/pool.d.ts +21 -0
- package/dist/cli/commands/pool.d.ts.map +1 -0
- package/dist/cli/commands/pool.js +762 -0
- package/dist/cli/commands/pool.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +54 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +57 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/task.d.ts +36 -0
- package/dist/cli/commands/task.d.ts.map +1 -0
- package/dist/cli/commands/task.js +889 -0
- package/dist/cli/commands/task.js.map +1 -0
- package/dist/cli/commands/test-orchestration.d.ts +32 -0
- package/dist/cli/commands/test-orchestration.d.ts.map +1 -0
- package/dist/cli/commands/test-orchestration.js +392 -0
- package/dist/cli/commands/test-orchestration.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +15 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/plugin.d.ts +23 -0
- package/dist/cli/plugin.d.ts.map +1 -0
- package/dist/cli/plugin.js +36 -0
- package/dist/cli/plugin.js.map +1 -0
- package/dist/git/index.d.ts +10 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +12 -0
- package/dist/git/index.js.map +1 -0
- package/dist/git/merge.d.ts +79 -0
- package/dist/git/merge.d.ts.map +1 -0
- package/dist/git/merge.js +254 -0
- package/dist/git/merge.js.map +1 -0
- package/dist/git/worktree-manager.d.ts +299 -0
- package/dist/git/worktree-manager.d.ts.map +1 -0
- package/dist/git/worktree-manager.js +744 -0
- package/dist/git/worktree-manager.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/director.md +272 -0
- package/dist/prompts/index.d.ts +100 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +294 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/message-triage.md +50 -0
- package/dist/prompts/persistent-worker.md +240 -0
- package/dist/prompts/steward-base.md +64 -0
- package/dist/prompts/steward-docs.md +118 -0
- package/dist/prompts/steward-health.md +39 -0
- package/dist/prompts/steward-merge.md +168 -0
- package/dist/prompts/steward-ops.md +28 -0
- package/dist/prompts/steward-reminder.md +26 -0
- package/dist/prompts/worker.md +282 -0
- package/dist/providers/claude/headless.d.ts +18 -0
- package/dist/providers/claude/headless.d.ts.map +1 -0
- package/dist/providers/claude/headless.js +307 -0
- package/dist/providers/claude/headless.js.map +1 -0
- package/dist/providers/claude/index.d.ts +24 -0
- package/dist/providers/claude/index.d.ts.map +1 -0
- package/dist/providers/claude/index.js +80 -0
- package/dist/providers/claude/index.js.map +1 -0
- package/dist/providers/claude/interactive.d.ts +21 -0
- package/dist/providers/claude/interactive.d.ts.map +1 -0
- package/dist/providers/claude/interactive.js +142 -0
- package/dist/providers/claude/interactive.js.map +1 -0
- package/dist/providers/codex/event-mapper.d.ts +91 -0
- package/dist/providers/codex/event-mapper.d.ts.map +1 -0
- package/dist/providers/codex/event-mapper.js +299 -0
- package/dist/providers/codex/event-mapper.js.map +1 -0
- package/dist/providers/codex/headless.d.ts +20 -0
- package/dist/providers/codex/headless.d.ts.map +1 -0
- package/dist/providers/codex/headless.js +174 -0
- package/dist/providers/codex/headless.js.map +1 -0
- package/dist/providers/codex/index.d.ts +30 -0
- package/dist/providers/codex/index.d.ts.map +1 -0
- package/dist/providers/codex/index.js +55 -0
- package/dist/providers/codex/index.js.map +1 -0
- package/dist/providers/codex/interactive.d.ts +21 -0
- package/dist/providers/codex/interactive.d.ts.map +1 -0
- package/dist/providers/codex/interactive.js +141 -0
- package/dist/providers/codex/interactive.js.map +1 -0
- package/dist/providers/codex/jsonrpc-client.d.ts +52 -0
- package/dist/providers/codex/jsonrpc-client.d.ts.map +1 -0
- package/dist/providers/codex/jsonrpc-client.js +141 -0
- package/dist/providers/codex/jsonrpc-client.js.map +1 -0
- package/dist/providers/codex/server-manager.d.ts +100 -0
- package/dist/providers/codex/server-manager.d.ts.map +1 -0
- package/dist/providers/codex/server-manager.js +153 -0
- package/dist/providers/codex/server-manager.js.map +1 -0
- package/dist/providers/index.d.ts +15 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +19 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/opencode/async-queue.d.ts +21 -0
- package/dist/providers/opencode/async-queue.d.ts.map +1 -0
- package/dist/providers/opencode/async-queue.js +51 -0
- package/dist/providers/opencode/async-queue.js.map +1 -0
- package/dist/providers/opencode/event-mapper.d.ts +132 -0
- package/dist/providers/opencode/event-mapper.d.ts.map +1 -0
- package/dist/providers/opencode/event-mapper.js +204 -0
- package/dist/providers/opencode/event-mapper.js.map +1 -0
- package/dist/providers/opencode/headless.d.ts +25 -0
- package/dist/providers/opencode/headless.d.ts.map +1 -0
- package/dist/providers/opencode/headless.js +190 -0
- package/dist/providers/opencode/headless.js.map +1 -0
- package/dist/providers/opencode/index.d.ts +33 -0
- package/dist/providers/opencode/index.d.ts.map +1 -0
- package/dist/providers/opencode/index.js +42 -0
- package/dist/providers/opencode/index.js.map +1 -0
- package/dist/providers/opencode/interactive.d.ts +21 -0
- package/dist/providers/opencode/interactive.d.ts.map +1 -0
- package/dist/providers/opencode/interactive.js +135 -0
- package/dist/providers/opencode/interactive.js.map +1 -0
- package/dist/providers/opencode/server-manager.d.ts +145 -0
- package/dist/providers/opencode/server-manager.d.ts.map +1 -0
- package/dist/providers/opencode/server-manager.js +163 -0
- package/dist/providers/opencode/server-manager.js.map +1 -0
- package/dist/providers/registry.d.ts +38 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +82 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/types.d.ts +144 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +25 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/runtime/event-utils.d.ts +8 -0
- package/dist/runtime/event-utils.d.ts.map +1 -0
- package/dist/runtime/event-utils.js +23 -0
- package/dist/runtime/event-utils.js.map +1 -0
- package/dist/runtime/handoff.d.ts +195 -0
- package/dist/runtime/handoff.d.ts.map +1 -0
- package/dist/runtime/handoff.js +332 -0
- package/dist/runtime/handoff.js.map +1 -0
- package/dist/runtime/index.d.ts +17 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +60 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/message-mapper.d.ts +99 -0
- package/dist/runtime/message-mapper.d.ts.map +1 -0
- package/dist/runtime/message-mapper.js +202 -0
- package/dist/runtime/message-mapper.js.map +1 -0
- package/dist/runtime/predecessor-query.d.ts +212 -0
- package/dist/runtime/predecessor-query.d.ts.map +1 -0
- package/dist/runtime/predecessor-query.js +283 -0
- package/dist/runtime/predecessor-query.js.map +1 -0
- package/dist/runtime/session-manager.d.ts +466 -0
- package/dist/runtime/session-manager.d.ts.map +1 -0
- package/dist/runtime/session-manager.js +986 -0
- package/dist/runtime/session-manager.js.map +1 -0
- package/dist/runtime/spawner.d.ts +407 -0
- package/dist/runtime/spawner.d.ts.map +1 -0
- package/dist/runtime/spawner.js +781 -0
- package/dist/runtime/spawner.js.map +1 -0
- package/dist/server/config.d.ts +22 -0
- package/dist/server/config.d.ts.map +1 -0
- package/dist/server/config.js +59 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/daemon-state.d.ts +50 -0
- package/dist/server/daemon-state.d.ts.map +1 -0
- package/dist/server/daemon-state.js +100 -0
- package/dist/server/daemon-state.js.map +1 -0
- package/dist/server/events-websocket.d.ts +32 -0
- package/dist/server/events-websocket.d.ts.map +1 -0
- package/dist/server/events-websocket.js +96 -0
- package/dist/server/events-websocket.js.map +1 -0
- package/dist/server/formatters.d.ts +94 -0
- package/dist/server/formatters.d.ts.map +1 -0
- package/dist/server/formatters.js +142 -0
- package/dist/server/formatters.js.map +1 -0
- package/dist/server/index.d.ts +17 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +153 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/lsp-websocket.d.ts +33 -0
- package/dist/server/lsp-websocket.d.ts.map +1 -0
- package/dist/server/lsp-websocket.js +161 -0
- package/dist/server/lsp-websocket.js.map +1 -0
- package/dist/server/routes/agents.d.ts +9 -0
- package/dist/server/routes/agents.d.ts.map +1 -0
- package/dist/server/routes/agents.js +369 -0
- package/dist/server/routes/agents.js.map +1 -0
- package/dist/server/routes/daemon.d.ts +13 -0
- package/dist/server/routes/daemon.d.ts.map +1 -0
- package/dist/server/routes/daemon.js +187 -0
- package/dist/server/routes/daemon.js.map +1 -0
- package/dist/server/routes/events.d.ts +23 -0
- package/dist/server/routes/events.d.ts.map +1 -0
- package/dist/server/routes/events.js +282 -0
- package/dist/server/routes/events.js.map +1 -0
- package/dist/server/routes/extensions.d.ts +9 -0
- package/dist/server/routes/extensions.d.ts.map +1 -0
- package/dist/server/routes/extensions.js +202 -0
- package/dist/server/routes/extensions.js.map +1 -0
- package/dist/server/routes/health.d.ts +7 -0
- package/dist/server/routes/health.d.ts.map +1 -0
- package/dist/server/routes/health.js +33 -0
- package/dist/server/routes/health.js.map +1 -0
- package/dist/server/routes/index.d.ts +21 -0
- package/dist/server/routes/index.d.ts.map +1 -0
- package/dist/server/routes/index.js +21 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/lsp.d.ts +9 -0
- package/dist/server/routes/lsp.d.ts.map +1 -0
- package/dist/server/routes/lsp.js +50 -0
- package/dist/server/routes/lsp.js.map +1 -0
- package/dist/server/routes/plugins.d.ts +9 -0
- package/dist/server/routes/plugins.d.ts.map +1 -0
- package/dist/server/routes/plugins.js +109 -0
- package/dist/server/routes/plugins.js.map +1 -0
- package/dist/server/routes/pools.d.ts +9 -0
- package/dist/server/routes/pools.d.ts.map +1 -0
- package/dist/server/routes/pools.js +189 -0
- package/dist/server/routes/pools.js.map +1 -0
- package/dist/server/routes/scheduler.d.ts +9 -0
- package/dist/server/routes/scheduler.d.ts.map +1 -0
- package/dist/server/routes/scheduler.js +162 -0
- package/dist/server/routes/scheduler.js.map +1 -0
- package/dist/server/routes/sessions.d.ts +27 -0
- package/dist/server/routes/sessions.d.ts.map +1 -0
- package/dist/server/routes/sessions.js +773 -0
- package/dist/server/routes/sessions.js.map +1 -0
- package/dist/server/routes/tasks.d.ts +9 -0
- package/dist/server/routes/tasks.d.ts.map +1 -0
- package/dist/server/routes/tasks.js +954 -0
- package/dist/server/routes/tasks.js.map +1 -0
- package/dist/server/routes/upload.d.ts +8 -0
- package/dist/server/routes/upload.d.ts.map +1 -0
- package/dist/server/routes/upload.js +40 -0
- package/dist/server/routes/upload.js.map +1 -0
- package/dist/server/routes/workflows.d.ts +9 -0
- package/dist/server/routes/workflows.d.ts.map +1 -0
- package/dist/server/routes/workflows.js +532 -0
- package/dist/server/routes/workflows.js.map +1 -0
- package/dist/server/routes/workspace-files.d.ts +12 -0
- package/dist/server/routes/workspace-files.d.ts.map +1 -0
- package/dist/server/routes/workspace-files.js +520 -0
- package/dist/server/routes/workspace-files.js.map +1 -0
- package/dist/server/routes/worktrees.d.ts +9 -0
- package/dist/server/routes/worktrees.d.ts.map +1 -0
- package/dist/server/routes/worktrees.js +94 -0
- package/dist/server/routes/worktrees.js.map +1 -0
- package/dist/server/server.d.ts +14 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +258 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/services/lsp-manager.d.ts +93 -0
- package/dist/server/services/lsp-manager.d.ts.map +1 -0
- package/dist/server/services/lsp-manager.js +291 -0
- package/dist/server/services/lsp-manager.js.map +1 -0
- package/dist/server/services/session-messages.d.ts +61 -0
- package/dist/server/services/session-messages.d.ts.map +1 -0
- package/dist/server/services/session-messages.js +101 -0
- package/dist/server/services/session-messages.js.map +1 -0
- package/dist/server/services.d.ts +35 -0
- package/dist/server/services.d.ts.map +1 -0
- package/dist/server/services.js +159 -0
- package/dist/server/services.js.map +1 -0
- package/dist/server/static.d.ts +18 -0
- package/dist/server/static.d.ts.map +1 -0
- package/dist/server/static.js +71 -0
- package/dist/server/static.js.map +1 -0
- package/dist/server/types.d.ts +20 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +7 -0
- package/dist/server/types.js.map +1 -0
- package/dist/server/websocket.d.ts +16 -0
- package/dist/server/websocket.d.ts.map +1 -0
- package/dist/server/websocket.js +143 -0
- package/dist/server/websocket.js.map +1 -0
- package/dist/services/agent-pool-service.d.ts +181 -0
- package/dist/services/agent-pool-service.d.ts.map +1 -0
- package/dist/services/agent-pool-service.js +590 -0
- package/dist/services/agent-pool-service.js.map +1 -0
- package/dist/services/agent-registry.d.ts +185 -0
- package/dist/services/agent-registry.d.ts.map +1 -0
- package/dist/services/agent-registry.js +432 -0
- package/dist/services/agent-registry.js.map +1 -0
- package/dist/services/dispatch-daemon.d.ts +429 -0
- package/dist/services/dispatch-daemon.d.ts.map +1 -0
- package/dist/services/dispatch-daemon.js +1833 -0
- package/dist/services/dispatch-daemon.js.map +1 -0
- package/dist/services/dispatch-service.d.ts +148 -0
- package/dist/services/dispatch-service.d.ts.map +1 -0
- package/dist/services/dispatch-service.js +170 -0
- package/dist/services/dispatch-service.js.map +1 -0
- package/dist/services/docs-steward-service.d.ts +199 -0
- package/dist/services/docs-steward-service.d.ts.map +1 -0
- package/dist/services/docs-steward-service.js +599 -0
- package/dist/services/docs-steward-service.js.map +1 -0
- package/dist/services/health-steward-service.d.ts +446 -0
- package/dist/services/health-steward-service.d.ts.map +1 -0
- package/dist/services/health-steward-service.js +866 -0
- package/dist/services/health-steward-service.js.map +1 -0
- package/dist/services/index.d.ts +26 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +111 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/merge-request-provider.d.ts +59 -0
- package/dist/services/merge-request-provider.d.ts.map +1 -0
- package/dist/services/merge-request-provider.js +89 -0
- package/dist/services/merge-request-provider.js.map +1 -0
- package/dist/services/merge-steward-service.d.ts +268 -0
- package/dist/services/merge-steward-service.d.ts.map +1 -0
- package/dist/services/merge-steward-service.js +568 -0
- package/dist/services/merge-steward-service.js.map +1 -0
- package/dist/services/plugin-executor.d.ts +247 -0
- package/dist/services/plugin-executor.d.ts.map +1 -0
- package/dist/services/plugin-executor.js +451 -0
- package/dist/services/plugin-executor.js.map +1 -0
- package/dist/services/role-definition-service.d.ts +117 -0
- package/dist/services/role-definition-service.d.ts.map +1 -0
- package/dist/services/role-definition-service.js +289 -0
- package/dist/services/role-definition-service.js.map +1 -0
- package/dist/services/steward-scheduler.d.ts +336 -0
- package/dist/services/steward-scheduler.d.ts.map +1 -0
- package/dist/services/steward-scheduler.js +732 -0
- package/dist/services/steward-scheduler.js.map +1 -0
- package/dist/services/task-assignment-service.d.ts +291 -0
- package/dist/services/task-assignment-service.d.ts.map +1 -0
- package/dist/services/task-assignment-service.js +454 -0
- package/dist/services/task-assignment-service.js.map +1 -0
- package/dist/services/worker-task-service.d.ts +202 -0
- package/dist/services/worker-task-service.d.ts.map +1 -0
- package/dist/services/worker-task-service.js +228 -0
- package/dist/services/worker-task-service.js.map +1 -0
- package/dist/testing/index.d.ts +13 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +17 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/orchestration-tests.d.ts +62 -0
- package/dist/testing/orchestration-tests.d.ts.map +1 -0
- package/dist/testing/orchestration-tests.js +1115 -0
- package/dist/testing/orchestration-tests.js.map +1 -0
- package/dist/testing/test-context.d.ts +171 -0
- package/dist/testing/test-context.d.ts.map +1 -0
- package/dist/testing/test-context.js +665 -0
- package/dist/testing/test-context.js.map +1 -0
- package/dist/testing/test-prompts.d.ts +46 -0
- package/dist/testing/test-prompts.d.ts.map +1 -0
- package/dist/testing/test-prompts.js +140 -0
- package/dist/testing/test-prompts.js.map +1 -0
- package/dist/testing/test-utils.d.ts +200 -0
- package/dist/testing/test-utils.d.ts.map +1 -0
- package/dist/testing/test-utils.js +378 -0
- package/dist/testing/test-utils.js.map +1 -0
- package/dist/types/agent-pool.d.ts +215 -0
- package/dist/types/agent-pool.d.ts.map +1 -0
- package/dist/types/agent-pool.js +143 -0
- package/dist/types/agent-pool.js.map +1 -0
- package/dist/types/agent.d.ts +265 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +127 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +40 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/message-types.d.ts +294 -0
- package/dist/types/message-types.d.ts.map +1 -0
- package/dist/types/message-types.js +354 -0
- package/dist/types/message-types.js.map +1 -0
- package/dist/types/role-definition.d.ts +272 -0
- package/dist/types/role-definition.d.ts.map +1 -0
- package/dist/types/role-definition.js +144 -0
- package/dist/types/role-definition.js.map +1 -0
- package/dist/types/task-meta.d.ts +248 -0
- package/dist/types/task-meta.d.ts.map +1 -0
- package/dist/types/task-meta.js +213 -0
- package/dist/types/task-meta.js.map +1 -0
- package/package.json +120 -0
- package/web/assets/abap-BrgZPUOV.js +6 -0
- package/web/assets/apex-DyP6w7ZV.js +6 -0
- package/web/assets/azcli-BaLxmfj-.js +6 -0
- package/web/assets/bat-CFOPXBzS.js +6 -0
- package/web/assets/bicep-BfEKNvv3.js +7 -0
- package/web/assets/cameligo-BFG1Mk7z.js +6 -0
- package/web/assets/clojure-DTECt2xU.js +6 -0
- package/web/assets/codicon-DCmgc-ay.ttf +0 -0
- package/web/assets/coffee-CDGzqUPQ.js +6 -0
- package/web/assets/cpp-CLLBncYj.js +6 -0
- package/web/assets/csharp-dUCx_-0o.js +6 -0
- package/web/assets/csp-5Rap-vPy.js +6 -0
- package/web/assets/css-D3h14YRZ.js +8 -0
- package/web/assets/cssMode-DMo-5YLA.js +9 -0
- package/web/assets/cypher-DrQuvNYM.js +6 -0
- package/web/assets/dart-CFKIUWau.js +6 -0
- package/web/assets/dockerfile-Zznr-cwX.js +6 -0
- package/web/assets/ecl-Ce3n6wWz.js +6 -0
- package/web/assets/elixir-deUWdS0T.js +6 -0
- package/web/assets/flow9-i9-g7ZhI.js +6 -0
- package/web/assets/freemarker2-D4qgkQzN.js +8 -0
- package/web/assets/fsharp-CzKuDChf.js +6 -0
- package/web/assets/go-Cphgjts3.js +6 -0
- package/web/assets/graphql-Cg7bfA9N.js +6 -0
- package/web/assets/handlebars-CXFvNjQC.js +6 -0
- package/web/assets/hcl-0cvrggvQ.js +6 -0
- package/web/assets/html-oyuB_D-B.js +6 -0
- package/web/assets/htmlMode-iWuZ24-r.js +9 -0
- package/web/assets/index-DqP-_E4F.css +32 -0
- package/web/assets/index-R1cylSgw.js +1665 -0
- package/web/assets/ini-Drc7WvVn.js +6 -0
- package/web/assets/java-B_fMsGYe.js +6 -0
- package/web/assets/javascript-CRIkN2Pg.js +6 -0
- package/web/assets/jsonMode-DVDkDgex.js +15 -0
- package/web/assets/julia-Bqgm2twL.js +6 -0
- package/web/assets/kotlin-BSkB5QuD.js +6 -0
- package/web/assets/less-BsTHnhdd.js +7 -0
- package/web/assets/lexon-YWi4-JPR.js +6 -0
- package/web/assets/liquid-CSfldbB5.js +6 -0
- package/web/assets/lua-nf6ki56Z.js +6 -0
- package/web/assets/m3-Cpb6xl2v.js +6 -0
- package/web/assets/markdown-DSZPf7rp.js +6 -0
- package/web/assets/mdx-Dd58iymR.js +6 -0
- package/web/assets/mips-B_c3zf-v.js +6 -0
- package/web/assets/monaco-editor-B4lwqA13.js +751 -0
- package/web/assets/monaco-editor-CQpyCxOA.css +1 -0
- package/web/assets/msdax-rUNN04Wq.js +6 -0
- package/web/assets/mysql-DDwshQtU.js +6 -0
- package/web/assets/objective-c-B5zXfXm9.js +6 -0
- package/web/assets/pascal-CXOwvkN_.js +6 -0
- package/web/assets/pascaligo-Bc-ZgV77.js +6 -0
- package/web/assets/perl-CwNk8-XU.js +6 -0
- package/web/assets/pgsql-tGk8EFnU.js +6 -0
- package/web/assets/php-CpIb_Oan.js +6 -0
- package/web/assets/pla-B03wrqEc.js +6 -0
- package/web/assets/postiats-BKlk5iyT.js +6 -0
- package/web/assets/powerquery-Bhzvs7bI.js +6 -0
- package/web/assets/powershell-Dd3NCNK9.js +6 -0
- package/web/assets/protobuf-COyEY5Pt.js +7 -0
- package/web/assets/pug-BaJupSGV.js +6 -0
- package/web/assets/python-XWrMqdhO.js +6 -0
- package/web/assets/qsharp-DXyYeYxl.js +6 -0
- package/web/assets/r-CdQndTaG.js +6 -0
- package/web/assets/razor-DPlhCpIs.js +6 -0
- package/web/assets/redis-CVwtpugi.js +6 -0
- package/web/assets/redshift-25W9uPmb.js +6 -0
- package/web/assets/restructuredtext-DfzH4Xui.js +6 -0
- package/web/assets/router-vendor-DHlGizSU.js +41 -0
- package/web/assets/ruby-Cp1zYvxS.js +6 -0
- package/web/assets/rust-D5C2fndG.js +6 -0
- package/web/assets/sb-CDntyWJ8.js +6 -0
- package/web/assets/scala-BoFRg7Ot.js +6 -0
- package/web/assets/scheme-Bio4gycK.js +6 -0
- package/web/assets/scss-4Ik7cdeQ.js +8 -0
- package/web/assets/shell-CX-rkNHf.js +6 -0
- package/web/assets/solidity-Tw7wswEv.js +6 -0
- package/web/assets/sophia-C5WLch3f.js +6 -0
- package/web/assets/sparql-DHaeiCBh.js +6 -0
- package/web/assets/sql-CCSDG5nI.js +6 -0
- package/web/assets/st-pnP8ivHi.js +6 -0
- package/web/assets/swift-DwJ7jVG9.js +8 -0
- package/web/assets/systemverilog-B9Xyijhd.js +6 -0
- package/web/assets/tcl-DnHyzjbg.js +6 -0
- package/web/assets/tsMode-BbA1Jbf3.js +16 -0
- package/web/assets/twig-CPajHgWi.js +6 -0
- package/web/assets/typescript-DcLHYzvH.js +6 -0
- package/web/assets/typespec-D-MeaMDU.js +6 -0
- package/web/assets/ui-vendor-BSco96uv.js +51 -0
- package/web/assets/utils-vendor-DaJ2Dubl.js +911 -0
- package/web/assets/vb-DgyLZaXg.js +6 -0
- package/web/assets/wgsl-DYQUnd45.js +303 -0
- package/web/assets/xml-xKYS3dO6.js +6 -0
- package/web/assets/yaml-CNmlXqzH.js +6 -0
- package/web/favicon.ico +0 -0
- package/web/index.html +22 -0
- package/web/logo.png +0 -0
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Manager Service
|
|
3
|
+
*
|
|
4
|
+
* This service manages agent sessions with provider session ID support for
|
|
5
|
+
* resumable sessions and cross-restart persistence.
|
|
6
|
+
*
|
|
7
|
+
* Key features:
|
|
8
|
+
* - Track active sessions with process metadata
|
|
9
|
+
* - Persist session state to database via Agent entity metadata
|
|
10
|
+
* - Start, resume, stop, and suspend sessions
|
|
11
|
+
* - Message running sessions via agent channels
|
|
12
|
+
* - Query session history per agent
|
|
13
|
+
*
|
|
14
|
+
* @module
|
|
15
|
+
*/
|
|
16
|
+
import { EventEmitter } from 'node:events';
|
|
17
|
+
import type { EntityId, Timestamp, MessageId, DocumentId } from '@stoneforge/core';
|
|
18
|
+
import type { QuarryAPI } from '@stoneforge/quarry';
|
|
19
|
+
import type { AgentRole, WorkerMode } from '../types/agent.js';
|
|
20
|
+
import type { SpawnerService, SessionStatus, UWPTaskInfo } from './spawner.js';
|
|
21
|
+
import type { AgentRegistry } from '../services/agent-registry.js';
|
|
22
|
+
/**
|
|
23
|
+
* Session record with persistence metadata
|
|
24
|
+
*/
|
|
25
|
+
export interface SessionRecord {
|
|
26
|
+
/** Internal session ID (unique per spawn) */
|
|
27
|
+
readonly id: string;
|
|
28
|
+
/** Provider session ID (for resume) */
|
|
29
|
+
readonly providerSessionId?: string;
|
|
30
|
+
/** Agent entity ID this session belongs to */
|
|
31
|
+
readonly agentId: EntityId;
|
|
32
|
+
/** Agent role */
|
|
33
|
+
readonly agentRole: AgentRole;
|
|
34
|
+
/** Worker mode (for workers) */
|
|
35
|
+
readonly workerMode?: WorkerMode;
|
|
36
|
+
/** Spawn mode: headless or interactive */
|
|
37
|
+
readonly mode: 'headless' | 'interactive';
|
|
38
|
+
/** Process ID (if running) */
|
|
39
|
+
readonly pid?: number;
|
|
40
|
+
/** Current status */
|
|
41
|
+
readonly status: SessionStatus;
|
|
42
|
+
/** Working directory */
|
|
43
|
+
readonly workingDirectory: string;
|
|
44
|
+
/** Git worktree path (for workers) */
|
|
45
|
+
readonly worktree?: string;
|
|
46
|
+
/** Session created timestamp */
|
|
47
|
+
readonly createdAt: Timestamp;
|
|
48
|
+
/** Session started timestamp (when running state entered) */
|
|
49
|
+
readonly startedAt?: Timestamp;
|
|
50
|
+
/** Last activity timestamp */
|
|
51
|
+
readonly lastActivityAt: Timestamp;
|
|
52
|
+
/** Session ended timestamp (when terminated/suspended) */
|
|
53
|
+
readonly endedAt?: Timestamp;
|
|
54
|
+
/** Reason for termination (if applicable) */
|
|
55
|
+
readonly terminationReason?: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Options for starting a new session
|
|
59
|
+
*/
|
|
60
|
+
export interface StartSessionOptions {
|
|
61
|
+
/** Working directory for the session */
|
|
62
|
+
readonly workingDirectory?: string;
|
|
63
|
+
/** Git worktree path */
|
|
64
|
+
readonly worktree?: string;
|
|
65
|
+
/** Initial prompt to send to the agent */
|
|
66
|
+
readonly initialPrompt?: string;
|
|
67
|
+
/** Additional environment variables */
|
|
68
|
+
readonly environmentVariables?: Record<string, string>;
|
|
69
|
+
/** Whether to use interactive mode (PTY) */
|
|
70
|
+
readonly interactive?: boolean;
|
|
71
|
+
/** Terminal columns (for interactive mode) */
|
|
72
|
+
readonly cols?: number;
|
|
73
|
+
/** Terminal rows (for interactive mode) */
|
|
74
|
+
readonly rows?: number;
|
|
75
|
+
/** LLM model to use for this session (overrides agent metadata) */
|
|
76
|
+
readonly model?: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Options for resuming a session
|
|
80
|
+
*/
|
|
81
|
+
export interface ResumeSessionOptions {
|
|
82
|
+
/** The provider session ID to resume */
|
|
83
|
+
readonly providerSessionId: string;
|
|
84
|
+
/** Working directory for the session */
|
|
85
|
+
readonly workingDirectory?: string;
|
|
86
|
+
/** Git worktree path */
|
|
87
|
+
readonly worktree?: string;
|
|
88
|
+
/** Additional prompt to send after resume */
|
|
89
|
+
readonly resumePrompt?: string;
|
|
90
|
+
/**
|
|
91
|
+
* Whether to check the ready queue before resuming (UWP compliance).
|
|
92
|
+
* If true (default), the session will check for assigned tasks before
|
|
93
|
+
* continuing with the previous context.
|
|
94
|
+
*/
|
|
95
|
+
readonly checkReadyQueue?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Callback to get ready tasks - allows integration without circular deps.
|
|
98
|
+
* If not provided and checkReadyQueue is true, UWP check will be skipped.
|
|
99
|
+
*/
|
|
100
|
+
readonly getReadyTasks?: (agentId: EntityId, limit: number) => Promise<UWPTaskInfo[]>;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Options for stopping a session
|
|
104
|
+
*/
|
|
105
|
+
export interface StopSessionOptions {
|
|
106
|
+
/** Whether to attempt graceful shutdown (default: true) */
|
|
107
|
+
readonly graceful?: boolean;
|
|
108
|
+
/** Reason for stopping */
|
|
109
|
+
readonly reason?: string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Options for sending a message to a session
|
|
113
|
+
*/
|
|
114
|
+
export interface MessageSessionOptions {
|
|
115
|
+
/** Document ID containing the message content */
|
|
116
|
+
readonly contentRef?: DocumentId;
|
|
117
|
+
/** Message content (if contentRef not provided) */
|
|
118
|
+
readonly content?: string;
|
|
119
|
+
/** Entity ID of the sender */
|
|
120
|
+
readonly senderId?: EntityId;
|
|
121
|
+
/** Additional metadata for the message */
|
|
122
|
+
readonly metadata?: Record<string, unknown>;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Result of sending a message to a session
|
|
126
|
+
*/
|
|
127
|
+
export interface MessageSessionResult {
|
|
128
|
+
/** Whether the message was sent successfully */
|
|
129
|
+
readonly success: boolean;
|
|
130
|
+
/** The message ID if sent via channel */
|
|
131
|
+
readonly messageId?: MessageId;
|
|
132
|
+
/** Error message if failed */
|
|
133
|
+
readonly error?: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Filter options for listing sessions
|
|
137
|
+
*/
|
|
138
|
+
export interface SessionFilter {
|
|
139
|
+
/** Filter by agent ID */
|
|
140
|
+
readonly agentId?: EntityId;
|
|
141
|
+
/** Filter by agent role */
|
|
142
|
+
readonly role?: AgentRole;
|
|
143
|
+
/** Filter by status */
|
|
144
|
+
readonly status?: SessionStatus | SessionStatus[];
|
|
145
|
+
/** Filter by sessions started after this time */
|
|
146
|
+
readonly startedAfter?: Timestamp;
|
|
147
|
+
/** Filter by sessions started before this time */
|
|
148
|
+
readonly startedBefore?: Timestamp;
|
|
149
|
+
/** Include only sessions with provider session IDs (resumable) */
|
|
150
|
+
readonly resumable?: boolean;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Session history entry stored in database
|
|
154
|
+
*/
|
|
155
|
+
export interface SessionHistoryEntry {
|
|
156
|
+
/** Internal session ID */
|
|
157
|
+
readonly id: string;
|
|
158
|
+
/** Provider session ID */
|
|
159
|
+
readonly providerSessionId?: string;
|
|
160
|
+
/** Session status when entry was created */
|
|
161
|
+
readonly status: SessionStatus;
|
|
162
|
+
/** Working directory */
|
|
163
|
+
readonly workingDirectory: string;
|
|
164
|
+
/** Worktree path */
|
|
165
|
+
readonly worktree?: string;
|
|
166
|
+
/** Session started timestamp */
|
|
167
|
+
readonly startedAt?: Timestamp;
|
|
168
|
+
/** Session ended timestamp */
|
|
169
|
+
readonly endedAt?: Timestamp;
|
|
170
|
+
/** Termination reason */
|
|
171
|
+
readonly terminationReason?: string;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Role-based session history entry - includes agent context
|
|
175
|
+
*/
|
|
176
|
+
export interface RoleSessionHistoryEntry extends SessionHistoryEntry {
|
|
177
|
+
/** Agent role for this session */
|
|
178
|
+
readonly role: AgentRole;
|
|
179
|
+
/** Agent entity ID */
|
|
180
|
+
readonly agentId: EntityId;
|
|
181
|
+
/** Agent name at time of session */
|
|
182
|
+
readonly agentName?: string;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Result of the UWP check performed during session resume
|
|
186
|
+
*/
|
|
187
|
+
export interface ResumeUWPCheckResult {
|
|
188
|
+
/** Whether a ready task was found during the UWP check */
|
|
189
|
+
readonly hasReadyTask: boolean;
|
|
190
|
+
/** The task ID if a ready task was found */
|
|
191
|
+
readonly taskId?: string;
|
|
192
|
+
/** The task title if a ready task was found */
|
|
193
|
+
readonly taskTitle?: string;
|
|
194
|
+
/** The task priority if a ready task was found */
|
|
195
|
+
readonly taskPriority?: number;
|
|
196
|
+
/**
|
|
197
|
+
* Whether the resumed session should process this task first.
|
|
198
|
+
* If true, the resume prompt includes instructions to process the task.
|
|
199
|
+
*/
|
|
200
|
+
readonly shouldProcessFirst: boolean;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Session Manager interface for agent session lifecycle management.
|
|
204
|
+
*
|
|
205
|
+
* The manager provides methods for:
|
|
206
|
+
* - Starting new agent sessions
|
|
207
|
+
* - Resuming previous sessions with context preservation
|
|
208
|
+
* - Stopping and suspending sessions
|
|
209
|
+
* - Messaging running sessions
|
|
210
|
+
* - Querying session history
|
|
211
|
+
*/
|
|
212
|
+
export interface SessionManager {
|
|
213
|
+
/**
|
|
214
|
+
* Starts a new session for an agent.
|
|
215
|
+
*
|
|
216
|
+
* @param agentId - The agent entity ID
|
|
217
|
+
* @param options - Start options
|
|
218
|
+
* @returns The session record and event emitter
|
|
219
|
+
*/
|
|
220
|
+
startSession(agentId: EntityId, options?: StartSessionOptions): Promise<{
|
|
221
|
+
session: SessionRecord;
|
|
222
|
+
events: EventEmitter;
|
|
223
|
+
}>;
|
|
224
|
+
/**
|
|
225
|
+
* Resumes a previous session using its provider session ID.
|
|
226
|
+
*
|
|
227
|
+
* When `checkReadyQueue` is true (default), implements the Universal Work Principle (UWP):
|
|
228
|
+
* - Before continuing with the previous context, checks if any tasks were assigned during suspension
|
|
229
|
+
* - If tasks are found, the session will be instructed to process them first
|
|
230
|
+
*
|
|
231
|
+
* @param agentId - The agent entity ID
|
|
232
|
+
* @param options - Resume options including the provider session ID
|
|
233
|
+
* @returns The resumed session record, event emitter, and UWP check result
|
|
234
|
+
*/
|
|
235
|
+
resumeSession(agentId: EntityId, options: ResumeSessionOptions): Promise<{
|
|
236
|
+
session: SessionRecord;
|
|
237
|
+
events: EventEmitter;
|
|
238
|
+
uwpCheck?: ResumeUWPCheckResult;
|
|
239
|
+
}>;
|
|
240
|
+
/**
|
|
241
|
+
* Stops a running session.
|
|
242
|
+
*
|
|
243
|
+
* @param sessionId - The internal session ID
|
|
244
|
+
* @param options - Stop options
|
|
245
|
+
*/
|
|
246
|
+
stopSession(sessionId: string, options?: StopSessionOptions): Promise<void>;
|
|
247
|
+
/**
|
|
248
|
+
* Suspends a session (marks it for later resume).
|
|
249
|
+
* The session can be resumed later using its provider session ID.
|
|
250
|
+
*
|
|
251
|
+
* @param sessionId - The internal session ID
|
|
252
|
+
* @param reason - Optional reason for suspension
|
|
253
|
+
*/
|
|
254
|
+
suspendSession(sessionId: string, reason?: string): Promise<void>;
|
|
255
|
+
/**
|
|
256
|
+
* Interrupts a running session (sends interrupt signal to stop current operation).
|
|
257
|
+
* This is like pressing Escape in the Claude Code CLI - it stops the current
|
|
258
|
+
* operation but keeps the session running.
|
|
259
|
+
*
|
|
260
|
+
* @param sessionId - The internal session ID
|
|
261
|
+
*/
|
|
262
|
+
interruptSession(sessionId: string): Promise<void>;
|
|
263
|
+
/**
|
|
264
|
+
* Gets a session by internal ID.
|
|
265
|
+
*
|
|
266
|
+
* @param sessionId - The internal session ID
|
|
267
|
+
* @returns The session record or undefined if not found
|
|
268
|
+
*/
|
|
269
|
+
getSession(sessionId: string): SessionRecord | undefined;
|
|
270
|
+
/**
|
|
271
|
+
* Gets the active session for an agent.
|
|
272
|
+
*
|
|
273
|
+
* @param agentId - The agent entity ID
|
|
274
|
+
* @returns The active session or undefined if none
|
|
275
|
+
*/
|
|
276
|
+
getActiveSession(agentId: EntityId): SessionRecord | undefined;
|
|
277
|
+
/**
|
|
278
|
+
* Lists sessions matching the filter.
|
|
279
|
+
*
|
|
280
|
+
* @param filter - Filter options
|
|
281
|
+
* @returns Array of matching session records
|
|
282
|
+
*/
|
|
283
|
+
listSessions(filter?: SessionFilter): SessionRecord[];
|
|
284
|
+
/**
|
|
285
|
+
* Gets the most recent session for an agent that can be resumed.
|
|
286
|
+
*
|
|
287
|
+
* @param agentId - The agent entity ID
|
|
288
|
+
* @returns The most recent resumable session or undefined
|
|
289
|
+
*/
|
|
290
|
+
getMostRecentResumableSession(agentId: EntityId): SessionRecord | undefined;
|
|
291
|
+
/**
|
|
292
|
+
* Gets the session history for an agent from the database.
|
|
293
|
+
*
|
|
294
|
+
* @param agentId - The agent entity ID
|
|
295
|
+
* @param limit - Maximum number of entries to return
|
|
296
|
+
* @returns Array of session history entries
|
|
297
|
+
*/
|
|
298
|
+
getSessionHistory(agentId: EntityId, limit?: number): Promise<SessionHistoryEntry[]>;
|
|
299
|
+
/**
|
|
300
|
+
* Gets the session history for a role across all agents.
|
|
301
|
+
*
|
|
302
|
+
* This aggregates session history from all agents with the specified role,
|
|
303
|
+
* sorted by most recent first.
|
|
304
|
+
*
|
|
305
|
+
* @param role - The agent role to filter by
|
|
306
|
+
* @param limit - Maximum number of entries to return (default 10)
|
|
307
|
+
* @returns Array of role-based session history entries
|
|
308
|
+
*/
|
|
309
|
+
getSessionHistoryByRole(role: AgentRole, limit?: number): Promise<RoleSessionHistoryEntry[]>;
|
|
310
|
+
/**
|
|
311
|
+
* Gets the most recent previous session for a role.
|
|
312
|
+
*
|
|
313
|
+
* Returns the most recently ended (suspended or terminated) session for
|
|
314
|
+
* agents with the specified role. This is useful for predecessor queries
|
|
315
|
+
* where a new agent needs to consult the previous session holder for context.
|
|
316
|
+
*
|
|
317
|
+
* @param role - The agent role to find previous session for
|
|
318
|
+
* @returns The most recent previous session, or undefined if none found
|
|
319
|
+
*/
|
|
320
|
+
getPreviousSession(role: AgentRole): Promise<RoleSessionHistoryEntry | undefined>;
|
|
321
|
+
/**
|
|
322
|
+
* Sends a message to a running session via its agent channel.
|
|
323
|
+
*
|
|
324
|
+
* For headless sessions, messages are queued for the agent to process.
|
|
325
|
+
* For interactive sessions, messages appear in the agent's inbox.
|
|
326
|
+
*
|
|
327
|
+
* @param sessionId - The internal session ID
|
|
328
|
+
* @param options - Message options
|
|
329
|
+
* @returns Result of the send operation
|
|
330
|
+
*/
|
|
331
|
+
messageSession(sessionId: string, options: MessageSessionOptions): Promise<MessageSessionResult>;
|
|
332
|
+
/**
|
|
333
|
+
* Gets the event emitter for a session.
|
|
334
|
+
*
|
|
335
|
+
* Events emitted:
|
|
336
|
+
* - 'event' (SpawnedSessionEvent) - Parsed stream-json event
|
|
337
|
+
* - 'status' (SessionStatus) - Session status change
|
|
338
|
+
* - 'error' (Error) - Session error
|
|
339
|
+
* - 'exit' (code: number | null, signal: string | null) - Process exit
|
|
340
|
+
*
|
|
341
|
+
* @param sessionId - The internal session ID
|
|
342
|
+
* @returns The event emitter or undefined if session not found
|
|
343
|
+
*/
|
|
344
|
+
getEventEmitter(sessionId: string): EventEmitter | undefined;
|
|
345
|
+
/**
|
|
346
|
+
* Records that the human user typed into a session's PTY.
|
|
347
|
+
* Used for idle-based debouncing of message forwarding.
|
|
348
|
+
*
|
|
349
|
+
* @param sessionId - The internal session ID
|
|
350
|
+
*/
|
|
351
|
+
recordUserInput(sessionId: string): void;
|
|
352
|
+
/**
|
|
353
|
+
* Gets how long (ms) the user has been idle in the agent's active session.
|
|
354
|
+
* Returns undefined if the agent has no active session or no input has been recorded.
|
|
355
|
+
*
|
|
356
|
+
* @param agentId - The agent entity ID
|
|
357
|
+
* @returns Milliseconds since last user input, or undefined
|
|
358
|
+
*/
|
|
359
|
+
getSessionUserIdleMs(agentId: EntityId): number | undefined;
|
|
360
|
+
/**
|
|
361
|
+
* Persists the current session state to the database.
|
|
362
|
+
* Called automatically on state changes but can be called manually.
|
|
363
|
+
*
|
|
364
|
+
* @param sessionId - The internal session ID
|
|
365
|
+
*/
|
|
366
|
+
persistSession(sessionId: string): Promise<void>;
|
|
367
|
+
/**
|
|
368
|
+
* Loads session state from the database for an agent.
|
|
369
|
+
* Used to recover sessions after restart.
|
|
370
|
+
*
|
|
371
|
+
* @param agentId - The agent entity ID
|
|
372
|
+
*/
|
|
373
|
+
loadSessionState(agentId: EntityId): Promise<void>;
|
|
374
|
+
/**
|
|
375
|
+
* Reconciles in-memory state with database on startup.
|
|
376
|
+
* Finds agents marked as 'running' whose processes are no longer alive
|
|
377
|
+
* and resets them to 'idle'.
|
|
378
|
+
*
|
|
379
|
+
* @returns Summary of reconciliation results
|
|
380
|
+
*/
|
|
381
|
+
reconcileOnStartup(): Promise<{
|
|
382
|
+
reconciled: number;
|
|
383
|
+
errors: string[];
|
|
384
|
+
}>;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Implementation of the Session Manager.
|
|
388
|
+
*/
|
|
389
|
+
export declare class SessionManagerImpl implements SessionManager {
|
|
390
|
+
private readonly spawner;
|
|
391
|
+
private readonly api;
|
|
392
|
+
private readonly registry;
|
|
393
|
+
private readonly sessions;
|
|
394
|
+
private readonly agentSessions;
|
|
395
|
+
private readonly sessionHistory;
|
|
396
|
+
private readonly sessionCleanupFns;
|
|
397
|
+
constructor(spawner: SpawnerService, api: QuarryAPI, // Used for message operations in messageSession
|
|
398
|
+
registry: AgentRegistry);
|
|
399
|
+
/**
|
|
400
|
+
* Gets the API instance for direct operations
|
|
401
|
+
*/
|
|
402
|
+
getApi(): QuarryAPI;
|
|
403
|
+
startSession(agentId: EntityId, options?: StartSessionOptions): Promise<{
|
|
404
|
+
session: SessionRecord;
|
|
405
|
+
events: EventEmitter;
|
|
406
|
+
}>;
|
|
407
|
+
resumeSession(agentId: EntityId, options: ResumeSessionOptions): Promise<{
|
|
408
|
+
session: SessionRecord;
|
|
409
|
+
events: EventEmitter;
|
|
410
|
+
uwpCheck?: ResumeUWPCheckResult;
|
|
411
|
+
}>;
|
|
412
|
+
stopSession(sessionId: string, options?: StopSessionOptions): Promise<void>;
|
|
413
|
+
interruptSession(sessionId: string): Promise<void>;
|
|
414
|
+
suspendSession(sessionId: string, reason?: string): Promise<void>;
|
|
415
|
+
getSession(sessionId: string): SessionRecord | undefined;
|
|
416
|
+
getActiveSession(agentId: EntityId): SessionRecord | undefined;
|
|
417
|
+
listSessions(filter?: SessionFilter): SessionRecord[];
|
|
418
|
+
getMostRecentResumableSession(agentId: EntityId): SessionRecord | undefined;
|
|
419
|
+
getSessionHistory(agentId: EntityId, limit?: number): Promise<SessionHistoryEntry[]>;
|
|
420
|
+
getSessionHistoryByRole(role: AgentRole, limit?: number): Promise<RoleSessionHistoryEntry[]>;
|
|
421
|
+
getPreviousSession(role: AgentRole): Promise<RoleSessionHistoryEntry | undefined>;
|
|
422
|
+
messageSession(sessionId: string, options: MessageSessionOptions): Promise<MessageSessionResult>;
|
|
423
|
+
getEventEmitter(sessionId: string): EventEmitter | undefined;
|
|
424
|
+
recordUserInput(sessionId: string): void;
|
|
425
|
+
getSessionUserIdleMs(agentId: EntityId): number | undefined;
|
|
426
|
+
persistSession(sessionId: string): Promise<void>;
|
|
427
|
+
loadSessionState(agentId: EntityId): Promise<void>;
|
|
428
|
+
reconcileOnStartup(): Promise<{
|
|
429
|
+
reconciled: number;
|
|
430
|
+
errors: string[];
|
|
431
|
+
}>;
|
|
432
|
+
private scheduleTerminatedSessionCleanup;
|
|
433
|
+
/**
|
|
434
|
+
* Checks whether a process with the given PID is still alive.
|
|
435
|
+
* Uses signal 0 which doesn't kill — just checks existence.
|
|
436
|
+
*/
|
|
437
|
+
private isProcessAlive;
|
|
438
|
+
/**
|
|
439
|
+
* Cleans up a session whose process is no longer alive.
|
|
440
|
+
* Transitions it to 'terminated' and schedules memory cleanup.
|
|
441
|
+
*/
|
|
442
|
+
private cleanupDeadSession;
|
|
443
|
+
private setupSpawnerEventHandlers;
|
|
444
|
+
private setupSessionEventForwarding;
|
|
445
|
+
/**
|
|
446
|
+
* Cleans up event listeners for a session.
|
|
447
|
+
* Called when a session exits to prevent listener leaks.
|
|
448
|
+
*/
|
|
449
|
+
private cleanupSessionEventListeners;
|
|
450
|
+
private createSessionState;
|
|
451
|
+
private toPublicSession;
|
|
452
|
+
private addToHistory;
|
|
453
|
+
private getPersistedHistory;
|
|
454
|
+
private mergeHistory;
|
|
455
|
+
private getTimestampMs;
|
|
456
|
+
/**
|
|
457
|
+
* Builds the UWP task prompt to instruct the agent to process the assigned task first.
|
|
458
|
+
* This ensures compliance with the Universal Work Principle: "If there is work on your anchor, YOU MUST RUN IT"
|
|
459
|
+
*/
|
|
460
|
+
private buildUWPTaskPrompt;
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Creates a SessionManager instance
|
|
464
|
+
*/
|
|
465
|
+
export declare function createSessionManager(spawner: SpawnerService, api: QuarryAPI, registry: AgentRegistry): SessionManager;
|
|
466
|
+
//# sourceMappingURL=session-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/runtime/session-manager.ts"],"names":[],"mappings":"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"}
|