Skip to content

fix(agent): bump tinyagents so tool_call arguments survive constrained providers - #6593

Closed
senamakel wants to merge 3 commits into
tinyhumansai:mainfrom
senamakel:tool-call-open-args
Closed

senamakel wants to merge 3 commits into
tinyhumansai:mainfrom
senamakel:tool-call-open-args

Conversation

@senamakel

@senamakel senamakel commented Sep 24, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Moves vendor/tinyagents to c1034c50, the merge commit of fix(discover): declare tool_call.arguments as a JSON string so constrained providers stop emptying it tinyagents#209. That PR declares the tool_call bridge's arguments as a JSON-encoded string, so schema-constrained providers stop answering it with {}.
  • This fixes scheduled and chat agents failing to call any tool they found through tool_search. In the reported case that was GMAIL_SEND_EMAIL for the apple_stock_daily_email cron job.
  • tinyagents#209 has merged, and the gitlink points at its merge commit on tinyagents main.

Problem

On openrouter/deepseek/deepseek-v4-flash-0731, the OpenRouter provider Sail Research returned every tool_call as native tool_calls with "arguments": "{}". That dropped name as well as the arguments. The capture proxy (scripts/debug/capture-first-inference.mjs, with response bodies recorded) showed this happens before any OpenHuman parsing. It is not the DSML text parser that #6582 addresses: response_to_model_response only text-parses when tool_calls is empty.

Solution

The fix is upstream, where the bridge lives. Replaying the captured request on the same route, by arguments schema:

  • {"type":"object"}: 0 of 3 intact
  • open object: 4 of 4 intact
  • string: 7 of 7 intact

The open object is rewritten or stripped by the strict, conservative and Gemini schema projections, so tinyagents#209 uses a string. unwrap_tool_call already accepts both a string and an object.

Submission Checklist

  • Tests added or updated: in tinyagents#209, the projection-survival test and string-decoding test. OpenHuman has no code change.
  • Diff coverage ≥ 80%: N/A. This PR is a gitlink-only change.
  • Coverage matrix updated: N/A, behaviour-only change.
  • All affected feature IDs listed: N/A.
  • No new external network dependencies.
  • Manual smoke checklist: N/A. No release-cut UI surface.
  • Linked issue: N/A, found from a user session.

Impact

Related


AI Authored PR Metadata (required for Codex/Linear PRs)

Linear Issue

  • Key: N/A
  • URL: N/A

Commit & Branch

  • Branch: tool-call-open-args
  • Commit SHA: bba5fd94d3 (tinyagents pin c1034c50)

Validation Run

  • pnpm --filter openhuman-app format:check: N/A (no frontend changes)
  • pnpm typecheck: N/A
  • Focused tests:
    • cargo test -p openhuman --lib agent::tinyagents::: 410 passed.
    • cargo test -p openhuman --lib agent::: 2169 passed, 2 failed. The two failures, every_prompt_names_at_least_one_tool_it_can_call and the_withheld_block_renders_for_a_renamed_session_with_a_filter, fail identically on the current main pin.
  • Rust fmt/check: cargo build -p openhuman-cli --bin openhuman-core and cargo check --manifest-path crates/openhuman-app/Cargo.toml succeed against the merge-commit pin. The agent:: results above were rerun on it and are unchanged.
  • Tauri fmt/check: N/A

End to end: a build with the pre-merge #209 head (dbb72464, identical harness change) ran the real apple_stock_daily_email job on a copy of the affected user's data, on the same Sail Research route, captured through the proxy. The run had the #6585 behaviour simulated by removing unthreaded transcripts.

  • The Gmail step arrived as tool_call {name: "GMAIL_SEND_EMAIL", arguments: "{body, is_html, recipient_email, subject, user_id}"}.
  • The email was delivered, and the job output was "Email sent to … with subject 'AAPL Stock Price — Daily Update'".

Validation Blocked

  • command: N/A
  • error: N/A
  • impact: N/A

Behavior Changes

  • Intended behavior change: the tool_call bridge advertises arguments as a JSON string.
  • User-visible effect: integration actions found through tool_search can be invoked on constrained-decoding providers.

Parity Contract

  • Legacy behavior preserved: an object arguments is still accepted by unwrap_tool_call.
  • Guard/fallback/dispatch parity checks: unchanged. The call is still unwrapped before admission, so approvals and policy see the real tool.

Duplicate / Superseded PR Handling

  • Duplicate PR(s): none
  • Canonical PR: this one
  • Resolution (closed/superseded/updated): N/A

Summary by CodeRabbit

  • Chores
    • Updated an underlying component. No user-facing changes are specified in this release.

Update the pinned commit for the vendored tinyagents dependency to incorporate upstream fixes or improvements.

Auto-committed-on: macbook
Updated the pinned commit of the tinyagents submodule to incorporate upstream fixes and improvements.

Auto-committed-on: macbook
@coderabbitai

coderabbitai Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 956e45e9-d9b6-4d9b-9c31-e55e5b2a97b4

📥 Commits

Reviewing files that changed from the base of the PR and between 961d87f and bba5fd9.

📒 Files selected for processing (1)
  • vendor/tinyagents

Included review availability: Your plan provides up to 10 included reviews per hour; 7 remain after this review.


📝 Walkthrough

Walkthrough

The vendor/tinyagents subproject reference changed from commit 157186cdaf1b2a243bac9cd65fbf2eed9350d17d to c1034c50a14b98826deba824fe58e6f73d8c4d95.

Changes

Tinyagents Reference Update

Layer / File(s) Summary
Update subproject reference
vendor/tinyagents
The subproject reference changed to commit c1034c50a14b98826deba824fe58e6f73d8c4d95.

Priority: ➖ Normal

Estimated code review effort: 1 (Trivial) | ~3 minutes

Change: Bug fix

Suggested reviewers: m3ga-mind

Merge Risk: ⚪ Minimal · up to bba5f

The updated dependency advances from the existing pin, and its changed tool-call argument format is accepted by the downstream parser. No merge-blocking risk is evident.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change: updating tinyagents to preserve tool_call arguments for constrained providers.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR

A rabbit checks the pointer's place
A newer commit takes its space
Tinyagents shifts one step ahead
No other code is changed, it said
Then hops away, ears tipped with cheer

Comment @coderabbitai help to get the list of available commands.

Co-authored-by: Medulla <medulla@tinyhumans.ai>
@senamakel
senamakel marked this pull request as ready for review September 24, 2026 05:11
@senamakel
senamakel requested a review from a team September 24, 2026 05:11
@tinysweeper

tinysweeper Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Tiny Sweeper review

Tiny Sweeper reviewed this change across 6 lane(s) and found 0 active actionable finding(s). Detailed lane evidence and any incomplete work are listed below.

State: Ready for maintainer review
Priority: none
Reviewed head: bba5fd94d3f0
Updated: 1790227691 (Unix time)

Review snapshot

Change surface Files Review signal Count
Production 0 Active findings 0
Tests 0 Noted findings 0
Documentation 0 Resolved findings 0
Configuration 0 Pending checks/questions 0

Completeness: Complete
Test assessment: No supported feature-to-test mapping was available; this does not mean tests are absent or passed.

What changed

The review could not produce a supported behavioral summary; inspect the cited changed surface and lane details below.

Features

None identified with supported citations.

Tests

No supported feature-to-test mapping was produced. Test execution is not inferred.

Findings

No active actionable findings.

Before merge

None.

Agent review details

critique

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: No added or modified lines to review.

security

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: No added or modified lines to review.

tests

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: No added or modified lines to review.

commits

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: Nothing sensitive found in what this pull request commits.

description

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: No added or modified lines to review.

e2e

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: No added or modified lines to review.
Evidence and run details
  • Models: ladder/vectors
  • Spend: $0.000000
  • Tokens: 0 input · 0 output · 0 cached · 24 embedding
Head State Pass summary
bba5fd94d3f0 ready for maintainer review 0 active finding(s), 0 resolved finding(s) (at 1790227691)

tinysweeper 0.1.0

@senamakel senamakel closed this Sep 24, 2026

@tinysweeper tinysweeper Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tinysweeper found nothing blocking. Approving.

$0.0000 · 0 in / 0 out · 24 embedded · ladder/vectors

@tinysweeper tinysweeper Bot added the priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. label Sep 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant