lorenz 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 +201 -0
- package/NOTICE +13 -0
- package/README.md +774 -0
- package/RELEASE-MANIFEST.json +211 -0
- package/apps/cli/bin/lorenz.js +25 -0
- package/apps/cli/dist/bin/cli.d.ts +3 -0
- package/apps/cli/dist/bin/cli.d.ts.map +1 -0
- package/apps/cli/dist/bin/cli.js +4 -0
- package/apps/cli/dist/bin/cli.js.map +1 -0
- package/apps/cli/dist/daemon.d.ts +76 -0
- package/apps/cli/dist/daemon.d.ts.map +1 -0
- package/apps/cli/dist/daemon.js +189 -0
- package/apps/cli/dist/daemon.js.map +1 -0
- package/apps/cli/dist/doctor.d.ts +40 -0
- package/apps/cli/dist/doctor.d.ts.map +1 -0
- package/apps/cli/dist/doctor.js +590 -0
- package/apps/cli/dist/doctor.js.map +1 -0
- package/apps/cli/dist/index.d.ts +32 -0
- package/apps/cli/dist/index.d.ts.map +1 -0
- package/apps/cli/dist/index.js +26 -0
- package/apps/cli/dist/index.js.map +1 -0
- package/apps/cli/dist/main.d.ts +40 -0
- package/apps/cli/dist/main.d.ts.map +1 -0
- package/apps/cli/dist/main.js +259 -0
- package/apps/cli/dist/main.js.map +1 -0
- package/apps/cli/dist/runs.d.ts +31 -0
- package/apps/cli/dist/runs.d.ts.map +1 -0
- package/apps/cli/dist/runs.js +281 -0
- package/apps/cli/dist/runs.js.map +1 -0
- package/apps/cli/dist/workerDriverLoader.d.ts +64 -0
- package/apps/cli/dist/workerDriverLoader.d.ts.map +1 -0
- package/apps/cli/dist/workerDriverLoader.js +211 -0
- package/apps/cli/dist/workerDriverLoader.js.map +1 -0
- package/apps/cli/package.json +57 -0
- package/apps/symphony-dashboard/dist/assets/index-B3owF3jd.css +1 -0
- package/apps/symphony-dashboard/dist/assets/index-DQ6XlL0d.js +227 -0
- package/apps/symphony-dashboard/dist/index.html +18 -0
- package/bin/lorenz +16 -0
- package/extensions/docker-worker/dist/index.d.ts +92 -0
- package/extensions/docker-worker/dist/index.d.ts.map +1 -0
- package/extensions/docker-worker/dist/index.js +283 -0
- package/extensions/docker-worker/dist/index.js.map +1 -0
- package/extensions/docker-worker/package.json +14 -0
- package/extensions/jira-tracker/dist/client.d.ts +50 -0
- package/extensions/jira-tracker/dist/client.d.ts.map +1 -0
- package/extensions/jira-tracker/dist/client.js +619 -0
- package/extensions/jira-tracker/dist/client.js.map +1 -0
- package/extensions/jira-tracker/dist/index.d.ts +5 -0
- package/extensions/jira-tracker/dist/index.d.ts.map +1 -0
- package/extensions/jira-tracker/dist/index.js +5 -0
- package/extensions/jira-tracker/dist/index.js.map +1 -0
- package/extensions/jira-tracker/dist/options.d.ts +38 -0
- package/extensions/jira-tracker/dist/options.d.ts.map +1 -0
- package/extensions/jira-tracker/dist/options.js +61 -0
- package/extensions/jira-tracker/dist/options.js.map +1 -0
- package/extensions/jira-tracker/dist/provider.d.ts +6 -0
- package/extensions/jira-tracker/dist/provider.d.ts.map +1 -0
- package/extensions/jira-tracker/dist/provider.js +178 -0
- package/extensions/jira-tracker/dist/provider.js.map +1 -0
- package/extensions/jira-tracker/dist/register.d.ts +10 -0
- package/extensions/jira-tracker/dist/register.d.ts.map +1 -0
- package/extensions/jira-tracker/dist/register.js +15 -0
- package/extensions/jira-tracker/dist/register.js.map +1 -0
- package/extensions/jira-tracker/package.json +16 -0
- package/extensions/linear-tracker/dist/client.d.ts +82 -0
- package/extensions/linear-tracker/dist/client.d.ts.map +1 -0
- package/extensions/linear-tracker/dist/client.js +622 -0
- package/extensions/linear-tracker/dist/client.js.map +1 -0
- package/extensions/linear-tracker/dist/index.d.ts +8 -0
- package/extensions/linear-tracker/dist/index.d.ts.map +1 -0
- package/extensions/linear-tracker/dist/index.js +7 -0
- package/extensions/linear-tracker/dist/index.js.map +1 -0
- package/extensions/linear-tracker/dist/options.d.ts +32 -0
- package/extensions/linear-tracker/dist/options.d.ts.map +1 -0
- package/extensions/linear-tracker/dist/options.js +59 -0
- package/extensions/linear-tracker/dist/options.js.map +1 -0
- package/extensions/linear-tracker/dist/provider.d.ts +4 -0
- package/extensions/linear-tracker/dist/provider.d.ts.map +1 -0
- package/extensions/linear-tracker/dist/provider.js +58 -0
- package/extensions/linear-tracker/dist/provider.js.map +1 -0
- package/extensions/linear-tracker/dist/register.d.ts +11 -0
- package/extensions/linear-tracker/dist/register.d.ts.map +1 -0
- package/extensions/linear-tracker/dist/register.js +19 -0
- package/extensions/linear-tracker/dist/register.js.map +1 -0
- package/extensions/linear-tracker/dist/toolOps.d.ts +8 -0
- package/extensions/linear-tracker/dist/toolOps.d.ts.map +1 -0
- package/extensions/linear-tracker/dist/toolOps.js +160 -0
- package/extensions/linear-tracker/dist/toolOps.js.map +1 -0
- package/extensions/linear-tracker/dist/tools.d.ts +7 -0
- package/extensions/linear-tracker/dist/tools.d.ts.map +1 -0
- package/extensions/linear-tracker/dist/tools.js +210 -0
- package/extensions/linear-tracker/dist/tools.js.map +1 -0
- package/extensions/linear-tracker/package.json +18 -0
- package/extensions/local-tracker/dist/boardStore.d.ts +116 -0
- package/extensions/local-tracker/dist/boardStore.d.ts.map +1 -0
- package/extensions/local-tracker/dist/boardStore.js +475 -0
- package/extensions/local-tracker/dist/boardStore.js.map +1 -0
- package/extensions/local-tracker/dist/client.d.ts +14 -0
- package/extensions/local-tracker/dist/client.d.ts.map +1 -0
- package/extensions/local-tracker/dist/client.js +27 -0
- package/extensions/local-tracker/dist/client.js.map +1 -0
- package/extensions/local-tracker/dist/index.d.ts +7 -0
- package/extensions/local-tracker/dist/index.d.ts.map +1 -0
- package/extensions/local-tracker/dist/index.js +7 -0
- package/extensions/local-tracker/dist/index.js.map +1 -0
- package/extensions/local-tracker/dist/options.d.ts +31 -0
- package/extensions/local-tracker/dist/options.d.ts.map +1 -0
- package/extensions/local-tracker/dist/options.js +69 -0
- package/extensions/local-tracker/dist/options.js.map +1 -0
- package/extensions/local-tracker/dist/provider.d.ts +9 -0
- package/extensions/local-tracker/dist/provider.d.ts.map +1 -0
- package/extensions/local-tracker/dist/provider.js +35 -0
- package/extensions/local-tracker/dist/provider.js.map +1 -0
- package/extensions/local-tracker/dist/register.d.ts +11 -0
- package/extensions/local-tracker/dist/register.d.ts.map +1 -0
- package/extensions/local-tracker/dist/register.js +19 -0
- package/extensions/local-tracker/dist/register.js.map +1 -0
- package/extensions/local-tracker/dist/resolveBoardDir.d.ts +24 -0
- package/extensions/local-tracker/dist/resolveBoardDir.d.ts.map +1 -0
- package/extensions/local-tracker/dist/resolveBoardDir.js +39 -0
- package/extensions/local-tracker/dist/resolveBoardDir.js.map +1 -0
- package/extensions/local-tracker/dist/toolOps.d.ts +9 -0
- package/extensions/local-tracker/dist/toolOps.d.ts.map +1 -0
- package/extensions/local-tracker/dist/toolOps.js +86 -0
- package/extensions/local-tracker/dist/toolOps.js.map +1 -0
- package/extensions/local-tracker/dist/tools.d.ts +7 -0
- package/extensions/local-tracker/dist/tools.d.ts.map +1 -0
- package/extensions/local-tracker/dist/tools.js +170 -0
- package/extensions/local-tracker/dist/tools.js.map +1 -0
- package/extensions/local-tracker/package.json +18 -0
- package/extensions/memory-tracker/dist/index.d.ts +24 -0
- package/extensions/memory-tracker/dist/index.d.ts.map +1 -0
- package/extensions/memory-tracker/dist/index.js +110 -0
- package/extensions/memory-tracker/dist/index.js.map +1 -0
- package/extensions/memory-tracker/package.json +16 -0
- package/extensions/slack-tracker/dist/client.d.ts +88 -0
- package/extensions/slack-tracker/dist/client.d.ts.map +1 -0
- package/extensions/slack-tracker/dist/client.js +246 -0
- package/extensions/slack-tracker/dist/client.js.map +1 -0
- package/extensions/slack-tracker/dist/inMemoryTransport.d.ts +42 -0
- package/extensions/slack-tracker/dist/inMemoryTransport.d.ts.map +1 -0
- package/extensions/slack-tracker/dist/inMemoryTransport.js +104 -0
- package/extensions/slack-tracker/dist/inMemoryTransport.js.map +1 -0
- package/extensions/slack-tracker/dist/index.d.ts +15 -0
- package/extensions/slack-tracker/dist/index.d.ts.map +1 -0
- package/extensions/slack-tracker/dist/index.js +11 -0
- package/extensions/slack-tracker/dist/index.js.map +1 -0
- package/extensions/slack-tracker/dist/mapping.d.ts +27 -0
- package/extensions/slack-tracker/dist/mapping.d.ts.map +1 -0
- package/extensions/slack-tracker/dist/mapping.js +109 -0
- package/extensions/slack-tracker/dist/mapping.js.map +1 -0
- package/extensions/slack-tracker/dist/operations.d.ts +41 -0
- package/extensions/slack-tracker/dist/operations.d.ts.map +1 -0
- package/extensions/slack-tracker/dist/operations.js +97 -0
- package/extensions/slack-tracker/dist/operations.js.map +1 -0
- package/extensions/slack-tracker/dist/options.d.ts +30 -0
- package/extensions/slack-tracker/dist/options.d.ts.map +1 -0
- package/extensions/slack-tracker/dist/options.js +49 -0
- package/extensions/slack-tracker/dist/options.js.map +1 -0
- package/extensions/slack-tracker/dist/provider.d.ts +9 -0
- package/extensions/slack-tracker/dist/provider.d.ts.map +1 -0
- package/extensions/slack-tracker/dist/provider.js +74 -0
- package/extensions/slack-tracker/dist/provider.js.map +1 -0
- package/extensions/slack-tracker/dist/register.d.ts +11 -0
- package/extensions/slack-tracker/dist/register.d.ts.map +1 -0
- package/extensions/slack-tracker/dist/register.js +19 -0
- package/extensions/slack-tracker/dist/register.js.map +1 -0
- package/extensions/slack-tracker/dist/threadState.d.ts +52 -0
- package/extensions/slack-tracker/dist/threadState.d.ts.map +1 -0
- package/extensions/slack-tracker/dist/threadState.js +192 -0
- package/extensions/slack-tracker/dist/threadState.js.map +1 -0
- package/extensions/slack-tracker/dist/toolOps.d.ts +13 -0
- package/extensions/slack-tracker/dist/toolOps.d.ts.map +1 -0
- package/extensions/slack-tracker/dist/toolOps.js +76 -0
- package/extensions/slack-tracker/dist/toolOps.js.map +1 -0
- package/extensions/slack-tracker/dist/tools.d.ts +8 -0
- package/extensions/slack-tracker/dist/tools.d.ts.map +1 -0
- package/extensions/slack-tracker/dist/tools.js +266 -0
- package/extensions/slack-tracker/dist/tools.js.map +1 -0
- package/extensions/slack-tracker/dist/transport.d.ts +63 -0
- package/extensions/slack-tracker/dist/transport.d.ts.map +1 -0
- package/extensions/slack-tracker/dist/transport.js +2 -0
- package/extensions/slack-tracker/dist/transport.js.map +1 -0
- package/extensions/slack-tracker/dist/webTransport.d.ts +44 -0
- package/extensions/slack-tracker/dist/webTransport.d.ts.map +1 -0
- package/extensions/slack-tracker/dist/webTransport.js +402 -0
- package/extensions/slack-tracker/dist/webTransport.js.map +1 -0
- package/extensions/slack-tracker/package.json +17 -0
- package/package.json +89 -0
- package/packages/acp/dist/childProcess.d.ts +4 -0
- package/packages/acp/dist/childProcess.d.ts.map +1 -0
- package/packages/acp/dist/childProcess.js +33 -0
- package/packages/acp/dist/childProcess.js.map +1 -0
- package/packages/acp/dist/index.d.ts +70 -0
- package/packages/acp/dist/index.d.ts.map +1 -0
- package/packages/acp/dist/index.js +701 -0
- package/packages/acp/dist/index.js.map +1 -0
- package/packages/acp/dist/options.d.ts +24 -0
- package/packages/acp/dist/options.d.ts.map +1 -0
- package/packages/acp/dist/options.js +92 -0
- package/packages/acp/dist/options.js.map +1 -0
- package/packages/acp/dist/toml.d.ts +2 -0
- package/packages/acp/dist/toml.d.ts.map +1 -0
- package/packages/acp/dist/toml.js +51 -0
- package/packages/acp/dist/toml.js.map +1 -0
- package/packages/acp/package.json +24 -0
- package/packages/agent-runner/dist/index.d.ts +58 -0
- package/packages/agent-runner/dist/index.d.ts.map +1 -0
- package/packages/agent-runner/dist/index.js +288 -0
- package/packages/agent-runner/dist/index.js.map +1 -0
- package/packages/agent-runner/package.json +19 -0
- package/packages/agent-sdk/dist/index.d.ts +2 -0
- package/packages/agent-sdk/dist/index.d.ts.map +1 -0
- package/packages/agent-sdk/dist/index.js +2 -0
- package/packages/agent-sdk/dist/index.js.map +1 -0
- package/packages/agent-sdk/dist/provider.d.ts +66 -0
- package/packages/agent-sdk/dist/provider.d.ts.map +1 -0
- package/packages/agent-sdk/dist/provider.js +38 -0
- package/packages/agent-sdk/dist/provider.js.map +1 -0
- package/packages/agent-sdk/package.json +14 -0
- package/packages/cli-kit/dist/index.d.ts +20 -0
- package/packages/cli-kit/dist/index.d.ts.map +1 -0
- package/packages/cli-kit/dist/index.js +72 -0
- package/packages/cli-kit/dist/index.js.map +1 -0
- package/packages/cli-kit/package.json +14 -0
- package/packages/config/dist/aliases.d.ts +10 -0
- package/packages/config/dist/aliases.d.ts.map +1 -0
- package/packages/config/dist/aliases.js +153 -0
- package/packages/config/dist/aliases.js.map +1 -0
- package/packages/config/dist/defaults.d.ts +12 -0
- package/packages/config/dist/defaults.d.ts.map +1 -0
- package/packages/config/dist/defaults.js +78 -0
- package/packages/config/dist/defaults.js.map +1 -0
- package/packages/config/dist/errors.d.ts +3 -0
- package/packages/config/dist/errors.d.ts.map +1 -0
- package/packages/config/dist/errors.js +56 -0
- package/packages/config/dist/errors.js.map +1 -0
- package/packages/config/dist/index.d.ts +5 -0
- package/packages/config/dist/index.d.ts.map +1 -0
- package/packages/config/dist/index.js +4 -0
- package/packages/config/dist/index.js.map +1 -0
- package/packages/config/dist/leaf-utils.d.ts +3 -0
- package/packages/config/dist/leaf-utils.d.ts.map +1 -0
- package/packages/config/dist/leaf-utils.js +9 -0
- package/packages/config/dist/leaf-utils.js.map +1 -0
- package/packages/config/dist/parse.d.ts +11 -0
- package/packages/config/dist/parse.d.ts.map +1 -0
- package/packages/config/dist/parse.js +821 -0
- package/packages/config/dist/parse.js.map +1 -0
- package/packages/config/dist/schemas.d.ts +214 -0
- package/packages/config/dist/schemas.d.ts.map +1 -0
- package/packages/config/dist/schemas.js +248 -0
- package/packages/config/dist/schemas.js.map +1 -0
- package/packages/config/package.json +19 -0
- package/packages/dispatch/dist/index.d.ts +22 -0
- package/packages/dispatch/dist/index.d.ts.map +1 -0
- package/packages/dispatch/dist/index.js +117 -0
- package/packages/dispatch/dist/index.js.map +1 -0
- package/packages/dispatch/package.json +16 -0
- package/packages/dispatch-coordinator/dist/coordinator.d.ts +158 -0
- package/packages/dispatch-coordinator/dist/coordinator.d.ts.map +1 -0
- package/packages/dispatch-coordinator/dist/coordinator.js +529 -0
- package/packages/dispatch-coordinator/dist/coordinator.js.map +1 -0
- package/packages/dispatch-coordinator/dist/gate.d.ts +24 -0
- package/packages/dispatch-coordinator/dist/gate.d.ts.map +1 -0
- package/packages/dispatch-coordinator/dist/gate.js +47 -0
- package/packages/dispatch-coordinator/dist/gate.js.map +1 -0
- package/packages/dispatch-coordinator/dist/index.d.ts +6 -0
- package/packages/dispatch-coordinator/dist/index.d.ts.map +1 -0
- package/packages/dispatch-coordinator/dist/index.js +16 -0
- package/packages/dispatch-coordinator/dist/index.js.map +1 -0
- package/packages/dispatch-coordinator/dist/mcpEndpointManager.d.ts +28 -0
- package/packages/dispatch-coordinator/dist/mcpEndpointManager.d.ts.map +1 -0
- package/packages/dispatch-coordinator/dist/mcpEndpointManager.js +54 -0
- package/packages/dispatch-coordinator/dist/mcpEndpointManager.js.map +1 -0
- package/packages/dispatch-coordinator/dist/nullEndpointManager.d.ts +18 -0
- package/packages/dispatch-coordinator/dist/nullEndpointManager.d.ts.map +1 -0
- package/packages/dispatch-coordinator/dist/nullEndpointManager.js +40 -0
- package/packages/dispatch-coordinator/dist/nullEndpointManager.js.map +1 -0
- package/packages/dispatch-coordinator/dist/types.d.ts +119 -0
- package/packages/dispatch-coordinator/dist/types.d.ts.map +1 -0
- package/packages/dispatch-coordinator/dist/types.js +17 -0
- package/packages/dispatch-coordinator/dist/types.js.map +1 -0
- package/packages/dispatch-coordinator/package.json +16 -0
- package/packages/domain/dist/index.d.ts +775 -0
- package/packages/domain/dist/index.d.ts.map +1 -0
- package/packages/domain/dist/index.js +124 -0
- package/packages/domain/dist/index.js.map +1 -0
- package/packages/domain/package.json +14 -0
- package/packages/humanize/dist/index.d.ts +4 -0
- package/packages/humanize/dist/index.d.ts.map +1 -0
- package/packages/humanize/dist/index.js +347 -0
- package/packages/humanize/dist/index.js.map +1 -0
- package/packages/humanize/package.json +11 -0
- package/packages/issue/dist/index.d.ts +7 -0
- package/packages/issue/dist/index.d.ts.map +1 -0
- package/packages/issue/dist/index.js +147 -0
- package/packages/issue/dist/index.js.map +1 -0
- package/packages/issue/package.json +14 -0
- package/packages/log-file/dist/index.d.ts +10 -0
- package/packages/log-file/dist/index.d.ts.map +1 -0
- package/packages/log-file/dist/index.js +200 -0
- package/packages/log-file/dist/index.js.map +1 -0
- package/packages/log-file/package.json +15 -0
- package/packages/mcp/dist/agentEndpoint.d.ts +31 -0
- package/packages/mcp/dist/agentEndpoint.d.ts.map +1 -0
- package/packages/mcp/dist/agentEndpoint.js +270 -0
- package/packages/mcp/dist/agentEndpoint.js.map +1 -0
- package/packages/mcp/dist/auth.d.ts +7 -0
- package/packages/mcp/dist/auth.d.ts.map +1 -0
- package/packages/mcp/dist/auth.js +48 -0
- package/packages/mcp/dist/auth.js.map +1 -0
- package/packages/mcp/dist/filter.d.ts +70 -0
- package/packages/mcp/dist/filter.d.ts.map +1 -0
- package/packages/mcp/dist/filter.js +231 -0
- package/packages/mcp/dist/filter.js.map +1 -0
- package/packages/mcp/dist/index.d.ts +7 -0
- package/packages/mcp/dist/index.d.ts.map +1 -0
- package/packages/mcp/dist/index.js +5 -0
- package/packages/mcp/dist/index.js.map +1 -0
- package/packages/mcp/dist/server.d.ts +31 -0
- package/packages/mcp/dist/server.d.ts.map +1 -0
- package/packages/mcp/dist/server.js +176 -0
- package/packages/mcp/dist/server.js.map +1 -0
- package/packages/mcp/dist/tools/linear.d.ts +5 -0
- package/packages/mcp/dist/tools/linear.d.ts.map +1 -0
- package/packages/mcp/dist/tools/linear.js +192 -0
- package/packages/mcp/dist/tools/linear.js.map +1 -0
- package/packages/mcp/dist/tools/local.d.ts +5 -0
- package/packages/mcp/dist/tools/local.d.ts.map +1 -0
- package/packages/mcp/dist/tools/local.js +161 -0
- package/packages/mcp/dist/tools/local.js.map +1 -0
- package/packages/mcp/dist/tools/result.d.ts +5 -0
- package/packages/mcp/dist/tools/result.d.ts.map +1 -0
- package/packages/mcp/dist/tools/result.js +15 -0
- package/packages/mcp/dist/tools/result.js.map +1 -0
- package/packages/mcp/dist/tools.d.ts +14 -0
- package/packages/mcp/dist/tools.d.ts.map +1 -0
- package/packages/mcp/dist/tools.js +58 -0
- package/packages/mcp/dist/tools.js.map +1 -0
- package/packages/mcp/package.json +20 -0
- package/packages/orchestrator/dist/index.d.ts +171 -0
- package/packages/orchestrator/dist/index.d.ts.map +1 -0
- package/packages/orchestrator/dist/index.js +524 -0
- package/packages/orchestrator/dist/index.js.map +1 -0
- package/packages/orchestrator/package.json +18 -0
- package/packages/policies/dist/index.d.ts +11 -0
- package/packages/policies/dist/index.d.ts.map +1 -0
- package/packages/policies/dist/index.js +6 -0
- package/packages/policies/dist/index.js.map +1 -0
- package/packages/policies/dist/reconciliation.d.ts +5 -0
- package/packages/policies/dist/reconciliation.d.ts.map +1 -0
- package/packages/policies/dist/reconciliation.js +17 -0
- package/packages/policies/dist/reconciliation.js.map +1 -0
- package/packages/policies/dist/resume.d.ts +14 -0
- package/packages/policies/dist/resume.d.ts.map +1 -0
- package/packages/policies/dist/resume.js +7 -0
- package/packages/policies/dist/resume.js.map +1 -0
- package/packages/policies/dist/retry.d.ts +4 -0
- package/packages/policies/dist/retry.d.ts.map +1 -0
- package/packages/policies/dist/retry.js +7 -0
- package/packages/policies/dist/retry.js.map +1 -0
- package/packages/policies/dist/stopReason.d.ts +4 -0
- package/packages/policies/dist/stopReason.d.ts.map +1 -0
- package/packages/policies/dist/stopReason.js +11 -0
- package/packages/policies/dist/stopReason.js.map +1 -0
- package/packages/policies/dist/usage.d.ts +14 -0
- package/packages/policies/dist/usage.d.ts.map +1 -0
- package/packages/policies/dist/usage.js +38 -0
- package/packages/policies/dist/usage.js.map +1 -0
- package/packages/policies/dist/workerHost.d.ts +8 -0
- package/packages/policies/dist/workerHost.d.ts.map +1 -0
- package/packages/policies/dist/workerHost.js +20 -0
- package/packages/policies/dist/workerHost.js.map +1 -0
- package/packages/policies/package.json +21 -0
- package/packages/presenter/dist/index.d.ts +81 -0
- package/packages/presenter/dist/index.d.ts.map +1 -0
- package/packages/presenter/dist/index.js +421 -0
- package/packages/presenter/dist/index.js.map +1 -0
- package/packages/presenter/package.json +16 -0
- package/packages/projections/dist/index.d.ts +10 -0
- package/packages/projections/dist/index.d.ts.map +1 -0
- package/packages/projections/dist/index.js +30 -0
- package/packages/projections/dist/index.js.map +1 -0
- package/packages/projections/package.json +15 -0
- package/packages/prompt/dist/index.d.ts +9 -0
- package/packages/prompt/dist/index.d.ts.map +1 -0
- package/packages/prompt/dist/index.js +71 -0
- package/packages/prompt/dist/index.js.map +1 -0
- package/packages/prompt/package.json +16 -0
- package/packages/retry-scheduler/dist/index.d.ts +12 -0
- package/packages/retry-scheduler/dist/index.d.ts.map +1 -0
- package/packages/retry-scheduler/dist/index.js +39 -0
- package/packages/retry-scheduler/dist/index.js.map +1 -0
- package/packages/retry-scheduler/package.json +15 -0
- package/packages/runtime/dist/index.d.ts +157 -0
- package/packages/runtime/dist/index.d.ts.map +1 -0
- package/packages/runtime/dist/index.js +1074 -0
- package/packages/runtime/dist/index.js.map +1 -0
- package/packages/runtime/package.json +26 -0
- package/packages/runtime-events/dist/index.d.ts +110 -0
- package/packages/runtime-events/dist/index.d.ts.map +1 -0
- package/packages/runtime-events/dist/index.js +25 -0
- package/packages/runtime-events/dist/index.js.map +1 -0
- package/packages/runtime-events/package.json +14 -0
- package/packages/server/dist/index.d.ts +25 -0
- package/packages/server/dist/index.d.ts.map +1 -0
- package/packages/server/dist/index.js +213 -0
- package/packages/server/dist/index.js.map +1 -0
- package/packages/server/dist/issue-store.d.ts +26 -0
- package/packages/server/dist/issue-store.d.ts.map +1 -0
- package/packages/server/dist/issue-store.js +88 -0
- package/packages/server/dist/issue-store.js.map +1 -0
- package/packages/server/dist/path-params.d.ts +6 -0
- package/packages/server/dist/path-params.d.ts.map +1 -0
- package/packages/server/dist/path-params.js +15 -0
- package/packages/server/dist/path-params.js.map +1 -0
- package/packages/server/dist/source.d.ts +12 -0
- package/packages/server/dist/source.d.ts.map +1 -0
- package/packages/server/dist/source.js +2 -0
- package/packages/server/dist/source.js.map +1 -0
- package/packages/server/dist/trace-routes.d.ts +21 -0
- package/packages/server/dist/trace-routes.d.ts.map +1 -0
- package/packages/server/dist/trace-routes.js +66 -0
- package/packages/server/dist/trace-routes.js.map +1 -0
- package/packages/server/dist/ws.d.ts +18 -0
- package/packages/server/dist/ws.d.ts.map +1 -0
- package/packages/server/dist/ws.js +168 -0
- package/packages/server/dist/ws.js.map +1 -0
- package/packages/server/package.json +22 -0
- package/packages/ssh/dist/index.d.ts +33 -0
- package/packages/ssh/dist/index.d.ts.map +1 -0
- package/packages/ssh/dist/index.js +281 -0
- package/packages/ssh/dist/index.js.map +1 -0
- package/packages/ssh/package.json +15 -0
- package/packages/static-worker/dist/index.d.ts +73 -0
- package/packages/static-worker/dist/index.d.ts.map +1 -0
- package/packages/static-worker/dist/index.js +150 -0
- package/packages/static-worker/dist/index.js.map +1 -0
- package/packages/static-worker/package.json +14 -0
- package/packages/tool-sdk/dist/filter.d.ts +70 -0
- package/packages/tool-sdk/dist/filter.d.ts.map +1 -0
- package/packages/tool-sdk/dist/filter.js +231 -0
- package/packages/tool-sdk/dist/filter.js.map +1 -0
- package/packages/tool-sdk/dist/index.d.ts +6 -0
- package/packages/tool-sdk/dist/index.d.ts.map +1 -0
- package/packages/tool-sdk/dist/index.js +4 -0
- package/packages/tool-sdk/dist/index.js.map +1 -0
- package/packages/tool-sdk/dist/provider.d.ts +51 -0
- package/packages/tool-sdk/dist/provider.d.ts.map +1 -0
- package/packages/tool-sdk/dist/provider.js +2 -0
- package/packages/tool-sdk/dist/provider.js.map +1 -0
- package/packages/tool-sdk/dist/registry.d.ts +35 -0
- package/packages/tool-sdk/dist/registry.d.ts.map +1 -0
- package/packages/tool-sdk/dist/registry.js +85 -0
- package/packages/tool-sdk/dist/registry.js.map +1 -0
- package/packages/tool-sdk/dist/result.d.ts +5 -0
- package/packages/tool-sdk/dist/result.d.ts.map +1 -0
- package/packages/tool-sdk/dist/result.js +15 -0
- package/packages/tool-sdk/dist/result.js.map +1 -0
- package/packages/tool-sdk/package.json +14 -0
- package/packages/traceviz-emitter/dist/index.d.ts +19 -0
- package/packages/traceviz-emitter/dist/index.d.ts.map +1 -0
- package/packages/traceviz-emitter/dist/index.js +97 -0
- package/packages/traceviz-emitter/dist/index.js.map +1 -0
- package/packages/traceviz-emitter/package.json +17 -0
- package/packages/traceviz-server/dist/index.d.ts +14 -0
- package/packages/traceviz-server/dist/index.d.ts.map +1 -0
- package/packages/traceviz-server/dist/index.js +10 -0
- package/packages/traceviz-server/dist/index.js.map +1 -0
- package/packages/traceviz-server/dist/models/api.d.ts +51 -0
- package/packages/traceviz-server/dist/models/api.d.ts.map +1 -0
- package/packages/traceviz-server/dist/models/api.js +5 -0
- package/packages/traceviz-server/dist/models/api.js.map +1 -0
- package/packages/traceviz-server/dist/models/display-events.d.ts +58 -0
- package/packages/traceviz-server/dist/models/display-events.d.ts.map +1 -0
- package/packages/traceviz-server/dist/models/display-events.js +6 -0
- package/packages/traceviz-server/dist/models/display-events.js.map +1 -0
- package/packages/traceviz-server/dist/parser.d.ts +14 -0
- package/packages/traceviz-server/dist/parser.d.ts.map +1 -0
- package/packages/traceviz-server/dist/parser.js +363 -0
- package/packages/traceviz-server/dist/parser.js.map +1 -0
- package/packages/traceviz-server/dist/stats.d.ts +7 -0
- package/packages/traceviz-server/dist/stats.d.ts.map +1 -0
- package/packages/traceviz-server/dist/stats.js +81 -0
- package/packages/traceviz-server/dist/stats.js.map +1 -0
- package/packages/traceviz-server/dist/watcher.d.ts +54 -0
- package/packages/traceviz-server/dist/watcher.d.ts.map +1 -0
- package/packages/traceviz-server/dist/watcher.js +368 -0
- package/packages/traceviz-server/dist/watcher.js.map +1 -0
- package/packages/traceviz-server/package.json +16 -0
- package/packages/tracker-sdk/dist/index.d.ts +5 -0
- package/packages/tracker-sdk/dist/index.d.ts.map +1 -0
- package/packages/tracker-sdk/dist/index.js +4 -0
- package/packages/tracker-sdk/dist/index.js.map +1 -0
- package/packages/tracker-sdk/dist/options.d.ts +20 -0
- package/packages/tracker-sdk/dist/options.d.ts.map +1 -0
- package/packages/tracker-sdk/dist/options.js +46 -0
- package/packages/tracker-sdk/dist/options.js.map +1 -0
- package/packages/tracker-sdk/dist/provider.d.ts +104 -0
- package/packages/tracker-sdk/dist/provider.d.ts.map +1 -0
- package/packages/tracker-sdk/dist/provider.js +2 -0
- package/packages/tracker-sdk/dist/provider.js.map +1 -0
- package/packages/tracker-sdk/dist/registry.d.ts +26 -0
- package/packages/tracker-sdk/dist/registry.d.ts.map +1 -0
- package/packages/tracker-sdk/dist/registry.js +52 -0
- package/packages/tracker-sdk/dist/registry.js.map +1 -0
- package/packages/tracker-sdk/dist/toolPack.d.ts +10 -0
- package/packages/tracker-sdk/dist/toolPack.d.ts.map +1 -0
- package/packages/tracker-sdk/dist/toolPack.js +185 -0
- package/packages/tracker-sdk/dist/toolPack.js.map +1 -0
- package/packages/tracker-sdk/package.json +15 -0
- package/packages/tui/dist/index.d.ts +35 -0
- package/packages/tui/dist/index.d.ts.map +1 -0
- package/packages/tui/dist/index.js +354 -0
- package/packages/tui/dist/index.js.map +1 -0
- package/packages/tui/package.json +18 -0
- package/packages/worker-host-pool/dist/index.d.ts +33 -0
- package/packages/worker-host-pool/dist/index.d.ts.map +1 -0
- package/packages/worker-host-pool/dist/index.js +311 -0
- package/packages/worker-host-pool/dist/index.js.map +1 -0
- package/packages/worker-host-pool/package.json +14 -0
- package/packages/worker-pool/dist/index.d.ts +6 -0
- package/packages/worker-pool/dist/index.d.ts.map +1 -0
- package/packages/worker-pool/dist/index.js +15 -0
- package/packages/worker-pool/dist/index.js.map +1 -0
- package/packages/worker-pool/dist/lease.d.ts +36 -0
- package/packages/worker-pool/dist/lease.d.ts.map +1 -0
- package/packages/worker-pool/dist/lease.js +53 -0
- package/packages/worker-pool/dist/lease.js.map +1 -0
- package/packages/worker-pool/dist/ledger.d.ts +51 -0
- package/packages/worker-pool/dist/ledger.d.ts.map +1 -0
- package/packages/worker-pool/dist/ledger.js +165 -0
- package/packages/worker-pool/dist/ledger.js.map +1 -0
- package/packages/worker-pool/dist/mutex.d.ts +10 -0
- package/packages/worker-pool/dist/mutex.d.ts.map +1 -0
- package/packages/worker-pool/dist/mutex.js +22 -0
- package/packages/worker-pool/dist/mutex.js.map +1 -0
- package/packages/worker-pool/dist/pool.d.ts +33 -0
- package/packages/worker-pool/dist/pool.d.ts.map +1 -0
- package/packages/worker-pool/dist/pool.js +1727 -0
- package/packages/worker-pool/dist/pool.js.map +1 -0
- package/packages/worker-pool/dist/reaper.d.ts +94 -0
- package/packages/worker-pool/dist/reaper.d.ts.map +1 -0
- package/packages/worker-pool/dist/reaper.js +295 -0
- package/packages/worker-pool/dist/reaper.js.map +1 -0
- package/packages/worker-pool/dist/types.d.ts +249 -0
- package/packages/worker-pool/dist/types.d.ts.map +1 -0
- package/packages/worker-pool/dist/types.js +2 -0
- package/packages/worker-pool/dist/types.js.map +1 -0
- package/packages/worker-pool/package.json +16 -0
- package/packages/worker-sdk/dist/conformance.d.ts +64 -0
- package/packages/worker-sdk/dist/conformance.d.ts.map +1 -0
- package/packages/worker-sdk/dist/conformance.js +109 -0
- package/packages/worker-sdk/dist/conformance.js.map +1 -0
- package/packages/worker-sdk/dist/fake.d.ts +76 -0
- package/packages/worker-sdk/dist/fake.d.ts.map +1 -0
- package/packages/worker-sdk/dist/fake.js +142 -0
- package/packages/worker-sdk/dist/fake.js.map +1 -0
- package/packages/worker-sdk/dist/index.d.ts +5 -0
- package/packages/worker-sdk/dist/index.d.ts.map +1 -0
- package/packages/worker-sdk/dist/index.js +10 -0
- package/packages/worker-sdk/dist/index.js.map +1 -0
- package/packages/worker-sdk/dist/module.d.ts +46 -0
- package/packages/worker-sdk/dist/module.d.ts.map +1 -0
- package/packages/worker-sdk/dist/module.js +59 -0
- package/packages/worker-sdk/dist/module.js.map +1 -0
- package/packages/worker-sdk/dist/registry.d.ts +24 -0
- package/packages/worker-sdk/dist/registry.d.ts.map +1 -0
- package/packages/worker-sdk/dist/registry.js +49 -0
- package/packages/worker-sdk/dist/registry.js.map +1 -0
- package/packages/worker-sdk/dist/types.d.ts +138 -0
- package/packages/worker-sdk/dist/types.d.ts.map +1 -0
- package/packages/worker-sdk/dist/types.js +21 -0
- package/packages/worker-sdk/dist/types.js.map +1 -0
- package/packages/worker-sdk/package.json +15 -0
- package/packages/workflow/dist/index.d.ts +33 -0
- package/packages/workflow/dist/index.d.ts.map +1 -0
- package/packages/workflow/dist/index.js +125 -0
- package/packages/workflow/dist/index.js.map +1 -0
- package/packages/workflow/package.json +19 -0
- package/packages/workspace/dist/index.d.ts +70 -0
- package/packages/workspace/dist/index.d.ts.map +1 -0
- package/packages/workspace/dist/index.js +1016 -0
- package/packages/workspace/dist/index.js.map +1 -0
- package/packages/workspace/package.json +17 -0
- package/runtime-deps/anthropic-claude-agent-sdk/LICENSE.md +1 -0
- package/runtime-deps/anthropic-claude-agent-sdk/README.md +65 -0
- package/runtime-deps/anthropic-claude-agent-sdk/agentSdkTypes.d.ts +1 -0
- package/runtime-deps/anthropic-claude-agent-sdk/assistant.d.ts +135 -0
- package/runtime-deps/anthropic-claude-agent-sdk/assistant.mjs +190 -0
- package/runtime-deps/anthropic-claude-agent-sdk/bridge.d.ts +231 -0
- package/runtime-deps/anthropic-claude-agent-sdk/bridge.mjs +168 -0
- package/runtime-deps/anthropic-claude-agent-sdk/browser-sdk.d.ts +53 -0
- package/runtime-deps/anthropic-claude-agent-sdk/browser-sdk.js +93 -0
- package/runtime-deps/anthropic-claude-agent-sdk/extractFromBunfs.d.ts +1 -0
- package/runtime-deps/anthropic-claude-agent-sdk/extractFromBunfs.js +156 -0
- package/runtime-deps/anthropic-claude-agent-sdk/manifest.json +47 -0
- package/runtime-deps/anthropic-claude-agent-sdk/manifest.zst.json +55 -0
- package/runtime-deps/anthropic-claude-agent-sdk/node_modules/.bin/anthropic-ai-sdk +21 -0
- package/runtime-deps/anthropic-claude-agent-sdk/package.json +81 -0
- package/runtime-deps/anthropic-claude-agent-sdk/sdk-tools.d.ts +3170 -0
- package/runtime-deps/anthropic-claude-agent-sdk/sdk.d.ts +6000 -0
- package/runtime-deps/anthropic-claude-agent-sdk/sdk.mjs +119 -0
- package/runtime-deps/openai-codex/README.md +60 -0
- package/runtime-deps/openai-codex/bin/codex.js +229 -0
- package/runtime-deps/openai-codex/bin/rg +79 -0
- package/runtime-deps/openai-codex/package.json +22 -0
- package/vendor/claude-agent-acp/dist/acp-agent.d.ts +239 -0
- package/vendor/claude-agent-acp/dist/acp-agent.d.ts.map +1 -0
- package/vendor/claude-agent-acp/dist/acp-agent.js +2693 -0
- package/vendor/claude-agent-acp/dist/bundle.js +41230 -0
- package/vendor/claude-agent-acp/dist/index.d.ts +3 -0
- package/vendor/claude-agent-acp/dist/index.d.ts.map +1 -0
- package/vendor/claude-agent-acp/dist/index.js +67 -0
- package/vendor/claude-agent-acp/dist/lib.d.ts +6 -0
- package/vendor/claude-agent-acp/dist/lib.d.ts.map +1 -0
- package/vendor/claude-agent-acp/dist/lib.js +5 -0
- package/vendor/claude-agent-acp/dist/settings.d.ts +68 -0
- package/vendor/claude-agent-acp/dist/settings.d.ts.map +1 -0
- package/vendor/claude-agent-acp/dist/settings.js +182 -0
- package/vendor/claude-agent-acp/dist/tools.d.ts +103 -0
- package/vendor/claude-agent-acp/dist/tools.d.ts.map +1 -0
- package/vendor/claude-agent-acp/dist/tools.js +713 -0
- package/vendor/claude-agent-acp/dist/utils.d.ts +16 -0
- package/vendor/claude-agent-acp/dist/utils.d.ts.map +1 -0
- package/vendor/claude-agent-acp/dist/utils.js +83 -0
- package/vendor/claude-agent-acp/package.json +23 -0
- package/vendor/codex-acp/dist/index.js +21280 -0
- package/vendor/codex-acp/package.json +17 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import type { WorkerDriver } from "@lorenz/worker-sdk";
|
|
2
|
+
import type { WorkerDriverKind, WorkerPoolSettings } from "@lorenz/domain";
|
|
3
|
+
/**
|
|
4
|
+
* Pool-side types for the embedded warm worker pool. Every implementation file
|
|
5
|
+
* imports from this module so concrete files (pool, lease, reaper, ledger) never
|
|
6
|
+
* form import cycles. The DRIVER contract (WorkerDriver, WorkerDescriptor,
|
|
7
|
+
* ProvisionRequest, WorkerHealth, TeardownReason, POOL_OWNED_LABEL, the registry)
|
|
8
|
+
* lives in `@lorenz/worker-sdk`; this module owns only the engine vocabulary the
|
|
9
|
+
* pool itself adds on top: leases, inventory records, the ledger row shape, and
|
|
10
|
+
* the pool surface.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Outcome of a completed lease. `healthy` keeps the worker for reuse; `poison`
|
|
14
|
+
* recycles the worker (a typed worker-transport fault, not a local/agent failure).
|
|
15
|
+
* `release(outcome)` defaults to `healthy`; `fail(reason)` is equivalent to
|
|
16
|
+
* `release('poison')` with a recorded reason.
|
|
17
|
+
*/
|
|
18
|
+
export type WorkerOutcome = "healthy" | "poison";
|
|
19
|
+
/**
|
|
20
|
+
* Lifecycle state of a worker inside the pool inventory. Internal to the pool;
|
|
21
|
+
* surfaced (read-only) via `WorkerPoolSnapshot` for tests/observability.
|
|
22
|
+
*
|
|
23
|
+
* `WARMING` and `DRAINING` are never assigned by the current pool (provisioning
|
|
24
|
+
* probes inline and drain is a pool-level flag); they stay in the vocabulary for
|
|
25
|
+
* a future async warmup strategy / per-worker drain marker, and the leasable/reap
|
|
26
|
+
* guards already treat them correctly.
|
|
27
|
+
*/
|
|
28
|
+
export type WorkerState = "PROVISIONING" | "WARMING" | "WARM_IDLE" | "LEASED" | "DEGRADED" | "DESTROYING" | "DESTROYED" | "DRAINING";
|
|
29
|
+
/**
|
|
30
|
+
* In-memory record the pool keeps per worker. Mutated only inside the per-worker
|
|
31
|
+
* mutex so the reaper and a lease release can never both touch `inFlight`.
|
|
32
|
+
*/
|
|
33
|
+
export interface WorkerRecord {
|
|
34
|
+
workerId: string;
|
|
35
|
+
workerHost: string;
|
|
36
|
+
driverRef: string;
|
|
37
|
+
state: WorkerState;
|
|
38
|
+
labels: ReadonlyArray<string>;
|
|
39
|
+
createdAtMs: number;
|
|
40
|
+
/** Identity of the current lease generation; a release with a stale id is a no-op. */
|
|
41
|
+
leaseId: string | null;
|
|
42
|
+
/** Concurrent leases currently held against this worker (>= 0 invariant). */
|
|
43
|
+
inFlight: number;
|
|
44
|
+
/** When the worker last went idle (used by idle reaping). */
|
|
45
|
+
lastIdleAtMs: number;
|
|
46
|
+
/** Last heartbeat from the active run (used by orphan detection). */
|
|
47
|
+
lastHeartbeatMs: number;
|
|
48
|
+
/** Cumulative wall-clock worker-seconds attributed to this worker (monotonic). */
|
|
49
|
+
workerSecondsUsed: number;
|
|
50
|
+
/** Set when the reaper wants the worker gone but a lease is still in flight. */
|
|
51
|
+
markedForDestroy: boolean;
|
|
52
|
+
/** The affinity key (prior workerHost) this worker is currently sticky to, if any. */
|
|
53
|
+
affinityKey: string | null;
|
|
54
|
+
/** Per-worker metadata mirrored from the descriptor. */
|
|
55
|
+
metadata: Record<string, unknown>;
|
|
56
|
+
/**
|
|
57
|
+
* Per-issue lease refcount against this worker: issue id -> number of leases that
|
|
58
|
+
* issue currently holds on this worker. Used to enforce the optional
|
|
59
|
+
* `maxWorkersPerIssue` fairness cap (so one ensemble cannot monopolize the pool).
|
|
60
|
+
* A plain set of issue ids is wrong under co-residence (`slotsPerMachine>1`):
|
|
61
|
+
* the SAME issue can hold two slots on one worker, so settling one must not forget
|
|
62
|
+
* the worker still belongs to that issue. The key is dropped only when its count
|
|
63
|
+
* reaches zero. Absent on records that predate the pool's per-issue accounting;
|
|
64
|
+
* treated as empty.
|
|
65
|
+
*/
|
|
66
|
+
leaseIssues?: Map<string, number>;
|
|
67
|
+
/**
|
|
68
|
+
* Acquire timestamps (ms) of every lease currently in flight against this worker,
|
|
69
|
+
* one entry per outstanding lease (so `maxInFlight>1` overlapping leases each
|
|
70
|
+
* carry their own window). A normal settle removes its own entry as it accrues
|
|
71
|
+
* its window in `onLeaseSettle`; a drain that force-destroys a still-LEASED worker
|
|
72
|
+
* accrues every remaining entry's window so the in-flight worker-seconds are not
|
|
73
|
+
* dropped. Absent on records that predate this accounting; treated as empty.
|
|
74
|
+
*/
|
|
75
|
+
liveLeaseAcquiredMs?: number[];
|
|
76
|
+
/**
|
|
77
|
+
* The driver that PROVISIONED this worker, captured by `swapDriver` on a driver
|
|
78
|
+
* hot-reload BEFORE the pool reassigns its live `this.driver`. A teardown
|
|
79
|
+
* (`recycle`/`destroyDescriptor`) routes `destroy` to
|
|
80
|
+
* `record.originDriver ?? this.driver`, so an in-flight lease that settles
|
|
81
|
+
* AFTER a driver swap destroys its worker on the ORIGINAL backend and a paid worker
|
|
82
|
+
* is never orphaned on the now-detached driver. Absent on workers provisioned
|
|
83
|
+
* under the live driver (no swap has happened); treated as `this.driver`.
|
|
84
|
+
*/
|
|
85
|
+
originDriver?: WorkerDriver;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Forward-looking alias for {@link WorkerRecord}. `WorkerRecord` stays the canonical
|
|
89
|
+
* name and shape (every implementation file keeps importing it); `MachineLease`
|
|
90
|
+
* is a pure re-export so downstream dispatch-coordinator code can refer to a
|
|
91
|
+
* leased machine by its domain noun without a second, drift-prone type. The two
|
|
92
|
+
* are structurally identical (an alias, not a subtype), so swapping one for the
|
|
93
|
+
* other is byte-identical.
|
|
94
|
+
*/
|
|
95
|
+
export type MachineLease = WorkerRecord;
|
|
96
|
+
/**
|
|
97
|
+
* A single write-ahead ledger row (cloud drivers only). Written provisionally
|
|
98
|
+
* BEFORE provision, then upserted with `driverRef`/`workerHost` after the
|
|
99
|
+
* driver returns, so a crash mid-provision is recoverable by labels or workerId.
|
|
100
|
+
*/
|
|
101
|
+
export interface LedgerRow {
|
|
102
|
+
workerId: string;
|
|
103
|
+
driverRef: string | null;
|
|
104
|
+
workerHost: string | null;
|
|
105
|
+
labels: ReadonlyArray<string>;
|
|
106
|
+
/** `provisional` until the driver returns; then `active`; `destroying` while reaping. */
|
|
107
|
+
status: "provisional" | "active" | "destroying";
|
|
108
|
+
createdAtMs: number;
|
|
109
|
+
updatedAtMs: number;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* A leased worker handed to the runtime. `release(outcome)` / `fail(reason)` settle
|
|
113
|
+
* the lease exactly once (guarded by `leaseId` + a `settled` flag + worker state);
|
|
114
|
+
* a stale generation or a DESTROYED worker is a no-op that never touches `inFlight`.
|
|
115
|
+
*/
|
|
116
|
+
export interface WorkerLease {
|
|
117
|
+
readonly leaseId: string;
|
|
118
|
+
readonly workerId: string;
|
|
119
|
+
readonly workerHost: string;
|
|
120
|
+
readonly acquiredAtMs: number;
|
|
121
|
+
readonly expiresAtMs: number | null;
|
|
122
|
+
release(outcome?: WorkerOutcome): Promise<void>;
|
|
123
|
+
fail(reason: string): Promise<void>;
|
|
124
|
+
heartbeat(): void;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Request to lease a worker for one run. `affinityKey` is the prior `workerHost`
|
|
128
|
+
* (sticky re-acquire on retry), NOT the pending sentinel. `labels` describe the
|
|
129
|
+
* issue/ensemble slot so the pool can apply per-issue fairness caps.
|
|
130
|
+
*/
|
|
131
|
+
export type AcquireRequest = {
|
|
132
|
+
issueId: string;
|
|
133
|
+
slotIndex: number;
|
|
134
|
+
labels: ReadonlyArray<string>;
|
|
135
|
+
affinityKey?: string | null;
|
|
136
|
+
timeoutMs: number;
|
|
137
|
+
signal?: AbortSignal;
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Result of an acquire. `leased` carries a settled-once `WorkerLease`; `no_capacity`
|
|
141
|
+
* surfaces a typed reason mapped onto the existing `worker_host_capacity` dispatch
|
|
142
|
+
* signal so dispatch can recover (abandon-and-re-evaluate) without backoff churn.
|
|
143
|
+
*/
|
|
144
|
+
export type AcquireResult = {
|
|
145
|
+
status: "leased";
|
|
146
|
+
lease: WorkerLease;
|
|
147
|
+
} | {
|
|
148
|
+
status: "no_capacity";
|
|
149
|
+
reason: "acquire_timeout" | "spend_cap" | "pool_disabled" | "driver_error";
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Read-only view of pool state for tests/observability. Worker-seconds are
|
|
153
|
+
* cumulative wall-clock seconds; `dayKey` is the UTC day the daily cap rolls on.
|
|
154
|
+
*/
|
|
155
|
+
export interface WorkerPoolSnapshot {
|
|
156
|
+
enabled: boolean;
|
|
157
|
+
driver: WorkerDriverKind;
|
|
158
|
+
total: number;
|
|
159
|
+
warmIdle: number;
|
|
160
|
+
leased: number;
|
|
161
|
+
provisioning: number;
|
|
162
|
+
degraded: number;
|
|
163
|
+
inFlight: number;
|
|
164
|
+
spend: {
|
|
165
|
+
concurrentWorkers: number;
|
|
166
|
+
workerSecondsUsed: number;
|
|
167
|
+
dailyWorkerSecondsUsed: number;
|
|
168
|
+
dayKey: string;
|
|
169
|
+
};
|
|
170
|
+
workers: ReadonlyArray<{
|
|
171
|
+
workerId: string;
|
|
172
|
+
workerHost: string;
|
|
173
|
+
state: WorkerState;
|
|
174
|
+
inFlight: number;
|
|
175
|
+
markedForDestroy: boolean;
|
|
176
|
+
}>;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* The embedded pool: a long-lived, reload-surviving singleton that produces each
|
|
180
|
+
* run's `workerHost`. `reconcile` diffs prev-vs-next settings on config reload;
|
|
181
|
+
* `hydrate` re-adopts survivors on startup; `drain` is awaitable so paid cloud
|
|
182
|
+
* workers are destroyed before process exit.
|
|
183
|
+
*/
|
|
184
|
+
export interface WorkerPool {
|
|
185
|
+
acquire(req: AcquireRequest): Promise<AcquireResult>;
|
|
186
|
+
canAcquire(): boolean;
|
|
187
|
+
/**
|
|
188
|
+
* Whether the pool currently GOVERNS worker-host capacity (i.e. `settings.enabled`).
|
|
189
|
+
* The pool survives config reloads, so a reload can DISABLE it (it drains to zero) while the
|
|
190
|
+
* orchestrator's lifetime capacity probe stays installed. The probe reads this to decide whether
|
|
191
|
+
* to delegate capacity to {@link WorkerPool.canAcquire} (governing) or fall through to static/local
|
|
192
|
+
* execution (not governing); a disabled pool that no longer governs must not block dispatch.
|
|
193
|
+
*/
|
|
194
|
+
isEnabled(): boolean;
|
|
195
|
+
reconcile(next: WorkerPoolSettings): void;
|
|
196
|
+
/**
|
|
197
|
+
* Rebuilds the resolved driver IN PLACE (re-resolves `settings.driver` through
|
|
198
|
+
* the registry, re-threads the reaper driver, and rebuilds the ledger
|
|
199
|
+
* `usesLedger` gate) without reconstructing the singleton, capturing each
|
|
200
|
+
* existing worker's origin driver so an in-flight lease that settles AFTER the
|
|
201
|
+
* swap destroys its worker on the ORIGINAL backend. Called by `reconcile` when
|
|
202
|
+
* the driver construction changed (and by the dispatch coordinator before
|
|
203
|
+
* `reconcile` once it owns the reload path).
|
|
204
|
+
*/
|
|
205
|
+
swapDriver(next: WorkerPoolSettings): void;
|
|
206
|
+
/**
|
|
207
|
+
* Registers a callback the pool invokes INSIDE the per-worker mutex immediately
|
|
208
|
+
* before it destroys a machine (every teardown path - a poison settle, a reaper
|
|
209
|
+
* reap, a driver-swap drain, and the drain force-destroy loop - routes through
|
|
210
|
+
* the single `recycle` chokepoint, so the callback fires exactly once per worker
|
|
211
|
+
* just before `driver.destroy`). The dispatch coordinator registers a callback
|
|
212
|
+
* here so a poisoned/recycled machine fails any still-open RunSlot bound to that
|
|
213
|
+
* worker CLEANLY (close its endpoint, settle, deregister) before the host dies,
|
|
214
|
+
* never leaving a hung endpoint to a dead host. The callback must be cheap and
|
|
215
|
+
* non-throwing; the pool swallows a callback error so a misbehaving listener can
|
|
216
|
+
* never block the teardown it precedes. Multiple callbacks may be registered.
|
|
217
|
+
*/
|
|
218
|
+
onMachineRecycling(cb: (workerId: string) => void): void;
|
|
219
|
+
/**
|
|
220
|
+
* OPTIONAL additive hook: registers a callback the pool fires whenever it wakes
|
|
221
|
+
* its FIFO waiters AND capacity is actually leasable (`canAcquire()` is checked
|
|
222
|
+
* AFTER the waiters were woken, so a waiter that consumed the freed worker
|
|
223
|
+
* suppresses the notification). Fires on every capacity-freeing event - a lease
|
|
224
|
+
* settle returning a worker to warm, a reconcile/grow landing a warm worker, a reaper
|
|
225
|
+
* top-up. The runtime registers a poll nudge here so an issue skipped on
|
|
226
|
+
* `worker_host_capacity` re-dispatches within one scheduler turn of a worker
|
|
227
|
+
* landing warm instead of waiting out the poll interval. Callbacks must be
|
|
228
|
+
* cheap; the pool swallows callback errors so a misbehaving listener can never
|
|
229
|
+
* break the settle path that fired it. Optional so structural fakes/legacy
|
|
230
|
+
* pools without the hook stay valid (registration is then skipped).
|
|
231
|
+
*/
|
|
232
|
+
onCapacityAvailable?(cb: () => void): void;
|
|
233
|
+
hydrate(): Promise<void>;
|
|
234
|
+
drain(opts: {
|
|
235
|
+
deadlineMs: number;
|
|
236
|
+
signal?: AbortSignal;
|
|
237
|
+
}): Promise<void>;
|
|
238
|
+
snapshot(): WorkerPoolSnapshot;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Tiny async mutex used to serialize per-worker state mutations and the
|
|
242
|
+
* reaper-vs-release interleave. `runExclusive` queues the body behind any
|
|
243
|
+
* in-flight body and resolves with its value (or rejects with its error),
|
|
244
|
+
* releasing the lock even when the body throws.
|
|
245
|
+
*/
|
|
246
|
+
export interface Mutex {
|
|
247
|
+
runExclusive<T>(fn: () => Promise<T>): Promise<T>;
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lorenz/worker-pool",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@lorenz/domain": "file:../domain",
|
|
13
|
+
"@lorenz/ssh": "file:../ssh",
|
|
14
|
+
"@lorenz/worker-sdk": "file:../worker-sdk"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { WorkerDriver, ProvisionRequest } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Shared, parameterized test body that asserts the {@link WorkerDriver} contract.
|
|
4
|
+
*
|
|
5
|
+
* This module deliberately lives under `src/` (not `test/`) so it compiles to
|
|
6
|
+
* `dist/` and can be imported by every driver's own test file (fake,
|
|
7
|
+
* static-ssh, and each cloud driver behind its own gate). It registers its own
|
|
8
|
+
* `describe`/`test` blocks, so a caller simply invokes it at the top level of a
|
|
9
|
+
* test file:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* runDriverConformanceSuite(() => new FakeWorkerDriver(deps), {
|
|
13
|
+
* suiteName: "FakeWorkerDriver",
|
|
14
|
+
* workerIds: ["worker-a", "worker-b"],
|
|
15
|
+
* makeUnreachable: () => ({ driver, workerId: "worker-down" }),
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* The contract asserted here is intentionally minimal and driver-agnostic:
|
|
20
|
+
* 1. `provision` is idempotent on `workerId` (same id -> same worker).
|
|
21
|
+
* 2. `destroy` is idempotent and tolerant of an already-gone worker.
|
|
22
|
+
* 3. `list()` reflects provisioned-minus-destroyed.
|
|
23
|
+
* 4. `probe` gates a created-but-unreachable worker to `{ ok: false }`.
|
|
24
|
+
*/
|
|
25
|
+
/** Options that tailor the shared suite to a specific driver backend. */
|
|
26
|
+
export interface ConformanceSuiteOptions {
|
|
27
|
+
/** Label for the `describe` block (e.g. the driver class name). */
|
|
28
|
+
suiteName?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Two distinct, driver-acceptable worker ids. For fixed-inventory drivers
|
|
31
|
+
* (static-ssh, `min==max==len`) these must map onto real configured hosts.
|
|
32
|
+
*/
|
|
33
|
+
workerIds: readonly [string, string];
|
|
34
|
+
/** Timeout passed to `provision` (defaults to 30s). */
|
|
35
|
+
provisionTimeoutMs?: number;
|
|
36
|
+
/** Timeout passed to `probe` (defaults to 30s). */
|
|
37
|
+
probeTimeoutMs?: number;
|
|
38
|
+
/** Timeout passed to `destroy` (defaults to 30s). */
|
|
39
|
+
destroyTimeoutMs?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Builds a {@link ProvisionRequest} for a given worker id. Lets a driver supply
|
|
42
|
+
* its own `labels`/`driverOptions`. Defaults to a minimal request with a
|
|
43
|
+
* single `symphony.worker-pool` label and the configured `provisionTimeoutMs`.
|
|
44
|
+
*/
|
|
45
|
+
makeProvisionRequest?: (workerId: string) => ProvisionRequest;
|
|
46
|
+
/**
|
|
47
|
+
* Yields a driver plus a worker id that is created-but-unreachable, so the
|
|
48
|
+
* suite can assert `probe` returns `{ ok: false }`. Optional: a driver that
|
|
49
|
+
* cannot represent an unreachable-but-created worker omits this and the probe
|
|
50
|
+
* gating case is skipped. Both built-in drivers supply it (fake via failure
|
|
51
|
+
* injection, static-ssh via an unroutable host).
|
|
52
|
+
*/
|
|
53
|
+
makeUnreachable?: () => {
|
|
54
|
+
driver: WorkerDriver;
|
|
55
|
+
workerId: string;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Registers the shared {@link WorkerDriver} conformance tests. `makeDriver`
|
|
60
|
+
* must return a FRESH driver per call so each case starts from a clean
|
|
61
|
+
* inventory.
|
|
62
|
+
*/
|
|
63
|
+
export declare function runDriverConformanceSuite(makeDriver: () => WorkerDriver, opts: ConformanceSuiteOptions): void;
|
|
64
|
+
//# sourceMappingURL=conformance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAoB,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,yEAAyE;AACzE,MAAM,WAAW,uBAAuB;IACtC,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,gBAAgB,CAAC;IAC9D;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE;AAYD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,YAAY,EAC9B,IAAI,EAAE,uBAAuB,GAC5B,IAAI,CAkHN"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { POOL_OWNED_LABEL } from "./types.js";
|
|
3
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
4
|
+
function descriptorOf(worker) {
|
|
5
|
+
return { workerId: worker.workerId, workerHost: worker.workerHost, driverRef: worker.driverRef };
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Registers the shared {@link WorkerDriver} conformance tests. `makeDriver`
|
|
9
|
+
* must return a FRESH driver per call so each case starts from a clean
|
|
10
|
+
* inventory.
|
|
11
|
+
*/
|
|
12
|
+
export function runDriverConformanceSuite(makeDriver, opts) {
|
|
13
|
+
const suiteName = opts.suiteName ?? "WorkerDriver conformance";
|
|
14
|
+
const provisionTimeoutMs = opts.provisionTimeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
15
|
+
const probeTimeoutMs = opts.probeTimeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
16
|
+
const destroyTimeoutMs = opts.destroyTimeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
17
|
+
const [workerIdA, workerIdB] = opts.workerIds;
|
|
18
|
+
const provisionRequest = (workerId) => opts.makeProvisionRequest?.(workerId) ?? {
|
|
19
|
+
workerId,
|
|
20
|
+
labels: ["symphony.worker-pool"],
|
|
21
|
+
timeoutMs: provisionTimeoutMs,
|
|
22
|
+
};
|
|
23
|
+
describe(suiteName, () => {
|
|
24
|
+
test("provision is idempotent on workerId", async () => {
|
|
25
|
+
const driver = makeDriver();
|
|
26
|
+
const first = await driver.provision(provisionRequest(workerIdA));
|
|
27
|
+
const second = await driver.provision(provisionRequest(workerIdA));
|
|
28
|
+
// Same idempotency key must yield the same worker identity (no duplicate).
|
|
29
|
+
expect(first.workerId).toBe(workerIdA);
|
|
30
|
+
expect(descriptorOf(second)).toEqual(descriptorOf(first));
|
|
31
|
+
// A second provision must NOT create a duplicate in the inventory.
|
|
32
|
+
const listed = await driver.list();
|
|
33
|
+
const matching = listed.filter((worker) => worker.workerId === workerIdA);
|
|
34
|
+
expect(matching).toHaveLength(1);
|
|
35
|
+
});
|
|
36
|
+
test("list() descriptors carry the pool-owned label", async () => {
|
|
37
|
+
// The pool's hydrate re-adoption and reaper reconcile gate ONLY re-adopt /
|
|
38
|
+
// destroy survivors whose list() descriptor carries POOL_OWNED_LABEL. A
|
|
39
|
+
// descriptor missing it is NEVER touched, so for a driver that creates
|
|
40
|
+
// disposable, pool-owned workers (ephemeral), a leaked survivor (e.g. a paid
|
|
41
|
+
// E2B/Modal/Fly/Docker worker left by a crashed daemon) would leak forever.
|
|
42
|
+
// Pinning the label on every ephemeral driver's list() descriptors
|
|
43
|
+
// catches that class of bug going forward.
|
|
44
|
+
//
|
|
45
|
+
// Non-ephemeral drivers (fixed-inventory static-ssh, in-memory fake) own
|
|
46
|
+
// no disposable resource the pool re-adopts/reaps via this gate, so the
|
|
47
|
+
// label is not load-bearing for them and the assertion does not apply.
|
|
48
|
+
const driver = makeDriver();
|
|
49
|
+
if (!driver.capabilities.ephemeral)
|
|
50
|
+
return;
|
|
51
|
+
await driver.provision(provisionRequest(workerIdA));
|
|
52
|
+
const listed = await driver.list();
|
|
53
|
+
expect(listed.length).toBeGreaterThan(0);
|
|
54
|
+
for (const worker of listed) {
|
|
55
|
+
expect(worker.labels).toContain(POOL_OWNED_LABEL);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
test("list() reflects provisioned-minus-destroyed", async () => {
|
|
59
|
+
const driver = makeDriver();
|
|
60
|
+
const a = await driver.provision(provisionRequest(workerIdA));
|
|
61
|
+
const b = await driver.provision(provisionRequest(workerIdB));
|
|
62
|
+
const afterProvision = (await driver.list()).map((worker) => worker.workerId).sort();
|
|
63
|
+
expect(afterProvision).toContain(workerIdA);
|
|
64
|
+
expect(afterProvision).toContain(workerIdB);
|
|
65
|
+
await driver.destroy(b, { timeoutMs: destroyTimeoutMs, reason: "shrink" });
|
|
66
|
+
const afterDestroy = (await driver.list()).map((worker) => worker.workerId);
|
|
67
|
+
// The surviving worker is still listed; the destroyed one is gone.
|
|
68
|
+
expect(afterDestroy).toContain(a.workerId);
|
|
69
|
+
expect(afterDestroy).not.toContain(b.workerId);
|
|
70
|
+
});
|
|
71
|
+
test("destroy is idempotent (already-gone is ok)", async () => {
|
|
72
|
+
const driver = makeDriver();
|
|
73
|
+
const worker = await driver.provision(provisionRequest(workerIdA));
|
|
74
|
+
// Destroying twice must not throw; the worker is gone after the first call.
|
|
75
|
+
await driver.destroy(worker, { timeoutMs: destroyTimeoutMs, reason: "idle" });
|
|
76
|
+
await driver.destroy(worker, { timeoutMs: destroyTimeoutMs, reason: "idle" });
|
|
77
|
+
const listed = (await driver.list()).map((entry) => entry.workerId);
|
|
78
|
+
expect(listed).not.toContain(worker.workerId);
|
|
79
|
+
});
|
|
80
|
+
test("destroy of a never-provisioned worker is a no-op (does not throw)", async () => {
|
|
81
|
+
const driver = makeDriver();
|
|
82
|
+
const phantom = {
|
|
83
|
+
workerId: workerIdA,
|
|
84
|
+
workerHost: "unknown",
|
|
85
|
+
driverRef: "unknown",
|
|
86
|
+
createdAtMs: 0,
|
|
87
|
+
labels: ["symphony.worker-pool"],
|
|
88
|
+
metadata: {},
|
|
89
|
+
};
|
|
90
|
+
// Destroying a worker the driver has never seen must be tolerated.
|
|
91
|
+
await driver.destroy(phantom, { timeoutMs: destroyTimeoutMs, reason: "orphan" });
|
|
92
|
+
});
|
|
93
|
+
if (opts.makeUnreachable) {
|
|
94
|
+
const makeUnreachable = opts.makeUnreachable;
|
|
95
|
+
test("probe gates a created-but-unreachable worker to ok:false", async () => {
|
|
96
|
+
const { driver, workerId } = makeUnreachable();
|
|
97
|
+
const worker = await driver.provision(provisionRequest(workerId));
|
|
98
|
+
const health = await driver.probe(worker, { timeoutMs: probeTimeoutMs });
|
|
99
|
+
expect(health.ok).toBe(false);
|
|
100
|
+
if (!health.ok) {
|
|
101
|
+
// The failure must carry a non-empty reason for diagnostics.
|
|
102
|
+
expect(typeof health.reason).toBe("string");
|
|
103
|
+
expect(health.reason.length).toBeGreaterThan(0);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=conformance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformance.js","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA0D9C,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,SAAS,YAAY,CAAC,MAAwB;IAK5C,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AACnG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAA8B,EAC9B,IAA6B;IAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,0BAA0B,CAAC;IAC/D,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC;IACzE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,kBAAkB,CAAC;IACjE,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,kBAAkB,CAAC;IACrE,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IAE9C,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAoB,EAAE,CAC9D,IAAI,CAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,IAAI;QACvC,QAAQ;QACR,MAAM,EAAE,CAAC,sBAAsB,CAAC;QAChC,SAAS,EAAE,kBAAkB;KAC9B,CAAC;IAEJ,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;YAEnE,2EAA2E;YAC3E,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAE1D,mEAAmE;YACnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;YAC1E,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC/D,2EAA2E;YAC3E,wEAAwE;YACxE,uEAAuE;YACvE,6EAA6E;YAC7E,4EAA4E;YAC5E,mEAAmE;YACnE,2CAA2C;YAC3C,EAAE;YACF,yEAAyE;YACzE,wEAAwE;YACxE,uEAAuE;YACvE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS;gBAAE,OAAO;YAE3C,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzC,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;gBAC5B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACpD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;YAE9D,MAAM,cAAc,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACrF,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAE5C,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAE3E,MAAM,YAAY,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5E,mEAAmE;YACnE,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;YAEnE,4EAA4E;YAC5E,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9E,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAE9E,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAqB;gBAChC,QAAQ,EAAE,SAAS;gBACnB,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,CAAC;gBACd,MAAM,EAAE,CAAC,sBAAsB,CAAC;gBAChC,QAAQ,EAAE,EAAE;aACb,CAAC;YAEF,mEAAmE;YACnE,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAC7C,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;gBAC1E,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,CAAC;gBAC/C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAElE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;gBACzE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,6DAA6D;oBAC7D,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { WorkerDriverRegistry } from "./registry.js";
|
|
2
|
+
import type { WorkerDescriptor, WorkerDriver, WorkerDriverFactory, DriverCapabilities, DriverDeps, WorkerHealth, ProvisionRequest, TeardownReason } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* An in-memory {@link WorkerDriver} used by the always-on test layer and the
|
|
5
|
+
* memory-tracker e2e demo, and the SDK's reference implementation of the
|
|
6
|
+
* driver contract. It owns no real machines and touches no disk: every
|
|
7
|
+
* operation mutates a `Map<workerId, WorkerDescriptor>` and the yielded `workerHost`
|
|
8
|
+
* is a synthetic `fake://worker-<workerId>` address. Determinism comes from the
|
|
9
|
+
* injected clock (so `createdAtMs` is reproducible), and failure can be
|
|
10
|
+
* injected per-worker so tests can exercise probe/provision/destroy faults and
|
|
11
|
+
* the conformance suite's unreachable-worker case.
|
|
12
|
+
*/
|
|
13
|
+
export declare class FakeWorkerDriver implements WorkerDriver {
|
|
14
|
+
private readonly deps;
|
|
15
|
+
readonly kind = "fake";
|
|
16
|
+
readonly capabilities: DriverCapabilities;
|
|
17
|
+
private readonly workers;
|
|
18
|
+
private readonly probeFailures;
|
|
19
|
+
private readonly provisionFailures;
|
|
20
|
+
private readonly destroyFailures;
|
|
21
|
+
private writes;
|
|
22
|
+
constructor(deps: Pick<DriverDeps, "clock">);
|
|
23
|
+
/** Number of fs writes performed (always 0; the driver is purely in-memory). */
|
|
24
|
+
get fsWriteCount(): number;
|
|
25
|
+
/**
|
|
26
|
+
* Provisions (or re-adopts) a worker for `req.workerId`. Idempotent on `workerId`: a
|
|
27
|
+
* second call returns the SAME descriptor without creating a duplicate. The
|
|
28
|
+
* descriptor is stamped from the injected clock so its `createdAtMs` is
|
|
29
|
+
* deterministic.
|
|
30
|
+
*/
|
|
31
|
+
provision(req: ProvisionRequest): Promise<WorkerDescriptor>;
|
|
32
|
+
/**
|
|
33
|
+
* Reports the worker healthy unless a probe failure was injected for its
|
|
34
|
+
* `workerId`. An unknown/already-destroyed worker is reported `ok: false` rather
|
|
35
|
+
* than throwing (mirroring a real probe against a gone machine).
|
|
36
|
+
*/
|
|
37
|
+
probe(worker: WorkerDescriptor, _opts: {
|
|
38
|
+
timeoutMs: number;
|
|
39
|
+
signal?: AbortSignal;
|
|
40
|
+
}): Promise<WorkerHealth>;
|
|
41
|
+
/**
|
|
42
|
+
* Destroys a worker. Idempotent and tolerant of an already-gone (or
|
|
43
|
+
* never-provisioned) worker. Rejects only when a destroy failure was injected
|
|
44
|
+
* for the worker, leaving the worker in place so the caller can retry.
|
|
45
|
+
*/
|
|
46
|
+
destroy(worker: WorkerDescriptor, _opts: {
|
|
47
|
+
timeoutMs: number;
|
|
48
|
+
reason: TeardownReason;
|
|
49
|
+
}): Promise<void>;
|
|
50
|
+
/** Returns the live inventory (provisioned-minus-destroyed). */
|
|
51
|
+
list(): Promise<WorkerDescriptor[]>;
|
|
52
|
+
/** Injects a probe failure so `probe` returns `{ ok: false, reason }`. */
|
|
53
|
+
injectProbeFailure(workerId: string, reason: string): void;
|
|
54
|
+
/** Clears a previously injected probe failure so the worker probes healthy again. */
|
|
55
|
+
clearProbeFailure(workerId: string): void;
|
|
56
|
+
/** Injects a provision failure so `provision` rejects with `reason`. */
|
|
57
|
+
injectProvisionFailure(workerId: string, reason: string): void;
|
|
58
|
+
/** Clears a previously injected provision failure. */
|
|
59
|
+
clearProvisionFailure(workerId: string): void;
|
|
60
|
+
/** Injects a destroy failure so `destroy` rejects with `reason`. */
|
|
61
|
+
injectDestroyFailure(workerId: string, reason: string): void;
|
|
62
|
+
/** Clears a previously injected destroy failure. */
|
|
63
|
+
clearDestroyFailure(workerId: string): void;
|
|
64
|
+
}
|
|
65
|
+
/** The registered `fake` factory: constructs a fresh in-memory driver per pool. */
|
|
66
|
+
export declare const fakeWorkerDriverFactory: WorkerDriverFactory;
|
|
67
|
+
/**
|
|
68
|
+
* Registers the `fake` driver. The SDK ships this reference driver (rather
|
|
69
|
+
* than an extension) so engine and extension test suites alike can exercise
|
|
70
|
+
* the pool without real machines; the composition root registers it next to
|
|
71
|
+
* the real driver extensions.
|
|
72
|
+
*/
|
|
73
|
+
export declare function registerFakeWorkerDriver(registries?: {
|
|
74
|
+
workerDrivers?: WorkerDriverRegistry | undefined;
|
|
75
|
+
}): void;
|
|
76
|
+
//# sourceMappingURL=fake.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake.d.ts","sourceRoot":"","sources":["../src/fake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACf,MAAM,YAAY,CAAC;AAUpB;;;;;;;;;GASG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IAmBvC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAlBjC,QAAQ,CAAC,IAAI,UAAQ;IACrB,QAAQ,CAAC,YAAY,qBAAgB;IAIrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAI/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAC/D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAK7D,OAAO,CAAC,MAAM,CAAK;gBAEU,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;IAE5D,gFAAgF;IAChF,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;;;;OAKG;IACG,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwBjE;;;;OAIG;IACG,KAAK,CACT,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjD,OAAO,CAAC,YAAY,CAAC;IAWxB;;;;OAIG;IACG,OAAO,CACX,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,GACnD,OAAO,CAAC,IAAI,CAAC;IAShB,gEAAgE;IAC1D,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIzC,0EAA0E;IAC1E,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI1D,qFAAqF;IACrF,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIzC,wEAAwE;IACxE,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI9D,sDAAsD;IACtD,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI7C,oEAAoE;IACpE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5D,oDAAoD;IACpD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAG5C;AAED,mFAAmF;AACnF,eAAO,MAAM,uBAAuB,EAAE,mBAGrC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,GAAE;IAAE,aAAa,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAA;CAAO,GACpE,IAAI,CAKN"}
|