Repository navigation
feat(agent): enable provider-native web search by default - #6913
Conversation
Generated-by: OpenAI Codex
Generated-by: OpenAI Codex
Astro-Han
left a comment
There was a problem hiding this comment.
Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.
[P2] Update the Host-replacement recovery test for the new WebStatus contract
I checked the Web capture/default-settings changes and the existing recovery assertion. This PR changes Capture.credential_configured to custom_available in plugins/workspace/workspace-web/api/src/contract.rs and defaults Web settings to enabled. However, queued_run_keeps_native_tools_after_host_replacement in plugins/agent/native/src/owner/driver/tests.rs:3721–3729 still requires exactly available: false and credentialConfigured: false. That assertion is unchanged from the parent commit.
The actual native root job on the merged commit, checked out at 6708da787cef85d4664f23d2a6439322b707e8a1, fails this case after 8.065 seconds with unexpected WebStatus result: {"basis":{"revision":null,"credentialRevision":null},"available":true,"source":"model","customAvailable":false}. The new field/default behavior makes the old exact-value assertion impossible to satisfy. Update the fixture expectation while preserving the test's proof that restored requests retain native tools and complete after Host replacement, then rerun that case through the normal root suite.
This is a focused CI integration finding based on the original hosted log and the changed production contract/defaults. The same old assertion remains in the subsequently merged source checked at c1da07b45bf49febf7383ed010e2244e49c07de8. I have not independently run the Rust recovery test locally or completed the full 43-file review, live provider searches, settings/vault isolation, or old-database and permission acceptance. This comment attributes only the WebStatus assertion failure described above.
Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.
Summary
Offer provider-native web search by default on supported routes. ChatGPT Subscription and DeepSeek V4 Pro use
web_search. DeepSeek Flash usesdeepseek_web_search.Stream the official DeepSeek Responses endpoint over HTTP and carry its original search results into later requests. A provider search followed by a final answer completes the turn using the provider's original response.
Use the existing search activity and Markdown rendering for provider results and source links.
Select one search source at tool binding time. Default to provider-native search when available. Settings can put a configured custom source first. Request failures surface through the selected source.
Add Tavily, Brave Search, Exa, and Serper presets in Settings → Web search. A custom endpoint can configure GET or POST, query-string and JSON parameters, optional header, query-string, or body authentication, and JSON pointers for results. Presets and custom endpoints share the same request path. Credentials stay in the existing vault and are scoped to the selected preset or endpoint.
Steering
Responses currently queues steering until the turn ends when hosted tools are enabled. The default now applies that existing behavior to ChatGPT Subscription, too.
Verification
cargo test --locked -p maka-agent-engine -p maka-provider-protocol -p maka-providers -p maka-model -p maka-webpassed (108 tests).cargo fmt --all -- --checkandgit diff --checkpassed.Live requests through an isolated Maka Host ran one native search each on GPT-6.1-Sol (ChatGPT Subscription), DeepSeek V4 Pro,
deepseek-flash, anddeepseek-v4-flash. Each follow-up reused the URL without another search.Reopened the conversations in an isolated macOS desktop instance and checked the search activity and rendered citation links. Pro returned its link in answer text. ChatGPT and Flash also returned structured URL citations.
The search preference and settings changes passed
cargo test --locked -p maka-web -p maka-app-client. The tests cover source selection, the saved Tavily preference, and the four preset wire formats.An isolated Host sent real GET and POST requests to a loopback endpoint with header, query-string, body, and no authentication. The checks exercised setting revisions, endpoint credential isolation, and result mapping. Another isolated session used a loopback model with no hosted search, ran the custom search with its existing network approval flow, and returned the result as an answer link. The four preset services were verified with request and response fixtures.
Checked the Web search settings page in the isolated macOS desktop app. Generated SDK declarations, strict workbench and bundle type checks, and Biome passed.
AI use
Tool(s) and scope: OpenAI Codex authored the changes and ran verification.
Checklist
Does this PR entail a change in behavior?