feat(eve): spill oversized tool outputs to sandbox - #2563
Open
ebramanti wants to merge 1 commit into
Open
Conversation
Contributor
|
@ebramanti is attempting to deploy a commit to the Internal Playground Team on Vercel. A member of the Team first needs to authorize it. |
ebramanti
force-pushed
the
feat/tool-output-overflow
branch
3 times, most recently
from
August 27, 2026 16:14
a22213b to
d3b5f57
Compare
Signed-off-by: Edward Bramanti <edward@bramanti.org>
ebramanti
force-pushed
the
feat/tool-output-overflow
branch
from
August 27, 2026 18:04
d3b5f57 to
c88e8ce
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #905. A single tool response can currently consume most of model history before compaction can act. This adds an opt-in agent policy that writes oversized text and JSON results from eve-controlled tools to the session sandbox and gives the model a bounded file reference, while preserving the complete output on
action.result. Successful spills emit a durabletool.output.spilledevent and a boundedagent.tool.outputOpenTelemetry span; a deterministicspillIdsupports deduplication across durable retries. Existing behavior remains unchanged when the policy is omitted; control results remain inline, and provider-executed server tools remain outside the first-call boundary.Validation
Focused conflict-resolution coverage passed across protocol, manifest, overflow, task delivery, instrumentation, tracing, and structural limits. The complete unit suite passed with 7,261 tests and 1 skipped; the integration suite passed with 674 tests. Formatting, lint, type checking, mechanical invariants, and documentation validation passed. A deterministic sandbox E2E eval covers the full action output, model-facing reference, and subsequent file read; it will run in CI because E2E suites cannot run locally.
Checklist
CONTRIBUTING.mdevepackagegit commit --signoff)Diff size
Docs — 6 files ·
+182 / -16Documents the opt-in API, model-history behavior, spill event and trace contract, retry semantics, release impact, and scope boundaries.
Implementation — 34 files ·
+760 / -66Propagates the policy from authored configuration through compilation and runtime resolution, applies it at the common model-history boundary, emits a durable sideband event after successful sandbox writes, and records bounded trace metadata. Additive extension epochs retain compatibility for existing authored capabilities that consume the stream-event union.
Tests — 21 files ·
+956 / -17Covers byte accounting, serialization, deterministic references and spill identities, exemptions, persistence boundaries, task and subagent delivery, protocol events, instrumentation, tracing, configuration propagation, and retained extension contracts. The sandbox fixture additionally proves that raw action output stays complete while the model can read the overflow file.