chainlesschain 0.162.29 → 0.162.31
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/package.json +2 -2
- package/src/assets/web-panel/assets/AIOps-BqWP6FKu.js +1 -0
- package/src/assets/web-panel/assets/AIOps-CSpp7iGY.css +1 -0
- package/src/assets/web-panel/assets/{ActionButton-wRdLFzBQ.js → ActionButton-CXwMgOvX.js} +1 -1
- package/src/assets/web-panel/assets/Analytics-DAebZ4IY.js +3 -0
- package/src/assets/web-panel/assets/Analytics-DJcHjy5J.css +1 -0
- package/src/assets/web-panel/assets/AppLayout-CYsqYoME.js +9 -0
- package/src/assets/web-panel/assets/AppLayout-VlanTjPw.css +1 -0
- package/src/assets/web-panel/assets/Audit-BbTtX1Nf.js +1 -0
- package/src/assets/web-panel/assets/Audit-D8oxP0wr.css +1 -0
- package/src/assets/web-panel/assets/Backup-DgqY2Eb-.js +1 -0
- package/src/assets/web-panel/assets/Backup-Wi9CaP3d.css +1 -0
- package/src/assets/web-panel/assets/BaseInput-Cq2ZuSoO.js +1 -0
- package/src/assets/web-panel/assets/Chat-D2kqpUyO.js +8 -0
- package/src/assets/web-panel/assets/Chat-DDh58PCf.css +1 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-C-svYkrC.js +1 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-gy5SDGw2.css +1 -0
- package/src/assets/web-panel/assets/{Checkbox-DoGqmF9g.js → Checkbox-_9swHpyc.js} +1 -1
- package/src/assets/web-panel/assets/Codegen-BB08p1fn.css +1 -0
- package/src/assets/web-panel/assets/Codegen-Cr9YbCPl.js +1 -0
- package/src/assets/web-panel/assets/{Col-C-9-jORK.js → Col--wdpCMxx.js} +1 -1
- package/src/assets/web-panel/assets/Community-Cbq1nrpo.css +1 -0
- package/src/assets/web-panel/assets/Community-DuFcVnLu.js +1 -0
- package/src/assets/web-panel/assets/{Compact-CemvxU3z.js → Compact-1yzYeT04.js} +1 -1
- package/src/assets/web-panel/assets/Compliance-Dq3aU9Df.js +1 -0
- package/src/assets/web-panel/assets/Compliance-NoXr2Vof.css +1 -0
- package/src/assets/web-panel/assets/Cowork-BlXJRu6L.css +1 -0
- package/src/assets/web-panel/assets/Cowork-CrWcnIg8.js +6 -0
- package/src/assets/web-panel/assets/Cron-Bh6fKZ0h.js +2 -0
- package/src/assets/web-panel/assets/Crosschain-8ofPaWVW.js +1 -0
- package/src/assets/web-panel/assets/Crosschain-CgRAecoR.css +1 -0
- package/src/assets/web-panel/assets/DID-D3EiYm3w.js +2 -0
- package/src/assets/web-panel/assets/DID-DVsYcgvs.css +1 -0
- package/src/assets/web-panel/assets/Dashboard-BFjEdFne.js +3 -0
- package/src/assets/web-panel/assets/Dashboard-CAPSdFR4.css +1 -0
- package/src/assets/web-panel/assets/Dropdown-pYVPcP6O.js +1 -0
- package/src/assets/web-panel/assets/EmailListRenderer-DTPZPx_S.css +1 -0
- package/src/assets/web-panel/assets/EmailListRenderer-zBPodwJ1.js +1 -0
- package/src/assets/web-panel/assets/FamilyGuardDashboard-CyQTW6PW.js +1 -0
- package/src/assets/web-panel/assets/FamilyGuardDashboard-nd3idUVb.css +1 -0
- package/src/assets/web-panel/assets/Federation-Ctaq3zYq.js +1 -0
- package/src/assets/web-panel/assets/Federation-fGN6iMX_.css +1 -0
- package/src/assets/web-panel/assets/FormItemContext-CWYJCLq1.js +2 -0
- package/src/assets/web-panel/assets/GenericCardRenderer-B1g6t9R9.js +1 -0
- package/src/assets/web-panel/assets/GenericCardRenderer-o85VDYQS.css +1 -0
- package/src/assets/web-panel/assets/{Git-DPuaGtg7.css → Git-BdHhxBWR.css} +1 -1
- package/src/assets/web-panel/assets/Git-DH-v8iwd.js +2 -0
- package/src/assets/web-panel/assets/Governance-DtCS4NDm.css +1 -0
- package/src/assets/web-panel/assets/Governance-jZxXvOs5.js +1 -0
- package/src/assets/web-panel/assets/Inference-D07LRghn.js +1 -0
- package/src/assets/web-panel/assets/Inference-t-w0NgIS.css +1 -0
- package/src/assets/web-panel/assets/KnowledgeGraph-4NU1S2Xm.css +1 -0
- package/src/assets/web-panel/assets/KnowledgeGraph-DnGtRZhx.js +1 -0
- package/src/assets/web-panel/assets/Logs-D2pM9C4W.js +2 -0
- package/src/assets/web-panel/assets/Logs-DQbCaYhL.css +1 -0
- package/src/assets/web-panel/assets/Marketplace-Bvo5cuGa.css +1 -0
- package/src/assets/web-panel/assets/Marketplace-UyIO7C7r.js +1 -0
- package/src/assets/web-panel/assets/McpTools-534Q95Mx.css +1 -0
- package/src/assets/web-panel/assets/McpTools-Bf1gvZPf.js +7 -0
- package/src/assets/web-panel/assets/Memory-C1bWj4RN.js +2 -0
- package/src/assets/web-panel/assets/Memory-CleW_R6V.css +1 -0
- package/src/assets/web-panel/assets/MobileBridge-C_Ot1H_a.js +3 -0
- package/src/assets/web-panel/assets/MobileBridge-zJpPuf4E.css +1 -0
- package/src/assets/web-panel/assets/MobileProjects-BD4alw6-.css +1 -0
- package/src/assets/web-panel/assets/MobileProjects-zr-PpsT_.js +1 -0
- package/src/assets/web-panel/assets/Mtc-CXZGO9Sh.css +1 -0
- package/src/assets/web-panel/assets/Mtc-CnzFUz5J.js +6 -0
- package/src/assets/web-panel/assets/MtcAudit-C1JM8esp.css +1 -0
- package/src/assets/web-panel/assets/MtcAudit-CAAh99wz.js +19 -0
- package/src/assets/web-panel/assets/Multisig-BryR2Jpr.css +1 -0
- package/src/assets/web-panel/assets/Multisig-D6IAg6HE.js +13 -0
- package/src/assets/web-panel/assets/NLProgramming-BFMarxb0.js +1 -0
- package/src/assets/web-panel/assets/NLProgramming-DGDHq6Z9.css +1 -0
- package/src/assets/web-panel/assets/Notes-BKKmMtqV.css +1 -0
- package/src/assets/web-panel/assets/Notes-BRp9ro3t.js +7 -0
- package/src/assets/web-panel/assets/NotificationSettings-C0Au3Cxb.js +1 -0
- package/src/assets/web-panel/assets/NotificationSettings-CG3Kfuef.css +1 -0
- package/src/assets/web-panel/assets/OrderTableRenderer-CfrDjSHT.css +1 -0
- package/src/assets/web-panel/assets/OrderTableRenderer-ISp6btRY.js +1 -0
- package/src/assets/web-panel/assets/Organization-DYoxLBRX.js +4 -0
- package/src/assets/web-panel/assets/Organization-LVvqwG0D.css +1 -0
- package/src/assets/web-panel/assets/{Overflow-BFxt7NlK.js → Overflow-rO8JJWGJ.js} +1 -1
- package/src/assets/web-panel/assets/{OverrideContext-C_4H9tGA.js → OverrideContext-C2r4vyBb.js} +1 -1
- package/src/assets/web-panel/assets/P2P-DJleeXIK.js +2 -0
- package/src/assets/web-panel/assets/P2P-DcFvP7F-.css +1 -0
- package/src/assets/web-panel/assets/PdhVaultBrowser-DM5qghFp.js +7 -0
- package/src/assets/web-panel/assets/PdhVaultBrowser-DZZrUOr1.css +1 -0
- package/src/assets/web-panel/assets/Permissions-D5v4Beya.js +4 -0
- package/src/assets/web-panel/assets/Permissions-DsPE_IQy.css +1 -0
- package/src/assets/web-panel/assets/PersonalDataHub-BhpRlh9D.css +1 -0
- package/src/assets/web-panel/assets/PersonalDataHub-c2ZTX0Pv.js +9 -0
- package/src/assets/web-panel/assets/Pipeline-BItr5CyP.css +1 -0
- package/src/assets/web-panel/assets/Pipeline-Crrkyhpz.js +1 -0
- package/src/assets/web-panel/assets/Privacy-DZVyrJKa.js +1 -0
- package/src/assets/web-panel/assets/Privacy-F_ENsxZk.css +1 -0
- package/src/assets/web-panel/assets/ProjectInit-B86LEzDL.css +1 -0
- package/src/assets/web-panel/assets/ProjectInit-DKg7J0gz.js +2 -0
- package/src/assets/web-panel/assets/ProjectSettings-3ndmTvVH.js +2 -0
- package/src/assets/web-panel/assets/ProjectSettings-DK7KA_iX.css +1 -0
- package/src/assets/web-panel/assets/Projects-CmJeUDBW.css +1 -0
- package/src/assets/web-panel/assets/Projects-ll5wnj2L.js +1 -0
- package/src/assets/web-panel/assets/Providers-BeqBVMhB.js +1 -0
- package/src/assets/web-panel/assets/Providers-C6q_fvea.css +1 -0
- package/src/assets/web-panel/assets/QuickAsk-DKAAxzuA.js +1 -0
- package/src/assets/web-panel/assets/Recommend-Byu7IGei.js +1 -0
- package/src/assets/web-panel/assets/Recommend-D_bf91K6.css +1 -0
- package/src/assets/web-panel/assets/Reputation-BKhWAmCu.js +1 -0
- package/src/assets/web-panel/assets/Reputation-DiOsOleI.css +1 -0
- package/src/assets/web-panel/assets/Row-BFtn11O6.js +1 -0
- package/src/assets/web-panel/assets/RssFeed-CjcbkyUb.css +1 -0
- package/src/assets/web-panel/assets/RssFeed-D5a0PT0k.js +3 -0
- package/src/assets/web-panel/assets/Search-DAkuaZNe.js +1 -0
- package/src/assets/web-panel/assets/Search-Klk29S7C.css +1 -0
- package/src/assets/web-panel/assets/Security-BmrukMHn.css +1 -0
- package/src/assets/web-panel/assets/Security-C79Ml2Ms.js +4 -0
- package/src/assets/web-panel/assets/Services-BBk_jH6-.js +2 -0
- package/src/assets/web-panel/assets/Services-DAnVNhUG.css +1 -0
- package/src/assets/web-panel/assets/{Skeleton-DL5ebkDK.js → Skeleton-Cy0VvL0M.js} +1 -1
- package/src/assets/web-panel/assets/Skills-BUu9owbR.css +1 -0
- package/src/assets/web-panel/assets/Skills-OQNky3uI.js +1 -0
- package/src/assets/web-panel/assets/Sla-CbX1f8xN.js +1 -0
- package/src/assets/web-panel/assets/Sla-sodqCU4a.css +1 -0
- package/src/assets/web-panel/assets/SpeechSettings-BIkoUjws.js +1 -0
- package/src/assets/web-panel/assets/SpeechSettings-CgB9nFyq.css +1 -0
- package/src/assets/web-panel/assets/SyncSettings-B3hJqmBP.css +1 -0
- package/src/assets/web-panel/assets/SyncSettings-DG6Swk7G.js +2 -0
- package/src/assets/web-panel/assets/Tasks-C9R8sgyi.js +1 -0
- package/src/assets/web-panel/assets/Tasks-nbTUVXvt.css +1 -0
- package/src/assets/web-panel/assets/Templates-AaJPeCIz.js +1 -0
- package/src/assets/web-panel/assets/Templates-CpFsKk_l.css +1 -0
- package/src/assets/web-panel/assets/Tenant-MuPJnOjk.css +1 -0
- package/src/assets/web-panel/assets/Tenant-jVFRofww.js +1 -0
- package/src/assets/web-panel/assets/Terminal-DHBMzfK6.js +3 -0
- package/src/assets/web-panel/assets/Terminal-DHoveJwj.css +1 -0
- package/src/assets/web-panel/assets/TimelineRenderer-9RFfOHSI.js +1 -0
- package/src/assets/web-panel/assets/TimelineRenderer-BlTAtkOc.css +1 -0
- package/src/assets/web-panel/assets/Tokens-CynVae-o.css +1 -0
- package/src/assets/web-panel/assets/Tokens-ZTfwuABF.js +1 -0
- package/src/assets/web-panel/assets/{Trigger-Rzs-a8Xf.js → Trigger-Xo7uZNQs.js} +1 -1
- package/src/assets/web-panel/assets/Trust-C-WrW0Fj.css +1 -0
- package/src/assets/web-panel/assets/Trust-C0cTPYvn.js +1 -0
- package/src/assets/web-panel/assets/UkeySign-DmMKio71.js +1 -0
- package/src/assets/web-panel/assets/VideoEditing-BDFghpzP.css +1 -0
- package/src/assets/web-panel/assets/VideoEditing-DP7B-oGT.js +1 -0
- package/src/assets/web-panel/assets/Wallet-B1kZDARo.js +4 -0
- package/src/assets/web-panel/assets/Wallet-DUbpTRcg.css +1 -0
- package/src/assets/web-panel/assets/WebAuthn-Bo5kBx27.js +5 -0
- package/src/assets/web-panel/assets/WebAuthn-CVAFRfCQ.css +1 -0
- package/src/assets/web-panel/assets/WorkflowEditor-429lPWYk.css +1 -0
- package/src/assets/web-panel/assets/WorkflowEditor-DGI9SNHH.js +1 -0
- package/src/assets/web-panel/assets/{_getTag-BVc6NQ_K.js → _getTag-DnrRH4E6.js} +1 -1
- package/src/assets/web-panel/assets/{chat-C7tndXfg.js → chat-y97W1CIG.js} +1 -1
- package/src/assets/web-panel/assets/{collapseMotion-DfnRZex1.js → collapseMotion-mxzzcDsg.js} +1 -1
- package/src/assets/web-panel/assets/{colors-dUAGx-eS.js → colors-DtTNo0sH.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-X13u92RU.js → compact-item-D0q0exuS.js} +1 -1
- package/src/assets/web-panel/assets/createContext-D7pLFs2I.js +1 -0
- package/src/assets/web-panel/assets/{debounce-D9xTw4Sx.js → debounce-CFGTTtN3.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-BDK34w0I.js +1 -0
- package/src/assets/web-panel/assets/echarts-jxgIOFUZ.js +25 -0
- package/src/assets/web-panel/assets/{hasIn-DGFXWm7Y.js → hasIn-CXjG5B2j.js} +1 -1
- package/src/assets/web-panel/assets/{icons--SBOhPAi.js → icons-DP3uiYxy.js} +4 -4
- package/src/assets/web-panel/assets/{index-Deh_HoQ3.js → index-1dwtkcJv.js} +2 -2
- package/src/assets/web-panel/assets/index-4mWZhCzz.js +1 -0
- package/src/assets/web-panel/assets/index-6np5ESBM.js +1 -0
- package/src/assets/web-panel/assets/{index-Bewc5jaO.js → index-8jxbZupG.js} +1 -1
- package/src/assets/web-panel/assets/{index-DW1GR68q.js → index-B3y_4OdG.js} +1 -1
- package/src/assets/web-panel/assets/index-B4dPdrvC.js +1 -0
- package/src/assets/web-panel/assets/index-B6SaRuCI.js +1 -0
- package/src/assets/web-panel/assets/index-B9ekWb3I.js +1 -0
- package/src/assets/web-panel/assets/index-BJUf19Wd.js +73 -0
- package/src/assets/web-panel/assets/index-BO644Q4S.js +21 -0
- package/src/assets/web-panel/assets/index-BPXhU-jp.js +7 -0
- package/src/assets/web-panel/assets/index-BU944DeT.js +31 -0
- package/src/assets/web-panel/assets/index-B_hjkMtX.js +3 -0
- package/src/assets/web-panel/assets/index-BdhEYW2a.js +1 -0
- package/src/assets/web-panel/assets/{index-DBfn83eM.js → index-BgmvrPJH.js} +1 -1
- package/src/assets/web-panel/assets/index-BgyrM0UN.js +19 -0
- package/src/assets/web-panel/assets/{index-Cq-fdWWC.js → index-BnLrbXDA.js} +1 -1
- package/src/assets/web-panel/assets/{index-C54Ydkuz.js → index-BqVjUN8b.js} +4 -4
- package/src/assets/web-panel/assets/index-BzCPx1cq.js +21 -0
- package/src/assets/web-panel/assets/index-CFsPe2N7.js +3 -0
- package/src/assets/web-panel/assets/{index-C14mc-46.js → index-CKrbutAQ.js} +1 -1
- package/src/assets/web-panel/assets/index-CSdhC7Qo.js +1 -0
- package/src/assets/web-panel/assets/{index-BqX3jeij.js → index-Cbqu804A.js} +1 -1
- package/src/assets/web-panel/assets/{index-CvlrcZKy.js → index-CkGFqlYX.js} +4 -4
- package/src/assets/web-panel/assets/{index-CfX1DEtk.css → index-Cq93VfoF.css} +1 -1
- package/src/assets/web-panel/assets/index-Ct6xtKkc.js +1 -0
- package/src/assets/web-panel/assets/index-DY6KLlgG.js +1 -0
- package/src/assets/web-panel/assets/index-D_4WcI1V.js +13 -0
- package/src/assets/web-panel/assets/{index-Ced-t9AY.js → index-DjCawXk1.js} +3 -3
- package/src/assets/web-panel/assets/index-Dr45Nm9V.js +55 -0
- package/src/assets/web-panel/assets/index-EaIfumgW.js +1 -0
- package/src/assets/web-panel/assets/index-POaFzYGS.js +1 -0
- package/src/assets/web-panel/assets/index-TrBGgrwG.js +1 -0
- package/src/assets/web-panel/assets/{index-DrH9uW99.js → index-YWOEx3rP.js} +2 -2
- package/src/assets/web-panel/assets/{index-DZMiVgXE.js → index-_3wPBMKt.js} +1 -1
- package/src/assets/web-panel/assets/{index-CBnkvGxd.js → index-aarO4HT9.js} +1 -1
- package/src/assets/web-panel/assets/index-bVJvqDAz.js +1 -0
- package/src/assets/web-panel/assets/{index-BipKV1Yr.js → index-gFLQe31v.js} +2 -2
- package/src/assets/web-panel/assets/index-kvV0f4tV.js +12 -0
- package/src/assets/web-panel/assets/index-qoB3whR9.js +12 -0
- package/src/assets/web-panel/assets/{initDefaultProps-B8zdOlFC.js → initDefaultProps-BnXISaAa.js} +1 -1
- package/src/assets/web-panel/assets/{isPlainObject-_gz-soRW.js → isPlainObject-BWRMT62c.js} +1 -1
- package/src/assets/web-panel/assets/isSymbol-S5WZT7lS.js +1 -0
- package/src/assets/web-panel/assets/motion-ChY7C0zJ.js +11 -0
- package/src/assets/web-panel/assets/{move-BioqdqDn.js → move-ByFZMFM5.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-Cc3pB9Xm.js → mtc-parser-BbAbUB-9.js} +1 -1
- package/src/assets/web-panel/assets/{omit-C1hn14Vc.js → omit-BYeliY1H.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-DgVG8oMj.js → pickAttrs-B9dcAKnu.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-cJY6hoXZ.js → placementArrow-D3F_txz7.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-DbUdURRx.js → responsiveObserve-ClkwY7wS.js} +1 -1
- package/src/assets/web-panel/assets/{slide-C2OEWnC4.js → slide-BNgy2Eea.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-DghgcGqm.js → statusUtils-Bv3heMCD.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-GoQ7uwU1.js → styleChecker-DVdlHbQm.js} +1 -1
- package/src/assets/web-panel/assets/useFlexGapSupport-alrRY5BK.js +1 -0
- package/src/assets/web-panel/assets/{useFs-CZCJDMup.js → useFs-CcVh0-Vu.js} +1 -1
- package/src/assets/web-panel/assets/{useMergedState-WwedrFR0.js → useMergedState-Cl2q1fes.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BjAS9b7w.js → usePersonalDataHub-CkkHPhyq.js} +1 -1
- package/src/assets/web-panel/assets/{useRefs-Cdq8EWeF.js → useRefs-DD9q4mOT.js} +1 -1
- package/src/assets/web-panel/assets/{useState-DGS1NOyn.js → useState-BK4hy8Ma.js} +1 -1
- package/src/assets/web-panel/assets/vendor-BvqAck49.js +42 -0
- package/src/assets/web-panel/assets/vnode-DWi0X9WN.js +1 -0
- package/src/assets/web-panel/assets/{zoom-CzyiNxpd.js → zoom-DCbqxxLH.js} +1 -1
- package/src/assets/web-panel/index.html +4 -4
- package/src/commands/agent.js +306 -1
- package/src/commands/ask.js +35 -1
- package/src/commands/checkpoint.js +239 -0
- package/src/commands/cost.js +114 -0
- package/src/commands/session.js +22 -2
- package/src/index.js +4 -0
- package/src/lib/file-checkpoint.js +300 -0
- package/src/lib/llm-pricing.js +227 -0
- package/src/lib/personal-data-hub-wiring.js +30 -0
- package/src/lib/recent-session.js +72 -0
- package/src/lib/session-picker.js +68 -0
- package/src/repl/agent-repl.js +58 -2
- package/src/repl/chat-repl.js +16 -1
- package/src/runtime/agent-core.js +68 -31
- package/src/runtime/fallback-model.js +109 -0
- package/src/runtime/file-ref-expander.js +258 -0
- package/src/runtime/headless-runner.js +576 -0
- package/src/runtime/headless-stream.js +302 -0
- package/src/runtime/policies/agent-policy.js +6 -0
- package/src/runtime/quiet-stdout.js +35 -0
- package/src/runtime/system-prompt.js +60 -0
- package/src/assets/web-panel/assets/AIOps-BWWsdf3s.js +0 -1
- package/src/assets/web-panel/assets/AIOps-Cchx1iXI.css +0 -1
- package/src/assets/web-panel/assets/Analytics-C1-TXmTC.css +0 -1
- package/src/assets/web-panel/assets/Analytics-CU1ellhG.js +0 -3
- package/src/assets/web-panel/assets/AppLayout-9pWRQa_t.css +0 -1
- package/src/assets/web-panel/assets/AppLayout-cXY-mRTd.js +0 -3
- package/src/assets/web-panel/assets/Audit-6ZMsXmrO.css +0 -1
- package/src/assets/web-panel/assets/Audit-CtQuC6zy.js +0 -1
- package/src/assets/web-panel/assets/Backup-CY9QozR7.css +0 -1
- package/src/assets/web-panel/assets/Backup-WeATa8CV.js +0 -1
- package/src/assets/web-panel/assets/BaseInput-BCu2Cejw.js +0 -1
- package/src/assets/web-panel/assets/Chat-Bj0XPlH8.js +0 -7
- package/src/assets/web-panel/assets/Chat-IlrLB9ZV.css +0 -1
- package/src/assets/web-panel/assets/ChatBubbleRenderer-Bpp2sN9W.js +0 -1
- package/src/assets/web-panel/assets/ChatBubbleRenderer-CO908iBt.css +0 -1
- package/src/assets/web-panel/assets/Codegen-BLP7id2a.css +0 -1
- package/src/assets/web-panel/assets/Codegen-PeBhNei5.js +0 -1
- package/src/assets/web-panel/assets/Community-BvaB_Wcs.js +0 -1
- package/src/assets/web-panel/assets/Community-C2RejeOY.css +0 -1
- package/src/assets/web-panel/assets/Compliance-DOys4Ov1.css +0 -1
- package/src/assets/web-panel/assets/Compliance-DjquEqsU.js +0 -1
- package/src/assets/web-panel/assets/Cowork-Bv6Tm40_.js +0 -6
- package/src/assets/web-panel/assets/Cowork-DsOst4XK.css +0 -1
- package/src/assets/web-panel/assets/Cron-D9fPIXV8.js +0 -2
- package/src/assets/web-panel/assets/Crosschain-C0WilDBF.js +0 -1
- package/src/assets/web-panel/assets/Crosschain-C7Le4Pte.css +0 -1
- package/src/assets/web-panel/assets/DID-BX6k3jZi.css +0 -1
- package/src/assets/web-panel/assets/DID-CiGeAI1K.js +0 -2
- package/src/assets/web-panel/assets/Dashboard-MFDcsVcM.css +0 -1
- package/src/assets/web-panel/assets/Dashboard-zqQuizB8.js +0 -3
- package/src/assets/web-panel/assets/Dropdown-_Mjb8yOR.js +0 -1
- package/src/assets/web-panel/assets/EmailListRenderer-C369EVhV.js +0 -1
- package/src/assets/web-panel/assets/EmailListRenderer-CVJ1j3Ll.css +0 -1
- package/src/assets/web-panel/assets/FamilyGuardDashboard-D8WsrCmn.js +0 -1
- package/src/assets/web-panel/assets/FamilyGuardDashboard-Df-D09Q4.css +0 -1
- package/src/assets/web-panel/assets/Federation-CgmfLbx1.css +0 -1
- package/src/assets/web-panel/assets/Federation-Dq7CrAzj.js +0 -1
- package/src/assets/web-panel/assets/FormItemContext-C7TvuLVK.js +0 -1
- package/src/assets/web-panel/assets/GenericCardRenderer-BJUR1Emh.js +0 -1
- package/src/assets/web-panel/assets/GenericCardRenderer-DtJFcJYl.css +0 -1
- package/src/assets/web-panel/assets/Git-B5MdAp15.js +0 -2
- package/src/assets/web-panel/assets/Governance-BIbPWlSM.js +0 -1
- package/src/assets/web-panel/assets/Governance-BoipmXaM.css +0 -1
- package/src/assets/web-panel/assets/Inference-BWxYJF9-.css +0 -1
- package/src/assets/web-panel/assets/Inference-vOz9J05E.js +0 -1
- package/src/assets/web-panel/assets/KnowledgeGraph-B_vUO-Td.js +0 -1
- package/src/assets/web-panel/assets/KnowledgeGraph-CztPDA96.css +0 -1
- package/src/assets/web-panel/assets/Logs-BwPfxX3p.js +0 -2
- package/src/assets/web-panel/assets/Logs-Gf_Mv9Nx.css +0 -1
- package/src/assets/web-panel/assets/Marketplace-Djp5q9dS.css +0 -1
- package/src/assets/web-panel/assets/Marketplace-T5HNwUjX.js +0 -1
- package/src/assets/web-panel/assets/McpTools-CDjHmzxH.css +0 -1
- package/src/assets/web-panel/assets/McpTools-CuKeBPxy.js +0 -5
- package/src/assets/web-panel/assets/Memory-Bcc2hxOA.css +0 -1
- package/src/assets/web-panel/assets/Memory-DmRW_sTE.js +0 -2
- package/src/assets/web-panel/assets/MobileBridge-DK2N_MJA.js +0 -3
- package/src/assets/web-panel/assets/MobileBridge-DwxX55b_.css +0 -1
- package/src/assets/web-panel/assets/MobileProjects-Ceaxrqzc.css +0 -1
- package/src/assets/web-panel/assets/MobileProjects-wl3bXCnJ.js +0 -1
- package/src/assets/web-panel/assets/Mtc-C8e0941i.js +0 -6
- package/src/assets/web-panel/assets/Mtc-DHwbdUqA.css +0 -1
- package/src/assets/web-panel/assets/MtcAudit-B0x8gahq.css +0 -1
- package/src/assets/web-panel/assets/MtcAudit-Cwigy2IR.js +0 -19
- package/src/assets/web-panel/assets/Multisig-BSfh_ncy.js +0 -7
- package/src/assets/web-panel/assets/Multisig-kwPDnXnl.css +0 -1
- package/src/assets/web-panel/assets/NLProgramming-BwzJAfJg.js +0 -1
- package/src/assets/web-panel/assets/NLProgramming-CLOvy-35.css +0 -1
- package/src/assets/web-panel/assets/Notes-COE2q2gD.css +0 -1
- package/src/assets/web-panel/assets/Notes-uilHH6hE.js +0 -7
- package/src/assets/web-panel/assets/NotificationSettings-Co0e0uEO.css +0 -1
- package/src/assets/web-panel/assets/NotificationSettings-DvM3DTPW.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-BIEm3hZl.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-BnOISpKI.css +0 -1
- package/src/assets/web-panel/assets/Organization-BX-cIO8M.css +0 -1
- package/src/assets/web-panel/assets/Organization-zxWoIwYM.js +0 -4
- package/src/assets/web-panel/assets/P2P-BsbToYKZ.js +0 -2
- package/src/assets/web-panel/assets/P2P-Cx88UaiD.css +0 -1
- package/src/assets/web-panel/assets/PdhVaultBrowser-B9ZGFpn4.css +0 -1
- package/src/assets/web-panel/assets/PdhVaultBrowser-VU8vfhsS.js +0 -7
- package/src/assets/web-panel/assets/Permissions-C10Sd26B.js +0 -4
- package/src/assets/web-panel/assets/Permissions-C9WlkGl-.css +0 -1
- package/src/assets/web-panel/assets/PersonalDataHub-Bz5u9Gth.css +0 -1
- package/src/assets/web-panel/assets/PersonalDataHub-edJB7VeU.js +0 -2
- package/src/assets/web-panel/assets/Pipeline-DxkXqrH2.css +0 -1
- package/src/assets/web-panel/assets/Pipeline-qNmVxn5A.js +0 -1
- package/src/assets/web-panel/assets/Privacy-CrsfSFKd.css +0 -1
- package/src/assets/web-panel/assets/Privacy-h78XF7eO.js +0 -1
- package/src/assets/web-panel/assets/ProjectInit-C9-vm1no.js +0 -2
- package/src/assets/web-panel/assets/ProjectInit-CteEo-wF.css +0 -1
- package/src/assets/web-panel/assets/ProjectSettings-DpDNsQTb.js +0 -2
- package/src/assets/web-panel/assets/ProjectSettings-pLSae-wy.css +0 -1
- package/src/assets/web-panel/assets/Projects-BX-SG9R4.css +0 -1
- package/src/assets/web-panel/assets/Projects-CwU3W4RD.js +0 -1
- package/src/assets/web-panel/assets/Providers-BNI-WkmA.css +0 -1
- package/src/assets/web-panel/assets/Providers-C3KZlUEI.js +0 -1
- package/src/assets/web-panel/assets/QuickAsk-CILvLGze.js +0 -1
- package/src/assets/web-panel/assets/Recommend-CH6wKzGo.css +0 -1
- package/src/assets/web-panel/assets/Recommend-XfFlk3BY.js +0 -1
- package/src/assets/web-panel/assets/Reputation-BqmWvaMD.js +0 -1
- package/src/assets/web-panel/assets/Reputation-D6VPNEd0.css +0 -1
- package/src/assets/web-panel/assets/Row-BEbjCI_X.js +0 -1
- package/src/assets/web-panel/assets/RssFeed-BlFC20eg.css +0 -1
- package/src/assets/web-panel/assets/RssFeed-CFukIl-a.js +0 -3
- package/src/assets/web-panel/assets/Search-B6RalzTB.css +0 -1
- package/src/assets/web-panel/assets/Search-dVPkf1o2.js +0 -1
- package/src/assets/web-panel/assets/Security-13K57V_v.css +0 -1
- package/src/assets/web-panel/assets/Security-DlRFaUrn.js +0 -4
- package/src/assets/web-panel/assets/Services-C8Qs6KXv.css +0 -1
- package/src/assets/web-panel/assets/Services-DKy7AjpA.js +0 -2
- package/src/assets/web-panel/assets/Skills-BEqnpg2j.js +0 -1
- package/src/assets/web-panel/assets/Skills-BdjRyorN.css +0 -1
- package/src/assets/web-panel/assets/Sla-CZ9_lzPI.js +0 -1
- package/src/assets/web-panel/assets/Sla-K19oOyQc.css +0 -1
- package/src/assets/web-panel/assets/SpeechSettings-DVSY_ehZ.js +0 -1
- package/src/assets/web-panel/assets/SpeechSettings-DYPJTDKz.css +0 -1
- package/src/assets/web-panel/assets/SyncSettings-C6cDrwDR.css +0 -1
- package/src/assets/web-panel/assets/SyncSettings-DgvsRpGt.js +0 -1
- package/src/assets/web-panel/assets/Tasks-BJjN_YEm.css +0 -1
- package/src/assets/web-panel/assets/Tasks-L5qXKsxK.js +0 -1
- package/src/assets/web-panel/assets/Templates-BWTV8-2E.css +0 -1
- package/src/assets/web-panel/assets/Templates-DR4VBx7q.js +0 -1
- package/src/assets/web-panel/assets/Tenant-D3zkSAV0.css +0 -1
- package/src/assets/web-panel/assets/Tenant-jMyaK184.js +0 -1
- package/src/assets/web-panel/assets/Terminal-DA5gjCiE.js +0 -3
- package/src/assets/web-panel/assets/Terminal-G1DrFtKr.css +0 -1
- package/src/assets/web-panel/assets/TimelineRenderer-BM17JHyr.js +0 -1
- package/src/assets/web-panel/assets/TimelineRenderer-DmztdsbF.css +0 -1
- package/src/assets/web-panel/assets/Tokens-BBOdNRHQ.css +0 -1
- package/src/assets/web-panel/assets/Tokens-CCJIrnhi.js +0 -1
- package/src/assets/web-panel/assets/Trust-BHeJEfNG.js +0 -1
- package/src/assets/web-panel/assets/Trust-DeOo0xAh.css +0 -1
- package/src/assets/web-panel/assets/UkeySign-DjcIVRk4.js +0 -1
- package/src/assets/web-panel/assets/VideoEditing-BPhptg3q.js +0 -1
- package/src/assets/web-panel/assets/VideoEditing-DksiizfS.css +0 -1
- package/src/assets/web-panel/assets/Wallet-D_xDgfaz.js +0 -4
- package/src/assets/web-panel/assets/Wallet-gR0ZvZbK.css +0 -1
- package/src/assets/web-panel/assets/WebAuthn-SSh5VhVO.css +0 -1
- package/src/assets/web-panel/assets/WebAuthn-pd961lgM.js +0 -5
- package/src/assets/web-panel/assets/WorkflowEditor-BmXDUZ8M.js +0 -1
- package/src/assets/web-panel/assets/WorkflowEditor-IiwsD8Kh.css +0 -1
- package/src/assets/web-panel/assets/createContext-BBLoTzN8.js +0 -1
- package/src/assets/web-panel/assets/devWarning-CNIS3FrJ.js +0 -1
- package/src/assets/web-panel/assets/echarts-Dj_pBaVI.js +0 -19
- package/src/assets/web-panel/assets/favicon-FSU2gSy6.ico +0 -0
- package/src/assets/web-panel/assets/index-1xUFGcnI.js +0 -21
- package/src/assets/web-panel/assets/index-4BeUpRaU.js +0 -1
- package/src/assets/web-panel/assets/index-AVHrO1io.js +0 -21
- package/src/assets/web-panel/assets/index-B2fc2n_u.js +0 -3
- package/src/assets/web-panel/assets/index-B5aXiiOG.js +0 -1
- package/src/assets/web-panel/assets/index-B78VsLFL.js +0 -1
- package/src/assets/web-panel/assets/index-BECv44dY.js +0 -12
- package/src/assets/web-panel/assets/index-BGn5-2TK.js +0 -1
- package/src/assets/web-panel/assets/index-BM9IHnrf.js +0 -13
- package/src/assets/web-panel/assets/index-BlMshk9V.js +0 -1
- package/src/assets/web-panel/assets/index-BoWoWh9f.js +0 -19
- package/src/assets/web-panel/assets/index-Bt79ud6Y.js +0 -1
- package/src/assets/web-panel/assets/index-CO9Tt0Bo.js +0 -1
- package/src/assets/web-panel/assets/index-CSZvB2uy.js +0 -12
- package/src/assets/web-panel/assets/index-CjeazYU2.js +0 -1
- package/src/assets/web-panel/assets/index-Cw-TEBru.js +0 -1
- package/src/assets/web-panel/assets/index-CyObfnlZ.js +0 -3
- package/src/assets/web-panel/assets/index-D0d2TS5o.js +0 -69
- package/src/assets/web-panel/assets/index-DV3zNhRX.js +0 -1
- package/src/assets/web-panel/assets/index-DnHElN_A.js +0 -7
- package/src/assets/web-panel/assets/index-DspW4reY.js +0 -55
- package/src/assets/web-panel/assets/index-DxUFdvJ5.js +0 -1
- package/src/assets/web-panel/assets/index-La4F-U-s.js +0 -1
- package/src/assets/web-panel/assets/index-azbNWBMo.js +0 -1
- package/src/assets/web-panel/assets/index-squRDiXd.js +0 -31
- package/src/assets/web-panel/assets/isSymbol-DAy2hlR5.js +0 -1
- package/src/assets/web-panel/assets/motion-ChVLXdRp.js +0 -11
- package/src/assets/web-panel/assets/useFlexGapSupport-CzD0s7wN.js +0 -1
- package/src/assets/web-panel/assets/vendor-DhFY8mDK.js +0 -1
- package/src/assets/web-panel/assets/vnode-CnXQ7gJ2.js +0 -1
- package/src/assets/web-panel/assets/warning-Pq00owYb.js +0 -1
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@file` reference expander — Claude-Code-style prompt file injection.
|
|
3
|
+
*
|
|
4
|
+
* Scans a prompt for `@<path>` tokens and, for each one that resolves to a real
|
|
5
|
+
* file/dir under the working directory, appends the file contents (or a dir
|
|
6
|
+
* listing) as a `<referenced-files>` context block. The original `@token` stays
|
|
7
|
+
* in the prose so the message remains readable and the model knows what the
|
|
8
|
+
* user pointed at.
|
|
9
|
+
*
|
|
10
|
+
* Design notes:
|
|
11
|
+
* - A token only matches when `@` is at start-of-input or preceded by
|
|
12
|
+
* whitespace / an opening bracket-quote. That skips email addresses
|
|
13
|
+
* (`foo@bar.com`) and decorative `@` — the `@` there is preceded by a word
|
|
14
|
+
* char and never matches.
|
|
15
|
+
* - Non-existent paths are NOT expanded and are surfaced as warnings (so a
|
|
16
|
+
* typo'd path is visible rather than silently dropped). Decorative `@words`
|
|
17
|
+
* that happen not to be files simply produce no ref and no warning unless
|
|
18
|
+
* they look path-like (contain a slash or a dot-extension).
|
|
19
|
+
* - Files are read as UTF-8 (encoding.md rule). Binary files are skipped with
|
|
20
|
+
* a note. Oversized files are truncated with a marker.
|
|
21
|
+
* - All filesystem access goes through an injectable `deps` seam so unit tests
|
|
22
|
+
* never touch the real disk (mirrors the project's `_deps` philosophy).
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
import fsDefault from "fs";
|
|
26
|
+
import pathDefault from "path";
|
|
27
|
+
|
|
28
|
+
export const DEFAULT_MAX_BYTES = 100 * 1024; // 100 KB per referenced file
|
|
29
|
+
export const DEFAULT_MAX_DIR_ENTRIES = 200;
|
|
30
|
+
|
|
31
|
+
// `@` preceded by start / whitespace / opening bracket-quote, then a path run.
|
|
32
|
+
// We capture greedily up to the next whitespace or a closing bracket-quote and
|
|
33
|
+
// trim trailing sentence punctuation afterwards.
|
|
34
|
+
const TOKEN_RE = /(^|[\s("'`[{])@([^\s"'`)\]}]+)/g;
|
|
35
|
+
|
|
36
|
+
/** A raw token looks path-like if it has a directory separator or a file ext. */
|
|
37
|
+
function looksPathLike(raw) {
|
|
38
|
+
return /[\\/]/.test(raw) || /\.[A-Za-z0-9]+$/.test(raw);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Strip trailing sentence punctuation that is unlikely to be part of a path. */
|
|
42
|
+
function trimTrailingPunct(raw) {
|
|
43
|
+
return raw.replace(/[),;:!?'".]+$/g, "");
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Find unique `@path` candidates in the text, in first-seen order.
|
|
48
|
+
* @returns {Array<{raw:string}>}
|
|
49
|
+
*/
|
|
50
|
+
export function findFileRefTokens(text) {
|
|
51
|
+
const seen = new Set();
|
|
52
|
+
const out = [];
|
|
53
|
+
let m;
|
|
54
|
+
TOKEN_RE.lastIndex = 0;
|
|
55
|
+
while ((m = TOKEN_RE.exec(text)) !== null) {
|
|
56
|
+
const raw = m[2];
|
|
57
|
+
if (!raw || seen.has(raw)) continue;
|
|
58
|
+
seen.add(raw);
|
|
59
|
+
out.push({ raw });
|
|
60
|
+
}
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** True when a buffer/string looks binary (has a NUL in the sampled prefix). */
|
|
65
|
+
function looksBinary(buf) {
|
|
66
|
+
const sample = buf.slice(0, 8000);
|
|
67
|
+
for (let i = 0; i < sample.length; i++) {
|
|
68
|
+
if (sample[i] === 0) return true;
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Resolve a single raw token to an injectable ref descriptor, or null when it
|
|
75
|
+
* does not resolve to an existing path. Tries the literal path first, then a
|
|
76
|
+
* trailing-punctuation-stripped variant (handles "see @config.json.").
|
|
77
|
+
*/
|
|
78
|
+
function resolveRef(raw, { cwd, fs, path, maxBytes, maxDirEntries }) {
|
|
79
|
+
const candidates = [raw];
|
|
80
|
+
const trimmed = trimTrailingPunct(raw);
|
|
81
|
+
if (trimmed && trimmed !== raw) candidates.push(trimmed);
|
|
82
|
+
|
|
83
|
+
for (const cand of candidates) {
|
|
84
|
+
const abs = path.resolve(cwd, cand);
|
|
85
|
+
let stat;
|
|
86
|
+
try {
|
|
87
|
+
stat = fs.statSync(abs);
|
|
88
|
+
} catch {
|
|
89
|
+
continue; // not this candidate
|
|
90
|
+
}
|
|
91
|
+
if (stat.isDirectory()) {
|
|
92
|
+
let entries;
|
|
93
|
+
try {
|
|
94
|
+
entries = fs.readdirSync(abs, { withFileTypes: true });
|
|
95
|
+
} catch (err) {
|
|
96
|
+
return {
|
|
97
|
+
kind: "error",
|
|
98
|
+
raw: cand,
|
|
99
|
+
rel: cand,
|
|
100
|
+
message: `cannot read directory: ${err.message}`,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
const names = entries
|
|
104
|
+
.slice(0, maxDirEntries)
|
|
105
|
+
.map((e) => (e.isDirectory() ? `${e.name}/` : e.name))
|
|
106
|
+
.sort();
|
|
107
|
+
const truncated = entries.length > maxDirEntries;
|
|
108
|
+
return {
|
|
109
|
+
kind: "dir",
|
|
110
|
+
raw: cand,
|
|
111
|
+
rel: cand,
|
|
112
|
+
entries: names,
|
|
113
|
+
total: entries.length,
|
|
114
|
+
truncated,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
if (stat.isFile()) {
|
|
118
|
+
let buf;
|
|
119
|
+
try {
|
|
120
|
+
buf = fs.readFileSync(abs);
|
|
121
|
+
} catch (err) {
|
|
122
|
+
return {
|
|
123
|
+
kind: "error",
|
|
124
|
+
raw: cand,
|
|
125
|
+
rel: cand,
|
|
126
|
+
message: `cannot read file: ${err.message}`,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
if (looksBinary(buf)) {
|
|
130
|
+
return {
|
|
131
|
+
kind: "binary",
|
|
132
|
+
raw: cand,
|
|
133
|
+
rel: cand,
|
|
134
|
+
bytes: stat.size,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
const truncated = buf.length > maxBytes;
|
|
138
|
+
const content = (truncated ? buf.slice(0, maxBytes) : buf).toString(
|
|
139
|
+
"utf-8",
|
|
140
|
+
);
|
|
141
|
+
return {
|
|
142
|
+
kind: "file",
|
|
143
|
+
raw: cand,
|
|
144
|
+
rel: cand,
|
|
145
|
+
bytes: stat.size,
|
|
146
|
+
content,
|
|
147
|
+
truncated,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
// Something exotic (socket/fifo) — treat as non-expandable.
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function escapeAttr(s) {
|
|
157
|
+
return String(s).replace(/"/g, """);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/** Render the resolved refs into a single `<referenced-files>` block. */
|
|
161
|
+
function renderBlock(refs) {
|
|
162
|
+
const parts = [
|
|
163
|
+
'<referenced-files note="auto-injected from @path references">',
|
|
164
|
+
];
|
|
165
|
+
for (const ref of refs) {
|
|
166
|
+
if (ref.kind === "file") {
|
|
167
|
+
const attrs =
|
|
168
|
+
`path="${escapeAttr(ref.rel)}" bytes="${ref.bytes}"` +
|
|
169
|
+
(ref.truncated
|
|
170
|
+
? ` truncated="true" shown-bytes="${DEFAULT_MAX_BYTES}"`
|
|
171
|
+
: "");
|
|
172
|
+
parts.push(`<file ${attrs}>`);
|
|
173
|
+
parts.push(ref.content);
|
|
174
|
+
if (ref.truncated) {
|
|
175
|
+
parts.push(`\n… [truncated — file is ${ref.bytes} bytes]`);
|
|
176
|
+
}
|
|
177
|
+
parts.push("</file>");
|
|
178
|
+
} else if (ref.kind === "dir") {
|
|
179
|
+
const attrs =
|
|
180
|
+
`path="${escapeAttr(ref.rel)}" entries="${ref.total}"` +
|
|
181
|
+
(ref.truncated ? ` truncated="true"` : "");
|
|
182
|
+
parts.push(`<dir ${attrs}>`);
|
|
183
|
+
parts.push(ref.entries.join("\n"));
|
|
184
|
+
if (ref.truncated) {
|
|
185
|
+
parts.push(`… [truncated — ${ref.total} entries total]`);
|
|
186
|
+
}
|
|
187
|
+
parts.push("</dir>");
|
|
188
|
+
} else if (ref.kind === "binary") {
|
|
189
|
+
parts.push(
|
|
190
|
+
`<file path="${escapeAttr(ref.rel)}" bytes="${ref.bytes}" binary="true" note="binary file — contents omitted" />`,
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
parts.push("</referenced-files>");
|
|
195
|
+
return parts.join("\n");
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Expand `@file` references in a prompt.
|
|
200
|
+
*
|
|
201
|
+
* @param {string} prompt
|
|
202
|
+
* @param {object} [opts]
|
|
203
|
+
* @param {string} [opts.cwd=process.cwd()]
|
|
204
|
+
* @param {number} [opts.maxBytes]
|
|
205
|
+
* @param {number} [opts.maxDirEntries]
|
|
206
|
+
* @param {object} [opts.deps] Injection seam: { fs, path }.
|
|
207
|
+
* @returns {{ prompt:string, refs:Array, warnings:string[] }}
|
|
208
|
+
* `prompt` is unchanged when nothing resolved; otherwise it is the
|
|
209
|
+
* original text + a trailing `<referenced-files>` block.
|
|
210
|
+
*/
|
|
211
|
+
export function expandFileRefs(prompt, opts = {}) {
|
|
212
|
+
const text = typeof prompt === "string" ? prompt : "";
|
|
213
|
+
if (!text || !text.includes("@")) {
|
|
214
|
+
return { prompt: text, refs: [], warnings: [] };
|
|
215
|
+
}
|
|
216
|
+
const fs = opts.deps?.fs || fsDefault;
|
|
217
|
+
const path = opts.deps?.path || pathDefault;
|
|
218
|
+
const cwd = opts.cwd || process.cwd();
|
|
219
|
+
const maxBytes = Number.isFinite(opts.maxBytes)
|
|
220
|
+
? opts.maxBytes
|
|
221
|
+
: DEFAULT_MAX_BYTES;
|
|
222
|
+
const maxDirEntries = Number.isFinite(opts.maxDirEntries)
|
|
223
|
+
? opts.maxDirEntries
|
|
224
|
+
: DEFAULT_MAX_DIR_ENTRIES;
|
|
225
|
+
|
|
226
|
+
const tokens = findFileRefTokens(text);
|
|
227
|
+
const refs = [];
|
|
228
|
+
const warnings = [];
|
|
229
|
+
|
|
230
|
+
for (const { raw } of tokens) {
|
|
231
|
+
const ref = resolveRef(raw, { cwd, fs, path, maxBytes, maxDirEntries });
|
|
232
|
+
if (!ref) {
|
|
233
|
+
// Only warn for path-like tokens; bare @mentions are left alone.
|
|
234
|
+
if (looksPathLike(raw)) {
|
|
235
|
+
warnings.push(`@${raw} — no such file or directory (left as-is)`);
|
|
236
|
+
}
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
if (ref.kind === "error") {
|
|
240
|
+
warnings.push(`@${ref.raw} — ${ref.message} (left as-is)`);
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
refs.push(ref);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
if (refs.length === 0) {
|
|
247
|
+
return { prompt: text, refs: [], warnings };
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
const block = renderBlock(refs);
|
|
251
|
+
return {
|
|
252
|
+
prompt: `${text}\n\n${block}`,
|
|
253
|
+
refs,
|
|
254
|
+
warnings,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export const _deps = { fs: fsDefault, path: pathDefault };
|