mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-08-25 16:44:36 +00:00
feat(cua-driver): add versioned Computer Use SDK and release pipeline (#9587)
* chore(cua-driver): sync upstream v0.20.0 * feat(cua-driver): add Computer Use SDK with versioned observation revisions Wrap the typed driver SDK in a standalone Node wrapper and add accessibility.observation_revision.v1: base-anchored validated diffs with opaque element tokens, explicit full-resync reasons, full-only answers on Windows/Linux. Fix portable include_screenshot schema type and classify stable kAXErrorFailure refusals as complete in the macOS capture tracker. * feat(cua-driver): complete typed Computer Use capabilities * fix(cua-driver): use Qwen-owned npm identity * feat(cua-driver): publish one Qwen CUA SDK package * fix(cua-driver): verify Windows Rust targets * fix(cua-driver): verify macOS Rust targets * fix(cua-driver): pin release Rust toolchain * fix(cua-sdk): fail closed on incomplete releases * test(cua-sdk): import workflow test globals * ci(cua-sdk): retry Debian package downloads * fix(cua-driver): harden lifecycle and release gates --------- Co-authored-by: tutu <tutu@U-RD4R9MQQ-2235.local>
This commit is contained in:
parent
0b953b7929
commit
b5fbdb22d3
278 changed files with 53164 additions and 5784 deletions
59
scripts/tests/cua-driver-release-workflow.test.js
Normal file
59
scripts/tests/cua-driver-release-workflow.test.js
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
/**
|
||||
* @license
|
||||
* Copyright 2026 Qwen Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import { readFileSync } from 'node:fs';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
const workflow = readFileSync('.github/workflows/cd-cua-driver.yml', 'utf8');
|
||||
const packageVerifier = readFileSync(
|
||||
'packages/cua-driver/scripts/verify-cua-sdk-package.mjs',
|
||||
'utf8',
|
||||
);
|
||||
const shellInstaller = readFileSync(
|
||||
'packages/cua-driver/scripts/_install-rust.sh',
|
||||
'utf8',
|
||||
);
|
||||
const powershellInstaller = readFileSync(
|
||||
'packages/cua-driver/scripts/install.ps1',
|
||||
'utf8',
|
||||
);
|
||||
|
||||
describe('CUA SDK release workflow', () => {
|
||||
it('fails closed when a production dispatch disables notarization', () => {
|
||||
expect(workflow).toContain(
|
||||
'"${{ inputs.dry_run }}" != "true" && "${{ inputs.notarize }}" != "true"',
|
||||
);
|
||||
});
|
||||
|
||||
it('requires Gatekeeper to accept the notarized app', () => {
|
||||
expect(workflow).toContain(
|
||||
'spctl -a -vv -t exec release/QwenCuaDriver.app',
|
||||
);
|
||||
expect(workflow).not.toMatch(/spctl[^\n]+\|\| true/u);
|
||||
});
|
||||
|
||||
it('retries transient Debian mirror failures', () => {
|
||||
expect(workflow.match(/apt-get -o Acquire::Retries=3/g)).toHaveLength(2);
|
||||
});
|
||||
|
||||
it('smokes the high-level ComputerUse runtime from a clean package', () => {
|
||||
expect(packageVerifier).toContain('await ComputerUse.create(');
|
||||
expect(packageVerifier).toContain(
|
||||
'await computer.supportsObservationRevision()',
|
||||
);
|
||||
expect(workflow).toContain('await ComputerUse.create(');
|
||||
expect(workflow).toContain('await computer.close()');
|
||||
});
|
||||
|
||||
it('keeps installer version assignments machine-rewritable', () => {
|
||||
expect(shellInstaller).toMatch(
|
||||
/^CUA_DRIVER_RS_BAKED_VERSION="[^"\n]+"$/mu,
|
||||
);
|
||||
expect(powershellInstaller).toMatch(
|
||||
/^\$Script:CuaDriverRsBakedVersion = "[^"\n]+"$/mu,
|
||||
);
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue