harness-mix 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (632) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +14 -0
  3. package/README.md +184 -0
  4. package/Start-Codex.cmd +5 -0
  5. package/config/codex-desktop-compatibility.json +23 -0
  6. package/docs/chatgpt-web-sidebar.md +27 -0
  7. package/docs/harness-management.md +41 -0
  8. package/docs/images/harness-mix-home.png +0 -0
  9. package/docs/images/harness-mix-session.png +0 -0
  10. package/docs/multi-agent-collaboration.md +89 -0
  11. package/docs/native-codex.md +72 -0
  12. package/licenses/codex-host-MIT.txt +21 -0
  13. package/output/native-build/desktop-controller.mjs +1460 -0
  14. package/output/native-build/harness-mix-appx.exe +0 -0
  15. package/output/native-build/harness-mix-shim.exe +0 -0
  16. package/output/native-build/renderer-extension.js +28884 -0
  17. package/package.json +142 -0
  18. package/scripts/acp-capabilities-probe.cjs +100 -0
  19. package/scripts/adapters-test.cjs +17 -0
  20. package/scripts/antigravity-adapter-test.cjs +174 -0
  21. package/scripts/architecture-test.cjs +62 -0
  22. package/scripts/build-native.cjs +46 -0
  23. package/scripts/catalog-test.cjs +25 -0
  24. package/scripts/cdp-eval.cjs +40 -0
  25. package/scripts/cdp-watch.cjs +36 -0
  26. package/scripts/check.cjs +23 -0
  27. package/scripts/codex-adapter-test.cjs +83 -0
  28. package/scripts/collaboration-recovery-test.cjs +91 -0
  29. package/scripts/collaboration-test.cjs +102 -0
  30. package/scripts/collaboration-ui-smoke.cjs +52 -0
  31. package/scripts/concurrency-layers-test.cjs +179 -0
  32. package/scripts/contracts-test.cjs +105 -0
  33. package/scripts/core-concurrency-test.cjs +103 -0
  34. package/scripts/core-replay-test.cjs +179 -0
  35. package/scripts/core-runtime-test.cjs +104 -0
  36. package/scripts/core-services-test.cjs +50 -0
  37. package/scripts/determinism-test.cjs +36 -0
  38. package/scripts/docs-command-test.cjs +49 -0
  39. package/scripts/dsh-adapter-test.cjs +87 -0
  40. package/scripts/dsh-native.cjs +9 -0
  41. package/scripts/dsh-native.cmd +2 -0
  42. package/scripts/e2e-codex.cjs +82 -0
  43. package/scripts/e2e-collaboration.cjs +58 -0
  44. package/scripts/e2e-core-files.cjs +58 -0
  45. package/scripts/e2e-core-fork.cjs +49 -0
  46. package/scripts/e2e-core-resume.cjs +49 -0
  47. package/scripts/e2e-delegate.cjs +38 -0
  48. package/scripts/e2e-dsh.cjs +23 -0
  49. package/scripts/e2e-native-commands.cjs +54 -0
  50. package/scripts/e2e-native-host.cjs +144 -0
  51. package/scripts/e2e-openclaw-image.cjs +59 -0
  52. package/scripts/e2e-openclaw.cjs +21 -0
  53. package/scripts/e2e-pi.cjs +23 -0
  54. package/scripts/e2e-shadow.cjs +52 -0
  55. package/scripts/fixture-capture.cjs +103 -0
  56. package/scripts/git-test.cjs +33 -0
  57. package/scripts/launch-codex.cjs +5 -0
  58. package/scripts/native-compatibility-test.cjs +42 -0
  59. package/scripts/native-config-test.cjs +25 -0
  60. package/scripts/native-file-change-test.cjs +94 -0
  61. package/scripts/native-host.cjs +8 -0
  62. package/scripts/native-images-test.cjs +56 -0
  63. package/scripts/native-protocol-test.cjs +233 -0
  64. package/scripts/native-rollback-test.cjs +46 -0
  65. package/scripts/native-sidebar-test.cjs +88 -0
  66. package/scripts/native-ui-smoke.cjs +94 -0
  67. package/scripts/native-updater-test.cjs +100 -0
  68. package/scripts/native-vendor-adapters-test.cjs +40 -0
  69. package/scripts/openclaw-acp-probe.cjs +39 -0
  70. package/scripts/openclaw-adapter-test.cjs +180 -0
  71. package/scripts/openclaw-models-probe.cjs +13 -0
  72. package/scripts/projector-test.cjs +144 -0
  73. package/scripts/sequence-test.cjs +57 -0
  74. package/scripts/shadow-test.cjs +154 -0
  75. package/scripts/support/legacy-projection.cjs +95 -0
  76. package/scripts/support/legacy-transcript.cjs +48 -0
  77. package/scripts/support/parity-observer.cjs +27 -0
  78. package/scripts/support/shadow-comparator.cjs +62 -0
  79. package/scripts/support/shadow.cjs +114 -0
  80. package/scripts/switch-harness-test.cjs +145 -0
  81. package/scripts/tool-concurrency-regression-test.cjs +118 -0
  82. package/scripts/transcript-test.cjs +24 -0
  83. package/scripts/turn-manager-test.cjs +91 -0
  84. package/scripts/workspace-test.cjs +98 -0
  85. package/src/assets/brand-harness-mix.png +0 -0
  86. package/src/assets/icons/activity-compact.svg +1 -0
  87. package/src/assets/icons/activity-edit.svg +1 -0
  88. package/src/assets/icons/activity-terminal.svg +1 -0
  89. package/src/assets/icons/antigravity-color.svg +1 -0
  90. package/src/assets/icons/claude-color.svg +1 -0
  91. package/src/assets/icons/codex-color.svg +1 -0
  92. package/src/assets/icons/codex-harness.svg +1 -0
  93. package/src/assets/icons/commands.svg +1 -0
  94. package/src/assets/icons/deepseek-color.svg +1 -0
  95. package/src/assets/icons/grok-color.svg +1 -0
  96. package/src/assets/icons/hermes-color.svg +1 -0
  97. package/src/assets/icons/home-chat.svg +1 -0
  98. package/src/assets/icons/home-folder.svg +1 -0
  99. package/src/assets/icons/model-astra.svg +1 -0
  100. package/src/assets/icons/model-claude.svg +1 -0
  101. package/src/assets/icons/model-deepseek.svg +1 -0
  102. package/src/assets/icons/model-gemini.svg +1 -0
  103. package/src/assets/icons/model-hunyuan.svg +1 -0
  104. package/src/assets/icons/model-kimi.svg +1 -0
  105. package/src/assets/icons/model-minimax.svg +1 -0
  106. package/src/assets/icons/model-openai.svg +1 -0
  107. package/src/assets/icons/model-qwen-color.svg +1 -0
  108. package/src/assets/icons/model-xiaomimimo.svg +1 -0
  109. package/src/assets/icons/model-zai.svg +1 -0
  110. package/src/assets/icons/omp-color.svg +1 -0
  111. package/src/assets/icons/openclaw-color.svg +1 -0
  112. package/src/assets/icons/opencode-color.svg +1 -0
  113. package/src/assets/icons/pi.svg +1 -0
  114. package/src/assets/icons/pinumber1_80899.svg +48 -0
  115. package/src/assets/icons/qoder-color.svg +1 -0
  116. package/src/assets/icons/thread-fork.svg +1 -0
  117. package/src/assets/icons/trae-color.svg +1 -0
  118. package/src/assets/icons/workbuddy-color.svg +1 -0
  119. package/src/assets/icons/zcode-color.svg +1 -0
  120. package/src/main/adapters/acp.js +171 -0
  121. package/src/main/adapters/antigravity.js +895 -0
  122. package/src/main/adapters/claude.js +399 -0
  123. package/src/main/adapters/codex-app-server.js +119 -0
  124. package/src/main/adapters/codex.js +547 -0
  125. package/src/main/adapters/dsh-web-host.js +207 -0
  126. package/src/main/adapters/dsh.js +415 -0
  127. package/src/main/adapters/grok.js +161 -0
  128. package/src/main/adapters/hermes.js +24 -0
  129. package/src/main/adapters/index.js +30 -0
  130. package/src/main/adapters/omp.js +12 -0
  131. package/src/main/adapters/openclaw-gateway.js +215 -0
  132. package/src/main/adapters/openclaw.js +337 -0
  133. package/src/main/adapters/opencode-server.js +72 -0
  134. package/src/main/adapters/opencode.js +166 -0
  135. package/src/main/adapters/pi-family.js +315 -0
  136. package/src/main/adapters/pi-usage.js +24 -0
  137. package/src/main/adapters/pi.js +10 -0
  138. package/src/main/adapters/qoder.js +35 -0
  139. package/src/main/adapters/trae.js +19 -0
  140. package/src/main/adapters/workbuddy.js +67 -0
  141. package/src/main/adapters/zcode.js +38 -0
  142. package/src/main/harness-adapter/contract-test.js +53 -0
  143. package/src/main/harness-adapter/contract.js +34 -0
  144. package/src/main/harness-adapter/event-normalizer.js +233 -0
  145. package/src/main/harness-adapter/fixture-recorder.js +56 -0
  146. package/src/main/harness-adapter/index.js +6 -0
  147. package/src/main/harness-adapter/manifest.js +44 -0
  148. package/src/main/host/collaboration-mcp.cjs +35 -0
  149. package/src/main/host/collaboration-pi.mjs +17 -0
  150. package/src/main/host/collaboration-tools.js +16 -0
  151. package/src/main/host/collaboration-worktree.js +82 -0
  152. package/src/main/host/collaboration.js +238 -0
  153. package/src/main/host/core-session.js +81 -0
  154. package/src/main/host/handoff.js +46 -0
  155. package/src/main/host/history-import.js +55 -0
  156. package/src/main/host/jsonl.js +115 -0
  157. package/src/main/host/native-history.js +74 -0
  158. package/src/main/host/runtime.js +927 -0
  159. package/src/main/host/session-history.js +63 -0
  160. package/src/main/host/store.js +42 -0
  161. package/src/main/native/compatibility.js +55 -0
  162. package/src/main/native/config.js +49 -0
  163. package/src/main/native/host.js +108 -0
  164. package/src/main/native/icons.js +101 -0
  165. package/src/main/native/input.js +43 -0
  166. package/src/main/native/launcher.js +100 -0
  167. package/src/main/native/protocol.js +552 -0
  168. package/src/main/native/rs/Cargo.lock +11 -0
  169. package/src/main/native/rs/Cargo.toml +9 -0
  170. package/src/main/native/rs/crates/appx/Cargo.toml +13 -0
  171. package/src/main/native/rs/crates/appx/src/main.rs +309 -0
  172. package/src/main/native/rs/crates/shim/Cargo.toml +10 -0
  173. package/src/main/native/rs/crates/shim/src/main.rs +207 -0
  174. package/src/main/native/thread-list.js +38 -0
  175. package/src/main/native/updater.js +102 -0
  176. package/src/main/native/usage.js +29 -0
  177. package/src/main/protocol-core/capability-manager.js +16 -0
  178. package/src/main/protocol-core/event-router.js +32 -0
  179. package/src/main/protocol-core/file-change-projector.js +45 -0
  180. package/src/main/protocol-core/index.js +8 -0
  181. package/src/main/protocol-core/interaction-router.js +30 -0
  182. package/src/main/protocol-core/projector.js +238 -0
  183. package/src/main/protocol-core/protocol-core.js +132 -0
  184. package/src/main/protocol-core/sequence-validator.js +44 -0
  185. package/src/main/protocol-core/thread-manager.js +50 -0
  186. package/src/main/protocol-core/turn-manager.js +63 -0
  187. package/src/main/shared-contracts/capability.js +35 -0
  188. package/src/main/shared-contracts/event.js +55 -0
  189. package/src/main/shared-contracts/ids.js +12 -0
  190. package/src/main/shared-contracts/index.js +11 -0
  191. package/src/main/shared-contracts/interaction.js +37 -0
  192. package/src/main/shared-contracts/item.js +50 -0
  193. package/src/main/shared-contracts/native-ref.js +24 -0
  194. package/src/main/shared-contracts/thread.js +36 -0
  195. package/src/main/shared-contracts/turn.js +54 -0
  196. package/src/main/workspace/core-review.js +53 -0
  197. package/src/main/workspace/diff.js +27 -0
  198. package/src/main/workspace/file-changes.js +21 -0
  199. package/src/main/workspace/files.js +65 -0
  200. package/src/main/workspace/git.js +73 -0
  201. package/src/main/workspace/ipc.js +50 -0
  202. package/src/main/workspace/review-controller.js +102 -0
  203. package/src/main/workspace/review.js +83 -0
  204. package/src/main/workspace/terminal.js +36 -0
  205. package/src/native-ui/LICENSE +21 -0
  206. package/src/native-ui/README.md +12 -0
  207. package/src/native-ui/desktop-control/dist/cdp-client.d.ts +53 -0
  208. package/src/native-ui/desktop-control/dist/cdp-client.d.ts.map +1 -0
  209. package/src/native-ui/desktop-control/dist/cdp-client.js +258 -0
  210. package/src/native-ui/desktop-control/dist/cdp-client.js.map +1 -0
  211. package/src/native-ui/desktop-control/dist/contract-audit.d.ts +73 -0
  212. package/src/native-ui/desktop-control/dist/contract-audit.d.ts.map +1 -0
  213. package/src/native-ui/desktop-control/dist/contract-audit.js +152 -0
  214. package/src/native-ui/desktop-control/dist/contract-audit.js.map +1 -0
  215. package/src/native-ui/desktop-control/dist/controller-attachment-server.d.ts +10 -0
  216. package/src/native-ui/desktop-control/dist/controller-attachment-server.d.ts.map +1 -0
  217. package/src/native-ui/desktop-control/dist/controller-attachment-server.js +77 -0
  218. package/src/native-ui/desktop-control/dist/controller-attachment-server.js.map +1 -0
  219. package/src/native-ui/desktop-control/dist/index.d.ts +21 -0
  220. package/src/native-ui/desktop-control/dist/index.d.ts.map +1 -0
  221. package/src/native-ui/desktop-control/dist/index.js +14 -0
  222. package/src/native-ui/desktop-control/dist/index.js.map +1 -0
  223. package/src/native-ui/desktop-control/dist/main-process-title-policy.d.ts +24 -0
  224. package/src/native-ui/desktop-control/dist/main-process-title-policy.d.ts.map +1 -0
  225. package/src/native-ui/desktop-control/dist/main-process-title-policy.js +246 -0
  226. package/src/native-ui/desktop-control/dist/main-process-title-policy.js.map +1 -0
  227. package/src/native-ui/desktop-control/dist/production-controller.d.ts +32 -0
  228. package/src/native-ui/desktop-control/dist/production-controller.d.ts.map +1 -0
  229. package/src/native-ui/desktop-control/dist/production-controller.js +291 -0
  230. package/src/native-ui/desktop-control/dist/production-controller.js.map +1 -0
  231. package/src/native-ui/desktop-control/dist/release-main.d.ts +2 -0
  232. package/src/native-ui/desktop-control/dist/release-main.d.ts.map +1 -0
  233. package/src/native-ui/desktop-control/dist/release-main.js +17 -0
  234. package/src/native-ui/desktop-control/dist/release-main.js.map +1 -0
  235. package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.d.ts +49 -0
  236. package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.d.ts.map +1 -0
  237. package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.js +214 -0
  238. package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.js.map +1 -0
  239. package/src/native-ui/desktop-control/dist/renderer-control-session.d.ts +79 -0
  240. package/src/native-ui/desktop-control/dist/renderer-control-session.d.ts.map +1 -0
  241. package/src/native-ui/desktop-control/dist/renderer-control-session.js +366 -0
  242. package/src/native-ui/desktop-control/dist/renderer-control-session.js.map +1 -0
  243. package/src/native-ui/desktop-control/dist/renderer-dom.d.ts +24 -0
  244. package/src/native-ui/desktop-control/dist/renderer-dom.d.ts.map +1 -0
  245. package/src/native-ui/desktop-control/dist/renderer-dom.js +110 -0
  246. package/src/native-ui/desktop-control/dist/renderer-dom.js.map +1 -0
  247. package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-policy.d.ts +19 -0
  248. package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-policy.d.ts.map +1 -0
  249. package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-policy.js +162 -0
  250. package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-policy.js.map +1 -0
  251. package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-runtime.d.ts +38 -0
  252. package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-runtime.d.ts.map +1 -0
  253. package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-runtime.js +633 -0
  254. package/src/native-ui/desktop-control/dist/renderer-draft-prewarm-runtime.js.map +1 -0
  255. package/src/native-ui/desktop-control/dist/tsconfig.tsbuildinfo +1 -0
  256. package/src/native-ui/desktop-control/package.json +22 -0
  257. package/src/native-ui/desktop-control/scripts/build-release.mjs +94 -0
  258. package/src/native-ui/desktop-control/src/cdp-client.ts +347 -0
  259. package/src/native-ui/desktop-control/src/contract-audit.ts +291 -0
  260. package/src/native-ui/desktop-control/src/controller-attachment-server.ts +93 -0
  261. package/src/native-ui/desktop-control/src/index.ts +91 -0
  262. package/src/native-ui/desktop-control/src/main-process-title-policy.ts +334 -0
  263. package/src/native-ui/desktop-control/src/production-controller.ts +344 -0
  264. package/src/native-ui/desktop-control/src/release-main.ts +18 -0
  265. package/src/native-ui/desktop-control/src/renderer-cdp-control-session.ts +358 -0
  266. package/src/native-ui/desktop-control/src/renderer-control-session.ts +595 -0
  267. package/src/native-ui/desktop-control/src/renderer-dom.ts +144 -0
  268. package/src/native-ui/desktop-control/src/renderer-draft-prewarm-policy.ts +209 -0
  269. package/src/native-ui/desktop-control/src/renderer-draft-prewarm-runtime.ts +746 -0
  270. package/src/native-ui/desktop-control/test/cdp-client.test.ts +157 -0
  271. package/src/native-ui/desktop-control/test/contract-audit.test.ts +56 -0
  272. package/src/native-ui/desktop-control/test/controller-attachment-server.test.ts +98 -0
  273. package/src/native-ui/desktop-control/test/index.test.ts +11 -0
  274. package/src/native-ui/desktop-control/test/main-process-title-policy.test.ts +166 -0
  275. package/src/native-ui/desktop-control/test/production-controller.test.ts +389 -0
  276. package/src/native-ui/desktop-control/test/renderer-cdp-control-session.test.ts +205 -0
  277. package/src/native-ui/desktop-control/test/renderer-control-session.test.ts +451 -0
  278. package/src/native-ui/desktop-control/test/renderer-dom.test.ts +62 -0
  279. package/src/native-ui/desktop-control/test/renderer-draft-prewarm-policy.test.ts +998 -0
  280. package/src/native-ui/desktop-control/tsconfig.json +12 -0
  281. package/src/native-ui/renderer-extension/dist/types/agent-group-preference.d.ts +39 -0
  282. package/src/native-ui/renderer-extension/dist/types/agent-group-preference.d.ts.map +1 -0
  283. package/src/native-ui/renderer-extension/dist/types/agent-selection-state.d.ts +83 -0
  284. package/src/native-ui/renderer-extension/dist/types/agent-selection-state.d.ts.map +1 -0
  285. package/src/native-ui/renderer-extension/dist/types/audit-entry.d.ts +2 -0
  286. package/src/native-ui/renderer-extension/dist/types/audit-entry.d.ts.map +1 -0
  287. package/src/native-ui/renderer-extension/dist/types/codex-locale-adapter.d.ts +23 -0
  288. package/src/native-ui/renderer-extension/dist/types/codex-locale-adapter.d.ts.map +1 -0
  289. package/src/native-ui/renderer-extension/dist/types/collaboration-icon.d.ts +2 -0
  290. package/src/native-ui/renderer-extension/dist/types/collaboration-icon.d.ts.map +1 -0
  291. package/src/native-ui/renderer-extension/dist/types/contract-audit.d.ts +37 -0
  292. package/src/native-ui/renderer-extension/dist/types/contract-audit.d.ts.map +1 -0
  293. package/src/native-ui/renderer-extension/dist/types/harness-mix-icons.d.ts +3 -0
  294. package/src/native-ui/renderer-extension/dist/types/harness-mix-icons.d.ts.map +1 -0
  295. package/src/native-ui/renderer-extension/dist/types/harness-mix-settings.d.ts +3 -0
  296. package/src/native-ui/renderer-extension/dist/types/harness-mix-settings.d.ts.map +1 -0
  297. package/src/native-ui/renderer-extension/dist/types/index.d.ts +49 -0
  298. package/src/native-ui/renderer-extension/dist/types/index.d.ts.map +1 -0
  299. package/src/native-ui/renderer-extension/dist/types/install-renderer-binding.d.ts +4 -0
  300. package/src/native-ui/renderer-extension/dist/types/install-renderer-binding.d.ts.map +1 -0
  301. package/src/native-ui/renderer-extension/dist/types/probe-entry.d.ts +2 -0
  302. package/src/native-ui/renderer-extension/dist/types/probe-entry.d.ts.map +1 -0
  303. package/src/native-ui/renderer-extension/dist/types/production-entry.d.ts +9 -0
  304. package/src/native-ui/renderer-extension/dist/types/production-entry.d.ts.map +1 -0
  305. package/src/native-ui/renderer-extension/dist/types/renderer-agent-icon.d.ts +4 -0
  306. package/src/native-ui/renderer-extension/dist/types/renderer-agent-icon.d.ts.map +1 -0
  307. package/src/native-ui/renderer-extension/dist/types/renderer-agent-picker.d.ts +62 -0
  308. package/src/native-ui/renderer-extension/dist/types/renderer-agent-picker.d.ts.map +1 -0
  309. package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts +70 -0
  310. package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts.map +1 -0
  311. package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-options.d.ts +34 -0
  312. package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-options.d.ts.map +1 -0
  313. package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-state.d.ts +19 -0
  314. package/src/native-ui/renderer-extension/dist/types/renderer-codex-account-state.d.ts.map +1 -0
  315. package/src/native-ui/renderer-extension/dist/types/renderer-composer-dom.d.ts +82 -0
  316. package/src/native-ui/renderer-extension/dist/types/renderer-composer-dom.d.ts.map +1 -0
  317. package/src/native-ui/renderer-extension/dist/types/renderer-credits-control.d.ts +21 -0
  318. package/src/native-ui/renderer-extension/dist/types/renderer-credits-control.d.ts.map +1 -0
  319. package/src/native-ui/renderer-extension/dist/types/renderer-external-steering.d.ts +7 -0
  320. package/src/native-ui/renderer-extension/dist/types/renderer-external-steering.d.ts.map +1 -0
  321. package/src/native-ui/renderer-extension/dist/types/renderer-fork-control.d.ts +34 -0
  322. package/src/native-ui/renderer-extension/dist/types/renderer-fork-control.d.ts.map +1 -0
  323. package/src/native-ui/renderer-extension/dist/types/renderer-harness-command-claim.d.ts +4 -0
  324. package/src/native-ui/renderer-extension/dist/types/renderer-harness-command-claim.d.ts.map +1 -0
  325. package/src/native-ui/renderer-extension/dist/types/renderer-harness-command-control.d.ts +15 -0
  326. package/src/native-ui/renderer-extension/dist/types/renderer-harness-command-control.d.ts.map +1 -0
  327. package/src/native-ui/renderer-extension/dist/types/renderer-harness-localization.d.ts +25 -0
  328. package/src/native-ui/renderer-extension/dist/types/renderer-harness-localization.d.ts.map +1 -0
  329. package/src/native-ui/renderer-extension/dist/types/renderer-harness-mentions.d.ts +23 -0
  330. package/src/native-ui/renderer-extension/dist/types/renderer-harness-mentions.d.ts.map +1 -0
  331. package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts +94 -0
  332. package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts.map +1 -0
  333. package/src/native-ui/renderer-extension/dist/types/renderer-model-picker-positioning.d.ts +22 -0
  334. package/src/native-ui/renderer-extension/dist/types/renderer-model-picker-positioning.d.ts.map +1 -0
  335. package/src/native-ui/renderer-extension/dist/types/renderer-model-picker.d.ts +54 -0
  336. package/src/native-ui/renderer-extension/dist/types/renderer-model-picker.d.ts.map +1 -0
  337. package/src/native-ui/renderer-extension/dist/types/renderer-new-thread-preference.d.ts +18 -0
  338. package/src/native-ui/renderer-extension/dist/types/renderer-new-thread-preference.d.ts.map +1 -0
  339. package/src/native-ui/renderer-extension/dist/types/renderer-permission-mode-picker.d.ts +42 -0
  340. package/src/native-ui/renderer-extension/dist/types/renderer-permission-mode-picker.d.ts.map +1 -0
  341. package/src/native-ui/renderer-extension/dist/types/renderer-permission-mode-preference.d.ts +9 -0
  342. package/src/native-ui/renderer-extension/dist/types/renderer-permission-mode-preference.d.ts.map +1 -0
  343. package/src/native-ui/renderer-extension/dist/types/renderer-request-sender.d.ts +9 -0
  344. package/src/native-ui/renderer-extension/dist/types/renderer-request-sender.d.ts.map +1 -0
  345. package/src/native-ui/renderer-extension/dist/types/renderer-session-import-client.d.ts +12 -0
  346. package/src/native-ui/renderer-extension/dist/types/renderer-session-import-client.d.ts.map +1 -0
  347. package/src/native-ui/renderer-extension/dist/types/renderer-settings-lifecycle.d.ts +18 -0
  348. package/src/native-ui/renderer-extension/dist/types/renderer-settings-lifecycle.d.ts.map +1 -0
  349. package/src/native-ui/renderer-extension/dist/types/renderer-sidebar-agent-icons.d.ts +45 -0
  350. package/src/native-ui/renderer-extension/dist/types/renderer-sidebar-agent-icons.d.ts.map +1 -0
  351. package/src/native-ui/renderer-extension/dist/types/renderer-transcript-dom.d.ts +23 -0
  352. package/src/native-ui/renderer-extension/dist/types/renderer-transcript-dom.d.ts.map +1 -0
  353. package/src/native-ui/renderer-extension/dist/types/renderer-trigger-chip-style.d.ts +3 -0
  354. package/src/native-ui/renderer-extension/dist/types/renderer-trigger-chip-style.d.ts.map +1 -0
  355. package/src/native-ui/renderer-extension/dist/types/renderer-usage-control.d.ts +72 -0
  356. package/src/native-ui/renderer-extension/dist/types/renderer-usage-control.d.ts.map +1 -0
  357. package/src/native-ui/renderer-extension/dist/types/settings/accounts-list.d.ts +24 -0
  358. package/src/native-ui/renderer-extension/dist/types/settings/accounts-list.d.ts.map +1 -0
  359. package/src/native-ui/renderer-extension/dist/types/settings/accounts-page.d.ts +18 -0
  360. package/src/native-ui/renderer-extension/dist/types/settings/accounts-page.d.ts.map +1 -0
  361. package/src/native-ui/renderer-extension/dist/types/settings/accounts-usage.d.ts +27 -0
  362. package/src/native-ui/renderer-extension/dist/types/settings/accounts-usage.d.ts.map +1 -0
  363. package/src/native-ui/renderer-extension/dist/types/settings/connections-page.d.ts +42 -0
  364. package/src/native-ui/renderer-extension/dist/types/settings/connections-page.d.ts.map +1 -0
  365. package/src/native-ui/renderer-extension/dist/types/settings/core.d.ts +38 -0
  366. package/src/native-ui/renderer-extension/dist/types/settings/core.d.ts.map +1 -0
  367. package/src/native-ui/renderer-extension/dist/types/settings/harness-accounts.d.ts +14 -0
  368. package/src/native-ui/renderer-extension/dist/types/settings/harness-accounts.d.ts.map +1 -0
  369. package/src/native-ui/renderer-extension/dist/types/settings/icons.d.ts +6 -0
  370. package/src/native-ui/renderer-extension/dist/types/settings/icons.d.ts.map +1 -0
  371. package/src/native-ui/renderer-extension/dist/types/settings/localization.d.ts +231 -0
  372. package/src/native-ui/renderer-extension/dist/types/settings/localization.d.ts.map +1 -0
  373. package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts +22 -0
  374. package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts.map +1 -0
  375. package/src/native-ui/renderer-extension/dist/types/settings/release-notes.d.ts +4 -0
  376. package/src/native-ui/renderer-extension/dist/types/settings/release-notes.d.ts.map +1 -0
  377. package/src/native-ui/renderer-extension/dist/types/settings/session-import-list-controls.d.ts +12 -0
  378. package/src/native-ui/renderer-extension/dist/types/settings/session-import-list-controls.d.ts.map +1 -0
  379. package/src/native-ui/renderer-extension/dist/types/settings/session-import-page.d.ts +8 -0
  380. package/src/native-ui/renderer-extension/dist/types/settings/session-import-page.d.ts.map +1 -0
  381. package/src/native-ui/renderer-extension/dist/types/settings/shell.d.ts +24 -0
  382. package/src/native-ui/renderer-extension/dist/types/settings/shell.d.ts.map +1 -0
  383. package/src/native-ui/renderer-extension/dist/types/settings/trigger.d.ts +45 -0
  384. package/src/native-ui/renderer-extension/dist/types/settings/trigger.d.ts.map +1 -0
  385. package/src/native-ui/renderer-extension/dist/types/settings/update-request.d.ts +6 -0
  386. package/src/native-ui/renderer-extension/dist/types/settings/update-request.d.ts.map +1 -0
  387. package/src/native-ui/renderer-extension/dist/types/tsconfig.tsbuildinfo +1 -0
  388. package/src/native-ui/renderer-extension/dist/types/versioned-renderer-adapter.d.ts +143 -0
  389. package/src/native-ui/renderer-extension/dist/types/versioned-renderer-adapter.d.ts.map +1 -0
  390. package/src/native-ui/renderer-extension/package.json +22 -0
  391. package/src/native-ui/renderer-extension/src/agent-group-preference.ts +174 -0
  392. package/src/native-ui/renderer-extension/src/agent-selection-state.ts +610 -0
  393. package/src/native-ui/renderer-extension/src/assets/README.md +43 -0
  394. package/src/native-ui/renderer-extension/src/assets/antigravity-agent.svg +1 -0
  395. package/src/native-ui/renderer-extension/src/assets/claude-agent.svg +3 -0
  396. package/src/native-ui/renderer-extension/src/assets/codex-agent.png +0 -0
  397. package/src/native-ui/renderer-extension/src/assets/codex-logo-bright.png +0 -0
  398. package/src/native-ui/renderer-extension/src/assets/codex-logo-transparent.png +0 -0
  399. package/src/native-ui/renderer-extension/src/assets/codex-logo.png +0 -0
  400. package/src/native-ui/renderer-extension/src/assets/codexhost-icon.png +0 -0
  401. package/src/native-ui/renderer-extension/src/assets/codexhost-logo-transparent.png +0 -0
  402. package/src/native-ui/renderer-extension/src/assets/codexhost-logo.png +0 -0
  403. package/src/native-ui/renderer-extension/src/assets/codexhost-readme.svg +8 -0
  404. package/src/native-ui/renderer-extension/src/assets/grok-agent.png +0 -0
  405. package/src/native-ui/renderer-extension/src/assets/kiro-agent.svg +11 -0
  406. package/src/native-ui/renderer-extension/src/assets/omp-agent.svg +14 -0
  407. package/src/native-ui/renderer-extension/src/assets/opencode-agent.png +0 -0
  408. package/src/native-ui/renderer-extension/src/assets/pi-agent.svg +4 -0
  409. package/src/native-ui/renderer-extension/src/assets.d.ts +26 -0
  410. package/src/native-ui/renderer-extension/src/audit-entry.ts +5 -0
  411. package/src/native-ui/renderer-extension/src/codex-locale-adapter.ts +321 -0
  412. package/src/native-ui/renderer-extension/src/collaboration-icon.ts +13 -0
  413. package/src/native-ui/renderer-extension/src/contract-audit.ts +102 -0
  414. package/src/native-ui/renderer-extension/src/harness-mix-icons.ts +24 -0
  415. package/src/native-ui/renderer-extension/src/harness-mix-settings.ts +80 -0
  416. package/src/native-ui/renderer-extension/src/index.ts +266 -0
  417. package/src/native-ui/renderer-extension/src/install-renderer-binding.ts +30 -0
  418. package/src/native-ui/renderer-extension/src/probe-entry.ts +4 -0
  419. package/src/native-ui/renderer-extension/src/production-entry.ts +23 -0
  420. package/src/native-ui/renderer-extension/src/renderer-agent-icon.ts +145 -0
  421. package/src/native-ui/renderer-extension/src/renderer-agent-picker.ts +813 -0
  422. package/src/native-ui/renderer-extension/src/renderer-binding-probe.ts +2936 -0
  423. package/src/native-ui/renderer-extension/src/renderer-codex-account-options.ts +281 -0
  424. package/src/native-ui/renderer-extension/src/renderer-codex-account-state.ts +53 -0
  425. package/src/native-ui/renderer-extension/src/renderer-composer-dom.ts +782 -0
  426. package/src/native-ui/renderer-extension/src/renderer-credits-control.ts +500 -0
  427. package/src/native-ui/renderer-extension/src/renderer-external-steering.ts +339 -0
  428. package/src/native-ui/renderer-extension/src/renderer-fork-control.ts +273 -0
  429. package/src/native-ui/renderer-extension/src/renderer-harness-command-claim.ts +64 -0
  430. package/src/native-ui/renderer-extension/src/renderer-harness-command-control.ts +417 -0
  431. package/src/native-ui/renderer-extension/src/renderer-harness-localization.ts +144 -0
  432. package/src/native-ui/renderer-extension/src/renderer-harness-mentions.ts +213 -0
  433. package/src/native-ui/renderer-extension/src/renderer-model-client.ts +567 -0
  434. package/src/native-ui/renderer-extension/src/renderer-model-picker-positioning.ts +65 -0
  435. package/src/native-ui/renderer-extension/src/renderer-model-picker.ts +640 -0
  436. package/src/native-ui/renderer-extension/src/renderer-new-thread-preference.ts +175 -0
  437. package/src/native-ui/renderer-extension/src/renderer-permission-mode-picker.ts +413 -0
  438. package/src/native-ui/renderer-extension/src/renderer-permission-mode-preference.ts +49 -0
  439. package/src/native-ui/renderer-extension/src/renderer-request-sender.ts +43 -0
  440. package/src/native-ui/renderer-extension/src/renderer-session-import-client.ts +68 -0
  441. package/src/native-ui/renderer-extension/src/renderer-settings-lifecycle.ts +239 -0
  442. package/src/native-ui/renderer-extension/src/renderer-sidebar-agent-icons.ts +456 -0
  443. package/src/native-ui/renderer-extension/src/renderer-transcript-dom.ts +47 -0
  444. package/src/native-ui/renderer-extension/src/renderer-trigger-chip-style.ts +52 -0
  445. package/src/native-ui/renderer-extension/src/renderer-usage-control.ts +602 -0
  446. package/src/native-ui/renderer-extension/src/settings/accounts-list.ts +236 -0
  447. package/src/native-ui/renderer-extension/src/settings/accounts-page.ts +585 -0
  448. package/src/native-ui/renderer-extension/src/settings/accounts-quota-interactive.prototype.html +1418 -0
  449. package/src/native-ui/renderer-extension/src/settings/accounts-usage.ts +221 -0
  450. package/src/native-ui/renderer-extension/src/settings/accounts.css +607 -0
  451. package/src/native-ui/renderer-extension/src/settings/connections-page.ts +1354 -0
  452. package/src/native-ui/renderer-extension/src/settings/core.ts +158 -0
  453. package/src/native-ui/renderer-extension/src/settings/harness-accounts.ts +134 -0
  454. package/src/native-ui/renderer-extension/src/settings/icons.ts +141 -0
  455. package/src/native-ui/renderer-extension/src/settings/localization.ts +752 -0
  456. package/src/native-ui/renderer-extension/src/settings/pages.ts +615 -0
  457. package/src/native-ui/renderer-extension/src/settings/release-notes.ts +222 -0
  458. package/src/native-ui/renderer-extension/src/settings/session-import-list-controls.ts +128 -0
  459. package/src/native-ui/renderer-extension/src/settings/session-import-page.ts +461 -0
  460. package/src/native-ui/renderer-extension/src/settings/shell.css +2149 -0
  461. package/src/native-ui/renderer-extension/src/settings/shell.ts +329 -0
  462. package/src/native-ui/renderer-extension/src/settings/trigger.ts +323 -0
  463. package/src/native-ui/renderer-extension/src/settings/update-notes.preview.html +491 -0
  464. package/src/native-ui/renderer-extension/src/settings/update-request.ts +49 -0
  465. package/src/native-ui/renderer-extension/src/settings/windows-update.preview.html +2135 -0
  466. package/src/native-ui/renderer-extension/src/versioned-renderer-adapter.ts +1278 -0
  467. package/src/native-ui/renderer-extension/test/agent-selection-state.test.ts +611 -0
  468. package/src/native-ui/renderer-extension/test/codex-locale-adapter.test.ts +152 -0
  469. package/src/native-ui/renderer-extension/test/contract-audit.test.ts +71 -0
  470. package/src/native-ui/renderer-extension/test/index.test.ts +9 -0
  471. package/src/native-ui/renderer-extension/test/renderer-agent-icon.test.ts +98 -0
  472. package/src/native-ui/renderer-extension/test/renderer-agent-picker.test.ts +226 -0
  473. package/src/native-ui/renderer-extension/test/renderer-binding-probe-host-catalog.test.ts +728 -0
  474. package/src/native-ui/renderer-extension/test/renderer-binding-probe.test.ts +1290 -0
  475. package/src/native-ui/renderer-extension/test/renderer-codex-account-state.test.ts +65 -0
  476. package/src/native-ui/renderer-extension/test/renderer-composer-permissions.test.ts +75 -0
  477. package/src/native-ui/renderer-extension/test/renderer-credits-control.test.ts +70 -0
  478. package/src/native-ui/renderer-extension/test/renderer-external-steering-rpc.test.ts +184 -0
  479. package/src/native-ui/renderer-extension/test/renderer-external-steering.test.ts +279 -0
  480. package/src/native-ui/renderer-extension/test/renderer-fork-control.test.ts +363 -0
  481. package/src/native-ui/renderer-extension/test/renderer-harness-command-claim.test.ts +167 -0
  482. package/src/native-ui/renderer-extension/test/renderer-harness-command-control.test.ts +54 -0
  483. package/src/native-ui/renderer-extension/test/renderer-model-client.test.ts +708 -0
  484. package/src/native-ui/renderer-extension/test/renderer-model-picker.test.ts +302 -0
  485. package/src/native-ui/renderer-extension/test/renderer-native-thread-ownership.test.ts +84 -0
  486. package/src/native-ui/renderer-extension/test/renderer-new-thread-preference.test.ts +81 -0
  487. package/src/native-ui/renderer-extension/test/renderer-permission-mode-picker.test.ts +269 -0
  488. package/src/native-ui/renderer-extension/test/renderer-permission-mode-preference.test.ts +48 -0
  489. package/src/native-ui/renderer-extension/test/renderer-settings-lifecycle.test.ts +156 -0
  490. package/src/native-ui/renderer-extension/test/renderer-sidebar-agent-icons.test.ts +575 -0
  491. package/src/native-ui/renderer-extension/test/renderer-unsupported-methods.test.ts +167 -0
  492. package/src/native-ui/renderer-extension/test/renderer-usage-control.test.ts +96 -0
  493. package/src/native-ui/renderer-extension/test/settings/accounts-usage.test.ts +208 -0
  494. package/src/native-ui/renderer-extension/test/settings/core.test.ts +145 -0
  495. package/src/native-ui/renderer-extension/test/settings/harness-settings.test.ts +88 -0
  496. package/src/native-ui/renderer-extension/test/settings/localization.test.ts +80 -0
  497. package/src/native-ui/renderer-extension/test/settings/pages.test.ts +2000 -0
  498. package/src/native-ui/renderer-extension/test/settings/release-notes.test.ts +163 -0
  499. package/src/native-ui/renderer-extension/test/settings/shell.test.ts +74 -0
  500. package/src/native-ui/renderer-extension/test/settings/trigger.test.ts +270 -0
  501. package/src/native-ui/renderer-extension/test/settings/update-request.test.ts +48 -0
  502. package/src/native-ui/renderer-extension/test/versioned-renderer-adapter.test.ts +682 -0
  503. package/src/native-ui/renderer-extension/tsconfig.json +15 -0
  504. package/src/native-ui/shared-contracts/dist/codex-accounts.d.ts +246 -0
  505. package/src/native-ui/shared-contracts/dist/codex-accounts.d.ts.map +1 -0
  506. package/src/native-ui/shared-contracts/dist/codex-accounts.js +99 -0
  507. package/src/native-ui/shared-contracts/dist/codex-accounts.js.map +1 -0
  508. package/src/native-ui/shared-contracts/dist/deepseek-modern-sessions.d.ts +37 -0
  509. package/src/native-ui/shared-contracts/dist/deepseek-modern-sessions.d.ts.map +1 -0
  510. package/src/native-ui/shared-contracts/dist/deepseek-modern-sessions.js +36 -0
  511. package/src/native-ui/shared-contracts/dist/deepseek-modern-sessions.js.map +1 -0
  512. package/src/native-ui/shared-contracts/dist/errors.d.ts +17 -0
  513. package/src/native-ui/shared-contracts/dist/errors.d.ts.map +1 -0
  514. package/src/native-ui/shared-contracts/dist/errors.js +14 -0
  515. package/src/native-ui/shared-contracts/dist/errors.js.map +1 -0
  516. package/src/native-ui/shared-contracts/dist/external-thread-fork.d.ts +11 -0
  517. package/src/native-ui/shared-contracts/dist/external-thread-fork.d.ts.map +1 -0
  518. package/src/native-ui/shared-contracts/dist/external-thread-fork.js +14 -0
  519. package/src/native-ui/shared-contracts/dist/external-thread-fork.js.map +1 -0
  520. package/src/native-ui/shared-contracts/dist/harness-accounts.d.ts +64 -0
  521. package/src/native-ui/shared-contracts/dist/harness-accounts.d.ts.map +1 -0
  522. package/src/native-ui/shared-contracts/dist/harness-accounts.js +24 -0
  523. package/src/native-ui/shared-contracts/dist/harness-accounts.js.map +1 -0
  524. package/src/native-ui/shared-contracts/dist/harness-commands.d.ts +46 -0
  525. package/src/native-ui/shared-contracts/dist/harness-commands.d.ts.map +1 -0
  526. package/src/native-ui/shared-contracts/dist/harness-commands.js +61 -0
  527. package/src/native-ui/shared-contracts/dist/harness-commands.js.map +1 -0
  528. package/src/native-ui/shared-contracts/dist/harness-models.d.ts +278 -0
  529. package/src/native-ui/shared-contracts/dist/harness-models.d.ts.map +1 -0
  530. package/src/native-ui/shared-contracts/dist/harness-models.js +317 -0
  531. package/src/native-ui/shared-contracts/dist/harness-models.js.map +1 -0
  532. package/src/native-ui/shared-contracts/dist/harness-permission-modes.d.ts +30 -0
  533. package/src/native-ui/shared-contracts/dist/harness-permission-modes.d.ts.map +1 -0
  534. package/src/native-ui/shared-contracts/dist/harness-permission-modes.js +57 -0
  535. package/src/native-ui/shared-contracts/dist/harness-permission-modes.js.map +1 -0
  536. package/src/native-ui/shared-contracts/dist/harness-plugins.d.ts +56 -0
  537. package/src/native-ui/shared-contracts/dist/harness-plugins.d.ts.map +1 -0
  538. package/src/native-ui/shared-contracts/dist/harness-plugins.js +75 -0
  539. package/src/native-ui/shared-contracts/dist/harness-plugins.js.map +1 -0
  540. package/src/native-ui/shared-contracts/dist/harness-route.d.ts +16 -0
  541. package/src/native-ui/shared-contracts/dist/harness-route.d.ts.map +1 -0
  542. package/src/native-ui/shared-contracts/dist/harness-route.js +42 -0
  543. package/src/native-ui/shared-contracts/dist/harness-route.js.map +1 -0
  544. package/src/native-ui/shared-contracts/dist/harness-session-import.d.ts +54 -0
  545. package/src/native-ui/shared-contracts/dist/harness-session-import.d.ts.map +1 -0
  546. package/src/native-ui/shared-contracts/dist/harness-session-import.js +72 -0
  547. package/src/native-ui/shared-contracts/dist/harness-session-import.js.map +1 -0
  548. package/src/native-ui/shared-contracts/dist/ids.d.ts +12 -0
  549. package/src/native-ui/shared-contracts/dist/ids.d.ts.map +1 -0
  550. package/src/native-ui/shared-contracts/dist/ids.js +10 -0
  551. package/src/native-ui/shared-contracts/dist/ids.js.map +1 -0
  552. package/src/native-ui/shared-contracts/dist/index.d.ts +47 -0
  553. package/src/native-ui/shared-contracts/dist/index.d.ts.map +1 -0
  554. package/src/native-ui/shared-contracts/dist/index.js +29 -0
  555. package/src/native-ui/shared-contracts/dist/index.js.map +1 -0
  556. package/src/native-ui/shared-contracts/dist/json-rpc.d.ts +84 -0
  557. package/src/native-ui/shared-contracts/dist/json-rpc.d.ts.map +1 -0
  558. package/src/native-ui/shared-contracts/dist/json-rpc.js +65 -0
  559. package/src/native-ui/shared-contracts/dist/json-rpc.js.map +1 -0
  560. package/src/native-ui/shared-contracts/dist/json-value.d.ts +13 -0
  561. package/src/native-ui/shared-contracts/dist/json-value.d.ts.map +1 -0
  562. package/src/native-ui/shared-contracts/dist/json-value.js +60 -0
  563. package/src/native-ui/shared-contracts/dist/json-value.js.map +1 -0
  564. package/src/native-ui/shared-contracts/dist/native-refs.d.ts +43 -0
  565. package/src/native-ui/shared-contracts/dist/native-refs.d.ts.map +1 -0
  566. package/src/native-ui/shared-contracts/dist/native-refs.js +35 -0
  567. package/src/native-ui/shared-contracts/dist/native-refs.js.map +1 -0
  568. package/src/native-ui/shared-contracts/dist/reasoning-transcript.d.ts +7 -0
  569. package/src/native-ui/shared-contracts/dist/reasoning-transcript.d.ts.map +1 -0
  570. package/src/native-ui/shared-contracts/dist/reasoning-transcript.js +7 -0
  571. package/src/native-ui/shared-contracts/dist/reasoning-transcript.js.map +1 -0
  572. package/src/native-ui/shared-contracts/dist/thread-delegate.d.ts +22 -0
  573. package/src/native-ui/shared-contracts/dist/thread-delegate.d.ts.map +1 -0
  574. package/src/native-ui/shared-contracts/dist/thread-delegate.js +30 -0
  575. package/src/native-ui/shared-contracts/dist/thread-delegate.js.map +1 -0
  576. package/src/native-ui/shared-contracts/dist/thread-harness-switch.d.ts +16 -0
  577. package/src/native-ui/shared-contracts/dist/thread-harness-switch.d.ts.map +1 -0
  578. package/src/native-ui/shared-contracts/dist/thread-harness-switch.js +19 -0
  579. package/src/native-ui/shared-contracts/dist/thread-harness-switch.js.map +1 -0
  580. package/src/native-ui/shared-contracts/dist/thread-usage.d.ts +106 -0
  581. package/src/native-ui/shared-contracts/dist/thread-usage.d.ts.map +1 -0
  582. package/src/native-ui/shared-contracts/dist/thread-usage.js +103 -0
  583. package/src/native-ui/shared-contracts/dist/thread-usage.js.map +1 -0
  584. package/src/native-ui/shared-contracts/dist/tsconfig.tsbuildinfo +1 -0
  585. package/src/native-ui/shared-contracts/dist/updates.d.ts +128 -0
  586. package/src/native-ui/shared-contracts/dist/updates.d.ts.map +1 -0
  587. package/src/native-ui/shared-contracts/dist/updates.js +58 -0
  588. package/src/native-ui/shared-contracts/dist/updates.js.map +1 -0
  589. package/src/native-ui/shared-contracts/dist/version.d.ts +2 -0
  590. package/src/native-ui/shared-contracts/dist/version.d.ts.map +1 -0
  591. package/src/native-ui/shared-contracts/dist/version.js +2 -0
  592. package/src/native-ui/shared-contracts/dist/version.js.map +1 -0
  593. package/src/native-ui/shared-contracts/package.json +25 -0
  594. package/src/native-ui/shared-contracts/src/codex-accounts.ts +140 -0
  595. package/src/native-ui/shared-contracts/src/deepseek-modern-sessions.ts +67 -0
  596. package/src/native-ui/shared-contracts/src/errors.ts +25 -0
  597. package/src/native-ui/shared-contracts/src/external-thread-fork.ts +20 -0
  598. package/src/native-ui/shared-contracts/src/harness-accounts.ts +29 -0
  599. package/src/native-ui/shared-contracts/src/harness-commands.ts +81 -0
  600. package/src/native-ui/shared-contracts/src/harness-models.ts +401 -0
  601. package/src/native-ui/shared-contracts/src/harness-permission-modes.ts +73 -0
  602. package/src/native-ui/shared-contracts/src/harness-plugins.ts +96 -0
  603. package/src/native-ui/shared-contracts/src/harness-route.ts +47 -0
  604. package/src/native-ui/shared-contracts/src/harness-session-import.ts +90 -0
  605. package/src/native-ui/shared-contracts/src/ids.ts +20 -0
  606. package/src/native-ui/shared-contracts/src/index.ts +320 -0
  607. package/src/native-ui/shared-contracts/src/json-rpc.ts +80 -0
  608. package/src/native-ui/shared-contracts/src/json-value.ts +78 -0
  609. package/src/native-ui/shared-contracts/src/native-refs.ts +58 -0
  610. package/src/native-ui/shared-contracts/src/reasoning-transcript.ts +6 -0
  611. package/src/native-ui/shared-contracts/src/thread-delegate.ts +40 -0
  612. package/src/native-ui/shared-contracts/src/thread-harness-switch.ts +25 -0
  613. package/src/native-ui/shared-contracts/src/thread-usage.ts +126 -0
  614. package/src/native-ui/shared-contracts/src/updates.ts +78 -0
  615. package/src/native-ui/shared-contracts/src/version.ts +1 -0
  616. package/src/native-ui/shared-contracts/test/browser-bundle.test.ts +36 -0
  617. package/src/native-ui/shared-contracts/test/deepseek-modern-sessions.test.ts +120 -0
  618. package/src/native-ui/shared-contracts/test/errors.test.ts +72 -0
  619. package/src/native-ui/shared-contracts/test/harness-commands.test.ts +64 -0
  620. package/src/native-ui/shared-contracts/test/harness-models.test.ts +390 -0
  621. package/src/native-ui/shared-contracts/test/harness-permission-modes.test.ts +134 -0
  622. package/src/native-ui/shared-contracts/test/harness-plugins.test.ts +113 -0
  623. package/src/native-ui/shared-contracts/test/harness-session-import.test.ts +117 -0
  624. package/src/native-ui/shared-contracts/test/ids.test.ts +69 -0
  625. package/src/native-ui/shared-contracts/test/index.test.ts +80 -0
  626. package/src/native-ui/shared-contracts/test/json-rpc.test.ts +177 -0
  627. package/src/native-ui/shared-contracts/test/json-value.test.ts +62 -0
  628. package/src/native-ui/shared-contracts/test/native-refs.test.ts +95 -0
  629. package/src/native-ui/shared-contracts/test/thread-usage.test.ts +115 -0
  630. package/src/native-ui/shared-contracts/test/updates.test.ts +120 -0
  631. package/src/native-ui/shared-contracts/tsconfig.json +10 -0
  632. package/src/tsconfig.base.json +19 -0
@@ -0,0 +1,567 @@
1
+ import {
2
+ harnessAccountListResultSchema,
3
+ type HarnessAccountListResult,
4
+ codexAccountUsageParamsSchema,
5
+ codexAccountUsageResultSchema,
6
+ codexAccountResetCreditConsumeParamsSchema,
7
+ codexAccountResetCreditConsumeResultSchema,
8
+ type CodexAccountUsageParams,
9
+ type CodexAccountUsageResult,
10
+ type CodexAccountResetCreditConsumeParams,
11
+ type CodexAccountResetCreditConsumeResult,
12
+ codexAccountActivateParamsSchema,
13
+ codexAccountCreateParamsSchema,
14
+ codexAccountDeleteParamsSchema,
15
+ codexAccountDeleteResultSchema,
16
+ codexAccountListResultSchema,
17
+ codexAccountLoginCancelParamsSchema,
18
+ codexAccountLoginCancelResultSchema,
19
+ codexAccountLoginCompletedSchema,
20
+ codexAccountLoginStartParamsSchema,
21
+ codexAccountLoginStartResultSchema,
22
+ codexAccountMutationResultSchema,
23
+ externalThreadForkParamsSchema,
24
+ externalThreadForkResultSchema,
25
+ harnessCommandCatalogSchema,
26
+ harnessCommandsInspectParamsSchema,
27
+ harnessConfigurationStateSchema,
28
+ harnessInspectParamsSchema,
29
+ harnessInspectionSchema,
30
+ harnessPluginListResultSchema,
31
+ type HarnessPluginListResult,
32
+ harnessWebUiOpenParamsSchema,
33
+ harnessWebUiOpenResultSchema,
34
+ harnessModelSelectionStateSchema,
35
+ hostThreadIdSchema,
36
+ threadInspectionParamsSchema,
37
+ threadInspectionSchema,
38
+ threadCommandExecuteParamsSchema,
39
+ threadCommandExecuteResultSchema,
40
+ threadCommandsInspectParamsSchema,
41
+ threadDelegateParamsSchema,
42
+ threadDelegationResultSchema,
43
+ threadHarnessSwitchParamsSchema,
44
+ threadHarnessSwitchResultSchema,
45
+ threadMessageParamsSchema,
46
+ threadModelSelectParamsSchema,
47
+ threadPermissionModeSelectParamsSchema,
48
+ threadThinkingSelectParamsSchema,
49
+ threadOwnershipListParamsSchema,
50
+ threadOwnershipListResultSchema,
51
+ threadUsageInspectionParamsSchema,
52
+ threadUsageInspectionSchema,
53
+ updateCheckResultSchema,
54
+ updateEmptyParamsSchema,
55
+ updateStartResultSchema,
56
+ updateStatusResultSchema,
57
+ type ExternalThreadForkParams,
58
+ type ExternalThreadForkResult,
59
+ type CodexAccountActivateParams,
60
+ type CodexAccountCreateParams,
61
+ type CodexAccountDeleteParams,
62
+ type CodexAccountDeleteResult,
63
+ type CodexAccountListResult,
64
+ type CodexAccountLoginCancelParams,
65
+ type CodexAccountLoginCancelResult,
66
+ type CodexAccountLoginCompleted,
67
+ type CodexAccountLoginStartParams,
68
+ type CodexAccountLoginStartResult,
69
+ type CodexAccountMutationResult,
70
+ type HarnessCommandCatalog,
71
+ type HarnessCommandsInspectParams,
72
+ type HarnessConfigurationState,
73
+ type HarnessInspection,
74
+ type HarnessInspectParams,
75
+ type HarnessWebUiOpenParams,
76
+ type HarnessModelSelectionState,
77
+ type ThreadInspection,
78
+ type ThreadInspectionParams,
79
+ type ThreadCommandExecuteParams,
80
+ type ThreadCommandExecuteResult,
81
+ type ThreadCommandsInspectParams,
82
+ type ThreadDelegateParams,
83
+ type ThreadDelegationResult,
84
+ type ThreadHarnessSwitchParams,
85
+ type ThreadHarnessSwitchResult,
86
+ type ThreadMessageParams,
87
+ type ThreadModelSelectParams,
88
+ type ThreadPermissionModeSelectParams,
89
+ type ThreadThinkingSelectParams,
90
+ type ThreadOwnershipListParams,
91
+ type ThreadOwnershipListResult,
92
+ type ThreadUsageInspection,
93
+ type ThreadUsageInspectionParams,
94
+ type UpdateCheckResult,
95
+ type UpdateStartResult,
96
+ type UpdateStatusResult,
97
+ } from "@codexhost/shared-contracts";
98
+
99
+ import {
100
+ createRendererRequestSender,
101
+ RendererMethodUnavailableError,
102
+ } from "./renderer-request-sender.js";
103
+ import {
104
+ createRendererSessionImportClient,
105
+ type RendererSessionImportClient,
106
+ } from "./renderer-session-import-client.js";
107
+
108
+ export const HARNESS_INSPECT_METHOD = "codexhost/harness/inspect";
109
+ export const HARNESS_INSTALL_METHOD = "codexhost/harness/install";
110
+ export const HARNESS_PLUGIN_LIST_METHOD = "codexhost/harness/plugins/list";
111
+ export const HARNESS_WEB_UI_OPEN_METHOD = "codexhost/harness/web-ui/open";
112
+ export const THREAD_FORK_METHOD = "codexhost/thread/fork";
113
+ export const THREAD_HARNESS_SWITCH_METHOD = "codexhost/thread/harness/switch";
114
+ export const THREAD_INSPECT_METHOD = "codexhost/thread/inspect";
115
+ export const HARNESS_COMMANDS_INSPECT_METHOD = "codexhost/harness/commands/inspect";
116
+ export const THREAD_COMMANDS_INSPECT_METHOD = "codexhost/thread/commands/inspect";
117
+ export const THREAD_COMMAND_EXECUTE_METHOD = "codexhost/thread/command/execute";
118
+ export const THREAD_DELEGATE_METHOD = "codexhost/thread/delegate";
119
+ export const THREAD_MESSAGE_METHOD = "codexhost/thread/message";
120
+ export const THREAD_MODEL_SELECT_METHOD = "codexhost/thread/model/select";
121
+ export const THREAD_THINKING_SELECT_METHOD = "codexhost/thread/thinking/select";
122
+ export const THREAD_PERMISSION_MODE_SELECT_METHOD = "codexhost/thread/permission-mode/select";
123
+ export const THREAD_OWNERSHIP_LIST_METHOD = "codexhost/thread/ownership/list";
124
+ export const THREAD_USAGE_INSPECT_METHOD = "codexhost/thread/usage/inspect";
125
+ export const THREAD_USAGE_UPDATED_METHOD = "codexhost/thread/usage/updated";
126
+ export const THREAD_TOKEN_USAGE_UPDATED_METHOD = "thread/tokenUsage/updated";
127
+ export const UPDATE_CHECK_METHOD = "codexhost/update/check";
128
+ export const UPDATE_START_METHOD = "codexhost/update/start";
129
+ export const UPDATE_STATUS_METHOD = "codexhost/update/status";
130
+ export const CODEX_ACCOUNT_LIST_METHOD = "codexhost/account/list";
131
+ export const CODEX_ACCOUNT_REFRESH_METHOD = "codexhost/account/refresh";
132
+ export const CODEX_ACCOUNT_CREATE_METHOD = "codexhost/account/create";
133
+ export const CODEX_ACCOUNT_DELETE_METHOD = "codexhost/account/delete";
134
+ export const CODEX_ACCOUNT_ACTIVATE_METHOD = "codexhost/account/activate";
135
+ export const CODEX_ACCOUNT_LOGIN_START_METHOD = "codexhost/account/login/start";
136
+ export const CODEX_ACCOUNT_LOGIN_CANCEL_METHOD = "codexhost/account/login/cancel";
137
+ export const CODEX_ACCOUNT_LOGIN_COMPLETED_METHOD = "codexhost/account/login/completed";
138
+ export const CODEX_ACCOUNT_RESET_CREDIT_CONSUME_METHOD =
139
+ "codexhost/account/rate-limit-reset/consume";
140
+
141
+ function isRecord(value: unknown): value is Record<string, unknown> {
142
+ return typeof value === "object" && value !== null && !Array.isArray(value);
143
+ }
144
+
145
+ function notifiedThreadId(notification: unknown): ThreadUsageInspectionParams["threadId"] | null {
146
+ if (
147
+ !isRecord(notification) ||
148
+ (notification.method !== THREAD_TOKEN_USAGE_UPDATED_METHOD &&
149
+ notification.method !== THREAD_USAGE_UPDATED_METHOD)
150
+ ) {
151
+ return null;
152
+ }
153
+ const params = notification.params;
154
+ if (!isRecord(params)) return null;
155
+ const parsed = hostThreadIdSchema.safeParse(params.threadId);
156
+ return parsed.success ? parsed.data : null;
157
+ }
158
+
159
+ interface RequestManagerCandidate {
160
+ addNotificationCallback?: (
161
+ method: string | readonly string[],
162
+ callback: (notification: unknown) => void,
163
+ ) => () => void;
164
+ sendRequest?: (method: string, params: unknown, options?: unknown) => Promise<unknown> | unknown;
165
+ requestClient?: RequestManagerCandidate;
166
+ }
167
+
168
+ function notificationTarget(manager: RequestManagerCandidate): RequestManagerCandidate | null {
169
+ if (typeof manager.addNotificationCallback === "function") return manager;
170
+ const nested = manager.requestClient;
171
+ return nested && typeof nested.addNotificationCallback === "function" ? nested : null;
172
+ }
173
+
174
+ export interface RendererModelClient extends Partial<RendererSessionImportClient> {
175
+ listCollaborationAgents?(): Promise<Array<{ id: string; name: string; available: boolean; lead: boolean }>>;
176
+ currentHostId?(): string | null;
177
+ listHarnessPlugins?(): Promise<HarnessPluginListResult>;
178
+ clientForHost?(hostId: string): RendererModelClient | null;
179
+ forkThread(input: ExternalThreadForkParams): Promise<ExternalThreadForkResult>;
180
+ switchHarness(input: ThreadHarnessSwitchParams): Promise<ThreadHarnessSwitchResult>;
181
+ inspectHarness(input: HarnessInspectParams): Promise<HarnessInspection>;
182
+ installHarness?(input: { harnessId: string }): Promise<{ success: boolean; command?: string; stdout?: string; stderr?: string; error?: string }>;
183
+ openHarnessWebUi?(input: HarnessWebUiOpenParams): Promise<void>;
184
+ inspectThread(input: ThreadInspectionParams): Promise<ThreadInspection>;
185
+ inspectHarnessCommands(input: HarnessCommandsInspectParams): Promise<HarnessCommandCatalog>;
186
+ inspectThreadCommands(input: ThreadCommandsInspectParams): Promise<HarnessCommandCatalog>;
187
+ executeThreadCommand(input: ThreadCommandExecuteParams): Promise<ThreadCommandExecuteResult>;
188
+ listThreadOwnership(input: ThreadOwnershipListParams): Promise<ThreadOwnershipListResult>;
189
+ inspectThreadUsage(input: ThreadUsageInspectionParams): Promise<ThreadUsageInspection>;
190
+ subscribeThreadUsage?(listener: (update: ThreadUsageInspection) => void): () => void;
191
+ selectThreadModel(input: ThreadModelSelectParams): Promise<HarnessModelSelectionState>;
192
+ selectThreadThinking(input: ThreadThinkingSelectParams): Promise<HarnessModelSelectionState>;
193
+ selectThreadPermissionMode(
194
+ input: ThreadPermissionModeSelectParams,
195
+ ): Promise<HarnessConfigurationState>;
196
+ checkUpdate(): Promise<UpdateCheckResult>;
197
+ startUpdate(): Promise<UpdateStartResult>;
198
+ readUpdateStatus(): Promise<UpdateStatusResult>;
199
+ inspectCodexAccountUsage?(input: CodexAccountUsageParams): Promise<CodexAccountUsageResult>;
200
+ consumeCodexAccountResetCredit?(
201
+ input: CodexAccountResetCreditConsumeParams,
202
+ ): Promise<CodexAccountResetCreditConsumeResult>;
203
+ listHarnessAccounts?(): Promise<HarnessAccountListResult>;
204
+ listCodexAccounts(): Promise<CodexAccountListResult>;
205
+ refreshCodexAccounts(): Promise<CodexAccountListResult>;
206
+ createCodexAccount(input: CodexAccountCreateParams): Promise<CodexAccountMutationResult>;
207
+ deleteCodexAccount(input: CodexAccountDeleteParams): Promise<CodexAccountDeleteResult>;
208
+ activateCodexAccount(input: CodexAccountActivateParams): Promise<CodexAccountMutationResult>;
209
+ startCodexAccountLogin(
210
+ input: CodexAccountLoginStartParams,
211
+ ): Promise<CodexAccountLoginStartResult>;
212
+ cancelCodexAccountLogin(
213
+ input: CodexAccountLoginCancelParams,
214
+ ): Promise<CodexAccountLoginCancelResult>;
215
+ subscribeCodexAccountLogin(listener: (result: CodexAccountLoginCompleted) => void): () => void;
216
+ }
217
+
218
+ export function createThreadUsageSubscriptionRelay(): {
219
+ connect(client: Pick<RendererModelClient, "subscribeThreadUsage">): void;
220
+ subscribe(listener: (update: ThreadUsageInspection) => void): () => void;
221
+ dispose(): void;
222
+ } {
223
+ const listeners = new Set<(update: ThreadUsageInspection) => void>();
224
+ let removeNotificationCallback: (() => void) | null = null;
225
+ return {
226
+ connect(client) {
227
+ if (removeNotificationCallback || listeners.size === 0) return;
228
+ try {
229
+ removeNotificationCallback =
230
+ client.subscribeThreadUsage?.((update) => {
231
+ for (const listener of listeners) listener(update);
232
+ }) ?? null;
233
+ } catch {
234
+ removeNotificationCallback = null;
235
+ }
236
+ },
237
+ subscribe(listener) {
238
+ listeners.add(listener);
239
+ return () => {
240
+ listeners.delete(listener);
241
+ if (listeners.size > 0) return;
242
+ removeNotificationCallback?.();
243
+ removeNotificationCallback = null;
244
+ };
245
+ },
246
+ dispose() {
247
+ removeNotificationCallback?.();
248
+ removeNotificationCallback = null;
249
+ listeners.clear();
250
+ },
251
+ };
252
+ }
253
+
254
+ export function createRendererModelClient(
255
+ candidates: readonly RequestManagerCandidate[],
256
+ ): RendererModelClient | null {
257
+ const managers = candidates.filter(
258
+ (
259
+ candidate,
260
+ ): candidate is RequestManagerCandidate &
261
+ Required<Pick<RequestManagerCandidate, "sendRequest">> =>
262
+ typeof candidate.sendRequest === "function",
263
+ );
264
+ const source = managers[0];
265
+ if (managers.length !== 1 || !source) return null;
266
+ const manager = {
267
+ sendRequest: createRendererRequestSender((method, params) =>
268
+ source.sendRequest(method, params),
269
+ ),
270
+ };
271
+
272
+ const inspectHarness = async (input: HarnessInspectParams): Promise<HarnessInspection> => {
273
+ const params = harnessInspectParamsSchema.parse(input);
274
+ const result = await manager.sendRequest(HARNESS_INSPECT_METHOD, params);
275
+ return harnessInspectionSchema.parse(result);
276
+ };
277
+ const inspectHarnessCommands = async (
278
+ input: HarnessCommandsInspectParams,
279
+ ): Promise<HarnessCommandCatalog> => {
280
+ const params = harnessCommandsInspectParamsSchema.parse(input);
281
+ const result = await manager.sendRequest(HARNESS_COMMANDS_INSPECT_METHOD, params);
282
+ return harnessCommandCatalogSchema.parse(result);
283
+ };
284
+ const inspectThreadCommands = async (
285
+ input: ThreadCommandsInspectParams,
286
+ ): Promise<HarnessCommandCatalog> => {
287
+ const params = threadCommandsInspectParamsSchema.parse(input);
288
+ const result = await manager.sendRequest(THREAD_COMMANDS_INSPECT_METHOD, params);
289
+ return harnessCommandCatalogSchema.parse(result);
290
+ };
291
+ const executeThreadCommand = async (
292
+ input: ThreadCommandExecuteParams,
293
+ ): Promise<ThreadCommandExecuteResult> => {
294
+ const params = threadCommandExecuteParamsSchema.parse(input);
295
+ const result = await manager.sendRequest(THREAD_COMMAND_EXECUTE_METHOD, params);
296
+ return threadCommandExecuteResultSchema.parse(result);
297
+ };
298
+ const inspectThreadUsage = async (
299
+ input: ThreadUsageInspectionParams,
300
+ ): Promise<ThreadUsageInspection> => {
301
+ const params = threadUsageInspectionParamsSchema.parse(input);
302
+ const result = await manager.sendRequest(THREAD_USAGE_INSPECT_METHOD, params);
303
+ return threadUsageInspectionSchema.parse(result);
304
+ };
305
+ const selectThreadModel = async (
306
+ input: ThreadModelSelectParams,
307
+ ): Promise<HarnessModelSelectionState> => {
308
+ const params = threadModelSelectParamsSchema.parse(input);
309
+ const result = await manager.sendRequest(THREAD_MODEL_SELECT_METHOD, params);
310
+ return harnessModelSelectionStateSchema.parse(result);
311
+ };
312
+ const selectThreadThinking = async (
313
+ input: ThreadThinkingSelectParams,
314
+ ): Promise<HarnessModelSelectionState> => {
315
+ const params = threadThinkingSelectParamsSchema.parse(input);
316
+ const result = await manager.sendRequest(THREAD_THINKING_SELECT_METHOD, params);
317
+ return harnessModelSelectionStateSchema.parse(result);
318
+ };
319
+ const selectThreadPermissionMode = async (
320
+ input: ThreadPermissionModeSelectParams,
321
+ ): Promise<HarnessConfigurationState> => {
322
+ const params = threadPermissionModeSelectParamsSchema.parse(input);
323
+ const result = await manager.sendRequest(THREAD_PERMISSION_MODE_SELECT_METHOD, params);
324
+ return harnessConfigurationStateSchema.parse(result);
325
+ };
326
+
327
+ return Object.freeze({
328
+ async listCollaborationAgents(): Promise<Array<{ id: string; name: string; available: boolean; lead: boolean }>> {
329
+ const result = await manager.sendRequest('codexhost/collaboration/agents', {});
330
+ if (!Array.isArray(result) || !result.every(a => a && typeof a.id === 'string' && typeof a.name === 'string' && typeof a.available === 'boolean' && typeof a.lead === 'boolean')) throw new Error('Invalid collaboration catalog');
331
+ return result;
332
+ },
333
+ ...createRendererSessionImportClient(async (method, params) =>
334
+ manager.sendRequest(method, params),
335
+ ),
336
+ async forkThread(input: ExternalThreadForkParams): Promise<ExternalThreadForkResult> {
337
+ const params = externalThreadForkParamsSchema.parse(input);
338
+ const result = await manager.sendRequest(THREAD_FORK_METHOD, params);
339
+ return externalThreadForkResultSchema.parse(result);
340
+ },
341
+ // 原地切换 Harness:历史保留在 Host 线程上,切换后首轮由 Host 附带一次性上下文信封
342
+ async switchHarness(input: ThreadHarnessSwitchParams): Promise<ThreadHarnessSwitchResult> {
343
+ const params = threadHarnessSwitchParamsSchema.parse(input);
344
+ const result = await manager.sendRequest(THREAD_HARNESS_SWITCH_METHOD, params);
345
+ return threadHarnessSwitchResultSchema.parse(result);
346
+ },
347
+ // 跨 Harness 协作:委派新子任务 / 跟进既有子任务;等待链由父线程协作 Turn 承载
348
+ async delegateThread(input: ThreadDelegateParams): Promise<ThreadDelegationResult> {
349
+ const params = threadDelegateParamsSchema.parse(input);
350
+ const result = await manager.sendRequest(THREAD_DELEGATE_METHOD, params);
351
+ return threadDelegationResultSchema.parse(result);
352
+ },
353
+ async messageThread(input: ThreadMessageParams): Promise<ThreadDelegationResult> {
354
+ const params = threadMessageParamsSchema.parse(input);
355
+ const result = await manager.sendRequest(THREAD_MESSAGE_METHOD, params);
356
+ return threadDelegationResultSchema.parse(result);
357
+ },
358
+ inspectHarness,
359
+ async installHarness(input: { harnessId: string }): Promise<{ success: boolean; command?: string; stdout?: string; stderr?: string; error?: string }> {
360
+ const result = await manager.sendRequest(HARNESS_INSTALL_METHOD, input);
361
+ return result as { success: boolean; command?: string; stdout?: string; stderr?: string; error?: string };
362
+ },
363
+ async listHarnessPlugins(): Promise<HarnessPluginListResult> {
364
+ return harnessPluginListResultSchema.parse(
365
+ await manager.sendRequest(HARNESS_PLUGIN_LIST_METHOD, {}),
366
+ );
367
+ },
368
+ async openHarnessWebUi(input: HarnessWebUiOpenParams): Promise<void> {
369
+ const params = harnessWebUiOpenParamsSchema.parse(input);
370
+ const result = await manager.sendRequest(HARNESS_WEB_UI_OPEN_METHOD, params);
371
+ harnessWebUiOpenResultSchema.parse(result);
372
+ },
373
+ async inspectThread(input: ThreadInspectionParams): Promise<ThreadInspection> {
374
+ const params = threadInspectionParamsSchema.parse(input);
375
+ let result: unknown;
376
+ try {
377
+ result = await manager.sendRequest(THREAD_INSPECT_METHOD, params);
378
+ } catch (error) {
379
+ if (!(error instanceof RendererMethodUnavailableError)) throw error;
380
+
381
+ // Stock Codex has no Host inspection API. Verify its native Thread on
382
+ // this same connection; neither an RPC failure nor a missing Account
383
+ // establishes ownership. Match the external markers used by the Host.
384
+ const native = await manager.sendRequest("thread/read", {
385
+ threadId: params.threadId,
386
+ includeTurns: false,
387
+ });
388
+ const thread = isRecord(native) ? native.thread : null;
389
+ if (
390
+ !isRecord(thread) ||
391
+ thread.id !== params.threadId ||
392
+ typeof thread.modelProvider !== "string" ||
393
+ !thread.modelProvider ||
394
+ thread.modelProvider === "codexhost" ||
395
+ typeof thread.cliVersion !== "string" ||
396
+ !thread.cliVersion ||
397
+ thread.cliVersion === "codexhost"
398
+ ) {
399
+ throw new Error("Native Thread response cannot establish Codex ownership");
400
+ }
401
+ return { owner: "codex", locked: true };
402
+ }
403
+ return threadInspectionSchema.parse(result);
404
+ },
405
+ inspectHarnessCommands,
406
+ inspectThreadCommands,
407
+ executeThreadCommand,
408
+ async listThreadOwnership(
409
+ input: ThreadOwnershipListParams,
410
+ ): Promise<ThreadOwnershipListResult> {
411
+ const params = threadOwnershipListParamsSchema.parse(input);
412
+ const value = await manager.sendRequest(THREAD_OWNERSHIP_LIST_METHOD, params);
413
+ const result = threadOwnershipListResultSchema.parse(value);
414
+ if (
415
+ result.threads.length !== params.threadIds.length ||
416
+ result.threads.some((thread, index) => thread.threadId !== params.threadIds[index])
417
+ ) {
418
+ throw new Error("Thread ownership-list result does not match the requested IDs");
419
+ }
420
+ return result;
421
+ },
422
+ inspectThreadUsage,
423
+ subscribeThreadUsage(listener: (update: ThreadUsageInspection) => void): () => void {
424
+ const notifications = notificationTarget(source);
425
+ if (!notifications?.addNotificationCallback) {
426
+ throw new Error("Renderer Usage notification callback is unavailable");
427
+ }
428
+ let disposed = false;
429
+ const generations = new Map<ThreadUsageInspectionParams["threadId"], number>();
430
+ const removeNotificationCallback = notifications.addNotificationCallback(
431
+ [THREAD_TOKEN_USAGE_UPDATED_METHOD, THREAD_USAGE_UPDATED_METHOD],
432
+ (notification) => {
433
+ const threadId = notifiedThreadId(notification);
434
+ if (!threadId) return;
435
+ const generation = (generations.get(threadId) ?? 0) + 1;
436
+ generations.set(threadId, generation);
437
+ void inspectThreadUsage({ threadId })
438
+ .then((update) => {
439
+ if (!disposed && generations.get(threadId) === generation) listener(update);
440
+ })
441
+ .catch(() => undefined);
442
+ },
443
+ );
444
+ return () => {
445
+ if (disposed) return;
446
+ disposed = true;
447
+ generations.clear();
448
+ removeNotificationCallback();
449
+ };
450
+ },
451
+ selectThreadModel,
452
+ selectThreadThinking,
453
+ selectThreadPermissionMode,
454
+ async checkUpdate(): Promise<UpdateCheckResult> {
455
+ const result = await manager.sendRequest(
456
+ UPDATE_CHECK_METHOD,
457
+ updateEmptyParamsSchema.parse({}),
458
+ );
459
+ return updateCheckResultSchema.parse(result);
460
+ },
461
+ async startUpdate(): Promise<UpdateStartResult> {
462
+ const result = await manager.sendRequest(
463
+ UPDATE_START_METHOD,
464
+ updateEmptyParamsSchema.parse({}),
465
+ );
466
+ return updateStartResultSchema.parse(result);
467
+ },
468
+ async readUpdateStatus(): Promise<UpdateStatusResult> {
469
+ const result = await manager.sendRequest(
470
+ UPDATE_STATUS_METHOD,
471
+ updateEmptyParamsSchema.parse({}),
472
+ );
473
+ return updateStatusResultSchema.parse(result);
474
+ },
475
+ async inspectCodexAccountUsage(
476
+ input: CodexAccountUsageParams,
477
+ ): Promise<CodexAccountUsageResult> {
478
+ const result = await manager.sendRequest(
479
+ "codexhost/account/usage/inspect",
480
+ codexAccountUsageParamsSchema.parse(input),
481
+ );
482
+ return codexAccountUsageResultSchema.parse(result);
483
+ },
484
+ async consumeCodexAccountResetCredit(
485
+ input: CodexAccountResetCreditConsumeParams,
486
+ ): Promise<CodexAccountResetCreditConsumeResult> {
487
+ const result = await manager.sendRequest(
488
+ CODEX_ACCOUNT_RESET_CREDIT_CONSUME_METHOD,
489
+ codexAccountResetCreditConsumeParamsSchema.parse(input),
490
+ );
491
+ return codexAccountResetCreditConsumeResultSchema.parse(result);
492
+ },
493
+ async listHarnessAccounts(): Promise<HarnessAccountListResult> {
494
+ return harnessAccountListResultSchema.parse(
495
+ await manager.sendRequest("codexhost/harness/accounts/list", {}),
496
+ );
497
+ },
498
+ async listCodexAccounts(): Promise<CodexAccountListResult> {
499
+ const result = await manager.sendRequest(CODEX_ACCOUNT_LIST_METHOD, {});
500
+ return codexAccountListResultSchema.parse(result);
501
+ },
502
+ async refreshCodexAccounts(): Promise<CodexAccountListResult> {
503
+ const result = await manager.sendRequest(CODEX_ACCOUNT_REFRESH_METHOD, {});
504
+ return codexAccountListResultSchema.parse(result);
505
+ },
506
+ async createCodexAccount(input: CodexAccountCreateParams): Promise<CodexAccountMutationResult> {
507
+ const result = await manager.sendRequest(
508
+ CODEX_ACCOUNT_CREATE_METHOD,
509
+ codexAccountCreateParamsSchema.parse(input),
510
+ );
511
+ return codexAccountMutationResultSchema.parse(result);
512
+ },
513
+ async deleteCodexAccount(input: CodexAccountDeleteParams): Promise<CodexAccountDeleteResult> {
514
+ const result = await manager.sendRequest(
515
+ CODEX_ACCOUNT_DELETE_METHOD,
516
+ codexAccountDeleteParamsSchema.parse(input),
517
+ );
518
+ return codexAccountDeleteResultSchema.parse(result);
519
+ },
520
+ async activateCodexAccount(
521
+ input: CodexAccountActivateParams,
522
+ ): Promise<CodexAccountMutationResult> {
523
+ const result = await manager.sendRequest(
524
+ CODEX_ACCOUNT_ACTIVATE_METHOD,
525
+ codexAccountActivateParamsSchema.parse(input),
526
+ );
527
+ return codexAccountMutationResultSchema.parse(result);
528
+ },
529
+ async startCodexAccountLogin(
530
+ input: CodexAccountLoginStartParams,
531
+ ): Promise<CodexAccountLoginStartResult> {
532
+ const result = await manager.sendRequest(
533
+ CODEX_ACCOUNT_LOGIN_START_METHOD,
534
+ codexAccountLoginStartParamsSchema.parse(input),
535
+ );
536
+ return codexAccountLoginStartResultSchema.parse(result);
537
+ },
538
+ async cancelCodexAccountLogin(
539
+ input: CodexAccountLoginCancelParams,
540
+ ): Promise<CodexAccountLoginCancelResult> {
541
+ const result = await manager.sendRequest(
542
+ CODEX_ACCOUNT_LOGIN_CANCEL_METHOD,
543
+ codexAccountLoginCancelParamsSchema.parse(input),
544
+ );
545
+ return codexAccountLoginCancelResultSchema.parse(result);
546
+ },
547
+ subscribeCodexAccountLogin(listener: (result: CodexAccountLoginCompleted) => void): () => void {
548
+ const notifications = notificationTarget(source);
549
+ if (!notifications?.addNotificationCallback) {
550
+ throw new Error("Renderer Account login notification callback is unavailable");
551
+ }
552
+ return notifications.addNotificationCallback(
553
+ CODEX_ACCOUNT_LOGIN_COMPLETED_METHOD,
554
+ (notification) => {
555
+ if (
556
+ !isRecord(notification) ||
557
+ notification.method !== CODEX_ACCOUNT_LOGIN_COMPLETED_METHOD
558
+ ) {
559
+ return;
560
+ }
561
+ const result = codexAccountLoginCompletedSchema.safeParse(notification.params);
562
+ if (result.success) listener(result.data);
563
+ },
564
+ );
565
+ },
566
+ });
567
+ }
@@ -0,0 +1,65 @@
1
+ const MAIN_MENU_SIDE_OFFSET = 8;
2
+ const COLLISION_PADDING = 8;
3
+
4
+ export const RENDERER_MODEL_PICKER_MAIN_MENU_WIDTH = 260;
5
+ export const RENDERER_MODEL_PICKER_THINKING_COLUMN_WIDTH = 176;
6
+ export const RENDERER_MODEL_PICKER_MODEL_MENU_MAX_HEIGHT = 360;
7
+
8
+ export interface RendererMenuRect {
9
+ left: number;
10
+ right: number;
11
+ top: number;
12
+ }
13
+
14
+ export interface RendererViewport {
15
+ width: number;
16
+ height: number;
17
+ }
18
+
19
+ export interface RendererMenuPlacement {
20
+ left: number;
21
+ top?: number;
22
+ bottom?: number;
23
+ width: number;
24
+ maxHeight?: number;
25
+ }
26
+
27
+ function clampPosition(value: number, minimum: number, maximum: number): number {
28
+ return Math.min(Math.max(value, minimum), Math.max(minimum, maximum));
29
+ }
30
+
31
+ function fitWidth(preferredWidth: number, viewportWidth: number): number {
32
+ return Math.max(
33
+ COLLISION_PADDING,
34
+ Math.min(preferredWidth, viewportWidth - COLLISION_PADDING * 2),
35
+ );
36
+ }
37
+
38
+ // 模型列 +(可选)思考强度列的单弹层总宽度,随视口收缩
39
+ export function rendererModelPickerMenuWidth(twoColumn: boolean, viewportWidth: number): number {
40
+ const preferred = twoColumn
41
+ ? RENDERER_MODEL_PICKER_MAIN_MENU_WIDTH + RENDERER_MODEL_PICKER_THINKING_COLUMN_WIDTH
42
+ : RENDERER_MODEL_PICKER_MAIN_MENU_WIDTH;
43
+ return fitWidth(preferred, viewportWidth);
44
+ }
45
+
46
+ export function rendererModelPickerMainMenuPlacement(
47
+ triggerRect: RendererMenuRect,
48
+ viewport: RendererViewport,
49
+ width = RENDERER_MODEL_PICKER_MAIN_MENU_WIDTH,
50
+ ): RendererMenuPlacement {
51
+ const maxLeft = viewport.width - COLLISION_PADDING - width;
52
+ return {
53
+ left: clampPosition(triggerRect.right - width, COLLISION_PADDING, maxLeft),
54
+ width,
55
+ bottom: Math.max(COLLISION_PADDING, viewport.height - triggerRect.top + MAIN_MENU_SIDE_OFFSET),
56
+ // 弹层自触发器向上展开:可用高度 = 触发器顶部到视口顶部
57
+ maxHeight: Math.max(
58
+ COLLISION_PADDING * 2,
59
+ Math.min(
60
+ RENDERER_MODEL_PICKER_MODEL_MENU_MAX_HEIGHT,
61
+ triggerRect.top - MAIN_MENU_SIDE_OFFSET - COLLISION_PADDING,
62
+ ),
63
+ ),
64
+ };
65
+ }