@harness-mix/cli 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/LICENSE +202 -0
- package/NOTICE +14 -0
- package/README.md +262 -0
- package/Start-Codex.cmd +5 -0
- package/config/codex-desktop-compatibility.json +29 -0
- package/docs/chatgpt-web-sidebar.md +27 -0
- package/docs/cross-platform.md +73 -0
- package/docs/harness-management.md +44 -0
- package/docs/images/codex-desktop-home.png +0 -0
- package/docs/images/codex-desktop-session.png +0 -0
- package/docs/kiro-cursor-integration.md +3 -0
- package/docs/multi-agent-collaboration.md +89 -0
- package/docs/native-acp.md +122 -0
- package/docs/native-codex.md +95 -0
- package/docs/superpowers/specs/2026-09-13-native-hardening-design.md +326 -0
- package/licenses/codex-host-MIT.txt +21 -0
- package/output/native-build/desktop-controller.mjs +1466 -0
- package/output/native-build/harness-mix-appx.exe +0 -0
- package/output/native-build/harness-mix-secret.exe +0 -0
- package/output/native-build/harness-mix-shim.exe +0 -0
- package/output/native-build/renderer-extension.js +29380 -0
- package/package.json +168 -0
- package/scripts/acp-capabilities-probe.cjs +100 -0
- package/scripts/adapters-test.cjs +17 -0
- package/scripts/antigravity-adapter-test.cjs +529 -0
- package/scripts/architecture-test.cjs +62 -0
- package/scripts/build-native.cjs +56 -0
- package/scripts/catalog-test.cjs +25 -0
- package/scripts/cdp-eval.cjs +40 -0
- package/scripts/cdp-watch.cjs +36 -0
- package/scripts/check.cjs +23 -0
- package/scripts/codebuddy-migration-test.cjs +47 -0
- package/scripts/codex-adapter-test.cjs +83 -0
- package/scripts/collaboration-recovery-test.cjs +111 -0
- package/scripts/collaboration-test.cjs +108 -0
- package/scripts/collaboration-ui-smoke.cjs +57 -0
- package/scripts/concurrency-layers-test.cjs +181 -0
- package/scripts/contracts-test.cjs +105 -0
- package/scripts/core-concurrency-test.cjs +103 -0
- package/scripts/core-replay-test.cjs +179 -0
- package/scripts/core-runtime-test.cjs +104 -0
- package/scripts/core-services-test.cjs +50 -0
- package/scripts/determinism-test.cjs +36 -0
- package/scripts/diagnostics.cjs +63 -0
- package/scripts/docs-command-test.cjs +49 -0
- package/scripts/dsh-adapter-test.cjs +90 -0
- package/scripts/dsh-collaboration-acp-test.cjs +19 -0
- package/scripts/dsh-native.cjs +9 -0
- package/scripts/dsh-native.cmd +2 -0
- package/scripts/e2e-codex.cjs +82 -0
- package/scripts/e2e-collaboration.cjs +60 -0
- package/scripts/e2e-core-files.cjs +58 -0
- package/scripts/e2e-core-fork.cjs +49 -0
- package/scripts/e2e-core-resume.cjs +49 -0
- package/scripts/e2e-delegate.cjs +38 -0
- package/scripts/e2e-dsh.cjs +23 -0
- package/scripts/e2e-native-acp.cjs +42 -0
- package/scripts/e2e-native-commands.cjs +54 -0
- package/scripts/e2e-native-host.cjs +144 -0
- package/scripts/e2e-openclaw-image.cjs +59 -0
- package/scripts/e2e-openclaw.cjs +21 -0
- package/scripts/e2e-pi.cjs +23 -0
- package/scripts/e2e-shadow.cjs +52 -0
- package/scripts/fixture-capture.cjs +103 -0
- package/scripts/harness-health-check.cjs +72 -0
- package/scripts/kiro-cursor-adapters-test.cjs +82 -0
- package/scripts/launch-codex.cjs +5 -0
- package/scripts/native-acp-depth-test.cjs +189 -0
- package/scripts/native-compatibility-test.cjs +42 -0
- package/scripts/native-config-test.cjs +25 -0
- package/scripts/native-file-change-test.cjs +94 -0
- package/scripts/native-host.cjs +8 -0
- package/scripts/native-images-test.cjs +56 -0
- package/scripts/native-job-object-test.cjs +83 -0
- package/scripts/native-protocol-test.cjs +258 -0
- package/scripts/native-rollback-test.cjs +46 -0
- package/scripts/native-secret-test.cjs +57 -0
- package/scripts/native-shim-test.cjs +41 -0
- package/scripts/native-sidebar-test.cjs +88 -0
- package/scripts/native-ui-smoke.cjs +94 -0
- package/scripts/native-update-apply-test.cjs +215 -0
- package/scripts/native-updater-test.cjs +109 -0
- package/scripts/native-vendor-adapters-test.cjs +88 -0
- package/scripts/openclaw-acp-probe.cjs +39 -0
- package/scripts/openclaw-adapter-test.cjs +180 -0
- package/scripts/openclaw-models-probe.cjs +13 -0
- package/scripts/platform-test.cjs +62 -0
- package/scripts/projector-test.cjs +144 -0
- package/scripts/sequence-test.cjs +57 -0
- package/scripts/shadow-test.cjs +154 -0
- package/scripts/support/legacy-projection.cjs +95 -0
- package/scripts/support/legacy-transcript.cjs +48 -0
- package/scripts/support/parity-observer.cjs +27 -0
- package/scripts/support/shadow-comparator.cjs +62 -0
- package/scripts/support/shadow.cjs +114 -0
- package/scripts/switch-harness-test.cjs +145 -0
- package/scripts/thread-title-test.cjs +98 -0
- package/scripts/tool-concurrency-regression-test.cjs +119 -0
- package/scripts/transcript-test.cjs +24 -0
- package/scripts/turn-manager-test.cjs +91 -0
- package/scripts/workspace-test.cjs +86 -0
- package/src/assets/brand-harness-mix.png +0 -0
- package/src/assets/icons/antigravity-color.svg +1 -0
- package/src/assets/icons/claude-color.svg +1 -0
- package/src/assets/icons/codebuddy-color.svg +1 -0
- package/src/assets/icons/codex-color.svg +1 -0
- package/src/assets/icons/codex-harness.svg +1 -0
- package/src/assets/icons/cursor-cli-color.svg +1 -0
- package/src/assets/icons/cursor.svg +1 -0
- package/src/assets/icons/deepseek-color.svg +1 -0
- package/src/assets/icons/grok-color.svg +1 -0
- package/src/assets/icons/hermes-color.svg +1 -0
- package/src/assets/icons/kiro-cli-color.svg +11 -0
- package/src/assets/icons/model-astra.svg +1 -0
- package/src/assets/icons/model-claude.svg +1 -0
- package/src/assets/icons/model-deepseek.svg +1 -0
- package/src/assets/icons/model-gemini.svg +1 -0
- package/src/assets/icons/model-grok.svg +1 -0
- package/src/assets/icons/model-hunyuan.svg +1 -0
- package/src/assets/icons/model-kimi.svg +1 -0
- package/src/assets/icons/model-minimax.svg +1 -0
- package/src/assets/icons/model-openai.svg +1 -0
- package/src/assets/icons/model-qwen-color.svg +1 -0
- package/src/assets/icons/model-xiaomimimo.svg +1 -0
- package/src/assets/icons/model-zai.svg +1 -0
- package/src/assets/icons/omp-color.svg +1 -0
- package/src/assets/icons/openclaw-color.svg +1 -0
- package/src/assets/icons/opencode-color.svg +1 -0
- package/src/assets/icons/pi.svg +1 -0
- package/src/assets/icons/pinumber1_80899.svg +48 -0
- package/src/assets/icons/qoder-color.svg +1 -0
- package/src/assets/icons/trae-color.svg +1 -0
- package/src/assets/icons/workbuddy-color.svg +1 -0
- package/src/assets/icons/zcode-color.svg +1 -0
- package/src/main/adapters/acp-interactions.js +132 -0
- package/src/main/adapters/acp.js +191 -0
- package/src/main/adapters/antigravity.js +1368 -0
- package/src/main/adapters/claude.js +520 -0
- package/src/main/adapters/codebuddy-history.js +90 -0
- package/src/main/adapters/codebuddy.js +2 -0
- package/src/main/adapters/codex-app-server.js +119 -0
- package/src/main/adapters/codex.js +559 -0
- package/src/main/adapters/cursor.js +2 -0
- package/src/main/adapters/dsh-web-host.js +202 -0
- package/src/main/adapters/dsh.js +446 -0
- package/src/main/adapters/grok.js +277 -0
- package/src/main/adapters/hermes.js +24 -0
- package/src/main/adapters/index.js +32 -0
- package/src/main/adapters/kiro-history.js +43 -0
- package/src/main/adapters/kiro.js +2 -0
- package/src/main/adapters/native-acp-command.js +47 -0
- package/src/main/adapters/native-acp.js +435 -0
- package/src/main/adapters/omp.js +12 -0
- package/src/main/adapters/openclaw-gateway.js +211 -0
- package/src/main/adapters/openclaw.js +337 -0
- package/src/main/adapters/opencode-server.js +73 -0
- package/src/main/adapters/opencode.js +178 -0
- package/src/main/adapters/pi-family.js +342 -0
- package/src/main/adapters/pi-usage.js +24 -0
- package/src/main/adapters/pi.js +10 -0
- package/src/main/adapters/qoder.js +7 -0
- package/src/main/adapters/trae.js +7 -0
- package/src/main/adapters/workbuddy.js +2 -0
- package/src/main/adapters/zcode.js +7 -0
- package/src/main/harness-adapter/contract-test.js +53 -0
- package/src/main/harness-adapter/contract.js +34 -0
- package/src/main/harness-adapter/event-normalizer.js +252 -0
- package/src/main/harness-adapter/fixture-recorder.js +56 -0
- package/src/main/harness-adapter/index.js +6 -0
- package/src/main/harness-adapter/manifest.js +44 -0
- package/src/main/host/collaboration-mcp.cjs +35 -0
- package/src/main/host/collaboration-pi.mjs +17 -0
- package/src/main/host/collaboration-tools.js +16 -0
- package/src/main/host/collaboration-worktree.js +151 -0
- package/src/main/host/collaboration.js +264 -0
- package/src/main/host/core-session.js +81 -0
- package/src/main/host/handoff.js +46 -0
- package/src/main/host/history-import.js +55 -0
- package/src/main/host/jsonl.js +116 -0
- package/src/main/host/native-history.js +79 -0
- package/src/main/host/runtime.js +1050 -0
- package/src/main/host/session-history.js +63 -0
- package/src/main/host/store.js +75 -0
- package/src/main/native/compatibility.js +56 -0
- package/src/main/native/config.js +55 -0
- package/src/main/native/host.js +153 -0
- package/src/main/native/icons.js +105 -0
- package/src/main/native/input.js +43 -0
- package/src/main/native/launcher.js +188 -0
- package/src/main/native/platform.js +64 -0
- package/src/main/native/process-utils.js +57 -0
- package/src/main/native/protocol.js +836 -0
- package/src/main/native/redact.js +35 -0
- package/src/main/native/rs/Cargo.lock +15 -0
- package/src/main/native/rs/Cargo.toml +9 -0
- package/src/main/native/rs/crates/appx/Cargo.toml +13 -0
- package/src/main/native/rs/crates/appx/src/main.rs +309 -0
- package/src/main/native/rs/crates/secret/Cargo.toml +10 -0
- package/src/main/native/rs/crates/secret/src/main.rs +262 -0
- package/src/main/native/rs/crates/shim/Cargo.toml +10 -0
- package/src/main/native/rs/crates/shim/src/job.rs +83 -0
- package/src/main/native/rs/crates/shim/src/main.rs +257 -0
- package/src/main/native/secure-store.js +59 -0
- package/src/main/native/thread-list.js +38 -0
- package/src/main/native/update-state.js +110 -0
- package/src/main/native/updater.js +394 -0
- package/src/main/native/usage.js +105 -0
- package/src/main/protocol-core/capability-manager.js +16 -0
- package/src/main/protocol-core/event-router.js +32 -0
- package/src/main/protocol-core/file-change-projector.js +45 -0
- package/src/main/protocol-core/index.js +8 -0
- package/src/main/protocol-core/interaction-router.js +30 -0
- package/src/main/protocol-core/projector.js +238 -0
- package/src/main/protocol-core/protocol-core.js +132 -0
- package/src/main/protocol-core/sequence-validator.js +44 -0
- package/src/main/protocol-core/thread-manager.js +50 -0
- package/src/main/protocol-core/turn-manager.js +63 -0
- package/src/main/shared-contracts/capability.js +35 -0
- package/src/main/shared-contracts/event.js +55 -0
- package/src/main/shared-contracts/ids.js +12 -0
- package/src/main/shared-contracts/index.js +11 -0
- package/src/main/shared-contracts/interaction.js +37 -0
- package/src/main/shared-contracts/item.js +51 -0
- package/src/main/shared-contracts/native-ref.js +24 -0
- package/src/main/shared-contracts/thread.js +36 -0
- package/src/main/shared-contracts/turn.js +54 -0
- package/src/main/workspace/core-review.js +53 -0
- package/src/main/workspace/diff.js +27 -0
- package/src/main/workspace/file-changes.js +21 -0
- package/src/main/workspace/files.js +76 -0
- package/src/main/workspace/review-controller.js +102 -0
- package/src/main/workspace/review.js +88 -0
- package/src/native-ui/LICENSE +21 -0
- package/src/native-ui/README.md +16 -0
- package/src/native-ui/desktop-control/dist/cdp-client.d.ts +53 -0
- package/src/native-ui/desktop-control/dist/cdp-client.d.ts.map +1 -0
- package/src/native-ui/desktop-control/dist/cdp-client.js +258 -0
- package/src/native-ui/desktop-control/dist/cdp-client.js.map +1 -0
- package/src/native-ui/desktop-control/dist/contract-audit.d.ts +73 -0
- package/src/native-ui/desktop-control/dist/contract-audit.d.ts.map +1 -0
- package/src/native-ui/desktop-control/dist/contract-audit.js +152 -0
- package/src/native-ui/desktop-control/dist/contract-audit.js.map +1 -0
- package/src/native-ui/desktop-control/dist/controller-attachment-server.d.ts +10 -0
- package/src/native-ui/desktop-control/dist/controller-attachment-server.d.ts.map +1 -0
- package/src/native-ui/desktop-control/dist/controller-attachment-server.js +77 -0
- package/src/native-ui/desktop-control/dist/controller-attachment-server.js.map +1 -0
- package/src/native-ui/desktop-control/dist/index.d.ts +21 -0
- package/src/native-ui/desktop-control/dist/index.d.ts.map +1 -0
- package/src/native-ui/desktop-control/dist/index.js +14 -0
- package/src/native-ui/desktop-control/dist/index.js.map +1 -0
- package/src/native-ui/desktop-control/dist/main-process-title-policy.d.ts +24 -0
- package/src/native-ui/desktop-control/dist/main-process-title-policy.d.ts.map +1 -0
- package/src/native-ui/desktop-control/dist/main-process-title-policy.js +284 -0
- package/src/native-ui/desktop-control/dist/main-process-title-policy.js.map +1 -0
- package/src/native-ui/desktop-control/dist/production-controller.d.ts +32 -0
- package/src/native-ui/desktop-control/dist/production-controller.d.ts.map +1 -0
- package/src/native-ui/desktop-control/dist/production-controller.js +294 -0
- package/src/native-ui/desktop-control/dist/production-controller.js.map +1 -0
- package/src/native-ui/desktop-control/dist/release-main.d.ts +2 -0
- package/src/native-ui/desktop-control/dist/release-main.d.ts.map +1 -0
- package/src/native-ui/desktop-control/dist/release-main.js +17 -0
- package/src/native-ui/desktop-control/dist/release-main.js.map +1 -0
- package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.d.ts +49 -0
- package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.d.ts.map +1 -0
- package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.js +214 -0
- package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.js.map +1 -0
- package/src/native-ui/desktop-control/dist/renderer-control-session.d.ts +79 -0
- package/src/native-ui/desktop-control/dist/renderer-control-session.d.ts.map +1 -0
- package/src/native-ui/desktop-control/dist/renderer-control-session.js +366 -0
- package/src/native-ui/desktop-control/dist/renderer-control-session.js.map +1 -0
- package/src/native-ui/desktop-control/dist/renderer-dom.d.ts +24 -0
- package/src/native-ui/desktop-control/dist/renderer-dom.d.ts.map +1 -0
- package/src/native-ui/desktop-control/dist/renderer-dom.js +110 -0
- package/src/native-ui/desktop-control/dist/renderer-dom.js.map +1 -0
- package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-policy.d.ts +20 -0
- package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-policy.d.ts.map +1 -0
- package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-policy.js +173 -0
- package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-policy.js.map +1 -0
- package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-runtime.d.ts +38 -0
- package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-runtime.d.ts.map +1 -0
- package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-runtime.js +637 -0
- package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-runtime.js.map +1 -0
- package/src/native-ui/desktop-control/dist/tsconfig.tsbuildinfo +1 -0
- package/src/native-ui/desktop-control/package.json +22 -0
- package/src/native-ui/desktop-control/scripts/build-release.mjs +94 -0
- package/src/native-ui/desktop-control/src/cdp-client.ts +347 -0
- package/src/native-ui/desktop-control/src/contract-audit.ts +291 -0
- package/src/native-ui/desktop-control/src/controller-attachment-server.ts +93 -0
- package/src/native-ui/desktop-control/src/index.ts +91 -0
- package/src/native-ui/desktop-control/src/main-process-title-policy.ts +372 -0
- package/src/native-ui/desktop-control/src/production-controller.ts +347 -0
- package/src/native-ui/desktop-control/src/release-main.ts +18 -0
- package/src/native-ui/desktop-control/src/renderer-cdp-control-session.ts +358 -0
- package/src/native-ui/desktop-control/src/renderer-control-session.ts +595 -0
- package/src/native-ui/desktop-control/src/renderer-dom.ts +144 -0
- package/src/native-ui/desktop-control/src/renderer-draft-prewarm-policy.ts +217 -0
- package/src/native-ui/desktop-control/src/renderer-draft-prewarm-runtime.ts +749 -0
- package/src/native-ui/desktop-control/test/cdp-client.test.ts +157 -0
- package/src/native-ui/desktop-control/test/contract-audit.test.ts +56 -0
- package/src/native-ui/desktop-control/test/controller-attachment-server.test.ts +98 -0
- package/src/native-ui/desktop-control/test/index.test.ts +11 -0
- package/src/native-ui/desktop-control/test/main-process-title-policy.test.ts +168 -0
- package/src/native-ui/desktop-control/test/production-controller.test.ts +392 -0
- package/src/native-ui/desktop-control/test/renderer-cdp-control-session.test.ts +205 -0
- package/src/native-ui/desktop-control/test/renderer-control-session.test.ts +451 -0
- package/src/native-ui/desktop-control/test/renderer-dom.test.ts +62 -0
- package/src/native-ui/desktop-control/test/renderer-draft-prewarm-policy.test.ts +1029 -0
- package/src/native-ui/desktop-control/tsconfig.json +12 -0
- package/src/native-ui/renderer-extension/dist/types/agent-group-preference.d.ts +39 -0
- package/src/native-ui/renderer-extension/dist/types/agent-group-preference.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/agent-selection-state.d.ts +85 -0
- package/src/native-ui/renderer-extension/dist/types/agent-selection-state.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/audit-entry.d.ts +2 -0
- package/src/native-ui/renderer-extension/dist/types/audit-entry.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/codex-locale-adapter.d.ts +23 -0
- package/src/native-ui/renderer-extension/dist/types/codex-locale-adapter.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/collaboration-icon.d.ts +2 -0
- package/src/native-ui/renderer-extension/dist/types/collaboration-icon.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/contract-audit.d.ts +37 -0
- package/src/native-ui/renderer-extension/dist/types/contract-audit.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/harness-mix-icons.d.ts +3 -0
- package/src/native-ui/renderer-extension/dist/types/harness-mix-icons.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/harness-mix-settings.d.ts +3 -0
- package/src/native-ui/renderer-extension/dist/types/harness-mix-settings.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/index.d.ts +51 -0
- package/src/native-ui/renderer-extension/dist/types/index.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/install-renderer-binding.d.ts +4 -0
- package/src/native-ui/renderer-extension/dist/types/install-renderer-binding.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/probe-entry.d.ts +2 -0
- package/src/native-ui/renderer-extension/dist/types/probe-entry.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/production-entry.d.ts +9 -0
- package/src/native-ui/renderer-extension/dist/types/production-entry.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-agent-icon.d.ts +4 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-agent-icon.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-agent-picker.d.ts +62 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-agent-picker.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts +70 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-options.d.ts +34 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-options.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-state.d.ts +19 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-state.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-collab-cards.d.ts +40 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-collab-cards.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-composer-dom.d.ts +82 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-composer-dom.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-credits-control.d.ts +21 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-credits-control.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-external-steering.d.ts +7 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-external-steering.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-fork-control.d.ts +34 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-fork-control.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-harness-command-claim.d.ts +4 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-harness-command-claim.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-harness-command-control.d.ts +15 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-harness-command-control.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-harness-localization.d.ts +25 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-harness-localization.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-harness-mentions.d.ts +23 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-harness-mentions.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts +102 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-model-picker-positioning.d.ts +22 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-model-picker-positioning.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-model-picker.d.ts +54 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-model-picker.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-new-thread-preference.d.ts +18 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-new-thread-preference.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-permission-mode-picker.d.ts +42 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-permission-mode-picker.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-permission-mode-preference.d.ts +9 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-permission-mode-preference.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-request-sender.d.ts +9 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-request-sender.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-session-import-client.d.ts +12 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-session-import-client.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-settings-lifecycle.d.ts +18 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-settings-lifecycle.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-sidebar-agent-icons.d.ts +45 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-sidebar-agent-icons.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-transcript-dom.d.ts +23 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-transcript-dom.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-trigger-chip-style.d.ts +3 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-trigger-chip-style.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-usage-control.d.ts +72 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-usage-control.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/accounts-list.d.ts +24 -0
- package/src/native-ui/renderer-extension/dist/types/settings/accounts-list.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/accounts-page.d.ts +18 -0
- package/src/native-ui/renderer-extension/dist/types/settings/accounts-page.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/accounts-usage.d.ts +27 -0
- package/src/native-ui/renderer-extension/dist/types/settings/accounts-usage.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/connections-page.d.ts +44 -0
- package/src/native-ui/renderer-extension/dist/types/settings/connections-page.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/core.d.ts +38 -0
- package/src/native-ui/renderer-extension/dist/types/settings/core.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/harness-accounts.d.ts +21 -0
- package/src/native-ui/renderer-extension/dist/types/settings/harness-accounts.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/icons.d.ts +6 -0
- package/src/native-ui/renderer-extension/dist/types/settings/icons.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/localization.d.ts +247 -0
- package/src/native-ui/renderer-extension/dist/types/settings/localization.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts +23 -0
- package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/release-notes.d.ts +4 -0
- package/src/native-ui/renderer-extension/dist/types/settings/release-notes.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/session-import-list-controls.d.ts +12 -0
- package/src/native-ui/renderer-extension/dist/types/settings/session-import-list-controls.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/session-import-page.d.ts +8 -0
- package/src/native-ui/renderer-extension/dist/types/settings/session-import-page.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/shell.d.ts +24 -0
- package/src/native-ui/renderer-extension/dist/types/settings/shell.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/trigger.d.ts +45 -0
- package/src/native-ui/renderer-extension/dist/types/settings/trigger.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/settings/update-request.d.ts +6 -0
- package/src/native-ui/renderer-extension/dist/types/settings/update-request.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/dist/types/tsconfig.tsbuildinfo +1 -0
- package/src/native-ui/renderer-extension/dist/types/versioned-renderer-adapter.d.ts +143 -0
- package/src/native-ui/renderer-extension/dist/types/versioned-renderer-adapter.d.ts.map +1 -0
- package/src/native-ui/renderer-extension/package.json +22 -0
- package/src/native-ui/renderer-extension/src/agent-group-preference.ts +174 -0
- package/src/native-ui/renderer-extension/src/agent-selection-state.ts +627 -0
- package/src/native-ui/renderer-extension/src/assets/README.md +13 -0
- package/src/native-ui/renderer-extension/src/assets/antigravity-agent.svg +1 -0
- package/src/native-ui/renderer-extension/src/assets/codex-agent.png +0 -0
- package/src/native-ui/renderer-extension/src/assets/grok-agent.png +0 -0
- package/src/native-ui/renderer-extension/src/assets/kiro-agent.svg +11 -0
- package/src/native-ui/renderer-extension/src/assets/omp-agent.svg +14 -0
- package/src/native-ui/renderer-extension/src/assets/opencode-agent.png +0 -0
- package/src/native-ui/renderer-extension/src/assets.d.ts +26 -0
- package/src/native-ui/renderer-extension/src/audit-entry.ts +5 -0
- package/src/native-ui/renderer-extension/src/codex-locale-adapter.ts +321 -0
- package/src/native-ui/renderer-extension/src/collaboration-icon.ts +13 -0
- package/src/native-ui/renderer-extension/src/contract-audit.ts +102 -0
- package/src/native-ui/renderer-extension/src/harness-mix-icons.ts +31 -0
- package/src/native-ui/renderer-extension/src/harness-mix-settings.ts +88 -0
- package/src/native-ui/renderer-extension/src/index.ts +275 -0
- package/src/native-ui/renderer-extension/src/install-renderer-binding.ts +30 -0
- package/src/native-ui/renderer-extension/src/probe-entry.ts +4 -0
- package/src/native-ui/renderer-extension/src/production-entry.ts +23 -0
- package/src/native-ui/renderer-extension/src/renderer-agent-icon.ts +146 -0
- package/src/native-ui/renderer-extension/src/renderer-agent-picker.ts +814 -0
- package/src/native-ui/renderer-extension/src/renderer-binding-probe.ts +3002 -0
- package/src/native-ui/renderer-extension/src/renderer-codex-account-options.ts +281 -0
- package/src/native-ui/renderer-extension/src/renderer-codex-account-state.ts +53 -0
- package/src/native-ui/renderer-extension/src/renderer-collab-cards.ts +198 -0
- package/src/native-ui/renderer-extension/src/renderer-composer-dom.ts +782 -0
- package/src/native-ui/renderer-extension/src/renderer-credits-control.ts +520 -0
- package/src/native-ui/renderer-extension/src/renderer-external-steering.ts +339 -0
- package/src/native-ui/renderer-extension/src/renderer-fork-control.ts +273 -0
- package/src/native-ui/renderer-extension/src/renderer-harness-command-claim.ts +64 -0
- package/src/native-ui/renderer-extension/src/renderer-harness-command-control.ts +417 -0
- package/src/native-ui/renderer-extension/src/renderer-harness-localization.ts +144 -0
- package/src/native-ui/renderer-extension/src/renderer-harness-mentions.ts +306 -0
- package/src/native-ui/renderer-extension/src/renderer-model-client.ts +572 -0
- package/src/native-ui/renderer-extension/src/renderer-model-picker-positioning.ts +65 -0
- package/src/native-ui/renderer-extension/src/renderer-model-picker.ts +640 -0
- package/src/native-ui/renderer-extension/src/renderer-new-thread-preference.ts +177 -0
- package/src/native-ui/renderer-extension/src/renderer-permission-mode-picker.ts +413 -0
- package/src/native-ui/renderer-extension/src/renderer-permission-mode-preference.ts +49 -0
- package/src/native-ui/renderer-extension/src/renderer-request-sender.ts +43 -0
- package/src/native-ui/renderer-extension/src/renderer-session-import-client.ts +68 -0
- package/src/native-ui/renderer-extension/src/renderer-settings-lifecycle.ts +239 -0
- package/src/native-ui/renderer-extension/src/renderer-sidebar-agent-icons.ts +457 -0
- package/src/native-ui/renderer-extension/src/renderer-transcript-dom.ts +47 -0
- package/src/native-ui/renderer-extension/src/renderer-trigger-chip-style.ts +52 -0
- package/src/native-ui/renderer-extension/src/renderer-usage-control.ts +633 -0
- package/src/native-ui/renderer-extension/src/settings/accounts-list.ts +236 -0
- package/src/native-ui/renderer-extension/src/settings/accounts-page.ts +585 -0
- package/src/native-ui/renderer-extension/src/settings/accounts-usage.ts +221 -0
- package/src/native-ui/renderer-extension/src/settings/accounts.css +683 -0
- package/src/native-ui/renderer-extension/src/settings/connections-page.ts +1394 -0
- package/src/native-ui/renderer-extension/src/settings/core.ts +158 -0
- package/src/native-ui/renderer-extension/src/settings/harness-accounts.ts +195 -0
- package/src/native-ui/renderer-extension/src/settings/icons.ts +141 -0
- package/src/native-ui/renderer-extension/src/settings/localization.ts +800 -0
- package/src/native-ui/renderer-extension/src/settings/pages.ts +632 -0
- package/src/native-ui/renderer-extension/src/settings/release-notes.ts +222 -0
- package/src/native-ui/renderer-extension/src/settings/session-import-list-controls.ts +128 -0
- package/src/native-ui/renderer-extension/src/settings/session-import-page.ts +461 -0
- package/src/native-ui/renderer-extension/src/settings/shell.css +2238 -0
- package/src/native-ui/renderer-extension/src/settings/shell.ts +329 -0
- package/src/native-ui/renderer-extension/src/settings/trigger.ts +323 -0
- package/src/native-ui/renderer-extension/src/settings/update-request.ts +49 -0
- package/src/native-ui/renderer-extension/src/versioned-renderer-adapter.ts +1289 -0
- package/src/native-ui/renderer-extension/test/agent-selection-state.test.ts +611 -0
- package/src/native-ui/renderer-extension/test/codebuddy-migration.test.ts +22 -0
- package/src/native-ui/renderer-extension/test/codex-locale-adapter.test.ts +152 -0
- package/src/native-ui/renderer-extension/test/contract-audit.test.ts +71 -0
- package/src/native-ui/renderer-extension/test/harness-mix-icons.test.ts +58 -0
- package/src/native-ui/renderer-extension/test/index.test.ts +9 -0
- package/src/native-ui/renderer-extension/test/renderer-agent-icon.test.ts +98 -0
- package/src/native-ui/renderer-extension/test/renderer-agent-picker.test.ts +226 -0
- package/src/native-ui/renderer-extension/test/renderer-binding-probe-host-catalog.test.ts +728 -0
- package/src/native-ui/renderer-extension/test/renderer-binding-probe.test.ts +1290 -0
- package/src/native-ui/renderer-extension/test/renderer-codex-account-state.test.ts +65 -0
- package/src/native-ui/renderer-extension/test/renderer-collab-cards.test.ts +45 -0
- package/src/native-ui/renderer-extension/test/renderer-composer-permissions.test.ts +75 -0
- package/src/native-ui/renderer-extension/test/renderer-credits-control.test.ts +70 -0
- package/src/native-ui/renderer-extension/test/renderer-external-steering-rpc.test.ts +184 -0
- package/src/native-ui/renderer-extension/test/renderer-external-steering.test.ts +279 -0
- package/src/native-ui/renderer-extension/test/renderer-fork-control.test.ts +363 -0
- package/src/native-ui/renderer-extension/test/renderer-harness-command-claim.test.ts +167 -0
- package/src/native-ui/renderer-extension/test/renderer-harness-command-control.test.ts +54 -0
- package/src/native-ui/renderer-extension/test/renderer-model-client.test.ts +709 -0
- package/src/native-ui/renderer-extension/test/renderer-model-picker.test.ts +302 -0
- package/src/native-ui/renderer-extension/test/renderer-native-thread-ownership.test.ts +84 -0
- package/src/native-ui/renderer-extension/test/renderer-new-thread-preference.test.ts +81 -0
- package/src/native-ui/renderer-extension/test/renderer-permission-mode-picker.test.ts +269 -0
- package/src/native-ui/renderer-extension/test/renderer-permission-mode-preference.test.ts +48 -0
- package/src/native-ui/renderer-extension/test/renderer-settings-lifecycle.test.ts +156 -0
- package/src/native-ui/renderer-extension/test/renderer-sidebar-agent-icons.test.ts +575 -0
- package/src/native-ui/renderer-extension/test/renderer-unsupported-methods.test.ts +167 -0
- package/src/native-ui/renderer-extension/test/renderer-usage-control.test.ts +96 -0
- package/src/native-ui/renderer-extension/test/settings/accounts-usage.test.ts +208 -0
- package/src/native-ui/renderer-extension/test/settings/core.test.ts +145 -0
- package/src/native-ui/renderer-extension/test/settings/harness-settings.test.ts +92 -0
- package/src/native-ui/renderer-extension/test/settings/localization.test.ts +80 -0
- package/src/native-ui/renderer-extension/test/settings/pages.test.ts +2000 -0
- package/src/native-ui/renderer-extension/test/settings/release-notes.test.ts +163 -0
- package/src/native-ui/renderer-extension/test/settings/shell.test.ts +74 -0
- package/src/native-ui/renderer-extension/test/settings/trigger.test.ts +270 -0
- package/src/native-ui/renderer-extension/test/settings/update-request.test.ts +48 -0
- package/src/native-ui/renderer-extension/test/versioned-renderer-adapter.test.ts +695 -0
- package/src/native-ui/renderer-extension/tsconfig.json +15 -0
- package/src/native-ui/shared-contracts/dist/codex-accounts.d.ts +246 -0
- package/src/native-ui/shared-contracts/dist/codex-accounts.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/codex-accounts.js +99 -0
- package/src/native-ui/shared-contracts/dist/codex-accounts.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/deepseek-modern-sessions.d.ts +37 -0
- package/src/native-ui/shared-contracts/dist/deepseek-modern-sessions.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/deepseek-modern-sessions.js +36 -0
- package/src/native-ui/shared-contracts/dist/deepseek-modern-sessions.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/errors.d.ts +17 -0
- package/src/native-ui/shared-contracts/dist/errors.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/errors.js +14 -0
- package/src/native-ui/shared-contracts/dist/errors.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/external-thread-fork.d.ts +11 -0
- package/src/native-ui/shared-contracts/dist/external-thread-fork.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/external-thread-fork.js +14 -0
- package/src/native-ui/shared-contracts/dist/external-thread-fork.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-accounts.d.ts +78 -0
- package/src/native-ui/shared-contracts/dist/harness-accounts.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-accounts.js +27 -0
- package/src/native-ui/shared-contracts/dist/harness-accounts.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-commands.d.ts +46 -0
- package/src/native-ui/shared-contracts/dist/harness-commands.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-commands.js +61 -0
- package/src/native-ui/shared-contracts/dist/harness-commands.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-models.d.ts +300 -0
- package/src/native-ui/shared-contracts/dist/harness-models.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-models.js +318 -0
- package/src/native-ui/shared-contracts/dist/harness-models.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-permission-modes.d.ts +30 -0
- package/src/native-ui/shared-contracts/dist/harness-permission-modes.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-permission-modes.js +57 -0
- package/src/native-ui/shared-contracts/dist/harness-permission-modes.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-plugins.d.ts +56 -0
- package/src/native-ui/shared-contracts/dist/harness-plugins.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-plugins.js +75 -0
- package/src/native-ui/shared-contracts/dist/harness-plugins.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-route.d.ts +16 -0
- package/src/native-ui/shared-contracts/dist/harness-route.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-route.js +42 -0
- package/src/native-ui/shared-contracts/dist/harness-route.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-session-import.d.ts +54 -0
- package/src/native-ui/shared-contracts/dist/harness-session-import.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/harness-session-import.js +72 -0
- package/src/native-ui/shared-contracts/dist/harness-session-import.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/ids.d.ts +12 -0
- package/src/native-ui/shared-contracts/dist/ids.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/ids.js +10 -0
- package/src/native-ui/shared-contracts/dist/ids.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/index.d.ts +47 -0
- package/src/native-ui/shared-contracts/dist/index.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/index.js +29 -0
- package/src/native-ui/shared-contracts/dist/index.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/json-rpc.d.ts +84 -0
- package/src/native-ui/shared-contracts/dist/json-rpc.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/json-rpc.js +65 -0
- package/src/native-ui/shared-contracts/dist/json-rpc.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/json-value.d.ts +13 -0
- package/src/native-ui/shared-contracts/dist/json-value.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/json-value.js +60 -0
- package/src/native-ui/shared-contracts/dist/json-value.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/native-refs.d.ts +43 -0
- package/src/native-ui/shared-contracts/dist/native-refs.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/native-refs.js +35 -0
- package/src/native-ui/shared-contracts/dist/native-refs.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/reasoning-transcript.d.ts +7 -0
- package/src/native-ui/shared-contracts/dist/reasoning-transcript.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/reasoning-transcript.js +7 -0
- package/src/native-ui/shared-contracts/dist/reasoning-transcript.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/thread-delegate.d.ts +22 -0
- package/src/native-ui/shared-contracts/dist/thread-delegate.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/thread-delegate.js +30 -0
- package/src/native-ui/shared-contracts/dist/thread-delegate.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/thread-harness-switch.d.ts +16 -0
- package/src/native-ui/shared-contracts/dist/thread-harness-switch.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/thread-harness-switch.js +19 -0
- package/src/native-ui/shared-contracts/dist/thread-harness-switch.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/thread-usage.d.ts +106 -0
- package/src/native-ui/shared-contracts/dist/thread-usage.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/thread-usage.js +103 -0
- package/src/native-ui/shared-contracts/dist/thread-usage.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/tsconfig.tsbuildinfo +1 -0
- package/src/native-ui/shared-contracts/dist/updates.d.ts +128 -0
- package/src/native-ui/shared-contracts/dist/updates.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/updates.js +58 -0
- package/src/native-ui/shared-contracts/dist/updates.js.map +1 -0
- package/src/native-ui/shared-contracts/dist/version.d.ts +2 -0
- package/src/native-ui/shared-contracts/dist/version.d.ts.map +1 -0
- package/src/native-ui/shared-contracts/dist/version.js +2 -0
- package/src/native-ui/shared-contracts/dist/version.js.map +1 -0
- package/src/native-ui/shared-contracts/package.json +25 -0
- package/src/native-ui/shared-contracts/src/codex-accounts.ts +140 -0
- package/src/native-ui/shared-contracts/src/deepseek-modern-sessions.ts +67 -0
- package/src/native-ui/shared-contracts/src/errors.ts +25 -0
- package/src/native-ui/shared-contracts/src/external-thread-fork.ts +20 -0
- package/src/native-ui/shared-contracts/src/harness-accounts.ts +32 -0
- package/src/native-ui/shared-contracts/src/harness-commands.ts +81 -0
- package/src/native-ui/shared-contracts/src/harness-models.ts +406 -0
- package/src/native-ui/shared-contracts/src/harness-permission-modes.ts +73 -0
- package/src/native-ui/shared-contracts/src/harness-plugins.ts +96 -0
- package/src/native-ui/shared-contracts/src/harness-route.ts +47 -0
- package/src/native-ui/shared-contracts/src/harness-session-import.ts +90 -0
- package/src/native-ui/shared-contracts/src/ids.ts +20 -0
- package/src/native-ui/shared-contracts/src/index.ts +320 -0
- package/src/native-ui/shared-contracts/src/json-rpc.ts +80 -0
- package/src/native-ui/shared-contracts/src/json-value.ts +78 -0
- package/src/native-ui/shared-contracts/src/native-refs.ts +58 -0
- package/src/native-ui/shared-contracts/src/reasoning-transcript.ts +6 -0
- package/src/native-ui/shared-contracts/src/thread-delegate.ts +40 -0
- package/src/native-ui/shared-contracts/src/thread-harness-switch.ts +25 -0
- package/src/native-ui/shared-contracts/src/thread-usage.ts +126 -0
- package/src/native-ui/shared-contracts/src/updates.ts +78 -0
- package/src/native-ui/shared-contracts/src/version.ts +1 -0
- package/src/native-ui/shared-contracts/test/browser-bundle.test.ts +36 -0
- package/src/native-ui/shared-contracts/test/deepseek-modern-sessions.test.ts +120 -0
- package/src/native-ui/shared-contracts/test/errors.test.ts +72 -0
- package/src/native-ui/shared-contracts/test/harness-commands.test.ts +64 -0
- package/src/native-ui/shared-contracts/test/harness-models.test.ts +390 -0
- package/src/native-ui/shared-contracts/test/harness-permission-modes.test.ts +134 -0
- package/src/native-ui/shared-contracts/test/harness-plugins.test.ts +113 -0
- package/src/native-ui/shared-contracts/test/harness-session-import.test.ts +117 -0
- package/src/native-ui/shared-contracts/test/ids.test.ts +69 -0
- package/src/native-ui/shared-contracts/test/index.test.ts +80 -0
- package/src/native-ui/shared-contracts/test/json-rpc.test.ts +177 -0
- package/src/native-ui/shared-contracts/test/json-value.test.ts +62 -0
- package/src/native-ui/shared-contracts/test/native-refs.test.ts +95 -0
- package/src/native-ui/shared-contracts/test/thread-usage.test.ts +115 -0
- package/src/native-ui/shared-contracts/test/updates.test.ts +120 -0
- package/src/native-ui/shared-contracts/tsconfig.json +10 -0
- package/src/tsconfig.base.json +19 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.3 — 2026-09-13
|
|
4
|
+
|
|
5
|
+
- Added multi-agent collaboration support (@ mentions composer, thread delegation, worktree isolation).
|
|
6
|
+
- Cleaned up legacy standalone workbench UI services, throwaway HTML prototypes, and unused icon assets.
|
|
7
|
+
- Enhanced native harness adapters and settings management.
|
|
8
|
+
|
|
9
|
+
## 0.1.2 — 2026-09-13
|
|
10
|
+
|
|
11
|
+
- Hardened native process supervision, DPAPI secret store, and dual-channel auto-update.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
- Added native ACP adapters for CodeBuddy, Kiro CLI, Cursor CLI and Qoder.
|
|
15
|
+
- Added explicit ACP bridge configuration for ZCode and Trae without claiming an unverified vendor entry point.
|
|
16
|
+
- Renamed WorkBuddy to CodeBuddy while preserving legacy task, history and preference identifiers.
|
|
17
|
+
- Added image capability negotiation, bounded ACP event draining, idle/hard turn timeouts, cancellation fallback and stuck-tool diagnostics.
|
|
18
|
+
- Added durable multi-agent recovery checkpoints and verified DSH → CodeBuddy collaboration.
|
|
19
|
+
- Updated the README and native integration documentation with installation, verification and capability limits.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. We also recommend that a
|
|
186
|
+
file or class name and description of purpose be included on the
|
|
187
|
+
same "printed page" as the copyright notice for easier
|
|
188
|
+
identification within third-party archives.
|
|
189
|
+
|
|
190
|
+
Copyright [yyyy] [name of copyright owner]
|
|
191
|
+
|
|
192
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
|
+
you may not use this file except in compliance with the License.
|
|
194
|
+
You may obtain a copy of the License at
|
|
195
|
+
|
|
196
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
197
|
+
|
|
198
|
+
Unless required by applicable law or agreed to in writing, software
|
|
199
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
200
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
201
|
+
See the License for the specific language governing permissions and
|
|
202
|
+
limitations under the License.
|
package/NOTICE
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Harness Mix
|
|
2
|
+
|
|
3
|
+
Copyright 2026 Harness Mix contributors
|
|
4
|
+
|
|
5
|
+
This product includes software developed by third-party open source projects.
|
|
6
|
+
Third-party components remain subject to their respective licenses.
|
|
7
|
+
|
|
8
|
+
Native Codex Desktop components (renderer-extension, desktop-control, shared-contracts)
|
|
9
|
+
are derived from BytePioneer-AI/codex-host v0.6.1 under the MIT License.
|
|
10
|
+
Copyright (c) 2026 BytePioneer-AI.
|
|
11
|
+
Source: https://github.com/BytePioneer-AI/codex-host
|
|
12
|
+
All execution runtimes, protocols, adapters and local launchers are developed and maintained in this repository.
|
|
13
|
+
|
|
14
|
+
Native DeepSeek integration uses @deepseek-ai/dsh 0.1.2-rc.1 (MIT).
|
package/README.md
ADDED
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
# Harness Mix
|
|
2
|
+
|
|
3
|
+
macOS/Linux 已加入源码构建与启动适配(待目标系统真机验收);安装方式、Linux 桌面前提和支持边界见 [跨平台指南](docs/cross-platform.md)。
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="src/assets/brand-harness-mix.png" width="92" alt="Harness Mix logo">
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
⭐ 如果这个项目对你有帮助,请给我们一个 <a href="https://github.com/emo-xiaoyu/harness-mix">Star</a>! ⭐
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p align="center"><strong>Codex 原生 UI,连接多个原生 Coding Harness。</strong></p>
|
|
14
|
+
|
|
15
|
+
<p align="center">
|
|
16
|
+
<a href="LICENSE"><img alt="License: Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-blue.svg"></a>
|
|
17
|
+
<img alt="UI" src="https://img.shields.io/badge/UI-Codex%20Desktop-412991.svg">
|
|
18
|
+
<img alt="Platform" src="https://img.shields.io/badge/platform-Windows-0078D4.svg">
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
<p align="center"><strong>当前注册的 Harness(16 个)</strong></p>
|
|
22
|
+
|
|
23
|
+
<table align="center">
|
|
24
|
+
<tbody>
|
|
25
|
+
<tr>
|
|
26
|
+
<td align="center"><img src="src/assets/icons/antigravity-color.svg" width="28" height="28" alt="Antigravity"><br><sub>Antigravity</sub></td>
|
|
27
|
+
<td align="center"><img src="src/assets/icons/codex-harness.svg" width="28" height="28" alt="Codex"><br><sub>Codex</sub></td>
|
|
28
|
+
<td align="center"><img src="src/assets/icons/claude-color.svg" width="28" height="28" alt="Claude Code"><br><sub>Claude Code</sub></td>
|
|
29
|
+
<td align="center"><img src="src/assets/icons/pi.svg" width="28" height="28" alt="Pi"><br><sub>Pi</sub></td>
|
|
30
|
+
</tr>
|
|
31
|
+
<tr>
|
|
32
|
+
<td align="center"><img src="src/assets/icons/omp-color.svg" width="28" height="28" alt="Oh My Pi"><br><sub>Oh My Pi</sub></td>
|
|
33
|
+
<td align="center"><img src="src/assets/icons/deepseek-color.svg" width="28" height="28" alt="DeepSeek Harness"><br><sub>DeepSeek</sub></td>
|
|
34
|
+
<td align="center"><img src="src/assets/icons/opencode-color.svg" width="28" height="28" alt="OpenCode"><br><sub>OpenCode</sub></td>
|
|
35
|
+
<td align="center"><img src="src/assets/icons/grok-color.svg" width="28" height="28" alt="Grok"><br><sub>Grok</sub></td>
|
|
36
|
+
</tr>
|
|
37
|
+
<tr>
|
|
38
|
+
<td align="center"><img src="src/assets/icons/openclaw-color.svg" width="28" height="28" alt="OpenClaw"><br><sub>OpenClaw</sub></td>
|
|
39
|
+
<td align="center"><img src="src/assets/icons/hermes-color.svg" width="28" height="28" alt="Hermes"><br><sub>Hermes</sub></td>
|
|
40
|
+
<td align="center"><img src="src/assets/icons/qoder-color.svg" width="28" height="28" alt="Qoder"><br><sub>Qoder</sub></td>
|
|
41
|
+
<td align="center"><img src="src/assets/icons/codebuddy-color.svg" width="28" height="28" alt="CodeBuddy"><br><sub>CodeBuddy</sub></td>
|
|
42
|
+
</tr>
|
|
43
|
+
<tr>
|
|
44
|
+
<td align="center"><img src="src/assets/icons/kiro-cli-color.svg" width="28" height="28" alt="Kiro"><br><sub>Kiro</sub></td>
|
|
45
|
+
<td align="center"><img src="src/assets/icons/cursor.svg" width="28" height="28" alt="Cursor"><br><sub>Cursor</sub></td>
|
|
46
|
+
<td align="center"><img src="src/assets/icons/zcode-color.svg" width="28" height="28" alt="ZCode"><br><sub>ZCode</sub></td>
|
|
47
|
+
<td align="center"><img src="src/assets/icons/trae-color.svg" width="28" height="28" alt="Trae"><br><sub>Trae</sub></td>
|
|
48
|
+
</tr>
|
|
49
|
+
</tbody>
|
|
50
|
+
</table>
|
|
51
|
+
|
|
52
|
+
<p align="center"><sub>图标与 Harness 能力均来自项目自身的注册表;只有本机已安装且握手成功的 Harness 才会进入真实运行。</sub></p>
|
|
53
|
+
|
|
54
|
+
Harness Mix 是接入官方 Codex Desktop 原生界面的本地内核。它通过本地编译的 CLI Shim 对接桌面的 app-server 协议,把包括 Antigravity、Codex、Pi、Oh My Pi、Claude Code、DeepSeek Harness、OpenCode、Grok、OpenClaw、Hermes、Qoder、CodeBuddy、Kiro CLI、Cursor CLI、ZCode 和 Trae 在内的原生 Coding Harness 接入同一套 UI。Host Runtime 与 Protocol Core 管理任务映射、协作和事件投影;模型调用、工具执行、原生会话与凭据仍由各 Harness 自己管理。
|
|
55
|
+
|
|
56
|
+
## 界面预览
|
|
57
|
+
|
|
58
|
+
<p align="center">
|
|
59
|
+
<img src="docs/images/codex-desktop-home.png" width="960" alt="Codex Desktop 原生首页中的 Harness Mix">
|
|
60
|
+
</p>
|
|
61
|
+
|
|
62
|
+
预览来自当前 Codex Desktop 原生窗口:Harness Mix 作为原生扩展入口出现在桌面工具栏和 Composer 中,会话、模型、工具与权限仍由 Codex Desktop 及各 Harness 管理。
|
|
63
|
+
|
|
64
|
+
## 能做什么
|
|
65
|
+
|
|
66
|
+
- 在 Codex Desktop 原生输入框中选择 Harness 并发起会话。
|
|
67
|
+
- 流式呈现回答、思考、命令执行、工具调用、文件变更和上下文压缩。
|
|
68
|
+
- 调用每个 Harness 原生提供的模型、权限、上下文用量和快捷指令。
|
|
69
|
+
- 会话中原地切换 Harness(`/switch <Harness 名> [备注]` 或 `codexhost/thread/harness/switch`):会话历史与文件现场保留在 Host 线程上,切换后首轮自动携带一次性上下文信封;切回旧 Harness 时按其原生机制(Pi `--session` / Claude `resume`)恢复原会话。
|
|
70
|
+
- 原生 Diff、审批与提问组件直接渲染,审批路由回原生 Harness,不代替用户作出权限决定。
|
|
71
|
+
- CodeBuddy、Kiro 和 Cursor 使用原生 ACP 加厂商专用接口:提问、计划确认、配置确认、取消恢复、上下文与历史按各自协议处理。功能和验证范围见下表,不将通用 ACP 能力视为所有 CLI 都已支持。
|
|
72
|
+
- 通过 Adapter 注册新 Harness,UI 侧无需理解厂商协议。
|
|
73
|
+
|
|
74
|
+
<p align="center">
|
|
75
|
+
<img src="docs/images/codex-desktop-session.png" width="960" alt="Codex Desktop 原生会话中的 Harness Mix">
|
|
76
|
+
</p>
|
|
77
|
+
|
|
78
|
+
## 原生接入
|
|
79
|
+
|
|
80
|
+
通过 Codex Desktop 内的 Harness 选择器统一查看连接、筛选模型和保存每个 Harness 的新对话默认模型。具体流程与原生边界见 [Harness 管理说明](docs/harness-management.md)。
|
|
81
|
+
|
|
82
|
+
| Harness | 原生接口 | 当前接入重点 |
|
|
83
|
+
| --- | --- | --- |
|
|
84
|
+
| Antigravity | `agy` CLI (`stream-json` / PreToolUse Hook) | 流式输出、Gemini 模型目录与思考档位、Desktop 审批与提问桥接、文件变更、配额查询与 Fork |
|
|
85
|
+
| Codex | `codex app-server --stdio` | Thread / Turn / Item、流式事件、审批、Usage、Resume、Fork、Compact |
|
|
86
|
+
| Pi | `pi --mode rpc` | 会话恢复、模型目录、Usage、原生命令、Fork |
|
|
87
|
+
| Oh My Pi | `omp --mode rpc`(Pi 家族协议,见 `pi-family.js`) | 与 Pi 同源:会话、模型、思考档位、权限、Fork、Usage |
|
|
88
|
+
| Claude Code | `@anthropic-ai/claude-agent-sdk` 的 `query()` | 持久会话、流式消息、工具、权限、模型与 Resume |
|
|
89
|
+
| DeepSeek Harness | 普通任务 `npm run dsh -- web`;协作主任务 `npm run dsh -- --profile acp` | Web Remote/Typert RPC;主任务使用官方 ACP 的会话级 MCP;WebSocket 事件、会话与模型控制 |
|
|
90
|
+
| OpenCode | `opencode serve`(原生 HTTP / SSE,见 `opencode.js`) | 会话、模型目录、权限模式、图片、Fork |
|
|
91
|
+
| Grok | `grok agent stdio`(独立适配 ACP 基础消息与 `_x.ai/*` 厂商扩展,见 `grok.js`) | 会话、模型、思考档位、原生命令目录、Token Usage、原生 Fork |
|
|
92
|
+
| OpenClaw | 本机 Gateway loopback WebSocket(`openclaw-gateway.js` + `openclaw.js`) | 会话与恢复、流式增量、工具与命令输出、exec/plugin 审批回路由、模型与思考档位逐轮覆盖 |
|
|
93
|
+
| Hermes | `hermes acp`(ACP over stdio,共享 `acp.js` 工厂) | 会话持久化/恢复/Fork、流式回答与思考、工具、审批、模型选择 |
|
|
94
|
+
| Qoder | `qodercli --acp` / `qoder --acp`(官方 CLI,`native-acp.js`) | 原生会话、配置、审批、工具、恢复;图片按握手能力启用 |
|
|
95
|
+
| CodeBuddy | `codebuddy --acp` + `_codebuddy.ai/*` | 原生提问与提交重试、审批作用范围、取消后重连恢复、模型/思考/模式、原生历史导入、去重 Token/Credits |
|
|
96
|
+
| Kiro CLI | `kiro-cli acp --agent-engine v3 --auth-method cli` + `_kiro/*` | 原生提问、带作用范围的 consent、模型/effort、上下文查询、原生压缩与 fork(后两项需握手支持) |
|
|
97
|
+
| Cursor CLI | `cursor-agent acp` + `cursor/*` | 单选/多选提问、计划接受/拒绝、原生模型变体/模式、会话恢复、完成后的 Diff 投影 |
|
|
98
|
+
| ZCode | 需显式配置兼容 ACP 桥接程序(尚未验证) | 本机 0.16.5 仅确认 `app-server --stdio`;不能直接作为 ACP 启动 |
|
|
99
|
+
| Trae | 需显式配置兼容 ACP 程序(尚未验证) | 官方 trae-agent 未发现 ACP 入口;不再使用猜测的启动/安装命令 |
|
|
100
|
+
|
|
101
|
+
CodeBuddy、Kiro CLI、Cursor CLI、Qoder、ZCode 和 Trae 均已接入默认选择器、模型偏好、侧栏图标与共享 ACP 引擎;其中只有已安装且握手成功的 Harness 才会进入真实运行。原 Workbuddy 已更名为 CodeBuddy;旧任务、切换历史、模型偏好与名称别名保留兼容。DSH 协作主任务也使用官方 ACP,普通任务继续使用 Web Remote。
|
|
102
|
+
|
|
103
|
+
2026-09-12 健康检查:Pi、DSH、Claude Code、Codex、Grok、CodeBuddy 的真实文本回路通过;OpenCode 被账户余额阻断,Qoder 被 Credits 额度阻断,OMP、Hermes、Kiro、Cursor 本机未安装。图片真实回路通过 Antigravity、Pi、Claude Code、Codex、Grok、CodeBuddy;DSH 与 OpenClaw 的当前模型拒绝图片,Qoder/OpenCode 分别被额度/余额阻断。ZCode、Trae 目前只有显式 ACP 桥接配置入口,未证明官方 CLI 提供 ACP 服务。报告见 [`output/harness-health/1789191914230/report.json`](output/harness-health/1789191914230/report.json) 和 [`output/harness-health/1789191791797/report.json`](output/harness-health/1789191791797/report.json);完整安装与边界见 [原生 ACP 深度适配](docs/native-acp.md)。
|
|
104
|
+
|
|
105
|
+
能力只在 Adapter 的 `manifest` 中声明。界面根据真实能力显示入口,不靠 Harness 名称猜测功能;厂商特有字段会保留在原生引用和载荷中。
|
|
106
|
+
|
|
107
|
+
## 架构
|
|
108
|
+
|
|
109
|
+
```mermaid
|
|
110
|
+
flowchart TB
|
|
111
|
+
Desktop[Codex Desktop 原生 UI] --> Shim[Harness Mix CLI Shim]
|
|
112
|
+
Shim --> Host[原生 Host 入口 src/main/native]
|
|
113
|
+
Host --> Runtime[Host Runtime]
|
|
114
|
+
Runtime --> Core[Protocol Core]
|
|
115
|
+
Runtime --> Store[(Thread and session store)]
|
|
116
|
+
Runtime --> Registry[Adapter registry]
|
|
117
|
+
Registry --> Antigravity[Antigravity CLI]
|
|
118
|
+
Registry --> Codex[Codex app-server]
|
|
119
|
+
Registry --> Pi[Pi RPC]
|
|
120
|
+
Registry --> OMP[Oh My Pi RPC]
|
|
121
|
+
Registry --> Claude[Claude Agent SDK]
|
|
122
|
+
Registry --> DSH[DSH Web Remote]
|
|
123
|
+
Registry --> OpenCode[OpenCode Server HTTP / SSE]
|
|
124
|
+
Registry --> Grok[Grok native stdio + vendor extensions]
|
|
125
|
+
Registry --> OpenClaw[OpenClaw Gateway loopback WS]
|
|
126
|
+
Registry --> Hermes[Hermes ACP stdio]
|
|
127
|
+
Registry --> Qoder[Qoder ACP stdio]
|
|
128
|
+
Registry --> CodeBuddy[CodeBuddy ACP + native extensions]
|
|
129
|
+
Registry --> Kiro[Kiro ACP + native extensions]
|
|
130
|
+
Registry --> Cursor[Cursor ACP + native extensions]
|
|
131
|
+
Registry --> ZCode[ZCode 显式 ACP 桥接入口 未验证]
|
|
132
|
+
Registry --> Trae[Trae 显式 ACP 入口 未验证]
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
```text
|
|
136
|
+
src/
|
|
137
|
+
├─ main/
|
|
138
|
+
│ ├─ adapters/ # 每个 Harness 的原生适配器
|
|
139
|
+
│ ├─ harness-adapter/ # Manifest、能力与适配器契约
|
|
140
|
+
│ ├─ host/ # 编排、恢复、持久化与事件投影
|
|
141
|
+
│ ├─ native/ # 原生模式:Launcher、Shim、Host 入口、协议桥
|
|
142
|
+
│ └─ protocol-core/ # Thread / Turn / Item 统一语义
|
|
143
|
+
├─ native-ui/
|
|
144
|
+
│ ├─ renderer-extension/ # 注入 Codex Desktop 的渲染扩展(选择器、模型目录)
|
|
145
|
+
│ ├─ desktop-control/ # CDP 控制器与请求桥
|
|
146
|
+
│ └─ shared-contracts/ # 渲染侧与内核共享的协议契约
|
|
147
|
+
└─ assets/icons/ # Harness 与模型图标(编译期嵌入)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
新增 Harness 时,实现同形 Adapter 并注册到 `src/main/adapters/index.js`。核心形态如下:
|
|
151
|
+
|
|
152
|
+
```js
|
|
153
|
+
module.exports = {
|
|
154
|
+
manifest: {
|
|
155
|
+
id,
|
|
156
|
+
name,
|
|
157
|
+
icon,
|
|
158
|
+
capabilities: { streaming, tools, approvals, models, resume, fork, usage }
|
|
159
|
+
},
|
|
160
|
+
create(emit) {
|
|
161
|
+
return {
|
|
162
|
+
inspect,
|
|
163
|
+
open,
|
|
164
|
+
send,
|
|
165
|
+
cancel,
|
|
166
|
+
close,
|
|
167
|
+
respond,
|
|
168
|
+
listModelsFor,
|
|
169
|
+
setModel,
|
|
170
|
+
fork
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## 本地运行
|
|
177
|
+
|
|
178
|
+
开发环境需要 Windows、近期 Node.js LTS 和 npm。应用不会读取或保存 Harness 的账户密钥,请先在对应的原生 CLI 中完成安装与登录。
|
|
179
|
+
|
|
180
|
+
```powershell
|
|
181
|
+
git clone https://github.com/emo-xiaoyu/harness-mix.git
|
|
182
|
+
cd harness-mix
|
|
183
|
+
npm install
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### 从 npm 安装
|
|
187
|
+
|
|
188
|
+
Harness Mix 发布为 `@harness-mix/cli` npm 包,命令名仍是 `harness-mix`。当前发布包包含本次构建平台的 native Shim;macOS/Linux 请在目标系统执行源码构建,完整说明见 [跨平台指南](docs/cross-platform.md)。
|
|
189
|
+
|
|
190
|
+
```powershell
|
|
191
|
+
npm install --global @harness-mix/cli
|
|
192
|
+
harness-mix
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
升级到最新版本:
|
|
196
|
+
|
|
197
|
+
```powershell
|
|
198
|
+
npm update --global @harness-mix/cli
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
首次运行会重启已打开的 Codex Desktop。npm 包只分发 Harness Mix 本身;各 Harness 的 CLI、登录状态、模型额度和权限仍需按下表在本机单独安装和配置。
|
|
202
|
+
|
|
203
|
+
### 运行方式
|
|
204
|
+
|
|
205
|
+
原生模式(默认):本地编译的 Shim 与 Renderer 扩展接入官方 Codex Desktop,模型选择会路由到对应 Harness。首次启动会重启已打开的 Codex Desktop:
|
|
206
|
+
```powershell
|
|
207
|
+
npm start
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
常用原生依赖:
|
|
211
|
+
|
|
212
|
+
- Codex:安装 `@openai/codex`,确保 `codex` 命令可用。
|
|
213
|
+
- Pi:确保 `pi.cmd` 可用。
|
|
214
|
+
- Claude Code:SDK 已由 npm 依赖安装,认证仍由 Claude Code 环境管理。
|
|
215
|
+
- DeepSeek Harness:使用本项目锁定的 `@deepseek-ai/dsh@0.1.2-rc.1`。可通过 `HARNESS_MIX_DSH_ROOT` 显式指定源码目录,但版本必须被内核支持。
|
|
216
|
+
- CodeBuddy:安装官方 `codebuddy` CLI 并完成登录;旧 WorkBuddy 安装也可通过兼容别名继续使用。
|
|
217
|
+
- Kiro CLI:安装 `kiro-cli`,启用 `acp` 子命令并完成 CLI 登录。
|
|
218
|
+
- Cursor CLI:安装 `cursor-agent` 并完成 CLI 登录。
|
|
219
|
+
- Qoder:安装 `qodercli`(或 `qoder`)并完成 CLI 登录;ACP 入口由本机版本决定。
|
|
220
|
+
- ZCode / Trae:只有在拥有已验证的 ACP 兼容桥接程序时才配置 `HARNESS_MIX_ZCODE_ACP_EXECUTABLE` / `HARNESS_MIX_TRAE_EXECUTABLE`,项目不会猜测官方入口。
|
|
221
|
+
|
|
222
|
+
原生接入方式、数据目录和验证说明见 [原生 Codex 接入](docs/native-codex.md)。
|
|
223
|
+
|
|
224
|
+
## 验证
|
|
225
|
+
|
|
226
|
+
```powershell
|
|
227
|
+
npm run check
|
|
228
|
+
npm run test:core-all
|
|
229
|
+
npm run e2e:native
|
|
230
|
+
npm run smoke:native-ui
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
涉及原生 Adapter 时,再执行对应的真实链路:
|
|
234
|
+
|
|
235
|
+
```powershell
|
|
236
|
+
npm run e2e:pi
|
|
237
|
+
npm run e2e:dsh
|
|
238
|
+
npm run e2e:claude
|
|
239
|
+
npm run e2e:codex
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
部分 E2E 会启动真实 Harness,可能需要本机安装、登录或模型额度。测试生成物写入 `output/`,不应提交到仓库。
|
|
243
|
+
|
|
244
|
+
## 设计原则
|
|
245
|
+
|
|
246
|
+
1. **原生能力优先**:Adapter 翻译协议,不重新实现 Harness。
|
|
247
|
+
2. **诚实声明能力**:只有完成接线和验证的能力才进入 `manifest`。
|
|
248
|
+
3. **惰性恢复**:打开历史任务只读取本地投影,发送新消息时才恢复原生进程。
|
|
249
|
+
4. **可回放事件**:Core Event 保持稳定顺序,可用于恢复、投影和确定性校验。
|
|
250
|
+
5. **凭据隔离**:账号、令牌、沙箱和权限决定由原生程序管理。
|
|
251
|
+
|
|
252
|
+
## 项目状态
|
|
253
|
+
|
|
254
|
+
- [内核迁移状态](CORE-MIGRATION-STATUS.md)
|
|
255
|
+
- [下一步计划](NEXT-STEPS.md)
|
|
256
|
+
- [Codex Desktop 原生接入说明](docs/native-codex.md)
|
|
257
|
+
|
|
258
|
+
Harness Mix 参考了 [codex-host](https://github.com/BytePioneer-AI/codex-host) 的插件化组织方式,并使用 [OpenAI Codex](https://github.com/openai/codex) 官方 app-server 协议完成 Codex 原生接入。
|
|
259
|
+
|
|
260
|
+
## License
|
|
261
|
+
|
|
262
|
+
Harness Mix 基于 [Apache License 2.0](LICENSE) 发布。第三方组件仍适用各自的许可证;归属信息见 [NOTICE](NOTICE)。
|
package/Start-Codex.cmd
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"contractVersions": {
|
|
4
|
+
"rendererBinding": 1,
|
|
5
|
+
"controllerReadiness": 2,
|
|
6
|
+
"protocolFixture": 1
|
|
7
|
+
},
|
|
8
|
+
"blockedDesktopVersions": [],
|
|
9
|
+
"evidence": [
|
|
10
|
+
{
|
|
11
|
+
"desktopVersion": "26.721.4979.0",
|
|
12
|
+
"level": "protocol-fixture",
|
|
13
|
+
"checkedAt": "2026-07-25",
|
|
14
|
+
"notes": "Sanitized official app-server envelope capture; not a full Desktop UI acceptance."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"desktopVersion": "26.901.2854.0",
|
|
18
|
+
"level": "protocol-and-smoke",
|
|
19
|
+
"checkedAt": "2026-09-11",
|
|
20
|
+
"notes": "Install inspection, protocol suite, native build and offscreen Electron smoke passed; full restarted Desktop acceptance remains pending."
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"desktopVersion": "26.908.4834.0",
|
|
24
|
+
"level": "desktop-e2e",
|
|
25
|
+
"checkedAt": "2026-09-13",
|
|
26
|
+
"notes": "Restarted isolated Desktop acceptance passed with the 26.908 connection snapshot and draft identity contracts: Renderer request bridge ready, native input editable, Pi selected with its model, external turn routed through Harness Mix HostRuntime, and exact live Pi response rendered."
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# ChatGPT 网页侧边对话
|
|
2
|
+
|
|
3
|
+
> 历史设计记录:当前 Harness Mix 原生模式不包含下文所述的 `side-chat` / `web-chat` 实现,相关源码和 `smoke:web-chat` 入口已不在当前仓库中。本文仅保留方案边界,不能作为当前功能或可执行验收说明。
|
|
4
|
+
|
|
5
|
+
## 官方实现参考
|
|
6
|
+
|
|
7
|
+
2026-09-09 核对 `openai/codex` main(`9ba1d9eb5bbbd87ba2fc528d91ad239eea975ee9`)的完整目录树、README、`codex-rs/chatgpt` 与桌面启动器后,未发现截图中 Quick chat 面板的前端与聊天历史同步实现。
|
|
8
|
+
|
|
9
|
+
- [官方 ChatGPT 使用文档](https://learn.chatgpt.com/docs/use-chatgpt)明确说明:Codex 的 Quick chat 可以访问网页和手机端的 ChatGPT 聊天。
|
|
10
|
+
- [公开组件列表](https://learn.chatgpt.com/docs/open-source)列出 CLI、SDK、App Server 等;没有提供该面板的源码入口。
|
|
11
|
+
- [`codex-rs/chatgpt/src/get_task.rs`](https://github.com/openai/codex/blob/9ba1d9eb5bbbd87ba2fc528d91ad239eea975ee9/codex-rs/chatgpt/src/get_task.rs)读取 `/wham/tasks/{task_id}` 编码任务,不是网页聊天列表。
|
|
12
|
+
- [`codex-rs/cli/src/desktop_app/windows.rs`](https://github.com/openai/codex/blob/9ba1d9eb5bbbd87ba2fc528d91ad239eea975ee9/codex-rs/cli/src/desktop_app/windows.rs)负责启动或安装桌面应用,不包含 Quick chat UI。
|
|
13
|
+
|
|
14
|
+
因此这里实现的是直接内嵌 ChatGPT 官方网页的替代接入,不声称复制了官方 Quick chat 的内部实现。最近聊天与模型菜单使用网页自身的界面,不伪造官方内部会话接口。
|
|
15
|
+
|
|
16
|
+
点击“新建对话”旁的聊天按钮或 Alt+S,打开内嵌的 https://chatgpt.com/。
|
|
17
|
+
首次使用在网页中登录。网页使用独立的持久浏览器会话,关闭面板后重新打开保留页面;应用重启后可通过网页历史记录继续聊天。
|
|
18
|
+
|
|
19
|
+
侧边聊天直接使用 ChatGPT 网页,不调用 Codex app-server,不占用 Codex 编码额度。ChatGPT 网页自身的模型与使用限制仍适用。将内容添加到主输入框后,再发送给编码 Harness,会按该 Harness 正常计费或消耗额度。
|
|
20
|
+
|
|
21
|
+
“添加到当前 Harness”优先导入网页选中文字;未选择时读取当前页面已加载的用户与助手消息文本,附带页面标题和来源链接。只填入草稿,由用户点击发送。图片附件不会自动下载或导入;网页未加载的历史消息也不会导入。网页结构变化导致读取失败时会显示提示,可选中文字重试。
|
|
22
|
+
|
|
23
|
+
登录和模型选择使用网站原生界面。浏览器会话由 Electron 管理;应用不读取、导出或代理 Cookie、Token。远程页面启用 sandbox、contextIsolation,关闭 nodeIntegration,不注入本地 IPC preload。登录弹窗使用相同浏览器会话。
|
|
24
|
+
|
|
25
|
+
实现:`src/main/side-chat/web.js`、`src/renderer/web-chat.js`、`src/renderer/web-chat.css`。原 app-server 侧边模块保留在源码中,但生产入口和 preload 已停止接入它。
|
|
26
|
+
|
|
27
|
+
历史版本曾使用 `smoke:web-chat` 验证隔离网页夹具;当前版本没有该命令。若未来恢复此能力,必须同时恢复隔离、安全边界测试以及真实登录后的人工验收。
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# macOS / Linux 适配设计与运行
|
|
2
|
+
|
|
3
|
+
保留 Launcher → Shim → HostRuntime → ProtocolCore → native Harness → 原生 Codex UI。平台差异集中在 `src/main/native/platform.js`,不引入独立桌面 UI,不改变模型、工具、登录和审批的所有权。
|
|
4
|
+
|
|
5
|
+
## 支持范围
|
|
6
|
+
|
|
7
|
+
| 层 | Windows | macOS | Linux |
|
|
8
|
+
| --- | --- | --- | --- |
|
|
9
|
+
| 安装元数据 | x64 / arm64 | x64 / arm64 | x64 / arm64 |
|
|
10
|
+
| Shim 构建 | Rust + AppX/DPAPI helpers | 本机 Rust Shim | 本机 Rust Shim |
|
|
11
|
+
| 桌面发现 | AppX | `/Applications/Codex.app`、`~/Applications/Codex.app` | 显式指定已安装的兼容桌面可执行文件 |
|
|
12
|
+
| 启动 | AppX 环境注入 | 直接执行 `.app/Contents/MacOS` | 直接执行 Electron 桌面二进制 |
|
|
13
|
+
| 本项目 secret helper | DPAPI | 明确不可用 | 明确不可用 |
|
|
14
|
+
| 实际桌面验收 | 见版本兼容性清单 | 待真机验收 | 待兼容桌面和真机验收 |
|
|
15
|
+
|
|
16
|
+
安装元数据表示允许安装和本机构建,不表示所有 CPU、桌面版本及所有 Harness 已通过验收。macOS/Linux 当前使用源码安装;不要把 Windows 的 `.exe` 或另一 CPU 架构的 Shim 复制过去。现有 npm 全局安装的预编译分发仍以 Windows 为主,尚未提供各系统/架构的独立发布包。
|
|
17
|
+
|
|
18
|
+
Linux 启动支持有前提:必须自行安装支持 `CODEX_CLI_PATH`、app-server 和 CDP 的兼容 Electron 桌面。本项目没有捆绑 Linux Codex Desktop,也不保证官方 Linux 桌面可用。无兼容桌面时可以构建和运行内核/协议测试,不能启动原生 UI。请使用实际可执行文件路径,不使用 `.desktop` 文件、启动脚本或 AppImage 外层包装器。
|
|
19
|
+
|
|
20
|
+
## macOS 安装
|
|
21
|
+
|
|
22
|
+
安装 Node.js 22.19+(22.x)或 24.x、Rust stable、Git 和 Codex Desktop。Apple Silicon 使用 arm64 Node/Rust;Intel 使用 x64。先用各 Harness 自己的命令完成安装和登录。
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
git clone https://github.com/emo-xiaoyu/harness-mix.git
|
|
26
|
+
cd harness-mix
|
|
27
|
+
npm ci
|
|
28
|
+
npm run build:native
|
|
29
|
+
npm run test:platform
|
|
30
|
+
npm run test:shim
|
|
31
|
+
npm run check:native
|
|
32
|
+
# 完全退出已有 Codex Desktop 后启动
|
|
33
|
+
npm start -- --no-update
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
非标准安装目录,在上述检查与启动前设置:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
export HARNESS_MIX_DESKTOP_APP="/absolute/path/Codex.app"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
启动器读取 Info.plist 的可执行文件名和版本,默认使用 `Contents/Resources/codex`。CLI 布局不同时设置 `CODEXHOST_STOCK_CODEX_PATH`,必须指向桌面自带的原版 CLI,不能指向 Harness Mix Shim。不改写签名包,不关闭 Gatekeeper。CLI 工具需在启动终端的 PATH 中可用。
|
|
43
|
+
|
|
44
|
+
## Linux 安装
|
|
45
|
+
|
|
46
|
+
安装同样的 Node、Rust、Git,以及系统 `ps`(通常由 procps 提供)和 `tar`。桌面启动需要可用的图形会话及该 Electron 应用的系统依赖。
|
|
47
|
+
|
|
48
|
+
```sh
|
|
49
|
+
npm ci
|
|
50
|
+
npm run build:native
|
|
51
|
+
export HARNESS_MIX_DESKTOP_EXECUTABLE="/absolute/path/to/desktop-binary"
|
|
52
|
+
export CODEXHOST_STOCK_CODEX_PATH="/absolute/path/to/resources/codex"
|
|
53
|
+
# 填写真实桌面版本,不是 CLI 版本;未知时省略,兼容性显示 unverified
|
|
54
|
+
export HARNESS_MIX_DESKTOP_VERSION="1.2.3"
|
|
55
|
+
npm run check:native
|
|
56
|
+
npm start -- --no-update
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 平台行为
|
|
60
|
+
|
|
61
|
+
- 数据目录:Windows 延续 `%APPDATA%/harness-mix/codexhost`;macOS 使用 `~/Library/Application Support/harness-mix/codexhost`;Linux 使用 `$XDG_DATA_HOME/harness-mix/codexhost`,默认 `~/.local/share/harness-mix/codexhost`。`CODEXHOST_DATA_DIR` 始终优先。历史 Unix 试用数据如在其他目录,需显式设置该变量;不会自动搬迁。
|
|
62
|
+
- macOS/Linux 要求先退出已运行的同一个桌面程序,避免 Electron 单实例复用丢失 Shim 环境。不会按程序名批量清理用户进程。
|
|
63
|
+
- Unix Shim 使用 `exec` 替换自己,保留 PID、stdio 和信号;正常关闭依赖 Host 的 EOF/SIGTERM 清理。停止 Harness 时按父子关系清理子进程。Unix 不宣称具备 Windows Job Object 在 `SIGKILL` 下的强制整树退出保证;已经脱离父进程的 daemon 不属于该保证。
|
|
64
|
+
- Grok、Hermes 的 Unix 默认命令去掉 `.exe`;DSH Web 模式在 Unix 使用 `npm`,必须配置 `HARNESS_MIX_DSH_ROOT`。其他 Harness 仍需其厂商提供相应系统的原生 CLI,不将协议适配等同于厂商跨平台支持。
|
|
65
|
+
- Windows 的旧兼容性记录只对 Windows 生效。macOS/Linux 未有同平台 `desktop-e2e` 证据时,`HARNESS_MIX_STRICT_COMPATIBILITY=1` 会拒绝启动。`check:native` 仅检查安装和构建产物,不代表真实 UI 验收。
|
|
66
|
+
- 本次覆盖本地桌面启动。继承的 Remote Control 桥接仍含 Windows 描述文件和 PowerShell 启动逻辑,不属于 macOS/Linux 支持范围。
|
|
67
|
+
- `npm run diagnostics` 在 Windows 输出 zip,在 macOS/Linux 输出 tar.gz。凭据仍归原生 Harness 管理,无新增凭据存储。
|
|
68
|
+
|
|
69
|
+
## 验证与发布门槛
|
|
70
|
+
|
|
71
|
+
CI 增加 Windows/macOS/Linux 的 Node 22/24 内核测试和本机构建,真实 Shim fixture 检查路由、Unicode、带空格参数、环境变量及 EOF;这些不需要账户。配置 CI 不等于已执行 CI。当前 Windows 开发机不能代替 macOS/Linux 真机结果。
|
|
72
|
+
|
|
73
|
+
在每种目标 OS/CPU 上运行 `npm run check`、`npm run test:core-all`、`npm run build:native`、`npm run test:platform`、`npm run test:shim`、`npm run e2e:native`,再启动真实桌面,逐个验证所需 Harness 的模型列表、Thinking、流式工具输出、原生审批、取消、历史恢复及退出清理。记录 OS、CPU、桌面版本和证据后,才能增加该平台的 `desktop-e2e` 记录。后续发布矩阵需要覆盖 macOS Intel/Apple Silicon、Linux x64/arm64,不能用单个平台的构建文件混发。
|