farming-code 2.2.30 → 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.
- package/THIRD_PARTY_NOTICES.md +7 -0
- package/backend/acp/{client-services.js → client-services.cjs} +132 -134
- package/backend/acp/packaged-claude-acp.cjs +37 -0
- package/backend/acp/packaged-codex-acp.cjs +37 -0
- package/backend/acp/patch-decisions.cjs +182 -0
- package/backend/acp/permission-security.cjs +131 -0
- package/backend/{acp-checkpoint-store.js → acp-checkpoint-store.cjs} +90 -59
- package/backend/{acp-runtime.js → acp-runtime.cjs} +1220 -1112
- package/backend/acp-session-state.cjs +622 -0
- package/backend/acp-transcript.cjs +525 -0
- package/backend/agent-env.cjs +257 -0
- package/backend/agent-extension-discovery.cjs +452 -0
- package/backend/agent-extension-inventory.cjs +116 -0
- package/backend/agent-json-stream.cjs +283 -0
- package/backend/agent-lifecycle-journal.cjs +185 -0
- package/backend/{agent-manager.js → agent-manager.cjs} +3116 -4275
- package/backend/agent-order-transaction.cjs +85 -0
- package/backend/agent-order.cjs +159 -0
- package/backend/agent-provider-session.cjs +98 -0
- package/backend/agent-runtime-binding.cjs +179 -0
- package/backend/agent-session-history.cjs +1022 -0
- package/backend/agent-session-inventory.cjs +291 -0
- package/backend/async-cache.cjs +104 -0
- package/backend/atomic-json-store.cjs +67 -0
- package/backend/auth.cjs +261 -0
- package/backend/authoritative-inventory-cache.cjs +383 -0
- package/backend/business-health.cjs +68 -0
- package/backend/chat-runtime.cjs +50 -0
- package/backend/claude-settings.cjs +132 -0
- package/backend/cli-agents.cjs +435 -0
- package/backend/codex-context-window.cjs +196 -0
- package/backend/codex-models.cjs +228 -0
- package/backend/codex-session-archive.cjs +82 -0
- package/backend/codex-session-history.cjs +590 -0
- package/backend/{codex-terminal-profile.js → codex-terminal-profile.cjs} +149 -155
- package/backend/codex-transcript-sanitizer.cjs +130 -0
- package/backend/codex-transcript.cjs +2107 -0
- package/backend/command-runner-child.cjs +105 -0
- package/backend/config-manager.cjs +1263 -0
- package/backend/control-api.cjs +439 -0
- package/backend/data/LICENSE.cua +21 -0
- package/backend/executable-discovery.cjs +204 -0
- package/backend/farming-agent-bootstrap.cjs +81 -0
- package/backend/farming-agent-bootstrap.zh_cn.md +6 -2
- package/backend/{farming-app-cli.js → farming-app-cli.cjs} +441 -493
- package/backend/farming-cli.cjs +414 -0
- package/backend/farming-net-pass.cjs +319 -0
- package/backend/farming-net-registry.cjs +123 -0
- package/backend/farming-net-server.cjs +309 -0
- package/backend/farming-session-store.cjs +651 -0
- package/backend/git-worktree-info.cjs +181 -0
- package/backend/haiku-token.cjs +828 -0
- package/backend/index-html.cjs +96 -0
- package/backend/input-parts.cjs +68 -0
- package/backend/input-routing.cjs +40 -0
- package/backend/{local-session-engine.js → local-session-engine.cjs} +276 -282
- package/backend/main-agent-skills.cjs +309 -0
- package/backend/main-page-session.cjs +132 -0
- package/backend/native-pty-controller-generation.cjs +139 -0
- package/backend/{native-pty-host-client.js → native-pty-host-client.cjs} +338 -346
- package/backend/native-pty-host-identity.cjs +125 -0
- package/backend/native-pty-host-path.cjs +68 -0
- package/backend/{native-pty-host.js → native-pty-host.cjs} +480 -569
- package/backend/native-session-engine.cjs +296 -0
- package/backend/network.cjs +57 -0
- package/backend/npm-update-helper.cjs +399 -0
- package/backend/packaged-node-pty.cjs +120 -0
- package/backend/preview-session-manager.cjs +89 -0
- package/backend/provider-adapters.cjs +492 -0
- package/backend/provider-home-configuration.cjs +211 -0
- package/backend/provider-session-id.cjs +79 -0
- package/backend/provider-session-service.cjs +333 -0
- package/backend/qr-share-tickets.cjs +119 -0
- package/backend/resource-broadcast-protocol.cjs +50 -0
- package/backend/review-diff-router.cjs +202 -0
- package/backend/review-diff-service.cjs +1267 -0
- package/backend/review-session-router.cjs +93 -0
- package/backend/review-session-service.cjs +470 -0
- package/backend/review-session-store.cjs +161 -0
- package/backend/review-state-router.cjs +132 -0
- package/backend/review-state-store.cjs +299 -0
- package/backend/run-history-store.cjs +97 -0
- package/backend/runtime-dependency-manager.cjs +893 -0
- package/backend/runtime-executable-invocation.cjs +37 -0
- package/backend/runtime-observation.cjs +96 -0
- package/backend/server-process-identity.cjs +70 -0
- package/backend/server.cjs +3356 -0
- package/backend/session-engine-bridge.cjs +144 -0
- package/backend/session-engine-router.cjs +105 -0
- package/backend/session-engine.cjs +64 -0
- package/backend/session-stream-protocol.cjs +181 -0
- package/backend/shell-busy-integration.cjs +442 -0
- package/backend/slash-command-discovery.cjs +423 -0
- package/backend/storage-layout.cjs +263 -0
- package/backend/system-monitor.cjs +96 -0
- package/backend/terminal-attach-checkpoint.cjs +73 -0
- package/backend/terminal-exit-quiescence.cjs +57 -0
- package/backend/{terminal-reducer-flow-control.js → terminal-reducer-flow-control.cjs} +45 -22
- package/backend/terminal-runtime-cleanup.cjs +99 -0
- package/backend/{terminal-screen-state.js → terminal-screen-state.cjs} +100 -108
- package/backend/{terminal-screen-worker-pool.js → terminal-screen-worker-pool.cjs} +89 -79
- package/backend/{terminal-screen-worker-thread.js → terminal-screen-worker-thread.cjs} +64 -65
- package/backend/terminal-screen-worker.cjs +352 -0
- package/backend/terminal-state-serialization.cjs +147 -0
- package/backend/{terminal-status.js → terminal-status.cjs} +137 -187
- package/backend/theme-manager.cjs +185 -0
- package/backend/{update-service.js → update-service.cjs} +258 -248
- package/backend/usage-forecast.cjs +95 -0
- package/backend/{usage-history-client.js → usage-history-client.cjs} +144 -94
- package/backend/usage-history-smoke.cjs +85 -0
- package/backend/usage-history-worker.cjs +60 -0
- package/backend/{usage-monitor.js → usage-monitor.cjs} +363 -390
- package/backend/workspace-directory.cjs +239 -0
- package/backend/workspace-discovery.cjs +271 -0
- package/backend/{workspace-file-router.js → workspace-file-router.cjs} +213 -282
- package/backend/{workspace-file-service.js → workspace-file-service.cjs} +1139 -1318
- package/backend/workspace-root-registry.cjs +192 -0
- package/bin/farming +1 -1
- package/dist/acp/codex-acp-1.1.4.mjs +18 -1
- package/dist/assets/App-BCkdpWB6.css +1 -0
- package/dist/assets/App-CRjKpaGp.js +697 -0
- package/dist/assets/CodeSelect-Ci8sKZPU.js +1 -0
- package/dist/assets/CodeSelect-T2eNzrOc.css +1 -0
- package/dist/assets/{FileEditorMarkdownPreview-Cs9cLv8a.js → FileEditorMarkdownPreview-V06QHlAg.js} +55 -55
- package/dist/assets/FileEditorPane-BX-Wjg9U.js +2 -0
- package/dist/assets/IconGlyphs-YhV7tqd4.js +1 -0
- package/dist/assets/ProjectFilesSection-BDT2_r0o.js +12 -0
- package/dist/assets/ReviewPage-BqAs5sG1.js +3 -0
- package/dist/assets/code-dark-B7eM_9G9.css +1 -0
- package/dist/assets/{cssMode-Bdg5RpcJ.js → cssMode-ADdAlxTO.js} +1 -1
- package/dist/assets/{editor.api2-D74ufkbr.js → editor.api2-BFLAr0YF.js} +162 -162
- package/dist/assets/file-icons-BpeqWkIB.js +1 -0
- package/dist/assets/{freemarker2-DfMDJfnE.js → freemarker2-C90q5jrp.js} +1 -1
- package/dist/assets/{handlebars-BEdPtzMT.js → handlebars-BwUQcEDq.js} +1 -1
- package/dist/assets/{html-B1fPb1QD.js → html-1s3uPKfh.js} +1 -1
- package/dist/assets/{htmlMode-CY2ZjHxH.js → htmlMode-xtKD99de.js} +1 -1
- package/dist/assets/{index-D-zetSol.js → index-C8MchCem.js} +3 -3
- package/dist/assets/{javascript-BV2OsWA0.js → javascript-Ph7ijyny.js} +1 -1
- package/dist/assets/{jsonMode-zd07aeuX.js → jsonMode-D-jGAnFH.js} +1 -1
- package/dist/assets/linkComputer-CbGyI_qx.js +1 -0
- package/dist/assets/{liquid-BParI24X.js → liquid-0IamE_cI.js} +1 -1
- package/dist/assets/{lspLanguageFeatures-BzredkoV.js → lspLanguageFeatures-BxnQunWF.js} +1 -1
- package/dist/assets/main-CLKXa6hf.css +1 -0
- package/dist/assets/{mdx-vGzUJN98.js → mdx-DdNmfivn.js} +1 -1
- package/dist/assets/{monaco.contribution-BmaeBQEc.js → monaco.contribution-B43jsUs1.js} +2 -2
- package/dist/assets/{python-CUwdLgsI.js → python-IAt4X5TS.js} +1 -1
- package/dist/assets/{razor-BScebUxU.js → razor-DRkFYW0S.js} +1 -1
- package/dist/assets/review-C8-oPKXk.css +1 -0
- package/dist/assets/{tsMode-DzUAibXK.js → tsMode-_d_4U2gf.js} +1 -1
- package/dist/assets/{typescript-D9EOeM7N.js → typescript-C7zcMq9l.js} +1 -1
- package/dist/assets/{workers-DAiomYZM.js → workers-D0nOyJzf.js} +1 -1
- package/dist/assets/workspace-editor-model-DND_Y-Bj.js +1 -0
- package/dist/assets/workspace-editor-monaco-BPWhgcIB.js +4 -0
- package/dist/assets/workspace-editor-monaco-N641qPjX.js +1 -0
- package/dist/assets/workspace-view-state-k1bTlJ_Z.js +13 -0
- package/dist/assets/{xml-wWl1dhkQ.js → xml-BR-HvxT8.js} +1 -1
- package/dist/assets/{yaml-Dc2WDaOZ.js → yaml-YtFQwh4q.js} +1 -1
- package/dist/index.html +1 -1
- package/extensions/browser/backend/agent-browser-runtime.cjs +1040 -0
- package/extensions/browser/backend/agent-capability.cjs +85 -0
- package/extensions/browser/backend/browser-mcp-server.cjs +655 -0
- package/extensions/browser/backend/browser-resource-manager.cjs +1486 -0
- package/extensions/browser/backend/browser-resource-store.cjs +228 -0
- package/extensions/browser/backend/browser-router.cjs +203 -0
- package/extensions/browser/backend/executable-discovery.cjs +248 -0
- package/extensions/browser/backend/farming-browser-client.cjs +116 -0
- package/extensions/browser/backend/index.cjs +32 -0
- package/extensions/browser/backend/managed-chromium-installer.cjs +833 -0
- package/extensions/browser/bin/farming-browser +16 -7
- package/extensions/computer/backend/agent-capability.cjs +72 -0
- package/extensions/computer/backend/computer-constants.cjs +59 -0
- package/extensions/computer/backend/computer-mcp-server.cjs +182 -0
- package/extensions/computer/backend/computer-resource-manager.cjs +1219 -0
- package/extensions/computer/backend/computer-resource-store.cjs +190 -0
- package/extensions/computer/backend/computer-router.cjs +257 -0
- package/extensions/computer/backend/cua-tools.json +3067 -0
- package/extensions/computer/backend/farming-computer-client.cjs +84 -0
- package/extensions/computer/backend/index.cjs +35 -0
- package/extensions/computer/backend/isolated-browser-provider.cjs +157 -0
- package/extensions/computer/bin/farming-computer +131 -0
- package/frontend/farming-net/app.js +255 -262
- package/frontend/ghostty-loader.js +24 -20
- package/frontend/reading-anchor.js +210 -193
- package/frontend/runtime-paths.js +24 -26
- package/frontend/session-bridge.js +90 -111
- package/frontend/session-modal-bridge.js +184 -302
- package/frontend/skin-bridge.js +20 -23
- package/frontend/skins/crt/app.js +7686 -7901
- package/frontend/skins/crt/effects.js +7 -6
- package/frontend/skins/crt/index.html +6 -6
- package/frontend/skins/crt/styles/markdown.css +4 -4
- package/frontend/terminal-bridge.js +174 -181
- package/frontend/terminal-replay.js +320 -345
- package/frontend/theme-loader.js +55 -71
- package/package.json +64 -37
- package/shared/backend-connection-status.js +38 -69
- package/shared/browser-protocol.js +235 -110
- package/shared/websocket-liveness.js +40 -0
- package/backend/acp/packaged-claude-acp.js +0 -13
- package/backend/acp/packaged-codex-acp.js +0 -13
- package/backend/acp/patch-decisions.js +0 -153
- package/backend/acp/permission-security.js +0 -108
- package/backend/acp-session-state.js +0 -634
- package/backend/acp-transcript.js +0 -512
- package/backend/agent-env.js +0 -250
- package/backend/agent-json-stream.js +0 -268
- package/backend/agent-lifecycle-journal.js +0 -133
- package/backend/agent-order.js +0 -166
- package/backend/agent-provider-session.js +0 -76
- package/backend/agent-runtime-binding.js +0 -174
- package/backend/agent-session-history.js +0 -986
- package/backend/async-cache.js +0 -94
- package/backend/atomic-json-store.js +0 -37
- package/backend/auth.js +0 -251
- package/backend/chat-runtime.js +0 -28
- package/backend/claude-settings.js +0 -121
- package/backend/cli-agents.js +0 -486
- package/backend/codex-context-window.js +0 -189
- package/backend/codex-models.js +0 -226
- package/backend/codex-session-archive.js +0 -65
- package/backend/codex-session-history.js +0 -647
- package/backend/codex-transcript-sanitizer.js +0 -115
- package/backend/codex-transcript.js +0 -2362
- package/backend/command-runner-child.js +0 -67
- package/backend/config-manager.js +0 -1117
- package/backend/control-api.js +0 -455
- package/backend/executable-discovery.js +0 -216
- package/backend/farming-agent-bootstrap.js +0 -49
- package/backend/farming-cli.js +0 -403
- package/backend/farming-net-pass.js +0 -285
- package/backend/farming-net-registry.js +0 -112
- package/backend/farming-net-server.js +0 -298
- package/backend/farming-session-store.js +0 -677
- package/backend/git-worktree-info.js +0 -181
- package/backend/haiku-token.js +0 -772
- package/backend/index-html.js +0 -80
- package/backend/input-parts.js +0 -54
- package/backend/input-routing.js +0 -24
- package/backend/json-cli-runtime.js +0 -275
- package/backend/main-agent-skills.js +0 -288
- package/backend/main-page-session.js +0 -122
- package/backend/native-pty-controller-generation.js +0 -106
- package/backend/native-pty-host-identity.js +0 -86
- package/backend/native-pty-host-path.js +0 -42
- package/backend/native-session-engine.js +0 -268
- package/backend/network.js +0 -23
- package/backend/npm-update-helper.js +0 -374
- package/backend/packaged-node-pty.js +0 -99
- package/backend/preview-session-manager.js +0 -68
- package/backend/provider-adapters.js +0 -399
- package/backend/provider-session-id.js +0 -47
- package/backend/provider-session-service.js +0 -345
- package/backend/qr-share-tickets.js +0 -100
- package/backend/review-diff-router.js +0 -180
- package/backend/review-diff-service.js +0 -1270
- package/backend/review-session-router.js +0 -74
- package/backend/review-session-service.js +0 -446
- package/backend/review-session-store.js +0 -151
- package/backend/review-state-router.js +0 -116
- package/backend/review-state-store.js +0 -286
- package/backend/run-history-store.js +0 -67
- package/backend/runtime-dependency-manager.js +0 -759
- package/backend/runtime-executable-invocation.js +0 -20
- package/backend/runtime-observation.js +0 -81
- package/backend/server-process-identity.js +0 -47
- package/backend/server.js +0 -3225
- package/backend/session-engine-bridge.js +0 -129
- package/backend/session-engine-router.js +0 -66
- package/backend/session-engine.js +0 -39
- package/backend/session-stream-protocol.js +0 -185
- package/backend/shell-busy-integration.js +0 -472
- package/backend/slash-command-discovery.js +0 -433
- package/backend/storage-layout.js +0 -205
- package/backend/system-monitor.js +0 -77
- package/backend/terminal-attach-checkpoint.js +0 -74
- package/backend/terminal-exit-quiescence.js +0 -39
- package/backend/terminal-runtime-cleanup.js +0 -80
- package/backend/terminal-screen-worker.js +0 -337
- package/backend/terminal-state-serialization.js +0 -127
- package/backend/theme-manager.js +0 -163
- package/backend/usage-forecast.js +0 -86
- package/backend/usage-history-scanner.ts +0 -2718
- package/backend/usage-history-smoke.js +0 -64
- package/backend/usage-history-worker.js +0 -34
- package/backend/workspace-directory.js +0 -232
- package/backend/workspace-discovery.js +0 -311
- package/backend/workspace-root-registry.js +0 -166
- package/dist/assets/App-BKNUILuL.css +0 -1
- package/dist/assets/App-Z1N7T0eM.js +0 -695
- package/dist/assets/FileEditorPane-CNtuGjQ3.js +0 -2
- package/dist/assets/IconGlyphs-BClgag6E.js +0 -1
- package/dist/assets/ProjectFilesSection-K3GHuQ4U.js +0 -12
- package/dist/assets/ReviewPage-BRuxFaH5.js +0 -3
- package/dist/assets/code-dark-kLsQLvpf.css +0 -1
- package/dist/assets/file-icons-BOlcJ0ZF.js +0 -1
- package/dist/assets/main-DUTz-Rd2.css +0 -1
- package/dist/assets/review-BcnwQtJv.css +0 -1
- package/dist/assets/workspace-editor-model-CSGCl21x.js +0 -1
- package/dist/assets/workspace-editor-monaco-CJNwbpCy.js +0 -4
- package/dist/assets/workspace-editor-monaco-CO9w8YV0.js +0 -1
- package/dist/assets/workspace-view-state-BjKPYp0E.js +0 -7
- package/extensions/browser/backend/agent-browser-runtime.js +0 -1041
- package/extensions/browser/backend/agent-capability.js +0 -55
- package/extensions/browser/backend/browser-mcp-server.js +0 -621
- package/extensions/browser/backend/browser-resource-manager.js +0 -1331
- package/extensions/browser/backend/browser-resource-store.js +0 -190
- package/extensions/browser/backend/browser-router.js +0 -141
- package/extensions/browser/backend/executable-discovery.js +0 -238
- package/extensions/browser/backend/farming-browser-client.js +0 -83
- package/extensions/browser/backend/index.js +0 -7
- package/extensions/browser/backend/managed-chromium-installer.js +0 -593
- package/extensions/browser/frontend/BrowserSidebarPortals.tsx +0 -360
- package/extensions/browser/frontend/BrowserViewer.tsx +0 -500
- package/extensions/browser/frontend/browser-resource-state.ts +0 -60
- package/extensions/browser/frontend/browser.css +0 -567
- package/extensions/browser/frontend/types.ts +0 -38
- package/extensions/browser/frontend/useBrowserResources.ts +0 -166
- package/frontend/vendor/ghostty-web/index.d.ts +0 -1842
- package/shared/backend-connection-status.d.ts +0 -37
- package/shared/browser-protocol.d.ts +0 -5
- /package/dist/assets/{api-w2x5QfxB.js → api-ByCV9MEr.js} +0 -0
- /package/dist/assets/{core-vPkV8P_m.js → core-Czwdx12k.js} +0 -0
- /package/dist/assets/{fsharp-DNZNZyEE.js → fsharp-BjPpkoJe.js} +0 -0
- /package/dist/assets/{go-_kPJjNc_.js → go-BkIDmSUP.js} +0 -0
- /package/dist/assets/{graphql-4HCNVt5g.js → graphql-CCJTpqi1.js} +0 -0
- /package/dist/assets/{hcl-C87ymY0o.js → hcl-s4z8lUFg.js} +0 -0
- /package/dist/assets/{ini-BYrrGNTc.js → ini-CyUW1I7Z.js} +0 -0
- /package/dist/assets/{java-B211rJbk.js → java-CFCcGRiM.js} +0 -0
- /package/dist/assets/{julia-DVPsRtBm.js → julia-DQyH_EYb.js} +0 -0
- /package/dist/assets/{kotlin-BYyNerjp.js → kotlin-B8hA5O51.js} +0 -0
- /package/dist/assets/{less-EC9UblGE.js → less-DaVdaas0.js} +0 -0
- /package/dist/assets/{lexon-B1yuUdqW.js → lexon-DLBhPd3y.js} +0 -0
- /package/dist/assets/{lua-Bo6GFzxT.js → lua-gB1c_cif.js} +0 -0
- /package/dist/assets/{m3-C-Y9cBVI.js → m3-C2T3z3gB.js} +0 -0
- /package/dist/assets/{markdown-BHu-wLbe.js → markdown-CKq-Euj1.js} +0 -0
- /package/dist/assets/{mips-Dkds26rX.js → mips-Bcs5qIDX.js} +0 -0
- /package/dist/assets/{msdax-PU4g-8_g.js → msdax-CBP48FHF.js} +0 -0
- /package/dist/assets/{mysql-fPpuGpS7.js → mysql-c7tiPcFj.js} +0 -0
- /package/dist/assets/{objective-c-Wy1e5JUf.js → objective-c-D4BZkeEV.js} +0 -0
- /package/dist/assets/{pascal-BIXwvrqU.js → pascal-CJDZg0MN.js} +0 -0
- /package/dist/assets/{pascaligo-DwR0AtL_.js → pascaligo-Bygi8Ynl.js} +0 -0
- /package/dist/assets/{perl-CGHAl8my.js → perl-aS8bkf7E.js} +0 -0
- /package/dist/assets/{pgsql-B91M73E2.js → pgsql-CzNAYFYl.js} +0 -0
- /package/dist/assets/{php-C70ttrCx.js → php-DOtoEFTT.js} +0 -0
- /package/dist/assets/{pla-BNrXaRh0.js → pla-DugRnao1.js} +0 -0
- /package/dist/assets/{postiats-Dv2IAZR9.js → postiats-DsXwusKh.js} +0 -0
- /package/dist/assets/{powerquery-CkY5Wq7J.js → powerquery-DL3o72oD.js} +0 -0
- /package/dist/assets/{powershell-uGIYLU3C.js → powershell-C1qHekys.js} +0 -0
- /package/dist/assets/{protobuf-CavfmJu-.js → protobuf-DHgsc-cH.js} +0 -0
- /package/dist/assets/{pug-Drqnyitx.js → pug-FZXlE_Iu.js} +0 -0
- /package/dist/assets/{qrcode-7uGsTEmi.js → qrcode-DJDTdjL7.js} +0 -0
- /package/dist/assets/{qsharp-C7yF-Dti.js → qsharp-bLyhI3DT.js} +0 -0
- /package/dist/assets/{r-HXLGP0_-.js → r-DjFGXbAa.js} +0 -0
- /package/dist/assets/{redis-C4y6mf2p.js → redis-DSoZ_V6u.js} +0 -0
- /package/dist/assets/{redshift-DdQrFPrv.js → redshift-CzkdCsrg.js} +0 -0
- /package/dist/assets/{restructuredtext-CBrf2PNj.js → restructuredtext-B_XPrGCQ.js} +0 -0
- /package/dist/assets/{ruby-CVtMoX2B.js → ruby-Cry2RneJ.js} +0 -0
- /package/dist/assets/{rust-Ckq4sbMP.js → rust-CWzdbFq1.js} +0 -0
- /package/dist/assets/{sb-er66OpE3.js → sb-DmofU59h.js} +0 -0
- /package/dist/assets/{scala-BdWZz-hH.js → scala-BUC2l-vN.js} +0 -0
- /package/dist/assets/{scheme-kTV_s2kP.js → scheme-CNIB_72f.js} +0 -0
- /package/dist/assets/{scss-Bymy2VJQ.js → scss-DcL4-NbX.js} +0 -0
- /package/dist/assets/{shell-bwEP1LQ1.js → shell-CgAGvSSA.js} +0 -0
- /package/dist/assets/{solidity-DCddeBgL.js → solidity-DSkt6O_P.js} +0 -0
- /package/dist/assets/{sophia-BMN3AQig.js → sophia--5ytcjDN.js} +0 -0
- /package/dist/assets/{sparql-CSXOLjzi.js → sparql-C1Srr7cD.js} +0 -0
- /package/dist/assets/{sql-COg8ewmK.js → sql-2k_O5fj7.js} +0 -0
- /package/dist/assets/{st-CIaZtBS_.js → st-DCCCPqfz.js} +0 -0
- /package/dist/assets/{swift-DXiOhUHu.js → swift-Dd8mAfOt.js} +0 -0
- /package/dist/assets/{systemverilog-BTDE6Dr2.js → systemverilog-B0-aZYXu.js} +0 -0
- /package/dist/assets/{tcl-B0zy9NvV.js → tcl-CZAZwPVX.js} +0 -0
- /package/dist/assets/{twig-D594l4Z1.js → twig-D-Ag0tdS.js} +0 -0
- /package/dist/assets/{typespec-XKVjaPqo.js → typespec-B7kTFp0Z.js} +0 -0
- /package/dist/assets/{useWorkspaceMenuKeyboard-Bpy_s69Z.js → useWorkspaceMenuKeyboard-uYZpDxhU.js} +0 -0
- /package/dist/assets/{vb-B2wYoKRV.js → vb-20w1JPum.js} +0 -0
- /package/dist/assets/{wgsl-D0Yf2LbK.js → wgsl-CLJfqFt0.js} +0 -0
- /package/dist/assets/{workspace-working-copy-C3FSR3N6.js → workspace-working-copy-Cfz07cOd.js} +0 -0
|
@@ -1,87 +1,115 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
3
|
-
|
|
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 =
|
|
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 ===
|
|
15
|
-
error.name =
|
|
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 ||
|
|
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
|
-
|
|
67
|
+
let timer;
|
|
68
|
+
const finish = (callback) => {
|
|
35
69
|
if (settled) return;
|
|
36
70
|
settled = true;
|
|
37
71
|
clearTimeout(timer);
|
|
38
|
-
signal?.removeEventListener(
|
|
39
|
-
callback(
|
|
72
|
+
signal?.removeEventListener("abort", onAbort);
|
|
73
|
+
callback();
|
|
40
74
|
};
|
|
41
|
-
const onAbort = () => finish(
|
|
42
|
-
|
|
43
|
-
|
|
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
|
|
46
|
-
error => finish(reject
|
|
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 ||
|
|
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 ===
|
|
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 ||
|
|
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,
|
|
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 ?
|
|
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:
|
|
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 !==
|
|
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,}.*$/,
|
|
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(
|
|
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 :
|
|
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,
|
|
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 ===
|
|
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
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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 ||
|
|
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 ||
|
|
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 ||
|
|
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 ||
|
|
240
|
-
const effort = String(profile?.effort ||
|
|
241
|
-
const serviceTier = profile?.serviceTier ===
|
|
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(
|
|
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(
|
|
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 ===
|
|
294
|
+
if (typeof onInputSafe === "function") onInputSafe();
|
|
286
295
|
};
|
|
287
|
-
let preview = String(await runStep(readPreview,
|
|
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(
|
|
299
|
+
throw new Error("Codex Terminal is not idle; wait for its composer before changing the model");
|
|
291
300
|
}
|
|
292
|
-
if (
|
|
293
|
-
|
|
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(
|
|
309
|
-
|
|
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:
|
|
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
|
-
|
|
399
|
-
) ||
|
|
396
|
+
"Timed out reading the active Codex model"
|
|
397
|
+
) || ""));
|
|
400
398
|
}
|
|
401
|
-
if (!current) throw new Error(
|
|
399
|
+
if (!current) throw new Error("Codex Terminal stopped reporting its active model");
|
|
402
400
|
if (current.fast !== wantsFast) {
|
|
403
|
-
const fastCommand =
|
|
404
|
-
if (typeof readOutput ===
|
|
401
|
+
const fastCommand = "/fast";
|
|
402
|
+
if (typeof readOutput === "function") {
|
|
405
403
|
const previousOutput = String(await runStep(
|
|
406
404
|
readOutput,
|
|
407
|
-
|
|
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 ?
|
|
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 ?
|
|
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 ?
|
|
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 ?
|
|
456
|
+
serviceTier: current.fast ? "priority" : "default"
|
|
463
457
|
};
|
|
464
458
|
} catch (error) {
|
|
465
459
|
while (pickerDepth > 0) {
|
|
466
460
|
try {
|
|
467
|
-
await callWithDeadline(() => sendInput(
|
|
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:
|
|
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
|
+
});
|