harness-mix 0.1.0
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/LICENSE +202 -0
- package/NOTICE +14 -0
- package/README.md +184 -0
- package/Start-Codex.cmd +5 -0
- package/config/codex-desktop-compatibility.json +23 -0
- package/docs/chatgpt-web-sidebar.md +27 -0
- package/docs/harness-management.md +41 -0
- package/docs/images/harness-mix-home.png +0 -0
- package/docs/images/harness-mix-session.png +0 -0
- package/docs/multi-agent-collaboration.md +89 -0
- package/docs/native-codex.md +72 -0
- package/licenses/codex-host-MIT.txt +21 -0
- package/output/native-build/desktop-controller.mjs +1460 -0
- package/output/native-build/harness-mix-appx.exe +0 -0
- package/output/native-build/harness-mix-shim.exe +0 -0
- package/output/native-build/renderer-extension.js +28884 -0
- package/package.json +142 -0
- package/scripts/acp-capabilities-probe.cjs +100 -0
- package/scripts/adapters-test.cjs +17 -0
- package/scripts/antigravity-adapter-test.cjs +174 -0
- package/scripts/architecture-test.cjs +62 -0
- package/scripts/build-native.cjs +46 -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/codex-adapter-test.cjs +83 -0
- package/scripts/collaboration-recovery-test.cjs +91 -0
- package/scripts/collaboration-test.cjs +102 -0
- package/scripts/collaboration-ui-smoke.cjs +52 -0
- package/scripts/concurrency-layers-test.cjs +179 -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/docs-command-test.cjs +49 -0
- package/scripts/dsh-adapter-test.cjs +87 -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 +58 -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-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/git-test.cjs +33 -0
- package/scripts/launch-codex.cjs +5 -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-protocol-test.cjs +233 -0
- package/scripts/native-rollback-test.cjs +46 -0
- package/scripts/native-sidebar-test.cjs +88 -0
- package/scripts/native-ui-smoke.cjs +94 -0
- package/scripts/native-updater-test.cjs +100 -0
- package/scripts/native-vendor-adapters-test.cjs +40 -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/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/tool-concurrency-regression-test.cjs +118 -0
- package/scripts/transcript-test.cjs +24 -0
- package/scripts/turn-manager-test.cjs +91 -0
- package/scripts/workspace-test.cjs +98 -0
- package/src/assets/brand-harness-mix.png +0 -0
- package/src/assets/icons/activity-compact.svg +1 -0
- package/src/assets/icons/activity-edit.svg +1 -0
- package/src/assets/icons/activity-terminal.svg +1 -0
- package/src/assets/icons/antigravity-color.svg +1 -0
- package/src/assets/icons/claude-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/commands.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/home-chat.svg +1 -0
- package/src/assets/icons/home-folder.svg +1 -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-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/thread-fork.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.js +171 -0
- package/src/main/adapters/antigravity.js +895 -0
- package/src/main/adapters/claude.js +399 -0
- package/src/main/adapters/codex-app-server.js +119 -0
- package/src/main/adapters/codex.js +547 -0
- package/src/main/adapters/dsh-web-host.js +207 -0
- package/src/main/adapters/dsh.js +415 -0
- package/src/main/adapters/grok.js +161 -0
- package/src/main/adapters/hermes.js +24 -0
- package/src/main/adapters/index.js +30 -0
- package/src/main/adapters/omp.js +12 -0
- package/src/main/adapters/openclaw-gateway.js +215 -0
- package/src/main/adapters/openclaw.js +337 -0
- package/src/main/adapters/opencode-server.js +72 -0
- package/src/main/adapters/opencode.js +166 -0
- package/src/main/adapters/pi-family.js +315 -0
- package/src/main/adapters/pi-usage.js +24 -0
- package/src/main/adapters/pi.js +10 -0
- package/src/main/adapters/qoder.js +35 -0
- package/src/main/adapters/trae.js +19 -0
- package/src/main/adapters/workbuddy.js +67 -0
- package/src/main/adapters/zcode.js +38 -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 +233 -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 +82 -0
- package/src/main/host/collaboration.js +238 -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 +115 -0
- package/src/main/host/native-history.js +74 -0
- package/src/main/host/runtime.js +927 -0
- package/src/main/host/session-history.js +63 -0
- package/src/main/host/store.js +42 -0
- package/src/main/native/compatibility.js +55 -0
- package/src/main/native/config.js +49 -0
- package/src/main/native/host.js +108 -0
- package/src/main/native/icons.js +101 -0
- package/src/main/native/input.js +43 -0
- package/src/main/native/launcher.js +100 -0
- package/src/main/native/protocol.js +552 -0
- package/src/main/native/rs/Cargo.lock +11 -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/shim/Cargo.toml +10 -0
- package/src/main/native/rs/crates/shim/src/main.rs +207 -0
- package/src/main/native/thread-list.js +38 -0
- package/src/main/native/updater.js +102 -0
- package/src/main/native/usage.js +29 -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 +50 -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 +65 -0
- package/src/main/workspace/git.js +73 -0
- package/src/main/workspace/ipc.js +50 -0
- package/src/main/workspace/review-controller.js +102 -0
- package/src/main/workspace/review.js +83 -0
- package/src/main/workspace/terminal.js +36 -0
- package/src/native-ui/LICENSE +21 -0
- package/src/native-ui/README.md +12 -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 +246 -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 +291 -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 +19 -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 +162 -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 +633 -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 +334 -0
- package/src/native-ui/desktop-control/src/production-controller.ts +344 -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 +209 -0
- package/src/native-ui/desktop-control/src/renderer-draft-prewarm-runtime.ts +746 -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 +166 -0
- package/src/native-ui/desktop-control/test/production-controller.test.ts +389 -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 +998 -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 +83 -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 +49 -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-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 +94 -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 +42 -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 +14 -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 +231 -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 +22 -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 +610 -0
- package/src/native-ui/renderer-extension/src/assets/README.md +43 -0
- package/src/native-ui/renderer-extension/src/assets/antigravity-agent.svg +1 -0
- package/src/native-ui/renderer-extension/src/assets/claude-agent.svg +3 -0
- package/src/native-ui/renderer-extension/src/assets/codex-agent.png +0 -0
- package/src/native-ui/renderer-extension/src/assets/codex-logo-bright.png +0 -0
- package/src/native-ui/renderer-extension/src/assets/codex-logo-transparent.png +0 -0
- package/src/native-ui/renderer-extension/src/assets/codex-logo.png +0 -0
- package/src/native-ui/renderer-extension/src/assets/codexhost-icon.png +0 -0
- package/src/native-ui/renderer-extension/src/assets/codexhost-logo-transparent.png +0 -0
- package/src/native-ui/renderer-extension/src/assets/codexhost-logo.png +0 -0
- package/src/native-ui/renderer-extension/src/assets/codexhost-readme.svg +8 -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/pi-agent.svg +4 -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 +24 -0
- package/src/native-ui/renderer-extension/src/harness-mix-settings.ts +80 -0
- package/src/native-ui/renderer-extension/src/index.ts +266 -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 +145 -0
- package/src/native-ui/renderer-extension/src/renderer-agent-picker.ts +813 -0
- package/src/native-ui/renderer-extension/src/renderer-binding-probe.ts +2936 -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-composer-dom.ts +782 -0
- package/src/native-ui/renderer-extension/src/renderer-credits-control.ts +500 -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 +213 -0
- package/src/native-ui/renderer-extension/src/renderer-model-client.ts +567 -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 +175 -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 +456 -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 +602 -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-quota-interactive.prototype.html +1418 -0
- package/src/native-ui/renderer-extension/src/settings/accounts-usage.ts +221 -0
- package/src/native-ui/renderer-extension/src/settings/accounts.css +607 -0
- package/src/native-ui/renderer-extension/src/settings/connections-page.ts +1354 -0
- package/src/native-ui/renderer-extension/src/settings/core.ts +158 -0
- package/src/native-ui/renderer-extension/src/settings/harness-accounts.ts +134 -0
- package/src/native-ui/renderer-extension/src/settings/icons.ts +141 -0
- package/src/native-ui/renderer-extension/src/settings/localization.ts +752 -0
- package/src/native-ui/renderer-extension/src/settings/pages.ts +615 -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 +2149 -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-notes.preview.html +491 -0
- package/src/native-ui/renderer-extension/src/settings/update-request.ts +49 -0
- package/src/native-ui/renderer-extension/src/settings/windows-update.preview.html +2135 -0
- package/src/native-ui/renderer-extension/src/versioned-renderer-adapter.ts +1278 -0
- package/src/native-ui/renderer-extension/test/agent-selection-state.test.ts +611 -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/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-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 +708 -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 +88 -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 +682 -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 +64 -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 +24 -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 +278 -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 +317 -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 +29 -0
- package/src/native-ui/shared-contracts/src/harness-commands.ts +81 -0
- package/src/native-ui/shared-contracts/src/harness-models.ts +401 -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/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,184 @@
|
|
|
1
|
+
# Harness Mix
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="src/assets/brand-harness-mix.png" width="92" alt="Harness Mix logo">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center"><strong>Codex 原生 UI,连接多个原生 Coding Harness。</strong></p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="LICENSE"><img alt="License: Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-blue.svg"></a>
|
|
11
|
+
<img alt="UI" src="https://img.shields.io/badge/UI-Codex%20Desktop-412991.svg">
|
|
12
|
+
<img alt="Platform" src="https://img.shields.io/badge/platform-Windows-0078D4.svg">
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
Harness Mix 是接入官方 Codex Desktop 原生界面的本地内核:通过本地编译的 CLI Shim 接管桌面的 app-server 协议,把 Pi、Claude Code、DeepSeek Harness、Antigravity 和 Codex 统一进同一套原生 UI。会话生命周期、模型调用、多轮对话、审批与文件差异全部由本仓库的 Host Runtime + Protocol Core + 原生适配器管理;凭据与权限决定仍属于各原生 Harness。
|
|
16
|
+
|
|
17
|
+

|
|
18
|
+
|
|
19
|
+
## 能做什么
|
|
20
|
+
|
|
21
|
+
- 在 Codex Desktop 原生输入框中选择 Harness 并发起会话。
|
|
22
|
+
- 流式呈现回答、思考、命令执行、工具调用、文件变更和上下文压缩。
|
|
23
|
+
- 调用每个 Harness 原生提供的模型、权限、上下文用量和快捷指令。
|
|
24
|
+
- 会话中原地切换 Harness(`/switch <Harness 名> [备注]` 或 `codexhost/thread/harness/switch`):会话历史与文件现场保留在 Host 线程上,切换后首轮自动携带一次性上下文信封;切回旧 Harness 时按其原生机制(Pi `--session` / Claude `resume`)恢复原会话。
|
|
25
|
+
- 原生 Diff、审批与提问组件直接渲染,审批路由回原生 Harness,不代替用户作出权限决定。
|
|
26
|
+
- 通过 Adapter 注册新 Harness,UI 侧无需理解厂商协议。
|
|
27
|
+
|
|
28
|
+

|
|
29
|
+
|
|
30
|
+
## 原生接入
|
|
31
|
+
|
|
32
|
+
通过 Codex Desktop 内的 Harness 选择器统一查看连接、筛选模型和保存每个 Harness 的新对话默认模型。具体流程与原生边界见 [Harness 管理说明](docs/harness-management.md)。
|
|
33
|
+
|
|
34
|
+
| Harness | 原生接口 | 当前接入重点 |
|
|
35
|
+
| --- | --- | --- |
|
|
36
|
+
| Antigravity | `agy` CLI (`stream-json` / PreToolUse Hook) | 流式输出、Gemini 模型目录与思考档位、Desktop 审批与提问桥接、文件变更、配额查询与 Fork |
|
|
37
|
+
| Codex | `codex app-server --stdio` | Thread / Turn / Item、流式事件、审批、Usage、Resume、Fork、Compact |
|
|
38
|
+
| Pi | `pi --mode rpc` | 会话恢复、模型目录、Usage、原生命令、Fork |
|
|
39
|
+
| Oh My Pi | `omp --mode rpc`(Pi 家族协议,见 `pi-family.js`) | 与 Pi 同源:会话、模型、思考档位、权限、Fork、Usage |
|
|
40
|
+
| Claude Code | `@anthropic-ai/claude-agent-sdk` 的 `query()` | 持久会话、流式消息、工具、权限、模型与 Resume |
|
|
41
|
+
| DeepSeek Harness | `npm run dsh -- web` | Web Remote、Typert RPC、WebSocket 事件、会话与模型控制 |
|
|
42
|
+
| OpenCode | `opencode serve`(原生 HTTP / SSE,见 `opencode.js`) | 会话、模型目录、权限模式、图片、Fork |
|
|
43
|
+
| Grok | `grok agent stdio`(独立适配 ACP 基础消息与 `_x.ai/*` 厂商扩展,见 `grok.js`) | 会话、模型、思考档位、原生命令目录、Token Usage、原生 Fork |
|
|
44
|
+
| OpenClaw | 本机 Gateway loopback WebSocket(`openclaw-gateway.js` + `openclaw.js`) | 会话与恢复、流式增量、工具与命令输出、exec/plugin 审批回路由、模型与思考档位逐轮覆盖 |
|
|
45
|
+
| Hermes | `hermes acp`(ACP over stdio,共享 `acp.js` 工厂) | 会话持久化/恢复/Fork、流式回答与思考、工具、审批、模型选择 |
|
|
46
|
+
| Qoder | `qoder acp`(阿里 Qoder CLI,共享 `acp.js` 工厂) | 会话、流式回答与思考、工具、审批、模型选择 |
|
|
47
|
+
| Workbuddy | `codebuddy acp`(腾讯 Workbuddy / CodeBuddy CLI,共享 `acp.js` 工厂) | 会话、流式回答与思考、工具、审批、模型选择 |
|
|
48
|
+
| ZCode | `zcode acp`(智谱 AI ZCode CLI,共享 `acp.js` 工厂) | 会话、流式回答与思考、工具、审批、GLM 模型识别 |
|
|
49
|
+
| Trae | `traecli acp serve`(字节跳动 Trae CLI Agent,共享 `acp.js` 工厂) | 会话、流式回答与思考、工具、审批、模型选择 |
|
|
50
|
+
|
|
51
|
+
能力只在 Adapter 的 `manifest` 中声明。界面根据真实能力显示入口,不靠 Harness 名称猜测功能;厂商特有字段会保留在原生引用和载荷中。
|
|
52
|
+
|
|
53
|
+
## 架构
|
|
54
|
+
|
|
55
|
+
```mermaid
|
|
56
|
+
flowchart TB
|
|
57
|
+
Desktop[Codex Desktop 原生 UI] --> Shim[Harness Mix CLI Shim]
|
|
58
|
+
Shim --> Host[原生 Host 入口 src/main/native]
|
|
59
|
+
Host --> Runtime[Host Runtime]
|
|
60
|
+
Runtime --> Core[Protocol Core]
|
|
61
|
+
Runtime --> Store[(Thread and session store)]
|
|
62
|
+
Runtime --> Registry[Adapter registry]
|
|
63
|
+
Registry --> Antigravity[Antigravity CLI]
|
|
64
|
+
Registry --> Codex[Codex app-server]
|
|
65
|
+
Registry --> Pi[Pi RPC]
|
|
66
|
+
Registry --> OMP[Oh My Pi RPC]
|
|
67
|
+
Registry --> Claude[Claude Agent SDK]
|
|
68
|
+
Registry --> DSH[DSH Web Remote]
|
|
69
|
+
Registry --> OpenCode[OpenCode Server HTTP / SSE]
|
|
70
|
+
Registry --> Grok[Grok native stdio + vendor extensions]
|
|
71
|
+
Registry --> OpenClaw[OpenClaw Gateway loopback WS]
|
|
72
|
+
Registry --> Hermes[Hermes ACP stdio]
|
|
73
|
+
Registry --> Qoder[Qoder ACP stdio]
|
|
74
|
+
Registry --> Workbuddy[Workbuddy ACP stdio]
|
|
75
|
+
Registry --> ZCode[ZCode ACP stdio]
|
|
76
|
+
Registry --> Trae[Trae ACP stdio]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
src/
|
|
81
|
+
├─ main/
|
|
82
|
+
│ ├─ adapters/ # 每个 Harness 的原生适配器
|
|
83
|
+
│ ├─ harness-adapter/ # Manifest、能力与适配器契约
|
|
84
|
+
│ ├─ host/ # 编排、恢复、持久化与事件投影
|
|
85
|
+
│ ├─ native/ # 原生模式:Launcher、Shim、Host 入口、协议桥
|
|
86
|
+
│ └─ protocol-core/ # Thread / Turn / Item 统一语义
|
|
87
|
+
├─ native-ui/
|
|
88
|
+
│ ├─ renderer-extension/ # 注入 Codex Desktop 的渲染扩展(选择器、模型目录)
|
|
89
|
+
│ ├─ desktop-control/ # CDP 控制器与请求桥
|
|
90
|
+
│ └─ shared-contracts/ # 渲染侧与内核共享的协议契约
|
|
91
|
+
└─ assets/icons/ # Harness 与模型图标(编译期嵌入)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
新增 Harness 时,实现同形 Adapter 并注册到 `src/main/adapters/index.js`。核心形态如下:
|
|
95
|
+
|
|
96
|
+
```js
|
|
97
|
+
module.exports = {
|
|
98
|
+
manifest: {
|
|
99
|
+
id,
|
|
100
|
+
name,
|
|
101
|
+
icon,
|
|
102
|
+
capabilities: { streaming, tools, approvals, models, resume, fork, usage }
|
|
103
|
+
},
|
|
104
|
+
create(emit) {
|
|
105
|
+
return {
|
|
106
|
+
inspect,
|
|
107
|
+
open,
|
|
108
|
+
send,
|
|
109
|
+
cancel,
|
|
110
|
+
close,
|
|
111
|
+
respond,
|
|
112
|
+
listModelsFor,
|
|
113
|
+
setModel,
|
|
114
|
+
fork
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## 本地运行
|
|
121
|
+
|
|
122
|
+
开发环境需要 Windows、近期 Node.js LTS 和 npm。应用不会读取或保存 Harness 的账户密钥,请先在对应的原生 CLI 中完成安装与登录。
|
|
123
|
+
|
|
124
|
+
```powershell
|
|
125
|
+
git clone https://github.com/emo-xiaoyu/harness-mix.git
|
|
126
|
+
cd harness-mix
|
|
127
|
+
npm install
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### 运行方式
|
|
131
|
+
|
|
132
|
+
原生模式(默认):本地编译的 Shim 与 Renderer 扩展接入官方 Codex Desktop,模型选择会路由到对应 Harness。首次启动会重启已打开的 Codex Desktop:
|
|
133
|
+
```powershell
|
|
134
|
+
npm start
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
常用原生依赖:
|
|
138
|
+
|
|
139
|
+
- Codex:安装 `@openai/codex`,确保 `codex` 命令可用。
|
|
140
|
+
- Pi:确保 `pi.cmd` 可用。
|
|
141
|
+
- Claude Code:SDK 已由 npm 依赖安装,认证仍由 Claude Code 环境管理。
|
|
142
|
+
- DeepSeek Harness:使用本项目锁定的 `@deepseek-ai/dsh@0.1.2-rc.1`。可通过 `HARNESS_MIX_DSH_ROOT` 显式指定源码目录,但版本必须被内核支持。
|
|
143
|
+
|
|
144
|
+
原生接入方式、数据目录和验证说明见 [原生 Codex 接入](docs/native-codex.md)。
|
|
145
|
+
|
|
146
|
+
## 验证
|
|
147
|
+
|
|
148
|
+
```powershell
|
|
149
|
+
npm run check
|
|
150
|
+
npm run test:core-all
|
|
151
|
+
npm run e2e:native
|
|
152
|
+
npm run smoke:native-ui
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
涉及原生 Adapter 时,再执行对应的真实链路:
|
|
156
|
+
|
|
157
|
+
```powershell
|
|
158
|
+
npm run e2e:pi
|
|
159
|
+
npm run e2e:dsh
|
|
160
|
+
npm run e2e:claude
|
|
161
|
+
npm run e2e:codex
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
部分 E2E 会启动真实 Harness,可能需要本机安装、登录或模型额度。测试生成物写入 `output/`,不应提交到仓库。
|
|
165
|
+
|
|
166
|
+
## 设计原则
|
|
167
|
+
|
|
168
|
+
1. **原生能力优先**:Adapter 翻译协议,不重新实现 Harness。
|
|
169
|
+
2. **诚实声明能力**:只有完成接线和验证的能力才进入 `manifest`。
|
|
170
|
+
3. **惰性恢复**:打开历史任务只读取本地投影,发送新消息时才恢复原生进程。
|
|
171
|
+
4. **可回放事件**:Core Event 保持稳定顺序,可用于恢复、投影和确定性校验。
|
|
172
|
+
5. **凭据隔离**:账号、令牌、沙箱和权限决定由原生程序管理。
|
|
173
|
+
|
|
174
|
+
## 项目状态
|
|
175
|
+
|
|
176
|
+
- [内核迁移状态](CORE-MIGRATION-STATUS.md)
|
|
177
|
+
- [下一步计划](NEXT-STEPS.md)
|
|
178
|
+
- [设计验收记录](design-qa.md)
|
|
179
|
+
|
|
180
|
+
Harness Mix 参考了 [codex-host](https://github.com/BytePioneer-AI/codex-host) 的插件化组织方式,并使用 [OpenAI Codex](https://github.com/openai/codex) 官方 app-server 协议完成 Codex 原生接入。
|
|
181
|
+
|
|
182
|
+
## License
|
|
183
|
+
|
|
184
|
+
Harness Mix 基于 [Apache License 2.0](LICENSE) 发布。第三方组件仍适用各自的许可证;归属信息见 [NOTICE](NOTICE)。
|
package/Start-Codex.cmd
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
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
|
+
}
|
|
@@ -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,41 @@
|
|
|
1
|
+
# Harness 管理
|
|
2
|
+
|
|
3
|
+
入口:右上角「Harness 管理」、左下角设置,或 `Ctrl+,`。
|
|
4
|
+
|
|
5
|
+
## 连接
|
|
6
|
+
|
|
7
|
+
分别检查 Codex、Claude Code、Pi、DeepSeek Harness 的本机安装状态,显示原生接口、诊断信息和检查耗时。检测不会发送用户消息。程序可用不等于账号已登录。
|
|
8
|
+
|
|
9
|
+
## 账号
|
|
10
|
+
|
|
11
|
+
| Harness | 读取状态 | 管理方式 |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| Codex | 原生 `account/read` | 原生 `account/login/start` 打开浏览器;支持取消、完成通知与退出登录 |
|
|
14
|
+
| Claude Code | 原生 `claude auth status --json` | 打开原生认证窗口执行 `claude auth login/logout`,完成后刷新 |
|
|
15
|
+
| Pi | 原生 RPC 模型目录中的供应商 | 打开 Pi 原生交互终端,使用 `/login` 与 `/logout` |
|
|
16
|
+
| DeepSeek Harness | 原生 Web Remote 模型目录中的供应商 | 在独立、安全隔离的应用窗口中打开 DSH 原生管理页面,进入设置管理供应商 |
|
|
17
|
+
|
|
18
|
+
Pi / DSH 显示「已配置」而非「已登录」,目录存在不能证明凭据通过在线验证。登录与配置仍使用原生程序自己的账号存储,Harness Mix 不复制账号密钥。当前使用各原生程序的本机账号环境,不提供独立多账号池。
|
|
19
|
+
|
|
20
|
+
修改登录前会检查该 Harness 是否有运行中的任务。Codex 登录连接保留至完成、取消或五分钟超时;关闭设置不会取消浏览器登录,应用退出会取消待完成的登录。
|
|
21
|
+
|
|
22
|
+
## 模型
|
|
23
|
+
|
|
24
|
+
- 按 Harness 读取原生模型目录,支持按名称和供应商筛选。
|
|
25
|
+
- 「保存为新对话默认」写入 Harness Mix 的本地非敏感偏好,刷新与重启后保留,不改写原生模型配置。
|
|
26
|
+
- 同名模型按供应商区分。默认选择只允许来自该 Harness 实际返回的目录。
|
|
27
|
+
- 「应用到当前对话」通过现有原生 `setModel` 链路执行;任务运行中不能切换。
|
|
28
|
+
- 选择「跟随原生默认」可清除 Harness Mix 的默认模型覆盖。
|
|
29
|
+
- 配置或登录完成后刷新状态和目录,使新的供应商与模型可见。
|
|
30
|
+
|
|
31
|
+
## 验证
|
|
32
|
+
|
|
33
|
+
```powershell
|
|
34
|
+
npm run test:native-ui
|
|
35
|
+
npm run smoke:native-ui
|
|
36
|
+
npm run e2e:native
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
`test:native-ui` 覆盖账号字段白名单、模型供应商身份、并发默认值保存、登录连接生命周期和设置页渲染逻辑。`smoke:native-ui` 使用 Electron 与模拟原生响应,检查 Renderer 注入及设置界面的关键交互。
|
|
40
|
+
|
|
41
|
+
`e2e:native` 是只读协议验收:读取可用 Harness 与模型目录,不执行登录/退出或修改凭据。完整账号管理和 DSH 原生页面重开仍需在真实 Codex Desktop 重启验收中人工确认,不能由这条命令代替。
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# 多 Agent 协作
|
|
2
|
+
|
|
3
|
+
## 用法
|
|
4
|
+
|
|
5
|
+
重新启动 Harness Mix 后,新建或恢复一个 Pi / Oh My Pi / Claude Code / **Codex(协作)** / Grok / OpenCode 任务,输入 `@`,在 **Agents** 页选择目标 Harness;**会话** 页单独提供历史引用。左右键切换分页,上下键选择,Enter/Tab 插入。Codex(协作)通过 Host Adapter 使用原生 app-server;原来的 Codex 入口仍为官方直通。可用目标来自 Host 注册的 Adapter;未就绪的目标不可选。示例:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
你负责实现后端。
|
|
9
|
+
@claude-code 审查 API 设计,只读,不修改文件。
|
|
10
|
+
@pi 为 tests/ 编写测试,不修改 src/。
|
|
11
|
+
收齐结果后由你运行验证并总结。
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
也可直接输入 `@pi`、`@claude`、`@dsh`、`@codex` 等已注册 ID/别名。显式 `[名称](harness-mix://agent/pi)` 引用可随草稿复制;代码块、行内代码和邮箱里的 @ 不作为路由元数据。提及本身由主模型结合用户任务理解,Host 不按文字片段盲目拆任务。
|
|
15
|
+
|
|
16
|
+
## 执行方式
|
|
17
|
+
|
|
18
|
+
借鉴 Codeg 的 [委派工具](https://github.com/xintaofei/codeg/blob/main/src-tauri/src/acp/delegation/tool_schema.json) 和 [Agent 引用路由](https://github.com/xintaofei/codeg/blob/main/src-tauri/src/acp/agent_mentions.rs):
|
|
19
|
+
|
|
20
|
+
1. Host 为主任务提供会话绑定的协作工具。Claude 通过 SDK 的 MCP 配置,Codex Adapter 通过 app-server 的线程 MCP 配置,Pi/OMP 通过原生扩展加载,Grok 通过原生 `session/new` 的 `mcpServers` 槽注入(L1),OpenCode 通过 `OPENCODE_CONFIG_CONTENT` 内联配置注入 `mcp.servers`(L2,运行时最高优先级、不写任何用户配置文件)。
|
|
21
|
+
2. 主模型调用 `delegate_to_agent(agent_type, task)`,立即取得 `task_id`,可以继续发起其他任务。
|
|
22
|
+
3. Host 创建带 `parentThreadId` 的独立原生会话。任务中需要的上下文由主模型明确传递,不复制其他 Harness 的隐藏状态、账户或权限。
|
|
23
|
+
4. `update_agent_plan(steps)` 发布开发、审查、返工和最终验收计划;步骤状态为 pending / in_progress / completed。`get_delegation_status(task_ids, wait_ms)` 收取状态和最终文本;单次等待不超过 60 秒。`message_agent` 在已结束的子会话中继续对话,`cancel_delegation` 取消子任务。
|
|
24
|
+
5. 结果作为真正的原生工具结果返回主模型,由主模型验证、整合并继续执行。Host 额外投影原生 `collabAgentToolCall` 协作卡片(真实子任务 ID、Harness 名称、提示词和最终状态),不代替主模型生成总结。
|
|
25
|
+
|
|
26
|
+
`list_agents` 提供真实可用性。旧 `/delegate` 仍是独立的手动委派入口,其完成结果只回投父任务工具卡片,不自动调用父模型。
|
|
27
|
+
|
|
28
|
+
## 执行边界
|
|
29
|
+
|
|
30
|
+
- 同一主任务最多四个同时运行的子任务,每轮最多创建十六个;子任务不注入协作工具,不允许递归委派。
|
|
31
|
+
- 模型工具委派默认共享主任务目录,子 Agent 使用独立原生会话。开发完成后再委派审查,审查意见通过 `message_agent` 发回原开发者,修复后复用原审查会话复审。主任务应等待依赖步骤完成并避免同时修改相同文件。主任务负责共享目录整体文件快照。显式 `isolation=worktree`(或 Git 项目中的 `auto`)仍创建隔离分支与工作区,保存主目录当前非忽略文件作为起点,保留用户暂存区;隔离改动不会自动出现在主目录。
|
|
32
|
+
- 协作不创建独立面板或第二套 UI。父子关系通过原生 `parentThreadId` 投影,子任务进入 Codex 原生任务体系;委派和跟进显示为原生协作卡片;普通工具及轮询仍显示为 MCP 工具卡片,审批在相应原生子任务中处理,文件变化由原生 Changes 界面展示。
|
|
33
|
+
- 主任务可调用 `review_delegation_changes` 在原生工具卡片中审查 worktree patch。只有用户明确要求应用时才可调用 `apply_delegation_changes`,并必须提交刚审查得到的 digest。应用前检查 Git patch 冲突;冲突时保留两个目录,交给用户处理。worktree 保留供检查,不自动删除。隔离子任务有独立审查快照;共享子任务仍由主任务记录整体快照。旧 `/delegate` 手动入口仍为共享目录。
|
|
34
|
+
- 同目录的无关任务仍受原有执行互斥约束。父任务结束/取消、Host 关闭会取消尚未完成的子任务;30 分钟未完成的子任务会超时。
|
|
35
|
+
- 协作 HTTP 桥仅绑定 loopback,以每个主任务的随机本地能力标识鉴权;工具参数校验,子任务归属检查,外部 Origin 拒绝。该标识不是模型账户令牌。Host 不读取或代理原生账户密钥。
|
|
36
|
+
- Claude 的 `canUseTool` 和 Codex MCP elicitation 继续走原生审批。需要确认时,用户在相应任务的审批界面处理;自动验证不会代答。
|
|
37
|
+
- 主任务 Fork 会重新绑定自己的协作身份,不复用源任务的子任务访问权。
|
|
38
|
+
- task_id、父子会话、任务文本、结果和 worktree 起点在独立串行存储中持久化;重启后在途任务变为 interrupted,不自动重复执行有副作用的操作。点击「继续协作」向原主任务发送续跑请求,主模型用 `list_delegations` / `resume_delegation` 恢复原子会话。原生会话丢失或无法恢复会明确报错。会话鉴权标识不持久化,重启重新签发。
|
|
39
|
+
|
|
40
|
+
## 支持与验证范围
|
|
41
|
+
|
|
42
|
+
| 入口 | 状态 |
|
|
43
|
+
| --- | --- |
|
|
44
|
+
| Pi 主任务 | 原生扩展工具;Pi→Pi、Pi→Claude 两条真实模型链路通过 |
|
|
45
|
+
| Claude Code 主任务 | SDK MCP 注入;本机真实运行触发原生工具审批,未代答,尚未完成模型闭环验收 |
|
|
46
|
+
| Oh My Pi 主任务 | 同 Pi 家族的扩展接线;本机未安装 OMP,真实验收未完成 |
|
|
47
|
+
| Codex(协作)主任务 | 已接入选择器、模型/强度、恢复归属、@ 菜单;桌面使用配套 CLI。真实请求已到原生 MCP 审批,尚未完成需授权的闭环 |
|
|
48
|
+
| Grok 主任务 | L1:`session/new`/`session/load` 原生 `mcpServers` 槽注入,恢复会话同样携带;真实模型闭环验收待跑 |
|
|
49
|
+
| OpenCode 主任务 | L2:`OPENCODE_CONFIG_CONTENT` 内联配置注入 `mcp.servers`(V2 schema),会话结束即失效;真实模型闭环验收待跑 |
|
|
50
|
+
| DSH 主任务 | 调研结论:DSH 自带 `@deepseek-ai/dsh-mcp-client`(stdio 配置:`transport/serverName/command/args/env`),门存在;host.call 会话通道的 MCP 注入点待上游确认,确认前保持 target-only |
|
|
51
|
+
| 官方 Codex 桌面直通任务 | 保持官方直通,不展示 Host 的 @ 协作菜单;不要把 Adapter 接线等同于已支持这个入口 |
|
|
52
|
+
| 其他 Harness 主任务(含 Antigravity) | Agents 页明确提示需要切换可编排的主 Agent,目标不可选;历史引用仍可用;可使用旧 /delegate |
|
|
53
|
+
| 子任务目标 | 所有已注册且本机可用的 Adapter;不代表每一对组合都已实测 |
|
|
54
|
+
|
|
55
|
+
```powershell
|
|
56
|
+
npm run test:collaboration
|
|
57
|
+
npm run test:collaboration-recovery
|
|
58
|
+
npm run smoke:collaboration-ui
|
|
59
|
+
npm run e2e:collaboration -- --lead=pi --worker=claude
|
|
60
|
+
npm run check
|
|
61
|
+
npm run test:core-all
|
|
62
|
+
npm run test:native-protocol
|
|
63
|
+
npm run e2e:native
|
|
64
|
+
npm run build:native
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
`test:collaboration` 使用真实 MCP stdio 子进程、本地鉴权桥和受控原生会话 Adapter 验证并发、结果、跟进、取消、跨任务访问限制、历史引用提示和共享快照策略。UI smoke 只检查原生输入框内的 Harness/历史会话选择、图标、标识、键盘选取和清理,截图位于 `output/collaboration-ui/mentions.png`。协作过程由 Native Protocol 的原生工具卡片测试覆盖。这不是完整 Codex Desktop 的交互验收;构建过程不会重启当前桌面。
|
|
68
|
+
|
|
69
|
+
2026-09-10 验证:Pi→Claude 两个真实子任务分别在不同 worktree 运行,结果返回主模型并汇总通过。恢复测试覆盖持久化身份、原子会话续跑、不重复建任务;Git 测试覆盖脏目录起点、暂存区保留、过期预览拒绝、冲突时不部分应用。Native Protocol 覆盖父子任务归属与原生 MCP 工具卡片,Electron 仅覆盖原生输入框中的协作引用增强。
|
|
70
|
+
|
|
71
|
+
## 统一历史
|
|
72
|
+
|
|
73
|
+
设置 → 会话导入 → 全部历史,支持按标题、目录和会话 ID 搜索、分页、导入并打开。Pi、Claude、Codex 从本机原生历史发现会话;其余 Harness 当前聚合 Host 已管理的历史,并在来源名称上标为「Host 历史」,尚未接入各自 CLI 的外部会话扫描。
|
|
74
|
+
|
|
75
|
+
导入只创建投影和原生会话引用,不启动模型;再次发送时原生恢复。重复导入返回同一任务。输入 `@` 可从「会话」页选择一条记录;Host 最多读取三条引用,每条只附加最近十二条用户/助手文本,并明确标记为不可执行的历史数据。引用不会创建、恢复或占用原生会话。原始完整工具、隐藏状态和分支数据仍留在原生存储,因此这不是原生历史的无损迁移。原生运行状态未知时,应先关闭其他客户端的同一会话。
|
|
76
|
+
|
|
77
|
+
## 2026-09-11 Codeg 协作流程修复
|
|
78
|
+
|
|
79
|
+
- Agents 与历史会话分栏,修复原生 @ 大菜单与协作菜单同时弹出;提示不可用主 Agent 的能力边界。
|
|
80
|
+
- 默认共享目录,使开发与审查读取同一份实际文件;保留显式隔离工作区。多任务等待在任一结果可收取时返回。
|
|
81
|
+
- 新增可更新的原生计划,子任务卡片投影真实会话 ID 与 Harness 名称,跟进复用原会话。
|
|
82
|
+
- 实测 Pi 主任务 + 两个独立 Pi 原生子会话:开发者写入错误样本 41 → 审查者 REVIEW_FAIL → message_agent 交回原开发者修为 42 → 原审查者 REVIEW_PASS → 主模型完成计划并汇总。测试验证文件实际导出值以及两个会话均收到跟进。日志:`output/collaboration-cycle.log`。
|
|
83
|
+
- Pi → Claude 写文件测试到达原生审批,未代答,跨 Harness 写文件闭环尚未通过;不能据此声称全部 Harness 组合已验收。
|
|
84
|
+
|
|
85
|
+
```powershell
|
|
86
|
+
npm run e2e:collaboration -- --lead=pi --worker=pi --cycle
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
桌面实测:Pi 主 Agent 切换、Agents/会话切页、Claude 提及精确插入(无重复 @)、图标标识、Antigravity 未支持主编排的提示和草稿清理通过。截图与报告在 `output/collaboration-ui/desktop-*.png` 和 `desktop-report.json`。专用子任务卡片的协议投影已验证;尚未完成真实桌面卡片点击跳转验收。
|