farming-code 2.2.30 → 2.2.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/THIRD_PARTY_NOTICES.md +7 -0
  2. package/backend/acp/{client-services.js → client-services.cjs} +132 -134
  3. package/backend/acp/packaged-claude-acp.cjs +37 -0
  4. package/backend/acp/packaged-codex-acp.cjs +37 -0
  5. package/backend/acp/patch-decisions.cjs +182 -0
  6. package/backend/acp/permission-security.cjs +131 -0
  7. package/backend/{acp-checkpoint-store.js → acp-checkpoint-store.cjs} +90 -59
  8. package/backend/{acp-runtime.js → acp-runtime.cjs} +1220 -1112
  9. package/backend/acp-session-state.cjs +622 -0
  10. package/backend/acp-transcript.cjs +525 -0
  11. package/backend/agent-env.cjs +257 -0
  12. package/backend/agent-extension-discovery.cjs +452 -0
  13. package/backend/agent-extension-inventory.cjs +116 -0
  14. package/backend/agent-json-stream.cjs +283 -0
  15. package/backend/agent-lifecycle-journal.cjs +185 -0
  16. package/backend/{agent-manager.js → agent-manager.cjs} +3116 -4275
  17. package/backend/agent-order-transaction.cjs +85 -0
  18. package/backend/agent-order.cjs +159 -0
  19. package/backend/agent-provider-session.cjs +98 -0
  20. package/backend/agent-runtime-binding.cjs +179 -0
  21. package/backend/agent-session-history.cjs +1022 -0
  22. package/backend/agent-session-inventory.cjs +291 -0
  23. package/backend/async-cache.cjs +104 -0
  24. package/backend/atomic-json-store.cjs +67 -0
  25. package/backend/auth.cjs +261 -0
  26. package/backend/authoritative-inventory-cache.cjs +383 -0
  27. package/backend/business-health.cjs +68 -0
  28. package/backend/chat-runtime.cjs +50 -0
  29. package/backend/claude-settings.cjs +132 -0
  30. package/backend/cli-agents.cjs +435 -0
  31. package/backend/codex-context-window.cjs +196 -0
  32. package/backend/codex-models.cjs +228 -0
  33. package/backend/codex-session-archive.cjs +82 -0
  34. package/backend/codex-session-history.cjs +590 -0
  35. package/backend/{codex-terminal-profile.js → codex-terminal-profile.cjs} +149 -155
  36. package/backend/codex-transcript-sanitizer.cjs +130 -0
  37. package/backend/codex-transcript.cjs +2107 -0
  38. package/backend/command-runner-child.cjs +105 -0
  39. package/backend/config-manager.cjs +1263 -0
  40. package/backend/control-api.cjs +439 -0
  41. package/backend/data/LICENSE.cua +21 -0
  42. package/backend/executable-discovery.cjs +204 -0
  43. package/backend/farming-agent-bootstrap.cjs +81 -0
  44. package/backend/farming-agent-bootstrap.zh_cn.md +6 -2
  45. package/backend/{farming-app-cli.js → farming-app-cli.cjs} +441 -493
  46. package/backend/farming-cli.cjs +414 -0
  47. package/backend/farming-net-pass.cjs +319 -0
  48. package/backend/farming-net-registry.cjs +123 -0
  49. package/backend/farming-net-server.cjs +309 -0
  50. package/backend/farming-session-store.cjs +651 -0
  51. package/backend/git-worktree-info.cjs +181 -0
  52. package/backend/haiku-token.cjs +828 -0
  53. package/backend/index-html.cjs +96 -0
  54. package/backend/input-parts.cjs +68 -0
  55. package/backend/input-routing.cjs +40 -0
  56. package/backend/{local-session-engine.js → local-session-engine.cjs} +276 -282
  57. package/backend/main-agent-skills.cjs +309 -0
  58. package/backend/main-page-session.cjs +132 -0
  59. package/backend/native-pty-controller-generation.cjs +139 -0
  60. package/backend/{native-pty-host-client.js → native-pty-host-client.cjs} +338 -346
  61. package/backend/native-pty-host-identity.cjs +125 -0
  62. package/backend/native-pty-host-path.cjs +68 -0
  63. package/backend/{native-pty-host.js → native-pty-host.cjs} +480 -569
  64. package/backend/native-session-engine.cjs +296 -0
  65. package/backend/network.cjs +57 -0
  66. package/backend/npm-update-helper.cjs +399 -0
  67. package/backend/packaged-node-pty.cjs +120 -0
  68. package/backend/preview-session-manager.cjs +89 -0
  69. package/backend/provider-adapters.cjs +492 -0
  70. package/backend/provider-home-configuration.cjs +211 -0
  71. package/backend/provider-session-id.cjs +79 -0
  72. package/backend/provider-session-service.cjs +333 -0
  73. package/backend/qr-share-tickets.cjs +119 -0
  74. package/backend/resource-broadcast-protocol.cjs +50 -0
  75. package/backend/review-diff-router.cjs +202 -0
  76. package/backend/review-diff-service.cjs +1267 -0
  77. package/backend/review-session-router.cjs +93 -0
  78. package/backend/review-session-service.cjs +470 -0
  79. package/backend/review-session-store.cjs +161 -0
  80. package/backend/review-state-router.cjs +132 -0
  81. package/backend/review-state-store.cjs +299 -0
  82. package/backend/run-history-store.cjs +97 -0
  83. package/backend/runtime-dependency-manager.cjs +893 -0
  84. package/backend/runtime-executable-invocation.cjs +37 -0
  85. package/backend/runtime-observation.cjs +96 -0
  86. package/backend/server-process-identity.cjs +70 -0
  87. package/backend/server.cjs +3356 -0
  88. package/backend/session-engine-bridge.cjs +144 -0
  89. package/backend/session-engine-router.cjs +105 -0
  90. package/backend/session-engine.cjs +64 -0
  91. package/backend/session-stream-protocol.cjs +181 -0
  92. package/backend/shell-busy-integration.cjs +442 -0
  93. package/backend/slash-command-discovery.cjs +423 -0
  94. package/backend/storage-layout.cjs +263 -0
  95. package/backend/system-monitor.cjs +96 -0
  96. package/backend/terminal-attach-checkpoint.cjs +73 -0
  97. package/backend/terminal-exit-quiescence.cjs +57 -0
  98. package/backend/{terminal-reducer-flow-control.js → terminal-reducer-flow-control.cjs} +45 -22
  99. package/backend/terminal-runtime-cleanup.cjs +99 -0
  100. package/backend/{terminal-screen-state.js → terminal-screen-state.cjs} +100 -108
  101. package/backend/{terminal-screen-worker-pool.js → terminal-screen-worker-pool.cjs} +89 -79
  102. package/backend/{terminal-screen-worker-thread.js → terminal-screen-worker-thread.cjs} +64 -65
  103. package/backend/terminal-screen-worker.cjs +352 -0
  104. package/backend/terminal-state-serialization.cjs +147 -0
  105. package/backend/{terminal-status.js → terminal-status.cjs} +137 -187
  106. package/backend/theme-manager.cjs +185 -0
  107. package/backend/{update-service.js → update-service.cjs} +258 -248
  108. package/backend/usage-forecast.cjs +95 -0
  109. package/backend/{usage-history-client.js → usage-history-client.cjs} +144 -94
  110. package/backend/usage-history-smoke.cjs +85 -0
  111. package/backend/usage-history-worker.cjs +60 -0
  112. package/backend/{usage-monitor.js → usage-monitor.cjs} +363 -390
  113. package/backend/workspace-directory.cjs +239 -0
  114. package/backend/workspace-discovery.cjs +271 -0
  115. package/backend/{workspace-file-router.js → workspace-file-router.cjs} +213 -282
  116. package/backend/{workspace-file-service.js → workspace-file-service.cjs} +1139 -1318
  117. package/backend/workspace-root-registry.cjs +192 -0
  118. package/bin/farming +1 -1
  119. package/dist/acp/codex-acp-1.1.4.mjs +18 -1
  120. package/dist/assets/App-BCkdpWB6.css +1 -0
  121. package/dist/assets/App-CRjKpaGp.js +697 -0
  122. package/dist/assets/CodeSelect-Ci8sKZPU.js +1 -0
  123. package/dist/assets/CodeSelect-T2eNzrOc.css +1 -0
  124. package/dist/assets/{FileEditorMarkdownPreview-Cs9cLv8a.js → FileEditorMarkdownPreview-V06QHlAg.js} +55 -55
  125. package/dist/assets/FileEditorPane-BX-Wjg9U.js +2 -0
  126. package/dist/assets/IconGlyphs-YhV7tqd4.js +1 -0
  127. package/dist/assets/ProjectFilesSection-BDT2_r0o.js +12 -0
  128. package/dist/assets/ReviewPage-BqAs5sG1.js +3 -0
  129. package/dist/assets/code-dark-B7eM_9G9.css +1 -0
  130. package/dist/assets/{cssMode-Bdg5RpcJ.js → cssMode-ADdAlxTO.js} +1 -1
  131. package/dist/assets/{editor.api2-D74ufkbr.js → editor.api2-BFLAr0YF.js} +162 -162
  132. package/dist/assets/file-icons-BpeqWkIB.js +1 -0
  133. package/dist/assets/{freemarker2-DfMDJfnE.js → freemarker2-C90q5jrp.js} +1 -1
  134. package/dist/assets/{handlebars-BEdPtzMT.js → handlebars-BwUQcEDq.js} +1 -1
  135. package/dist/assets/{html-B1fPb1QD.js → html-1s3uPKfh.js} +1 -1
  136. package/dist/assets/{htmlMode-CY2ZjHxH.js → htmlMode-xtKD99de.js} +1 -1
  137. package/dist/assets/{index-D-zetSol.js → index-C8MchCem.js} +3 -3
  138. package/dist/assets/{javascript-BV2OsWA0.js → javascript-Ph7ijyny.js} +1 -1
  139. package/dist/assets/{jsonMode-zd07aeuX.js → jsonMode-D-jGAnFH.js} +1 -1
  140. package/dist/assets/linkComputer-CbGyI_qx.js +1 -0
  141. package/dist/assets/{liquid-BParI24X.js → liquid-0IamE_cI.js} +1 -1
  142. package/dist/assets/{lspLanguageFeatures-BzredkoV.js → lspLanguageFeatures-BxnQunWF.js} +1 -1
  143. package/dist/assets/main-CLKXa6hf.css +1 -0
  144. package/dist/assets/{mdx-vGzUJN98.js → mdx-DdNmfivn.js} +1 -1
  145. package/dist/assets/{monaco.contribution-BmaeBQEc.js → monaco.contribution-B43jsUs1.js} +2 -2
  146. package/dist/assets/{python-CUwdLgsI.js → python-IAt4X5TS.js} +1 -1
  147. package/dist/assets/{razor-BScebUxU.js → razor-DRkFYW0S.js} +1 -1
  148. package/dist/assets/review-C8-oPKXk.css +1 -0
  149. package/dist/assets/{tsMode-DzUAibXK.js → tsMode-_d_4U2gf.js} +1 -1
  150. package/dist/assets/{typescript-D9EOeM7N.js → typescript-C7zcMq9l.js} +1 -1
  151. package/dist/assets/{workers-DAiomYZM.js → workers-D0nOyJzf.js} +1 -1
  152. package/dist/assets/workspace-editor-model-DND_Y-Bj.js +1 -0
  153. package/dist/assets/workspace-editor-monaco-BPWhgcIB.js +4 -0
  154. package/dist/assets/workspace-editor-monaco-N641qPjX.js +1 -0
  155. package/dist/assets/workspace-view-state-k1bTlJ_Z.js +13 -0
  156. package/dist/assets/{xml-wWl1dhkQ.js → xml-BR-HvxT8.js} +1 -1
  157. package/dist/assets/{yaml-Dc2WDaOZ.js → yaml-YtFQwh4q.js} +1 -1
  158. package/dist/index.html +1 -1
  159. package/extensions/browser/backend/agent-browser-runtime.cjs +1040 -0
  160. package/extensions/browser/backend/agent-capability.cjs +85 -0
  161. package/extensions/browser/backend/browser-mcp-server.cjs +655 -0
  162. package/extensions/browser/backend/browser-resource-manager.cjs +1486 -0
  163. package/extensions/browser/backend/browser-resource-store.cjs +228 -0
  164. package/extensions/browser/backend/browser-router.cjs +203 -0
  165. package/extensions/browser/backend/executable-discovery.cjs +248 -0
  166. package/extensions/browser/backend/farming-browser-client.cjs +116 -0
  167. package/extensions/browser/backend/index.cjs +32 -0
  168. package/extensions/browser/backend/managed-chromium-installer.cjs +833 -0
  169. package/extensions/browser/bin/farming-browser +16 -7
  170. package/extensions/computer/backend/agent-capability.cjs +72 -0
  171. package/extensions/computer/backend/computer-constants.cjs +59 -0
  172. package/extensions/computer/backend/computer-mcp-server.cjs +182 -0
  173. package/extensions/computer/backend/computer-resource-manager.cjs +1219 -0
  174. package/extensions/computer/backend/computer-resource-store.cjs +190 -0
  175. package/extensions/computer/backend/computer-router.cjs +257 -0
  176. package/extensions/computer/backend/cua-tools.json +3067 -0
  177. package/extensions/computer/backend/farming-computer-client.cjs +84 -0
  178. package/extensions/computer/backend/index.cjs +35 -0
  179. package/extensions/computer/backend/isolated-browser-provider.cjs +157 -0
  180. package/extensions/computer/bin/farming-computer +131 -0
  181. package/frontend/farming-net/app.js +255 -262
  182. package/frontend/ghostty-loader.js +24 -20
  183. package/frontend/reading-anchor.js +210 -193
  184. package/frontend/runtime-paths.js +24 -26
  185. package/frontend/session-bridge.js +90 -111
  186. package/frontend/session-modal-bridge.js +184 -302
  187. package/frontend/skin-bridge.js +20 -23
  188. package/frontend/skins/crt/app.js +7686 -7901
  189. package/frontend/skins/crt/effects.js +7 -6
  190. package/frontend/skins/crt/index.html +6 -6
  191. package/frontend/skins/crt/styles/markdown.css +4 -4
  192. package/frontend/terminal-bridge.js +174 -181
  193. package/frontend/terminal-replay.js +320 -345
  194. package/frontend/theme-loader.js +55 -71
  195. package/package.json +64 -37
  196. package/shared/backend-connection-status.js +38 -69
  197. package/shared/browser-protocol.js +235 -110
  198. package/shared/websocket-liveness.js +40 -0
  199. package/backend/acp/packaged-claude-acp.js +0 -13
  200. package/backend/acp/packaged-codex-acp.js +0 -13
  201. package/backend/acp/patch-decisions.js +0 -153
  202. package/backend/acp/permission-security.js +0 -108
  203. package/backend/acp-session-state.js +0 -634
  204. package/backend/acp-transcript.js +0 -512
  205. package/backend/agent-env.js +0 -250
  206. package/backend/agent-json-stream.js +0 -268
  207. package/backend/agent-lifecycle-journal.js +0 -133
  208. package/backend/agent-order.js +0 -166
  209. package/backend/agent-provider-session.js +0 -76
  210. package/backend/agent-runtime-binding.js +0 -174
  211. package/backend/agent-session-history.js +0 -986
  212. package/backend/async-cache.js +0 -94
  213. package/backend/atomic-json-store.js +0 -37
  214. package/backend/auth.js +0 -251
  215. package/backend/chat-runtime.js +0 -28
  216. package/backend/claude-settings.js +0 -121
  217. package/backend/cli-agents.js +0 -486
  218. package/backend/codex-context-window.js +0 -189
  219. package/backend/codex-models.js +0 -226
  220. package/backend/codex-session-archive.js +0 -65
  221. package/backend/codex-session-history.js +0 -647
  222. package/backend/codex-transcript-sanitizer.js +0 -115
  223. package/backend/codex-transcript.js +0 -2362
  224. package/backend/command-runner-child.js +0 -67
  225. package/backend/config-manager.js +0 -1117
  226. package/backend/control-api.js +0 -455
  227. package/backend/executable-discovery.js +0 -216
  228. package/backend/farming-agent-bootstrap.js +0 -49
  229. package/backend/farming-cli.js +0 -403
  230. package/backend/farming-net-pass.js +0 -285
  231. package/backend/farming-net-registry.js +0 -112
  232. package/backend/farming-net-server.js +0 -298
  233. package/backend/farming-session-store.js +0 -677
  234. package/backend/git-worktree-info.js +0 -181
  235. package/backend/haiku-token.js +0 -772
  236. package/backend/index-html.js +0 -80
  237. package/backend/input-parts.js +0 -54
  238. package/backend/input-routing.js +0 -24
  239. package/backend/json-cli-runtime.js +0 -275
  240. package/backend/main-agent-skills.js +0 -288
  241. package/backend/main-page-session.js +0 -122
  242. package/backend/native-pty-controller-generation.js +0 -106
  243. package/backend/native-pty-host-identity.js +0 -86
  244. package/backend/native-pty-host-path.js +0 -42
  245. package/backend/native-session-engine.js +0 -268
  246. package/backend/network.js +0 -23
  247. package/backend/npm-update-helper.js +0 -374
  248. package/backend/packaged-node-pty.js +0 -99
  249. package/backend/preview-session-manager.js +0 -68
  250. package/backend/provider-adapters.js +0 -399
  251. package/backend/provider-session-id.js +0 -47
  252. package/backend/provider-session-service.js +0 -345
  253. package/backend/qr-share-tickets.js +0 -100
  254. package/backend/review-diff-router.js +0 -180
  255. package/backend/review-diff-service.js +0 -1270
  256. package/backend/review-session-router.js +0 -74
  257. package/backend/review-session-service.js +0 -446
  258. package/backend/review-session-store.js +0 -151
  259. package/backend/review-state-router.js +0 -116
  260. package/backend/review-state-store.js +0 -286
  261. package/backend/run-history-store.js +0 -67
  262. package/backend/runtime-dependency-manager.js +0 -759
  263. package/backend/runtime-executable-invocation.js +0 -20
  264. package/backend/runtime-observation.js +0 -81
  265. package/backend/server-process-identity.js +0 -47
  266. package/backend/server.js +0 -3225
  267. package/backend/session-engine-bridge.js +0 -129
  268. package/backend/session-engine-router.js +0 -66
  269. package/backend/session-engine.js +0 -39
  270. package/backend/session-stream-protocol.js +0 -185
  271. package/backend/shell-busy-integration.js +0 -472
  272. package/backend/slash-command-discovery.js +0 -433
  273. package/backend/storage-layout.js +0 -205
  274. package/backend/system-monitor.js +0 -77
  275. package/backend/terminal-attach-checkpoint.js +0 -74
  276. package/backend/terminal-exit-quiescence.js +0 -39
  277. package/backend/terminal-runtime-cleanup.js +0 -80
  278. package/backend/terminal-screen-worker.js +0 -337
  279. package/backend/terminal-state-serialization.js +0 -127
  280. package/backend/theme-manager.js +0 -163
  281. package/backend/usage-forecast.js +0 -86
  282. package/backend/usage-history-scanner.ts +0 -2718
  283. package/backend/usage-history-smoke.js +0 -64
  284. package/backend/usage-history-worker.js +0 -34
  285. package/backend/workspace-directory.js +0 -232
  286. package/backend/workspace-discovery.js +0 -311
  287. package/backend/workspace-root-registry.js +0 -166
  288. package/dist/assets/App-BKNUILuL.css +0 -1
  289. package/dist/assets/App-Z1N7T0eM.js +0 -695
  290. package/dist/assets/FileEditorPane-CNtuGjQ3.js +0 -2
  291. package/dist/assets/IconGlyphs-BClgag6E.js +0 -1
  292. package/dist/assets/ProjectFilesSection-K3GHuQ4U.js +0 -12
  293. package/dist/assets/ReviewPage-BRuxFaH5.js +0 -3
  294. package/dist/assets/code-dark-kLsQLvpf.css +0 -1
  295. package/dist/assets/file-icons-BOlcJ0ZF.js +0 -1
  296. package/dist/assets/main-DUTz-Rd2.css +0 -1
  297. package/dist/assets/review-BcnwQtJv.css +0 -1
  298. package/dist/assets/workspace-editor-model-CSGCl21x.js +0 -1
  299. package/dist/assets/workspace-editor-monaco-CJNwbpCy.js +0 -4
  300. package/dist/assets/workspace-editor-monaco-CO9w8YV0.js +0 -1
  301. package/dist/assets/workspace-view-state-BjKPYp0E.js +0 -7
  302. package/extensions/browser/backend/agent-browser-runtime.js +0 -1041
  303. package/extensions/browser/backend/agent-capability.js +0 -55
  304. package/extensions/browser/backend/browser-mcp-server.js +0 -621
  305. package/extensions/browser/backend/browser-resource-manager.js +0 -1331
  306. package/extensions/browser/backend/browser-resource-store.js +0 -190
  307. package/extensions/browser/backend/browser-router.js +0 -141
  308. package/extensions/browser/backend/executable-discovery.js +0 -238
  309. package/extensions/browser/backend/farming-browser-client.js +0 -83
  310. package/extensions/browser/backend/index.js +0 -7
  311. package/extensions/browser/backend/managed-chromium-installer.js +0 -593
  312. package/extensions/browser/frontend/BrowserSidebarPortals.tsx +0 -360
  313. package/extensions/browser/frontend/BrowserViewer.tsx +0 -500
  314. package/extensions/browser/frontend/browser-resource-state.ts +0 -60
  315. package/extensions/browser/frontend/browser.css +0 -567
  316. package/extensions/browser/frontend/types.ts +0 -38
  317. package/extensions/browser/frontend/useBrowserResources.ts +0 -166
  318. package/frontend/vendor/ghostty-web/index.d.ts +0 -1842
  319. package/shared/backend-connection-status.d.ts +0 -37
  320. package/shared/browser-protocol.d.ts +0 -5
  321. /package/dist/assets/{api-w2x5QfxB.js → api-ByCV9MEr.js} +0 -0
  322. /package/dist/assets/{core-vPkV8P_m.js → core-Czwdx12k.js} +0 -0
  323. /package/dist/assets/{fsharp-DNZNZyEE.js → fsharp-BjPpkoJe.js} +0 -0
  324. /package/dist/assets/{go-_kPJjNc_.js → go-BkIDmSUP.js} +0 -0
  325. /package/dist/assets/{graphql-4HCNVt5g.js → graphql-CCJTpqi1.js} +0 -0
  326. /package/dist/assets/{hcl-C87ymY0o.js → hcl-s4z8lUFg.js} +0 -0
  327. /package/dist/assets/{ini-BYrrGNTc.js → ini-CyUW1I7Z.js} +0 -0
  328. /package/dist/assets/{java-B211rJbk.js → java-CFCcGRiM.js} +0 -0
  329. /package/dist/assets/{julia-DVPsRtBm.js → julia-DQyH_EYb.js} +0 -0
  330. /package/dist/assets/{kotlin-BYyNerjp.js → kotlin-B8hA5O51.js} +0 -0
  331. /package/dist/assets/{less-EC9UblGE.js → less-DaVdaas0.js} +0 -0
  332. /package/dist/assets/{lexon-B1yuUdqW.js → lexon-DLBhPd3y.js} +0 -0
  333. /package/dist/assets/{lua-Bo6GFzxT.js → lua-gB1c_cif.js} +0 -0
  334. /package/dist/assets/{m3-C-Y9cBVI.js → m3-C2T3z3gB.js} +0 -0
  335. /package/dist/assets/{markdown-BHu-wLbe.js → markdown-CKq-Euj1.js} +0 -0
  336. /package/dist/assets/{mips-Dkds26rX.js → mips-Bcs5qIDX.js} +0 -0
  337. /package/dist/assets/{msdax-PU4g-8_g.js → msdax-CBP48FHF.js} +0 -0
  338. /package/dist/assets/{mysql-fPpuGpS7.js → mysql-c7tiPcFj.js} +0 -0
  339. /package/dist/assets/{objective-c-Wy1e5JUf.js → objective-c-D4BZkeEV.js} +0 -0
  340. /package/dist/assets/{pascal-BIXwvrqU.js → pascal-CJDZg0MN.js} +0 -0
  341. /package/dist/assets/{pascaligo-DwR0AtL_.js → pascaligo-Bygi8Ynl.js} +0 -0
  342. /package/dist/assets/{perl-CGHAl8my.js → perl-aS8bkf7E.js} +0 -0
  343. /package/dist/assets/{pgsql-B91M73E2.js → pgsql-CzNAYFYl.js} +0 -0
  344. /package/dist/assets/{php-C70ttrCx.js → php-DOtoEFTT.js} +0 -0
  345. /package/dist/assets/{pla-BNrXaRh0.js → pla-DugRnao1.js} +0 -0
  346. /package/dist/assets/{postiats-Dv2IAZR9.js → postiats-DsXwusKh.js} +0 -0
  347. /package/dist/assets/{powerquery-CkY5Wq7J.js → powerquery-DL3o72oD.js} +0 -0
  348. /package/dist/assets/{powershell-uGIYLU3C.js → powershell-C1qHekys.js} +0 -0
  349. /package/dist/assets/{protobuf-CavfmJu-.js → protobuf-DHgsc-cH.js} +0 -0
  350. /package/dist/assets/{pug-Drqnyitx.js → pug-FZXlE_Iu.js} +0 -0
  351. /package/dist/assets/{qrcode-7uGsTEmi.js → qrcode-DJDTdjL7.js} +0 -0
  352. /package/dist/assets/{qsharp-C7yF-Dti.js → qsharp-bLyhI3DT.js} +0 -0
  353. /package/dist/assets/{r-HXLGP0_-.js → r-DjFGXbAa.js} +0 -0
  354. /package/dist/assets/{redis-C4y6mf2p.js → redis-DSoZ_V6u.js} +0 -0
  355. /package/dist/assets/{redshift-DdQrFPrv.js → redshift-CzkdCsrg.js} +0 -0
  356. /package/dist/assets/{restructuredtext-CBrf2PNj.js → restructuredtext-B_XPrGCQ.js} +0 -0
  357. /package/dist/assets/{ruby-CVtMoX2B.js → ruby-Cry2RneJ.js} +0 -0
  358. /package/dist/assets/{rust-Ckq4sbMP.js → rust-CWzdbFq1.js} +0 -0
  359. /package/dist/assets/{sb-er66OpE3.js → sb-DmofU59h.js} +0 -0
  360. /package/dist/assets/{scala-BdWZz-hH.js → scala-BUC2l-vN.js} +0 -0
  361. /package/dist/assets/{scheme-kTV_s2kP.js → scheme-CNIB_72f.js} +0 -0
  362. /package/dist/assets/{scss-Bymy2VJQ.js → scss-DcL4-NbX.js} +0 -0
  363. /package/dist/assets/{shell-bwEP1LQ1.js → shell-CgAGvSSA.js} +0 -0
  364. /package/dist/assets/{solidity-DCddeBgL.js → solidity-DSkt6O_P.js} +0 -0
  365. /package/dist/assets/{sophia-BMN3AQig.js → sophia--5ytcjDN.js} +0 -0
  366. /package/dist/assets/{sparql-CSXOLjzi.js → sparql-C1Srr7cD.js} +0 -0
  367. /package/dist/assets/{sql-COg8ewmK.js → sql-2k_O5fj7.js} +0 -0
  368. /package/dist/assets/{st-CIaZtBS_.js → st-DCCCPqfz.js} +0 -0
  369. /package/dist/assets/{swift-DXiOhUHu.js → swift-Dd8mAfOt.js} +0 -0
  370. /package/dist/assets/{systemverilog-BTDE6Dr2.js → systemverilog-B0-aZYXu.js} +0 -0
  371. /package/dist/assets/{tcl-B0zy9NvV.js → tcl-CZAZwPVX.js} +0 -0
  372. /package/dist/assets/{twig-D594l4Z1.js → twig-D-Ag0tdS.js} +0 -0
  373. /package/dist/assets/{typespec-XKVjaPqo.js → typespec-B7kTFp0Z.js} +0 -0
  374. /package/dist/assets/{useWorkspaceMenuKeyboard-Bpy_s69Z.js → useWorkspaceMenuKeyboard-uYZpDxhU.js} +0 -0
  375. /package/dist/assets/{vb-B2wYoKRV.js → vb-20w1JPum.js} +0 -0
  376. /package/dist/assets/{wgsl-D0Yf2LbK.js → wgsl-CLJfqFt0.js} +0 -0
  377. /package/dist/assets/{workspace-working-copy-C3FSR3N6.js → workspace-working-copy-Cfz07cOd.js} +0 -0
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  const fs = require('fs');
3
3
  const path = require('path');
4
- const { requestJson } = require('../backend/farming-browser-client');
5
- const { rootIdForPath } = require('../../../backend/workspace-root-registry');
4
+ const { requestJson } = require('../backend/farming-browser-client.cjs');
5
+ const { rootIdForPath } = require('../../../backend/workspace-root-registry.cjs');
6
6
 
7
7
  function usage() {
8
8
  return `Usage: farming browser <command> [options]
9
9
 
10
10
  Start here:
11
11
  capability Check whether Farming Browser is available
12
- list Discover this Project's Browser Resources
12
+ list Discover this Agent's Browser Resources
13
13
  create Create another independently visible Browser
14
14
  help workflow Read the recommended Agent workflow
15
15
 
@@ -31,7 +31,7 @@ const TOPIC_HELP = Object.freeze({
31
31
  workflow: `Recommended Agent workflow:
32
32
  1. farming capabilities
33
33
  2. farming browser list
34
- 3. Reuse a Project Browser, or create and start one
34
+ 3. Reuse a Browser owned by this Agent, or create and start one
35
35
  4. Navigate, then take a snapshot
36
36
  5. Act through snapshot refs; wait and snapshot again after page changes
37
37
  6. Use inspection or debugging commands only when the normal flow is insufficient
@@ -230,16 +230,18 @@ function writeJson(value) {
230
230
 
231
231
  async function requireProjectBrowser(id) {
232
232
  const requestedWorkspace = String(process.env.FARMING_PROJECT_WORKSPACE || '').trim();
233
+ const requestedAgentId = String(process.env.FARMING_AGENT_ID || '').trim();
233
234
  if (!requestedWorkspace) return;
234
235
  const workspace = path.resolve(requestedWorkspace);
235
236
  const result = await requestJson('GET', '/api/browsers');
236
237
  const resource = (result.resources || []).find(item => (
237
238
  item?.id === id
239
+ && (!requestedAgentId || item.ownerAgentId === requestedAgentId)
238
240
  && item.workspace
239
241
  && path.resolve(item.workspace) === workspace
240
242
  ));
241
243
  if (!resource) {
242
- throw new Error(`Browser Resource ${id} is not available in this Agent's Project`);
244
+ throw new Error(`Browser Resource ${id} is not owned by this Agent`);
243
245
  }
244
246
  }
245
247
 
@@ -258,7 +260,7 @@ async function run(argv = process.argv.slice(2)) {
258
260
  return 0;
259
261
  }
260
262
  if (command === 'mcp') {
261
- const { runBrowserMcpServer } = require('../backend/browser-mcp-server');
263
+ const { runBrowserMcpServer } = require('../backend/browser-mcp-server.cjs');
262
264
  await runBrowserMcpServer();
263
265
  return 0;
264
266
  }
@@ -275,6 +277,7 @@ async function run(argv = process.argv.slice(2)) {
275
277
  const workspace = path.resolve(requestedWorkspace);
276
278
  const result = await requestJson('POST', '/api/browsers', {
277
279
  rootId: rootIdForPath(workspace),
280
+ agentId: process.env.FARMING_AGENT_ID || undefined,
278
281
  name: option(args, '--name') || undefined,
279
282
  url: option(args, '--url') || undefined,
280
283
  });
@@ -289,7 +292,13 @@ async function run(argv = process.argv.slice(2)) {
289
292
  const workspace = requestedWorkspace ? path.resolve(requestedWorkspace) : '';
290
293
  const result = await requestJson('GET', '/api/browsers');
291
294
  const resources = workspace
292
- ? result.resources.filter(resource => path.resolve(resource.workspace) === workspace)
295
+ ? result.resources.filter(resource => (
296
+ path.resolve(resource.workspace) === workspace
297
+ && (
298
+ !process.env.FARMING_AGENT_ID
299
+ || resource.ownerAgentId === process.env.FARMING_AGENT_ID
300
+ )
301
+ ))
293
302
  : result.resources;
294
303
  writeJson({ resources });
295
304
  return 0;
@@ -0,0 +1,72 @@
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 agent_capability_exports = {};
21
+ __export(agent_capability_exports, {
22
+ FARMING_COMPUTER_MCP_SERVER_NAME: () => FARMING_COMPUTER_MCP_SERVER_NAME,
23
+ isFarmingComputerServer: () => isFarmingComputerServer,
24
+ mergeComputerMcpServer: () => mergeComputerMcpServer
25
+ });
26
+ module.exports = __toCommonJS(agent_capability_exports);
27
+ const path = require("path");
28
+ const FARMING_COMPUTER_MCP_SERVER_NAME = "farming-computer";
29
+ const FARMING_COMPUTER_MCP_META_KEY = "farming.dev/extension";
30
+ function recordValue(value) {
31
+ return value && typeof value === "object" ? value : {};
32
+ }
33
+ function isFarmingComputerServer(server) {
34
+ const value = recordValue(server);
35
+ return recordValue(value._meta)[FARMING_COMPUTER_MCP_META_KEY] === "computer";
36
+ }
37
+ function computerMcpEnv(agentEnv) {
38
+ return [
39
+ "FARMING_AGENT_ID",
40
+ "FARMING_CONFIG_DIR",
41
+ "FARMING_CONTROL_URL",
42
+ "FARMING_DISABLE_AUTH",
43
+ "FARMING_PROJECT_WORKSPACE",
44
+ "FARMING_TOKEN_FILE"
45
+ ].flatMap((name) => agentEnv[name] === void 0 || agentEnv[name] === "" ? [] : [{ name, value: String(agentEnv[name]) }]);
46
+ }
47
+ function mergeComputerMcpServer(mcpServers, options) {
48
+ const existing = Array.isArray(mcpServers) ? mcpServers : [];
49
+ const collision = existing.find((server) => recordValue(server).name === FARMING_COMPUTER_MCP_SERVER_NAME && !isFarmingComputerServer(server));
50
+ if (collision) {
51
+ throw new Error(
52
+ `MCP server name "${FARMING_COMPUTER_MCP_SERVER_NAME}" is reserved by the Farming Computer Extension`
53
+ );
54
+ }
55
+ const command = path.join(options.cliBinDir, process.platform === "win32" ? "farming.cmd" : "farming");
56
+ return [
57
+ ...existing.filter((server) => !isFarmingComputerServer(server)),
58
+ {
59
+ name: FARMING_COMPUTER_MCP_SERVER_NAME,
60
+ command,
61
+ args: ["computer", "mcp"],
62
+ env: computerMcpEnv(options.agentEnv || {}),
63
+ _meta: { [FARMING_COMPUTER_MCP_META_KEY]: "computer" }
64
+ }
65
+ ];
66
+ }
67
+ // Annotate the CommonJS export names for ESM import in node:
68
+ 0 && (module.exports = {
69
+ FARMING_COMPUTER_MCP_SERVER_NAME,
70
+ isFarmingComputerServer,
71
+ mergeComputerMcpServer
72
+ });
@@ -0,0 +1,59 @@
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 computer_constants_exports = {};
21
+ __export(computer_constants_exports, {
22
+ COMPUTER_CONTAINER_CPUS: () => COMPUTER_CONTAINER_CPUS,
23
+ COMPUTER_CONTAINER_MEMORY: () => COMPUTER_CONTAINER_MEMORY,
24
+ COMPUTER_CONTAINER_PIDS: () => COMPUTER_CONTAINER_PIDS,
25
+ COMPUTER_CONTAINER_SHM_SIZE: () => COMPUTER_CONTAINER_SHM_SIZE,
26
+ COMPUTER_DRIVER_BIN: () => COMPUTER_DRIVER_BIN,
27
+ COMPUTER_DRIVER_VERSION: () => COMPUTER_DRIVER_VERSION,
28
+ COMPUTER_IMAGE: () => COMPUTER_IMAGE,
29
+ COMPUTER_IMAGE_INDEX_DIGEST: () => COMPUTER_IMAGE_INDEX_DIGEST,
30
+ COMPUTER_SCHEMA_SHA256: () => COMPUTER_SCHEMA_SHA256,
31
+ COMPUTER_TOOL_COUNT: () => COMPUTER_TOOL_COUNT,
32
+ COMPUTER_USER: () => COMPUTER_USER
33
+ });
34
+ module.exports = __toCommonJS(computer_constants_exports);
35
+ const COMPUTER_DRIVER_VERSION = "0.12.4";
36
+ const COMPUTER_IMAGE_INDEX_DIGEST = "sha256:274eb636f5cf3fc58f705916ee72b7a701270b3877369d08533a385c5325be9b";
37
+ const COMPUTER_IMAGE = `trycua/xfce-cua@${COMPUTER_IMAGE_INDEX_DIGEST}`;
38
+ const COMPUTER_SCHEMA_SHA256 = "8c9bd7890cb3e1cfc2409c590b087d8313a80672eeed7ceae6beee19356c146c";
39
+ const COMPUTER_TOOL_COUNT = 53;
40
+ const COMPUTER_CONTAINER_MEMORY = "4g";
41
+ const COMPUTER_CONTAINER_CPUS = "2";
42
+ const COMPUTER_CONTAINER_SHM_SIZE = "1g";
43
+ const COMPUTER_CONTAINER_PIDS = "1024";
44
+ const COMPUTER_DRIVER_BIN = "/opt/venv/bin/cua-driver";
45
+ const COMPUTER_USER = "cua";
46
+ // Annotate the CommonJS export names for ESM import in node:
47
+ 0 && (module.exports = {
48
+ COMPUTER_CONTAINER_CPUS,
49
+ COMPUTER_CONTAINER_MEMORY,
50
+ COMPUTER_CONTAINER_PIDS,
51
+ COMPUTER_CONTAINER_SHM_SIZE,
52
+ COMPUTER_DRIVER_BIN,
53
+ COMPUTER_DRIVER_VERSION,
54
+ COMPUTER_IMAGE,
55
+ COMPUTER_IMAGE_INDEX_DIGEST,
56
+ COMPUTER_SCHEMA_SHA256,
57
+ COMPUTER_TOOL_COUNT,
58
+ COMPUTER_USER
59
+ });
@@ -0,0 +1,182 @@
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 computer_mcp_server_exports = {};
21
+ __export(computer_mcp_server_exports, {
22
+ ScopedComputerClient: () => ScopedComputerClient,
23
+ createComputerMcpServer: () => createComputerMcpServer,
24
+ loadManifest: () => loadManifest,
25
+ runComputerMcpServer: () => runComputerMcpServer
26
+ });
27
+ module.exports = __toCommonJS(computer_mcp_server_exports);
28
+ var import_server = require("@modelcontextprotocol/sdk/server/index.js");
29
+ var import_stdio = require("@modelcontextprotocol/sdk/server/stdio.js");
30
+ var import_types = require("@modelcontextprotocol/sdk/types.js");
31
+ var import_workspace_root_registry = require("../../../backend/workspace-root-registry.cjs");
32
+ var import_farming_computer_client = require("./farming-computer-client.cjs");
33
+ var import_computer_constants = require("./computer-constants.cjs");
34
+ const fs = require("fs");
35
+ const path = require("path");
36
+ const crypto = require("crypto");
37
+ function recordValue(value) {
38
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
39
+ }
40
+ function textResult(value) {
41
+ return {
42
+ content: [{ type: "text", text: JSON.stringify(value, null, 2) }],
43
+ structuredContent: recordValue(value)
44
+ };
45
+ }
46
+ function loadManifest() {
47
+ const file = path.join(__dirname, "cua-tools.json");
48
+ const bytes = fs.readFileSync(file);
49
+ const sha256 = crypto.createHash("sha256").update(bytes).digest("hex");
50
+ if (sha256 !== import_computer_constants.COMPUTER_SCHEMA_SHA256) {
51
+ throw new Error(`Farming Computer tool schema integrity mismatch: ${sha256}`);
52
+ }
53
+ const manifest = JSON.parse(bytes.toString("utf8"));
54
+ if (manifest.driverVersion !== import_computer_constants.COMPUTER_DRIVER_VERSION || manifest.toolCount !== import_computer_constants.COMPUTER_TOOL_COUNT || manifest.tools.length !== import_computer_constants.COMPUTER_TOOL_COUNT) {
55
+ throw new Error("Farming Computer tool schema does not match the pinned Cua Driver contract");
56
+ }
57
+ return manifest;
58
+ }
59
+ class ScopedComputerClient {
60
+ env;
61
+ workspace;
62
+ agentId;
63
+ constructor(env = process.env) {
64
+ this.env = env;
65
+ this.workspace = String(env.FARMING_PROJECT_WORKSPACE || "").trim();
66
+ this.agentId = String(env.FARMING_AGENT_ID || "").trim();
67
+ }
68
+ requireBinding() {
69
+ if (!this.workspace || !this.agentId) {
70
+ throw new Error("This Computer tool server is not bound to a Farming Agent Project");
71
+ }
72
+ }
73
+ async list() {
74
+ this.requireBinding();
75
+ const snapshot = recordValue(await (0, import_farming_computer_client.requestJson)("GET", "/api/computers", void 0, this.env));
76
+ return (Array.isArray(snapshot.resources) ? snapshot.resources : []).map(recordValue).filter((resource) => resource.ownerAgentId === this.agentId);
77
+ }
78
+ async open(input = {}) {
79
+ this.requireBinding();
80
+ const existing = (await this.list())[0];
81
+ const resource = existing || recordValue(await (0, import_farming_computer_client.requestJson)("POST", "/api/computers", {
82
+ rootId: (0, import_workspace_root_registry.rootIdForPath)(this.workspace),
83
+ agentId: this.agentId,
84
+ name: input.name
85
+ }, this.env));
86
+ if (resource.status === "running") return resource;
87
+ return recordValue(await (0, import_farming_computer_client.requestJson)(
88
+ "POST",
89
+ `/api/computers/${encodeURIComponent(String(resource.id))}/start`,
90
+ void 0,
91
+ this.env
92
+ ));
93
+ }
94
+ async stop() {
95
+ const resource = (await this.list())[0];
96
+ if (!resource) return { stopped: true, resource: null };
97
+ return recordValue(await (0, import_farming_computer_client.requestJson)(
98
+ "POST",
99
+ `/api/computers/${encodeURIComponent(String(resource.id))}/stop`,
100
+ void 0,
101
+ this.env
102
+ ));
103
+ }
104
+ async call(upstreamName, input) {
105
+ const resource = await this.open();
106
+ const result = recordValue(await (0, import_farming_computer_client.requestJson)(
107
+ "POST",
108
+ `/api/computers/${encodeURIComponent(String(resource.id))}/tool/${encodeURIComponent(upstreamName)}`,
109
+ input,
110
+ this.env
111
+ ));
112
+ return result;
113
+ }
114
+ }
115
+ function createComputerMcpServer(options = {}) {
116
+ const manifest = loadManifest();
117
+ const client = options.client || new ScopedComputerClient(options.env);
118
+ const server = new import_server.Server(
119
+ { name: "farming-computer", version: "1.0.0" },
120
+ { capabilities: { tools: {} } }
121
+ );
122
+ const lifecycleTools = [{
123
+ name: "computer_open",
124
+ title: "Open Farming Computer",
125
+ description: "Create or start the isolated Computer owned by this Farming Agent.",
126
+ inputSchema: {
127
+ type: "object",
128
+ additionalProperties: false,
129
+ properties: {
130
+ name: { type: "string", minLength: 1, maxLength: 120 }
131
+ }
132
+ },
133
+ annotations: {
134
+ readOnlyHint: false,
135
+ destructiveHint: false,
136
+ idempotentHint: true,
137
+ openWorldHint: true
138
+ }
139
+ }, {
140
+ name: "computer_list",
141
+ title: "List Farming Computer",
142
+ description: "List the isolated Computer owned by this Farming Agent.",
143
+ inputSchema: { type: "object", additionalProperties: false, properties: {} },
144
+ annotations: { readOnlyHint: true, openWorldHint: false }
145
+ }, {
146
+ name: "computer_stop",
147
+ title: "Stop Farming Computer",
148
+ description: "Stop this Agent Computer while retaining its resource row and container state.",
149
+ inputSchema: { type: "object", additionalProperties: false, properties: {} },
150
+ annotations: {
151
+ readOnlyHint: false,
152
+ destructiveHint: false,
153
+ idempotentHint: true,
154
+ openWorldHint: true
155
+ }
156
+ }];
157
+ server.setRequestHandler(import_types.ListToolsRequestSchema, async () => ({
158
+ tools: [...lifecycleTools, ...manifest.tools]
159
+ }));
160
+ server.setRequestHandler(import_types.CallToolRequestSchema, async (request) => {
161
+ const name = request.params.name;
162
+ const input = recordValue(request.params.arguments);
163
+ if (name === "computer_open") return textResult(await client.open(input));
164
+ if (name === "computer_list") return textResult({ resources: await client.list() });
165
+ if (name === "computer_stop") return textResult(await client.stop());
166
+ const tool = manifest.tools.find((candidate) => candidate.name === name);
167
+ if (!tool) throw new Error(`Unknown Computer tool: ${name}`);
168
+ return client.call(tool.upstreamName, input);
169
+ });
170
+ return server;
171
+ }
172
+ async function runComputerMcpServer(options = {}) {
173
+ const server = createComputerMcpServer(options);
174
+ await server.connect(new import_stdio.StdioServerTransport());
175
+ }
176
+ // Annotate the CommonJS export names for ESM import in node:
177
+ 0 && (module.exports = {
178
+ ScopedComputerClient,
179
+ createComputerMcpServer,
180
+ loadManifest,
181
+ runComputerMcpServer
182
+ });