@harness-mix/cli 0.1.4 → 0.1.5

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.
Files changed (126) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +26 -96
  3. package/docs/chatgpt-web-sidebar.md +7 -1
  4. package/docs/cross-platform.md +15 -0
  5. package/docs/harness-handoff-design.md +377 -0
  6. package/docs/harness-management.md +28 -1
  7. package/docs/native-codex.md +21 -10
  8. package/output/native-build/harness-mix-shim.exe +0 -0
  9. package/output/native-build/renderer-extension.js +972 -35
  10. package/package.json +18 -9
  11. package/scripts/chatgpt-context-ui-smoke.cjs +16 -0
  12. package/scripts/codex-accounts-test.cjs +81 -0
  13. package/scripts/codex-accounts-ui-smoke.cjs +70 -0
  14. package/scripts/e2e-integrations.cjs +52 -0
  15. package/scripts/e2e-native-host.cjs +39 -0
  16. package/scripts/handoff-checkpoint-test.cjs +83 -0
  17. package/scripts/install-native.cjs +4 -1
  18. package/scripts/integrations-test.cjs +64 -0
  19. package/scripts/integrations-ui-smoke.cjs +63 -0
  20. package/scripts/native-protocol-test.cjs +78 -4
  21. package/scripts/native-secret-test.cjs +2 -2
  22. package/scripts/native-shim-test.cjs +20 -4
  23. package/scripts/native-ui-smoke.cjs +58 -2
  24. package/scripts/publish-native-package.cjs +8 -5
  25. package/scripts/support/integrations-mcp-fixture.cjs +15 -0
  26. package/scripts/switch-harness-test.cjs +27 -1
  27. package/src/main/adapters/acp.js +3 -3
  28. package/src/main/adapters/antigravity.js +10 -13
  29. package/src/main/adapters/claude.js +10 -3
  30. package/src/main/adapters/codex-app-server.js +20 -13
  31. package/src/main/adapters/codex.js +6 -4
  32. package/src/main/adapters/dsh.js +2 -1
  33. package/src/main/adapters/grok.js +4 -3
  34. package/src/main/adapters/managed-mcp.js +12 -0
  35. package/src/main/adapters/native-acp.js +4 -4
  36. package/src/main/adapters/opencode.js +9 -3
  37. package/src/main/adapters/pi.js +1 -0
  38. package/src/main/harness-adapter/manifest.js +17 -2
  39. package/src/main/host/handoff-access.js +53 -0
  40. package/src/main/host/handoff-checkpoints.js +206 -0
  41. package/src/main/host/handoff-mcp.cjs +38 -0
  42. package/src/main/host/handoff-tools.js +13 -0
  43. package/src/main/host/handoff.js +28 -6
  44. package/src/main/host/integrations.js +201 -0
  45. package/src/main/host/runtime.js +75 -35
  46. package/src/main/host/store.js +4 -4
  47. package/src/main/native/codex-accounts.js +260 -0
  48. package/src/main/native/host.js +1 -1
  49. package/src/main/native/launcher.js +2 -2
  50. package/src/main/native/protocol.js +74 -23
  51. package/src/main/native/redact.js +1 -1
  52. package/src/main/native/rs/crates/shim/src/main.rs +155 -12
  53. package/src/native-ui/desktop-control/dist/tsconfig.tsbuildinfo +1 -1
  54. package/src/native-ui/renderer-extension/dist/types/harness-mix-settings.d.ts.map +1 -1
  55. package/src/native-ui/renderer-extension/dist/types/index.d.ts +4 -0
  56. package/src/native-ui/renderer-extension/dist/types/index.d.ts.map +1 -1
  57. package/src/native-ui/renderer-extension/dist/types/renderer-agent-picker.d.ts +2 -0
  58. package/src/native-ui/renderer-extension/dist/types/renderer-agent-picker.d.ts.map +1 -1
  59. package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts.map +1 -1
  60. package/src/native-ui/renderer-extension/dist/types/renderer-chatgpt-context.d.ts +36 -0
  61. package/src/native-ui/renderer-extension/dist/types/renderer-chatgpt-context.d.ts.map +1 -0
  62. package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-state.d.ts +1 -0
  63. package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-state.d.ts.map +1 -1
  64. package/src/native-ui/renderer-extension/dist/types/renderer-composer-dom.d.ts +3 -1
  65. package/src/native-ui/renderer-extension/dist/types/renderer-composer-dom.d.ts.map +1 -1
  66. package/src/native-ui/renderer-extension/dist/types/renderer-harness-handoff.d.ts +53 -0
  67. package/src/native-ui/renderer-extension/dist/types/renderer-harness-handoff.d.ts.map +1 -0
  68. package/src/native-ui/renderer-extension/dist/types/renderer-integrations-client.d.ts +80 -0
  69. package/src/native-ui/renderer-extension/dist/types/renderer-integrations-client.d.ts.map +1 -0
  70. package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts +7 -1
  71. package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts.map +1 -1
  72. package/src/native-ui/renderer-extension/dist/types/renderer-settings-lifecycle.d.ts +1 -0
  73. package/src/native-ui/renderer-extension/dist/types/renderer-settings-lifecycle.d.ts.map +1 -1
  74. package/src/native-ui/renderer-extension/dist/types/settings/accounts-list.d.ts +2 -0
  75. package/src/native-ui/renderer-extension/dist/types/settings/accounts-list.d.ts.map +1 -1
  76. package/src/native-ui/renderer-extension/dist/types/settings/accounts-page.d.ts +1 -0
  77. package/src/native-ui/renderer-extension/dist/types/settings/accounts-page.d.ts.map +1 -1
  78. package/src/native-ui/renderer-extension/dist/types/settings/integrations-page.d.ts +5 -0
  79. package/src/native-ui/renderer-extension/dist/types/settings/integrations-page.d.ts.map +1 -0
  80. package/src/native-ui/renderer-extension/dist/types/settings/localization.d.ts +5 -0
  81. package/src/native-ui/renderer-extension/dist/types/settings/localization.d.ts.map +1 -1
  82. package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts +8 -4
  83. package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts.map +1 -1
  84. package/src/native-ui/renderer-extension/dist/types/tsconfig.tsbuildinfo +1 -1
  85. package/src/native-ui/renderer-extension/src/harness-mix-settings.ts +3 -1
  86. package/src/native-ui/renderer-extension/src/index.ts +28 -0
  87. package/src/native-ui/renderer-extension/src/renderer-agent-icon.ts +4 -4
  88. package/src/native-ui/renderer-extension/src/renderer-agent-picker.ts +46 -6
  89. package/src/native-ui/renderer-extension/src/renderer-binding-probe.ts +159 -40
  90. package/src/native-ui/renderer-extension/src/renderer-chatgpt-context.ts +83 -0
  91. package/src/native-ui/renderer-extension/src/renderer-codex-account-state.ts +10 -0
  92. package/src/native-ui/renderer-extension/src/renderer-composer-dom.ts +10 -0
  93. package/src/native-ui/renderer-extension/src/renderer-harness-handoff.ts +330 -0
  94. package/src/native-ui/renderer-extension/src/renderer-integrations-client.ts +26 -0
  95. package/src/native-ui/renderer-extension/src/renderer-model-client.ts +17 -1
  96. package/src/native-ui/renderer-extension/src/renderer-settings-lifecycle.ts +2 -0
  97. package/src/native-ui/renderer-extension/src/settings/accounts-list.ts +16 -1
  98. package/src/native-ui/renderer-extension/src/settings/accounts-page.ts +32 -3
  99. package/src/native-ui/renderer-extension/src/settings/integrations-page.ts +102 -0
  100. package/src/native-ui/renderer-extension/src/settings/localization.ts +30 -13
  101. package/src/native-ui/renderer-extension/src/settings/pages.ts +47 -18
  102. package/src/native-ui/renderer-extension/src/settings/shell.css +13 -0
  103. package/src/native-ui/renderer-extension/test/renderer-agent-picker.test.ts +44 -13
  104. package/src/native-ui/renderer-extension/test/renderer-chatgpt-context.test.ts +18 -0
  105. package/src/native-ui/renderer-extension/test/renderer-codex-account-state.test.ts +13 -1
  106. package/src/native-ui/renderer-extension/test/renderer-harness-handoff.test.ts +20 -0
  107. package/src/native-ui/renderer-extension/test/renderer-model-client.test.ts +9 -2
  108. package/src/native-ui/renderer-extension/test/settings/localization.test.ts +1 -1
  109. package/src/native-ui/renderer-extension/test/settings/pages.test.ts +77 -8
  110. package/src/native-ui/renderer-extension/test/settings/shell.test.ts +3 -0
  111. package/src/native-ui/shared-contracts/dist/codex-accounts.d.ts +19 -4
  112. package/src/native-ui/shared-contracts/dist/codex-accounts.d.ts.map +1 -1
  113. package/src/native-ui/shared-contracts/dist/codex-accounts.js +2 -0
  114. package/src/native-ui/shared-contracts/dist/codex-accounts.js.map +1 -1
  115. package/src/native-ui/shared-contracts/dist/index.d.ts +2 -2
  116. package/src/native-ui/shared-contracts/dist/index.d.ts.map +1 -1
  117. package/src/native-ui/shared-contracts/dist/index.js +1 -1
  118. package/src/native-ui/shared-contracts/dist/index.js.map +1 -1
  119. package/src/native-ui/shared-contracts/dist/thread-harness-switch.d.ts +29 -0
  120. package/src/native-ui/shared-contracts/dist/thread-harness-switch.d.ts.map +1 -1
  121. package/src/native-ui/shared-contracts/dist/thread-harness-switch.js +13 -0
  122. package/src/native-ui/shared-contracts/dist/thread-harness-switch.js.map +1 -1
  123. package/src/native-ui/shared-contracts/dist/tsconfig.tsbuildinfo +1 -1
  124. package/src/native-ui/shared-contracts/src/codex-accounts.ts +2 -0
  125. package/src/native-ui/shared-contracts/src/index.ts +8 -1
  126. package/src/native-ui/shared-contracts/src/thread-harness-switch.ts +17 -0
@@ -5,22 +5,31 @@
5
5
  ## 调用链
6
6
 
7
7
  ```text
8
- Codex Desktop 原生输入框 / Harness 选择器
9
- 本地编译的 Harness Mix CLI Shim (harness-mix-shim.exe)
10
- → Harness Mix 原生 Host 入口 (src/main/native/host.js)
11
- Harness Mix 本地 HostRuntime (src/main/host/runtime.js) & ProtocolCore
12
- 本地 Harness 适配器(Pi / Claude Code / DeepSeek / Antigravity / Codex / CodeBuddy / Kiro / Cursor / Qoder)
13
- → Codex app-server 事件投影 (src/main/native/protocol.js)
14
- → Codex Desktop 原生流式文本、工具、审批和 Diff 组件
8
+ 官方 Codex
9
+ Codex Desktop → Harness Mix Shim/Host 多路复用器 → 官方 Codex app-server
10
+
11
+ 其他 Harness 与显式的 Codex 协作 Worker:
12
+ Codex Desktop → Harness Mix Shim/Host HostRuntime/ProtocolCore 原生 Harness
15
13
  ```
16
14
 
15
+ 选择器中的 `Codex(官方原生)` 使用第一条路径。它的 `thread/start`、`thread/resume`、`turn/start`、`turn/interrupt`、Fork、压缩、工具、审批、模型和 Usage 请求不进入 HostRuntime,由官方 app-server 处理。Host 只负责把同一连接上的官方消息转发给 Desktop,并在 `thread/list` 首页加入其他 Harness 的任务。
16
+
17
+ `Codex(Harness Mix 协作)` 是显式的受管 Worker 路由,用于跨 Harness 委派;它通过 Codex Adapter 进入 HostRuntime。两个入口名称和线程所有权分开,避免把协作 Worker 误认为官方 Codex 主路径。
18
+
19
+ ## Codex 多账号
20
+
21
+ 「设置 → 账号」保留官方 Codex Desktop 账号,并允许添加最多 127 个附加账号。每个附加账号使用 `%APPDATA%\harness-mix\codexhost\codex-accounts\profiles\<account-id>` 作为独立 `CODEX_HOME`;设备码登录、`auth.json`、令牌刷新、额度与原生会话均由该目录对应的 Codex app-server 所有。Harness Mix 的 `accounts.json` 只记录账号档案 ID、显示名、创建时间和默认选择,不读取或复制认证内容。
22
+
23
+ 账号页会从每个账号的原生 `account/read` 与 `account/rateLimits/read` 读取套餐、5 小时/7 天已用或剩余额度及刷新时间。编辑器 Agent 菜单可直接选择账号;官方账号仍走官方直通路径,附加账号的新任务进入同一套 Desktop Thread/Turn/工具/审批/Diff 界面并固定到所选账号。更改默认账号不会迁移或中断已运行任务。
24
+
17
25
  外部 Thread 支持「调整方向」:会话运行中发送新消息会取消当前 Turn、等待其完全终结(含文件快照结算),再将新输入作为独立新 Turn 启动;超时、目标过期或并发冲突一律失败,绝不自动启动非预期 Turn。
18
26
 
19
- 这是完全内化于本项目的自研自建架构:
27
+ Harness Mix 的多 Harness 部分是本项目自研自建架构:
20
28
  - **无上游 npm 依赖**:Launcher、Shim、Host Runtime 与 Renderer 扩展源码均维护在本项目(`src/main/native` 与 `src/native-ui`),不依赖任何上游 npm 包。
21
- - **内核 100% 属于 Harness Mix**:由本项目的 `HostRuntime`、`ProtocolCore` 与原生适配器(`src/main/adapters`)直接管理会话生命周期、模型调用、多轮对话、交互审批与文件差异。
29
+ - **官方 Codex 保持官方所有权**:账号、凭据、会话、模型调用、工具、审批和权限由官方 app-server 管理;Harness Mix 不把官方 Codex Thread 导入自己的 HostRuntime
30
+ - **外部 Harness 由本地内核管理**:`HostRuntime`、`ProtocolCore` 与原生适配器管理外部 Harness 的会话映射、事件投影和协作。
22
31
  - **图标与资源自主集成**:Harness 品牌图标及各厂商模型图标直接从 `src/assets/icons` 提取并在本地编译时嵌入 Renderer 扩展。
23
- - **单内核**:原生模式接入 Codex 原生 UI,会话内核只有 HostRuntime + ProtocolCore 一套。
32
+ - **同一套 UI**:两条执行路径都复用 Codex Desktop 的会话、工具、审批和 Diff 组件。
24
33
 
25
34
  ## 启动与配置
26
35
 
@@ -53,6 +62,8 @@ npm start
53
62
 
54
63
  `harness-mix-shim.exe`、`harness-mix-appx.exe` 与 `harness-mix-secret.exe` 由 `src/main/native/rs` 下的 Rust workspace 构建(`npm run build:native`),零外部 crate 依赖:Shim 仅用 std 并给自身挂 kill-on-close Job Object,AppX 手写 COM 声明,Secret 手写 DPAPI/kernel32 声明;任意干净的 Rust 工具链即可构建。Shim 产物经 e2e:native 全链路验证,Job Object 级联清理由 `npm run test:native-job-object` 验证。
55
64
 
65
+ Shim 只接管作为 Desktop 协议端点的普通 `app-server`。`app-server proxy`、`app-server daemon`、普通 Codex 命令、参数值中的同名文本以及未知的新命令形态都直接交给官方 CLI;未知语法默认保持 Codex 可用,不猜测为 Harness Mix 路由。
66
+
56
67
  ## 进程监管
57
68
 
58
69
  - Shim 启动即把自身加入 Job Object(`KILL_ON_JOB_CLOSE`):node 宿主、官方 app-server、各家 CLI 与 pwsh 终端全部随 shim 级联清理,强杀或崩溃也不例外。