farming-code 2.2.6

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 (453) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +287 -0
  3. package/README.zh_cn.md +329 -0
  4. package/SECURITY.md +29 -0
  5. package/THIRD_PARTY_NOTICES.md +106 -0
  6. package/backend/acp/client-services.js +312 -0
  7. package/backend/acp/patch-decisions.js +137 -0
  8. package/backend/acp/permission-security.js +108 -0
  9. package/backend/acp-runtime.js +1144 -0
  10. package/backend/acp-session-state.js +448 -0
  11. package/backend/acp-transcript.js +169 -0
  12. package/backend/agent-activity.js +186 -0
  13. package/backend/agent-env.js +250 -0
  14. package/backend/agent-json-stream.js +268 -0
  15. package/backend/agent-manager.js +4259 -0
  16. package/backend/agent-memory-report.js +583 -0
  17. package/backend/agent-order.js +162 -0
  18. package/backend/agent-provider-session.js +287 -0
  19. package/backend/agent-session-history.js +888 -0
  20. package/backend/app-server-api.js +917 -0
  21. package/backend/async-cache.js +94 -0
  22. package/backend/auth.js +178 -0
  23. package/backend/claude-settings.js +121 -0
  24. package/backend/cli-agents.js +484 -0
  25. package/backend/codex-app-server-home.js +39 -0
  26. package/backend/codex-app-server-runtime.js +901 -0
  27. package/backend/codex-context-window.js +189 -0
  28. package/backend/codex-models.js +229 -0
  29. package/backend/codex-rollout-follower.js +243 -0
  30. package/backend/codex-session-history.js +553 -0
  31. package/backend/codex-transcript-sanitizer.js +103 -0
  32. package/backend/codex-transcript.js +2341 -0
  33. package/backend/command-runner-child.js +67 -0
  34. package/backend/config-manager.js +815 -0
  35. package/backend/control-api.js +151 -0
  36. package/backend/data/chinese-poetic-words.json +8223 -0
  37. package/backend/data/poetic-word-sources/china.json +49209 -0
  38. package/backend/data/poetic-word-sources/india.json +9763 -0
  39. package/backend/data/poetic-word-sources/japan.json +8455 -0
  40. package/backend/executable-discovery.js +207 -0
  41. package/backend/farming-app-cli.js +790 -0
  42. package/backend/farming-cli.js +400 -0
  43. package/backend/farming-session-store.js +373 -0
  44. package/backend/haiku-token.js +772 -0
  45. package/backend/index-html.js +49 -0
  46. package/backend/input-parts.js +54 -0
  47. package/backend/input-routing.js +24 -0
  48. package/backend/json-cli-runtime.js +161 -0
  49. package/backend/local-session-engine.js +620 -0
  50. package/backend/main-agent-skills.js +292 -0
  51. package/backend/main-page-session.js +119 -0
  52. package/backend/native-pty-host-client.js +516 -0
  53. package/backend/native-pty-host-path.js +22 -0
  54. package/backend/native-pty-host.js +816 -0
  55. package/backend/native-session-engine.js +196 -0
  56. package/backend/network.js +23 -0
  57. package/backend/npm-update-helper.js +196 -0
  58. package/backend/packaged-node-pty.js +79 -0
  59. package/backend/provider-session-id.js +47 -0
  60. package/backend/qr-share-tickets.js +100 -0
  61. package/backend/review-diff-router.js +180 -0
  62. package/backend/review-diff-service.js +1270 -0
  63. package/backend/review-session-router.js +74 -0
  64. package/backend/review-session-service.js +432 -0
  65. package/backend/review-session-store.js +144 -0
  66. package/backend/review-state-router.js +116 -0
  67. package/backend/review-state-store.js +287 -0
  68. package/backend/run-history-store.js +70 -0
  69. package/backend/server.js +2446 -0
  70. package/backend/session-engine-bridge.js +110 -0
  71. package/backend/session-engine-router.js +66 -0
  72. package/backend/session-engine.js +39 -0
  73. package/backend/shell-busy-integration.js +472 -0
  74. package/backend/slash-command-discovery.js +296 -0
  75. package/backend/storage-layout.js +101 -0
  76. package/backend/system-monitor.js +77 -0
  77. package/backend/terminal-runtime-cleanup.js +80 -0
  78. package/backend/terminal-screen-state.js +240 -0
  79. package/backend/terminal-screen-worker-pool.js +165 -0
  80. package/backend/terminal-screen-worker-thread.js +161 -0
  81. package/backend/terminal-screen-worker.js +255 -0
  82. package/backend/terminal-status.js +356 -0
  83. package/backend/theme-manager.js +145 -0
  84. package/backend/update-service.js +1183 -0
  85. package/backend/usage-forecast.js +86 -0
  86. package/backend/usage-monitor.js +1357 -0
  87. package/backend/workspace-discovery.js +311 -0
  88. package/backend/workspace-file-router.js +431 -0
  89. package/backend/workspace-file-service.js +2765 -0
  90. package/bin/farming +5 -0
  91. package/config/farming.deploy.env.example +13 -0
  92. package/config/farming.install.env.example +17 -0
  93. package/dist/assets/App-BrP-ENHg.css +1 -0
  94. package/dist/assets/App-Dza5yEDe.js +124 -0
  95. package/dist/assets/FileEditorMarkdownPreview-DRDNQ8mX.css +1 -0
  96. package/dist/assets/FileEditorMarkdownPreview-elKWc8Im.js +404 -0
  97. package/dist/assets/FileEditorPane-BQLocXOp.js +5 -0
  98. package/dist/assets/IconGlyphs-RkMAdBXF.js +1 -0
  99. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  100. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  101. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  102. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  103. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  104. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  105. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  106. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  107. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  108. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  109. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  110. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  111. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  112. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  113. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  114. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  115. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  116. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  117. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  118. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  119. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  120. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  121. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  122. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  123. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  124. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  125. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  126. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  127. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  128. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  129. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  130. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  131. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  132. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  133. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  134. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  135. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  136. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  137. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  138. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  139. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  140. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  141. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  142. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  143. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  144. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  145. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  146. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  147. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  148. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  149. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  150. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  151. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  152. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  153. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  154. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  155. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  156. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  157. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  158. package/dist/assets/ProjectFilesSection-lS1azbgj.js +12 -0
  159. package/dist/assets/ReviewPage-DgnmgU2T.js +3 -0
  160. package/dist/assets/abap-Cc5D5h5i.js +1 -0
  161. package/dist/assets/abnfDiagram-VRR7QNED-BgawzDQT.js +1 -0
  162. package/dist/assets/apex-BKopwLmx.js +1 -0
  163. package/dist/assets/api-D1lyBYIQ.js +1 -0
  164. package/dist/assets/arc-CWoVlxJw.js +1 -0
  165. package/dist/assets/architecture-TIHT7OUA-CbJBFh3w.js +1 -0
  166. package/dist/assets/architectureDiagram-ZJ3FMSHR-DUShwPg0.js +36 -0
  167. package/dist/assets/array-HeX70jSN.js +1 -0
  168. package/dist/assets/azcli-DI-C34WA.js +1 -0
  169. package/dist/assets/bat-Cbp6u42z.js +1 -0
  170. package/dist/assets/bicep-4QA1jTCM.js +2 -0
  171. package/dist/assets/blockDiagram-677ZJIJ3-CeGZviXR.js +132 -0
  172. package/dist/assets/c4Diagram-LMCZKHZV-CLhYht6S.js +10 -0
  173. package/dist/assets/cameligo-Dda_adPs.js +1 -0
  174. package/dist/assets/channel-Uw90AO0b.js +1 -0
  175. package/dist/assets/chunk-2Q5K7J3B-d5WWh8jo.js +1 -0
  176. package/dist/assets/chunk-32BRIVSS-LFYpT-Cu.js +1 -0
  177. package/dist/assets/chunk-52WLFC77-BH6jDw9J.js +10 -0
  178. package/dist/assets/chunk-5FCAYU7R-C7AmIhYv.js +1 -0
  179. package/dist/assets/chunk-5HE753X5-C8cXaouP.js +1 -0
  180. package/dist/assets/chunk-5JV3BV7I-C1PtimcA.js +1 -0
  181. package/dist/assets/chunk-5TONJI2A-_81zUME8.js +2 -0
  182. package/dist/assets/chunk-5VM5RSS4-Dlw7AXWp.js +15 -0
  183. package/dist/assets/chunk-7BUUIJ7U-ZBRhjLOh.js +1 -0
  184. package/dist/assets/chunk-BIQX33UG-CWmzxeAw.js +1 -0
  185. package/dist/assets/chunk-C7G6YPKG-B_mIUlb7.js +1 -0
  186. package/dist/assets/chunk-CQNSW5MT-CMayolwI.js +1 -0
  187. package/dist/assets/chunk-CYSBUYHQ-lSPbrL3Z.js +1 -0
  188. package/dist/assets/chunk-DECur_0Z.js +1 -0
  189. package/dist/assets/chunk-EMLP6XTP-D9-jtCnM.js +1 -0
  190. package/dist/assets/chunk-EX3LRPZG-C63hVuAJ.js +231 -0
  191. package/dist/assets/chunk-FWX5IMBZ-CboX-WF_.js +2 -0
  192. package/dist/assets/chunk-HOUHSVGY-BOgSd6Un.js +1 -0
  193. package/dist/assets/chunk-ICXQ74PX-C0K-pgZt.js +2 -0
  194. package/dist/assets/chunk-JG7HCLWE-Cib606u_.js +2 -0
  195. package/dist/assets/chunk-JWPE2WC7-DSyBRaRG.js +1 -0
  196. package/dist/assets/chunk-KEIR6QF5-CNOHik0T.js +161 -0
  197. package/dist/assets/chunk-MOJQB5TN-CVMfwN_7.js +88 -0
  198. package/dist/assets/chunk-MOZMSUNE-D6JeZqmE.js +1 -0
  199. package/dist/assets/chunk-OGEWGWER-DLT3pxyw.js +1 -0
  200. package/dist/assets/chunk-OSBZ3O6U-C0W8KSeg.js +1 -0
  201. package/dist/assets/chunk-PUDLZKDR-Cd079yIQ.js +156 -0
  202. package/dist/assets/chunk-Q4XR5HBZ-D0jHa6SO.js +70 -0
  203. package/dist/assets/chunk-QBLGF6JB-p4omp7uO.js +1 -0
  204. package/dist/assets/chunk-R7FJI6CG-CZ_p9hSr.js +1 -0
  205. package/dist/assets/chunk-RYQCIY6F-CZA9pvFX.js +1 -0
  206. package/dist/assets/chunk-U6XO7XAA-CcXKsWxp.js +2 -0
  207. package/dist/assets/chunk-V7JOEXUC-CVDtR75H.js +206 -0
  208. package/dist/assets/chunk-VAUOI2AC-B-W2_9Ot.js +1 -0
  209. package/dist/assets/chunk-VR4S4FIN-FD3kWh32.js +1 -0
  210. package/dist/assets/chunk-WYO6CB5R-C2bGaS5r.js +127 -0
  211. package/dist/assets/chunk-XXDRQBXY-BBXwjhUx.js +1 -0
  212. package/dist/assets/chunk-Y2CYZVJY-Di0sYzi1.js +1 -0
  213. package/dist/assets/chunk-YOTPTUD7-BXHmEk89.js +1 -0
  214. package/dist/assets/chunk-ZGVPDNZ5-ymgts0zo.js +62 -0
  215. package/dist/assets/chunk-ZIRB5QZD-DncwlQQc.js +32 -0
  216. package/dist/assets/classDiagram-OUVF2IWQ-DKW_dtku.js +1 -0
  217. package/dist/assets/classDiagram-v2-EOCWNBFH-C8Fi7-yv.js +1 -0
  218. package/dist/assets/clojure-CvY8A83L.js +1 -0
  219. package/dist/assets/code-dark-Cjb1QGhu.css +1 -0
  220. package/dist/assets/code-mobile-3C2Rr-CN.css +1 -0
  221. package/dist/assets/codicon-ngg6Pgfi.ttf +0 -0
  222. package/dist/assets/coffee-4LX2Sv8A.js +1 -0
  223. package/dist/assets/core-ZlAPicox.js +3 -0
  224. package/dist/assets/cose-bilkent-JH36ORCC-BNIAz0nN.js +1 -0
  225. package/dist/assets/cpp-D4AzSV28.js +1 -0
  226. package/dist/assets/csharp-C4nWN4Yd.js +1 -0
  227. package/dist/assets/csp-CiEaaS5Z.js +1 -0
  228. package/dist/assets/css-DXxBRsbk.js +3 -0
  229. package/dist/assets/css.worker-DyDu5ynT.js +89 -0
  230. package/dist/assets/cssMode-DDWxTPm_.js +1 -0
  231. package/dist/assets/cynefin-VYW2F7L2-DgXGHlRt.js +1 -0
  232. package/dist/assets/cynefinDiagram-TSTJHNR4-CwpobXIl.js +62 -0
  233. package/dist/assets/cypher-DOMzqyFA.js +1 -0
  234. package/dist/assets/cytoscape.esm-Cl8iC3D7.js +321 -0
  235. package/dist/assets/dagre-DXlcHgr3.js +1 -0
  236. package/dist/assets/dagre-VKFMJZFB-Dkhlfjna.js +4 -0
  237. package/dist/assets/dart-BWS7MXt_.js +1 -0
  238. package/dist/assets/defaultLocale-GJwWH1Jr.js +1 -0
  239. package/dist/assets/diagram-FQU43EPY-hA8dicp6.js +3 -0
  240. package/dist/assets/diagram-G47NLZAW-BTY6JTzO.js +24 -0
  241. package/dist/assets/diagram-NH7WQ7WH-xkaHHX9M.js +24 -0
  242. package/dist/assets/diagram-OA4YK3LP-gk_fg9UU.js +30 -0
  243. package/dist/assets/diagram-WEI45ONY-BvC8xd6T.js +41 -0
  244. package/dist/assets/dist-ClAL-Tv5.js +1 -0
  245. package/dist/assets/dockerfile-Baf4U3xT.js +1 -0
  246. package/dist/assets/ebnfDiagram-CCIWWBDH-CR7RaNat.js +1 -0
  247. package/dist/assets/ecl-CT7udlkQ.js +1 -0
  248. package/dist/assets/editor-CtbFZlk0.css +1 -0
  249. package/dist/assets/editor.api2-B9h6iFPK.js +872 -0
  250. package/dist/assets/editor.worker-Dpt_xPrs.js +26 -0
  251. package/dist/assets/elixir-CIbAZw5l.js +1 -0
  252. package/dist/assets/erDiagram-Q63AITRT-_M-JFPbj.js +85 -0
  253. package/dist/assets/eventmodeling-45OFAUF4-DXYTQ2nt.js +1 -0
  254. package/dist/assets/file-icons-EFUGSSwf.js +1 -0
  255. package/dist/assets/flow9-Dqiw45WV.js +1 -0
  256. package/dist/assets/flowDiagram-23GEKE2U-DAiS5Y7G.js +1 -0
  257. package/dist/assets/freemarker2-QBsTERH-.js +3 -0
  258. package/dist/assets/fsharp-E8E2L9jU.js +1 -0
  259. package/dist/assets/ganttDiagram-NO4QXBWP-Bl8P1yf_.js +292 -0
  260. package/dist/assets/gitGraph-TEB2WS4Q-CzTBjEvV.js +1 -0
  261. package/dist/assets/gitGraphDiagram-IHSO6WYX-DoHa5ysz.js +106 -0
  262. package/dist/assets/go-CouVSN4D.js +1 -0
  263. package/dist/assets/graphlib-CbSvZcZU.js +1 -0
  264. package/dist/assets/graphql-a6h6h5-t.js +1 -0
  265. package/dist/assets/handlebars-CuoxPo5A.js +1 -0
  266. package/dist/assets/hcl-vso3e6N-.js +1 -0
  267. package/dist/assets/html-gX5PEu0Q.js +1 -0
  268. package/dist/assets/html.worker-IWNXhnIC.js +502 -0
  269. package/dist/assets/htmlMode-DIWUbUxd.js +1 -0
  270. package/dist/assets/index-BpHPeJf0.js +10 -0
  271. package/dist/assets/info-DKCQHKI2-DznP7j3s.js +1 -0
  272. package/dist/assets/infoDiagram-FWYZ7A6U-DSFcSuUs.js +2 -0
  273. package/dist/assets/ini-SwZZkotR.js +1 -0
  274. package/dist/assets/init-BPLPMQ3Y.js +1 -0
  275. package/dist/assets/ishikawaDiagram-FXEZZL3T-DdkqullI.js +70 -0
  276. package/dist/assets/java-CtRLC4_3.js +1 -0
  277. package/dist/assets/javascript-BYKGIUGs.js +1 -0
  278. package/dist/assets/journeyDiagram-5HDEW3XC-B4hRnQJr.js +139 -0
  279. package/dist/assets/json.worker-c4h5s80L.js +58 -0
  280. package/dist/assets/jsonMode-AFmQQP6u.js +7 -0
  281. package/dist/assets/jsx-runtime-BthL93pI.js +1 -0
  282. package/dist/assets/julia-CuJWFKQH.js +1 -0
  283. package/dist/assets/kanban-definition-HUTT4EX6-tm2FZB2E.js +89 -0
  284. package/dist/assets/katex-C8DPyI6s.js +257 -0
  285. package/dist/assets/kotlin-B_kBhsre.js +1 -0
  286. package/dist/assets/less-CtrHIfz3.js +2 -0
  287. package/dist/assets/lexon-yVt1pJLu.js +1 -0
  288. package/dist/assets/line-CmsjK4kn.js +1 -0
  289. package/dist/assets/linear-Dld3_ERu.js +1 -0
  290. package/dist/assets/liquid-DBIl-f0z.js +1 -0
  291. package/dist/assets/lspLanguageFeatures-DK6tqicV.js +4 -0
  292. package/dist/assets/lua-prOwgJ4U.js +1 -0
  293. package/dist/assets/m3-DhrdTQ84.js +1 -0
  294. package/dist/assets/main-DTJwH51M.css +1 -0
  295. package/dist/assets/map-LZWWoeWa.js +1 -0
  296. package/dist/assets/markdown-DoI5HwSM.js +1 -0
  297. package/dist/assets/mdx-DS-bVtZN.js +1 -0
  298. package/dist/assets/mermaid-parser.core-BQtepoLd.js +4 -0
  299. package/dist/assets/mermaid.core-C7UT_EEL.js +11 -0
  300. package/dist/assets/mindmap-definition-LN4V7U3C-DplfjGms.js +96 -0
  301. package/dist/assets/mips-Dye5jsBU.js +1 -0
  302. package/dist/assets/monaco.contribution-CyLosfZI.js +2 -0
  303. package/dist/assets/msdax-TkNOyIL8.js +1 -0
  304. package/dist/assets/mysql-CEc-RKZF.js +1 -0
  305. package/dist/assets/objective-c-CqqCsQz0.js +1 -0
  306. package/dist/assets/ordinal-BLrOss5K.js +1 -0
  307. package/dist/assets/packet-7NZHBO7P-BDEPOPha.js +1 -0
  308. package/dist/assets/pascal-DO_pj8yg.js +1 -0
  309. package/dist/assets/pascaligo-1cbdZdF3.js +1 -0
  310. package/dist/assets/path-YdFzr2W6.js +1 -0
  311. package/dist/assets/pegDiagram-2B236MQR-lu3SdkQs.js +1 -0
  312. package/dist/assets/perl-B_N3PYfC.js +1 -0
  313. package/dist/assets/pgsql-9iYk1FQ7.js +1 -0
  314. package/dist/assets/php-rO2sgoUM.js +1 -0
  315. package/dist/assets/pie-RZYD4A2V-DWIrwPJQ.js +1 -0
  316. package/dist/assets/pieDiagram-ENE6RG2P-3fHbmDf9.js +39 -0
  317. package/dist/assets/pla-Cbgv60kq.js +1 -0
  318. package/dist/assets/postiats-y6xrhy_M.js +1 -0
  319. package/dist/assets/powerquery-BaD8gWNE.js +1 -0
  320. package/dist/assets/powershell-BMhG4JVe.js +1 -0
  321. package/dist/assets/preload-helper-mJowh_hw.js +1 -0
  322. package/dist/assets/protobuf-CdOP5kN3.js +2 -0
  323. package/dist/assets/pug-Ck60hNF9.js +1 -0
  324. package/dist/assets/python-C93q3xXz.js +1 -0
  325. package/dist/assets/qoder-C9LmmOSf.svg +1 -0
  326. package/dist/assets/qoder-Cf9gl0Y5.svg +1 -0
  327. package/dist/assets/qoder-gHCinseV.svg +1 -0
  328. package/dist/assets/qrcode-DV-_rjU8.js +3 -0
  329. package/dist/assets/qsharp-BcaKFfP-.js +1 -0
  330. package/dist/assets/quadrantDiagram-ABIIQ3AL-a5qoWz-X.js +7 -0
  331. package/dist/assets/r-rFNes0iK.js +1 -0
  332. package/dist/assets/radar-I7S5WNFK-B7OaD8vp.js +1 -0
  333. package/dist/assets/railroad-3IZDKUUU-BXW2nuCA.js +1 -0
  334. package/dist/assets/railroad-abnf-AHOZXSZD-Buw9QG2r.js +1 -0
  335. package/dist/assets/railroad-ebnf-EBAXGLYW-BjSi4sWJ.js +1 -0
  336. package/dist/assets/railroad-peg-LSFZ7HO6-DN1wIVhS.js +1 -0
  337. package/dist/assets/railroadDiagram-RFXS5EU6-D2TOuXW9.js +1 -0
  338. package/dist/assets/razor-CBifNGXO.js +1 -0
  339. package/dist/assets/react-dom-gtU6X-Hj.js +1 -0
  340. package/dist/assets/redis-DkpQ3K6G.js +1 -0
  341. package/dist/assets/redshift-Di9N5TI3.js +1 -0
  342. package/dist/assets/requirementDiagram-TGXJPOKE-LQBWpUvd.js +84 -0
  343. package/dist/assets/restructuredtext-By5ZzLt6.js +1 -0
  344. package/dist/assets/review-BcnwQtJv.css +1 -0
  345. package/dist/assets/rough.esm-c4PR5shF.js +1 -0
  346. package/dist/assets/ruby-fF5zGiLp.js +1 -0
  347. package/dist/assets/rust-C5b3AYY6.js +1 -0
  348. package/dist/assets/sankeyDiagram-HTMAVEWB-B1ohYoyK.js +40 -0
  349. package/dist/assets/sb-CD07UNRs.js +1 -0
  350. package/dist/assets/scala-jtn1ip9G.js +1 -0
  351. package/dist/assets/scheme-C4vqMkn_.js +1 -0
  352. package/dist/assets/scss-I4Glxjbz.js +3 -0
  353. package/dist/assets/sequenceDiagram-DBY2YBRQ-C3vM-hMq.js +162 -0
  354. package/dist/assets/shell-DubUcuns.js +1 -0
  355. package/dist/assets/sizeCapture-X5ZJPWSS-daTB6OcF.js +1 -0
  356. package/dist/assets/solidity-CNy2KSl2.js +1 -0
  357. package/dist/assets/sophia-D9_URt84.js +1 -0
  358. package/dist/assets/sparql-DviXpm4C.js +1 -0
  359. package/dist/assets/sql-vDRbAZgK.js +1 -0
  360. package/dist/assets/src-WBW1QxJt.js +1 -0
  361. package/dist/assets/st-CnpnRqA7.js +1 -0
  362. package/dist/assets/stateDiagram-2N3HPSRC-BvFhOryI.js +1 -0
  363. package/dist/assets/stateDiagram-v2-6OUMAXLB-WMrz4PNo.js +1 -0
  364. package/dist/assets/swift-D_g8Ganz.js +1 -0
  365. package/dist/assets/swimlanes-5IMT3BWC-DKF_b-2s.js +2 -0
  366. package/dist/assets/swimlanesDiagram-G3AALYLV-BGswC9oC.js +8 -0
  367. package/dist/assets/systemverilog-OuZa5h1M.js +1 -0
  368. package/dist/assets/tcl-DBm9ucsV.js +1 -0
  369. package/dist/assets/timeline-definition-FHXFAJF6-vAs11ux_.js +120 -0
  370. package/dist/assets/tokens-BwenNn5Q.css +1 -0
  371. package/dist/assets/treeView-QDETBFTQ-BVfICaZQ.js +1 -0
  372. package/dist/assets/treemap-6X3UGDF4-oWHPqo17.js +1 -0
  373. package/dist/assets/ts.worker-BwM5Ha3L.js +67719 -0
  374. package/dist/assets/tsMode-DGZTlTj8.js +11 -0
  375. package/dist/assets/twig-BRzEqX5Y.js +1 -0
  376. package/dist/assets/typescript-KJKfYO7K.js +1 -0
  377. package/dist/assets/typespec-D4ZgGeX8.js +1 -0
  378. package/dist/assets/useWorkspaceMenuKeyboard-CneKAZUJ.js +1 -0
  379. package/dist/assets/vb-DcP4s6WS.js +1 -0
  380. package/dist/assets/vennDiagram-L72KCM5P-BybTX_9B.js +34 -0
  381. package/dist/assets/wardley-OPB4EBWU-Dg8t5y3s.js +1 -0
  382. package/dist/assets/wardleyDiagram-EHGQE667-CicUmMBR.js +78 -0
  383. package/dist/assets/wgsl-CnRJ_QUf.js +298 -0
  384. package/dist/assets/workers-BSQRIkqa.js +1 -0
  385. package/dist/assets/workspace-view-state-CTyDzk2D.js +1 -0
  386. package/dist/assets/xml-C8FAcN6j.js +1 -0
  387. package/dist/assets/xychartDiagram-FW5EYKEG-BhWDyCX-.js +7 -0
  388. package/dist/assets/yaml-BQ4NrRhG.js +1 -0
  389. package/dist/assets/zsh-CLpveKlF.svg +1 -0
  390. package/dist/assets/zsh-FxSpMPbz.svg +1 -0
  391. package/dist/farming-2/app-icon-v2-180.png +0 -0
  392. package/dist/farming-2/app-icon-v2-192.png +0 -0
  393. package/dist/farming-2/app-icon-v2-512.png +0 -0
  394. package/dist/farming-2/app-icon-v2-maskable-512.png +0 -0
  395. package/dist/farming-2/app-icon-v2-master.png +0 -0
  396. package/dist/farming-2/favicon-v2-16.png +0 -0
  397. package/dist/farming-2/favicon-v2-32.png +0 -0
  398. package/dist/farming-2/favicon-v2-48.png +0 -0
  399. package/dist/farming-2/favicon-v2-64.png +0 -0
  400. package/dist/farming-2/favicon-v2.ico +0 -0
  401. package/dist/farming-2/favicon.ico +0 -0
  402. package/dist/farming-2/github-social-preview.png +0 -0
  403. package/dist/farming-2/images/avatar-watercolor-v1-bee-garden.png +0 -0
  404. package/dist/farming-2/images/avatar-watercolor-v2.png +0 -0
  405. package/dist/farming-2/images/avatar-watercolor-v3.png +0 -0
  406. package/dist/farming-2/legacy-icons-v1/favicon.ico +1 -0
  407. package/dist/farming-2/legacy-icons-v1/logo-16.png +0 -0
  408. package/dist/farming-2/legacy-icons-v1/logo-180.png +0 -0
  409. package/dist/farming-2/legacy-icons-v1/logo-192.png +0 -0
  410. package/dist/farming-2/legacy-icons-v1/logo-32.png +0 -0
  411. package/dist/farming-2/legacy-icons-v1/logo-48.png +0 -0
  412. package/dist/farming-2/legacy-icons-v1/logo-512.png +0 -0
  413. package/dist/farming-2/legacy-icons-v1/logo-64.png +0 -0
  414. package/dist/farming-2/logo-16.png +0 -0
  415. package/dist/farming-2/logo-180.png +0 -0
  416. package/dist/farming-2/logo-192.png +0 -0
  417. package/dist/farming-2/logo-32.png +0 -0
  418. package/dist/farming-2/logo-48.png +0 -0
  419. package/dist/farming-2/logo-512.png +0 -0
  420. package/dist/farming-2/logo-64.png +0 -0
  421. package/dist/farming-2/site.webmanifest +27 -0
  422. package/dist/farming-2/style_capsules/watercolor-pastoral.json +94 -0
  423. package/dist/index.html +27 -0
  424. package/frontend/ghostty-loader.js +24 -0
  425. package/frontend/runtime-paths.js +28 -0
  426. package/frontend/session-bridge.js +82 -0
  427. package/frontend/session-modal-bridge.js +331 -0
  428. package/frontend/skin-bridge.js +25 -0
  429. package/frontend/skins/crt/app.js +6940 -0
  430. package/frontend/skins/crt/assets/branding/farming-crt-icon.svg +11 -0
  431. package/frontend/skins/crt/assets/branding/farming-crt-logo-v1.png +0 -0
  432. package/frontend/skins/crt/assets/effects/phosphor-noise.svg +11 -0
  433. package/frontend/skins/crt/assets/fonts/departure-mono/DepartureMonoNerdFontMono-Regular.otf +0 -0
  434. package/frontend/skins/crt/assets/fonts/departure-mono/LICENSE +93 -0
  435. package/frontend/skins/crt/effects.js +8 -0
  436. package/frontend/skins/crt/index.html +1712 -0
  437. package/frontend/skins/crt/styles/billing.css +1003 -0
  438. package/frontend/skins/crt/styles/effects.css +171 -0
  439. package/frontend/skins/crt/styles/history.css +215 -0
  440. package/frontend/skins/crt/styles/monochrome-green.css +509 -0
  441. package/frontend/skins/crt/styles/search.css +271 -0
  442. package/frontend/terminal-bridge.js +192 -0
  443. package/frontend/theme-loader.js +84 -0
  444. package/frontend/themes/terminal/theme.json +24 -0
  445. package/frontend/vendor/ghostty-web/LICENSE +21 -0
  446. package/frontend/vendor/ghostty-web/__vite-browser-external-2447137e.js +4 -0
  447. package/frontend/vendor/ghostty-web/ghostty-vt.wasm +0 -0
  448. package/frontend/vendor/ghostty-web/ghostty-web.js +2963 -0
  449. package/frontend/vendor/ghostty-web/ghostty-web.umd.cjs +13 -0
  450. package/frontend/vendor/ghostty-web/index.d.ts +1842 -0
  451. package/index.html +23 -0
  452. package/package.json +144 -0
  453. package/scripts/sync-ghostty-vendor.js +66 -0
@@ -0,0 +1 @@
1
+ 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
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "Farming 2",
3
+ "short_name": "Farming 2",
4
+ "icons": [
5
+ {
6
+ "src": "app-icon-v2-192.png",
7
+ "sizes": "192x192",
8
+ "type": "image/png",
9
+ "purpose": "any"
10
+ },
11
+ {
12
+ "src": "app-icon-v2-512.png",
13
+ "sizes": "512x512",
14
+ "type": "image/png",
15
+ "purpose": "any"
16
+ },
17
+ {
18
+ "src": "app-icon-v2-maskable-512.png",
19
+ "sizes": "512x512",
20
+ "type": "image/png",
21
+ "purpose": "maskable"
22
+ }
23
+ ],
24
+ "theme_color": "#f8f4e8",
25
+ "background_color": "#f8f4e8",
26
+ "display": "standalone"
27
+ }
@@ -0,0 +1,94 @@
1
+ {
2
+ "name": "farming_2_watercolor_pastoral",
3
+ "version": 1,
4
+ "principle": "Style is frozen; scene is free. Reuse this capsule to keep Farming 2 watercolor assets visually consistent while changing subject, layout, or scene.",
5
+ "style_capsule": {
6
+ "medium": [
7
+ "loose black ink sketch lines",
8
+ "soft transparent watercolor washes",
9
+ "warm cream paper texture",
10
+ "naturally imperfect hand-drawn edges"
11
+ ],
12
+ "mood": [
13
+ "gentle pastoral",
14
+ "friendly",
15
+ "storybook",
16
+ "quietly cheerful",
17
+ "handmade rather than polished"
18
+ ],
19
+ "palette": {
20
+ "hat": "warm honey yellow",
21
+ "clothing": "muted sage green",
22
+ "hair": "soft brown",
23
+ "skin": "soft peach with warm rosy cheeks",
24
+ "line": "warm gray-black ink",
25
+ "paper": "pale cream watercolor paper",
26
+ "accent": "small honey yellow or muted garden tones"
27
+ },
28
+ "line_quality": [
29
+ "loose and slightly uneven",
30
+ "confident but not clean vector outlines",
31
+ "no mechanical symmetry",
32
+ "thin imperfect circle when a portrait frame is needed"
33
+ ],
34
+ "texture": [
35
+ "visible watercolor grain",
36
+ "uneven wash edges",
37
+ "subtle paper fibers",
38
+ "soft color pooling"
39
+ ],
40
+ "avoid": [
41
+ "vector art",
42
+ "anime",
43
+ "glossy digital icon",
44
+ "corporate mascot polish",
45
+ "over-sharpened detail",
46
+ "thick badge border",
47
+ "perfect circular frame",
48
+ "heavy shadows",
49
+ "realistic skin texture",
50
+ "busy background for small icons",
51
+ "tiny decorative details near the face"
52
+ ]
53
+ },
54
+ "modes": {
55
+ "favicon_small": {
56
+ "reference_asset": "../images/avatar-watercolor-v1-bee-garden.png",
57
+ "current_production_asset": "../app-icon-v2-master.png",
58
+ "goal": "Keep the farmer readable at 16px and 32px while retaining the garden and bee as Farming brand cues at larger app-icon sizes.",
59
+ "composition_rules": [
60
+ "face, eyes, smile, cheeks, and straw hat must be readable as simple shapes",
61
+ "use a tighter crop for browser favicons and the complete garden composition for installed app icons",
62
+ "keep the expression simple and cute",
63
+ "favor broad color blocks over watercolor detail",
64
+ "keep the bee and flower accents when the output size can render them clearly"
65
+ ],
66
+ "prompt_addendum": "Make the face and straw hat dominant. Use a very thin, uneven, partially broken warm gray pencil circle if a frame is needed. Keep only four readable color blocks: honey-yellow hat, peach face, soft brown hair, muted sage clothing. Almost no background details."
67
+ },
68
+ "illustration_large": {
69
+ "reference_asset": "../images/avatar-watercolor-v1-bee-garden.png",
70
+ "goal": "Carry Farming 2's pastoral watercolor brand feeling in docs, product pages, and larger visual scenes.",
71
+ "composition_rules": [
72
+ "allow small bees, wildflowers, vines, paths, wooden hives, and gentle garden scenery",
73
+ "keep the scene airy with white paper breathing room",
74
+ "use decorative detail only where it will remain visible at the intended size",
75
+ "preserve the loose ink and transparent watercolor feeling"
76
+ ],
77
+ "prompt_addendum": "Use a cozy hand-drawn bee garden atmosphere with loose black ink line art, soft transparent watercolor washes, honey yellow accents, muted sage greens, wildflowers, wooden hives, and warm paper texture."
78
+ }
79
+ },
80
+ "saved_references": [
81
+ {
82
+ "path": "../images/avatar-watercolor-v1-bee-garden.png",
83
+ "role": "large illustration and brand mood reference"
84
+ },
85
+ {
86
+ "path": "../images/avatar-watercolor-v2.png",
87
+ "role": "intermediate simplified avatar reference"
88
+ },
89
+ {
90
+ "path": "../images/avatar-watercolor-v3.png",
91
+ "role": "small icon simplification reference"
92
+ }
93
+ ]
94
+ }
@@ -0,0 +1,27 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
6
+ <meta name="theme-color" content="#f8f4e8" />
7
+ <meta name="apple-mobile-web-app-capable" content="yes" />
8
+ <meta name="mobile-web-app-capable" content="yes" />
9
+ <meta name="apple-mobile-web-app-title" content="Farming 2" />
10
+ <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
11
+ <link rel="icon" href="/farming/farming-2/favicon-v2.ico" sizes="any" />
12
+ <link rel="icon" type="image/png" href="/farming/farming-2/favicon-v2-16.png" sizes="16x16" />
13
+ <link rel="icon" type="image/png" href="/farming/farming-2/favicon-v2-32.png" sizes="32x32" />
14
+ <link rel="icon" type="image/png" href="/farming/farming-2/favicon-v2-48.png" sizes="48x48" />
15
+ <link rel="apple-touch-icon" sizes="180x180" href="/farming/farming-2/app-icon-v2-180.png" />
16
+ <link rel="manifest" href="/farming/farming-2/site.webmanifest" />
17
+ <title>Farming 2</title>
18
+ <script type="module" crossorigin src="/farming/assets/index-BpHPeJf0.js"></script>
19
+ <link rel="modulepreload" crossorigin href="/farming/assets/chunk-DECur_0Z.js">
20
+ <link rel="modulepreload" crossorigin href="/farming/assets/preload-helper-mJowh_hw.js">
21
+ <link rel="modulepreload" crossorigin href="/farming/assets/jsx-runtime-BthL93pI.js">
22
+ <link rel="modulepreload" crossorigin href="/farming/assets/react-dom-gtU6X-Hj.js">
23
+ </head>
24
+ <body>
25
+ <div id="root"></div>
26
+ </body>
27
+ </html>
@@ -0,0 +1,24 @@
1
+ let shouldLoadGhostty = false;
2
+ try {
3
+ shouldLoadGhostty = window.localStorage.getItem('farmingTerminalEngine') === 'ghostty';
4
+ } catch {
5
+ shouldLoadGhostty = false;
6
+ }
7
+
8
+ window.__ghosttyReadyPromise = shouldLoadGhostty ? (async () => {
9
+ try {
10
+ const vendorPath = window.FarmingRuntimePaths
11
+ ? window.FarmingRuntimePaths.path('/vendor/ghostty-web')
12
+ : '/vendor/ghostty-web';
13
+ const { init, Terminal, FitAddon } = await import(`${vendorPath}/ghostty-web.js`);
14
+ await init(`${vendorPath}/ghostty-vt.wasm`);
15
+ window.GhosttyWeb = {
16
+ Terminal,
17
+ FitAddon
18
+ };
19
+ return window.GhosttyWeb;
20
+ } catch (error) {
21
+ console.error('Failed to initialize Ghostty terminal:', error);
22
+ return null;
23
+ }
24
+ })() : Promise.resolve(null);
@@ -0,0 +1,28 @@
1
+ (function attachRuntimePaths(global) {
2
+ const pathname = String(global.location && global.location.pathname || '').replace(/\/+$/, '');
3
+ const crtMarker = '/crt';
4
+ const markerIndex = pathname.lastIndexOf(crtMarker);
5
+ const basePath = markerIndex >= 0 ? pathname.slice(0, markerIndex) : '';
6
+
7
+ function path(suffix = '/') {
8
+ const normalizedSuffix = suffix.startsWith('/') ? suffix : `/${suffix}`;
9
+ return basePath ? `${basePath}${normalizedSuffix}` : normalizedSuffix;
10
+ }
11
+
12
+ function apiPath(suffix = '/') {
13
+ const normalizedSuffix = suffix.startsWith('/') ? suffix : `/${suffix}`;
14
+ return path(`/api${normalizedSuffix}`);
15
+ }
16
+
17
+ function webSocketUrl() {
18
+ const protocol = global.location.protocol === 'https:' ? 'wss:' : 'ws:';
19
+ return `${protocol}//${global.location.host}${path('/ws')}`;
20
+ }
21
+
22
+ global.FarmingRuntimePaths = {
23
+ basePath,
24
+ path,
25
+ apiPath,
26
+ webSocketUrl,
27
+ };
28
+ })(window);
@@ -0,0 +1,82 @@
1
+ (function attachSessionBridge(global) {
2
+ function createClient(options = {}) {
3
+ const getSocket = options.getSocket || (() => null);
4
+ const fetchImpl = options.fetchImpl || global.fetch.bind(global);
5
+
6
+ function send(message) {
7
+ const ws = getSocket();
8
+ if (!ws || ws.readyState !== global.WebSocket.OPEN) {
9
+ return false;
10
+ }
11
+ ws.send(JSON.stringify(message));
12
+ return true;
13
+ }
14
+
15
+ return {
16
+ focusAgent(agentId, options = {}) {
17
+ return send({
18
+ type: 'focus-agent',
19
+ agentId,
20
+ ...(options.streamScope ? { streamScope: options.streamScope } : {}),
21
+ ...(options.previewScope ? { previewScope: options.previewScope } : {}),
22
+ ...(options.refreshState === true ? { refreshState: true } : {}),
23
+ });
24
+ },
25
+
26
+ sendInput(agentId, input) {
27
+ return send({
28
+ type: 'input',
29
+ agentId,
30
+ input,
31
+ });
32
+ },
33
+
34
+ sendComposerMessage(agentId, message, attachments = []) {
35
+ return send({
36
+ type: 'composer-input',
37
+ agentId,
38
+ message,
39
+ ...(attachments.length > 0 ? { attachments } : {}),
40
+ });
41
+ },
42
+
43
+ interruptAgent(agentId) {
44
+ return send({
45
+ type: 'interrupt-agent',
46
+ agentId,
47
+ });
48
+ },
49
+
50
+ resizeAgent(agentId, cols, rows) {
51
+ return send({
52
+ type: 'resize-agent',
53
+ agentId,
54
+ cols,
55
+ rows,
56
+ });
57
+ },
58
+
59
+ killAgent(agentId) {
60
+ return send({
61
+ type: 'kill-agent',
62
+ agentId,
63
+ });
64
+ },
65
+
66
+ async getSessionView(agentId) {
67
+ const path = global.FarmingRuntimePaths
68
+ ? global.FarmingRuntimePaths.apiPath(`/agents/${agentId}/session-view`)
69
+ : `/api/agents/${agentId}/session-view`;
70
+ const response = await fetchImpl(path);
71
+ if (!response.ok) {
72
+ throw new Error(`Failed to load session view: ${response.status}`);
73
+ }
74
+ return response.json();
75
+ },
76
+ };
77
+ }
78
+
79
+ global.FarmingSessionBridge = {
80
+ createClient,
81
+ };
82
+ })(window);