@namzu/sdk 30.2.0 → 31.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +562 -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 +79 -13
- 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/index.d.ts +1 -1
- package/dist/types/provider/index.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/model.d.ts +12 -0
- package/dist/types/provider/model.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 +147 -12
- package/src/types/plugin/index.ts +7 -5
- package/src/types/provider/chat.ts +35 -4
- package/src/types/provider/index.ts +1 -1
- package/src/types/provider/interface.ts +22 -7
- package/src/types/provider/model.ts +13 -0
- 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,3 +1,4 @@
|
|
|
1
|
+
import { NamzuError } from '../types/errors/index.js';
|
|
1
2
|
/**
|
|
2
3
|
* Named constants for dangling message detection logic.
|
|
3
4
|
*/
|
|
@@ -51,48 +52,64 @@ function isToolMessage(message) {
|
|
|
51
52
|
export function findDanglingMessages(messages) {
|
|
52
53
|
const assistantsWithUnmatchedCalls = [];
|
|
53
54
|
const orphanedToolMessages = [];
|
|
54
|
-
|
|
55
|
-
//
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
const seenToolCallIds = new Set();
|
|
56
|
+
// Provider tool results are not joins over a conversation-wide id map.
|
|
57
|
+
// They form one contiguous batch immediately after the assistant turn that
|
|
58
|
+
// declared them. A future call cannot own an earlier result, and a result
|
|
59
|
+
// displaced past a user/assistant/system message cannot answer backwards.
|
|
60
|
+
let index = 0;
|
|
61
|
+
while (index < messages.length) {
|
|
62
|
+
const message = messages[index];
|
|
63
|
+
if (!message) {
|
|
64
|
+
index++;
|
|
60
65
|
continue;
|
|
61
|
-
if (hasToolCalls(message)) {
|
|
62
|
-
// Record all tool calls from this assistant message
|
|
63
|
-
const assistantMsg = message;
|
|
64
|
-
if (assistantMsg.toolCalls) {
|
|
65
|
-
for (const toolCall of assistantMsg.toolCalls) {
|
|
66
|
-
toolCallIds.set(toolCall.id, { assistantIndex: i, satisfied: false });
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
66
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
if (!message)
|
|
67
|
+
if (!hasToolCalls(message)) {
|
|
68
|
+
if (isToolMessage(message))
|
|
69
|
+
orphanedToolMessages.push(index);
|
|
70
|
+
index++;
|
|
75
71
|
continue;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
72
|
+
}
|
|
73
|
+
const calls = message.toolCalls ?? [];
|
|
74
|
+
const callIds = new Set();
|
|
75
|
+
let invalidOwner = false;
|
|
76
|
+
for (const call of calls) {
|
|
77
|
+
if (!call.id || callIds.has(call.id) || seenToolCallIds.has(call.id))
|
|
78
|
+
invalidOwner = true;
|
|
79
|
+
callIds.add(call.id);
|
|
80
|
+
seenToolCallIds.add(call.id);
|
|
81
|
+
}
|
|
82
|
+
let resultEnd = index + 1;
|
|
83
|
+
while (resultEnd < messages.length && messages[resultEnd]?.role === CONSTANTS.TOOL_ROLE) {
|
|
84
|
+
resultEnd++;
|
|
85
|
+
}
|
|
86
|
+
// Keep the last immediate result for an id. A late real result can
|
|
87
|
+
// follow a synthetic cancellation result after a crash; keeping the
|
|
88
|
+
// first would preserve the stale guess and discard the observed fact.
|
|
89
|
+
const lastResultById = new Map();
|
|
90
|
+
for (let resultIndex = index + 1; resultIndex < resultEnd; resultIndex++) {
|
|
91
|
+
const result = messages[resultIndex];
|
|
92
|
+
if (result?.role === CONSTANTS.TOOL_ROLE) {
|
|
93
|
+
lastResultById.set(result.toolCallId, resultIndex);
|
|
84
94
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
95
|
+
}
|
|
96
|
+
const answered = new Set();
|
|
97
|
+
for (let resultIndex = index + 1; resultIndex < resultEnd; resultIndex++) {
|
|
98
|
+
const result = messages[resultIndex];
|
|
99
|
+
if (result?.role !== CONSTANTS.TOOL_ROLE)
|
|
100
|
+
continue;
|
|
101
|
+
if (invalidOwner ||
|
|
102
|
+
!callIds.has(result.toolCallId) ||
|
|
103
|
+
lastResultById.get(result.toolCallId) !== resultIndex) {
|
|
104
|
+
orphanedToolMessages.push(resultIndex);
|
|
105
|
+
continue;
|
|
88
106
|
}
|
|
107
|
+
answered.add(result.toolCallId);
|
|
89
108
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
for (const entry of toolCallIds.values()) {
|
|
93
|
-
if (!entry.satisfied) {
|
|
94
|
-
assistantsWithUnmatchedCalls.push(entry.assistantIndex);
|
|
109
|
+
if (invalidOwner || calls.some((call) => !answered.has(call.id))) {
|
|
110
|
+
assistantsWithUnmatchedCalls.push(index);
|
|
95
111
|
}
|
|
112
|
+
index = resultEnd;
|
|
96
113
|
}
|
|
97
114
|
return {
|
|
98
115
|
assistantsWithUnmatchedCalls,
|
|
@@ -168,6 +185,126 @@ export function removeDanglingMessages(messages) {
|
|
|
168
185
|
// Return messages not marked for removal, preserving order
|
|
169
186
|
return messages.filter((_, idx) => !indicesToRemove.has(idx));
|
|
170
187
|
}
|
|
188
|
+
/** Whether a repair changed the provider-bound history. */
|
|
189
|
+
export function toolHistoryRepairChanged(report) {
|
|
190
|
+
return (report.duplicateToolResultsRemoved > 0 ||
|
|
191
|
+
report.orphanedToolResultsRemoved > 0 ||
|
|
192
|
+
report.syntheticToolResultsInserted > 0);
|
|
193
|
+
}
|
|
194
|
+
function validateToolCallIds(messages) {
|
|
195
|
+
const seen = new Set();
|
|
196
|
+
for (let messageIndex = 0; messageIndex < messages.length; messageIndex++) {
|
|
197
|
+
const message = messages[messageIndex];
|
|
198
|
+
if (message?.role !== CONSTANTS.ASSISTANT_ROLE)
|
|
199
|
+
continue;
|
|
200
|
+
for (let callIndex = 0; callIndex < (message.toolCalls?.length ?? 0); callIndex++) {
|
|
201
|
+
const call = message.toolCalls?.[callIndex];
|
|
202
|
+
if (!call?.id) {
|
|
203
|
+
throw new NamzuError({
|
|
204
|
+
code: 'invalid_config',
|
|
205
|
+
message: `Message history contains an empty tool-call id at messages[${messageIndex}].toolCalls[${callIndex}].`,
|
|
206
|
+
details: { messageIndex, callIndex, toolCallId: call?.id ?? '' },
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
if (seen.has(call.id)) {
|
|
210
|
+
throw new NamzuError({
|
|
211
|
+
code: 'invalid_config',
|
|
212
|
+
message: `Message history repeats tool-call id '${call.id}' at messages[${messageIndex}].toolCalls[${callIndex}]; a signed assistant turn cannot be rewritten safely.`,
|
|
213
|
+
details: { messageIndex, callIndex, toolCallId: call.id },
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
seen.add(call.id);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function unknownOutcomeResult(call, assistant) {
|
|
221
|
+
return {
|
|
222
|
+
role: CONSTANTS.TOOL_ROLE,
|
|
223
|
+
toolCallId: call.id,
|
|
224
|
+
isError: true,
|
|
225
|
+
content: `Tool execution was interrupted and no durable result is available for \`${call.function.name}\`. Its outcome is unknown. Retry only if the tool is read-only or idempotent; otherwise verify external state or ask the user before retrying.`,
|
|
226
|
+
...(assistant.timestamp !== undefined ? { timestamp: assistant.timestamp } : {}),
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Repair provider tool-pairing violations without mutating the durable input.
|
|
231
|
+
*
|
|
232
|
+
* Results are valid only in the contiguous run immediately after their
|
|
233
|
+
* assistant call. Orphaned/displaced results are removed, earlier immediate
|
|
234
|
+
* duplicates are removed in favour of the last result, and every unanswered
|
|
235
|
+
* call receives a conservative error result in call order. Duplicate call ids
|
|
236
|
+
* fail closed: changing ids or tool calls would invalidate opaque native replay
|
|
237
|
+
* state carried by the assistant message.
|
|
238
|
+
*/
|
|
239
|
+
export function repairToolMessageHistory(messages) {
|
|
240
|
+
validateToolCallIds(messages);
|
|
241
|
+
const repaired = [];
|
|
242
|
+
let duplicateToolResultsRemoved = 0;
|
|
243
|
+
let orphanedToolResultsRemoved = 0;
|
|
244
|
+
let syntheticToolResultsInserted = 0;
|
|
245
|
+
let index = 0;
|
|
246
|
+
while (index < messages.length) {
|
|
247
|
+
const message = messages[index];
|
|
248
|
+
if (!message) {
|
|
249
|
+
index++;
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
if (!hasToolCalls(message)) {
|
|
253
|
+
if (isToolMessage(message))
|
|
254
|
+
orphanedToolResultsRemoved++;
|
|
255
|
+
else
|
|
256
|
+
repaired.push(message);
|
|
257
|
+
index++;
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
const assistant = message;
|
|
261
|
+
const calls = assistant.toolCalls ?? [];
|
|
262
|
+
const callIds = new Set(calls.map((call) => call.id));
|
|
263
|
+
repaired.push(assistant);
|
|
264
|
+
let resultEnd = index + 1;
|
|
265
|
+
while (resultEnd < messages.length && messages[resultEnd]?.role === CONSTANTS.TOOL_ROLE) {
|
|
266
|
+
resultEnd++;
|
|
267
|
+
}
|
|
268
|
+
const lastResultById = new Map();
|
|
269
|
+
for (let resultIndex = index + 1; resultIndex < resultEnd; resultIndex++) {
|
|
270
|
+
const result = messages[resultIndex];
|
|
271
|
+
if (result?.role === CONSTANTS.TOOL_ROLE) {
|
|
272
|
+
lastResultById.set(result.toolCallId, resultIndex);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
const answered = new Set();
|
|
276
|
+
for (let resultIndex = index + 1; resultIndex < resultEnd; resultIndex++) {
|
|
277
|
+
const result = messages[resultIndex];
|
|
278
|
+
if (result?.role !== CONSTANTS.TOOL_ROLE)
|
|
279
|
+
continue;
|
|
280
|
+
if (lastResultById.get(result.toolCallId) !== resultIndex) {
|
|
281
|
+
duplicateToolResultsRemoved++;
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
if (!callIds.has(result.toolCallId)) {
|
|
285
|
+
orphanedToolResultsRemoved++;
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
repaired.push(result);
|
|
289
|
+
answered.add(result.toolCallId);
|
|
290
|
+
}
|
|
291
|
+
for (const call of calls) {
|
|
292
|
+
if (answered.has(call.id))
|
|
293
|
+
continue;
|
|
294
|
+
repaired.push(unknownOutcomeResult(call, assistant));
|
|
295
|
+
syntheticToolResultsInserted++;
|
|
296
|
+
}
|
|
297
|
+
index = resultEnd;
|
|
298
|
+
}
|
|
299
|
+
return {
|
|
300
|
+
messages: repaired,
|
|
301
|
+
report: {
|
|
302
|
+
duplicateToolResultsRemoved,
|
|
303
|
+
orphanedToolResultsRemoved,
|
|
304
|
+
syntheticToolResultsInserted,
|
|
305
|
+
},
|
|
306
|
+
};
|
|
307
|
+
}
|
|
171
308
|
/**
|
|
172
309
|
* Finds a safe index for trimming messages while preserving tool call/result atomicity.
|
|
173
310
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dangling.js","sourceRoot":"","sources":["../../src/compaction/dangling.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,SAAS,GAAG;IACjB,oDAAoD;IACpD,SAAS,EAAE,MAAM;IACjB,yDAAyD;IACzD,cAAc,EAAE,WAAW;CAClB,CAAA;AAEV;;;;GAIG;AACH,SAAS,YAAY,CAAC,OAAgB;IACrC,OAAO,CACN,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,cAAc;QACzC,WAAW,IAAI,OAAO;QACtB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QAChC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAC5B,CAAA;AACF,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,OAAgB;IACtC,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAA;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAmB;IACvD,MAAM,4BAA4B,GAAa,EAAE,CAAA;IACjD,MAAM,oBAAoB,GAAa,EAAE,CAAA;IAEzC,oEAAoE;IACpE,mEAAmE;IACnE,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0D,CAAA;IAErF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,OAAO;YAAE,SAAQ;QAEtB,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,oDAAoD;YACpD,MAAM,YAAY,GAAG,OAAgD,CAAA;YACrE,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;gBAC5B,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;oBAC/C,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;gBACtE,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,yEAAyE;IACzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,OAAO;YAAE,SAAQ;QAEtB,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,OAAiC,CAAA;YACjD,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzC,+CAA+C;gBAC/C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;gBACjD,IAAI,KAAK,EAAE,CAAC;oBACX,KAAK,CAAC,SAAS,GAAG,IAAI,CAAA;gBACvB,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,yCAAyC;gBACzC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC7B,CAAC;QACF,CAAC;IACF,CAAC;IAED,8CAA8C;IAC9C,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACtB,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;QACxD,CAAC;IACF,CAAC;IAED,OAAO;QACN,4BAA4B;QAC5B,oBAAoB;QACpB,OAAO,EAAE,4BAA4B,CAAC,MAAM,KAAK,CAAC,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC;KACvF,CAAA;AACF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAmB;IACzD,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IAE7C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC,KAAK,EAAE,CAAA,CAAC,uCAAuC;IAChE,CAAC;IAED,mCAAmC;IACnC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAA;IAEzC,0CAA0C;IAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAC/C,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAED,sCAAsC;IACtC,yCAAyC;IACzC,uEAAuE;IAEvE,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,4BAA4B,EAAE,CAAC;QAChE,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAEjC,oEAAoE;QACpE,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAEzC,CAAA;QACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;QACrC,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YAC5B,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;gBAC/C,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YAC7B,CAAC;QACF,CAAC;QAED,oEAAoE;QACpE,gEAAgE;QAChE,KAAK,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YACvB,IAAI,CAAC,GAAG;gBAAE,SAAQ;YAClB,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,GAA6B,CAAA;gBAC7C,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;oBACzC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBACvB,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,2DAA2D;IAC3D,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAmB,EAAE,WAAmB;IACzE,wBAAwB;IACxB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAEzE,qDAAqD;IACrD,IAAI,aAAa,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,QAAQ,CAAC,MAAM,CAAA;IACvB,CAAC;IAED,2EAA2E;IAC3E,iFAAiF;IACjF,IAAI,YAAY,GAAG,aAAa,CAAA;IAChC,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAA,CAAC,yBAAyB;IAE7D,OAAO,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,QAAQ,EAAE,CAAA;QAEV,IAAI,YAAY,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrC,MAAK;QACN,CAAC;QAED,uEAAuE;QACvE,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;QACzC,IAAI,UAAU,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7C,6BAA6B;YAC7B,YAAY,EAAE,CAAA;YACd,SAAQ;QACT,CAAC;QAED,oFAAoF;QACpF,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;QACpD,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAA;QAE3D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC/B,0CAA0C;YAC1C,MAAM,kBAAkB,GAAG;gBAC1B,GAAG,gBAAgB,CAAC,4BAA4B;gBAChD,GAAG,gBAAgB,CAAC,oBAAoB;aACxC,CAAA;YAED,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,sEAAsE;gBACtE,MAAK;YACN,CAAC;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAA;YAEtD,4CAA4C;YAC5C,YAAY,GAAG,cAAc,GAAG,CAAC,CAAA;YAEjC,2EAA2E;YAC3E,MAAM,sBAAsB,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;YACvD,IAAI,sBAAsB,IAAI,YAAY,CAAC,sBAAsB,CAAC,EAAE,CAAC;gBACpE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;gBACrC,MAAM,YAAY,GAAG,sBAEpB,CAAA;gBACD,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;oBAC5B,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;wBAC/C,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;oBAC7B,CAAC;gBACF,CAAC;gBAED,mDAAmD;gBACnD,OAAO,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;oBACtC,IAAI,CAAC,OAAO;wBAAE,MAAK;oBACnB,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC5B,MAAM,OAAO,GAAG,OAAiC,CAAA;wBACjD,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;4BACzC,YAAY,EAAE,CAAA;4BACd,SAAQ;wBACT,CAAC;oBACF,CAAC;oBACD,MAAK;gBACN,CAAC;YACF,CAAC;QACF,CAAC;aAAM,CAAC;YACP,uDAAuD;YACvD,MAAK;QACN,CAAC;IACF,CAAC;IAED,OAAO,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;AAC1E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,eAAe,CAAC,QAAmB,EAAE,KAAa;IAC1D,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,OAAO,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QACxE,OAAO,EAAE,CAAA;IACV,CAAC;IACD,IAAI,OAAO,GAAG,QAAQ,CAAC,MAAM;QAAE,OAAO,OAAO,CAAA;IAE7C,yEAAyE;IACzE,uEAAuE;IACvE,sEAAsE;IACtE,yEAAyE;IACzE,qDAAqD;IACrD,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QACzE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,MAAM;YAAE,SAAQ;QAC7C,IAAI,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;IACpE,CAAC;IAED,oEAAoE;IACpE,8DAA8D;IAC9D,uEAAuE;IACvE,2CAA2C;IAC3C,OAAO,OAAO,CAAA;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"dangling.js","sourceRoot":"","sources":["../../src/compaction/dangling.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { WorkingState, PlanSlot, FileSlot, FileAction, ToolResultSlot, CompactionStrategy, } from './types.js';
|
|
2
|
-
export type { DanglingResult } from './dangling.js';
|
|
2
|
+
export type { DanglingResult, ToolHistoryRepairReport, ToolHistoryRepairResult, } from './dangling.js';
|
|
3
3
|
export type { ConversationManager } from './interface.js';
|
|
4
4
|
export { createSlidingWindowReducer } from './reducer.js';
|
|
5
5
|
export type { ContextReducer, ContextReduction, ContextReductionReason, SlidingWindowOptions, } from './reducer.js';
|
|
@@ -7,7 +7,8 @@ export { WorkingStateManager } from './manager.js';
|
|
|
7
7
|
export { serializeState } from './serializer.js';
|
|
8
8
|
export { extractFromToolCall, extractFromToolResult, extractFromUserMessage, extractFromAssistantMessage, } from './extractor.js';
|
|
9
9
|
export { buildVerifiedSummary } from './verifier.js';
|
|
10
|
-
export {
|
|
10
|
+
export type { CompactionVerificationOptions } from './verifier.js';
|
|
11
|
+
export { findDanglingMessages, findSafeTrimIndex, removeDanglingMessages, repairToolMessageHistory, toolHistoryRepairChanged, } from './dangling.js';
|
|
11
12
|
export { findRetainedIndices } from './retention.js';
|
|
12
13
|
export { NullManager, SlidingWindowManager, StructuredCompactionManager } from './managers/index.js';
|
|
13
14
|
export { createConversationManager } from './factory.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,cAAc,EACd,kBAAkB,GAClB,MAAM,YAAY,CAAA;AAEnB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,cAAc,EACd,kBAAkB,GAClB,MAAM,YAAY,CAAA;AAEnB,YAAY,EACX,cAAc,EACd,uBAAuB,EACvB,uBAAuB,GACvB,MAAM,eAAe,CAAA;AAEtB,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,YAAY,EACX,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,GACpB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,YAAY,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAA;AAElE,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EACN,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,EAChC,0BAA0B,GAC1B,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAI3F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACvD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA"}
|
package/dist/compaction/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export { WorkingStateManager } from './manager.js';
|
|
|
3
3
|
export { serializeState } from './serializer.js';
|
|
4
4
|
export { extractFromToolCall, extractFromToolResult, extractFromUserMessage, extractFromAssistantMessage, } from './extractor.js';
|
|
5
5
|
export { buildVerifiedSummary } from './verifier.js';
|
|
6
|
-
export { findDanglingMessages, removeDanglingMessages,
|
|
6
|
+
export { findDanglingMessages, findSafeTrimIndex, removeDanglingMessages, repairToolMessageHistory, toolHistoryRepairChanged, } from './dangling.js';
|
|
7
7
|
export { findRetainedIndices } from './retention.js';
|
|
8
8
|
export { NullManager, SlidingWindowManager, StructuredCompactionManager } from './managers/index.js';
|
|
9
9
|
export { createConversationManager } from './factory.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAQzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAGpD,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACN,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,EAChC,0BAA0B,GAC1B,MAAM,0BAA0B,CAAA;AAGjC,4EAA4E;AAC5E,6EAA6E;AAC7E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEvD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { CompactionConfig } from '../config/runtime.js';
|
|
2
|
+
import { type TokenUsage } from '../types/common/index.js';
|
|
2
3
|
import type { Message } from '../types/message/index.js';
|
|
3
4
|
import type { LLMProvider } from '../types/provider/index.js';
|
|
5
|
+
import { type CompactionVerificationOptions } from './verifier.js';
|
|
4
6
|
/**
|
|
5
7
|
* Compaction a host can ask for, rather than one that only happens to it.
|
|
6
8
|
*
|
|
@@ -21,8 +23,16 @@ export interface CompactionResult {
|
|
|
21
23
|
readonly shed: number;
|
|
22
24
|
/** The summary that replaced them, as it appears in `messages`. */
|
|
23
25
|
readonly summary: Message;
|
|
26
|
+
/**
|
|
27
|
+
* Tokens spent by this host-triggered pass's optional verifier call.
|
|
28
|
+
*
|
|
29
|
+
* A zero record means no verifier model call ran. The manual path has no
|
|
30
|
+
* `RunManager` to account for side-channel usage, so returning it is the
|
|
31
|
+
* only way a host can include that real provider work in its own ledger.
|
|
32
|
+
*/
|
|
33
|
+
readonly usage: TokenUsage;
|
|
24
34
|
}
|
|
25
|
-
export interface CompactNowInput {
|
|
35
|
+
export interface CompactNowInput extends CompactionVerificationOptions {
|
|
26
36
|
readonly messages: readonly Message[];
|
|
27
37
|
readonly config: CompactionConfig;
|
|
28
38
|
readonly provider: LLMProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAG5D,OAAO,EAAE,KAAK,UAAU,EAAwB,MAAM,0BAA0B,CAAA;AAGhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAa7D,OAAO,EAAE,KAAK,6BAA6B,EAAwB,MAAM,eAAe,CAAA;AAExF;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,gBAAgB;IAChC,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAC1B;AAED,MAAM,WAAW,eAAgB,SAAQ,6BAA6B;IACrE,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CACrC;AAsED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAkDzF;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IAC1D,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA6E/F"}
|
|
@@ -1,18 +1,62 @@
|
|
|
1
|
+
import { EMPTY_TOKEN_USAGE } from '../constants/limits.js';
|
|
2
|
+
import { resolveStreamIdleTimeoutMs } from '../provider/idle-timeout.js';
|
|
3
|
+
import { accumulateTokenUsage } from '../types/common/index.js';
|
|
1
4
|
import { NamzuError } from '../types/errors/index.js';
|
|
5
|
+
import { toolResultToText } from '../types/message/content.js';
|
|
2
6
|
import { resolveContextWindow } from './context-window.js';
|
|
3
7
|
import { findDanglingMessages, findSafeTrimIndex } from './dangling.js';
|
|
8
|
+
import { extractFromAssistantMessage, extractFromToolCall, extractFromToolResult, extractFromUserMessage, } from './extractor.js';
|
|
4
9
|
import { WorkingStateManager } from './manager.js';
|
|
5
10
|
import { planCompaction } from './plan.js';
|
|
11
|
+
import { findRetainedIndices } from './retention.js';
|
|
6
12
|
import { buildCompactionMessage, isCompactionMessage } from './summary.js';
|
|
7
13
|
import { buildVerifiedSummary } from './verifier.js';
|
|
14
|
+
function admitManualCompaction(input) {
|
|
15
|
+
input.signal?.throwIfAborted();
|
|
16
|
+
// Validate at the public boundary even when the history is too short to
|
|
17
|
+
// call the verifier. A malformed liveness policy is not a successful no-op.
|
|
18
|
+
resolveStreamIdleTimeoutMs(input.streamIdleTimeoutMs);
|
|
19
|
+
}
|
|
8
20
|
/** Assembles the new history from a plan's partition plus its summary. */
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
21
|
+
function preservedSystemFloor(systemMessages) {
|
|
22
|
+
// A replaceable in-run summary may be superseded. A pinned summary may not:
|
|
23
|
+
// `retain` is the public promise that compaction leaves the message alone,
|
|
24
|
+
// and a prior manual summary is opaque state rather than redundant prose.
|
|
25
|
+
return systemMessages.filter((m) => !isCompactionMessage(typeof m.content === 'string' ? m.content : null) || m.retain === true);
|
|
26
|
+
}
|
|
27
|
+
function splice(preservedSystem, summaryBody, retainedOlder, recentMessages) {
|
|
28
|
+
// A host-triggered pass has no run-scoped WorkingStateManager to carry the
|
|
29
|
+
// summary into a later query. Pin this summary itself: until a future run
|
|
30
|
+
// has rebuilt equivalent state, this message is the only surviving record
|
|
31
|
+
// of what the pass removed.
|
|
32
|
+
const summary = { ...buildCompactionMessage(summaryBody), retain: true };
|
|
33
|
+
return { messages: [...preservedSystem, summary, ...retainedOlder, ...recentMessages], summary };
|
|
34
|
+
}
|
|
35
|
+
/** Build the state a host-triggered pass is about to replace. */
|
|
36
|
+
function populateWorkingState(manager, messages, config) {
|
|
37
|
+
let firstUser = true;
|
|
38
|
+
const toolNames = new Map();
|
|
39
|
+
for (const message of messages) {
|
|
40
|
+
switch (message.role) {
|
|
41
|
+
case 'user':
|
|
42
|
+
extractFromUserMessage(manager, message.content, firstUser);
|
|
43
|
+
firstUser = false;
|
|
44
|
+
break;
|
|
45
|
+
case 'assistant':
|
|
46
|
+
if (message.content)
|
|
47
|
+
extractFromAssistantMessage(manager, message.content, config);
|
|
48
|
+
for (const call of message.toolCalls ?? []) {
|
|
49
|
+
toolNames.set(call.id, call.function.name);
|
|
50
|
+
extractFromToolCall(manager, call.function.name, call.function.arguments);
|
|
51
|
+
}
|
|
52
|
+
break;
|
|
53
|
+
case 'tool':
|
|
54
|
+
extractFromToolResult(manager, toolNames.get(message.toolCallId) ?? 'tool', toolResultToText(message.content), message.isError === true);
|
|
55
|
+
break;
|
|
56
|
+
case 'system':
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
16
60
|
}
|
|
17
61
|
/**
|
|
18
62
|
* Compact a history now, whatever its size.
|
|
@@ -23,6 +67,7 @@ function splice(systemMessages, summaryBody, recentMessages) {
|
|
|
23
67
|
* logged as a successful pass and shown to a user as work done.
|
|
24
68
|
*/
|
|
25
69
|
export async function compactNow(input) {
|
|
70
|
+
admitManualCompaction(input);
|
|
26
71
|
const window = resolveContextWindow(input.contextWindowTokens ?? input.config.contextWindowTokens, input.model);
|
|
27
72
|
// `force` because a host asked. The threshold exists to decide whether an
|
|
28
73
|
// automatic pass is worth its model call; somebody clicking "compact"
|
|
@@ -33,14 +78,28 @@ export async function compactNow(input) {
|
|
|
33
78
|
contextWindowTokens: window.tokens,
|
|
34
79
|
estimatedTokens: window.tokens,
|
|
35
80
|
force: true,
|
|
81
|
+
allowNoSystemFloor: true,
|
|
36
82
|
skipToolResultClear: true,
|
|
37
83
|
});
|
|
38
84
|
if (plan.kind !== 'plan')
|
|
39
85
|
return null;
|
|
86
|
+
const retained = findRetainedIndices(input.messages);
|
|
87
|
+
const retainedOlder = plan.olderMessages.filter((_, offset) => retained.has(plan.systemMessages.length + offset));
|
|
88
|
+
const preservedSystem = preservedSystemFloor(plan.systemMessages);
|
|
89
|
+
const projectedLength = preservedSystem.length + 1 + retainedOlder.length + plan.recentMessages.length;
|
|
90
|
+
// Decide before building a summary (and before a possible verifier call).
|
|
91
|
+
// A pinned older message remains verbatim, so replacing one removable
|
|
92
|
+
// message with one summary has shed nothing and must be reported as a no-op.
|
|
93
|
+
if (input.messages.length - projectedLength < 1)
|
|
94
|
+
return null;
|
|
40
95
|
const manager = new WorkingStateManager(input.config);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
96
|
+
populateWorkingState(manager, plan.olderMessages, input.config);
|
|
97
|
+
let usage = { ...EMPTY_TOKEN_USAGE };
|
|
98
|
+
const body = await buildVerifiedSummary(manager, [...plan.olderMessages], input.provider, input.config, (reported) => {
|
|
99
|
+
usage = accumulateTokenUsage(usage, reported);
|
|
100
|
+
}, input.model ?? '', { signal: input.signal, streamIdleTimeoutMs: input.streamIdleTimeoutMs });
|
|
101
|
+
const { messages, summary } = splice(preservedSystem, body, retainedOlder, plan.recentMessages);
|
|
102
|
+
return { messages, shed: input.messages.length - messages.length, summary, usage };
|
|
44
103
|
}
|
|
45
104
|
/**
|
|
46
105
|
* Compact exactly the span a host chose, or refuse.
|
|
@@ -53,6 +112,7 @@ export async function compactNow(input) {
|
|
|
53
112
|
* the caller can move it themselves.
|
|
54
113
|
*/
|
|
55
114
|
export async function compactRegion(input) {
|
|
115
|
+
admitManualCompaction(input);
|
|
56
116
|
const { messages, start, end } = input;
|
|
57
117
|
if (!Number.isInteger(start) || !Number.isInteger(end) || start < 0 || end > messages.length) {
|
|
58
118
|
throw new NamzuError({
|
|
@@ -82,10 +142,25 @@ export async function compactRegion(input) {
|
|
|
82
142
|
});
|
|
83
143
|
}
|
|
84
144
|
}
|
|
145
|
+
const retained = findRetainedIndices(messages);
|
|
146
|
+
const retainedSelected = messages
|
|
147
|
+
.slice(start, end)
|
|
148
|
+
.filter((_, offset) => retained.has(start + offset));
|
|
149
|
+
// The replacement summary itself costs one slot. If the selected region
|
|
150
|
+
// contains no additional removable message, the honest result is a no-op
|
|
151
|
+
// and no verifier/provider work is authorized.
|
|
152
|
+
if (end - start - retainedSelected.length - 1 < 1)
|
|
153
|
+
return null;
|
|
85
154
|
const manager = new WorkingStateManager(input.config);
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const
|
|
155
|
+
populateWorkingState(manager, messages.slice(start, end), input.config);
|
|
156
|
+
let usage = { ...EMPTY_TOKEN_USAGE };
|
|
157
|
+
const body = await buildVerifiedSummary(manager, messages.slice(start, end), input.provider, input.config, (reported) => {
|
|
158
|
+
usage = accumulateTokenUsage(usage, reported);
|
|
159
|
+
}, input.model ?? '', { signal: input.signal, streamIdleTimeoutMs: input.streamIdleTimeoutMs });
|
|
160
|
+
// Same cross-run ownership as compactNow: a selected region has been
|
|
161
|
+
// replaced outside a run, so its only surviving account is pinned.
|
|
162
|
+
const summary = { ...buildCompactionMessage(body), retain: true };
|
|
163
|
+
const out = [...messages.slice(0, start), summary, ...retainedSelected, ...messages.slice(end)];
|
|
89
164
|
// Checked after the splice, not only before it. The edges being
|
|
90
165
|
// individually safe does not make the RESULT valid — a span whose
|
|
91
166
|
// interior held one half of a pair straddling `start` would pass both
|
|
@@ -99,6 +174,6 @@ export async function compactRegion(input) {
|
|
|
99
174
|
retryable: false,
|
|
100
175
|
});
|
|
101
176
|
}
|
|
102
|
-
return { messages: out, shed: messages.length - out.length, summary };
|
|
177
|
+
return { messages: out, shed: messages.length - out.length, summary, usage };
|
|
103
178
|
}
|
|
104
179
|
//# sourceMappingURL=manual.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manual.js","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"manual.js","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ import type { Message } from '../types/message/index.js';
|
|
|
25
25
|
export type CompactionSkipReason =
|
|
26
26
|
/** Fewer messages than the recent window plus a floor — nothing to move. */
|
|
27
27
|
'too_few_messages'
|
|
28
|
-
/**
|
|
28
|
+
/** An in-run pass has no leading `system` message to use as its permanent floor. */
|
|
29
29
|
| 'no_system_floor'
|
|
30
30
|
/** Every candidate boundary would split a tool-call pair. */
|
|
31
31
|
| 'no_safe_cut'
|
|
@@ -54,14 +54,27 @@ export interface CompactionPlanInput {
|
|
|
54
54
|
readonly contextWindowTokens: number;
|
|
55
55
|
readonly estimatedTokens: number;
|
|
56
56
|
readonly force?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Let a host-created pass establish its own retained summary floor.
|
|
59
|
+
*
|
|
60
|
+
* This is deliberately separate from `force`: a provider overflow can
|
|
61
|
+
* force the threshold decision without changing the live run's prompt
|
|
62
|
+
* invariant, while a host may own a durable user/assistant-only history
|
|
63
|
+
* that has no system floor yet.
|
|
64
|
+
*/
|
|
65
|
+
readonly allowNoSystemFloor?: boolean;
|
|
57
66
|
/**
|
|
58
67
|
* Skip the tool-result pre-pass and go straight to the boundary search.
|
|
59
68
|
*
|
|
60
|
-
* The two steps are sequential in a real pass:
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
69
|
+
* The two steps are sequential in a real pass: ask once for a cleared
|
|
70
|
+
* candidate and, if that was not enough relief, ask again for a cut over
|
|
71
|
+
* that candidate. The caller need not install the first answer before the
|
|
72
|
+
* second question. In fact the live runtime deliberately stages an
|
|
73
|
+
* insufficient clear until summary verification succeeds, then publishes
|
|
74
|
+
* the combined edit atomically. Returning both from one call would mean
|
|
75
|
+
* nesting a union inside a union and computing a boundary the caller may
|
|
76
|
+
* never use; asking twice says what is happening without prescribing when
|
|
77
|
+
* an effect becomes visible.
|
|
65
78
|
*/
|
|
66
79
|
readonly skipToolResultClear?: boolean;
|
|
67
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/compaction/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAIxD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,wCAAwC;AACxC,MAAM,MAAM,oBAAoB;AAC/B,4EAA4E;AAC1E,kBAAkB;AACpB,
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/compaction/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAIxD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,wCAAwC;AACxC,MAAM,MAAM,oBAAoB;AAC/B,4EAA4E;AAC1E,kBAAkB;AACpB,oFAAoF;GAClF,iBAAiB;AACnB,6DAA6D;GAC3D,aAAa;AACf,oEAAoE;GAClE,eAAe,CAAA;AAElB,MAAM,MAAM,cAAc,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,GAChE;IACA,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;CAChC,GACD;IACA,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,cAAc,EAAE,SAAS,OAAO,EAAE,CAAA;IAC3C,QAAQ,CAAC,aAAa,EAAE,SAAS,OAAO,EAAE,CAAA;IAC1C,QAAQ,CAAC,cAAc,EAAE,SAAS,OAAO,EAAE,CAAA;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CACzB,CAAA;AAEJ,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CACtC;AAoBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAajG;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAgHzE;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,IAAI,CAAA"}
|
package/dist/compaction/plan.js
CHANGED
|
@@ -85,17 +85,31 @@ export function planCompaction(input) {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
const messages = input.messages;
|
|
88
|
-
if (messages.length < config.keepRecentMessages + 2) {
|
|
89
|
-
return { kind: 'skip', reason: 'too_few_messages' };
|
|
90
|
-
}
|
|
91
88
|
const systemMessages = [];
|
|
92
89
|
for (const msg of messages) {
|
|
93
90
|
if (msg.role !== 'system')
|
|
94
91
|
break;
|
|
95
92
|
systemMessages.push(msg);
|
|
96
93
|
}
|
|
97
|
-
|
|
94
|
+
// Count and token retention are different boundary policies. In count
|
|
95
|
+
// mode the configured tail plus one older message must fit after the
|
|
96
|
+
// floor. Token mode does not consult keepRecentMessages at all; it only
|
|
97
|
+
// needs one older and one recent message before the token walk and safe
|
|
98
|
+
// boundary search can make the real decision.
|
|
99
|
+
//
|
|
100
|
+
// Preserve the old short-history ordering for a run with no floor: until
|
|
101
|
+
// a host explicitly allows a floorless pass, one notional system message
|
|
102
|
+
// remains part of the admission minimum and `no_system_floor` follows it.
|
|
103
|
+
const floorForAdmission = systemMessages.length > 0 ? systemMessages.length : input.allowNoSystemFloor ? 0 : 1;
|
|
104
|
+
const minimumMessages = config.keepRecentTokens === undefined
|
|
105
|
+
? floorForAdmission + config.keepRecentMessages + 1
|
|
106
|
+
: floorForAdmission + 2;
|
|
107
|
+
if (messages.length < minimumMessages) {
|
|
108
|
+
return { kind: 'skip', reason: 'too_few_messages' };
|
|
109
|
+
}
|
|
110
|
+
if (systemMessages.length === 0 && !input.allowNoSystemFloor) {
|
|
98
111
|
return { kind: 'skip', reason: 'no_system_floor' };
|
|
112
|
+
}
|
|
99
113
|
// Tool-pair atomicity. A naive cut at `length - keepRecentMessages` can
|
|
100
114
|
// land BETWEEN an assistant-with-toolCalls (dropped into `older`) and its
|
|
101
115
|
// `tool` results (kept in `recent`), leaving orphaned `tool_result`
|