farming-code 2.2.29 → 2.2.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -66
- package/README.zh_cn.md +15 -66
- package/THIRD_PARTY_NOTICES.md +7 -0
- package/backend/acp/{client-services.js → client-services.cjs} +132 -134
- package/backend/acp/packaged-claude-acp.cjs +37 -0
- package/backend/acp/packaged-codex-acp.cjs +37 -0
- package/backend/acp/patch-decisions.cjs +182 -0
- package/backend/acp/permission-security.cjs +131 -0
- package/backend/{acp-checkpoint-store.js → acp-checkpoint-store.cjs} +90 -59
- package/backend/{acp-runtime.js → acp-runtime.cjs} +1219 -1125
- package/backend/acp-session-state.cjs +622 -0
- package/backend/acp-transcript.cjs +525 -0
- package/backend/agent-env.cjs +257 -0
- package/backend/agent-extension-discovery.cjs +452 -0
- package/backend/agent-extension-inventory.cjs +116 -0
- package/backend/agent-json-stream.cjs +283 -0
- package/backend/agent-lifecycle-journal.cjs +185 -0
- package/backend/{agent-manager.js → agent-manager.cjs} +3116 -4275
- package/backend/agent-order-transaction.cjs +85 -0
- package/backend/agent-order.cjs +159 -0
- package/backend/agent-provider-session.cjs +98 -0
- package/backend/agent-runtime-binding.cjs +179 -0
- package/backend/agent-session-history.cjs +1022 -0
- package/backend/agent-session-inventory.cjs +291 -0
- package/backend/async-cache.cjs +104 -0
- package/backend/atomic-json-store.cjs +67 -0
- package/backend/auth.cjs +261 -0
- package/backend/authoritative-inventory-cache.cjs +383 -0
- package/backend/business-health.cjs +68 -0
- package/backend/chat-runtime.cjs +50 -0
- package/backend/claude-settings.cjs +132 -0
- package/backend/cli-agents.cjs +435 -0
- package/backend/codex-context-window.cjs +196 -0
- package/backend/codex-models.cjs +228 -0
- package/backend/codex-session-archive.cjs +82 -0
- package/backend/codex-session-history.cjs +590 -0
- package/backend/{codex-terminal-profile.js → codex-terminal-profile.cjs} +149 -155
- package/backend/codex-transcript-sanitizer.cjs +130 -0
- package/backend/codex-transcript.cjs +2107 -0
- package/backend/command-runner-child.cjs +105 -0
- package/backend/config-manager.cjs +1263 -0
- package/backend/control-api.cjs +439 -0
- package/backend/data/LICENSE.cua +21 -0
- package/backend/executable-discovery.cjs +204 -0
- package/backend/farming-agent-bootstrap.cjs +81 -0
- package/backend/farming-agent-bootstrap.zh_cn.md +6 -2
- package/backend/{farming-app-cli.js → farming-app-cli.cjs} +441 -493
- package/backend/farming-cli.cjs +414 -0
- package/backend/farming-net-pass.cjs +319 -0
- package/backend/farming-net-registry.cjs +123 -0
- package/backend/farming-net-server.cjs +309 -0
- package/backend/farming-session-store.cjs +651 -0
- package/backend/git-worktree-info.cjs +181 -0
- package/backend/haiku-token.cjs +828 -0
- package/backend/index-html.cjs +96 -0
- package/backend/input-parts.cjs +68 -0
- package/backend/input-routing.cjs +40 -0
- package/backend/{local-session-engine.js → local-session-engine.cjs} +276 -282
- package/backend/main-agent-skills.cjs +309 -0
- package/backend/main-page-session.cjs +132 -0
- package/backend/native-pty-controller-generation.cjs +139 -0
- package/backend/{native-pty-host-client.js → native-pty-host-client.cjs} +338 -346
- package/backend/native-pty-host-identity.cjs +125 -0
- package/backend/native-pty-host-path.cjs +68 -0
- package/backend/{native-pty-host.js → native-pty-host.cjs} +480 -569
- package/backend/native-session-engine.cjs +296 -0
- package/backend/network.cjs +57 -0
- package/backend/npm-update-helper.cjs +399 -0
- package/backend/packaged-node-pty.cjs +120 -0
- package/backend/preview-session-manager.cjs +89 -0
- package/backend/provider-adapters.cjs +492 -0
- package/backend/provider-home-configuration.cjs +211 -0
- package/backend/provider-session-id.cjs +79 -0
- package/backend/provider-session-service.cjs +333 -0
- package/backend/qr-share-tickets.cjs +119 -0
- package/backend/resource-broadcast-protocol.cjs +50 -0
- package/backend/review-diff-router.cjs +202 -0
- package/backend/review-diff-service.cjs +1267 -0
- package/backend/review-session-router.cjs +93 -0
- package/backend/review-session-service.cjs +470 -0
- package/backend/review-session-store.cjs +161 -0
- package/backend/review-state-router.cjs +132 -0
- package/backend/review-state-store.cjs +299 -0
- package/backend/run-history-store.cjs +97 -0
- package/backend/runtime-dependency-manager.cjs +893 -0
- package/backend/runtime-executable-invocation.cjs +37 -0
- package/backend/runtime-observation.cjs +96 -0
- package/backend/server-process-identity.cjs +70 -0
- package/backend/server.cjs +3356 -0
- package/backend/session-engine-bridge.cjs +144 -0
- package/backend/session-engine-router.cjs +105 -0
- package/backend/session-engine.cjs +64 -0
- package/backend/session-stream-protocol.cjs +181 -0
- package/backend/shell-busy-integration.cjs +442 -0
- package/backend/slash-command-discovery.cjs +423 -0
- package/backend/storage-layout.cjs +263 -0
- package/backend/system-monitor.cjs +96 -0
- package/backend/terminal-attach-checkpoint.cjs +73 -0
- package/backend/terminal-exit-quiescence.cjs +57 -0
- package/backend/{terminal-reducer-flow-control.js → terminal-reducer-flow-control.cjs} +45 -22
- package/backend/terminal-runtime-cleanup.cjs +99 -0
- package/backend/{terminal-screen-state.js → terminal-screen-state.cjs} +100 -108
- package/backend/{terminal-screen-worker-pool.js → terminal-screen-worker-pool.cjs} +89 -79
- package/backend/{terminal-screen-worker-thread.js → terminal-screen-worker-thread.cjs} +64 -65
- package/backend/terminal-screen-worker.cjs +352 -0
- package/backend/terminal-state-serialization.cjs +147 -0
- package/backend/{terminal-status.js → terminal-status.cjs} +137 -187
- package/backend/theme-manager.cjs +185 -0
- package/backend/update-service.cjs +675 -0
- package/backend/usage-forecast.cjs +95 -0
- package/backend/{usage-history-client.js → usage-history-client.cjs} +144 -94
- package/backend/usage-history-smoke.cjs +85 -0
- package/backend/usage-history-worker.cjs +60 -0
- package/backend/{usage-monitor.js → usage-monitor.cjs} +363 -390
- package/backend/workspace-directory.cjs +239 -0
- package/backend/workspace-discovery.cjs +271 -0
- package/backend/{workspace-file-router.js → workspace-file-router.cjs} +213 -282
- package/backend/{workspace-file-service.js → workspace-file-service.cjs} +1139 -1318
- package/backend/workspace-root-registry.cjs +192 -0
- package/bin/farming +1 -1
- package/config/farming.deploy.env.example +1 -1
- package/config/farming.install.env.example +1 -1
- package/dist/acp/codex-acp-1.1.4.mjs +405 -8
- package/dist/assets/App-BCkdpWB6.css +1 -0
- package/dist/assets/App-CRjKpaGp.js +697 -0
- package/dist/assets/CodeSelect-Ci8sKZPU.js +1 -0
- package/dist/assets/CodeSelect-T2eNzrOc.css +1 -0
- package/dist/assets/{FileEditorMarkdownPreview-Cs9cLv8a.js → FileEditorMarkdownPreview-V06QHlAg.js} +55 -55
- package/dist/assets/FileEditorPane-BX-Wjg9U.js +2 -0
- package/dist/assets/IconGlyphs-YhV7tqd4.js +1 -0
- package/dist/assets/ProjectFilesSection-BDT2_r0o.js +12 -0
- package/dist/assets/ReviewPage-BqAs5sG1.js +3 -0
- package/dist/assets/code-dark-B7eM_9G9.css +1 -0
- package/dist/assets/{cssMode-Bdg5RpcJ.js → cssMode-ADdAlxTO.js} +1 -1
- package/dist/assets/{editor.api2-D74ufkbr.js → editor.api2-BFLAr0YF.js} +162 -162
- package/dist/assets/file-icons-BpeqWkIB.js +1 -0
- package/dist/assets/{freemarker2-DfMDJfnE.js → freemarker2-C90q5jrp.js} +1 -1
- package/dist/assets/{handlebars-BEdPtzMT.js → handlebars-BwUQcEDq.js} +1 -1
- package/dist/assets/{html-B1fPb1QD.js → html-1s3uPKfh.js} +1 -1
- package/dist/assets/{htmlMode-CY2ZjHxH.js → htmlMode-xtKD99de.js} +1 -1
- package/dist/assets/{index-CQNaZc3l.js → index-C8MchCem.js} +3 -3
- package/dist/assets/{javascript-BV2OsWA0.js → javascript-Ph7ijyny.js} +1 -1
- package/dist/assets/{jsonMode-zd07aeuX.js → jsonMode-D-jGAnFH.js} +1 -1
- package/dist/assets/linkComputer-CbGyI_qx.js +1 -0
- package/dist/assets/{liquid-BParI24X.js → liquid-0IamE_cI.js} +1 -1
- package/dist/assets/{lspLanguageFeatures-BzredkoV.js → lspLanguageFeatures-BxnQunWF.js} +1 -1
- package/dist/assets/main-CLKXa6hf.css +1 -0
- package/dist/assets/{mdx-vGzUJN98.js → mdx-DdNmfivn.js} +1 -1
- package/dist/assets/{monaco.contribution-BmaeBQEc.js → monaco.contribution-B43jsUs1.js} +2 -2
- package/dist/assets/{python-CUwdLgsI.js → python-IAt4X5TS.js} +1 -1
- package/dist/assets/{razor-BScebUxU.js → razor-DRkFYW0S.js} +1 -1
- package/dist/assets/review-C8-oPKXk.css +1 -0
- package/dist/assets/{tsMode-DzUAibXK.js → tsMode-_d_4U2gf.js} +1 -1
- package/dist/assets/{typescript-D9EOeM7N.js → typescript-C7zcMq9l.js} +1 -1
- package/dist/assets/{workers-DAiomYZM.js → workers-D0nOyJzf.js} +1 -1
- package/dist/assets/workspace-editor-model-DND_Y-Bj.js +1 -0
- package/dist/assets/workspace-editor-monaco-BPWhgcIB.js +4 -0
- package/dist/assets/workspace-editor-monaco-N641qPjX.js +1 -0
- package/dist/assets/workspace-view-state-k1bTlJ_Z.js +13 -0
- package/dist/assets/{xml-wWl1dhkQ.js → xml-BR-HvxT8.js} +1 -1
- package/dist/assets/{yaml-Dc2WDaOZ.js → yaml-YtFQwh4q.js} +1 -1
- package/dist/index.html +2 -1
- package/extensions/browser/backend/agent-browser-runtime.cjs +1040 -0
- package/extensions/browser/backend/agent-capability.cjs +85 -0
- package/extensions/browser/backend/browser-mcp-server.cjs +655 -0
- package/extensions/browser/backend/browser-resource-manager.cjs +1486 -0
- package/extensions/browser/backend/browser-resource-store.cjs +228 -0
- package/extensions/browser/backend/browser-router.cjs +203 -0
- package/extensions/browser/backend/executable-discovery.cjs +248 -0
- package/extensions/browser/backend/farming-browser-client.cjs +116 -0
- package/extensions/browser/backend/index.cjs +32 -0
- package/extensions/browser/backend/managed-chromium-installer.cjs +833 -0
- package/extensions/browser/bin/farming-browser +16 -7
- package/extensions/computer/backend/agent-capability.cjs +72 -0
- package/extensions/computer/backend/computer-constants.cjs +59 -0
- package/extensions/computer/backend/computer-mcp-server.cjs +182 -0
- package/extensions/computer/backend/computer-resource-manager.cjs +1219 -0
- package/extensions/computer/backend/computer-resource-store.cjs +190 -0
- package/extensions/computer/backend/computer-router.cjs +257 -0
- package/extensions/computer/backend/cua-tools.json +3067 -0
- package/extensions/computer/backend/farming-computer-client.cjs +84 -0
- package/extensions/computer/backend/index.cjs +35 -0
- package/extensions/computer/backend/isolated-browser-provider.cjs +157 -0
- package/extensions/computer/bin/farming-computer +131 -0
- package/frontend/farming-net/app.js +255 -262
- package/frontend/ghostty-loader.js +24 -20
- package/frontend/reading-anchor.js +210 -193
- package/frontend/runtime-paths.js +24 -26
- package/frontend/session-bridge.js +90 -111
- package/frontend/session-modal-bridge.js +184 -302
- package/frontend/skin-bridge.js +20 -23
- package/frontend/skins/crt/app.js +7686 -7901
- package/frontend/skins/crt/effects.js +7 -6
- package/frontend/skins/crt/index.html +6 -6
- package/frontend/skins/crt/styles/markdown.css +4 -4
- package/frontend/terminal-bridge.js +174 -181
- package/frontend/terminal-replay.js +320 -345
- package/frontend/theme-loader.js +55 -71
- package/index.html +1 -0
- package/package.json +64 -37
- package/shared/backend-connection-status.js +38 -69
- package/shared/browser-protocol.js +235 -110
- package/shared/websocket-liveness.js +40 -0
- package/backend/acp/packaged-claude-acp.js +0 -13
- package/backend/acp/packaged-codex-acp.js +0 -13
- package/backend/acp/patch-decisions.js +0 -153
- package/backend/acp/permission-security.js +0 -108
- package/backend/acp-session-state.js +0 -644
- package/backend/acp-transcript.js +0 -512
- package/backend/agent-env.js +0 -250
- package/backend/agent-json-stream.js +0 -268
- package/backend/agent-lifecycle-journal.js +0 -133
- package/backend/agent-memory-report.js +0 -583
- package/backend/agent-order.js +0 -166
- package/backend/agent-provider-session.js +0 -76
- package/backend/agent-runtime-binding.js +0 -174
- package/backend/agent-session-history.js +0 -953
- package/backend/async-cache.js +0 -94
- package/backend/atomic-json-store.js +0 -37
- package/backend/auth.js +0 -251
- package/backend/bundle-update-helper.js +0 -113
- package/backend/chat-runtime.js +0 -28
- package/backend/claude-settings.js +0 -121
- package/backend/cli-agents.js +0 -486
- package/backend/codex-context-window.js +0 -189
- package/backend/codex-models.js +0 -226
- package/backend/codex-rollout-follower.js +0 -326
- package/backend/codex-session-archive.js +0 -65
- package/backend/codex-session-history.js +0 -647
- package/backend/codex-transcript-sanitizer.js +0 -115
- package/backend/codex-transcript.js +0 -2564
- package/backend/command-runner-child.js +0 -67
- package/backend/config-manager.js +0 -1133
- package/backend/control-api.js +0 -455
- package/backend/executable-discovery.js +0 -216
- package/backend/farming-agent-bootstrap.js +0 -49
- package/backend/farming-cli.js +0 -457
- package/backend/farming-net-pass.js +0 -285
- package/backend/farming-net-registry.js +0 -112
- package/backend/farming-net-server.js +0 -298
- package/backend/farming-session-store.js +0 -677
- package/backend/git-worktree-info.js +0 -181
- package/backend/haiku-token.js +0 -772
- package/backend/index-html.js +0 -62
- package/backend/input-parts.js +0 -54
- package/backend/input-routing.js +0 -24
- package/backend/json-cli-runtime.js +0 -275
- package/backend/main-agent-skills.js +0 -305
- package/backend/main-page-session.js +0 -122
- package/backend/native-pty-controller-generation.js +0 -106
- package/backend/native-pty-host-identity.js +0 -86
- package/backend/native-pty-host-path.js +0 -42
- package/backend/native-session-engine.js +0 -268
- package/backend/network.js +0 -23
- package/backend/npm-update-helper.js +0 -374
- package/backend/packaged-node-pty.js +0 -99
- package/backend/preview-session-manager.js +0 -68
- package/backend/provider-adapters.js +0 -399
- package/backend/provider-session-id.js +0 -47
- package/backend/provider-session-service.js +0 -345
- package/backend/qr-share-tickets.js +0 -100
- package/backend/review-diff-router.js +0 -180
- package/backend/review-diff-service.js +0 -1270
- package/backend/review-session-router.js +0 -74
- package/backend/review-session-service.js +0 -446
- package/backend/review-session-store.js +0 -151
- package/backend/review-state-router.js +0 -116
- package/backend/review-state-store.js +0 -286
- package/backend/run-history-store.js +0 -67
- package/backend/runtime-dependency-manager.js +0 -759
- package/backend/runtime-executable-invocation.js +0 -20
- package/backend/runtime-observation.js +0 -81
- package/backend/server-process-identity.js +0 -47
- package/backend/server.js +0 -3267
- package/backend/session-engine-bridge.js +0 -129
- package/backend/session-engine-router.js +0 -66
- package/backend/session-engine.js +0 -39
- package/backend/session-stream-protocol.js +0 -185
- package/backend/shell-busy-integration.js +0 -472
- package/backend/slash-command-discovery.js +0 -433
- package/backend/storage-layout.js +0 -190
- package/backend/system-monitor.js +0 -77
- package/backend/terminal-attach-checkpoint.js +0 -74
- package/backend/terminal-exit-quiescence.js +0 -39
- package/backend/terminal-runtime-cleanup.js +0 -80
- package/backend/terminal-screen-worker.js +0 -337
- package/backend/terminal-state-serialization.js +0 -127
- package/backend/theme-manager.js +0 -163
- package/backend/update-service.js +0 -1545
- package/backend/usage-forecast.js +0 -86
- package/backend/usage-history-scanner.ts +0 -2718
- package/backend/usage-history-smoke.js +0 -64
- package/backend/usage-history-worker.js +0 -34
- package/backend/workspace-directory.js +0 -232
- package/backend/workspace-discovery.js +0 -311
- package/backend/workspace-root-registry.js +0 -166
- package/dist/assets/App-BKNUILuL.css +0 -1
- package/dist/assets/App-Ex2oVVXO.js +0 -693
- package/dist/assets/FileEditorPane-CNtuGjQ3.js +0 -2
- package/dist/assets/IconGlyphs-BClgag6E.js +0 -1
- package/dist/assets/ProjectFilesSection-Cf2BEcAN.js +0 -12
- package/dist/assets/ReviewPage-BRuxFaH5.js +0 -3
- package/dist/assets/code-dark-BEZTQwYZ.css +0 -1
- package/dist/assets/file-icons-BOlcJ0ZF.js +0 -1
- package/dist/assets/main-DK9Sy7-c.css +0 -1
- package/dist/assets/review-BcnwQtJv.css +0 -1
- package/dist/assets/workspace-editor-model-CSGCl21x.js +0 -1
- package/dist/assets/workspace-editor-monaco-CJNwbpCy.js +0 -4
- package/dist/assets/workspace-editor-monaco-CO9w8YV0.js +0 -1
- package/dist/assets/workspace-view-state-BjKPYp0E.js +0 -7
- package/extensions/browser/backend/agent-browser-runtime.js +0 -1041
- package/extensions/browser/backend/agent-capability.js +0 -55
- package/extensions/browser/backend/browser-mcp-server.js +0 -621
- package/extensions/browser/backend/browser-resource-manager.js +0 -1309
- package/extensions/browser/backend/browser-resource-store.js +0 -190
- package/extensions/browser/backend/browser-router.js +0 -133
- package/extensions/browser/backend/executable-discovery.js +0 -224
- package/extensions/browser/backend/farming-browser-client.js +0 -83
- package/extensions/browser/backend/index.js +0 -7
- package/extensions/browser/frontend/BrowserSidebarPortals.tsx +0 -360
- package/extensions/browser/frontend/BrowserViewer.tsx +0 -500
- package/extensions/browser/frontend/browser-resource-state.ts +0 -60
- package/extensions/browser/frontend/browser.css +0 -567
- package/extensions/browser/frontend/types.ts +0 -31
- package/extensions/browser/frontend/useBrowserResources.ts +0 -158
- package/frontend/vendor/ghostty-web/index.d.ts +0 -1842
- package/shared/backend-connection-status.d.ts +0 -37
- package/shared/browser-protocol.d.ts +0 -5
- /package/dist/assets/{api-w2x5QfxB.js → api-ByCV9MEr.js} +0 -0
- /package/dist/assets/{core-vPkV8P_m.js → core-Czwdx12k.js} +0 -0
- /package/dist/assets/{fsharp-DNZNZyEE.js → fsharp-BjPpkoJe.js} +0 -0
- /package/dist/assets/{go-_kPJjNc_.js → go-BkIDmSUP.js} +0 -0
- /package/dist/assets/{graphql-4HCNVt5g.js → graphql-CCJTpqi1.js} +0 -0
- /package/dist/assets/{hcl-C87ymY0o.js → hcl-s4z8lUFg.js} +0 -0
- /package/dist/assets/{ini-BYrrGNTc.js → ini-CyUW1I7Z.js} +0 -0
- /package/dist/assets/{java-B211rJbk.js → java-CFCcGRiM.js} +0 -0
- /package/dist/assets/{julia-DVPsRtBm.js → julia-DQyH_EYb.js} +0 -0
- /package/dist/assets/{kotlin-BYyNerjp.js → kotlin-B8hA5O51.js} +0 -0
- /package/dist/assets/{less-EC9UblGE.js → less-DaVdaas0.js} +0 -0
- /package/dist/assets/{lexon-B1yuUdqW.js → lexon-DLBhPd3y.js} +0 -0
- /package/dist/assets/{lua-Bo6GFzxT.js → lua-gB1c_cif.js} +0 -0
- /package/dist/assets/{m3-C-Y9cBVI.js → m3-C2T3z3gB.js} +0 -0
- /package/dist/assets/{markdown-BHu-wLbe.js → markdown-CKq-Euj1.js} +0 -0
- /package/dist/assets/{mips-Dkds26rX.js → mips-Bcs5qIDX.js} +0 -0
- /package/dist/assets/{msdax-PU4g-8_g.js → msdax-CBP48FHF.js} +0 -0
- /package/dist/assets/{mysql-fPpuGpS7.js → mysql-c7tiPcFj.js} +0 -0
- /package/dist/assets/{objective-c-Wy1e5JUf.js → objective-c-D4BZkeEV.js} +0 -0
- /package/dist/assets/{pascal-BIXwvrqU.js → pascal-CJDZg0MN.js} +0 -0
- /package/dist/assets/{pascaligo-DwR0AtL_.js → pascaligo-Bygi8Ynl.js} +0 -0
- /package/dist/assets/{perl-CGHAl8my.js → perl-aS8bkf7E.js} +0 -0
- /package/dist/assets/{pgsql-B91M73E2.js → pgsql-CzNAYFYl.js} +0 -0
- /package/dist/assets/{php-C70ttrCx.js → php-DOtoEFTT.js} +0 -0
- /package/dist/assets/{pla-BNrXaRh0.js → pla-DugRnao1.js} +0 -0
- /package/dist/assets/{postiats-Dv2IAZR9.js → postiats-DsXwusKh.js} +0 -0
- /package/dist/assets/{powerquery-CkY5Wq7J.js → powerquery-DL3o72oD.js} +0 -0
- /package/dist/assets/{powershell-uGIYLU3C.js → powershell-C1qHekys.js} +0 -0
- /package/dist/assets/{protobuf-CavfmJu-.js → protobuf-DHgsc-cH.js} +0 -0
- /package/dist/assets/{pug-Drqnyitx.js → pug-FZXlE_Iu.js} +0 -0
- /package/dist/assets/{qrcode-7uGsTEmi.js → qrcode-DJDTdjL7.js} +0 -0
- /package/dist/assets/{qsharp-C7yF-Dti.js → qsharp-bLyhI3DT.js} +0 -0
- /package/dist/assets/{r-HXLGP0_-.js → r-DjFGXbAa.js} +0 -0
- /package/dist/assets/{redis-C4y6mf2p.js → redis-DSoZ_V6u.js} +0 -0
- /package/dist/assets/{redshift-DdQrFPrv.js → redshift-CzkdCsrg.js} +0 -0
- /package/dist/assets/{restructuredtext-CBrf2PNj.js → restructuredtext-B_XPrGCQ.js} +0 -0
- /package/dist/assets/{ruby-CVtMoX2B.js → ruby-Cry2RneJ.js} +0 -0
- /package/dist/assets/{rust-Ckq4sbMP.js → rust-CWzdbFq1.js} +0 -0
- /package/dist/assets/{sb-er66OpE3.js → sb-DmofU59h.js} +0 -0
- /package/dist/assets/{scala-BdWZz-hH.js → scala-BUC2l-vN.js} +0 -0
- /package/dist/assets/{scheme-kTV_s2kP.js → scheme-CNIB_72f.js} +0 -0
- /package/dist/assets/{scss-Bymy2VJQ.js → scss-DcL4-NbX.js} +0 -0
- /package/dist/assets/{shell-bwEP1LQ1.js → shell-CgAGvSSA.js} +0 -0
- /package/dist/assets/{solidity-DCddeBgL.js → solidity-DSkt6O_P.js} +0 -0
- /package/dist/assets/{sophia-BMN3AQig.js → sophia--5ytcjDN.js} +0 -0
- /package/dist/assets/{sparql-CSXOLjzi.js → sparql-C1Srr7cD.js} +0 -0
- /package/dist/assets/{sql-COg8ewmK.js → sql-2k_O5fj7.js} +0 -0
- /package/dist/assets/{st-CIaZtBS_.js → st-DCCCPqfz.js} +0 -0
- /package/dist/assets/{swift-DXiOhUHu.js → swift-Dd8mAfOt.js} +0 -0
- /package/dist/assets/{systemverilog-BTDE6Dr2.js → systemverilog-B0-aZYXu.js} +0 -0
- /package/dist/assets/{tcl-B0zy9NvV.js → tcl-CZAZwPVX.js} +0 -0
- /package/dist/assets/{twig-D594l4Z1.js → twig-D-Ag0tdS.js} +0 -0
- /package/dist/assets/{typespec-XKVjaPqo.js → typespec-B7kTFp0Z.js} +0 -0
- /package/dist/assets/{useWorkspaceMenuKeyboard-Bpy_s69Z.js → useWorkspaceMenuKeyboard-uYZpDxhU.js} +0 -0
- /package/dist/assets/{vb-B2wYoKRV.js → vb-20w1JPum.js} +0 -0
- /package/dist/assets/{wgsl-D0Yf2LbK.js → wgsl-CLJfqFt0.js} +0 -0
- /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
|
+
});
|