CL-6448: keep tools and history on openai-compatible body turns - #178
Merged
Merged
Conversation
Pin the assembled wire request so a stripped tools or history payload fails, and cover body-step grant collapse plus durable conversation storage keyed by stepId across turn__n runs.
Thread parent authorize and credentialWiring through the body spawn seam, drop the toolless body-env skip so staged tools materialize, and restore conversation via the durable store keyed by stepId.
Document the vendored authorize/credentialWiring seam and refresh the workflow-host kill-date hash.
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
OpenAI-compatible adapters (Ollama/Studio) only send
toolsandhistorywhen those keys are on the assembled body at send time. Sidecar was collapsing extra keys on the onTrigger body path: body steps ran toolless through a throwing authorize stub, and eachturn__<n>rebuilt a fresh per-run store so conversation never survived.This threads parent
authorize/credentialWiringthrough the vendored workflow-host spawn/child seam, materializes the body's staged tools (head/step collapse for single-step deploys), and restores conversation from the durable store keyed by the body's stablestepId.Linear: https://linear.app/abklabs/issue/CL-6448
Tests
an openai-compatible turn's wire request carries the restored history and the declared tools— captureddeps.fetchbody must contain prior turns and the declared tool. Fails if either is stripped.a body stepId absent from a single-step snapshot collapses to the sole entry's grants— bodyreplylooks up the parent's sole grant set.an unknown stepId against a multi-step snapshot stays a loud miss— grants still collapse only for the single-step case.turn__nrunIds share one store when the registry is present.Vendor
No new Interchange snapshot. Existing
vendor/intx/workflow-hostdelta: body-spawn authorize/credential threading.VENDORED.md+ kill-date hash updated.