@harness-mix/cli 0.1.11 → 0.1.12

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 (306) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/NOTICE +16 -2
  3. package/README.md +265 -3
  4. package/docs/cross-platform.md +3 -3
  5. package/docs/multi-agent-collaboration.md +37 -23
  6. package/docs/native-acp.md +2 -2
  7. package/docs/native-codex.md +5 -5
  8. package/docs/{superpowers/specs → specs}/2026-09-13-native-hardening-design.md +2 -2
  9. package/docs/storage-verification-design.md +5 -5
  10. package/licenses/lobe-icons-MIT.txt +21 -0
  11. package/output/native-build/desktop-controller.mjs +24 -24
  12. package/output/native-build/harness-mix-secret.exe +0 -0
  13. package/output/native-build/harness-mix-shim.exe +0 -0
  14. package/output/native-build/renderer-extension.js +1325 -658
  15. package/package.json +2 -2
  16. package/scripts/adapters-test.cjs +9 -1
  17. package/scripts/antigravity-adapter-test.cjs +381 -284
  18. package/scripts/build-native.cjs +64 -46
  19. package/scripts/codex-accounts-test.cjs +1 -1
  20. package/scripts/codex-accounts-ui-smoke.cjs +1 -1
  21. package/scripts/collaboration-recovery-test.cjs +11 -2
  22. package/scripts/collaboration-test.cjs +114 -27
  23. package/scripts/collaboration-ui-smoke.cjs +45 -8
  24. package/scripts/concurrency-layers-test.cjs +5 -0
  25. package/scripts/diagnostics.cjs +1 -1
  26. package/scripts/e2e-native-host.cjs +13 -13
  27. package/scripts/error-kind-test.cjs +3 -3
  28. package/scripts/integrations-test.cjs +2 -2
  29. package/scripts/integrations-ui-smoke.cjs +6 -6
  30. package/scripts/native-config-test.cjs +6 -6
  31. package/scripts/native-job-object-test.cjs +1 -1
  32. package/scripts/native-protocol-test.cjs +44 -38
  33. package/scripts/native-rollback-test.cjs +1 -1
  34. package/scripts/native-secret-test.cjs +1 -1
  35. package/scripts/native-shim-test.cjs +1 -1
  36. package/scripts/native-sidebar-test.cjs +4 -4
  37. package/scripts/native-ui-smoke.cjs +12 -12
  38. package/scripts/pets-test.cjs +223 -3
  39. package/scripts/platform-test.cjs +6 -6
  40. package/scripts/publish-native-package.cjs +1 -1
  41. package/scripts/test-live-mentions.cjs +2 -2
  42. package/scripts/workspace-test.cjs +4 -2
  43. package/src/assets/icons/PROVENANCE.md +92 -0
  44. package/src/main/adapters/antigravity.js +1415 -1368
  45. package/src/main/adapters/claude.js +1 -1
  46. package/src/main/adapters/codex-app-server.js +1 -1
  47. package/src/main/adapters/dsh.js +1 -1
  48. package/src/main/adapters/index.js +1 -1
  49. package/src/main/adapters/pi-usage.js +2 -2
  50. package/src/main/harness-adapter/error-kind.js +1 -1
  51. package/src/main/harness-adapter/manifest.js +7 -1
  52. package/src/main/host/collaboration-tools.js +8 -1
  53. package/src/main/host/collaboration-worktree.js +27 -1
  54. package/src/main/host/collaboration.js +348 -15
  55. package/src/main/host/runtime.js +23 -15
  56. package/src/main/native/codex-accounts.js +1 -1
  57. package/src/main/native/config.js +9 -9
  58. package/src/main/native/host.js +1 -1
  59. package/src/main/native/launcher.js +10 -8
  60. package/src/main/native/pets.js +188 -49
  61. package/src/main/native/platform.js +19 -9
  62. package/src/main/native/protocol.js +83 -80
  63. package/src/main/native/rs/crates/appx/Cargo.toml +1 -1
  64. package/src/main/native/rs/crates/secret/Cargo.toml +1 -1
  65. package/src/main/native/rs/crates/secret/src/main.rs +3 -3
  66. package/src/main/native/rs/crates/shim/Cargo.toml +1 -1
  67. package/src/main/native/rs/crates/shim/src/main.rs +2 -2
  68. package/src/main/native/thread-list.js +1 -1
  69. package/src/main/shared-contracts/capability.js +3 -1
  70. package/src/main/workspace/core-review.js +4 -3
  71. package/src/native-ui/README.md +2 -2
  72. package/src/native-ui/desktop-control/dist/contract-audit.js +4 -4
  73. package/src/native-ui/desktop-control/dist/index.d.ts +1 -1
  74. package/src/native-ui/desktop-control/dist/index.js +2 -2
  75. package/src/native-ui/desktop-control/dist/index.js.map +1 -1
  76. package/src/native-ui/desktop-control/dist/main-process-title-policy.js +5 -5
  77. package/src/native-ui/desktop-control/dist/main-process-title-policy.js.map +1 -1
  78. package/src/native-ui/desktop-control/dist/production-controller.js +3 -3
  79. package/src/native-ui/desktop-control/dist/production-controller.js.map +1 -1
  80. package/src/native-ui/desktop-control/dist/release-main.js +1 -1
  81. package/src/native-ui/desktop-control/dist/release-main.js.map +1 -1
  82. package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.js +1 -1
  83. package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.js.map +1 -1
  84. package/src/native-ui/desktop-control/dist/renderer-control-session.js +3 -3
  85. package/src/native-ui/desktop-control/dist/renderer-control-session.js.map +1 -1
  86. package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-runtime.js +25 -25
  87. package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-runtime.js.map +1 -1
  88. package/src/native-ui/desktop-control/dist/tsconfig.tsbuildinfo +1 -1
  89. package/src/native-ui/desktop-control/package.json +2 -2
  90. package/src/native-ui/desktop-control/scripts/build-release.mjs +2 -2
  91. package/src/native-ui/desktop-control/src/contract-audit.ts +4 -4
  92. package/src/native-ui/desktop-control/src/index.ts +2 -2
  93. package/src/native-ui/desktop-control/src/main-process-title-policy.ts +5 -5
  94. package/src/native-ui/desktop-control/src/production-controller.ts +3 -3
  95. package/src/native-ui/desktop-control/src/release-main.ts +1 -1
  96. package/src/native-ui/desktop-control/src/renderer-cdp-control-session.ts +1 -1
  97. package/src/native-ui/desktop-control/src/renderer-control-session.ts +3 -3
  98. package/src/native-ui/desktop-control/src/renderer-draft-prewarm-runtime.ts +25 -25
  99. package/src/native-ui/desktop-control/test/index.test.ts +1 -1
  100. package/src/native-ui/desktop-control/test/production-controller.test.ts +1 -1
  101. package/src/native-ui/desktop-control/test/renderer-cdp-control-session.test.ts +1 -1
  102. package/src/native-ui/desktop-control/test/renderer-draft-prewarm-policy.test.ts +43 -43
  103. package/src/native-ui/renderer-extension/dist/types/agent-group-preference.d.ts +1 -1
  104. package/src/native-ui/renderer-extension/dist/types/agent-group-preference.d.ts.map +1 -1
  105. package/src/native-ui/renderer-extension/dist/types/agent-selection-state.d.ts +1 -1
  106. package/src/native-ui/renderer-extension/dist/types/agent-selection-state.d.ts.map +1 -1
  107. package/src/native-ui/renderer-extension/dist/types/contract-audit.d.ts +1 -1
  108. package/src/native-ui/renderer-extension/dist/types/contract-audit.d.ts.map +1 -1
  109. package/src/native-ui/renderer-extension/dist/types/index.d.ts +3 -1
  110. package/src/native-ui/renderer-extension/dist/types/index.d.ts.map +1 -1
  111. package/src/native-ui/renderer-extension/dist/types/production-entry.d.ts +1 -1
  112. package/src/native-ui/renderer-extension/dist/types/production-entry.d.ts.map +1 -1
  113. package/src/native-ui/renderer-extension/dist/types/renderer-agent-picker.d.ts +2 -2
  114. package/src/native-ui/renderer-extension/dist/types/renderer-agent-picker.d.ts.map +1 -1
  115. package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts +3 -3
  116. package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts.map +1 -1
  117. package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-options.d.ts +1 -1
  118. package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-options.d.ts.map +1 -1
  119. package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-state.d.ts +1 -1
  120. package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-state.d.ts.map +1 -1
  121. package/src/native-ui/renderer-extension/dist/types/renderer-collab-cards.d.ts +1 -1
  122. package/src/native-ui/renderer-extension/dist/types/renderer-collab-cards.d.ts.map +1 -1
  123. package/src/native-ui/renderer-extension/dist/types/renderer-composer-dom.d.ts +1 -1
  124. package/src/native-ui/renderer-extension/dist/types/renderer-composer-dom.d.ts.map +1 -1
  125. package/src/native-ui/renderer-extension/dist/types/renderer-credits-control.d.ts +1 -1
  126. package/src/native-ui/renderer-extension/dist/types/renderer-credits-control.d.ts.map +1 -1
  127. package/src/native-ui/renderer-extension/dist/types/renderer-fork-control.d.ts +1 -1
  128. package/src/native-ui/renderer-extension/dist/types/renderer-fork-control.d.ts.map +1 -1
  129. package/src/native-ui/renderer-extension/dist/types/renderer-harness-command-claim.d.ts +1 -1
  130. package/src/native-ui/renderer-extension/dist/types/renderer-harness-command-claim.d.ts.map +1 -1
  131. package/src/native-ui/renderer-extension/dist/types/renderer-harness-command-control.d.ts +1 -1
  132. package/src/native-ui/renderer-extension/dist/types/renderer-harness-command-control.d.ts.map +1 -1
  133. package/src/native-ui/renderer-extension/dist/types/renderer-harness-handoff.d.ts +1 -1
  134. package/src/native-ui/renderer-extension/dist/types/renderer-harness-handoff.d.ts.map +1 -1
  135. package/src/native-ui/renderer-extension/dist/types/renderer-harness-localization.d.ts +1 -1
  136. package/src/native-ui/renderer-extension/dist/types/renderer-harness-localization.d.ts.map +1 -1
  137. package/src/native-ui/renderer-extension/dist/types/renderer-harness-mentions.d.ts +1 -0
  138. package/src/native-ui/renderer-extension/dist/types/renderer-harness-mentions.d.ts.map +1 -1
  139. package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts +36 -31
  140. package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts.map +1 -1
  141. package/src/native-ui/renderer-extension/dist/types/renderer-model-picker.d.ts +1 -1
  142. package/src/native-ui/renderer-extension/dist/types/renderer-model-picker.d.ts.map +1 -1
  143. package/src/native-ui/renderer-extension/dist/types/renderer-new-thread-preference.d.ts +2 -2
  144. package/src/native-ui/renderer-extension/dist/types/renderer-new-thread-preference.d.ts.map +1 -1
  145. package/src/native-ui/renderer-extension/dist/types/renderer-permission-mode-picker.d.ts +1 -1
  146. package/src/native-ui/renderer-extension/dist/types/renderer-permission-mode-picker.d.ts.map +1 -1
  147. package/src/native-ui/renderer-extension/dist/types/renderer-permission-mode-preference.d.ts +2 -2
  148. package/src/native-ui/renderer-extension/dist/types/renderer-permission-mode-preference.d.ts.map +1 -1
  149. package/src/native-ui/renderer-extension/dist/types/renderer-request-sender.d.ts +18 -2
  150. package/src/native-ui/renderer-extension/dist/types/renderer-request-sender.d.ts.map +1 -1
  151. package/src/native-ui/renderer-extension/dist/types/renderer-session-import-client.d.ts +1 -1
  152. package/src/native-ui/renderer-extension/dist/types/renderer-session-import-client.d.ts.map +1 -1
  153. package/src/native-ui/renderer-extension/dist/types/renderer-sidebar-agent-icons.d.ts +2 -2
  154. package/src/native-ui/renderer-extension/dist/types/renderer-sidebar-agent-icons.d.ts.map +1 -1
  155. package/src/native-ui/renderer-extension/dist/types/renderer-team-cards.d.ts +58 -0
  156. package/src/native-ui/renderer-extension/dist/types/renderer-team-cards.d.ts.map +1 -0
  157. package/src/native-ui/renderer-extension/dist/types/renderer-transcript-dom.d.ts +1 -1
  158. package/src/native-ui/renderer-extension/dist/types/renderer-trigger-chip-style.d.ts +1 -1
  159. package/src/native-ui/renderer-extension/dist/types/renderer-trigger-chip-style.d.ts.map +1 -1
  160. package/src/native-ui/renderer-extension/dist/types/renderer-usage-control.d.ts +1 -1
  161. package/src/native-ui/renderer-extension/dist/types/renderer-usage-control.d.ts.map +1 -1
  162. package/src/native-ui/renderer-extension/dist/types/settings/accounts-list.d.ts +1 -1
  163. package/src/native-ui/renderer-extension/dist/types/settings/accounts-list.d.ts.map +1 -1
  164. package/src/native-ui/renderer-extension/dist/types/settings/accounts-page.d.ts +1 -1
  165. package/src/native-ui/renderer-extension/dist/types/settings/accounts-page.d.ts.map +1 -1
  166. package/src/native-ui/renderer-extension/dist/types/settings/accounts-usage.d.ts +1 -1
  167. package/src/native-ui/renderer-extension/dist/types/settings/accounts-usage.d.ts.map +1 -1
  168. package/src/native-ui/renderer-extension/dist/types/settings/connections-page.d.ts +3 -3
  169. package/src/native-ui/renderer-extension/dist/types/settings/connections-page.d.ts.map +1 -1
  170. package/src/native-ui/renderer-extension/dist/types/settings/harness-accounts.d.ts +1 -1
  171. package/src/native-ui/renderer-extension/dist/types/settings/harness-accounts.d.ts.map +1 -1
  172. package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts +4 -4
  173. package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts.map +1 -1
  174. package/src/native-ui/renderer-extension/dist/types/settings/pet-market.d.ts.map +1 -1
  175. package/src/native-ui/renderer-extension/dist/types/settings/session-import-list-controls.d.ts +1 -1
  176. package/src/native-ui/renderer-extension/dist/types/settings/session-import-list-controls.d.ts.map +1 -1
  177. package/src/native-ui/renderer-extension/dist/types/settings/session-import-page.d.ts +1 -1
  178. package/src/native-ui/renderer-extension/dist/types/settings/session-import-page.d.ts.map +1 -1
  179. package/src/native-ui/renderer-extension/dist/types/settings/shell.d.ts +2 -2
  180. package/src/native-ui/renderer-extension/dist/types/settings/shell.d.ts.map +1 -1
  181. package/src/native-ui/renderer-extension/dist/types/settings/trigger.d.ts +1 -1
  182. package/src/native-ui/renderer-extension/dist/types/settings/trigger.d.ts.map +1 -1
  183. package/src/native-ui/renderer-extension/dist/types/tsconfig.tsbuildinfo +1 -1
  184. package/src/native-ui/renderer-extension/dist/types/versioned-renderer-adapter.d.ts +18 -18
  185. package/src/native-ui/renderer-extension/dist/types/versioned-renderer-adapter.d.ts.map +1 -1
  186. package/src/native-ui/renderer-extension/package.json +2 -2
  187. package/src/native-ui/renderer-extension/src/agent-group-preference.ts +1 -1
  188. package/src/native-ui/renderer-extension/src/agent-selection-state.ts +31 -16
  189. package/src/native-ui/renderer-extension/src/audit-entry.ts +1 -1
  190. package/src/native-ui/renderer-extension/src/contract-audit.ts +4 -4
  191. package/src/native-ui/renderer-extension/src/index.ts +4 -2
  192. package/src/native-ui/renderer-extension/src/install-renderer-binding.ts +2 -2
  193. package/src/native-ui/renderer-extension/src/production-entry.ts +3 -3
  194. package/src/native-ui/renderer-extension/src/renderer-agent-picker.ts +7 -7
  195. package/src/native-ui/renderer-extension/src/renderer-binding-probe.ts +112 -89
  196. package/src/native-ui/renderer-extension/src/renderer-codex-account-options.ts +1 -1
  197. package/src/native-ui/renderer-extension/src/renderer-codex-account-state.ts +1 -1
  198. package/src/native-ui/renderer-extension/src/renderer-collab-cards.ts +1 -1
  199. package/src/native-ui/renderer-extension/src/renderer-composer-dom.ts +12 -12
  200. package/src/native-ui/renderer-extension/src/renderer-credits-control.ts +7 -7
  201. package/src/native-ui/renderer-extension/src/renderer-external-steering.ts +3 -3
  202. package/src/native-ui/renderer-extension/src/renderer-fork-control.ts +1 -1
  203. package/src/native-ui/renderer-extension/src/renderer-harness-command-claim.ts +1 -1
  204. package/src/native-ui/renderer-extension/src/renderer-harness-command-control.ts +3 -3
  205. package/src/native-ui/renderer-extension/src/renderer-harness-handoff.ts +1 -1
  206. package/src/native-ui/renderer-extension/src/renderer-harness-localization.ts +1 -1
  207. package/src/native-ui/renderer-extension/src/renderer-harness-mentions.ts +4 -0
  208. package/src/native-ui/renderer-extension/src/renderer-integrations-client.ts +5 -5
  209. package/src/native-ui/renderer-extension/src/renderer-model-client.ts +63 -42
  210. package/src/native-ui/renderer-extension/src/renderer-model-picker.ts +16 -16
  211. package/src/native-ui/renderer-extension/src/renderer-new-thread-preference.ts +2 -2
  212. package/src/native-ui/renderer-extension/src/renderer-permission-mode-picker.ts +3 -3
  213. package/src/native-ui/renderer-extension/src/renderer-permission-mode-preference.ts +2 -2
  214. package/src/native-ui/renderer-extension/src/renderer-request-sender.ts +46 -3
  215. package/src/native-ui/renderer-extension/src/renderer-session-import-client.ts +4 -4
  216. package/src/native-ui/renderer-extension/src/renderer-sidebar-agent-icons.ts +24 -20
  217. package/src/native-ui/renderer-extension/src/renderer-team-cards.ts +312 -0
  218. package/src/native-ui/renderer-extension/src/renderer-transcript-dom.ts +1 -1
  219. package/src/native-ui/renderer-extension/src/renderer-trigger-chip-style.ts +2 -2
  220. package/src/native-ui/renderer-extension/src/renderer-usage-control.ts +4 -4
  221. package/src/native-ui/renderer-extension/src/settings/accounts-list.ts +1 -1
  222. package/src/native-ui/renderer-extension/src/settings/accounts-page.ts +1 -1
  223. package/src/native-ui/renderer-extension/src/settings/accounts-usage.ts +1 -1
  224. package/src/native-ui/renderer-extension/src/settings/connections-page.ts +7 -7
  225. package/src/native-ui/renderer-extension/src/settings/harness-accounts.ts +1 -1
  226. package/src/native-ui/renderer-extension/src/settings/icons.ts +2 -2
  227. package/src/native-ui/renderer-extension/src/settings/pages.ts +11 -11
  228. package/src/native-ui/renderer-extension/src/settings/pet-market.css +33 -0
  229. package/src/native-ui/renderer-extension/src/settings/pet-market.ts +173 -91
  230. package/src/native-ui/renderer-extension/src/settings/pets-client.ts +5 -5
  231. package/src/native-ui/renderer-extension/src/settings/release-notes.ts +1 -1
  232. package/src/native-ui/renderer-extension/src/settings/session-import-list-controls.ts +1 -1
  233. package/src/native-ui/renderer-extension/src/settings/session-import-page.ts +1 -1
  234. package/src/native-ui/renderer-extension/src/settings/shell.css +15 -15
  235. package/src/native-ui/renderer-extension/src/settings/shell.ts +11 -11
  236. package/src/native-ui/renderer-extension/src/settings/skin-runtime.ts +17 -17
  237. package/src/native-ui/renderer-extension/src/settings/trigger.ts +1 -1
  238. package/src/native-ui/renderer-extension/src/versioned-renderer-adapter.ts +20 -20
  239. package/src/native-ui/renderer-extension/test/agent-selection-state.test.ts +60 -1
  240. package/src/native-ui/renderer-extension/test/codebuddy-migration.test.ts +1 -1
  241. package/src/native-ui/renderer-extension/test/renderer-agent-picker.test.ts +1 -1
  242. package/src/native-ui/renderer-extension/test/renderer-binding-probe-host-catalog.test.ts +15 -9
  243. package/src/native-ui/renderer-extension/test/renderer-binding-probe.test.ts +15 -15
  244. package/src/native-ui/renderer-extension/test/renderer-codex-account-state.test.ts +1 -1
  245. package/src/native-ui/renderer-extension/test/renderer-composer-permissions.test.ts +4 -4
  246. package/src/native-ui/renderer-extension/test/renderer-external-steering-rpc.test.ts +2 -2
  247. package/src/native-ui/renderer-extension/test/renderer-external-steering.test.ts +3 -3
  248. package/src/native-ui/renderer-extension/test/renderer-fork-control.test.ts +4 -4
  249. package/src/native-ui/renderer-extension/test/renderer-harness-command-claim.test.ts +1 -1
  250. package/src/native-ui/renderer-extension/test/renderer-harness-command-control.test.ts +1 -1
  251. package/src/native-ui/renderer-extension/test/renderer-model-client.test.ts +12 -11
  252. package/src/native-ui/renderer-extension/test/renderer-model-picker.test.ts +1 -1
  253. package/src/native-ui/renderer-extension/test/renderer-native-thread-ownership.test.ts +6 -6
  254. package/src/native-ui/renderer-extension/test/renderer-new-thread-preference.test.ts +1 -1
  255. package/src/native-ui/renderer-extension/test/renderer-permission-mode-picker.test.ts +1 -1
  256. package/src/native-ui/renderer-extension/test/renderer-permission-mode-preference.test.ts +1 -1
  257. package/src/native-ui/renderer-extension/test/renderer-request-timeout.test.ts +80 -0
  258. package/src/native-ui/renderer-extension/test/renderer-settings-lifecycle.test.ts +2 -2
  259. package/src/native-ui/renderer-extension/test/renderer-sidebar-agent-icons.test.ts +10 -3
  260. package/src/native-ui/renderer-extension/test/renderer-unsupported-methods.test.ts +1 -1
  261. package/src/native-ui/renderer-extension/test/settings/pages.test.ts +5 -5
  262. package/src/native-ui/renderer-extension/test/settings/release-notes.test.ts +9 -9
  263. package/src/native-ui/renderer-extension/test/versioned-renderer-adapter.test.ts +3 -3
  264. package/src/native-ui/shared-contracts/dist/errors.d.ts +2 -2
  265. package/src/native-ui/shared-contracts/dist/errors.d.ts.map +1 -1
  266. package/src/native-ui/shared-contracts/dist/errors.js +1 -1
  267. package/src/native-ui/shared-contracts/dist/errors.js.map +1 -1
  268. package/src/native-ui/shared-contracts/dist/harness-models.d.ts +40 -0
  269. package/src/native-ui/shared-contracts/dist/harness-models.d.ts.map +1 -1
  270. package/src/native-ui/shared-contracts/dist/harness-models.js +23 -2
  271. package/src/native-ui/shared-contracts/dist/harness-models.js.map +1 -1
  272. package/src/native-ui/shared-contracts/dist/harness-route.d.ts +1 -1
  273. package/src/native-ui/shared-contracts/dist/harness-route.d.ts.map +1 -1
  274. package/src/native-ui/shared-contracts/dist/harness-route.js +1 -1
  275. package/src/native-ui/shared-contracts/dist/harness-route.js.map +1 -1
  276. package/src/native-ui/shared-contracts/dist/harness-session-import.d.ts +1 -1
  277. package/src/native-ui/shared-contracts/dist/harness-session-import.d.ts.map +1 -1
  278. package/src/native-ui/shared-contracts/dist/harness-session-import.js +1 -1
  279. package/src/native-ui/shared-contracts/dist/harness-session-import.js.map +1 -1
  280. package/src/native-ui/shared-contracts/dist/index.d.ts +3 -3
  281. package/src/native-ui/shared-contracts/dist/index.d.ts.map +1 -1
  282. package/src/native-ui/shared-contracts/dist/index.js +2 -2
  283. package/src/native-ui/shared-contracts/dist/index.js.map +1 -1
  284. package/src/native-ui/shared-contracts/dist/tsconfig.tsbuildinfo +1 -1
  285. package/src/native-ui/shared-contracts/dist/updates.js +1 -1
  286. package/src/native-ui/shared-contracts/dist/updates.js.map +1 -1
  287. package/src/native-ui/shared-contracts/package.json +1 -1
  288. package/src/native-ui/shared-contracts/src/errors.ts +3 -3
  289. package/src/native-ui/shared-contracts/src/harness-models.ts +23 -2
  290. package/src/native-ui/shared-contracts/src/harness-route.ts +1 -1
  291. package/src/native-ui/shared-contracts/src/harness-session-import.ts +1 -1
  292. package/src/native-ui/shared-contracts/src/index.ts +3 -3
  293. package/src/native-ui/shared-contracts/src/updates.ts +1 -1
  294. package/src/native-ui/shared-contracts/test/browser-bundle.test.ts +3 -3
  295. package/src/native-ui/shared-contracts/test/deepseek-modern-sessions.test.ts +1 -1
  296. package/src/native-ui/shared-contracts/test/errors.test.ts +9 -9
  297. package/src/native-ui/shared-contracts/test/harness-commands.test.ts +1 -1
  298. package/src/native-ui/shared-contracts/test/harness-models.test.ts +3 -3
  299. package/src/native-ui/shared-contracts/test/harness-permission-modes.test.ts +1 -1
  300. package/src/native-ui/shared-contracts/test/harness-plugins.test.ts +1 -1
  301. package/src/native-ui/shared-contracts/test/harness-session-import.test.ts +1 -1
  302. package/src/native-ui/shared-contracts/test/index.test.ts +3 -3
  303. package/src/native-ui/shared-contracts/test/json-rpc.test.ts +1 -1
  304. package/src/native-ui/shared-contracts/test/thread-usage.test.ts +1 -1
  305. package/src/native-ui/shared-contracts/test/updates.test.ts +4 -4
  306. /package/licenses/{codex-host-MIT.txt → bytepioneer-MIT.txt} +0 -0
@@ -31,8 +31,8 @@ const externalId = id => ({ workbuddy: 'codebuddy', claude: 'claude-code', dsh:
31
31
  const { errorActions } = require('../harness-adapter/error-kind');
32
32
  const modelRef = model => ({ id: Buffer.from(JSON.stringify({ id: model.id, provider: model.provider })).toString('base64url') });
33
33
  const routeModel = harnessId => ['pi', 'claude-code', 'deepseek-harness', 'antigravity', 'omp', 'opencode', 'grok'].includes(harnessId)
34
- ? `codexhost/${harnessId}-native`
35
- : `codexhost/plugin-v1@${Buffer.from(JSON.stringify({ harnessId })).toString('hex')}`;
34
+ ? `harnessmix/${harnessId}-native`
35
+ : `harnessmix/plugin-v1@${Buffer.from(JSON.stringify({ harnessId })).toString('hex')}`;
36
36
  const terminal = status => ['completed', 'cancelled', 'error', 'failed'].includes(status);
37
37
  const turnStatus = status => ({ cancelled: 'interrupted', error: 'failed', failed: 'failed', completed: 'completed' }[status] || 'inProgress');
38
38
  const HARNESS_INSTALL_COMMANDS = {
@@ -114,14 +114,14 @@ function decodePositional(harnessId, fields, parts) {
114
114
 
115
115
  function decodeRoute(model) {
116
116
  if (typeof model !== 'string') return null;
117
- if (model.startsWith('codexhost/plugin-v1@')) {
118
- const hex = model.slice('codexhost/plugin-v1@'.length);
117
+ if (model.startsWith('harnessmix/plugin-v1@')) {
118
+ const hex = model.slice('harnessmix/plugin-v1@'.length);
119
119
  if (model.length > 4096 || !/^(?:[a-f0-9]{2})+$/.test(hex)) throw new Error('Invalid native Harness route');
120
120
  const route = JSON.parse(Buffer.from(hex, 'hex').toString());
121
121
  if (!route.harnessId || route.harnessId === 'codex') throw new Error('Invalid external Harness');
122
122
  return route;
123
123
  }
124
- const legacy = /^codexhost\/(pi|claude-code|deepseek-harness|antigravity|omp|opencode|grok)-native(?:@(.+))?$/.exec(model);
124
+ const legacy = /^harnessmix\/(pi|claude-code|deepseek-harness|antigravity|omp|opencode|grok)-native(?:@(.+))?$/.exec(model);
125
125
  if (!legacy) return null;
126
126
  return legacy[2] === undefined ? { harnessId: legacy[1] } : decodeLegacySuffix(legacy[1], legacy[2]);
127
127
  }
@@ -260,7 +260,7 @@ class NativeProtocol {
260
260
  this.emit = emit;
261
261
  this.requestOfficial = requestOfficial;
262
262
  this.codexAccounts = new CodexAccountManager({
263
- dataDirectory: nativeEnvironment().CODEXHOST_DATA_DIR,
263
+ dataDirectory: nativeEnvironment().HARNESSMIX_DATA_DIR,
264
264
  requestOfficial,
265
265
  emit,
266
266
  });
@@ -317,16 +317,16 @@ class NativeProtocol {
317
317
  items: this.runtime.core.getItemsForTurn(turn.id).map(projectItem).filter(Boolean) };
318
318
  }
319
319
  projectThread(thread, includeTurns = true) {
320
- // Projection shape mirrors the upstream codexhost external-thread contract: every
320
+ // Projection shape mirrors the upstream harnessmix external-thread contract: every
321
321
  // field the Desktop sidebar/composer reads must be present with the same defaults.
322
322
  const updatedAt = Math.floor((thread.updatedAt || thread.createdAt) / 1000);
323
323
  return { id: thread.id, preview: thread.messages?.find(m => m.role === 'user')?.text || thread.preview || thread.title,
324
- ephemeral: thread.ephemeral === true, modelProvider: 'codexhost', model: routeModel(externalId(thread.harnessId)), reasoningEffort: null,
324
+ ephemeral: thread.ephemeral === true, modelProvider: 'harnessmix', model: routeModel(externalId(thread.harnessId)), reasoningEffort: null,
325
325
  section: thread.section ?? null, sectionEnteredAt: thread.sectionEnteredAt ?? null, projectId: thread.projectId ?? null,
326
326
  createdAt: Math.floor(thread.createdAt / 1000),
327
327
  updatedAt, recencyAt: updatedAt,
328
328
  status: { type: thread.status === 'working' ? 'active' : 'idle', ...(thread.status === 'working' ? { activeFlags: [] } : {}) },
329
- path: null, cwd: thread.cwd, cliVersion: 'codexhost', source: 'vscode', threadSource: null,
329
+ path: null, cwd: thread.cwd, cliVersion: 'harnessmix', source: 'vscode', threadSource: null,
330
330
  name: thread.title || null, agentNickname: thread.parentThreadId ? this.runtime.adapters.get(thread.harnessId)?.manifest.name || thread.harnessId : null,
331
331
  agentRole: thread.parentThreadId ? 'worker' : null, gitInfo: thread.gitInfo || null,
332
332
  sessionId: thread.id, forkedFromId: thread.forkedFrom ?? null, parentThreadId: thread.parentThreadId ?? null,
@@ -345,11 +345,12 @@ class NativeProtocol {
345
345
  workspace: thread.workspace ? { mode: thread.workspace.mode, branch: thread.workspace.branch, root: thread.workspace.root } : null,
346
346
  turns: includeTurns ? this.runtime.core.turns.turnsForThread(thread.id).map(t => this.turn(t)) : [] };
347
347
  }
348
- capabilities(id, catalog) {
349
- const cap = this.runtime.getCapabilities(id);
350
- return { configuration: { selectModel: Boolean(cap.model?.selection), selectThinkingOption: Boolean(cap.model?.thinkingLevel),
351
- selectPermissionMode: Boolean(catalog.permissionModes?.length), permissionModeScope: 'live' },
352
- history: { fork: Boolean(cap.session?.fork), forkAcrossCwd: false, rollbackLastTurn: Boolean(cap.session?.forkFromMessage) } };
348
+ capabilities(id, catalog) {
349
+ const cap = this.runtime.getCapabilities(id);
350
+ return { configuration: { selectModel: Boolean(cap.model?.selection), selectThinkingOption: Boolean(cap.model?.thinkingLevel),
351
+ selectPermissionMode: Boolean(catalog.permissionModes?.length), permissionModeScope: 'live' },
352
+ history: { fork: Boolean(cap.session?.fork), forkAcrossCwd: false, rollbackLastTurn: Boolean(cap.session?.forkFromMessage) },
353
+ workspace: { git: true, worktree: true, finalDiff: true, nativeDiff: Boolean(cap.workspace?.nativeDiff), nativePatch: Boolean(cap.workspace?.nativePatch) } };
353
354
  }
354
355
  async inspect(id) {
355
356
  const local = ALIASES[id] || id;
@@ -431,24 +432,24 @@ class NativeProtocol {
431
432
  return model;
432
433
  }
433
434
  async request(method, params = {}) {
434
- if (method === 'codexhost/integrations/catalog') return this.runtime.integrations.catalog();
435
- if (method === 'codexhost/integrations/list') return this.runtime.integrations.list(params);
436
- if (method === 'codexhost/integrations/mcp/save') return this.runtime.integrations.save(params);
437
- if (method === 'codexhost/integrations/mcp/remove') return this.runtime.integrations.remove(params);
438
- if (method === 'codexhost/integrations/skill/change') return this.runtime.integrations.skillChange(params);
439
- if (method === 'codexhost/harness/session-import/sources') return this.runtime.history.sources();
440
- if (method === 'codexhost/harness/session-import/list') return this.runtime.history.list(params);
441
- if (method === 'codexhost/harness/session-import/import') return this.runtime.history.import(params);
442
- if (method === 'codexhost/collaboration/agents') return [...this.runtime.adapters.values()].map(a => ({ id: externalId(a.manifest.id), name: a.manifest.name, available: !!this.runtime.status[a.manifest.id]?.available, lead: a.manifest.capabilities?.collaborationTools === true }));
435
+ if (method === 'harnessmix/integrations/catalog') return this.runtime.integrations.catalog();
436
+ if (method === 'harnessmix/integrations/list') return this.runtime.integrations.list(params);
437
+ if (method === 'harnessmix/integrations/mcp/save') return this.runtime.integrations.save(params);
438
+ if (method === 'harnessmix/integrations/mcp/remove') return this.runtime.integrations.remove(params);
439
+ if (method === 'harnessmix/integrations/skill/change') return this.runtime.integrations.skillChange(params);
440
+ if (method === 'harnessmix/harness/session-import/sources') return this.runtime.history.sources();
441
+ if (method === 'harnessmix/harness/session-import/list') return this.runtime.history.list(params);
442
+ if (method === 'harnessmix/harness/session-import/import') return this.runtime.history.import(params);
443
+ if (method === 'harnessmix/collaboration/agents') return [...this.runtime.adapters.values()].map(a => ({ id: externalId(a.manifest.id), name: a.manifest.name, available: !!this.runtime.status[a.manifest.id]?.available, lead: a.manifest.capabilities?.collaborationTools === true }));
443
444
  // 桌宠市场:官方预载(Codex 安装包 asar 提取)与 ~/.codex/pets 安装管理
444
- if (method === 'codexhost/pets/catalog') return this.pets.catalog();
445
- if (method === 'codexhost/pets/community') return this.pets.community(params);
446
- if (method === 'codexhost/pets/preview') return this.pets.preview(params);
447
- if (method === 'codexhost/pets/install') return this.pets.install(params);
448
- if (method === 'codexhost/pets/uninstall') return this.pets.uninstall(params);
445
+ if (method === 'harnessmix/pets/catalog') return this.pets.catalog();
446
+ if (method === 'harnessmix/pets/community') return this.pets.community(params);
447
+ if (method === 'harnessmix/pets/preview') return this.pets.preview(params);
448
+ if (method === 'harnessmix/pets/install') return this.pets.install(params);
449
+ if (method === 'harnessmix/pets/uninstall') return this.pets.uninstall(params);
449
450
  const thread = this.thread(params.threadId);
450
451
  // 失败回合分类查询:Renderer 据此在输入框下方渲染只真正帮得上忙的动作按钮
451
- if (method === 'codexhost/harness/turn-error') {
452
+ if (method === 'harnessmix/harness/turn-error') {
452
453
  if (!thread) throw new Error('Unknown thread');
453
454
  const kind = thread.errorKind ?? null;
454
455
  const meta = HARNESS_AUTH_INFO[externalId(thread.harnessId)] || HARNESS_AUTH_INFO[thread.harnessId];
@@ -477,8 +478,8 @@ class NativeProtocol {
477
478
  return { version };
478
479
  }
479
480
  // Updates
480
- if (method === 'codexhost/update/check') {
481
- const dataDir = nativeEnvironment().CODEXHOST_DATA_DIR;
481
+ if (method === 'harnessmix/update/check') {
482
+ const dataDir = nativeEnvironment().HARNESSMIX_DATA_DIR;
482
483
  let currentVersion = '0.1.2';
483
484
  try {
484
485
  currentVersion = JSON.parse(fs.readFileSync(PACKAGE_JSON_PATH, 'utf8')).version || '0.1.2';
@@ -528,8 +529,8 @@ class NativeProtocol {
528
529
  error: checkError ? `更新检查失败: ${checkError.slice(0, 450)}` : null,
529
530
  };
530
531
  }
531
- if (method === 'codexhost/update/start') {
532
- const dataDir = nativeEnvironment().CODEXHOST_DATA_DIR;
532
+ if (method === 'harnessmix/update/start') {
533
+ const dataDir = nativeEnvironment().HARNESSMIX_DATA_DIR;
533
534
  const channel = detectChannel(REPO_ROOT);
534
535
  let currentVersion = '0.1.2';
535
536
  try { currentVersion = JSON.parse(fs.readFileSync(PACKAGE_JSON_PATH, 'utf8')).version || '0.1.2'; } catch {}
@@ -561,8 +562,8 @@ class NativeProtocol {
561
562
  };
562
563
  }
563
564
  }
564
- if (method === 'codexhost/update/status') {
565
- const dataDir = nativeEnvironment().CODEXHOST_DATA_DIR;
565
+ if (method === 'harnessmix/update/status') {
566
+ const dataDir = nativeEnvironment().HARNESSMIX_DATA_DIR;
566
567
  const state = readState(dataDir);
567
568
  const channel = detectChannel(REPO_ROOT);
568
569
  let currentVersion = '0.1.2';
@@ -583,21 +584,21 @@ class NativeProtocol {
583
584
 
584
585
  // Each extra Account is an isolated native CODEX_HOME. Harness Mix stores
585
586
  // only the profile label/path; auth.json and token refresh remain owned by Codex.
586
- if (method === 'codexhost/account/list') return this.codexAccounts.list(false);
587
- if (method === 'codexhost/account/refresh') return this.codexAccounts.list(true);
588
- if (method === 'codexhost/account/create') return this.codexAccounts.create(params.label);
589
- if (method === 'codexhost/account/delete') return this.codexAccounts.delete(params.accountId);
590
- if (method === 'codexhost/account/activate') return this.codexAccounts.activate(params.accountId);
591
- if (method === 'codexhost/account/usage/inspect') return this.codexAccounts.usage(params.accountId);
592
- if (method === 'codexhost/account/login/start') return this.codexAccounts.startLogin(params.accountId);
593
- if (method === 'codexhost/account/login/cancel') return this.codexAccounts.cancelLogin(params.loginId);
594
- if (method === 'codexhost/account/logout') {
587
+ if (method === 'harnessmix/account/list') return this.codexAccounts.list(false);
588
+ if (method === 'harnessmix/account/refresh') return this.codexAccounts.list(true);
589
+ if (method === 'harnessmix/account/create') return this.codexAccounts.create(params.label);
590
+ if (method === 'harnessmix/account/delete') return this.codexAccounts.delete(params.accountId);
591
+ if (method === 'harnessmix/account/activate') return this.codexAccounts.activate(params.accountId);
592
+ if (method === 'harnessmix/account/usage/inspect') return this.codexAccounts.usage(params.accountId);
593
+ if (method === 'harnessmix/account/login/start') return this.codexAccounts.startLogin(params.accountId);
594
+ if (method === 'harnessmix/account/login/cancel') return this.codexAccounts.cancelLogin(params.loginId);
595
+ if (method === 'harnessmix/account/logout') {
595
596
  if (!this.requestOfficial) throw new Error('Official Codex logout is unavailable');
596
597
  await this.requestOfficial('account/logout', undefined);
597
598
  return this.codexAccounts.signedOutOfficial();
598
599
  }
599
- if (method === 'codexhost/account/rate-limit-reset/consume') return this.codexAccounts.consumeReset(params.accountId, params.idempotencyKey);
600
- if (method === 'codexhost/harness/account/login') {
600
+ if (method === 'harnessmix/account/rate-limit-reset/consume') return this.codexAccounts.consumeReset(params.accountId, params.idempotencyKey);
601
+ if (method === 'harnessmix/harness/account/login') {
601
602
  const extId = params.harnessId;
602
603
  const meta = HARNESS_AUTH_INFO[extId] || HARNESS_AUTH_INFO[ALIASES[extId]];
603
604
  const cmd = meta?.loginCommand;
@@ -607,7 +608,7 @@ class NativeProtocol {
607
608
  exec(execCmd, { windowsHide: false });
608
609
  return { success: true, command: cmd };
609
610
  }
610
- if (method === 'codexhost/harness/accounts/list') {
611
+ if (method === 'harnessmix/harness/accounts/list') {
611
612
  const accounts = [];
612
613
  for (const adapter of this.runtime.adapters.values()) {
613
614
  const id = adapter.manifest.id;
@@ -683,11 +684,11 @@ class NativeProtocol {
683
684
  }
684
685
  return { accounts };
685
686
  }
686
- if (method === 'codexhost/harness/plugins/list') return { plugins: this.runtime.snapshot().adapters.map(a => ({ id: externalId(a.id), name: a.id === 'codex' ? 'Codex(协作)' : a.name, version: '0.1.0', icon: `data:image/svg+xml;base64,${Buffer.from(getHarnessSvg(a.id)).toString('base64')}` })) };
687
- if (method === 'codexhost/storage/inspect') return this.runtime.inspectStorage();
688
- if (method === 'codexhost/storage/optimize') return this.runtime.optimizeStorage();
689
- if (method === 'codexhost/harness/inspect') return this.inspect(params.harnessId);
690
- if (method === 'codexhost/harness/install') {
687
+ if (method === 'harnessmix/harness/plugins/list') return { plugins: this.runtime.snapshot().adapters.map(a => ({ id: externalId(a.id), name: a.id === 'codex' ? 'Codex(协作)' : a.name, version: '0.1.0', icon: `data:image/svg+xml;base64,${Buffer.from(getHarnessSvg(a.id)).toString('base64')}` })) };
688
+ if (method === 'harnessmix/storage/inspect') return this.runtime.inspectStorage();
689
+ if (method === 'harnessmix/storage/optimize') return this.runtime.optimizeStorage();
690
+ if (method === 'harnessmix/harness/inspect') return this.inspect(params.harnessId);
691
+ if (method === 'harnessmix/harness/install') {
691
692
  const local = ALIASES[params.harnessId] || params.harnessId;
692
693
  const entry = HARNESS_INSTALL_COMMANDS[params.harnessId] || HARNESS_INSTALL_COMMANDS[local];
693
694
  if (!entry) throw new Error(`No installation command available for harness: ${params.harnessId}`);
@@ -720,27 +721,29 @@ class NativeProtocol {
720
721
  });
721
722
  });
722
723
  }
723
- if (method === 'codexhost/harness/commands/inspect' || method === 'codexhost/thread/commands/inspect') {
724
+ if (method === 'harnessmix/harness/commands/inspect' || method === 'harnessmix/thread/commands/inspect') {
724
725
  const commands = await this.runtime.listCommands({ threadId: params.threadId, harnessId: ALIASES[params.harnessId] || params.harnessId });
725
726
  return { commands: commands.map(c => ({ id: c.id, invocation: '/' + c.id, label: c.label || c.id, ...(c.description ? { description: c.description.slice(0, 512) } : {}), argumentMode: c.action === 'insert' ? 'text' : 'none' })) };
726
727
  }
727
- if (method === 'codexhost/thread/ownership/list') return { threads: params.threadIds.map(id => ({ threadId: id, owner: this.owns(id) ? 'external' : 'codex', ...(this.owns(id) ? { harnessId: externalId(this.thread(id).harnessId) } : {}) })) };
728
- if (method === 'codexhost/thread/inspect') {
729
- if (!thread) return { owner: 'codex', locked: true };
728
+ if (method === 'harnessmix/thread/ownership/list') return { threads: params.threadIds.map(id => ({ threadId: id, owner: this.owns(id) ? 'external' : 'codex', ...(this.owns(id) ? { harnessId: externalId(this.thread(id).harnessId) } : {}) })) };
729
+ if (method === 'harnessmix/thread/team/inspect') return this.runtime.collaboration.inspectTeam(params.threadId, params.teamId);
730
+ if (method === 'harnessmix/thread/inspect') {
731
+ if (!thread) return { owner: 'codex', locked: true };
730
732
  const catalog = await this.runtime.describe(thread.harnessId);
731
733
  const usage = typeof this.runtime.core?.getThread === 'function' ? this.runtime.core.getThread(thread.id)?.usage : undefined;
732
734
  const adapter = this.runtime.adapters && typeof this.runtime.adapters.get === 'function' ? this.runtime.adapters.get(thread.harnessId) : null;
733
735
  const rawCredits = adapter && typeof adapter.credits === 'function' ? adapter.credits() : null;
734
736
  const credits = projectAccountCredits(rawCredits);
735
- return { owner: 'external', harnessId: externalId(thread.harnessId), transportModelId: routeModel(externalId(thread.harnessId)), locked: true,
736
- ...this.configuration(thread), history: this.capabilities(thread.harnessId, catalog).history,
737
+ return { owner: 'external', harnessId: externalId(thread.harnessId), transportModelId: routeModel(externalId(thread.harnessId)), locked: true,
738
+ ...this.configuration(thread), history: this.capabilities(thread.harnessId, catalog).history,
739
+ workspace: await this.runtime.inspectThreadWorkspace(thread.id),
737
740
  ...(usage ? { usage: projectUsage(usage) } : {}),
738
741
  ...(credits ? { accountCredits: credits } : {}) };
739
742
  }
740
743
  if (method === 'thread/start') {
741
744
  const route = decodeRoute(params.model);
742
- const accountContext = typeof params.__codexhostAccountId === 'string'
743
- ? this.codexAccounts.executionContext(params.__codexhostAccountId) : null;
745
+ const accountContext = typeof params.__harnessmixAccountId === 'string'
746
+ ? this.codexAccounts.executionContext(params.__harnessmixAccountId) : null;
744
747
  if (!route && !accountContext) return undefined;
745
748
  const effectiveRoute = route || { harnessId: 'codex-harness', ...(typeof params.model === 'string' ? { model: { id: params.model } } : {}) };
746
749
  const id = ALIASES[effectiveRoute.harnessId] || effectiveRoute.harnessId;
@@ -764,15 +767,15 @@ class NativeProtocol {
764
767
  // thread/started 已由 runtime 的 thread-created 监听统一发出(含协作子任务路径)
765
768
  return result;
766
769
  }
767
- if (method === 'codexhost/thread/workspace/review') return this.runtime.reviewThreadWorkspace(params.threadId);
768
- if (method === 'codexhost/thread/workspace/apply') return this.runtime.applyThreadWorkspace(params.threadId, params.digest);
769
- if (method === 'codexhost/thread/workspace/discard') return this.runtime.discardThreadWorkspace(params.threadId);
770
- if (method === 'codexhost/thread/workspace/push') return this.runtime.pushThreadWorkspace(params.threadId, params);
771
- if (method === 'codexhost/thread/verification/get') return this.runtime.verificationState(params.threadId);
772
- if (method === 'codexhost/thread/verification/configure') return this.runtime.configureVerification(params.threadId, params.policy);
773
- if (method === 'codexhost/thread/verification/run') return this.runtime.runVerification(params.threadId);
770
+ if (method === 'harnessmix/thread/workspace/review') return this.runtime.reviewThreadWorkspace(params.threadId);
771
+ if (method === 'harnessmix/thread/workspace/apply') return this.runtime.applyThreadWorkspace(params.threadId, params.digest);
772
+ if (method === 'harnessmix/thread/workspace/discard') return this.runtime.discardThreadWorkspace(params.threadId);
773
+ if (method === 'harnessmix/thread/workspace/push') return this.runtime.pushThreadWorkspace(params.threadId, params);
774
+ if (method === 'harnessmix/thread/verification/get') return this.runtime.verificationState(params.threadId);
775
+ if (method === 'harnessmix/thread/verification/configure') return this.runtime.configureVerification(params.threadId, params.policy);
776
+ if (method === 'harnessmix/thread/verification/run') return this.runtime.runVerification(params.threadId);
774
777
  if (!thread) {
775
- if (method.startsWith('codexhost/')) throw new Error(`Harness Mix does not implement ${method}`);
778
+ if (method.startsWith('harnessmix/')) throw new Error(`Harness Mix does not implement ${method}`);
776
779
  return undefined;
777
780
  }
778
781
  if (method === 'thread/read') return { thread: this.projectThread(thread, params.includeTurns !== false) };
@@ -901,13 +904,13 @@ class NativeProtocol {
901
904
  }
902
905
  if (method === 'turn/interrupt') { await this.runtime.cancel(thread.id); return {}; }
903
906
  // 跨 Harness 任务协作:委派新子任务 / 跟进既有子任务,等待链由父线程协作 Turn 承载
904
- if (method === 'codexhost/thread/delegate' || method === 'codexhost/thread/message') {
907
+ if (method === 'harnessmix/thread/delegate' || method === 'harnessmix/thread/message') {
905
908
  const task = params.task ?? params.text;
906
909
  if (typeof task !== 'string' || !task.trim()) throw new Error('Delegation requires a non-empty task');
907
910
  const { child, turn } = await this.runtime.delegateTask({
908
911
  fromThreadId: thread.id,
909
- harnessId: method === 'codexhost/thread/delegate' ? (ALIASES[params.harnessId] || params.harnessId) : undefined,
910
- childThreadId: method === 'codexhost/thread/message' ? params.childThreadId : undefined,
912
+ harnessId: method === 'harnessmix/thread/delegate' ? (ALIASES[params.harnessId] || params.harnessId) : undefined,
913
+ childThreadId: method === 'harnessmix/thread/message' ? params.childThreadId : undefined,
911
914
  task,
912
915
  });
913
916
  return { turn: this.turn(turn), childThreadId: child.id };
@@ -926,7 +929,7 @@ class NativeProtocol {
926
929
  return { thread: projected };
927
930
  }
928
931
  if (method === 'thread/loaded/list') return { data: [...this.runtime.sessions.keys()] };
929
- if (method === 'codexhost/thread/usage/inspect') {
932
+ if (method === 'harnessmix/thread/usage/inspect') {
930
933
  const usage = params.refresh === 'exact' ? await this.runtime.refreshUsage(thread.id) : this.runtime.core.getThread(thread.id)?.usage;
931
934
  const adapter = this.runtime.adapters.get(thread.harnessId);
932
935
  let rawCredits = adapter && typeof adapter.credits === 'function' ? adapter.credits() : null;
@@ -943,14 +946,14 @@ class NativeProtocol {
943
946
  ...(credits ? { accountCredits: credits } : {}),
944
947
  };
945
948
  }
946
- if (method === 'codexhost/thread/command/execute') {
949
+ if (method === 'harnessmix/thread/command/execute') {
947
950
  if (params.arguments && Object.keys(params.arguments).length) throw new Error('This command does not accept arguments');
948
951
  const turn = await this.startNativeTurn(thread, '', undefined, params.commandId);
949
952
  return { accepted: true, turnId: turn.id };
950
953
  }
951
- if (method === 'codexhost/thread/model/select') { await this.runtime.setModel(thread.id, await this.resolveModel(thread.harnessId, params.model)); return this.configuration(thread); }
952
- if (method === 'codexhost/thread/thinking/select') { await this.runtime.setThinking(thread.id, params.thinkingOptionId); return this.configuration(thread); }
953
- if (method === 'codexhost/thread/permission-mode/select') {
954
+ if (method === 'harnessmix/thread/model/select') { await this.runtime.setModel(thread.id, await this.resolveModel(thread.harnessId, params.model)); return this.configuration(thread); }
955
+ if (method === 'harnessmix/thread/thinking/select') { await this.runtime.setThinking(thread.id, params.thinkingOptionId); return this.configuration(thread); }
956
+ if (method === 'harnessmix/thread/permission-mode/select') {
954
957
  await this.runtime.setOptions(thread.id, { permissionMode: params.permissionModeId });
955
958
  const session = this.runtime.sessions.get(thread.id);
956
959
  const adapter = this.runtime.adapters.get(thread.harnessId);
@@ -960,7 +963,7 @@ class NativeProtocol {
960
963
  return this.configuration(thread);
961
964
  }
962
965
  // 原地切换 Harness:会话历史保留,下条消息携带一次性上下文信封(/switch 指令的 RPC 等价物)
963
- if (method === 'codexhost/thread/harness/switch') {
966
+ if (method === 'harnessmix/thread/harness/switch') {
964
967
  const result = await this.runtime.switchHarness(thread.id, ALIASES[params.harnessId] || params.harnessId, {
965
968
  note: typeof params.note === 'string' ? params.note : undefined,
966
969
  intent: params.intent,
@@ -968,14 +971,14 @@ class NativeProtocol {
968
971
  });
969
972
  return { ...result, fromHarnessId: externalId(result.fromHarnessId), toHarnessId: externalId(result.toHarnessId) };
970
973
  }
971
- if (method === 'thread/fork' || method === 'codexhost/thread/fork') {
974
+ if (method === 'thread/fork' || method === 'harnessmix/thread/fork') {
972
975
  if (params.ephemeral || params.threadSource || params.excludeTurns) {
973
976
  throw new Error('Ephemeral fork is not supported');
974
977
  }
975
978
  const messageId = params.lastTurnId ? thread.messages.find(m => m.coreTurnId === params.lastTurnId)?.id : params.messageId;
976
979
  if (params.lastTurnId && !messageId) throw new Error('Unknown fork turn');
977
980
  const fork = await this.runtime.forkThread(thread.id, messageId);
978
- return method === 'codexhost/thread/fork' ? { threadId: fork.id } : { thread: this.projectThread(fork) };
981
+ return method === 'harnessmix/thread/fork' ? { threadId: fork.id } : { thread: this.projectThread(fork) };
979
982
  }
980
983
  throw new Error(`Harness Mix native bridge does not support ${method} for this thread`);
981
984
  }
@@ -983,7 +986,7 @@ class NativeProtocol {
983
986
  const { threadId, turnId } = event;
984
987
  const item = projected.item;
985
988
  const notify = (method, extra) => this.emit({ method, params: { threadId, turnId, ...extra } });
986
- if (event.type === 'usage.updated') this.emit({ method: 'codexhost/thread/usage/updated', params: { threadId, usage: projectUsage(projected.thread?.usage) } });
989
+ if (event.type === 'usage.updated') this.emit({ method: 'harnessmix/thread/usage/updated', params: { threadId, usage: projectUsage(projected.thread?.usage) } });
987
990
  if (projected.items) {
988
991
  for (const file of projected.items) this.onCore({ ...event, type: 'item.updated' }, { item: file });
989
992
  notify('turn/diff/updated', { diff: projected.items.map(i => projectItem(i)?.changes?.map(c => c.diff).filter(Boolean).join('\n')).filter(Boolean).join('\n') });
@@ -3,7 +3,7 @@ name = "harness-mix-appx"
3
3
  version = "0.2.0"
4
4
  edition = "2021"
5
5
  description = "Harness Mix Windows AppX activation boundary (IApplicationActivationManager / IPackageDebugSettings)"
6
- license = "Apache-2.0"
6
+ license = "Apache-2.0 OR MIT"
7
7
 
8
8
  [[bin]]
9
9
  name = "harness-mix-appx"
@@ -3,7 +3,7 @@ name = "harness-mix-secret"
3
3
  version = "0.1.0"
4
4
  edition = "2021"
5
5
  description = "Harness Mix platform secret store: per-user DPAPI vault"
6
- license = "Apache-2.0"
6
+ license = "Apache-2.0 OR MIT"
7
7
 
8
8
  [[bin]]
9
9
  name = "harness-mix-secret"
@@ -125,14 +125,14 @@ fn base64_decode(text: &str) -> Result<Vec<u8>, String> {
125
125
  }
126
126
 
127
127
  fn data_dir() -> Result<PathBuf, String> {
128
- if let Ok(dir) = env::var("CODEXHOST_DATA_DIR") {
128
+ if let Ok(dir) = env::var("HARNESSMIX_DATA_DIR") {
129
129
  if !dir.trim().is_empty() {
130
130
  return Ok(PathBuf::from(dir));
131
131
  }
132
132
  }
133
133
  match env::var("APPDATA") {
134
- Ok(appdata) if !appdata.trim().is_empty() => Ok(PathBuf::from(appdata).join("harness-mix").join("codexhost")),
135
- _ => Err("无法确定数据目录(缺少 APPDATA / CODEXHOST_DATA_DIR)".to_string()),
134
+ Ok(appdata) if !appdata.trim().is_empty() => Ok(PathBuf::from(appdata).join("harnessmix")),
135
+ _ => Err("无法确定数据目录(缺少 APPDATA / HARNESSMIX_DATA_DIR)".to_string()),
136
136
  }
137
137
  }
138
138
 
@@ -3,7 +3,7 @@ name = "harness-mix-shim"
3
3
  version = "0.2.0"
4
4
  edition = "2021"
5
5
  description = "Harness Mix executable bridge: routes Codex Desktop app-server traffic to the local HostRuntime"
6
- license = "Apache-2.0"
6
+ license = "Apache-2.0 OR MIT"
7
7
 
8
8
  [[bin]]
9
9
  name = "harness-mix-shim"
@@ -226,7 +226,7 @@ fn run() -> io::Result<i32> {
226
226
 
227
227
  let build_dir = root.join("output").join("native-build");
228
228
  let stock = setting(
229
- "CODEXHOST_STOCK_CODEX_PATH",
229
+ "HARNESSMIX_STOCK_CODEX_PATH",
230
230
  &build_dir.join("stock-path.txt"),
231
231
  )?;
232
232
  let node = setting("HARNESS_MIX_NODE_PATH", &build_dir.join("node-path.txt"))?;
@@ -252,7 +252,7 @@ fn run() -> io::Result<i32> {
252
252
  .stdout(Stdio::piped())
253
253
  .stderr(Stdio::piped())
254
254
  .env_remove("CODEX_CLI_PATH")
255
- .env("CODEXHOST_STOCK_CODEX_PATH", &stock);
255
+ .env("HARNESSMIX_STOCK_CODEX_PATH", &stock);
256
256
  #[cfg(windows)]
257
257
  command.creation_flags(CREATE_NO_WINDOW);
258
258
 
@@ -15,7 +15,7 @@ function includesThread(thread, query = {}, threads = []) {
15
15
  if (query.isPinned === true && !thread.isPinned) return false;
16
16
  if (query.isPinned === false && thread.isPinned) return false;
17
17
  if (query.cwd != null && !(Array.isArray(query.cwd) ? query.cwd : [query.cwd]).includes(thread.cwd)) return false;
18
- if (query.modelProviders?.length && !query.modelProviders.includes('codexhost')) return false;
18
+ if (query.modelProviders?.length && !query.modelProviders.includes('harnessmix')) return false;
19
19
  if (query.sourceKinds?.length && !query.sourceKinds.includes('vscode')) return false;
20
20
  if (query.searchTerm && !(thread.title || '').toLowerCase().includes(query.searchTerm.toLowerCase())) return false;
21
21
  return true;
@@ -4,7 +4,9 @@ const CAPABILITY_GROUPS = {
4
4
  conversation: ['streaming', 'reasoning', 'plan', 'compaction', 'attachments'],
5
5
  interaction: ['approval', 'question', 'permissionMode'],
6
6
  session: ['resume', 'fork', 'forkFromMessage'],
7
- workspace: ['nativeDiff', 'nativePatch'],
7
+ // git/worktree/finalDiff are Host-owned. nativeDiff/nativePatch remain
8
+ // adapter-owned signals describing the native Harness event stream.
9
+ workspace: ['git', 'worktree', 'finalDiff', 'nativeDiff', 'nativePatch'],
8
10
  model: ['selection', 'thinkingLevel'],
9
11
  usage: ['tokens', 'context', 'cost'],
10
12
  };
@@ -6,13 +6,14 @@ async function projectReview(runtime, thread, message, record) {
6
6
  if (!core?.getTurn(message.coreTurnId)) throw new Error('审查记录缺少 Core Turn,请重新加载任务完成历史迁移');
7
7
 
8
8
  const hasNativePatch = Boolean(
9
- runtime.getCapabilities?.(thread.harnessId)?.conversation?.nativePatch ||
9
+ runtime.getCapabilities?.(thread.harnessId)?.workspace?.nativePatch ||
10
10
  runtime.adapters?.get(thread.harnessId)?.manifest?.capabilities?.nativePatch
11
11
  );
12
12
 
13
13
  let changes = record.changes;
14
- if (hasNativePatch) {
15
- // 原生 Codex 协议直通:若该会话有原生 patch 能力,当前轮次文件变更以原生汇报为准,消除同目录并发干扰
14
+ if (hasNativePatch && record.concurrent) {
15
+ // 同目录并发时,原生 patch 是唯一能归属到本轮的边界。无并发时始终
16
+ // 保留 Host 最终快照,补齐原生 Harness 没有上报或漏报的文件。
16
17
  const nativeItems = core.getItemsForTurn(message.coreTurnId).filter(item => item.type === 'file_change' && item.source === 'native');
17
18
  const nativePaths = new Set(nativeItems.map(item => item.path));
18
19
  changes = changes.filter(change => nativePaths.has(change.path));
@@ -1,8 +1,8 @@
1
1
  # Harness Mix native Desktop boundary
2
2
 
3
3
  The renderer-extension, desktop-control and shared-contracts source directories
4
- are derived from BytePioneer-AI/codex-host v0.6.1, commit
5
- da97fa7b447d03bd3626bb8f782234d5fa519141 (MIT, see LICENSE).
4
+ are derived from an upstream MIT-licensed project by BytePioneer-AI (v0.6.1,
5
+ commit da97fa7b447d03bd3626bb8f782234d5fa519141; see LICENSE).
6
6
  They are maintained and built in this repository. No upstream Host Runtime,
7
7
  ProtocolCore, adapter or account store is imported. Upstream wire names are
8
8
  retained solely for compatibility with this renderer boundary.
@@ -106,17 +106,17 @@ async function executeReadOnlyAudit(inspector, rendererWebContentsId, source) {
106
106
  const contents = webContents.fromId(${rendererWebContentsId});
107
107
  if (contents == null || contents.isDestroyed()) throw new Error('Renderer webContents is unavailable');
108
108
  return contents.executeJavaScript(${JSON.stringify(`(() => {
109
- const previous = window.__codexhostContractAuditV1;
109
+ const previous = window.__harnessmixContractAuditV1;
110
110
  ${source}
111
111
  try {
112
- const audit = window.__codexhostContractAuditV1;
112
+ const audit = window.__harnessmixContractAuditV1;
113
113
  if (audit == null || typeof audit.inspect !== 'function') {
114
114
  throw new Error('Renderer contract audit entry is unavailable');
115
115
  }
116
116
  return audit.inspect();
117
117
  } finally {
118
- if (previous === undefined) delete window.__codexhostContractAuditV1;
119
- else window.__codexhostContractAuditV1 = previous;
118
+ if (previous === undefined) delete window.__harnessmixContractAuditV1;
119
+ else window.__harnessmixContractAuditV1 = previous;
120
120
  }
121
121
  })()`)}, true);
122
122
  })()`);
@@ -15,7 +15,7 @@ export type { RendererDraftPrewarmPolicyStatus } from "./renderer-draft-prewarm-
15
15
  export { parseDesktopControllerArguments, runDesktopController, serializeDesktopControllerReadiness, } from "./production-controller.js";
16
16
  export type { DesktopControllerDependencies, DesktopControllerOptions, DesktopControllerReadiness, } from "./production-controller.js";
17
17
  export declare const packageMetadata: {
18
- readonly name: "@codexhost/desktop-control";
18
+ readonly name: "@harnessmix/desktop-control";
19
19
  readonly contractVersion: 1;
20
20
  };
21
21
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import { WORKSPACE_CONTRACT_VERSION } from "@codexhost/shared-contracts";
1
+ import { WORKSPACE_CONTRACT_VERSION } from "@harnessmix/shared-contracts";
2
2
  export { CdpClient, getCdpBrowserVersion, listCdpTargets, waitForRendererTarget, } from "./cdp-client.js";
3
3
  export { DESKTOP_CONTRACT_AUDIT_SCHEMA_VERSION, inspectDesktopContracts, validateRendererContractAuditInspection, } from "./contract-audit.js";
4
4
  export { inspectRendererDom, validateRendererDomInspection } from "./renderer-dom.js";
@@ -8,7 +8,7 @@ export { installMainProcessTitlePolicy, markRendererTitlePolicyReady, readMainPr
8
8
  export { installRendererDraftPrewarmPolicy, installRendererDraftPrewarmPolicyDirect, } from "./renderer-draft-prewarm-policy.js";
9
9
  export { parseDesktopControllerArguments, runDesktopController, serializeDesktopControllerReadiness, } from "./production-controller.js";
10
10
  export const packageMetadata = {
11
- name: "@codexhost/desktop-control",
11
+ name: "@harnessmix/desktop-control",
12
12
  contractVersion: WORKSPACE_CONTRACT_VERSION,
13
13
  };
14
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,cAAc,EACd,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EACL,qCAAqC,EACrC,uBAAuB,EACvB,uCAAuC,GACxC,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EAChC,2BAA2B,GAC5B,MAAM,mCAAmC,CAAC;AAO3C,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,+BAA+B,CAAC;AAavC,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,kCAAkC,GACnC,MAAM,gCAAgC,CAAC;AAMxC,OAAO,EACL,iCAAiC,EACjC,uCAAuC,GACxC,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,EACpB,mCAAmC,GACpC,MAAM,4BAA4B,CAAC;AAOpC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,4BAA4B;IAClC,eAAe,EAAE,0BAA0B;CACnC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,cAAc,EACd,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EACL,qCAAqC,EACrC,uBAAuB,EACvB,uCAAuC,GACxC,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EAChC,2BAA2B,GAC5B,MAAM,mCAAmC,CAAC;AAO3C,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,+BAA+B,CAAC;AAavC,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,kCAAkC,GACnC,MAAM,gCAAgC,CAAC;AAMxC,OAAO,EACL,iCAAiC,EACjC,uCAAuC,GACxC,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,EACpB,mCAAmC,GACpC,MAAM,4BAA4B,CAAC;AAOpC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,6BAA6B;IACnC,eAAe,EAAE,0BAA0B;CACnC,CAAC"}
@@ -37,9 +37,9 @@ const ELECTRON_MODULE_EXPRESSION = `(() => {
37
37
  return createRequire(process.execPath)('electron');
38
38
  })()`;
39
39
  const CONNECT_APP_HOST_CHANNEL = "codex_desktop:connect-app-host";
40
- const POLICY_STATE_SYMBOL = "codexhost.main-process-title-policy.v1";
41
- const SERVICE_OWNER_SYMBOL = "codexhost.main-process-title-policy.owner.v1";
42
- const RENDERER_READY_EXPRESSION = "(() => { Object.defineProperty(window, '__codexhostMainProcessTitlePolicyV1', { configurable: true, value: { state: 'ready' } }); return 'ready'; })()";
40
+ const POLICY_STATE_SYMBOL = "harnessmix.main-process-title-policy.v1";
41
+ const SERVICE_OWNER_SYMBOL = "harnessmix.main-process-title-policy.owner.v1";
42
+ const RENDERER_READY_EXPRESSION = "(() => { Object.defineProperty(window, '__harnessmixMainProcessTitlePolicyV1', { configurable: true, value: { state: 'ready' } }); return 'ready'; })()";
43
43
  const INSTALL_POLICY_FUNCTION = `async function (rendererWebContentsId) {
44
44
  const mainModule = process.mainModule;
45
45
  const electron = mainModule != null && typeof mainModule.require === 'function'
@@ -109,7 +109,7 @@ const INSTALL_POLICY_FUNCTION = `async function (rendererWebContentsId) {
109
109
  let selection = null;
110
110
  try {
111
111
  selection = await owner.executeJavaScript(
112
- "window.__codexhostRendererBindingProbeV1?.lockedSelection() ?? null",
112
+ "window.__harnessmixRendererBindingProbeV1?.lockedSelection() ?? null",
113
113
  true,
114
114
  );
115
115
  } catch {}
@@ -134,7 +134,7 @@ const INSTALL_POLICY_FUNCTION = `async function (rendererWebContentsId) {
134
134
  let selection = null;
135
135
  try {
136
136
  selection = await owner.executeJavaScript(
137
- "window.__codexhostRendererBindingProbeV1?.lockedSelection() ?? null",
137
+ "window.__harnessmixRendererBindingProbeV1?.lockedSelection() ?? null",
138
138
  true,
139
139
  );
140
140
  } catch {}
@@ -1 +1 @@
1
- {"version":3,"file":"main-process-title-policy.js","sourceRoot":"","sources":["../src/main-process-title-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main-process-title-policy.js","sourceRoot":"","sources":["../src/main-process-title-policy.ts"],"names":[],"mappings":"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"}