You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The native WebFetch path actually works end-to-end: when the language
server already executed read_url_content and returned a real web_document,
Cascade also produced a final assistant answer. But the proxy mislabeled
the completed step (a co-present requested_interaction echo was checked
first) and surfaced a dead read_url_content tool-call proposal, dropping
both the model answer and the fetched document.
- proto-trace.js: classify completed_web_document before pending_permission
- windsurf.js: flag read_url_content steps that carry a real web_document
- client.js: split completed WebFetch results from proposals; do not
re-approve or early-stop on an already-executed result
- handlers/chat.js: completed read_url_content is not converted to OpenAI
tool_calls; preserve final model text (finish_reason=stop), fall back to
the document body when the model produced no text. Stream path guards
against duplicate output. Bash/Read/Grep and document-less pending
WebFetch keep existing proposal semantics.
Verified on a memory-safe lab instance: native WebFetch fetches
https://example.com and the document content is confirmed present.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: package.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "windsurf-api",
3
-
"version": "2.0.143",
3
+
"version": "2.0.144",
4
4
"description": "Windsurf to OpenAI + Anthropic compatible API proxy. Turns Windsurf's 107 AI models (Claude, GPT, Gemini, DeepSeek, Grok, Qwen, Kimi, GLM, SWE) into dual-protocol API endpoints. Zero npm deps.",
log.info(`Chat[non-stream]: nativeBridge=true received ${chunks.toolCalls.length} cascade tool calls but none mapped to caller tools (kinds=${chunks.toolCalls.map(tc=>tc.name).join(',')})`);
log.info(`Chat[stream]: nativeBridge=true received cascade tool calls but none mapped to caller tools (kinds=${cascadeResult.toolCalls.filter(tc=>tc.cascade_native).map(tc=>tc.name).join(',')})`);
0 commit comments