fix(flows): tighten builder input grounding — arg-name validation + input_context dry-run + boolean typing (B13, B7, B8)#4665
Conversation
…put_context dry-run, boolean typing (B13, B7, B8) B13 (HIGH): the builder guessed arg NAMES (wired SLACK_SEND_MESSAGE with `text`, but the action wants `markdown_text` → runtime 400 "Unsupported field(s)"). validate_tool_contracts checked required args were PRESENT but not that PROVIDED arg names are VALID properties of the action's input schema. New unsupported_arg_names(schema, args) helper (caps.rs) + wired into validate_tool_contracts (ops.rs): for each Composio tool_call, reject config.args keys not in input_schema.properties, naming the bad key + the valid names + get_tool_contract. Guards: skips when input_schema is None / has no properties / declares additionalProperties; never applies to native oh: or agent/http nodes. Input-side twin of B1. B7 (LOW): the dry-run flagged a null-resolved agent `prompt` but not a null `input_context` (the primary input channel since tinyhumansai#4590). Added an agent_input_context_nulls pass (mirrors the prompt-nulls pass) to the ok:false condition + payloads. B8 (LOW, prompt-only): a condition mis-routed because an agent emitted the STRING "false" (truthy) not the BOOLEAN false. Engine is correct; prompt.md now tells the builder to declare type:"boolean" for any agent output field feeding a condition/boolean use. cargo check/fmt clean; flows:: 383 pass (+10 new: 6 unsupported_arg_names unit, 4 validate_tool_contracts arg-name, 1 input_context dry-run). B14 on_error:route test green.
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 11 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (6)
Comment |
The builder-grounding batch — three related fixes tightening how the builder grounds a workflow's inputs. Fires now that B3 (#4651) merged (they share
builder_tools.rs/ops.rs/prompt.md).B13 — validate arg NAMES against the input schema 🔴 HIGH
The builder wired
SLACK_SEND_MESSAGEwith atextarg, but that action wantsmarkdown_text→ runtime 400 "Unsupported Slack send message field(s)".validate_tool_contracts(#4605) checked required args were present but not that provided arg names are valid properties of the action's schema.unsupported_arg_names(schema, args)(caps.rs) + wired intovalidate_tool_contracts(ops.rs): for each Composiotool_call, rejectconfig.argskeys not ininput_schema.properties, naming the bad key + the valid names +get_tool_contract.input_schemais None / has noproperties/ declaresadditionalProperties; never applies to nativeoh:or agent/http nodes. Input-side twin of B1.B7 — dry-run flags a null
input_context🔴 LOW#4590 made a null agent
promptdry-run-fatal but not a nullinput_context(the primary input channel). Added anagent_input_context_nullspass (mirrors the prompt-nulls pass) into theok:falsecondition + payloads.B8 — type agent outputs used as booleans 🔴 LOW (prompt-only)
A condition mis-routed because an agent emitted the string
"false"(truthy) not the booleanfalse. Engine is correct;prompt.mdnow tells the builder to declaretype:"boolean"for any agent output feeding acondition/boolean use.Verification
cargo check/fmtclean · flows:: 383 pass (+10 new: 6unsupported_arg_namesunit, 4validate_tool_contractsarg-name, 1input_contextdry-run) · B14on_error:routetest green.