@xandout/libra-harness 0.1.34 → 0.1.90
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/README.md +30 -30
- package/dist/agent.d.ts +8 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +205 -193
- package/dist/agent.js.map +1 -1
- package/dist/ai-sdk-model.d.ts.map +1 -1
- package/dist/ai-sdk-model.js +91 -78
- package/dist/ai-sdk-model.js.map +1 -1
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/{extras/extensions → extensions}/auto-steer/extension.d.ts +1 -1
- package/dist/extensions/auto-steer/extension.d.ts.map +1 -0
- package/dist/extensions/auto-steer/extension.js.map +1 -0
- package/dist/extensions/auto-steer/index.d.ts.map +1 -0
- package/dist/extensions/auto-steer/index.js.map +1 -0
- package/dist/extensions/code-tools/extension.d.ts +15 -0
- package/dist/extensions/code-tools/extension.d.ts.map +1 -0
- package/dist/extensions/code-tools/extension.js +73 -0
- package/dist/extensions/code-tools/extension.js.map +1 -0
- package/dist/extensions/code-tools/extension.test.d.ts.map +1 -0
- package/dist/extensions/code-tools/extension.test.js +504 -0
- package/dist/extensions/code-tools/extension.test.js.map +1 -0
- package/dist/extensions/code-tools/index.d.ts.map +1 -0
- package/dist/extensions/code-tools/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/code-tools/tools/code-search.d.ts +2 -2
- package/dist/extensions/code-tools/tools/code-search.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/code-tools/tools/code-search.js +1 -1
- package/dist/extensions/code-tools/tools/code-search.js.map +1 -0
- package/dist/extensions/code-tools/tools/find.d.ts.map +1 -0
- package/dist/extensions/code-tools/tools/find.js +83 -0
- package/dist/extensions/code-tools/tools/find.js.map +1 -0
- package/dist/extensions/code-tools/tools/grep.d.ts.map +1 -0
- package/dist/extensions/code-tools/tools/grep.js +90 -0
- package/dist/extensions/code-tools/tools/grep.js.map +1 -0
- package/dist/extensions/code-tools/tools/read.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/code-tools/tools/read.js +17 -25
- package/dist/extensions/code-tools/tools/read.js.map +1 -0
- package/dist/{extras/extensions → extensions}/code-tools/tools/shared.d.ts +5 -1
- package/dist/extensions/code-tools/tools/shared.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/code-tools/tools/shared.js +68 -0
- package/dist/extensions/code-tools/tools/shared.js.map +1 -0
- package/dist/extensions/code-tools/tools/shell.d.ts +39 -0
- package/dist/extensions/code-tools/tools/shell.d.ts.map +1 -0
- package/dist/extensions/code-tools/tools/shell.js +441 -0
- package/dist/extensions/code-tools/tools/shell.js.map +1 -0
- package/dist/{extras/extensions → extensions}/code-tools/tools/todo.d.ts +0 -3
- package/dist/extensions/code-tools/tools/todo.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/code-tools/tools/todo.js +0 -8
- package/dist/extensions/code-tools/tools/todo.js.map +1 -0
- package/dist/extensions/code-tools/tools/view-image.d.ts +10 -0
- package/dist/extensions/code-tools/tools/view-image.d.ts.map +1 -0
- package/dist/extensions/code-tools/tools/view-image.js +87 -0
- package/dist/extensions/code-tools/tools/view-image.js.map +1 -0
- package/dist/extensions/code-tools/tools/write.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/code-tools/tools/write.js +47 -37
- package/dist/extensions/code-tools/tools/write.js.map +1 -0
- package/dist/{extras/extensions → extensions}/disk-session/extension.d.ts +45 -2
- package/dist/extensions/disk-session/extension.d.ts.map +1 -0
- package/dist/extensions/disk-session/extension.js +818 -0
- package/dist/extensions/disk-session/extension.js.map +1 -0
- package/dist/extensions/disk-session/extension.test.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/disk-session/extension.test.js +445 -16
- package/dist/extensions/disk-session/extension.test.js.map +1 -0
- package/dist/extensions/disk-session/index.d.ts +3 -0
- package/dist/extensions/disk-session/index.d.ts.map +1 -0
- package/dist/extensions/disk-session/index.js +2 -0
- package/dist/extensions/disk-session/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/emoji/extension.d.ts +1 -1
- package/dist/extensions/emoji/extension.d.ts.map +1 -0
- package/dist/extensions/emoji/extension.js.map +1 -0
- package/dist/extensions/emoji/index.d.ts.map +1 -0
- package/dist/extensions/emoji/index.js.map +1 -0
- package/dist/extensions/filesystem/extension.d.ts.map +1 -0
- package/dist/extensions/filesystem/extension.js.map +1 -0
- package/dist/extensions/filesystem/extension.test.d.ts.map +1 -0
- package/dist/extensions/filesystem/extension.test.js.map +1 -0
- package/dist/extensions/filesystem/index.d.ts.map +1 -0
- package/dist/extensions/filesystem/index.js.map +1 -0
- package/dist/extensions/index.d.ts +3 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +2 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/keyword-extractor/extension.d.ts +1 -1
- package/dist/extensions/keyword-extractor/extension.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/keyword-extractor/extension.js +1 -1
- package/dist/extensions/keyword-extractor/extension.js.map +1 -0
- package/dist/extensions/keyword-extractor/extension.test.d.ts.map +1 -0
- package/dist/extensions/keyword-extractor/extension.test.js.map +1 -0
- package/dist/extensions/keyword-extractor/index.d.ts.map +1 -0
- package/dist/extensions/keyword-extractor/index.js.map +1 -0
- package/dist/extensions/keyword-extractor/nlp.d.ts.map +1 -0
- package/dist/extensions/keyword-extractor/nlp.js.map +1 -0
- package/dist/extensions/keyword-extractor/nlp.test.d.ts.map +1 -0
- package/dist/extensions/keyword-extractor/nlp.test.js.map +1 -0
- package/dist/{extras/extension-loader.d.ts → extensions/loader.d.ts} +1 -1
- package/dist/extensions/loader.d.ts.map +1 -0
- package/dist/{extras/extension-loader.js → extensions/loader.js} +2 -2
- package/dist/extensions/loader.js.map +1 -0
- package/dist/{extras/extensions → extensions}/logger/extension.d.ts +1 -1
- package/dist/extensions/logger/extension.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/logger/extension.js +1 -1
- package/dist/extensions/logger/extension.js.map +1 -0
- package/dist/extensions/logger/index.d.ts.map +1 -0
- package/dist/extensions/logger/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/mcp/extension.d.ts +1 -1
- package/dist/extensions/mcp/extension.d.ts.map +1 -0
- package/dist/extensions/mcp/extension.js.map +1 -0
- package/dist/extensions/mcp/extension.test.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/mcp/extension.test.js +1 -1
- package/dist/extensions/mcp/extension.test.js.map +1 -0
- package/dist/extensions/mcp/index.d.ts.map +1 -0
- package/dist/extensions/mcp/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/mem-session/extension.d.ts +2 -2
- package/dist/extensions/mem-session/extension.d.ts.map +1 -0
- package/dist/extensions/mem-session/extension.js.map +1 -0
- package/dist/extensions/mem-session/index.d.ts.map +1 -0
- package/dist/extensions/mem-session/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/memory/extension.d.ts +1 -1
- package/dist/extensions/memory/extension.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/memory/extension.js +1 -1
- package/dist/extensions/memory/extension.js.map +1 -0
- package/dist/extensions/memory/index.d.ts +4 -0
- package/dist/extensions/memory/index.d.ts.map +1 -0
- package/dist/extensions/memory/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/memory/llm-extractor.d.ts +1 -1
- package/dist/extensions/memory/llm-extractor.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/memory/llm-extractor.js +1 -1
- package/dist/extensions/memory/llm-extractor.js.map +1 -0
- package/dist/{extras/extensions → extensions}/memory/types.d.ts +2 -2
- package/dist/extensions/memory/types.d.ts.map +1 -0
- package/dist/extensions/memory/types.js.map +1 -0
- package/dist/{extras/extensions → extensions}/otel/extension.d.ts +1 -1
- package/dist/extensions/otel/extension.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/otel/extension.js +1 -1
- package/dist/extensions/otel/extension.js.map +1 -0
- package/dist/extensions/otel/extension.test.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/otel/extension.test.js +1 -1
- package/dist/extensions/otel/extension.test.js.map +1 -0
- package/dist/extensions/otel/index.d.ts.map +1 -0
- package/dist/extensions/otel/index.js.map +1 -0
- package/dist/extensions/otel/jsonl-span-exporter.d.ts.map +1 -0
- package/dist/extensions/otel/jsonl-span-exporter.js.map +1 -0
- package/dist/{extras/extensions → extensions}/scripts/extension.d.ts +1 -1
- package/dist/extensions/scripts/extension.d.ts.map +1 -0
- package/dist/extensions/scripts/extension.js.map +1 -0
- package/dist/extensions/scripts/extension.test.d.ts.map +1 -0
- package/dist/extensions/scripts/extension.test.js.map +1 -0
- package/dist/extensions/scripts/index.d.ts.map +1 -0
- package/dist/extensions/scripts/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/skills/extension.d.ts +1 -1
- package/dist/extensions/skills/extension.d.ts.map +1 -0
- package/dist/extensions/skills/extension.js.map +1 -0
- package/dist/extensions/skills/extension.test.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/skills/extension.test.js +1 -1
- package/dist/extensions/skills/extension.test.js.map +1 -0
- package/dist/extensions/skills/index.d.ts.map +1 -0
- package/dist/extensions/skills/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/streaming/extension.d.ts +1 -1
- package/dist/extensions/streaming/extension.d.ts.map +1 -0
- package/dist/extensions/streaming/extension.js.map +1 -0
- package/dist/extensions/streaming/index.d.ts.map +1 -0
- package/dist/extensions/streaming/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/structured-output/extension.d.ts +1 -1
- package/dist/extensions/structured-output/extension.d.ts.map +1 -0
- package/dist/extensions/structured-output/extension.js.map +1 -0
- package/dist/extensions/structured-output/index.d.ts.map +1 -0
- package/dist/extensions/structured-output/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/timestamp/extension.d.ts +1 -1
- package/dist/extensions/timestamp/extension.d.ts.map +1 -0
- package/dist/extensions/timestamp/extension.js.map +1 -0
- package/dist/extensions/timestamp/index.d.ts.map +1 -0
- package/dist/extensions/timestamp/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/token-stats/extension.d.ts +1 -1
- package/dist/extensions/token-stats/extension.d.ts.map +1 -0
- package/dist/extensions/token-stats/extension.js.map +1 -0
- package/dist/extensions/token-stats/extension.test.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/token-stats/extension.test.js +1 -1
- package/dist/extensions/token-stats/extension.test.js.map +1 -0
- package/dist/extensions/token-stats/index.d.ts.map +1 -0
- package/dist/extensions/token-stats/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/tool-buffer/extension.d.ts +1 -1
- package/dist/extensions/tool-buffer/extension.d.ts.map +1 -0
- package/dist/extensions/tool-buffer/extension.js.map +1 -0
- package/dist/extensions/tool-buffer/extension.test.d.ts.map +1 -0
- package/dist/{extras/extensions → extensions}/tool-buffer/extension.test.js +1 -1
- package/dist/extensions/tool-buffer/extension.test.js.map +1 -0
- package/dist/extensions/tool-buffer/index.d.ts.map +1 -0
- package/dist/extensions/tool-buffer/index.js.map +1 -0
- package/dist/{extras/extensions → extensions}/weather-tool/extension.d.ts +1 -1
- package/dist/extensions/weather-tool/extension.d.ts.map +1 -0
- package/dist/extensions/weather-tool/extension.js.map +1 -0
- package/dist/extensions/weather-tool/index.d.ts.map +1 -0
- package/dist/extensions/weather-tool/index.js.map +1 -0
- package/dist/handle.d.ts +4 -0
- package/dist/handle.d.ts.map +1 -1
- package/dist/{extras/models → models}/ai-sdk-resolver.d.ts +1 -1
- package/dist/models/ai-sdk-resolver.d.ts.map +1 -0
- package/dist/{extras/models → models}/ai-sdk-resolver.js +1 -1
- package/dist/models/ai-sdk-resolver.js.map +1 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js.map +1 -0
- package/dist/{extras/models → models}/routing-model.d.ts +1 -1
- package/dist/models/routing-model.d.ts.map +1 -0
- package/dist/{extras/models → models}/routing-model.js +1 -1
- package/dist/models/routing-model.js.map +1 -0
- package/dist/openai-provider/index.d.ts.map +1 -0
- package/dist/openai-provider/index.js.map +1 -0
- package/dist/{extras/openai-provider → openai-provider}/server.d.ts +1 -1
- package/dist/openai-provider/server.d.ts.map +1 -0
- package/dist/openai-provider/server.js.map +1 -0
- package/package.json +108 -83
- package/dist/extras/extension-loader.d.ts.map +0 -1
- package/dist/extras/extension-loader.js.map +0 -1
- package/dist/extras/extensions/auto-steer/extension.d.ts.map +0 -1
- package/dist/extras/extensions/auto-steer/extension.js.map +0 -1
- package/dist/extras/extensions/auto-steer/index.d.ts.map +0 -1
- package/dist/extras/extensions/auto-steer/index.js.map +0 -1
- package/dist/extras/extensions/code-tools/extension.d.ts +0 -83
- package/dist/extras/extensions/code-tools/extension.d.ts.map +0 -1
- package/dist/extras/extensions/code-tools/extension.js +0 -93
- package/dist/extras/extensions/code-tools/extension.js.map +0 -1
- package/dist/extras/extensions/code-tools/extension.test.d.ts.map +0 -1
- package/dist/extras/extensions/code-tools/extension.test.js +0 -656
- package/dist/extras/extensions/code-tools/extension.test.js.map +0 -1
- package/dist/extras/extensions/code-tools/index.d.ts.map +0 -1
- package/dist/extras/extensions/code-tools/index.js.map +0 -1
- package/dist/extras/extensions/code-tools/tools/code-search.d.ts.map +0 -1
- package/dist/extras/extensions/code-tools/tools/code-search.js.map +0 -1
- package/dist/extras/extensions/code-tools/tools/find.d.ts.map +0 -1
- package/dist/extras/extensions/code-tools/tools/find.js +0 -161
- package/dist/extras/extensions/code-tools/tools/find.js.map +0 -1
- package/dist/extras/extensions/code-tools/tools/grep.d.ts.map +0 -1
- package/dist/extras/extensions/code-tools/tools/grep.js +0 -307
- package/dist/extras/extensions/code-tools/tools/grep.js.map +0 -1
- package/dist/extras/extensions/code-tools/tools/read.d.ts.map +0 -1
- package/dist/extras/extensions/code-tools/tools/read.js.map +0 -1
- package/dist/extras/extensions/code-tools/tools/shared.d.ts.map +0 -1
- package/dist/extras/extensions/code-tools/tools/shared.js.map +0 -1
- package/dist/extras/extensions/code-tools/tools/shell.d.ts +0 -49
- package/dist/extras/extensions/code-tools/tools/shell.d.ts.map +0 -1
- package/dist/extras/extensions/code-tools/tools/shell.js +0 -623
- package/dist/extras/extensions/code-tools/tools/shell.js.map +0 -1
- package/dist/extras/extensions/code-tools/tools/todo.d.ts.map +0 -1
- package/dist/extras/extensions/code-tools/tools/todo.js.map +0 -1
- package/dist/extras/extensions/code-tools/tools/write.d.ts.map +0 -1
- package/dist/extras/extensions/code-tools/tools/write.js.map +0 -1
- package/dist/extras/extensions/disk-session/extension.d.ts.map +0 -1
- package/dist/extras/extensions/disk-session/extension.js +0 -640
- package/dist/extras/extensions/disk-session/extension.js.map +0 -1
- package/dist/extras/extensions/disk-session/extension.test.d.ts.map +0 -1
- package/dist/extras/extensions/disk-session/extension.test.js.map +0 -1
- package/dist/extras/extensions/disk-session/index.d.ts +0 -3
- package/dist/extras/extensions/disk-session/index.d.ts.map +0 -1
- package/dist/extras/extensions/disk-session/index.js +0 -2
- package/dist/extras/extensions/disk-session/index.js.map +0 -1
- package/dist/extras/extensions/emoji/extension.d.ts.map +0 -1
- package/dist/extras/extensions/emoji/extension.js.map +0 -1
- package/dist/extras/extensions/emoji/index.d.ts.map +0 -1
- package/dist/extras/extensions/emoji/index.js.map +0 -1
- package/dist/extras/extensions/filesystem/extension.d.ts.map +0 -1
- package/dist/extras/extensions/filesystem/extension.js.map +0 -1
- package/dist/extras/extensions/filesystem/extension.test.d.ts.map +0 -1
- package/dist/extras/extensions/filesystem/extension.test.js.map +0 -1
- package/dist/extras/extensions/filesystem/index.d.ts.map +0 -1
- package/dist/extras/extensions/filesystem/index.js.map +0 -1
- package/dist/extras/extensions/keyword-extractor/extension.d.ts.map +0 -1
- package/dist/extras/extensions/keyword-extractor/extension.js.map +0 -1
- package/dist/extras/extensions/keyword-extractor/extension.test.d.ts.map +0 -1
- package/dist/extras/extensions/keyword-extractor/extension.test.js.map +0 -1
- package/dist/extras/extensions/keyword-extractor/index.d.ts.map +0 -1
- package/dist/extras/extensions/keyword-extractor/index.js.map +0 -1
- package/dist/extras/extensions/keyword-extractor/nlp.d.ts.map +0 -1
- package/dist/extras/extensions/keyword-extractor/nlp.js.map +0 -1
- package/dist/extras/extensions/keyword-extractor/nlp.test.d.ts.map +0 -1
- package/dist/extras/extensions/keyword-extractor/nlp.test.js.map +0 -1
- package/dist/extras/extensions/logger/extension.d.ts.map +0 -1
- package/dist/extras/extensions/logger/extension.js.map +0 -1
- package/dist/extras/extensions/logger/index.d.ts.map +0 -1
- package/dist/extras/extensions/logger/index.js.map +0 -1
- package/dist/extras/extensions/mcp/extension.d.ts.map +0 -1
- package/dist/extras/extensions/mcp/extension.js.map +0 -1
- package/dist/extras/extensions/mcp/extension.test.d.ts.map +0 -1
- package/dist/extras/extensions/mcp/extension.test.js.map +0 -1
- package/dist/extras/extensions/mcp/index.d.ts.map +0 -1
- package/dist/extras/extensions/mcp/index.js.map +0 -1
- package/dist/extras/extensions/mem-session/extension.d.ts.map +0 -1
- package/dist/extras/extensions/mem-session/extension.js.map +0 -1
- package/dist/extras/extensions/mem-session/index.d.ts.map +0 -1
- package/dist/extras/extensions/mem-session/index.js.map +0 -1
- package/dist/extras/extensions/memory/extension.d.ts.map +0 -1
- package/dist/extras/extensions/memory/extension.js.map +0 -1
- package/dist/extras/extensions/memory/index.d.ts +0 -5
- package/dist/extras/extensions/memory/index.d.ts.map +0 -1
- package/dist/extras/extensions/memory/index.js.map +0 -1
- package/dist/extras/extensions/memory/llm-extractor.d.ts.map +0 -1
- package/dist/extras/extensions/memory/llm-extractor.js.map +0 -1
- package/dist/extras/extensions/memory/types.d.ts.map +0 -1
- package/dist/extras/extensions/memory/types.js.map +0 -1
- package/dist/extras/extensions/otel/extension.d.ts.map +0 -1
- package/dist/extras/extensions/otel/extension.js.map +0 -1
- package/dist/extras/extensions/otel/extension.test.d.ts.map +0 -1
- package/dist/extras/extensions/otel/extension.test.js.map +0 -1
- package/dist/extras/extensions/otel/index.d.ts.map +0 -1
- package/dist/extras/extensions/otel/index.js.map +0 -1
- package/dist/extras/extensions/otel/jsonl-span-exporter.d.ts.map +0 -1
- package/dist/extras/extensions/otel/jsonl-span-exporter.js.map +0 -1
- package/dist/extras/extensions/scripts/extension.d.ts.map +0 -1
- package/dist/extras/extensions/scripts/extension.js.map +0 -1
- package/dist/extras/extensions/scripts/extension.test.d.ts.map +0 -1
- package/dist/extras/extensions/scripts/extension.test.js.map +0 -1
- package/dist/extras/extensions/scripts/index.d.ts.map +0 -1
- package/dist/extras/extensions/scripts/index.js.map +0 -1
- package/dist/extras/extensions/skills/extension.d.ts.map +0 -1
- package/dist/extras/extensions/skills/extension.js.map +0 -1
- package/dist/extras/extensions/skills/extension.test.d.ts.map +0 -1
- package/dist/extras/extensions/skills/extension.test.js.map +0 -1
- package/dist/extras/extensions/skills/index.d.ts.map +0 -1
- package/dist/extras/extensions/skills/index.js.map +0 -1
- package/dist/extras/extensions/streaming/extension.d.ts.map +0 -1
- package/dist/extras/extensions/streaming/extension.js.map +0 -1
- package/dist/extras/extensions/streaming/index.d.ts.map +0 -1
- package/dist/extras/extensions/streaming/index.js.map +0 -1
- package/dist/extras/extensions/structured-output/extension.d.ts.map +0 -1
- package/dist/extras/extensions/structured-output/extension.js.map +0 -1
- package/dist/extras/extensions/structured-output/index.d.ts.map +0 -1
- package/dist/extras/extensions/structured-output/index.js.map +0 -1
- package/dist/extras/extensions/timestamp/extension.d.ts.map +0 -1
- package/dist/extras/extensions/timestamp/extension.js.map +0 -1
- package/dist/extras/extensions/timestamp/index.d.ts.map +0 -1
- package/dist/extras/extensions/timestamp/index.js.map +0 -1
- package/dist/extras/extensions/token-stats/extension.d.ts.map +0 -1
- package/dist/extras/extensions/token-stats/extension.js.map +0 -1
- package/dist/extras/extensions/token-stats/extension.test.d.ts.map +0 -1
- package/dist/extras/extensions/token-stats/extension.test.js.map +0 -1
- package/dist/extras/extensions/token-stats/index.d.ts.map +0 -1
- package/dist/extras/extensions/token-stats/index.js.map +0 -1
- package/dist/extras/extensions/tool-buffer/extension.d.ts.map +0 -1
- package/dist/extras/extensions/tool-buffer/extension.js.map +0 -1
- package/dist/extras/extensions/tool-buffer/extension.test.d.ts.map +0 -1
- package/dist/extras/extensions/tool-buffer/extension.test.js.map +0 -1
- package/dist/extras/extensions/tool-buffer/index.d.ts.map +0 -1
- package/dist/extras/extensions/tool-buffer/index.js.map +0 -1
- package/dist/extras/extensions/weather-tool/extension.d.ts.map +0 -1
- package/dist/extras/extensions/weather-tool/extension.js.map +0 -1
- package/dist/extras/extensions/weather-tool/index.d.ts.map +0 -1
- package/dist/extras/extensions/weather-tool/index.js.map +0 -1
- package/dist/extras/models/ai-sdk-resolver.d.ts.map +0 -1
- package/dist/extras/models/ai-sdk-resolver.js.map +0 -1
- package/dist/extras/models/index.d.ts.map +0 -1
- package/dist/extras/models/index.js.map +0 -1
- package/dist/extras/models/routing-model.d.ts.map +0 -1
- package/dist/extras/models/routing-model.js.map +0 -1
- package/dist/extras/openai-provider/index.d.ts.map +0 -1
- package/dist/extras/openai-provider/index.js.map +0 -1
- package/dist/extras/openai-provider/server.d.ts.map +0 -1
- package/dist/extras/openai-provider/server.js.map +0 -1
- /package/dist/{extras/extensions → extensions}/auto-steer/extension.js +0 -0
- /package/dist/{extras/extensions → extensions}/auto-steer/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/auto-steer/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/auto-steer/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/code-tools/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/code-tools/extension.test.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/code-tools/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/code-tools/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/code-tools/tools/find.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/code-tools/tools/grep.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/code-tools/tools/read.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/code-tools/tools/write.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/disk-session/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/disk-session/extension.test.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/emoji/extension.js +0 -0
- /package/dist/{extras/extensions → extensions}/emoji/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/emoji/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/emoji/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/filesystem/extension.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/filesystem/extension.js +0 -0
- /package/dist/{extras/extensions → extensions}/filesystem/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/filesystem/extension.test.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/filesystem/extension.test.js +0 -0
- /package/dist/{extras/extensions → extensions}/filesystem/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/filesystem/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/keyword-extractor/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/keyword-extractor/extension.test.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/keyword-extractor/extension.test.js +0 -0
- /package/dist/{extras/extensions → extensions}/keyword-extractor/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/keyword-extractor/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/keyword-extractor/nlp.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/keyword-extractor/nlp.js +0 -0
- /package/dist/{extras/extensions → extensions}/keyword-extractor/nlp.test.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/keyword-extractor/nlp.test.js +0 -0
- /package/dist/{extras/extensions → extensions}/logger/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/logger/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/logger/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/mcp/extension.js +0 -0
- /package/dist/{extras/extensions → extensions}/mcp/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/mcp/extension.test.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/mcp/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/mcp/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/mem-session/extension.js +0 -0
- /package/dist/{extras/extensions → extensions}/mem-session/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/mem-session/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/mem-session/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/memory/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/memory/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/memory/types.js +0 -0
- /package/dist/{extras/extensions → extensions}/otel/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/otel/extension.test.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/otel/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/otel/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/otel/jsonl-span-exporter.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/otel/jsonl-span-exporter.js +0 -0
- /package/dist/{extras/extensions → extensions}/scripts/extension.js +0 -0
- /package/dist/{extras/extensions → extensions}/scripts/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/scripts/extension.test.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/scripts/extension.test.js +0 -0
- /package/dist/{extras/extensions → extensions}/scripts/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/scripts/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/skills/extension.js +0 -0
- /package/dist/{extras/extensions → extensions}/skills/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/skills/extension.test.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/skills/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/skills/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/streaming/extension.js +0 -0
- /package/dist/{extras/extensions → extensions}/streaming/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/streaming/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/streaming/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/structured-output/extension.js +0 -0
- /package/dist/{extras/extensions → extensions}/structured-output/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/structured-output/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/structured-output/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/timestamp/extension.js +0 -0
- /package/dist/{extras/extensions → extensions}/timestamp/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/timestamp/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/timestamp/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/token-stats/extension.js +0 -0
- /package/dist/{extras/extensions → extensions}/token-stats/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/token-stats/extension.test.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/token-stats/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/token-stats/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/tool-buffer/extension.js +0 -0
- /package/dist/{extras/extensions → extensions}/tool-buffer/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/tool-buffer/extension.test.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/tool-buffer/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/tool-buffer/index.js +0 -0
- /package/dist/{extras/extensions → extensions}/weather-tool/extension.js +0 -0
- /package/dist/{extras/extensions → extensions}/weather-tool/extension.json +0 -0
- /package/dist/{extras/extensions → extensions}/weather-tool/index.d.ts +0 -0
- /package/dist/{extras/extensions → extensions}/weather-tool/index.js +0 -0
- /package/dist/{extras/models → models}/index.d.ts +0 -0
- /package/dist/{extras/models → models}/index.js +0 -0
- /package/dist/{extras/openai-provider → openai-provider}/index.d.ts +0 -0
- /package/dist/{extras/openai-provider → openai-provider}/index.js +0 -0
- /package/dist/{extras/openai-provider → openai-provider}/server.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/extensions/disk-session/extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.test.d.ts","sourceRoot":"","sources":["../../../src/extensions/disk-session/extension.test.ts"],"names":[],"mappings":""}
|
|
@@ -3,7 +3,7 @@ import { mkdtempSync, rmSync, readFileSync, existsSync } from 'node:fs';
|
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import { tmpdir } from 'node:os';
|
|
5
5
|
import { Agent, messageContentToText } from '@xandout/libra-harness';
|
|
6
|
-
import { createDiskSessionExtension } from './index.js';
|
|
6
|
+
import { createDiskSessionExtension, sanitizeConversationMessages } from './index.js';
|
|
7
7
|
// ── Mock model ─────────────────────────────────────────────────────
|
|
8
8
|
// Returns a fixed assistant message. Optionally logs what the agent sees.
|
|
9
9
|
function mockModel(seen) {
|
|
@@ -424,14 +424,12 @@ describe('disk-session', () => {
|
|
|
424
424
|
expect(contents).toContain('after 5');
|
|
425
425
|
});
|
|
426
426
|
// ── Tool-call intermediate filtering ────────────────────────────
|
|
427
|
-
it('
|
|
427
|
+
it('preserves tool-call intermediates but slices at turn boundaries to prevent split sequences', async () => {
|
|
428
428
|
// If a tool call pair (assistant+tool) spans the boundary of the
|
|
429
|
-
// channelContextMessages window, the tool message would be
|
|
430
|
-
//
|
|
431
|
-
//
|
|
432
|
-
//
|
|
433
|
-
// Thread messages keep tool-call intermediates (they're complete sequences).
|
|
434
|
-
const ext = makeExt({ channelContextMessages: 4, recentChannelMessages: 0 });
|
|
429
|
+
// channelContextMessages window, the tool message would be sliced mid-sequence
|
|
430
|
+
// if we just did a naive .slice(). With sliceAtTurnBoundary, it skips forward
|
|
431
|
+
// to the next user message, dropping the partial turn entirely rather than splitting it.
|
|
432
|
+
const ext = makeExt({ channelContextMessages: 3, recentChannelMessages: 0 }); // 3 ensures it cuts into the 4-message turn
|
|
435
433
|
let seenMsgs = [];
|
|
436
434
|
// Create a tool-call exchange early in the channel (NOT the thread parent)
|
|
437
435
|
const toolModel = {
|
|
@@ -463,7 +461,7 @@ describe('disk-session', () => {
|
|
|
463
461
|
parameters: { type: 'object', properties: {} },
|
|
464
462
|
async execute() { return { toolCallId: 'tc1', content: 'tool output' }; },
|
|
465
463
|
});
|
|
466
|
-
// Turn 1: tool call exchange (produces assistant+tool+assistant records)
|
|
464
|
+
// Turn 1: tool call exchange (produces user+assistant[tool]+tool+assistant records = 4 records)
|
|
467
465
|
await toolAgent.run({
|
|
468
466
|
message: 'use the tool',
|
|
469
467
|
metadata: { session: { key: 'C1', messageTs: '1001' } },
|
|
@@ -471,19 +469,21 @@ describe('disk-session', () => {
|
|
|
471
469
|
// Turn 2: thread parent (a regular message, no tool calls)
|
|
472
470
|
const regAgent = makeAgent(ext);
|
|
473
471
|
await runTurn(regAgent, 'thread parent', sessionIdentity('C1', '1002'));
|
|
474
|
-
//
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
//
|
|
478
|
-
//
|
|
472
|
+
// Now thread reply on ts=1002
|
|
473
|
+
// The topLevelBefore messages before the parent are the 4 messages from Turn 1.
|
|
474
|
+
// We configured channelContextMessages: 3.
|
|
475
|
+
// If we took the last 3 messages of Turn 1, we would get [assistant, tool, assistant].
|
|
476
|
+
// But sliceAtTurnBoundary will see it starts with 'assistant', skip forward looking for
|
|
477
|
+
// a 'user' or 'system', find none, and return an empty array.
|
|
479
478
|
regAgent.hook('beforeContext', 'capture', async (ctx) => {
|
|
480
479
|
seenMsgs = ctx.turn.messages.map((m) => ({ role: m.role, content: m.content }));
|
|
481
480
|
});
|
|
482
481
|
await runTurn(regAgent, 'thread reply', sessionIdentity('C1', '1005', { threadTs: '1002' }));
|
|
483
|
-
//
|
|
482
|
+
// Because the context window (3) starts in the middle of Turn 1,
|
|
483
|
+
// sliceAtTurnBoundary will drop it entirely.
|
|
484
484
|
const toolMsgs = seenMsgs.filter((m) => m.role === 'tool');
|
|
485
485
|
expect(toolMsgs).toHaveLength(0);
|
|
486
|
-
// No assistant messages
|
|
486
|
+
// No assistant messages from Turn 1 should be present.
|
|
487
487
|
const emptyAssistantMsgs = seenMsgs.filter((m) => m.role === 'assistant' && !messageContentToText(m.content).trim());
|
|
488
488
|
expect(emptyAssistantMsgs).toHaveLength(0);
|
|
489
489
|
// But the thread messages should still be there
|
|
@@ -668,5 +668,434 @@ describe('disk-session', () => {
|
|
|
668
668
|
expect(records[1].role).toBe('user');
|
|
669
669
|
expect(records[2].role).toBe('assistant');
|
|
670
670
|
});
|
|
671
|
+
// ── Schema sanitization & Steering integrity ───────────────────
|
|
672
|
+
describe('sanitizeConversationMessages', () => {
|
|
673
|
+
it('drops orphan tool messages that have no preceding assistant message', () => {
|
|
674
|
+
const input = [
|
|
675
|
+
{ role: 'user', content: 'hello' },
|
|
676
|
+
{ role: 'tool', toolCallId: 'call_orphan', content: 'orphan output' },
|
|
677
|
+
{ role: 'assistant', content: 'hi' },
|
|
678
|
+
];
|
|
679
|
+
const output = sanitizeConversationMessages(input);
|
|
680
|
+
expect(output).toEqual([
|
|
681
|
+
{ role: 'user', content: 'hello' },
|
|
682
|
+
{ role: 'assistant', content: 'hi' },
|
|
683
|
+
]);
|
|
684
|
+
});
|
|
685
|
+
it('drops orphan tool messages following an assistant message that has no tool_calls', () => {
|
|
686
|
+
const input = [
|
|
687
|
+
{ role: 'assistant', content: 'just text, no tool calls' },
|
|
688
|
+
{ role: 'tool', toolCallId: 'call_orphan', content: 'unexpected result' },
|
|
689
|
+
];
|
|
690
|
+
const output = sanitizeConversationMessages(input);
|
|
691
|
+
expect(output).toEqual([
|
|
692
|
+
{ role: 'assistant', content: 'just text, no tool calls' },
|
|
693
|
+
]);
|
|
694
|
+
});
|
|
695
|
+
it('drops duplicate tool results for the same toolCallId', () => {
|
|
696
|
+
const input = [
|
|
697
|
+
{
|
|
698
|
+
role: 'assistant',
|
|
699
|
+
content: '',
|
|
700
|
+
toolCalls: [{ id: 'call_1', name: 'search', arguments: '{}' }],
|
|
701
|
+
},
|
|
702
|
+
{ role: 'tool', toolCallId: 'call_1', content: 'first result' },
|
|
703
|
+
{ role: 'tool', toolCallId: 'call_1', content: 'duplicate result' },
|
|
704
|
+
];
|
|
705
|
+
const output = sanitizeConversationMessages(input);
|
|
706
|
+
expect(output).toHaveLength(2);
|
|
707
|
+
expect(output[0].role).toBe('assistant');
|
|
708
|
+
expect(output[1].role).toBe('tool');
|
|
709
|
+
expect(output[1].content).toBe('first result');
|
|
710
|
+
});
|
|
711
|
+
it('prunes unfulfilled tool calls from an assistant message when only partial calls completed', () => {
|
|
712
|
+
const input = [
|
|
713
|
+
{
|
|
714
|
+
role: 'assistant',
|
|
715
|
+
content: '',
|
|
716
|
+
toolCalls: [
|
|
717
|
+
{ id: 'call_1', name: 'tool1', arguments: '{}' },
|
|
718
|
+
{ id: 'call_2', name: 'tool2', arguments: '{}' },
|
|
719
|
+
],
|
|
720
|
+
},
|
|
721
|
+
{ role: 'tool', toolCallId: 'call_1', content: 'res1' },
|
|
722
|
+
{ role: 'user', content: 'next turn' },
|
|
723
|
+
];
|
|
724
|
+
const output = sanitizeConversationMessages(input);
|
|
725
|
+
expect(output).toHaveLength(3);
|
|
726
|
+
expect(output[0].role).toBe('assistant');
|
|
727
|
+
expect(output[0].toolCalls).toEqual([
|
|
728
|
+
{ id: 'call_1', name: 'tool1', arguments: '{}' },
|
|
729
|
+
]);
|
|
730
|
+
expect(output[1].role).toBe('tool');
|
|
731
|
+
expect(output[2].role).toBe('user');
|
|
732
|
+
});
|
|
733
|
+
it('strips toolCalls from assistant when none completed but assistant has text content', () => {
|
|
734
|
+
const input = [
|
|
735
|
+
{
|
|
736
|
+
role: 'assistant',
|
|
737
|
+
content: 'Let me look that up',
|
|
738
|
+
toolCalls: [{ id: 'call_1', name: 'tool1', arguments: '{}' }],
|
|
739
|
+
},
|
|
740
|
+
{ role: 'user', content: 'cancelled' },
|
|
741
|
+
];
|
|
742
|
+
const output = sanitizeConversationMessages(input);
|
|
743
|
+
expect(output).toEqual([
|
|
744
|
+
{ role: 'assistant', content: 'Let me look that up' },
|
|
745
|
+
{ role: 'user', content: 'cancelled' },
|
|
746
|
+
]);
|
|
747
|
+
expect(output[0].toolCalls).toBeUndefined();
|
|
748
|
+
});
|
|
749
|
+
it('drops empty assistant message when no tool calls completed and content is empty', () => {
|
|
750
|
+
const input = [
|
|
751
|
+
{ role: 'user', content: 'search something' },
|
|
752
|
+
{
|
|
753
|
+
role: 'assistant',
|
|
754
|
+
content: '',
|
|
755
|
+
toolCalls: [{ id: 'call_1', name: 'tool1', arguments: '{}' }],
|
|
756
|
+
},
|
|
757
|
+
{ role: 'user', content: 'new prompt' },
|
|
758
|
+
];
|
|
759
|
+
const output = sanitizeConversationMessages(input);
|
|
760
|
+
expect(output).toEqual([
|
|
761
|
+
{ role: 'user', content: 'search something' },
|
|
762
|
+
{ role: 'user', content: 'new prompt' },
|
|
763
|
+
]);
|
|
764
|
+
});
|
|
765
|
+
});
|
|
766
|
+
describe('steering and tool-call persistence integrity', () => {
|
|
767
|
+
it('persists steering messages in correct chronological order without duplicating records', async () => {
|
|
768
|
+
const ext = makeExt();
|
|
769
|
+
let iteration = 0;
|
|
770
|
+
const model = {
|
|
771
|
+
async generate(_req) {
|
|
772
|
+
iteration++;
|
|
773
|
+
if (iteration === 1) {
|
|
774
|
+
// First iteration: model issues a tool call
|
|
775
|
+
return {
|
|
776
|
+
message: {
|
|
777
|
+
role: 'assistant',
|
|
778
|
+
content: 'calling tool',
|
|
779
|
+
toolCalls: [{ id: 'tc1', name: 'my_tool', arguments: '{}' }],
|
|
780
|
+
},
|
|
781
|
+
finishReason: 'tool_calls',
|
|
782
|
+
};
|
|
783
|
+
}
|
|
784
|
+
// Second iteration (after tool + steering): model returns final answer
|
|
785
|
+
return {
|
|
786
|
+
message: { role: 'assistant', content: 'done with steering response' },
|
|
787
|
+
finishReason: 'stop',
|
|
788
|
+
};
|
|
789
|
+
},
|
|
790
|
+
};
|
|
791
|
+
const agent = new Agent({ model: model });
|
|
792
|
+
agent.use(ext);
|
|
793
|
+
agent.tool({
|
|
794
|
+
name: 'my_tool',
|
|
795
|
+
parameters: { type: 'object' },
|
|
796
|
+
async execute() {
|
|
797
|
+
// While the tool is executing, inject steering into this turn!
|
|
798
|
+
agent.steer('keep me posted');
|
|
799
|
+
return { toolCallId: 'tc1', content: 'tool output' };
|
|
800
|
+
},
|
|
801
|
+
});
|
|
802
|
+
await agent.run({
|
|
803
|
+
message: 'initial prompt',
|
|
804
|
+
metadata: { session: sessionIdentity('steer-test', '100') },
|
|
805
|
+
});
|
|
806
|
+
const records = ext.getRecords('steer-test');
|
|
807
|
+
// Expected records in strict chronological order:
|
|
808
|
+
// 1. user: 'initial prompt'
|
|
809
|
+
// 2. assistant: 'calling tool' (toolCalls: [tc1])
|
|
810
|
+
// 3. tool: 'tool output' (toolCallId: tc1)
|
|
811
|
+
// 4. user: '[steering] keep me posted'
|
|
812
|
+
// 5. assistant: 'done with steering response'
|
|
813
|
+
expect(records).toHaveLength(5);
|
|
814
|
+
expect(records[0].role).toBe('user');
|
|
815
|
+
expect(records[0].content).toBe('initial prompt');
|
|
816
|
+
expect(records[1].role).toBe('assistant');
|
|
817
|
+
expect(records[1].content).toBe('calling tool');
|
|
818
|
+
expect(records[1].toolCalls).toBeDefined();
|
|
819
|
+
expect(records[2].role).toBe('tool');
|
|
820
|
+
expect(records[2].toolCallId).toBe('tc1');
|
|
821
|
+
expect(records[3].role).toBe('user');
|
|
822
|
+
expect(records[3].content).toBe('[steering] keep me posted');
|
|
823
|
+
expect(records[4].role).toBe('assistant');
|
|
824
|
+
expect(records[4].content).toBe('done with steering response');
|
|
825
|
+
// Verify file on disk matches memory records exactly (no duplicates!)
|
|
826
|
+
const diskRecords = readJsonl('steer-test');
|
|
827
|
+
expect(diskRecords).toHaveLength(5);
|
|
828
|
+
expect(diskRecords.map((r) => r.role)).toEqual([
|
|
829
|
+
'user',
|
|
830
|
+
'assistant',
|
|
831
|
+
'tool',
|
|
832
|
+
'user',
|
|
833
|
+
'assistant',
|
|
834
|
+
]);
|
|
835
|
+
});
|
|
836
|
+
it('buildContext filters out corrupted orphan tool records from existing session files', async () => {
|
|
837
|
+
// Manually simulate a corrupted file with Ronny\'s duplicate tool bug:
|
|
838
|
+
// Record 1: user
|
|
839
|
+
// Record 2: assistant (with tool call)
|
|
840
|
+
// Record 3: tool result
|
|
841
|
+
// Record 4: user (steering)
|
|
842
|
+
// Record 5: assistant (text only, no tool calls)
|
|
843
|
+
// Record 6: DUPLICATE tool result (orphan!)
|
|
844
|
+
const corruptedRecords = [
|
|
845
|
+
{ role: 'user', content: 'scrape site', ts: '1', recordedAt: new Date().toISOString() },
|
|
846
|
+
{
|
|
847
|
+
role: 'assistant',
|
|
848
|
+
content: 'running scraper',
|
|
849
|
+
toolCalls: [{ id: 'call_99', name: 'scraper', arguments: '{}' }],
|
|
850
|
+
ts: '2',
|
|
851
|
+
recordedAt: new Date().toISOString(),
|
|
852
|
+
},
|
|
853
|
+
{
|
|
854
|
+
role: 'tool',
|
|
855
|
+
content: 'scrape result',
|
|
856
|
+
toolCallId: 'call_99',
|
|
857
|
+
name: 'scraper',
|
|
858
|
+
ts: '3',
|
|
859
|
+
recordedAt: new Date().toISOString(),
|
|
860
|
+
},
|
|
861
|
+
{ role: 'user', content: '[steering] update please', ts: '4', recordedAt: new Date().toISOString() },
|
|
862
|
+
{ role: 'assistant', content: 'will do', ts: '5', recordedAt: new Date().toISOString() },
|
|
863
|
+
{
|
|
864
|
+
role: 'tool',
|
|
865
|
+
content: 'scrape result',
|
|
866
|
+
toolCallId: 'call_99',
|
|
867
|
+
name: 'scraper',
|
|
868
|
+
ts: '6',
|
|
869
|
+
recordedAt: new Date().toISOString(),
|
|
870
|
+
},
|
|
871
|
+
];
|
|
872
|
+
const fs = await import('node:fs');
|
|
873
|
+
const filePath = join(tmpDir, 'corrupt_session.jsonl');
|
|
874
|
+
fs.writeFileSync(filePath, corruptedRecords.map((r) => JSON.stringify(r)).join('\n') + '\n');
|
|
875
|
+
// Create new extension instance that loads the corrupted file
|
|
876
|
+
const loadedExt = makeExt({ loadOnStartup: true });
|
|
877
|
+
let seenByModel = [];
|
|
878
|
+
const agent = makeAgent(loadedExt, (msgs) => {
|
|
879
|
+
seenByModel = msgs;
|
|
880
|
+
});
|
|
881
|
+
// Run next turn
|
|
882
|
+
await runTurn(agent, 'what is next?', sessionIdentity('corrupt_session', '7'));
|
|
883
|
+
// The model should NOT see the orphan tool record #6!
|
|
884
|
+
// In the context passed to the model, every tool message must follow an assistant with toolCalls.
|
|
885
|
+
for (let i = 0; i < seenByModel.length; i++) {
|
|
886
|
+
if (seenByModel[i].role === 'tool') {
|
|
887
|
+
const prev = seenByModel[i - 1];
|
|
888
|
+
expect(prev).toBeDefined();
|
|
889
|
+
const isValidPreceding = (prev.role === 'assistant' && prev.toolCalls?.some((tc) => tc.id === seenByModel[i].toolCallId)) ||
|
|
890
|
+
(prev.role === 'tool');
|
|
891
|
+
expect(isValidPreceding).toBe(true);
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
// Specifically, record #6 must have been omitted
|
|
895
|
+
const toolMsgs = seenByModel.filter((m) => m.role === 'tool');
|
|
896
|
+
expect(toolMsgs).toHaveLength(1);
|
|
897
|
+
});
|
|
898
|
+
});
|
|
899
|
+
// ── Auto-summarization & Cache-Preserving Compaction ────────────
|
|
900
|
+
describe('auto-summarization and cache preservation', () => {
|
|
901
|
+
it('auto-summarizes earlier messages using the session model when reaching maxContextMessages', async () => {
|
|
902
|
+
let summarizationCallCount = 0;
|
|
903
|
+
let summarizedPromptText = '';
|
|
904
|
+
const testModel = {
|
|
905
|
+
async generate(req) {
|
|
906
|
+
const lastMsg = req.messages[req.messages.length - 1];
|
|
907
|
+
const text = messageContentToText(lastMsg.content);
|
|
908
|
+
if (req.systemPrompt?.includes('summarizer') || text.includes('summarize')) {
|
|
909
|
+
summarizationCallCount++;
|
|
910
|
+
summarizedPromptText = text;
|
|
911
|
+
return {
|
|
912
|
+
message: { role: 'assistant', content: 'Summarized decisions: files modified and tasks done.' },
|
|
913
|
+
finishReason: 'stop',
|
|
914
|
+
usage: { promptTokens: 10, completionTokens: 5 },
|
|
915
|
+
};
|
|
916
|
+
}
|
|
917
|
+
return {
|
|
918
|
+
message: { role: 'assistant', content: `Reply to: ${text}` },
|
|
919
|
+
finishReason: 'stop',
|
|
920
|
+
usage: { promptTokens: 5, completionTokens: 5 },
|
|
921
|
+
};
|
|
922
|
+
},
|
|
923
|
+
};
|
|
924
|
+
// Set threshold to 6 messages, eviction step to 3 messages
|
|
925
|
+
const ext = createDiskSessionExtension({
|
|
926
|
+
sessionDir: tmpDir,
|
|
927
|
+
maxContextMessages: 6,
|
|
928
|
+
contextEvictionStep: 3,
|
|
929
|
+
model: testModel,
|
|
930
|
+
});
|
|
931
|
+
const agent = new Agent({ model: testModel });
|
|
932
|
+
agent.use(ext);
|
|
933
|
+
// Turn 1: 2 records (user1, assistant1)
|
|
934
|
+
await runTurn(agent, 'message 1', sessionIdentity('compact-test', '1'));
|
|
935
|
+
// Turn 2: 4 records (user2, assistant2)
|
|
936
|
+
await runTurn(agent, 'message 2', sessionIdentity('compact-test', '2'));
|
|
937
|
+
// Turn 3: 6 records (user3, assistant3)
|
|
938
|
+
await runTurn(agent, 'message 3', sessionIdentity('compact-test', '3'));
|
|
939
|
+
expect(summarizationCallCount).toBe(0);
|
|
940
|
+
expect(ext.getRecords('compact-test')).toHaveLength(6);
|
|
941
|
+
// Turn 4: history is at 6 records (>= maxContextMessages).
|
|
942
|
+
// Auto-summarization triggers in beforeTurn!
|
|
943
|
+
let seenInTurn4 = [];
|
|
944
|
+
const trackingAgent = new Agent({
|
|
945
|
+
model: {
|
|
946
|
+
async generate(req) {
|
|
947
|
+
const lastMsg = req.messages[req.messages.length - 1];
|
|
948
|
+
const text = messageContentToText(lastMsg.content);
|
|
949
|
+
if (req.systemPrompt?.includes('summarizer') || text.includes('summarize')) {
|
|
950
|
+
return testModel.generate(req);
|
|
951
|
+
}
|
|
952
|
+
seenInTurn4 = req.messages;
|
|
953
|
+
return {
|
|
954
|
+
message: { role: 'assistant', content: 'Turn 4 reply' },
|
|
955
|
+
finishReason: 'stop',
|
|
956
|
+
usage: { promptTokens: 5, completionTokens: 5 },
|
|
957
|
+
};
|
|
958
|
+
},
|
|
959
|
+
},
|
|
960
|
+
});
|
|
961
|
+
trackingAgent.use(ext);
|
|
962
|
+
const res4 = await runTurn(trackingAgent, 'message 4', sessionIdentity('compact-test', '4'));
|
|
963
|
+
// 1. Summarization was invoked
|
|
964
|
+
expect(summarizationCallCount).toBe(1);
|
|
965
|
+
expect(summarizedPromptText).toContain('message 1');
|
|
966
|
+
// 2. The human's response does NOT leak any compaction text
|
|
967
|
+
expect(res4.message).toBe('Turn 4 reply');
|
|
968
|
+
// 3. Immediately before the model acts, the model receives the notification
|
|
969
|
+
const noticeMsg = seenInTurn4.find((m) => m.role === 'system' && messageContentToText(m.content).includes('automatically compacted into the summary above'));
|
|
970
|
+
expect(noticeMsg).toBeDefined();
|
|
971
|
+
// 4. The context begins with the summary record
|
|
972
|
+
const summaryMsg = seenInTurn4.find((m) => messageContentToText(m.content).includes('Summarized decisions'));
|
|
973
|
+
expect(summaryMsg).toBeDefined();
|
|
974
|
+
});
|
|
975
|
+
it('preserves prompt cache prefix stability across consecutive turns between compactions', async () => {
|
|
976
|
+
const prefixesSeen = [];
|
|
977
|
+
const model = {
|
|
978
|
+
async generate(req) {
|
|
979
|
+
if (req.systemPrompt?.includes('summarizer')) {
|
|
980
|
+
return {
|
|
981
|
+
message: { role: 'assistant', content: 'Consolidated summary' },
|
|
982
|
+
finishReason: 'stop',
|
|
983
|
+
usage: { promptTokens: 10, completionTokens: 5 },
|
|
984
|
+
};
|
|
985
|
+
}
|
|
986
|
+
// Record the first message in the history prefix
|
|
987
|
+
prefixesSeen.push(messageContentToText(req.messages[0].content));
|
|
988
|
+
return {
|
|
989
|
+
message: { role: 'assistant', content: 'ok' },
|
|
990
|
+
finishReason: 'stop',
|
|
991
|
+
usage: { promptTokens: 5, completionTokens: 5 },
|
|
992
|
+
};
|
|
993
|
+
},
|
|
994
|
+
};
|
|
995
|
+
const ext = createDiskSessionExtension({
|
|
996
|
+
sessionDir: tmpDir,
|
|
997
|
+
maxContextMessages: 10,
|
|
998
|
+
contextEvictionStep: 5,
|
|
999
|
+
model,
|
|
1000
|
+
});
|
|
1001
|
+
const agent = new Agent({ model });
|
|
1002
|
+
agent.use(ext);
|
|
1003
|
+
// Run 5 turns (records grow from 2 to 10)
|
|
1004
|
+
for (let i = 1; i <= 5; i++) {
|
|
1005
|
+
await runTurn(agent, `turn ${i}`, sessionIdentity('cache-test', `${i}`));
|
|
1006
|
+
}
|
|
1007
|
+
// During turns 1-5, all turns share the exact same first message ("turn 1")
|
|
1008
|
+
for (let i = 0; i < 5; i++) {
|
|
1009
|
+
expect(prefixesSeen[i]).toBe('turn 1');
|
|
1010
|
+
}
|
|
1011
|
+
// Turn 6 triggers auto-summarization because records count is 10 (>= maxContextMessages)
|
|
1012
|
+
await runTurn(agent, 'turn 6', sessionIdentity('cache-test', '6'));
|
|
1013
|
+
// Turn 7 and Turn 8: history has been compacted to a summary record at index 0.
|
|
1014
|
+
// Both turn 7 and turn 8 must start with the exact same summary record!
|
|
1015
|
+
await runTurn(agent, 'turn 7', sessionIdentity('cache-test', '7'));
|
|
1016
|
+
await runTurn(agent, 'turn 8', sessionIdentity('cache-test', '8'));
|
|
1017
|
+
const prefix7 = prefixesSeen[6];
|
|
1018
|
+
const prefix8 = prefixesSeen[7];
|
|
1019
|
+
expect(prefix7).toContain('Consolidated summary');
|
|
1020
|
+
expect(prefix8).toBe(prefix7); // 100% prefix cache hit!
|
|
1021
|
+
});
|
|
1022
|
+
it('backs off context limit (e.g. 100 -> 50 -> 25) when a context length error occurs', async () => {
|
|
1023
|
+
let callCount = 0;
|
|
1024
|
+
const model = {
|
|
1025
|
+
async generate(req) {
|
|
1026
|
+
callCount++;
|
|
1027
|
+
if (req.systemPrompt?.includes('summarizer')) {
|
|
1028
|
+
return {
|
|
1029
|
+
message: { role: 'assistant', content: 'Compact backoff summary' },
|
|
1030
|
+
finishReason: 'stop',
|
|
1031
|
+
usage: { promptTokens: 5, completionTokens: 5 },
|
|
1032
|
+
};
|
|
1033
|
+
}
|
|
1034
|
+
if (callCount === 3) {
|
|
1035
|
+
// Throw a context length error on turn 3
|
|
1036
|
+
throw new Error('400 Maximum context length exceeded: prompt too long');
|
|
1037
|
+
}
|
|
1038
|
+
return {
|
|
1039
|
+
message: { role: 'assistant', content: 'ok' },
|
|
1040
|
+
finishReason: 'stop',
|
|
1041
|
+
usage: { promptTokens: 5, completionTokens: 5 },
|
|
1042
|
+
};
|
|
1043
|
+
},
|
|
1044
|
+
};
|
|
1045
|
+
const ext = createDiskSessionExtension({
|
|
1046
|
+
sessionDir: tmpDir,
|
|
1047
|
+
maxContextMessages: 100,
|
|
1048
|
+
fallbackThresholds: [100, 50, 25],
|
|
1049
|
+
model,
|
|
1050
|
+
});
|
|
1051
|
+
const agent = new Agent({
|
|
1052
|
+
model,
|
|
1053
|
+
errorPolicy: 'fallback',
|
|
1054
|
+
});
|
|
1055
|
+
agent.use(ext);
|
|
1056
|
+
expect(ext.getEffectiveLimit('backoff-session')).toBe(100);
|
|
1057
|
+
// Turn 1 & 2 succeed
|
|
1058
|
+
await runTurn(agent, 'msg 1', sessionIdentity('backoff-session', '1'));
|
|
1059
|
+
await runTurn(agent, 'msg 2', sessionIdentity('backoff-session', '2'));
|
|
1060
|
+
// Turn 3 throws context length error
|
|
1061
|
+
const res3 = await runTurn(agent, 'msg 3', sessionIdentity('backoff-session', '3'));
|
|
1062
|
+
expect(res3.finishReason).toBe('error');
|
|
1063
|
+
// The extension detected the context error and backed off to 50
|
|
1064
|
+
expect(ext.getEffectiveLimit('backoff-session')).toBe(50);
|
|
1065
|
+
});
|
|
1066
|
+
it('uses the agent configured model automatically if not explicitly provided in config', async () => {
|
|
1067
|
+
let summarizerCalled = false;
|
|
1068
|
+
const model = {
|
|
1069
|
+
async generate(req) {
|
|
1070
|
+
if (req.systemPrompt?.includes('summarizer')) {
|
|
1071
|
+
summarizerCalled = true;
|
|
1072
|
+
return {
|
|
1073
|
+
message: { role: 'assistant', content: 'Auto summary using agent model' },
|
|
1074
|
+
finishReason: 'stop',
|
|
1075
|
+
usage: { promptTokens: 5, completionTokens: 5 },
|
|
1076
|
+
};
|
|
1077
|
+
}
|
|
1078
|
+
return {
|
|
1079
|
+
message: { role: 'assistant', content: 'agent reply' },
|
|
1080
|
+
finishReason: 'stop',
|
|
1081
|
+
usage: { promptTokens: 5, completionTokens: 5 },
|
|
1082
|
+
};
|
|
1083
|
+
},
|
|
1084
|
+
};
|
|
1085
|
+
// Notice: NO model passed into createDiskSessionExtension
|
|
1086
|
+
const ext = createDiskSessionExtension({
|
|
1087
|
+
sessionDir: tmpDir,
|
|
1088
|
+
maxContextMessages: 4,
|
|
1089
|
+
contextEvictionStep: 2,
|
|
1090
|
+
});
|
|
1091
|
+
const agent = new Agent({ model });
|
|
1092
|
+
agent.use(ext);
|
|
1093
|
+
await runTurn(agent, 'msg 1', sessionIdentity('agent-model-test', '1'));
|
|
1094
|
+
await runTurn(agent, 'msg 2', sessionIdentity('agent-model-test', '2'));
|
|
1095
|
+
// Reached 4 messages, turn 3 triggers summarizer
|
|
1096
|
+
await runTurn(agent, 'msg 3', sessionIdentity('agent-model-test', '3'));
|
|
1097
|
+
expect(summarizerCalled).toBe(true);
|
|
1098
|
+
});
|
|
1099
|
+
});
|
|
671
1100
|
});
|
|
672
1101
|
//# sourceMappingURL=extension.test.js.map
|