@namzu/sdk 30.2.0 → 31.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 +556 -0
- package/README.md +43 -2
- package/dist/advisory/executor.d.ts +2 -1
- package/dist/advisory/executor.d.ts.map +1 -1
- package/dist/advisory/executor.js +4 -1
- package/dist/advisory/executor.js.map +1 -1
- package/dist/agents/ReactiveAgent.d.ts.map +1 -1
- package/dist/agents/ReactiveAgent.js +12 -0
- package/dist/agents/ReactiveAgent.js.map +1 -1
- package/dist/agents/RouterAgent.d.ts.map +1 -1
- package/dist/agents/RouterAgent.js +21 -3
- package/dist/agents/RouterAgent.js.map +1 -1
- package/dist/agents/SupervisorAgent.d.ts.map +1 -1
- package/dist/agents/SupervisorAgent.js +34 -11
- package/dist/agents/SupervisorAgent.js.map +1 -1
- package/dist/agents/runAgent.d.ts +12 -0
- package/dist/agents/runAgent.d.ts.map +1 -1
- package/dist/agents/runAgent.js +26 -2
- package/dist/agents/runAgent.js.map +1 -1
- package/dist/authorization/command-line.d.ts +81 -0
- package/dist/authorization/command-line.d.ts.map +1 -0
- package/dist/authorization/command-line.js +347 -0
- package/dist/authorization/command-line.js.map +1 -0
- package/dist/authorization/rules.d.ts.map +1 -1
- package/dist/authorization/rules.js +22 -1
- package/dist/authorization/rules.js.map +1 -1
- package/dist/bridge/a2a/client.d.ts +23 -5
- package/dist/bridge/a2a/client.d.ts.map +1 -1
- package/dist/bridge/a2a/client.js +320 -73
- package/dist/bridge/a2a/client.js.map +1 -1
- package/dist/bridge/a2a/mapper.d.ts.map +1 -1
- package/dist/bridge/a2a/mapper.js +4 -0
- package/dist/bridge/a2a/mapper.js.map +1 -1
- package/dist/bridge/acp/server.d.ts +13 -1
- package/dist/bridge/acp/server.d.ts.map +1 -1
- package/dist/bridge/acp/server.js +150 -44
- package/dist/bridge/acp/server.js.map +1 -1
- package/dist/bridge/mcp/connector/adapter.d.ts +3 -2
- package/dist/bridge/mcp/connector/adapter.d.ts.map +1 -1
- package/dist/bridge/mcp/connector/adapter.js +17 -21
- 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 +3 -0
- package/dist/bridge/sse/mapper.js.map +1 -1
- package/dist/compaction/dangling.d.ts +29 -2
- package/dist/compaction/dangling.d.ts.map +1 -1
- package/dist/compaction/dangling.js +172 -35
- package/dist/compaction/dangling.js.map +1 -1
- package/dist/compaction/index.d.ts +3 -2
- package/dist/compaction/index.d.ts.map +1 -1
- package/dist/compaction/index.js +1 -1
- package/dist/compaction/index.js.map +1 -1
- package/dist/compaction/manual.d.ts +11 -1
- package/dist/compaction/manual.d.ts.map +1 -1
- package/dist/compaction/manual.js +89 -14
- package/dist/compaction/manual.js.map +1 -1
- package/dist/compaction/plan.d.ts +19 -6
- package/dist/compaction/plan.d.ts.map +1 -1
- package/dist/compaction/plan.js +18 -4
- package/dist/compaction/plan.js.map +1 -1
- package/dist/compaction/retention.d.ts +10 -7
- package/dist/compaction/retention.d.ts.map +1 -1
- package/dist/compaction/retention.js +26 -8
- package/dist/compaction/retention.js.map +1 -1
- package/dist/compaction/summary.d.ts +4 -4
- package/dist/compaction/summary.js +4 -4
- package/dist/compaction/verifier.d.ts +19 -1
- package/dist/compaction/verifier.d.ts.map +1 -1
- package/dist/compaction/verifier.js +20 -1
- package/dist/compaction/verifier.js.map +1 -1
- package/dist/config/runtime.d.ts +6 -6
- package/dist/connector/BaseConnector.d.ts +6 -4
- package/dist/connector/BaseConnector.d.ts.map +1 -1
- package/dist/connector/BaseConnector.js +8 -2
- package/dist/connector/BaseConnector.js.map +1 -1
- package/dist/connector/builtins/http.d.ts +16 -4
- package/dist/connector/builtins/http.d.ts.map +1 -1
- package/dist/connector/builtins/http.js +177 -44
- package/dist/connector/builtins/http.js.map +1 -1
- package/dist/connector/builtins/webhook.d.ts +15 -4
- package/dist/connector/builtins/webhook.d.ts.map +1 -1
- package/dist/connector/builtins/webhook.js +165 -45
- package/dist/connector/builtins/webhook.js.map +1 -1
- package/dist/connector/execution-contract.d.ts +11 -0
- package/dist/connector/execution-contract.d.ts.map +1 -0
- package/dist/connector/execution-contract.js +14 -0
- package/dist/connector/execution-contract.js.map +1 -0
- package/dist/connector/http-operation.d.ts +48 -0
- package/dist/connector/http-operation.d.ts.map +1 -0
- package/dist/connector/http-operation.js +205 -0
- package/dist/connector/http-operation.js.map +1 -0
- package/dist/connector/mcp/adapter.d.ts.map +1 -1
- package/dist/connector/mcp/adapter.js +8 -3
- package/dist/connector/mcp/adapter.js.map +1 -1
- package/dist/connector/mcp/client.d.ts +14 -8
- package/dist/connector/mcp/client.d.ts.map +1 -1
- package/dist/connector/mcp/client.js +160 -44
- package/dist/connector/mcp/client.js.map +1 -1
- package/dist/connector/mcp/http-sse.d.ts +8 -2
- package/dist/connector/mcp/http-sse.d.ts.map +1 -1
- package/dist/connector/mcp/http-sse.js +70 -17
- package/dist/connector/mcp/http-sse.js.map +1 -1
- package/dist/connector/mcp/prompt-adapter.d.ts.map +1 -1
- package/dist/connector/mcp/prompt-adapter.js +9 -2
- package/dist/connector/mcp/prompt-adapter.js.map +1 -1
- package/dist/connector/mcp/stdio.d.ts +2 -2
- package/dist/connector/mcp/stdio.d.ts.map +1 -1
- package/dist/connector/mcp/stdio.js +14 -50
- package/dist/connector/mcp/stdio.js.map +1 -1
- package/dist/connector/mcp/streamable-http.d.ts +7 -2
- package/dist/connector/mcp/streamable-http.d.ts.map +1 -1
- package/dist/connector/mcp/streamable-http.js +66 -18
- package/dist/connector/mcp/streamable-http.js.map +1 -1
- package/dist/connector/tools/adapter.d.ts +2 -2
- package/dist/connector/tools/adapter.d.ts.map +1 -1
- package/dist/connector/tools/adapter.js +23 -14
- package/dist/connector/tools/adapter.js.map +1 -1
- package/dist/connector/tools/definitions.d.ts.map +1 -1
- package/dist/connector/tools/definitions.js +5 -2
- package/dist/connector/tools/definitions.js.map +1 -1
- package/dist/connector/tools/result.d.ts +4 -0
- package/dist/connector/tools/result.d.ts.map +1 -0
- package/dist/connector/tools/result.js +20 -0
- package/dist/connector/tools/result.js.map +1 -0
- package/dist/connector/web/guarded-fetch.d.ts +4 -2
- package/dist/connector/web/guarded-fetch.d.ts.map +1 -1
- package/dist/connector/web/guarded-fetch.js +157 -43
- package/dist/connector/web/guarded-fetch.js.map +1 -1
- package/dist/constants/sandbox/index.d.ts +3 -2
- package/dist/constants/sandbox/index.d.ts.map +1 -1
- package/dist/constants/sandbox/index.js +3 -2
- package/dist/constants/sandbox/index.js.map +1 -1
- package/dist/contracts/api.d.ts +2 -0
- package/dist/contracts/api.d.ts.map +1 -1
- package/dist/contracts/schemas.d.ts +38 -12
- package/dist/contracts/schemas.d.ts.map +1 -1
- package/dist/contracts/schemas.js +7 -0
- package/dist/contracts/schemas.js.map +1 -1
- package/dist/directory/derive-supervisor.d.ts.map +1 -1
- package/dist/directory/derive-supervisor.js +8 -0
- package/dist/directory/derive-supervisor.js.map +1 -1
- package/dist/directory/derive.d.ts.map +1 -1
- package/dist/directory/derive.js +8 -0
- package/dist/directory/derive.js.map +1 -1
- package/dist/directory/load.d.ts.map +1 -1
- package/dist/directory/load.js +2 -0
- package/dist/directory/load.js.map +1 -1
- package/dist/directory/types.d.ts +4 -0
- package/dist/directory/types.d.ts.map +1 -1
- package/dist/eval/experiment.d.ts +10 -10
- package/dist/eval/experiment.d.ts.map +1 -1
- package/dist/eval/experiment.js +121 -91
- package/dist/eval/experiment.js.map +1 -1
- package/dist/eval/judge.d.ts +6 -0
- package/dist/eval/judge.d.ts.map +1 -1
- package/dist/eval/judge.js +7 -2
- package/dist/eval/judge.js.map +1 -1
- package/dist/eval/types.d.ts +7 -1
- package/dist/eval/types.d.ts.map +1 -1
- package/dist/manager/agent/lifecycle.d.ts +12 -10
- package/dist/manager/agent/lifecycle.d.ts.map +1 -1
- package/dist/manager/agent/lifecycle.js +16 -3
- package/dist/manager/agent/lifecycle.js.map +1 -1
- package/dist/manager/connector/environment.d.ts +2 -2
- package/dist/manager/connector/environment.d.ts.map +1 -1
- package/dist/manager/connector/environment.js +2 -2
- package/dist/manager/connector/environment.js.map +1 -1
- package/dist/manager/connector/lifecycle.d.ts +10 -2
- package/dist/manager/connector/lifecycle.d.ts.map +1 -1
- package/dist/manager/connector/lifecycle.js +273 -24
- package/dist/manager/connector/lifecycle.js.map +1 -1
- package/dist/manager/connector/tenant.d.ts +5 -4
- package/dist/manager/connector/tenant.d.ts.map +1 -1
- package/dist/manager/connector/tenant.js +47 -22
- package/dist/manager/connector/tenant.js.map +1 -1
- package/dist/manager/goal/activation.d.ts +23 -0
- package/dist/manager/goal/activation.d.ts.map +1 -0
- package/dist/manager/goal/activation.js +41 -0
- package/dist/manager/goal/activation.js.map +1 -0
- package/dist/manager/index.d.ts +3 -2
- package/dist/manager/index.d.ts.map +1 -1
- package/dist/manager/index.js.map +1 -1
- package/dist/manager/run/persistence.d.ts +2 -0
- package/dist/manager/run/persistence.d.ts.map +1 -1
- package/dist/manager/run/persistence.js +5 -1
- package/dist/manager/run/persistence.js.map +1 -1
- package/dist/manager/topic/dependency.d.ts +24 -0
- package/dist/manager/topic/dependency.d.ts.map +1 -0
- package/dist/manager/topic/dependency.js +13 -0
- package/dist/manager/topic/dependency.js.map +1 -0
- package/dist/manager/topic/lifecycle.d.ts +9 -21
- package/dist/manager/topic/lifecycle.d.ts.map +1 -1
- package/dist/manager/topic/lifecycle.js +17 -29
- package/dist/manager/topic/lifecycle.js.map +1 -1
- package/dist/plugin/index.d.ts +1 -0
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/lifecycle.d.ts +15 -0
- package/dist/plugin/lifecycle.d.ts.map +1 -1
- package/dist/plugin/lifecycle.js +144 -38
- package/dist/plugin/lifecycle.js.map +1 -1
- package/dist/plugin/loader.d.ts +3 -3
- package/dist/plugin/loader.d.ts.map +1 -1
- package/dist/plugin/loader.js +58 -12
- package/dist/plugin/loader.js.map +1 -1
- package/dist/provider/collect-chat-completion.d.ts.map +1 -1
- package/dist/provider/collect-chat-completion.js +4 -0
- package/dist/provider/collect-chat-completion.js.map +1 -1
- package/dist/provider/fallback.d.ts +3 -1
- package/dist/provider/fallback.d.ts.map +1 -1
- package/dist/provider/fallback.js +62 -10
- package/dist/provider/fallback.js.map +1 -1
- package/dist/provider/idle-timeout.d.ts +4 -0
- package/dist/provider/idle-timeout.d.ts.map +1 -1
- package/dist/provider/idle-timeout.js +131 -15
- package/dist/provider/idle-timeout.js.map +1 -1
- package/dist/provider/index.d.ts +2 -0
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +1 -0
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/instrumentation.d.ts.map +1 -1
- package/dist/provider/instrumentation.js +1 -0
- package/dist/provider/instrumentation.js.map +1 -1
- package/dist/provider/retry.d.ts.map +1 -1
- package/dist/provider/retry.js +13 -1
- package/dist/provider/retry.js.map +1 -1
- package/dist/public-runtime.d.ts +57 -24
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +42 -35
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-tools.d.ts +1 -0
- package/dist/public-tools.d.ts.map +1 -1
- package/dist/public-tools.js +5 -0
- package/dist/public-tools.js.map +1 -1
- package/dist/public-types.d.ts +33 -12
- package/dist/public-types.d.ts.map +1 -1
- package/dist/rag/embedding.d.ts +8 -3
- package/dist/rag/embedding.d.ts.map +1 -1
- package/dist/rag/embedding.js +120 -9
- package/dist/rag/embedding.js.map +1 -1
- package/dist/rag/index.d.ts +1 -1
- package/dist/rag/index.d.ts.map +1 -1
- package/dist/rag/index.js +1 -1
- package/dist/rag/index.js.map +1 -1
- package/dist/rag/ingestion.d.ts +2 -2
- package/dist/rag/ingestion.d.ts.map +1 -1
- package/dist/rag/ingestion.js +15 -3
- package/dist/rag/ingestion.js.map +1 -1
- package/dist/rag/knowledge-base.d.ts +3 -3
- package/dist/rag/knowledge-base.d.ts.map +1 -1
- package/dist/rag/knowledge-base.js +8 -4
- package/dist/rag/knowledge-base.js.map +1 -1
- package/dist/rag/operation.d.ts +10 -0
- package/dist/rag/operation.d.ts.map +1 -0
- package/dist/rag/operation.js +26 -0
- package/dist/rag/operation.js.map +1 -0
- package/dist/rag/rag-tool.d.ts.map +1 -1
- package/dist/rag/rag-tool.js +6 -3
- package/dist/rag/rag-tool.js.map +1 -1
- package/dist/rag/retriever.d.ts +2 -2
- package/dist/rag/retriever.d.ts.map +1 -1
- package/dist/rag/retriever.js +31 -15
- package/dist/rag/retriever.js.map +1 -1
- package/dist/rag/vector-store.d.ts +3 -3
- package/dist/rag/vector-store.d.ts.map +1 -1
- package/dist/rag/vector-store.js +4 -2
- package/dist/rag/vector-store.js.map +1 -1
- package/dist/registry/command/kernel-commands.d.ts +16 -4
- package/dist/registry/command/kernel-commands.d.ts.map +1 -1
- package/dist/registry/command/kernel-commands.js +171 -0
- package/dist/registry/command/kernel-commands.js.map +1 -1
- package/dist/run/reporter.d.ts.map +1 -1
- package/dist/run/reporter.js +9 -0
- package/dist/run/reporter.js.map +1 -1
- package/dist/run-query/index.d.ts +15 -1
- package/dist/run-query/index.d.ts.map +1 -1
- package/dist/run-query/index.js +69 -15
- package/dist/run-query/index.js.map +1 -1
- package/dist/runtime/query/context.d.ts.map +1 -1
- package/dist/runtime/query/context.js +10 -3
- package/dist/runtime/query/context.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +3 -0
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +80 -18
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/guard.d.ts +9 -0
- package/dist/runtime/query/guard.d.ts.map +1 -1
- package/dist/runtime/query/guard.js +11 -0
- package/dist/runtime/query/guard.js.map +1 -1
- package/dist/runtime/query/index.d.ts +30 -1
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +548 -95
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +74 -14
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.js +94 -53
- package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context.d.ts +3 -0
- package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/context.js.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.js +21 -0
- package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.js +4 -0
- package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
- package/dist/runtime/query/project-instructions.d.ts +69 -0
- package/dist/runtime/query/project-instructions.d.ts.map +1 -0
- package/dist/runtime/query/project-instructions.js +137 -0
- package/dist/runtime/query/project-instructions.js.map +1 -0
- package/dist/runtime/query/request-rich-content.d.ts +22 -0
- package/dist/runtime/query/request-rich-content.d.ts.map +1 -0
- package/dist/runtime/query/request-rich-content.js +122 -0
- package/dist/runtime/query/request-rich-content.js.map +1 -0
- package/dist/runtime/query/result.d.ts.map +1 -1
- package/dist/runtime/query/result.js +12 -1
- 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 -20
- package/dist/runtime/query/resume-pending.js.map +1 -1
- package/dist/runtime/query/resume-run.d.ts.map +1 -1
- package/dist/runtime/query/resume-run.js +54 -8
- package/dist/runtime/query/resume-run.js.map +1 -1
- package/dist/runtime/query/run-state.d.ts +5 -0
- package/dist/runtime/query/run-state.d.ts.map +1 -1
- package/dist/runtime/query/run-state.js +6 -1
- package/dist/runtime/query/run-state.js.map +1 -1
- package/dist/runtime/query/sandbox-lifecycle.d.ts +54 -0
- package/dist/runtime/query/sandbox-lifecycle.d.ts.map +1 -0
- package/dist/runtime/query/sandbox-lifecycle.js +167 -0
- package/dist/runtime/query/sandbox-lifecycle.js.map +1 -0
- package/dist/sandbox/isolation.d.ts.map +1 -1
- package/dist/sandbox/isolation.js +9 -0
- package/dist/sandbox/isolation.js.map +1 -1
- package/dist/sandbox/provider/local.d.ts +56 -6
- package/dist/sandbox/provider/local.d.ts.map +1 -1
- package/dist/sandbox/provider/local.js +181 -76
- package/dist/sandbox/provider/local.js.map +1 -1
- package/dist/sandbox/terminal.d.ts +13 -5
- package/dist/sandbox/terminal.d.ts.map +1 -1
- package/dist/sandbox/terminal.js +11 -3
- package/dist/sandbox/terminal.js.map +1 -1
- package/dist/session/errors.d.ts +28 -29
- package/dist/session/errors.d.ts.map +1 -1
- package/dist/session/errors.js +28 -29
- package/dist/session/errors.js.map +1 -1
- package/dist/session/handoff/broadcast.d.ts +5 -8
- package/dist/session/handoff/broadcast.d.ts.map +1 -1
- package/dist/session/handoff/broadcast.js +16 -6
- package/dist/session/handoff/broadcast.js.map +1 -1
- package/dist/session/handoff/single.d.ts +5 -8
- package/dist/session/handoff/single.d.ts.map +1 -1
- package/dist/session/handoff/single.js +7 -4
- package/dist/session/handoff/single.js.map +1 -1
- package/dist/store/attachment/index.d.ts +11 -3
- package/dist/store/attachment/index.d.ts.map +1 -1
- package/dist/store/attachment/index.js +49 -4
- package/dist/store/attachment/index.js.map +1 -1
- package/dist/store/feedback/conformance.d.ts.map +1 -1
- package/dist/store/feedback/conformance.js +32 -0
- package/dist/store/feedback/conformance.js.map +1 -1
- package/dist/store/feedback/disk.d.ts +8 -6
- package/dist/store/feedback/disk.d.ts.map +1 -1
- package/dist/store/feedback/disk.js +111 -76
- package/dist/store/feedback/disk.js.map +1 -1
- package/dist/store/goal/index.d.ts +111 -0
- package/dist/store/goal/index.d.ts.map +1 -0
- package/dist/store/goal/index.js +436 -0
- package/dist/store/goal/index.js.map +1 -0
- package/dist/store/index.d.ts +1 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +1 -1
- package/dist/store/index.js.map +1 -1
- package/dist/store/kv/revision-record-store.d.ts +70 -0
- package/dist/store/kv/revision-record-store.d.ts.map +1 -0
- package/dist/store/kv/revision-record-store.js +290 -0
- package/dist/store/kv/revision-record-store.js.map +1 -0
- package/dist/store/memory/disk.d.ts +9 -7
- package/dist/store/memory/disk.d.ts.map +1 -1
- package/dist/store/memory/disk.js +256 -98
- package/dist/store/memory/disk.js.map +1 -1
- package/dist/store/run/disk.d.ts +10 -2
- package/dist/store/run/disk.d.ts.map +1 -1
- package/dist/store/run/disk.js +70 -4
- package/dist/store/run/disk.js.map +1 -1
- package/dist/store/run/memory.d.ts +4 -2
- package/dist/store/run/memory.d.ts.map +1 -1
- package/dist/store/run/memory.js +15 -1
- package/dist/store/run/memory.js.map +1 -1
- package/dist/store/session/disk.d.ts +9 -0
- package/dist/store/session/disk.d.ts.map +1 -1
- package/dist/store/session/disk.js +57 -5
- package/dist/store/session/disk.js.map +1 -1
- package/dist/store/session/memory.d.ts +1 -0
- package/dist/store/session/memory.d.ts.map +1 -1
- package/dist/store/session/memory.js +14 -0
- package/dist/store/session/memory.js.map +1 -1
- package/dist/store/topic/memory.d.ts +1 -2
- package/dist/store/topic/memory.d.ts.map +1 -1
- package/dist/store/topic/memory.js +4 -5
- package/dist/store/topic/memory.js.map +1 -1
- package/dist/store/topic/objective.d.ts +8 -4
- package/dist/store/topic/objective.d.ts.map +1 -1
- package/dist/store/topic/objective.js +185 -100
- package/dist/store/topic/objective.js.map +1 -1
- package/dist/store/topic/state.d.ts +1 -2
- package/dist/store/topic/state.d.ts.map +1 -1
- package/dist/store/topic/state.js +50 -62
- package/dist/store/topic/state.js.map +1 -1
- package/dist/tools/builtins/bash.d.ts.map +1 -1
- package/dist/tools/builtins/bash.js +20 -0
- package/dist/tools/builtins/bash.js.map +1 -1
- package/dist/tools/builtins/computer-use.d.ts +9 -1
- package/dist/tools/builtins/computer-use.d.ts.map +1 -1
- package/dist/tools/builtins/computer-use.js.map +1 -1
- package/dist/tools/builtins/content-fingerprint.d.ts +8 -7
- package/dist/tools/builtins/content-fingerprint.d.ts.map +1 -1
- package/dist/tools/builtins/content-fingerprint.js +9 -10
- package/dist/tools/builtins/content-fingerprint.js.map +1 -1
- package/dist/tools/builtins/edit.d.ts +6 -1
- package/dist/tools/builtins/edit.d.ts.map +1 -1
- package/dist/tools/builtins/edit.js +166 -27
- package/dist/tools/builtins/edit.js.map +1 -1
- package/dist/tools/builtins/write-file.d.ts.map +1 -1
- package/dist/tools/builtins/write-file.js +45 -19
- package/dist/tools/builtins/write-file.js.map +1 -1
- package/dist/tools/command-arguments.d.ts +43 -0
- package/dist/tools/command-arguments.d.ts.map +1 -0
- package/dist/tools/command-arguments.js +52 -0
- package/dist/tools/command-arguments.js.map +1 -0
- package/dist/tools/coordinator/index.d.ts +2 -0
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +3 -1
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/tools/defineTool.d.ts +10 -0
- package/dist/tools/defineTool.d.ts.map +1 -1
- package/dist/tools/defineTool.js +1 -0
- package/dist/tools/defineTool.js.map +1 -1
- package/dist/tools/env-scrub.d.ts +7 -5
- package/dist/tools/env-scrub.d.ts.map +1 -1
- package/dist/tools/env-scrub.js +7 -5
- package/dist/tools/env-scrub.js.map +1 -1
- package/dist/tools/goal/index.d.ts +20 -0
- package/dist/tools/goal/index.d.ts.map +1 -0
- package/dist/tools/goal/index.js +104 -0
- package/dist/tools/goal/index.js.map +1 -0
- package/dist/tools/memory/index.d.ts +16 -0
- package/dist/tools/memory/index.d.ts.map +1 -1
- package/dist/tools/memory/index.js +6 -2
- package/dist/tools/memory/index.js.map +1 -1
- package/dist/tools/memory/search.d.ts +4 -1
- package/dist/tools/memory/search.d.ts.map +1 -1
- package/dist/tools/memory/search.js +10 -2
- package/dist/tools/memory/search.js.map +1 -1
- package/dist/types/agent/base.d.ts +11 -3
- package/dist/types/agent/base.d.ts.map +1 -1
- package/dist/types/agent/factory.d.ts +2 -0
- package/dist/types/agent/factory.d.ts.map +1 -1
- package/dist/types/agent/reactive.d.ts +2 -0
- package/dist/types/agent/reactive.d.ts.map +1 -1
- package/dist/types/agent/supervisor.d.ts +6 -0
- package/dist/types/agent/supervisor.d.ts.map +1 -1
- package/dist/types/agent/task.d.ts +6 -2
- package/dist/types/agent/task.d.ts.map +1 -1
- package/dist/types/connector/core.d.ts +13 -8
- package/dist/types/connector/core.d.ts.map +1 -1
- package/dist/types/connector/definition.d.ts +37 -18
- package/dist/types/connector/definition.d.ts.map +1 -1
- package/dist/types/connector/http.d.ts +6 -0
- package/dist/types/connector/http.d.ts.map +1 -1
- package/dist/types/connector/mcp.d.ts +24 -6
- package/dist/types/connector/mcp.d.ts.map +1 -1
- package/dist/types/connector/tenant.d.ts +17 -7
- package/dist/types/connector/tenant.d.ts.map +1 -1
- package/dist/types/connector/webhook.d.ts +6 -0
- package/dist/types/connector/webhook.d.ts.map +1 -1
- package/dist/types/goal/index.d.ts +46 -0
- package/dist/types/goal/index.d.ts.map +1 -0
- package/dist/types/goal/index.js +2 -0
- package/dist/types/goal/index.js.map +1 -0
- package/dist/types/ids/index.d.ts +2 -0
- package/dist/types/ids/index.d.ts.map +1 -1
- package/dist/types/ids/index.js.map +1 -1
- package/dist/types/message/index.d.ts +75 -10
- package/dist/types/message/index.d.ts.map +1 -1
- package/dist/types/message/index.js +49 -3
- package/dist/types/message/index.js.map +1 -1
- package/dist/types/plugin/index.d.ts +7 -5
- package/dist/types/plugin/index.d.ts.map +1 -1
- package/dist/types/plugin/index.js.map +1 -1
- package/dist/types/provider/chat.d.ts +27 -4
- package/dist/types/provider/chat.d.ts.map +1 -1
- package/dist/types/provider/interface.d.ts +18 -7
- package/dist/types/provider/interface.d.ts.map +1 -1
- package/dist/types/provider/stream.d.ts +6 -0
- package/dist/types/provider/stream.d.ts.map +1 -1
- package/dist/types/rag/embedding.d.ts +15 -2
- package/dist/types/rag/embedding.d.ts.map +1 -1
- package/dist/types/rag/ingestion.d.ts +2 -2
- package/dist/types/rag/ingestion.d.ts.map +1 -1
- package/dist/types/rag/knowledge-base.d.ts +3 -3
- package/dist/types/rag/knowledge-base.d.ts.map +1 -1
- package/dist/types/rag/retrieval.d.ts +2 -2
- package/dist/types/rag/retrieval.d.ts.map +1 -1
- package/dist/types/rag/scope.d.ts +4 -0
- package/dist/types/rag/scope.d.ts.map +1 -1
- package/dist/types/rag/vector.d.ts +5 -2
- package/dist/types/rag/vector.d.ts.map +1 -1
- package/dist/types/run/config.d.ts +20 -0
- package/dist/types/run/config.d.ts.map +1 -1
- package/dist/types/run/events.d.ts +25 -1
- package/dist/types/run/events.d.ts.map +1 -1
- package/dist/types/run/events.js.map +1 -1
- package/dist/types/run/metadata.d.ts +2 -0
- package/dist/types/run/metadata.d.ts.map +1 -1
- package/dist/types/run/step.d.ts +2 -6
- package/dist/types/run/step.d.ts.map +1 -1
- package/dist/types/run/step.js.map +1 -1
- package/dist/types/run/store.d.ts +55 -2
- package/dist/types/run/store.d.ts.map +1 -1
- package/dist/types/sandbox/index.d.ts +47 -6
- package/dist/types/sandbox/index.d.ts.map +1 -1
- package/dist/types/sandbox/index.js +23 -10
- package/dist/types/sandbox/index.js.map +1 -1
- package/dist/types/session/store.d.ts +13 -0
- package/dist/types/session/store.d.ts.map +1 -1
- package/dist/types/tool/index.d.ts +33 -11
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/types/topic/entity.d.ts +3 -4
- package/dist/types/topic/entity.d.ts.map +1 -1
- package/dist/types/topic/store.d.ts +3 -3
- package/dist/utils/id.d.ts +3 -1
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +4 -0
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/process-environment.d.ts +26 -0
- package/dist/utils/process-environment.d.ts.map +1 -0
- package/dist/utils/process-environment.js +78 -0
- package/dist/utils/process-environment.js.map +1 -0
- package/dist/vault/InMemoryCredentialVault.d.ts +2 -0
- package/dist/vault/InMemoryCredentialVault.d.ts.map +1 -1
- package/dist/vault/InMemoryCredentialVault.js +24 -4
- package/dist/vault/InMemoryCredentialVault.js.map +1 -1
- package/dist/vault/instrumentation.d.ts.map +1 -1
- package/dist/vault/instrumentation.js +15 -0
- package/dist/vault/instrumentation.js.map +1 -1
- package/package.json +1 -1
- package/src/advisory/executor.ts +4 -1
- package/src/agents/ReactiveAgent.ts +12 -0
- package/src/agents/RouterAgent.ts +25 -3
- package/src/agents/SupervisorAgent.ts +33 -11
- package/src/agents/runAgent.ts +38 -2
- package/src/authorization/command-line.ts +390 -0
- package/src/authorization/rules.ts +22 -1
- package/src/bridge/a2a/client.ts +384 -97
- package/src/bridge/a2a/mapper.ts +5 -0
- package/src/bridge/acp/server.ts +184 -42
- package/src/bridge/mcp/connector/adapter.ts +28 -20
- package/src/bridge/sse/mapper.ts +3 -0
- package/src/compaction/dangling.ts +203 -38
- package/src/compaction/index.ts +9 -2
- package/src/compaction/manual.ts +125 -18
- package/src/compaction/plan.ts +42 -11
- package/src/compaction/retention.ts +23 -8
- package/src/compaction/summary.ts +4 -4
- package/src/compaction/verifier.ts +66 -0
- package/src/connector/BaseConnector.ts +19 -4
- package/src/connector/builtins/http.ts +236 -46
- package/src/connector/builtins/webhook.ts +207 -47
- package/src/connector/execution-contract.ts +27 -0
- package/src/connector/http-operation.ts +238 -0
- package/src/connector/mcp/adapter.ts +8 -3
- package/src/connector/mcp/client.ts +207 -58
- package/src/connector/mcp/http-sse.ts +91 -23
- package/src/connector/mcp/prompt-adapter.ts +8 -2
- package/src/connector/mcp/stdio.ts +21 -46
- package/src/connector/mcp/streamable-http.ts +86 -22
- package/src/connector/tools/adapter.ts +23 -14
- package/src/connector/tools/definitions.ts +5 -2
- package/src/connector/tools/result.ts +21 -0
- package/src/connector/web/guarded-fetch.ts +188 -48
- package/src/constants/sandbox/index.ts +3 -2
- package/src/contracts/api.ts +2 -0
- package/src/contracts/schemas.ts +7 -0
- package/src/directory/derive-supervisor.ts +8 -0
- package/src/directory/derive.ts +8 -0
- package/src/directory/load.ts +2 -0
- package/src/directory/types.ts +4 -0
- package/src/eval/experiment.ts +160 -111
- package/src/eval/judge.ts +13 -2
- package/src/eval/types.ts +7 -1
- package/src/manager/agent/lifecycle.ts +28 -12
- package/src/manager/connector/environment.ts +3 -1
- package/src/manager/connector/lifecycle.ts +364 -24
- package/src/manager/connector/tenant.ts +56 -23
- package/src/manager/goal/activation.ts +52 -0
- package/src/manager/index.ts +10 -2
- package/src/manager/run/persistence.ts +6 -1
- package/src/manager/topic/dependency.ts +39 -0
- package/src/manager/topic/lifecycle.ts +19 -31
- package/src/plugin/index.ts +1 -0
- package/src/plugin/lifecycle.ts +180 -39
- package/src/plugin/loader.ts +70 -13
- package/src/provider/collect-chat-completion.ts +3 -0
- package/src/provider/fallback.ts +79 -11
- package/src/provider/idle-timeout.ts +143 -17
- package/src/provider/index.ts +2 -0
- package/src/provider/instrumentation.ts +1 -0
- package/src/provider/retry.ts +16 -1
- package/src/public-runtime.ts +190 -32
- package/src/public-tools.ts +5 -0
- package/src/public-types.ts +85 -11
- package/src/rag/embedding.ts +147 -19
- package/src/rag/index.ts +1 -1
- package/src/rag/ingestion.ts +16 -2
- package/src/rag/knowledge-base.ts +13 -4
- package/src/rag/operation.ts +28 -0
- package/src/rag/rag-tool.ts +6 -3
- package/src/rag/retriever.ts +62 -11
- package/src/rag/vector-store.ts +8 -2
- package/src/registry/command/kernel-commands.ts +223 -4
- package/src/run/reporter.ts +10 -0
- package/src/run-query/index.ts +84 -15
- package/src/runtime/query/context.ts +13 -3
- package/src/runtime/query/executor.ts +90 -17
- package/src/runtime/query/guard.ts +12 -0
- package/src/runtime/query/index.ts +652 -103
- package/src/runtime/query/iteration/index.ts +89 -13
- package/src/runtime/query/iteration/phases/compaction.ts +120 -55
- package/src/runtime/query/iteration/phases/context.ts +4 -0
- package/src/runtime/query/iteration/phases/tool-review.ts +28 -0
- package/src/runtime/query/iteration/stream-turn.ts +3 -0
- package/src/runtime/query/project-instructions.ts +212 -0
- package/src/runtime/query/request-rich-content.ts +153 -0
- package/src/runtime/query/result.ts +12 -1
- package/src/runtime/query/resume-pending.ts +20 -18
- package/src/runtime/query/resume-run.ts +52 -8
- package/src/runtime/query/run-state.ts +11 -1
- package/src/runtime/query/sandbox-lifecycle.ts +210 -0
- package/src/sandbox/isolation.ts +9 -0
- package/src/sandbox/provider/local.ts +255 -90
- package/src/sandbox/terminal.ts +13 -5
- package/src/session/errors.ts +68 -42
- package/src/session/handoff/broadcast.ts +20 -14
- package/src/session/handoff/single.ts +14 -13
- package/src/store/attachment/index.ts +65 -3
- package/src/store/feedback/conformance.ts +39 -0
- package/src/store/feedback/disk.ts +128 -82
- package/src/store/goal/index.ts +594 -0
- package/src/store/index.ts +1 -1
- package/src/store/kv/revision-record-store.ts +346 -0
- package/src/store/memory/disk.ts +288 -113
- package/src/store/run/disk.ts +96 -5
- package/src/store/run/memory.ts +22 -2
- package/src/store/session/disk.ts +93 -6
- package/src/store/session/memory.ts +22 -0
- package/src/store/topic/memory.ts +4 -5
- package/src/store/topic/objective.ts +215 -100
- package/src/store/topic/state.ts +100 -63
- package/src/tools/builtins/bash.ts +21 -0
- package/src/tools/builtins/computer-use.ts +9 -1
- package/src/tools/builtins/content-fingerprint.ts +9 -12
- package/src/tools/builtins/edit.ts +190 -27
- package/src/tools/builtins/write-file.ts +55 -19
- package/src/tools/command-arguments.ts +54 -0
- package/src/tools/coordinator/index.ts +4 -1
- package/src/tools/defineTool.ts +11 -0
- package/src/tools/env-scrub.ts +7 -5
- package/src/tools/goal/index.ts +129 -0
- package/src/tools/memory/index.ts +26 -3
- package/src/tools/memory/search.ts +20 -3
- package/src/types/agent/base.ts +12 -3
- package/src/types/agent/factory.ts +2 -0
- package/src/types/agent/reactive.ts +2 -0
- package/src/types/agent/supervisor.ts +6 -0
- package/src/types/agent/task.ts +6 -2
- package/src/types/connector/core.ts +13 -8
- package/src/types/connector/definition.ts +54 -20
- package/src/types/connector/http.ts +7 -0
- package/src/types/connector/mcp.ts +27 -6
- package/src/types/connector/tenant.ts +21 -7
- package/src/types/connector/webhook.ts +7 -0
- package/src/types/goal/index.ts +50 -0
- package/src/types/ids/index.ts +2 -0
- package/src/types/message/index.ts +143 -9
- package/src/types/plugin/index.ts +7 -5
- package/src/types/provider/chat.ts +35 -4
- package/src/types/provider/interface.ts +22 -7
- package/src/types/provider/stream.ts +6 -0
- package/src/types/rag/embedding.ts +16 -2
- package/src/types/rag/ingestion.ts +2 -1
- package/src/types/rag/knowledge-base.ts +7 -3
- package/src/types/rag/retrieval.ts +2 -1
- package/src/types/rag/scope.ts +5 -0
- package/src/types/rag/vector.ts +5 -2
- package/src/types/run/config.ts +20 -0
- package/src/types/run/events.ts +28 -3
- package/src/types/run/metadata.ts +2 -0
- package/src/types/run/step.ts +2 -7
- package/src/types/run/store.ts +60 -2
- package/src/types/sandbox/index.ts +57 -14
- package/src/types/session/store.ts +18 -0
- package/src/types/tool/index.ts +33 -11
- package/src/types/topic/entity.ts +3 -4
- package/src/types/topic/store.ts +3 -3
- package/src/utils/id.ts +6 -0
- package/src/utils/process-environment.ts +101 -0
- package/src/vault/InMemoryCredentialVault.ts +29 -4
- package/src/vault/instrumentation.ts +24 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/attachment/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAE9E;;;;;;;;;;;;;;;;GAgBG;AAEH,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAAA;IACnC,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,sEAAsE;IACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC/B;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,sDAAsD;IACtD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/attachment/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAE9E;;;;;;;;;;;;;;;;GAgBG;AAEH,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAAA;IACnC,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,sEAAsE;IACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED,sEAAsE;AACtE,MAAM,WAAW,0BAA0B;IAC1C;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC7B;AAED,MAAM,WAAW,eAAe;IAC/B;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,sDAAsD;IACtD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAA;CACxF;AAED,yCAAyC;AACzC,qBAAa,uBAAwB,SAAQ,KAAK;IACjD,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;gBAErB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;CAKpC;AAED,yEAAyE;AACzE,qBAAa,sBAAuB,SAAQ,KAAK;IAChD,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;gBAErB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;CAOpC;AAED,mEAAmE;AACnE,qBAAa,gCAAiC,SAAQ,KAAK;IAC1D,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;gBAEvD,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAOtE;AAED,eAAO,MAAM,kBAAkB,GAC9B,YAAY,iBAAiB,KAC3B,UAAU,IAAI,iBAAiB,GAAG,gBACe,CAAA;AAEpD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACtC,UAAU,EAAE,iBAAiB,EAC7B,KAAK,EAAE,eAAe,GAAG,SAAS,EAClC,OAAO,GAAE,0BAA+B,GACtC,OAAO,CAAC,iBAAiB,CAAC,CAsC5B;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,KAAK,EAAE,eAAe,GAAG,SAAS,EAClC,OAAO,GAAE,0BAA+B,GACtC,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAuB7B"}
|
|
@@ -35,12 +35,18 @@ export const isStoredAttachment = (attachment) => attachment.type === 'stored';
|
|
|
35
35
|
* why — the worst available outcome, and the reason none of these three
|
|
36
36
|
* branches returns the message unchanged.
|
|
37
37
|
*/
|
|
38
|
-
export async function resolveAttachment(attachment, store) {
|
|
38
|
+
export async function resolveAttachment(attachment, store, options = {}) {
|
|
39
|
+
const { signal } = options;
|
|
40
|
+
signal?.throwIfAborted();
|
|
39
41
|
if (!isStoredAttachment(attachment))
|
|
40
42
|
return attachment;
|
|
41
43
|
if (!store)
|
|
42
44
|
throw new NoAttachmentStoreError({ ref: attachment.ref });
|
|
43
|
-
const bytes = await store.get(attachment.ref);
|
|
45
|
+
const bytes = await awaitStoreRead(signal, () => signal ? store.get(attachment.ref, { signal }) : store.get(attachment.ref));
|
|
46
|
+
// A store completion can win its promise reaction and remove the abort
|
|
47
|
+
// listener immediately before an already-queued abort. Publication is a
|
|
48
|
+
// second authority boundary, so fence it independently.
|
|
49
|
+
signal?.throwIfAborted();
|
|
44
50
|
if (!bytes)
|
|
45
51
|
throw new AttachmentNotFoundError({ ref: attachment.ref });
|
|
46
52
|
if (bytes.mediaType !== attachment.mediaType) {
|
|
@@ -73,7 +79,8 @@ export async function resolveAttachment(attachment, store) {
|
|
|
73
79
|
* one scan and no allocation — and so a caller cannot tell resolved
|
|
74
80
|
* messages from unresolved ones by identity and get it wrong.
|
|
75
81
|
*/
|
|
76
|
-
export async function resolveAttachments(messages, store) {
|
|
82
|
+
export async function resolveAttachments(messages, store, options = {}) {
|
|
83
|
+
options.signal?.throwIfAborted();
|
|
77
84
|
// `Message` rather than a structural constraint: only some members of
|
|
78
85
|
// the union carry `attachments`, and a structural bound over a union
|
|
79
86
|
// like that is not assignable in either direction. Naming the real type
|
|
@@ -87,8 +94,46 @@ export async function resolveAttachments(messages, store) {
|
|
|
87
94
|
return message;
|
|
88
95
|
return {
|
|
89
96
|
...message,
|
|
90
|
-
attachments: await Promise.all(attachments.map((
|
|
97
|
+
attachments: await Promise.all(attachments.map((attachment) => resolveAttachment(attachment, store, options))),
|
|
91
98
|
};
|
|
92
99
|
}));
|
|
93
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Await a host store without handing it ownership of run cancellation.
|
|
103
|
+
*
|
|
104
|
+
* Forwarding the signal is cooperative cleanup; this race is the public
|
|
105
|
+
* liveness boundary when a remote or custom store ignores it. The first cause
|
|
106
|
+
* wins, and late store completion has no route back into the returned value.
|
|
107
|
+
*/
|
|
108
|
+
async function awaitStoreRead(signal, start) {
|
|
109
|
+
if (!signal)
|
|
110
|
+
return await start();
|
|
111
|
+
signal.throwIfAborted();
|
|
112
|
+
return new Promise((resolve, reject) => {
|
|
113
|
+
let settled = false;
|
|
114
|
+
const cleanup = () => signal.removeEventListener('abort', onAbort);
|
|
115
|
+
const rejectOnce = (reason) => {
|
|
116
|
+
if (settled)
|
|
117
|
+
return;
|
|
118
|
+
settled = true;
|
|
119
|
+
cleanup();
|
|
120
|
+
reject(reason);
|
|
121
|
+
};
|
|
122
|
+
const resolveOnce = (value) => {
|
|
123
|
+
if (settled)
|
|
124
|
+
return;
|
|
125
|
+
settled = true;
|
|
126
|
+
cleanup();
|
|
127
|
+
resolve(value);
|
|
128
|
+
};
|
|
129
|
+
const onAbort = () => rejectOnce(signal.reason);
|
|
130
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
131
|
+
try {
|
|
132
|
+
Promise.resolve(start()).then(resolveOnce, rejectOnce);
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
rejectOnce(error);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
94
139
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/attachment/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/attachment/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../../src/store/feedback/conformance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IAC3D,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAA;IACrE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK;QACrC,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;QAC7B,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;QAChC,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAC7B,CAAA;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;QACjC,KAAK,EAAE,oBAAoB,CAAA;QAC3B,KAAK,EAAE,KAAK,CAAA;QACZ,cAAc,EAAE,SAAS,CAAA;QACzB,yDAAyD;QACzD,gBAAgB,EAAE,SAAS,CAAA;QAC3B,UAAU,EAAE,KAAK,CAAA;QACjB,mBAAmB,EAAE,SAAS,CAAA;KAC9B,CAAC,CAAA;CACF;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../../src/store/feedback/conformance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IAC3D,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAA;IACrE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK;QACrC,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;QAC7B,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;QAChC,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAC7B,CAAA;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;QACjC,KAAK,EAAE,oBAAoB,CAAA;QAC3B,KAAK,EAAE,KAAK,CAAA;QACZ,cAAc,EAAE,SAAS,CAAA;QACzB,yDAAyD;QACzD,gBAAgB,EAAE,SAAS,CAAA;QAC3B,UAAU,EAAE,KAAK,CAAA;QACjB,mBAAmB,EAAE,SAAS,CAAA;KAC9B,CAAC,CAAA;CACF;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI,CA0L1F"}
|
|
@@ -64,6 +64,38 @@ export function defineMessageFeedbackConformance(options) {
|
|
|
64
64
|
expect(listed).toHaveLength(1);
|
|
65
65
|
expect(listed[0]?.ownerVersion).toBe(1);
|
|
66
66
|
});
|
|
67
|
+
it('lets exactly one of two racing updates advance a stored version', async () => {
|
|
68
|
+
const { store, runId, knownMessageId } = await makeStore();
|
|
69
|
+
await store.putMessageFeedback({
|
|
70
|
+
runId,
|
|
71
|
+
messageId: knownMessageId,
|
|
72
|
+
rating: 'good',
|
|
73
|
+
expectedVersion: 0,
|
|
74
|
+
});
|
|
75
|
+
const attempts = [
|
|
76
|
+
{ rating: 'good', note: 'writer-a' },
|
|
77
|
+
{ rating: 'bad', note: 'writer-b' },
|
|
78
|
+
].map((candidate) => store
|
|
79
|
+
.putMessageFeedback({
|
|
80
|
+
runId,
|
|
81
|
+
messageId: knownMessageId,
|
|
82
|
+
...candidate,
|
|
83
|
+
expectedVersion: 1,
|
|
84
|
+
})
|
|
85
|
+
.then((record) => ({ kind: 'ok', record }), () => ({ kind: 'refused' })));
|
|
86
|
+
const outcomes = await Promise.all(attempts);
|
|
87
|
+
const winners = outcomes.filter((outcome) => outcome.kind === 'ok');
|
|
88
|
+
expect(winners).toHaveLength(1);
|
|
89
|
+
expect(outcomes.filter((outcome) => outcome.kind === 'refused')).toHaveLength(1);
|
|
90
|
+
const winner = winners[0];
|
|
91
|
+
if (winner?.kind !== 'ok')
|
|
92
|
+
throw new Error('expected one feedback update winner');
|
|
93
|
+
const listed = await store.listMessageFeedback({ runId });
|
|
94
|
+
expect(listed).toHaveLength(1);
|
|
95
|
+
expect(listed[0]?.ownerVersion).toBe(2);
|
|
96
|
+
expect(listed[0]?.rating).toBe(winner.record.rating);
|
|
97
|
+
expect(listed[0]?.note).toBe(winner.record.note);
|
|
98
|
+
});
|
|
67
99
|
it('advances the version on a correct update', async () => {
|
|
68
100
|
const { store, runId, knownMessageId } = await makeStore();
|
|
69
101
|
await store.putMessageFeedback({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../../src/store/feedback/conformance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../../src/store/feedback/conformance.ts"],"names":[],"mappings":"AA6CA,MAAM,UAAU,gCAAgC,CAAC,OAAmC;IACnF,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IAEnD,QAAQ,CAAC,8BAA8B,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE;QAC5D,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,SAAS,EAAE,CAAA;YAE1D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC;gBAC7C,KAAK;gBACL,SAAS,EAAE,cAAc;gBACzB,MAAM,EAAE,MAAM;gBACd,eAAe,EAAE,CAAC;aAClB,CAAC,CAAA;YAEF,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACtE,kEAAkE;YAClE,8DAA8D;YAC9D,wBAAwB;YACxB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,SAAS,EAAE,CAAA;YAC1D,MAAM,KAAK,CAAC,kBAAkB,CAAC;gBAC9B,KAAK;gBACL,SAAS,EAAE,cAAc;gBACzB,MAAM,EAAE,MAAM;gBACd,eAAe,EAAE,CAAC;aAClB,CAAC,CAAA;YAEF,IAAI,KAAK,GAAG,KAAK,CAAA;YACjB,IAAI,CAAC;gBACJ,MAAM,KAAK,CAAC,kBAAkB,CAAC;oBAC9B,KAAK;oBACL,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,KAAK;oBACb,eAAe,EAAE,CAAC;iBAClB,CAAC,CAAA;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,KAAK,GAAG,IAAI,CAAA;gBACZ,MAAM,CAAE,GAAiD,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAC3F,MAAM,CAAE,GAA+C,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACxF,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACxB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YACzD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC/D,+DAA+D;YAC/D,mEAAmE;YACnE,+DAA+D;YAC/D,6DAA6D;YAC7D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,SAAS,EAAE,CAAA;YAC1D,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC/C,KAAK;iBACH,kBAAkB,CAAC;gBACnB,KAAK;gBACL,SAAS,EAAE,cAAc;gBACzB,MAAM,EAAE,MAAwB;gBAChC,eAAe,EAAE,CAAC;aAClB,CAAC;iBACD,IAAI,CACJ,GAAG,EAAE,CAAC,IAAa,EACnB,GAAG,EAAE,CAAC,SAAkB,CACxB,CACF,CAAA;YACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAE5C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC1D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC/D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YACzD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,SAAS,EAAE,CAAA;YAC1D,MAAM,KAAK,CAAC,kBAAkB,CAAC;gBAC9B,KAAK;gBACL,SAAS,EAAE,cAAc;gBACzB,MAAM,EAAE,MAAM;gBACd,eAAe,EAAE,CAAC;aAClB,CAAC,CAAA;YAEF,MAAM,QAAQ,GAAG;gBAChB,EAAE,MAAM,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,EAAE;gBAC7C,EAAE,MAAM,EAAE,KAAc,EAAE,IAAI,EAAE,UAAU,EAAE;aAC5C,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACnB,KAAK;iBACH,kBAAkB,CAAC;gBACnB,KAAK;gBACL,SAAS,EAAE,cAAc;gBACzB,GAAG,SAAS;gBACZ,eAAe,EAAE,CAAC;aAClB,CAAC;iBACD,IAAI,CACJ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAa,EAAE,MAAM,EAAE,CAAC,EAC7C,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAkB,EAAE,CAAC,CACpC,CACF,CAAA;YACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;YAEnE,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAChF,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YACzB,IAAI,MAAM,EAAE,IAAI,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;YACjF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YACzD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACpD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,SAAS,EAAE,CAAA;YAC1D,MAAM,KAAK,CAAC,kBAAkB,CAAC;gBAC9B,KAAK;gBACL,SAAS,EAAE,cAAc;gBACzB,MAAM,EAAE,MAAM;gBACd,eAAe,EAAE,CAAC;aAClB,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC;gBAC7C,KAAK;gBACL,SAAS,EAAE,cAAc;gBACzB,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,iBAAiB;gBACvB,eAAe,EAAE,CAAC;aAClB,CAAC,CAAA;YAEF,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,MAAM,SAAS,EAAE,CAAA;YAE5D,IAAI,KAAK,GAAG,KAAK,CAAA;YACjB,IAAI,CAAC;gBACJ,MAAM,KAAK,CAAC,kBAAkB,CAAC;oBAC9B,KAAK;oBACL,SAAS,EAAE,gBAAgB;oBAC3B,MAAM,EAAE,MAAM;oBACd,eAAe,EAAE,CAAC;iBAClB,CAAC,CAAA;YACH,CAAC;YAAC,MAAM,CAAC;gBACR,KAAK,GAAG,IAAI,CAAA;YACb,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACxB,MAAM,CAAC,MAAM,KAAK,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACnE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,MAAM,SAAS,EAAE,CAAA;YAC3F,MAAM,KAAK,CAAC,kBAAkB,CAAC;gBAC9B,KAAK;gBACL,SAAS,EAAE,cAAc;gBACzB,MAAM,EAAE,MAAM;gBACd,eAAe,EAAE,CAAC;aAClB,CAAC,CAAA;YACF,MAAM,KAAK,CAAC,kBAAkB,CAAC;gBAC9B,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,mBAAmB;gBAC9B,MAAM,EAAE,KAAK;gBACb,eAAe,EAAE,CAAC;aAClB,CAAC,CAAA;YAEF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YAEvD,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,EAAE,CAAA;YAE/C,MAAM,CAAC,MAAM,KAAK,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC/E,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -2,13 +2,12 @@ import type { RunId } from '../../types/ids/index.js';
|
|
|
2
2
|
import type { MessageExistenceCheck } from './memory.js';
|
|
3
3
|
import { type MessageFeedback, type MessageFeedbackStore, type PutMessageFeedbackInput } from './types.js';
|
|
4
4
|
/**
|
|
5
|
-
* Feedback on disk, one
|
|
5
|
+
* Feedback on disk, one immutable commit per accepted owner version.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* and two appends racing would both succeed.
|
|
7
|
+
* A rating is a RECORD — readers want its current value — but replacing one
|
|
8
|
+
* mutable file cannot make the preceding version comparison atomic. The
|
|
9
|
+
* revision directory elects exactly one writer for N+1; the former single
|
|
10
|
+
* file remains only a checked, best-effort compatibility projection.
|
|
12
11
|
*/
|
|
13
12
|
export interface DiskMessageFeedbackStoreConfig {
|
|
14
13
|
/** Where feedback lives. Sibling of the run tree, not inside it. */
|
|
@@ -38,6 +37,9 @@ export declare class DiskMessageFeedbackStore implements MessageFeedbackStore {
|
|
|
38
37
|
private readonly messageExists;
|
|
39
38
|
constructor(config: DiskMessageFeedbackStoreConfig, messageExists?: MessageExistenceCheck, now?: () => number);
|
|
40
39
|
private runDir;
|
|
40
|
+
private revisionsDir;
|
|
41
|
+
private location;
|
|
42
|
+
private assertKey;
|
|
41
43
|
putMessageFeedback(input: PutMessageFeedbackInput): Promise<MessageFeedback>;
|
|
42
44
|
listMessageFeedback(query: {
|
|
43
45
|
runId: RunId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disk.d.ts","sourceRoot":"","sources":["../../../src/store/feedback/disk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,KAAK,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"disk.d.ts","sourceRoot":"","sources":["../../../src/store/feedback/disk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAYhE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAG5B,MAAM,YAAY,CAAA;AAenB;;;;;;;GAOG;AACH,MAAM,WAAW,8BAA8B;IAC9C,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AAUD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAO3E;AAED,qBAAa,wBAAyB,YAAW,oBAAoB;IAOnE,OAAO,CAAC,QAAQ,CAAC,GAAG;IANrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;gBAGpD,MAAM,EAAE,8BAA8B,EACtC,aAAa,CAAC,EAAE,qBAAqB,EACpB,GAAG,GAAE,MAAM,MAAiB;IAgB9C,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,SAAS;IAgBX,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC;IAyC5E,mBAAmB,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;CA4CvF"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
import { mkdir, writeFile } from 'node:fs/promises';
|
|
2
1
|
import { join } from 'node:path';
|
|
2
|
+
import { NamzuError } from '../../types/errors/index.js';
|
|
3
|
+
import { asMessageId, asRunId } from '../../utils/id.js';
|
|
3
4
|
import { DiskRecordStore } from '../kv/record-store.js';
|
|
5
|
+
import { DiskRevisionRecordStore, decodeRevisionFileSegment, legacyRevisionFileSegment, revisionFileSegment, } from '../kv/revision-record-store.js';
|
|
4
6
|
import { readRunEventsIn } from '../run/disk.js';
|
|
5
|
-
import { defineSchema
|
|
7
|
+
import { defineSchema } from '../schema.js';
|
|
6
8
|
import { StaleFeedbackError, UnknownMessageError, } from './types.js';
|
|
7
|
-
const SCHEMA = defineSchema({
|
|
9
|
+
const SCHEMA = defineSchema({
|
|
10
|
+
kind: 'feedback-store',
|
|
11
|
+
current: 1,
|
|
12
|
+
migrations: {},
|
|
13
|
+
});
|
|
8
14
|
const records = new DiskRecordStore(SCHEMA);
|
|
15
|
+
const revisionRecords = new DiskRevisionRecordStore(SCHEMA, 'message feedback store', (record) => record.ownerVersion);
|
|
9
16
|
/** Filesystem-safe file name for one rated message. */
|
|
10
17
|
function fileName(messageId) {
|
|
11
18
|
// Message ids are `msg_` + an alphabet with no separators, so this is a
|
|
@@ -24,8 +31,10 @@ function fileName(messageId) {
|
|
|
24
31
|
*/
|
|
25
32
|
export function runEventMessageCheck(runsDir) {
|
|
26
33
|
return async (runId, messageId) => {
|
|
27
|
-
const
|
|
28
|
-
|
|
34
|
+
const checkedRunId = asRunId(runId);
|
|
35
|
+
const checkedMessageId = asMessageId(messageId);
|
|
36
|
+
const events = await readRunEventsIn(join(runsDir, legacyRevisionFileSegment(checkedRunId)));
|
|
37
|
+
return events.some((event) => event.messageId === checkedMessageId);
|
|
29
38
|
};
|
|
30
39
|
}
|
|
31
40
|
export class DiskMessageFeedbackStore {
|
|
@@ -48,92 +57,118 @@ export class DiskMessageFeedbackStore {
|
|
|
48
57
|
});
|
|
49
58
|
}
|
|
50
59
|
runDir(runId) {
|
|
51
|
-
return join(this.rootDir, runId);
|
|
60
|
+
return join(this.rootDir, legacyRevisionFileSegment(asRunId(runId)));
|
|
61
|
+
}
|
|
62
|
+
revisionsDir(runId) {
|
|
63
|
+
return join(this.runDir(runId), '.revisions');
|
|
64
|
+
}
|
|
65
|
+
location(runId, messageId) {
|
|
66
|
+
const checkedMessageId = asMessageId(messageId);
|
|
67
|
+
const legacyName = fileName(checkedMessageId);
|
|
68
|
+
return {
|
|
69
|
+
legacyPath: join(this.runDir(runId), legacyName),
|
|
70
|
+
revisionsDir: join(this.revisionsDir(runId), revisionFileSegment(checkedMessageId)),
|
|
71
|
+
// The previous filename replacement is lossy for punctuation and
|
|
72
|
+
// separators. Read such a legacy path forward if it exists, but never
|
|
73
|
+
// publish a new projection that could overwrite another message's file.
|
|
74
|
+
publishLegacyProjection: legacyName === `${checkedMessageId}.json`,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
assertKey(record, runId, messageId) {
|
|
78
|
+
if (record.runId !== runId || record.messageId !== messageId) {
|
|
79
|
+
throw new NamzuError({
|
|
80
|
+
code: 'storage_error',
|
|
81
|
+
message: `Message feedback record key mismatch: expected ${runId}/${messageId}, found ${record.runId}/${record.messageId}. Repair or restore the record before retrying.`,
|
|
82
|
+
details: {
|
|
83
|
+
expectedRunId: runId,
|
|
84
|
+
expectedMessageId: messageId,
|
|
85
|
+
actualRunId: record.runId,
|
|
86
|
+
actualMessageId: record.messageId,
|
|
87
|
+
},
|
|
88
|
+
retryable: false,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
52
91
|
}
|
|
53
92
|
async putMessageFeedback(input) {
|
|
93
|
+
// Runtime ids cross a public JS boundary. The nominal TypeScript brand can
|
|
94
|
+
// still be asserted, so validate before either an injected callback or a
|
|
95
|
+
// filesystem path sees the values.
|
|
96
|
+
const runId = asRunId(input.runId);
|
|
97
|
+
const messageId = asMessageId(input.messageId);
|
|
98
|
+
const location = this.location(runId, messageId);
|
|
54
99
|
// Validated BEFORE the version check, so a rating aimed at a message
|
|
55
100
|
// that does not exist is refused for what it is rather than reported
|
|
56
101
|
// as a version conflict.
|
|
57
|
-
if (!(await this.messageExists(
|
|
58
|
-
throw new UnknownMessageError({ runId
|
|
102
|
+
if (!(await this.messageExists(runId, messageId))) {
|
|
103
|
+
throw new UnknownMessageError({ runId, messageId });
|
|
59
104
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
throw new StaleFeedbackError({
|
|
66
|
-
runId: input.runId,
|
|
67
|
-
messageId: input.messageId,
|
|
68
|
-
expectedVersion: input.expectedVersion,
|
|
69
|
-
actualVersion,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
const timestamp = this.now();
|
|
73
|
-
const record = {
|
|
74
|
-
runId: input.runId,
|
|
75
|
-
messageId: input.messageId,
|
|
76
|
-
rating: input.rating,
|
|
77
|
-
...(input.note !== undefined ? { note: input.note } : {}),
|
|
78
|
-
ownerVersion: actualVersion + 1,
|
|
79
|
-
createdAt: existing?.createdAt ?? timestamp,
|
|
80
|
-
updatedAt: timestamp,
|
|
81
|
-
};
|
|
82
|
-
await mkdir(dir, { recursive: true });
|
|
83
|
-
if (actualVersion === 0) {
|
|
84
|
-
// EXCLUSIVE create for the first write, and this is the whole
|
|
85
|
-
// compare-and-set on a filesystem. A read-then-write is not
|
|
86
|
-
// atomic: two raters who each read "no feedback yet" both see
|
|
87
|
-
// version 0, both pass the check above, and both write — the
|
|
88
|
-
// second silently discarding the first. `wx` makes the kernel
|
|
89
|
-
// the arbiter, so exactly one of them lands.
|
|
90
|
-
//
|
|
91
|
-
// Found by the conformance suite on the day it was written, with
|
|
92
|
-
// the in-memory store passing the same rule for free because
|
|
93
|
-
// nothing awaits between its read and its write.
|
|
94
|
-
try {
|
|
95
|
-
await writeFile(path, `${JSON.stringify(stamp(SCHEMA, record), null, 2)}\n`, {
|
|
96
|
-
encoding: 'utf-8',
|
|
97
|
-
flag: 'wx',
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
catch (err) {
|
|
101
|
-
if (err.code !== 'EEXIST')
|
|
102
|
-
throw err;
|
|
103
|
-
// Somebody else got there between the read and here. Report
|
|
104
|
-
// what is actually stored now, rather than the 0 we read.
|
|
105
|
-
const winner = await records.read(path);
|
|
105
|
+
return await revisionRecords.transact(location, (existing) => {
|
|
106
|
+
if (existing)
|
|
107
|
+
this.assertKey(existing, runId, messageId);
|
|
108
|
+
const actualVersion = existing?.ownerVersion ?? 0;
|
|
109
|
+
if (input.expectedVersion !== actualVersion) {
|
|
106
110
|
throw new StaleFeedbackError({
|
|
107
|
-
runId
|
|
108
|
-
messageId
|
|
111
|
+
runId,
|
|
112
|
+
messageId,
|
|
109
113
|
expectedVersion: input.expectedVersion,
|
|
110
|
-
actualVersion
|
|
114
|
+
actualVersion,
|
|
111
115
|
});
|
|
112
116
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
117
|
+
const timestamp = this.now();
|
|
118
|
+
const record = {
|
|
119
|
+
runId,
|
|
120
|
+
messageId,
|
|
121
|
+
rating: input.rating,
|
|
122
|
+
...(input.note !== undefined ? { note: input.note } : {}),
|
|
123
|
+
ownerVersion: actualVersion + 1,
|
|
124
|
+
createdAt: existing?.createdAt ?? timestamp,
|
|
125
|
+
updatedAt: timestamp,
|
|
126
|
+
};
|
|
127
|
+
return { record, result: record };
|
|
128
|
+
});
|
|
124
129
|
}
|
|
125
130
|
async listMessageFeedback(query) {
|
|
126
|
-
const
|
|
127
|
-
const
|
|
128
|
-
const
|
|
129
|
-
|
|
131
|
+
const runId = asRunId(query.runId);
|
|
132
|
+
const dir = this.runDir(runId);
|
|
133
|
+
const ids = new Map();
|
|
134
|
+
// Old single-file records are still authoritative until their first
|
|
135
|
+
// current write. Read the body's id rather than attempting to reverse the
|
|
136
|
+
// old lossy filename mapping.
|
|
137
|
+
for (const name of await records.scanNames(dir, '')) {
|
|
130
138
|
if (!name.endsWith('.json'))
|
|
131
139
|
continue;
|
|
132
140
|
const record = await records.read(join(dir, name));
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
141
|
+
if (record === null)
|
|
142
|
+
continue;
|
|
143
|
+
const messageId = asMessageId(record.messageId);
|
|
144
|
+
this.assertKey(record, runId, messageId);
|
|
145
|
+
if (fileName(messageId) !== name) {
|
|
146
|
+
throw new NamzuError({
|
|
147
|
+
code: 'storage_error',
|
|
148
|
+
message: `Message feedback projection filename ${name} does not match record ${messageId}. Repair or restore the record before retrying.`,
|
|
149
|
+
details: { runId, messageId, name },
|
|
150
|
+
retryable: false,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
ids.set(messageId, messageId);
|
|
154
|
+
}
|
|
155
|
+
// The immutable commit is the success boundary. Projection publication is
|
|
156
|
+
// deliberately best-effort, so enumerate canonical revision directories
|
|
157
|
+
// too or a successful first rating can disappear after a crash.
|
|
158
|
+
for (const segment of await records.scanNames(this.revisionsDir(runId), '')) {
|
|
159
|
+
const decoded = decodeRevisionFileSegment(segment);
|
|
160
|
+
if (decoded === null)
|
|
161
|
+
continue;
|
|
162
|
+
const messageId = asMessageId(decoded);
|
|
163
|
+
ids.set(messageId, messageId);
|
|
164
|
+
}
|
|
165
|
+
const out = [];
|
|
166
|
+
for (const messageId of [...ids.values()].sort((a, b) => a.localeCompare(b))) {
|
|
167
|
+
const record = await revisionRecords.read(this.location(runId, messageId));
|
|
168
|
+
if (record === null)
|
|
169
|
+
continue;
|
|
170
|
+
this.assertKey(record, runId, messageId);
|
|
171
|
+
out.push(record);
|
|
137
172
|
}
|
|
138
173
|
return out;
|
|
139
174
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disk.js","sourceRoot":"","sources":["../../../src/store/feedback/disk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"disk.js","sourceRoot":"","sources":["../../../src/store/feedback/disk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { GoalBlockReason, GoalPhase, GoalRef, GoalRoundAuthority, SessionGoal } from '../../types/goal/index.js';
|
|
2
|
+
import type { GoalId, SessionId, TenantId } from '../../types/ids/index.js';
|
|
3
|
+
import type { SessionStore } from '../../types/session/store.js';
|
|
4
|
+
/** Current source-backed limit for a human goal objective. */
|
|
5
|
+
export declare const MAX_GOAL_OBJECTIVE_CHARS = 4000;
|
|
6
|
+
/** Source-aligned default; hosts may choose a smaller positive finite cap. */
|
|
7
|
+
export declare const DEFAULT_MAX_GOAL_ROUNDS = 256;
|
|
8
|
+
export interface CreateSessionGoalParams {
|
|
9
|
+
readonly sessionId: SessionId;
|
|
10
|
+
readonly objective: string;
|
|
11
|
+
readonly maxGoalRounds?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface EditSessionGoalParams {
|
|
14
|
+
readonly objective: string;
|
|
15
|
+
}
|
|
16
|
+
export interface SessionGoalStore {
|
|
17
|
+
getGoal(sessionId: SessionId, tenantId: TenantId): Promise<SessionGoal | null>;
|
|
18
|
+
createGoal(params: CreateSessionGoalParams, tenantId: TenantId): Promise<SessionGoal>;
|
|
19
|
+
editGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef, changes: EditSessionGoalParams): Promise<SessionGoal>;
|
|
20
|
+
pauseGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<SessionGoal>;
|
|
21
|
+
resumeGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<SessionGoal>;
|
|
22
|
+
/** Durably reserve one automatic round before any provider work begins. */
|
|
23
|
+
admitRound(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<GoalRoundAuthority>;
|
|
24
|
+
completeGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<SessionGoal>;
|
|
25
|
+
blockGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef, reason: GoalBlockReason): Promise<SessionGoal>;
|
|
26
|
+
clearGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
/** A mutation was based on a goal revision that is no longer current. */
|
|
29
|
+
export declare class StaleGoalError extends Error {
|
|
30
|
+
readonly details: {
|
|
31
|
+
readonly sessionId: SessionId;
|
|
32
|
+
readonly expectedRevision: number;
|
|
33
|
+
readonly actualRevision: number;
|
|
34
|
+
};
|
|
35
|
+
constructor(details: StaleGoalError['details']);
|
|
36
|
+
}
|
|
37
|
+
/** A session already has a goal that has not completed or been cleared. */
|
|
38
|
+
export declare class GoalExistsError extends Error {
|
|
39
|
+
readonly goal: SessionGoal;
|
|
40
|
+
constructor(goal: SessionGoal);
|
|
41
|
+
}
|
|
42
|
+
/** A goal operation was requested for a session with no current goal. */
|
|
43
|
+
export declare class GoalNotFoundError extends Error {
|
|
44
|
+
readonly sessionId: SessionId;
|
|
45
|
+
constructor(sessionId: SessionId);
|
|
46
|
+
}
|
|
47
|
+
/** A goal transition is invalid from its current durable phase. */
|
|
48
|
+
export declare class GoalTransitionError extends Error {
|
|
49
|
+
readonly phase: GoalPhase;
|
|
50
|
+
readonly operation: string;
|
|
51
|
+
constructor(phase: GoalPhase, operation: string);
|
|
52
|
+
}
|
|
53
|
+
/** Goal storage refuses ids that do not name a live tenant-owned Session. */
|
|
54
|
+
export declare class GoalSessionNotFoundError extends Error {
|
|
55
|
+
readonly sessionId: SessionId;
|
|
56
|
+
constructor(sessionId: SessionId);
|
|
57
|
+
}
|
|
58
|
+
/** Admission reached its finite cap after durably blocking the goal. */
|
|
59
|
+
export declare class GoalRoundLimitError extends Error {
|
|
60
|
+
readonly goal: SessionGoal;
|
|
61
|
+
constructor(goal: SessionGoal);
|
|
62
|
+
}
|
|
63
|
+
interface SessionGoalRecord {
|
|
64
|
+
readonly sessionId: SessionId;
|
|
65
|
+
readonly tenantId: TenantId;
|
|
66
|
+
/** Storage sequence survives clear and fresh goal identities. */
|
|
67
|
+
readonly storageRevision: number;
|
|
68
|
+
readonly goal: SessionGoal | null;
|
|
69
|
+
readonly updatedAt: number;
|
|
70
|
+
}
|
|
71
|
+
declare abstract class SessionGoalStoreBase implements SessionGoalStore {
|
|
72
|
+
protected readonly sessions: Pick<SessionStore, 'getSession'>;
|
|
73
|
+
protected readonly now: () => number;
|
|
74
|
+
protected readonly makeGoalId: () => GoalId;
|
|
75
|
+
protected constructor(sessions: Pick<SessionStore, 'getSession'>, now: () => number, makeGoalId: () => GoalId);
|
|
76
|
+
protected abstract put(record: SessionGoalRecord): Promise<void>;
|
|
77
|
+
private requireSession;
|
|
78
|
+
getGoal(sessionId: SessionId, tenantId: TenantId): Promise<SessionGoal | null>;
|
|
79
|
+
createGoal(params: CreateSessionGoalParams, tenantId: TenantId): Promise<SessionGoal>;
|
|
80
|
+
editGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef, changes: EditSessionGoalParams): Promise<SessionGoal>;
|
|
81
|
+
pauseGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<SessionGoal>;
|
|
82
|
+
resumeGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<SessionGoal>;
|
|
83
|
+
admitRound(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<GoalRoundAuthority>;
|
|
84
|
+
completeGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<SessionGoal>;
|
|
85
|
+
blockGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef, reason: GoalBlockReason): Promise<SessionGoal>;
|
|
86
|
+
clearGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<void>;
|
|
87
|
+
private transition;
|
|
88
|
+
private mutate;
|
|
89
|
+
}
|
|
90
|
+
export interface InMemorySessionGoalStoreConfig {
|
|
91
|
+
readonly sessions: Pick<SessionStore, 'getSession'>;
|
|
92
|
+
}
|
|
93
|
+
export declare class InMemorySessionGoalStore extends SessionGoalStoreBase {
|
|
94
|
+
private readonly records;
|
|
95
|
+
constructor(config: InMemorySessionGoalStoreConfig, now?: () => number, makeGoalId?: () => GoalId);
|
|
96
|
+
protected put(record: SessionGoalRecord): Promise<void>;
|
|
97
|
+
}
|
|
98
|
+
export interface DiskSessionGoalStoreConfig {
|
|
99
|
+
/** Session root; goals live under `<rootDir>/goals/`. */
|
|
100
|
+
readonly rootDir: string;
|
|
101
|
+
/** Authority for session existence and tenant ownership. */
|
|
102
|
+
readonly sessions: Pick<SessionStore, 'getSession'>;
|
|
103
|
+
}
|
|
104
|
+
export declare class DiskSessionGoalStore extends SessionGoalStoreBase {
|
|
105
|
+
private readonly config;
|
|
106
|
+
constructor(config: DiskSessionGoalStoreConfig, now?: () => number, makeGoalId?: () => GoalId);
|
|
107
|
+
private location;
|
|
108
|
+
protected put(record: SessionGoalRecord): Promise<void>;
|
|
109
|
+
}
|
|
110
|
+
export {};
|
|
111
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/goal/index.ts"],"names":[],"mappings":"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"}
|