farming-code 2.2.29 → 2.2.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/README.md +25 -66
  2. package/README.zh_cn.md +15 -66
  3. package/THIRD_PARTY_NOTICES.md +7 -0
  4. package/backend/acp/{client-services.js → client-services.cjs} +132 -134
  5. package/backend/acp/packaged-claude-acp.cjs +37 -0
  6. package/backend/acp/packaged-codex-acp.cjs +37 -0
  7. package/backend/acp/patch-decisions.cjs +182 -0
  8. package/backend/acp/permission-security.cjs +131 -0
  9. package/backend/{acp-checkpoint-store.js → acp-checkpoint-store.cjs} +90 -59
  10. package/backend/{acp-runtime.js → acp-runtime.cjs} +1219 -1125
  11. package/backend/acp-session-state.cjs +622 -0
  12. package/backend/acp-transcript.cjs +525 -0
  13. package/backend/agent-env.cjs +257 -0
  14. package/backend/agent-extension-discovery.cjs +452 -0
  15. package/backend/agent-extension-inventory.cjs +116 -0
  16. package/backend/agent-json-stream.cjs +283 -0
  17. package/backend/agent-lifecycle-journal.cjs +185 -0
  18. package/backend/{agent-manager.js → agent-manager.cjs} +3116 -4275
  19. package/backend/agent-order-transaction.cjs +85 -0
  20. package/backend/agent-order.cjs +159 -0
  21. package/backend/agent-provider-session.cjs +98 -0
  22. package/backend/agent-runtime-binding.cjs +179 -0
  23. package/backend/agent-session-history.cjs +1022 -0
  24. package/backend/agent-session-inventory.cjs +291 -0
  25. package/backend/async-cache.cjs +104 -0
  26. package/backend/atomic-json-store.cjs +67 -0
  27. package/backend/auth.cjs +261 -0
  28. package/backend/authoritative-inventory-cache.cjs +383 -0
  29. package/backend/business-health.cjs +68 -0
  30. package/backend/chat-runtime.cjs +50 -0
  31. package/backend/claude-settings.cjs +132 -0
  32. package/backend/cli-agents.cjs +435 -0
  33. package/backend/codex-context-window.cjs +196 -0
  34. package/backend/codex-models.cjs +228 -0
  35. package/backend/codex-session-archive.cjs +82 -0
  36. package/backend/codex-session-history.cjs +590 -0
  37. package/backend/{codex-terminal-profile.js → codex-terminal-profile.cjs} +149 -155
  38. package/backend/codex-transcript-sanitizer.cjs +130 -0
  39. package/backend/codex-transcript.cjs +2107 -0
  40. package/backend/command-runner-child.cjs +105 -0
  41. package/backend/config-manager.cjs +1263 -0
  42. package/backend/control-api.cjs +439 -0
  43. package/backend/data/LICENSE.cua +21 -0
  44. package/backend/executable-discovery.cjs +204 -0
  45. package/backend/farming-agent-bootstrap.cjs +81 -0
  46. package/backend/farming-agent-bootstrap.zh_cn.md +6 -2
  47. package/backend/{farming-app-cli.js → farming-app-cli.cjs} +441 -493
  48. package/backend/farming-cli.cjs +414 -0
  49. package/backend/farming-net-pass.cjs +319 -0
  50. package/backend/farming-net-registry.cjs +123 -0
  51. package/backend/farming-net-server.cjs +309 -0
  52. package/backend/farming-session-store.cjs +651 -0
  53. package/backend/git-worktree-info.cjs +181 -0
  54. package/backend/haiku-token.cjs +828 -0
  55. package/backend/index-html.cjs +96 -0
  56. package/backend/input-parts.cjs +68 -0
  57. package/backend/input-routing.cjs +40 -0
  58. package/backend/{local-session-engine.js → local-session-engine.cjs} +276 -282
  59. package/backend/main-agent-skills.cjs +309 -0
  60. package/backend/main-page-session.cjs +132 -0
  61. package/backend/native-pty-controller-generation.cjs +139 -0
  62. package/backend/{native-pty-host-client.js → native-pty-host-client.cjs} +338 -346
  63. package/backend/native-pty-host-identity.cjs +125 -0
  64. package/backend/native-pty-host-path.cjs +68 -0
  65. package/backend/{native-pty-host.js → native-pty-host.cjs} +480 -569
  66. package/backend/native-session-engine.cjs +296 -0
  67. package/backend/network.cjs +57 -0
  68. package/backend/npm-update-helper.cjs +399 -0
  69. package/backend/packaged-node-pty.cjs +120 -0
  70. package/backend/preview-session-manager.cjs +89 -0
  71. package/backend/provider-adapters.cjs +492 -0
  72. package/backend/provider-home-configuration.cjs +211 -0
  73. package/backend/provider-session-id.cjs +79 -0
  74. package/backend/provider-session-service.cjs +333 -0
  75. package/backend/qr-share-tickets.cjs +119 -0
  76. package/backend/resource-broadcast-protocol.cjs +50 -0
  77. package/backend/review-diff-router.cjs +202 -0
  78. package/backend/review-diff-service.cjs +1267 -0
  79. package/backend/review-session-router.cjs +93 -0
  80. package/backend/review-session-service.cjs +470 -0
  81. package/backend/review-session-store.cjs +161 -0
  82. package/backend/review-state-router.cjs +132 -0
  83. package/backend/review-state-store.cjs +299 -0
  84. package/backend/run-history-store.cjs +97 -0
  85. package/backend/runtime-dependency-manager.cjs +893 -0
  86. package/backend/runtime-executable-invocation.cjs +37 -0
  87. package/backend/runtime-observation.cjs +96 -0
  88. package/backend/server-process-identity.cjs +70 -0
  89. package/backend/server.cjs +3356 -0
  90. package/backend/session-engine-bridge.cjs +144 -0
  91. package/backend/session-engine-router.cjs +105 -0
  92. package/backend/session-engine.cjs +64 -0
  93. package/backend/session-stream-protocol.cjs +181 -0
  94. package/backend/shell-busy-integration.cjs +442 -0
  95. package/backend/slash-command-discovery.cjs +423 -0
  96. package/backend/storage-layout.cjs +263 -0
  97. package/backend/system-monitor.cjs +96 -0
  98. package/backend/terminal-attach-checkpoint.cjs +73 -0
  99. package/backend/terminal-exit-quiescence.cjs +57 -0
  100. package/backend/{terminal-reducer-flow-control.js → terminal-reducer-flow-control.cjs} +45 -22
  101. package/backend/terminal-runtime-cleanup.cjs +99 -0
  102. package/backend/{terminal-screen-state.js → terminal-screen-state.cjs} +100 -108
  103. package/backend/{terminal-screen-worker-pool.js → terminal-screen-worker-pool.cjs} +89 -79
  104. package/backend/{terminal-screen-worker-thread.js → terminal-screen-worker-thread.cjs} +64 -65
  105. package/backend/terminal-screen-worker.cjs +352 -0
  106. package/backend/terminal-state-serialization.cjs +147 -0
  107. package/backend/{terminal-status.js → terminal-status.cjs} +137 -187
  108. package/backend/theme-manager.cjs +185 -0
  109. package/backend/update-service.cjs +675 -0
  110. package/backend/usage-forecast.cjs +95 -0
  111. package/backend/{usage-history-client.js → usage-history-client.cjs} +144 -94
  112. package/backend/usage-history-smoke.cjs +85 -0
  113. package/backend/usage-history-worker.cjs +60 -0
  114. package/backend/{usage-monitor.js → usage-monitor.cjs} +363 -390
  115. package/backend/workspace-directory.cjs +239 -0
  116. package/backend/workspace-discovery.cjs +271 -0
  117. package/backend/{workspace-file-router.js → workspace-file-router.cjs} +213 -282
  118. package/backend/{workspace-file-service.js → workspace-file-service.cjs} +1139 -1318
  119. package/backend/workspace-root-registry.cjs +192 -0
  120. package/bin/farming +1 -1
  121. package/config/farming.deploy.env.example +1 -1
  122. package/config/farming.install.env.example +1 -1
  123. package/dist/acp/codex-acp-1.1.4.mjs +405 -8
  124. package/dist/assets/App-BCkdpWB6.css +1 -0
  125. package/dist/assets/App-CRjKpaGp.js +697 -0
  126. package/dist/assets/CodeSelect-Ci8sKZPU.js +1 -0
  127. package/dist/assets/CodeSelect-T2eNzrOc.css +1 -0
  128. package/dist/assets/{FileEditorMarkdownPreview-Cs9cLv8a.js → FileEditorMarkdownPreview-V06QHlAg.js} +55 -55
  129. package/dist/assets/FileEditorPane-BX-Wjg9U.js +2 -0
  130. package/dist/assets/IconGlyphs-YhV7tqd4.js +1 -0
  131. package/dist/assets/ProjectFilesSection-BDT2_r0o.js +12 -0
  132. package/dist/assets/ReviewPage-BqAs5sG1.js +3 -0
  133. package/dist/assets/code-dark-B7eM_9G9.css +1 -0
  134. package/dist/assets/{cssMode-Bdg5RpcJ.js → cssMode-ADdAlxTO.js} +1 -1
  135. package/dist/assets/{editor.api2-D74ufkbr.js → editor.api2-BFLAr0YF.js} +162 -162
  136. package/dist/assets/file-icons-BpeqWkIB.js +1 -0
  137. package/dist/assets/{freemarker2-DfMDJfnE.js → freemarker2-C90q5jrp.js} +1 -1
  138. package/dist/assets/{handlebars-BEdPtzMT.js → handlebars-BwUQcEDq.js} +1 -1
  139. package/dist/assets/{html-B1fPb1QD.js → html-1s3uPKfh.js} +1 -1
  140. package/dist/assets/{htmlMode-CY2ZjHxH.js → htmlMode-xtKD99de.js} +1 -1
  141. package/dist/assets/{index-CQNaZc3l.js → index-C8MchCem.js} +3 -3
  142. package/dist/assets/{javascript-BV2OsWA0.js → javascript-Ph7ijyny.js} +1 -1
  143. package/dist/assets/{jsonMode-zd07aeuX.js → jsonMode-D-jGAnFH.js} +1 -1
  144. package/dist/assets/linkComputer-CbGyI_qx.js +1 -0
  145. package/dist/assets/{liquid-BParI24X.js → liquid-0IamE_cI.js} +1 -1
  146. package/dist/assets/{lspLanguageFeatures-BzredkoV.js → lspLanguageFeatures-BxnQunWF.js} +1 -1
  147. package/dist/assets/main-CLKXa6hf.css +1 -0
  148. package/dist/assets/{mdx-vGzUJN98.js → mdx-DdNmfivn.js} +1 -1
  149. package/dist/assets/{monaco.contribution-BmaeBQEc.js → monaco.contribution-B43jsUs1.js} +2 -2
  150. package/dist/assets/{python-CUwdLgsI.js → python-IAt4X5TS.js} +1 -1
  151. package/dist/assets/{razor-BScebUxU.js → razor-DRkFYW0S.js} +1 -1
  152. package/dist/assets/review-C8-oPKXk.css +1 -0
  153. package/dist/assets/{tsMode-DzUAibXK.js → tsMode-_d_4U2gf.js} +1 -1
  154. package/dist/assets/{typescript-D9EOeM7N.js → typescript-C7zcMq9l.js} +1 -1
  155. package/dist/assets/{workers-DAiomYZM.js → workers-D0nOyJzf.js} +1 -1
  156. package/dist/assets/workspace-editor-model-DND_Y-Bj.js +1 -0
  157. package/dist/assets/workspace-editor-monaco-BPWhgcIB.js +4 -0
  158. package/dist/assets/workspace-editor-monaco-N641qPjX.js +1 -0
  159. package/dist/assets/workspace-view-state-k1bTlJ_Z.js +13 -0
  160. package/dist/assets/{xml-wWl1dhkQ.js → xml-BR-HvxT8.js} +1 -1
  161. package/dist/assets/{yaml-Dc2WDaOZ.js → yaml-YtFQwh4q.js} +1 -1
  162. package/dist/index.html +2 -1
  163. package/extensions/browser/backend/agent-browser-runtime.cjs +1040 -0
  164. package/extensions/browser/backend/agent-capability.cjs +85 -0
  165. package/extensions/browser/backend/browser-mcp-server.cjs +655 -0
  166. package/extensions/browser/backend/browser-resource-manager.cjs +1486 -0
  167. package/extensions/browser/backend/browser-resource-store.cjs +228 -0
  168. package/extensions/browser/backend/browser-router.cjs +203 -0
  169. package/extensions/browser/backend/executable-discovery.cjs +248 -0
  170. package/extensions/browser/backend/farming-browser-client.cjs +116 -0
  171. package/extensions/browser/backend/index.cjs +32 -0
  172. package/extensions/browser/backend/managed-chromium-installer.cjs +833 -0
  173. package/extensions/browser/bin/farming-browser +16 -7
  174. package/extensions/computer/backend/agent-capability.cjs +72 -0
  175. package/extensions/computer/backend/computer-constants.cjs +59 -0
  176. package/extensions/computer/backend/computer-mcp-server.cjs +182 -0
  177. package/extensions/computer/backend/computer-resource-manager.cjs +1219 -0
  178. package/extensions/computer/backend/computer-resource-store.cjs +190 -0
  179. package/extensions/computer/backend/computer-router.cjs +257 -0
  180. package/extensions/computer/backend/cua-tools.json +3067 -0
  181. package/extensions/computer/backend/farming-computer-client.cjs +84 -0
  182. package/extensions/computer/backend/index.cjs +35 -0
  183. package/extensions/computer/backend/isolated-browser-provider.cjs +157 -0
  184. package/extensions/computer/bin/farming-computer +131 -0
  185. package/frontend/farming-net/app.js +255 -262
  186. package/frontend/ghostty-loader.js +24 -20
  187. package/frontend/reading-anchor.js +210 -193
  188. package/frontend/runtime-paths.js +24 -26
  189. package/frontend/session-bridge.js +90 -111
  190. package/frontend/session-modal-bridge.js +184 -302
  191. package/frontend/skin-bridge.js +20 -23
  192. package/frontend/skins/crt/app.js +7686 -7901
  193. package/frontend/skins/crt/effects.js +7 -6
  194. package/frontend/skins/crt/index.html +6 -6
  195. package/frontend/skins/crt/styles/markdown.css +4 -4
  196. package/frontend/terminal-bridge.js +174 -181
  197. package/frontend/terminal-replay.js +320 -345
  198. package/frontend/theme-loader.js +55 -71
  199. package/index.html +1 -0
  200. package/package.json +64 -37
  201. package/shared/backend-connection-status.js +38 -69
  202. package/shared/browser-protocol.js +235 -110
  203. package/shared/websocket-liveness.js +40 -0
  204. package/backend/acp/packaged-claude-acp.js +0 -13
  205. package/backend/acp/packaged-codex-acp.js +0 -13
  206. package/backend/acp/patch-decisions.js +0 -153
  207. package/backend/acp/permission-security.js +0 -108
  208. package/backend/acp-session-state.js +0 -644
  209. package/backend/acp-transcript.js +0 -512
  210. package/backend/agent-env.js +0 -250
  211. package/backend/agent-json-stream.js +0 -268
  212. package/backend/agent-lifecycle-journal.js +0 -133
  213. package/backend/agent-memory-report.js +0 -583
  214. package/backend/agent-order.js +0 -166
  215. package/backend/agent-provider-session.js +0 -76
  216. package/backend/agent-runtime-binding.js +0 -174
  217. package/backend/agent-session-history.js +0 -953
  218. package/backend/async-cache.js +0 -94
  219. package/backend/atomic-json-store.js +0 -37
  220. package/backend/auth.js +0 -251
  221. package/backend/bundle-update-helper.js +0 -113
  222. package/backend/chat-runtime.js +0 -28
  223. package/backend/claude-settings.js +0 -121
  224. package/backend/cli-agents.js +0 -486
  225. package/backend/codex-context-window.js +0 -189
  226. package/backend/codex-models.js +0 -226
  227. package/backend/codex-rollout-follower.js +0 -326
  228. package/backend/codex-session-archive.js +0 -65
  229. package/backend/codex-session-history.js +0 -647
  230. package/backend/codex-transcript-sanitizer.js +0 -115
  231. package/backend/codex-transcript.js +0 -2564
  232. package/backend/command-runner-child.js +0 -67
  233. package/backend/config-manager.js +0 -1133
  234. package/backend/control-api.js +0 -455
  235. package/backend/executable-discovery.js +0 -216
  236. package/backend/farming-agent-bootstrap.js +0 -49
  237. package/backend/farming-cli.js +0 -457
  238. package/backend/farming-net-pass.js +0 -285
  239. package/backend/farming-net-registry.js +0 -112
  240. package/backend/farming-net-server.js +0 -298
  241. package/backend/farming-session-store.js +0 -677
  242. package/backend/git-worktree-info.js +0 -181
  243. package/backend/haiku-token.js +0 -772
  244. package/backend/index-html.js +0 -62
  245. package/backend/input-parts.js +0 -54
  246. package/backend/input-routing.js +0 -24
  247. package/backend/json-cli-runtime.js +0 -275
  248. package/backend/main-agent-skills.js +0 -305
  249. package/backend/main-page-session.js +0 -122
  250. package/backend/native-pty-controller-generation.js +0 -106
  251. package/backend/native-pty-host-identity.js +0 -86
  252. package/backend/native-pty-host-path.js +0 -42
  253. package/backend/native-session-engine.js +0 -268
  254. package/backend/network.js +0 -23
  255. package/backend/npm-update-helper.js +0 -374
  256. package/backend/packaged-node-pty.js +0 -99
  257. package/backend/preview-session-manager.js +0 -68
  258. package/backend/provider-adapters.js +0 -399
  259. package/backend/provider-session-id.js +0 -47
  260. package/backend/provider-session-service.js +0 -345
  261. package/backend/qr-share-tickets.js +0 -100
  262. package/backend/review-diff-router.js +0 -180
  263. package/backend/review-diff-service.js +0 -1270
  264. package/backend/review-session-router.js +0 -74
  265. package/backend/review-session-service.js +0 -446
  266. package/backend/review-session-store.js +0 -151
  267. package/backend/review-state-router.js +0 -116
  268. package/backend/review-state-store.js +0 -286
  269. package/backend/run-history-store.js +0 -67
  270. package/backend/runtime-dependency-manager.js +0 -759
  271. package/backend/runtime-executable-invocation.js +0 -20
  272. package/backend/runtime-observation.js +0 -81
  273. package/backend/server-process-identity.js +0 -47
  274. package/backend/server.js +0 -3267
  275. package/backend/session-engine-bridge.js +0 -129
  276. package/backend/session-engine-router.js +0 -66
  277. package/backend/session-engine.js +0 -39
  278. package/backend/session-stream-protocol.js +0 -185
  279. package/backend/shell-busy-integration.js +0 -472
  280. package/backend/slash-command-discovery.js +0 -433
  281. package/backend/storage-layout.js +0 -190
  282. package/backend/system-monitor.js +0 -77
  283. package/backend/terminal-attach-checkpoint.js +0 -74
  284. package/backend/terminal-exit-quiescence.js +0 -39
  285. package/backend/terminal-runtime-cleanup.js +0 -80
  286. package/backend/terminal-screen-worker.js +0 -337
  287. package/backend/terminal-state-serialization.js +0 -127
  288. package/backend/theme-manager.js +0 -163
  289. package/backend/update-service.js +0 -1545
  290. package/backend/usage-forecast.js +0 -86
  291. package/backend/usage-history-scanner.ts +0 -2718
  292. package/backend/usage-history-smoke.js +0 -64
  293. package/backend/usage-history-worker.js +0 -34
  294. package/backend/workspace-directory.js +0 -232
  295. package/backend/workspace-discovery.js +0 -311
  296. package/backend/workspace-root-registry.js +0 -166
  297. package/dist/assets/App-BKNUILuL.css +0 -1
  298. package/dist/assets/App-Ex2oVVXO.js +0 -693
  299. package/dist/assets/FileEditorPane-CNtuGjQ3.js +0 -2
  300. package/dist/assets/IconGlyphs-BClgag6E.js +0 -1
  301. package/dist/assets/ProjectFilesSection-Cf2BEcAN.js +0 -12
  302. package/dist/assets/ReviewPage-BRuxFaH5.js +0 -3
  303. package/dist/assets/code-dark-BEZTQwYZ.css +0 -1
  304. package/dist/assets/file-icons-BOlcJ0ZF.js +0 -1
  305. package/dist/assets/main-DK9Sy7-c.css +0 -1
  306. package/dist/assets/review-BcnwQtJv.css +0 -1
  307. package/dist/assets/workspace-editor-model-CSGCl21x.js +0 -1
  308. package/dist/assets/workspace-editor-monaco-CJNwbpCy.js +0 -4
  309. package/dist/assets/workspace-editor-monaco-CO9w8YV0.js +0 -1
  310. package/dist/assets/workspace-view-state-BjKPYp0E.js +0 -7
  311. package/extensions/browser/backend/agent-browser-runtime.js +0 -1041
  312. package/extensions/browser/backend/agent-capability.js +0 -55
  313. package/extensions/browser/backend/browser-mcp-server.js +0 -621
  314. package/extensions/browser/backend/browser-resource-manager.js +0 -1309
  315. package/extensions/browser/backend/browser-resource-store.js +0 -190
  316. package/extensions/browser/backend/browser-router.js +0 -133
  317. package/extensions/browser/backend/executable-discovery.js +0 -224
  318. package/extensions/browser/backend/farming-browser-client.js +0 -83
  319. package/extensions/browser/backend/index.js +0 -7
  320. package/extensions/browser/frontend/BrowserSidebarPortals.tsx +0 -360
  321. package/extensions/browser/frontend/BrowserViewer.tsx +0 -500
  322. package/extensions/browser/frontend/browser-resource-state.ts +0 -60
  323. package/extensions/browser/frontend/browser.css +0 -567
  324. package/extensions/browser/frontend/types.ts +0 -31
  325. package/extensions/browser/frontend/useBrowserResources.ts +0 -158
  326. package/frontend/vendor/ghostty-web/index.d.ts +0 -1842
  327. package/shared/backend-connection-status.d.ts +0 -37
  328. package/shared/browser-protocol.d.ts +0 -5
  329. /package/dist/assets/{api-w2x5QfxB.js → api-ByCV9MEr.js} +0 -0
  330. /package/dist/assets/{core-vPkV8P_m.js → core-Czwdx12k.js} +0 -0
  331. /package/dist/assets/{fsharp-DNZNZyEE.js → fsharp-BjPpkoJe.js} +0 -0
  332. /package/dist/assets/{go-_kPJjNc_.js → go-BkIDmSUP.js} +0 -0
  333. /package/dist/assets/{graphql-4HCNVt5g.js → graphql-CCJTpqi1.js} +0 -0
  334. /package/dist/assets/{hcl-C87ymY0o.js → hcl-s4z8lUFg.js} +0 -0
  335. /package/dist/assets/{ini-BYrrGNTc.js → ini-CyUW1I7Z.js} +0 -0
  336. /package/dist/assets/{java-B211rJbk.js → java-CFCcGRiM.js} +0 -0
  337. /package/dist/assets/{julia-DVPsRtBm.js → julia-DQyH_EYb.js} +0 -0
  338. /package/dist/assets/{kotlin-BYyNerjp.js → kotlin-B8hA5O51.js} +0 -0
  339. /package/dist/assets/{less-EC9UblGE.js → less-DaVdaas0.js} +0 -0
  340. /package/dist/assets/{lexon-B1yuUdqW.js → lexon-DLBhPd3y.js} +0 -0
  341. /package/dist/assets/{lua-Bo6GFzxT.js → lua-gB1c_cif.js} +0 -0
  342. /package/dist/assets/{m3-C-Y9cBVI.js → m3-C2T3z3gB.js} +0 -0
  343. /package/dist/assets/{markdown-BHu-wLbe.js → markdown-CKq-Euj1.js} +0 -0
  344. /package/dist/assets/{mips-Dkds26rX.js → mips-Bcs5qIDX.js} +0 -0
  345. /package/dist/assets/{msdax-PU4g-8_g.js → msdax-CBP48FHF.js} +0 -0
  346. /package/dist/assets/{mysql-fPpuGpS7.js → mysql-c7tiPcFj.js} +0 -0
  347. /package/dist/assets/{objective-c-Wy1e5JUf.js → objective-c-D4BZkeEV.js} +0 -0
  348. /package/dist/assets/{pascal-BIXwvrqU.js → pascal-CJDZg0MN.js} +0 -0
  349. /package/dist/assets/{pascaligo-DwR0AtL_.js → pascaligo-Bygi8Ynl.js} +0 -0
  350. /package/dist/assets/{perl-CGHAl8my.js → perl-aS8bkf7E.js} +0 -0
  351. /package/dist/assets/{pgsql-B91M73E2.js → pgsql-CzNAYFYl.js} +0 -0
  352. /package/dist/assets/{php-C70ttrCx.js → php-DOtoEFTT.js} +0 -0
  353. /package/dist/assets/{pla-BNrXaRh0.js → pla-DugRnao1.js} +0 -0
  354. /package/dist/assets/{postiats-Dv2IAZR9.js → postiats-DsXwusKh.js} +0 -0
  355. /package/dist/assets/{powerquery-CkY5Wq7J.js → powerquery-DL3o72oD.js} +0 -0
  356. /package/dist/assets/{powershell-uGIYLU3C.js → powershell-C1qHekys.js} +0 -0
  357. /package/dist/assets/{protobuf-CavfmJu-.js → protobuf-DHgsc-cH.js} +0 -0
  358. /package/dist/assets/{pug-Drqnyitx.js → pug-FZXlE_Iu.js} +0 -0
  359. /package/dist/assets/{qrcode-7uGsTEmi.js → qrcode-DJDTdjL7.js} +0 -0
  360. /package/dist/assets/{qsharp-C7yF-Dti.js → qsharp-bLyhI3DT.js} +0 -0
  361. /package/dist/assets/{r-HXLGP0_-.js → r-DjFGXbAa.js} +0 -0
  362. /package/dist/assets/{redis-C4y6mf2p.js → redis-DSoZ_V6u.js} +0 -0
  363. /package/dist/assets/{redshift-DdQrFPrv.js → redshift-CzkdCsrg.js} +0 -0
  364. /package/dist/assets/{restructuredtext-CBrf2PNj.js → restructuredtext-B_XPrGCQ.js} +0 -0
  365. /package/dist/assets/{ruby-CVtMoX2B.js → ruby-Cry2RneJ.js} +0 -0
  366. /package/dist/assets/{rust-Ckq4sbMP.js → rust-CWzdbFq1.js} +0 -0
  367. /package/dist/assets/{sb-er66OpE3.js → sb-DmofU59h.js} +0 -0
  368. /package/dist/assets/{scala-BdWZz-hH.js → scala-BUC2l-vN.js} +0 -0
  369. /package/dist/assets/{scheme-kTV_s2kP.js → scheme-CNIB_72f.js} +0 -0
  370. /package/dist/assets/{scss-Bymy2VJQ.js → scss-DcL4-NbX.js} +0 -0
  371. /package/dist/assets/{shell-bwEP1LQ1.js → shell-CgAGvSSA.js} +0 -0
  372. /package/dist/assets/{solidity-DCddeBgL.js → solidity-DSkt6O_P.js} +0 -0
  373. /package/dist/assets/{sophia-BMN3AQig.js → sophia--5ytcjDN.js} +0 -0
  374. /package/dist/assets/{sparql-CSXOLjzi.js → sparql-C1Srr7cD.js} +0 -0
  375. /package/dist/assets/{sql-COg8ewmK.js → sql-2k_O5fj7.js} +0 -0
  376. /package/dist/assets/{st-CIaZtBS_.js → st-DCCCPqfz.js} +0 -0
  377. /package/dist/assets/{swift-DXiOhUHu.js → swift-Dd8mAfOt.js} +0 -0
  378. /package/dist/assets/{systemverilog-BTDE6Dr2.js → systemverilog-B0-aZYXu.js} +0 -0
  379. /package/dist/assets/{tcl-B0zy9NvV.js → tcl-CZAZwPVX.js} +0 -0
  380. /package/dist/assets/{twig-D594l4Z1.js → twig-D-Ag0tdS.js} +0 -0
  381. /package/dist/assets/{typespec-XKVjaPqo.js → typespec-B7kTFp0Z.js} +0 -0
  382. /package/dist/assets/{useWorkspaceMenuKeyboard-Bpy_s69Z.js → useWorkspaceMenuKeyboard-uYZpDxhU.js} +0 -0
  383. /package/dist/assets/{vb-B2wYoKRV.js → vb-20w1JPum.js} +0 -0
  384. /package/dist/assets/{wgsl-D0Yf2LbK.js → wgsl-CLJfqFt0.js} +0 -0
  385. /package/dist/assets/{workspace-working-copy-C3FSR3N6.js → workspace-working-copy-Cfz07cOd.js} +0 -0
@@ -1,46 +1,63 @@
1
- const { Terminal } = require('@xterm/headless');
2
- const { SerializeAddon } = require('@xterm/addon-serialize');
3
-
4
- const ATTR_BOLD = 0x01;
5
- const ATTR_ITALIC = 0x02;
6
- const ATTR_UNDERLINE = 0x04;
7
- const ATTR_DIM = 0x08;
8
- const ATTR_INVERSE = 0x10;
9
- const ATTR_INVISIBLE = 0x20;
10
- const ATTR_STRIKETHROUGH = 0x40;
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 ? (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: ' ', width: 1 });
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
- // xterm does not currently expose DECTCEM through its public buffer API.
114
- // The headless core still tracks it, and replay must preserve it to avoid
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.title = '';
141
- this.renderOutput = '';
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
- // SerializeAddon preserves screen contents and most terminal modes, but it
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
- new Promise((resolve) => {
189
- this.terminal.write(data, () => {
190
- this.previewDirty = true;
191
- this.renderOutputDirty = true;
192
- resolve(this.getState({
193
- includeRenderOutput: false,
194
- refreshPreview: false,
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
- new Promise((resolve) => {
212
- this.terminal.write('\x1b[2J\x1b[3J\x1b[H', () => {
213
- this.refreshPreview();
214
- resolve(this.getState({ includeRenderOutput: true }));
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 = TerminalScreenState;
247
- module.exports.collectViewportText = collectViewportText;
248
- module.exports.collectViewportSnapshot = collectViewportSnapshot;
249
- module.exports.getTerminalCursorVisible = getTerminalCursorVisible;
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
- const TerminalScreenWorker = require('./terminal-screen-worker');
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 = 5000;
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 !== undefined
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 = { ...(options.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('Terminal screen worker pool is disposed'));
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('Terminal screen worker pool is disposed'));
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('Terminal screen worker pool has no workers configured'));
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
- .then((worker) => {
97
- this.pendingStarts -= 1;
98
- this.consecutiveStartFailures = 0;
99
- if (this.disposed) {
100
- return worker.dispose().catch(() => {});
101
- }
102
- this.deliverWorker(worker);
103
- })
104
- .catch((error) => {
105
- failed = true;
106
- this.pendingStarts -= 1;
107
- this.consecutiveStartFailures += 1;
108
- const waiter = this.waiters.shift();
109
- if (waiter) {
110
- waiter.reject(error);
111
- }
112
- if (this.pendingStarts === 0 && this.idle.length < this.size) {
113
- const readyWaiters = this.readyWaiters.splice(0);
114
- readyWaiters.forEach(({ reject }) => reject(error));
115
- }
116
- })
117
- .finally(() => {
118
- this.notifyReadyWaiters();
119
- if (failed) {
120
- this.scheduleCapacityRetry();
121
- } else {
122
- this.ensureCapacity();
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 === 'string') {
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('Terminal screen worker pool is disposed');
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(() => undefined);
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 = TerminalScreenWorkerPool;
227
- module.exports.DEFAULT_POOL_SIZE = DEFAULT_POOL_SIZE;
233
+ // Annotate the CommonJS export names for ESM import in node:
234
+ 0 && (module.exports = {
235
+ DEFAULT_POOL_SIZE,
236
+ TerminalScreenWorkerPool
237
+ });