Repository navigation
fix(tools): stop provider timeout params from becoming the request deadline - #8878
Conversation
…adline The request transport and the internal-operation path read params.timeout as a millisecond deadline for every tool. Twilio make_call, New Relic NRQL, Apify (3 tools), Daytona (2 tools), and Trigger.dev waitpoint tokens declare their own timeout param in seconds or as a duration, so a 60-second setting aborted the call after 60 ms. A declared timeout param is now the deadline only when the tool sets timeoutParamIsDeadline (http_request, firecrawl_map, firecrawl_parse); callers can still bound tools that declare none. No param ids change. Redis and Upstash coerced params with Number() inside tools.config.tool, which runs at serialization on the serialized params object, turning <Block.output> references into NaN. The coercions now run in tools.config.params. Guardrails: check-block-registry rejects coerced assignments to params inside an inline tools.config.tool; check-tool-param-reachability rejects a method param on a fixed-verb external tool, which the transport would send as the HTTP verb.
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
There was a problem hiding this comment.
All reported issues were addressed across 11 files
Reply with feedback, questions, or to request a fix.
Turn on auto-fix | Re-trigger cubic
…d clarify declared timeout params
|
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
There was a problem hiding this comment.
All reported issues were addressed across 11 files
Reply with feedback, questions, or to request a fix.
Turn on auto-fix | Re-trigger cubic
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
There was a problem hiding this comment.
All reported issues were addressed across 11 files
Reply with feedback, questions, or to request a fix.
Turn on auto-fix | Re-trigger cubic
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
Summary
timeoutparams no longer become the request deadline. The external transport (formatToolRequest) and the internal-operation path both readparams.timeoutas a millisecond deadline for every tool. Eight tools declare their owntimeoutin seconds or as a duration — Twiliomake_call, New Relicnrql_query, Apify (run_actor_sync, run_actor_async, run_task), Daytona (execute_command, run_code), Trigger.devcreate_waitpoint_token— so a 60-second setting aborted the call after 60 ms. A declaredtimeoutis now the deadline only when the tool setstimeoutParamIsDeadline: true(http_request,firecrawl_map,firecrawl_parse, whosetimeoutreally is a ms deadline — behavior unchanged). Callers can still bound tools that declare notimeout. No param ids change, so saved workflows are unaffected.function_execute(also ms) takes its own execution branch and is untouchedtools.config.tool. The selector runs at serialization on the object that becomes the serialized params, soparams.x = Number(params.x)turned<Block.output>references intoNaN. The same coercions now run intools.config.params(merged over the resolved inputs on both the block and Agent paths — the Agent path previously got no coercion at all)check-block-registryrejects a coerced value assigned back onto params inside an inlinetools.config.tool(AST);check-tool-param-reachabilityrejects amethodparam on a fixed-verb external tool, which the transport would send as the HTTP verb. The add-tools skill documents bothType of Change
Testing
methodparam)Checklist