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
@@ -0,0 +1,309 @@
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 main_agent_skills_exports = {};
21
+ __export(main_agent_skills_exports, {
22
+ MAIN_AGENT_OPERATING_GUIDE: () => MAIN_AGENT_OPERATING_GUIDE,
23
+ MAIN_AGENT_SKILLS: () => MAIN_AGENT_SKILLS,
24
+ ensureMainAgentSkillFiles: () => ensureMainAgentSkillFiles,
25
+ getMainAgentSkillsCatalog: () => getMainAgentSkillsCatalog,
26
+ renderCanonicalAgentsFile: () => renderCanonicalAgentsFile,
27
+ renderCompatibilityFile: () => renderCompatibilityFile,
28
+ renderCompatibilityPointerFile: () => renderCompatibilityPointerFile,
29
+ renderMainAgentBootstrap: () => renderMainAgentBootstrap,
30
+ renderMainAgentOperatingGuide: () => renderMainAgentOperatingGuide,
31
+ renderMainAgentSkills: () => renderMainAgentSkills,
32
+ upsertManagedBlock: () => upsertManagedBlock
33
+ });
34
+ module.exports = __toCommonJS(main_agent_skills_exports);
35
+ const fs = require("fs");
36
+ const path = require("path");
37
+ const MANAGED_BLOCK_START = "<!-- FARMING_MAIN_AGENT_SKILLS:START -->";
38
+ const MANAGED_BLOCK_END = "<!-- FARMING_MAIN_AGENT_SKILLS:END -->";
39
+ const REMOVED_MAIN_AGENT_SKILL_IDS = ["memory-report"];
40
+ const MAIN_AGENT_OPERATING_GUIDE = [
41
+ {
42
+ title: "Mission",
43
+ lines: [
44
+ "You are the Farming Main Agent: an attention steward for the human, not a background log reader.",
45
+ "Your value is to keep track of what other agents are doing, notice when the human should care, and compress parallel work into clear next actions."
46
+ ]
47
+ },
48
+ {
49
+ title: "Startup routine",
50
+ lines: [
51
+ "On startup or resume, orient yourself with `farming list --json` and inspect `FARMING_PROJECT_WORKSPACE` / `FARMING_MAIN_WORKSPACE` before proposing work.",
52
+ "Do not spawn child agents just because you can. Wait for a concrete user goal, or ask one short clarification if the goal is too vague to route safely."
53
+ ]
54
+ },
55
+ {
56
+ title: "Observing agents",
57
+ lines: [
58
+ "Poll at a low frequency and look for state changes, not raw terminal chatter.",
59
+ "Use `farming output <agent-id> --tail <n>` only for agents that are blocked, newly finished, noisy, or directly relevant to the current user question.",
60
+ "Classify agents as running, waiting for input, blocked, failed, complete, stale, or safe to ignore; include the agent id behind each claim."
61
+ ]
62
+ },
63
+ {
64
+ title: "Delegating work",
65
+ lines: [
66
+ "Spawn child agents only when parallelism clearly helps a user goal.",
67
+ "Give each child a narrow workspace, task, success criteria, forbidden scope, and required evidence or tests.",
68
+ "Keep the default fanout small; prefer 2-4 focused children over many overlapping agents."
69
+ ]
70
+ },
71
+ {
72
+ title: "Intervening",
73
+ lines: [
74
+ "Use `farming send` to unblock or redirect a child agent with specific instructions.",
75
+ "Do not issue destructive commands, broad rewrites, permission changes, or high-risk cleanup without summarizing the risk and getting user confirmation.",
76
+ "Kill agents only when they are clearly done, duplicated, stuck beyond recovery, or the user asks."
77
+ ]
78
+ },
79
+ {
80
+ title: "Reporting to the human",
81
+ lines: [
82
+ "Report in short status summaries: What changed, who needs attention, what is done, and what you will do next.",
83
+ "Do not paste long logs. Quote or summarize only the evidence needed for a decision.",
84
+ "When multiple agents disagree, deduplicate findings, rank by severity, and name the evidence gap before deciding."
85
+ ]
86
+ }
87
+ ];
88
+ const MAIN_AGENT_SKILLS = [
89
+ {
90
+ id: "browser-resource",
91
+ name: "\u7CFB\u7EDF\u6D4F\u89C8\u5668\u64CD\u4F5C",
92
+ trigger: "\u7528\u6237\u8981\u6C42\u6253\u5F00\u3001\u67E5\u770B\u6216\u64CD\u4F5C Farming Project \u4E0B\u7684 Browser Resource\uFF0C\u6216\u8005\u9700\u8981\u7ED5\u8FC7\u9759\u6001 HTML Viewer \u9650\u5236\u9A8C\u8BC1\u771F\u5B9E\u7F51\u9875\u65F6",
93
+ summary: "\u901A\u8FC7 Farming Browser ID \u64CD\u4F5C\u7528\u6237\u5F53\u524D\u770B\u5230\u7684\u540C\u4E00\u4E2A\u7CFB\u7EDF\u6D4F\u89C8\u5668\uFF1B\u5148\u8D70 Browser \u7684\u6E10\u8FDB\u5F0F\u5E2E\u52A9\u548C\u6807\u51C6 Workflow\uFF0C\u53EA\u5728\u9700\u8981\u65F6\u5C55\u5F00\u5177\u4F53\u95EE\u9898\u57DF\u4E0E\u539F\u5B50\u547D\u4EE4\u3002",
94
+ commands: [
95
+ "farming capabilities",
96
+ "farming browser list",
97
+ "farming browser help workflow",
98
+ "farming browser help <lifecycle|navigation|interaction|inspection|debugging|state|files>"
99
+ ]
100
+ },
101
+ {
102
+ id: "computer-resource",
103
+ name: "\u9694\u79BB\u7535\u8111\u64CD\u4F5C",
104
+ trigger: "\u7528\u6237\u8981\u6C42\u64CD\u4F5C\u5B8C\u6574\u684C\u9762\u3001\u7CFB\u7EDF\u7A97\u53E3\u3001\u6D4F\u89C8\u5668\u5DE5\u5177\u680F\u3001\u6743\u9650\u5F39\u7A97\u6216\u975E\u7F51\u9875\u5E94\u7528\uFF0C\u5E76\u4E14 Farming Computer \u80FD\u529B\u53EF\u7528\u65F6",
105
+ summary: "\u4F7F\u7528\u5F53\u524D Agent \u81EA\u5DF1\u62E5\u6709\u3001\u7528\u6237\u53EF\u89C2\u5BDF\u548C\u63A5\u7BA1\u7684\u9694\u79BB Computer\uFF1B\u5148\u89C2\u5BDF\u518D\u64CD\u4F5C\uFF0C\u64CD\u4F5C\u540E\u590D\u6838\uFF0C\u4E0D\u76F2\u76EE\u91CD\u653E\u8D85\u65F6\u5199\u64CD\u4F5C\u3002",
106
+ commands: [
107
+ "farming capabilities",
108
+ "farming computer list",
109
+ "farming computer open",
110
+ "farming computer help workflow"
111
+ ]
112
+ },
113
+ {
114
+ id: "pest-control",
115
+ name: "\u7267\u573A\u9664\u866B\u8BA1\u5212",
116
+ trigger: "\u7528\u6237\u8981\u6C42\u5BF9\u67D0\u4E2A\u76EE\u5F55\u3001\u4ED3\u5E93\u6216\u6A21\u5757\u4F53\u7CFB\u505A\u7CFB\u7EDF\u6027 bug \u6392\u67E5\u3001\u9664\u866B\u3001\u6DF1\u6316\u6F5C\u5728\u7F3A\u9677\u65F6",
117
+ summary: [
118
+ "Main Agent \u5148\u53EA\u8BFB\u68B3\u7406\u76EE\u6807\u76EE\u5F55\u7ED3\u6784\uFF0C\u5212\u5206\u6A21\u5757\u8FB9\u754C\uFF0C\u660E\u786E\u6A21\u5757\u95F4\u534F\u8BAE\u3001\u6570\u636E\u6D41\u3001\u8C03\u7528\u5173\u7CFB\u548C\u5171\u4EAB\u7EA6\u675F\u3002",
119
+ "\u968F\u540E\u4E3A\u6BCF\u4E2A\u6A21\u5757\u542F\u52A8\u4E00\u4E2A\u5B50 Agent \u6DF1\u6316\u6F5C\u5728 bug\uFF1B\u6BCF\u4E2A\u5B50 Agent \u5FC5\u987B\u805A\u7126\u81EA\u5DF1\u7684\u6A21\u5757\uFF0C\u540C\u65F6\u68C0\u67E5\u4E0E\u76F8\u90BB\u6A21\u5757\u534F\u8BAE\u662F\u5426\u7834\u574F\u3002",
120
+ "Main Agent \u8D1F\u8D23\u6C47\u603B\u5B50 Agent \u53D1\u73B0\uFF0C\u53BB\u91CD\u3001\u5206\u7EA7\u3001\u5B89\u6392\u53EF\u9A8C\u8BC1\u4FEE\u590D\u6216\u7ED9\u7528\u6237\u786E\u8BA4\u9AD8\u98CE\u9669\u6539\u52A8\u3002"
121
+ ].join(" "),
122
+ commands: [
123
+ 'farming spawn --workspace <repo> --task "\u6A21\u5757\uFF1A<name>\u3002\u8BF7\u6DF1\u6316\u8BE5\u6A21\u5757\u6F5C\u5728 bug\uFF0C\u91CD\u70B9\u68C0\u67E5\u8FB9\u754C\u6761\u4EF6\u3001\u9519\u8BEF\u5904\u7406\u3001\u5E76\u53D1/\u72B6\u6001\u4E00\u81F4\u6027\u3001\u534F\u8BAE\u8FDD\u7EA6\u548C\u6D4B\u8BD5\u7F3A\u53E3\uFF1B\u4E0D\u8981\u4FEE\u6539\u5176\u4ED6\u6A21\u5757\uFF0C\u5148\u62A5\u544A\u53EF\u9A8C\u8BC1\u53D1\u73B0\u3002" -- <coding-agent-command>',
124
+ 'farming list --parent "$FARMING_AGENT_ID"',
125
+ "farming output <agent-id> --tail 2000",
126
+ 'farming send <agent-id> "\u8BF7\u57FA\u4E8E\u5DF2\u786E\u8BA4\u7684\u6A21\u5757\u534F\u8BAE\u7EE7\u7EED\u68C0\u67E5\u4EA4\u4E92\u8FB9\u754C\uFF0C\u5E76\u7ED9\u51FA\u6700\u5C0F\u53EF\u9A8C\u8BC1\u4FEE\u590D\u5EFA\u8BAE"',
127
+ "farming kill <agent-id>"
128
+ ]
129
+ }
130
+ ];
131
+ function getMainAgentSkillsCatalog() {
132
+ return MAIN_AGENT_SKILLS.map((skill) => ({
133
+ id: skill.id,
134
+ name: skill.name,
135
+ trigger: skill.trigger,
136
+ summary: skill.summary,
137
+ commands: skill.commands
138
+ }));
139
+ }
140
+ function renderMainAgentOperatingGuide() {
141
+ const lines = [
142
+ "# Farming Main Agent Operating Contract",
143
+ ""
144
+ ];
145
+ MAIN_AGENT_OPERATING_GUIDE.forEach((section) => {
146
+ lines.push(`## ${section.title}`);
147
+ section.lines.forEach((line) => {
148
+ lines.push(`- ${line}`);
149
+ });
150
+ lines.push("");
151
+ });
152
+ return lines.join("\n").trim();
153
+ }
154
+ function renderMainAgentSkills() {
155
+ const lines = [
156
+ "# Farming Main Agent Skills",
157
+ "",
158
+ "You are the Farming Main Agent.",
159
+ "Run `farming skills` any time you need to review these skills.",
160
+ "Use these skills when the user asks for Farming-specific machine context.",
161
+ ""
162
+ ];
163
+ MAIN_AGENT_SKILLS.forEach((skill, index) => {
164
+ lines.push(`${index + 1}. ${skill.name} (${skill.id})`);
165
+ lines.push(`Trigger: ${skill.trigger}`);
166
+ lines.push(`Behavior: ${skill.summary}`);
167
+ lines.push("Commands:");
168
+ skill.commands.forEach((command) => {
169
+ lines.push(`- ${command}`);
170
+ });
171
+ lines.push("");
172
+ });
173
+ lines.push("Rules:");
174
+ lines.push("- `farming browser` lists and operates only Browser Resources owned by this Agent; follow `farming browser help workflow`, and reveal only the help topic or command needed for the current step.");
175
+ lines.push("- `farming computer` operates only the isolated Computer owned by this Agent; observe before and after actions, and never replay an uncertain mutation without observing first.");
176
+ lines.push("- Use \u201C\u7267\u573A\u9664\u866B\u8BA1\u5212\u201D when the user asks for systematic bug hunting across a directory or module tree.");
177
+ lines.push("- Before spawning child agents for pest control, map modules and module protocols first; do not send overlapping or vague tasks.");
178
+ lines.push("- Keep child agents scoped to their assigned module and require evidence, reproduction notes, or tests for each bug claim.");
179
+ lines.push("- For high-risk writes, destructive operations, or broad refactors, summarize the finding and ask the user before proceeding.");
180
+ return [
181
+ renderMainAgentOperatingGuide(),
182
+ "",
183
+ lines.join("\n")
184
+ ].join("\n");
185
+ }
186
+ function renderCanonicalAgentsFile() {
187
+ return [
188
+ "# Farming Main Agent",
189
+ "",
190
+ "This directory is a Farming-managed Main Agent workspace.",
191
+ "",
192
+ "Read this file before acting. You are the Farming Main Agent, not a project-local child agent.",
193
+ "Use the local `farming` CLI to inspect your abilities and coordinate work.",
194
+ "",
195
+ "Useful commands:",
196
+ "- `farming skills`",
197
+ '- `farming spawn --workspace <repo> --task "<module bug hunt task>" -- <coding-agent-command>`',
198
+ '- `farming list --parent "$FARMING_AGENT_ID"`',
199
+ "- `farming output <agent-id> --tail 2000`",
200
+ '- `farming send <agent-id> "<follow-up instruction>"`',
201
+ "- `farming kill <agent-id>`",
202
+ "",
203
+ "Environment:",
204
+ "- `FARMING_MAIN_WORKSPACE` points at this Farming identity workspace.",
205
+ "- `FARMING_PROJECT_WORKSPACE` points at the user-selected project workspace when available.",
206
+ "- `FARMING_SKILLS_FILE` points at the detailed Farming skills file.",
207
+ "",
208
+ renderMainAgentSkills()
209
+ ].join("\n");
210
+ }
211
+ function renderCompatibilityFile(targetName = "AGENTS.md") {
212
+ return [
213
+ `# Farming Main Agent (${targetName})`,
214
+ "",
215
+ `This file is a compatibility entrypoint for ${targetName}.`,
216
+ "It intentionally includes the full Farming Main Agent identity inline, because some coding CLIs read only their own memory filename and may not follow a pointer to AGENTS.md.",
217
+ "",
218
+ renderCanonicalAgentsFile()
219
+ ].join("\n");
220
+ }
221
+ function renderCompatibilityPointerFile(targetName = "AGENTS.md") {
222
+ return [
223
+ "# Farming Main Agent",
224
+ "",
225
+ `This is a compatibility entrypoint for ${targetName}.`,
226
+ "",
227
+ "The canonical Farming Main Agent instructions are in `AGENTS.md`.",
228
+ "Read `AGENTS.md`, then run `farming skills` if you need the current skill list.",
229
+ ""
230
+ ].join("\n");
231
+ }
232
+ function renderMainAgentBootstrap() {
233
+ return [
234
+ renderMainAgentSkills(),
235
+ "",
236
+ "Bootstrap note: remember these Farming skills for future user requests."
237
+ ].join("\n");
238
+ }
239
+ function upsertManagedBlock(existingContent, block) {
240
+ const start = existingContent.indexOf(MANAGED_BLOCK_START);
241
+ const end = existingContent.indexOf(MANAGED_BLOCK_END);
242
+ if (start !== -1 && end !== -1 && end > start) {
243
+ const before = existingContent.slice(0, start).replace(/\s+$/g, "");
244
+ const after = existingContent.slice(end + MANAGED_BLOCK_END.length).replace(/^\s+/g, "");
245
+ return [before, block.trim(), after].filter(Boolean).join("\n\n") + "\n";
246
+ }
247
+ return [existingContent.trim(), block.trim()].filter(Boolean).join("\n\n") + "\n";
248
+ }
249
+ function writeManagedSkillFile(filePath, block) {
250
+ let existing = "";
251
+ try {
252
+ existing = fs.readFileSync(filePath, "utf8");
253
+ } catch {
254
+ existing = "";
255
+ }
256
+ fs.writeFileSync(filePath, upsertManagedBlock(existing, block));
257
+ }
258
+ function ensureMainAgentSkillFiles(farmingDir) {
259
+ if (!farmingDir) return;
260
+ fs.mkdirSync(farmingDir, { recursive: true });
261
+ const skillsText = renderMainAgentSkills() + "\n";
262
+ const skillsDir = path.join(farmingDir, "skills");
263
+ fs.mkdirSync(skillsDir, { recursive: true });
264
+ fs.writeFileSync(path.join(farmingDir, "FARMING_MAIN_AGENT_SKILLS.md"), skillsText);
265
+ fs.writeFileSync(path.join(farmingDir, "AGENTS.md"), `${renderCanonicalAgentsFile()}
266
+ `);
267
+ fs.writeFileSync(path.join(skillsDir, "index.json"), JSON.stringify(MAIN_AGENT_SKILLS, null, 2) + "\n");
268
+ MAIN_AGENT_SKILLS.forEach((skill) => {
269
+ const lines = [
270
+ `# ${skill.name}`,
271
+ "",
272
+ `ID: ${skill.id}`,
273
+ "",
274
+ `Trigger: ${skill.trigger}`,
275
+ "",
276
+ `Behavior: ${skill.summary}`,
277
+ "",
278
+ "Commands:",
279
+ ...skill.commands.map((command) => `- ${command}`),
280
+ ""
281
+ ];
282
+ fs.writeFileSync(path.join(skillsDir, `${skill.id}.md`), lines.join("\n"));
283
+ });
284
+ REMOVED_MAIN_AGENT_SKILL_IDS.forEach((skillId) => {
285
+ fs.rmSync(path.join(skillsDir, `${skillId}.md`), { force: true });
286
+ });
287
+ ["CLAUDE.md", "QWEN.md"].forEach((filename) => {
288
+ writeManagedSkillFile(path.join(farmingDir, filename), [
289
+ MANAGED_BLOCK_START,
290
+ renderCompatibilityFile(filename).trim(),
291
+ MANAGED_BLOCK_END,
292
+ ""
293
+ ].join("\n"));
294
+ });
295
+ }
296
+ // Annotate the CommonJS export names for ESM import in node:
297
+ 0 && (module.exports = {
298
+ MAIN_AGENT_OPERATING_GUIDE,
299
+ MAIN_AGENT_SKILLS,
300
+ ensureMainAgentSkillFiles,
301
+ getMainAgentSkillsCatalog,
302
+ renderCanonicalAgentsFile,
303
+ renderCompatibilityFile,
304
+ renderCompatibilityPointerFile,
305
+ renderMainAgentBootstrap,
306
+ renderMainAgentOperatingGuide,
307
+ renderMainAgentSkills,
308
+ upsertManagedBlock
309
+ });
@@ -0,0 +1,132 @@
1
+ // Generated by scripts/build-backend-runtime.ts. Do not edit.
2
+ "use strict";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var main_page_session_exports = {};
31
+ __export(main_page_session_exports, {
32
+ AUTO_RESUME_AGENT_SESSION_PROVIDERS: () => AUTO_RESUME_AGENT_SESSION_PROVIDERS,
33
+ findActiveAgentClaimingSession: () => findActiveAgentClaimingSession,
34
+ mainPageAgentSessionFromKey: () => mainPageAgentSessionFromKey,
35
+ mainPageAgentSessionKey: () => mainPageAgentSessionKey,
36
+ mainPageAgentSessionsToAutoResume: () => mainPageAgentSessionsToAutoResume,
37
+ mainPageSessionProviderForCommand: () => mainPageSessionProviderForCommand,
38
+ resumedAgentSource: () => resumedAgentSource
39
+ });
40
+ module.exports = __toCommonJS(main_page_session_exports);
41
+ var path = __toESM(require("path"));
42
+ var import_cli_agents = require("./cli-agents.cjs");
43
+ var import_provider_session_id = require("./provider-session-id.cjs");
44
+ const AUTO_RESUME_AGENT_SESSION_PROVIDERS = /* @__PURE__ */ new Set(["codex", "claude", "opencode", "qoder", "qwen"]);
45
+ function normalizeMainPageSessionProvider(provider) {
46
+ const normalized = String(provider || "").trim().toLowerCase();
47
+ return AUTO_RESUME_AGENT_SESSION_PROVIDERS.has(normalized) ? normalized : "";
48
+ }
49
+ function isSafeSessionId(sessionId) {
50
+ return (0, import_provider_session_id.isSafeProviderSessionId)(sessionId);
51
+ }
52
+ function mainPageAgentSessionKey(provider, sessionId, providerHomeId = "") {
53
+ const normalizedProvider = normalizeMainPageSessionProvider(provider);
54
+ const normalizedSessionId = String(sessionId || "").trim();
55
+ if (!normalizedProvider || !normalizedSessionId) return "";
56
+ const homeId = String(providerHomeId || "").trim();
57
+ if (homeId && homeId !== "default") return `agent-session:${normalizedProvider}:home:${homeId}:${normalizedSessionId}`;
58
+ return `agent-session:${normalizedProvider}:${normalizedSessionId}`;
59
+ }
60
+ function mainPageAgentSessionFromKey(key) {
61
+ const match = String(key || "").match(/^agent-session:([^:]+):(.+)$/);
62
+ if (!match) return null;
63
+ const provider = normalizeMainPageSessionProvider(match[1]);
64
+ let providerHomeId = "default";
65
+ let sessionId = String(match[2] || "").trim();
66
+ const homeMatch = sessionId.match(/^home:([A-Za-z0-9._-]+):(.+)$/);
67
+ if (homeMatch) {
68
+ providerHomeId = homeMatch[1];
69
+ sessionId = String(homeMatch[2] || "").trim();
70
+ }
71
+ if (!provider || !isSafeSessionId(sessionId)) {
72
+ return null;
73
+ }
74
+ return providerHomeId && providerHomeId !== "default" ? { provider, providerHomeId, sessionId } : { provider, sessionId };
75
+ }
76
+ function mainPageAgentSessionsToAutoResume(settings) {
77
+ const keys = Array.isArray(settings?.mainPageSessionKeys) ? settings.mainPageSessionKeys : [];
78
+ const seen = /* @__PURE__ */ new Set();
79
+ const sessions = [];
80
+ keys.forEach((key) => {
81
+ const session = mainPageAgentSessionFromKey(key);
82
+ if (!session) return;
83
+ const dedupeKey = `${session.provider}:${session.providerHomeId || "default"}:${session.sessionId}`;
84
+ if (seen.has(dedupeKey)) return;
85
+ seen.add(dedupeKey);
86
+ sessions.push(session);
87
+ });
88
+ return sessions;
89
+ }
90
+ function resumedAgentSource(provider, sessionId, providerHomeId = "") {
91
+ const homeId = String(providerHomeId || "").trim();
92
+ return homeId && homeId !== "default" ? `${provider}-history:home:${homeId}:${sessionId}` : `${provider}-history:${sessionId}`;
93
+ }
94
+ function mainPageSessionProviderForCommand(command) {
95
+ const executable = (0, import_cli_agents.parseCommand)(command).find((token) => token !== "env" && !/^[A-Za-z_][A-Za-z0-9_]*=/.test(token));
96
+ const basename = path.basename(executable || "");
97
+ if (basename === "qodercli") return "qoder";
98
+ if (basename === "qwen") return "qwen";
99
+ return normalizeMainPageSessionProvider(basename);
100
+ }
101
+ function isActiveAgent(agent) {
102
+ return Boolean(agent && agent.archived !== true && agent.status !== "dead" && agent.status !== "stopped");
103
+ }
104
+ function findActiveAgentClaimingSession(agents, provider, session) {
105
+ const normalizedProvider = normalizeMainPageSessionProvider(provider);
106
+ const sessionId = String(session && (session.id || session.sessionId) || "").trim();
107
+ if (!normalizedProvider || !isSafeSessionId(sessionId) || !Array.isArray(agents)) return null;
108
+ const providerHomeId = String(session && session.providerHomeId || "default").trim() || "default";
109
+ const sessionKey = mainPageAgentSessionKey(normalizedProvider, sessionId, providerHomeId);
110
+ const legacySessionKey = mainPageAgentSessionKey(normalizedProvider, sessionId);
111
+ const exactSource = resumedAgentSource(normalizedProvider, sessionId, providerHomeId);
112
+ const legacySource = resumedAgentSource(normalizedProvider, sessionId);
113
+ return agents.find((agent) => {
114
+ if (!isActiveAgent(agent)) return false;
115
+ if (agent.providerSessionTemporary === true) return false;
116
+ if (agent.providerSessionKey === sessionKey || providerHomeId === "default" && agent.providerSessionKey === legacySessionKey) return true;
117
+ if (agent.providerSessionProvider === normalizedProvider && agent.providerSessionId === sessionId && (String(agent.providerHomeId || "default").trim() || "default") === providerHomeId) {
118
+ return true;
119
+ }
120
+ return agent.source === exactSource || providerHomeId === "default" && agent.source === legacySource;
121
+ }) || null;
122
+ }
123
+ // Annotate the CommonJS export names for ESM import in node:
124
+ 0 && (module.exports = {
125
+ AUTO_RESUME_AGENT_SESSION_PROVIDERS,
126
+ findActiveAgentClaimingSession,
127
+ mainPageAgentSessionFromKey,
128
+ mainPageAgentSessionKey,
129
+ mainPageAgentSessionsToAutoResume,
130
+ mainPageSessionProviderForCommand,
131
+ resumedAgentSource
132
+ });
@@ -0,0 +1,139 @@
1
+ // Generated by scripts/build-backend-runtime.ts. Do not edit.
2
+ "use strict";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var native_pty_controller_generation_exports = {};
31
+ __export(native_pty_controller_generation_exports, {
32
+ allocateNativePtyControllerGeneration: () => allocateNativePtyControllerGeneration,
33
+ allocateNativePtyRuntimeGeneration: () => allocateNativePtyRuntimeGeneration,
34
+ compareNativePtyRuntimeEpochs: () => compareNativePtyRuntimeEpochs,
35
+ formatNativePtyRuntimeEpoch: () => formatNativePtyRuntimeEpoch,
36
+ nativePtyRuntimeEpochGeneration: () => nativePtyRuntimeEpochGeneration,
37
+ positiveGeneration: () => positiveGeneration
38
+ });
39
+ module.exports = __toCommonJS(native_pty_controller_generation_exports);
40
+ var crypto = __toESM(require("crypto"));
41
+ var fs = __toESM(require("fs"));
42
+ var path = __toESM(require("path"));
43
+ var storageLayout = __toESM(require("./storage-layout.cjs"));
44
+ const LOCK_RETRY_MS = 10;
45
+ const LOCK_TIMEOUT_MS = 5e3;
46
+ const STALE_LOCK_MS = 3e4;
47
+ function delay(ms) {
48
+ return new Promise((resolve) => setTimeout(resolve, ms));
49
+ }
50
+ function positiveGeneration(value) {
51
+ const parsed = Math.floor(Number(value));
52
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : 0;
53
+ }
54
+ function fileSystemError(error) {
55
+ return typeof error === "object" && error !== null;
56
+ }
57
+ async function acquireGenerationLock(lockDir) {
58
+ const deadline = Date.now() + LOCK_TIMEOUT_MS;
59
+ while (Date.now() < deadline) {
60
+ try {
61
+ await fs.promises.mkdir(lockDir);
62
+ return;
63
+ } catch (error) {
64
+ if (!fileSystemError(error) || error.code !== "EEXIST") throw error;
65
+ try {
66
+ const stat = await fs.promises.stat(lockDir);
67
+ if (Date.now() - stat.mtimeMs > STALE_LOCK_MS) {
68
+ await fs.promises.rm(lockDir, { recursive: true, force: true });
69
+ continue;
70
+ }
71
+ } catch (statError) {
72
+ if (!fileSystemError(statError) || statError.code !== "ENOENT") throw statError;
73
+ }
74
+ await delay(LOCK_RETRY_MS);
75
+ }
76
+ }
77
+ throw new Error("Timed out allocating native PTY controller generation");
78
+ }
79
+ async function allocateGeneration(generationFile, lockDir) {
80
+ const root = path.dirname(generationFile);
81
+ await fs.promises.mkdir(root, { recursive: true });
82
+ await acquireGenerationLock(lockDir);
83
+ try {
84
+ let current = 0;
85
+ try {
86
+ current = positiveGeneration(await fs.promises.readFile(generationFile, "utf8"));
87
+ } catch (error) {
88
+ if (!fileSystemError(error) || error.code !== "ENOENT") throw error;
89
+ }
90
+ const generation = current + 1;
91
+ const temporary = `${generationFile}.${process.pid}.${crypto.randomUUID()}.tmp`;
92
+ await fs.promises.writeFile(temporary, `${generation}
93
+ `, { mode: 384 });
94
+ await fs.promises.rename(temporary, generationFile);
95
+ return generation;
96
+ } finally {
97
+ await fs.promises.rm(lockDir, { recursive: true, force: true });
98
+ }
99
+ }
100
+ async function allocateNativePtyControllerGeneration(configDir) {
101
+ const root = path.resolve(configDir);
102
+ const generationFile = storageLayout.nativePtyControllerGenerationFile(root);
103
+ const lockDir = storageLayout.nativePtyControllerGenerationLockDir(root);
104
+ return allocateGeneration(generationFile, lockDir);
105
+ }
106
+ async function allocateNativePtyRuntimeGeneration(configDir) {
107
+ const root = path.resolve(configDir);
108
+ return allocateGeneration(
109
+ storageLayout.nativePtyRuntimeGenerationFile(root),
110
+ storageLayout.nativePtyRuntimeGenerationLockDir(root)
111
+ );
112
+ }
113
+ function formatNativePtyRuntimeEpoch(generation, id = crypto.randomUUID()) {
114
+ const normalized = positiveGeneration(generation);
115
+ if (!normalized) throw new Error("Native PTY runtime generation must be positive");
116
+ return `farming-runtime-v1:${String(normalized).padStart(20, "0")}:${id}`;
117
+ }
118
+ function nativePtyRuntimeEpochGeneration(runtimeEpoch) {
119
+ const match = /^farming-runtime-v1:(\d{20}):/.exec(String(runtimeEpoch || ""));
120
+ if (!match) return null;
121
+ const generation = Number(match[1]);
122
+ return Number.isSafeInteger(generation) && generation > 0 ? generation : null;
123
+ }
124
+ function compareNativePtyRuntimeEpochs(left, right) {
125
+ if (left === right) return 0;
126
+ const leftGeneration = nativePtyRuntimeEpochGeneration(left);
127
+ const rightGeneration = nativePtyRuntimeEpochGeneration(right);
128
+ if (leftGeneration === null || rightGeneration === null || leftGeneration === rightGeneration) return null;
129
+ return leftGeneration < rightGeneration ? -1 : 1;
130
+ }
131
+ // Annotate the CommonJS export names for ESM import in node:
132
+ 0 && (module.exports = {
133
+ allocateNativePtyControllerGeneration,
134
+ allocateNativePtyRuntimeGeneration,
135
+ compareNativePtyRuntimeEpochs,
136
+ formatNativePtyRuntimeEpoch,
137
+ nativePtyRuntimeEpochGeneration,
138
+ positiveGeneration
139
+ });