Repository navigation
E.1: RawToolCall.input -> RawArguments(String) newtype (phase 1E; stacked on #24) - #25
Open
cunninghamcard-bit wants to merge 4 commits into
Open
cunninghamcard-bit wants to merge 4 commits into
cunninghamcard-bit wants to merge 4 commits into
Conversation
fixtures/v4/enum-state/: JSONL samples for ToolCall, ToolResult, RawToolCall and StreamPart/TextStreamPart tool-input-start (absent / explicit false / true, providerExecuted true/false/absent, invalid+error, D26 rejected inputs, RFC-0042:84-91 vectors as RawToolCall input), normalized/ per A7 D25, and baseline/ recorded at 8455db9. aimux-core/tests/enum_state_wire_test.rs compares serialize(deserialize(line)) byte for byte with the baseline and checks normalized/ is a round-trip fixed point. A7 copied verbatim into docs/amendments/.
New aimux_core::tool::RawArguments newtype, serde(transparent) and #[ts(as = "String")] on the field, so the wire and RawToolCall.ts are unchanged. Not an enum (arcships#200:2724). Provides new/as_str/into_string/push_str, From<String|&str>, Into<String>, Deref<str>, AsRef<str>, Display and PartialEq with str/String/serde_json::Value (parity with String). Call sites in core, provider-utils, providers and tests converted with .into() / .to_string(); no behaviour change. Enum-state samples still match the 8455db9 baseline byte for byte.
tool_call.jsonl gains the RFC-0042:84-93 core values (string "Tokyo", string
"{\"x\":1}" kept a string, number, bool, null, last-wins {"a":2}, 100.0)
and empty text / {"a": as invalid dynamic calls with an error (never {}).
tool_call_semantic.jsonl holds the non-canonical spellings (duplicate key,
1e2), compared by JSON semantics. check_normalized asserts line counts before
zipping; baseline_equals_samples is skipped in bless mode. Baseline re-blessed
at 8455db9 (existing lines unchanged; new lines appended).
This was referenced Oct 11, 2026
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.
Phase 1E unit E.1 (A7 table row
RawToolCall; RFC-0042:80; arcships#200:2724). Stacked on #24 (E.0) because it uses E.0's samples and comparison test, so this diff includes E.0 until #24 merges. The E.1-only change is commit fb9ba56. It is independent of the 1R stack (#19–#23): no overlapping code.Change
aimux_core::tool::RawArguments(String), re-exported next toRawToolCall, with#[serde(transparent)].RawToolCall.inputis nowRawArgumentswith#[ts(as = "String")]. It is a newtype, not an enum (docs: full-chain AI SDK alignment design and impact map arcships/aimux#200:2724).Stringso call sites stay small:new/as_str/into_string/push_str(for the streaming accumulators)From<String>/From<&str>/From<RawArguments> for StringDeref<Target = str>,AsRef<str>,DisplayPartialEqwithstr/&str/String/serde_json::Value. TheValueimpl matchesString == Value, which existing tests rely on..into()where aStringis built, and.to_string()where aStringis needed (e.g.tool_inputin errors). No behaviour change. 23 files, +171/−70.Shared acceptance
fixtures/v4/enum-state/, E.0) still match the 8455db9 baseline byte for byte; all 7enum_state_wire_testtests pass, includingraw_tool_callwith the RFC-0042:84-91 vectors.git diff --stat -- fixtures/ contract-tests/fixtures/ aimux-providers/tests/cassettes/against E.0 is empty.gen_ts_types.py --check: up to date.git diff --stat bindings/is empty, andRawToolCall.tshas zero diff.git diff 8455db9a -- aimux-core aimux-stream aimux-provider-utils aimux-providers | grep -E '^\+.*serde\((untagged|flatten|tag *= *"(status|kind|state)")': no hits.wrapper.py): no diff.grep -n 'pub input: String' aimux-core/src/tool.rs: no hits.Results vs R.0 (local linux x64; clean rerun; test names confirmed in the log)
Go/Java/Kotlin/Swift/Flutter were not run locally.