@namzu/sdk 27.1.0 → 28.0.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/CHANGELOG.md +1664 -0
- package/README.md +45 -42
- package/dist/advisory/executor.d.ts.map +1 -1
- package/dist/advisory/executor.js +14 -12
- package/dist/advisory/executor.js.map +1 -1
- package/dist/advisory/registry.d.ts +2 -2
- package/dist/advisory/registry.d.ts.map +1 -1
- package/dist/advisory/registry.js +2 -2
- package/dist/advisory/registry.js.map +1 -1
- package/dist/agents/AbstractAgent.d.ts +44 -2
- package/dist/agents/AbstractAgent.d.ts.map +1 -1
- package/dist/agents/AbstractAgent.js +62 -13
- package/dist/agents/AbstractAgent.js.map +1 -1
- package/dist/agents/PipelineAgent.d.ts +29 -1
- package/dist/agents/PipelineAgent.d.ts.map +1 -1
- package/dist/agents/PipelineAgent.js +33 -4
- package/dist/agents/PipelineAgent.js.map +1 -1
- package/dist/agents/ReactiveAgent.d.ts +2 -1
- package/dist/agents/ReactiveAgent.d.ts.map +1 -1
- package/dist/agents/ReactiveAgent.js +15 -5
- package/dist/agents/ReactiveAgent.js.map +1 -1
- package/dist/agents/RouterAgent.d.ts +2 -1
- package/dist/agents/RouterAgent.d.ts.map +1 -1
- package/dist/agents/RouterAgent.js +21 -13
- package/dist/agents/RouterAgent.js.map +1 -1
- package/dist/agents/SupervisorAgent.d.ts +3 -2
- package/dist/agents/SupervisorAgent.d.ts.map +1 -1
- package/dist/agents/SupervisorAgent.js +29 -14
- package/dist/agents/SupervisorAgent.js.map +1 -1
- package/dist/agents/handle.d.ts +85 -0
- package/dist/agents/handle.d.ts.map +1 -0
- package/dist/agents/handle.js +79 -0
- package/dist/agents/handle.js.map +1 -0
- package/dist/agents/runAgent.d.ts +10 -5
- package/dist/agents/runAgent.d.ts.map +1 -1
- package/dist/agents/runAgent.js +3 -2
- package/dist/agents/runAgent.js.map +1 -1
- package/dist/{verification → authorization}/gate.d.ts +4 -4
- package/dist/authorization/gate.d.ts.map +1 -0
- package/dist/{verification → authorization}/gate.js +31 -24
- package/dist/authorization/gate.js.map +1 -0
- package/dist/authorization/index.d.ts +6 -0
- package/dist/authorization/index.d.ts.map +1 -0
- package/dist/authorization/index.js +14 -0
- package/dist/authorization/index.js.map +1 -0
- package/dist/authorization/permission-presets.d.ts +119 -0
- package/dist/authorization/permission-presets.d.ts.map +1 -0
- package/dist/authorization/permission-presets.js +137 -0
- package/dist/authorization/permission-presets.js.map +1 -0
- package/dist/{verification → authorization}/presets.d.ts +3 -3
- package/dist/authorization/presets.d.ts.map +1 -0
- package/dist/{verification → authorization}/presets.js +12 -0
- package/dist/authorization/presets.js.map +1 -0
- package/dist/authorization/rules.d.ts +4 -0
- package/dist/authorization/rules.d.ts.map +1 -0
- package/dist/{verification → authorization}/rules.js +14 -1
- package/dist/authorization/rules.js.map +1 -0
- package/dist/bridge/a2a/client.d.ts +107 -0
- package/dist/bridge/a2a/client.d.ts.map +1 -0
- package/dist/bridge/a2a/client.js +275 -0
- package/dist/bridge/a2a/client.js.map +1 -0
- package/dist/bridge/a2a/mapper.d.ts.map +1 -1
- package/dist/bridge/a2a/mapper.js +16 -0
- package/dist/bridge/a2a/mapper.js.map +1 -1
- package/dist/bridge/acp/filesystem.d.ts +33 -0
- package/dist/bridge/acp/filesystem.d.ts.map +1 -0
- package/dist/bridge/acp/filesystem.js +30 -0
- package/dist/bridge/acp/filesystem.js.map +1 -0
- package/dist/bridge/acp/index.d.ts +8 -0
- package/dist/bridge/acp/index.d.ts.map +1 -0
- package/dist/bridge/acp/index.js +5 -0
- package/dist/bridge/acp/index.js.map +1 -0
- package/dist/bridge/acp/permission.d.ts +51 -0
- package/dist/bridge/acp/permission.d.ts.map +1 -0
- package/dist/bridge/acp/permission.js +37 -0
- package/dist/bridge/acp/permission.js.map +1 -0
- package/dist/bridge/acp/server.d.ts +163 -0
- package/dist/bridge/acp/server.d.ts.map +1 -0
- package/dist/bridge/acp/server.js +312 -0
- package/dist/bridge/acp/server.js.map +1 -0
- package/dist/bridge/acp/update.d.ts +13 -0
- package/dist/bridge/acp/update.d.ts.map +1 -0
- package/dist/bridge/acp/update.js +94 -0
- package/dist/bridge/acp/update.js.map +1 -0
- package/dist/bridge/mcp/connector/adapter.d.ts +2 -0
- package/dist/bridge/mcp/connector/adapter.d.ts.map +1 -1
- package/dist/bridge/mcp/connector/adapter.js +7 -3
- package/dist/bridge/mcp/connector/adapter.js.map +1 -1
- package/dist/bridge/sse/mapper.d.ts.map +1 -1
- package/dist/bridge/sse/mapper.js +27 -0
- package/dist/bridge/sse/mapper.js.map +1 -1
- package/dist/bus/breaker.d.ts.map +1 -1
- package/dist/bus/breaker.js +15 -10
- package/dist/bus/breaker.js.map +1 -1
- package/dist/bus/index.d.ts.map +1 -1
- package/dist/bus/index.js +10 -8
- package/dist/bus/index.js.map +1 -1
- package/dist/bus/lock.d.ts.map +1 -1
- package/dist/bus/lock.js +36 -19
- package/dist/bus/lock.js.map +1 -1
- package/dist/bus/ownership.d.ts.map +1 -1
- package/dist/bus/ownership.js +17 -9
- package/dist/bus/ownership.js.map +1 -1
- package/dist/compaction/context-window.d.ts +18 -2
- package/dist/compaction/context-window.d.ts.map +1 -1
- package/dist/compaction/context-window.js +15 -1
- package/dist/compaction/context-window.js.map +1 -1
- package/dist/compaction/index.d.ts +3 -0
- package/dist/compaction/index.d.ts.map +1 -1
- package/dist/compaction/index.js +4 -0
- package/dist/compaction/index.js.map +1 -1
- package/dist/compaction/manual.d.ts +58 -0
- package/dist/compaction/manual.d.ts.map +1 -0
- package/dist/compaction/manual.js +104 -0
- package/dist/compaction/manual.js.map +1 -0
- package/dist/compaction/plan.d.ts +92 -0
- package/dist/compaction/plan.d.ts.map +1 -0
- package/dist/compaction/plan.js +149 -0
- package/dist/compaction/plan.js.map +1 -0
- package/dist/compaction/summary.d.ts +23 -0
- package/dist/compaction/summary.d.ts.map +1 -0
- package/dist/compaction/summary.js +27 -0
- package/dist/compaction/summary.js.map +1 -0
- package/dist/compaction/verifier.js +2 -2
- package/dist/compaction/verifier.js.map +1 -1
- package/dist/config/registry.d.ts +104 -0
- package/dist/config/registry.d.ts.map +1 -0
- package/dist/config/registry.js +105 -0
- package/dist/config/registry.js.map +1 -0
- package/dist/config/runtime.d.ts +99 -28
- package/dist/config/runtime.d.ts.map +1 -1
- package/dist/config/runtime.js +27 -0
- package/dist/config/runtime.js.map +1 -1
- package/dist/connector/BaseConnector.d.ts +1 -1
- package/dist/connector/BaseConnector.d.ts.map +1 -1
- package/dist/connector/BaseConnector.js +8 -3
- package/dist/connector/BaseConnector.js.map +1 -1
- package/dist/connector/builtins/http.d.ts +1 -1
- package/dist/connector/builtins/http.d.ts.map +1 -1
- package/dist/connector/builtins/http.js +11 -2
- package/dist/connector/builtins/http.js.map +1 -1
- package/dist/connector/builtins/webhook.d.ts +1 -1
- package/dist/connector/builtins/webhook.d.ts.map +1 -1
- package/dist/connector/builtins/webhook.js +5 -2
- package/dist/connector/builtins/webhook.js.map +1 -1
- package/dist/connector/index.d.ts +4 -15
- package/dist/connector/index.d.ts.map +1 -1
- package/dist/connector/index.js +12 -12
- package/dist/connector/index.js.map +1 -1
- package/dist/connector/mcp/client.d.ts.map +1 -1
- package/dist/connector/mcp/client.js +31 -20
- package/dist/connector/mcp/client.js.map +1 -1
- package/dist/connector/mcp/discovery.d.ts.map +1 -1
- package/dist/connector/mcp/discovery.js +31 -20
- package/dist/connector/mcp/discovery.js.map +1 -1
- package/dist/connector/mcp/http-sse.d.ts +2 -1
- package/dist/connector/mcp/http-sse.d.ts.map +1 -1
- package/dist/connector/mcp/http-sse.js +9 -6
- package/dist/connector/mcp/http-sse.js.map +1 -1
- package/dist/connector/mcp/index.d.ts +2 -3
- package/dist/connector/mcp/index.d.ts.map +1 -1
- package/dist/connector/mcp/index.js +5 -4
- package/dist/connector/mcp/index.js.map +1 -1
- package/dist/connector/mcp/reconnect.d.ts +123 -0
- package/dist/connector/mcp/reconnect.d.ts.map +1 -0
- package/dist/connector/mcp/reconnect.js +121 -0
- package/dist/connector/mcp/reconnect.js.map +1 -0
- package/dist/connector/mcp/server/index.d.ts +28 -0
- package/dist/connector/mcp/server/index.d.ts.map +1 -0
- package/dist/connector/mcp/server/index.js +27 -0
- package/dist/connector/mcp/server/index.js.map +1 -0
- package/dist/connector/mcp/{server-stdio.d.ts → server/server-stdio.d.ts} +3 -2
- package/dist/connector/mcp/server/server-stdio.d.ts.map +1 -0
- package/dist/connector/mcp/{server-stdio.js → server/server-stdio.js} +4 -3
- package/dist/connector/mcp/server/server-stdio.js.map +1 -0
- package/dist/connector/mcp/{server.d.ts → server/server.d.ts} +5 -4
- package/dist/connector/mcp/server/server.d.ts.map +1 -0
- package/dist/connector/mcp/{server.js → server/server.js} +14 -9
- package/dist/connector/mcp/server/server.js.map +1 -0
- package/dist/connector/mcp/stdio.d.ts +2 -1
- package/dist/connector/mcp/stdio.d.ts.map +1 -1
- package/dist/connector/mcp/stdio.js +15 -7
- package/dist/connector/mcp/stdio.js.map +1 -1
- package/dist/connector/mcp/streamable-http.d.ts +2 -1
- package/dist/connector/mcp/streamable-http.d.ts.map +1 -1
- package/dist/connector/mcp/streamable-http.js +5 -4
- package/dist/connector/mcp/streamable-http.js.map +1 -1
- package/dist/{bridge/tools/connector → connector/tools}/adapter.d.ts +4 -4
- package/dist/connector/tools/adapter.d.ts.map +1 -0
- package/dist/{bridge/tools/connector → connector/tools}/adapter.js +1 -1
- package/dist/connector/tools/adapter.js.map +1 -0
- package/dist/{bridge/tools/connector → connector/tools}/definitions.d.ts +2 -2
- package/dist/connector/tools/definitions.d.ts.map +1 -0
- package/dist/{bridge/tools/connector → connector/tools}/definitions.js +2 -2
- package/dist/connector/tools/definitions.js.map +1 -0
- package/dist/connector/tools/index.d.ts.map +1 -0
- package/dist/connector/tools/index.js.map +1 -0
- package/dist/{bridge/tools/connector → connector/tools}/router.d.ts +4 -2
- package/dist/connector/tools/router.d.ts.map +1 -0
- package/dist/{bridge/tools/connector → connector/tools}/router.js +14 -7
- package/dist/connector/tools/router.js.map +1 -0
- package/dist/connector/web/guarded-fetch.d.ts +60 -0
- package/dist/connector/web/guarded-fetch.d.ts.map +1 -0
- package/dist/connector/web/guarded-fetch.js +233 -0
- package/dist/connector/web/guarded-fetch.js.map +1 -0
- package/dist/connector/web/index.d.ts +5 -0
- package/dist/connector/web/index.d.ts.map +1 -0
- package/dist/connector/web/index.js +7 -0
- package/dist/connector/web/index.js.map +1 -0
- package/dist/connector/web/types.d.ts +87 -0
- package/dist/connector/web/types.d.ts.map +1 -0
- package/dist/connector/web/types.js +25 -0
- package/dist/connector/web/types.js.map +1 -0
- package/dist/constants/acp/index.d.ts +97 -0
- package/dist/constants/acp/index.d.ts.map +1 -0
- package/dist/constants/acp/index.js +96 -0
- package/dist/constants/acp/index.js.map +1 -0
- package/dist/constants/authorization/index.d.ts.map +1 -0
- package/dist/constants/authorization/index.js.map +1 -0
- package/dist/constants/credential-env-keys.d.ts +36 -0
- package/dist/constants/credential-env-keys.d.ts.map +1 -0
- package/dist/constants/credential-env-keys.js +62 -0
- package/dist/constants/credential-env-keys.js.map +1 -0
- package/dist/constants/index.d.ts +3 -1
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +3 -1
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/secret-patterns.d.ts +78 -0
- package/dist/constants/secret-patterns.d.ts.map +1 -0
- package/dist/constants/secret-patterns.js +99 -0
- package/dist/constants/secret-patterns.js.map +1 -0
- package/dist/constants/telemetry/index.d.ts +42 -0
- package/dist/constants/telemetry/index.d.ts.map +1 -1
- package/dist/constants/telemetry/index.js +87 -0
- package/dist/constants/telemetry/index.js.map +1 -1
- package/dist/contracts/a2a.d.ts +54 -54
- package/dist/contracts/api.d.ts +12 -1
- package/dist/contracts/api.d.ts.map +1 -1
- package/dist/contracts/schemas.d.ts +12 -12
- package/dist/deprecated-aliases.d.ts +80 -0
- package/dist/deprecated-aliases.d.ts.map +1 -0
- package/dist/deprecated-aliases.js +60 -0
- package/dist/deprecated-aliases.js.map +1 -0
- package/dist/eval/judge.js +2 -2
- package/dist/eval/judge.js.map +1 -1
- package/dist/execution/base.d.ts +1 -1
- package/dist/execution/base.d.ts.map +1 -1
- package/dist/execution/base.js +18 -7
- package/dist/execution/base.js.map +1 -1
- package/dist/execution/code-runtime/types.d.ts +114 -0
- package/dist/execution/code-runtime/types.d.ts.map +1 -0
- package/dist/execution/code-runtime/types.js +40 -0
- package/dist/execution/code-runtime/types.js.map +1 -0
- package/dist/execution/code-runtime/worker.d.ts +6 -0
- package/dist/execution/code-runtime/worker.d.ts.map +1 -0
- package/dist/execution/code-runtime/worker.js +248 -0
- package/dist/execution/code-runtime/worker.js.map +1 -0
- package/dist/{connector/execution → execution}/factory.d.ts +3 -3
- package/dist/execution/factory.d.ts.map +1 -0
- package/dist/{connector/execution → execution}/factory.js +1 -1
- package/dist/execution/factory.js.map +1 -0
- package/dist/{connector/execution → execution}/hybrid.d.ts +5 -3
- package/dist/execution/hybrid.d.ts.map +1 -0
- package/dist/{connector/execution → execution}/hybrid.js +10 -4
- package/dist/execution/hybrid.js.map +1 -0
- package/dist/execution/index.d.ts +23 -0
- package/dist/execution/index.d.ts.map +1 -1
- package/dist/execution/index.js +21 -0
- package/dist/execution/index.js.map +1 -1
- package/dist/execution/local.d.ts +2 -0
- package/dist/execution/local.d.ts.map +1 -1
- package/dist/execution/local.js +2 -2
- package/dist/execution/local.js.map +1 -1
- package/dist/{connector/execution → execution}/remote.d.ts +4 -2
- package/dist/execution/remote.d.ts.map +1 -0
- package/dist/{connector/execution → execution}/remote.js +12 -5
- package/dist/execution/remote.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/invariants/index.d.ts +111 -0
- package/dist/invariants/index.d.ts.map +1 -0
- package/dist/invariants/index.js +138 -0
- package/dist/invariants/index.js.map +1 -0
- package/dist/manager/agent/lifecycle.d.ts +29 -7
- package/dist/manager/agent/lifecycle.d.ts.map +1 -1
- package/dist/manager/agent/lifecycle.js +140 -50
- package/dist/manager/agent/lifecycle.js.map +1 -1
- package/dist/manager/connector/environment.d.ts +2 -0
- package/dist/manager/connector/environment.d.ts.map +1 -1
- package/dist/manager/connector/environment.js +20 -9
- package/dist/manager/connector/environment.js.map +1 -1
- package/dist/manager/connector/lifecycle.d.ts +10 -0
- package/dist/manager/connector/lifecycle.d.ts.map +1 -1
- package/dist/manager/connector/lifecycle.js +21 -11
- package/dist/manager/connector/lifecycle.js.map +1 -1
- package/dist/manager/connector/tenant.d.ts +9 -0
- package/dist/manager/connector/tenant.d.ts.map +1 -1
- package/dist/manager/connector/tenant.js +24 -10
- package/dist/manager/connector/tenant.js.map +1 -1
- package/dist/manager/index.d.ts +6 -2
- package/dist/manager/index.d.ts.map +1 -1
- package/dist/manager/index.js +7 -1
- package/dist/manager/index.js.map +1 -1
- package/dist/manager/project/lifecycle.d.ts +1 -1
- package/dist/manager/project/lifecycle.js +1 -1
- package/dist/manager/run/emergency.d.ts.map +1 -1
- package/dist/manager/run/emergency.js +9 -7
- package/dist/manager/run/emergency.js.map +1 -1
- package/dist/manager/run/persistence.d.ts +46 -4
- package/dist/manager/run/persistence.d.ts.map +1 -1
- package/dist/manager/run/persistence.js +102 -7
- package/dist/manager/run/persistence.js.map +1 -1
- package/dist/manager/topic/lifecycle.d.ts +123 -0
- package/dist/manager/topic/lifecycle.d.ts.map +1 -0
- package/dist/manager/{thread → topic}/lifecycle.js +79 -61
- package/dist/manager/topic/lifecycle.js.map +1 -0
- package/dist/manager/topic/objective.d.ts +77 -0
- package/dist/manager/topic/objective.d.ts.map +1 -0
- package/dist/manager/topic/objective.js +133 -0
- package/dist/manager/topic/objective.js.map +1 -0
- package/dist/model-router/task-router.d.ts.map +1 -0
- package/dist/model-router/task-router.js.map +1 -0
- package/dist/persona/assembler.d.ts +1 -1
- package/dist/persona/assembler.d.ts.map +1 -1
- package/dist/persona/assembler.js +14 -2
- package/dist/persona/assembler.js.map +1 -1
- package/dist/plugin/lifecycle.d.ts +24 -0
- package/dist/plugin/lifecycle.d.ts.map +1 -1
- package/dist/plugin/lifecycle.js +112 -20
- package/dist/plugin/lifecycle.js.map +1 -1
- package/dist/plugin/loader.d.ts +17 -2
- package/dist/plugin/loader.d.ts.map +1 -1
- package/dist/plugin/loader.js +46 -26
- package/dist/plugin/loader.js.map +1 -1
- package/dist/probe/index.d.ts +1 -0
- package/dist/probe/index.d.ts.map +1 -1
- package/dist/probe/registry.d.ts +34 -1
- package/dist/probe/registry.d.ts.map +1 -1
- package/dist/probe/registry.js +5 -4
- package/dist/probe/registry.js.map +1 -1
- package/dist/process/kill-tree.d.ts +40 -0
- package/dist/process/kill-tree.d.ts.map +1 -0
- package/dist/process/kill-tree.js +54 -0
- package/dist/process/kill-tree.js.map +1 -0
- package/dist/prompt/contributions.d.ts +138 -0
- package/dist/prompt/contributions.d.ts.map +1 -0
- package/dist/prompt/contributions.js +78 -0
- package/dist/prompt/contributions.js.map +1 -0
- package/dist/prompt/index.d.ts +3 -0
- package/dist/prompt/index.d.ts.map +1 -0
- package/dist/prompt/index.js +6 -0
- package/dist/prompt/index.js.map +1 -0
- package/dist/provider/attribution.d.ts +45 -0
- package/dist/provider/attribution.d.ts.map +1 -0
- package/dist/provider/attribution.js +23 -0
- package/dist/provider/attribution.js.map +1 -0
- package/dist/provider/{collect.d.ts → collect-chat-completion.d.ts} +3 -3
- package/dist/provider/collect-chat-completion.d.ts.map +1 -0
- package/dist/provider/{collect.js → collect-chat-completion.js} +3 -3
- package/dist/provider/collect-chat-completion.js.map +1 -0
- package/dist/provider/conformance.d.ts +93 -0
- package/dist/provider/conformance.d.ts.map +1 -0
- package/dist/provider/conformance.js +124 -0
- package/dist/provider/conformance.js.map +1 -0
- package/dist/provider/errors.d.ts +29 -0
- package/dist/provider/errors.d.ts.map +1 -1
- package/dist/provider/errors.js +27 -10
- package/dist/provider/errors.js.map +1 -1
- package/dist/provider/fallback.d.ts +1 -1
- package/dist/provider/fallback.d.ts.map +1 -1
- package/dist/provider/fallback.js +27 -9
- package/dist/provider/fallback.js.map +1 -1
- package/dist/provider/idle-timeout.d.ts +47 -0
- package/dist/provider/idle-timeout.d.ts.map +1 -0
- package/dist/provider/idle-timeout.js +61 -0
- package/dist/provider/idle-timeout.js.map +1 -0
- package/dist/provider/instrumentation.d.ts +3 -2
- package/dist/provider/instrumentation.d.ts.map +1 -1
- package/dist/provider/instrumentation.js.map +1 -1
- package/dist/provider/retry.d.ts.map +1 -1
- package/dist/provider/retry.js +58 -21
- package/dist/provider/retry.js.map +1 -1
- package/dist/public-runtime.d.ts +77 -14
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +168 -16
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-tools.d.ts +8 -1
- package/dist/public-tools.d.ts.map +1 -1
- package/dist/public-tools.js +29 -1
- package/dist/public-tools.js.map +1 -1
- package/dist/public-types.d.ts +21 -4
- package/dist/public-types.d.ts.map +1 -1
- package/dist/rag/rag-tool.d.ts.map +1 -1
- package/dist/rag/rag-tool.js +4 -1
- package/dist/rag/rag-tool.js.map +1 -1
- package/dist/read-model/index.d.ts +5 -0
- package/dist/read-model/index.d.ts.map +1 -0
- package/dist/read-model/index.js +7 -0
- package/dist/read-model/index.js.map +1 -0
- package/dist/read-model/registry.d.ts +112 -0
- package/dist/read-model/registry.d.ts.map +1 -0
- package/dist/read-model/registry.js +105 -0
- package/dist/read-model/registry.js.map +1 -0
- package/dist/read-model/run-status.d.ts +43 -0
- package/dist/read-model/run-status.d.ts.map +1 -0
- package/dist/read-model/run-status.js +89 -0
- package/dist/read-model/run-status.js.map +1 -0
- package/dist/registry/{Registry.d.ts → BaseRegistry.d.ts} +2 -2
- package/dist/registry/BaseRegistry.d.ts.map +1 -0
- package/dist/registry/{Registry.js → BaseRegistry.js} +2 -2
- package/dist/registry/BaseRegistry.js.map +1 -0
- package/dist/registry/ManagedRegistry.d.ts +2 -2
- package/dist/registry/ManagedRegistry.d.ts.map +1 -1
- package/dist/registry/ManagedRegistry.js +26 -9
- package/dist/registry/ManagedRegistry.js.map +1 -1
- package/dist/registry/command/index-exports.d.ts +3 -0
- package/dist/registry/command/index-exports.d.ts.map +1 -0
- package/dist/registry/command/index-exports.js +5 -0
- package/dist/registry/command/index-exports.js.map +1 -0
- package/dist/registry/command/index.d.ts +53 -0
- package/dist/registry/command/index.d.ts.map +1 -0
- package/dist/registry/command/index.js +87 -0
- package/dist/registry/command/index.js.map +1 -0
- package/dist/registry/command/kernel-commands.d.ts +32 -0
- package/dist/registry/command/kernel-commands.d.ts.map +1 -0
- package/dist/registry/command/kernel-commands.js +78 -0
- package/dist/registry/command/kernel-commands.js.map +1 -0
- package/dist/registry/connector/scoped.d.ts +2 -1
- package/dist/registry/connector/scoped.d.ts.map +1 -1
- package/dist/registry/connector/scoped.js +6 -5
- package/dist/registry/connector/scoped.js.map +1 -1
- package/dist/registry/index.d.ts +4 -1
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +5 -1
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +15 -12
- package/dist/registry/tool/execute.js.map +1 -1
- package/dist/registry/tool/presentation.d.ts +32 -0
- package/dist/registry/tool/presentation.d.ts.map +1 -0
- package/dist/registry/tool/presentation.js +92 -0
- package/dist/registry/tool/presentation.js.map +1 -0
- package/dist/registry/tool/screen.d.ts.map +1 -1
- package/dist/registry/tool/screen.js +12 -11
- package/dist/registry/tool/screen.js.map +1 -1
- package/dist/run/drain.d.ts +13 -3
- package/dist/run/drain.d.ts.map +1 -1
- package/dist/run/drain.js +10 -0
- package/dist/run/drain.js.map +1 -1
- package/dist/run/reporter.d.ts.map +1 -1
- package/dist/run/reporter.js +203 -149
- package/dist/run/reporter.js.map +1 -1
- package/dist/run-query/index.d.ts +74 -0
- package/dist/run-query/index.d.ts.map +1 -0
- package/dist/run-query/index.js +73 -0
- package/dist/run-query/index.js.map +1 -0
- package/dist/runtime/bidi/session.d.ts.map +1 -1
- package/dist/runtime/bidi/session.js +7 -2
- package/dist/runtime/bidi/session.js.map +1 -1
- package/dist/runtime/decision/fallback.d.ts.map +1 -1
- package/dist/runtime/decision/fallback.js +6 -3
- package/dist/runtime/decision/fallback.js.map +1 -1
- package/dist/runtime/decision/parser.d.ts.map +1 -1
- package/dist/runtime/decision/parser.js +10 -9
- package/dist/runtime/decision/parser.js.map +1 -1
- package/dist/runtime/jobs/registry.d.ts +147 -0
- package/dist/runtime/jobs/registry.d.ts.map +1 -0
- package/dist/runtime/jobs/registry.js +242 -0
- package/dist/runtime/jobs/registry.js.map +1 -0
- package/dist/runtime/query/approval-policy.d.ts +22 -0
- package/dist/runtime/query/approval-policy.d.ts.map +1 -0
- package/dist/runtime/query/approval-policy.js +61 -0
- package/dist/runtime/query/approval-policy.js.map +1 -0
- package/dist/runtime/query/checkpoint.d.ts +3 -3
- package/dist/runtime/query/checkpoint.d.ts.map +1 -1
- package/dist/runtime/query/checkpoint.js +2 -2
- package/dist/runtime/query/checkpoint.js.map +1 -1
- package/dist/runtime/query/context.d.ts +85 -15
- package/dist/runtime/query/context.d.ts.map +1 -1
- package/dist/runtime/query/context.js +57 -14
- package/dist/runtime/query/context.js.map +1 -1
- package/dist/runtime/query/events.d.ts +5 -4
- package/dist/runtime/query/events.d.ts.map +1 -1
- package/dist/runtime/query/events.js +9 -6
- package/dist/runtime/query/events.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +113 -4
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +228 -62
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/guardrail-presets.d.ts.map +1 -1
- package/dist/runtime/query/guardrail-presets.js +11 -14
- package/dist/runtime/query/guardrail-presets.js.map +1 -1
- package/dist/runtime/query/guardrails.d.ts.map +1 -1
- package/dist/runtime/query/guardrails.js +16 -12
- package/dist/runtime/query/guardrails.js.map +1 -1
- package/dist/runtime/query/index.d.ts +140 -16
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +379 -76
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts +32 -0
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +256 -88
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/advisory.js +17 -16
- package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.d.ts +1 -8
- package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.js +202 -178
- package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context.d.ts +52 -6
- package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/context.js +26 -17
- package/dist/runtime/query/iteration/phases/context.js.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.d.ts +2 -2
- package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.js +27 -7
- package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
- package/dist/runtime/query/iteration/phases/working-memory.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/working-memory.js +3 -2
- package/dist/runtime/query/iteration/phases/working-memory.js.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.js +14 -14
- package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
- package/dist/runtime/query/{context-cache.d.ts → prompt-cache.d.ts} +6 -4
- package/dist/runtime/query/prompt-cache.d.ts.map +1 -0
- package/dist/runtime/query/{context-cache.js → prompt-cache.js} +20 -2
- package/dist/runtime/query/prompt-cache.js.map +1 -0
- package/dist/runtime/query/prompt.d.ts +50 -0
- package/dist/runtime/query/prompt.d.ts.map +1 -1
- package/dist/runtime/query/prompt.js +83 -4
- package/dist/runtime/query/prompt.js.map +1 -1
- package/dist/runtime/query/repeat-call.d.ts +42 -0
- package/dist/runtime/query/repeat-call.d.ts.map +1 -0
- package/dist/runtime/query/repeat-call.js +107 -0
- package/dist/runtime/query/repeat-call.js.map +1 -0
- package/dist/runtime/query/replay/mutate.js +8 -1
- package/dist/runtime/query/replay/mutate.js.map +1 -1
- package/dist/runtime/query/result.d.ts +7 -0
- package/dist/runtime/query/result.d.ts.map +1 -1
- package/dist/runtime/query/result.js +38 -10
- package/dist/runtime/query/result.js.map +1 -1
- package/dist/runtime/query/resume-pending.d.ts.map +1 -1
- package/dist/runtime/query/resume-pending.js +19 -17
- package/dist/runtime/query/resume-pending.js.map +1 -1
- package/dist/runtime/query/resume-run.d.ts +2 -2
- package/dist/runtime/query/resume-run.d.ts.map +1 -1
- package/dist/runtime/query/run-state.d.ts +3 -3
- package/dist/runtime/query/run-state.d.ts.map +1 -1
- package/dist/runtime/query/run-state.js +2 -2
- package/dist/runtime/query/run-state.js.map +1 -1
- package/dist/runtime/query/tool-grants.d.ts +7 -0
- package/dist/runtime/query/tool-grants.d.ts.map +1 -1
- package/dist/runtime/query/tool-grants.js +1 -1
- package/dist/runtime/query/tool-grants.js.map +1 -1
- package/dist/runtime/query/tool-output-budget.js +34 -3
- package/dist/runtime/query/tool-output-budget.js.map +1 -1
- package/dist/runtime/query/tool-pause.d.ts.map +1 -1
- package/dist/runtime/query/tool-pause.js +2 -1
- package/dist/runtime/query/tool-pause.js.map +1 -1
- package/dist/runtime/query/tooling.d.ts +10 -2
- package/dist/runtime/query/tooling.d.ts.map +1 -1
- package/dist/runtime/query/tooling.js +3 -0
- package/dist/runtime/query/tooling.js.map +1 -1
- package/dist/sandbox/provider/local.d.ts +10 -0
- package/dist/sandbox/provider/local.d.ts.map +1 -1
- package/dist/sandbox/provider/local.js +77 -23
- package/dist/sandbox/provider/local.js.map +1 -1
- package/dist/sandbox/terminal.d.ts +130 -0
- package/dist/sandbox/terminal.d.ts.map +1 -0
- package/dist/sandbox/terminal.js +119 -0
- package/dist/sandbox/terminal.js.map +1 -0
- package/dist/{gateway → scheduler}/completion-inbox.d.ts +12 -5
- package/dist/scheduler/completion-inbox.d.ts.map +1 -0
- package/dist/{gateway → scheduler}/completion-inbox.js +19 -7
- package/dist/scheduler/completion-inbox.js.map +1 -0
- package/dist/scheduler/delegating.d.ts +90 -0
- package/dist/scheduler/delegating.d.ts.map +1 -0
- package/dist/scheduler/delegating.js +230 -0
- package/dist/scheduler/delegating.js.map +1 -0
- package/dist/{gateway → scheduler}/local.d.ts +10 -2
- package/dist/scheduler/local.d.ts.map +1 -0
- package/dist/{gateway → scheduler}/local.js +20 -11
- package/dist/scheduler/local.js.map +1 -0
- package/dist/session/actor-scope.d.ts +52 -0
- package/dist/session/actor-scope.d.ts.map +1 -0
- package/dist/session/actor-scope.js +112 -0
- package/dist/session/actor-scope.js.map +1 -0
- package/dist/session/errors.d.ts +31 -8
- package/dist/session/errors.d.ts.map +1 -1
- package/dist/session/errors.js +21 -1
- package/dist/session/errors.js.map +1 -1
- package/dist/session/handoff/assignment.d.ts +5 -5
- package/dist/session/handoff/assignment.d.ts.map +1 -1
- package/dist/session/handoff/broadcast.d.ts +2 -2
- package/dist/session/handoff/broadcast.d.ts.map +1 -1
- package/dist/session/handoff/broadcast.js +7 -7
- package/dist/session/handoff/broadcast.js.map +1 -1
- package/dist/session/handoff/single.d.ts +4 -4
- package/dist/session/handoff/single.d.ts.map +1 -1
- package/dist/session/handoff/single.js +4 -4
- package/dist/session/handoff/single.js.map +1 -1
- package/dist/session/migration/filesystem.d.ts +28 -0
- package/dist/session/migration/filesystem.d.ts.map +1 -1
- package/dist/session/migration/filesystem.js +44 -2
- package/dist/session/migration/filesystem.js.map +1 -1
- package/dist/session/migration/id-prefix.d.ts +50 -19
- package/dist/session/migration/id-prefix.d.ts.map +1 -1
- package/dist/session/migration/id-prefix.js +54 -22
- package/dist/session/migration/id-prefix.js.map +1 -1
- package/dist/session/migration/index.d.ts +6 -2
- package/dist/session/migration/index.d.ts.map +1 -1
- package/dist/session/migration/index.js +6 -2
- package/dist/session/migration/index.js.map +1 -1
- package/dist/session/migration/marker.d.ts.map +1 -1
- package/dist/session/migration/marker.js +21 -4
- package/dist/session/migration/marker.js.map +1 -1
- package/dist/session/retention/archive.d.ts.map +1 -1
- package/dist/session/retention/archive.js +25 -11
- package/dist/session/retention/archive.js.map +1 -1
- package/dist/session/workspace/git-worktree.d.ts.map +1 -1
- package/dist/session/workspace/git-worktree.js +17 -8
- package/dist/session/workspace/git-worktree.js.map +1 -1
- package/dist/skills/loader.d.ts +4 -2
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +36 -9
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/registry.d.ts +59 -1
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +154 -20
- package/dist/skills/registry.js.map +1 -1
- package/dist/store/attachment/index.d.ts +111 -0
- package/dist/store/attachment/index.d.ts.map +1 -0
- package/dist/store/attachment/index.js +94 -0
- package/dist/store/attachment/index.js.map +1 -0
- package/dist/store/config/index.d.ts +43 -0
- package/dist/store/config/index.d.ts.map +1 -0
- package/dist/store/config/index.js +51 -0
- package/dist/store/config/index.js.map +1 -0
- package/dist/store/feedback/conformance.d.ts +44 -0
- package/dist/store/feedback/conformance.d.ts.map +1 -0
- package/dist/store/feedback/conformance.js +127 -0
- package/dist/store/feedback/conformance.js.map +1 -0
- package/dist/store/feedback/disk.d.ts +46 -0
- package/dist/store/feedback/disk.d.ts.map +1 -0
- package/dist/store/feedback/disk.js +141 -0
- package/dist/store/feedback/disk.js.map +1 -0
- package/dist/store/feedback/index.d.ts +9 -0
- package/dist/store/feedback/index.d.ts.map +1 -0
- package/dist/store/feedback/index.js +5 -0
- package/dist/store/feedback/index.js.map +1 -0
- package/dist/store/feedback/memory.d.ts +33 -0
- package/dist/store/feedback/memory.d.ts.map +1 -0
- package/dist/store/feedback/memory.js +0 -0
- package/dist/store/feedback/memory.js.map +1 -0
- package/dist/store/feedback/types.d.ts +95 -0
- package/dist/store/feedback/types.d.ts.map +1 -0
- package/dist/store/feedback/types.js +27 -0
- package/dist/store/feedback/types.js.map +1 -0
- package/dist/store/index.d.ts +1 -0
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +4 -0
- package/dist/store/index.js.map +1 -1
- package/dist/store/kv/record-store.d.ts +54 -0
- package/dist/store/kv/record-store.d.ts.map +1 -0
- package/dist/store/kv/record-store.js +94 -0
- package/dist/store/kv/record-store.js.map +1 -0
- package/dist/store/memory/disk.d.ts +2 -0
- package/dist/store/memory/disk.d.ts.map +1 -1
- package/dist/store/memory/disk.js +36 -30
- package/dist/store/memory/disk.js.map +1 -1
- package/dist/store/run/checkpoint-disk.d.ts +4 -4
- package/dist/store/run/checkpoint-disk.d.ts.map +1 -1
- package/dist/store/run/checkpoint-disk.js +22 -1
- package/dist/store/run/checkpoint-disk.js.map +1 -1
- package/dist/store/run/checkpoint-memory.d.ts +4 -4
- package/dist/store/run/checkpoint-memory.d.ts.map +1 -1
- package/dist/store/run/checkpoint-memory.js.map +1 -1
- package/dist/store/run/claim-disk.d.ts +5 -5
- package/dist/store/run/claim-disk.d.ts.map +1 -1
- package/dist/store/run/claim-disk.js +20 -0
- package/dist/store/run/claim-disk.js.map +1 -1
- package/dist/store/run/conformance.d.ts.map +1 -1
- package/dist/store/run/conformance.js +10 -9
- package/dist/store/run/conformance.js.map +1 -1
- package/dist/store/run/disk.d.ts +3 -1
- package/dist/store/run/disk.d.ts.map +1 -1
- package/dist/store/run/disk.js +73 -4
- package/dist/store/run/disk.js.map +1 -1
- package/dist/store/run/listing.d.ts +4 -4
- package/dist/store/run/listing.d.ts.map +1 -1
- package/dist/store/run/listing.js.map +1 -1
- package/dist/store/run/memory.d.ts +5 -0
- package/dist/store/run/memory.d.ts.map +1 -1
- package/dist/store/run/memory.js +20 -1
- package/dist/store/run/memory.js.map +1 -1
- package/dist/store/session/canonical-path.d.ts +32 -0
- package/dist/store/session/canonical-path.d.ts.map +1 -0
- package/dist/store/session/canonical-path.js +46 -0
- package/dist/store/session/canonical-path.js.map +1 -0
- package/dist/store/session/disk.d.ts +46 -2
- package/dist/store/session/disk.d.ts.map +1 -1
- package/dist/store/session/disk.js +191 -205
- package/dist/store/session/disk.js.map +1 -1
- package/dist/store/session/memory.d.ts +10 -2
- package/dist/store/session/memory.d.ts.map +1 -1
- package/dist/store/session/memory.js +36 -4
- package/dist/store/session/memory.js.map +1 -1
- package/dist/store/task/disk.d.ts.map +1 -1
- package/dist/store/task/disk.js +76 -68
- package/dist/store/task/disk.js.map +1 -1
- package/dist/store/topic/index.d.ts +6 -0
- package/dist/store/topic/index.d.ts.map +1 -0
- package/dist/store/topic/index.js +20 -0
- package/dist/store/topic/index.js.map +1 -0
- package/dist/store/topic/memory.d.ts +30 -0
- package/dist/store/topic/memory.d.ts.map +1 -0
- package/dist/store/topic/memory.js +97 -0
- package/dist/store/topic/memory.js.map +1 -0
- package/dist/store/topic/objective.d.ts +104 -0
- package/dist/store/topic/objective.d.ts.map +1 -0
- package/dist/store/topic/objective.js +195 -0
- package/dist/store/topic/objective.js.map +1 -0
- package/dist/store/topic/state.d.ts +60 -0
- package/dist/store/topic/state.d.ts.map +1 -0
- package/dist/store/topic/state.js +128 -0
- package/dist/store/topic/state.js.map +1 -0
- package/dist/streaming/coalesce.d.ts +19 -6
- package/dist/streaming/coalesce.d.ts.map +1 -1
- package/dist/streaming/coalesce.js +13 -4
- package/dist/streaming/coalesce.js.map +1 -1
- package/dist/telemetry/runtime-accessors.d.ts +27 -1
- package/dist/telemetry/runtime-accessors.d.ts.map +1 -1
- package/dist/telemetry/runtime-accessors.js +45 -1
- package/dist/telemetry/runtime-accessors.js.map +1 -1
- package/dist/test-support/ids.d.ts +68 -0
- package/dist/test-support/ids.d.ts.map +1 -0
- package/dist/test-support/ids.js +70 -0
- package/dist/test-support/ids.js.map +1 -0
- package/dist/testing.d.ts +24 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +22 -0
- package/dist/testing.js.map +1 -0
- package/dist/tools/builtins/bash.d.ts +1 -0
- package/dist/tools/builtins/bash.d.ts.map +1 -1
- package/dist/tools/builtins/bash.js +77 -3
- package/dist/tools/builtins/bash.js.map +1 -1
- package/dist/tools/builtins/computer-use.d.ts +8 -8
- package/dist/tools/builtins/edit.d.ts +1 -1
- package/dist/tools/builtins/edit.d.ts.map +1 -1
- package/dist/tools/builtins/edit.js +34 -0
- package/dist/tools/builtins/edit.js.map +1 -1
- package/dist/tools/builtins/index.d.ts +6 -0
- package/dist/tools/builtins/index.d.ts.map +1 -1
- package/dist/tools/builtins/index.js +24 -1
- package/dist/tools/builtins/index.js.map +1 -1
- package/dist/tools/builtins/job.d.ts +6 -0
- package/dist/tools/builtins/job.d.ts.map +1 -0
- package/dist/tools/builtins/job.js +114 -0
- package/dist/tools/builtins/job.js.map +1 -0
- package/dist/tools/builtins/lsp.d.ts +21 -0
- package/dist/tools/builtins/lsp.d.ts.map +1 -0
- package/dist/tools/builtins/lsp.js +186 -0
- package/dist/tools/builtins/lsp.js.map +1 -0
- package/dist/tools/builtins/run-code.d.ts +13 -0
- package/dist/tools/builtins/run-code.d.ts.map +1 -0
- package/dist/tools/builtins/run-code.js +126 -0
- package/dist/tools/builtins/run-code.js.map +1 -0
- package/dist/tools/builtins/skill.d.ts +14 -0
- package/dist/tools/builtins/skill.d.ts.map +1 -0
- package/dist/tools/builtins/skill.js +120 -0
- package/dist/tools/builtins/skill.js.map +1 -0
- package/dist/tools/builtins/web-guidance.d.ts +31 -0
- package/dist/tools/builtins/web-guidance.d.ts.map +1 -0
- package/dist/tools/builtins/web-guidance.js +42 -0
- package/dist/tools/builtins/web-guidance.js.map +1 -0
- package/dist/tools/builtins/web.d.ts +10 -0
- package/dist/tools/builtins/web.d.ts.map +1 -0
- package/dist/tools/builtins/web.js +137 -0
- package/dist/tools/builtins/web.js.map +1 -0
- package/dist/tools/builtins/write-file.d.ts.map +1 -1
- package/dist/tools/builtins/write-file.js +35 -0
- package/dist/tools/builtins/write-file.js.map +1 -1
- package/dist/tools/coordinator/agent.d.ts +2 -2
- package/dist/tools/coordinator/agent.d.ts.map +1 -1
- package/dist/tools/coordinator/index.d.ts +13 -4
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +125 -38
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/tools/coordinator/outcome.d.ts +2 -2
- package/dist/tools/coordinator/outcome.d.ts.map +1 -1
- package/dist/tools/coordinator/outcome.js +1 -1
- package/dist/tools/coordinator/wait-with-idle-bound.d.ts +3 -3
- package/dist/tools/coordinator/wait-with-idle-bound.d.ts.map +1 -1
- package/dist/tools/coordinator/wait-with-idle-bound.js.map +1 -1
- package/dist/tools/defineTool.d.ts +12 -0
- package/dist/tools/defineTool.d.ts.map +1 -1
- package/dist/tools/defineTool.js +2 -0
- package/dist/tools/defineTool.js.map +1 -1
- package/dist/tools/env-scrub.d.ts +66 -0
- package/dist/tools/env-scrub.d.ts.map +1 -0
- package/dist/tools/env-scrub.js +68 -0
- package/dist/tools/env-scrub.js.map +1 -0
- package/dist/tools/memory/read.d.ts.map +1 -1
- package/dist/tools/memory/read.js +5 -1
- package/dist/tools/memory/read.js.map +1 -1
- package/dist/tools/task/create.d.ts.map +1 -1
- package/dist/tools/task/create.js +2 -1
- package/dist/tools/task/create.js.map +1 -1
- package/dist/tools/task/update.d.ts.map +1 -1
- package/dist/tools/task/update.js +7 -3
- package/dist/tools/task/update.js.map +1 -1
- package/dist/types/acp/index.d.ts +161 -0
- package/dist/types/acp/index.d.ts.map +1 -0
- package/dist/types/acp/index.js +2 -0
- package/dist/types/acp/index.js.map +1 -0
- package/dist/types/agent/base.d.ts +62 -5
- package/dist/types/agent/base.d.ts.map +1 -1
- package/dist/types/agent/delegate.d.ts +102 -0
- package/dist/types/agent/delegate.d.ts.map +1 -0
- package/dist/types/agent/delegate.js +2 -0
- package/dist/types/agent/delegate.js.map +1 -0
- package/dist/types/agent/index.d.ts +1 -1
- package/dist/types/agent/index.d.ts.map +1 -1
- package/dist/types/agent/index.js +1 -1
- package/dist/types/agent/index.js.map +1 -1
- package/dist/types/agent/manager.d.ts +7 -1
- package/dist/types/agent/manager.d.ts.map +1 -1
- package/dist/types/agent/reactive.d.ts +24 -3
- package/dist/types/agent/reactive.d.ts.map +1 -1
- package/dist/types/agent/{gateway.d.ts → scheduler.d.ts} +41 -5
- package/dist/types/agent/scheduler.d.ts.map +1 -0
- package/dist/types/agent/scheduler.js +2 -0
- package/dist/types/agent/scheduler.js.map +1 -0
- package/dist/types/agent/supervisor.d.ts +23 -5
- package/dist/types/agent/supervisor.d.ts.map +1 -1
- package/dist/types/agent/task.d.ts +31 -9
- package/dist/types/agent/task.d.ts.map +1 -1
- package/dist/types/agent/working-memory.d.ts +1 -1
- package/dist/types/authorization/index.d.ts +634 -0
- package/dist/types/authorization/index.d.ts.map +1 -0
- package/dist/types/authorization/index.js +103 -0
- package/dist/types/authorization/index.js.map +1 -0
- package/dist/types/bus/index.d.ts +24 -1
- package/dist/types/bus/index.d.ts.map +1 -1
- package/dist/types/code-navigation/index.d.ts +112 -0
- package/dist/types/code-navigation/index.d.ts.map +1 -0
- package/dist/types/code-navigation/index.js +17 -0
- package/dist/types/code-navigation/index.js.map +1 -0
- package/dist/types/command/index.d.ts +74 -0
- package/dist/types/command/index.d.ts.map +1 -0
- package/dist/types/command/index.js +18 -0
- package/dist/types/command/index.js.map +1 -0
- package/dist/types/common/index.d.ts +19 -2
- package/dist/types/common/index.d.ts.map +1 -1
- package/dist/types/common/index.js.map +1 -1
- package/dist/types/connector/mcp.d.ts +8 -0
- package/dist/types/connector/mcp.d.ts.map +1 -1
- package/dist/types/guardrail/index.d.ts +1 -1
- package/dist/types/hitl/policy.d.ts +79 -0
- package/dist/types/hitl/policy.d.ts.map +1 -0
- package/dist/types/hitl/policy.js +2 -0
- package/dist/types/hitl/policy.js.map +1 -0
- package/dist/types/ids/brand.d.ts +55 -0
- package/dist/types/ids/brand.d.ts.map +1 -0
- package/dist/types/ids/brand.js +45 -0
- package/dist/types/ids/brand.js.map +1 -0
- package/dist/types/ids/index.d.ts +98 -39
- package/dist/types/ids/index.d.ts.map +1 -1
- package/dist/types/ids/index.js +5 -1
- package/dist/types/ids/index.js.map +1 -1
- package/dist/types/message/index.d.ts +24 -1
- package/dist/types/message/index.d.ts.map +1 -1
- package/dist/types/message/index.js.map +1 -1
- package/dist/types/plugin/index.d.ts +2 -2
- package/dist/types/project/entity.d.ts +22 -2
- package/dist/types/project/entity.d.ts.map +1 -1
- package/dist/types/provider/interface.d.ts +43 -2
- package/dist/types/provider/interface.d.ts.map +1 -1
- package/dist/types/provider/model.d.ts +16 -2
- package/dist/types/provider/model.d.ts.map +1 -1
- package/dist/types/run/audit.d.ts +150 -0
- package/dist/types/run/audit.d.ts.map +1 -0
- package/dist/types/run/audit.js +39 -0
- package/dist/types/run/audit.js.map +1 -0
- package/dist/types/run/cancel-cause.d.ts +49 -0
- package/dist/types/run/cancel-cause.d.ts.map +1 -0
- package/dist/types/run/cancel-cause.js +39 -0
- package/dist/types/run/cancel-cause.js.map +1 -0
- package/dist/types/run/checkpoint-store.d.ts +29 -11
- package/dist/types/run/checkpoint-store.d.ts.map +1 -1
- package/dist/types/run/config.d.ts +24 -4
- package/dist/types/run/config.d.ts.map +1 -1
- package/dist/types/run/derive-status.d.ts +3 -3
- package/dist/types/run/derive-status.d.ts.map +1 -1
- package/dist/types/run/derive-status.js +1 -1
- package/dist/types/run/entity.d.ts +2 -3
- package/dist/types/run/entity.d.ts.map +1 -1
- package/dist/types/run/event-cursor.d.ts +3 -3
- package/dist/types/run/event-cursor.d.ts.map +1 -1
- package/dist/types/run/events.d.ts +159 -4
- package/dist/types/run/events.d.ts.map +1 -1
- package/dist/types/run/events.js.map +1 -1
- package/dist/types/run/index.d.ts +2 -0
- package/dist/types/run/index.d.ts.map +1 -1
- package/dist/types/run/index.js +2 -0
- package/dist/types/run/index.js.map +1 -1
- package/dist/types/run/metadata.d.ts +2 -2
- package/dist/types/run/metadata.d.ts.map +1 -1
- package/dist/types/run/prepare-step.d.ts +29 -0
- package/dist/types/run/prepare-step.d.ts.map +1 -1
- package/dist/types/run/state.d.ts +33 -10
- package/dist/types/run/state.d.ts.map +1 -1
- package/dist/types/run/state.js +60 -3
- package/dist/types/run/state.js.map +1 -1
- package/dist/types/run/stop-reason.d.ts +9 -0
- package/dist/types/run/stop-reason.d.ts.map +1 -1
- package/dist/types/run/store.d.ts +38 -0
- package/dist/types/run/store.d.ts.map +1 -1
- package/dist/types/sandbox/index.d.ts +38 -0
- package/dist/types/sandbox/index.d.ts.map +1 -1
- package/dist/types/sandbox/index.js +21 -0
- package/dist/types/sandbox/index.js.map +1 -1
- package/dist/types/session/actor.d.ts +2 -2
- package/dist/types/session/actor.d.ts.map +1 -1
- package/dist/types/session/entity.d.ts +9 -7
- package/dist/types/session/entity.d.ts.map +1 -1
- package/dist/types/session/ids.d.ts +3 -1
- package/dist/types/session/ids.d.ts.map +1 -1
- package/dist/types/session/index.d.ts +4 -2
- package/dist/types/session/index.d.ts.map +1 -1
- package/dist/types/session/store.d.ts +51 -22
- package/dist/types/session/store.d.ts.map +1 -1
- package/dist/types/session/sub-session.d.ts +55 -5
- package/dist/types/session/sub-session.d.ts.map +1 -1
- package/dist/types/skills/index.d.ts +41 -0
- package/dist/types/skills/index.d.ts.map +1 -1
- package/dist/types/skills/index.js +17 -1
- package/dist/types/skills/index.js.map +1 -1
- package/dist/types/tool/index.d.ts +175 -1
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/types/tool/presentation.d.ts +53 -0
- package/dist/types/tool/presentation.d.ts.map +1 -0
- package/dist/types/tool/presentation.js +2 -0
- package/dist/types/tool/presentation.js.map +1 -0
- package/dist/types/{thread → topic}/entity.d.ts +34 -26
- package/dist/types/topic/entity.d.ts.map +1 -0
- package/dist/types/{thread → topic}/entity.js.map +1 -1
- package/dist/types/topic/index.d.ts +5 -0
- package/dist/types/topic/index.d.ts.map +1 -0
- package/dist/types/topic/index.js +11 -0
- package/dist/types/topic/index.js.map +1 -0
- package/dist/types/topic/objective.d.ts +86 -0
- package/dist/types/topic/objective.d.ts.map +1 -0
- package/dist/types/topic/objective.js +10 -0
- package/dist/types/topic/objective.js.map +1 -0
- package/dist/types/topic/state.d.ts +56 -0
- package/dist/types/topic/state.d.ts.map +1 -0
- package/dist/types/topic/state.js +10 -0
- package/dist/types/topic/state.js.map +1 -0
- package/dist/types/topic/store.d.ts +95 -0
- package/dist/types/topic/store.d.ts.map +1 -0
- package/dist/types/topic/store.js +29 -0
- package/dist/types/topic/store.js.map +1 -0
- package/dist/types/workspace/ref.d.ts +7 -0
- package/dist/types/workspace/ref.d.ts.map +1 -1
- package/dist/utils/abort.d.ts.map +1 -1
- package/dist/utils/abort.js +13 -1
- package/dist/utils/abort.js.map +1 -1
- package/dist/utils/hash.d.ts +10 -0
- package/dist/utils/hash.d.ts.map +1 -1
- package/dist/utils/hash.js +15 -0
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/id.d.ts +90 -2
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +113 -5
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/log/attributes.d.ts +17 -0
- package/dist/utils/log/attributes.d.ts.map +1 -0
- package/dist/utils/log/attributes.js +2 -0
- package/dist/utils/log/attributes.js.map +1 -0
- package/dist/utils/log/caps.d.ts +27 -0
- package/dist/utils/log/caps.d.ts.map +1 -0
- package/dist/utils/log/caps.js +107 -0
- package/dist/utils/log/caps.js.map +1 -0
- package/dist/utils/log/create-logger.d.ts +28 -0
- package/dist/utils/log/create-logger.d.ts.map +1 -0
- package/dist/utils/log/create-logger.js +168 -0
- package/dist/utils/log/create-logger.js.map +1 -0
- package/dist/utils/log/exception.d.ts +11 -0
- package/dist/utils/log/exception.d.ts.map +1 -0
- package/dist/utils/log/exception.js +108 -0
- package/dist/utils/log/exception.js.map +1 -0
- package/dist/utils/log/index.d.ts +7 -0
- package/dist/utils/log/index.d.ts.map +1 -0
- package/dist/utils/log/index.js +15 -0
- package/dist/utils/log/index.js.map +1 -0
- package/dist/utils/log/process-sink.d.ts +28 -0
- package/dist/utils/log/process-sink.d.ts.map +1 -0
- package/dist/utils/log/process-sink.js +56 -0
- package/dist/utils/log/process-sink.js.map +1 -0
- package/dist/utils/log/redact.d.ts +3 -0
- package/dist/utils/log/redact.d.ts.map +1 -0
- package/dist/utils/log/redact.js +71 -0
- package/dist/utils/log/redact.js.map +1 -0
- package/dist/utils/log/sinks.d.ts +43 -0
- package/dist/utils/log/sinks.d.ts.map +1 -0
- package/dist/utils/log/sinks.js +184 -0
- package/dist/utils/log/sinks.js.map +1 -0
- package/dist/utils/log/templates.d.ts +63 -0
- package/dist/utils/log/templates.d.ts.map +1 -0
- package/dist/utils/log/templates.js +119 -0
- package/dist/utils/log/templates.js.map +1 -0
- package/dist/utils/log/types.d.ts +183 -0
- package/dist/utils/log/types.d.ts.map +1 -0
- package/dist/utils/log/types.js +55 -0
- package/dist/utils/log/types.js.map +1 -0
- package/dist/utils/logger.d.ts +44 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +102 -2
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/renamed-field.d.ts +19 -0
- package/dist/utils/renamed-field.d.ts.map +1 -0
- package/dist/utils/renamed-field.js +29 -0
- package/dist/utils/renamed-field.js.map +1 -0
- package/dist/vault/CredentialProvider.d.ts +89 -0
- package/dist/vault/CredentialProvider.d.ts.map +1 -0
- package/dist/vault/CredentialProvider.js +64 -0
- package/dist/vault/CredentialProvider.js.map +1 -0
- package/dist/vault/InMemoryCredentialVault.d.ts +2 -1
- package/dist/vault/InMemoryCredentialVault.d.ts.map +1 -1
- package/dist/vault/InMemoryCredentialVault.js +15 -5
- package/dist/vault/InMemoryCredentialVault.js.map +1 -1
- package/dist/vault/index.d.ts +3 -0
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/vault/index.js +5 -0
- package/dist/vault/index.js.map +1 -1
- package/dist/vault/instrumentation.d.ts +18 -2
- package/dist/vault/instrumentation.d.ts.map +1 -1
- package/dist/vault/instrumentation.js +47 -0
- package/dist/vault/instrumentation.js.map +1 -1
- package/package.json +4 -4
- package/src/advisory/executor.ts +14 -12
- package/src/advisory/registry.ts +2 -2
- package/src/agents/AGENTS.md +91 -0
- package/src/agents/AbstractAgent.ts +67 -14
- package/src/agents/PipelineAgent.ts +46 -12
- package/src/agents/ReactiveAgent.ts +27 -13
- package/src/agents/RouterAgent.ts +33 -21
- package/src/agents/SupervisorAgent.ts +51 -26
- package/src/agents/handle.ts +149 -0
- package/src/agents/runAgent.ts +14 -7
- package/src/{verification → authorization}/gate.ts +39 -32
- package/src/authorization/index.ts +26 -0
- package/src/authorization/permission-presets.ts +215 -0
- package/src/{verification → authorization}/presets.ts +15 -3
- package/src/{verification → authorization}/rules.ts +16 -3
- package/src/bridge/a2a/client.ts +369 -0
- package/src/bridge/a2a/mapper.ts +17 -0
- package/src/bridge/acp/filesystem.ts +63 -0
- package/src/bridge/acp/index.ts +11 -0
- package/src/bridge/acp/permission.ts +71 -0
- package/src/bridge/acp/server.ts +500 -0
- package/src/bridge/acp/update.ts +109 -0
- package/src/bridge/mcp/connector/adapter.ts +8 -4
- package/src/bridge/sse/mapper.ts +30 -0
- package/src/bus/breaker.ts +15 -10
- package/src/bus/index.ts +10 -8
- package/src/bus/lock.ts +36 -19
- package/src/bus/ownership.ts +17 -9
- package/src/compaction/context-window.ts +23 -1
- package/src/compaction/index.ts +6 -0
- package/src/compaction/manual.ts +177 -0
- package/src/compaction/plan.ts +226 -0
- package/src/compaction/summary.ts +31 -0
- package/src/compaction/verifier.ts +2 -2
- package/src/config/registry.ts +208 -0
- package/src/config/runtime.ts +27 -0
- package/src/connector/BaseConnector.ts +8 -3
- package/src/connector/builtins/http.ts +12 -2
- package/src/connector/builtins/webhook.ts +6 -2
- package/src/connector/index.ts +45 -29
- package/src/connector/mcp/client.ts +32 -20
- package/src/connector/mcp/discovery.ts +31 -20
- package/src/connector/mcp/http-sse.ts +12 -6
- package/src/connector/mcp/index.ts +8 -7
- package/src/connector/mcp/reconnect.ts +194 -0
- package/src/connector/mcp/server/index.ts +32 -0
- package/src/connector/mcp/{server-stdio.ts → server/server-stdio.ts} +5 -4
- package/src/connector/mcp/{server.ts → server/server.ts} +17 -11
- package/src/connector/mcp/stdio.ts +18 -9
- package/src/connector/mcp/streamable-http.ts +8 -4
- package/src/{bridge/tools/connector → connector/tools}/adapter.ts +5 -5
- package/src/{bridge/tools/connector → connector/tools}/definitions.ts +4 -4
- package/src/{bridge/tools/connector → connector/tools}/router.ts +17 -9
- package/src/connector/web/guarded-fetch.ts +288 -0
- package/src/connector/web/index.ts +17 -0
- package/src/connector/web/types.ts +99 -0
- package/src/constants/acp/index.ts +104 -0
- package/src/constants/credential-env-keys.ts +63 -0
- package/src/constants/index.ts +3 -1
- package/src/constants/secret-patterns.ts +102 -0
- package/src/constants/telemetry/index.ts +98 -0
- package/src/contracts/api.ts +11 -0
- package/src/deprecated-aliases.ts +86 -0
- package/src/eval/judge.ts +2 -2
- package/src/execution/base.ts +18 -7
- package/src/execution/code-runtime/types.ts +116 -0
- package/src/execution/code-runtime/worker.ts +266 -0
- package/src/{connector/execution → execution}/factory.ts +3 -3
- package/src/{connector/execution → execution}/hybrid.ts +13 -7
- package/src/execution/index.ts +24 -0
- package/src/execution/local.ts +4 -2
- package/src/{connector/execution → execution}/remote.ts +15 -8
- package/src/index.ts +17 -0
- package/src/invariants/index.ts +201 -0
- package/src/manager/agent/lifecycle.ts +172 -58
- package/src/manager/connector/environment.ts +22 -11
- package/src/manager/connector/lifecycle.ts +30 -11
- package/src/manager/connector/tenant.ts +33 -14
- package/src/manager/index.ts +16 -2
- package/src/manager/project/lifecycle.ts +1 -1
- package/src/manager/run/emergency.ts +9 -7
- package/src/manager/run/persistence.ts +110 -8
- package/src/manager/topic/lifecycle.ts +235 -0
- package/src/manager/topic/objective.ts +203 -0
- package/src/persona/assembler.ts +14 -3
- package/src/plugin/lifecycle.ts +156 -20
- package/src/plugin/loader.ts +67 -16
- package/src/probe/index.ts +1 -0
- package/src/probe/registry.ts +41 -5
- package/src/process/kill-tree.ts +52 -0
- package/src/prompt/contributions.ts +173 -0
- package/src/prompt/index.ts +15 -0
- package/src/provider/attribution.ts +57 -0
- package/src/provider/{collect.ts → collect-chat-completion.ts} +4 -2
- package/src/provider/conformance.ts +189 -0
- package/src/provider/errors.ts +27 -12
- package/src/provider/fallback.ts +32 -10
- package/src/provider/idle-timeout.ts +112 -0
- package/src/provider/instrumentation.ts +4 -2
- package/src/provider/retry.ts +63 -21
- package/src/public-runtime.ts +373 -14
- package/src/public-tools.ts +41 -1
- package/src/public-types.ts +101 -4
- package/src/rag/rag-tool.ts +4 -2
- package/src/read-model/index.ts +14 -0
- package/src/read-model/registry.ts +152 -0
- package/src/read-model/run-status.ts +127 -0
- package/src/registry/{Registry.ts → BaseRegistry.ts} +1 -1
- package/src/registry/ManagedRegistry.ts +26 -9
- package/src/registry/command/index-exports.ts +4 -0
- package/src/registry/command/index.ts +105 -0
- package/src/registry/command/kernel-commands.ts +110 -0
- package/src/registry/connector/scoped.ts +6 -5
- package/src/registry/index.ts +7 -1
- package/src/registry/tool/execute.ts +15 -12
- package/src/registry/tool/presentation.ts +116 -0
- package/src/registry/tool/screen.ts +12 -11
- package/src/run/drain.ts +13 -3
- package/src/run/reporter.ts +208 -153
- package/src/run-query/index.ts +108 -0
- package/src/runtime/bidi/session.ts +7 -2
- package/src/runtime/decision/fallback.ts +6 -3
- package/src/runtime/decision/parser.ts +10 -9
- package/src/runtime/jobs/registry.ts +346 -0
- package/src/runtime/query/approval-policy.ts +78 -0
- package/src/runtime/query/checkpoint.ts +6 -6
- package/src/runtime/query/context.ts +120 -30
- package/src/runtime/query/events.ts +19 -11
- package/src/runtime/query/executor.ts +287 -66
- package/src/runtime/query/guardrail-presets.ts +11 -14
- package/src/runtime/query/guardrails.ts +16 -12
- package/src/runtime/query/index.ts +579 -96
- package/src/runtime/query/iteration/index.ts +269 -87
- package/src/runtime/query/iteration/phases/advisory.ts +17 -16
- package/src/runtime/query/iteration/phases/compaction.ts +235 -187
- package/src/runtime/query/iteration/phases/context.ts +82 -21
- package/src/runtime/query/iteration/phases/tool-review.ts +28 -9
- package/src/runtime/query/iteration/phases/working-memory.ts +3 -2
- package/src/runtime/query/iteration/stream-turn.ts +14 -14
- package/src/runtime/query/{context-cache.ts → prompt-cache.ts} +23 -3
- package/src/runtime/query/prompt.ts +104 -4
- package/src/runtime/query/repeat-call.ts +130 -0
- package/src/runtime/query/replay/mutate.ts +6 -0
- package/src/runtime/query/result.ts +47 -10
- package/src/runtime/query/resume-pending.ts +19 -17
- package/src/runtime/query/resume-run.ts +2 -2
- package/src/runtime/query/run-state.ts +5 -5
- package/src/runtime/query/tool-grants.ts +1 -1
- package/src/runtime/query/tool-output-budget.ts +36 -3
- package/src/runtime/query/tool-pause.ts +2 -1
- package/src/runtime/query/tooling.ts +17 -2
- package/src/sandbox/provider/local.ts +94 -21
- package/src/sandbox/terminal.ts +197 -0
- package/src/{gateway → scheduler}/completion-inbox.ts +20 -10
- package/src/scheduler/delegating.ts +297 -0
- package/src/{gateway → scheduler}/local.ts +24 -15
- package/src/session/actor-scope.ts +121 -0
- package/src/session/errors.ts +30 -8
- package/src/session/handoff/assignment.ts +5 -5
- package/src/session/handoff/broadcast.ts +9 -9
- package/src/session/handoff/single.ts +8 -8
- package/src/session/migration/filesystem.ts +46 -2
- package/src/session/migration/id-prefix.ts +60 -22
- package/src/session/migration/index.ts +5 -0
- package/src/session/migration/marker.ts +19 -4
- package/src/session/retention/archive.ts +32 -12
- package/src/session/workspace/git-worktree.ts +17 -8
- package/src/skills/loader.ts +39 -9
- package/src/skills/registry.ts +177 -20
- package/src/store/attachment/index.ts +182 -0
- package/src/store/config/index.ts +74 -0
- package/src/store/feedback/conformance.ts +193 -0
- package/src/store/feedback/disk.ts +184 -0
- package/src/store/feedback/index.ts +13 -0
- package/src/store/feedback/memory.ts +0 -0
- package/src/store/feedback/types.ts +107 -0
- package/src/store/index.ts +5 -0
- package/src/store/kv/record-store.ts +91 -0
- package/src/store/memory/disk.ts +35 -32
- package/src/store/run/checkpoint-disk.ts +27 -6
- package/src/store/run/checkpoint-memory.ts +8 -8
- package/src/store/run/claim-disk.ts +58 -13
- package/src/store/run/conformance.ts +11 -10
- package/src/store/run/disk.ts +77 -5
- package/src/store/run/listing.ts +6 -6
- package/src/store/run/memory.ts +24 -1
- package/src/store/session/canonical-path.ts +45 -0
- package/src/store/session/disk.ts +216 -191
- package/src/store/session/memory.ts +43 -5
- package/src/store/task/disk.ts +77 -67
- package/src/store/topic/index.ts +33 -0
- package/src/store/topic/memory.ts +111 -0
- package/src/store/topic/objective.ts +290 -0
- package/src/store/topic/state.ts +204 -0
- package/src/streaming/coalesce.ts +19 -5
- package/src/telemetry/runtime-accessors.ts +45 -1
- package/src/test-support/ids.ts +117 -0
- package/src/testing.ts +40 -0
- package/src/tools/builtins/bash.ts +82 -3
- package/src/tools/builtins/edit.ts +36 -0
- package/src/tools/builtins/index.ts +29 -1
- package/src/tools/builtins/job.ts +133 -0
- package/src/tools/builtins/lsp.ts +214 -0
- package/src/tools/builtins/run-code.ts +154 -0
- package/src/tools/builtins/skill.ts +134 -0
- package/src/tools/builtins/web-guidance.ts +46 -0
- package/src/tools/builtins/web.ts +156 -0
- package/src/tools/builtins/write-file.ts +37 -1
- package/src/tools/coordinator/agent.ts +2 -2
- package/src/tools/coordinator/index.ts +144 -40
- package/src/tools/coordinator/outcome.ts +2 -2
- package/src/tools/coordinator/wait-with-idle-bound.ts +3 -3
- package/src/tools/defineTool.ts +14 -0
- package/src/tools/env-scrub.ts +91 -0
- package/src/tools/memory/read.ts +5 -2
- package/src/tools/task/create.ts +2 -1
- package/src/tools/task/update.ts +7 -4
- package/src/types/acp/index.ts +163 -0
- package/src/types/agent/base.ts +67 -5
- package/src/types/agent/delegate.ts +110 -0
- package/src/types/agent/index.ts +1 -1
- package/src/types/agent/manager.ts +7 -1
- package/src/types/agent/reactive.ts +27 -3
- package/src/types/agent/{gateway.ts → scheduler.ts} +41 -4
- package/src/types/agent/supervisor.ts +26 -5
- package/src/types/agent/task.ts +31 -9
- package/src/types/agent/working-memory.ts +1 -1
- package/src/types/{verification → authorization}/index.ts +79 -10
- package/src/types/bus/index.ts +30 -1
- package/src/types/code-navigation/index.ts +99 -0
- package/src/types/command/index.ts +68 -0
- package/src/types/common/index.ts +26 -2
- package/src/types/connector/mcp.ts +8 -0
- package/src/types/guardrail/index.ts +1 -1
- package/src/types/hitl/policy.ts +83 -0
- package/src/types/ids/brand.ts +58 -0
- package/src/types/ids/index.ts +109 -42
- package/src/types/message/index.ts +25 -1
- package/src/types/project/entity.ts +22 -2
- package/src/types/provider/interface.ts +45 -2
- package/src/types/provider/model.ts +16 -2
- package/src/types/run/audit.ts +164 -0
- package/src/types/run/cancel-cause.ts +60 -0
- package/src/types/run/checkpoint-store.ts +31 -11
- package/src/types/run/config.ts +25 -4
- package/src/types/run/derive-status.ts +3 -3
- package/src/types/run/entity.ts +2 -4
- package/src/types/run/event-cursor.ts +3 -3
- package/src/types/run/events.ts +165 -6
- package/src/types/run/index.ts +2 -0
- package/src/types/run/metadata.ts +2 -2
- package/src/types/run/prepare-step.ts +33 -0
- package/src/types/run/state.ts +78 -11
- package/src/types/run/stop-reason.ts +9 -0
- package/src/types/run/store.ts +40 -0
- package/src/types/sandbox/index.ts +37 -0
- package/src/types/session/actor.ts +10 -2
- package/src/types/session/entity.ts +9 -7
- package/src/types/session/ids.ts +2 -0
- package/src/types/session/index.ts +2 -0
- package/src/types/session/store.ts +53 -22
- package/src/types/session/sub-session.ts +50 -9
- package/src/types/skills/index.ts +50 -0
- package/src/types/tool/index.ts +156 -1
- package/src/types/tool/presentation.ts +48 -0
- package/src/types/{thread → topic}/entity.ts +34 -26
- package/src/types/topic/index.ts +23 -0
- package/src/types/topic/objective.ts +93 -0
- package/src/types/topic/state.ts +60 -0
- package/src/types/topic/store.ts +101 -0
- package/src/types/workspace/ref.ts +7 -0
- package/src/utils/abort.ts +16 -1
- package/src/utils/hash.ts +16 -0
- package/src/utils/id.ts +172 -12
- package/src/utils/log/attributes.ts +47 -0
- package/src/utils/log/caps.ts +118 -0
- package/src/utils/log/create-logger.ts +198 -0
- package/src/utils/log/exception.ts +124 -0
- package/src/utils/log/index.ts +24 -0
- package/src/utils/log/process-sink.ts +76 -0
- package/src/utils/log/redact.ts +77 -0
- package/src/utils/log/sinks.ts +205 -0
- package/src/utils/log/templates.ts +161 -0
- package/src/utils/log/types.ts +195 -0
- package/src/utils/logger.ts +121 -2
- package/src/utils/renamed-field.ts +35 -0
- package/src/vault/CredentialProvider.ts +147 -0
- package/src/vault/InMemoryCredentialVault.ts +16 -5
- package/src/vault/index.ts +16 -0
- package/src/vault/instrumentation.ts +63 -2
- package/dist/bridge/tools/connector/adapter.d.ts.map +0 -1
- package/dist/bridge/tools/connector/adapter.js.map +0 -1
- package/dist/bridge/tools/connector/definitions.d.ts.map +0 -1
- package/dist/bridge/tools/connector/definitions.js.map +0 -1
- package/dist/bridge/tools/connector/index.d.ts.map +0 -1
- package/dist/bridge/tools/connector/index.js.map +0 -1
- package/dist/bridge/tools/connector/router.d.ts.map +0 -1
- package/dist/bridge/tools/connector/router.js.map +0 -1
- package/dist/connector/execution/factory.d.ts.map +0 -1
- package/dist/connector/execution/factory.js.map +0 -1
- package/dist/connector/execution/hybrid.d.ts.map +0 -1
- package/dist/connector/execution/hybrid.js.map +0 -1
- package/dist/connector/execution/index.d.ts +0 -6
- package/dist/connector/execution/index.d.ts.map +0 -1
- package/dist/connector/execution/index.js +0 -4
- package/dist/connector/execution/index.js.map +0 -1
- package/dist/connector/execution/remote.d.ts.map +0 -1
- package/dist/connector/execution/remote.js.map +0 -1
- package/dist/connector/mcp/server-stdio.d.ts.map +0 -1
- package/dist/connector/mcp/server-stdio.js.map +0 -1
- package/dist/connector/mcp/server.d.ts.map +0 -1
- package/dist/connector/mcp/server.js.map +0 -1
- package/dist/constants/verification/index.d.ts.map +0 -1
- package/dist/constants/verification/index.js.map +0 -1
- package/dist/gateway/completion-inbox.d.ts.map +0 -1
- package/dist/gateway/completion-inbox.js.map +0 -1
- package/dist/gateway/local.d.ts.map +0 -1
- package/dist/gateway/local.js.map +0 -1
- package/dist/manager/thread/lifecycle.d.ts +0 -105
- package/dist/manager/thread/lifecycle.d.ts.map +0 -1
- package/dist/manager/thread/lifecycle.js.map +0 -1
- package/dist/provider/collect.d.ts.map +0 -1
- package/dist/provider/collect.js.map +0 -1
- package/dist/registry/Registry.d.ts.map +0 -1
- package/dist/registry/Registry.js.map +0 -1
- package/dist/router/task-router.d.ts.map +0 -1
- package/dist/router/task-router.js.map +0 -1
- package/dist/runtime/query/context-cache.d.ts.map +0 -1
- package/dist/runtime/query/context-cache.js.map +0 -1
- package/dist/store/thread/disk.d.ts +0 -41
- package/dist/store/thread/disk.d.ts.map +0 -1
- package/dist/store/thread/disk.js +0 -238
- package/dist/store/thread/disk.js.map +0 -1
- package/dist/store/thread/index.d.ts +0 -4
- package/dist/store/thread/index.d.ts.map +0 -1
- package/dist/store/thread/index.js +0 -6
- package/dist/store/thread/index.js.map +0 -1
- package/dist/store/thread/memory.d.ts +0 -23
- package/dist/store/thread/memory.d.ts.map +0 -1
- package/dist/store/thread/memory.js +0 -90
- package/dist/store/thread/memory.js.map +0 -1
- package/dist/types/agent/gateway.d.ts.map +0 -1
- package/dist/types/agent/gateway.js +0 -2
- package/dist/types/agent/gateway.js.map +0 -1
- package/dist/types/thread/entity.d.ts.map +0 -1
- package/dist/types/thread/index.d.ts +0 -3
- package/dist/types/thread/index.d.ts.map +0 -1
- package/dist/types/thread/index.js +0 -5
- package/dist/types/thread/index.js.map +0 -1
- package/dist/types/thread/store.d.ts +0 -86
- package/dist/types/thread/store.d.ts.map +0 -1
- package/dist/types/thread/store.js +0 -22
- package/dist/types/thread/store.js.map +0 -1
- package/dist/types/verification/index.d.ts +0 -317
- package/dist/types/verification/index.d.ts.map +0 -1
- package/dist/types/verification/index.js +0 -53
- package/dist/types/verification/index.js.map +0 -1
- package/dist/verification/gate.d.ts.map +0 -1
- package/dist/verification/gate.js.map +0 -1
- package/dist/verification/index.d.ts +0 -4
- package/dist/verification/index.d.ts.map +0 -1
- package/dist/verification/index.js +0 -4
- package/dist/verification/index.js.map +0 -1
- package/dist/verification/presets.d.ts.map +0 -1
- package/dist/verification/presets.js.map +0 -1
- package/dist/verification/rules.d.ts +0 -4
- package/dist/verification/rules.d.ts.map +0 -1
- package/dist/verification/rules.js.map +0 -1
- package/src/connector/execution/index.ts +0 -5
- package/src/manager/thread/lifecycle.ts +0 -217
- package/src/store/thread/disk.ts +0 -272
- package/src/store/thread/index.ts +0 -7
- package/src/store/thread/memory.ts +0 -104
- package/src/types/thread/index.ts +0 -6
- package/src/types/thread/store.ts +0 -92
- package/src/verification/index.ts +0 -3
- /package/dist/{bridge/tools/connector → connector/tools}/index.d.ts +0 -0
- /package/dist/{bridge/tools/connector → connector/tools}/index.js +0 -0
- /package/dist/constants/{verification → authorization}/index.d.ts +0 -0
- /package/dist/constants/{verification → authorization}/index.js +0 -0
- /package/dist/{router → model-router}/task-router.d.ts +0 -0
- /package/dist/{router → model-router}/task-router.js +0 -0
- /package/dist/types/{thread → topic}/entity.js +0 -0
- /package/src/{bridge/tools/connector → connector/tools}/index.ts +0 -0
- /package/src/constants/{verification → authorization}/index.ts +0 -0
- /package/src/{router → model-router}/task-router.ts +0 -0
|
@@ -21,15 +21,20 @@
|
|
|
21
21
|
* path lives in Phase 7 of the overall roadmap.
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
|
-
import { appendFile, mkdir, readFile,
|
|
24
|
+
import { appendFile, mkdir, readFile, rm } from 'node:fs/promises'
|
|
25
25
|
import { join } from 'node:path'
|
|
26
|
-
import {
|
|
26
|
+
import {
|
|
27
|
+
ProjectRootPathTakenError,
|
|
28
|
+
StaleProjectError,
|
|
29
|
+
StaleSessionError,
|
|
30
|
+
TenantIsolationError,
|
|
31
|
+
} from '../../session/errors.js'
|
|
27
32
|
import { SessionAlreadySummarizedError } from '../../session/summary/errors.js'
|
|
28
33
|
import type { MessageId, SessionId, TenantId } from '../../types/ids/index.js'
|
|
29
34
|
import type { Message } from '../../types/message/index.js'
|
|
30
35
|
import type { Project, ProjectStatus } from '../../types/project/entity.js'
|
|
31
36
|
import type { Session } from '../../types/session/entity.js'
|
|
32
|
-
import type { ProjectId, SubSessionId, SummaryId,
|
|
37
|
+
import type { ProjectId, SubSessionId, SummaryId, TopicId } from '../../types/session/ids.js'
|
|
33
38
|
import type { SessionMessage } from '../../types/session/messages.js'
|
|
34
39
|
import type {
|
|
35
40
|
CreateProjectParams,
|
|
@@ -46,14 +51,25 @@ import type {
|
|
|
46
51
|
SessionSummaryOutcome,
|
|
47
52
|
SessionSummaryRef,
|
|
48
53
|
} from '../../types/summary/ref.js'
|
|
49
|
-
import { atomicWriteFile } from '../../utils/atomic-write.js'
|
|
50
54
|
import {
|
|
51
55
|
generateMessageId,
|
|
52
56
|
generateProjectId,
|
|
53
57
|
generateSessionId,
|
|
54
58
|
generateSubSessionId,
|
|
55
59
|
} from '../../utils/id.js'
|
|
60
|
+
import { DiskRecordStore } from '../kv/record-store.js'
|
|
61
|
+
// and directly, for the append-only `messages.jsonl` path
|
|
62
|
+
// alone: each line there is a whole record carrying its own stamp, because a
|
|
63
|
+
// log is written by many builds over its lifetime and its lines can
|
|
64
|
+
// legitimately differ in version. Every RECORD read and write goes through
|
|
65
|
+
// `records` above instead.
|
|
66
|
+
// `migrate` and `stamp` are imported directly for the append-only
|
|
67
|
+
// `messages.jsonl` path ALONE: each line there is a whole record carrying
|
|
68
|
+
// its own stamp, because a log is written by many builds over its lifetime
|
|
69
|
+
// and its lines can legitimately differ in version. Every RECORD read and
|
|
70
|
+
// write goes through the `records` primitive below instead.
|
|
56
71
|
import { defineSchema, migrate, stamp } from '../schema.js'
|
|
72
|
+
import { canonicalizePath, rootPathIndexKey } from './canonical-path.js'
|
|
57
73
|
import { getAncestry, getChildren, orderChildren } from './linkage.js'
|
|
58
74
|
import type { LinkageView } from './linkage.js'
|
|
59
75
|
|
|
@@ -65,7 +81,83 @@ import type { LinkageView } from './linkage.js'
|
|
|
65
81
|
* Bump `current` and add the migration for the step you are leaving when
|
|
66
82
|
* the shape changes.
|
|
67
83
|
*/
|
|
68
|
-
const SCHEMA = defineSchema({
|
|
84
|
+
const SCHEMA = defineSchema({
|
|
85
|
+
kind: 'session-store',
|
|
86
|
+
current: 3,
|
|
87
|
+
migrations: {
|
|
88
|
+
1: migrateSessionStoreThreadIdToTopicId,
|
|
89
|
+
2: migrateSessionStoreTopicIdPrefix,
|
|
90
|
+
},
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Read, write and list, through the one implementation.
|
|
95
|
+
*
|
|
96
|
+
* This file carried its own `readJson`, its own `atomicWriteJson` and
|
|
97
|
+
* thirteen `readdir` scans — the same twenty lines four stores each kept a
|
|
98
|
+
* private copy of. The properties are not obvious ones (a missing file is
|
|
99
|
+
* an empty read, a record from a NEWER build is refused rather than read
|
|
100
|
+
* partially and written back with the difference gone, a listing needs a
|
|
101
|
+
* stable order), and every one fixed here had to be remembered into the
|
|
102
|
+
* other three.
|
|
103
|
+
*
|
|
104
|
+
* Deliberately NOT converted: the append-only session event log and
|
|
105
|
+
* `messages.jsonl`. Those are log-shaped, not record-shaped — each line is
|
|
106
|
+
* a whole record and append IS the write-safety primitive — so forcing them
|
|
107
|
+
* through a record store would be a worse fit than the duplication it
|
|
108
|
+
* removes.
|
|
109
|
+
*/
|
|
110
|
+
const records = new DiskRecordStore<unknown>(SCHEMA)
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* v2 → v3: NZ-TOPIC-04 narrows the Topic id prefix from `thd_` to `top_`.
|
|
114
|
+
* The FIELD is already `topicId` (the v1→v2 step above handled that); this
|
|
115
|
+
* step rewrites only the VALUE, and only when it still carries the old
|
|
116
|
+
* prefix — a record already at v3, or one that just arrived here via the
|
|
117
|
+
* v1→v2 step in the same `migrate()` call, has `topicId` starting `top_`
|
|
118
|
+
* (or `thd_`, freshly renamed from `threadId` — this step runs on it next
|
|
119
|
+
* in the same pass) either way, and the check below is what makes running
|
|
120
|
+
* it on an already-correct value a same-object no-op rather than a
|
|
121
|
+
* needless copy. Same one-function-runs-over-every-kind shape as its
|
|
122
|
+
* v1→v2 sibling: only `PersistedSession.topicId` is ever `thd_`-prefixed,
|
|
123
|
+
* so every other kind this schema stamps (project.json, subsession.json,
|
|
124
|
+
* summary.json, each messages.jsonl line) has no `topicId` key and comes
|
|
125
|
+
* back untouched.
|
|
126
|
+
*/
|
|
127
|
+
export function migrateSessionStoreTopicIdPrefix(
|
|
128
|
+
record: Record<string, unknown>,
|
|
129
|
+
): Record<string, unknown> {
|
|
130
|
+
const topicId = record.topicId
|
|
131
|
+
if (typeof topicId !== 'string' || !topicId.startsWith('thd_')) return record
|
|
132
|
+
return { ...record, topicId: `top_${topicId.slice('thd_'.length)}` }
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* v1 → v2: the FK field `session.json` carries to its owning Topic was
|
|
137
|
+
* spelled `threadId`. NZ-TOPIC-01 renamed the layer, not the field
|
|
138
|
+
* (comment on `types/topic/store.ts`); NZ-TOPIC-03 is that rename landing,
|
|
139
|
+
* with this as its data migration.
|
|
140
|
+
*
|
|
141
|
+
* One migration function runs over every kind this schema stamps —
|
|
142
|
+
* project.json, session.json, subsession.json, summary.json, and each
|
|
143
|
+
* `messages.jsonl` line — via the single shared `readJson` / `migrate`
|
|
144
|
+
* call. Only `PersistedSession` ever carried `threadId`; an unconditional
|
|
145
|
+
* rewrite here would stamp `topicId: undefined` onto the other three kinds
|
|
146
|
+
* and onto every message line ever written. Exported, not module-private,
|
|
147
|
+
* so that guarantee is unit-testable directly against the function rather
|
|
148
|
+
* than only observable through whichever deserializer happens to forward
|
|
149
|
+
* an extra field today (most of them don't — they map named fields, which
|
|
150
|
+
* is exactly why a stray key here would otherwise go unnoticed). NOT part
|
|
151
|
+
* of the package's public surface: `store/session/index.ts` re-exports
|
|
152
|
+
* `DiskSessionStore` by explicit name only, no wildcard.
|
|
153
|
+
*/
|
|
154
|
+
export function migrateSessionStoreThreadIdToTopicId(
|
|
155
|
+
record: Record<string, unknown>,
|
|
156
|
+
): Record<string, unknown> {
|
|
157
|
+
if (!('threadId' in record)) return record
|
|
158
|
+
const { threadId, ...rest } = record
|
|
159
|
+
return { ...rest, topicId: threadId }
|
|
160
|
+
}
|
|
69
161
|
|
|
70
162
|
/**
|
|
71
163
|
* Config for {@link DiskSessionStore}. `rootDir` is absolute; all files live
|
|
@@ -80,17 +172,19 @@ interface PersistedProject {
|
|
|
80
172
|
tenantId: TenantId
|
|
81
173
|
name: string
|
|
82
174
|
config: Project['config']
|
|
83
|
-
/** Absent in files written before the
|
|
175
|
+
/** Absent in files written before the project gained a status. */
|
|
84
176
|
status?: ProjectStatus
|
|
85
|
-
/** Absent in files written before the
|
|
177
|
+
/** Absent in files written before the project gained a CAS counter. */
|
|
86
178
|
ownerVersion?: number
|
|
179
|
+
/** Canonical, `realpath`-resolved. Absent for a project not on disk. */
|
|
180
|
+
rootPath?: string
|
|
87
181
|
createdAt: string
|
|
88
182
|
updatedAt: string
|
|
89
183
|
}
|
|
90
184
|
|
|
91
185
|
interface PersistedSession {
|
|
92
186
|
id: SessionId
|
|
93
|
-
|
|
187
|
+
topicId: TopicId
|
|
94
188
|
projectId: ProjectId
|
|
95
189
|
tenantId: TenantId
|
|
96
190
|
status: Session['status']
|
|
@@ -192,6 +286,15 @@ export class DiskSessionStore implements SessionStore {
|
|
|
192
286
|
resource: `project(name=${params.name})`,
|
|
193
287
|
})
|
|
194
288
|
}
|
|
289
|
+
const rootPath =
|
|
290
|
+
params.rootPath === undefined ? undefined : await canonicalizePath(params.rootPath)
|
|
291
|
+
if (rootPath !== undefined) {
|
|
292
|
+
const existing = await this.findProjectByRootPath(rootPath, tenantId)
|
|
293
|
+
if (existing) {
|
|
294
|
+
throw new ProjectRootPathTakenError({ rootPath, existingProjectId: existing.id })
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
195
298
|
const now = new Date()
|
|
196
299
|
const project: Project = {
|
|
197
300
|
id: generateProjectId(),
|
|
@@ -204,19 +307,52 @@ export class DiskSessionStore implements SessionStore {
|
|
|
204
307
|
},
|
|
205
308
|
status: 'open',
|
|
206
309
|
ownerVersion: 0,
|
|
310
|
+
...(rootPath !== undefined ? { rootPath } : {}),
|
|
207
311
|
createdAt: now,
|
|
208
312
|
updatedAt: now,
|
|
209
313
|
}
|
|
210
314
|
const dir = join(this.rootDir, 'projects', project.id)
|
|
211
315
|
await mkdir(dir, { recursive: true })
|
|
212
|
-
await
|
|
316
|
+
await records.write(join(dir, 'project.json'), serializeProject(project))
|
|
213
317
|
this.projectIndex.set(project.id, { projectId: project.id, path: dir })
|
|
318
|
+
if (rootPath !== undefined) await this.writeRootPathIndex(rootPath, tenantId, project.id)
|
|
214
319
|
return project
|
|
215
320
|
}
|
|
216
321
|
|
|
322
|
+
/**
|
|
323
|
+
* Reads ONE index file. Not a scan of `projects/*` — that opens every
|
|
324
|
+
* `project.json` on the machine to answer a question about one
|
|
325
|
+
* directory, and gets slower with every project a host has ever made.
|
|
326
|
+
*/
|
|
327
|
+
async findProjectByRootPath(rootPath: string, tenantId: TenantId): Promise<Project | null> {
|
|
328
|
+
const canonical = await canonicalizePath(rootPath)
|
|
329
|
+
const index = await records.read<Record<string, ProjectId>>(this.rootPathIndexPath())
|
|
330
|
+
// Tenant is part of the KEY, not a filter applied after the lookup.
|
|
331
|
+
// Two tenants may bind projects to the same path on a shared machine,
|
|
332
|
+
// and a path-only key would hand one of them the other's project.
|
|
333
|
+
const projectId = index?.[rootPathIndexKey(canonical, tenantId)]
|
|
334
|
+
if (!projectId) return null
|
|
335
|
+
return await this.getProject(projectId, tenantId)
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
private rootPathIndexPath(): string {
|
|
339
|
+
return join(this.rootDir, 'projects', 'root-path-index.json')
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
private async writeRootPathIndex(
|
|
343
|
+
rootPath: string,
|
|
344
|
+
tenantId: TenantId,
|
|
345
|
+
projectId: ProjectId,
|
|
346
|
+
): Promise<void> {
|
|
347
|
+
const path = this.rootPathIndexPath()
|
|
348
|
+
const index = (await records.read<Record<string, ProjectId>>(path)) ?? {}
|
|
349
|
+
index[rootPathIndexKey(rootPath, tenantId)] = projectId
|
|
350
|
+
await records.write(path, index)
|
|
351
|
+
}
|
|
352
|
+
|
|
217
353
|
async getProject(projectId: ProjectId, tenantId: TenantId): Promise<Project | null> {
|
|
218
354
|
const dir = this.projectDir(projectId)
|
|
219
|
-
const raw = await
|
|
355
|
+
const raw = await records.read<PersistedProject>(join(dir, 'project.json'))
|
|
220
356
|
if (!raw) return null
|
|
221
357
|
this.assertTenant(raw.tenantId, tenantId, `project(${projectId})`)
|
|
222
358
|
return deserializeProject(raw)
|
|
@@ -244,10 +380,7 @@ export class DiskSessionStore implements SessionStore {
|
|
|
244
380
|
},
|
|
245
381
|
updatedAt: new Date(),
|
|
246
382
|
}
|
|
247
|
-
await
|
|
248
|
-
join(this.projectDir(projectId), 'project.json'),
|
|
249
|
-
serializeProject(project),
|
|
250
|
-
)
|
|
383
|
+
await records.write(join(this.projectDir(projectId), 'project.json'), serializeProject(project))
|
|
251
384
|
return project
|
|
252
385
|
}
|
|
253
386
|
|
|
@@ -273,10 +406,7 @@ export class DiskSessionStore implements SessionStore {
|
|
|
273
406
|
ownerVersion: existing.ownerVersion + 1,
|
|
274
407
|
updatedAt: new Date(),
|
|
275
408
|
}
|
|
276
|
-
await
|
|
277
|
-
join(this.projectDir(projectId), 'project.json'),
|
|
278
|
-
serializeProject(project),
|
|
279
|
-
)
|
|
409
|
+
await records.write(join(this.projectDir(projectId), 'project.json'), serializeProject(project))
|
|
280
410
|
return project
|
|
281
411
|
}
|
|
282
412
|
|
|
@@ -287,16 +417,11 @@ export class DiskSessionStore implements SessionStore {
|
|
|
287
417
|
// process — which for a store whose whole point is durability is the
|
|
288
418
|
// wrong answer.
|
|
289
419
|
const projectsRoot = join(this.rootDir, 'projects')
|
|
290
|
-
|
|
291
|
-
try {
|
|
292
|
-
entries = await readdir(projectsRoot)
|
|
293
|
-
} catch {
|
|
294
|
-
return []
|
|
295
|
-
}
|
|
420
|
+
const entries = await records.scanNames(projectsRoot, '')
|
|
296
421
|
|
|
297
422
|
const found: Project[] = []
|
|
298
423
|
for (const entry of entries) {
|
|
299
|
-
const raw = await
|
|
424
|
+
const raw = await records.read<PersistedProject>(join(projectsRoot, entry, 'project.json'))
|
|
300
425
|
if (!raw) continue
|
|
301
426
|
// Another tenant's project is absent, not an error — a listing is a
|
|
302
427
|
// question about what you own, and refusing would leak that
|
|
@@ -321,7 +446,7 @@ export class DiskSessionStore implements SessionStore {
|
|
|
321
446
|
const now = new Date()
|
|
322
447
|
const session: Session = {
|
|
323
448
|
id: generateSessionId(),
|
|
324
|
-
|
|
449
|
+
topicId: params.topicId,
|
|
325
450
|
projectId: params.projectId,
|
|
326
451
|
tenantId,
|
|
327
452
|
status: 'idle',
|
|
@@ -334,7 +459,7 @@ export class DiskSessionStore implements SessionStore {
|
|
|
334
459
|
}
|
|
335
460
|
const dir = join(this.projectDir(params.projectId), 'sessions', session.id)
|
|
336
461
|
await mkdir(dir, { recursive: true })
|
|
337
|
-
await
|
|
462
|
+
await records.write(join(dir, 'session.json'), serializeSession(session))
|
|
338
463
|
this.sessionIndex.set(session.id, {
|
|
339
464
|
sessionId: session.id,
|
|
340
465
|
projectId: params.projectId,
|
|
@@ -346,52 +471,46 @@ export class DiskSessionStore implements SessionStore {
|
|
|
346
471
|
async getSession(sessionId: SessionId, tenantId: TenantId): Promise<Session | null> {
|
|
347
472
|
const located = await this.locateSession(sessionId)
|
|
348
473
|
if (!located) return null
|
|
349
|
-
const raw = await
|
|
474
|
+
const raw = await records.read<PersistedSession>(join(located.path, 'session.json'))
|
|
350
475
|
if (!raw) return null
|
|
351
476
|
this.assertTenant(raw.tenantId, tenantId, `session(${sessionId})`)
|
|
352
477
|
return deserializeSession(raw)
|
|
353
478
|
}
|
|
354
479
|
|
|
355
|
-
async
|
|
480
|
+
async listSessionsByTopic(topicId: TopicId, tenantId: TenantId): Promise<readonly Session[]> {
|
|
356
481
|
// Walk projects/*/sessions/* and filter on the persisted record. Sessions
|
|
357
|
-
// don't live under a
|
|
358
|
-
// denormalized `
|
|
359
|
-
//
|
|
482
|
+
// don't live under a topic-scoped path in the current layout — the
|
|
483
|
+
// denormalized `topicId` on every session.json is the authority.
|
|
484
|
+
//
|
|
485
|
+
// This used to say "matches DiskThreadStore.listThreads in scan
|
|
486
|
+
// semantics" — that class is gone (NZ-TOPIC-02, ses_020: zero production
|
|
487
|
+
// callers, never public, no tests). This function's own scan doesn't
|
|
488
|
+
// change; the comparison just isn't holding anything up anymore, so it's
|
|
489
|
+
// removed rather than left pointing at a deleted file. Renamed from
|
|
490
|
+
// `listSessions` alongside the field it reads (NZ-TOPIC-03).
|
|
360
491
|
//
|
|
361
492
|
// Cost: O(all sessions across all projects in the root) per call. The
|
|
362
493
|
// MVP disk store prioritizes simplicity over index freshness, matching
|
|
363
494
|
// `buildLinkageView` / `locateSession` which use the same pattern. A
|
|
364
|
-
// production driver would maintain a
|
|
495
|
+
// production driver would maintain a topicId → sessionIds secondary
|
|
365
496
|
// index populated on createSession / deleteSession. Acceptable for
|
|
366
|
-
//
|
|
497
|
+
// TopicManager archive/delete today because those operations are
|
|
367
498
|
// admin-initiated and infrequent.
|
|
368
499
|
const projectsDir = join(this.rootDir, 'projects')
|
|
369
|
-
|
|
370
|
-
try {
|
|
371
|
-
projectDirs = await readdir(projectsDir)
|
|
372
|
-
} catch (err) {
|
|
373
|
-
const code = (err as NodeJS.ErrnoException).code
|
|
374
|
-
if (code === 'ENOENT') return []
|
|
375
|
-
throw err
|
|
376
|
-
}
|
|
500
|
+
const projectDirs = await records.scanNames(projectsDir, '')
|
|
377
501
|
|
|
378
502
|
const results: Session[] = []
|
|
379
503
|
for (const rawProject of projectDirs) {
|
|
380
504
|
if (!rawProject.startsWith('prj_')) continue
|
|
381
505
|
const sessionsRoot = join(projectsDir, rawProject, 'sessions')
|
|
382
|
-
|
|
383
|
-
try {
|
|
384
|
-
sessionDirs = await readdir(sessionsRoot)
|
|
385
|
-
} catch {
|
|
386
|
-
continue
|
|
387
|
-
}
|
|
506
|
+
const sessionDirs = await records.scanNames(sessionsRoot, '')
|
|
388
507
|
for (const rawSessionId of sessionDirs) {
|
|
389
508
|
if (!rawSessionId.startsWith('ses_')) continue
|
|
390
509
|
const path = join(sessionsRoot, rawSessionId)
|
|
391
|
-
const raw = await
|
|
510
|
+
const raw = await records.read<PersistedSession>(join(path, 'session.json'))
|
|
392
511
|
if (!raw) continue
|
|
393
512
|
if (raw.tenantId !== tenantId) continue
|
|
394
|
-
if (raw.
|
|
513
|
+
if (raw.topicId !== topicId) continue
|
|
395
514
|
results.push(deserializeSession(raw))
|
|
396
515
|
this.sessionIndex.set(raw.id, {
|
|
397
516
|
sessionId: raw.id,
|
|
@@ -409,24 +528,17 @@ export class DiskSessionStore implements SessionStore {
|
|
|
409
528
|
tenantId: TenantId,
|
|
410
529
|
): Promise<readonly Session[]> {
|
|
411
530
|
// One directory, not the whole root: sessions live under their project,
|
|
412
|
-
// so this is the cheap direction. `
|
|
413
|
-
// project precisely because `
|
|
414
|
-
// rather than expressed in the layout.
|
|
531
|
+
// so this is the cheap direction. `listSessionsByTopic` has to scan
|
|
532
|
+
// every project precisely because `topicId` is denormalised onto the
|
|
533
|
+
// record rather than expressed in the layout.
|
|
415
534
|
const sessionsRoot = join(this.projectDir(projectId), 'sessions')
|
|
416
|
-
|
|
417
|
-
try {
|
|
418
|
-
sessionDirs = await readdir(sessionsRoot)
|
|
419
|
-
} catch (err) {
|
|
420
|
-
const code = (err as NodeJS.ErrnoException).code
|
|
421
|
-
if (code === 'ENOENT') return []
|
|
422
|
-
throw err
|
|
423
|
-
}
|
|
535
|
+
const sessionDirs = await records.scanNames(sessionsRoot, '')
|
|
424
536
|
|
|
425
537
|
const results: Session[] = []
|
|
426
538
|
for (const rawSessionId of sessionDirs) {
|
|
427
539
|
if (!rawSessionId.startsWith('ses_')) continue
|
|
428
540
|
const path = join(sessionsRoot, rawSessionId)
|
|
429
|
-
const raw = await
|
|
541
|
+
const raw = await records.read<PersistedSession>(join(path, 'session.json'))
|
|
430
542
|
if (!raw) continue
|
|
431
543
|
if (raw.tenantId !== tenantId) continue
|
|
432
544
|
results.push(deserializeSession(raw))
|
|
@@ -453,7 +565,7 @@ export class DiskSessionStore implements SessionStore {
|
|
|
453
565
|
resource: `session(${session.id}) payload`,
|
|
454
566
|
})
|
|
455
567
|
}
|
|
456
|
-
const existing = await
|
|
568
|
+
const existing = await records.read<PersistedSession>(join(located.path, 'session.json'))
|
|
457
569
|
if (existing) {
|
|
458
570
|
this.assertTenant(existing.tenantId, tenantId, `session(${session.id})`)
|
|
459
571
|
}
|
|
@@ -473,13 +585,13 @@ export class DiskSessionStore implements SessionStore {
|
|
|
473
585
|
})
|
|
474
586
|
}
|
|
475
587
|
const updated: Session = { ...session, updatedAt: new Date() }
|
|
476
|
-
await
|
|
588
|
+
await records.write(join(located.path, 'session.json'), serializeSession(updated))
|
|
477
589
|
}
|
|
478
590
|
|
|
479
591
|
async deleteSession(sessionId: SessionId, tenantId: TenantId): Promise<void> {
|
|
480
592
|
const located = await this.locateSession(sessionId)
|
|
481
593
|
if (!located) return // Idempotent: missing = no-op.
|
|
482
|
-
const existing = await
|
|
594
|
+
const existing = await records.read<PersistedSession>(join(located.path, 'session.json'))
|
|
483
595
|
if (!existing) return
|
|
484
596
|
this.assertTenant(existing.tenantId, tenantId, `session(${sessionId})`)
|
|
485
597
|
|
|
@@ -488,13 +600,7 @@ export class DiskSessionStore implements SessionStore {
|
|
|
488
600
|
// We check BOTH directions (this session as parent, or as child) to
|
|
489
601
|
// match the in-memory semantics.
|
|
490
602
|
const subsDir = join(located.path, 'subsessions')
|
|
491
|
-
|
|
492
|
-
try {
|
|
493
|
-
subEntries = await readdir(subsDir)
|
|
494
|
-
} catch (err) {
|
|
495
|
-
const code = (err as NodeJS.ErrnoException).code
|
|
496
|
-
if (code !== 'ENOENT') throw err
|
|
497
|
-
}
|
|
603
|
+
const subEntries = await records.scanNames(subsDir, '')
|
|
498
604
|
if (subEntries.some((e) => e.startsWith('sub_'))) {
|
|
499
605
|
throw new Error(
|
|
500
606
|
`Session ${sessionId} has attached sub-sessions; delete them before deleting the session`,
|
|
@@ -507,35 +613,18 @@ export class DiskSessionStore implements SessionStore {
|
|
|
507
613
|
// deleteSubSession + deleteSession call on the child (no orphans at
|
|
508
614
|
// steady state).
|
|
509
615
|
const projectsDir = join(this.rootDir, 'projects')
|
|
510
|
-
|
|
511
|
-
try {
|
|
512
|
-
projectDirs = await readdir(projectsDir)
|
|
513
|
-
} catch (err) {
|
|
514
|
-
const code = (err as NodeJS.ErrnoException).code
|
|
515
|
-
if (code === 'ENOENT') projectDirs = []
|
|
516
|
-
else throw err
|
|
517
|
-
}
|
|
616
|
+
const projectDirs = await records.scanNames(projectsDir, '')
|
|
518
617
|
for (const rawProject of projectDirs) {
|
|
519
618
|
if (!rawProject.startsWith('prj_')) continue
|
|
520
619
|
const sessionsRoot = join(projectsDir, rawProject, 'sessions')
|
|
521
|
-
|
|
522
|
-
try {
|
|
523
|
-
siblingSessions = await readdir(sessionsRoot)
|
|
524
|
-
} catch {
|
|
525
|
-
continue
|
|
526
|
-
}
|
|
620
|
+
const siblingSessions = await records.scanNames(sessionsRoot, '')
|
|
527
621
|
for (const rawSib of siblingSessions) {
|
|
528
622
|
if (!rawSib.startsWith('ses_')) continue
|
|
529
623
|
const sibSubsDir = join(sessionsRoot, rawSib, 'subsessions')
|
|
530
|
-
|
|
531
|
-
try {
|
|
532
|
-
sibSubs = await readdir(sibSubsDir)
|
|
533
|
-
} catch {
|
|
534
|
-
continue
|
|
535
|
-
}
|
|
624
|
+
const sibSubs = await records.scanNames(sibSubsDir, '')
|
|
536
625
|
for (const rawSub of sibSubs) {
|
|
537
626
|
if (!rawSub.startsWith('sub_')) continue
|
|
538
|
-
const subRaw = await
|
|
627
|
+
const subRaw = await records.read<PersistedSubSession>(
|
|
539
628
|
join(sibSubsDir, rawSub, 'subsession.json'),
|
|
540
629
|
)
|
|
541
630
|
if (!subRaw) continue
|
|
@@ -583,7 +672,7 @@ export class DiskSessionStore implements SessionStore {
|
|
|
583
672
|
}
|
|
584
673
|
const dir = join(parentLoc.path, 'subsessions', subSession.id)
|
|
585
674
|
await mkdir(dir, { recursive: true })
|
|
586
|
-
await
|
|
675
|
+
await records.write(join(dir, 'subsession.json'), serializeSubSession(subSession, tenantId))
|
|
587
676
|
this.subSessionIndex.set(subSession.id, {
|
|
588
677
|
subSessionId: subSession.id,
|
|
589
678
|
sessionId: params.parentSessionId,
|
|
@@ -596,7 +685,7 @@ export class DiskSessionStore implements SessionStore {
|
|
|
596
685
|
async getSubSession(subSessionId: SubSessionId, tenantId: TenantId): Promise<SubSession | null> {
|
|
597
686
|
const located = await this.locateSubSession(subSessionId)
|
|
598
687
|
if (!located) return null
|
|
599
|
-
const raw = await
|
|
688
|
+
const raw = await records.read<PersistedSubSession>(join(located.path, 'subsession.json'))
|
|
600
689
|
if (!raw) return null
|
|
601
690
|
this.assertTenant(raw.tenantId, tenantId, `sub-session(${subSessionId})`)
|
|
602
691
|
return deserializeSubSession(raw)
|
|
@@ -607,12 +696,12 @@ export class DiskSessionStore implements SessionStore {
|
|
|
607
696
|
if (!located) {
|
|
608
697
|
throw new Error(`SubSession ${subSession.id} not found`)
|
|
609
698
|
}
|
|
610
|
-
const existing = await
|
|
699
|
+
const existing = await records.read<PersistedSubSession>(join(located.path, 'subsession.json'))
|
|
611
700
|
if (existing) {
|
|
612
701
|
this.assertTenant(existing.tenantId, tenantId, `sub-session(${subSession.id})`)
|
|
613
702
|
}
|
|
614
703
|
const updated: SubSession = { ...subSession, updatedAt: new Date() }
|
|
615
|
-
await
|
|
704
|
+
await records.write(
|
|
616
705
|
join(located.path, 'subsession.json'),
|
|
617
706
|
serializeSubSession(updated, tenantId),
|
|
618
707
|
)
|
|
@@ -621,7 +710,7 @@ export class DiskSessionStore implements SessionStore {
|
|
|
621
710
|
async deleteSubSession(subSessionId: SubSessionId, tenantId: TenantId): Promise<void> {
|
|
622
711
|
const located = await this.locateSubSession(subSessionId)
|
|
623
712
|
if (!located) return // Idempotent: missing = no-op.
|
|
624
|
-
const existing = await
|
|
713
|
+
const existing = await records.read<PersistedSubSession>(join(located.path, 'subsession.json'))
|
|
625
714
|
if (!existing) {
|
|
626
715
|
// Record vanished between locate + read — treat as already deleted.
|
|
627
716
|
this.subSessionIndex.delete(subSessionId)
|
|
@@ -643,7 +732,7 @@ export class DiskSessionStore implements SessionStore {
|
|
|
643
732
|
const located = await this.locateSession(sessionId)
|
|
644
733
|
if (!located) throw new Error(`Session ${sessionId} not found`)
|
|
645
734
|
|
|
646
|
-
const session = await
|
|
735
|
+
const session = await records.read<PersistedSession>(join(located.path, 'session.json'))
|
|
647
736
|
if (!session) throw new Error(`Session ${sessionId} not found on disk`)
|
|
648
737
|
this.assertTenant(session.tenantId, tenantId, `session(${sessionId})`)
|
|
649
738
|
|
|
@@ -678,7 +767,7 @@ export class DiskSessionStore implements SessionStore {
|
|
|
678
767
|
const located = await this.locateSession(sessionId)
|
|
679
768
|
if (!located) return []
|
|
680
769
|
|
|
681
|
-
const session = await
|
|
770
|
+
const session = await records.read<PersistedSession>(join(located.path, 'session.json'))
|
|
682
771
|
if (!session) return []
|
|
683
772
|
this.assertTenant(session.tenantId, tenantId, `session(${sessionId})`)
|
|
684
773
|
|
|
@@ -761,14 +850,14 @@ export class DiskSessionStore implements SessionStore {
|
|
|
761
850
|
if (!located) {
|
|
762
851
|
throw new Error(`Session ${summary.sessionRef} not found`)
|
|
763
852
|
}
|
|
764
|
-
const sessionRaw = await
|
|
853
|
+
const sessionRaw = await records.read<PersistedSession>(join(located.path, 'session.json'))
|
|
765
854
|
if (!sessionRaw) {
|
|
766
855
|
throw new Error(`Session ${summary.sessionRef} not found on disk`)
|
|
767
856
|
}
|
|
768
857
|
this.assertTenant(sessionRaw.tenantId, tenantId, `session(${summary.sessionRef})`)
|
|
769
858
|
|
|
770
859
|
const summaryPath = join(located.path, 'summary.json')
|
|
771
|
-
const existingRaw = await
|
|
860
|
+
const existingRaw = await records.read<PersistedSummary>(summaryPath)
|
|
772
861
|
if (existingRaw) {
|
|
773
862
|
this.assertTenant(existingRaw.tenantId, tenantId, `summary(${existingRaw.id})`)
|
|
774
863
|
if (existingRaw.id !== summary.id) {
|
|
@@ -781,7 +870,7 @@ export class DiskSessionStore implements SessionStore {
|
|
|
781
870
|
// to the status flip so crash-between-writes is recovered.
|
|
782
871
|
} else {
|
|
783
872
|
// Step 1: persist summary.
|
|
784
|
-
await
|
|
873
|
+
await records.write(summaryPath, serializeSummary(summary))
|
|
785
874
|
}
|
|
786
875
|
|
|
787
876
|
// Step 2: flip session status atomically if still non-terminal.
|
|
@@ -791,14 +880,14 @@ export class DiskSessionStore implements SessionStore {
|
|
|
791
880
|
status: 'idle',
|
|
792
881
|
updatedAt: new Date().toISOString(),
|
|
793
882
|
}
|
|
794
|
-
await
|
|
883
|
+
await records.write(join(located.path, 'session.json'), flipped)
|
|
795
884
|
}
|
|
796
885
|
}
|
|
797
886
|
|
|
798
887
|
async getSummary(sessionId: SessionId, tenantId: TenantId): Promise<SessionSummaryRef | null> {
|
|
799
888
|
const located = await this.locateSession(sessionId)
|
|
800
889
|
if (!located) return null
|
|
801
|
-
const raw = await
|
|
890
|
+
const raw = await records.read<PersistedSummary>(join(located.path, 'summary.json'))
|
|
802
891
|
if (!raw) return null
|
|
803
892
|
this.assertTenant(raw.tenantId, tenantId, `summary(${raw.id})`)
|
|
804
893
|
return deserializeSummary(raw)
|
|
@@ -825,24 +914,14 @@ export class DiskSessionStore implements SessionStore {
|
|
|
825
914
|
if (cached) return cached
|
|
826
915
|
|
|
827
916
|
const projectsDir = join(this.rootDir, 'projects')
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
} catch (err) {
|
|
832
|
-
const code = (err as NodeJS.ErrnoException).code
|
|
833
|
-
if (code === 'ENOENT') return null
|
|
834
|
-
throw err
|
|
835
|
-
}
|
|
917
|
+
// ENOENT lists as empty; the loop below then falls through to the
|
|
918
|
+
// same `return null` the old catch took directly.
|
|
919
|
+
const projectDirs = await records.scanNames(projectsDir, '')
|
|
836
920
|
for (const rawId of projectDirs) {
|
|
837
921
|
if (!rawId.startsWith('prj_')) continue
|
|
838
922
|
const projectId = rawId as ProjectId
|
|
839
923
|
const sessionsRoot = join(projectsDir, projectId, 'sessions')
|
|
840
|
-
|
|
841
|
-
try {
|
|
842
|
-
sessionDirs = await readdir(sessionsRoot)
|
|
843
|
-
} catch {
|
|
844
|
-
continue
|
|
845
|
-
}
|
|
924
|
+
const sessionDirs = await records.scanNames(sessionsRoot, '')
|
|
846
925
|
for (const rawSessionId of sessionDirs) {
|
|
847
926
|
if (!rawSessionId.startsWith('ses_')) continue
|
|
848
927
|
if (rawSessionId === sessionId) {
|
|
@@ -869,34 +948,19 @@ export class DiskSessionStore implements SessionStore {
|
|
|
869
948
|
if (cached) return cached
|
|
870
949
|
|
|
871
950
|
const projectsDir = join(this.rootDir, 'projects')
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
} catch (err) {
|
|
876
|
-
const code = (err as NodeJS.ErrnoException).code
|
|
877
|
-
if (code === 'ENOENT') return null
|
|
878
|
-
throw err
|
|
879
|
-
}
|
|
951
|
+
// ENOENT lists as empty; the loop below then falls through to the
|
|
952
|
+
// same `return null` the old catch took directly.
|
|
953
|
+
const projectDirs = await records.scanNames(projectsDir, '')
|
|
880
954
|
for (const rawProject of projectDirs) {
|
|
881
955
|
if (!rawProject.startsWith('prj_')) continue
|
|
882
956
|
const projectId = rawProject as ProjectId
|
|
883
957
|
const sessionsRoot = join(projectsDir, projectId, 'sessions')
|
|
884
|
-
|
|
885
|
-
try {
|
|
886
|
-
sessionDirs = await readdir(sessionsRoot)
|
|
887
|
-
} catch {
|
|
888
|
-
continue
|
|
889
|
-
}
|
|
958
|
+
const sessionDirs = await records.scanNames(sessionsRoot, '')
|
|
890
959
|
for (const rawSession of sessionDirs) {
|
|
891
960
|
if (!rawSession.startsWith('ses_')) continue
|
|
892
961
|
const sessionId = rawSession as SessionId
|
|
893
962
|
const subsDir = join(sessionsRoot, sessionId, 'subsessions')
|
|
894
|
-
|
|
895
|
-
try {
|
|
896
|
-
subDirs = await readdir(subsDir)
|
|
897
|
-
} catch {
|
|
898
|
-
continue
|
|
899
|
-
}
|
|
963
|
+
const subDirs = await records.scanNames(subsDir, '')
|
|
900
964
|
for (const rawSub of subDirs) {
|
|
901
965
|
if (rawSub === subSessionId) {
|
|
902
966
|
const entry = {
|
|
@@ -919,35 +983,22 @@ export class DiskSessionStore implements SessionStore {
|
|
|
919
983
|
// Acceptable for an MVP disk store; a production impl would cache.
|
|
920
984
|
const allSubs: SubSession[] = []
|
|
921
985
|
const projectsDir = join(this.rootDir, 'projects')
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
} catch (err) {
|
|
926
|
-
const code = (err as NodeJS.ErrnoException).code
|
|
927
|
-
if (code === 'ENOENT') return emptyLinkageView()
|
|
928
|
-
throw err
|
|
929
|
-
}
|
|
986
|
+
// ENOENT lists as empty, and a view over no sub-sessions IS the empty
|
|
987
|
+
// view the old catch returned directly.
|
|
988
|
+
const projectDirs = await records.scanNames(projectsDir, '')
|
|
930
989
|
|
|
931
990
|
for (const rawProject of projectDirs) {
|
|
932
991
|
if (!rawProject.startsWith('prj_')) continue
|
|
933
992
|
const sessionsRoot = join(projectsDir, rawProject, 'sessions')
|
|
934
|
-
|
|
935
|
-
try {
|
|
936
|
-
sessionDirs = await readdir(sessionsRoot)
|
|
937
|
-
} catch {
|
|
938
|
-
continue
|
|
939
|
-
}
|
|
993
|
+
const sessionDirs = await records.scanNames(sessionsRoot, '')
|
|
940
994
|
for (const rawSession of sessionDirs) {
|
|
941
995
|
if (!rawSession.startsWith('ses_')) continue
|
|
942
996
|
const subsRoot = join(sessionsRoot, rawSession, 'subsessions')
|
|
943
|
-
|
|
944
|
-
try {
|
|
945
|
-
subDirs = await readdir(subsRoot)
|
|
946
|
-
} catch {
|
|
947
|
-
continue
|
|
948
|
-
}
|
|
997
|
+
const subDirs = await records.scanNames(subsRoot, '')
|
|
949
998
|
for (const rawSub of subDirs) {
|
|
950
|
-
const raw = await
|
|
999
|
+
const raw = await records.read<PersistedSubSession>(
|
|
1000
|
+
join(subsRoot, rawSub, 'subsession.json'),
|
|
1001
|
+
)
|
|
951
1002
|
if (!raw) continue
|
|
952
1003
|
if (raw.tenantId !== tenantId) continue
|
|
953
1004
|
allSubs.push(deserializeSubSession(raw))
|
|
@@ -964,13 +1015,6 @@ export class DiskSessionStore implements SessionStore {
|
|
|
964
1015
|
}
|
|
965
1016
|
}
|
|
966
1017
|
|
|
967
|
-
function emptyLinkageView(): LinkageView {
|
|
968
|
-
return {
|
|
969
|
-
findChildSubSessions: () => [],
|
|
970
|
-
findParentSubSession: () => null,
|
|
971
|
-
}
|
|
972
|
-
}
|
|
973
|
-
|
|
974
1018
|
// Serialization helpers -----------------------------------------------------
|
|
975
1019
|
|
|
976
1020
|
function serializeProject(p: Project): PersistedProject {
|
|
@@ -981,6 +1025,7 @@ function serializeProject(p: Project): PersistedProject {
|
|
|
981
1025
|
config: p.config,
|
|
982
1026
|
status: p.status,
|
|
983
1027
|
ownerVersion: p.ownerVersion,
|
|
1028
|
+
...(p.rootPath !== undefined ? { rootPath: p.rootPath } : {}),
|
|
984
1029
|
createdAt: p.createdAt.toISOString(),
|
|
985
1030
|
updatedAt: p.updatedAt.toISOString(),
|
|
986
1031
|
}
|
|
@@ -993,11 +1038,12 @@ function deserializeProject(p: PersistedProject): Project {
|
|
|
993
1038
|
name: p.name,
|
|
994
1039
|
config: p.config,
|
|
995
1040
|
// A project.json written before these fields existed reads as an open
|
|
996
|
-
//
|
|
1041
|
+
// project at version 0, which is what it was. Leaving `ownerVersion`
|
|
997
1042
|
// undefined would be worse than a wrong default: every compare-and-set
|
|
998
1043
|
// against it would fail, so an existing store could never be closed.
|
|
999
1044
|
status: p.status ?? 'open',
|
|
1000
1045
|
ownerVersion: p.ownerVersion ?? 0,
|
|
1046
|
+
...(p.rootPath !== undefined ? { rootPath: p.rootPath } : {}),
|
|
1001
1047
|
createdAt: new Date(p.createdAt),
|
|
1002
1048
|
updatedAt: new Date(p.updatedAt),
|
|
1003
1049
|
}
|
|
@@ -1006,7 +1052,7 @@ function deserializeProject(p: PersistedProject): Project {
|
|
|
1006
1052
|
function serializeSession(s: Session): PersistedSession {
|
|
1007
1053
|
return {
|
|
1008
1054
|
id: s.id,
|
|
1009
|
-
|
|
1055
|
+
topicId: s.topicId,
|
|
1010
1056
|
projectId: s.projectId,
|
|
1011
1057
|
tenantId: s.tenantId,
|
|
1012
1058
|
status: s.status,
|
|
@@ -1022,7 +1068,7 @@ function serializeSession(s: Session): PersistedSession {
|
|
|
1022
1068
|
function deserializeSession(s: PersistedSession): Session {
|
|
1023
1069
|
return {
|
|
1024
1070
|
id: s.id,
|
|
1025
|
-
|
|
1071
|
+
topicId: s.topicId,
|
|
1026
1072
|
projectId: s.projectId,
|
|
1027
1073
|
tenantId: s.tenantId,
|
|
1028
1074
|
status: s.status,
|
|
@@ -1113,27 +1159,6 @@ function deserializeSummary(s: PersistedSummary): SessionSummaryRef {
|
|
|
1113
1159
|
|
|
1114
1160
|
// FS helpers -----------------------------------------------------------------
|
|
1115
1161
|
|
|
1116
|
-
async function readJson<T>(path: string): Promise<T | null> {
|
|
1117
|
-
try {
|
|
1118
|
-
const raw = await readFile(path, 'utf-8')
|
|
1119
|
-
// Through the schema rather than a bare cast: a record from an older
|
|
1120
|
-
// build is brought forward, and one from a NEWER build is refused
|
|
1121
|
-
// instead of read partially and written back with the difference
|
|
1122
|
-
// gone.
|
|
1123
|
-
return migrate<T>(SCHEMA, JSON.parse(raw))
|
|
1124
|
-
} catch (err) {
|
|
1125
|
-
const code = (err as NodeJS.ErrnoException).code
|
|
1126
|
-
if (code === 'ENOENT') return null
|
|
1127
|
-
throw err
|
|
1128
|
-
}
|
|
1129
|
-
}
|
|
1130
|
-
|
|
1131
|
-
async function atomicWriteJson(filePath: string, value: unknown): Promise<void> {
|
|
1132
|
-
// Through the shared writer: the sidecar name has to be private to this
|
|
1133
|
-
// write, and a fixed `.tmp` is shared by every writer of the record.
|
|
1134
|
-
await atomicWriteFile(filePath, JSON.stringify(stamp(SCHEMA, value), null, 2))
|
|
1135
|
-
}
|
|
1136
|
-
|
|
1137
1162
|
// Note: messages are append-only `messages.jsonl` (not write-tmp-rename).
|
|
1138
1163
|
// Append is the write-safety primitive for log-structured files; each
|
|
1139
1164
|
// line is a whole record. This matches pattern doc §13.4 persistence
|