@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
@@ -6,7 +6,7 @@ import {
6
6
  hostThreadIdSchema,
7
7
  hostTurnIdSchema,
8
8
  type ThreadUsageInspection,
9
- } from "@codexhost/shared-contracts";
9
+ } from "@harnessmix/shared-contracts";
10
10
  import { describe, expect, it, vi } from "vitest";
11
11
 
12
12
  import {
@@ -85,7 +85,7 @@ describe("Renderer fixed Model request client", () => {
85
85
  await expect(client?.inspectCodexAccountUsage?.({ accountId: "account-b" })).resolves.toEqual(
86
86
  result,
87
87
  );
88
- expect(sendRequest).toHaveBeenCalledExactlyOnceWith("codexhost/account/usage/inspect", {
88
+ expect(sendRequest).toHaveBeenCalledExactlyOnceWith("harnessmix/account/usage/inspect", {
89
89
  accountId: "account-b",
90
90
  });
91
91
  });
@@ -176,7 +176,7 @@ describe("Renderer fixed Model request client", () => {
176
176
  const sendRequest = vi.fn().mockResolvedValue({ accounts: [account] });
177
177
  const client = createRendererModelClient([{ sendRequest }]);
178
178
  expect(await client?.listHarnessAccounts?.()).toEqual({ accounts: [account] });
179
- expect(sendRequest).toHaveBeenCalledExactlyOnceWith("codexhost/harness/accounts/list", {});
179
+ expect(sendRequest).toHaveBeenCalledExactlyOnceWith("harnessmix/harness/accounts/list", {});
180
180
  sendRequest.mockResolvedValueOnce({ accounts: [{ ...account, token: "private" }] });
181
181
  await expect(client?.listHarnessAccounts?.()).rejects.toThrow();
182
182
  });
@@ -221,7 +221,7 @@ describe("Renderer fixed Model request client", () => {
221
221
  .mockResolvedValueOnce({
222
222
  owner: "external",
223
223
  harnessId: "pi",
224
- transportModelId: "codexhost/pi-native",
224
+ transportModelId: "harnessmix/pi-native",
225
225
  effectiveModel: model,
226
226
  effectiveThinkingOptionId: high,
227
227
  availableThinkingOptions: thinkingOptions,
@@ -264,7 +264,7 @@ describe("Renderer fixed Model request client", () => {
264
264
  updateAvailable: true,
265
265
  installationAvailable: true,
266
266
  releaseNotes: "Safer updates",
267
- releaseNotesUrl: "https://github.com/BytePioneer-AI/codex-host/releases/tag/v1.2.3",
267
+ releaseNotesUrl: "https://github.com/emo-xiaoyu/harness-mix/releases/tag/v1.2.3",
268
268
  status: null,
269
269
  error: null,
270
270
  })
@@ -299,6 +299,7 @@ describe("Renderer fixed Model request client", () => {
299
299
  "inspectStorage",
300
300
  "inspectThread",
301
301
  "inspectThreadCommands",
302
+ "inspectThreadTeam",
302
303
  "inspectThreadUsage",
303
304
  "installHarness",
304
305
  "integrationCatalog",
@@ -496,9 +497,9 @@ describe("Renderer fixed Model request client", () => {
496
497
  await client.importHarnessSession({ harnessId: piHarnessId, nativeSessionId: "native-1" }),
497
498
  ).toEqual({ threadId: "thread-1" });
498
499
  expect(sendRequest.mock.calls).toEqual([
499
- ["codexhost/harness/session-import/sources", {}],
500
- ["codexhost/harness/session-import/list", { harnessId: "pi" }],
501
- ["codexhost/harness/session-import/import", { harnessId: "pi", nativeSessionId: "native-1" }],
500
+ ["harnessmix/harness/session-import/sources", {}],
501
+ ["harnessmix/harness/session-import/list", { harnessId: "pi" }],
502
+ ["harnessmix/harness/session-import/import", { harnessId: "pi", nativeSessionId: "native-1" }],
502
503
  ]);
503
504
  for (const extra of [{ cwd: "C:\\injected" }, { locator: { sessionFile: "/injected" } }]) {
504
505
  await expect(
@@ -573,7 +574,7 @@ describe("Renderer fixed Model request client", () => {
573
574
  limit: 20,
574
575
  }),
575
576
  ).rejects.toBe(failure);
576
- expect(sendRequest).toHaveBeenCalledWith("codexhost/harness/session-import/list", {
577
+ expect(sendRequest).toHaveBeenCalledWith("harnessmix/harness/session-import/list", {
577
578
  harnessId: "pi",
578
579
  query: "needle",
579
580
  offset: 40,
@@ -649,7 +650,7 @@ describe("Renderer fixed Model request client", () => {
649
650
  const sendRequest = vi.fn(async () => ({
650
651
  owner: "external",
651
652
  harnessId: "pi",
652
- transportModelId: "codexhost/pi-native",
653
+ transportModelId: "harnessmix/pi-native",
653
654
  locked: true,
654
655
  nativeSessionRef: { nativeSessionId: "private" },
655
656
  }));
@@ -686,7 +687,7 @@ describe("Renderer fixed Model request client", () => {
686
687
  updateAvailable: true,
687
688
  installationAvailable: true,
688
689
  releaseNotes: "Safer updates",
689
- releaseNotesUrl: "https://github.com/BytePioneer-AI/codex-host/releases/tag/v1.2.3",
690
+ releaseNotesUrl: "https://github.com/emo-xiaoyu/harness-mix/releases/tag/v1.2.3",
690
691
  status: null,
691
692
  error: null,
692
693
  artifactUrl: "https://example.com/update.exe",
@@ -2,7 +2,7 @@ import {
2
2
  harnessModelCatalogSchema,
3
3
  harnessModelRefSchema,
4
4
  harnessThinkingOptionIdSchema,
5
- } from "@codexhost/shared-contracts";
5
+ } from "@harnessmix/shared-contracts";
6
6
  import { describe, expect, it } from "vitest";
7
7
 
8
8
  import {
@@ -1,4 +1,4 @@
1
- import { hostThreadIdSchema } from "@codexhost/shared-contracts";
1
+ import { hostThreadIdSchema } from "@harnessmix/shared-contracts";
2
2
  import { describe, expect, it, vi } from "vitest";
3
3
 
4
4
  import { createRendererModelClient, THREAD_INSPECT_METHOD } from "../src/renderer-model-client.js";
@@ -8,7 +8,7 @@ const nativeThread = { id: threadId, modelProvider: "custom", cliVersion: "0.151
8
8
  const unsupported = {
9
9
  code: -32600,
10
10
  message:
11
- "Invalid request: unknown variant `codexhost/thread/inspect`, expected one of `thread/read`",
11
+ "Invalid request: unknown variant `harnessmix/thread/inspect`, expected one of `thread/read`",
12
12
  };
13
13
 
14
14
  function setup(error: unknown = unsupported, response: unknown = { thread: nativeThread }) {
@@ -21,7 +21,7 @@ function setup(error: unknown = unsupported, response: unknown = { thread: nativ
21
21
  return { client, sendRequest };
22
22
  }
23
23
 
24
- describe("native Thread ownership without the codexhost inspection API", () => {
24
+ describe("native Thread ownership without the harnessmix inspection API", () => {
25
25
  it.each([unsupported, { code: -32601, message: "Method not found" }])(
26
26
  "verifies the native Thread on the same connection when inspection is unsupported: %j",
27
27
  async (error) => {
@@ -42,7 +42,7 @@ describe("native Thread ownership without the codexhost inspection API", () => {
42
42
  new Error("Method not found"),
43
43
  { code: -32000, message: "request timed out" },
44
44
  { code: -32600, message: "Invalid request: invalid params" },
45
- { code: -32600, message: "Invalid request: unknown variant `codexhost/thread/usage/inspect`" },
45
+ { code: -32600, message: "Invalid request: unknown variant `harnessmix/thread/usage/inspect`" },
46
46
  ])("does not bypass an ordinary inspection failure: %j", async (error) => {
47
47
  const { client, sendRequest } = setup(error);
48
48
  await expect(client.inspectThread({ threadId })).rejects.toBe(error);
@@ -51,8 +51,8 @@ describe("native Thread ownership without the codexhost inspection API", () => {
51
51
 
52
52
  it.each([
53
53
  { thread: { ...nativeThread, id: "another-thread" } },
54
- { thread: { ...nativeThread, modelProvider: "codexhost" } },
55
- { thread: { ...nativeThread, cliVersion: "codexhost" } },
54
+ { thread: { ...nativeThread, modelProvider: "harnessmix" } },
55
+ { thread: { ...nativeThread, cliVersion: "harnessmix" } },
56
56
  { thread: { id: threadId } },
57
57
  { thread: { ...nativeThread, modelProvider: "" } },
58
58
  { thread: { ...nativeThread, cliVersion: "" } },
@@ -4,7 +4,7 @@ import {
4
4
  harnessPermissionModeCatalogSchema,
5
5
  harnessPermissionModeIdSchema,
6
6
  harnessThinkingOptionIdSchema,
7
- } from "@codexhost/shared-contracts";
7
+ } from "@harnessmix/shared-contracts";
8
8
  import { describe, expect, it } from "vitest";
9
9
 
10
10
  import {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  harnessPermissionModeCatalogSchema,
3
3
  harnessPermissionModeIdSchema,
4
- } from "@codexhost/shared-contracts";
4
+ } from "@harnessmix/shared-contracts";
5
5
  import { describe, expect, it } from "vitest";
6
6
 
7
7
  import {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  harnessPermissionModeCatalogSchema,
3
3
  harnessPermissionModeIdSchema,
4
- } from "@codexhost/shared-contracts";
4
+ } from "@harnessmix/shared-contracts";
5
5
  import { describe, expect, it } from "vitest";
6
6
 
7
7
  import {
@@ -0,0 +1,80 @@
1
+ import { harnessIdSchema, hostThreadIdSchema } from "@harnessmix/shared-contracts";
2
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
3
+
4
+ import {
5
+ createRendererModelClient,
6
+ HARNESS_INSTALL_METHOD,
7
+ THREAD_INSPECT_METHOD,
8
+ } from "../src/renderer-model-client.js";
9
+ import {
10
+ RENDERER_REQUEST_TIMEOUT_DEFAULT_MS,
11
+ RendererRequestTimeoutError,
12
+ } from "../src/renderer-request-sender.js";
13
+
14
+ const harnessId = harnessIdSchema.parse("pi");
15
+ const threadId = hostThreadIdSchema.parse("thread-timeout");
16
+
17
+ function pendingSendRequest(): ReturnType<typeof vi.fn> {
18
+ return vi.fn(() => new Promise(() => undefined));
19
+ }
20
+
21
+ describe("Renderer request timeout", () => {
22
+ beforeEach(() => {
23
+ vi.useFakeTimers();
24
+ });
25
+ afterEach(() => {
26
+ vi.useRealTimers();
27
+ });
28
+
29
+ it("rejects a never-settling read with a timeout error instead of pending forever", async () => {
30
+ const sendRequest = pendingSendRequest();
31
+ const client = createRendererModelClient([{ sendRequest }]);
32
+ expect(client).not.toBeNull();
33
+
34
+ const request = client!.inspectThread({ threadId });
35
+ const expectation = expect(request).rejects.toBeInstanceOf(RendererRequestTimeoutError);
36
+ await vi.advanceTimersByTimeAsync(RENDERER_REQUEST_TIMEOUT_DEFAULT_MS);
37
+ await expectation;
38
+ expect(sendRequest).toHaveBeenCalledTimes(1);
39
+ expect(sendRequest).toHaveBeenCalledWith(THREAD_INSPECT_METHOD, { threadId });
40
+ });
41
+
42
+ it("does not cache a timed-out method as unsupported; the next call retries", async () => {
43
+ let calls = 0;
44
+ const sendRequest = vi.fn(() => {
45
+ calls += 1;
46
+ return calls === 1
47
+ ? new Promise(() => undefined)
48
+ : Promise.resolve({ owner: "codex", locked: true });
49
+ });
50
+ const client = createRendererModelClient([{ sendRequest }]);
51
+
52
+ const first = client!.inspectThread({ threadId });
53
+ const expectation = expect(first).rejects.toBeInstanceOf(RendererRequestTimeoutError);
54
+ await vi.advanceTimersByTimeAsync(RENDERER_REQUEST_TIMEOUT_DEFAULT_MS);
55
+ await expectation;
56
+
57
+ await expect(client!.inspectThread({ threadId })).resolves.toMatchObject({
58
+ owner: "codex",
59
+ locked: true,
60
+ });
61
+ expect(sendRequest).toHaveBeenCalledTimes(2);
62
+ });
63
+
64
+ it("lets exempt long-running mutations outlive the default timeout", async () => {
65
+ let settle: ((value: unknown) => void) | null = null;
66
+ const sendRequest = vi.fn(
67
+ () =>
68
+ new Promise((resolve) => {
69
+ settle = resolve;
70
+ }),
71
+ );
72
+ const client = createRendererModelClient([{ sendRequest }]);
73
+
74
+ const request = client!.installHarness!({ harnessId });
75
+ await vi.advanceTimersByTimeAsync(RENDERER_REQUEST_TIMEOUT_DEFAULT_MS * 3);
76
+ expect(sendRequest).toHaveBeenCalledWith(HARNESS_INSTALL_METHOD, { harnessId });
77
+ settle?.({ status: "ok" });
78
+ await expect(request).resolves.toMatchObject({ status: "ok" });
79
+ });
80
+ });
@@ -1,5 +1,5 @@
1
- import { harnessIdSchema } from "@codexhost/shared-contracts";
2
- import { hostThreadIdSchema, type UpdateCheckResult } from "@codexhost/shared-contracts";
1
+ import { harnessIdSchema } from "@harnessmix/shared-contracts";
2
+ import { hostThreadIdSchema, type UpdateCheckResult } from "@harnessmix/shared-contracts";
3
3
  import { afterEach, describe, expect, it, vi } from "vitest";
4
4
 
5
5
  const triggerRefresh = vi.fn(() => true);
@@ -3,7 +3,7 @@ import {
3
3
  type HostThreadId,
4
4
  type ThreadOwnershipListParams,
5
5
  type ThreadOwnershipListResult,
6
- } from "@codexhost/shared-contracts";
6
+ } from "@harnessmix/shared-contracts";
7
7
  import { describe, expect, it, vi } from "vitest";
8
8
 
9
9
  import type { RendererAgent } from "../src/agent-selection-state.js";
@@ -172,7 +172,14 @@ describe("Renderer sidebar Agent ownership", () => {
172
172
  threadIdFromSidebarRowElement(fiberRow(["thread-1"], { matchingAttributes: false })),
173
173
  ).toBeNull();
174
174
  expect(threadIdFromSidebarRowElement(fiberRow(["thread-1", "thread-2"]))).toBeNull();
175
- expect(threadIdFromSidebarRowElement(fiberRow(["thread-1"], { fiberCount: 2 }))).toBeNull();
175
+ // Multiple Fiber roots that agree on the row identity still resolve; only
176
+ // genuine disagreement stays fail-closed.
177
+ expect(threadIdFromSidebarRowElement(fiberRow(["thread-1"], { fiberCount: 2 }))).toBe(
178
+ "thread-1",
179
+ );
180
+ expect(
181
+ threadIdFromSidebarRowElement(fiberRow(["thread-1", "thread-2"], { fiberCount: 2 })),
182
+ ).toBeNull();
176
183
  });
177
184
 
178
185
  it("uses a mounted draft Agent before querying ownership", async () => {
@@ -402,7 +409,7 @@ describe("Renderer sidebar Agent ownership", () => {
402
409
  vi
403
410
  .fn()
404
411
  .mockRejectedValue(
405
- new RendererMethodUnavailableError("codexhost/thread/ownership/list", { code: -32601 }),
412
+ new RendererMethodUnavailableError("harnessmix/thread/ownership/list", { code: -32601 }),
406
413
  ),
407
414
  );
408
415
  const control = installRendererSidebarAgentIcons({ getClient: () => client, dom });
@@ -3,7 +3,7 @@ import {
3
3
  hostThreadIdSchema,
4
4
  harnessModelRefSchema,
5
5
  type HarnessInspection,
6
- } from "@codexhost/shared-contracts";
6
+ } from "@harnessmix/shared-contracts";
7
7
  import { describe, expect, it, vi } from "vitest";
8
8
  import {
9
9
  createRendererModelClient,
@@ -5,7 +5,7 @@ import {
5
5
  type HarnessSessionListParams,
6
6
  type UpdateCheckResult,
7
7
  type UpdateStatus,
8
- } from "@codexhost/shared-contracts";
8
+ } from "@harnessmix/shared-contracts";
9
9
  import { describe, expect, it, vi } from "vitest";
10
10
 
11
11
  vi.mock("../../src/settings/icons.js", () => ({
@@ -18,10 +18,10 @@ import { mountHarnessAccounts } from "../../src/settings/harness-accounts.js";
18
18
  import { rendererSettingsMessages } from "../../src/settings/localization.js";
19
19
  import { createRendererModelClient } from "../../src/renderer-model-client.js";
20
20
  import { RendererSessionImportUnavailableError } from "../../src/renderer-session-import-client.js";
21
- const HARNESS_SESSION_LIST_METHOD = "codexhost/harness/session-import/list";
22
- const HARNESS_SESSION_IMPORT_METHOD = "codexhost/harness/session-import/import";
21
+ const HARNESS_SESSION_LIST_METHOD = "harnessmix/harness/session-import/list";
22
+ const HARNESS_SESSION_IMPORT_METHOD = "harnessmix/harness/session-import/import";
23
23
  import {
24
- CODEXHOST_RELEASES_LATEST_URL,
24
+ HARNESSMIX_RELEASES_LATEST_URL,
25
25
  createDefaultRendererSettingsPages,
26
26
  } from "../../src/settings/pages.js";
27
27
  import type {
@@ -1110,7 +1110,7 @@ describe("Renderer Updates page", () => {
1110
1110
  visibleNotesText(candidate).includes("Download from GitHub Releases"),
1111
1111
  );
1112
1112
  if (!releaseLink) throw new Error("GitHub Releases link is not rendered");
1113
- expect(releaseLink.href).toBe(CODEXHOST_RELEASES_LATEST_URL);
1113
+ expect(releaseLink.href).toBe(HARNESSMIX_RELEASES_LATEST_URL);
1114
1114
  expect(releaseLink.target).toBe("_blank");
1115
1115
  expect(releaseLink.rel).toBe("noopener noreferrer");
1116
1116
 
@@ -64,7 +64,7 @@ describe("Release notes Markdown", () => {
64
64
  it("renders the current GitHub Release subset as structured elements", () => {
65
65
  const root = render(
66
66
  [
67
- "codexhost 是一个将 Pi 和 Claude Code 接入 Codex Desktop 的跨平台 Host。",
67
+ "harnessmix 是一个将 Pi 和 Claude Code 接入 Codex Desktop 的跨平台 Host。",
68
68
  "",
69
69
  "## 本次发布",
70
70
  "",
@@ -76,8 +76,8 @@ describe("Release notes Markdown", () => {
76
76
  "### npm",
77
77
  "",
78
78
  "```bash",
79
- "npm install -g @codexhost/cli",
80
- "codexhost",
79
+ "npm install -g @harnessmix/cli",
80
+ "harnessmix",
81
81
  "```",
82
82
  ].join("\n"),
83
83
  );
@@ -94,13 +94,13 @@ describe("Release notes Markdown", () => {
94
94
  expect(visibleText(root)).toContain("本次发布");
95
95
  expect(visibleText(root)).not.toContain("##");
96
96
  expect(visibleText(root)).not.toContain("- 新增");
97
- expect(visibleText(root)).toContain("npm install -g @codexhost/cli");
97
+ expect(visibleText(root)).toContain("npm install -g @harnessmix/cli");
98
98
 
99
99
  const list = descendants(root).find((element) => element.tagName === "ul");
100
100
  expect(list?.children).toHaveLength(2);
101
101
  const code = descendants(root).find((element) => element.tagName === "code");
102
102
  expect(code?.className).toBe("language-bash");
103
- expect(code?.textContent).toBe("npm install -g @codexhost/cli\ncodexhost");
103
+ expect(code?.textContent).toBe("npm install -g @harnessmix/cli\nharnessmix");
104
104
  });
105
105
 
106
106
  it("preserves authored line breaks within bilingual paragraphs", () => {
@@ -119,22 +119,22 @@ describe("Release notes Markdown", () => {
119
119
  it("renders inline code, emphasis, links, and ordered lists", () => {
120
120
  const root = render(
121
121
  [
122
- "Use `codexhost` and **restart** after install.",
122
+ "Use `harnessmix` and **restart** after install.",
123
123
  "",
124
124
  "1. Download the package",
125
- "2. Open [Releases](https://github.com/BytePioneer-AI/codex-host/releases)",
125
+ "2. Open [Releases](https://github.com/emo-xiaoyu/harness-mix/releases)",
126
126
  ].join("\n"),
127
127
  );
128
128
 
129
129
  expect(root.children.map((child) => (child as FakeElement).tagName)).toEqual(["p", "ol"]);
130
130
  const code = descendants(root).find((element) => element.tagName === "code");
131
- expect(code?.textContent).toBe("codexhost");
131
+ expect(code?.textContent).toBe("harnessmix");
132
132
  const strong = descendants(root).find((element) => element.tagName === "strong");
133
133
  expect(strong?.textContent).toBe("restart");
134
134
  const link = descendants(root).find((element) => element.tagName === "a");
135
135
  expect(link?.textContent).toBe("Releases");
136
136
  expect(link?.attributes.get("href")).toBe(
137
- "https://github.com/BytePioneer-AI/codex-host/releases",
137
+ "https://github.com/emo-xiaoyu/harness-mix/releases",
138
138
  );
139
139
  expect(link?.attributes.get("target")).toBe("_blank");
140
140
  expect(link?.attributes.get("rel")).toBe("noopener noreferrer");
@@ -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 {
@@ -433,7 +433,7 @@ describe("current Codex Renderer Agent adapter", () => {
433
433
  };
434
434
  const listeners = new Map<string, EventListener>();
435
435
  const fakeWindow = {
436
- __codexhostDraftPrewarmPolicyV1: policy,
436
+ __harnessmixDraftPrewarmPolicyV1: policy,
437
437
  dispatchEvent: vi.fn(),
438
438
  addEventListener: vi.fn((type: string, listener: EventListener) => {
439
439
  listeners.set(type, listener);
@@ -465,7 +465,7 @@ describe("current Codex Renderer Agent adapter", () => {
465
465
  try {
466
466
  const adapter = installCurrentRendererAdapter();
467
467
  expect(adapter.status).toMatchObject({ state: "ready", reason: "ready" });
468
- expect("__codexhostMainProcessTitlePolicyV1" in fakeWindow).toBe(false);
468
+ expect("__harnessmixMainProcessTitlePolicyV1" in fakeWindow).toBe(false);
469
469
  adapter.dispose();
470
470
  } finally {
471
471
  for (const [name, descriptor] of [
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- export declare const codexhostErrorSchema: z.ZodObject<{
2
+ export declare const harnessmixErrorSchema: z.ZodObject<{
3
3
  code: z.ZodString;
4
4
  message: z.ZodString;
5
5
  retryable: z.ZodBoolean;
@@ -8,7 +8,7 @@ export declare const codexhostErrorSchema: z.ZodObject<{
8
8
  durationMs: z.ZodOptional<z.ZodNumber>;
9
9
  stderrTail: z.ZodOptional<z.ZodString>;
10
10
  }, z.core.$strict>;
11
- export type CodexhostError = Omit<z.infer<typeof codexhostErrorSchema>, "diagnostic" | "stage" | "durationMs" | "stderrTail"> & {
11
+ export type HarnessMixError = Omit<z.infer<typeof harnessmixErrorSchema>, "diagnostic" | "stage" | "durationMs" | "stderrTail"> & {
12
12
  diagnostic?: string;
13
13
  stage?: string;
14
14
  durationMs?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,oBAAoB;;;;;;;;kBAU2D,CAAC;AAE7F,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,EACpC,YAAY,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,CACrD,GAAG;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,qBAAqB;;;;;;;;kBAU0D,CAAC;AAE7F,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,EACrC,YAAY,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,CACrD,GAAG;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { rejectExplicitUndefined } from "./json-value.js";
3
- export const codexhostErrorSchema = z
3
+ export const harnessmixErrorSchema = z
4
4
  .strictObject({
5
5
  code: z.string().min(1),
6
6
  message: z.string().min(1),
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,YAAY,CAAC;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC;KACD,WAAW,CAAC,uBAAuB,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,YAAY,CAAC;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC;KACD,WAAW,CAAC,uBAAuB,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC"}
@@ -67,6 +67,13 @@ export declare const harnessSessionCapabilitiesSchema: z.ZodObject<{
67
67
  forkAcrossCwd: z.ZodBoolean;
68
68
  rollbackLastTurn: z.ZodBoolean;
69
69
  }, z.core.$strict>;
70
+ workspace: z.ZodOptional<z.ZodObject<{
71
+ git: z.ZodLiteral<true>;
72
+ worktree: z.ZodLiteral<true>;
73
+ finalDiff: z.ZodLiteral<true>;
74
+ nativeDiff: z.ZodBoolean;
75
+ nativePatch: z.ZodBoolean;
76
+ }, z.core.$strict>>;
70
77
  subagents: z.ZodOptional<z.ZodObject<{
71
78
  observe: z.ZodBoolean;
72
79
  readTranscript: z.ZodBoolean;
@@ -150,6 +157,13 @@ export declare const harnessInspectionSchema: z.ZodUnion<readonly [z.ZodObject<{
150
157
  forkAcrossCwd: z.ZodBoolean;
151
158
  rollbackLastTurn: z.ZodBoolean;
152
159
  }, z.core.$strict>;
160
+ workspace: z.ZodOptional<z.ZodObject<{
161
+ git: z.ZodLiteral<true>;
162
+ worktree: z.ZodLiteral<true>;
163
+ finalDiff: z.ZodLiteral<true>;
164
+ nativeDiff: z.ZodBoolean;
165
+ nativePatch: z.ZodBoolean;
166
+ }, z.core.$strict>>;
153
167
  subagents: z.ZodOptional<z.ZodObject<{
154
168
  observe: z.ZodBoolean;
155
169
  readTranscript: z.ZodBoolean;
@@ -229,6 +243,32 @@ export declare const threadInspectionSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
229
243
  forkAcrossCwd: z.ZodBoolean;
230
244
  rollbackLastTurn: z.ZodBoolean;
231
245
  }, z.core.$strict>;
246
+ workspace: z.ZodOptional<z.ZodObject<{
247
+ hostManaged: z.ZodLiteral<true>;
248
+ git: z.ZodObject<{
249
+ available: z.ZodBoolean;
250
+ root: z.ZodOptional<z.ZodString>;
251
+ head: z.ZodOptional<z.ZodString>;
252
+ branch: z.ZodOptional<z.ZodNullable<z.ZodString>>;
253
+ dirty: z.ZodOptional<z.ZodBoolean>;
254
+ reason: z.ZodOptional<z.ZodEnum<{
255
+ "not-a-git-repository": "not-a-git-repository";
256
+ "git-unavailable": "git-unavailable";
257
+ }>>;
258
+ }, z.core.$strict>;
259
+ worktree: z.ZodObject<{
260
+ available: z.ZodBoolean;
261
+ active: z.ZodBoolean;
262
+ branch: z.ZodOptional<z.ZodString>;
263
+ root: z.ZodOptional<z.ZodString>;
264
+ }, z.core.$strict>;
265
+ finalDiff: z.ZodObject<{
266
+ available: z.ZodLiteral<true>;
267
+ source: z.ZodLiteral<"snapshot">;
268
+ }, z.core.$strict>;
269
+ nativeDiff: z.ZodBoolean;
270
+ nativePatch: z.ZodBoolean;
271
+ }, z.core.$strict>>;
232
272
  usage: z.ZodOptional<z.ZodObject<{
233
273
  inputTokens: z.ZodOptional<z.ZodNumber>;
234
274
  cachedInputTokens: z.ZodOptional<z.ZodNumber>;
@@ -1 +1 @@
1
- {"version":3,"file":"harness-models.d.ts","sourceRoot":"","sources":["../src/harness-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,qCAAqC,MAAM,CAAC;AACzD,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAMpD,eAAO,MAAM,uBAAuB,6DAGL,CAAC;AAEhC,eAAO,MAAM,qBAAqB;;kBAIvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,6BAA6B,mEAGL,CAAC;AAEtC,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,eAAO,MAAM,+BAA+B,aAE3C,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;kBAK7B,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,kBAAkB;;;;;;;kBAOpB,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAkB9D,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;kBAqDlC,CAAC;AAEL,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAc5E,eAAO,MAAM,gCAAgC;;;EAA+B,CAAC;AAE7E,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F,wBAAgB,2BAA2B,CAAC,aAAa,EAAE;IACzD,mBAAmB,CAAC,EAAE,0BAA0B,CAAC;CAClD,GAAG,OAAO,CAEV;AAED,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;kBAyBlC,CAAC;AAEZ,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F,eAAO,MAAM,+BAA+B;;;;;;;;;;;kBAqBxC,CAAC;AAEL,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,eAAO,MAAM,gCAAgC;;;;;;;;;;;kBAAkC,CAAC;AAChF,MAAM,MAAM,0BAA0B,GAAG,yBAAyB,CAAC;AAEnE,eAAO,MAAM,4BAA4B;;kBAI9B,CAAC;AAEZ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AA+BlF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAGlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,0BAA0B;;;;kBAM5B,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,4BAA4B;;kBAI9B,CAAC;AAEZ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,eAAO,MAAM,4BAA4B,iCAAwB,CAAC;AAElE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,eAAO,MAAM,6BAA6B;;;;;kBAK/B,CAAC;AAEZ,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,eAAO,MAAM,gCAAgC;;;kBAKlC,CAAC;AAEZ,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F,eAAO,MAAM,4BAA4B;;kBAI9B,CAAC;AAEZ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AA2BlF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAGjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,+BAA+B;;kBAiBxC,CAAC;AAEL,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAiBxF,eAAO,MAAM,qBAAqB;;;;;;;6BAGhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,+BAA+B;;;;;;;;;kBAiBxC,CAAC;AAEL,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC"}
1
+ {"version":3,"file":"harness-models.d.ts","sourceRoot":"","sources":["../src/harness-models.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { codexhostErrorSchema } from "./errors.js";
2
+ import { harnessmixErrorSchema } from "./errors.js";
3
3
  import { harnessPermissionModeCatalogSchema, harnessPermissionModeIdSchema, } from "./harness-permission-modes.js";
4
4
  import { harnessIdSchema, hostThreadIdSchema } from "./ids.js";
5
5
  import { accountCreditsSnapshotSchema, threadUsageSnapshotSchema, } from "./thread-usage.js";
@@ -133,6 +133,16 @@ export const harnessSessionCapabilitiesSchema = z
133
133
  })
134
134
  .strict(),
135
135
  history: harnessHistoryCapabilitiesSchema,
136
+ workspace: z
137
+ .object({
138
+ git: z.literal(true),
139
+ worktree: z.literal(true),
140
+ finalDiff: z.literal(true),
141
+ nativeDiff: z.boolean(),
142
+ nativePatch: z.boolean(),
143
+ })
144
+ .strict()
145
+ .optional(),
136
146
  subagents: z
137
147
  .object({
138
148
  observe: z.boolean(),
@@ -198,7 +208,7 @@ const readyHarnessInspectionSchema = z
198
208
  const failedHarnessInspectionSchema = z
199
209
  .object({
200
210
  status: z.enum(["notInstalled", "unavailable", "error"]),
201
- error: codexhostErrorSchema,
211
+ error: harnessmixErrorSchema,
202
212
  })
203
213
  .strict();
204
214
  export const harnessInspectionSchema = z.union([
@@ -253,6 +263,17 @@ const externalThreadInspectionSchema = z
253
263
  availableThinkingOptions: harnessThinkingOptionsSchema.optional(),
254
264
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
255
265
  history: harnessHistoryCapabilitiesSchema,
266
+ workspace: z
267
+ .object({
268
+ hostManaged: z.literal(true),
269
+ git: z.object({ available: z.boolean(), root: z.string().optional(), head: z.string().optional(), branch: z.string().nullable().optional(), dirty: z.boolean().optional(), reason: z.enum(["not-a-git-repository", "git-unavailable"]).optional() }).strict(),
270
+ worktree: z.object({ available: z.boolean(), active: z.boolean(), branch: z.string().optional(), root: z.string().optional() }).strict(),
271
+ finalDiff: z.object({ available: z.literal(true), source: z.literal("snapshot") }).strict(),
272
+ nativeDiff: z.boolean(),
273
+ nativePatch: z.boolean(),
274
+ })
275
+ .strict()
276
+ .optional(),
256
277
  usage: threadUsageSnapshotSchema.optional(),
257
278
  accountCredits: accountCreditsSnapshotSchema.optional(),
258
279
  locked: z.literal(true),