@harness-mix/cli 0.1.10 → 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 +21 -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 +8 -8
  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
@@ -22,7 +22,7 @@ import {
22
22
  type ThreadOwnershipListParams,
23
23
  type ThreadUsageInspection,
24
24
  type ThreadUsageInspectionParams,
25
- } from "@codexhost/shared-contracts";
25
+ } from "@harnessmix/shared-contracts";
26
26
 
27
27
  import type { RendererAgent } from "./agent-selection-state.js";
28
28
  import { installRendererForkControl } from "./renderer-fork-control.js";
@@ -33,19 +33,19 @@ import {
33
33
  type RendererModelClient,
34
34
  } from "./renderer-model-client.js";
35
35
 
36
- export const PI_TRANSPORT_MODEL_ID = "codexhost/pi-native";
36
+ export const PI_TRANSPORT_MODEL_ID = "harnessmix/pi-native";
37
37
  export const PI_TRANSPORT_MODEL_PREFIX = `${PI_TRANSPORT_MODEL_ID}@`;
38
- export const CLAUDE_CODE_TRANSPORT_MODEL_ID = "codexhost/claude-code-native";
38
+ export const CLAUDE_CODE_TRANSPORT_MODEL_ID = "harnessmix/claude-code-native";
39
39
  export const CLAUDE_CODE_TRANSPORT_MODEL_PREFIX = `${CLAUDE_CODE_TRANSPORT_MODEL_ID}@`;
40
- export const DEEPSEEK_HARNESS_TRANSPORT_MODEL_ID = "codexhost/deepseek-harness-native";
40
+ export const DEEPSEEK_HARNESS_TRANSPORT_MODEL_ID = "harnessmix/deepseek-harness-native";
41
41
  export const DEEPSEEK_HARNESS_TRANSPORT_MODEL_PREFIX = `${DEEPSEEK_HARNESS_TRANSPORT_MODEL_ID}@`;
42
- export const OPENCODE_TRANSPORT_MODEL_ID = "codexhost/opencode-native";
42
+ export const OPENCODE_TRANSPORT_MODEL_ID = "harnessmix/opencode-native";
43
43
  export const OPENCODE_TRANSPORT_MODEL_PREFIX = `${OPENCODE_TRANSPORT_MODEL_ID}@`;
44
- export const GROK_TRANSPORT_MODEL_ID = "codexhost/grok-native";
44
+ export const GROK_TRANSPORT_MODEL_ID = "harnessmix/grok-native";
45
45
  export const GROK_TRANSPORT_MODEL_PREFIX = `${GROK_TRANSPORT_MODEL_ID}@`;
46
- export const OMP_TRANSPORT_MODEL_ID = "codexhost/omp-native";
46
+ export const OMP_TRANSPORT_MODEL_ID = "harnessmix/omp-native";
47
47
  export const OMP_TRANSPORT_MODEL_PREFIX = `${OMP_TRANSPORT_MODEL_ID}@`;
48
- export const ANTIGRAVITY_TRANSPORT_MODEL_ID = "codexhost/antigravity-native";
48
+ export const ANTIGRAVITY_TRANSPORT_MODEL_ID = "harnessmix/antigravity-native";
49
49
  export const ANTIGRAVITY_TRANSPORT_MODEL_PREFIX = `${ANTIGRAVITY_TRANSPORT_MODEL_ID}@`;
50
50
 
51
51
  export type RendererAdapterState = "installing" | "ready" | "unsupported";
@@ -122,7 +122,7 @@ export interface RendererDraftPrewarmPolicy {
122
122
  }
123
123
 
124
124
  interface RendererDraftPrewarmPolicyTarget {
125
- __codexhostDraftPrewarmPolicyV1?: RendererDraftPrewarmPolicy;
125
+ __harnessmixDraftPrewarmPolicyV1?: RendererDraftPrewarmPolicy;
126
126
  setTimeout(handler: TimerHandler, timeout?: number): number;
127
127
  }
128
128
 
@@ -131,8 +131,8 @@ const DRAFT_PREWARM_POLICY_POLL_INTERVAL_MS = 25;
131
131
 
132
132
  declare global {
133
133
  interface Window {
134
- __codexhostMainProcessTitlePolicyV1?: { state: "ready" };
135
- __codexhostDraftPrewarmPolicyV1?: RendererDraftPrewarmPolicy;
134
+ __harnessmixMainProcessTitlePolicyV1?: { state: "ready" };
135
+ __harnessmixDraftPrewarmPolicyV1?: RendererDraftPrewarmPolicy;
136
136
  }
137
137
  }
138
138
 
@@ -916,7 +916,7 @@ export async function waitForRendererDraftPrewarmPolicy(
916
916
  ): Promise<RendererDraftPrewarmPolicy> {
917
917
  const deadline = Date.now() + DRAFT_PREWARM_POLICY_WAIT_TIMEOUT_MS;
918
918
  while (true) {
919
- const policy = target.__codexhostDraftPrewarmPolicyV1;
919
+ const policy = target.__harnessmixDraftPrewarmPolicyV1;
920
920
  if (isDraftPrewarmPolicyReady(policy)) return policy;
921
921
  const remaining = deadline - Date.now();
922
922
  if (remaining <= 0) throw new Error("Renderer draft prewarm policy is unavailable");
@@ -994,13 +994,13 @@ export function installCurrentRendererAdapter(): {
994
994
  ): void => {
995
995
  liveStatus.modelUpdates = modelUpdates;
996
996
  transitionRendererAdapterStatus(liveStatus, { state, reason, hook }, () => {
997
- window.dispatchEvent(new CustomEvent("codexhost:renderer-adapter-status"));
997
+ window.dispatchEvent(new CustomEvent("harnessmix:renderer-adapter-status"));
998
998
  });
999
999
  };
1000
1000
 
1001
1001
  const usageSubscription = createThreadUsageSubscriptionRelay();
1002
1002
  const requestRouteResolver = createRendererRequestRouteResolver(
1003
- () => window.__codexhostDraftPrewarmPolicyV1,
1003
+ () => window.__harnessmixDraftPrewarmPolicyV1,
1004
1004
  () => findActivePrewarmTargets(document),
1005
1005
  );
1006
1006
  const clientsByTarget = new WeakMap<
@@ -1060,7 +1060,7 @@ export function installCurrentRendererAdapter(): {
1060
1060
  const route = currentRequestRoute();
1061
1061
  if (route?.policy.hostId === hostId)
1062
1062
  return modelClientForTargets(route.targets, route.policy);
1063
- const policy = window.__codexhostDraftPrewarmPolicyV1;
1063
+ const policy = window.__harnessmixDraftPrewarmPolicyV1;
1064
1064
  if (isDraftPrewarmPolicyReady(policy) && hasPolicyRequestTarget(policy)) return null;
1065
1065
  const targets = rendererRequestTargetsForHost(findActivePrewarmTargets(document), hostId);
1066
1066
  return modelClientForTargets(targets ?? []);
@@ -1140,7 +1140,7 @@ export function installCurrentRendererAdapter(): {
1140
1140
  getClient: () => modelControl,
1141
1141
  reportError: (error) => {
1142
1142
  console.error(
1143
- "codexhost external Thread Fork failed",
1143
+ "harnessmix external Thread Fork failed",
1144
1144
  error instanceof Error ? error.name : "UnknownError",
1145
1145
  );
1146
1146
  },
@@ -1201,7 +1201,7 @@ export function installCurrentRendererAdapter(): {
1201
1201
  };
1202
1202
  if (!captureRoutingPolicy()) {
1203
1203
  updateStatus("installing", "draft-routing-policy-unavailable", null);
1204
- const policy = window.__codexhostDraftPrewarmPolicyV1;
1204
+ const policy = window.__harnessmixDraftPrewarmPolicyV1;
1205
1205
  if (!isDraftPrewarmPolicyReady(policy) || !hasPolicyRequestTarget(policy)) {
1206
1206
  startPolicyCapture();
1207
1207
  }
@@ -1209,7 +1209,7 @@ export function installCurrentRendererAdapter(): {
1209
1209
  const handleRoutingPolicyChange = (): void => {
1210
1210
  stopPolicyRecapture();
1211
1211
  if (captureRoutingPolicy()) return;
1212
- const policy = window.__codexhostDraftPrewarmPolicyV1;
1212
+ const policy = window.__harnessmixDraftPrewarmPolicyV1;
1213
1213
  if (isDraftPrewarmPolicyReady(policy) && hasPolicyRequestTarget(policy)) {
1214
1214
  stopPolicyCapture();
1215
1215
  }
@@ -1219,7 +1219,7 @@ export function installCurrentRendererAdapter(): {
1219
1219
  startPolicyRecapture();
1220
1220
  }
1221
1221
  };
1222
- window.addEventListener("codexhost:draft-prewarm-policy-changed", handleRoutingPolicyChange);
1222
+ window.addEventListener("harnessmix:draft-prewarm-policy-changed", handleRoutingPolicyChange);
1223
1223
 
1224
1224
  const applyAgent = (
1225
1225
  agent: RendererAgent,
@@ -1265,7 +1265,7 @@ export function installCurrentRendererAdapter(): {
1265
1265
  stopPolicyCapture();
1266
1266
  stopPolicyRecapture();
1267
1267
  window.removeEventListener(
1268
- "codexhost:draft-prewarm-policy-changed",
1268
+ "harnessmix:draft-prewarm-policy-changed",
1269
1269
  handleRoutingPolicyChange,
1270
1270
  );
1271
1271
  const activeRoutingPolicy = routingPolicy;
@@ -2,7 +2,7 @@ import {
2
2
  harnessModelRefSchema,
3
3
  harnessPermissionModeIdSchema,
4
4
  harnessThinkingOptionIdSchema,
5
- } from "@codexhost/shared-contracts";
5
+ } from "@harnessmix/shared-contracts";
6
6
  import { describe, expect, it, vi } from "vitest";
7
7
 
8
8
  import { DraftAgentController } from "../src/index.js";
@@ -420,6 +420,65 @@ describe("Renderer draft Agent controller", () => {
420
420
  });
421
421
  });
422
422
 
423
+ it("carries a live draft selection when Codex re-derives the draft identity", async () => {
424
+ const composer = {};
425
+ const agents = controller();
426
+ const firstTarget = ["default", "client-new-thread:draft-a"] as const;
427
+ const reboundTarget = ["default", "client-new-thread:draft-b"] as const;
428
+ const model = harnessModelRefSchema.parse({ id: "kimi-k3-max" });
429
+
430
+ agents.mount(composer, firstTarget);
431
+ await agents.switchAgent(composer, "pi", {
432
+ applyAgent: () => true,
433
+ clearPrewarm: async () => undefined,
434
+ });
435
+ agents.setExternalModel(composer, "pi", model);
436
+ const liveState = agents.get(composer);
437
+
438
+ const rebound = agents.rebindTarget(composer, reboundTarget);
439
+ expect(rebound).toBe(liveState);
440
+ expect(rebound).toMatchObject({ agent: "pi", phase: "draft", piModel: model });
441
+ // The rebound identity is restorable: leaving and returning keeps it.
442
+ agents.rebindTarget(composer, ["conversation", "visited-thread", "local"]);
443
+ expect(agents.rebindTarget(composer, reboundTarget)).toBe(liveState);
444
+ });
445
+
446
+ it("keeps a pending submission across a draft identity rebind", async () => {
447
+ const composer = {};
448
+ const agents = controller();
449
+ agents.mount(composer, ["default", "client-new-thread:pending-a"]);
450
+ await agents.switchAgent(composer, "pi", {
451
+ applyAgent: () => true,
452
+ clearPrewarm: async () => undefined,
453
+ });
454
+ agents.markSubmissionPending(composer);
455
+
456
+ agents.rebindTarget(composer, ["default", "client-new-thread:pending-b"]);
457
+ expect(agents.isSubmissionPending(composer)).toBe(true);
458
+ // The pending draft still transfers onto the created conversation.
459
+ expect(agents.transfer(composer, composer, ["conversation", "created-thread"])).toBe(true);
460
+ expect(agents.get(composer)).toMatchObject({ agent: "pi", phase: "locked" });
461
+ });
462
+
463
+ it("still seeds an untouched rebound draft from the last submitted Agent", async () => {
464
+ const submitted = {};
465
+ const quiet = {};
466
+ const agents = controller();
467
+ agents.mount(submitted, ["default", "client-new-thread:submitted-a"]);
468
+ await agents.switchAgent(submitted, "pi", {
469
+ applyAgent: () => true,
470
+ clearPrewarm: async () => undefined,
471
+ });
472
+ agents.recordSubmission(submitted);
473
+
474
+ // A draft the user never configured follows the new-Thread seed even when
475
+ // Codex re-derives its identity underneath the same Composer element.
476
+ agents.mount(quiet, ["default", "client-new-thread:quiet-a"]);
477
+ const rebound = agents.rebindTarget(quiet, ["default", "client-new-thread:quiet-b"]);
478
+ expect(rebound).toMatchObject({ agent: "pi", phase: "draft" });
479
+ expect(rebound.composerId).not.toBe("composer-2");
480
+ });
481
+
423
482
  it("does not revive a submitted draft after it becomes a conversation", async () => {
424
483
  const composer = {};
425
484
  const agents = controller();
@@ -2,7 +2,7 @@ import { describe, it, expect } from 'vitest';
2
2
  import { readNewThreadAgentPreference, RENDERER_NEW_THREAD_PREFERENCE_KEY, readNewThreadExternalConfigurationPreference } from '../src/renderer-new-thread-preference.js';
3
3
  import { createAgentGroupPreferenceStore, AGENT_GROUP_PREFERENCE_STORAGE_KEY } from '../src/agent-group-preference.js';
4
4
  import { DEFAULT_RENDERER_AGENTS } from '../src/agent-selection-state.js';
5
- import { harnessModelCatalogSchema } from '@codexhost/shared-contracts';
5
+ import { harnessModelCatalogSchema } from '@harnessmix/shared-contracts';
6
6
 
7
7
  describe('CodeBuddy rename compatibility', () => {
8
8
  it('keeps old last-agent, model and group preferences under the canonical name', () => {
@@ -251,7 +251,7 @@ describe("Renderer Agent picker presentation", () => {
251
251
  expect(isNativeModelControlCandidate(element([], true, false))).toBe(false);
252
252
  expect(isNativeModelControlCandidate(element([], false, true))).toBe(false);
253
253
  expect(
254
- isNativeModelControlCandidate(element(["data-codexhost-agent-control"], true, true)),
254
+ isNativeModelControlCandidate(element(["data-harnessmix-agent-control"], true, true)),
255
255
  ).toBe(false);
256
256
  });
257
257
  });
@@ -1,5 +1,5 @@
1
- import { harnessIdSchema } from "@codexhost/shared-contracts";
2
- import { harnessModelRefSchema } from "@codexhost/shared-contracts";
1
+ import { harnessIdSchema } from "@harnessmix/shared-contracts";
2
+ import { harnessModelRefSchema } from "@harnessmix/shared-contracts";
3
3
  import { afterEach, assert, describe, expect, it, vi } from "vitest";
4
4
 
5
5
  import type * as RendererComposerDom from "../src/renderer-composer-dom.js";
@@ -21,6 +21,7 @@ const testState = vi.hoisted(() => ({
21
21
  getSessionImportClient: null as null | (() => RendererSessionImportClient | null),
22
22
  documentListeners: new Map<string, EventListener>(),
23
23
  modelTarget: ["conversation", "thread-a"] as readonly unknown[],
24
+ prepareMentions: vi.fn(),
24
25
  }));
25
26
 
26
27
  vi.mock("../src/renderer-composer-dom.js", async (importOriginal) => {
@@ -89,7 +90,11 @@ vi.mock("../src/renderer-sidebar-agent-icons.js", () => ({
89
90
  }));
90
91
 
91
92
  vi.mock("../src/renderer-harness-mentions.js", () => ({
92
- installHarnessMentions: () => ({ dispose: vi.fn() }),
93
+ installHarnessMentions: () => ({ prepareSubmission: testState.prepareMentions, dispose: vi.fn() }),
94
+ }));
95
+
96
+ vi.mock("../src/renderer-team-cards.js", () => ({
97
+ installTeamCards: () => ({ dispose: vi.fn() }),
93
98
  }));
94
99
 
95
100
  vi.mock("../src/harness-mix-settings.js", () => ({
@@ -216,9 +221,9 @@ function installFakeBrowser(): void {
216
221
  afterEach(() => {
217
222
  const api = (
218
223
  globalThis.window as unknown as {
219
- __codexhostRendererBindingProbeV1?: { dispose(): void };
224
+ __harnessmixRendererBindingProbeV1?: { dispose(): void };
220
225
  }
221
- ).__codexhostRendererBindingProbeV1;
226
+ ).__harnessmixRendererBindingProbeV1;
222
227
  api?.dispose();
223
228
  vi.unstubAllGlobals();
224
229
  vi.clearAllMocks();
@@ -245,7 +250,7 @@ describe("Renderer binding Host-scoped Claude catalogs", () => {
245
250
  owner: "external" as const,
246
251
  harnessId: "claude-code",
247
252
  transportModelId:
248
- "codexhost/claude-code-native@claude-model-v1.b3B1cw@bypassPermissions@auto",
253
+ "harnessmix/claude-code-native@claude-model-v1.b3B1cw@bypassPermissions@auto",
249
254
  effectiveModel: oldModel,
250
255
  history: { fork: true, forkAcrossCwd: false, rollbackLastTurn: true },
251
256
  locked: true,
@@ -345,6 +350,7 @@ describe("Renderer binding Host-scoped Claude catalogs", () => {
345
350
  expect(host.selectThreadModel).toHaveBeenCalledTimes(2);
346
351
  expect(probe.lockedSelection()?.model).toEqual(newModel);
347
352
  expectSubmissionBlocked(false);
353
+ expect(testState.prepareMentions).toHaveBeenCalledExactlyOnceWith(testState.composer);
348
354
  expect(applyAgent).not.toHaveBeenCalled();
349
355
  });
350
356
 
@@ -494,7 +500,7 @@ describe("Renderer binding Host-scoped Claude catalogs", () => {
494
500
  owner: "external" as const,
495
501
  harnessId: "claude-code",
496
502
  transportModelId:
497
- "codexhost/claude-code-native@claude-model-v1.b3B1cw@bypassPermissions@auto",
503
+ "harnessmix/claude-code-native@claude-model-v1.b3B1cw@bypassPermissions@auto",
498
504
  effectiveModel: harnessModelRefSchema.parse({ id: "claude-model-v1.b3B1cw" }),
499
505
  history: { fork: true, forkAcrossCwd: false, rollbackLastTurn: true },
500
506
  locked: true,
@@ -564,7 +570,7 @@ describe("Renderer binding Host-scoped Claude catalogs", () => {
564
570
  owner: "external" as const,
565
571
  harnessId: "claude-code",
566
572
  transportModelId:
567
- "codexhost/claude-code-native@claude-model-v1.b3B1cw@bypassPermissions@auto",
573
+ "harnessmix/claude-code-native@claude-model-v1.b3B1cw@bypassPermissions@auto",
568
574
  effectiveModel: harnessModelRefSchema.parse({ id: "claude-model-v1.b3B1cw" }),
569
575
  history: { fork: true, forkAcrossCwd: false, rollbackLastTurn: true },
570
576
  locked: true,
@@ -663,7 +669,7 @@ describe("Renderer binding Host-scoped Claude catalogs", () => {
663
669
  owner: "external" as const,
664
670
  harnessId: "claude-code",
665
671
  transportModelId:
666
- "codexhost/claude-code-native@claude-model-v1.b3B1cw@bypassPermissions@auto",
672
+ "harnessmix/claude-code-native@claude-model-v1.b3B1cw@bypassPermissions@auto",
667
673
  effectiveModel: harnessModelRefSchema.parse({ id: "claude-model-v1.b3B1cw" }),
668
674
  history: { fork: true, forkAcrossCwd: false, rollbackLastTurn: true },
669
675
  locked: true,
@@ -5,7 +5,7 @@ import {
5
5
  harnessPermissionModeIdSchema,
6
6
  harnessThinkingOptionIdSchema,
7
7
  decodeHarnessPluginRoute,
8
- } from "@codexhost/shared-contracts";
8
+ } from "@harnessmix/shared-contracts";
9
9
  import { describe, expect, it, vi } from "vitest";
10
10
  import { modelSelectionForAgent } from "../src/versioned-renderer-adapter.js";
11
11
 
@@ -624,13 +624,13 @@ describe("Renderer Composer DOM behavior", () => {
624
624
  expect(placeCredits).toHaveBeenCalledWith(permissionModeRoot);
625
625
  });
626
626
 
627
- it("does not treat codexhost Usage controls as native anchors", () => {
627
+ it("does not treat harnessmix Usage controls as native anchors", () => {
628
628
  const usage = {
629
- hasAttribute: (name: string) => name === "data-codexhost-usage-control",
629
+ hasAttribute: (name: string) => name === "data-harnessmix-usage-control",
630
630
  getAttribute: () => "Context window usage",
631
631
  } as unknown as HTMLElement;
632
632
  const credits = {
633
- hasAttribute: (name: string) => name === "data-codexhost-credits-control",
633
+ hasAttribute: (name: string) => name === "data-harnessmix-credits-control",
634
634
  getAttribute: () => "Weekly limit",
635
635
  } as unknown as HTMLElement;
636
636
  expect(isNativeContextUsageControlCandidate(usage)).toBe(false);
@@ -932,7 +932,7 @@ describe("Renderer Composer DOM behavior", () => {
932
932
  restoredThreadOwnership({
933
933
  owner: "external",
934
934
  harnessId: "pi",
935
- transportModelId: "codexhost/pi-native",
935
+ transportModelId: "harnessmix/pi-native",
936
936
  history: { fork: true, forkAcrossCwd: true, rollbackLastTurn: false },
937
937
  effectiveModel: model,
938
938
  effectiveThinkingOptionId: thinkingOptionId,
@@ -947,7 +947,7 @@ describe("Renderer Composer DOM behavior", () => {
947
947
  restoredThreadOwnership({
948
948
  owner: "external",
949
949
  harnessId: "pi",
950
- transportModelId: `codexhost/pi-native@${model.id}@${thinkingOptionId}`,
950
+ transportModelId: `harnessmix/pi-native@${model.id}@${thinkingOptionId}`,
951
951
  history: { fork: true, forkAcrossCwd: true, rollbackLastTurn: false },
952
952
  locked: true,
953
953
  }),
@@ -959,7 +959,7 @@ describe("Renderer Composer DOM behavior", () => {
959
959
  restoredThreadOwnership({
960
960
  owner: "external",
961
961
  harnessId: "claude-code",
962
- transportModelId: "codexhost/claude-code-native@claude-model-v1.c29ubmV0@acceptEdits@high",
962
+ transportModelId: "harnessmix/claude-code-native@claude-model-v1.c29ubmV0@acceptEdits@high",
963
963
  history: { fork: true, forkAcrossCwd: false, rollbackLastTurn: false },
964
964
  effectiveModel: harnessModelRefSchema.parse({ id: "claude-model-v1.c29ubmV0" }),
965
965
  effectiveThinkingOptionId: thinkingOptionId,
@@ -979,7 +979,7 @@ describe("Renderer Composer DOM behavior", () => {
979
979
  owner: "external",
980
980
  harnessId: "opencode",
981
981
  transportModelId:
982
- "codexhost/opencode-native@opencode-model-v1.WyJwcm92aWRlci0xIiwibW9kZWwtMSJd@ask@ocv.aGlnaA",
982
+ "harnessmix/opencode-native@opencode-model-v1.WyJwcm92aWRlci0xIiwibW9kZWwtMSJd@ask@ocv.aGlnaA",
983
983
  history: { fork: true, forkAcrossCwd: false, rollbackLastTurn: true },
984
984
  effectiveModel: harnessModelRefSchema.parse({
985
985
  id: "opencode-model-v1.WyJwcm92aWRlci0xIiwibW9kZWwtMSJd",
@@ -1001,7 +1001,7 @@ describe("Renderer Composer DOM behavior", () => {
1001
1001
  restoredThreadOwnership({
1002
1002
  owner: "external",
1003
1003
  harnessId: "omp",
1004
- transportModelId: "codexhost/omp-native@omp-model-v1.synthetic@write@high",
1004
+ transportModelId: "harnessmix/omp-native@omp-model-v1.synthetic@write@high",
1005
1005
  history: { fork: true, forkAcrossCwd: true, rollbackLastTurn: true },
1006
1006
  effectiveModel: harnessModelRefSchema.parse({ id: "omp-model-v1.synthetic" }),
1007
1007
  effectiveThinkingOptionId: thinkingOptionId,
@@ -1019,7 +1019,7 @@ describe("Renderer Composer DOM behavior", () => {
1019
1019
  restoredThreadOwnership({
1020
1020
  owner: "external",
1021
1021
  harnessId: "grok",
1022
- transportModelId: "codexhost/grok-native@grok-4.6@auto@high",
1022
+ transportModelId: "harnessmix/grok-native@grok-4.6@auto@high",
1023
1023
  history: { fork: true, forkAcrossCwd: true, rollbackLastTurn: true },
1024
1024
  effectiveModel: harnessModelRefSchema.parse({ id: "grok-4.6" }),
1025
1025
  effectiveThinkingOptionId: thinkingOptionId,
@@ -1037,7 +1037,7 @@ describe("Renderer Composer DOM behavior", () => {
1037
1037
  restoredThreadOwnership({
1038
1038
  owner: "external",
1039
1039
  harnessId: "grok",
1040
- transportModelId: "codexhost/grok-native@grok-4.6@always-approve",
1040
+ transportModelId: "harnessmix/grok-native@grok-4.6@always-approve",
1041
1041
  history: { fork: true, forkAcrossCwd: true, rollbackLastTurn: true },
1042
1042
  locked: true,
1043
1043
  }),
@@ -1050,7 +1050,7 @@ describe("Renderer Composer DOM behavior", () => {
1050
1050
  restoredThreadOwnership({
1051
1051
  owner: "external",
1052
1052
  harnessId: "claude-code",
1053
- transportModelId: "codexhost/claude-code-native@claude-model-v1.c29ubmV0@acceptEdits",
1053
+ transportModelId: "harnessmix/claude-code-native@claude-model-v1.c29ubmV0@acceptEdits",
1054
1054
  history: { fork: true, forkAcrossCwd: false, rollbackLastTurn: false },
1055
1055
  locked: true,
1056
1056
  }),
@@ -1064,7 +1064,7 @@ describe("Renderer Composer DOM behavior", () => {
1064
1064
  owner: "external",
1065
1065
  harnessId: "deepseek-harness",
1066
1066
  transportModelId:
1067
- "codexhost/deepseek-harness-native@deepseek-harness-model-v1.Zmxhc2g@team-safe",
1067
+ "harnessmix/deepseek-harness-native@deepseek-harness-model-v1.Zmxhc2g@team-safe",
1068
1068
  history: { fork: false, forkAcrossCwd: false, rollbackLastTurn: false },
1069
1069
  effectiveModel: harnessModelRefSchema.parse({
1070
1070
  id: "deepseek-harness-model-v1.Zmxhc2g",
@@ -1081,7 +1081,7 @@ describe("Renderer Composer DOM behavior", () => {
1081
1081
  restoredThreadOwnership({
1082
1082
  owner: "external",
1083
1083
  harnessId: "antigravity",
1084
- transportModelId: "codexhost/antigravity-native@gpt-5.6-sol@configured@high",
1084
+ transportModelId: "harnessmix/antigravity-native@gpt-5.6-sol@configured@high",
1085
1085
  history: { fork: false, forkAcrossCwd: false, rollbackLastTurn: false },
1086
1086
  locked: true,
1087
1087
  }),
@@ -1207,7 +1207,7 @@ describe("Renderer Composer DOM behavior", () => {
1207
1207
  restoredThreadOwnership({
1208
1208
  owner: "external",
1209
1209
  harnessId: "pi",
1210
- transportModelId: `codexhost/pi-native@${model.id}`,
1210
+ transportModelId: `harnessmix/pi-native@${model.id}`,
1211
1211
  history: { fork: true, forkAcrossCwd: true, rollbackLastTurn: false },
1212
1212
  effectiveModel: model,
1213
1213
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.parse("high"),
@@ -38,7 +38,7 @@ describe("Host-scoped Codex Account state", () => {
38
38
  expect(second).toBe(first);
39
39
  response.resolve({ accounts: [account("default", true)] });
40
40
  await first;
41
- expect(sendRequest).toHaveBeenCalledExactlyOnceWith("codexhost/account/list", {});
41
+ expect(sendRequest).toHaveBeenCalledExactlyOnceWith("harnessmix/account/list", {});
42
42
  expect(state.selection.selectedAccountId).toBe("default");
43
43
  });
44
44
 
@@ -6,7 +6,7 @@ function nativePermissionButton(
6
6
  options: {
7
7
  target?: string;
8
8
  includeOwner?: boolean;
9
- codexhost?: boolean;
9
+ harnessmix?: boolean;
10
10
  hasMenu?: boolean;
11
11
  } = {},
12
12
  ): Element {
@@ -15,7 +15,7 @@ function nativePermissionButton(
15
15
  ["data-composer-navigation-target", target],
16
16
  ["aria-haspopup", options.hasMenu === false ? "dialog" : "menu"],
17
17
  ]);
18
- if (options.codexhost) attributes.set("data-codexhost-permission-mode-control", "composer-1");
18
+ if (options.harnessmix) attributes.set("data-harnessmix-permission-mode-control", "composer-1");
19
19
  const owner =
20
20
  options.includeOwner === false
21
21
  ? null
@@ -67,9 +67,9 @@ describe("versioned native Permission Mode control ownership", () => {
67
67
  );
68
68
  });
69
69
 
70
- it("never recaptures the codexhost replacement control", () => {
70
+ it("never recaptures the harnessmix replacement control", () => {
71
71
  expect(
72
- isNativePermissionModeControlCandidate(nativePermissionButton({ codexhost: true })),
72
+ isNativePermissionModeControlCandidate(nativePermissionButton({ harnessmix: true })),
73
73
  ).toBe(false);
74
74
  });
75
75
  });
@@ -9,7 +9,7 @@ class RpcTarget {}
9
9
  class Manager extends RpcTarget {
10
10
  readonly #identity = "local";
11
11
  readonly requests = vi.fn(async (method: unknown) => {
12
- if (method === "codexhost/thread/ownership/list") {
12
+ if (method === "harnessmix/thread/ownership/list") {
13
13
  return {
14
14
  threads: [
15
15
  {
@@ -120,7 +120,7 @@ describe("Desktop RpcTarget method visibility", () => {
120
120
  });
121
121
  expect(manager.presented).toHaveLength(1);
122
122
  expect(manager.requests.mock.calls.map(([method]) => method)).toEqual([
123
- "codexhost/thread/ownership/list",
123
+ "harnessmix/thread/ownership/list",
124
124
  "turn/steer",
125
125
  ]);
126
126
  } finally {
@@ -16,7 +16,7 @@ function fixture(owner: "external" | "codex" = "external") {
16
16
  const rpc = vi.fn(
17
17
  async (method: unknown, params: unknown, options?: unknown): Promise<unknown> => {
18
18
  void options;
19
- if (method === "codexhost/thread/ownership/list") {
19
+ if (method === "harnessmix/thread/ownership/list") {
20
20
  return {
21
21
  threads: [
22
22
  { threadId: "thread", owner, ...(owner === "external" ? { harnessId: "pi" } : {}) },
@@ -235,7 +235,7 @@ describe("external direction changes use normal Desktop start presentation", ()
235
235
  f.dispose();
236
236
  waiting.resolve(undefined);
237
237
  await expect(result).rejects.toThrow("disposed");
238
- expect(f.rpc.mock.calls.map(([method]) => method)).toEqual(["codexhost/thread/ownership/list"]);
238
+ expect(f.rpc.mock.calls.map(([method]) => method)).toEqual(["harnessmix/thread/ownership/list"]);
239
239
  });
240
240
 
241
241
  it("resumes automatically paused queue messages without unpausing older paused entries", async () => {
@@ -268,7 +268,7 @@ describe("external direction changes use normal Desktop start presentation", ()
268
268
  await expect(f.manager.steerTurn(...f.args)).rejects.toThrow("ownership unavailable");
269
269
  expect(f.originalSteer).not.toHaveBeenCalled();
270
270
  f.rpc.mockImplementation(async (method) => {
271
- if (method === "codexhost/thread/ownership/list")
271
+ if (method === "harnessmix/thread/ownership/list")
272
272
  return { threads: [{ threadId: "thread", owner: "external", harnessId: "pi" }] };
273
273
  throw new Error("cancel failed");
274
274
  });
@@ -2,7 +2,7 @@ import {
2
2
  hostThreadIdSchema,
3
3
  hostTurnIdSchema,
4
4
  type ThreadInspection,
5
- } from "@codexhost/shared-contracts";
5
+ } from "@harnessmix/shared-contracts";
6
6
  import { afterEach, describe, expect, it, vi } from "vitest";
7
7
 
8
8
  import {
@@ -279,7 +279,7 @@ describe("Renderer external Thread Fork control", () => {
279
279
  const client = clientWith({
280
280
  owner: "external",
281
281
  harnessId: "pi",
282
- transportModelId: "codexhost/pi-native",
282
+ transportModelId: "harnessmix/pi-native",
283
283
  history: { fork: true, forkAcrossCwd: true, rollbackLastTurn: false },
284
284
  locked: true,
285
285
  });
@@ -302,7 +302,7 @@ describe("Renderer external Thread Fork control", () => {
302
302
  const client = clientWith({
303
303
  owner: "external",
304
304
  harnessId: "pi",
305
- transportModelId: "codexhost/pi-native",
305
+ transportModelId: "harnessmix/pi-native",
306
306
  history: { fork: true, forkAcrossCwd: true, rollbackLastTurn: false },
307
307
  locked: true,
308
308
  });
@@ -322,7 +322,7 @@ describe("Renderer external Thread Fork control", () => {
322
322
  const client = clientWith({
323
323
  owner: "external",
324
324
  harnessId: "claude-code",
325
- transportModelId: "codexhost/claude-code-native",
325
+ transportModelId: "harnessmix/claude-code-native",
326
326
  history: { fork: true, forkAcrossCwd: false, rollbackLastTurn: false },
327
327
  locked: true,
328
328
  });
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  harnessCommandDescriptorSchema,
3
3
  type HarnessCommandDescriptor,
4
- } from "@codexhost/shared-contracts";
4
+ } from "@harnessmix/shared-contracts";
5
5
  import { describe, expect, it, vi } from "vitest";
6
6
 
7
7
  import { routeRendererHarnessCommandSelection } from "../src/renderer-harness-command-claim.js";
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
 
3
- import type { HarnessCommandDescriptor } from "@codexhost/shared-contracts";
3
+ import type { HarnessCommandDescriptor } from "@harnessmix/shared-contracts";
4
4
 
5
5
  import {
6
6
  rendererHarnessCommandPresentation,