farming-code 2.2.29 → 2.2.32

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 (385) hide show
  1. package/README.md +25 -66
  2. package/README.zh_cn.md +15 -66
  3. package/THIRD_PARTY_NOTICES.md +7 -0
  4. package/backend/acp/{client-services.js → client-services.cjs} +132 -134
  5. package/backend/acp/packaged-claude-acp.cjs +37 -0
  6. package/backend/acp/packaged-codex-acp.cjs +37 -0
  7. package/backend/acp/patch-decisions.cjs +182 -0
  8. package/backend/acp/permission-security.cjs +131 -0
  9. package/backend/{acp-checkpoint-store.js → acp-checkpoint-store.cjs} +90 -59
  10. package/backend/{acp-runtime.js → acp-runtime.cjs} +1219 -1125
  11. package/backend/acp-session-state.cjs +622 -0
  12. package/backend/acp-transcript.cjs +525 -0
  13. package/backend/agent-env.cjs +257 -0
  14. package/backend/agent-extension-discovery.cjs +452 -0
  15. package/backend/agent-extension-inventory.cjs +116 -0
  16. package/backend/agent-json-stream.cjs +283 -0
  17. package/backend/agent-lifecycle-journal.cjs +185 -0
  18. package/backend/{agent-manager.js → agent-manager.cjs} +3116 -4275
  19. package/backend/agent-order-transaction.cjs +85 -0
  20. package/backend/agent-order.cjs +159 -0
  21. package/backend/agent-provider-session.cjs +98 -0
  22. package/backend/agent-runtime-binding.cjs +179 -0
  23. package/backend/agent-session-history.cjs +1022 -0
  24. package/backend/agent-session-inventory.cjs +291 -0
  25. package/backend/async-cache.cjs +104 -0
  26. package/backend/atomic-json-store.cjs +67 -0
  27. package/backend/auth.cjs +261 -0
  28. package/backend/authoritative-inventory-cache.cjs +383 -0
  29. package/backend/business-health.cjs +68 -0
  30. package/backend/chat-runtime.cjs +50 -0
  31. package/backend/claude-settings.cjs +132 -0
  32. package/backend/cli-agents.cjs +435 -0
  33. package/backend/codex-context-window.cjs +196 -0
  34. package/backend/codex-models.cjs +228 -0
  35. package/backend/codex-session-archive.cjs +82 -0
  36. package/backend/codex-session-history.cjs +590 -0
  37. package/backend/{codex-terminal-profile.js → codex-terminal-profile.cjs} +149 -155
  38. package/backend/codex-transcript-sanitizer.cjs +130 -0
  39. package/backend/codex-transcript.cjs +2107 -0
  40. package/backend/command-runner-child.cjs +105 -0
  41. package/backend/config-manager.cjs +1263 -0
  42. package/backend/control-api.cjs +439 -0
  43. package/backend/data/LICENSE.cua +21 -0
  44. package/backend/executable-discovery.cjs +204 -0
  45. package/backend/farming-agent-bootstrap.cjs +81 -0
  46. package/backend/farming-agent-bootstrap.zh_cn.md +6 -2
  47. package/backend/{farming-app-cli.js → farming-app-cli.cjs} +441 -493
  48. package/backend/farming-cli.cjs +414 -0
  49. package/backend/farming-net-pass.cjs +319 -0
  50. package/backend/farming-net-registry.cjs +123 -0
  51. package/backend/farming-net-server.cjs +309 -0
  52. package/backend/farming-session-store.cjs +651 -0
  53. package/backend/git-worktree-info.cjs +181 -0
  54. package/backend/haiku-token.cjs +828 -0
  55. package/backend/index-html.cjs +96 -0
  56. package/backend/input-parts.cjs +68 -0
  57. package/backend/input-routing.cjs +40 -0
  58. package/backend/{local-session-engine.js → local-session-engine.cjs} +276 -282
  59. package/backend/main-agent-skills.cjs +309 -0
  60. package/backend/main-page-session.cjs +132 -0
  61. package/backend/native-pty-controller-generation.cjs +139 -0
  62. package/backend/{native-pty-host-client.js → native-pty-host-client.cjs} +338 -346
  63. package/backend/native-pty-host-identity.cjs +125 -0
  64. package/backend/native-pty-host-path.cjs +68 -0
  65. package/backend/{native-pty-host.js → native-pty-host.cjs} +480 -569
  66. package/backend/native-session-engine.cjs +296 -0
  67. package/backend/network.cjs +57 -0
  68. package/backend/npm-update-helper.cjs +399 -0
  69. package/backend/packaged-node-pty.cjs +120 -0
  70. package/backend/preview-session-manager.cjs +89 -0
  71. package/backend/provider-adapters.cjs +492 -0
  72. package/backend/provider-home-configuration.cjs +211 -0
  73. package/backend/provider-session-id.cjs +79 -0
  74. package/backend/provider-session-service.cjs +333 -0
  75. package/backend/qr-share-tickets.cjs +119 -0
  76. package/backend/resource-broadcast-protocol.cjs +50 -0
  77. package/backend/review-diff-router.cjs +202 -0
  78. package/backend/review-diff-service.cjs +1267 -0
  79. package/backend/review-session-router.cjs +93 -0
  80. package/backend/review-session-service.cjs +470 -0
  81. package/backend/review-session-store.cjs +161 -0
  82. package/backend/review-state-router.cjs +132 -0
  83. package/backend/review-state-store.cjs +299 -0
  84. package/backend/run-history-store.cjs +97 -0
  85. package/backend/runtime-dependency-manager.cjs +893 -0
  86. package/backend/runtime-executable-invocation.cjs +37 -0
  87. package/backend/runtime-observation.cjs +96 -0
  88. package/backend/server-process-identity.cjs +70 -0
  89. package/backend/server.cjs +3356 -0
  90. package/backend/session-engine-bridge.cjs +144 -0
  91. package/backend/session-engine-router.cjs +105 -0
  92. package/backend/session-engine.cjs +64 -0
  93. package/backend/session-stream-protocol.cjs +181 -0
  94. package/backend/shell-busy-integration.cjs +442 -0
  95. package/backend/slash-command-discovery.cjs +423 -0
  96. package/backend/storage-layout.cjs +263 -0
  97. package/backend/system-monitor.cjs +96 -0
  98. package/backend/terminal-attach-checkpoint.cjs +73 -0
  99. package/backend/terminal-exit-quiescence.cjs +57 -0
  100. package/backend/{terminal-reducer-flow-control.js → terminal-reducer-flow-control.cjs} +45 -22
  101. package/backend/terminal-runtime-cleanup.cjs +99 -0
  102. package/backend/{terminal-screen-state.js → terminal-screen-state.cjs} +100 -108
  103. package/backend/{terminal-screen-worker-pool.js → terminal-screen-worker-pool.cjs} +89 -79
  104. package/backend/{terminal-screen-worker-thread.js → terminal-screen-worker-thread.cjs} +64 -65
  105. package/backend/terminal-screen-worker.cjs +352 -0
  106. package/backend/terminal-state-serialization.cjs +147 -0
  107. package/backend/{terminal-status.js → terminal-status.cjs} +137 -187
  108. package/backend/theme-manager.cjs +185 -0
  109. package/backend/update-service.cjs +675 -0
  110. package/backend/usage-forecast.cjs +95 -0
  111. package/backend/{usage-history-client.js → usage-history-client.cjs} +144 -94
  112. package/backend/usage-history-smoke.cjs +85 -0
  113. package/backend/usage-history-worker.cjs +60 -0
  114. package/backend/{usage-monitor.js → usage-monitor.cjs} +363 -390
  115. package/backend/workspace-directory.cjs +239 -0
  116. package/backend/workspace-discovery.cjs +271 -0
  117. package/backend/{workspace-file-router.js → workspace-file-router.cjs} +213 -282
  118. package/backend/{workspace-file-service.js → workspace-file-service.cjs} +1139 -1318
  119. package/backend/workspace-root-registry.cjs +192 -0
  120. package/bin/farming +1 -1
  121. package/config/farming.deploy.env.example +1 -1
  122. package/config/farming.install.env.example +1 -1
  123. package/dist/acp/codex-acp-1.1.4.mjs +405 -8
  124. package/dist/assets/App-BCkdpWB6.css +1 -0
  125. package/dist/assets/App-CRjKpaGp.js +697 -0
  126. package/dist/assets/CodeSelect-Ci8sKZPU.js +1 -0
  127. package/dist/assets/CodeSelect-T2eNzrOc.css +1 -0
  128. package/dist/assets/{FileEditorMarkdownPreview-Cs9cLv8a.js → FileEditorMarkdownPreview-V06QHlAg.js} +55 -55
  129. package/dist/assets/FileEditorPane-BX-Wjg9U.js +2 -0
  130. package/dist/assets/IconGlyphs-YhV7tqd4.js +1 -0
  131. package/dist/assets/ProjectFilesSection-BDT2_r0o.js +12 -0
  132. package/dist/assets/ReviewPage-BqAs5sG1.js +3 -0
  133. package/dist/assets/code-dark-B7eM_9G9.css +1 -0
  134. package/dist/assets/{cssMode-Bdg5RpcJ.js → cssMode-ADdAlxTO.js} +1 -1
  135. package/dist/assets/{editor.api2-D74ufkbr.js → editor.api2-BFLAr0YF.js} +162 -162
  136. package/dist/assets/file-icons-BpeqWkIB.js +1 -0
  137. package/dist/assets/{freemarker2-DfMDJfnE.js → freemarker2-C90q5jrp.js} +1 -1
  138. package/dist/assets/{handlebars-BEdPtzMT.js → handlebars-BwUQcEDq.js} +1 -1
  139. package/dist/assets/{html-B1fPb1QD.js → html-1s3uPKfh.js} +1 -1
  140. package/dist/assets/{htmlMode-CY2ZjHxH.js → htmlMode-xtKD99de.js} +1 -1
  141. package/dist/assets/{index-CQNaZc3l.js → index-C8MchCem.js} +3 -3
  142. package/dist/assets/{javascript-BV2OsWA0.js → javascript-Ph7ijyny.js} +1 -1
  143. package/dist/assets/{jsonMode-zd07aeuX.js → jsonMode-D-jGAnFH.js} +1 -1
  144. package/dist/assets/linkComputer-CbGyI_qx.js +1 -0
  145. package/dist/assets/{liquid-BParI24X.js → liquid-0IamE_cI.js} +1 -1
  146. package/dist/assets/{lspLanguageFeatures-BzredkoV.js → lspLanguageFeatures-BxnQunWF.js} +1 -1
  147. package/dist/assets/main-CLKXa6hf.css +1 -0
  148. package/dist/assets/{mdx-vGzUJN98.js → mdx-DdNmfivn.js} +1 -1
  149. package/dist/assets/{monaco.contribution-BmaeBQEc.js → monaco.contribution-B43jsUs1.js} +2 -2
  150. package/dist/assets/{python-CUwdLgsI.js → python-IAt4X5TS.js} +1 -1
  151. package/dist/assets/{razor-BScebUxU.js → razor-DRkFYW0S.js} +1 -1
  152. package/dist/assets/review-C8-oPKXk.css +1 -0
  153. package/dist/assets/{tsMode-DzUAibXK.js → tsMode-_d_4U2gf.js} +1 -1
  154. package/dist/assets/{typescript-D9EOeM7N.js → typescript-C7zcMq9l.js} +1 -1
  155. package/dist/assets/{workers-DAiomYZM.js → workers-D0nOyJzf.js} +1 -1
  156. package/dist/assets/workspace-editor-model-DND_Y-Bj.js +1 -0
  157. package/dist/assets/workspace-editor-monaco-BPWhgcIB.js +4 -0
  158. package/dist/assets/workspace-editor-monaco-N641qPjX.js +1 -0
  159. package/dist/assets/workspace-view-state-k1bTlJ_Z.js +13 -0
  160. package/dist/assets/{xml-wWl1dhkQ.js → xml-BR-HvxT8.js} +1 -1
  161. package/dist/assets/{yaml-Dc2WDaOZ.js → yaml-YtFQwh4q.js} +1 -1
  162. package/dist/index.html +2 -1
  163. package/extensions/browser/backend/agent-browser-runtime.cjs +1040 -0
  164. package/extensions/browser/backend/agent-capability.cjs +85 -0
  165. package/extensions/browser/backend/browser-mcp-server.cjs +655 -0
  166. package/extensions/browser/backend/browser-resource-manager.cjs +1486 -0
  167. package/extensions/browser/backend/browser-resource-store.cjs +228 -0
  168. package/extensions/browser/backend/browser-router.cjs +203 -0
  169. package/extensions/browser/backend/executable-discovery.cjs +248 -0
  170. package/extensions/browser/backend/farming-browser-client.cjs +116 -0
  171. package/extensions/browser/backend/index.cjs +32 -0
  172. package/extensions/browser/backend/managed-chromium-installer.cjs +833 -0
  173. package/extensions/browser/bin/farming-browser +16 -7
  174. package/extensions/computer/backend/agent-capability.cjs +72 -0
  175. package/extensions/computer/backend/computer-constants.cjs +59 -0
  176. package/extensions/computer/backend/computer-mcp-server.cjs +182 -0
  177. package/extensions/computer/backend/computer-resource-manager.cjs +1219 -0
  178. package/extensions/computer/backend/computer-resource-store.cjs +190 -0
  179. package/extensions/computer/backend/computer-router.cjs +257 -0
  180. package/extensions/computer/backend/cua-tools.json +3067 -0
  181. package/extensions/computer/backend/farming-computer-client.cjs +84 -0
  182. package/extensions/computer/backend/index.cjs +35 -0
  183. package/extensions/computer/backend/isolated-browser-provider.cjs +157 -0
  184. package/extensions/computer/bin/farming-computer +131 -0
  185. package/frontend/farming-net/app.js +255 -262
  186. package/frontend/ghostty-loader.js +24 -20
  187. package/frontend/reading-anchor.js +210 -193
  188. package/frontend/runtime-paths.js +24 -26
  189. package/frontend/session-bridge.js +90 -111
  190. package/frontend/session-modal-bridge.js +184 -302
  191. package/frontend/skin-bridge.js +20 -23
  192. package/frontend/skins/crt/app.js +7686 -7901
  193. package/frontend/skins/crt/effects.js +7 -6
  194. package/frontend/skins/crt/index.html +6 -6
  195. package/frontend/skins/crt/styles/markdown.css +4 -4
  196. package/frontend/terminal-bridge.js +174 -181
  197. package/frontend/terminal-replay.js +320 -345
  198. package/frontend/theme-loader.js +55 -71
  199. package/index.html +1 -0
  200. package/package.json +64 -37
  201. package/shared/backend-connection-status.js +38 -69
  202. package/shared/browser-protocol.js +235 -110
  203. package/shared/websocket-liveness.js +40 -0
  204. package/backend/acp/packaged-claude-acp.js +0 -13
  205. package/backend/acp/packaged-codex-acp.js +0 -13
  206. package/backend/acp/patch-decisions.js +0 -153
  207. package/backend/acp/permission-security.js +0 -108
  208. package/backend/acp-session-state.js +0 -644
  209. package/backend/acp-transcript.js +0 -512
  210. package/backend/agent-env.js +0 -250
  211. package/backend/agent-json-stream.js +0 -268
  212. package/backend/agent-lifecycle-journal.js +0 -133
  213. package/backend/agent-memory-report.js +0 -583
  214. package/backend/agent-order.js +0 -166
  215. package/backend/agent-provider-session.js +0 -76
  216. package/backend/agent-runtime-binding.js +0 -174
  217. package/backend/agent-session-history.js +0 -953
  218. package/backend/async-cache.js +0 -94
  219. package/backend/atomic-json-store.js +0 -37
  220. package/backend/auth.js +0 -251
  221. package/backend/bundle-update-helper.js +0 -113
  222. package/backend/chat-runtime.js +0 -28
  223. package/backend/claude-settings.js +0 -121
  224. package/backend/cli-agents.js +0 -486
  225. package/backend/codex-context-window.js +0 -189
  226. package/backend/codex-models.js +0 -226
  227. package/backend/codex-rollout-follower.js +0 -326
  228. package/backend/codex-session-archive.js +0 -65
  229. package/backend/codex-session-history.js +0 -647
  230. package/backend/codex-transcript-sanitizer.js +0 -115
  231. package/backend/codex-transcript.js +0 -2564
  232. package/backend/command-runner-child.js +0 -67
  233. package/backend/config-manager.js +0 -1133
  234. package/backend/control-api.js +0 -455
  235. package/backend/executable-discovery.js +0 -216
  236. package/backend/farming-agent-bootstrap.js +0 -49
  237. package/backend/farming-cli.js +0 -457
  238. package/backend/farming-net-pass.js +0 -285
  239. package/backend/farming-net-registry.js +0 -112
  240. package/backend/farming-net-server.js +0 -298
  241. package/backend/farming-session-store.js +0 -677
  242. package/backend/git-worktree-info.js +0 -181
  243. package/backend/haiku-token.js +0 -772
  244. package/backend/index-html.js +0 -62
  245. package/backend/input-parts.js +0 -54
  246. package/backend/input-routing.js +0 -24
  247. package/backend/json-cli-runtime.js +0 -275
  248. package/backend/main-agent-skills.js +0 -305
  249. package/backend/main-page-session.js +0 -122
  250. package/backend/native-pty-controller-generation.js +0 -106
  251. package/backend/native-pty-host-identity.js +0 -86
  252. package/backend/native-pty-host-path.js +0 -42
  253. package/backend/native-session-engine.js +0 -268
  254. package/backend/network.js +0 -23
  255. package/backend/npm-update-helper.js +0 -374
  256. package/backend/packaged-node-pty.js +0 -99
  257. package/backend/preview-session-manager.js +0 -68
  258. package/backend/provider-adapters.js +0 -399
  259. package/backend/provider-session-id.js +0 -47
  260. package/backend/provider-session-service.js +0 -345
  261. package/backend/qr-share-tickets.js +0 -100
  262. package/backend/review-diff-router.js +0 -180
  263. package/backend/review-diff-service.js +0 -1270
  264. package/backend/review-session-router.js +0 -74
  265. package/backend/review-session-service.js +0 -446
  266. package/backend/review-session-store.js +0 -151
  267. package/backend/review-state-router.js +0 -116
  268. package/backend/review-state-store.js +0 -286
  269. package/backend/run-history-store.js +0 -67
  270. package/backend/runtime-dependency-manager.js +0 -759
  271. package/backend/runtime-executable-invocation.js +0 -20
  272. package/backend/runtime-observation.js +0 -81
  273. package/backend/server-process-identity.js +0 -47
  274. package/backend/server.js +0 -3267
  275. package/backend/session-engine-bridge.js +0 -129
  276. package/backend/session-engine-router.js +0 -66
  277. package/backend/session-engine.js +0 -39
  278. package/backend/session-stream-protocol.js +0 -185
  279. package/backend/shell-busy-integration.js +0 -472
  280. package/backend/slash-command-discovery.js +0 -433
  281. package/backend/storage-layout.js +0 -190
  282. package/backend/system-monitor.js +0 -77
  283. package/backend/terminal-attach-checkpoint.js +0 -74
  284. package/backend/terminal-exit-quiescence.js +0 -39
  285. package/backend/terminal-runtime-cleanup.js +0 -80
  286. package/backend/terminal-screen-worker.js +0 -337
  287. package/backend/terminal-state-serialization.js +0 -127
  288. package/backend/theme-manager.js +0 -163
  289. package/backend/update-service.js +0 -1545
  290. package/backend/usage-forecast.js +0 -86
  291. package/backend/usage-history-scanner.ts +0 -2718
  292. package/backend/usage-history-smoke.js +0 -64
  293. package/backend/usage-history-worker.js +0 -34
  294. package/backend/workspace-directory.js +0 -232
  295. package/backend/workspace-discovery.js +0 -311
  296. package/backend/workspace-root-registry.js +0 -166
  297. package/dist/assets/App-BKNUILuL.css +0 -1
  298. package/dist/assets/App-Ex2oVVXO.js +0 -693
  299. package/dist/assets/FileEditorPane-CNtuGjQ3.js +0 -2
  300. package/dist/assets/IconGlyphs-BClgag6E.js +0 -1
  301. package/dist/assets/ProjectFilesSection-Cf2BEcAN.js +0 -12
  302. package/dist/assets/ReviewPage-BRuxFaH5.js +0 -3
  303. package/dist/assets/code-dark-BEZTQwYZ.css +0 -1
  304. package/dist/assets/file-icons-BOlcJ0ZF.js +0 -1
  305. package/dist/assets/main-DK9Sy7-c.css +0 -1
  306. package/dist/assets/review-BcnwQtJv.css +0 -1
  307. package/dist/assets/workspace-editor-model-CSGCl21x.js +0 -1
  308. package/dist/assets/workspace-editor-monaco-CJNwbpCy.js +0 -4
  309. package/dist/assets/workspace-editor-monaco-CO9w8YV0.js +0 -1
  310. package/dist/assets/workspace-view-state-BjKPYp0E.js +0 -7
  311. package/extensions/browser/backend/agent-browser-runtime.js +0 -1041
  312. package/extensions/browser/backend/agent-capability.js +0 -55
  313. package/extensions/browser/backend/browser-mcp-server.js +0 -621
  314. package/extensions/browser/backend/browser-resource-manager.js +0 -1309
  315. package/extensions/browser/backend/browser-resource-store.js +0 -190
  316. package/extensions/browser/backend/browser-router.js +0 -133
  317. package/extensions/browser/backend/executable-discovery.js +0 -224
  318. package/extensions/browser/backend/farming-browser-client.js +0 -83
  319. package/extensions/browser/backend/index.js +0 -7
  320. package/extensions/browser/frontend/BrowserSidebarPortals.tsx +0 -360
  321. package/extensions/browser/frontend/BrowserViewer.tsx +0 -500
  322. package/extensions/browser/frontend/browser-resource-state.ts +0 -60
  323. package/extensions/browser/frontend/browser.css +0 -567
  324. package/extensions/browser/frontend/types.ts +0 -31
  325. package/extensions/browser/frontend/useBrowserResources.ts +0 -158
  326. package/frontend/vendor/ghostty-web/index.d.ts +0 -1842
  327. package/shared/backend-connection-status.d.ts +0 -37
  328. package/shared/browser-protocol.d.ts +0 -5
  329. /package/dist/assets/{api-w2x5QfxB.js → api-ByCV9MEr.js} +0 -0
  330. /package/dist/assets/{core-vPkV8P_m.js → core-Czwdx12k.js} +0 -0
  331. /package/dist/assets/{fsharp-DNZNZyEE.js → fsharp-BjPpkoJe.js} +0 -0
  332. /package/dist/assets/{go-_kPJjNc_.js → go-BkIDmSUP.js} +0 -0
  333. /package/dist/assets/{graphql-4HCNVt5g.js → graphql-CCJTpqi1.js} +0 -0
  334. /package/dist/assets/{hcl-C87ymY0o.js → hcl-s4z8lUFg.js} +0 -0
  335. /package/dist/assets/{ini-BYrrGNTc.js → ini-CyUW1I7Z.js} +0 -0
  336. /package/dist/assets/{java-B211rJbk.js → java-CFCcGRiM.js} +0 -0
  337. /package/dist/assets/{julia-DVPsRtBm.js → julia-DQyH_EYb.js} +0 -0
  338. /package/dist/assets/{kotlin-BYyNerjp.js → kotlin-B8hA5O51.js} +0 -0
  339. /package/dist/assets/{less-EC9UblGE.js → less-DaVdaas0.js} +0 -0
  340. /package/dist/assets/{lexon-B1yuUdqW.js → lexon-DLBhPd3y.js} +0 -0
  341. /package/dist/assets/{lua-Bo6GFzxT.js → lua-gB1c_cif.js} +0 -0
  342. /package/dist/assets/{m3-C-Y9cBVI.js → m3-C2T3z3gB.js} +0 -0
  343. /package/dist/assets/{markdown-BHu-wLbe.js → markdown-CKq-Euj1.js} +0 -0
  344. /package/dist/assets/{mips-Dkds26rX.js → mips-Bcs5qIDX.js} +0 -0
  345. /package/dist/assets/{msdax-PU4g-8_g.js → msdax-CBP48FHF.js} +0 -0
  346. /package/dist/assets/{mysql-fPpuGpS7.js → mysql-c7tiPcFj.js} +0 -0
  347. /package/dist/assets/{objective-c-Wy1e5JUf.js → objective-c-D4BZkeEV.js} +0 -0
  348. /package/dist/assets/{pascal-BIXwvrqU.js → pascal-CJDZg0MN.js} +0 -0
  349. /package/dist/assets/{pascaligo-DwR0AtL_.js → pascaligo-Bygi8Ynl.js} +0 -0
  350. /package/dist/assets/{perl-CGHAl8my.js → perl-aS8bkf7E.js} +0 -0
  351. /package/dist/assets/{pgsql-B91M73E2.js → pgsql-CzNAYFYl.js} +0 -0
  352. /package/dist/assets/{php-C70ttrCx.js → php-DOtoEFTT.js} +0 -0
  353. /package/dist/assets/{pla-BNrXaRh0.js → pla-DugRnao1.js} +0 -0
  354. /package/dist/assets/{postiats-Dv2IAZR9.js → postiats-DsXwusKh.js} +0 -0
  355. /package/dist/assets/{powerquery-CkY5Wq7J.js → powerquery-DL3o72oD.js} +0 -0
  356. /package/dist/assets/{powershell-uGIYLU3C.js → powershell-C1qHekys.js} +0 -0
  357. /package/dist/assets/{protobuf-CavfmJu-.js → protobuf-DHgsc-cH.js} +0 -0
  358. /package/dist/assets/{pug-Drqnyitx.js → pug-FZXlE_Iu.js} +0 -0
  359. /package/dist/assets/{qrcode-7uGsTEmi.js → qrcode-DJDTdjL7.js} +0 -0
  360. /package/dist/assets/{qsharp-C7yF-Dti.js → qsharp-bLyhI3DT.js} +0 -0
  361. /package/dist/assets/{r-HXLGP0_-.js → r-DjFGXbAa.js} +0 -0
  362. /package/dist/assets/{redis-C4y6mf2p.js → redis-DSoZ_V6u.js} +0 -0
  363. /package/dist/assets/{redshift-DdQrFPrv.js → redshift-CzkdCsrg.js} +0 -0
  364. /package/dist/assets/{restructuredtext-CBrf2PNj.js → restructuredtext-B_XPrGCQ.js} +0 -0
  365. /package/dist/assets/{ruby-CVtMoX2B.js → ruby-Cry2RneJ.js} +0 -0
  366. /package/dist/assets/{rust-Ckq4sbMP.js → rust-CWzdbFq1.js} +0 -0
  367. /package/dist/assets/{sb-er66OpE3.js → sb-DmofU59h.js} +0 -0
  368. /package/dist/assets/{scala-BdWZz-hH.js → scala-BUC2l-vN.js} +0 -0
  369. /package/dist/assets/{scheme-kTV_s2kP.js → scheme-CNIB_72f.js} +0 -0
  370. /package/dist/assets/{scss-Bymy2VJQ.js → scss-DcL4-NbX.js} +0 -0
  371. /package/dist/assets/{shell-bwEP1LQ1.js → shell-CgAGvSSA.js} +0 -0
  372. /package/dist/assets/{solidity-DCddeBgL.js → solidity-DSkt6O_P.js} +0 -0
  373. /package/dist/assets/{sophia-BMN3AQig.js → sophia--5ytcjDN.js} +0 -0
  374. /package/dist/assets/{sparql-CSXOLjzi.js → sparql-C1Srr7cD.js} +0 -0
  375. /package/dist/assets/{sql-COg8ewmK.js → sql-2k_O5fj7.js} +0 -0
  376. /package/dist/assets/{st-CIaZtBS_.js → st-DCCCPqfz.js} +0 -0
  377. /package/dist/assets/{swift-DXiOhUHu.js → swift-Dd8mAfOt.js} +0 -0
  378. /package/dist/assets/{systemverilog-BTDE6Dr2.js → systemverilog-B0-aZYXu.js} +0 -0
  379. /package/dist/assets/{tcl-B0zy9NvV.js → tcl-CZAZwPVX.js} +0 -0
  380. /package/dist/assets/{twig-D594l4Z1.js → twig-D-Ag0tdS.js} +0 -0
  381. /package/dist/assets/{typespec-XKVjaPqo.js → typespec-B7kTFp0Z.js} +0 -0
  382. /package/dist/assets/{useWorkspaceMenuKeyboard-Bpy_s69Z.js → useWorkspaceMenuKeyboard-uYZpDxhU.js} +0 -0
  383. /package/dist/assets/{vb-B2wYoKRV.js → vb-20w1JPum.js} +0 -0
  384. /package/dist/assets/{wgsl-D0Yf2LbK.js → wgsl-CLJfqFt0.js} +0 -0
  385. /package/dist/assets/{workspace-working-copy-C3FSR3N6.js → workspace-working-copy-Cfz07cOd.js} +0 -0
@@ -1,87 +1,115 @@
1
- // One deadline covers the complete picker transaction, including best-effort
2
- // Escape cleanup. Individual menu steps must not each restart this budget.
3
- const DEFAULT_TIMEOUT_MS = 30_000;
1
+ // Generated by scripts/build-backend-runtime.ts. Do not edit.
2
+ "use strict";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var codex_terminal_profile_exports = {};
21
+ __export(codex_terminal_profile_exports, {
22
+ DEFAULT_POLL_INTERVAL_MS: () => DEFAULT_POLL_INTERVAL_MS,
23
+ DEFAULT_TIMEOUT_MS: () => DEFAULT_TIMEOUT_MS,
24
+ applyCodexTerminalProfile: () => applyCodexTerminalProfile,
25
+ codexAdvancedReasoningMenuOptions: () => codexAdvancedReasoningMenuOptions,
26
+ codexModelMenuOptions: () => codexModelMenuOptions,
27
+ codexReasoningMenuOptions: () => codexReasoningMenuOptions,
28
+ codexServiceTierConfirmations: () => codexServiceTierConfirmations,
29
+ codexTerminalProfileFromOutput: () => codexTerminalProfileFromOutput,
30
+ codexTerminalProfileFromPreview: () => codexTerminalProfileFromPreview,
31
+ modelSelectionInput: () => modelSelectionInput,
32
+ moreReasoningSelectionInput: () => moreReasoningSelectionInput,
33
+ newCodexServiceTierConfirmation: () => newCodexServiceTierConfirmation,
34
+ normalizedReasoning: () => normalizedReasoning,
35
+ reasoningSelectionInput: () => reasoningSelectionInput,
36
+ terminalCommand: () => terminalCommand,
37
+ validateTargetProfile: () => validateTargetProfile,
38
+ waitForPreview: () => waitForPreview
39
+ });
40
+ module.exports = __toCommonJS(codex_terminal_profile_exports);
41
+ const DEFAULT_TIMEOUT_MS = 3e4;
4
42
  const DEFAULT_POLL_INTERVAL_MS = 100;
5
- const MAX_CLEANUP_RESERVE_MS = 1_000;
6
-
43
+ const MAX_CLEANUP_RESERVE_MS = 1e3;
7
44
  function sleep(ms) {
8
- return new Promise(resolve => setTimeout(resolve, ms));
45
+ return new Promise((resolve) => setTimeout(resolve, ms));
9
46
  }
10
-
11
47
  function abortError(signal, fallbackMessage) {
12
48
  const reason = signal?.reason;
13
49
  if (reason instanceof Error) return reason;
14
- const error = new Error(typeof reason === 'string' && reason ? reason : fallbackMessage);
15
- error.name = 'AbortError';
50
+ const error = new Error(typeof reason === "string" && reason ? reason : fallbackMessage);
51
+ error.name = "AbortError";
16
52
  return error;
17
53
  }
18
-
19
- function throwIfAborted(signal, fallbackMessage = 'Codex Terminal profile update was canceled') {
54
+ function throwIfAborted(signal, fallbackMessage = "Codex Terminal profile update was canceled") {
20
55
  if (signal?.aborted) throw abortError(signal, fallbackMessage);
21
56
  }
22
-
23
57
  function withDeadline(value, options = {}) {
24
58
  const deadline = Number(options.deadline);
25
59
  const signal = options.signal;
26
- const timeoutMessage = options.timeoutMessage || 'Timed out applying the Codex Terminal profile';
60
+ const timeoutMessage = options.timeoutMessage || "Timed out applying the Codex Terminal profile";
27
61
  throwIfAborted(signal);
28
62
  if (!Number.isFinite(deadline)) return Promise.resolve(value);
29
63
  const remainingMs = deadline - Date.now();
30
64
  if (remainingMs <= 0) return Promise.reject(new Error(timeoutMessage));
31
-
32
65
  return new Promise((resolve, reject) => {
33
66
  let settled = false;
34
- const finish = (callback, result) => {
67
+ let timer;
68
+ const finish = (callback) => {
35
69
  if (settled) return;
36
70
  settled = true;
37
71
  clearTimeout(timer);
38
- signal?.removeEventListener('abort', onAbort);
39
- callback(result);
72
+ signal?.removeEventListener("abort", onAbort);
73
+ callback();
40
74
  };
41
- const onAbort = () => finish(reject, abortError(signal, 'Codex Terminal profile update was canceled'));
42
- const timer = setTimeout(() => finish(reject, new Error(timeoutMessage)), remainingMs);
43
- signal?.addEventListener('abort', onAbort, { once: true });
75
+ const onAbort = () => finish(
76
+ () => reject(abortError(signal, "Codex Terminal profile update was canceled"))
77
+ );
78
+ timer = setTimeout(() => finish(() => reject(new Error(timeoutMessage))), remainingMs);
79
+ signal?.addEventListener("abort", onAbort, { once: true });
44
80
  Promise.resolve(value).then(
45
- result => finish(resolve, result),
46
- error => finish(reject, error),
81
+ (result) => finish(() => resolve(result)),
82
+ (error) => finish(() => reject(error))
47
83
  );
48
84
  });
49
85
  }
50
-
51
86
  function callWithDeadline(operation, options = {}) {
52
87
  throwIfAborted(options.signal);
53
88
  return withDeadline(Promise.resolve().then(operation), options);
54
89
  }
55
-
56
90
  function normalizedValue(value) {
57
- return String(value || '').trim().toLowerCase();
91
+ return String(value || "").trim().toLowerCase();
58
92
  }
59
-
60
93
  function normalizedReasoning(value) {
61
- const normalized = normalizedValue(value).replace(/[\s_-]+/g, '');
62
- if (normalized === 'extrahigh') return 'xhigh';
94
+ const normalized = normalizedValue(value).replace(/[\s_-]+/g, "");
95
+ if (normalized === "extrahigh") return "xhigh";
63
96
  return normalized;
64
97
  }
65
-
66
98
  function stripAnsi(value) {
67
- return String(value || '').replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g, '');
99
+ return String(value || "").replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g, "");
68
100
  }
69
-
70
101
  function codexServiceTierConfirmations(outputText) {
71
- const text = stripAnsi(outputText).replace(/\r/g, '\n');
102
+ const text = stripAnsi(outputText).replace(/\r/g, "\n");
72
103
  return Array.from(text.matchAll(
73
- /(?:^|\n)\s*[•●]\s+(?:Service tier set to\s+(priority|default)\b|Fast mode is\s+(on|off)\b)/gi
74
- )).map(match => {
75
- const fast = match[1]
76
- ? normalizedValue(match[1]) === 'priority'
77
- : normalizedValue(match[2]) === 'on';
104
+ /(?:^|\n)\s*[•●]\s+(?:Service tier set to\s+(priority|default)\b|Fast mode is\s+(on|off)\b|已(开启|关闭)\s*Fast\s*模式)/gi
105
+ )).map((match) => {
106
+ const fast = match[1] ? normalizedValue(match[1]) === "priority" : match[2] ? normalizedValue(match[2]) === "on" : match[3] === "\u5F00\u542F";
78
107
  return {
79
- serviceTier: fast ? 'priority' : 'default',
80
- fast,
108
+ serviceTier: fast ? "priority" : "default",
109
+ fast
81
110
  };
82
111
  });
83
112
  }
84
-
85
113
  function newCodexServiceTierConfirmation(previousOutput, currentOutput) {
86
114
  const previous = stripAnsi(previousOutput);
87
115
  const current = stripAnsi(currentOutput);
@@ -99,17 +127,14 @@ function newCodexServiceTierConfirmation(previousOutput, currentOutput) {
99
127
  if (!previousLast || currentLast.serviceTier !== previousLast.serviceTier) return currentLast;
100
128
  return null;
101
129
  }
102
-
103
130
  function terminalCommand(command) {
104
- return [{ type: 'paste', text: command }, '\r'];
131
+ return [{ type: "paste", text: command }, "\r"];
105
132
  }
106
-
107
133
  function numberedOptionsAfter(previewText, headingPattern) {
108
- const text = String(previewText || '');
134
+ const text = String(previewText || "");
109
135
  const matches = Array.from(text.matchAll(headingPattern));
110
136
  const heading = matches[matches.length - 1];
111
- if (!heading || typeof heading.index !== 'number') return null;
112
-
137
+ if (!heading || typeof heading.index !== "number") return null;
113
138
  const options = [];
114
139
  const body = text.slice(heading.index + heading[0].length);
115
140
  for (const line of body.split(/\r?\n/)) {
@@ -117,58 +142,50 @@ function numberedOptionsAfter(previewText, headingPattern) {
117
142
  if (!match) continue;
118
143
  options.push({
119
144
  input: match[1],
120
- label: match[2].replace(/\s{2,}.*$/, '').trim(),
121
- line: match[2].trim(),
145
+ label: match[2].replace(/\s{2,}.*$/, "").trim(),
146
+ line: match[2].trim()
122
147
  });
123
148
  }
124
149
  return options;
125
150
  }
126
-
127
151
  function codexModelMenuOptions(previewText) {
128
152
  return numberedOptionsAfter(previewText, /Select Model and Effort/gi);
129
153
  }
130
-
131
154
  function codexReasoningMenuOptions(previewText) {
132
155
  return numberedOptionsAfter(previewText, /Select Reasoning Level for\s+[^\r\n]+/gi);
133
156
  }
134
-
135
157
  function codexAdvancedReasoningMenuOptions(previewText) {
136
158
  return numberedOptionsAfter(previewText, /Advanced Reasoning/gi);
137
159
  }
138
-
139
160
  function modelSelectionInput(previewText, model) {
140
161
  const target = normalizedValue(model);
141
162
  const options = codexModelMenuOptions(previewText);
142
163
  if (!options) return null;
143
- const option = options.find(item => {
164
+ const option = options.find((item) => {
144
165
  const firstToken = item.line.match(/^([A-Za-z0-9][A-Za-z0-9._:/-]*)\b/)?.[1];
145
166
  return normalizedValue(firstToken) === target;
146
167
  });
147
- return option?.input || '';
168
+ return option?.input || "";
148
169
  }
149
-
150
170
  function reasoningSelectionInput(previewText, effort) {
151
171
  const target = normalizedReasoning(effort);
152
- const options = codexAdvancedReasoningMenuOptions(previewText)
153
- || codexReasoningMenuOptions(previewText);
172
+ const options = codexAdvancedReasoningMenuOptions(previewText) || codexReasoningMenuOptions(previewText);
154
173
  if (!options) return null;
155
- const option = options.find(item => {
174
+ const option = options.find((item) => {
156
175
  const label = normalizedReasoning(item.label);
157
176
  const line = normalizedReasoning(item.line);
158
177
  return label === target || line === target || line.startsWith(target);
159
178
  });
160
- return option?.input || '';
179
+ return option?.input || "";
161
180
  }
162
-
163
181
  function moreReasoningSelectionInput(previewText) {
164
182
  const options = codexReasoningMenuOptions(previewText);
165
183
  if (!options) return null;
166
- const option = options.find(item => normalizedReasoning(item.label).startsWith('morereasoning'));
167
- return option?.input || '';
184
+ const option = options.find((item) => normalizedReasoning(item.label).startsWith("morereasoning"));
185
+ return option?.input || "";
168
186
  }
169
-
170
187
  function codexTerminalProfileFromPreview(previewText) {
171
- const text = String(previewText || '');
188
+ const text = String(previewText || "");
172
189
  const matches = Array.from(text.matchAll(
173
190
  /\b([A-Za-z0-9][A-Za-z0-9._:/-]*-[A-Za-z0-9._-]+)\s+(minimal|low|medium|high|xhigh|extra\s+high|max|ultra)\b(\s+fast\b)?/gi
174
191
  ));
@@ -178,12 +195,11 @@ function codexTerminalProfileFromPreview(previewText) {
178
195
  return {
179
196
  model: normalizedValue(match[1]),
180
197
  effort: normalizedReasoning(match[2]),
181
- fast: match[3] ? true : (confirmedTier ? confirmedTier.fast : null),
198
+ fast: match[3] ? true : confirmedTier ? confirmedTier.fast : false
182
199
  };
183
200
  }
184
-
185
201
  function codexTerminalProfileFromOutput(outputText) {
186
- const text = stripAnsi(outputText).replace(/\r/g, '\n');
202
+ const text = stripAnsi(outputText).replace(/\r/g, "\n");
187
203
  const matches = Array.from(text.matchAll(
188
204
  /(?:^|\n)\s*[•●]\s+Model changed to\s+([A-Za-z0-9][A-Za-z0-9._:/-]*-[A-Za-z0-9._-]+)\s+(minimal|low|medium|high|xhigh|extra\s+high|max|ultra)\b/gi
189
205
  ));
@@ -193,61 +209,54 @@ function codexTerminalProfileFromOutput(outputText) {
193
209
  return {
194
210
  model: normalizedValue(match[1]),
195
211
  effort: normalizedReasoning(match[2]),
196
- fast: confirmedTier ? confirmedTier.fast : null,
212
+ fast: confirmedTier ? confirmedTier.fast : null
197
213
  };
198
214
  }
199
-
200
215
  function profileMatches(current, target, options = {}) {
201
216
  if (!current) return false;
202
217
  if (normalizedValue(current.model) !== normalizedValue(target.model)) return false;
203
218
  if (normalizedReasoning(current.effort) !== normalizedReasoning(target.effort)) return false;
204
219
  if (options.includeFast === true) {
205
- return current.fast === (target.serviceTier === 'priority');
220
+ return current.fast === (target.serviceTier === "priority");
206
221
  }
207
222
  return true;
208
223
  }
209
-
210
224
  async function waitForPreview(readPreview, predicate, options = {}) {
211
- const timeoutMs = Number.isFinite(options.timeoutMs) ? options.timeoutMs : DEFAULT_TIMEOUT_MS;
212
- const pollIntervalMs = Number.isFinite(options.pollIntervalMs)
213
- ? options.pollIntervalMs
214
- : DEFAULT_POLL_INTERVAL_MS;
215
- const sleepFn = typeof options.sleep === 'function' ? options.sleep : sleep;
216
- const deadline = Number.isFinite(options.deadline) ? options.deadline : Date.now() + timeoutMs;
217
-
218
- for (;;) {
225
+ const timeoutMs = typeof options.timeoutMs === "number" && Number.isFinite(options.timeoutMs) ? options.timeoutMs : DEFAULT_TIMEOUT_MS;
226
+ const pollIntervalMs = typeof options.pollIntervalMs === "number" && Number.isFinite(options.pollIntervalMs) ? options.pollIntervalMs : DEFAULT_POLL_INTERVAL_MS;
227
+ const sleepFn = typeof options.sleep === "function" ? options.sleep : sleep;
228
+ const deadline = typeof options.deadline === "number" && Number.isFinite(options.deadline) ? options.deadline : Date.now() + timeoutMs;
229
+ for (; ; ) {
219
230
  const preview = String(await callWithDeadline(readPreview, {
220
231
  deadline,
221
232
  signal: options.signal,
222
- timeoutMessage: options.timeoutMessage || 'Timed out waiting for Codex Terminal',
223
- }) || '');
233
+ timeoutMessage: options.timeoutMessage || "Timed out waiting for Codex Terminal"
234
+ }) || "");
224
235
  const result = predicate(preview);
225
236
  if (result) return { preview, result };
226
- if (Date.now() >= deadline) throw new Error(options.timeoutMessage || 'Timed out waiting for Codex Terminal');
237
+ if (Date.now() >= deadline) throw new Error(options.timeoutMessage || "Timed out waiting for Codex Terminal");
227
238
  await callWithDeadline(
228
239
  () => sleepFn(Math.min(pollIntervalMs, Math.max(0, deadline - Date.now()))),
229
240
  {
230
241
  deadline,
231
242
  signal: options.signal,
232
- timeoutMessage: options.timeoutMessage || 'Timed out waiting for Codex Terminal',
233
- },
243
+ timeoutMessage: options.timeoutMessage || "Timed out waiting for Codex Terminal"
244
+ }
234
245
  );
235
246
  }
236
247
  }
237
-
238
248
  function validateTargetProfile(profile) {
239
- const model = String(profile?.model || '').trim();
240
- const effort = String(profile?.effort || '').trim();
241
- const serviceTier = profile?.serviceTier === 'priority' ? 'priority' : 'default';
249
+ const model = String(profile?.model || "").trim();
250
+ const effort = String(profile?.effort || "").trim();
251
+ const serviceTier = profile?.serviceTier === "priority" ? "priority" : "default";
242
252
  if (!model || model.length > 120 || /[\u0000-\u001f\u007f\s]/.test(model)) {
243
- throw new Error('A valid Codex model is required');
253
+ throw new Error("A valid Codex model is required");
244
254
  }
245
255
  if (!effort || effort.length > 40 || /[\u0000-\u001f\u007f]/.test(effort)) {
246
- throw new Error('A valid Codex reasoning effort is required');
256
+ throw new Error("A valid Codex reasoning effort is required");
247
257
  }
248
258
  return { model, effort, serviceTier };
249
259
  }
250
-
251
260
  async function applyCodexTerminalProfile({
252
261
  profile,
253
262
  readPreview,
@@ -256,67 +265,59 @@ async function applyCodexTerminalProfile({
256
265
  onInputSafe,
257
266
  timeoutMs = DEFAULT_TIMEOUT_MS,
258
267
  pollIntervalMs = DEFAULT_POLL_INTERVAL_MS,
259
- sleep: sleepFn,
260
- signal,
268
+ sleep: sleepFn = sleep,
269
+ signal
261
270
  }) {
262
271
  const target = validateTargetProfile(profile);
263
272
  const totalTimeoutMs = Math.max(1, Number.isFinite(timeoutMs) ? timeoutMs : DEFAULT_TIMEOUT_MS);
264
273
  const totalDeadline = Date.now() + totalTimeoutMs;
265
274
  const cleanupReserveMs = Math.min(
266
275
  MAX_CLEANUP_RESERVE_MS,
267
- Math.max(1, Math.floor(totalTimeoutMs / 10)),
276
+ Math.max(1, Math.floor(totalTimeoutMs / 10))
268
277
  );
269
278
  const operationDeadline = Math.max(Date.now(), totalDeadline - cleanupReserveMs);
270
279
  const waitOptions = {
271
280
  deadline: operationDeadline,
272
281
  pollIntervalMs,
273
282
  sleep: sleepFn,
274
- signal,
283
+ signal
275
284
  };
276
285
  const runStep = (operation, timeoutMessage) => callWithDeadline(operation, {
277
286
  deadline: operationDeadline,
278
287
  signal,
279
- timeoutMessage,
288
+ timeoutMessage
280
289
  });
281
290
  let inputSafe = false;
282
291
  const markInputSafe = () => {
283
292
  if (inputSafe) return;
284
293
  inputSafe = true;
285
- if (typeof onInputSafe === 'function') onInputSafe();
294
+ if (typeof onInputSafe === "function") onInputSafe();
286
295
  };
287
- let preview = String(await runStep(readPreview, 'Timed out reading the Codex Terminal') || '');
296
+ let preview = String(await runStep(readPreview, "Timed out reading the Codex Terminal") || "");
288
297
  let current = codexTerminalProfileFromPreview(preview);
289
298
  if (!current) {
290
- throw new Error('Codex Terminal is not idle; wait for its composer before changing the model');
299
+ throw new Error("Codex Terminal is not idle; wait for its composer before changing the model");
291
300
  }
292
- if (
293
- codexModelMenuOptions(preview)
294
- || codexReasoningMenuOptions(preview)
295
- || codexAdvancedReasoningMenuOptions(preview)
296
- ) {
297
- throw new Error('Close the active Codex Terminal menu before changing the model');
301
+ if (codexModelMenuOptions(preview) || codexReasoningMenuOptions(preview) || codexAdvancedReasoningMenuOptions(preview)) {
302
+ throw new Error("Close the active Codex Terminal menu before changing the model");
298
303
  }
299
-
300
304
  let pickerDepth = 0;
301
305
  try {
302
306
  if (!profileMatches(current, target)) {
303
- // Sending into a TUI is an uncertain commit: the PTY may receive the
304
- // command even if the transport reply is lost. Anticipate the menu
305
- // depth before the write so bounded cleanup always sends enough Escape.
306
307
  pickerDepth = 1;
307
308
  await runStep(
308
- () => sendInput(terminalCommand('/model')),
309
- 'Timed out opening the Codex model menu',
309
+ () => sendInput(terminalCommand("/model")),
310
+ "Timed out opening the Codex model menu"
310
311
  );
311
312
  const modelMenu = await waitForPreview(
312
313
  readPreview,
313
- text => {
314
+ (text) => {
314
315
  const options = codexModelMenuOptions(text);
315
316
  return options && options.length > 0 ? options : null;
316
317
  },
317
318
  {
318
319
  ...waitOptions,
319
- timeoutMessage: 'Codex did not open its model menu',
320
+ timeoutMessage: "Codex did not open its model menu"
320
321
  }
321
322
  );
322
323
  const modelInput = modelSelectionInput(modelMenu.preview, target.model);
@@ -325,12 +326,11 @@ async function applyCodexTerminalProfile({
325
326
  }
326
327
  await runStep(
327
328
  () => sendInput(modelInput),
328
- `Timed out selecting model ${target.model}`,
329
+ `Timed out selecting model ${target.model}`
329
330
  );
330
-
331
331
  const reasoningStep = await waitForPreview(
332
332
  readPreview,
333
- text => {
333
+ (text) => {
334
334
  const nextProfile = codexTerminalProfileFromPreview(text);
335
335
  if (profileMatches(nextProfile, target)) return { complete: true };
336
336
  const options = codexReasoningMenuOptions(text);
@@ -338,10 +338,9 @@ async function applyCodexTerminalProfile({
338
338
  },
339
339
  {
340
340
  ...waitOptions,
341
- timeoutMessage: `Codex did not open the reasoning menu for ${target.model}`,
341
+ timeoutMessage: `Codex did not open the reasoning menu for ${target.model}`
342
342
  }
343
343
  );
344
-
345
344
  if (!reasoningStep.result.complete) {
346
345
  let reasoningInput = reasoningSelectionInput(reasoningStep.preview, target.effort);
347
346
  if (!reasoningInput) {
@@ -350,17 +349,17 @@ async function applyCodexTerminalProfile({
350
349
  pickerDepth = 2;
351
350
  await runStep(
352
351
  () => sendInput(moreInput),
353
- `Timed out opening advanced reasoning for ${target.model}`,
352
+ `Timed out opening advanced reasoning for ${target.model}`
354
353
  );
355
354
  const advancedStep = await waitForPreview(
356
355
  readPreview,
357
- text => {
356
+ (text) => {
358
357
  const options = codexAdvancedReasoningMenuOptions(text);
359
358
  return options && options.length > 0 ? options : null;
360
359
  },
361
360
  {
362
361
  ...waitOptions,
363
- timeoutMessage: `Codex did not open advanced reasoning for ${target.model}`,
362
+ timeoutMessage: `Codex did not open advanced reasoning for ${target.model}`
364
363
  }
365
364
  );
366
365
  reasoningInput = reasoningSelectionInput(advancedStep.preview, target.effort);
@@ -371,14 +370,14 @@ async function applyCodexTerminalProfile({
371
370
  }
372
371
  await runStep(
373
372
  () => sendInput(reasoningInput),
374
- `Timed out selecting ${target.effort} reasoning for ${target.model}`,
373
+ `Timed out selecting ${target.effort} reasoning for ${target.model}`
375
374
  );
376
375
  const applied = await waitForPreview(
377
376
  readPreview,
378
- text => profileMatches(codexTerminalProfileFromPreview(text), target),
377
+ (text) => profileMatches(codexTerminalProfileFromPreview(text), target),
379
378
  {
380
379
  ...waitOptions,
381
- timeoutMessage: `Codex did not confirm ${target.model} ${target.effort}`,
380
+ timeoutMessage: `Codex did not confirm ${target.model} ${target.effort}`
382
381
  }
383
382
  );
384
383
  pickerDepth = 0;
@@ -390,85 +389,80 @@ async function applyCodexTerminalProfile({
390
389
  current = codexTerminalProfileFromPreview(preview);
391
390
  }
392
391
  }
393
-
394
- const wantsFast = target.serviceTier === 'priority';
392
+ const wantsFast = target.serviceTier === "priority";
395
393
  if (!current) {
396
394
  current = codexTerminalProfileFromPreview(String(await runStep(
397
395
  readPreview,
398
- 'Timed out reading the active Codex model',
399
- ) || ''));
396
+ "Timed out reading the active Codex model"
397
+ ) || ""));
400
398
  }
401
- if (!current) throw new Error('Codex Terminal stopped reporting its active model');
399
+ if (!current) throw new Error("Codex Terminal stopped reporting its active model");
402
400
  if (current.fast !== wantsFast) {
403
- const fastCommand = `/fast ${wantsFast ? 'on' : 'off'}`;
404
- if (typeof readOutput === 'function') {
401
+ const fastCommand = "/fast";
402
+ if (typeof readOutput === "function") {
405
403
  const previousOutput = String(await runStep(
406
404
  readOutput,
407
- 'Timed out reading Codex Terminal output',
408
- ) || '');
405
+ "Timed out reading Codex Terminal output"
406
+ ) || "");
409
407
  await runStep(
410
408
  () => sendInput(terminalCommand(fastCommand)),
411
- `Timed out sending ${fastCommand}`,
409
+ `Timed out sending ${fastCommand}`
412
410
  );
413
- // `/fast on|off` is one non-interactive slash command. Once its full
414
- // input has been accepted, later Terminal input cannot leak into a
415
- // picker and may proceed while confirmation is observed separately.
416
411
  markInputSafe();
417
412
  const confirmation = await waitForPreview(
418
413
  readOutput,
419
- output => {
414
+ (output) => {
420
415
  const explicit = newCodexServiceTierConfirmation(previousOutput, output);
421
416
  if (explicit) return explicit;
422
417
  const renderedProfile = codexTerminalProfileFromPreview(stripAnsi(output));
423
418
  if (profileMatches(renderedProfile, target, { includeFast: true })) {
424
- return { serviceTier: wantsFast ? 'priority' : 'default', fast: wantsFast };
419
+ return { serviceTier: wantsFast ? "priority" : "default", fast: wantsFast };
425
420
  }
426
421
  return null;
427
422
  },
428
423
  {
429
424
  ...waitOptions,
430
- timeoutMessage: `Codex did not confirm its Fast mode service tier`,
425
+ timeoutMessage: `Codex did not confirm its Fast mode service tier`
431
426
  }
432
427
  );
433
428
  const confirmed = confirmation.result;
434
429
  if (confirmed.fast !== wantsFast) {
435
- throw new Error(`Codex did not ${wantsFast ? 'enable' : 'disable'} Fast mode`);
430
+ throw new Error(`Codex did not ${wantsFast ? "enable" : "disable"} Fast mode`);
436
431
  }
437
432
  current = { ...current, fast: confirmed.fast };
438
433
  } else {
439
434
  await runStep(
440
435
  () => sendInput(terminalCommand(fastCommand)),
441
- `Timed out sending ${fastCommand}`,
436
+ `Timed out sending ${fastCommand}`
442
437
  );
443
438
  markInputSafe();
444
439
  const fastApplied = await waitForPreview(
445
440
  readPreview,
446
- text => profileMatches(codexTerminalProfileFromPreview(text), target, { includeFast: true }),
441
+ (text) => profileMatches(codexTerminalProfileFromPreview(text), target, { includeFast: true }),
447
442
  {
448
443
  ...waitOptions,
449
- timeoutMessage: `Codex did not ${wantsFast ? 'enable' : 'disable'} Fast mode`,
444
+ timeoutMessage: `Codex did not ${wantsFast ? "enable" : "disable"} Fast mode`
450
445
  }
451
446
  );
452
447
  preview = fastApplied.preview;
453
448
  current = codexTerminalProfileFromPreview(preview);
454
449
  }
455
450
  }
456
-
457
451
  markInputSafe();
458
-
452
+ if (!current) throw new Error("Codex Terminal stopped reporting its active model");
459
453
  return {
460
454
  model: current.model,
461
455
  effort: current.effort,
462
- serviceTier: current.fast ? 'priority' : 'default',
456
+ serviceTier: current.fast ? "priority" : "default"
463
457
  };
464
458
  } catch (error) {
465
459
  while (pickerDepth > 0) {
466
460
  try {
467
- await callWithDeadline(() => sendInput('\x1b'), {
461
+ await callWithDeadline(() => sendInput("\x1B"), {
468
462
  deadline: totalDeadline,
469
463
  // A client disconnect still cancels the transaction, but once a
470
464
  // picker was opened we use the reserved bounded window to close it.
471
- timeoutMessage: 'Timed out closing the Codex Terminal menu',
465
+ timeoutMessage: "Timed out closing the Codex Terminal menu"
472
466
  });
473
467
  } catch {
474
468
  break;
@@ -478,16 +472,16 @@ async function applyCodexTerminalProfile({
478
472
  throw error;
479
473
  }
480
474
  }
481
-
482
- module.exports = {
475
+ // Annotate the CommonJS export names for ESM import in node:
476
+ 0 && (module.exports = {
483
477
  DEFAULT_POLL_INTERVAL_MS,
484
478
  DEFAULT_TIMEOUT_MS,
485
479
  applyCodexTerminalProfile,
486
- codexServiceTierConfirmations,
487
- codexTerminalProfileFromOutput,
488
480
  codexAdvancedReasoningMenuOptions,
489
481
  codexModelMenuOptions,
490
482
  codexReasoningMenuOptions,
483
+ codexServiceTierConfirmations,
484
+ codexTerminalProfileFromOutput,
491
485
  codexTerminalProfileFromPreview,
492
486
  modelSelectionInput,
493
487
  moreReasoningSelectionInput,
@@ -496,5 +490,5 @@ module.exports = {
496
490
  reasoningSelectionInput,
497
491
  terminalCommand,
498
492
  validateTargetProfile,
499
- waitForPreview,
500
- };
493
+ waitForPreview
494
+ });