@namzu/sdk 27.1.0 → 29.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 +1757 -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 -6
- 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 -16
- 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 +107 -36
- 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 +46 -46
- package/dist/contracts/api.d.ts +12 -1
- package/dist/contracts/api.d.ts.map +1 -1
- 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 -15
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +168 -17
- 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 +124 -16
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +372 -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 +8 -4
- package/dist/session/handoff/broadcast.d.ts.map +1 -1
- package/dist/session/handoff/broadcast.js +8 -9
- package/dist/session/handoff/broadcast.js.map +1 -1
- package/dist/session/handoff/index.d.ts +1 -1
- package/dist/session/handoff/index.d.ts.map +1 -1
- package/dist/session/handoff/index.js +1 -1
- package/dist/session/handoff/index.js.map +1 -1
- package/dist/session/handoff/single.d.ts +11 -7
- package/dist/session/handoff/single.d.ts.map +1 -1
- package/dist/session/handoff/single.js +5 -11
- 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 +39 -19
- package/dist/session/migration/id-prefix.d.ts.map +1 -1
- package/dist/session/migration/id-prefix.js +43 -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 +13 -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/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 +19 -3
- package/dist/types/agent/reactive.d.ts.map +1 -1
- package/dist/types/agent/{gateway.d.ts → scheduler.d.ts} +31 -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 +13 -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/{verification → authorization}/index.d.ts +68 -12
- package/dist/types/authorization/index.d.ts.map +1 -0
- package/dist/types/authorization/index.js +99 -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 +11 -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 +83 -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 +8 -8
- 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 +23 -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 +1 -1
- package/dist/types/session/ids.d.ts.map +1 -1
- package/dist/types/session/index.d.ts +2 -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 +44 -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 +82 -2
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +104 -4
- 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 -14
- package/src/agents/RouterAgent.ts +33 -21
- package/src/agents/SupervisorAgent.ts +46 -28
- 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/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 +15 -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 +371 -18
- 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 +539 -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 +16 -12
- package/src/session/handoff/index.ts +1 -1
- package/src/session/handoff/single.ts +16 -17
- package/src/session/migration/filesystem.ts +46 -2
- package/src/session/migration/id-prefix.ts +47 -22
- package/src/session/migration/index.ts +5 -2
- package/src/session/migration/marker.ts +19 -4
- package/src/session/retention/archive.ts +19 -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 +22 -3
- package/src/types/agent/{gateway.ts → scheduler.ts} +30 -4
- package/src/types/agent/supervisor.ts +15 -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 +69 -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 +17 -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 +94 -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 +24 -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 +1 -1
- package/src/types/session/index.ts +1 -1
- package/src/types/session/store.ts +53 -22
- package/src/types/session/sub-session.ts +45 -16
- 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 +163 -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.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
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
// Maps a thrown value to the exception.* attributes the OTel Logs Data
|
|
2
|
+
// Model reserves for it — exception.type / exception.message /
|
|
3
|
+
// exception.stacktrace — walking a `cause` chain the way a terminal
|
|
4
|
+
// `console.error` would: newest frame first, oldest cause last.
|
|
5
|
+
//
|
|
6
|
+
// Two things this file deliberately does NOT do:
|
|
7
|
+
//
|
|
8
|
+
// - It does not redact anything itself. `redactRecord` (../log/redact.ts)
|
|
9
|
+
// runs over every attribute value unconditionally, once, at the record
|
|
10
|
+
// boundary — stack text included. A second scan here would be a second
|
|
11
|
+
// place to keep LOG_SECRET_PATTERNS in sync with, and the whole point of
|
|
12
|
+
// a record-boundary scan is that nothing gets to opt out of it by
|
|
13
|
+
// running earlier.
|
|
14
|
+
// - It does not license re-attaching `cause` where it was deliberately
|
|
15
|
+
// dropped. `provider/errors.ts` refuses to keep one on a classified
|
|
16
|
+
// provider error on purpose — a vendor SDK's error message (and so its
|
|
17
|
+
// own `cause`, when the vendor wraps a transport error) can carry a
|
|
18
|
+
// credential the upstream echoed back, and "a `cause` survives every
|
|
19
|
+
// logger that serializes an error chain" is exactly the property this
|
|
20
|
+
// file exists to provide. Being able to walk a `cause` safely is not the
|
|
21
|
+
// same claim as every `cause` being safe to attach in the first place;
|
|
22
|
+
// see that file's own doc comment and docs/conventions/index.md.
|
|
23
|
+
|
|
24
|
+
import type { LogAttributes } from './attributes.js'
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* How many `cause` hops past the thrown value itself get folded into
|
|
28
|
+
* `exception.stacktrace`. Four, not "as many as there are": an ordinary
|
|
29
|
+
* retry-then-fallback call stack in this codebase is a handful of layers
|
|
30
|
+
* deep, but nothing stops a caller from building a cause chain as long as
|
|
31
|
+
* it likes, and walking all of it turns one log call into an unbounded
|
|
32
|
+
* string build ahead of the 8 KiB per-value cap (caps.ts) that would
|
|
33
|
+
* otherwise be the only thing catching it. The bound is enforced here,
|
|
34
|
+
* explicitly, rather than left to that cap truncating mid-frame with no
|
|
35
|
+
* indication anything was cut.
|
|
36
|
+
*/
|
|
37
|
+
const DEFAULT_CAUSE_DEPTH = 4
|
|
38
|
+
|
|
39
|
+
/** What a thrown non-`Error` still needs a name for. */
|
|
40
|
+
const UNKNOWN_EXCEPTION_TYPE = 'UnknownError'
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* `exception.type` / `exception.message` / `exception.stacktrace` for a
|
|
44
|
+
* thrown value. `causeDepth` overrides the default bound above — exposed
|
|
45
|
+
* for tests, not because a production call site should ordinarily need a
|
|
46
|
+
* different one.
|
|
47
|
+
*/
|
|
48
|
+
export function errorAttributes(
|
|
49
|
+
err: unknown,
|
|
50
|
+
opts?: { readonly causeDepth?: number },
|
|
51
|
+
): LogAttributes {
|
|
52
|
+
const maxDepth = opts?.causeDepth ?? DEFAULT_CAUSE_DEPTH
|
|
53
|
+
const { type, message } = describe(err)
|
|
54
|
+
return {
|
|
55
|
+
'exception.type': type,
|
|
56
|
+
'exception.message': message,
|
|
57
|
+
'exception.stacktrace': buildStacktrace(err, maxDepth),
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function describe(value: unknown): { type: string; message: string } {
|
|
62
|
+
if (value instanceof Error) {
|
|
63
|
+
return { type: value.name || UNKNOWN_EXCEPTION_TYPE, message: value.message }
|
|
64
|
+
}
|
|
65
|
+
if (typeof value === 'object' && value !== null) {
|
|
66
|
+
return { type: UNKNOWN_EXCEPTION_TYPE, message: safeStringify(value) }
|
|
67
|
+
}
|
|
68
|
+
return { type: UNKNOWN_EXCEPTION_TYPE, message: String(value) }
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function safeStringify(value: object): string {
|
|
72
|
+
try {
|
|
73
|
+
return JSON.stringify(value)
|
|
74
|
+
} catch {
|
|
75
|
+
// A circular non-Error thrown value. `String()` on a plain object gives
|
|
76
|
+
// '[object Object]' — unhelpful, but the one thing this function must
|
|
77
|
+
// never do is itself throw from inside a logging call.
|
|
78
|
+
return String(value)
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* `err`'s own stack (or a `type: message` line when there is none) followed
|
|
84
|
+
* by each `.cause`'s, newest first, bounded by `maxDepth` hops. Stops early
|
|
85
|
+
* — WITH a note saying so, per refuse-do-not-degrade — on a cycle or on
|
|
86
|
+
* reaching the bound with more chain left to walk. Never loops: every value
|
|
87
|
+
* this function visits is added to `seen` before the value after it is even
|
|
88
|
+
* read, so a self-referencing `cause` is caught on the very next hop rather
|
|
89
|
+
* than by exhausting the depth bound.
|
|
90
|
+
*/
|
|
91
|
+
function buildStacktrace(err: unknown, maxDepth: number): string {
|
|
92
|
+
const seen = new Set<unknown>([err])
|
|
93
|
+
const frames: string[] = [frameText(err)]
|
|
94
|
+
|
|
95
|
+
let cursor: unknown = err instanceof Error ? err.cause : undefined
|
|
96
|
+
let depth = 0
|
|
97
|
+
|
|
98
|
+
while (cursor !== undefined && cursor !== null) {
|
|
99
|
+
if (seen.has(cursor)) {
|
|
100
|
+
frames.push(`Caused by: [cause chain cycle detected at depth ${depth + 1} — stopped]`)
|
|
101
|
+
return frames.join('\n')
|
|
102
|
+
}
|
|
103
|
+
if (depth >= maxDepth) {
|
|
104
|
+
frames.push(
|
|
105
|
+
`Caused by: [cause chain truncated at depth ${maxDepth} — deeper causes not walked]`,
|
|
106
|
+
)
|
|
107
|
+
return frames.join('\n')
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
seen.add(cursor)
|
|
111
|
+
frames.push(`Caused by: ${frameText(cursor)}`)
|
|
112
|
+
depth++
|
|
113
|
+
cursor = cursor instanceof Error ? cursor.cause : undefined
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return frames.join('\n')
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function frameText(value: unknown): string {
|
|
120
|
+
if (value instanceof Error) {
|
|
121
|
+
return value.stack ?? `${value.name || UNKNOWN_EXCEPTION_TYPE}: ${value.message}`
|
|
122
|
+
}
|
|
123
|
+
return String(value)
|
|
124
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// The LogSink seam. `../logger.ts` keeps `Logger`, `LogContext`,
|
|
2
|
+
// `getRootLogger` and `configureLogger` completely unchanged (now
|
|
3
|
+
// `@deprecated`) — this directory is the additive replacement described in
|
|
4
|
+
// docs/conventions and the observability docs page once those land.
|
|
5
|
+
|
|
6
|
+
export type {
|
|
7
|
+
LevelFilter,
|
|
8
|
+
LogRecord,
|
|
9
|
+
LogSink,
|
|
10
|
+
LogSinkCounters,
|
|
11
|
+
Resource,
|
|
12
|
+
Severity,
|
|
13
|
+
} from './types.js'
|
|
14
|
+
export type { LogAttributes } from './attributes.js'
|
|
15
|
+
export { createLogger, NOOP_LOGGER } from './create-logger.js'
|
|
16
|
+
export { installProcessSink } from './process-sink.js'
|
|
17
|
+
export { jsonLinesSink, NOOP_SINK, prettySink } from './sinks.js'
|
|
18
|
+
// A value export, not a type — sits beside the type re-exports above rather
|
|
19
|
+
// than folded into that block, because `export type { ... }` cannot carry a
|
|
20
|
+
// runtime const. `EVENT_NAME_ATTRIBUTE` is how a host OUTSIDE this package
|
|
21
|
+
// (the CLI's boot narrative, NZ-BOOT-05) names an event without duplicating
|
|
22
|
+
// the reserved key `createLogger` promotes off of — see the doc comment on
|
|
23
|
+
// the constant itself in `./types.js`.
|
|
24
|
+
export { EVENT_NAME_ATTRIBUTE, SCOPE_ATTRIBUTE } from './types.js'
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// The replacement for `configureLogger`'s "one process, one global" model —
|
|
2
|
+
// still one process-wide destination (a CLI genuinely owns the whole
|
|
3
|
+
// process), but a destination, not only a threshold: `configureLogger` could
|
|
4
|
+
// only raise or lower a level against a fixed `process.stderr.write`.
|
|
5
|
+
//
|
|
6
|
+
// `getRootLogger` reads this: when a sink is installed, the deprecated
|
|
7
|
+
// accessor routes through it instead of writing straight to stderr. That
|
|
8
|
+
// bridge is what makes the seam reachable without rewriting the ~39 existing
|
|
9
|
+
// `getRootLogger()` call sites in one commit — they keep the old shape and
|
|
10
|
+
// gain the new destination.
|
|
11
|
+
|
|
12
|
+
import { newCounters } from './create-logger.js'
|
|
13
|
+
import type { LevelFilter, LogSink, LogSinkCounters, MutableLogSinkCounters } from './types.js'
|
|
14
|
+
|
|
15
|
+
interface InstalledSink {
|
|
16
|
+
readonly sink: LogSink
|
|
17
|
+
readonly level: LevelFilter
|
|
18
|
+
readonly counters: MutableLogSinkCounters
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
let _processSink: InstalledSink | undefined
|
|
22
|
+
|
|
23
|
+
export function installProcessSink(
|
|
24
|
+
sink: LogSink,
|
|
25
|
+
level: LevelFilter,
|
|
26
|
+
opts: { readonly replace?: boolean } = {},
|
|
27
|
+
): void {
|
|
28
|
+
if (_processSink !== undefined && !opts.replace) {
|
|
29
|
+
// `refuse-do-not-degrade`: two callers each believing they own the
|
|
30
|
+
// process's log destination is a defect, not something to merge
|
|
31
|
+
// silently — the second install wins with neither party told, and
|
|
32
|
+
// whichever caller configured the first one loses its destination
|
|
33
|
+
// without an error anywhere in the tree.
|
|
34
|
+
throw new Error(
|
|
35
|
+
'installProcessSink was already called for this process. Two callers each believing ' +
|
|
36
|
+
"they own the process's log destination is a defect, not something to merge silently " +
|
|
37
|
+
'— pass { replace: true } if this call is a deliberate replacement of an earlier one.',
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
// One counter set per installed destination, so every logger that
|
|
41
|
+
// routes through it adds to the same totals. A `replace: true` install
|
|
42
|
+
// starts fresh: the counts describe the destination that is live, and
|
|
43
|
+
// carrying the old one's forward would attribute its drops to a sink
|
|
44
|
+
// that never saw those records.
|
|
45
|
+
_processSink = { sink, level, counters: newCounters() }
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** The installed destination, or `undefined` when nobody claimed the process. */
|
|
49
|
+
export function getProcessSink():
|
|
50
|
+
| { readonly sink: LogSink; readonly level: LevelFilter; readonly counters: LogSinkCounters }
|
|
51
|
+
| undefined {
|
|
52
|
+
return _processSink
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The mutable counter set the installed destination writes through.
|
|
57
|
+
*
|
|
58
|
+
* Internal: a reader wants {@link getProcessSink}'s readonly view. This
|
|
59
|
+
* exists so `getRootLogger`'s bridge can hand the SAME object to every
|
|
60
|
+
* logger it builds, which is what makes the totals process-wide rather
|
|
61
|
+
* than per-call.
|
|
62
|
+
*/
|
|
63
|
+
export function getProcessSinkCounters(): MutableLogSinkCounters | undefined {
|
|
64
|
+
return _processSink?.counters
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Test-only: forget the installed sink.
|
|
69
|
+
*
|
|
70
|
+
* Production must never call this — the refusal above is the whole contract,
|
|
71
|
+
* and a reset that production could reach would let a second caller take the
|
|
72
|
+
* destination by clearing the first one rather than by saying `replace`.
|
|
73
|
+
*/
|
|
74
|
+
export function __resetProcessSinkForTests(): void {
|
|
75
|
+
_processSink = undefined
|
|
76
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Scrubs anything secret-shaped out of a record before any sink sees it.
|
|
2
|
+
//
|
|
3
|
+
// Runs once, in the pipeline, ahead of sink dispatch — not inside
|
|
4
|
+
// jsonLinesSink, and not inside any other individual sink. A scan that only
|
|
5
|
+
// jsonLinesSink ran would leave prettySink (the one `namzu run` actually
|
|
6
|
+
// uses) and every host-supplied sink with no second layer at all, which is
|
|
7
|
+
// the gap a scoped-to-one-sink design would reintroduce: the machine-read
|
|
8
|
+
// path would be the only protected one.
|
|
9
|
+
//
|
|
10
|
+
// This is defence in depth, not the guarantee — the primary control is the
|
|
11
|
+
// output guardrail upstream (`runtime/query/guardrail-presets.ts`) and the
|
|
12
|
+
// allowlist that keeps untrusted text out of attribute values in the first
|
|
13
|
+
// place. A match here means that allowlist already had a hole.
|
|
14
|
+
|
|
15
|
+
import { LOG_SECRET_PATTERNS } from '../../constants/secret-patterns.js'
|
|
16
|
+
import type { LogRecord, MutableLogSinkCounters } from './types.js'
|
|
17
|
+
|
|
18
|
+
export function redactRecord(record: LogRecord, counters: MutableLogSinkCounters): LogRecord {
|
|
19
|
+
const body = redactString(record.body)
|
|
20
|
+
const attributes = redactAttributes(record.attributes)
|
|
21
|
+
|
|
22
|
+
if (body === record.body && attributes === record.attributes) return record
|
|
23
|
+
|
|
24
|
+
counters.redacted++
|
|
25
|
+
return { ...record, body, attributes }
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function redactString(text: string): string {
|
|
29
|
+
let out = text
|
|
30
|
+
for (const [label, pattern] of LOG_SECRET_PATTERNS) {
|
|
31
|
+
// Fresh lastIndex: these are module-level /g regexes, reused across
|
|
32
|
+
// every record — the same caution guardrail-presets.ts already takes
|
|
33
|
+
// on the same table.
|
|
34
|
+
pattern.lastIndex = 0
|
|
35
|
+
if (!pattern.test(out)) continue
|
|
36
|
+
pattern.lastIndex = 0
|
|
37
|
+
out = out.replace(pattern, `[REDACTED:${label}]`)
|
|
38
|
+
}
|
|
39
|
+
return out
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function redactAttributes(
|
|
43
|
+
attributes: Readonly<Record<string, unknown>>,
|
|
44
|
+
): Readonly<Record<string, unknown>> {
|
|
45
|
+
let changed = false
|
|
46
|
+
const next: Record<string, unknown> = {}
|
|
47
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
48
|
+
const redacted = redactValue(value)
|
|
49
|
+
if (redacted !== value) changed = true
|
|
50
|
+
next[key] = redacted
|
|
51
|
+
}
|
|
52
|
+
return changed ? next : attributes
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Strings and arrays of primitives are the shapes `LogAttributes` will
|
|
56
|
+
// eventually restrict values to (a later increment); anything else passes
|
|
57
|
+
// through untouched rather than being stringified, which would be a second,
|
|
58
|
+
// unrelated way for structured data to leak.
|
|
59
|
+
function redactValue(value: unknown): unknown {
|
|
60
|
+
if (typeof value === 'string') return redactString(value)
|
|
61
|
+
|
|
62
|
+
if (Array.isArray(value)) {
|
|
63
|
+
let changed = false
|
|
64
|
+
const next = value.map((entry) => {
|
|
65
|
+
const redacted = redactValue(entry)
|
|
66
|
+
if (redacted !== entry) changed = true
|
|
67
|
+
return redacted
|
|
68
|
+
})
|
|
69
|
+
// Only allocate a new array when something inside it actually changed —
|
|
70
|
+
// `.map()` always returns a fresh array, and comparing that fresh
|
|
71
|
+
// array's reference against the input would mark every array-valued
|
|
72
|
+
// attribute "redacted" whether or not a pattern ever matched.
|
|
73
|
+
return changed ? next : value
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return value
|
|
77
|
+
}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
// Built-in sinks. All three receive already-redacted, already-capped
|
|
2
|
+
// records — see redact.ts and caps.ts — so nothing here re-implements
|
|
3
|
+
// either concern; a sink's only job is to render.
|
|
4
|
+
|
|
5
|
+
import { applyTemplate, columnLabel, scopeColour } from './templates.js'
|
|
6
|
+
import type { LogRecord, LogSink } from './types.js'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Delivers nothing, by construction. `createLogger`'s dispatch identity-
|
|
10
|
+
* checks the configured sink against this exact reference and counts the
|
|
11
|
+
* record as dropped rather than calling `emit` — a no-op `emit` and a real
|
|
12
|
+
* delivery both return `undefined`, so without the identity check nothing
|
|
13
|
+
* downstream could ever tell "configured to discard" from "silently eating
|
|
14
|
+
* every record".
|
|
15
|
+
*/
|
|
16
|
+
export const NOOP_SINK: LogSink = {
|
|
17
|
+
emit() {},
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* One JSON object per line — the canonical wire format for the machine-read
|
|
22
|
+
* path (`namzu run-stream`'s stderr). JSON string-escaping neutralises
|
|
23
|
+
* `\n`/`\r` by construction, closing the log-forging surface without a
|
|
24
|
+
* single character-stripping call site, which is bypassable anyway.
|
|
25
|
+
*
|
|
26
|
+
* `JSON.stringify` leaves U+2028 and U+2029 literal in its output, and some
|
|
27
|
+
* readers — older V8, some log shippers — treat either codepoint as a line
|
|
28
|
+
* terminator regardless of the JSON quoting around it. Escaped here so a
|
|
29
|
+
* record can never masquerade as two lines to a reader that split on them.
|
|
30
|
+
*/
|
|
31
|
+
export function jsonLinesSink(stream: NodeJS.WritableStream): LogSink {
|
|
32
|
+
return {
|
|
33
|
+
emit(record: LogRecord) {
|
|
34
|
+
// U+2028/U+2029 built via fromCharCode rather than a \u escape in a
|
|
35
|
+
// regex literal — either escape, typed directly, risks becoming the raw
|
|
36
|
+
// codepoint again instead of the six characters of escape text; a raw
|
|
37
|
+
// U+2028/U+2029 inside a regex literal is a LineTerminator to the JS
|
|
38
|
+
// parser itself and fails to compile.
|
|
39
|
+
const lineSeparator = String.fromCharCode(0x2028)
|
|
40
|
+
const paragraphSeparator = String.fromCharCode(0x2029)
|
|
41
|
+
const line = JSON.stringify(record)
|
|
42
|
+
.split(lineSeparator)
|
|
43
|
+
.join('\\u2028')
|
|
44
|
+
.split(paragraphSeparator)
|
|
45
|
+
.join('\\u2029')
|
|
46
|
+
stream.write(`${line}\n`)
|
|
47
|
+
},
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const SEVERITY_LABEL: Record<LogRecord['severityText'], string> = {
|
|
52
|
+
debug: 'DEBUG',
|
|
53
|
+
info: 'INFO',
|
|
54
|
+
warn: 'WARN',
|
|
55
|
+
error: 'ERROR',
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Every C0 control byte (0x00-0x1F) and DEL (0x7F) becomes its `\xNN`
|
|
59
|
+
// form — ESC included, so a full ANSI CSI/OSC sequence survives as inert,
|
|
60
|
+
// readable text (`\x1b[31m`) rather than as live bytes a terminal would
|
|
61
|
+
// act on. Deleting the escape byte outright was the first draft of this
|
|
62
|
+
// function and is worse: it silently drops information (nothing in the
|
|
63
|
+
// output says an escape sequence was even there) for no extra safety
|
|
64
|
+
// over converting it to text, since every OTHER control byte already gets
|
|
65
|
+
// the same visible treatment.
|
|
66
|
+
// `body` and `scope` reach this renderer as plain strings with no upstream
|
|
67
|
+
// guarantee yet that either is a constant (that lands with the CI gate in
|
|
68
|
+
// later work) — a remote MCP server that names itself an escape sequence
|
|
69
|
+
// erasing the previous line and printing a fake refusal is a real forging
|
|
70
|
+
// attempt against the terminal `namzu run` writes to today, not a
|
|
71
|
+
// hypothetical one.
|
|
72
|
+
// biome-ignore lint/suspicious/noControlCharactersInRegex: this pattern IS the control-character filter — the escapes below are ASCII text (`\x00`-`\x1F`, `\x7F`), not raw bytes pasted into the source.
|
|
73
|
+
const CONTROL_BYTE = /[\x00-\x1F\x7F]/g
|
|
74
|
+
|
|
75
|
+
// U+2028 (LINE SEPARATOR) and U+2029 (PARAGRAPH SEPARATOR) are not ASCII
|
|
76
|
+
// control bytes, so CONTROL_BYTE above never matches either — but both are
|
|
77
|
+
// LineTerminator characters to a reader that splits on them, the exact gap
|
|
78
|
+
// jsonLinesSink above documents and closes for its own NDJSON output.
|
|
79
|
+
// `JSON.stringify` does not escape either codepoint, so the attribute half
|
|
80
|
+
// of a record — which reaches this file as already-serialized JSON text,
|
|
81
|
+
// below — can still carry either straight through unescaped. Built via
|
|
82
|
+
// `fromCharCode` and plain `.split()/.join()` rather than a backslash-u
|
|
83
|
+
// escape in a regex literal, for the same reason jsonLinesSink's own
|
|
84
|
+
// separators are: typed directly, either escape risks becoming the raw
|
|
85
|
+
// codepoint again instead of the six characters of escape text, and a raw
|
|
86
|
+
// instance of either inside a regex literal is a LineTerminator to the JS
|
|
87
|
+
// parser itself and fails to compile.
|
|
88
|
+
const LINE_SEPARATOR = String.fromCharCode(0x2028)
|
|
89
|
+
const PARAGRAPH_SEPARATOR = String.fromCharCode(0x2029)
|
|
90
|
+
|
|
91
|
+
function escapeForDisplay(text: string): string {
|
|
92
|
+
return text
|
|
93
|
+
.replace(CONTROL_BYTE, (byte) => `\\x${byte.charCodeAt(0).toString(16).padStart(2, '0')}`)
|
|
94
|
+
.split(LINE_SEPARATOR)
|
|
95
|
+
.join('\\u2028')
|
|
96
|
+
.split(PARAGRAPH_SEPARATOR)
|
|
97
|
+
.join('\\u2029')
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/** Column width for the scope label. Long labels overflow rather than truncate. */
|
|
101
|
+
const SCOPE_WIDTH = 12
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* The marker between the scope column and the body.
|
|
105
|
+
*
|
|
106
|
+
* A glyph rather than a `[WARN]` label, because at `info` the overwhelming
|
|
107
|
+
* majority of boot lines are ordinary and a label on each one is the wall
|
|
108
|
+
* this renderer exists to remove. The two that are not ordinary have to be
|
|
109
|
+
* findable by eye in a column, which a bracketed word at variable position
|
|
110
|
+
* is not.
|
|
111
|
+
*/
|
|
112
|
+
const MARKER: Record<LogRecord['severityText'], string> = {
|
|
113
|
+
debug: ' ',
|
|
114
|
+
info: ' ',
|
|
115
|
+
warn: '!',
|
|
116
|
+
error: '✗',
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** `+Nms`, left-padded so the numbers line up in a column. */
|
|
120
|
+
function elapsedColumn(deltaMs: number): string {
|
|
121
|
+
return `+${deltaMs}ms`.padStart(7)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Human-readable line, one record per line — the boot narrative's renderer.
|
|
126
|
+
*
|
|
127
|
+
* Three things it does that a generic sink does not, each answering a
|
|
128
|
+
* specific half of "the logs tell me nothing":
|
|
129
|
+
*
|
|
130
|
+
* - **`+Nms` instead of an absolute timestamp.** Elapsed since the previous
|
|
131
|
+
* record ON THIS SINK, so the column reads as which phase was slow. The
|
|
132
|
+
* state is a closure variable rather than module-level: two sinks in one
|
|
133
|
+
* process each measure their own stream, and a shared `lastTimestamp`
|
|
134
|
+
* would make each one's deltas depend on the other's traffic.
|
|
135
|
+
* - **A fixed-width scope column, coloured by a stable hash.** A dozen
|
|
136
|
+
* module initialisations read as structure rather than scroll.
|
|
137
|
+
* - **A template per boot event**, so `info` shows the two attributes that
|
|
138
|
+
* matter rather than all forty as JSON.
|
|
139
|
+
*
|
|
140
|
+
* Colour is emitted only when the stream reports `isTTY`, so a redirected
|
|
141
|
+
* log has no escape bytes in it at all.
|
|
142
|
+
*/
|
|
143
|
+
export function prettySink(stream: NodeJS.WritableStream): LogSink {
|
|
144
|
+
// Per-instance, deliberately. See the note above.
|
|
145
|
+
let previousTimestamp: number | undefined
|
|
146
|
+
|
|
147
|
+
// Read once. A stream does not become a TTY part-way through a process,
|
|
148
|
+
// and re-reading per record would let a mid-run reassignment change the
|
|
149
|
+
// shape of a file somebody is already tailing.
|
|
150
|
+
const colour = (stream as NodeJS.WriteStream).isTTY === true
|
|
151
|
+
|
|
152
|
+
return {
|
|
153
|
+
emit(record: LogRecord) {
|
|
154
|
+
// Seeded from the FIRST record rather than from sink construction,
|
|
155
|
+
// so the first line is `+0ms` and not however long the process
|
|
156
|
+
// spent before anything was logged — which is not a phase anybody
|
|
157
|
+
// can act on.
|
|
158
|
+
const delta = previousTimestamp === undefined ? 0 : record.timestamp - previousTimestamp
|
|
159
|
+
previousTimestamp = record.timestamp
|
|
160
|
+
|
|
161
|
+
const label = escapeForDisplay(columnLabel(record))
|
|
162
|
+
const templated = applyTemplate(record)
|
|
163
|
+
const marker = MARKER[record.severityText]
|
|
164
|
+
|
|
165
|
+
if (templated !== undefined) {
|
|
166
|
+
const painted = colour ? `\x1b[${scopeColour(label)}m${label}\x1b[0m` : label
|
|
167
|
+
// Padding is computed from the UNPAINTED label: the escape
|
|
168
|
+
// bytes have no width on screen but do have length in a string,
|
|
169
|
+
// so padding the painted form shortens every coloured column by
|
|
170
|
+
// exactly the length of its escape sequence.
|
|
171
|
+
const pad = ' '.repeat(Math.max(1, SCOPE_WIDTH - label.length))
|
|
172
|
+
stream.write(
|
|
173
|
+
` ${elapsedColumn(delta)} ${painted}${pad}${marker} ${escapeForDisplay(templated)}\n`,
|
|
174
|
+
)
|
|
175
|
+
return
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Everything that is not a boot event keeps the original shape.
|
|
179
|
+
// A record from a foreign vocabulary has no template to be right
|
|
180
|
+
// about, and inventing a column layout for it would drop the
|
|
181
|
+
// attributes it does carry.
|
|
182
|
+
const timestamp = new Date(record.timestamp).toISOString()
|
|
183
|
+
const level = SEVERITY_LABEL[record.severityText]
|
|
184
|
+
const scope = escapeForDisplay(record.scope.name)
|
|
185
|
+
const body = escapeForDisplay(record.body)
|
|
186
|
+
|
|
187
|
+
// JSON.stringify turns every ASCII control byte 0x00-0x1F — ESC
|
|
188
|
+
// included — into literal `\uXXXX` text inside each attribute value,
|
|
189
|
+
// but it does not touch DEL (0x7F) or U+2028/U+2029: none of the
|
|
190
|
+
// three are in JSON's mandatory escape set, so all three used to
|
|
191
|
+
// reach this stream exactly as JSON.stringify left them — DEL as a
|
|
192
|
+
// raw byte, U+2028/U+2029 as raw codepoints — the same gap
|
|
193
|
+
// jsonLinesSink already closed on its own path, just left open
|
|
194
|
+
// here. Running escapeForDisplay over the already-serialized JSON
|
|
195
|
+
// text closes it: every OTHER control byte JSON.stringify already
|
|
196
|
+
// turned into backslash text has no raw byte left for the regex to
|
|
197
|
+
// match, so this only ever touches the three it left behind.
|
|
198
|
+
const attributeKeys = Object.keys(record.attributes)
|
|
199
|
+
const attributes =
|
|
200
|
+
attributeKeys.length > 0 ? ` ${escapeForDisplay(JSON.stringify(record.attributes))}` : ''
|
|
201
|
+
|
|
202
|
+
stream.write(`[${timestamp}] [${level}] [${scope}] ${body}${attributes}\n`)
|
|
203
|
+
},
|
|
204
|
+
}
|
|
205
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { BOOT_EVENT_NAMES, type BootEventName } from '../../constants/telemetry/index.js'
|
|
2
|
+
import type { LogRecord } from './types.js'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* How a boot record is turned into one readable line.
|
|
6
|
+
*
|
|
7
|
+
* The complaint this exists to answer is that the logs say nothing when the
|
|
8
|
+
* project starts. A record already carries everything — the problem is the
|
|
9
|
+
* shape it arrives in: an absolute ISO timestamp nobody can subtract in
|
|
10
|
+
* their head, and every attribute dumped as JSON, so the two facts that
|
|
11
|
+
* matter sit inside forty that do not.
|
|
12
|
+
*
|
|
13
|
+
* Two things fix most of it, and neither is a freebie of a generic sink.
|
|
14
|
+
* The `+Nms` column turns a wall of timestamps into a readout of which
|
|
15
|
+
* phase was slow. And a template per event decides which attributes are
|
|
16
|
+
* worth a line at `info`, instead of printing all of them.
|
|
17
|
+
*
|
|
18
|
+
* **Display only.** Nothing here may mutate a record, and no machine-read
|
|
19
|
+
* path sees any of it — `jsonLinesSink` renders the same records
|
|
20
|
+
* byte-identically whether or not this file is loaded.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* A template returns the text after the marker, or `undefined` to fall
|
|
25
|
+
* through to the default rendering.
|
|
26
|
+
*
|
|
27
|
+
* It receives the record rather than just the attributes because several
|
|
28
|
+
* lines are the body with two attributes appended, and re-deriving the body
|
|
29
|
+
* from attributes would let the rendered line disagree with what the
|
|
30
|
+
* emitter actually said.
|
|
31
|
+
*/
|
|
32
|
+
export type BootTemplate = (record: LogRecord) => string | undefined
|
|
33
|
+
|
|
34
|
+
function attr(record: LogRecord, key: string): string | undefined {
|
|
35
|
+
const value = record.attributes[key]
|
|
36
|
+
if (value === undefined || value === null) return undefined
|
|
37
|
+
return typeof value === 'string' ? value : JSON.stringify(value)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** `a · b · c`, skipping anything absent, or `undefined` if all are. */
|
|
41
|
+
function joined(parts: (string | undefined)[]): string | undefined {
|
|
42
|
+
const kept = parts.filter((p): p is string => p !== undefined && p !== '')
|
|
43
|
+
return kept.length > 0 ? kept.join(' · ') : undefined
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** The body, with a `key=value` tail for the named attributes that exist. */
|
|
47
|
+
function bodyWith(record: LogRecord, keys: string[]): string {
|
|
48
|
+
const tail = keys
|
|
49
|
+
.map((key) => {
|
|
50
|
+
const value = attr(record, key)
|
|
51
|
+
return value === undefined ? undefined : `${shortKey(key)}=${value}`
|
|
52
|
+
})
|
|
53
|
+
.filter((p): p is string => p !== undefined)
|
|
54
|
+
return tail.length > 0 ? `${record.body} ${tail.join(' ')}` : record.body
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** `namzu.config.key.count` reads as `count` in a column already labelled `config`. */
|
|
58
|
+
function shortKey(key: string): string {
|
|
59
|
+
const parts = key.split('.')
|
|
60
|
+
return parts[parts.length - 1] ?? key
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* One template per boot event, as a TOTAL map over the union.
|
|
65
|
+
*
|
|
66
|
+
* `Record<BootEventName, …>` rather than `Partial<…>` on purpose: adding a
|
|
67
|
+
* member to `BOOT_EVENT_NAMES` then fails to compile here until somebody
|
|
68
|
+
* decides how it should read. A partial map would let a new event silently
|
|
69
|
+
* fall through to the default dump, which is the exact outcome this file
|
|
70
|
+
* exists to prevent — and nothing would fail.
|
|
71
|
+
*/
|
|
72
|
+
export const BOOT_TEMPLATES: Record<BootEventName, BootTemplate> = {
|
|
73
|
+
[BOOT_EVENT_NAMES.BOOT_START]: (r) => bodyWith(r, ['namzu.boot.cwd', 'namzu.boot.argv']),
|
|
74
|
+
[BOOT_EVENT_NAMES.CONFIG_RESOLVED]: (r) =>
|
|
75
|
+
joined([r.body, attr(r, 'namzu.config.key.count'), attr(r, 'namzu.config.sources')]),
|
|
76
|
+
[BOOT_EVENT_NAMES.SANDBOX_RESOLVED]: (r) =>
|
|
77
|
+
bodyWith(r, ['namzu.sandbox.backend', 'namzu.sandbox.enforces']),
|
|
78
|
+
[BOOT_EVENT_NAMES.PROVIDER_RESOLVED]: (r) =>
|
|
79
|
+
bodyWith(r, ['namzu.provider.chain', 'namzu.provider.constructed']),
|
|
80
|
+
[BOOT_EVENT_NAMES.CAPABILITY_DETECTED]: (r) => bodyWith(r, ['namzu.capability.name']),
|
|
81
|
+
[BOOT_EVENT_NAMES.CAPABILITY_BROKEN]: (r) =>
|
|
82
|
+
bodyWith(r, ['namzu.capability.name', 'namzu.capability.reason']),
|
|
83
|
+
[BOOT_EVENT_NAMES.TELEMETRY_STATUS]: (r) => r.body,
|
|
84
|
+
// `kind`, not `root`. This asked for `namzu.migration.root`, which NOTHING
|
|
85
|
+
// has ever written — neither `loggingMigrationSink` nor the
|
|
86
|
+
// nothing-to-do branch in `runtime/query/index.ts` — so the operator's
|
|
87
|
+
// migration line rendered the body and appended an empty string. `kind`
|
|
88
|
+
// is the fact worth seeing: migrated, already_migrated, or noop_no_legacy.
|
|
89
|
+
[BOOT_EVENT_NAMES.MIGRATION_COMPLETED]: (r) => bodyWith(r, ['namzu.migration.kind']),
|
|
90
|
+
[BOOT_EVENT_NAMES.DISCOVERY_COMPLETED]: (r) =>
|
|
91
|
+
joined([
|
|
92
|
+
r.body,
|
|
93
|
+
attr(r, 'namzu.discovery.plugins'),
|
|
94
|
+
attr(r, 'namzu.discovery.skills'),
|
|
95
|
+
attr(r, 'namzu.discovery.connectors'),
|
|
96
|
+
]),
|
|
97
|
+
[BOOT_EVENT_NAMES.BOOT_REFUSED]: (r) => bodyWith(r, ['namzu.boot.refusal.reason']),
|
|
98
|
+
[BOOT_EVENT_NAMES.BOOT_READY]: (r) => bodyWith(r, ['namzu.boot.duration.ms']),
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* The column label: `namzu.config.resolved` reads as `config`.
|
|
103
|
+
*
|
|
104
|
+
* Derived from the event name rather than `scope.name` because the scope of
|
|
105
|
+
* every one of these is the process that emitted it — `cli` for all eleven —
|
|
106
|
+
* which would make the column a constant and buy nothing. A record with no
|
|
107
|
+
* event name keeps its scope, which is the only thing it has.
|
|
108
|
+
*/
|
|
109
|
+
export function columnLabel(record: LogRecord): string {
|
|
110
|
+
const name = record.eventName
|
|
111
|
+
if (!name) return record.scope.name
|
|
112
|
+
const parts = name.split('.')
|
|
113
|
+
// `namzu.<area>.<verb>` → `<area>`; anything else keeps its whole name so
|
|
114
|
+
// a foreign vocabulary is not silently truncated into a wrong label.
|
|
115
|
+
if (parts.length === 3 && parts[0] === 'namzu') return parts[1] as string
|
|
116
|
+
return name
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const BOOT_EVENT_SET: ReadonlySet<string> = new Set(Object.values(BOOT_EVENT_NAMES))
|
|
120
|
+
|
|
121
|
+
/** The rendered body for a record, or `undefined` to use the default. */
|
|
122
|
+
export function applyTemplate(record: LogRecord): string | undefined {
|
|
123
|
+
const name = record.eventName
|
|
124
|
+
if (!name || !BOOT_EVENT_SET.has(name)) return undefined
|
|
125
|
+
return BOOT_TEMPLATES[name as BootEventName](record)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// ─── the scope column's colour ───────────────────────────────────────────
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Eight ANSI foreground colours, pinned here.
|
|
132
|
+
*
|
|
133
|
+
* Not 256-colour and not truecolour: this has to be legible on a default
|
|
134
|
+
* terminal profile, and the bright/dim variants of these eight are the only
|
|
135
|
+
* ones a user's own theme is guaranteed to have already made readable
|
|
136
|
+
* against their background. Black and white are absent because one of the
|
|
137
|
+
* two disappears on any given background.
|
|
138
|
+
*/
|
|
139
|
+
const PALETTE = [31, 32, 33, 34, 35, 36, 91, 92] as const
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* FNV-1a, written out rather than imported.
|
|
143
|
+
*
|
|
144
|
+
* The requirement is that the same scope gets the same colour in a
|
|
145
|
+
* different process on a different day, so nothing here may touch process
|
|
146
|
+
* state — no `Math.random`, no insertion order, no `Date`. Written out
|
|
147
|
+
* because a dependency could change its algorithm in a patch release and
|
|
148
|
+
* every colour in every terminal would move at once, for a bump nobody
|
|
149
|
+
* reviewed as a display change.
|
|
150
|
+
*/
|
|
151
|
+
export function scopeColour(scope: string): number {
|
|
152
|
+
let hash = 0x811c9dc5
|
|
153
|
+
for (let i = 0; i < scope.length; i++) {
|
|
154
|
+
hash ^= scope.charCodeAt(i)
|
|
155
|
+
// `Math.imul` keeps this in 32-bit integer space; `hash * 16777619`
|
|
156
|
+
// exceeds 2^53 and starts losing low bits, which is where a hash
|
|
157
|
+
// stops distributing.
|
|
158
|
+
hash = Math.imul(hash, 0x01000193)
|
|
159
|
+
}
|
|
160
|
+
return PALETTE[Math.abs(hash) % PALETTE.length] as number
|
|
161
|
+
}
|