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,46 +1,63 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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 terminal_screen_state_exports = {};
|
|
21
|
+
__export(terminal_screen_state_exports, {
|
|
22
|
+
TerminalScreenState: () => TerminalScreenState,
|
|
23
|
+
collectViewportSnapshot: () => collectViewportSnapshot,
|
|
24
|
+
collectViewportText: () => collectViewportText,
|
|
25
|
+
getTerminalCursorVisible: () => getTerminalCursorVisible
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(terminal_screen_state_exports);
|
|
28
|
+
var import_headless = require("@xterm/headless");
|
|
29
|
+
var import_addon_serialize = require("@xterm/addon-serialize");
|
|
30
|
+
const ATTR_BOLD = 1;
|
|
31
|
+
const ATTR_ITALIC = 2;
|
|
32
|
+
const ATTR_UNDERLINE = 4;
|
|
33
|
+
const ATTR_DIM = 8;
|
|
34
|
+
const ATTR_INVERSE = 16;
|
|
35
|
+
const ATTR_INVISIBLE = 32;
|
|
36
|
+
const ATTR_STRIKETHROUGH = 64;
|
|
12
37
|
function collectViewportText(terminal) {
|
|
13
38
|
const buffer = terminal.buffer.active;
|
|
14
39
|
const lines = [];
|
|
15
|
-
|
|
16
40
|
for (let y = buffer.viewportY; y < buffer.viewportY + terminal.rows; y += 1) {
|
|
17
41
|
const line = buffer.getLine(y);
|
|
18
|
-
lines.push(line ? line.translateToString(true) :
|
|
42
|
+
lines.push(line ? line.translateToString(true) : "");
|
|
19
43
|
}
|
|
20
|
-
|
|
21
|
-
while (lines.length > 0 && lines[lines.length - 1] === '') {
|
|
44
|
+
while (lines.length > 0 && lines[lines.length - 1] === "") {
|
|
22
45
|
lines.pop();
|
|
23
46
|
}
|
|
24
|
-
|
|
25
|
-
return lines.join('\n');
|
|
47
|
+
return lines.join("\n");
|
|
26
48
|
}
|
|
27
|
-
|
|
28
49
|
function collectViewportSnapshot(terminal) {
|
|
29
50
|
const buffer = terminal.buffer.active;
|
|
30
51
|
const fallbackCell = buffer.getNullCell();
|
|
31
52
|
const cells = [];
|
|
32
|
-
|
|
33
53
|
for (let row = 0; row < terminal.rows; row += 1) {
|
|
34
54
|
const line = buffer.getLine(buffer.viewportY + row);
|
|
35
55
|
const rowCells = [];
|
|
36
|
-
|
|
37
56
|
for (let col = 0; col < terminal.cols; col += 1) {
|
|
38
57
|
const cell = line ? line.getCell(col, fallbackCell) : fallbackCell;
|
|
39
58
|
if (!cell) continue;
|
|
40
|
-
|
|
41
59
|
const width = cell.getWidth ? cell.getWidth() : 1;
|
|
42
60
|
if (width === 0) continue;
|
|
43
|
-
|
|
44
61
|
let attributes = 0;
|
|
45
62
|
if (cell.isBold && cell.isBold()) attributes |= ATTR_BOLD;
|
|
46
63
|
if (cell.isItalic && cell.isItalic()) attributes |= ATTR_ITALIC;
|
|
@@ -49,55 +66,39 @@ function collectViewportSnapshot(terminal) {
|
|
|
49
66
|
if (cell.isInverse && cell.isInverse()) attributes |= ATTR_INVERSE;
|
|
50
67
|
if (cell.isInvisible && cell.isInvisible()) attributes |= ATTR_INVISIBLE;
|
|
51
68
|
if (cell.isStrikethrough && cell.isStrikethrough()) attributes |= ATTR_STRIKETHROUGH;
|
|
52
|
-
|
|
53
69
|
const bufferCell = {
|
|
54
|
-
char: cell.getChars ?
|
|
55
|
-
width
|
|
70
|
+
char: cell.getChars ? cell.getChars() || " " : " ",
|
|
71
|
+
width
|
|
56
72
|
};
|
|
57
|
-
|
|
58
73
|
const fg = cell.getFgColor ? cell.getFgColor() : -1;
|
|
59
74
|
const bg = cell.getBgColor ? cell.getBgColor() : -1;
|
|
60
|
-
|
|
61
75
|
if (Number.isFinite(fg) && fg >= 0) {
|
|
62
76
|
bufferCell.fg = fg;
|
|
63
77
|
}
|
|
64
|
-
|
|
65
78
|
if (Number.isFinite(bg) && bg >= 0) {
|
|
66
79
|
bufferCell.bg = bg;
|
|
67
80
|
}
|
|
68
|
-
|
|
69
81
|
if (attributes !== 0) {
|
|
70
82
|
bufferCell.attributes = attributes;
|
|
71
83
|
}
|
|
72
|
-
|
|
73
84
|
rowCells.push(bufferCell);
|
|
74
85
|
}
|
|
75
|
-
|
|
76
86
|
let lastNonBlankCell = rowCells.length - 1;
|
|
77
87
|
while (lastNonBlankCell >= 0) {
|
|
78
88
|
const cell = rowCells[lastNonBlankCell];
|
|
79
|
-
if (
|
|
80
|
-
cell.char !== ' ' ||
|
|
81
|
-
cell.fg !== undefined ||
|
|
82
|
-
cell.bg !== undefined ||
|
|
83
|
-
cell.attributes !== undefined
|
|
84
|
-
) {
|
|
89
|
+
if (cell.char !== " " || cell.fg !== void 0 || cell.bg !== void 0 || cell.attributes !== void 0) {
|
|
85
90
|
break;
|
|
86
91
|
}
|
|
87
92
|
lastNonBlankCell -= 1;
|
|
88
93
|
}
|
|
89
|
-
|
|
90
94
|
if (lastNonBlankCell < rowCells.length - 1) {
|
|
91
95
|
rowCells.splice(Math.max(1, lastNonBlankCell + 1));
|
|
92
96
|
}
|
|
93
|
-
|
|
94
97
|
if (rowCells.length === 0) {
|
|
95
|
-
rowCells.push({ char:
|
|
98
|
+
rowCells.push({ char: " ", width: 1 });
|
|
96
99
|
}
|
|
97
|
-
|
|
98
100
|
cells.push(rowCells);
|
|
99
101
|
}
|
|
100
|
-
|
|
101
102
|
return {
|
|
102
103
|
cols: terminal.cols,
|
|
103
104
|
rows: terminal.rows,
|
|
@@ -105,120 +106,111 @@ function collectViewportSnapshot(terminal) {
|
|
|
105
106
|
cursorX: buffer.cursorX,
|
|
106
107
|
cursorY: buffer.cursorY,
|
|
107
108
|
cursorVisible: getTerminalCursorVisible(terminal),
|
|
108
|
-
cells
|
|
109
|
+
cells
|
|
109
110
|
};
|
|
110
111
|
}
|
|
111
|
-
|
|
112
112
|
function getTerminalCursorVisible(terminal) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
// showing xterm's cursor on top of a TUI-rendered cursor.
|
|
116
|
-
const isCursorHidden = terminal && terminal._core && terminal._core.coreService
|
|
117
|
-
? terminal._core.coreService.isCursorHidden
|
|
118
|
-
: false;
|
|
113
|
+
const privateTerminal = terminal;
|
|
114
|
+
const isCursorHidden = privateTerminal._core?.coreService ? privateTerminal._core.coreService.isCursorHidden : false;
|
|
119
115
|
return isCursorHidden !== true;
|
|
120
116
|
}
|
|
121
|
-
|
|
122
117
|
class TerminalScreenState {
|
|
118
|
+
includePreviewSnapshot;
|
|
119
|
+
scrollback;
|
|
120
|
+
serializeAddon;
|
|
121
|
+
terminal;
|
|
122
|
+
pendingWrite;
|
|
123
|
+
previewDirty;
|
|
124
|
+
previewSnapshot;
|
|
125
|
+
previewText;
|
|
126
|
+
renderOutput;
|
|
127
|
+
renderOutputDirty;
|
|
128
|
+
title;
|
|
123
129
|
constructor(options = {}) {
|
|
124
130
|
const cols = options.cols || 80;
|
|
125
131
|
const rows = options.rows || 30;
|
|
126
132
|
const scrollback = options.scrollback || rows * 8;
|
|
127
133
|
this.scrollback = scrollback;
|
|
128
134
|
this.includePreviewSnapshot = options.previewSnapshot !== false;
|
|
129
|
-
|
|
130
|
-
this.terminal = new Terminal({
|
|
135
|
+
this.terminal = new import_headless.Terminal({
|
|
131
136
|
cols,
|
|
132
137
|
rows,
|
|
133
138
|
scrollback,
|
|
134
139
|
allowProposedApi: true,
|
|
135
|
-
convertEol: true
|
|
140
|
+
convertEol: true
|
|
136
141
|
});
|
|
137
|
-
this.serializeAddon = new SerializeAddon();
|
|
142
|
+
this.serializeAddon = new import_addon_serialize.SerializeAddon();
|
|
138
143
|
this.terminal.loadAddon(this.serializeAddon);
|
|
139
|
-
|
|
140
|
-
this.
|
|
141
|
-
this.
|
|
142
|
-
this.previewText = '';
|
|
144
|
+
this.title = "";
|
|
145
|
+
this.renderOutput = "";
|
|
146
|
+
this.previewText = "";
|
|
143
147
|
this.previewSnapshot = null;
|
|
144
148
|
this.previewDirty = false;
|
|
145
149
|
this.renderOutputDirty = true;
|
|
146
|
-
this.pendingWrite = Promise.resolve(
|
|
147
|
-
|
|
150
|
+
this.pendingWrite = Promise.resolve({
|
|
151
|
+
cols,
|
|
152
|
+
rows,
|
|
153
|
+
renderOutput: "",
|
|
154
|
+
previewText: "",
|
|
155
|
+
previewSnapshot: null,
|
|
156
|
+
title: ""
|
|
157
|
+
});
|
|
148
158
|
this.terminal.onTitleChange((title) => {
|
|
149
|
-
this.title = title ||
|
|
159
|
+
this.title = title || "";
|
|
150
160
|
});
|
|
151
|
-
|
|
152
161
|
this.refreshPreview();
|
|
153
162
|
}
|
|
154
|
-
|
|
155
163
|
refreshPreview() {
|
|
156
164
|
this.previewText = collectViewportText(this.terminal);
|
|
157
|
-
this.previewSnapshot = this.includePreviewSnapshot
|
|
158
|
-
? collectViewportSnapshot(this.terminal)
|
|
159
|
-
: null;
|
|
165
|
+
this.previewSnapshot = this.includePreviewSnapshot ? collectViewportSnapshot(this.terminal) : null;
|
|
160
166
|
this.previewDirty = false;
|
|
161
167
|
this.renderOutputDirty = true;
|
|
162
168
|
}
|
|
163
|
-
|
|
164
169
|
refreshRenderOutput() {
|
|
165
170
|
const serialized = this.serializeAddon.serialize({
|
|
166
|
-
scrollback: this.scrollback
|
|
171
|
+
scrollback: this.scrollback
|
|
167
172
|
});
|
|
168
|
-
|
|
169
|
-
// omits DECTCEM (CSI ? 25 h/l). Make the cursor state explicit so a fresh
|
|
170
|
-
// browser terminal does not fall back to its visible-cursor default.
|
|
171
|
-
this.renderOutput = `${serialized}\x1b[?25${getTerminalCursorVisible(this.terminal) ? 'h' : 'l'}`;
|
|
173
|
+
this.renderOutput = `${serialized}\x1B[?25${getTerminalCursorVisible(this.terminal) ? "h" : "l"}`;
|
|
172
174
|
this.renderOutputDirty = false;
|
|
173
175
|
}
|
|
174
|
-
|
|
175
176
|
refresh(options = {}) {
|
|
176
177
|
const includeRenderOutput = options.includeRenderOutput !== false;
|
|
177
178
|
this.refreshPreview();
|
|
178
179
|
if (includeRenderOutput) {
|
|
179
180
|
this.refreshRenderOutput();
|
|
180
181
|
}
|
|
181
|
-
|
|
182
182
|
return this.getState(options);
|
|
183
183
|
}
|
|
184
|
-
|
|
185
184
|
async write(data) {
|
|
186
185
|
this.pendingWrite = this.pendingWrite.then(
|
|
187
|
-
() =>
|
|
188
|
-
|
|
189
|
-
this.
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}),
|
|
186
|
+
() => new Promise((resolve) => {
|
|
187
|
+
this.terminal.write(data, () => {
|
|
188
|
+
this.previewDirty = true;
|
|
189
|
+
this.renderOutputDirty = true;
|
|
190
|
+
resolve(this.getState({
|
|
191
|
+
includeRenderOutput: false,
|
|
192
|
+
refreshPreview: false
|
|
193
|
+
}));
|
|
194
|
+
});
|
|
195
|
+
})
|
|
198
196
|
);
|
|
199
|
-
|
|
200
197
|
return this.pendingWrite;
|
|
201
198
|
}
|
|
202
|
-
|
|
203
199
|
resize(cols, rows) {
|
|
204
200
|
this.terminal.resize(cols, rows);
|
|
205
201
|
return this.refresh({ includeRenderOutput: false });
|
|
206
202
|
}
|
|
207
|
-
|
|
208
203
|
async clearBuffer() {
|
|
209
204
|
this.pendingWrite = this.pendingWrite.then(
|
|
210
|
-
() =>
|
|
211
|
-
|
|
212
|
-
this.
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}),
|
|
205
|
+
() => new Promise((resolve) => {
|
|
206
|
+
this.terminal.write("\x1B[2J\x1B[3J\x1B[H", () => {
|
|
207
|
+
this.refreshPreview();
|
|
208
|
+
resolve(this.getState({ includeRenderOutput: true }));
|
|
209
|
+
});
|
|
210
|
+
})
|
|
217
211
|
);
|
|
218
|
-
|
|
219
212
|
return this.pendingWrite;
|
|
220
213
|
}
|
|
221
|
-
|
|
222
214
|
getState(options = {}) {
|
|
223
215
|
const includeRenderOutput = options.includeRenderOutput !== false;
|
|
224
216
|
if (options.refreshPreview !== false && this.previewDirty) {
|
|
@@ -227,23 +219,23 @@ class TerminalScreenState {
|
|
|
227
219
|
if (includeRenderOutput && this.renderOutputDirty) {
|
|
228
220
|
this.refreshRenderOutput();
|
|
229
221
|
}
|
|
230
|
-
|
|
231
222
|
return {
|
|
232
223
|
cols: this.terminal.cols,
|
|
233
224
|
rows: this.terminal.rows,
|
|
234
|
-
renderOutput: includeRenderOutput ? this.renderOutput :
|
|
225
|
+
renderOutput: includeRenderOutput ? this.renderOutput : "",
|
|
235
226
|
previewText: this.previewText,
|
|
236
227
|
previewSnapshot: this.previewSnapshot,
|
|
237
|
-
title: this.title
|
|
228
|
+
title: this.title
|
|
238
229
|
};
|
|
239
230
|
}
|
|
240
|
-
|
|
241
231
|
dispose() {
|
|
242
232
|
this.terminal.dispose();
|
|
243
233
|
}
|
|
244
234
|
}
|
|
245
|
-
|
|
246
|
-
module.exports =
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
235
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
236
|
+
0 && (module.exports = {
|
|
237
|
+
TerminalScreenState,
|
|
238
|
+
collectViewportSnapshot,
|
|
239
|
+
collectViewportText,
|
|
240
|
+
getTerminalCursorVisible
|
|
241
|
+
});
|
|
@@ -1,139 +1,157 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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 terminal_screen_worker_pool_exports = {};
|
|
21
|
+
__export(terminal_screen_worker_pool_exports, {
|
|
22
|
+
DEFAULT_POOL_SIZE: () => DEFAULT_POOL_SIZE,
|
|
23
|
+
TerminalScreenWorkerPool: () => TerminalScreenWorkerPool
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(terminal_screen_worker_pool_exports);
|
|
26
|
+
var import_terminal_screen_worker = require("./terminal-screen-worker.cjs");
|
|
3
27
|
const DEFAULT_POOL_SIZE = 3;
|
|
4
28
|
const DEFAULT_RETRY_DELAY_MS = 250;
|
|
5
|
-
const MAX_RETRY_DELAY_MS =
|
|
6
|
-
|
|
29
|
+
const MAX_RETRY_DELAY_MS = 5e3;
|
|
7
30
|
function normalizePoolSize(value) {
|
|
8
31
|
const parsed = Number(value);
|
|
9
32
|
if (!Number.isFinite(parsed)) return DEFAULT_POOL_SIZE;
|
|
10
33
|
return Math.max(0, Math.min(12, Math.floor(parsed)));
|
|
11
34
|
}
|
|
12
|
-
|
|
13
35
|
class TerminalScreenWorkerPool {
|
|
36
|
+
WorkerClass;
|
|
37
|
+
consecutiveStartFailures;
|
|
38
|
+
disposePromise = null;
|
|
39
|
+
disposed;
|
|
40
|
+
idle;
|
|
41
|
+
pendingStarts;
|
|
42
|
+
retryDelayMs;
|
|
43
|
+
retryTimer;
|
|
44
|
+
readyWaiters;
|
|
45
|
+
size;
|
|
46
|
+
startTasks;
|
|
47
|
+
waiters;
|
|
48
|
+
workerOptions;
|
|
14
49
|
constructor(options = {}) {
|
|
15
50
|
this.size = normalizePoolSize(
|
|
16
|
-
options.size !==
|
|
17
|
-
? options.size
|
|
18
|
-
: process.env.FARMING_TERMINAL_SCREEN_WORKER_POOL_SIZE
|
|
51
|
+
options.size !== void 0 ? options.size : process.env.FARMING_TERMINAL_SCREEN_WORKER_POOL_SIZE
|
|
19
52
|
);
|
|
20
|
-
this.workerOptions = { ...
|
|
21
|
-
this.WorkerClass = options.WorkerClass || TerminalScreenWorker;
|
|
53
|
+
this.workerOptions = { ...options.workerOptions || {} };
|
|
54
|
+
this.WorkerClass = options.WorkerClass || import_terminal_screen_worker.TerminalScreenWorker;
|
|
22
55
|
this.idle = [];
|
|
23
56
|
this.waiters = [];
|
|
24
57
|
this.readyWaiters = [];
|
|
25
58
|
this.pendingStarts = 0;
|
|
26
|
-
this.startTasks = new Set();
|
|
59
|
+
this.startTasks = /* @__PURE__ */ new Set();
|
|
27
60
|
this.consecutiveStartFailures = 0;
|
|
28
|
-
this.retryDelayMs = Number.isFinite(options.retryDelayMs)
|
|
29
|
-
? Math.max(0, Number(options.retryDelayMs))
|
|
30
|
-
: DEFAULT_RETRY_DELAY_MS;
|
|
61
|
+
this.retryDelayMs = Number.isFinite(options.retryDelayMs) ? Math.max(0, Number(options.retryDelayMs)) : DEFAULT_RETRY_DELAY_MS;
|
|
31
62
|
this.retryTimer = null;
|
|
32
63
|
this.disposed = false;
|
|
33
|
-
|
|
34
64
|
this.ensureCapacity();
|
|
35
65
|
}
|
|
36
|
-
|
|
37
66
|
getStats() {
|
|
38
67
|
return {
|
|
39
68
|
size: this.size,
|
|
40
69
|
idle: this.idle.length,
|
|
41
70
|
pendingStarts: this.pendingStarts,
|
|
42
71
|
waiters: this.waiters.length,
|
|
43
|
-
consecutiveStartFailures: this.consecutiveStartFailures
|
|
72
|
+
consecutiveStartFailures: this.consecutiveStartFailures
|
|
44
73
|
};
|
|
45
74
|
}
|
|
46
|
-
|
|
47
75
|
ready() {
|
|
48
76
|
if (this.disposed) {
|
|
49
|
-
return Promise.reject(new Error(
|
|
77
|
+
return Promise.reject(new Error("Terminal screen worker pool is disposed"));
|
|
50
78
|
}
|
|
51
79
|
if (this.idle.length >= this.size) {
|
|
52
80
|
return Promise.resolve(this.getStats());
|
|
53
81
|
}
|
|
54
|
-
|
|
55
82
|
return new Promise((resolve, reject) => {
|
|
56
83
|
this.readyWaiters.push({ resolve, reject });
|
|
57
84
|
this.ensureCapacity();
|
|
58
85
|
});
|
|
59
86
|
}
|
|
60
|
-
|
|
61
87
|
acquire(options = {}) {
|
|
62
88
|
if (this.disposed) {
|
|
63
|
-
return Promise.reject(new Error(
|
|
89
|
+
return Promise.reject(new Error("Terminal screen worker pool is disposed"));
|
|
64
90
|
}
|
|
65
91
|
if (this.size <= 0) {
|
|
66
|
-
return Promise.reject(new Error(
|
|
92
|
+
return Promise.reject(new Error("Terminal screen worker pool has no workers configured"));
|
|
67
93
|
}
|
|
68
|
-
|
|
69
94
|
const worker = this.idle.shift();
|
|
70
95
|
if (worker) {
|
|
71
96
|
this.ensureCapacity();
|
|
72
97
|
return this.prepareCheckedWorker(worker, options);
|
|
73
98
|
}
|
|
74
|
-
|
|
75
99
|
return new Promise((resolve, reject) => {
|
|
76
100
|
this.waiters.push({ resolve, reject, options });
|
|
77
101
|
this.ensureCapacity();
|
|
78
102
|
});
|
|
79
103
|
}
|
|
80
|
-
|
|
81
104
|
ensureCapacity() {
|
|
82
105
|
if (this.disposed || this.size <= 0 || this.retryTimer) {
|
|
83
106
|
return;
|
|
84
107
|
}
|
|
85
|
-
|
|
86
108
|
const desiredStarts = this.size + this.waiters.length;
|
|
87
109
|
while (this.idle.length + this.pendingStarts < desiredStarts) {
|
|
88
110
|
this.startWorker();
|
|
89
111
|
}
|
|
90
112
|
}
|
|
91
|
-
|
|
92
113
|
startWorker() {
|
|
93
114
|
this.pendingStarts += 1;
|
|
94
115
|
let failed = false;
|
|
95
|
-
const startTask = this.createReadyWorker()
|
|
96
|
-
.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
this.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
});
|
|
116
|
+
const startTask = this.createReadyWorker().then((worker) => {
|
|
117
|
+
this.pendingStarts -= 1;
|
|
118
|
+
this.consecutiveStartFailures = 0;
|
|
119
|
+
if (this.disposed) {
|
|
120
|
+
return worker.dispose().catch(() => {
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
this.deliverWorker(worker);
|
|
124
|
+
}).catch((error) => {
|
|
125
|
+
failed = true;
|
|
126
|
+
this.pendingStarts -= 1;
|
|
127
|
+
this.consecutiveStartFailures += 1;
|
|
128
|
+
const waiter = this.waiters.shift();
|
|
129
|
+
if (waiter) {
|
|
130
|
+
waiter.reject(error);
|
|
131
|
+
}
|
|
132
|
+
if (this.pendingStarts === 0 && this.idle.length < this.size) {
|
|
133
|
+
const readyWaiters = this.readyWaiters.splice(0);
|
|
134
|
+
readyWaiters.forEach(({ reject }) => reject(error));
|
|
135
|
+
}
|
|
136
|
+
}).finally(() => {
|
|
137
|
+
this.notifyReadyWaiters();
|
|
138
|
+
if (failed) {
|
|
139
|
+
this.scheduleCapacityRetry();
|
|
140
|
+
} else {
|
|
141
|
+
this.ensureCapacity();
|
|
142
|
+
}
|
|
143
|
+
});
|
|
125
144
|
this.startTasks.add(startTask);
|
|
126
145
|
startTask.then(
|
|
127
146
|
() => this.startTasks.delete(startTask),
|
|
128
|
-
() => this.startTasks.delete(startTask)
|
|
147
|
+
() => this.startTasks.delete(startTask)
|
|
129
148
|
);
|
|
130
149
|
}
|
|
131
|
-
|
|
132
150
|
scheduleCapacityRetry() {
|
|
133
151
|
if (this.disposed || this.size <= 0 || this.retryTimer) return;
|
|
134
152
|
const delayMs = Math.min(
|
|
135
153
|
MAX_RETRY_DELAY_MS,
|
|
136
|
-
this.retryDelayMs * Math.max(1, 2 ** Math.min(this.consecutiveStartFailures - 1, 5))
|
|
154
|
+
this.retryDelayMs * Math.max(1, 2 ** Math.min(this.consecutiveStartFailures - 1, 5))
|
|
137
155
|
);
|
|
138
156
|
this.retryTimer = setTimeout(() => {
|
|
139
157
|
this.retryTimer = null;
|
|
@@ -141,7 +159,6 @@ class TerminalScreenWorkerPool {
|
|
|
141
159
|
}, delayMs);
|
|
142
160
|
this.retryTimer.unref?.();
|
|
143
161
|
}
|
|
144
|
-
|
|
145
162
|
async createReadyWorker() {
|
|
146
163
|
const worker = new this.WorkerClass(this.workerOptions);
|
|
147
164
|
try {
|
|
@@ -151,23 +168,20 @@ class TerminalScreenWorkerPool {
|
|
|
151
168
|
try {
|
|
152
169
|
await worker.dispose();
|
|
153
170
|
} catch {
|
|
154
|
-
// best effort
|
|
155
171
|
}
|
|
156
172
|
throw error;
|
|
157
173
|
}
|
|
158
174
|
}
|
|
159
|
-
|
|
160
175
|
async prepareWorker(worker, options = {}) {
|
|
161
176
|
const cols = Number(options.cols || this.workerOptions.cols || 80);
|
|
162
177
|
const rows = Number(options.rows || this.workerOptions.rows || 30);
|
|
163
|
-
if (typeof options.runtimeEpoch ===
|
|
178
|
+
if (typeof options.runtimeEpoch === "string") {
|
|
164
179
|
await worker.setRuntimeEpoch(options.runtimeEpoch, cols, rows);
|
|
165
180
|
} else if (Number.isFinite(cols) && cols > 0 && Number.isFinite(rows) && rows > 0) {
|
|
166
181
|
await worker.resize(cols, rows, 1);
|
|
167
182
|
}
|
|
168
183
|
return worker;
|
|
169
184
|
}
|
|
170
|
-
|
|
171
185
|
async prepareCheckedWorker(worker, options = {}) {
|
|
172
186
|
try {
|
|
173
187
|
return await this.prepareWorker(worker, options);
|
|
@@ -175,13 +189,11 @@ class TerminalScreenWorkerPool {
|
|
|
175
189
|
try {
|
|
176
190
|
await worker.dispose();
|
|
177
191
|
} catch {
|
|
178
|
-
// best effort
|
|
179
192
|
}
|
|
180
193
|
this.ensureCapacity();
|
|
181
194
|
throw error;
|
|
182
195
|
}
|
|
183
196
|
}
|
|
184
|
-
|
|
185
197
|
deliverWorker(worker) {
|
|
186
198
|
const waiter = this.waiters.shift();
|
|
187
199
|
if (!waiter) {
|
|
@@ -189,10 +201,8 @@ class TerminalScreenWorkerPool {
|
|
|
189
201
|
this.notifyReadyWaiters();
|
|
190
202
|
return;
|
|
191
203
|
}
|
|
192
|
-
|
|
193
204
|
this.prepareCheckedWorker(worker, waiter.options).then(waiter.resolve, waiter.reject);
|
|
194
205
|
}
|
|
195
|
-
|
|
196
206
|
notifyReadyWaiters() {
|
|
197
207
|
if (this.idle.length < this.size) {
|
|
198
208
|
return;
|
|
@@ -200,28 +210,28 @@ class TerminalScreenWorkerPool {
|
|
|
200
210
|
const waiters = this.readyWaiters.splice(0);
|
|
201
211
|
waiters.forEach(({ resolve }) => resolve(this.getStats()));
|
|
202
212
|
}
|
|
203
|
-
|
|
204
213
|
async dispose() {
|
|
205
214
|
if (this.disposePromise) {
|
|
206
215
|
return this.disposePromise;
|
|
207
216
|
}
|
|
208
|
-
|
|
209
217
|
this.disposed = true;
|
|
210
218
|
if (this.retryTimer) {
|
|
211
219
|
clearTimeout(this.retryTimer);
|
|
212
220
|
this.retryTimer = null;
|
|
213
221
|
}
|
|
214
|
-
const error = new Error(
|
|
222
|
+
const error = new Error("Terminal screen worker pool is disposed");
|
|
215
223
|
this.waiters.splice(0).forEach(({ reject }) => reject(error));
|
|
216
224
|
this.readyWaiters.splice(0).forEach(({ reject }) => reject(error));
|
|
217
225
|
const workers = this.idle.splice(0);
|
|
218
226
|
this.disposePromise = Promise.allSettled([
|
|
219
|
-
...workers.map(worker => worker.dispose()),
|
|
220
|
-
...this.startTasks
|
|
221
|
-
]).then(() =>
|
|
227
|
+
...workers.map((worker) => worker.dispose()),
|
|
228
|
+
...this.startTasks
|
|
229
|
+
]).then(() => void 0);
|
|
222
230
|
return this.disposePromise;
|
|
223
231
|
}
|
|
224
232
|
}
|
|
225
|
-
|
|
226
|
-
module.exports =
|
|
227
|
-
|
|
233
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
234
|
+
0 && (module.exports = {
|
|
235
|
+
DEFAULT_POOL_SIZE,
|
|
236
|
+
TerminalScreenWorkerPool
|
|
237
|
+
});
|