@e2edev/e2e 0.10.0 → 0.12.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/README.md +14 -8
- package/dist/agent/act-validation.d.ts +2 -0
- package/dist/agent/act-validation.d.ts.map +1 -1
- package/dist/agent/act-validation.js +1 -1
- package/dist/agent/act-validation.js.map +1 -1
- package/dist/agent/act.d.ts +30 -2
- package/dist/agent/act.d.ts.map +1 -1
- package/dist/agent/act.js +18 -4
- package/dist/agent/act.js.map +1 -1
- package/dist/agent/ai-sdk.d.ts +2 -2
- package/dist/agent/ai-sdk.d.ts.map +1 -1
- package/dist/agent/ai-sdk.js +3 -4
- package/dist/agent/ai-sdk.js.map +1 -1
- package/dist/agent/default-agent.d.ts +33 -9
- package/dist/agent/default-agent.d.ts.map +1 -1
- package/dist/agent/default-agent.js +46 -31
- package/dist/agent/default-agent.js.map +1 -1
- package/dist/agent/error.d.ts.map +1 -1
- package/dist/agent/error.js +1 -0
- package/dist/agent/error.js.map +1 -1
- package/dist/agent/executor.d.ts +13 -0
- package/dist/agent/executor.d.ts.map +1 -1
- package/dist/agent/executor.js.map +1 -1
- package/dist/agent/interactive-step.d.ts +38 -0
- package/dist/agent/interactive-step.d.ts.map +1 -0
- package/dist/agent/interactive-step.js +131 -0
- package/dist/agent/interactive-step.js.map +1 -0
- package/dist/agent/model/adapter.d.ts +3 -0
- package/dist/agent/model/adapter.d.ts.map +1 -1
- package/dist/agent/model/adapter.js.map +1 -1
- package/dist/agent/model/overflow.d.ts +20 -0
- package/dist/agent/model/overflow.d.ts.map +1 -0
- package/dist/agent/model/overflow.js +82 -0
- package/dist/agent/model/overflow.js.map +1 -0
- package/dist/agent/model/prompt-cache.d.ts +47 -0
- package/dist/agent/model/prompt-cache.d.ts.map +1 -0
- package/dist/agent/model/prompt-cache.js +78 -0
- package/dist/agent/model/prompt-cache.js.map +1 -0
- package/dist/agent/model/sdk.d.ts +41 -24
- package/dist/agent/model/sdk.d.ts.map +1 -1
- package/dist/agent/model/sdk.js +64 -91
- package/dist/agent/model/sdk.js.map +1 -1
- package/dist/agent/model/tool-choice.d.ts +21 -0
- package/dist/agent/model/tool-choice.d.ts.map +1 -0
- package/dist/agent/model/tool-choice.js +49 -0
- package/dist/agent/model/tool-choice.js.map +1 -0
- package/dist/agent/primitives.d.ts.map +1 -1
- package/dist/agent/primitives.js +2 -1
- package/dist/agent/primitives.js.map +1 -1
- package/dist/agent/public.d.ts +1 -1
- package/dist/agent/public.d.ts.map +1 -1
- package/dist/agent/public.js.map +1 -1
- package/dist/agent/screen-update.d.ts +8 -3
- package/dist/agent/screen-update.d.ts.map +1 -1
- package/dist/agent/screen-update.js +18 -5
- package/dist/agent/screen-update.js.map +1 -1
- package/dist/agent/tool-loop.d.ts +4 -4
- package/dist/agent/tool-loop.d.ts.map +1 -1
- package/dist/agent/tool-loop.js +241 -48
- package/dist/agent/tool-loop.js.map +1 -1
- package/dist/agent/tool-output.d.ts +31 -0
- package/dist/agent/tool-output.d.ts.map +1 -0
- package/dist/agent/tool-output.js +60 -0
- package/dist/agent/tool-output.js.map +1 -0
- package/dist/agent/tool.d.ts +9 -3
- package/dist/agent/tool.d.ts.map +1 -1
- package/dist/agent/tool.js +2 -2
- package/dist/agent/tool.js.map +1 -1
- package/dist/agent/usage.d.ts +7 -0
- package/dist/agent/usage.d.ts.map +1 -1
- package/dist/agent/usage.js +11 -0
- package/dist/agent/usage.js.map +1 -1
- package/dist/cli/docs-url.d.ts +1 -1
- package/dist/cli/docs-url.d.ts.map +1 -1
- package/dist/cli/docs-url.js +1 -1
- package/dist/cli/docs-url.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +139 -35
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/engine-versions.json +1 -1
- package/dist/cli/init/engines.d.ts +17 -16
- package/dist/cli/init/engines.d.ts.map +1 -1
- package/dist/cli/init/engines.js +26 -26
- package/dist/cli/init/engines.js.map +1 -1
- package/dist/cli/init/gateways.d.ts +22 -0
- package/dist/cli/init/gateways.d.ts.map +1 -0
- package/dist/cli/init/gateways.js +50 -0
- package/dist/cli/init/gateways.js.map +1 -0
- package/dist/cli/init/mcp-config.d.ts +31 -0
- package/dist/cli/init/mcp-config.d.ts.map +1 -0
- package/dist/cli/init/mcp-config.js +72 -0
- package/dist/cli/init/mcp-config.js.map +1 -0
- package/dist/cli/init/scaffold.d.ts +8 -2
- package/dist/cli/init/scaffold.d.ts.map +1 -1
- package/dist/cli/init/scaffold.js +22 -11
- package/dist/cli/init/scaffold.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +109 -29
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/mcp.d.ts +15 -0
- package/dist/cli/mcp.d.ts.map +1 -0
- package/dist/cli/mcp.js +63 -0
- package/dist/cli/mcp.js.map +1 -0
- package/dist/collect/collect.d.ts +7 -0
- package/dist/collect/collect.d.ts.map +1 -1
- package/dist/collect/collect.js +16 -0
- package/dist/collect/collect.js.map +1 -1
- package/dist/collect/registry.d.ts.map +1 -1
- package/dist/collect/registry.js +33 -6
- package/dist/collect/registry.js.map +1 -1
- package/dist/collect/select.d.ts +9 -2
- package/dist/collect/select.d.ts.map +1 -1
- package/dist/collect/select.js +57 -11
- package/dist/collect/select.js.map +1 -1
- package/dist/config/agent.d.ts +13 -32
- package/dist/config/agent.d.ts.map +1 -1
- package/dist/config/agent.js +32 -123
- package/dist/config/agent.js.map +1 -1
- package/dist/config/resolve.d.ts +8 -5
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +11 -9
- package/dist/config/resolve.js.map +1 -1
- package/dist/credentials.d.ts +6 -0
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +9 -0
- package/dist/credentials.js.map +1 -1
- package/dist/explore/body.d.ts +36 -0
- package/dist/explore/body.d.ts.map +1 -0
- package/dist/explore/body.js +168 -0
- package/dist/explore/body.js.map +1 -0
- package/dist/explore/executor.d.ts +25 -0
- package/dist/explore/executor.d.ts.map +1 -0
- package/dist/explore/executor.js +86 -0
- package/dist/explore/executor.js.map +1 -0
- package/dist/explore/index.d.ts +64 -0
- package/dist/explore/index.d.ts.map +1 -0
- package/dist/explore/index.js +185 -0
- package/dist/explore/index.js.map +1 -0
- package/dist/explore/plan.d.ts +74 -0
- package/dist/explore/plan.d.ts.map +1 -0
- package/dist/explore/plan.js +149 -0
- package/dist/explore/plan.js.map +1 -0
- package/dist/explore/reporter.d.ts +11 -0
- package/dist/explore/reporter.d.ts.map +1 -0
- package/dist/explore/reporter.js +54 -0
- package/dist/explore/reporter.js.map +1 -0
- package/dist/explore/state.d.ts +58 -0
- package/dist/explore/state.d.ts.map +1 -0
- package/dist/explore/state.js +147 -0
- package/dist/explore/state.js.map +1 -0
- package/dist/internal/ai-trace.d.ts +2 -0
- package/dist/internal/ai-trace.d.ts.map +1 -1
- package/dist/internal/ai-trace.js +3 -0
- package/dist/internal/ai-trace.js.map +1 -1
- package/dist/internal/ids.d.ts +2 -2
- package/dist/internal/ids.d.ts.map +1 -1
- package/dist/internal/ids.js +3 -3
- package/dist/internal/ids.js.map +1 -1
- package/dist/internal/package-manager.d.ts +4 -0
- package/dist/internal/package-manager.d.ts.map +1 -1
- package/dist/internal/package-manager.js +26 -0
- package/dist/internal/package-manager.js.map +1 -1
- package/dist/mcp/catalog.d.ts +50 -0
- package/dist/mcp/catalog.d.ts.map +1 -0
- package/dist/mcp/catalog.js +172 -0
- package/dist/mcp/catalog.js.map +1 -0
- package/dist/mcp/config.d.ts +11 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +16 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/server.d.ts +29 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +86 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/session.d.ts +68 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +317 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/mcp/tools.d.ts +77 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +179 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/report/build.d.ts +61 -0
- package/dist/report/build.d.ts.map +1 -1
- package/dist/report/build.js +13 -2
- package/dist/report/build.js.map +1 -1
- package/dist/report/debug-steps.d.ts.map +1 -1
- package/dist/report/debug-steps.js +15 -0
- package/dist/report/debug-steps.js.map +1 -1
- package/dist/report/format.d.ts +30 -1
- package/dist/report/format.d.ts.map +1 -1
- package/dist/report/format.js +57 -3
- package/dist/report/format.js.map +1 -1
- package/dist/report/junit.d.ts.map +1 -1
- package/dist/report/junit.js +4 -1
- package/dist/report/junit.js.map +1 -1
- package/dist/report/list.d.ts +10 -1
- package/dist/report/list.d.ts.map +1 -1
- package/dist/report/list.js +35 -13
- package/dist/report/list.js.map +1 -1
- package/dist/run/events.d.ts +13 -4
- package/dist/run/events.d.ts.map +1 -1
- package/dist/run/events.js.map +1 -1
- package/dist/run/execute.d.ts +2 -2
- package/dist/run/execute.d.ts.map +1 -1
- package/dist/run/execute.js +19 -14
- package/dist/run/execute.js.map +1 -1
- package/dist/run/fixtures.d.ts +10 -4
- package/dist/run/fixtures.d.ts.map +1 -1
- package/dist/run/fixtures.js +23 -23
- package/dist/run/fixtures.js.map +1 -1
- package/dist/run/in-process.d.ts +8 -0
- package/dist/run/in-process.d.ts.map +1 -1
- package/dist/run/in-process.js +7 -6
- package/dist/run/in-process.js.map +1 -1
- package/dist/run/provision.d.ts +51 -0
- package/dist/run/provision.d.ts.map +1 -0
- package/dist/run/provision.js +94 -0
- package/dist/run/provision.js.map +1 -0
- package/dist/run/records.d.ts +4 -0
- package/dist/run/records.d.ts.map +1 -1
- package/dist/run/runner.d.ts +25 -3
- package/dist/run/runner.d.ts.map +1 -1
- package/dist/run/runner.js +38 -81
- package/dist/run/runner.js.map +1 -1
- package/dist/run/scheduler.d.ts +5 -2
- package/dist/run/scheduler.d.ts.map +1 -1
- package/dist/run/scheduler.js +13 -10
- package/dist/run/scheduler.js.map +1 -1
- package/dist/run/serial.d.ts +1 -1
- package/dist/run/serial.d.ts.map +1 -1
- package/dist/run/serial.js +7 -2
- package/dist/run/serial.js.map +1 -1
- package/dist/run/standalone.d.ts +63 -0
- package/dist/run/standalone.d.ts.map +1 -0
- package/dist/run/standalone.js +152 -0
- package/dist/run/standalone.js.map +1 -0
- package/dist/run/steps.d.ts +7 -0
- package/dist/run/steps.d.ts.map +1 -1
- package/dist/run/steps.js.map +1 -1
- package/dist/run/units.d.ts +6 -3
- package/dist/run/units.d.ts.map +1 -1
- package/dist/run/units.js +0 -0
- package/dist/run/units.js.map +1 -1
- package/dist/run/worker/entry.js +2 -2
- package/dist/run/worker/entry.js.map +1 -1
- package/dist/run/worker/protocol.d.ts +5 -0
- package/dist/run/worker/protocol.d.ts.map +1 -1
- package/dist/run/worker/protocol.js.map +1 -1
- package/dist/run/worker/session.d.ts +3 -4
- package/dist/run/worker/session.d.ts.map +1 -1
- package/dist/run/worker/session.js +5 -4
- package/dist/run/worker/session.js.map +1 -1
- package/dist/run/worker-models.d.ts +4 -4
- package/dist/run/worker-models.js +6 -13
- package/dist/run/worker-models.js.map +1 -1
- package/dist/telemetry/events.d.ts.map +1 -1
- package/dist/telemetry/events.js +17 -2
- package/dist/telemetry/events.js.map +1 -1
- package/dist/types.d.ts +20 -20
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -6
- package/skills/e2e/SKILL.md +16 -6
- package/skills/e2e/references/agent.md +21 -16
- package/skills/e2e/references/debugging.md +2 -1
- package/skills/e2e/references/explore.md +83 -0
- package/skills/e2e/references/mcp.md +88 -0
- package/skills/e2e/references/running.md +7 -5
- package/skills/e2e/references/setup.md +17 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-choice.js","sourceRoot":"","sources":["../../../src/agent/model/tool-choice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,sBAAsB,GAAsB;IAChD,6BAA6B,EAAE,YAAY;IAC3C,wDAAwD,EAAE,4BAA4B;IACtF,8DAA8D,EAAE,UAAU;IAC1E,4CAA4C,EAAE,UAAU;CACzD,CAAC;AAEF,uEAAuE;AACvE,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,eAAe,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrG,IAAI,kBAAkB,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7C,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC9C,MAAM,OAAO,GAAG,OAAmD,CAAC;QACpE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,MAAM,GAAG,KAA8F,CAAC;IAC9G,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC;IAClD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,IAAI,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAChF,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAC/C,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACnG,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/agent/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpD,OAAO,EAAsC,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE/G,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA2CrD,wEAAwE;AACxE,eAAO,MAAM,aAAa,umBAG4N,CAAC;AAcvP,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,uEAAuE;IACvE,OAAO,IAAI,WAAW,GAAG,SAAS,CAAC;IACnC,yEAAyE;IACzE,SAAS,IAAI,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CA4C/C;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAuJT;AAED,+EAA+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,WAAW,IAAI,IAAI,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC,GAAG,IAAI,CAAC;CAChF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,CAAC,EAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/agent/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpD,OAAO,EAAsC,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE/G,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA2CrD,wEAAwE;AACxE,eAAO,MAAM,aAAa,umBAG4N,CAAC;AAcvP,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,uEAAuE;IACvE,OAAO,IAAI,WAAW,GAAG,SAAS,CAAC;IACnC,yEAAyE;IACzE,SAAS,IAAI,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CA4C/C;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAuJT;AAED,+EAA+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,WAAW,IAAI,IAAI,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC,GAAG,IAAI,CAAC;CAChF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,CAAC,EAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE,gBAAgB,CAoBlB"}
|
package/dist/agent/primitives.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { z } from 'zod';
|
|
12
12
|
import { isRuntimeHardStop, BLOCKABLE_CODES } from './executor.js';
|
|
13
|
-
import { readCost } from './model/sdk.js';
|
|
13
|
+
import { cacheTokenFields, readCost } from './model/sdk.js';
|
|
14
14
|
import { ScreenPresenter } from './screen-update.js';
|
|
15
15
|
/** Codes the model may pick when concluding; runtime codes are runtime-assigned. */
|
|
16
16
|
const MODEL_ERROR_CODES = [
|
|
@@ -254,6 +254,7 @@ export function trackModelCalls(context, model) {
|
|
|
254
254
|
context.budgets.recordModelCall({
|
|
255
255
|
...(step.usage.inputTokens === undefined ? {} : { inputTokens: step.usage.inputTokens }),
|
|
256
256
|
...(step.usage.outputTokens === undefined ? {} : { outputTokens: step.usage.outputTokens }),
|
|
257
|
+
...cacheTokenFields(step.usage),
|
|
257
258
|
startedAt: new Date(turnStartedMs).toISOString(),
|
|
258
259
|
durationMs: Date.now() - turnStartedMs,
|
|
259
260
|
...(typeof model?.provider === 'string' ? { provider: model.provider } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/agent/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAA8C,MAAM,eAAe,CAAC;AAC/G,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/agent/primitives.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/public.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* `BLOCKABLE_CODES` — lives on the main `e2e` entrypoint, so a hand-rolled
|
|
7
7
|
* executor needs no import from here (and no AI SDK) at all.
|
|
8
8
|
*/
|
|
9
|
-
export { createAgent, type CreateAgentOptions } from './default-agent.ts';
|
|
9
|
+
export { createAgent, type CreateAgentOptions, type DefaultAgent } from './default-agent.ts';
|
|
10
10
|
export { createToolLoopExecutor, type ToolLoopExecutorOptions, type PreparedTurn, type PreparedMessages, type ToolLoopHelpers, } from './tool-loop.ts';
|
|
11
11
|
export { defineTool, getToolContext, isDefinedTool, toolAppliesTo, type DefinedTool, type ToolAnnotations, } from './tool.ts';
|
|
12
12
|
export { AgentError, isAgentError } from './error.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/agent/public.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/agent/public.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/agent/public.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/agent/public.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/agent/public.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAA8C,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EACL,sBAAsB,GAKvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,aAAa,GAGd,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -37,11 +37,16 @@ export declare class ScreenPresenter {
|
|
|
37
37
|
*/
|
|
38
38
|
update(observation: ExecutorObservation, options?: ScreenUpdateOptions): string;
|
|
39
39
|
}
|
|
40
|
+
export interface CompactScreenHistoryOptions {
|
|
41
|
+
/** Stale full-screen bytes tolerated before elision; defaults to the cache-friendly budget. */
|
|
42
|
+
readonly keepStaleBytes?: number;
|
|
43
|
+
}
|
|
40
44
|
/**
|
|
41
45
|
* Elides full screens the transcript no longer needs: every full screen but
|
|
42
46
|
* the newest few is reduced to its lead and a notice, in the opening prompt
|
|
43
|
-
* and in tool results alike
|
|
44
|
-
*
|
|
47
|
+
* and in tool results alike, once the stale screens together outgrow the
|
|
48
|
+
* budget. Diffs are never touched. Returns the input array unchanged when
|
|
49
|
+
* nothing qualifies, so the caller can skip the override.
|
|
45
50
|
*/
|
|
46
|
-
export declare function compactScreenHistory(messages: ModelMessage[]): ModelMessage[];
|
|
51
|
+
export declare function compactScreenHistory(messages: ModelMessage[], options?: CompactScreenHistoryOptions): ModelMessage[];
|
|
47
52
|
//# sourceMappingURL=screen-update.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen-update.d.ts","sourceRoot":"","sources":["../../src/agent/screen-update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AA6BzD,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7C;AAED,+EAA+E;AAC/E,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAA0B;IAEvC,sCAAsC;IACtC,OAAO,CAAC,WAAW,EAAE,mBAAmB,GAAG,MAAM,CAGhD;IAED;;;OAGG;IACH,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,CAsBlF;CACF;
|
|
1
|
+
{"version":3,"file":"screen-update.d.ts","sourceRoot":"","sources":["../../src/agent/screen-update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AA6BzD,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7C;AAED,+EAA+E;AAC/E,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAA0B;IAEvC,sCAAsC;IACtC,OAAO,CAAC,WAAW,EAAE,mBAAmB,GAAG,MAAM,CAGhD;IAED;;;OAGG;IACH,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,CAsBlF;CACF;AAuGD,MAAM,WAAW,2BAA2B;IAC1C,+FAA+F;IAC/F,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,GAAE,2BAAgC,GACxC,YAAY,EAAE,CAgChB"}
|
|
@@ -150,17 +150,30 @@ function diffScreens(previous, next) {
|
|
|
150
150
|
}
|
|
151
151
|
return lines;
|
|
152
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Bytes of superseded full screens a transcript carries before they are
|
|
155
|
+
* elided. Rewriting an earlier message changes the request prefix, and the
|
|
156
|
+
* provider's prompt cache serves only an unchanged prefix, so a stale screen
|
|
157
|
+
* that still fits under this budget stays verbatim: re-reading it from the
|
|
158
|
+
* cache costs a tenth of sending its replacement, and the elision is then
|
|
159
|
+
* one batch rather than one rewrite per turn. A two-turn step never elides.
|
|
160
|
+
*/
|
|
161
|
+
const KEEP_STALE_SCREEN_BYTES = 32 * 1024;
|
|
153
162
|
/**
|
|
154
163
|
* Elides full screens the transcript no longer needs: every full screen but
|
|
155
164
|
* the newest few is reduced to its lead and a notice, in the opening prompt
|
|
156
|
-
* and in tool results alike
|
|
157
|
-
*
|
|
165
|
+
* and in tool results alike, once the stale screens together outgrow the
|
|
166
|
+
* budget. Diffs are never touched. Returns the input array unchanged when
|
|
167
|
+
* nothing qualifies, so the caller can skip the override.
|
|
158
168
|
*/
|
|
159
|
-
export function compactScreenHistory(messages) {
|
|
160
|
-
const
|
|
161
|
-
let stale =
|
|
169
|
+
export function compactScreenHistory(messages, options = {}) {
|
|
170
|
+
const screens = messages.flatMap((message) => screenParts(message).filter((text) => text !== undefined));
|
|
171
|
+
let stale = screens.length - FULL_SCREEN_PRESERVE_COUNT;
|
|
162
172
|
if (stale <= 0)
|
|
163
173
|
return messages;
|
|
174
|
+
const staleBytes = screens.slice(0, stale).reduce((bytes, text) => bytes + Buffer.byteLength(text, 'utf8'), 0);
|
|
175
|
+
if (staleBytes <= (options.keepStaleBytes ?? KEEP_STALE_SCREEN_BYTES))
|
|
176
|
+
return messages;
|
|
164
177
|
return messages.map((message) => {
|
|
165
178
|
if (stale <= 0)
|
|
166
179
|
return message;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen-update.js","sourceRoot":"","sources":["../../src/agent/screen-update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH;;;;GAIG;AACH,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAErC,uEAAuE;AACvE,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,6EAA6E;AAC7E,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,gFAAgF;AAChF,MAAM,mBAAmB,GAAG,4BAA4B,CAAC;AAyBzD,+EAA+E;AAC/E,MAAM,OAAO,eAAe;IAClB,KAAK,CAA0B;IAEvC,sCAAsC;IACtC,OAAO,CAAC,WAAgC;QACtC,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QACtC,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,WAAgC,EAAE,OAAO,GAAwB,EAAE;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,MAAM,CAAC;QACrE,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,GAAG,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,6EAA6E;QAC7E,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YAC5C,OAAO,GAAG,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,EAAE,CAAC;QACpG,CAAC;QACD,IAAI,OAAO,IAAI,cAAc,IAAI,OAAO,GAAG,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC9E,OAAO,GAAG,IAAI,mDAAmD,QAAQ,CAAC,QAAQ,KAAK,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACnH,CAAC;QACD,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS;YACrC,CAAC,CAAC,6JAA6J;YAC/J,CAAC,CAAC,4EAA4E,CAAC;QACjF,OAAO;YACL,GAAG,IAAI,iCAAiC,QAAQ,CAAC,QAAQ,kBAAkB,WAAW,CAAC,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,cAAc,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;YACtM,GAAG,IAAI;SACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF;AAED,+EAA+E;AAC/E,SAAS,cAAc,CAAC,IAAuB;IAC7C,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAClG,MAAM,MAAM,GAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAW;SACtD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAU,CAAC;SAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SACtB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;SAC1C,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3D,CAAC;AAED,gEAAgE;AAChE,SAAS,UAAU,CAAC,WAAgC;IAClD,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;IAC7C,OAAO,4BAA4B,WAAW,CAAC,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,aAAa,WAAW,CAAC,IAAI,EAAE,CAAC;AAC3I,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,WAAgC,EAAE,cAAuB;IAC/F,MAAM,MAAM,GAAG,2BAA2B,WAAW,CAAC,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;IACjG,OAAO,cAAc;QACnB,CAAC,CAAC,gEAAgE,MAAM,kJAAkJ;QAC1N,CAAC,CAAC,mCAAmC,KAAK,KAAK,MAAM,iCAAiC,CAAC;AAC3F,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAgC;IACxD,OAAO,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,WAAW,CAAC,IAAI,EAAE,CAAC;AAC5E,CAAC;AAED,gFAAgF;AAChF,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAc,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,WAAgC;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,EAAE,KAAK,SAAS;YAAE,SAAS;QAC/B,yEAAyE;QACzE,qEAAqE;QACrE,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC;AAC7G,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAAC,QAAqB,EAAE,IAAiB;IAC3D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,EAAE,KAAK,SAAS;YAAE,SAAS;QAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,UAAU,MAAM,GAAG,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,0EAA0E;IAC1E,2EAA2E;IAC3E,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"screen-update.js","sourceRoot":"","sources":["../../src/agent/screen-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,11 +18,11 @@ import { type StepExecutor, type StepExecutorContext } from './executor.ts';
|
|
|
18
18
|
/** Loop services the executor's tool bodies run under. */
|
|
19
19
|
export interface ToolLoopHelpers {
|
|
20
20
|
/**
|
|
21
|
-
* Runs one
|
|
22
|
-
*
|
|
23
|
-
*
|
|
21
|
+
* Runs one tool body under loop policy: nothing executes once the step is
|
|
22
|
+
* concluding, a runtime hard stop ends the loop, and every other failure
|
|
23
|
+
* goes back to the model as text it can react to, named by `label`.
|
|
24
24
|
*/
|
|
25
|
-
guard(body: () => Promise<string
|
|
25
|
+
guard<Value>(body: () => Promise<Value>, label?: string): Promise<Value | string>;
|
|
26
26
|
/** True once a verdict or hard stop landed; late tool calls should no-op. */
|
|
27
27
|
concluding(): boolean;
|
|
28
28
|
/** Records a runtime hard stop (budget/timeout/cancel) that ends the loop. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-loop.d.ts","sourceRoot":"","sources":["../../src/agent/tool-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAc,OAAO,EAAE,MAAM,IAAI,CAAC;AAC3E,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-loop.d.ts","sourceRoot":"","sources":["../../src/agent/tool-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAc,OAAO,EAAE,MAAM,IAAI,CAAC;AAC3E,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMnD,OAAO,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AACtD,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAEzB,MAAM,eAAe,CAAC;AAiDvB,0DAA0D;AAC1D,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IAClF,6EAA6E;IAC7E,UAAU,IAAI,OAAO,CAAC;IACtB,8EAA8E;IAC9E,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC;IACpF;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,MAAM,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC,CAAC;IACnH,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CACzB,QAAQ,EAAE,YAAY,EAAE,EACxB,IAAI,EAAE,YAAY,KACf,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;CACnD;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,EAAE,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9G,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,YAAY,CAwBrF"}
|
package/dist/agent/tool-loop.js
CHANGED
|
@@ -14,6 +14,10 @@ import { asSdkLanguageModel } from '../config/agent.js';
|
|
|
14
14
|
import { loadAiSdk } from './ai-sdk.js';
|
|
15
15
|
import { withHint } from '../internal/errors.js';
|
|
16
16
|
import { credentialHint, isAbort, TRANSPORT_RETRIES } from './model/sdk.js';
|
|
17
|
+
import { isContextOverflow } from './model/overflow.js';
|
|
18
|
+
import { isForcedToolChoiceRejected } from './model/tool-choice.js';
|
|
19
|
+
import { promptCacheHints } from './model/prompt-cache.js';
|
|
20
|
+
import { compactScreenHistory } from './screen-update.js';
|
|
17
21
|
import { AgentError, isAgentError } from './error.js';
|
|
18
22
|
import { RUNTIME_CODES, } from './executor.js';
|
|
19
23
|
import { createVerdictTool, trackModelCalls, VERDICT_RULES } from './primitives.js';
|
|
@@ -34,6 +38,17 @@ const CLOCK_WIND_DOWN_FRACTION = 4;
|
|
|
34
38
|
const FORCED_CONCLUSION_TURNS = 2;
|
|
35
39
|
/** Transcript ceiling per step; enough for every turn without unbounded logs. */
|
|
36
40
|
const MAX_TRANSCRIPT_CHARS = 262_144;
|
|
41
|
+
/**
|
|
42
|
+
* Models that refused a forced tool choice once. The loop asks every model
|
|
43
|
+
* for a tool call on each turn; a model that answers HTTP 400 to that request
|
|
44
|
+
* shape gets `auto` plus an instruction for the rest of the process, so the
|
|
45
|
+
* refusal costs one round trip per model, not one per step.
|
|
46
|
+
*/
|
|
47
|
+
const FREE_TOOL_CHOICE_MODELS = new WeakSet();
|
|
48
|
+
/** Appended to the instructions when the model cannot be forced to call tools. */
|
|
49
|
+
const TOOL_CALLS_ONLY_RULE = 'Reply with tool calls only. A reply without a tool call does nothing and spends a turn; the step ends only through complete_step.';
|
|
50
|
+
/** Sent when a turn came back as text without a tool call. */
|
|
51
|
+
const TEXT_REPLY_NOTICE = '[SYSTEM] Your last reply had no tool call, so nothing happened. Continue with a tool call, or call complete_step with your verdict.';
|
|
37
52
|
/** Builds a step executor from a tool vocabulary and the shared loop chassis. */
|
|
38
53
|
export function createToolLoopExecutor(options) {
|
|
39
54
|
return {
|
|
@@ -42,14 +57,14 @@ export function createToolLoopExecutor(options) {
|
|
|
42
57
|
...(options.model === undefined ? {} : { model: options.model }),
|
|
43
58
|
async runStep(context) {
|
|
44
59
|
// The AI SDK is an optional peer; load it before anything touches it —
|
|
45
|
-
// including the context's
|
|
60
|
+
// including the context's model getter below.
|
|
46
61
|
const ai = await loadAiSdk();
|
|
47
62
|
// The context's model getter resolves the configured model on read, so
|
|
48
63
|
// an executor that brought its own never touches (or fails on) it.
|
|
49
64
|
const model = options.model ??
|
|
50
65
|
(context.model === undefined ? undefined : asSdkLanguageModel(context.model));
|
|
51
66
|
if (model === undefined) {
|
|
52
|
-
throw new AgentError('MODEL_UNAVAILABLE', `the "${options.name}" executor requires a model:
|
|
67
|
+
throw new AgentError('MODEL_UNAVAILABLE', `the "${options.name}" executor requires a model: pass an AI SDK model instance to createAgent({ model }) or set agent.model`);
|
|
53
68
|
}
|
|
54
69
|
const loop = new LoopRun(ai, options, context, model);
|
|
55
70
|
return loop.run();
|
|
@@ -73,11 +88,29 @@ class LoopRun {
|
|
|
73
88
|
maxTurns;
|
|
74
89
|
/** Remaining step time under which the loop forces a verdict. */
|
|
75
90
|
clockWindDownMs;
|
|
91
|
+
/** Prompt-cache hints for the model's provider; a no-op for providers without any. */
|
|
92
|
+
cache;
|
|
93
|
+
/** The history the last request went out with, for shrinking after an overflow. */
|
|
94
|
+
lastRequest;
|
|
95
|
+
/** Turns spent by earlier generate calls of this step; nonzero only after an overflow retry. */
|
|
96
|
+
turnOffset = 0;
|
|
97
|
+
/**
|
|
98
|
+
* Set once an overflow was handled: the retry note when the history was
|
|
99
|
+
* shrunk and resent, or why it was not. A second overflow is the step's
|
|
100
|
+
* verdict, and the note completes its message.
|
|
101
|
+
*/
|
|
102
|
+
overflowNote;
|
|
103
|
+
/** How this step asks for tool calls; flips to `auto` when the model rejects a forced choice. */
|
|
104
|
+
toolChoice;
|
|
105
|
+
/** The last turn that ran, for continuing after a reply without tool calls. */
|
|
106
|
+
lastStep;
|
|
76
107
|
constructor(ai, options, context, model) {
|
|
77
108
|
this.ai = ai;
|
|
78
109
|
this.options = options;
|
|
79
110
|
this.context = context;
|
|
80
111
|
this.model = model;
|
|
112
|
+
this.toolChoice = typeof model === 'object' && FREE_TOOL_CHOICE_MODELS.has(model) ? 'auto' : 'required';
|
|
113
|
+
this.cache = promptCacheHints(model);
|
|
81
114
|
// Capped, never raised: the harness budget is the ceiling for any turns
|
|
82
115
|
// setting, so the loop cannot spend past what the step was given.
|
|
83
116
|
this.maxTurns = Math.min(options.maxTurns ?? context.budgets.maxModelCalls, context.budgets.maxModelCalls);
|
|
@@ -89,49 +122,61 @@ class LoopRun {
|
|
|
89
122
|
...this.options.tools(this.context, helpers),
|
|
90
123
|
complete_step: this.conclusion.tool,
|
|
91
124
|
};
|
|
92
|
-
const providerOptions = this.options.providerOptions ?? this.context.providerOptions;
|
|
93
|
-
const loop = new this.ai.ToolLoopAgent({
|
|
94
|
-
model: this.model,
|
|
95
|
-
instructions: this.instructions(),
|
|
96
|
-
tools,
|
|
97
|
-
toolChoice: 'required',
|
|
98
|
-
...(providerOptions === undefined ? {} : { providerOptions: providerOptions }),
|
|
99
|
-
maxRetries: TRANSPORT_RETRIES,
|
|
100
|
-
stopWhen: [
|
|
101
|
-
() => this.conclusion.concluded() || this.hardStop !== undefined,
|
|
102
|
-
this.ai.stepCountIs(this.maxTurns),
|
|
103
|
-
],
|
|
104
|
-
prepareStep: ({ messages, stepNumber, steps }) => this.prepareTurn(messages, stepNumber, steps.at(-1)),
|
|
105
|
-
});
|
|
106
125
|
const tracker = trackModelCalls(this.context, this.model);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
+
let prompt = await this.options.buildPrompt(this.context);
|
|
127
|
+
for (;;) {
|
|
128
|
+
// Built per attempt: the instructions and the tool-choice mode can
|
|
129
|
+
// change between a refused request and its retry.
|
|
130
|
+
const loop = this.buildLoop(tools);
|
|
131
|
+
try {
|
|
132
|
+
const result = await loop.generate({
|
|
133
|
+
prompt,
|
|
134
|
+
abortSignal: this.context.signal,
|
|
135
|
+
// The whole loop, retries included, ends with the step's clock; the
|
|
136
|
+
// judgment adapter bounds its calls the same way.
|
|
137
|
+
timeout: Math.max(1, this.context.budgets.remainingMs()),
|
|
138
|
+
onStepStart: tracker.onStepStart,
|
|
139
|
+
onStepEnd: (step) => {
|
|
140
|
+
this.lastStep = step;
|
|
141
|
+
this.recordTurn(step);
|
|
142
|
+
tracker.onStepEnd(step);
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
const continued = this.continueAfterTextReply(result.responseMessages);
|
|
146
|
+
if (continued !== undefined) {
|
|
147
|
+
prompt = continued;
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
break;
|
|
126
151
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
152
|
+
catch (cause) {
|
|
153
|
+
const shrunk = this.overflowRetry(cause);
|
|
154
|
+
if (shrunk !== undefined) {
|
|
155
|
+
prompt = shrunk;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
const freed = this.freeToolChoiceRetry(cause);
|
|
159
|
+
if (freed !== undefined) {
|
|
160
|
+
prompt = freed;
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
this.attachTranscript();
|
|
164
|
+
if (this.context.signal.aborted) {
|
|
165
|
+
throw new AgentError('CANCELLED', 'the step was cancelled', { cause });
|
|
166
|
+
}
|
|
167
|
+
if (this.hardStop !== undefined)
|
|
168
|
+
throw this.hardStop;
|
|
169
|
+
if (isAgentError(cause))
|
|
170
|
+
throw cause;
|
|
171
|
+
if (isAbort(cause)) {
|
|
172
|
+
throw new AgentError('STEP_TIMEOUT', 'model call exceeded the remaining step timeout', { cause });
|
|
173
|
+
}
|
|
174
|
+
const message = cause instanceof Error ? cause.message : String(cause);
|
|
175
|
+
if (isContextOverflow(cause)) {
|
|
176
|
+
throw new AgentError('CONTEXT_OVERFLOW', `the model request exceeded the context window${this.overflowNote ?? ''}: ${message}`, { cause });
|
|
177
|
+
}
|
|
178
|
+
throw new AgentError('MODEL_PROVIDER_FAILED', withHint(`the model provider failed: ${message}`, credentialHint(cause)), { cause });
|
|
133
179
|
}
|
|
134
|
-
throw new AgentError('MODEL_PROVIDER_FAILED', withHint(`the model provider failed: ${cause instanceof Error ? cause.message : String(cause)}`, credentialHint(cause, this.model)), { cause });
|
|
135
180
|
}
|
|
136
181
|
this.attachTranscript();
|
|
137
182
|
const verdict = this.conclusion.verdict();
|
|
@@ -148,13 +193,101 @@ class LoopRun {
|
|
|
148
193
|
errorCode: 'STEP_NO_CONCLUSION',
|
|
149
194
|
};
|
|
150
195
|
}
|
|
196
|
+
buildLoop(tools) {
|
|
197
|
+
const system = this.instructions();
|
|
198
|
+
const providerOptions = this.cache.providerOptions(this.options.providerOptions ?? this.context.providerOptions, system);
|
|
199
|
+
return new this.ai.ToolLoopAgent({
|
|
200
|
+
model: this.model,
|
|
201
|
+
instructions: this.cache.instructions(system),
|
|
202
|
+
tools,
|
|
203
|
+
toolChoice: this.toolChoice,
|
|
204
|
+
...(providerOptions === undefined ? {} : { providerOptions: providerOptions }),
|
|
205
|
+
maxRetries: TRANSPORT_RETRIES,
|
|
206
|
+
stopWhen: [
|
|
207
|
+
() => this.conclusion.concluded() || this.hardStop !== undefined,
|
|
208
|
+
// Counted across every generate call of the step, so a retry after an
|
|
209
|
+
// overflow continues the same turn budget rather than starting a new one.
|
|
210
|
+
({ steps }) => this.turnOffset + steps.length >= this.maxTurns,
|
|
211
|
+
],
|
|
212
|
+
prepareStep: ({ messages, stepNumber, steps }) => this.prepareTurn(messages, this.turnOffset + stepNumber, steps.at(-1)),
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* A generate call that returned without a verdict and without a hard stop
|
|
217
|
+
* ended on a turn that made no tool call: the SDK loop stops when there is
|
|
218
|
+
* nothing to execute. Under `required` that cannot happen; under `auto` the
|
|
219
|
+
* model may answer in prose. While turns remain, the reply is kept in the
|
|
220
|
+
* history and the model is told to act, on the same turn budget.
|
|
221
|
+
*/
|
|
222
|
+
continueAfterTextReply(responseMessages) {
|
|
223
|
+
if (this.conclusion.concluded() || this.hardStop !== undefined || this.context.signal.aborted)
|
|
224
|
+
return undefined;
|
|
225
|
+
if (this.turnsUsed >= this.maxTurns || this.lastRequest === undefined)
|
|
226
|
+
return undefined;
|
|
227
|
+
if (this.lastStep === undefined || this.lastStep.toolCalls.length > 0)
|
|
228
|
+
return undefined;
|
|
229
|
+
this.turnOffset = this.turnsUsed;
|
|
230
|
+
this.transcript.push(`--- turn ${String(this.turnsUsed)} made no tool call: asking for one ---`);
|
|
231
|
+
const reply = responseMessages.at(-1);
|
|
232
|
+
return [
|
|
233
|
+
...this.lastRequest,
|
|
234
|
+
...(reply !== undefined && reply.role === 'assistant' ? [reply] : []),
|
|
235
|
+
{ role: 'user', content: TEXT_REPLY_NOTICE },
|
|
236
|
+
];
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* A model that refuses a forced tool choice (HTTP 400 naming
|
|
240
|
+
* `tool_choice`) is asked again with `auto` and a tool-calls-only rule in
|
|
241
|
+
* its instructions, on the same turn budget. The refusal is remembered per
|
|
242
|
+
* model instance, so later steps start in that mode.
|
|
243
|
+
*/
|
|
244
|
+
freeToolChoiceRetry(cause) {
|
|
245
|
+
if (this.toolChoice === 'auto' || this.lastRequest === undefined)
|
|
246
|
+
return undefined;
|
|
247
|
+
if (this.context.signal.aborted || this.hardStop !== undefined || !isForcedToolChoiceRejected(cause)) {
|
|
248
|
+
return undefined;
|
|
249
|
+
}
|
|
250
|
+
this.toolChoice = 'auto';
|
|
251
|
+
if (typeof this.model === 'object')
|
|
252
|
+
FREE_TOOL_CHOICE_MODELS.add(this.model);
|
|
253
|
+
this.turnOffset = this.turnsUsed;
|
|
254
|
+
this.transcript.push(`--- the model rejected a forced tool choice before turn ${String(this.turnsUsed + 1)}: retrying with auto ---`);
|
|
255
|
+
return this.lastRequest;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* The one recovery the loop attempts on its own: a request the provider
|
|
259
|
+
* refused as too large is sent again with the history shrunk — superseded
|
|
260
|
+
* screens elided, long texts cut — on the same turn budget. Anything else,
|
|
261
|
+
* a second overflow included, is left to the caller's error translation.
|
|
262
|
+
*/
|
|
263
|
+
overflowRetry(cause) {
|
|
264
|
+
if (this.overflowNote !== undefined || this.lastRequest === undefined)
|
|
265
|
+
return undefined;
|
|
266
|
+
if (this.context.signal.aborted || this.hardStop !== undefined || !isContextOverflow(cause))
|
|
267
|
+
return undefined;
|
|
268
|
+
const before = textChars(this.lastRequest);
|
|
269
|
+
const shrunk = shrinkForOverflow(this.lastRequest);
|
|
270
|
+
const after = textChars(shrunk);
|
|
271
|
+
// Nothing to elide and nothing to clip: the system prompt, the tool
|
|
272
|
+
// definitions, or the sheer number of messages is what does not fit, and
|
|
273
|
+
// sending the same request again would only spend another call on it.
|
|
274
|
+
if (after >= before) {
|
|
275
|
+
this.overflowNote = ' and the step history had nothing left to shrink';
|
|
276
|
+
this.transcript.push(`--- context overflow before turn ${String(this.turnsUsed + 1)}: nothing to shrink ---`);
|
|
277
|
+
return undefined;
|
|
278
|
+
}
|
|
279
|
+
this.overflowNote = ' again after the history was shrunk once';
|
|
280
|
+
this.turnOffset = this.turnsUsed;
|
|
281
|
+
this.transcript.push(`--- context overflow before turn ${String(this.turnsUsed + 1)}: history shrunk from ${String(before)} to ${String(after)} chars, retrying once ---`);
|
|
282
|
+
return shrunk;
|
|
283
|
+
}
|
|
151
284
|
helpers() {
|
|
152
285
|
return {
|
|
153
286
|
concluding: () => this.conclusion.concluded() || this.hardStop !== undefined,
|
|
154
287
|
reportHardStop: (error) => {
|
|
155
288
|
this.hardStop ??= error;
|
|
156
289
|
},
|
|
157
|
-
guard: async (body) => {
|
|
290
|
+
guard: async (body, label = 'Action') => {
|
|
158
291
|
if (this.conclusion.concluded() || this.hardStop !== undefined) {
|
|
159
292
|
return 'The step is already concluding; no further actions run.';
|
|
160
293
|
}
|
|
@@ -167,7 +300,7 @@ class LoopRun {
|
|
|
167
300
|
return `HARD STOP (${cause.code}): ${cause.message}`;
|
|
168
301
|
}
|
|
169
302
|
const message = cause instanceof Error ? cause.message : String(cause);
|
|
170
|
-
return
|
|
303
|
+
return `${label} failed: ${message}`;
|
|
171
304
|
}
|
|
172
305
|
},
|
|
173
306
|
};
|
|
@@ -242,14 +375,21 @@ class LoopRun {
|
|
|
242
375
|
'outside the application stopped you.');
|
|
243
376
|
}
|
|
244
377
|
const forced = turnsLeft <= FORCED_CONCLUSION_TURNS || this.guardStop !== undefined || lowClock;
|
|
378
|
+
// The cache breakpoint rides on the newest message, whatever the turn
|
|
379
|
+
// added; the history the SDK carries forward keeps it there until the
|
|
380
|
+
// next turn moves it again.
|
|
381
|
+
const outgoing = this.cache.markLatest(prepared);
|
|
382
|
+
this.lastRequest = outgoing;
|
|
383
|
+
// A model that rejects forced choices is offered the conclusion tool
|
|
384
|
+
// alone under `auto`; the notices above already tell it to call it.
|
|
245
385
|
return {
|
|
246
|
-
...(
|
|
386
|
+
...(outgoing === messages ? {} : { messages: outgoing }),
|
|
247
387
|
...(forced
|
|
248
388
|
? {
|
|
249
389
|
activeTools: ['complete_step'],
|
|
250
|
-
toolChoice: { type: 'tool', toolName: 'complete_step' },
|
|
390
|
+
toolChoice: this.toolChoice === 'required' ? { type: 'tool', toolName: 'complete_step' } : 'auto',
|
|
251
391
|
}
|
|
252
|
-
: {}),
|
|
392
|
+
: { toolChoice: this.toolChoice }),
|
|
253
393
|
};
|
|
254
394
|
}
|
|
255
395
|
instructions() {
|
|
@@ -261,7 +401,7 @@ class LoopRun {
|
|
|
261
401
|
if (project !== undefined && project.trim() !== '') {
|
|
262
402
|
parts.push(`Project context:\n${project}`);
|
|
263
403
|
}
|
|
264
|
-
parts.push(VERDICT_RULES);
|
|
404
|
+
parts.push(this.toolChoice === 'auto' ? `${VERDICT_RULES}\n- ${TOOL_CALLS_ONLY_RULE}` : VERDICT_RULES);
|
|
265
405
|
return parts.join('\n\n');
|
|
266
406
|
}
|
|
267
407
|
/** Serializes one turn into the step transcript. */
|
|
@@ -288,6 +428,59 @@ class LoopRun {
|
|
|
288
428
|
function appendNotice(messages, content) {
|
|
289
429
|
return [...messages, { role: 'user', content }];
|
|
290
430
|
}
|
|
431
|
+
/** Longest text a message part keeps after an overflow; the head of a screen still names its controls. */
|
|
432
|
+
const OVERFLOW_TEXT_CLIP_CHARS = 16_384;
|
|
433
|
+
/**
|
|
434
|
+
* Shrinks a history the provider refused as too large: every superseded full
|
|
435
|
+
* screen is elided regardless of the cache-friendly budget, then any text
|
|
436
|
+
* part still longer than the clip is cut to its head with a notice, so the
|
|
437
|
+
* model knows to observe again for what it no longer sees.
|
|
438
|
+
*/
|
|
439
|
+
function shrinkForOverflow(messages) {
|
|
440
|
+
return compactScreenHistory(messages, { keepStaleBytes: 0 }).map((message) => {
|
|
441
|
+
if (message.role === 'user') {
|
|
442
|
+
if (typeof message.content === 'string')
|
|
443
|
+
return { ...message, content: clip(message.content) };
|
|
444
|
+
return {
|
|
445
|
+
...message,
|
|
446
|
+
content: message.content.map((part) => (part.type === 'text' ? { ...part, text: clip(part.text) } : part)),
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
if (message.role !== 'tool')
|
|
450
|
+
return message;
|
|
451
|
+
return {
|
|
452
|
+
...message,
|
|
453
|
+
content: message.content.map((part) => {
|
|
454
|
+
if (part.type !== 'tool-result' || part.output.type !== 'text')
|
|
455
|
+
return part;
|
|
456
|
+
return { ...part, output: { type: 'text', value: clip(part.output.value) } };
|
|
457
|
+
}),
|
|
458
|
+
};
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
function clip(text) {
|
|
462
|
+
if (text.length <= OVERFLOW_TEXT_CLIP_CHARS)
|
|
463
|
+
return text;
|
|
464
|
+
const cut = text.length - OVERFLOW_TEXT_CLIP_CHARS;
|
|
465
|
+
return `${text.slice(0, OVERFLOW_TEXT_CLIP_CHARS)}\n[${String(cut)} more characters cut: the request exceeded the model's context window; observe again for what is missing]`;
|
|
466
|
+
}
|
|
467
|
+
/** Characters of text a history carries, for the transcript's account of a shrink. */
|
|
468
|
+
function textChars(messages) {
|
|
469
|
+
let total = 0;
|
|
470
|
+
for (const message of messages) {
|
|
471
|
+
if (typeof message.content === 'string') {
|
|
472
|
+
total += message.content.length;
|
|
473
|
+
continue;
|
|
474
|
+
}
|
|
475
|
+
for (const part of message.content) {
|
|
476
|
+
if (part.type === 'text')
|
|
477
|
+
total += part.text.length;
|
|
478
|
+
else if (part.type === 'tool-result' && part.output.type === 'text')
|
|
479
|
+
total += part.output.value.length;
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
return total;
|
|
483
|
+
}
|
|
291
484
|
function truncate(text, max) {
|
|
292
485
|
return text.length <= max ? text : `${text.slice(0, max)}…[truncated]`;
|
|
293
486
|
}
|