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,101 +1,116 @@
1
- const crypto = require('crypto');
2
- const fs = require('fs');
3
- const path = require('path');
4
- const { spawn } = require('child_process');
5
- const nodePty = require('../packaged-node-pty');
6
-
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 client_services_exports = {};
21
+ __export(client_services_exports, {
22
+ AcpClientFileSystem: () => AcpClientFileSystem,
23
+ AcpClientTerminalManager: () => AcpClientTerminalManager,
24
+ resolveWorkspacePath: () => resolveWorkspacePath
25
+ });
26
+ module.exports = __toCommonJS(client_services_exports);
27
+ var import_packaged_node_pty = require("../packaged-node-pty.cjs");
28
+ const crypto = require("crypto");
29
+ const fs = require("fs");
30
+ const path = require("path");
31
+ const { spawn } = require("child_process");
7
32
  const fsp = fs.promises;
8
33
  const DEFAULT_MAX_FILE_BYTES = 8 * 1024 * 1024;
9
34
  const DEFAULT_TERMINAL_OUTPUT_BYTES = 1024 * 1024;
10
35
  const MAX_TERMINAL_OUTPUT_BYTES = 16 * 1024 * 1024;
11
36
  const MAX_ACTIVE_TERMINALS_PER_AGENT = 32;
12
-
13
37
  function isInside(root, target) {
14
38
  const relative = path.relative(root, target);
15
- return relative === '' || (!relative.startsWith(`..${path.sep}`) && relative !== '..' && !path.isAbsolute(relative));
39
+ return relative === "" || !relative.startsWith(`..${path.sep}`) && relative !== ".." && !path.isAbsolute(relative);
16
40
  }
17
-
18
41
  function requireMatchingSession(binding, params) {
19
- if (!binding?.sessionId || String(params?.sessionId || '') !== binding.sessionId) {
20
- throw new Error('ACP client request does not match the active session');
42
+ if (!binding?.sessionId || String(params?.sessionId || "") !== binding.sessionId) {
43
+ throw new Error("ACP client request does not match the active session");
21
44
  }
22
45
  }
23
-
24
46
  function requireOpenBinding(binding) {
25
- if (binding?.exited === true) throw new Error('ACP Agent connection is closed');
47
+ if (binding?.exited === true) throw new Error("ACP Agent connection is closed");
26
48
  }
27
-
28
49
  async function resolveWorkspacePath(binding, requestedPath, options = {}) {
29
- const value = String(requestedPath || '');
30
- if (!path.isAbsolute(value)) throw new Error('ACP file and terminal paths must be absolute');
50
+ const value = String(requestedPath || "");
51
+ if (!path.isAbsolute(value)) throw new Error("ACP file and terminal paths must be absolute");
31
52
  const logicalRoot = path.resolve(binding.cwd);
32
53
  const root = await fsp.realpath(binding.cwd);
33
54
  const logicalTarget = path.resolve(value);
34
- const target = isInside(logicalRoot, logicalTarget)
35
- ? path.resolve(root, path.relative(logicalRoot, logicalTarget))
36
- : isInside(root, logicalTarget)
37
- ? logicalTarget
38
- : null;
39
- if (!target) throw new Error('ACP path is outside the Agent workspace');
40
-
55
+ const target = isInside(logicalRoot, logicalTarget) ? path.resolve(root, path.relative(logicalRoot, logicalTarget)) : isInside(root, logicalTarget) ? logicalTarget : null;
56
+ if (!target) throw new Error("ACP path is outside the Agent workspace");
41
57
  if (options.allowMissing === true) {
42
58
  const parent = await fsp.realpath(path.dirname(target));
43
- if (!isInside(root, parent)) throw new Error('ACP path resolves outside the Agent workspace');
59
+ if (!isInside(root, parent)) throw new Error("ACP path resolves outside the Agent workspace");
44
60
  return target;
45
61
  }
46
-
47
62
  const realTarget = await fsp.realpath(target);
48
- if (!isInside(root, realTarget)) throw new Error('ACP path resolves outside the Agent workspace');
63
+ if (!isInside(root, realTarget)) throw new Error("ACP path resolves outside the Agent workspace");
49
64
  return realTarget;
50
65
  }
51
-
52
66
  class AcpClientFileSystem {
67
+ maxFileBytes;
53
68
  constructor(options = {}) {
54
69
  this.maxFileBytes = options.maxFileBytes || DEFAULT_MAX_FILE_BYTES;
55
70
  }
56
-
57
71
  async readTextFile(binding, params) {
58
72
  requireMatchingSession(binding, params);
59
73
  const target = await resolveWorkspacePath(binding, params.path);
60
74
  const stat = await fsp.stat(target);
61
- if (!stat.isFile()) throw new Error('ACP read path must be a file');
62
- if (stat.size > this.maxFileBytes) throw new Error('ACP text file is too large to read');
63
- const content = await fsp.readFile(target, 'utf8');
75
+ if (!stat.isFile()) throw new Error("ACP read path must be a file");
76
+ if (stat.size > this.maxFileBytes) throw new Error("ACP text file is too large to read");
77
+ const content = await fsp.readFile(target, "utf8");
64
78
  const requestedLine = params.line == null ? 1 : Number(params.line);
65
79
  const requestedLimit = params.limit == null ? null : Number(params.limit);
66
- if (!Number.isInteger(requestedLine) || requestedLine < 1) throw new Error('ACP read line must be a positive integer');
80
+ if (!Number.isInteger(requestedLine) || requestedLine < 1) throw new Error("ACP read line must be a positive integer");
67
81
  if (requestedLimit !== null && (!Number.isInteger(requestedLimit) || requestedLimit < 0)) {
68
- throw new Error('ACP read limit must be a non-negative integer');
82
+ throw new Error("ACP read limit must be a non-negative integer");
69
83
  }
70
84
  if (requestedLine === 1 && requestedLimit === null) return { content };
71
- const lines = content.split('\n');
85
+ const lines = content.split("\n");
72
86
  const start = requestedLine - 1;
73
87
  const end = requestedLimit === null ? lines.length : start + requestedLimit;
74
- return { content: lines.slice(start, end).join('\n') };
88
+ return { content: lines.slice(start, end).join("\n") };
75
89
  }
76
-
77
90
  async writeTextFile(binding, params) {
78
91
  requireMatchingSession(binding, params);
79
- const content = String(params.content ?? '');
80
- if (Buffer.byteLength(content, 'utf8') > this.maxFileBytes) {
81
- throw new Error('ACP text file is too large to write');
92
+ const content = String(params.content ?? "");
93
+ if (Buffer.byteLength(content, "utf8") > this.maxFileBytes) {
94
+ throw new Error("ACP text file is too large to write");
82
95
  }
83
96
  const target = await resolveWorkspacePath(binding, params.path, { allowMissing: true });
84
97
  requireOpenBinding(binding);
85
- let mode = 0o666;
98
+ let mode = 438;
86
99
  try {
87
100
  const existing = await fsp.realpath(target);
88
101
  const root = await fsp.realpath(binding.cwd);
89
- if (!isInside(root, existing)) throw new Error('ACP path resolves outside the Agent workspace');
102
+ if (!isInside(root, existing)) throw new Error("ACP path resolves outside the Agent workspace");
90
103
  const stat = await fsp.stat(existing);
91
- if (!stat.isFile()) throw new Error('ACP write path must be a file');
104
+ if (!stat.isFile()) throw new Error("ACP write path must be a file");
92
105
  mode = stat.mode;
93
106
  } catch (error) {
94
- if (error?.code !== 'ENOENT') throw error;
107
+ if (!error || typeof error !== "object" || !("code" in error) || error.code !== "ENOENT") {
108
+ throw error;
109
+ }
95
110
  }
96
111
  const temporary = path.join(
97
112
  path.dirname(target),
98
- `.${path.basename(target)}.farming-acp-${process.pid}-${crypto.randomUUID()}.tmp`,
113
+ `.${path.basename(target)}.farming-acp-${process.pid}-${crypto.randomUUID()}.tmp`
99
114
  );
100
115
  try {
101
116
  requireOpenBinding(binding);
@@ -103,38 +118,35 @@ class AcpClientFileSystem {
103
118
  requireOpenBinding(binding);
104
119
  await fsp.rename(temporary, target);
105
120
  } catch (error) {
106
- await fsp.rm(temporary, { force: true }).catch(() => {});
121
+ await fsp.rm(temporary, { force: true }).catch(() => {
122
+ });
107
123
  throw error;
108
124
  }
109
125
  return {};
110
126
  }
111
127
  }
112
-
113
128
  function boundedOutputLimit(value) {
114
129
  const parsed = Number(value);
115
130
  if (!Number.isFinite(parsed) || parsed <= 0) return DEFAULT_TERMINAL_OUTPUT_BYTES;
116
131
  return Math.min(MAX_TERMINAL_OUTPUT_BYTES, Math.max(1, Math.floor(parsed)));
117
132
  }
118
-
119
133
  function trimUtf8Start(buffer, limit) {
120
134
  if (buffer.length <= limit) return { buffer, truncated: false };
121
135
  let start = buffer.length - limit;
122
- while (start < buffer.length && (buffer[start] & 0xc0) === 0x80) start += 1;
136
+ while (start < buffer.length && (buffer[start] & 192) === 128) start += 1;
123
137
  return { buffer: buffer.subarray(start), truncated: true };
124
138
  }
125
-
126
139
  class AcpClientTerminalManager {
140
+ spawn;
141
+ ptySpawn;
142
+ terminals;
143
+ pendingCreates;
127
144
  constructor(options = {}) {
128
- this.spawn = options.spawn || spawn;
129
- this.ptySpawn = typeof options.ptySpawn === 'function'
130
- ? options.ptySpawn
131
- : typeof options.spawn === 'function'
132
- ? null
133
- : nodePty.spawn;
134
- this.terminals = new Map();
135
- this.pendingCreates = new Map();
145
+ this.spawn = options.spawn || ((command, args, spawnOptions) => spawn(command, args, spawnOptions));
146
+ this.ptySpawn = typeof options.ptySpawn === "function" ? options.ptySpawn : typeof options.spawn === "function" ? null : import_packaged_node_pty.nodePty.spawn;
147
+ this.terminals = /* @__PURE__ */ new Map();
148
+ this.pendingCreates = /* @__PURE__ */ new Map();
136
149
  }
137
-
138
150
  activeCount(agentId) {
139
151
  let count = 0;
140
152
  for (const record of this.terminals.values()) {
@@ -142,21 +154,18 @@ class AcpClientTerminalManager {
142
154
  }
143
155
  return count;
144
156
  }
145
-
146
157
  reserveCreate(agentId) {
147
158
  const pending = this.pendingCreates.get(agentId) || 0;
148
159
  if (this.activeCount(agentId) + pending >= MAX_ACTIVE_TERMINALS_PER_AGENT) {
149
- throw new Error('ACP terminal limit reached for this Agent');
160
+ throw new Error("ACP terminal limit reached for this Agent");
150
161
  }
151
162
  this.pendingCreates.set(agentId, pending + 1);
152
163
  }
153
-
154
164
  releaseCreate(agentId) {
155
165
  const pending = this.pendingCreates.get(agentId) || 0;
156
166
  if (pending <= 1) this.pendingCreates.delete(agentId);
157
167
  else this.pendingCreates.set(agentId, pending - 1);
158
168
  }
159
-
160
169
  async create(binding, params) {
161
170
  requireMatchingSession(binding, params);
162
171
  this.reserveCreate(binding.agentId);
@@ -166,36 +175,20 @@ class AcpClientTerminalManager {
166
175
  this.releaseCreate(binding.agentId);
167
176
  }
168
177
  }
169
-
170
178
  async createReserved(binding, params) {
171
- const command = String(params.command || '').trim();
172
- if (!command) throw new Error('ACP terminal command is required');
173
- const cwd = params.cwd
174
- ? await resolveWorkspacePath(binding, params.cwd)
175
- : await fsp.realpath(binding.cwd);
179
+ const command = String(params.command || "").trim();
180
+ if (!command) throw new Error("ACP terminal command is required");
181
+ const cwd = params.cwd ? await resolveWorkspacePath(binding, params.cwd) : await fsp.realpath(binding.cwd);
176
182
  requireOpenBinding(binding);
177
183
  const env = { ...binding.env };
178
184
  for (const item of Array.isArray(params.env) ? params.env : []) {
179
- const name = String(item?.name || '');
180
- if (!name || name.includes('=') || name.includes('\0')) throw new Error('Invalid ACP terminal environment variable');
181
- env[name] = String(item?.value ?? '');
185
+ const name = String(item?.name || "");
186
+ if (!name || name.includes("=") || name.includes("\0")) throw new Error("Invalid ACP terminal environment variable");
187
+ env[name] = String(item?.value ?? "");
182
188
  }
183
189
  const terminalId = `acp-terminal-${crypto.randomUUID()}`;
184
190
  const args = Array.isArray(params.args) ? params.args.map(String) : [];
185
- const child = this.ptySpawn
186
- ? this.ptySpawn(command, args, {
187
- cwd,
188
- env,
189
- name: 'xterm-256color',
190
- cols: 80,
191
- rows: 24,
192
- })
193
- : this.spawn(command, args, {
194
- cwd,
195
- env,
196
- stdio: ['ignore', 'pipe', 'pipe'],
197
- });
198
- const record = {
191
+ const baseRecord = {
199
192
  terminalId,
200
193
  agentId: binding.agentId,
201
194
  sessionId: binding.sessionId,
@@ -204,141 +197,146 @@ class AcpClientTerminalManager {
204
197
  cwd,
205
198
  startedAt: Date.now(),
206
199
  endedAt: null,
207
- child,
208
200
  output: Buffer.alloc(0),
209
201
  outputLimit: boundedOutputLimit(params.outputByteLimit),
210
202
  truncated: false,
211
203
  exitStatus: null,
212
204
  released: false,
213
- waiters: [],
214
- interactive: Boolean(this.ptySpawn),
205
+ waiters: []
215
206
  };
216
- this.terminals.set(terminalId, record);
217
- const append = chunk => {
207
+ let record;
208
+ const append = (chunk) => {
218
209
  const next = Buffer.concat([record.output, Buffer.from(chunk)]);
219
210
  const bounded = trimUtf8Start(next, record.outputLimit);
220
211
  record.output = bounded.buffer;
221
212
  record.truncated = record.truncated || bounded.truncated;
222
213
  };
223
- if (record.interactive) {
214
+ if (this.ptySpawn) {
215
+ const child = this.ptySpawn(command, args, {
216
+ cwd,
217
+ env,
218
+ name: "xterm-256color",
219
+ cols: 80,
220
+ rows: 24
221
+ });
222
+ record = { ...baseRecord, child, interactive: true };
223
+ this.terminals.set(terminalId, record);
224
224
  child.onData(append);
225
- child.onExit(event => this.finish(record, {
225
+ child.onExit((event) => this.finish(record, {
226
226
  exitCode: Number.isInteger(event?.exitCode) ? event.exitCode : null,
227
- signal: Number.isInteger(event?.signal) && event.signal > 0 ? String(event.signal) : null,
227
+ signal: typeof event?.signal === "number" && Number.isInteger(event.signal) && event.signal > 0 ? String(event.signal) : null
228
228
  }));
229
229
  } else {
230
- child.stdout?.on('data', append);
231
- child.stderr?.on('data', append);
232
- child.on('error', error => {
233
- append(`${error.message || error}\n`);
234
- this.finish(record, { exitCode: null, signal: 'spawn-error' });
230
+ const child = this.spawn(command, args, {
231
+ cwd,
232
+ env,
233
+ stdio: ["ignore", "pipe", "pipe"]
234
+ });
235
+ record = { ...baseRecord, child, interactive: false };
236
+ this.terminals.set(terminalId, record);
237
+ child.stdout?.on("data", append);
238
+ child.stderr?.on("data", append);
239
+ child.on("error", (error) => {
240
+ append(`${error.message || error}
241
+ `);
242
+ this.finish(record, { exitCode: null, signal: "spawn-error" });
235
243
  });
236
- child.on('close', (code, signal) => this.finish(record, {
244
+ child.on("close", (code, signal) => this.finish(record, {
237
245
  exitCode: Number.isInteger(code) ? code : null,
238
- signal: signal ? String(signal) : null,
246
+ signal: signal ? String(signal) : null
239
247
  }));
240
248
  }
241
249
  return { terminalId };
242
250
  }
243
-
244
251
  require(binding, params, options = {}) {
245
252
  requireMatchingSession(binding, params);
246
- const record = this.terminals.get(String(params.terminalId || ''));
253
+ const record = this.terminals.get(String(params.terminalId || ""));
247
254
  if (!record || record.agentId !== binding.agentId || record.sessionId !== binding.sessionId) {
248
- throw new Error('Unknown ACP terminal');
255
+ throw new Error("Unknown ACP terminal");
249
256
  }
250
- if (record.released && options.allowReleased !== true) throw new Error('ACP terminal has been released');
257
+ if (record.released && options.allowReleased !== true) throw new Error("ACP terminal has been released");
251
258
  return record;
252
259
  }
253
-
254
260
  finish(record, exitStatus) {
255
261
  if (record.exitStatus) return;
256
262
  record.exitStatus = exitStatus;
257
263
  record.endedAt = Date.now();
258
264
  const waiters = record.waiters.splice(0);
259
- waiters.forEach(resolve => resolve({ ...exitStatus }));
265
+ waiters.forEach((resolve) => resolve({ ...exitStatus }));
260
266
  }
261
-
262
267
  output(binding, params) {
263
268
  const record = this.require(binding, params);
264
269
  return {
265
- output: record.output.toString('utf8'),
270
+ output: record.output.toString("utf8"),
266
271
  truncated: record.truncated,
267
- ...(record.exitStatus ? { exitStatus: { ...record.exitStatus } } : {}),
272
+ ...record.exitStatus ? { exitStatus: { ...record.exitStatus } } : {}
268
273
  };
269
274
  }
270
-
271
275
  waitForExit(binding, params) {
272
276
  const record = this.require(binding, params);
273
277
  if (record.exitStatus) return { ...record.exitStatus };
274
- return new Promise(resolve => record.waiters.push(resolve));
278
+ return new Promise((resolve) => record.waiters.push(resolve));
275
279
  }
276
-
277
280
  input(binding, params) {
278
281
  const record = this.require(binding, params);
279
- if (!record.interactive) throw new Error('ACP terminal does not accept interactive input');
280
- if (record.exitStatus) throw new Error('ACP terminal has already exited');
281
- const input = String(params.input ?? '');
282
- if (Buffer.byteLength(input, 'utf8') > 64 * 1024) throw new Error('ACP terminal input is too large');
282
+ if (!record.interactive) throw new Error("ACP terminal does not accept interactive input");
283
+ if (record.exitStatus) throw new Error("ACP terminal has already exited");
284
+ const input = String(params.input ?? "");
285
+ if (Buffer.byteLength(input, "utf8") > 64 * 1024) throw new Error("ACP terminal input is too large");
283
286
  record.child.write(input);
284
287
  return {};
285
288
  }
286
-
287
289
  resize(binding, params) {
288
290
  const record = this.require(binding, params);
289
291
  if (!record.interactive) return {};
290
292
  const cols = Number(params.cols);
291
293
  const rows = Number(params.rows);
292
- if (!Number.isInteger(cols) || cols < 2 || cols > 1000 || !Number.isInteger(rows) || rows < 1 || rows > 1000) {
293
- throw new Error('ACP terminal size is invalid');
294
+ if (!Number.isInteger(cols) || cols < 2 || cols > 1e3 || !Number.isInteger(rows) || rows < 1 || rows > 1e3) {
295
+ throw new Error("ACP terminal size is invalid");
294
296
  }
295
297
  if (!record.exitStatus) record.child.resize(cols, rows);
296
298
  return {};
297
299
  }
298
-
299
300
  kill(binding, params) {
300
301
  const record = this.require(binding, params);
301
- if (!record.exitStatus && !record.child.killed) record.child.kill('SIGTERM');
302
+ if (!record.exitStatus && !record.child.killed) record.child.kill("SIGTERM");
302
303
  return {};
303
304
  }
304
-
305
305
  release(binding, params) {
306
306
  const record = this.require(binding, params);
307
- if (!record.exitStatus && !record.child.killed) record.child.kill('SIGTERM');
307
+ if (!record.exitStatus && !record.child.killed) record.child.kill("SIGTERM");
308
308
  record.released = true;
309
309
  return {};
310
310
  }
311
-
312
311
  display(terminalId) {
313
- const record = this.terminals.get(String(terminalId || ''));
312
+ const record = this.terminals.get(String(terminalId || ""));
314
313
  if (!record) return null;
315
314
  return {
316
315
  command: record.command,
317
316
  args: [...record.args],
318
317
  cwd: record.cwd,
319
- output: record.output.toString('utf8'),
318
+ output: record.output.toString("utf8"),
320
319
  truncated: record.truncated,
321
320
  exitStatus: record.exitStatus ? { ...record.exitStatus } : null,
322
321
  released: record.released,
323
322
  startedAt: record.startedAt,
324
323
  endedAt: record.endedAt,
325
324
  durationMs: Math.max(0, (record.endedAt || Date.now()) - record.startedAt),
326
- interactive: record.interactive,
325
+ interactive: record.interactive
327
326
  };
328
327
  }
329
-
330
328
  cleanupAgent(agentId) {
331
329
  for (const [terminalId, record] of this.terminals) {
332
330
  if (record.agentId !== agentId) continue;
333
- if (!record.exitStatus && !record.child.killed) record.child.kill('SIGTERM');
331
+ if (!record.exitStatus && !record.child.killed) record.child.kill("SIGTERM");
334
332
  this.terminals.delete(terminalId);
335
- this.finish(record, { exitCode: null, signal: 'SIGTERM' });
333
+ this.finish(record, { exitCode: null, signal: "SIGTERM" });
336
334
  }
337
335
  }
338
336
  }
339
-
340
- module.exports = {
337
+ // Annotate the CommonJS export names for ESM import in node:
338
+ 0 && (module.exports = {
341
339
  AcpClientFileSystem,
342
340
  AcpClientTerminalManager,
343
- resolveWorkspacePath,
344
- };
341
+ resolveWorkspacePath
342
+ });
@@ -0,0 +1,37 @@
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 packaged_claude_acp_exports = {};
21
+ __export(packaged_claude_acp_exports, {
22
+ PACKAGED_CLAUDE_ACP_ARG: () => PACKAGED_CLAUDE_ACP_ARG,
23
+ runPackagedClaudeAcp: () => runPackagedClaudeAcp
24
+ });
25
+ module.exports = __toCommonJS(packaged_claude_acp_exports);
26
+ const PACKAGED_CLAUDE_ACP_ARG = "--farming-claude-acp";
27
+ async function runPackagedClaudeAcp() {
28
+ if (!process.pkg) {
29
+ throw new Error("The packaged Claude ACP entry is available only in a standalone Farming CLI");
30
+ }
31
+ throw new Error("The standalone Farming CLI omitted its embedded Claude ACP runtime");
32
+ }
33
+ // Annotate the CommonJS export names for ESM import in node:
34
+ 0 && (module.exports = {
35
+ PACKAGED_CLAUDE_ACP_ARG,
36
+ runPackagedClaudeAcp
37
+ });
@@ -0,0 +1,37 @@
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 packaged_codex_acp_exports = {};
21
+ __export(packaged_codex_acp_exports, {
22
+ PACKAGED_CODEX_ACP_ARG: () => PACKAGED_CODEX_ACP_ARG,
23
+ runPackagedCodexAcp: () => runPackagedCodexAcp
24
+ });
25
+ module.exports = __toCommonJS(packaged_codex_acp_exports);
26
+ const PACKAGED_CODEX_ACP_ARG = "--farming-codex-acp";
27
+ async function runPackagedCodexAcp() {
28
+ if (!process.pkg) {
29
+ throw new Error("The packaged Codex ACP entry is available only in a standalone Farming CLI");
30
+ }
31
+ throw new Error("The standalone Farming CLI omitted its embedded Codex ACP runtime");
32
+ }
33
+ // Annotate the CommonJS export names for ESM import in node:
34
+ 0 && (module.exports = {
35
+ PACKAGED_CODEX_ACP_ARG,
36
+ runPackagedCodexAcp
37
+ });