The AITURK Chrome extension now registers the user's Chrome as the desktop backend's browser controller, the way the ChatGPT extension lets its agent work in the user's browser. The agent's existing browser tools (navigate, snapshot, click, type, scroll, back, press, get_images, vision) run in its own background tabs grouped as "AITURK", or a tab the user hands over. Backend: a local desktop lane in the browser-control broker. One controller registered from the loopback desktop transport is offered to every desktop session as a lane template; each session still gets its own exact scope on first use. The lane has its own switch (browser.extension_control.local_desktop, on by default); with no extension registered, or after it disconnects, the normal browser backend runs unchanged. browser_vision turns the extension's capture into the usual native/auxiliary vision result. Bridge: forwards controller commands only to a connection that registered, refuses unknown or oversized commands, relays results. Extension: service-worker controller with its own native connection, trusted chrome.debugger input (press/release only: a hover move waits 5 s on background tabs), refusal of password and payment-card fields and of browser, extension, file and Web Store pages, panel switch, Stop, tab hand-over, recent actions, Alt+Shift+A and right-click "send to AITURK". Cancelling Chrome's debugging bar stops the agent. Existing panel flows and privacy rules are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
99 lines
5.7 KiB
YAML
99 lines
5.7 KiB
YAML
name: Server CI and Windows package
|
|
|
|
on:
|
|
push:
|
|
branches: [aiturk/main, fix/ide-windows-vcruntime]
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
verify:
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 40
|
|
env:
|
|
NODE_OPTIONS: --max-old-space-size=2560
|
|
PYTHONDONTWRITEBYTECODE: '1'
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
github-server-url: https://gitea.turkservis.online
|
|
- name: Exact source and Linux test environment
|
|
run: |
|
|
set -eu
|
|
test "$(git rev-parse HEAD)" = "$GITHUB_SHA"
|
|
apt-get update
|
|
apt-get install -y --no-install-recommends ripgrep
|
|
rg --version
|
|
python3 -m venv "$RUNNER_TEMP/bootstrap"
|
|
"$RUNNER_TEMP/bootstrap/bin/pip" install uv
|
|
"$RUNNER_TEMP/bootstrap/bin/uv" venv --python 3.11 "$RUNNER_TEMP/ci-venv"
|
|
"$RUNNER_TEMP/bootstrap/bin/uv" pip install --python "$RUNNER_TEMP/ci-venv/bin/python" -e . pytest zstandard
|
|
- name: Approval gate and file safety on the server
|
|
run: |
|
|
"$RUNNER_TEMP/ci-venv/bin/python" -m pytest tests/tools/test_protected_instruction_unattended.py tests/tools/test_file_write_safety.py tests/tools/test_computer_use_approval_isolation.py tests/cli/test_cli_approval_ui.py tests/cli/test_single_query_session_finalize.py -q -p no:cacheprovider -rf
|
|
- name: Codex bridge regression tests
|
|
run: '"$RUNNER_TEMP/ci-venv/bin/python" -m unittest discover -s apps/desktop/assets/codex-bridge'
|
|
- name: Managed Python update preservation
|
|
run: '"$RUNNER_TEMP/ci-venv/bin/python" -m pytest tests/test_install_ps1_reuse_healthy_venv.py tests/test_install_ps1_python_fallback_venv.py -q -p no:cacheprovider -rf'
|
|
- name: Project scoped and bounded search regressions
|
|
run: '"$RUNNER_TEMP/ci-venv/bin/python" -m pytest tests/tools/test_search_project_scope.py tests/tools/test_search_files_cpu_windows.py tests/tools/test_search_zero_match_and_multipath.py tests/tools/test_search_giant_line_containment.py tests/tools/test_search_budget_truncation.py -q -p no:cacheprovider -rf'
|
|
- name: Desktop browser control lane (AITURK Chrome)
|
|
run: '"$RUNNER_TEMP/ci-venv/bin/python" -m pytest tests/gateway/test_browser_control_local_lane.py tests/gateway/test_browser_control_broker.py tests/gateway/test_browser_control_broker_hardening.py tests/gateway/test_browser_control_cloud.py tests/tools/test_browser_extension_router.py tests/tools/test_browser_extension_router_wiring.py -q -p no:cacheprovider -rf'
|
|
- name: Native watch and speech mux pytest regressions
|
|
run: '"$RUNNER_TEMP/ci-venv/bin/python" -m pytest apps/desktop/assets/codex-bridge/test_bekci_watch.py apps/desktop/assets/codex-bridge/test_native_speech_mux.py apps/desktop/assets/codex-bridge/test_live_limits.py -q -p no:cacheprovider -rf'
|
|
- name: Mobile and desktop startup regression tests
|
|
run: |
|
|
npm install --prefix "$RUNNER_TEMP/mobile-tests" --no-save --ignore-scripts --no-audit --no-fund --legacy-peer-deps vitest@4.1.10 ws@8.21.1
|
|
ln -s "$RUNNER_TEMP/mobile-tests/node_modules" node_modules
|
|
node node_modules/vitest/vitest.mjs run --root apps/desktop --config vitest.mobile.config.ts --maxWorkers=2
|
|
|
|
windows-package:
|
|
if: github.ref == 'refs/heads/fix/ide-windows-vcruntime'
|
|
needs: verify
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 60
|
|
# Windows packaging runs on Linux/Wine in the new server. No laptop runner.
|
|
container: electronuserland/builder@sha256:b226b27b1a7e95ad25eb3d6414ea90c56c04eb6d8329967f4d721dce50b989ff
|
|
env:
|
|
NODE_OPTIONS: --max-old-space-size=2560
|
|
CSC_IDENTITY_AUTO_DISCOVERY: 'false'
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
github-server-url: https://gitea.turkservis.online
|
|
- name: Install locked source dependencies
|
|
run: npm ci --no-audit --no-fund
|
|
- name: Chrome extension, agent control and bridge tests
|
|
run: node --test apps/chrome/tests/agent.test.mjs apps/chrome/tests/bridge.test.mjs apps/chrome/tests/panel.test.mjs
|
|
- name: Install Windows launcher cross compiler and framework reference
|
|
run: |
|
|
set -eu
|
|
apt-get update
|
|
apt-get install -y --no-install-recommends mono-mcs=6.8.0.105+dfsg-3.2 libmono-system-web-extensions4.0-cil=6.8.0.105+dfsg-3.2
|
|
- name: Compile Windows launcher from source and verify failure gate
|
|
run: node --test apps/desktop/scripts/build-native-watch-launcher.test.mjs
|
|
- name: Native dependency staging regression tests
|
|
run: npx vitest run --root apps/desktop scripts/stage-native-deps.test.mjs --maxWorkers=2
|
|
- name: Codex connection settings regression tests
|
|
run: npx vitest run --root apps/desktop electron/codex-link.test.ts electron/codex-link-config.test.ts electron/staged-transition.test.ts electron/compression-settings.test.ts src/app/settings/codex-link-settings.test.tsx src/app/settings/staged-transition-settings.test.tsx src/app/settings/compression-settings.test.tsx --maxWorkers=2
|
|
- name: Build and package Windows x64
|
|
run: |
|
|
set -eu
|
|
test "$(git rev-parse HEAD)" = "$GITHUB_SHA"
|
|
npm run build --workspace=apps/desktop
|
|
npm run builder --workspace=apps/desktop -- --win nsis zip --x64 --publish never
|
|
git diff --exit-code
|
|
cd apps/desktop/release
|
|
sha256sum *.exe *.zip > SHA256SUMS
|
|
- name: Preserve exact-source Windows package
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: aiturk-ide-windows-${{ github.sha }}
|
|
if-no-files-found: error
|
|
path: |
|
|
apps/desktop/release/*.exe
|
|
apps/desktop/release/*.zip
|
|
apps/desktop/release/SHA256SUMS
|