@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,429 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dispatch Daemon Service
|
|
3
|
+
*
|
|
4
|
+
* This daemon runs continuous polling loops to coordinate task assignment
|
|
5
|
+
* and message delivery across all agents in the orchestration system.
|
|
6
|
+
*
|
|
7
|
+
* Key features:
|
|
8
|
+
* - Worker availability polling: Assigns unassigned tasks to available workers
|
|
9
|
+
* - Inbox polling: Delivers messages and spawns agents when needed
|
|
10
|
+
* - Steward trigger polling: Activates stewards based on scheduled triggers
|
|
11
|
+
* - Workflow task polling: Assigns workflow tasks to available stewards
|
|
12
|
+
*
|
|
13
|
+
* The daemon implements the dispatch behavior defined in ORCHESTRATION_PLAN.md:
|
|
14
|
+
* - Workers are spawned INSIDE their worktree directory
|
|
15
|
+
* - Handoff branches are reused when present in task metadata
|
|
16
|
+
* - Inbox polling: Routes messages by role (triage for ephemeral, forward for persistent)
|
|
17
|
+
*
|
|
18
|
+
* @module
|
|
19
|
+
*/
|
|
20
|
+
import type { EntityId, ElementId } from '@stoneforge/core';
|
|
21
|
+
import type { QuarryAPI, InboxService } from '@stoneforge/quarry';
|
|
22
|
+
import type { AgentRegistry } from './agent-registry.js';
|
|
23
|
+
import type { SessionManager, SessionRecord } from '../runtime/session-manager.js';
|
|
24
|
+
import type { DispatchService } from './dispatch-service.js';
|
|
25
|
+
import type { WorktreeManager } from '../git/worktree-manager.js';
|
|
26
|
+
import type { TaskAssignmentService } from './task-assignment-service.js';
|
|
27
|
+
import type { StewardScheduler } from './steward-scheduler.js';
|
|
28
|
+
import type { AgentPoolService } from './agent-pool-service.js';
|
|
29
|
+
/**
|
|
30
|
+
* Default poll interval in milliseconds for dispatch daemon (5 seconds)
|
|
31
|
+
*/
|
|
32
|
+
export declare const DISPATCH_DAEMON_DEFAULT_POLL_INTERVAL_MS = 5000;
|
|
33
|
+
/**
|
|
34
|
+
* Minimum poll interval in milliseconds for dispatch daemon (1 second)
|
|
35
|
+
*/
|
|
36
|
+
export declare const DISPATCH_DAEMON_MIN_POLL_INTERVAL_MS = 1000;
|
|
37
|
+
/**
|
|
38
|
+
* Maximum poll interval in milliseconds for dispatch daemon (1 minute)
|
|
39
|
+
*/
|
|
40
|
+
export declare const DISPATCH_DAEMON_MAX_POLL_INTERVAL_MS = 60000;
|
|
41
|
+
/**
|
|
42
|
+
* Callback fired when a session is started by the dispatch daemon.
|
|
43
|
+
* This allows the server to attach event listeners and save the initial prompt.
|
|
44
|
+
*/
|
|
45
|
+
export type OnSessionStartedCallback = (session: SessionRecord, events: import('events').EventEmitter, agentId: EntityId, initialPrompt: string) => void;
|
|
46
|
+
/**
|
|
47
|
+
* Configuration for the Dispatch Daemon
|
|
48
|
+
*/
|
|
49
|
+
export interface DispatchDaemonConfig {
|
|
50
|
+
/**
|
|
51
|
+
* Poll interval in milliseconds.
|
|
52
|
+
* Default: 5000 (5 seconds)
|
|
53
|
+
*/
|
|
54
|
+
readonly pollIntervalMs?: number;
|
|
55
|
+
/**
|
|
56
|
+
* Whether worker availability polling is enabled.
|
|
57
|
+
* Default: true
|
|
58
|
+
*/
|
|
59
|
+
readonly workerAvailabilityPollEnabled?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Whether inbox polling is enabled.
|
|
62
|
+
* Default: true
|
|
63
|
+
*/
|
|
64
|
+
readonly inboxPollEnabled?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Whether steward trigger polling is enabled.
|
|
67
|
+
* Default: true
|
|
68
|
+
*/
|
|
69
|
+
readonly stewardTriggerPollEnabled?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Whether workflow task polling is enabled.
|
|
72
|
+
* Default: true
|
|
73
|
+
*/
|
|
74
|
+
readonly workflowTaskPollEnabled?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Whether orphan recovery polling is enabled.
|
|
77
|
+
* Detects workers with assigned tasks but no active session after a restart
|
|
78
|
+
* and re-spawns sessions to continue the work.
|
|
79
|
+
* Default: true
|
|
80
|
+
*/
|
|
81
|
+
readonly orphanRecoveryEnabled?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Whether closed-but-unmerged task reconciliation is enabled.
|
|
84
|
+
* Detects tasks with status=CLOSED but mergeStatus not 'merged'
|
|
85
|
+
* and moves them back to REVIEW so merge stewards can pick them up.
|
|
86
|
+
* Default: true
|
|
87
|
+
*/
|
|
88
|
+
readonly closedUnmergedReconciliationEnabled?: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Grace period in ms before a closed-but-unmerged task is reconciled.
|
|
91
|
+
* Prevents racing with in-progress close+merge sequences.
|
|
92
|
+
* Default: 120000 (2 minutes)
|
|
93
|
+
*/
|
|
94
|
+
readonly closedUnmergedGracePeriodMs?: number;
|
|
95
|
+
/**
|
|
96
|
+
* Whether stuck-merge recovery is enabled.
|
|
97
|
+
* Detects tasks stuck in 'merging' or 'testing' mergeStatus for too long
|
|
98
|
+
* and resets them to 'pending' for a fresh retry.
|
|
99
|
+
* Default: true
|
|
100
|
+
*/
|
|
101
|
+
readonly stuckMergeRecoveryEnabled?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Grace period in ms before a stuck merge task is recovered.
|
|
104
|
+
* Prevents racing with in-progress merge operations.
|
|
105
|
+
* Default: 600000 (10 minutes)
|
|
106
|
+
*/
|
|
107
|
+
readonly stuckMergeRecoveryGracePeriodMs?: number;
|
|
108
|
+
/**
|
|
109
|
+
* Maximum session duration in ms before the daemon terminates it.
|
|
110
|
+
* Prevents stuck workers from blocking their slot indefinitely.
|
|
111
|
+
* Default: 0 (disabled).
|
|
112
|
+
*/
|
|
113
|
+
readonly maxSessionDurationMs?: number;
|
|
114
|
+
/**
|
|
115
|
+
* Callback fired when a session is started by the daemon.
|
|
116
|
+
* Allows the server to attach event savers and save the initial prompt.
|
|
117
|
+
*/
|
|
118
|
+
readonly onSessionStarted?: OnSessionStartedCallback;
|
|
119
|
+
/**
|
|
120
|
+
* Project root directory for loading prompt overrides.
|
|
121
|
+
* Default: process.cwd()
|
|
122
|
+
*/
|
|
123
|
+
readonly projectRoot?: string;
|
|
124
|
+
/**
|
|
125
|
+
* Whether to auto-forward inbox messages to the director's interactive session.
|
|
126
|
+
* When enabled, messages are injected into the director's PTY as user input
|
|
127
|
+
* (same mechanism as persistent workers via processPersistentAgentMessage).
|
|
128
|
+
* Default: true
|
|
129
|
+
*/
|
|
130
|
+
readonly directorInboxForwardingEnabled?: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Minimum idle time (ms) since last user input before forwarding messages
|
|
133
|
+
* to the director's session. Prevents interrupting the user mid-thought.
|
|
134
|
+
* Default: 120000 (2 minutes)
|
|
135
|
+
*/
|
|
136
|
+
readonly directorInboxIdleThresholdMs?: number;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Result of a poll operation
|
|
140
|
+
*/
|
|
141
|
+
export interface PollResult {
|
|
142
|
+
/** The poll type */
|
|
143
|
+
readonly pollType: 'worker-availability' | 'inbox' | 'steward-trigger' | 'workflow-task' | 'orphan-recovery' | 'closed-unmerged-reconciliation' | 'stuck-merge-recovery';
|
|
144
|
+
/** Timestamp when the poll started */
|
|
145
|
+
readonly startedAt: string;
|
|
146
|
+
/** Duration of the poll in milliseconds */
|
|
147
|
+
readonly durationMs: number;
|
|
148
|
+
/** Number of items processed */
|
|
149
|
+
readonly processed: number;
|
|
150
|
+
/** Number of errors encountered */
|
|
151
|
+
readonly errors: number;
|
|
152
|
+
/** Error messages if any */
|
|
153
|
+
readonly errorMessages?: string[];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Dispatch Daemon interface for coordinating task assignment and message delivery.
|
|
157
|
+
*
|
|
158
|
+
* The daemon provides methods for:
|
|
159
|
+
* - Starting and stopping the polling loops
|
|
160
|
+
* - Manual trigger of individual poll operations
|
|
161
|
+
* - Configuration management
|
|
162
|
+
*/
|
|
163
|
+
export interface DispatchDaemon {
|
|
164
|
+
/**
|
|
165
|
+
* Starts the dispatch daemon with all enabled polling loops.
|
|
166
|
+
* Reconciles stale sessions on startup before beginning polls.
|
|
167
|
+
*/
|
|
168
|
+
start(): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* Stops the dispatch daemon and all polling loops.
|
|
171
|
+
* Waits for any in-flight poll cycle to complete before returning.
|
|
172
|
+
*/
|
|
173
|
+
stop(): Promise<void>;
|
|
174
|
+
/**
|
|
175
|
+
* Whether the daemon is currently running.
|
|
176
|
+
*/
|
|
177
|
+
isRunning(): boolean;
|
|
178
|
+
/**
|
|
179
|
+
* Manually triggers worker availability polling.
|
|
180
|
+
* Finds available ephemeral workers and assigns unassigned tasks.
|
|
181
|
+
*/
|
|
182
|
+
pollWorkerAvailability(): Promise<PollResult>;
|
|
183
|
+
/**
|
|
184
|
+
* Manually triggers inbox polling.
|
|
185
|
+
* Processes unread messages for all agents.
|
|
186
|
+
*/
|
|
187
|
+
pollInboxes(): Promise<PollResult>;
|
|
188
|
+
/**
|
|
189
|
+
* Manually triggers steward trigger polling.
|
|
190
|
+
* Checks for scheduled steward activations.
|
|
191
|
+
*/
|
|
192
|
+
pollStewardTriggers(): Promise<PollResult>;
|
|
193
|
+
/**
|
|
194
|
+
* Manually triggers workflow task polling.
|
|
195
|
+
* Assigns workflow tasks to available stewards.
|
|
196
|
+
*/
|
|
197
|
+
pollWorkflowTasks(): Promise<PollResult>;
|
|
198
|
+
/**
|
|
199
|
+
* Manually triggers orphan recovery polling.
|
|
200
|
+
* Detects workers with assigned tasks but no active session
|
|
201
|
+
* and re-spawns sessions to continue the work.
|
|
202
|
+
*/
|
|
203
|
+
recoverOrphanedAssignments(): Promise<PollResult>;
|
|
204
|
+
/**
|
|
205
|
+
* Manually triggers closed-but-unmerged task reconciliation.
|
|
206
|
+
* Detects tasks with status=CLOSED but mergeStatus not 'merged'
|
|
207
|
+
* and moves them back to REVIEW so merge stewards can pick them up.
|
|
208
|
+
*/
|
|
209
|
+
reconcileClosedUnmergedTasks(): Promise<PollResult>;
|
|
210
|
+
/**
|
|
211
|
+
* Manually triggers stuck-merge recovery.
|
|
212
|
+
* Detects tasks stuck in 'merging' or 'testing' mergeStatus for too long
|
|
213
|
+
* and resets them to 'pending' for a fresh retry.
|
|
214
|
+
*/
|
|
215
|
+
recoverStuckMergeTasks(): Promise<PollResult>;
|
|
216
|
+
/**
|
|
217
|
+
* Gets the current configuration.
|
|
218
|
+
*/
|
|
219
|
+
getConfig(): Omit<Required<DispatchDaemonConfig>, 'onSessionStarted'> & {
|
|
220
|
+
onSessionStarted?: OnSessionStartedCallback;
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* Updates the configuration.
|
|
224
|
+
* Takes effect on the next poll cycle.
|
|
225
|
+
*/
|
|
226
|
+
updateConfig(config: Partial<DispatchDaemonConfig>): void;
|
|
227
|
+
/**
|
|
228
|
+
* Subscribe to daemon events.
|
|
229
|
+
*/
|
|
230
|
+
on(event: 'poll:start', listener: (pollType: string) => void): void;
|
|
231
|
+
on(event: 'poll:complete', listener: (result: PollResult) => void): void;
|
|
232
|
+
on(event: 'poll:error', listener: (pollType: string, error: Error) => void): void;
|
|
233
|
+
on(event: 'task:dispatched', listener: (taskId: ElementId, agentId: EntityId) => void): void;
|
|
234
|
+
on(event: 'message:forwarded', listener: (messageId: string, agentId: EntityId) => void): void;
|
|
235
|
+
on(event: 'agent:spawned', listener: (agentId: EntityId, worktree?: string) => void): void;
|
|
236
|
+
on(event: 'daemon:notification', listener: (data: {
|
|
237
|
+
type: 'info' | 'warning' | 'error';
|
|
238
|
+
title: string;
|
|
239
|
+
message?: string;
|
|
240
|
+
}) => void): void;
|
|
241
|
+
/**
|
|
242
|
+
* Unsubscribe from daemon events.
|
|
243
|
+
*/
|
|
244
|
+
off(event: string, listener: (...args: unknown[]) => void): void;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Implementation of the Dispatch Daemon.
|
|
248
|
+
*/
|
|
249
|
+
export declare class DispatchDaemonImpl implements DispatchDaemon {
|
|
250
|
+
private readonly api;
|
|
251
|
+
private readonly agentRegistry;
|
|
252
|
+
private readonly sessionManager;
|
|
253
|
+
private readonly dispatchService;
|
|
254
|
+
private readonly worktreeManager;
|
|
255
|
+
private readonly taskAssignment;
|
|
256
|
+
private readonly stewardScheduler;
|
|
257
|
+
private readonly inboxService;
|
|
258
|
+
private readonly poolService;
|
|
259
|
+
private readonly emitter;
|
|
260
|
+
private config;
|
|
261
|
+
private running;
|
|
262
|
+
private polling;
|
|
263
|
+
private pollIntervalHandle?;
|
|
264
|
+
private currentPollCycle?;
|
|
265
|
+
/**
|
|
266
|
+
* Tracks inbox item IDs that are currently being forwarded to persistent agents.
|
|
267
|
+
* Prevents duplicate message delivery when concurrent pollInboxes() calls
|
|
268
|
+
* race to forward the same unread message before markAsRead() completes.
|
|
269
|
+
*
|
|
270
|
+
* Key: inbox item ID
|
|
271
|
+
* Value: true (item is in-flight, being processed)
|
|
272
|
+
*
|
|
273
|
+
* Items are added before forwarding and removed after markAsRead() completes.
|
|
274
|
+
*/
|
|
275
|
+
private readonly forwardingInboxItems;
|
|
276
|
+
constructor(api: QuarryAPI, agentRegistry: AgentRegistry, sessionManager: SessionManager, dispatchService: DispatchService, worktreeManager: WorktreeManager, taskAssignment: TaskAssignmentService, stewardScheduler: StewardScheduler, inboxService: InboxService, config?: DispatchDaemonConfig, poolService?: AgentPoolService);
|
|
277
|
+
start(): Promise<void>;
|
|
278
|
+
stop(): Promise<void>;
|
|
279
|
+
isRunning(): boolean;
|
|
280
|
+
pollWorkerAvailability(): Promise<PollResult>;
|
|
281
|
+
pollInboxes(): Promise<PollResult>;
|
|
282
|
+
pollStewardTriggers(): Promise<PollResult>;
|
|
283
|
+
pollWorkflowTasks(): Promise<PollResult>;
|
|
284
|
+
recoverOrphanedAssignments(): Promise<PollResult>;
|
|
285
|
+
reconcileClosedUnmergedTasks(): Promise<PollResult>;
|
|
286
|
+
/**
|
|
287
|
+
* Detects tasks stuck in 'merging' or 'testing' mergeStatus for too long
|
|
288
|
+
* and resets them to 'pending' for a fresh retry.
|
|
289
|
+
*/
|
|
290
|
+
recoverStuckMergeTasks(): Promise<PollResult>;
|
|
291
|
+
getConfig(): Omit<Required<DispatchDaemonConfig>, 'onSessionStarted'> & {
|
|
292
|
+
onSessionStarted?: OnSessionStartedCallback;
|
|
293
|
+
};
|
|
294
|
+
updateConfig(config: Partial<DispatchDaemonConfig>): void;
|
|
295
|
+
on(event: 'poll:start', listener: (pollType: string) => void): void;
|
|
296
|
+
on(event: 'poll:complete', listener: (result: PollResult) => void): void;
|
|
297
|
+
on(event: 'poll:error', listener: (pollType: string, error: Error) => void): void;
|
|
298
|
+
on(event: 'task:dispatched', listener: (taskId: ElementId, agentId: EntityId) => void): void;
|
|
299
|
+
on(event: 'message:forwarded', listener: (messageId: string, agentId: EntityId) => void): void;
|
|
300
|
+
on(event: 'agent:spawned', listener: (agentId: EntityId, worktree?: string) => void): void;
|
|
301
|
+
on(event: 'agent:triage-spawned', listener: (agentId: EntityId, channelId: string, worktree: string) => void): void;
|
|
302
|
+
on(event: 'daemon:notification', listener: (data: {
|
|
303
|
+
type: 'info' | 'warning' | 'error';
|
|
304
|
+
title: string;
|
|
305
|
+
message?: string;
|
|
306
|
+
}) => void): void;
|
|
307
|
+
off(event: string, listener: (...args: unknown[]) => void): void;
|
|
308
|
+
private createPollInterval;
|
|
309
|
+
private normalizeConfig;
|
|
310
|
+
/**
|
|
311
|
+
* Runs a complete poll cycle for all enabled polling loops.
|
|
312
|
+
*/
|
|
313
|
+
private runPollCycle;
|
|
314
|
+
/**
|
|
315
|
+
* Terminates sessions that have exceeded the configured max duration.
|
|
316
|
+
* Prevents stuck workers from blocking their slot indefinitely.
|
|
317
|
+
*/
|
|
318
|
+
private reapStaleSessions;
|
|
319
|
+
/**
|
|
320
|
+
* Recovers a single orphaned task by re-spawning a session for the worker.
|
|
321
|
+
* Tries to resume the previous provider session first (preserves context),
|
|
322
|
+
* falls back to a fresh spawn if no sessionId or resume fails.
|
|
323
|
+
*/
|
|
324
|
+
private recoverOrphanedTask;
|
|
325
|
+
/**
|
|
326
|
+
* Recovers a single orphaned merge steward task by resuming or re-spawning.
|
|
327
|
+
* Tries to resume the previous provider session first (preserves context),
|
|
328
|
+
* falls back to a fresh spawn via spawnMergeStewardForTask.
|
|
329
|
+
*/
|
|
330
|
+
private recoverOrphanedStewardTask;
|
|
331
|
+
/**
|
|
332
|
+
* Assigns the highest priority unassigned task to a worker.
|
|
333
|
+
* Handles handoff branches by reusing existing worktrees.
|
|
334
|
+
* Respects agent pool capacity limits.
|
|
335
|
+
*/
|
|
336
|
+
private assignTaskToWorker;
|
|
337
|
+
/**
|
|
338
|
+
* Creates a worktree for a task assignment.
|
|
339
|
+
* Includes dependency installation so workers have node_modules available.
|
|
340
|
+
*/
|
|
341
|
+
private createWorktreeForTask;
|
|
342
|
+
/**
|
|
343
|
+
* Builds the initial prompt for a task assignment.
|
|
344
|
+
* Includes the worker role prompt followed by task-specific details.
|
|
345
|
+
* Fetches the description Document content so handoff notes (appended to
|
|
346
|
+
* description) are automatically included.
|
|
347
|
+
*/
|
|
348
|
+
private buildTaskPrompt;
|
|
349
|
+
/**
|
|
350
|
+
* Builds the initial prompt for a merge steward session.
|
|
351
|
+
* Includes the steward role prompt (steward-merge.md) followed by task context.
|
|
352
|
+
*
|
|
353
|
+
* @param task - The task being reviewed
|
|
354
|
+
* @param stewardId - The steward's entity ID
|
|
355
|
+
* @param stewardFocus - The steward's focus area (merge or health)
|
|
356
|
+
* @param syncResult - Optional result from pre-spawn branch sync
|
|
357
|
+
*/
|
|
358
|
+
private buildStewardPrompt;
|
|
359
|
+
/**
|
|
360
|
+
* Spawns a merge steward session for a task in REVIEW status.
|
|
361
|
+
* Syncs the branch with master before spawning to ensure clean diffs.
|
|
362
|
+
* Respects agent pool capacity limits.
|
|
363
|
+
*/
|
|
364
|
+
private spawnMergeStewardForTask;
|
|
365
|
+
/**
|
|
366
|
+
* Processes an inbox item for an agent.
|
|
367
|
+
* Handles dispatch messages and delegates to role-specific processors.
|
|
368
|
+
*/
|
|
369
|
+
private processInboxItem;
|
|
370
|
+
/**
|
|
371
|
+
* Two-path model for ephemeral worker messages:
|
|
372
|
+
* 1. Dispatch message → mark as read (task dispatch handled by pollWorkerAvailability)
|
|
373
|
+
* 2. Non-dispatch message → leave unread if active session (don't forward/interrupt),
|
|
374
|
+
* or accumulate as deferred item for triage if idle
|
|
375
|
+
*
|
|
376
|
+
* Returns { processed: boolean, deferredItem?: ... } so pollInboxes can batch triage.
|
|
377
|
+
*/
|
|
378
|
+
private processEphemeralWorkerMessage;
|
|
379
|
+
/**
|
|
380
|
+
* Process message for persistent workers and directors.
|
|
381
|
+
* - If in session -> forward as user input
|
|
382
|
+
* - Otherwise -> leave for next session
|
|
383
|
+
*/
|
|
384
|
+
private processPersistentAgentMessage;
|
|
385
|
+
/**
|
|
386
|
+
* Processes deferred inbox items for idle agents by spawning triage sessions.
|
|
387
|
+
*
|
|
388
|
+
* Groups items by agentId then channelId. For each agent:
|
|
389
|
+
* - Skips if agent now has an active session (messages stay unread for next cycle)
|
|
390
|
+
* - Spawns triage session for the first channel group only (single-session constraint)
|
|
391
|
+
* - Marks those items as read
|
|
392
|
+
*
|
|
393
|
+
* @returns Number of items processed
|
|
394
|
+
*/
|
|
395
|
+
private processTriageBatch;
|
|
396
|
+
/**
|
|
397
|
+
* Spawns a triage session for an agent to process deferred messages.
|
|
398
|
+
*
|
|
399
|
+
* Creates a read-only worktree on the default branch, builds the triage prompt
|
|
400
|
+
* with hydrated message contents, starts a headless session, and registers
|
|
401
|
+
* worktree cleanup on session exit.
|
|
402
|
+
*/
|
|
403
|
+
private spawnTriageSession;
|
|
404
|
+
/**
|
|
405
|
+
* Builds the triage prompt by loading the message-triage template and
|
|
406
|
+
* hydrating it with the actual message contents.
|
|
407
|
+
*/
|
|
408
|
+
private buildTriagePrompt;
|
|
409
|
+
/**
|
|
410
|
+
* Formats a message for forwarding to an agent session.
|
|
411
|
+
* Fetches document content from contentRef to provide actual message text.
|
|
412
|
+
*/
|
|
413
|
+
private formatForwardedMessage;
|
|
414
|
+
/**
|
|
415
|
+
* Syncs a task's branch with the main branch before steward review.
|
|
416
|
+
*
|
|
417
|
+
* This ensures that when a merge steward reviews a PR, the diff against
|
|
418
|
+
* master only shows the task's actual changes (not other merged work).
|
|
419
|
+
*
|
|
420
|
+
* @param task - The task to sync
|
|
421
|
+
* @returns SyncResult with success/conflicts/error status
|
|
422
|
+
*/
|
|
423
|
+
private syncTaskBranch;
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Creates a DispatchDaemon instance
|
|
427
|
+
*/
|
|
428
|
+
export declare function createDispatchDaemon(api: QuarryAPI, agentRegistry: AgentRegistry, sessionManager: SessionManager, dispatchService: DispatchService, worktreeManager: WorktreeManager, taskAssignment: TaskAssignmentService, stewardScheduler: StewardScheduler, inboxService: InboxService, config?: DispatchDaemonConfig, poolService?: AgentPoolService): DispatchDaemon;
|
|
429
|
+
//# sourceMappingURL=dispatch-daemon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch-daemon.d.ts","sourceRoot":"","sources":["../../src/services/dispatch-daemon.ts"],"names":[],"mappings":"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"}
|