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
{{ message }}
Repository navigation
BUG: cua tools fail validation in 0.2.2-rc.1 — params object serialized to string in the tool-call bridge
#12933
"## Summary\n\nEvery invocation of a cua tool fails validation in DSH 0.2.2-rc.1 because the params object is serialized to a string somewhere in the host tool-call bridge before it reaches the tool's input validator. The tool itself (and the native helper behind it) works fine.\n\n## Environment\n\n- DSH Desktop: 0.2.2-rc.1 (app and all @deepseek-ai/* packages aligned at 0.2.2-rc.1)\n- macOS (Apple Silicon), Parallels environment\n- Affected packages: @deepseek-ai/dsh-computer-use, @deepseek-ai/dsh-cua, @deepseek-ai/dsh-experimental-cua-macos\n- Reproducible in Bot sessions (ds-bot provider) \u2014 including a Main Bot with the tool fully mounted and permissions granted\n\n## Reproduction\n\nCall any cua tool, e.g. getCapabilities with params: {}:\n\n\ncua \u2192 getCapabilities, params: {}\n\n\nResult (deterministic, 4+ retries, identical every time):\n\n\nError: [\n {\n \"expected\": \"object\",\n \"code\": \"invalid_type\",\n \"path\": [\"params\"],\n \"message\": \"Invalid input: expected object, received string\"\n }\n]\n\n\n## Analysis\n\n- The tool's validator requires params to be an object (z.object(...) on the operation envelope).\n- The object I send arrives at the validator as a string \u2014 serialization happens in the host's generic tool-call bridge between the model's tool call and the tool executor. I traced the package-side validation (correct) and the native helper protocol (untouched); the corruption is on the host bridge hop.\n- Not a permissions/config issue: Accessibility + Screen Recording granted, provider mounts, getCapabilities via a direct client works.\n\n## Workaround that proves the helper is fine\n\nSpeaking the helper's native JSONL protocol directly (Unix socket at /tmp/dsh-cua-<uid>/<runtime-key>.sock, hello\u2192ready handshake, then {id, method, params} frames) bypasses the broken bridge entirely:\n\n- getCapabilities \u2192 OK (accessibility: true, screenRecording: true)\n- listApps / getApp / getState / screenshot / click / typeText / pressKey \u2192 all OK\n\nSo the native helper and its protocol are healthy; only the host bridge hop is broken.\n\n## Expected\n\nparams should reach the tool's validator as the object the model produced, not a stringified copy.\n\n## Impact\n\nAll cua tools are unusable in sessions at 0.2.2-rc.1. Current npm dist-tags (next/latest) still point to 0.2.2-rc.1, so there is no fixed release to upgrade to.\n"
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
"## Summary\n\nEvery invocation of a
cuatool fails validation in DSH 0.2.2-rc.1 because theparamsobject is serialized to a string somewhere in the host tool-call bridge before it reaches the tool's input validator. The tool itself (and the native helper behind it) works fine.\n\n## Environment\n\n- DSH Desktop: 0.2.2-rc.1 (app and all@deepseek-ai/*packages aligned at 0.2.2-rc.1)\n- macOS (Apple Silicon), Parallels environment\n- Affected packages:@deepseek-ai/dsh-computer-use,@deepseek-ai/dsh-cua,@deepseek-ai/dsh-experimental-cua-macos\n- Reproducible in Bot sessions (ds-bot provider) \u2014 including a Main Bot with the tool fully mounted and permissions granted\n\n## Reproduction\n\nCall any cua tool, e.g.getCapabilitieswithparams: {}:\n\n\ncua \u2192 getCapabilities, params: {}\n\n\nResult (deterministic, 4+ retries, identical every time):\n\n\nError: [\n {\n \"expected\": \"object\",\n \"code\": \"invalid_type\",\n \"path\": [\"params\"],\n \"message\": \"Invalid input: expected object, received string\"\n }\n]\n\n\n## Analysis\n\n- The tool's validator requiresparamsto be an object (z.object(...)on the operation envelope).\n- The object I send arrives at the validator as a string \u2014 serialization happens in the host's generic tool-call bridge between the model's tool call and the tool executor. I traced the package-side validation (correct) and the native helper protocol (untouched); the corruption is on the host bridge hop.\n- Not a permissions/config issue: Accessibility + Screen Recording granted, provider mounts,getCapabilitiesvia a direct client works.\n\n## Workaround that proves the helper is fine\n\nSpeaking the helper's native JSONL protocol directly (Unix socket at/tmp/dsh-cua-<uid>/<runtime-key>.sock,hello\u2192readyhandshake, then{id, method, params}frames) bypasses the broken bridge entirely:\n\n-getCapabilities\u2192 OK (accessibility: true,screenRecording: true)\n-listApps/getApp/getState/screenshot/click/typeText/pressKey\u2192 all OK\n\nSo the native helper and its protocol are healthy; only the host bridge hop is broken.\n\n## Expected\n\nparamsshould reach the tool's validator as the object the model produced, not a stringified copy.\n\n## Impact\n\nAll cua tools are unusable in sessions at 0.2.2-rc.1. Current npm dist-tags (next/latest) still point to 0.2.2-rc.1, so there is no fixed release to upgrade to.\n"All reactions