openclaw-multi-auto 1.5.4 → 1.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/dist/{accounts-C_lW3Ag9.js → accounts-BOzyfwW4.js} +2 -2
  2. package/dist/{accounts-BVgYdU9W.js → accounts-BtEMxtPK.js} +1 -1
  3. package/dist/{accounts-BU-CeDai.js → accounts-CUYZBSKh.js} +1 -1
  4. package/dist/{accounts-C9HcPI9h.js → accounts-L9ByEpnP.js} +2 -2
  5. package/dist/{accounts-DJaYqD2E.js → accounts-khXX75l1.js} +7 -7
  6. package/dist/{accounts-Tgelvk0C.js → accounts-yfBeCZtS.js} +17 -17
  7. package/dist/{acp-cli-oWFHnS7i.js → acp-cli-CA2oCCEA.js} +8 -8
  8. package/dist/{active-listener-BEdprTkn.js → active-listener-D1yqT1cw.js} +2 -2
  9. package/dist/{agent-scope-BRElciAf.js → agent-scope-NQ9CtXYN.js} +17 -17
  10. package/dist/{agents-CujsWz9d.js → agents-BWVlofyv.js} +14 -14
  11. package/dist/{agents.config-C42STger.js → agents.config-QVfqc4C-.js} +2 -2
  12. package/dist/{plugin-sdk/api-key-rotation-BRE4X2tf.js → api-key-rotation-DtsNS2Nb.js} +2 -2
  13. package/dist/{api-key-rotation-BbuLHl0_.js → api-key-rotation-Vix80AUw.js} +1 -1
  14. package/dist/{audio-preflight-DDBLZBdb.js → audio-preflight-5FEeDooz.js} +4 -4
  15. package/dist/{audio-preflight-Yg1vzPE1.js → audio-preflight-DUtdCXjJ.js} +34 -34
  16. package/dist/{audio-preflight-BMvgEQ5j.js → audio-preflight-DpxQCpsA.js} +32 -32
  17. package/dist/{audio-transcription-runner-gLFfz8fr.js → audio-transcription-runner-28fcRNNi.js} +12 -12
  18. package/dist/{audio-transcription-runner-DZbSWT9E.js → audio-transcription-runner-B-UvoDjZ.js} +1 -1
  19. package/dist/{audio-transcription-runner-D1cvrZ6s.js → audio-transcription-runner-DYKvqK54.js} +23 -23
  20. package/dist/{audit-membership-runtime-Dntemq07.js → audit-membership-runtime-DWyHWAHM.js} +4 -4
  21. package/dist/{audit-DtlAv66L.js → audit-oC--RZy0.js} +29 -29
  22. package/dist/{auth-Mj21c_GN.js → auth-YB6m93-M.js} +1 -1
  23. package/dist/{auth-choice-CEycltU4.js → auth-choice-CsSQLEkP.js} +13 -13
  24. package/dist/{auth-choice-CGHVedXa.js → auth-choice-gp-h1aBd.js} +11 -11
  25. package/dist/{auth-choice.apply-helpers-D4YQXYfc.js → auth-choice.apply-helpers-CPpuynsT.js} +1 -1
  26. package/dist/{auth-profiles-CdLTlJLc.js → auth-profiles-15pq9j9V.js} +16 -16
  27. package/dist/{auth-token-7kzDLVhb.js → auth-token-Bwn8N6KA.js} +1 -1
  28. package/dist/{banner-CpzKVd4-.js → banner-hcZ0XNXv.js} +2 -2
  29. package/dist/{bonjour-discovery-BuS9wF_p.js → bonjour-discovery-2btw06uD.js} +1 -1
  30. package/dist/{browser-cli-BVtbvQ3Z.js → browser-cli-C4PdLYHy.js} +12 -12
  31. package/dist/build-info.json +3 -3
  32. package/dist/bundled/boot-md/handler.js +51 -51
  33. package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
  34. package/dist/bundled/command-logger/handler.js +2 -2
  35. package/dist/bundled/session-memory/handler.js +51 -51
  36. package/dist/{call-Dp9SDkqK.js → call-CZgRbVYm.js} +10 -10
  37. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  38. package/dist/{channel-account-context-ESLVGdUf.js → channel-account-context-BYiOuxnf.js} +5 -5
  39. package/dist/{channel-activity-LfmEkdDN.js → channel-activity-D9K6yeu8.js} +1 -1
  40. package/dist/{channel-activity-BDnjYF7B.js → channel-activity-xHOMiarp.js} +3 -3
  41. package/dist/{channel-options-CsYaFB_4.js → channel-options-DJkf_8wi.js} +3 -3
  42. package/dist/{channel-selection-DFJsYFPo.js → channel-selection-BpIsCVV5.js} +1 -1
  43. package/dist/{channel-web-DzRsJEE4.js → channel-web-wb1My1Yi.js} +17 -17
  44. package/dist/{channels-cli-CpfeOXtJ.js → channels-cli-DlQONtY9.js} +93 -93
  45. package/dist/{channels-status-issues-6V9ktlZD.js → channels-status-issues-Hj-GOSVm.js} +1 -1
  46. package/dist/{chrome-CMU2WVFh.js → chrome-D45SyhQL.js} +8 -8
  47. package/dist/{chrome-DxxEKrY7.js → chrome-DwizpzOC.js} +18 -18
  48. package/dist/{chrome-CyM61Cn2.js → chrome-L_icBVLq.js} +4 -4
  49. package/dist/{clawbot-cli-COtnakIJ.js → clawbot-cli-CyTZUVIJ.js} +11 -11
  50. package/dist/cli/daemon-cli.js +1 -1
  51. package/dist/{cli-jnT1hYPO.js → cli-CNTrB-ni.js} +73 -73
  52. package/dist/{client-C-wA75vx.js → client-g0366Z73.js} +2 -2
  53. package/dist/{command-registry-g5tDqdAU.js → command-registry-VOmumlmD.js} +11 -11
  54. package/dist/{command-secret-targets-u3eWn-W3.js → command-secret-targets-CIMuIdbL.js} +4 -4
  55. package/dist/{commands-C8pWcFs_.js → commands-DU7At3rY.js} +1 -1
  56. package/dist/{commands-registry-J6nVL3BQ.js → commands-registry-B_WUa9KB.js} +3 -3
  57. package/dist/{commands-registry-D5qXbFJn.js → commands-registry-V1zZ5pPC.js} +4 -4
  58. package/dist/{completion-cli-DQsyli3B.js → completion-cli-pqdmKVTo.js} +13 -13
  59. package/dist/{config-cli-DUycVHoC.js → config-cli-BqznmzlM.js} +7 -7
  60. package/dist/{config-guard--Obk2MGi.js → config-guard-D8jiLjr7.js} +3 -3
  61. package/dist/{config-validation-iOxszdEd.js → config-validation-BngLiGoq.js} +3 -3
  62. package/dist/{configure-Al_pz_5z.js → configure-B--Umf_O.js} +17 -17
  63. package/dist/{control-ui-assets-DpjfNcTC.js → control-ui-assets-C9ewbI8z.js} +1 -1
  64. package/dist/{cron-cli-CQ5EZw_b.js → cron-cli-DCRPpI1m.js} +11 -11
  65. package/dist/{daemon-cli-Bb80Mzv5.js → daemon-cli-DtBzKM_d.js} +15 -15
  66. package/dist/{daemon-install-B09ifLcJ.js → daemon-install-ckPBUAjJ.js} +4 -4
  67. package/dist/{daemon-install-helpers-CYpECiEx.js → daemon-install-helpers-BWf-PrgA.js} +11 -11
  68. package/dist/{deliver-BXVcFIHL.js → deliver-B9cys0EZ.js} +1 -1
  69. package/dist/{deliver-DbdywYJE.js → deliver-D4o6VIur.js} +21 -21
  70. package/dist/{deliver-CxF9h9PE.js → deliver-b93aBgie.js} +7 -7
  71. package/dist/deliver-runtime-CdWd-JQI.js +61 -0
  72. package/dist/{deliver-runtime-DTaIS-1i.js → deliver-runtime-DhaQJ0pI.js} +3 -3
  73. package/dist/deliver-runtime-P-G3bPjW.js +36 -0
  74. package/dist/deps-send-discord.runtime-BltWu9GW.js +36 -0
  75. package/dist/deps-send-discord.runtime-DnbhTFX9.js +26 -0
  76. package/dist/deps-send-imessage.runtime-BOiQ6mDx.js +25 -0
  77. package/dist/deps-send-imessage.runtime-CdCif3t7.js +35 -0
  78. package/dist/deps-send-signal.runtime-CTcl388M.js +24 -0
  79. package/dist/deps-send-signal.runtime-fHqkSmMW.js +34 -0
  80. package/dist/deps-send-slack.runtime-CCqBz4Kg.js +22 -0
  81. package/dist/deps-send-slack.runtime-CkyZO7ln.js +32 -0
  82. package/dist/{deps-send-telegram.runtime-B6wp3kx8.js → deps-send-telegram.runtime-C--B69CN.js} +16 -16
  83. package/dist/deps-send-telegram.runtime-DGSKTCpH.js +27 -0
  84. package/dist/deps-send-whatsapp.runtime-BkoMLlCM.js +119 -0
  85. package/dist/deps-send-whatsapp.runtime-CJkTHkah.js +60 -0
  86. package/dist/{deps-send-whatsapp.runtime-CIZqFAqb.js → deps-send-whatsapp.runtime-DvTL2tzN.js} +7 -7
  87. package/dist/{devices-cli-C0dUbeL4.js → devices-cli-D6V059Dh.js} +8 -8
  88. package/dist/{diagnostic-Co6Kghr-.js → diagnostic-Bn4PZjMZ.js} +2 -2
  89. package/dist/{diagnostic-BfiudAAN.js → diagnostic-BpP9UBCE.js} +1 -1
  90. package/dist/{diagnostics-DCWM_8Ur.js → diagnostics---0c2_jo.js} +5 -5
  91. package/dist/{directory-cli-Dlws13Di.js → directory-cli-RYC34-EU.js} +7 -7
  92. package/dist/{dns-cli-But7QdAw.js → dns-cli-CElNoV5S.js} +5 -5
  93. package/dist/{dock-BbUkruOF.js → dock-nA2DVPCV.js} +4 -4
  94. package/dist/{docs-cli-Ck2IKAtw.js → docs-cli-Bv7ltPvi.js} +4 -4
  95. package/dist/{doctor-completion-Nat1HXE1.js → doctor-completion-CQIiN7rY.js} +2 -2
  96. package/dist/{doctor-config-flow-WCCoUXeB.js → doctor-config-flow-BOAryh5P.js} +15 -15
  97. package/dist/{enable-C3H8BtN4.js → enable-688HYBNS.js} +1 -1
  98. package/dist/entry.js +2 -2
  99. package/dist/{plugin-sdk/errors-DaiAM-yU.js → errors-CCLeFWAg.js} +1 -1
  100. package/dist/{exec-approvals-allowlist-ySf2Yo5n.js → exec-approvals-allowlist-C0Eya3rT.js} +1 -1
  101. package/dist/{exec-approvals-cli-DhLLOys6.js → exec-approvals-cli-BYYerKp8.js} +16 -16
  102. package/dist/{exec-safe-bin-runtime-policy-DnXViOlF.js → exec-safe-bin-runtime-policy-BmJmfDRo.js} +2 -2
  103. package/dist/extensionAPI.js +6 -6
  104. package/dist/{fetch-D-SiVqBm.js → fetch-BhAHVdwx.js} +3 -3
  105. package/dist/{fetch-DuraYswo.js → fetch-BlJWzEP6.js} +5 -5
  106. package/dist/{fetch-guard-CKYBfJ66.js → fetch-guard-BbBdhWz_.js} +1 -1
  107. package/dist/{fetch-guard-DWr0d00H.js → fetch-guard-ChYBwfiy.js} +2 -2
  108. package/dist/{frontmatter-BkTfEZ93.js → frontmatter-CvaMP376.js} +3 -3
  109. package/dist/{fs-safe-CTYUrIgQ.js → fs-safe-0jAo_Whb.js} +4 -4
  110. package/dist/{fs-safe-jMDpsYew.js → fs-safe-CFLs-j60.js} +24 -24
  111. package/dist/{gateway-cli--atF6LYo.js → gateway-cli-DOYWSRqa.js} +153 -153
  112. package/dist/{gateway-rpc-DYyQQ1z9.js → gateway-rpc-w6t8Eq_1.js} +1 -1
  113. package/dist/{github-copilot-token-BDioPmd6.js → github-copilot-token-D13V9YBz.js} +7 -7
  114. package/dist/{health-BDJ72U4Z.js → health-C1EstYHd.js} +11 -11
  115. package/dist/{hooks-cli-r0UX8B9a.js → hooks-cli-BFMve5sG.js} +81 -81
  116. package/dist/{hooks-status-CxBdpBry.js → hooks-status-DBnEWOEP.js} +1 -1
  117. package/dist/{image-eT7Y-nP5.js → image-Bbn53mzj.js} +6 -6
  118. package/dist/{image-CyHTO86Q.js → image-Bw71y73Q.js} +5 -5
  119. package/dist/{image-BCVLo0qw.js → image-DAOPwVXi.js} +1 -1
  120. package/dist/{image-ops-pjs5W0CZ.js → image-ops-AJL9tN3_.js} +10 -10
  121. package/dist/{image-ops-BuUnEOE0.js → image-ops-CehkHxmW.js} +2 -2
  122. package/dist/image-runtime-6jhrqcle.js +55 -0
  123. package/dist/image-runtime-CVv2ra9J.js +29 -0
  124. package/dist/{image-runtime-DtCKpMPZ.js → image-runtime-wlCLVvVv.js} +3 -3
  125. package/dist/{inspect-BeU4yMp2.js → inspect-CUxeDA8c.js} +4 -4
  126. package/dist/{install-safe-path-BiL8OJvK.js → install-safe-path-BX58wFBl.js} +25 -25
  127. package/dist/{installs-BwKmG0Uy.js → installs-B-xr0Fzq.js} +9 -9
  128. package/dist/{ipv4-BoGwfnEw.js → ipv4-C4Yt-xid.js} +1 -1
  129. package/dist/{ir-B83looB-.js → ir-DAP-B-Xw.js} +8 -8
  130. package/dist/{ir-Da7Ahsqc.js → ir-otKVkb4a.js} +8 -8
  131. package/dist/{issue-format-CJ89_-9v.js → issue-format-DSksfKiV.js} +1 -1
  132. package/dist/{json-files-CuJjdF_0.js → json-files-rR19q30D.js} +8 -8
  133. package/dist/{legacy-names-DOC03BkU.js → legacy-names-TyzbVqa_.js} +1 -1
  134. package/dist/{lifecycle-core-BzuWBBm8.js → lifecycle-core-DVwen0ks.js} +5 -5
  135. package/dist/llm-slug-generator.js +51 -51
  136. package/dist/{logger-BfjWMCSD.js → logger-DMZQQtxK.js} +7 -7
  137. package/dist/{login-VkQ9MW3d.js → login-BcRaGQb6.js} +3 -3
  138. package/dist/{login-CrIwcrVI.js → login-DiCctRo1.js} +5 -5
  139. package/dist/{login-qr-BVMQ-xQz.js → login-qr-C9D47WEZ.js} +6 -6
  140. package/dist/{login-qr-BpPDZdl_.js → login-qr-MUbXgjtd.js} +10 -10
  141. package/dist/{logs-cli-DWHhSnWs.js → logs-cli-B3TG2lp8.js} +9 -9
  142. package/dist/{manager-1bvuGrNR.js → manager-BW_NSIMl.js} +13 -13
  143. package/dist/{manager-BUBwl6M6.js → manager-iwcRf3Xc.js} +14 -14
  144. package/dist/manager-runtime-BN6VevdC.js +18 -0
  145. package/dist/{manager-runtime-H9iQnw64.js → manager-runtime-D3KqpRT7.js} +9 -9
  146. package/dist/{manifest-registry-DVviqWVY.js → manifest-registry-CJb8odRF.js} +1 -1
  147. package/dist/{memory-cli-DarWCbU6.js → memory-cli-DGsJx7YM.js} +12 -12
  148. package/dist/{model-BLV8y_N-.js → model-B792l3Cn.js} +2 -2
  149. package/dist/{model-catalog-DTcBkUlX.js → model-catalog-DZ6kl2Ko.js} +3 -3
  150. package/dist/{model-picker-D-fTOOzb.js → model-picker-6fHys0wK.js} +4 -4
  151. package/dist/{model-selection-Dna0Gz1k.js → model-selection-idoqPmw0.js} +43 -43
  152. package/dist/{models-CmjutMmh.js → models-DerrMmwF.js} +17 -17
  153. package/dist/{models-cli-BZFQX22p.js → models-cli-BkTZg_4v.js} +78 -78
  154. package/dist/{models-config-DNcDbV_G.js → models-config-Dabs9Kdv.js} +6 -6
  155. package/dist/{net-D5fSREu4.js → net-BAIqYNz0.js} +2 -2
  156. package/dist/{node-cli-Cnq-PJTp.js → node-cli-DoEq4zeG.js} +33 -33
  157. package/dist/{node-command-policy-B5BMBBJP.js → node-command-policy-DRhSc90G.js} +1 -1
  158. package/dist/{node-service-BpYZAvpl.js → node-service-CcgtNIeT.js} +1 -1
  159. package/dist/{nodes-cli-CkrDOWpv.js → nodes-cli--d9RiCnK.js} +16 -16
  160. package/dist/{nodes-screen-DfsQohWd.js → nodes-screen-BTND5VDq.js} +7 -7
  161. package/dist/{npm-pack-install-E-mkrZ55.js → npm-pack-install-CGUDOSKz.js} +18 -18
  162. package/dist/{npm-resolution-BUUmg5ON.js → npm-resolution-CAoULCWM.js} +4 -4
  163. package/dist/{onboard-DINGSS9R.js → onboard-CMZRkPVc.js} +6 -6
  164. package/dist/{onboard-channels-Di4MjWDY.js → onboard-channels-SlJu6XWJ.js} +21 -21
  165. package/dist/{onboard-custom-DITBQuWQ.js → onboard-custom-EzfL89yz.js} +4 -4
  166. package/dist/{onboard-helpers-DO7u2ZOy.js → onboard-helpers-lGpaVp03.js} +10 -10
  167. package/dist/{onboard-hooks-K02_ZWDq.js → onboard-hooks-B7TMiJoY.js} +4 -4
  168. package/dist/{onboard-remote-5-ugiSN2.js → onboard-remote-nvWS7on7.js} +4 -4
  169. package/dist/{onboard-skills-CSzbC2KZ.js → onboard-skills-hz91W03u.js} +4 -4
  170. package/dist/{onboarding-BM4dvUK6.js → onboarding-CTPuMVQI.js} +14 -14
  171. package/dist/{onboarding.finalize-p_RDh7ET.js → onboarding.finalize-DLzl5ZOg.js} +87 -87
  172. package/dist/{onboarding.gateway-config-DldlRfms.js → onboarding.gateway-config-C4MoTr60.js} +18 -18
  173. package/dist/{onboarding.secret-input-BIRIJiCU.js → onboarding.secret-input-BFD0OW4X.js} +1 -1
  174. package/dist/{openai-model-default-CY2Nk4cn.js → openai-model-default-h4LbSR7f.js} +2 -2
  175. package/dist/{openclaw-root-BFfBQ6FD.js → openclaw-root-BU3lu8pM.js} +8 -8
  176. package/dist/{outbound-ChDjtuD6.js → outbound-C2kanETZ.js} +6 -6
  177. package/dist/{outbound-attachment-DfWsfe2N.js → outbound-attachment-CAJBGcna.js} +2 -2
  178. package/dist/{outbound-attachment-DqHlD21U.js → outbound-attachment-DBrYWX8h.js} +2 -2
  179. package/dist/{outbound-DPdJe7e1.js → outbound-kbHYt1JW.js} +3 -3
  180. package/dist/{pairing-cli-D2VZxWg3.js → pairing-cli-CXbmkz7Z.js} +8 -8
  181. package/dist/{pairing-labels-D4rnJ5pJ.js → pairing-labels-CaPLIhlh.js} +1 -1
  182. package/dist/{pairing-store-BXArq4hn.js → pairing-store-Brs9aNn_.js} +3 -3
  183. package/dist/{path-alias-guards-DbNvNQar.js → path-alias-guards-DhIwq92y.js} +3 -3
  184. package/dist/{path-alias-guards-BzvdLvTI.js → path-alias-guards-DqXRZmsL.js} +1 -1
  185. package/dist/{path-safety-ClQO4BB6.js → path-safety-BjIM4N4t.js} +1 -1
  186. package/dist/{paths-Cvc9EM8Y.js → paths-C6TxBCvO.js} +5 -5
  187. package/dist/{paths-Bkr-BCxW.js → paths-CCxysrzL.js} +4 -4
  188. package/dist/{paths-BB_1ZWOj.js → paths-Cv63xST_.js} +9 -9
  189. package/dist/{pi-embedded-BQQa91aA.js → pi-embedded-BaGj07T0.js} +158 -158
  190. package/dist/{pi-embedded-CgQ_W6Xs.js → pi-embedded-DYU79yGe.js} +24 -24
  191. package/dist/{pi-embedded-helpers-oXDyXTD8.js → pi-embedded-helpers-DC2OtKrl.js} +6 -6
  192. package/dist/{pi-embedded-helpers-CwuBTKza.js → pi-embedded-helpers-uTRAmQ4n.js} +3 -3
  193. package/dist/{pi-embedded-helpers-CLXm10bV.js → pi-embedded-helpers-wy0DZvx1.js} +52 -52
  194. package/dist/{pi-model-discovery-Dymwdjt0.js → pi-model-discovery-BGgOlX8N.js} +7 -7
  195. package/dist/{pi-model-discovery-CECkJMCt.js → pi-model-discovery-DOb5RTev.js} +1 -1
  196. package/dist/pi-model-discovery-runtime-Bwmi4Ev8.js +11 -0
  197. package/dist/{pi-model-discovery-runtime-g7UP-SFR.js → pi-model-discovery-runtime-DShjmiiF.js} +5 -5
  198. package/dist/{pi-tools.before-tool-call.runtime-Df7B-ggW.js → pi-tools.before-tool-call.runtime-B079pVah.js} +5 -5
  199. package/dist/{pi-tools.before-tool-call.runtime-Cwab_5W1.js → pi-tools.before-tool-call.runtime-BuLxSyx9.js} +9 -9
  200. package/dist/{pi-tools.policy-CydUEzFi.js → pi-tools.policy-DZ-X86Va.js} +5 -5
  201. package/dist/{plugin-auto-enable-BE4ZVjAL.js → plugin-auto-enable-BCMqEDjQ.js} +3 -3
  202. package/dist/{plugin-registry-DXW3eyib.js → plugin-registry-BPlCWMur.js} +3 -3
  203. package/dist/plugin-sdk/discord.js +6 -6
  204. package/dist/plugin-sdk/index.js +50 -50
  205. package/dist/plugin-sdk/mattermost.js +3 -3
  206. package/dist/{plugins-4Rj4OjLY.js → plugins-CWkRQYDj.js} +11 -11
  207. package/dist/{plugins-VAZrrfgw.js → plugins-DCxT-37x.js} +2 -2
  208. package/dist/{plugins-cli-BQJOOVMx.js → plugins-cli-D9ILEfyb.js} +83 -83
  209. package/dist/{ports-DMkRSlnH.js → ports-BlCLhwbc.js} +1 -1
  210. package/dist/{ports-DogAV7pa.js → ports-CER5YPnN.js} +2 -2
  211. package/dist/{program-BA11qFx1.js → program-CV56xn7w.js} +81 -81
  212. package/dist/{prompt-select-styled-B0GS28ia.js → prompt-select-styled-BOa5I_PU.js} +40 -40
  213. package/dist/{provider-auth-helpers-CrGL-jik.js → provider-auth-helpers-c6mNCUXO.js} +5 -5
  214. package/dist/{proxy-env-wKO3g8Yv.js → proxy-env-BMrSVckF.js} +1 -1
  215. package/dist/{proxy-env-DlmzDx8x.js → proxy-env-Cq5gdrbj.js} +1 -1
  216. package/dist/{proxy-fetch-B2pEfjbR.js → proxy-fetch-CCjEYbFm.js} +1 -1
  217. package/dist/{push-apns-BEwBjZ0a.js → push-apns-FOkPD05E.js} +5 -5
  218. package/dist/{pw-ai-DNMjFMqH.js → pw-ai-Cl1Lc7RC.js} +14 -14
  219. package/dist/{pw-ai-CnbxziFP.js → pw-ai-CxBU3aK5.js} +18 -18
  220. package/dist/{pw-ai-CmphSzHx.js → pw-ai-GcYO6HPE.js} +1 -1
  221. package/dist/{qmd-manager-BtIKUaO9.js → qmd-manager-BsYsO9Ii.js} +10 -10
  222. package/dist/{qmd-manager-Dp6PJ8zQ.js → qmd-manager-DEJMqoGd.js} +20 -20
  223. package/dist/{qr-cli-CFz9kS5X.js → qr-cli-BD2jK4fg.js} +2 -2
  224. package/dist/{query-expansion-BrSWVbaE.js → query-expansion-1UTIWjP6.js} +12 -12
  225. package/dist/{query-expansion-CX-1fS52.js → query-expansion-DtLc3wjL.js} +6 -6
  226. package/dist/{redact-COik8ET1.js → redact-ClbcYG1J.js} +1 -1
  227. package/dist/{redact-snapshot-Bs4goggz.js → redact-snapshot-D_qQD4A-.js} +1 -1
  228. package/dist/{register.agent-D641ju8B.js → register.agent-tbPA5YAy.js} +94 -94
  229. package/dist/register.configure-DuwRrXc2.js +165 -0
  230. package/dist/{register.maintenance-BFkk8MEH.js → register.maintenance-DrqDlV5b.js} +95 -95
  231. package/dist/{register.message-D5uE_Hop.js → register.message-CoKXNaU0.js} +74 -74
  232. package/dist/{register.onboard-zHFvSwFr.js → register.onboard-CSWOSL9O.js} +18 -18
  233. package/dist/{register.setup-uTbv3_P1.js → register.setup-DBx5JX6h.js} +21 -21
  234. package/dist/{register.status-health-sessions-CB7t-JQx.js → register.status-health-sessions-D1bPtfep.js} +88 -88
  235. package/dist/{register.subclis-MEiNmuy5.js → register.subclis-QGJNmjss.js} +31 -31
  236. package/dist/{rpc-DVfuVmy9.js → rpc-DkMrTUww.js} +1 -1
  237. package/dist/{run-main-mrvunzuy.js → run-main-CPftxqTe.js} +92 -92
  238. package/dist/{run-with-concurrency-BgYfgkXT.js → run-with-concurrency-D_ZpbgEG.js} +4 -4
  239. package/dist/{runtime-C87FQrrv.js → runtime-MAH2Oph4.js} +3 -3
  240. package/dist/{runtime-config-collectors-BQaC477D.js → runtime-config-collectors-BJMV6Mt1.js} +1 -1
  241. package/dist/{runtime-whatsapp-login.runtime-DjdgScUI.js → runtime-whatsapp-login.runtime-CGYWl9eB.js} +7 -7
  242. package/dist/runtime-whatsapp-login.runtime-IeylZEl4.js +13 -0
  243. package/dist/runtime-whatsapp-outbound.runtime-ClBRuLsq.js +22 -0
  244. package/dist/{runtime-whatsapp-outbound.runtime-B74K7opl.js → runtime-whatsapp-outbound.runtime-hZEfYaRM.js} +15 -15
  245. package/dist/{sandbox-Ct-_lzi1.js → sandbox-0TbzPJaS.js} +18 -18
  246. package/dist/{sandbox-cli-C3RoXFRE.js → sandbox-cli-NLaxffXl.js} +25 -25
  247. package/dist/{secrets-cli-B3hqCxvs.js → secrets-cli-KLGbYet6.js} +11 -11
  248. package/dist/{security-cli-DcHIyXr7.js → security-cli-EIEkcYVb.js} +42 -42
  249. package/dist/{send-dfu6_rgf.js → send-BQERFNyo.js} +5 -5
  250. package/dist/{send-CnRP4P-G.js → send-BW-ZtYG3.js} +5 -5
  251. package/dist/{send-L7gRiwyd.js → send-Bj776ESJ.js} +7 -7
  252. package/dist/{send-2zKwf9NW.js → send-BtZAqquW.js} +11 -11
  253. package/dist/{send-DAQAKa9Z.js → send-CxgWxXZc.js} +6 -6
  254. package/dist/{send-5o2p_xjn.js → send-DAMtu9kK.js} +4 -4
  255. package/dist/{send-PE6cwoTe.js → send-DcxmcFi_.js} +8 -8
  256. package/dist/{send-6lz6rNVP.js → send-Dx2RkUOZ.js} +6 -6
  257. package/dist/{send-u1Bo4CSn.js → send-sC6ka831.js} +8 -8
  258. package/dist/{send-BHTiZcH3.js → send-vmONuVgL.js} +26 -26
  259. package/dist/{server-context-8pDe2iyd.js → server-context-HJVwPQYn.js} +12 -12
  260. package/dist/{server-Ci4xtuR9.js → server-kUElNhlY.js} +20 -20
  261. package/dist/{server-lifecycle-k5daSrde.js → server-lifecycle-BE32unpZ.js} +2 -2
  262. package/dist/{server-middleware-DMiFT9xU.js → server-middleware-AS2VOYkK.js} +1 -1
  263. package/dist/{server-node-events-BmnPjNXE.js → server-node-events-DkbZzI6P.js} +74 -74
  264. package/dist/{service-BhOFtHSw.js → service-CyStNr3d.js} +15 -15
  265. package/dist/{session-D8ImowSs.js → session-A4QhBRvH.js} +8 -8
  266. package/dist/{session-DkOjpX3_.js → session-CaCx4rPH.js} +1 -1
  267. package/dist/{session-utils-DKRmXD2l.js → session-utils-CGqb1oeq.js} +6 -6
  268. package/dist/{sessions-svLGrv0Z.js → sessions-BV6HNW4h.js} +4 -4
  269. package/dist/{sessions-BOWPuhe5.js → sessions-BmVDW-7q.js} +15 -15
  270. package/dist/{shared-CjuadLFV.js → shared-DUQavBtY.js} +3 -3
  271. package/dist/{shared-CbAkLNrg.js → shared-JW74idb0.js} +1 -1
  272. package/dist/{skill-commands-DNqJ-kwn.js → skill-commands-CMzBZKG2.js} +9 -9
  273. package/dist/{skill-commands-TpUsdjev.js → skill-commands-WtIJG0CI.js} +5 -5
  274. package/dist/{skill-scanner-BZvvItef.js → skill-scanner-DIFsGcqE.js} +6 -6
  275. package/dist/{skills-DR-vacol.js → skills-7T9PwwL6.js} +3 -3
  276. package/dist/{skills-7ODkHQYp.js → skills-CE_iqvM5.js} +22 -22
  277. package/dist/{skills-cli-oay0tY8Z.js → skills-cli-DPavvthL.js} +5 -5
  278. package/dist/{skills-install-Vmi7xYfa.js → skills-install-BoLfaoWv.js} +6 -6
  279. package/dist/{skills-status-BmN697ff.js → skills-status-CK5Gnf6i.js} +1 -1
  280. package/dist/{slash-commands.runtime-BfaheruW.js → slash-commands.runtime-CMGx2xHy.js} +11 -11
  281. package/dist/slash-commands.runtime-Cpn2tYW4.js +16 -0
  282. package/dist/slash-dispatch.runtime-BAeJXa56.js +114 -0
  283. package/dist/{slash-dispatch.runtime-131yup2e.js → slash-dispatch.runtime-Dh053pQK.js} +6 -6
  284. package/dist/slash-dispatch.runtime-DoBAQBU5.js +56 -0
  285. package/dist/{slash-skill-commands.runtime-D34BKAN-.js → slash-skill-commands.runtime-ChU2tck2.js} +15 -15
  286. package/dist/slash-skill-commands.runtime-DKMvvdDW.js +20 -0
  287. package/dist/{status-BcQchPaC.js → status-Bp-K1BEf.js} +27 -27
  288. package/dist/{status.update-B20UBTDq.js → status.update-ZYUSggzS.js} +2 -2
  289. package/dist/{store-D89wDcz9.js → store--eR1R_UX.js} +2 -2
  290. package/dist/{store-DDkqo1sO.js → store-DeASfYEV.js} +5 -5
  291. package/dist/{subagent-registry-CPxHbyN5.js → subagent-registry-8qHIVhRq.js} +149 -149
  292. package/dist/{subagent-registry-runtime-DbSf_Je6.js → subagent-registry-runtime-DSi5mnCQ.js} +6 -6
  293. package/dist/subagent-registry-runtime-DVomlbm6.js +114 -0
  294. package/dist/subagent-registry-runtime-ppWS3tVu.js +56 -0
  295. package/dist/{subsystem-B45WV3qB.js → subsystem-Di1z8l0Z.js} +14 -14
  296. package/dist/{system-cli-D2yIJoKU.js → system-cli-C2xNfuQM.js} +9 -9
  297. package/dist/{system-run-command-BmhbnLTE.js → system-run-command-BPWZk7KI.js} +1 -1
  298. package/dist/{systemd-DjWVSbAG.js → systemd-Cf-0XKYu.js} +9 -9
  299. package/dist/{systemd-hints-Do-aQ9jw.js → systemd-hints-CYllYKO0.js} +6 -6
  300. package/dist/{systemd-linger-DpmnYgKU.js → systemd-linger-zllO90bD.js} +1 -1
  301. package/dist/{tables-BxyIF0w4.js → tables-CV7Afb0h.js} +1 -1
  302. package/dist/{tables-mE4cJBN2.js → tables-d739Y1xW.js} +1 -1
  303. package/dist/{tailnet-0_FsdHP-.js → tailnet-DJFUq7_R.js} +1 -1
  304. package/dist/{target-errors-KOHiT_JA.js → target-errors-CBI2Ga0y.js} +2 -2
  305. package/dist/{target-errors-mnlwhAjP.js → target-errors-iVxliVqA.js} +4 -4
  306. package/dist/{thinking-BeGmb5k6.js → thinking-DXYisHiZ.js} +7 -7
  307. package/dist/{tokens-q32vI39c.js → tokens-DxnY9ui_.js} +1 -1
  308. package/dist/{tool-images-RZdHiZcG.js → tool-images-2cBx1W8h.js} +2 -2
  309. package/dist/{tool-images-CNPfeCmU.js → tool-images-Bn6dB14u.js} +1 -1
  310. package/dist/{tui-DL6NZZEa.js → tui-DTVy-YhN.js} +6 -6
  311. package/dist/{tui-cli-BNAYhvpu.js → tui-cli-CexRLJ3a.js} +32 -32
  312. package/dist/{update-DlS-d52F.js → update-DijPxK0g.js} +3 -3
  313. package/dist/{update-cli-D8-DqIs2.js → update-cli-9NslG4yR.js} +104 -104
  314. package/dist/{update-runner-CzTQ7BJT.js → update-runner-B6_UqreW.js} +16 -16
  315. package/dist/{web-MR9d7KyB.js → web-1hWJDzNA.js} +6 -6
  316. package/dist/{web-Btj-e8kN.js → web-CzWRVmFt.js} +55 -55
  317. package/dist/web-DGoa03ue.js +118 -0
  318. package/dist/{webhooks-cli-QdaQhvbT.js → webhooks-cli-B4ZcXTtw.js} +6 -6
  319. package/dist/{whatsapp-actions-Bp8F0cOF.js → whatsapp-actions-Jm4VW1Ve.js} +17 -17
  320. package/dist/{whatsapp-actions-BHbJJyqw.js → whatsapp-actions-iEArE_Ez.js} +21 -21
  321. package/dist/{with-timeout-BMMWHlH3.js → with-timeout-C8-tY12i.js} +3 -3
  322. package/dist/{workspace-v76gFdZu.js → workspace-CIGzK2_w.js} +1 -1
  323. package/dist/{workspace-U-DyR64O.js → workspace-CUVC6GX1.js} +20 -20
  324. package/dist/{workspace-dirs-Cz_Zgtg2.js → workspace-dirs-D4SMysgC.js} +1 -1
  325. package/dist/{wsl-CvQfS6aU.js → wsl-CsGe5QCP.js} +2 -2
  326. package/package.json +1 -1
  327. package/scripts/create-instance.sh +73 -2
  328. package/scripts/npm_publish.sh +1 -0
  329. package/dist/api-key-rotation-BJpKWXy0.js +0 -181
  330. package/dist/deliver-runtime-BFs7iAZF.js +0 -36
  331. package/dist/deliver-runtime-DixuU_uB.js +0 -61
  332. package/dist/deps-send-discord.runtime-CDcLcDSt.js +0 -36
  333. package/dist/deps-send-discord.runtime-DZUccI6Z.js +0 -26
  334. package/dist/deps-send-imessage.runtime-BGPUVMIE.js +0 -35
  335. package/dist/deps-send-imessage.runtime-CF3OpoqY.js +0 -25
  336. package/dist/deps-send-signal.runtime-Cw4-ozeO.js +0 -24
  337. package/dist/deps-send-signal.runtime-DQDD44_O.js +0 -34
  338. package/dist/deps-send-slack.runtime-BDsDhS1P.js +0 -22
  339. package/dist/deps-send-slack.runtime-Cpy77gBG.js +0 -32
  340. package/dist/deps-send-telegram.runtime-D_4xVasO.js +0 -27
  341. package/dist/deps-send-whatsapp.runtime-D2sVAclS.js +0 -119
  342. package/dist/deps-send-whatsapp.runtime-DK8jqd14.js +0 -60
  343. package/dist/errors-xt401nuk.js +0 -54
  344. package/dist/image-runtime-B2qh5seQ.js +0 -55
  345. package/dist/image-runtime-BcAK3n8a.js +0 -29
  346. package/dist/manager-runtime-FO1Sx3W8.js +0 -18
  347. package/dist/pi-model-discovery-runtime-BeY4EUPp.js +0 -11
  348. package/dist/plugin-sdk/accounts-CJWOBzwB.js +0 -35
  349. package/dist/plugin-sdk/accounts-DP1-L-QS.js +0 -288
  350. package/dist/plugin-sdk/accounts-DZhWlEg3.js +0 -46
  351. package/dist/plugin-sdk/active-listener-B_sLJTXM.js +0 -50
  352. package/dist/plugin-sdk/audio-preflight-DGEUDxxR.js +0 -69
  353. package/dist/plugin-sdk/audio-transcription-runner-DkoPNPYt.js +0 -2176
  354. package/dist/plugin-sdk/audit-membership-runtime-DSBHHw7o.js +0 -58
  355. package/dist/plugin-sdk/channel-activity-F3d0yUwy.js +0 -94
  356. package/dist/plugin-sdk/channel-web-QF7EpjeP.js +0 -2256
  357. package/dist/plugin-sdk/chrome-BXoCyCkY.js +0 -2415
  358. package/dist/plugin-sdk/commands-registry-t7cXBTfN.js +0 -1125
  359. package/dist/plugin-sdk/config-BkEnz2Po.js +0 -17913
  360. package/dist/plugin-sdk/deliver-B6AG_l67.js +0 -1694
  361. package/dist/plugin-sdk/deliver-runtime-D585kJZc.js +0 -32
  362. package/dist/plugin-sdk/deps-send-discord.runtime-a_OKY2js.js +0 -23
  363. package/dist/plugin-sdk/deps-send-imessage.runtime-Baxy9TD4.js +0 -22
  364. package/dist/plugin-sdk/deps-send-signal.runtime-BwXoCrFl.js +0 -21
  365. package/dist/plugin-sdk/deps-send-slack.runtime-CLmKjgso.js +0 -19
  366. package/dist/plugin-sdk/deps-send-telegram.runtime-BKfdBKnZ.js +0 -24
  367. package/dist/plugin-sdk/deps-send-whatsapp.runtime-BOTwkbx_.js +0 -57
  368. package/dist/plugin-sdk/diagnostic-CsP-lEkI.js +0 -319
  369. package/dist/plugin-sdk/fetch-guard-DETCcJzQ.js +0 -156
  370. package/dist/plugin-sdk/fs-safe-B8y811FR.js +0 -352
  371. package/dist/plugin-sdk/image-DjTEkYZE.js +0 -2310
  372. package/dist/plugin-sdk/image-ops-BSiMpAw4.js +0 -584
  373. package/dist/plugin-sdk/image-runtime-6xPp8m5a.js +0 -25
  374. package/dist/plugin-sdk/ir-DQ7_HbvK.js +0 -1296
  375. package/dist/plugin-sdk/local-roots-BUP4YBmR.js +0 -186
  376. package/dist/plugin-sdk/logger-CZY9KIoY.js +0 -1163
  377. package/dist/plugin-sdk/login-BxEKLlCo.js +0 -57
  378. package/dist/plugin-sdk/login-qr-BQIpMPr9.js +0 -320
  379. package/dist/plugin-sdk/manager-I6KbPihW.js +0 -3917
  380. package/dist/plugin-sdk/manager-runtime-CFfYYWIQ.js +0 -15
  381. package/dist/plugin-sdk/outbound-NS6UHnB6.js +0 -212
  382. package/dist/plugin-sdk/outbound-attachment-Dy6fyf6H.js +0 -19
  383. package/dist/plugin-sdk/path-alias-guards-DBjLbIX_.js +0 -43
  384. package/dist/plugin-sdk/paths-vTM3Lh3X.js +0 -166
  385. package/dist/plugin-sdk/pi-embedded-helpers-1R1gu7eX.js +0 -9627
  386. package/dist/plugin-sdk/pi-model-discovery-runtime-Do9o-dUd.js +0 -8
  387. package/dist/plugin-sdk/pi-model-discovery-v-XPUOOf.js +0 -134
  388. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-D4sFsIks.js +0 -354
  389. package/dist/plugin-sdk/plugins-DeBZB9l_.js +0 -864
  390. package/dist/plugin-sdk/proxy-fetch-ChxOhWF4.js +0 -38
  391. package/dist/plugin-sdk/pw-ai-DEOmCSSC.js +0 -1938
  392. package/dist/plugin-sdk/qmd-manager-HyYKoEch.js +0 -1448
  393. package/dist/plugin-sdk/query-expansion-CeyKUeDW.js +0 -1011
  394. package/dist/plugin-sdk/redact-DjVX-1N3.js +0 -319
  395. package/dist/plugin-sdk/reply-DAo_Jt8K.js +0 -97916
  396. package/dist/plugin-sdk/resolve-outbound-target-B42qgQS9.js +0 -40
  397. package/dist/plugin-sdk/run-with-concurrency-Bt_ks0Qa.js +0 -1994
  398. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-B6W989eF.js +0 -10
  399. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-c_GDFy37.js +0 -19
  400. package/dist/plugin-sdk/send-CQpMudwO.js +0 -2587
  401. package/dist/plugin-sdk/send-DQHLzVyO.js +0 -414
  402. package/dist/plugin-sdk/send-DTB24bEF.js +0 -3135
  403. package/dist/plugin-sdk/send-DfHadjZ_.js +0 -503
  404. package/dist/plugin-sdk/send-XXlW2iny.js +0 -540
  405. package/dist/plugin-sdk/session-6TF6MyaC.js +0 -169
  406. package/dist/plugin-sdk/skill-commands-CkGeFUMl.js +0 -342
  407. package/dist/plugin-sdk/skills-CBkHBYPq.js +0 -1428
  408. package/dist/plugin-sdk/slash-commands.runtime-CxliuGaP.js +0 -13
  409. package/dist/plugin-sdk/slash-dispatch.runtime-DFaeYlJQ.js +0 -52
  410. package/dist/plugin-sdk/slash-skill-commands.runtime-0M0OLCxq.js +0 -16
  411. package/dist/plugin-sdk/ssrf-cFtplYtS.js +0 -202
  412. package/dist/plugin-sdk/store-5nyxY3WU.js +0 -81
  413. package/dist/plugin-sdk/subagent-registry-runtime-DCtmDwna.js +0 -52
  414. package/dist/plugin-sdk/tables-C47P4GTN.js +0 -55
  415. package/dist/plugin-sdk/target-errors-Blia4S69.js +0 -195
  416. package/dist/plugin-sdk/thinking-Bo2eosVa.js +0 -1206
  417. package/dist/plugin-sdk/tokens-DgNRBwIg.js +0 -52
  418. package/dist/plugin-sdk/tool-images-Gk_-0y2N.js +0 -274
  419. package/dist/plugin-sdk/web-CVxZbXyH.js +0 -56
  420. package/dist/plugin-sdk/whatsapp-actions-Bw0H9g-n.js +0 -80
  421. package/dist/register.configure-BrDOSLIq.js +0 -165
  422. package/dist/runtime-whatsapp-login.runtime-DUb55byQ.js +0 -13
  423. package/dist/runtime-whatsapp-outbound.runtime-Bii_xSfI.js +0 -22
  424. package/dist/slash-commands.runtime-CVw6566g.js +0 -16
  425. package/dist/slash-dispatch.runtime-B9Ygtzi4.js +0 -56
  426. package/dist/slash-dispatch.runtime-D0xInkf3.js +0 -114
  427. package/dist/slash-skill-commands.runtime-DxZ4z5h6.js +0 -20
  428. package/dist/subagent-registry-runtime-DL1Wv7nA.js +0 -56
  429. package/dist/subagent-registry-runtime-SkB2tTaE.js +0 -114
  430. package/dist/web-DWiOofzq.js +0 -118
@@ -1,1011 +0,0 @@
1
- import { t as runTasksWithConcurrency } from "./run-with-concurrency-Bt_ks0Qa.js";
2
- import { a as createSubsystemLogger } from "./logger-CZY9KIoY.js";
3
- import { o as resolveSessionTranscriptsDirForAgent } from "./paths-vTM3Lh3X.js";
4
- import { t as redactSensitiveText } from "./redact-DjVX-1N3.js";
5
- import { createRequire } from "node:module";
6
- import fs from "node:fs";
7
- import path from "node:path";
8
- import fs$1 from "node:fs/promises";
9
- import crypto from "node:crypto";
10
-
11
- //#region src/memory/fs-utils.ts
12
- function isFileMissingError(err) {
13
- return Boolean(err && typeof err === "object" && "code" in err && err.code === "ENOENT");
14
- }
15
- async function statRegularFile(absPath) {
16
- let stat;
17
- try {
18
- stat = await fs$1.lstat(absPath);
19
- } catch (err) {
20
- if (isFileMissingError(err)) return { missing: true };
21
- throw err;
22
- }
23
- if (stat.isSymbolicLink() || !stat.isFile()) throw new Error("path required");
24
- return {
25
- missing: false,
26
- stat
27
- };
28
- }
29
-
30
- //#endregion
31
- //#region src/memory/internal.ts
32
- function ensureDir(dir) {
33
- try {
34
- fs.mkdirSync(dir, { recursive: true });
35
- } catch {}
36
- return dir;
37
- }
38
- function normalizeRelPath(value) {
39
- return value.trim().replace(/^[./]+/, "").replace(/\\/g, "/");
40
- }
41
- function normalizeExtraMemoryPaths(workspaceDir, extraPaths) {
42
- if (!extraPaths?.length) return [];
43
- const resolved = extraPaths.map((value) => value.trim()).filter(Boolean).map((value) => path.isAbsolute(value) ? path.resolve(value) : path.resolve(workspaceDir, value));
44
- return Array.from(new Set(resolved));
45
- }
46
- function isMemoryPath(relPath) {
47
- const normalized = normalizeRelPath(relPath);
48
- if (!normalized) return false;
49
- if (normalized === "MEMORY.md" || normalized === "memory.md") return true;
50
- return normalized.startsWith("memory/");
51
- }
52
- async function walkDir(dir, files) {
53
- const entries = await fs$1.readdir(dir, { withFileTypes: true });
54
- for (const entry of entries) {
55
- const full = path.join(dir, entry.name);
56
- if (entry.isSymbolicLink()) continue;
57
- if (entry.isDirectory()) {
58
- await walkDir(full, files);
59
- continue;
60
- }
61
- if (!entry.isFile()) continue;
62
- if (!entry.name.endsWith(".md")) continue;
63
- files.push(full);
64
- }
65
- }
66
- async function listMemoryFiles(workspaceDir, extraPaths) {
67
- const result = [];
68
- const memoryFile = path.join(workspaceDir, "MEMORY.md");
69
- const altMemoryFile = path.join(workspaceDir, "memory.md");
70
- const memoryDir = path.join(workspaceDir, "memory");
71
- const addMarkdownFile = async (absPath) => {
72
- try {
73
- const stat = await fs$1.lstat(absPath);
74
- if (stat.isSymbolicLink() || !stat.isFile()) return;
75
- if (!absPath.endsWith(".md")) return;
76
- result.push(absPath);
77
- } catch {}
78
- };
79
- await addMarkdownFile(memoryFile);
80
- await addMarkdownFile(altMemoryFile);
81
- try {
82
- const dirStat = await fs$1.lstat(memoryDir);
83
- if (!dirStat.isSymbolicLink() && dirStat.isDirectory()) await walkDir(memoryDir, result);
84
- } catch {}
85
- const normalizedExtraPaths = normalizeExtraMemoryPaths(workspaceDir, extraPaths);
86
- if (normalizedExtraPaths.length > 0) for (const inputPath of normalizedExtraPaths) try {
87
- const stat = await fs$1.lstat(inputPath);
88
- if (stat.isSymbolicLink()) continue;
89
- if (stat.isDirectory()) {
90
- await walkDir(inputPath, result);
91
- continue;
92
- }
93
- if (stat.isFile() && inputPath.endsWith(".md")) result.push(inputPath);
94
- } catch {}
95
- if (result.length <= 1) return result;
96
- const seen = /* @__PURE__ */ new Set();
97
- const deduped = [];
98
- for (const entry of result) {
99
- let key = entry;
100
- try {
101
- key = await fs$1.realpath(entry);
102
- } catch {}
103
- if (seen.has(key)) continue;
104
- seen.add(key);
105
- deduped.push(entry);
106
- }
107
- return deduped;
108
- }
109
- function hashText(value) {
110
- return crypto.createHash("sha256").update(value).digest("hex");
111
- }
112
- async function buildFileEntry(absPath, workspaceDir) {
113
- let stat;
114
- try {
115
- stat = await fs$1.stat(absPath);
116
- } catch (err) {
117
- if (isFileMissingError(err)) return null;
118
- throw err;
119
- }
120
- let content;
121
- try {
122
- content = await fs$1.readFile(absPath, "utf-8");
123
- } catch (err) {
124
- if (isFileMissingError(err)) return null;
125
- throw err;
126
- }
127
- const hash = hashText(content);
128
- return {
129
- path: path.relative(workspaceDir, absPath).replace(/\\/g, "/"),
130
- absPath,
131
- mtimeMs: stat.mtimeMs,
132
- size: stat.size,
133
- hash
134
- };
135
- }
136
- function chunkMarkdown(content, chunking) {
137
- const lines = content.split("\n");
138
- if (lines.length === 0) return [];
139
- const maxChars = Math.max(32, chunking.tokens * 4);
140
- const overlapChars = Math.max(0, chunking.overlap * 4);
141
- const chunks = [];
142
- let current = [];
143
- let currentChars = 0;
144
- const flush = () => {
145
- if (current.length === 0) return;
146
- const firstEntry = current[0];
147
- const lastEntry = current[current.length - 1];
148
- if (!firstEntry || !lastEntry) return;
149
- const text = current.map((entry) => entry.line).join("\n");
150
- const startLine = firstEntry.lineNo;
151
- const endLine = lastEntry.lineNo;
152
- chunks.push({
153
- startLine,
154
- endLine,
155
- text,
156
- hash: hashText(text)
157
- });
158
- };
159
- const carryOverlap = () => {
160
- if (overlapChars <= 0 || current.length === 0) {
161
- current = [];
162
- currentChars = 0;
163
- return;
164
- }
165
- let acc = 0;
166
- const kept = [];
167
- for (let i = current.length - 1; i >= 0; i -= 1) {
168
- const entry = current[i];
169
- if (!entry) continue;
170
- acc += entry.line.length + 1;
171
- kept.unshift(entry);
172
- if (acc >= overlapChars) break;
173
- }
174
- current = kept;
175
- currentChars = kept.reduce((sum, entry) => sum + entry.line.length + 1, 0);
176
- };
177
- for (let i = 0; i < lines.length; i += 1) {
178
- const line = lines[i] ?? "";
179
- const lineNo = i + 1;
180
- const segments = [];
181
- if (line.length === 0) segments.push("");
182
- else for (let start = 0; start < line.length; start += maxChars) segments.push(line.slice(start, start + maxChars));
183
- for (const segment of segments) {
184
- const lineSize = segment.length + 1;
185
- if (currentChars + lineSize > maxChars && current.length > 0) {
186
- flush();
187
- carryOverlap();
188
- }
189
- current.push({
190
- line: segment,
191
- lineNo
192
- });
193
- currentChars += lineSize;
194
- }
195
- }
196
- flush();
197
- return chunks;
198
- }
199
- /**
200
- * Remap chunk startLine/endLine from content-relative positions to original
201
- * source file positions using a lineMap. Each entry in lineMap gives the
202
- * 1-indexed source line for the corresponding 0-indexed content line.
203
- *
204
- * This is used for session JSONL files where buildSessionEntry() flattens
205
- * messages into a plain-text string before chunking. Without remapping the
206
- * stored line numbers would reference positions in the flattened text rather
207
- * than the original JSONL file.
208
- */
209
- function remapChunkLines(chunks, lineMap) {
210
- if (!lineMap || lineMap.length === 0) return;
211
- for (const chunk of chunks) {
212
- chunk.startLine = lineMap[chunk.startLine - 1] ?? chunk.startLine;
213
- chunk.endLine = lineMap[chunk.endLine - 1] ?? chunk.endLine;
214
- }
215
- }
216
- function parseEmbedding(raw) {
217
- try {
218
- const parsed = JSON.parse(raw);
219
- return Array.isArray(parsed) ? parsed : [];
220
- } catch {
221
- return [];
222
- }
223
- }
224
- function cosineSimilarity(a, b) {
225
- if (a.length === 0 || b.length === 0) return 0;
226
- const len = Math.min(a.length, b.length);
227
- let dot = 0;
228
- let normA = 0;
229
- let normB = 0;
230
- for (let i = 0; i < len; i += 1) {
231
- const av = a[i] ?? 0;
232
- const bv = b[i] ?? 0;
233
- dot += av * bv;
234
- normA += av * av;
235
- normB += bv * bv;
236
- }
237
- if (normA === 0 || normB === 0) return 0;
238
- return dot / (Math.sqrt(normA) * Math.sqrt(normB));
239
- }
240
- async function runWithConcurrency(tasks, limit) {
241
- const { results, firstError, hasError } = await runTasksWithConcurrency({
242
- tasks,
243
- limit,
244
- errorMode: "stop"
245
- });
246
- if (hasError) throw firstError;
247
- return results;
248
- }
249
-
250
- //#endregion
251
- //#region src/memory/session-files.ts
252
- const log = createSubsystemLogger("memory");
253
- async function listSessionFilesForAgent(agentId) {
254
- const dir = resolveSessionTranscriptsDirForAgent(agentId);
255
- try {
256
- return (await fs$1.readdir(dir, { withFileTypes: true })).filter((entry) => entry.isFile()).map((entry) => entry.name).filter((name) => name.endsWith(".jsonl")).map((name) => path.join(dir, name));
257
- } catch {
258
- return [];
259
- }
260
- }
261
- function sessionPathForFile(absPath) {
262
- return path.join("sessions", path.basename(absPath)).replace(/\\/g, "/");
263
- }
264
- function normalizeSessionText(value) {
265
- return value.replace(/\s*\n+\s*/g, " ").replace(/\s+/g, " ").trim();
266
- }
267
- function extractSessionText(content) {
268
- if (typeof content === "string") {
269
- const normalized = normalizeSessionText(content);
270
- return normalized ? normalized : null;
271
- }
272
- if (!Array.isArray(content)) return null;
273
- const parts = [];
274
- for (const block of content) {
275
- if (!block || typeof block !== "object") continue;
276
- const record = block;
277
- if (record.type !== "text" || typeof record.text !== "string") continue;
278
- const normalized = normalizeSessionText(record.text);
279
- if (normalized) parts.push(normalized);
280
- }
281
- if (parts.length === 0) return null;
282
- return parts.join(" ");
283
- }
284
- async function buildSessionEntry(absPath) {
285
- try {
286
- const stat = await fs$1.stat(absPath);
287
- const lines = (await fs$1.readFile(absPath, "utf-8")).split("\n");
288
- const collected = [];
289
- const lineMap = [];
290
- for (let jsonlIdx = 0; jsonlIdx < lines.length; jsonlIdx++) {
291
- const line = lines[jsonlIdx];
292
- if (!line.trim()) continue;
293
- let record;
294
- try {
295
- record = JSON.parse(line);
296
- } catch {
297
- continue;
298
- }
299
- if (!record || typeof record !== "object" || record.type !== "message") continue;
300
- const message = record.message;
301
- if (!message || typeof message.role !== "string") continue;
302
- if (message.role !== "user" && message.role !== "assistant") continue;
303
- const text = extractSessionText(message.content);
304
- if (!text) continue;
305
- const safe = redactSensitiveText(text, { mode: "tools" });
306
- const label = message.role === "user" ? "User" : "Assistant";
307
- collected.push(`${label}: ${safe}`);
308
- lineMap.push(jsonlIdx + 1);
309
- }
310
- const content = collected.join("\n");
311
- return {
312
- path: sessionPathForFile(absPath),
313
- absPath,
314
- mtimeMs: stat.mtimeMs,
315
- size: stat.size,
316
- hash: hashText(content + "\n" + lineMap.join(",")),
317
- content,
318
- lineMap
319
- };
320
- } catch (err) {
321
- log.debug(`Failed reading session file ${absPath}: ${String(err)}`);
322
- return null;
323
- }
324
- }
325
-
326
- //#endregion
327
- //#region src/infra/warning-filter.ts
328
- const warningFilterKey = Symbol.for("openclaw.warning-filter");
329
- function shouldIgnoreWarning(warning) {
330
- if (warning.code === "DEP0040" && warning.message?.includes("punycode")) return true;
331
- if (warning.code === "DEP0060" && warning.message?.includes("util._extend")) return true;
332
- if (warning.name === "ExperimentalWarning" && warning.message?.includes("SQLite is an experimental feature")) return true;
333
- return false;
334
- }
335
- function normalizeWarningArgs(args) {
336
- const warningArg = args[0];
337
- const secondArg = args[1];
338
- const thirdArg = args[2];
339
- let name;
340
- let code;
341
- let message;
342
- if (warningArg instanceof Error) {
343
- name = warningArg.name;
344
- message = warningArg.message;
345
- code = warningArg.code;
346
- } else if (typeof warningArg === "string") message = warningArg;
347
- if (secondArg && typeof secondArg === "object" && !Array.isArray(secondArg)) {
348
- const options = secondArg;
349
- if (typeof options.type === "string") name = options.type;
350
- if (typeof options.code === "string") code = options.code;
351
- } else {
352
- if (typeof secondArg === "string") name = secondArg;
353
- if (typeof thirdArg === "string") code = thirdArg;
354
- }
355
- return {
356
- name,
357
- code,
358
- message
359
- };
360
- }
361
- function installProcessWarningFilter() {
362
- const globalState = globalThis;
363
- if (globalState[warningFilterKey]?.installed) return;
364
- const originalEmitWarning = process.emitWarning.bind(process);
365
- const wrappedEmitWarning = ((...args) => {
366
- if (shouldIgnoreWarning(normalizeWarningArgs(args))) return;
367
- return Reflect.apply(originalEmitWarning, process, args);
368
- });
369
- process.emitWarning = wrappedEmitWarning;
370
- globalState[warningFilterKey] = { installed: true };
371
- }
372
-
373
- //#endregion
374
- //#region src/memory/sqlite.ts
375
- const require = createRequire(import.meta.url);
376
- function requireNodeSqlite() {
377
- installProcessWarningFilter();
378
- try {
379
- return require("node:sqlite");
380
- } catch (err) {
381
- const message = err instanceof Error ? err.message : String(err);
382
- throw new Error(`SQLite support is unavailable in this Node runtime (missing node:sqlite). ${message}`, { cause: err });
383
- }
384
- }
385
-
386
- //#endregion
387
- //#region src/memory/query-expansion.ts
388
- /**
389
- * Query expansion for FTS-only search mode.
390
- *
391
- * When no embedding provider is available, we fall back to FTS (full-text search).
392
- * FTS works best with specific keywords, but users often ask conversational queries
393
- * like "that thing we discussed yesterday" or "之前讨论的那个方案".
394
- *
395
- * This module extracts meaningful keywords from such queries to improve FTS results.
396
- */
397
- const STOP_WORDS_EN = new Set([
398
- "a",
399
- "an",
400
- "the",
401
- "this",
402
- "that",
403
- "these",
404
- "those",
405
- "i",
406
- "me",
407
- "my",
408
- "we",
409
- "our",
410
- "you",
411
- "your",
412
- "he",
413
- "she",
414
- "it",
415
- "they",
416
- "them",
417
- "is",
418
- "are",
419
- "was",
420
- "were",
421
- "be",
422
- "been",
423
- "being",
424
- "have",
425
- "has",
426
- "had",
427
- "do",
428
- "does",
429
- "did",
430
- "will",
431
- "would",
432
- "could",
433
- "should",
434
- "can",
435
- "may",
436
- "might",
437
- "in",
438
- "on",
439
- "at",
440
- "to",
441
- "for",
442
- "of",
443
- "with",
444
- "by",
445
- "from",
446
- "about",
447
- "into",
448
- "through",
449
- "during",
450
- "before",
451
- "after",
452
- "above",
453
- "below",
454
- "between",
455
- "under",
456
- "over",
457
- "and",
458
- "or",
459
- "but",
460
- "if",
461
- "then",
462
- "because",
463
- "as",
464
- "while",
465
- "when",
466
- "where",
467
- "what",
468
- "which",
469
- "who",
470
- "how",
471
- "why",
472
- "yesterday",
473
- "today",
474
- "tomorrow",
475
- "earlier",
476
- "later",
477
- "recently",
478
- "before",
479
- "ago",
480
- "just",
481
- "now",
482
- "thing",
483
- "things",
484
- "stuff",
485
- "something",
486
- "anything",
487
- "everything",
488
- "nothing",
489
- "please",
490
- "help",
491
- "find",
492
- "show",
493
- "get",
494
- "tell",
495
- "give"
496
- ]);
497
- const STOP_WORDS_ES = new Set([
498
- "el",
499
- "la",
500
- "los",
501
- "las",
502
- "un",
503
- "una",
504
- "unos",
505
- "unas",
506
- "este",
507
- "esta",
508
- "ese",
509
- "esa",
510
- "yo",
511
- "me",
512
- "mi",
513
- "nosotros",
514
- "nosotras",
515
- "tu",
516
- "tus",
517
- "usted",
518
- "ustedes",
519
- "ellos",
520
- "ellas",
521
- "de",
522
- "del",
523
- "a",
524
- "en",
525
- "con",
526
- "por",
527
- "para",
528
- "sobre",
529
- "entre",
530
- "y",
531
- "o",
532
- "pero",
533
- "si",
534
- "porque",
535
- "como",
536
- "es",
537
- "son",
538
- "fue",
539
- "fueron",
540
- "ser",
541
- "estar",
542
- "haber",
543
- "tener",
544
- "hacer",
545
- "ayer",
546
- "hoy",
547
- "mañana",
548
- "antes",
549
- "despues",
550
- "después",
551
- "ahora",
552
- "recientemente",
553
- "que",
554
- "qué",
555
- "cómo",
556
- "cuando",
557
- "cuándo",
558
- "donde",
559
- "dónde",
560
- "porqué",
561
- "favor",
562
- "ayuda"
563
- ]);
564
- const STOP_WORDS_PT = new Set([
565
- "o",
566
- "a",
567
- "os",
568
- "as",
569
- "um",
570
- "uma",
571
- "uns",
572
- "umas",
573
- "este",
574
- "esta",
575
- "esse",
576
- "essa",
577
- "eu",
578
- "me",
579
- "meu",
580
- "minha",
581
- "nos",
582
- "nós",
583
- "você",
584
- "vocês",
585
- "ele",
586
- "ela",
587
- "eles",
588
- "elas",
589
- "de",
590
- "do",
591
- "da",
592
- "em",
593
- "com",
594
- "por",
595
- "para",
596
- "sobre",
597
- "entre",
598
- "e",
599
- "ou",
600
- "mas",
601
- "se",
602
- "porque",
603
- "como",
604
- "é",
605
- "são",
606
- "foi",
607
- "foram",
608
- "ser",
609
- "estar",
610
- "ter",
611
- "fazer",
612
- "ontem",
613
- "hoje",
614
- "amanhã",
615
- "antes",
616
- "depois",
617
- "agora",
618
- "recentemente",
619
- "que",
620
- "quê",
621
- "quando",
622
- "onde",
623
- "porquê",
624
- "favor",
625
- "ajuda"
626
- ]);
627
- const STOP_WORDS_AR = new Set([
628
- "ال",
629
- "و",
630
- "أو",
631
- "لكن",
632
- "ثم",
633
- "بل",
634
- "أنا",
635
- "نحن",
636
- "هو",
637
- "هي",
638
- "هم",
639
- "هذا",
640
- "هذه",
641
- "ذلك",
642
- "تلك",
643
- "هنا",
644
- "هناك",
645
- "من",
646
- "إلى",
647
- "الى",
648
- "في",
649
- "على",
650
- "عن",
651
- "مع",
652
- "بين",
653
- "ل",
654
- "ب",
655
- "ك",
656
- "كان",
657
- "كانت",
658
- "يكون",
659
- "تكون",
660
- "صار",
661
- "أصبح",
662
- "يمكن",
663
- "ممكن",
664
- "بالأمس",
665
- "امس",
666
- "اليوم",
667
- "غدا",
668
- "الآن",
669
- "قبل",
670
- "بعد",
671
- "مؤخرا",
672
- "لماذا",
673
- "كيف",
674
- "ماذا",
675
- "متى",
676
- "أين",
677
- "هل",
678
- "من فضلك",
679
- "فضلا",
680
- "ساعد"
681
- ]);
682
- const STOP_WORDS_KO = new Set([
683
- "은",
684
- "는",
685
- "이",
686
- "가",
687
- "을",
688
- "를",
689
- "의",
690
- "에",
691
- "에서",
692
- "로",
693
- "으로",
694
- "와",
695
- "과",
696
- "도",
697
- "만",
698
- "까지",
699
- "부터",
700
- "한테",
701
- "에게",
702
- "께",
703
- "처럼",
704
- "같이",
705
- "보다",
706
- "마다",
707
- "밖에",
708
- "대로",
709
- "나",
710
- "나는",
711
- "내가",
712
- "나를",
713
- "너",
714
- "우리",
715
- "저",
716
- "저희",
717
- "그",
718
- "그녀",
719
- "그들",
720
- "이것",
721
- "저것",
722
- "그것",
723
- "여기",
724
- "저기",
725
- "거기",
726
- "있다",
727
- "없다",
728
- "하다",
729
- "되다",
730
- "이다",
731
- "아니다",
732
- "보다",
733
- "주다",
734
- "오다",
735
- "가다",
736
- "것",
737
- "거",
738
- "등",
739
- "수",
740
- "때",
741
- "곳",
742
- "중",
743
- "분",
744
- "잘",
745
- "더",
746
- "또",
747
- "매우",
748
- "정말",
749
- "아주",
750
- "많이",
751
- "너무",
752
- "좀",
753
- "그리고",
754
- "하지만",
755
- "그래서",
756
- "그런데",
757
- "그러나",
758
- "또는",
759
- "그러면",
760
- "왜",
761
- "어떻게",
762
- "뭐",
763
- "언제",
764
- "어디",
765
- "누구",
766
- "무엇",
767
- "어떤",
768
- "어제",
769
- "오늘",
770
- "내일",
771
- "최근",
772
- "지금",
773
- "아까",
774
- "나중",
775
- "전에",
776
- "제발",
777
- "부탁"
778
- ]);
779
- const KO_TRAILING_PARTICLES = [
780
- "에서",
781
- "으로",
782
- "에게",
783
- "한테",
784
- "처럼",
785
- "같이",
786
- "보다",
787
- "까지",
788
- "부터",
789
- "마다",
790
- "밖에",
791
- "대로",
792
- "은",
793
- "는",
794
- "이",
795
- "가",
796
- "을",
797
- "를",
798
- "의",
799
- "에",
800
- "로",
801
- "와",
802
- "과",
803
- "도",
804
- "만"
805
- ].toSorted((a, b) => b.length - a.length);
806
- function stripKoreanTrailingParticle(token) {
807
- for (const particle of KO_TRAILING_PARTICLES) if (token.length > particle.length && token.endsWith(particle)) return token.slice(0, -particle.length);
808
- return null;
809
- }
810
- function isUsefulKoreanStem(stem) {
811
- if (/[\uac00-\ud7af]/.test(stem)) return stem.length >= 2;
812
- return /^[a-z0-9_]+$/i.test(stem);
813
- }
814
- const STOP_WORDS_JA = new Set([
815
- "これ",
816
- "それ",
817
- "あれ",
818
- "この",
819
- "その",
820
- "あの",
821
- "ここ",
822
- "そこ",
823
- "あそこ",
824
- "する",
825
- "した",
826
- "して",
827
- "です",
828
- "ます",
829
- "いる",
830
- "ある",
831
- "なる",
832
- "できる",
833
- "の",
834
- "こと",
835
- "もの",
836
- "ため",
837
- "そして",
838
- "しかし",
839
- "また",
840
- "でも",
841
- "から",
842
- "まで",
843
- "より",
844
- "だけ",
845
- "なぜ",
846
- "どう",
847
- "何",
848
- "いつ",
849
- "どこ",
850
- "誰",
851
- "どれ",
852
- "昨日",
853
- "今日",
854
- "明日",
855
- "最近",
856
- "今",
857
- "さっき",
858
- "前",
859
- "後"
860
- ]);
861
- const STOP_WORDS_ZH = new Set([
862
- "我",
863
- "我们",
864
- "你",
865
- "你们",
866
- "他",
867
- "她",
868
- "它",
869
- "他们",
870
- "这",
871
- "那",
872
- "这个",
873
- "那个",
874
- "这些",
875
- "那些",
876
- "的",
877
- "了",
878
- "着",
879
- "过",
880
- "得",
881
- "地",
882
- "吗",
883
- "呢",
884
- "吧",
885
- "啊",
886
- "呀",
887
- "嘛",
888
- "啦",
889
- "是",
890
- "有",
891
- "在",
892
- "被",
893
- "把",
894
- "给",
895
- "让",
896
- "用",
897
- "到",
898
- "去",
899
- "来",
900
- "做",
901
- "说",
902
- "看",
903
- "找",
904
- "想",
905
- "要",
906
- "能",
907
- "会",
908
- "可以",
909
- "和",
910
- "与",
911
- "或",
912
- "但",
913
- "但是",
914
- "因为",
915
- "所以",
916
- "如果",
917
- "虽然",
918
- "而",
919
- "也",
920
- "都",
921
- "就",
922
- "还",
923
- "又",
924
- "再",
925
- "才",
926
- "只",
927
- "之前",
928
- "以前",
929
- "之后",
930
- "以后",
931
- "刚才",
932
- "现在",
933
- "昨天",
934
- "今天",
935
- "明天",
936
- "最近",
937
- "东西",
938
- "事情",
939
- "事",
940
- "什么",
941
- "哪个",
942
- "哪些",
943
- "怎么",
944
- "为什么",
945
- "多少",
946
- "请",
947
- "帮",
948
- "帮忙",
949
- "告诉"
950
- ]);
951
- /**
952
- * Check if a token looks like a meaningful keyword.
953
- * Returns false for short tokens, numbers-only, etc.
954
- */
955
- function isValidKeyword(token) {
956
- if (!token || token.length === 0) return false;
957
- if (/^[a-zA-Z]+$/.test(token) && token.length < 3) return false;
958
- if (/^\d+$/.test(token)) return false;
959
- if (/^[\p{P}\p{S}]+$/u.test(token)) return false;
960
- return true;
961
- }
962
- /**
963
- * Simple tokenizer that handles English, Chinese, Korean, and Japanese text.
964
- * For Chinese, we do character-based splitting since we don't have a proper segmenter.
965
- * For English, we split on whitespace and punctuation.
966
- */
967
- function tokenize(text) {
968
- const tokens = [];
969
- const segments = text.toLowerCase().trim().split(/[\s\p{P}]+/u).filter(Boolean);
970
- for (const segment of segments) if (/[\u3040-\u30ff]/.test(segment)) {
971
- const jpParts = segment.match(/[a-z0-9_]+|[\u30a0-\u30ffー]+|[\u4e00-\u9fff]+|[\u3040-\u309f]{2,}/g) ?? [];
972
- for (const part of jpParts) if (/^[\u4e00-\u9fff]+$/.test(part)) {
973
- tokens.push(part);
974
- for (let i = 0; i < part.length - 1; i++) tokens.push(part[i] + part[i + 1]);
975
- } else tokens.push(part);
976
- } else if (/[\u4e00-\u9fff]/.test(segment)) {
977
- const chars = Array.from(segment).filter((c) => /[\u4e00-\u9fff]/.test(c));
978
- tokens.push(...chars);
979
- for (let i = 0; i < chars.length - 1; i++) tokens.push(chars[i] + chars[i + 1]);
980
- } else if (/[\uac00-\ud7af\u3131-\u3163]/.test(segment)) {
981
- const stem = stripKoreanTrailingParticle(segment);
982
- const stemIsStopWord = stem !== null && STOP_WORDS_KO.has(stem);
983
- if (!STOP_WORDS_KO.has(segment) && !stemIsStopWord) tokens.push(segment);
984
- if (stem && !STOP_WORDS_KO.has(stem) && isUsefulKoreanStem(stem)) tokens.push(stem);
985
- } else tokens.push(segment);
986
- return tokens;
987
- }
988
- /**
989
- * Extract keywords from a conversational query for FTS search.
990
- *
991
- * Examples:
992
- * - "that thing we discussed about the API" → ["discussed", "API"]
993
- * - "之前讨论的那个方案" → ["讨论", "方案"]
994
- * - "what was the solution for the bug" → ["solution", "bug"]
995
- */
996
- function extractKeywords(query) {
997
- const tokens = tokenize(query);
998
- const keywords = [];
999
- const seen = /* @__PURE__ */ new Set();
1000
- for (const token of tokens) {
1001
- if (STOP_WORDS_EN.has(token) || STOP_WORDS_ES.has(token) || STOP_WORDS_PT.has(token) || STOP_WORDS_AR.has(token) || STOP_WORDS_ZH.has(token) || STOP_WORDS_KO.has(token) || STOP_WORDS_JA.has(token)) continue;
1002
- if (!isValidKeyword(token)) continue;
1003
- if (seen.has(token)) continue;
1004
- seen.add(token);
1005
- keywords.push(token);
1006
- }
1007
- return keywords;
1008
- }
1009
-
1010
- //#endregion
1011
- export { isFileMissingError as _, sessionPathForFile as a, cosineSimilarity as c, isMemoryPath as d, listMemoryFiles as f, runWithConcurrency as g, remapChunkLines as h, listSessionFilesForAgent as i, ensureDir as l, parseEmbedding as m, requireNodeSqlite as n, buildFileEntry as o, normalizeExtraMemoryPaths as p, buildSessionEntry as r, chunkMarkdown as s, extractKeywords as t, hashText as u, statRegularFile as v };