mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-07-10 01:29:17 +00:00
* feat(computer-use): add tool name constants * feat(computer-use): hardcode upstream tool schemas * feat(computer-use): add enableComputerUse setting (default true) * chore(vscode-ide-companion): sync settings schema for computerUse * feat(computer-use): MCP stdio client for upstream binary * feat(computer-use): ComputerUseTool wrapper + bootstrap stub * feat(computer-use): register 9 deferred tools when enabled * feat(computer-use): persist install approval state under ~/.qwen * feat(computer-use): detect upstream permission errors * feat(computer-use): bootstrap state machine (install + permissions) * feat(computer-use): wire install approval to qwen-code confirm UX * chore(computer-use): script to sync schemas from upstream * fix(computer-use): consolidate package spec, surface download progress, correct version comment * docs(computer-use): implementation plan * fix(computer-use): forward image content parts to the model * fix(computer-use): coerce string numbers to integers + clarify required fields * fix(computer-use): detect missing Screen Recording + re-spawn doctor across permission transitions * fix(computer-use): auto-reconnect on transport-closed errors * fix(computer-use): sync schemas with upstream canonical contract Regenerated schemas.ts from upstream open-computer-use@latest via scripts/sync-computer-use-schemas.ts. Key contract fixes: - element_index: type integer → string (upstream reads via optionalString) - x/y/from_x/from_y/to_x/to_y: type integer → number (upstream uses optionalDouble) - scroll: adds required direction enum + requires element_index (not pages) - click: adds optional mouse_button string enum (left/right/middle) - Descriptions updated to upstream verbatim text (no "REQUIRED:" prefix) * fix(computer-use): bidirectional type coercion for string element_index Rename coerceNumericStrings → coerceTypes and add Direction 2: when schema declares type: "string" and model sends a number, stringify it (e.g. element_index: 2 → "2"). This fixes the upstream runtime error where optionalString returns nil for numeric element_index. Direction 1 (string → number for integer/number fields) is preserved unchanged for x/y coordinate fields. Update tests: element_index coercion tests now reflect string schema type; add new "coerces integer element_index to string" test cases. * feat(prompts): strengthen deferred-tools guidance to prevent param guessing * fix(computer-use): clearer wording for permission-transition onboarding message * fix(computer-use): only probe permissions on fresh client start, not every tool call * docs(computer-use): correct comment about permission-revocation recovery behavior * fix(computer-use): pin upstream version exactly to prevent schema drift * fix(computer-use): use pinned package spec in client singleton to prevent schema drift * fix(computer-use): decouple install gate from per-action permission grant * fix(computer-use): route registration through PermissionManager-aware registerLazy * fix(computer-use): probe via upstream doctor instead of get_app_state on Finder The previous probe called get_app_state on Finder, which has the side effect of activating the target app via upstream's unhide / open -b / AXRaise logic. Result: Finder popped to the foreground once per fresh session even when the user's task had nothing to do with it. The doctor CLI reads TCC + runtime preflight and prints a summary to stdout, exiting silently when permissions are granted. When any permission is missing, doctor launches the onboarding window via LaunchServices (which dedups so repeated invocations focus the existing window). We parse the stdout summary and rely on doctor's own window-launching for the UX trigger — no separate spawnDoctor call needed. Side effect for steady-state sessions (permissions already granted): ZERO Finder activation. The probe spawns npx -y doctor once per fresh client start (~200-500ms), and that's it. Also bumped pollIntervalMs default from 2s to 5s to amortize the npx-spawn overhead during the rare permission-grant flow. |
||
|---|---|---|
| .. | ||
| installation | ||
| lib | ||
| tests | ||
| benchmark-api-latency.mjs | ||
| build-hosted-installation-assets.js | ||
| build-standalone-release.js | ||
| build.js | ||
| build_package.js | ||
| build_sandbox.js | ||
| build_vscode_companion.js | ||
| check-build-status.js | ||
| check-i18n.ts | ||
| check-lockfile.js | ||
| clean.js | ||
| copy_bundle_assets.js | ||
| copy_files.js | ||
| create-standalone-package.js | ||
| create_alias.sh | ||
| dev.js | ||
| esbuild-shims.js | ||
| generate-git-commit-info.js | ||
| generate-settings-schema.ts | ||
| get-release-version.js | ||
| lint.js | ||
| local_telemetry.js | ||
| measure-flicker.mjs | ||
| pre-commit.js | ||
| prepare-package.js | ||
| release-script-utils.js | ||
| sandbox_command.js | ||
| start.js | ||
| sync-computer-use-schemas.ts | ||
| telemetry.js | ||
| telemetry_gcp.js | ||
| telemetry_utils.js | ||
| test-rewind-e2e.sh | ||
| test-windows-paths.js | ||
| unused-keys-only-in-locales.json | ||
| upload-aliyun-oss-assets.js | ||
| verify-installation-release.js | ||
| version.js | ||