Files
orca/package.json
T
Brennan Benson 1d28b8882c chore(ratchets): fail PRs that add sync fs calls on Electron main or new setInterval polls (#39930)
* chore(ratchets): count sync fs calls on Electron main and setInterval calls

Sync fs on main and fixed-cadence intervals that never settle were two of the
most common perf fix classes since September, and no gate counted them. Both
ratchets grandfather today's uses per file and fail when a file's count grows.

* chore(ratchets): count every sync fs export, src/shared and node:timers intervals

Review: the allow-list missed descriptor/copy APIs, src/shared helpers run on
main too, and setInterval imported from node:timers escaped the timer count.

* chore(ratchets): keep hosted setInterval calls beside a named timer import

Review: a named node:timers import zeroed window/globalThis calls too, a
destructured require was counted twice, and collector edits didn't select
the timer ratchet in check:changed.

* chore(ratchets): charge calls through an alias, not the alias binding

Decider ruling B on review finding C6: binding a plain alias of a gated call
counted as a use, so an alias refactor failed every collector-based ratchet.
Conditional/fallback aliases and exported bindings stay charged.

* chore(ratchets): count bare setInterval only when nothing local shadows it

Review: the timer ratchet kept its own narrower binding resolver, so alias
and namespace-destructure forms of an imported setInterval counted twice.
Module bindings are the shared collector's; a bare call is the global only
when the file declares no setInterval binding.

* chore(ratchets): resolve bare setInterval calls per scope

Decider ruling A: the file-wide shadow rule let an unrelated parameter or type
declaration named setInterval hide every global poll in the file. Each bare
call now resolves through a single-file TypeScript checker (noLib, noResolve)
and counts when it binds to nothing declared in the file.

* chore(ratchets): write the timer baseline exactly as --prune does

* chore(ratchets): charge global timer aliases and bracket access

CodeRabbit: `const schedule = setInterval; schedule(poll)` and
`window['setInterval'](poll)` counted zero. Count value references to the
global timer (per scope) instead of only direct calls.

* chore(ratchets): charge shorthand timer escapes; skip writes, typeof and JSX tags

Review: `{ setInterval }` of the global counted 0, while assignments to it,
parenthesized typeof probes and a <setInterval/> tag counted 1.

* chore(ratchets): charge compound assignments to the global timer

Review: `||=` and `??=` read setInterval before writing it, so only a
plain `=` target is write-only.

* chore(ratchets): regenerate baselines for files main moved

main's SSH reorganisation moved counted files under src/main/ssh and
src/main/managed-server; counts are unchanged except one sync fs call main
removed.
2026-11-08 13:34:07 -08:00

467 lines
39 KiB
JSON

{
"name": "orca",
"version": "1.4.214",
"description": "Next-gen IDE for parallel agentic development",
"homepage": "https://github.com/stablyai/orca",
"author": "stablyai",
"bin": {
"orca": "./out/cli/index.js",
"orca-dev": "./config/scripts/development/launch/orca-dev.mjs"
},
"main": "./out/main/index.js",
"scripts": {
"check:dependencies": "pnpm run build:packages && node config/scripts/dependency-security/audit-tools/check-dependency-security.mjs",
"install:release": "pnpm install --frozen-lockfile --cpu=current,x64,arm64",
"audit:perf": "oxlint --config config/oxlint-performance-audit.json --format json src",
"audit:perf:type-aware": "oxlint --type-aware --config config/oxlint-performance-audit-type-aware.json --format json src",
"test:perf:contracts": "vitest run --config config/vitest.performance.config.ts",
"format": "oxfmt --write .",
"lint": "node config/scripts/preflight/changed-checks/run-lint.mjs",
"audit:code-quality": "pnpm run audit:code-quality:native && pnpm run audit:code-quality:type-aware && pnpm run audit:react-doctor",
"audit:code-quality:native": "oxlint --config config/oxlint-code-quality-native-plugins.json src config tests mobile --deny-warnings",
"audit:code-quality:type-aware": "oxlint --type-aware --config config/oxlint-code-quality-type-aware.json src config tests --deny-warnings",
"audit:react-doctor": "node config/scripts/dependency-security/audit-tools/run-audit-tool.mjs react-doctor . --yes --no-supply-chain --no-telemetry --blocking none",
"audit:dead-code": "node config/scripts/dependency-security/audit-tools/run-audit-tool.mjs knip --config config/knip.json",
"check:changed": "node config/scripts/preflight/changed-checks/check-changed.mjs",
"check:code-quality:changed": "node config/scripts/preflight/changed-checks/check-changed-code-quality.mjs",
"lint:js-plugins": "oxlint --config config/oxlint-js-plugins.json src config tests mobile native .github",
"lint:ast-grep": "ast-grep scan --config config/sgconfig.yml --min-severity warning src config tests mobile",
"lint:ast-grep-gates": "node config/scripts/static-analysis/structural-scan/ast-grep-gates.mjs",
"lint:ast-grep:flaky-tests": "ast-grep scan --config config/sgconfig.yml --filter \"^test-\" src config tests mobile",
"test:ast-grep": "ast-grep test --config config/sgconfig.yml --skip-snapshot-tests",
"check:dead-classes": "oxlint --config config/oxlint-dead-classes.json src/renderer",
"lint:design-system": "oxlint --config config/oxlint-design-system.json src/renderer",
"check:react-doctor:changed": "node config/scripts/static-analysis/react-doctor/check-react-doctor-changed.mjs",
"check:zustand-selector-fanout": "node config/scripts/performance/renderer-projection/zustand-selector-fanout-benchmark.mjs --check",
"doctor": "node config/scripts/dependency-security/audit-tools/run-audit-tool.mjs react-doctor . --no-telemetry",
"lint:react-doctor": "oxlint --config config/oxlint-react-doctor.json",
"lint:react-doctor:changed": "node config/scripts/static-analysis/react-doctor/lint-react-doctor-changed.mjs",
"prepare": "husky",
"test": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=node && node config/scripts/test-runtime/execution-policy/run-vitest.mjs run --config config/vitest.config.ts",
"test:changed": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=node && node config/scripts/test-runtime/execution-policy/run-vitest.mjs run --config config/vitest.config.ts --changed=HEAD",
"test:node": "pnpm run build:packages && node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=node && vitest run --config config/vitest.config.ts",
"test:node-server": "node config/scripts/ci/unit-selection/run-node-server-tests.mjs",
"test:skill-sharing:release": "vitest run --config config/vitest.config.ts src/main/skills src/main/runtime/rpc/methods/skills/skills.test.ts src/shared/skill-bundle-install-contract.test.ts src/shared/skill-package-manifest.test.ts",
"test:repro:remote-agent-session": "pnpm run build:cli && pnpm run build:electron-vite && node config/scripts/diagnostics/remote-agent-authority/remote-agent-session-authority-repro.mjs",
"capture:agent-transcript": "node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=node && node config/scripts/diagnostics/terminal-transcripts/capture-agent-pty-transcript.mjs",
"check:reliability-gates": "node config/scripts/static-analysis/reliability-policy/check-reliability-gates.mjs",
"check:ratchets": "node config/scripts/static-analysis/ratchet-runner/run-ratchets.mjs",
"check:max-lines-ratchet": "node config/scripts/static-analysis/ratchets/source-budget/check-max-lines-ratchet.mjs",
"check:ts-nocheck-ratchet": "node config/scripts/static-analysis/ratchets/source-budget/check-ts-nocheck-ratchet.mjs",
"check:host-list-render-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-host-list-render-ratchet.mjs",
"check:memo-translate-subscription-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-memo-translate-subscription-ratchet.mjs",
"check:react-compiler-compat-ratchet": "node config/scripts/static-analysis/ratchets/react-compiler/check-react-compiler-compat-ratchet.mjs",
"check:render-path-translate-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-render-path-translate-ratchet.mjs",
"check:flaky-test-pattern-ratchet": "node config/scripts/static-analysis/ratchets/test-quality/check-flaky-test-pattern-ratchet.mjs",
"check:path-literal-ratchet": "node config/scripts/static-analysis/ratchets/source-budget/check-path-literal-ratchet.mjs",
"check:legacy-relay-fence-ratchet": "node config/scripts/static-analysis/process-boundaries/check-legacy-relay-fence-ratchet.mjs",
"check:unproven-pty-retirement-ratchet": "node config/scripts/static-analysis/ratchets/runtime-lifecycle/check-unproven-pty-retirement-ratchet.mjs",
"check:daemon-blocking-call-ratchet": "node config/scripts/static-analysis/ratchets/runtime-lifecycle/check-daemon-blocking-call-ratchet.mjs",
"check:id-only-store-write-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-id-only-store-write-ratchet.mjs",
"check:repo-host-read-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-repo-host-read-ratchet.mjs",
"check:workspace-record-read-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-workspace-record-read-ratchet.mjs",
"check:worktree-id-composer-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-worktree-id-composer-ratchet.mjs",
"check:direct-link-open-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-direct-link-open-ratchet.mjs",
"check:e2e-typecheck-ratchet": "node config/scripts/typecheck/e2e-admission/check-e2e-typecheck-ratchet.mjs",
"check:runtime-electron-ratchet": "node config/scripts/static-analysis/process-boundaries/check-runtime-electron-ratchet.mjs",
"check:focus-read-ratchet": "node config/scripts/static-analysis/ratchets/renderer-state/check-focus-read-ratchet.mjs",
"check:layout-writer-ratchets": "node config/scripts/static-analysis/ratchets/renderer-state/check-layout-writer-ratchets.mjs",
"check:readme-local-links": "node config/scripts/static-analysis/repository-layout/check-readme-local-links.mjs",
"check:has-restyle-scope": "node config/scripts/static-analysis/renderer-styles/check-has-restyle-scope.mjs",
"check:daemon-protocol-crossing": "node config/scripts/daemon-protocol/admission/check-daemon-protocol-crossing.mjs",
"check:runtime-launcher-protocol-ratchet": "node config/scripts/daemon-protocol/admission/check-runtime-launcher-protocol-ratchet.mjs",
"check:node-runtime-pin": "node config/scripts/node-runtime/pin-policy/check-node-runtime-pin.mjs",
"check:test-file-runners": "node config/scripts/ci/unit-selection/check-test-file-runners.mjs",
"check:mobile-shared-dependency-versions": "node config/scripts/package-manager/lockfile-contracts/check-mobile-shared-dependency-versions.mjs",
"build:orcad": "pnpm run build:packages && node config/scripts/orcad-distribution/prebuilds/build-orcad-node.mjs",
"build:orcad-template": "pnpm run build:packages && node config/scripts/orcad-distribution/template/build-orcad-template.mjs",
"build:orcad-prebuilds": "pnpm run build:packages && node config/scripts/orcad-distribution/prebuilds/build-orcad-prebuilds.mjs",
"smoke:orcad-terminal": "node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=node && pnpm run build:orcad && node config/scripts/runtime-verification/daemon-lifecycle/runtime-serve-terminal-smoke.mjs --target orcad",
"smoke:serve-terminal": "node config/scripts/runtime-verification/daemon-lifecycle/runtime-serve-terminal-smoke.mjs",
"check:feature-wall-assets": "node config/scripts/assets/feature-wall/check-feature-wall-assets.mjs",
"generate:plugin-declarative-runtime": "node config/scripts/plugin-build/declarative-runtime/build-plugin-declarative-runtime.mjs",
"generate:plugin-declarative-typings": "node config/scripts/plugin-authoring/generated-contracts/generate-plugin-declarative-typings.mjs",
"generate:plugin-schemas": "node config/scripts/plugin-authoring/generated-contracts/generate-plugin-schemas.mjs",
"generate:plugin-author-typings": "node config/scripts/plugin-authoring/generated-contracts/generate-plugin-author-typings.mjs",
"validate:plugin": "node config/scripts/plugin-authoring/content-validation/validate-plugin-files.mjs",
"generate:rpc-params-catalog": "node config/scripts/plugin-authoring/rpc-catalog/generate-rpc-params-catalog.mjs",
"verify:rpc-params-catalog": "node config/scripts/plugin-authoring/rpc-catalog/generate-rpc-params-catalog.mjs --check",
"generate:acp-protocol": "node config/scripts/acp/generate-protocol.mjs",
"verify:acp-protocol": "node config/scripts/acp/generate-protocol.mjs --check",
"generate:bundled-skill-guides": "node config/scripts/skills/bundle-generation/generate-bundled-skill-guides.mjs --write",
"verify:bundled-skill-guides": "node config/scripts/skills/bundle-generation/generate-bundled-skill-guides.mjs --check",
"generate:plugin-authoring-skill-references": "node config/scripts/skills/bundle-generation/generate-plugin-authoring-skill-references.mjs --write && node config/scripts/skills/bundle-generation/generate-bundled-skill-guides.mjs --write",
"verify:plugin-authoring-skill-references": "node config/scripts/skills/bundle-generation/generate-plugin-authoring-skill-references.mjs --check",
"generate:skill-bundle-manifest": "node config/scripts/skills/bundle-generation/generate-skill-bundle-manifest.mjs --write",
"verify:skill-bundle-manifest": "node config/scripts/skills/bundle-generation/generate-skill-bundle-manifest.mjs",
"verify:macos-entitlements": "node config/scripts/desktop-distribution/macos/verify-macos-entitlements.mjs",
"vendor:feature-wall-assets": "node config/scripts/assets/feature-wall/vendor-feature-wall-assets.mjs",
"tc:node": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=config/tsconfig.node.json",
"tc:cli": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=config/tsconfig.tc.cli.json",
"tc:web": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=config/tsconfig.tc.web.json",
"tc": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs",
"typecheck:node": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=config/tsconfig.node.json",
"typecheck:cli": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=config/tsconfig.tc.cli.json",
"typecheck:web": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --project=config/tsconfig.tc.web.json",
"typecheck:e2e": "pnpm run build:packages && node config/scripts/typecheck/e2e-admission/run-e2e-typecheck.mjs",
"typecheck:tsc:e2e": "pnpm run build:packages && node config/scripts/typecheck/e2e-admission/run-e2e-typecheck.mjs --compiler=native",
"typecheck": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs",
"typecheck:ci": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/typecheck/project-execution/run-typecheck-projects-in-parallel.mjs --compiler=bun",
"typecheck:tsc:node": "pnpm run build:packages && node node_modules/typescript/bin/tsc --noEmit -p config/tsconfig.node.json --composite false",
"typecheck:tsc:cli": "pnpm run build:packages && tsc --noEmit -p config/tsconfig.cli.json --composite false",
"typecheck:tsc:web": "pnpm run build:packages && tsc --noEmit -p config/tsconfig.web.json --composite false",
"typecheck:tsc": "pnpm run build:packages && tsc --noEmit -p config/tsconfig.node.json --composite false && tsc --noEmit -p config/tsconfig.cli.json --composite false && tsc --noEmit -p config/tsconfig.web.json --composite false",
"ensure:electron-runtime": "node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=electron",
"start": "pnpm run build:packages && pnpm run ensure:electron-runtime && electron-vite preview",
"dev": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=electron && node config/scripts/development/launch/run-electron-vite-dev.mjs",
"dev-stable-name": "pnpm run build:packages && pnpm run ensure:electron-runtime && node config/scripts/development/launch/run-electron-vite-dev.mjs --stable-name",
"dev:fresh": "pnpm run build:packages && node config/scripts/development/profile-seeding/dev-fresh-profile.mjs",
"dev:seed-profile": "node config/scripts/development/profile-seeding/dev-profile-seed.mjs",
"dev:web": "vite --config vite.web.config.ts --host 127.0.0.1",
"dev:fixtures": "vite --config config/vite.fixtures.config.ts",
"fixtures:shot": "node config/scripts/component-fixtures/fixtures-shot.mjs",
"build:wsl-guest": "pnpm run build:packages && node --disable-warning=MODULE_TYPELESS_PACKAGE_JSON config/scripts/remote-host-build/wsl-guest/build-wsl-guest.mjs",
"build:computer-macos": "node config/scripts/native-build/macos/build-computer-macos.mjs",
"build:keyboard-layout-macos": "node config/scripts/native-build/macos/build-keyboard-layout-macos.mjs",
"build:process-footprint-macos": "node config/scripts/native-build/macos/build-process-footprint-macos.mjs",
"build:notification-status-macos": "node config/scripts/native-build/macos/build-notification-status-macos.mjs",
"build:native": "node config/scripts/native-build/composition/build-native-for-platform.mjs",
"smoke:computer": "node config/scripts/runtime-verification/desktop-transport/computer-use-smoke.mjs",
"verify:computer-native": "node config/scripts/runtime-verification/desktop-transport/verify-computer-native.mjs",
"verify:cli-bin": "node config/scripts/cli-build/verify-cli-bin.mjs",
"verify:built-skills-cli": "node config/scripts/runtime-verification/skills-cli/verify-skills-cli-runtime.cjs out",
"verify:renderer-boot-graph": "node config/scripts/desktop-build/output-contracts/verify-renderer-boot-graph.mjs",
"verify:localization-catalogs": "bun config/scripts/localization/catalog-validation/verify-localization-catalogs.mjs",
"verify:localization-catalog": "node config/scripts/localization/catalog-validation/verify-localization-catalog.mjs",
"sync:localization-catalog": "node config/scripts/localization/catalog-validation/verify-localization-catalog.mjs --fix",
"verify:localization-runtime-catalog": "node config/scripts/localization/catalog-validation/generate-runtime-required-english-catalog.mjs",
"sync:localization-runtime-catalog": "node config/scripts/localization/catalog-validation/generate-runtime-required-english-catalog.mjs --fix",
"verify:localization-protected-copy": "node config/scripts/localization/catalog-validation/protected-copy-keys.mjs",
"sync:localization-protected-copy": "node config/scripts/localization/catalog-validation/protected-copy-keys.mjs --fix",
"verify:localization-extraction": "node config/scripts/localization/source-extraction/verify-localization-extraction.mjs",
"verify:localization-coverage": "node config/scripts/localization/source-extraction/audit-localization-coverage.mjs --check",
"verify:mobile-localization": "node config/scripts/localization/catalog-validation/verify-mobile-localization.mjs",
"sync:mobile-localization": "node config/scripts/localization/catalog-validation/verify-mobile-localization.mjs --fix",
"verify:mobile-localization-coverage": "node config/scripts/localization/source-extraction/audit-localization-coverage.mjs --check --source-root mobile/app --source-root mobile/src --source-root mobile/web-entry --allowlist config/mobile-localization-coverage-allowlist.json",
"audit:localization": "node config/scripts/localization/source-extraction/audit-localization-coverage.mjs",
"i18n:reactive-translate": "node config/scripts/localization/reactive-translate/codemod-reactive-translate.mjs",
"audit:translate-helpers": "node config/scripts/localization/reactive-translate/report-translate-helpers.mjs",
"build:cli": "pnpm run build:packages && node config/scripts/cli-build/build-cli.mjs && pnpm run prepare:cli-output",
"prepare:cli-output": "node config/scripts/cli-build/verify-cli-bin.mjs --fix-executable --fix-package-json && node config/scripts/development/setup/install-dev-cli.mjs",
"test:linux-cli-contract": "node config/scripts/runtime-verification/desktop-transport/run-linux-cli-launch-contract-docker.mjs --appimage dist/orca-linux.AppImage",
"test:repro:skills-cli-runtime": "pnpm run build:cli && pnpm run build:electron-vite && pnpm run verify:built-skills-cli",
"build:electron-vite": "pnpm run build:packages && node config/scripts/desktop-build/execution/run-electron-vite-build.mjs",
"build:electron-vite:parallel": "pnpm run build:packages && node config/scripts/development/launch/run-electron-vite-targets-in-parallel.mjs",
"build:web": "pnpm run build:packages && node config/scripts/web-build/execution/run-vite-web-build.mjs && node config/scripts/web-build/execution/verify-web-build.mjs",
"build:web-from-renderer": "node config/scripts/development/web-client/project-renderer-web-client.mjs && node config/scripts/web-build/execution/verify-web-build.mjs",
"build:mobile-web": "node config/scripts/build/mobile-web-app/build-mobile-web-app-bundle.mjs && node config/scripts/build/mobile-web-app/verify-mobile-web-app-bundle.mjs",
"build:desktop": "pnpm run typecheck && pnpm run build:desktop:assets",
"build:desktop:ci": "pnpm run typecheck:ci --bun-concurrency=2 --bun-threads=2 && pnpm run build:desktop:assets",
"build:desktop:assets": "pnpm run build:wsl-guest && pnpm run build:cli && pnpm run build:electron-vite && pnpm run verify:built-skills-cli && pnpm run build:web-from-renderer && pnpm run build:mobile-web",
"build": "pnpm run build:desktop && pnpm run build:native",
"build:release": "pnpm run build:wsl-guest && pnpm run build:native && pnpm run verify:computer-native && pnpm run build:cli && pnpm run build:electron-vite && pnpm run verify:built-skills-cli && pnpm run build:web-from-renderer && pnpm run build:mobile-web",
"build:release:javascript": "pnpm run build:cli && pnpm run build:electron-vite && pnpm run verify:built-skills-cli && pnpm run build:web-from-renderer && pnpm run build:mobile-web",
"build:release:javascript:parallel": "pnpm run build:cli && pnpm run build:electron-vite:parallel && pnpm run verify:built-skills-cli && pnpm run build:web-from-renderer && pnpm run build:mobile-web",
"build:release:host": "pnpm run build:wsl-guest && pnpm run build:native && pnpm run verify:computer-native && pnpm run verify:built-skills-cli",
"build:release:parallel": "pnpm run build:wsl-guest && pnpm run build:native && pnpm run verify:computer-native && pnpm run build:cli && pnpm run build:electron-vite:parallel && pnpm run verify:built-skills-cli && pnpm run build:web-from-renderer && pnpm run build:mobile-web",
"postinstall": "node config/scripts/workspace-package-build/build-workspace-packages.mjs && node config/scripts/native-build/node-addons/rebuild-native-deps.mjs",
"rebuild:electron": "node config/scripts/native-build/node-addons/rebuild-native-deps.mjs",
"reclaim-space": "node config/scripts/worktree-storage/reclaim-worktree-space.mjs",
"rebuild:node": "node config/scripts/native-build/node-addons/ensure-native-runtime.mjs --runtime=node --force",
"build:unpack": "pnpm run build && pnpm run ensure:electron-runtime && electron-builder --config config/electron-builder.config.cjs --dir",
"build:win": "pnpm run build:desktop && pnpm run ensure:electron-runtime && electron-builder --config config/electron-builder.config.cjs --win",
"build:icons": "bash resources/icon-source/generate.sh",
"build:mac": "pnpm run build:desktop && pnpm run build:computer-macos && pnpm run build:keyboard-layout-macos && pnpm run build:process-footprint-macos && pnpm run build:notification-status-macos && pnpm run ensure:electron-runtime && node config/scripts/desktop-distribution/macos/build-mac-local.mjs",
"build:mac:release": "node config/scripts/desktop-distribution/macos/verify-macos-release-env.mjs && ORCA_MAC_RELEASE=1 pnpm run build:desktop && ORCA_MAC_RELEASE=1 pnpm run build:computer-macos && ORCA_MAC_RELEASE=1 pnpm run build:keyboard-layout-macos && ORCA_MAC_RELEASE=1 pnpm run build:process-footprint-macos && ORCA_MAC_RELEASE=1 pnpm run build:notification-status-macos && pnpm run ensure:electron-runtime && ORCA_MAC_RELEASE=1 electron-builder --config config/electron-builder.config.cjs --mac",
"build:linux": "pnpm run build:desktop && pnpm run ensure:electron-runtime && node config/scripts/desktop-distribution/linux/build-linux-local.mjs",
"test:e2e": "pnpm run ensure:electron-runtime && npx playwright test --config tests/playwright.config.ts --project=electron-headless",
"test:e2e:workspace-session-golden": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/golden-quit-relaunch-session.spec.ts tests/e2e/golden-terminal-file-link.spec.ts tests/e2e/golden-worktree-create-switch.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
"test:e2e:multi-client-navigation": "node config/scripts/ci/e2e-selection/run-multi-client-navigation-e2e.mjs",
"test:e2e:terminal-layout-parity": "node config/scripts/runtime-verification/terminal-e2e/run-terminal-layout-parity.mjs",
"test:e2e:floating-mobile-emulator": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/floating-mobile-emulator-tab.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
"test:e2e:terminal-rendering-golden": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/terminal-raw-emoji-table-scroll-restore.spec.ts --grep @terminal-rendering-golden --config tests/playwright.config.ts --project electron-headless --project electron-headful --workers=1",
"test:e2e:source-control-golden": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/golden-file-open-edit-save.spec.ts tests/e2e/golden-source-control-commit.spec.ts tests/e2e/golden-source-control-open-diff.spec.ts --grep @golden --config tests/playwright.config.ts --project electron-headless --workers=1",
"test:e2e:posix-profile-index-golden": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/golden-posix-profile-index-fsync.spec.ts --grep @posix-profile-index-golden --config tests/playwright.config.ts --project electron-headless --workers=1",
"test:e2e:agent-tui-golden": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/golden-agent-tui-launch.spec.ts tests/e2e/golden-shell-after-agent-exit.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
"test:e2e:tab-bar-agent-launch-golden": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/golden-tab-bar-agent-launch.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
"test:e2e:terminal-rendering-release-evidence": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/terminal-opencode-emoji-table-rendering.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=2",
"test:e2e:terminal-perf": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/terminal-typing-latency.spec.ts tests/e2e/terminal-output-scheduler.spec.ts tests/e2e/terminal-hidden-tui-visual-restore.spec.ts tests/e2e/artificial-opencode-terminal-load.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=2",
"test:e2e:terminal-perf:scale": "pnpm run ensure:electron-runtime && node config/scripts/runtime-verification/terminal-e2e/run-terminal-scale-perf-e2e.mjs",
"test:e2e:terminal-perf:scale:report": "pnpm run ensure:electron-runtime && node config/scripts/runtime-verification/terminal-e2e/run-terminal-scale-perf-report-gate.mjs",
"test:e2e:terminal-perf:check-report": "node config/scripts/performance/terminal-reporting/check-terminal-perf-report-budgets.mjs",
"test:e2e:terminal-perf:summarize": "node config/scripts/performance/terminal-reporting/summarize-terminal-perf-report.mjs",
"test:e2e:terminal-perf:html-report": "node config/scripts/performance/terminal-reporting/generate-terminal-perf-html-report.mjs",
"test:e2e:source-control-scale": "pnpm run ensure:electron-runtime && npx playwright test tests/e2e/source-control-large-file-count.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
"win-update-e2e": "node tests/tools/win-update-e2e/run.mjs",
"win-crash-survival-e2e": "node tests/tools/win-crash-survival-e2e/run.mjs",
"smoke:windows-pty-native-capability": "node tests/tools/windows-pty-native-capability-smoke/run.mjs",
"test:e2e:headful": "pnpm run ensure:electron-runtime && npx playwright test --config tests/playwright.config.ts --project electron-headful",
"test:e2e:terminal-ime-native": "node config/scripts/runtime-verification/terminal-e2e/run-terminal-ibus-hangul-e2e.mjs",
"test:e2e:computer": "vitest run --config tests/e2e/vitest.config.ts",
"bench:idle-cpu": "pnpm run ensure:electron-runtime && node config/scripts/performance/idle-cpu/run-idle-cpu-benchmark.mjs",
"bench:spinners": "pnpm run ensure:electron-runtime && node tests/tools/benchmarks/spinner-rendering/run.mjs",
"bench:macos-computer-helper-owner-loss": "node config/scripts/performance/macos-computer-owner/macos-computer-helper-owner-loss-benchmark.mjs",
"bench:startup": "pnpm run ensure:electron-runtime && node tests/tools/benchmarks/startup-time-bench.mjs",
"bench:daemon-coldstart": "pnpm run ensure:electron-runtime && node tests/tools/benchmarks/daemon-coldstart-bench.mjs",
"bench:wsl-hook-relay-reattach": "pnpm run build:wsl-guest && node config/scripts/performance/wsl-hooks/wsl-hook-relay-reattach-benchmark.mjs",
"bench:wsl-git-shell": "node config/scripts/performance/wsl-git/wsl-git-shell-benchmark.mjs",
"bench:hang-watchdog-memory": "pnpm run ensure:electron-runtime && node config/scripts/diagnostics/hang-watchdog/hang-watchdog-memory-benchmark.mjs",
"bench:main-thread-jank": "pnpm run ensure:electron-runtime && node tests/tools/benchmarks/main-thread-jank-bench.mjs",
"bench:worktree-deletion": "node tests/tools/benchmarks/worktree-deletion-dev-bench.mjs",
"bench:zustand-selector-fanout": "node config/scripts/performance/renderer-projection/zustand-selector-fanout-benchmark.mjs",
"bench:agent-inspection-cadence": "node config/scripts/performance/agent-lineage/agent-inspection-cadence-batching-benchmark.mjs",
"bench:renderer-quadratic-scans": "node config/scripts/performance/renderer-markdown/renderer-quadratic-scan-benchmark.mjs",
"bench:session-write-hot-path": "node config/scripts/performance/session-transcripts/session-write-hot-path-benchmark.mjs",
"bench:terminal-partial-escape-tail": "node config/scripts/performance/terminal-stream/terminal-partial-escape-tail-benchmark.mjs",
"bench:terminal-multiplex-ack-pacing": "node config/scripts/performance/terminal-stream/terminal-multiplex-ack-pacing-benchmark.mjs",
"bench:worktree-refresh-churn": "node --disable-warning=MODULE_TYPELESS_PACKAGE_JSON config/scripts/performance/source-control/worktree-refresh-churn-benchmark.mjs",
"bench:cold-park-reveal": "pnpm run ensure:electron-runtime && node tests/tools/benchmarks/terminal-cold-park-reveal-bench.mjs",
"bench:cold-park-resource": "pnpm run ensure:electron-runtime && node tests/tools/benchmarks/terminal-cold-park-resource-bench.mjs",
"bench:compare": "node config/scripts/performance/measurement/compare-benchmark-artifacts.mjs",
"test:e2e:remote-bulk-open-freeze": "pnpm run ensure:electron-runtime && pnpm exec playwright test tests/e2e/remote-session-bulk-open-freeze-repro.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
"repro:live-remote-bulk-open-freeze": "node config/scripts/diagnostics/remote-freeze/live-remote-bulk-open-freeze-repro.mjs",
"repro:live-remote-realistic-freeze": "node config/scripts/diagnostics/remote-freeze/live-remote-realistic-freeze-repro.mjs",
"audit:anti-slop": "node config/scripts/static-analysis/oxlint-contracts/sync-anti-slop-plugin.mjs && bun --smol node_modules/oxlint/bin/oxlint --config config/oxlint-anti-slop.json src config tests mobile --deny-warnings",
"sync:anti-slop-plugin": "node config/scripts/static-analysis/oxlint-contracts/sync-anti-slop-plugin.mjs",
"build:packages": "node config/scripts/workspace-package-build/build-workspace-packages.mjs",
"check:process-host-imports": "node config/scripts/static-analysis/process-boundaries/check-process-host-imports.mjs",
"check:main-sync-spawn-ratchet": "node config/scripts/static-analysis/process-boundaries/check-main-sync-spawn-ratchet.mjs",
"check:main-sync-fs-ratchet": "node config/scripts/static-analysis/ratchets/runtime-lifecycle/check-main-sync-fs-ratchet.mjs",
"check:recurring-timer-ratchet": "node config/scripts/static-analysis/ratchets/runtime-lifecycle/check-recurring-timer-ratchet.mjs",
"check:compat-boundary-imports": "node config/scripts/static-analysis/process-boundaries/check-compat-boundary-imports.mjs",
"check:import-boundaries": "bun config/scripts/static-analysis/process-boundaries/check-import-boundaries.mjs"
},
"dependencies": {
"@anthropic-ai/claude-agent-sdk": "0.3.284",
"@floating-ui/dom": "1.8.0",
"@linear/sdk": "^97.0.0",
"@orca/process-host": "workspace:*",
"@parcel/watcher": "^2.5.6",
"@xterm/addon-serialize": "0.15.0-beta.330",
"@xterm/headless": "6.1.0-beta.334",
"agent-browser": "~0.39.4",
"electron-updater": "^6.8.10",
"fflate": "0.8.3",
"i18next": "^26.5.11",
"jsonc-parser": "^3.3.1",
"mime-types": "3.0.2",
"node-pty": "^1.1.0",
"posthog-node": "^5.52.5",
"proper-lockfile": "4.1.2",
"qrcode": "^1.5.4",
"react-i18next": "17.0.19",
"serve-sim": "0.1.47",
"smol-toml": "1.9.1",
"ssh2": "^1.17.0",
"stream-chain": "4.2.6",
"stream-json": "3.7.0",
"tldts": "7.4.18",
"tweetnacl": "^1.0.3",
"ws": "^8.22.0",
"yaml": "^2.9.1",
"zod": "~4.6.7"
},
"devDependencies": {
"@actions/expressions": "0.3.61",
"@ast-grep/cli": "0.51.0",
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@electron-toolkit/tsconfig": "^2.0.0",
"@electron/osx-sign": "2.7.0",
"@electron/rebuild": "^4.2.1",
"@monaco-editor/react": "^4.7.0",
"@noble/hashes": "1.8.0",
"@oxlint/plugins": "1.89.0",
"@playwright/test": "^1.64.1",
"@sanity/diff-match-patch": "^3.2.1",
"@shadcn/lint": "~0.1.5",
"@stablyai/playwright-test": "^2.1.16",
"@tailwindcss/vite": "^4.3.3",
"@tanstack/react-virtual": "^3.14.13",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.3",
"@testing-library/user-event": "^14.6.8",
"@tiptap/extension-code-block": "3.31.3",
"@tiptap/extension-code-block-lowlight": "3.31.3",
"@tiptap/extension-details": "3.31.3",
"@tiptap/extension-image": "3.31.3",
"@tiptap/extension-link": "3.31.3",
"@tiptap/extension-list": "3.31.3",
"@tiptap/extension-mathematics": "3.31.3",
"@tiptap/extension-placeholder": "3.31.3",
"@tiptap/extension-table": "3.31.3",
"@tiptap/markdown": "3.31.3",
"@tiptap/pm": "3.31.3",
"@tiptap/react": "3.31.3",
"@tiptap/starter-kit": "3.31.3",
"@types/chrome": "0.0.287",
"@types/hast": "^3.0.4",
"@types/mdast": "^4.0.4",
"@types/node": "^24.19.2",
"@types/proper-lockfile": "^4.1.4",
"@types/qrcode": "^1.5.6",
"@types/react": "~19.2.18",
"@types/react-dom": "~19.2.7",
"@types/ssh2": "^1.15.6",
"@types/ws": "^8.18.2",
"@vitejs/plugin-react": "^6.1.2",
"@vscode/ripgrep-universal": "1.18.0",
"@xterm/addon-fit": "0.12.0-beta.332",
"@xterm/addon-image": "0.10.0-beta.331",
"@xterm/addon-ligatures": "0.11.0-beta.330",
"@xterm/addon-search": "0.17.0-beta.330",
"@xterm/addon-unicode11": "0.10.0-beta.330",
"@xterm/addon-web-links": "0.13.0-beta.330",
"@xterm/addon-webgl": "0.20.0-beta.329",
"@xterm/xterm": "6.1.0-beta.336",
"ajv": "8.20.0",
"bun": "1.4.4",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"devalue": "6.0.3",
"diff": "8.0.4",
"dompurify": "3.4.17",
"electron": "43.8.6",
"electron-builder": "26.15.3",
"electron-vite": "^6.0.0",
"emoji-picker-react": "^4.22.3",
"emojibase-data": "17.0.0",
"es-module-lexer": "1.7.0",
"esbuild": "^0.28.2",
"github-slugger": "2.0.0",
"graphql": "16.14.2",
"happy-dom": "^21.0.4",
"hast-util-from-html-isomorphic": "2.0.0",
"hast-util-to-jsx-runtime": "2.3.6",
"hast-util-to-text": "4.0.2",
"html-to-image": "^1.11.13",
"husky": "^9.1.7",
"i18next-cli": "1.74.2",
"katex": "0.18.10",
"lint-staged": "^16.4.0",
"lowlight": "^3.3.0",
"lucide-react": "^0.577.0",
"marked": "^17.0.1",
"mermaid": "^11.17.2",
"monaco-editor": "^0.55.1",
"node-gyp": "12.3.0",
"oxc-transform-react": "~0.152.0",
"oxfmt": "^0.74.0",
"oxlint": "^1.91.0",
"oxlint-plugin-anti-slop": "github:dmmulroy/anti-slop#c44ef22ca116d0ba62a3ff663a0bd13a3f3fa40b",
"oxlint-plugin-react-doctor": "0.9.14",
"oxlint-tsgolint": "7.0.2005",
"pdfjs-dist": "^6.3.289",
"playwright-core": "1.64.1",
"pngjs": "^7.0.0",
"radix-ui": "^1.6.7",
"react": "~19.2.8",
"react-colorful": "^5.7.0",
"react-dom": "~19.2.8",
"react-grab": "^0.1.33",
"react-markdown": "^10.1.0",
"rehype-highlight": "^7.0.2",
"rehype-katex": "^7.0.1",
"rehype-raw": "^7.0.0",
"rehype-sanitize": "^6.0.0",
"rehype-slug": "^6.0.0",
"remark-breaks": "^4.0.0",
"remark-cjk-friendly": "^2.3.1",
"remark-frontmatter": "^5.0.0",
"remark-gfm": "^4.0.1",
"remark-math": "^6.0.0",
"remark-parse": "^11.0.0",
"remark-rehype": "11.1.2",
"remend": "1.4.0",
"shiki": "4.5.0",
"sonner": "2.0.7",
"sucrase": "3.35.1",
"tailwind-merge": "^3.7.0",
"tailwindcss": "^4.3.3",
"tar": "7.5.22",
"tsrs": "0.18.0-ts7.1.0-dev.20260929",
"tw-animate-css": "^1.4.0",
"typescript": "^7.0.2",
"typescript-api": "npm:typescript@6.0.3",
"unified": "^11.0.5",
"unist-util-visit-parents": "6.0.2",
"vite": "^8.3.5",
"vitest": "5.0.5",
"vscode-oniguruma": "^2.0.1",
"zustand": "^5.0.15"
},
"optionalDependencies": {
"@orca/windows-registry": "workspace:*",
"@orca/windows-security": "workspace:*",
"@vscode/windows-process-tree": "0.8.0",
"sherpa-onnx-darwin-arm64": "1.12.37",
"sherpa-onnx-darwin-x64": "1.12.37",
"sherpa-onnx-linux-arm64": "1.12.37",
"sherpa-onnx-linux-x64": "1.12.37",
"sherpa-onnx-win-x64": "1.12.37"
},
"lint-staged": {
"{*.{ts,tsx,js,jsx,mjs,mts,cts},!(cloud)/**/*.{ts,tsx,js,jsx,mjs,mts,cts}}": [
"oxlint --no-error-on-unmatched-pattern",
"oxlint --config config/oxlint-js-plugins.json",
"ast-grep scan --config config/sgconfig.yml --min-severity warning",
"oxlint --config config/oxlint-react-doctor.json",
"oxfmt --write --no-error-on-unmatched-pattern"
],
"{*.{json,css,md,mdx,yml,yaml},!(cloud)/**/*.{json,css,md,mdx,yml,yaml}}": [
"oxfmt --write --no-error-on-unmatched-pattern"
]
},
"engines": {
"node": "24"
},
"packageManager": "pnpm@12.14.0+sha512.c18ba6d87993d3d164cb5e8948f32b2c06ee854487e06cd8d86781342fb3e5bb4634367034711e86802baa9c37bea906ce1929ad08d70884c97d801df13389a6",
"reactDoctor": {
"ignore": {
"overrides": [
{
"files": [
"resources/plugins/declarative/*.mjs"
],
"rules": [
"eslint/max-lines"
]
},
{
"files": [
"src/renderer/src/components/editor/combined-diff/review-controls/use-combined-diff-view-preferences.ts"
],
"rules": [
"react-doctor/no-derived-state-effect"
]
},
{
"files": [
"src/renderer/src/components/task-page/github/use-task-page-github-issue-draft.ts",
"src/renderer/src/components/task-page/jira/use-task-page-jira-creation-state.ts"
],
"rules": [
"react-doctor/no-adjust-state-on-prop-change"
]
},
{
"files": [
"src/renderer/src/components/editor/combined-diff/browse-files/use-combined-diff-tree-navigation.ts",
"src/renderer/src/components/editor/combined-diff/load-sections/combined-diff-section-load-registry.ts",
"src/renderer/src/components/editor/combined-diff/review-controls/use-combined-diff-section-actions.ts"
],
"rules": [
"react-doctor/no-ref-current-in-render"
]
}
]
},
"rules": {
"react-doctor/js-combine-iterations": "off",
"react-doctor/no-initialize-state": "off",
"react-doctor/no-unstable-nested-components": "off"
}
}
}