squidclaw 3.0.24 → 3.0.26

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 (329) hide show
  1. package/dist/{accounts-BH9Qo1sQ.js → accounts-BK8I0Svb.js} +7 -7
  2. package/dist/{accounts-Cuwg9Tan.js → accounts-DeqNOvBo.js} +1 -1
  3. package/dist/{accounts-B1RxFghM.js → accounts-KzgPbLHP.js} +1 -1
  4. package/dist/{acp-cli-Ch55Vzud.js → acp-cli-BwG98FYT.js} +8 -8
  5. package/dist/{agent-scope-nEVgVklg.js → agent-scope-Cq4vDGrK.js} +17 -17
  6. package/dist/{agents-B-ig6ydU.js → agents-DXKtU4Il.js} +14 -14
  7. package/dist/{agents.config-w_Z6Fb4-.js → agents.config-BM-2SLCh.js} +2 -2
  8. package/dist/{api-key-rotation-JPmjv-c0.js → api-key-rotation-6i41mEc9.js} +1 -1
  9. package/dist/{audio-preflight-lT9iRnYi.js → audio-preflight-Bzo_zN4j.js} +4 -4
  10. package/dist/{audio-preflight-CZ--cSZh.js → audio-preflight-C-JCwUKe.js} +34 -34
  11. package/dist/{audio-transcription-runner-YiR1ym3a.js → audio-transcription-runner-Cp_lkLCv.js} +1 -1
  12. package/dist/{audio-transcription-runner-D-uxpkbd.js → audio-transcription-runner-DvQksGUE.js} +23 -23
  13. package/dist/{audit-JLT1FqTt.js → audit-DLTgNDFw.js} +29 -29
  14. package/dist/{auth-BlP9BwaD.js → auth-CuObxnC4.js} +1 -1
  15. package/dist/{auth-choice-Czu7271G.js → auth-choice-BVQQneHM.js} +13 -13
  16. package/dist/{auth-choice-ORZHjbsv.js → auth-choice-CXepQc7c.js} +11 -11
  17. package/dist/{auth-choice.apply-helpers-CdoXMtxm.js → auth-choice.apply-helpers-p1y_DmDT.js} +1 -1
  18. package/dist/{auth-profiles-9T4j6jMy.js → auth-profiles-CX4YYu7Z.js} +16 -16
  19. package/dist/{auth-token-BFc70pes.js → auth-token-Dlk7MMsC.js} +1 -1
  20. package/dist/{banner-CwNmI5G-.js → banner-DMfuBV69.js} +2 -2
  21. package/dist/{bonjour-discovery-eqJcK09r.js → bonjour-discovery-BHz2I6_W.js} +1 -1
  22. package/dist/{browser-cli-DCDPC5sg.js → browser-cli-Dvwk4zAD.js} +12 -12
  23. package/dist/build-info.json +3 -3
  24. package/dist/bundled/session-memory/handler.js +127 -12
  25. package/dist/{call-D7jOWSFr.js → call-BlWEBz99.js} +10 -10
  26. package/dist/{channel-account-context-DJ3rHgVO.js → channel-account-context-CQ6rCiGI.js} +5 -5
  27. package/dist/{channel-activity-wuB3-cfR.js → channel-activity-BZKeZQH-.js} +1 -1
  28. package/dist/{channel-options-BS7BSU_5.js → channel-options-CQ-gER0J.js} +3 -3
  29. package/dist/{channel-selection-CFWQq1nS.js → channel-selection-BqwS1Rlq.js} +1 -1
  30. package/dist/{channel-web-C1qYz-HK.js → channel-web-LLzBxZrT.js} +17 -17
  31. package/dist/{channels-cli-CVNqp5q7.js → channels-cli-D4xUEYYC.js} +93 -93
  32. package/dist/{channels-status-issues-Erzzhl2e.js → channels-status-issues-Dz1_R7Ah.js} +1 -1
  33. package/dist/{chrome-CuBHInKC.js → chrome-CZQnp4VH.js} +8 -8
  34. package/dist/{chrome-DiktJpMU.js → chrome-CoRiYsNu.js} +4 -4
  35. package/dist/{clawbot-cli-C3bt-FEP.js → clawbot-cli-2Zlim_pH.js} +11 -11
  36. package/dist/cli/daemon-cli.js +1 -1
  37. package/dist/{cli-Jyqv2jm8.js → cli-CAID9zkL.js} +73 -73
  38. package/dist/{client-COy24r9W.js → client-G9E5HGM2.js} +2 -2
  39. package/dist/{command-registry-DCojicSG.js → command-registry-AHS8_9da.js} +11 -11
  40. package/dist/{command-secret-targets-CZjP-Bm5.js → command-secret-targets-DAu5nw-j.js} +4 -4
  41. package/dist/{commands-DDHiW-As.js → commands-CnX9I_l4.js} +1 -1
  42. package/dist/{commands-registry--ITOJ-cM.js → commands-registry-_r_JONI4.js} +3 -3
  43. package/dist/{completion-cli-DCTv7Ejv.js → completion-cli-BR1r9_h4.js} +13 -13
  44. package/dist/{config-cli-CSPSSP_R.js → config-cli-D0A8Awoo.js} +7 -7
  45. package/dist/{config-guard-CFauJm79.js → config-guard-BHy2f0hU.js} +3 -3
  46. package/dist/{config-validation-Bt3LfFJ0.js → config-validation-BkvDORAk.js} +3 -3
  47. package/dist/{configure-DAol2gT6.js → configure-XmOqwwy9.js} +17 -17
  48. package/dist/{control-ui-assets-d6VtDSeo.js → control-ui-assets-BYEy341x.js} +1 -1
  49. package/dist/{cron-cli-yS1ww1k2.js → cron-cli-QwZcnjJc.js} +11 -11
  50. package/dist/{daemon-cli-B-yZvTqZ.js → daemon-cli-kJfDhzr8.js} +15 -15
  51. package/dist/{daemon-install-CbPLNiIP.js → daemon-install-Chxlu9Kv.js} +4 -4
  52. package/dist/{daemon-install-helpers-CZDVO_MU.js → daemon-install-helpers-CJtiW2RE.js} +11 -11
  53. package/dist/{deliver-6zfT7daI.js → deliver-B4WWPQvt.js} +1 -1
  54. package/dist/{deliver-D-IQEJ52.js → deliver-CL2RW5UB.js} +7 -7
  55. package/dist/deliver-runtime-C08pF1_3.js +61 -0
  56. package/dist/{deliver-runtime-MBexxUuG.js → deliver-runtime-CeE1X9si.js} +3 -3
  57. package/dist/deps-send-discord.runtime-r80y9aXF.js +36 -0
  58. package/dist/deps-send-imessage.runtime-BmocBgPM.js +35 -0
  59. package/dist/deps-send-signal.runtime-ByJt6qz-.js +34 -0
  60. package/dist/deps-send-slack.runtime-C3UUEG9J.js +32 -0
  61. package/dist/{deps-send-telegram.runtime-Irv0ky5l.js → deps-send-telegram.runtime-BHaZAs2h.js} +16 -16
  62. package/dist/{deps-send-whatsapp.runtime-CrxkfP31.js → deps-send-whatsapp.runtime-COv_qoD2.js} +7 -7
  63. package/dist/deps-send-whatsapp.runtime-__ogpmJj.js +119 -0
  64. package/dist/{devices-cli-CPgutgUT.js → devices-cli-DlQGTogF.js} +8 -8
  65. package/dist/{diagnostic-B4w80e4D.js → diagnostic-CLEtu0MC.js} +1 -1
  66. package/dist/{diagnostics-m7hHHbuE.js → diagnostics--O6mo6KH.js} +5 -5
  67. package/dist/{directory-cli-DqObADBL.js → directory-cli-K9qIwxYa.js} +7 -7
  68. package/dist/{dns-cli-CKbwsWBv.js → dns-cli-qtX-WNMF.js} +5 -5
  69. package/dist/{dock-W3cGg46W.js → dock-DJJAj46v.js} +4 -4
  70. package/dist/{docs-cli-BpZtes_j.js → docs-cli--gGxz79Z.js} +4 -4
  71. package/dist/{doctor-completion--7PR_Vqz.js → doctor-completion-CZoEdMS-.js} +2 -2
  72. package/dist/{doctor-config-flow-BDF7TR6O.js → doctor-config-flow-C-h3yV4z.js} +15 -15
  73. package/dist/{enable--Q7yLTZm.js → enable-C8FNY18p.js} +1 -1
  74. package/dist/entry.js +2 -2
  75. package/dist/{exec-approvals-allowlist-B9bcJkGP.js → exec-approvals-allowlist-CtSREgYh.js} +1 -1
  76. package/dist/{exec-approvals-cli-homtziYt.js → exec-approvals-cli-BmM4RpVn.js} +16 -16
  77. package/dist/{exec-safe-bin-runtime-policy-DECo77U6.js → exec-safe-bin-runtime-policy-CfQeDABF.js} +2 -2
  78. package/dist/extensionAPI.js +6 -6
  79. package/dist/{fetch-lq0SDLLE.js → fetch-CtoC2wgs.js} +3 -3
  80. package/dist/{fetch-guard-CbtWqa1E.js → fetch-guard-Dvzi3MjK.js} +1 -1
  81. package/dist/{plugin-sdk/fs-safe-Dqmpk-Fr.js → fs-safe-DPYj7h8A.js} +6 -6
  82. package/dist/{gateway-cli-B3oqskb4.js → gateway-cli-BJHBChfI.js} +153 -153
  83. package/dist/{gateway-rpc-BBBN9ZJk.js → gateway-rpc-D0AmaBzR.js} +1 -1
  84. package/dist/{health-CjXrJkCb.js → health-XFKFZ7ZJ.js} +11 -11
  85. package/dist/{hooks-cli--aKmd8c9.js → hooks-cli-CXsZK8H9.js} +81 -81
  86. package/dist/{hooks-status-BlgSVDvN.js → hooks-status-DMFBAUq8.js} +1 -1
  87. package/dist/{image-VgwN31FZ.js → image-DKkuLtZ4.js} +1 -1
  88. package/dist/{image-BcYt63Jx.js → image-DSWTfuxv.js} +5 -5
  89. package/dist/{image-ops-LFsSCTyI.js → image-ops-B2uuLIGD.js} +10 -10
  90. package/dist/{image-runtime-CwMuTYvd.js → image-runtime-BMavqm9n.js} +3 -3
  91. package/dist/image-runtime-cza2NTiZ.js +55 -0
  92. package/dist/{inspect-CzsXBsew.js → inspect-4c1uL0x5.js} +4 -4
  93. package/dist/{install-safe-path-DqI19VEv.js → install-safe-path-3muwy3fu.js} +25 -25
  94. package/dist/{installs-P-pYAJm1.js → installs-BiQDtPF0.js} +9 -9
  95. package/dist/{ipv4-B95173MB.js → ipv4-sHllwvAI.js} +1 -1
  96. package/dist/{ir-C7He5vmn.js → ir-BukzlgSp.js} +8 -8
  97. package/dist/{issue-format-CbTfB8Hy.js → issue-format-DCcINW-9.js} +1 -1
  98. package/dist/{json-files-rR19q30D.js → json-files-CuJjdF_0.js} +8 -8
  99. package/dist/{lifecycle-core-ChKClWdw.js → lifecycle-core-CqFEhwHn.js} +5 -5
  100. package/dist/{login-qr-CX0rs3A6.js → login-qr-B8P_EAd-.js} +6 -6
  101. package/dist/{login-CjzRATwO.js → login-zoeewfBu.js} +3 -3
  102. package/dist/{logs-cli-DvHsw1WZ.js → logs-cli-D30BUN6y.js} +9 -9
  103. package/dist/{manager-BVfTfggO.js → manager-5OzUkYLf.js} +14 -14
  104. package/dist/{manager-runtime-BXJJSlzC.js → manager-runtime-BxXpVt3x.js} +9 -9
  105. package/dist/{manifest-registry-1ACGW3OR.js → manifest-registry-7kwtbCH-.js} +1 -1
  106. package/dist/{memory-cli-u8eyO3Ec.js → memory-cli-Dj8tyFtt.js} +12 -12
  107. package/dist/{model-D7hZpWTB.js → model-B8p-EsdJ.js} +2 -2
  108. package/dist/{model-catalog-Drh9Rois.js → model-catalog-BWuvEv1x.js} +3 -3
  109. package/dist/{model-picker-DK_vvKCV.js → model-picker-CLhaaagi.js} +4 -4
  110. package/dist/{models-CFXLX9IF.js → models-5VXwJBU2.js} +17 -17
  111. package/dist/{models-cli-PHQyKESa.js → models-cli-Br56IHfy.js} +78 -78
  112. package/dist/{models-config-DAastTau.js → models-config-poV-4Xlx.js} +6 -6
  113. package/dist/{net-CIh5ellr.js → net-CCnbGop3.js} +2 -2
  114. package/dist/{node-cli-o9qcU9GJ.js → node-cli-C8hvYquX.js} +33 -33
  115. package/dist/{node-command-policy-BeTSnoyk.js → node-command-policy-B_D5ucTj.js} +1 -1
  116. package/dist/{node-service-OVe0_CIs.js → node-service-Z0JprJda.js} +1 -1
  117. package/dist/{nodes-cli-kGx_Qa3c.js → nodes-cli-IIc8fTKT.js} +16 -16
  118. package/dist/{nodes-screen-BrMJzhot.js → nodes-screen-DFFmbaXE.js} +7 -7
  119. package/dist/{npm-pack-install-Dn3FiWXB.js → npm-pack-install-B887us7R.js} +18 -18
  120. package/dist/{npm-resolution-ky_uAlXE.js → npm-resolution-CKtyq4FH.js} +4 -4
  121. package/dist/{onboard-channels-oJCC_sJX.js → onboard-channels-_kVo3Apf.js} +21 -21
  122. package/dist/{onboard-custom-CRpsaM3g.js → onboard-custom-CZtjqrY7.js} +4 -4
  123. package/dist/{onboard-helpers-DwEZeaoe.js → onboard-helpers-BP429__H.js} +10 -10
  124. package/dist/{onboard-hooks-DyxckB2C.js → onboard-hooks-CTbjgLDl.js} +4 -4
  125. package/dist/{onboard-D1Qy64JK.js → onboard-lFwpCpC3.js} +6 -6
  126. package/dist/{onboard-remote-ZgpWNq9Z.js → onboard-remote-BlZB0AE9.js} +4 -4
  127. package/dist/{onboard-skills-DEijVfCg.js → onboard-skills-BT2YOXeP.js} +4 -4
  128. package/dist/{onboarding-Mxqy4O1E.js → onboarding-EEd_g8Zg.js} +14 -14
  129. package/dist/{onboarding.finalize-DiOMx6A5.js → onboarding.finalize-Cs1ukjFN.js} +90 -90
  130. package/dist/{onboarding.gateway-config-9wkBCzzO.js → onboarding.gateway-config-C6N8r5Is.js} +18 -18
  131. package/dist/{onboarding.secret-input-DRnoQSlI.js → onboarding.secret-input-BTK1IG-J.js} +1 -1
  132. package/dist/{openai-model-default-DqE4bNtd.js → openai-model-default-COzeuAI4.js} +2 -2
  133. package/dist/{outbound-CwzUo-rx.js → outbound-B7m9Vcd2.js} +3 -3
  134. package/dist/{outbound-attachment-Bedqixj2.js → outbound-attachment-fdEhzyl9.js} +2 -2
  135. package/dist/{pairing-cli-CsYP0at7.js → pairing-cli-NhoRKes6.js} +8 -8
  136. package/dist/{pairing-labels-CX4CtqRa.js → pairing-labels-CnTvFrUT.js} +1 -1
  137. package/dist/{pairing-store-BC4mnG9S.js → pairing-store-D0eOXyby.js} +3 -3
  138. package/dist/{plugin-sdk/path-alias-guards-gBhrAn14.js → path-alias-guards-vfYYQFIg.js} +1 -1
  139. package/dist/{path-safety-D7CjFQvf.js → path-safety-C95DzArw.js} +1 -1
  140. package/dist/{paths-D6mnO6Ni.js → paths-DfuVHiHu.js} +9 -9
  141. package/dist/{pi-embedded-BN8fghaF.js → pi-embedded-BR5y0dLa.js} +24 -24
  142. package/dist/{pi-embedded-helpers-A9VYPVCH.js → pi-embedded-helpers-CEHpGDRs.js} +3 -3
  143. package/dist/{pi-embedded-helpers-DtCOZSv-.js → pi-embedded-helpers-qCAK_a65.js} +6 -6
  144. package/dist/{pi-model-discovery-Cr1q2cJt.js → pi-model-discovery-CKUePiDc.js} +1 -1
  145. package/dist/{pi-model-discovery-runtime-BHmdAKBK.js → pi-model-discovery-runtime-CNLKih0w.js} +5 -5
  146. package/dist/{pi-tools.before-tool-call.runtime-duKHqrMc.js → pi-tools.before-tool-call.runtime-Bba7rXQq.js} +5 -5
  147. package/dist/{pi-tools.policy-D3RA94WF.js → pi-tools.policy-BwWnFLLV.js} +5 -5
  148. package/dist/{plugin-auto-enable-a3TK3OPT.js → plugin-auto-enable-DJkHW_LG.js} +3 -3
  149. package/dist/{plugin-registry-CFqqDqQV.js → plugin-registry-D3PnPE1D.js} +3 -3
  150. package/dist/plugin-sdk/discord.js +6 -6
  151. package/dist/plugin-sdk/index.js +50 -50
  152. package/dist/plugin-sdk/mattermost.js +3 -3
  153. package/dist/plugin-sdk/signal.js +2 -2
  154. package/dist/{plugins-Bc7YM9X-.js → plugins-BDTkSIi7.js} +2 -2
  155. package/dist/{plugins-cli-vQi8tFye.js → plugins-cli-BA_2daJe.js} +83 -83
  156. package/dist/{ports-DMeUt80n.js → ports-0jLyYbvQ.js} +2 -2
  157. package/dist/{ports-BzfeaNjw.js → ports-Be82TlEg.js} +1 -1
  158. package/dist/{program-Nott_VTb.js → program-D_xdLzmM.js} +81 -81
  159. package/dist/{prompt-select-styled-7mnlZgrQ.js → prompt-select-styled-BsheNEnh.js} +40 -40
  160. package/dist/{provider-auth-helpers-_77rN3Zc.js → provider-auth-helpers-B5kD4Lt6.js} +5 -5
  161. package/dist/{proxy-env-BiKHVg2h.js → proxy-env-CQTuxZoS.js} +1 -1
  162. package/dist/{push-apns-Ce1zzNYB.js → push-apns-BbenjEX4.js} +5 -5
  163. package/dist/{pw-ai-CM87tQwG.js → pw-ai-Du22SYoO.js} +1 -1
  164. package/dist/{pw-ai-CAhTwexx.js → pw-ai-wo5t_KO_.js} +18 -18
  165. package/dist/{plugin-sdk/qmd-manager-6bozlfFg.js → qmd-manager-BkSWV1Q1.js} +17 -11
  166. package/dist/{qr-cli-DzjBpGix.js → qr-cli-DSMYIp-D.js} +2 -2
  167. package/dist/{query-expansion-C0HUJbRn.js → query-expansion-DI9INxTg.js} +12 -12
  168. package/dist/{redact-snapshot-C0McNGqh.js → redact-snapshot-B2YFI3cO.js} +1 -1
  169. package/dist/{register.agent-DtjNdvUh.js → register.agent-Dk_5V5oA.js} +94 -94
  170. package/dist/register.configure-C8OFfGln.js +165 -0
  171. package/dist/{register.maintenance-DERKsSgi.js → register.maintenance-CluQOq8b.js} +95 -95
  172. package/dist/{register.message-DkYxt6gZ.js → register.message-BCTXT5yK.js} +74 -74
  173. package/dist/{register.onboard-BtfW83M0.js → register.onboard-C64oXnvq.js} +18 -18
  174. package/dist/{register.setup-Ba9gMkRk.js → register.setup-Dl3nk2Ui.js} +21 -21
  175. package/dist/{register.status-health-sessions-BILdpWJV.js → register.status-health-sessions-BHtbPeCO.js} +88 -88
  176. package/dist/{register.subclis-Dfm_Zu31.js → register.subclis-CDMFyaKR.js} +31 -31
  177. package/dist/{rpc-mau2U4RG.js → rpc-DA9IhLVG.js} +1 -1
  178. package/dist/{run-main-BF7ybLIy.js → run-main-BcA22Ipv.js} +93 -93
  179. package/dist/{runtime-Bcmv4Epp.js → runtime-BnbzNRr6.js} +3 -3
  180. package/dist/{runtime-config-collectors-Bsjz4isf.js → runtime-config-collectors-CXJdhHRo.js} +1 -1
  181. package/dist/{runtime-whatsapp-login.runtime-COUEKxmy.js → runtime-whatsapp-login.runtime-DRoK8G8H.js} +7 -7
  182. package/dist/{runtime-whatsapp-outbound.runtime-BaWH6-ns.js → runtime-whatsapp-outbound.runtime-C9OiwkWh.js} +15 -15
  183. package/dist/{sandbox-ixDhkfHu.js → sandbox-C3TbYIHd.js} +18 -18
  184. package/dist/{sandbox-cli-DOxm7fjR.js → sandbox-cli-BwK2slfh.js} +25 -25
  185. package/dist/{secrets-cli-DvXznMUb.js → secrets-cli-Beu2lcrf.js} +11 -11
  186. package/dist/{security-cli-3WOXvJR-.js → security-cli-CcpKH_lC.js} +42 -42
  187. package/dist/{send-BuBTLRMz.js → send-CLI3CiQv.js} +6 -6
  188. package/dist/{send-Do2preUU.js → send-DEs83M9V.js} +11 -11
  189. package/dist/{send-BPgrWmUX.js → send-EVcbFVqn.js} +5 -5
  190. package/dist/{send-BVyLW1cn.js → send-RDqyJwZx.js} +8 -8
  191. package/dist/{send-BpkluEZ5.js → send-z-sMjqvX.js} +4 -4
  192. package/dist/{server-DMAPnkgM.js → server-Bm-IxvZZ.js} +20 -20
  193. package/dist/{server-context-Dd8UynDU.js → server-context-Dw_4lGoI.js} +12 -12
  194. package/dist/{server-lifecycle-BEZ2jsQ6.js → server-lifecycle-DYgHYif9.js} +2 -2
  195. package/dist/{server-middleware-B_LyQkOL.js → server-middleware-BVAEuQs7.js} +1 -1
  196. package/dist/{server-node-events-dr5CaM3M.js → server-node-events-Q0cT2ifj.js} +74 -74
  197. package/dist/{service-B5T42CWZ.js → service-DSqxS6_D.js} +15 -15
  198. package/dist/{session-eXSdl5mb.js → session-D0jodcgT.js} +1 -1
  199. package/dist/{session-utils-D12gSo5W.js → session-utils-XY6JwRhT.js} +6 -6
  200. package/dist/{sessions-DgnXAQCc.js → sessions-BWptzMw0.js} +15 -15
  201. package/dist/{sessions-C16G7L5c.js → sessions-CMqv9JEu.js} +4 -4
  202. package/dist/{shared-BYny1RCF.js → shared-BbVxcRzb.js} +3 -3
  203. package/dist/{shared-By6_qr_R.js → shared-D5DTxBPH.js} +1 -1
  204. package/dist/{skill-commands-BcigmiOW.js → skill-commands-fU-Mejn9.js} +5 -5
  205. package/dist/{skill-scanner--QKHR8U0.js → skill-scanner-CvS725eQ.js} +6 -6
  206. package/dist/{skills-EwyaIyKC.js → skills-C85azDXm.js} +3 -3
  207. package/dist/{skills-cli-CqEjN0Yj.js → skills-cli-ZXx6BNar.js} +5 -5
  208. package/dist/{skills-install-CXVKvhIE.js → skills-install-KD6dzNoZ.js} +6 -6
  209. package/dist/{skills-status-Bv8Xt7Lc.js → skills-status-DkO7rxE8.js} +1 -1
  210. package/dist/{slash-commands.runtime-Bi99B_EP.js → slash-commands.runtime-CPlXJtuM.js} +11 -11
  211. package/dist/slash-dispatch.runtime-BOMEVFk0.js +114 -0
  212. package/dist/{slash-dispatch.runtime-sXaUYn4v.js → slash-dispatch.runtime-BcecLKcJ.js} +6 -6
  213. package/dist/{slash-skill-commands.runtime-DOXmvOtU.js → slash-skill-commands.runtime-Cnfq_5LN.js} +15 -15
  214. package/dist/{squidclaw-root-JXyRbQLJ.js → squidclaw-root-BQfLymzj.js} +8 -8
  215. package/dist/{status-Dnl-Um1D.js → status-cU9cJReo.js} +27 -27
  216. package/dist/{status.update-BGIm6we4.js → status.update-CiLU9RPF.js} +2 -2
  217. package/dist/{store-BTkIx401.js → store-BEIcnlgx.js} +5 -5
  218. package/dist/{subagent-registry-CQA6P2FO.js → subagent-registry-CIgFD2oi.js} +149 -149
  219. package/dist/{subagent-registry-runtime-232sNNT6.js → subagent-registry-runtime-Cq9I6PwW.js} +6 -6
  220. package/dist/subagent-registry-runtime-DGTjU9Lb.js +114 -0
  221. package/dist/{system-cli-CJAQxYHv.js → system-cli-i1FWZDjn.js} +9 -9
  222. package/dist/{system-run-command-BaSqmSwR.js → system-run-command-COqCNIBg.js} +1 -1
  223. package/dist/{systemd-B86VePXs.js → systemd-Cj2cX_ZP.js} +9 -9
  224. package/dist/{systemd-hints-BmFWZu_j.js → systemd-hints-46PqJfaq.js} +6 -6
  225. package/dist/{systemd-linger-w7fvBU-1.js → systemd-linger-6Jd9K5p2.js} +1 -1
  226. package/dist/{tables-CGh4CW_h.js → tables-CIpKClDV.js} +1 -1
  227. package/dist/{tailnet-DJq7Mi1o.js → tailnet-CZANZjq6.js} +1 -1
  228. package/dist/{plugin-sdk/target-errors-jlLHihbX.js → target-errors-CRQlPF1u.js} +2 -2
  229. package/dist/{tool-images-D6mmxuWS.js → tool-images-CyzWvDUu.js} +1 -1
  230. package/dist/{tui-BbcmzKaA.js → tui-CC_AbfZr.js} +6 -6
  231. package/dist/{tui-cli-Dv3jSm3x.js → tui-cli-DiJ7zKUD.js} +32 -32
  232. package/dist/{update-BhRrb6BI.js → update-1JhjCqjy.js} +3 -3
  233. package/dist/{update-cli-Oe0fP8x9.js → update-cli-DM_dUip_.js} +104 -104
  234. package/dist/{update-runner-DdA6xBa9.js → update-runner-BBJZmfZ4.js} +16 -16
  235. package/dist/{web-Chw1dtKA.js → web-CWxO_flK.js} +6 -6
  236. package/dist/web-CZhZC1EA.js +118 -0
  237. package/dist/{webhooks-cli-CJLug1QH.js → webhooks-cli-CzDd8ikc.js} +6 -6
  238. package/dist/{whatsapp-actions-_ca5OtHq.js → whatsapp-actions-MR_bBjXO.js} +17 -17
  239. package/dist/{with-timeout-CFfRudNc.js → with-timeout-BZ_Teugb.js} +3 -3
  240. package/dist/{workspace-BbO-M3Jv.js → workspace-D5vNjk5G.js} +1 -1
  241. package/dist/{workspace-dirs-D8D-Ghcl.js → workspace-dirs-CjMIsQti.js} +1 -1
  242. package/dist/{wsl-CsGe5QCP.js → wsl-CvQfS6aU.js} +2 -2
  243. package/package.json +1 -1
  244. package/dist/deliver-runtime-zICm26tE.js +0 -61
  245. package/dist/deps-send-discord.runtime-C_9HZQko.js +0 -36
  246. package/dist/deps-send-imessage.runtime-BMhGsWds.js +0 -35
  247. package/dist/deps-send-signal.runtime-BGhjYiu6.js +0 -34
  248. package/dist/deps-send-slack.runtime-DjBCu-RX.js +0 -32
  249. package/dist/deps-send-whatsapp.runtime-CU257URT.js +0 -119
  250. package/dist/fs-safe-BPQ-per2.js +0 -352
  251. package/dist/image-runtime-Cxoxcx04.js +0 -55
  252. package/dist/path-alias-guards-DeOVetT7.js +0 -43
  253. package/dist/plugin-sdk/accounts-CUEuUR3C.js +0 -46
  254. package/dist/plugin-sdk/accounts-D0W2pELU.js +0 -288
  255. package/dist/plugin-sdk/accounts-ucj0odJq.js +0 -35
  256. package/dist/plugin-sdk/active-listener-BO7eBEG_.js +0 -50
  257. package/dist/plugin-sdk/api-key-rotation-C4C_mDsg.js +0 -181
  258. package/dist/plugin-sdk/audio-preflight-Cqdo0JKm.js +0 -69
  259. package/dist/plugin-sdk/audio-transcription-runner-DnEooIyE.js +0 -2176
  260. package/dist/plugin-sdk/audit-membership-runtime-B9b-zRwg.js +0 -58
  261. package/dist/plugin-sdk/channel-activity-BMWLw4o2.js +0 -94
  262. package/dist/plugin-sdk/channel-web-B8bj7MB9.js +0 -2256
  263. package/dist/plugin-sdk/chrome-CV-q0Lmc.js +0 -2415
  264. package/dist/plugin-sdk/commands-registry-e7YoqrbP.js +0 -1125
  265. package/dist/plugin-sdk/config-B2B64aX0.js +0 -17911
  266. package/dist/plugin-sdk/deliver-BkyBtcLR.js +0 -1694
  267. package/dist/plugin-sdk/deliver-runtime-O4lwAWMw.js +0 -32
  268. package/dist/plugin-sdk/deps-send-discord.runtime-BAeeBldY.js +0 -23
  269. package/dist/plugin-sdk/deps-send-imessage.runtime-EL-CfikZ.js +0 -22
  270. package/dist/plugin-sdk/deps-send-signal.runtime-BeemHeUu.js +0 -21
  271. package/dist/plugin-sdk/deps-send-slack.runtime-DTttkC0N.js +0 -19
  272. package/dist/plugin-sdk/deps-send-telegram.runtime-Dsf9Cnka.js +0 -24
  273. package/dist/plugin-sdk/deps-send-whatsapp.runtime-DvdFo6lj.js +0 -57
  274. package/dist/plugin-sdk/diagnostic-DPRVoKTk.js +0 -319
  275. package/dist/plugin-sdk/errors-B8oJXuCF.js +0 -54
  276. package/dist/plugin-sdk/fetch-guard-F0Fnqisy.js +0 -156
  277. package/dist/plugin-sdk/image-cBW8L8pp.js +0 -2310
  278. package/dist/plugin-sdk/image-ops-BP8ix1GC.js +0 -584
  279. package/dist/plugin-sdk/image-runtime-9xkgSlNz.js +0 -25
  280. package/dist/plugin-sdk/ir-DWEc6zOp.js +0 -1296
  281. package/dist/plugin-sdk/local-roots-BIPT8uAO.js +0 -186
  282. package/dist/plugin-sdk/logger-DDdrdbDu.js +0 -1163
  283. package/dist/plugin-sdk/login-BMTiGutN.js +0 -57
  284. package/dist/plugin-sdk/login-qr-BFxqYUkc.js +0 -320
  285. package/dist/plugin-sdk/manager-BD-aYaZ8.js +0 -3917
  286. package/dist/plugin-sdk/manager-runtime-C5bRwUlz.js +0 -15
  287. package/dist/plugin-sdk/outbound-Bm07xvO6.js +0 -212
  288. package/dist/plugin-sdk/outbound-attachment-DLsaxDsc.js +0 -19
  289. package/dist/plugin-sdk/paths-C6W4VHoa.js +0 -166
  290. package/dist/plugin-sdk/pi-embedded-helpers-BExwPvTh.js +0 -9627
  291. package/dist/plugin-sdk/pi-model-discovery-DdctvBeX.js +0 -134
  292. package/dist/plugin-sdk/pi-model-discovery-runtime-DrtpLJjk.js +0 -8
  293. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-rgTz3FBl.js +0 -354
  294. package/dist/plugin-sdk/plugins-BN64HHZA.js +0 -864
  295. package/dist/plugin-sdk/proxy-fetch-ZPEvp58f.js +0 -38
  296. package/dist/plugin-sdk/pw-ai-DBm3RdBK.js +0 -1938
  297. package/dist/plugin-sdk/query-expansion-eeVz_aEm.js +0 -1011
  298. package/dist/plugin-sdk/redact-BoNEjbpF.js +0 -319
  299. package/dist/plugin-sdk/reply-Bp49JV3f.js +0 -98828
  300. package/dist/plugin-sdk/resolve-outbound-target-DXfjGlZQ.js +0 -40
  301. package/dist/plugin-sdk/run-with-concurrency-5DMu9szx.js +0 -1994
  302. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-D2hkJBa-.js +0 -10
  303. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-C06I4adi.js +0 -19
  304. package/dist/plugin-sdk/send-B9xnwtQ-.js +0 -540
  305. package/dist/plugin-sdk/send-BxySs-Cu.js +0 -2587
  306. package/dist/plugin-sdk/send-D9THKp_J.js +0 -414
  307. package/dist/plugin-sdk/send-DCuaaP2w.js +0 -503
  308. package/dist/plugin-sdk/send-Dm_-_xje.js +0 -3135
  309. package/dist/plugin-sdk/session-DDzIZHxt.js +0 -169
  310. package/dist/plugin-sdk/skill-commands-DRvqtuFC.js +0 -342
  311. package/dist/plugin-sdk/skills-BWwlfbVj.js +0 -1428
  312. package/dist/plugin-sdk/slash-commands.runtime-BzYsaTST.js +0 -13
  313. package/dist/plugin-sdk/slash-dispatch.runtime-Cty8EAD9.js +0 -52
  314. package/dist/plugin-sdk/slash-skill-commands.runtime-sg98L8BK.js +0 -16
  315. package/dist/plugin-sdk/ssrf-DOBwjFow.js +0 -202
  316. package/dist/plugin-sdk/store-BKDR_-Qk.js +0 -81
  317. package/dist/plugin-sdk/subagent-registry-runtime-Dz50ieim.js +0 -52
  318. package/dist/plugin-sdk/tables-GIj79us5.js +0 -55
  319. package/dist/plugin-sdk/thinking-BgdUnMZ2.js +0 -1206
  320. package/dist/plugin-sdk/tokens-CTIYTLWu.js +0 -52
  321. package/dist/plugin-sdk/tool-images-GSlvf6RP.js +0 -274
  322. package/dist/plugin-sdk/web-BK9mCTAc.js +0 -56
  323. package/dist/plugin-sdk/whatsapp-actions-DQpK_5Ds.js +0 -80
  324. package/dist/qmd-manager-BsL_hcOB.js +0 -1454
  325. package/dist/register.configure-BkwbM-hb.js +0 -165
  326. package/dist/slash-dispatch.runtime-reuPLnse.js +0 -114
  327. package/dist/subagent-registry-runtime-CqgIWcSl.js +0 -114
  328. package/dist/target-errors-C_rnMuJ2.js +0 -195
  329. package/dist/web-w04Gvwqi.js +0 -118
@@ -65,6 +65,11 @@ import { DatabaseSync } from "node:sqlite";
65
65
  * Long-Term Memory — SQLite Schema
66
66
  * All tables + FTS5 virtual tables + sync triggers
67
67
  */
68
+ /**
69
+ * Migration statements run after schema creation.
70
+ * Wrapped in try-catch in initSchema() — safe to run on existing DBs.
71
+ */
72
+ const LONG_TERM_MEMORY_MIGRATIONS = [`ALTER TABLE episodic ADD COLUMN pinned INTEGER NOT NULL DEFAULT 0`, `ALTER TABLE semantic ADD COLUMN pinned INTEGER NOT NULL DEFAULT 0`];
68
73
  const LONG_TERM_MEMORY_SCHEMA = `
69
74
  PRAGMA journal_mode = WAL;
70
75
  PRAGMA foreign_keys = ON;
@@ -263,6 +268,9 @@ var MemoryManager = class {
263
268
  }
264
269
  initSchema() {
265
270
  this.db.exec(LONG_TERM_MEMORY_SCHEMA);
271
+ for (const sql of LONG_TERM_MEMORY_MIGRATIONS) try {
272
+ this.db.exec(sql);
273
+ } catch {}
266
274
  }
267
275
  close() {
268
276
  this.db.close();
@@ -277,11 +285,20 @@ var MemoryManager = class {
277
285
  clearWorkingMemory(sessionId) {
278
286
  this.db.prepare(`DELETE FROM working_memory WHERE session_id = ? AND agent_id = ? AND user_id = ?`).run(sessionId, this.agentId, this.userId);
279
287
  }
288
+ /** Replace all working memory for this agent (working memory = current state, not history) */
289
+ clearAllWorkingMemory() {
290
+ this.db.prepare(`DELETE FROM working_memory WHERE agent_id = ? AND user_id = ?`).run(this.agentId, this.userId);
291
+ }
292
+ /** Get the most recent working memory items across all sessions */
293
+ getLatestWorkingMemory(limit = 5) {
294
+ return this.db.prepare(`SELECT * FROM working_memory WHERE agent_id = ? AND user_id = ?
295
+ ORDER BY created_at DESC LIMIT ?`).all(this.agentId, this.userId, limit);
296
+ }
280
297
  addEpisodic(mem) {
281
298
  const sortedEntities = [...mem.entities ?? []].toSorted();
282
299
  const sortedTags = [...mem.tags ?? []].toSorted();
283
- return this.db.prepare(`INSERT INTO episodic (agent_id, user_id, session_id, timestamp, summary, entities, tags, importance)
284
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(this.agentId, this.userId, mem.session_id ?? null, mem.timestamp, mem.summary, JSON.stringify(sortedEntities), JSON.stringify(sortedTags), mem.importance).lastInsertRowid;
300
+ return this.db.prepare(`INSERT INTO episodic (agent_id, user_id, session_id, timestamp, summary, entities, tags, importance, pinned)
301
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(this.agentId, this.userId, mem.session_id ?? null, mem.timestamp, mem.summary, JSON.stringify(sortedEntities), JSON.stringify(sortedTags), mem.importance, mem.pinned ?? 0).lastInsertRowid;
285
302
  }
286
303
  getRecentEpisodic(limit = 20) {
287
304
  return this.db.prepare(`SELECT * FROM episodic WHERE agent_id = ? AND user_id = ?
@@ -306,8 +323,8 @@ var MemoryManager = class {
306
323
  return existing.id;
307
324
  }
308
325
  }
309
- return this.db.prepare(`INSERT INTO semantic (agent_id, user_id, fact, subject, category, confidence, source, created_at, updated_at, active)
310
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 1)`).run(this.agentId, this.userId, mem.fact, mem.subject ?? null, mem.category ?? null, mem.confidence ?? 1, mem.source ?? null, now, now).lastInsertRowid;
326
+ return this.db.prepare(`INSERT INTO semantic (agent_id, user_id, fact, subject, category, confidence, source, created_at, updated_at, active, pinned)
327
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 1, ?)`).run(this.agentId, this.userId, mem.fact, mem.subject ?? null, mem.category ?? null, mem.confidence ?? 1, mem.source ?? null, now, now, mem.pinned ?? 0).lastInsertRowid;
311
328
  }
312
329
  getActiveSemantic(limit = 50) {
313
330
  return this.db.prepare(`SELECT * FROM semantic WHERE agent_id = ? AND user_id = ? AND active = 1
@@ -434,6 +451,36 @@ var MemoryManager = class {
434
451
  }
435
452
  return output;
436
453
  }
454
+ /** Pin a semantic fact permanently (survives cleanup) */
455
+ pinSemantic(id) {
456
+ this.db.prepare(`UPDATE semantic SET pinned = 1 WHERE id = ? AND agent_id = ? AND user_id = ?`).run(id, this.agentId, this.userId);
457
+ }
458
+ /** Pin an episodic memory permanently */
459
+ pinEpisodic(id) {
460
+ this.db.prepare(`UPDATE episodic SET pinned = 1 WHERE id = ? AND agent_id = ? AND user_id = ?`).run(id, this.agentId, this.userId);
461
+ }
462
+ /**
463
+ * Remove stale memories. Safe to run daily.
464
+ * - Deletes episodic events older than episodicAgeDays (default 90) if not pinned
465
+ * - Deactivates semantic facts not accessed in semanticStaleDays (default 60) if not pinned
466
+ * Returns counts of removed/deactivated items.
467
+ */
468
+ runCleanup(params) {
469
+ const episodicAgeDays = params?.episodicAgeDays ?? 90;
470
+ const semanticStaleDays = params?.semanticStaleDays ?? 60;
471
+ const now = Date.now();
472
+ const episodicCutoff = now - episodicAgeDays * 24 * 60 * 60 * 1e3;
473
+ const semanticCutoff = now - semanticStaleDays * 24 * 60 * 60 * 1e3;
474
+ const ep = this.db.prepare(`DELETE FROM episodic WHERE agent_id = ? AND user_id = ? AND pinned = 0 AND timestamp < ?`).run(this.agentId, this.userId, episodicCutoff);
475
+ const sem = this.db.prepare(`UPDATE semantic SET active = 0
476
+ WHERE agent_id = ? AND user_id = ? AND pinned = 0 AND active = 1
477
+ AND (last_accessed IS NULL OR last_accessed < ?)
478
+ AND created_at < ?`).run(this.agentId, this.userId, semanticCutoff, semanticCutoff);
479
+ return {
480
+ episodicDeleted: ep.changes,
481
+ semanticDeactivated: sem.changes
482
+ };
483
+ }
437
484
  getStats() {
438
485
  return {
439
486
  episodic: this.db.prepare(`SELECT COUNT(*) as c FROM episodic WHERE agent_id = ? AND user_id = ?`).get(this.agentId, this.userId).c,
@@ -461,13 +508,16 @@ const EXTRACTION_PROMPT_SYSTEM = `You are a memory extraction assistant. Analyze
461
508
  Return ONLY valid JSON in this exact format (no markdown, no explanation):
462
509
  {
463
510
  "episodic": [
464
- {"summary": "what happened", "entities": ["Person","Project"], "tags": ["tag"], "importance": 7}
511
+ {"summary": "what happened", "entities": ["Person","Project"], "tags": ["tag"], "importance": 7, "pinned": false}
465
512
  ],
466
513
  "semantic": [
467
- {"fact": "standing fact", "subject": "about what/who", "category": "preference|rule|fact|config", "confidence": 0.9}
514
+ {"fact": "standing fact", "subject": "about what/who", "category": "preference|rule|fact|config", "confidence": 0.9, "pinned": false}
468
515
  ],
469
516
  "procedural": [
470
517
  {"name": "procedure_name", "description": "when to use", "steps": ["Step 1", "Step 2"], "tags": ["tag"]}
518
+ ],
519
+ "working_memory": [
520
+ {"task": "what was being actively worked on", "project": "ProjectName", "next_step": "the very next action to take"}
471
521
  ]
472
522
  }
473
523
 
@@ -476,7 +526,9 @@ Rules:
476
526
  - Importance: 1=trivial 5=normal 8=important 10=critical
477
527
  - Confidence: 0.0=uncertain 0.5=probable 1.0=certain
478
528
  - Entities: proper nouns only (people, projects, companies, products, servers)
479
- - If nothing worth remembering: {"episodic":[],"semantic":[],"procedural":[]}`;
529
+ - working_memory: capture ONLY tasks that were actively in progress at session end — things the user would want to continue next time. Max 3 items. If nothing was actively being worked on, return [].
530
+ - PINNED MEMORIES: If the user explicitly says "don't forget", "remember this", "pin this", "never forget", or "always remember" about something — set pinned: true on that memory. Pinned memories are never auto-deleted. All other memories default to pinned: false.
531
+ - If nothing worth remembering: {"episodic":[],"semantic":[],"procedural":[],"working_memory":[]}`;
480
532
  /**
481
533
  * Run long-term memory extraction on session content.
482
534
  * Follows the same pattern as generateSlugViaLLM.
@@ -561,7 +613,8 @@ ${params.sessionContent.slice(-6e3)}`;
561
613
  summary: ep.summary,
562
614
  entities: ep.entities ?? [],
563
615
  tags: ep.tags ?? [],
564
- importance: Math.max(1, Math.min(10, ep.importance ?? 5))
616
+ importance: Math.max(1, Math.min(10, ep.importance ?? 5)),
617
+ pinned: ep.pinned ? 1 : 0
565
618
  });
566
619
  created++;
567
620
  } catch {
@@ -579,7 +632,8 @@ ${params.sessionContent.slice(-6e3)}`;
579
632
  subject: sem.subject,
580
633
  category: sem.category,
581
634
  confidence: Math.max(0, Math.min(1, sem.confidence ?? 1)),
582
- source: "auto-extraction"
635
+ source: "auto-extraction",
636
+ pinned: sem.pinned ? 1 : 0
583
637
  });
584
638
  created++;
585
639
  } catch {
@@ -603,6 +657,24 @@ ${params.sessionContent.slice(-6e3)}`;
603
657
  skipped++;
604
658
  }
605
659
  }
660
+ const workingItems = (extracted.working_memory ?? []).filter((w) => typeof w?.task === "string" && w.task.trim().length > 0);
661
+ if (workingItems.length > 0) {
662
+ manager.clearAllWorkingMemory();
663
+ for (const wm of workingItems.slice(0, 3)) try {
664
+ manager.addWorking({
665
+ sessionId: params.sessionId,
666
+ content: JSON.stringify({
667
+ task: wm.task,
668
+ project: wm.project,
669
+ next_step: wm.next_step
670
+ }),
671
+ layerHint: "working"
672
+ });
673
+ created++;
674
+ } catch {
675
+ skipped++;
676
+ }
677
+ }
606
678
  manager.logExtraction({
607
679
  sessionId: params.sessionId,
608
680
  trigger: "session_end",
@@ -634,6 +706,31 @@ ${params.sessionContent.slice(-6e3)}`;
634
706
  };
635
707
  }
636
708
  /**
709
+ * Run daily memory cleanup if 24h have passed since last run.
710
+ * Tracks last run in `memory/.ltm-cleanup-ts` (plain timestamp file).
711
+ */
712
+ async function runDailyCleanupIfDue(params) {
713
+ const memDir = path.join(params.workspaceDir, "memory");
714
+ const tsFile = path.join(memDir, ".ltm-cleanup-ts");
715
+ const oneDayMs = 1440 * 60 * 1e3;
716
+ try {
717
+ const lastRun = await fs.readFile(tsFile, "utf-8").then(Number).catch(() => 0);
718
+ if (Date.now() - lastRun < oneDayMs) return;
719
+ const manager = new MemoryManager({
720
+ dbPath: params.dbPath,
721
+ agentId: params.agentId,
722
+ userId: params.userId
723
+ });
724
+ const result = manager.runCleanup();
725
+ manager.close();
726
+ await fs.mkdir(memDir, { recursive: true });
727
+ await fs.writeFile(tsFile, String(Date.now()), "utf-8");
728
+ if (result.episodicDeleted > 0 || result.semanticDeactivated > 0) log$1.info(`LTM cleanup: removed ${result.episodicDeleted} old events, deactivated ${result.semanticDeactivated} stale facts`);
729
+ } catch (err) {
730
+ log$1.warn("LTM cleanup skipped", { error: String(err) });
731
+ }
732
+ }
733
+ /**
637
734
  * Write `memory/long-term-context.md` in the workspace.
638
735
  * This file is auto-loaded by Squidclaw's bootstrap file system.
639
736
  */
@@ -643,6 +740,19 @@ async function syncLongTermContextFile(params) {
643
740
  "*Auto-generated from conversation history. Updated at session end.*",
644
741
  ""
645
742
  ];
743
+ const working = params.manager.getLatestWorkingMemory(3);
744
+ if (working.length > 0) {
745
+ lines.push("### 🔄 Active Work (Resume Here)");
746
+ for (const w of working) try {
747
+ const parsed = JSON.parse(w.content);
748
+ const proj = parsed.project ? `**[${parsed.project}]** ` : "";
749
+ const next = parsed.next_step ? ` → Next: ${parsed.next_step}` : "";
750
+ lines.push(`- ${proj}${parsed.task}${next}`);
751
+ } catch {
752
+ lines.push(`- ${w.content}`);
753
+ }
754
+ lines.push("");
755
+ }
646
756
  const semantic = params.manager.getActiveSemantic(40);
647
757
  if (semantic.length > 0) {
648
758
  lines.push("### Facts & Preferences");
@@ -668,7 +778,7 @@ async function syncLongTermContextFile(params) {
668
778
  lines.push("");
669
779
  }
670
780
  const stats = params.manager.getStats();
671
- lines.push(`*${stats.episodic} events · ${stats.semantic} facts · ${stats.procedural} workflows*`);
781
+ lines.push(`*${stats.episodic} events · ${stats.semantic} facts · ${stats.procedural} workflows · ${stats.working} active tasks*`);
672
782
  const memDir = path.join(params.workspaceDir, "memory");
673
783
  await fs.mkdir(memDir, { recursive: true });
674
784
  await fs.writeFile(path.join(memDir, "long-term-context.md"), lines.join("\n"), "utf-8");
@@ -856,8 +966,13 @@ const saveSessionToMemory = async (event) => {
856
966
  agentId: ltmAgentId,
857
967
  userId: ltmAgentId,
858
968
  dbPath: ltmDbPath
859
- }).catch((err) => {
860
- log.warn("Long-term memory extraction failed (non-fatal)", { error: String(err) });
969
+ }).then(() => runDailyCleanupIfDue({
970
+ dbPath: ltmDbPath,
971
+ workspaceDir,
972
+ agentId: ltmAgentId,
973
+ userId: ltmAgentId
974
+ })).catch((err) => {
975
+ log.warn("Long-term memory extraction/cleanup failed (non-fatal)", { error: String(err) });
861
976
  });
862
977
  });
863
978
  }
@@ -1,22 +1,22 @@
1
1
  import { g as resolveStateDir, o as resolveConfigPath, u as resolveGatewayPort } from "./paths-CHIu6D1E.js";
2
- import { lt as secretRefKey, x as resolveSecretRefValues, z as loadConfig } from "./auth-profiles-9T4j6jMy.js";
2
+ import { lt as secretRefKey, x as resolveSecretRefValues, z as loadConfig } from "./auth-profiles-CX4YYu7Z.js";
3
3
  import { b as shortenHomeInString, s as ensureDir, t as CONFIG_DIR, v as resolveUserPath } from "./utils-D6vohX1h.js";
4
4
  import { A as hasConfiguredSecretInput, F as resolveSecretInputRef } from "./registry-BXcl3IkC.js";
5
5
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DqvtYF2o.js";
6
- import { Mt as PROTOCOL_VERSION, en as normalizeFingerprint, nn as loadOrCreateDeviceIdentity, t as GatewayClient } from "./client-COy24r9W.js";
7
- import { i as isSecureWebSocketUrl } from "./net-CIh5ellr.js";
6
+ import { Mt as PROTOCOL_VERSION, en as normalizeFingerprint, nn as loadOrCreateDeviceIdentity, t as GatewayClient } from "./client-G9E5HGM2.js";
7
+ import { i as isSecureWebSocketUrl } from "./net-CCnbGop3.js";
8
8
  import { t as resolveGatewayCredentialsFromConfig } from "./credentials-CyQeGziJ.js";
9
9
  import { execFile } from "node:child_process";
10
10
  import path from "node:path";
11
11
  import { promisify } from "node:util";
12
- import fsPromises from "node:fs/promises";
12
+ import fs from "node:fs/promises";
13
13
  import { X509Certificate, randomUUID } from "node:crypto";
14
14
 
15
15
  //#region src/infra/tls/gateway.ts
16
16
  const execFileAsync = promisify(execFile);
17
17
  async function fileExists(filePath) {
18
18
  try {
19
- await fsPromises.access(filePath);
19
+ await fs.access(filePath);
20
20
  return true;
21
21
  } catch {
22
22
  return false;
@@ -43,8 +43,8 @@ async function generateSelfSignedCert(params) {
43
43
  "-subj",
44
44
  "/CN=squidclaw-gateway"
45
45
  ]);
46
- await fsPromises.chmod(params.keyPath, 384).catch(() => {});
47
- await fsPromises.chmod(params.certPath, 384).catch(() => {});
46
+ await fs.chmod(params.keyPath, 384).catch(() => {});
47
+ await fs.chmod(params.certPath, 384).catch(() => {});
48
48
  params.log?.info?.(`gateway tls: generated self-signed cert at ${shortenHomeInString(params.certPath)}`);
49
49
  }
50
50
  async function loadGatewayTlsRuntime(cfg, log) {
@@ -82,9 +82,9 @@ async function loadGatewayTlsRuntime(cfg, log) {
82
82
  error: "gateway tls: cert/key missing"
83
83
  };
84
84
  try {
85
- const cert = await fsPromises.readFile(certPath, "utf8");
86
- const key = await fsPromises.readFile(keyPath, "utf8");
87
- const ca = caPath ? await fsPromises.readFile(caPath, "utf8") : void 0;
85
+ const cert = await fs.readFile(certPath, "utf8");
86
+ const key = await fs.readFile(keyPath, "utf8");
87
+ const ca = caPath ? await fs.readFile(caPath, "utf8") : void 0;
88
88
  const fingerprintSha256 = normalizeFingerprint(new X509Certificate(cert).fingerprint256 ?? "");
89
89
  if (!fingerprintSha256) return {
90
90
  enabled: false,
@@ -2,7 +2,7 @@ import { t as runCommandWithTimeout } from "./exec-TSiqsZw1.js";
2
2
  import { n as fetchWithTimeout } from "./fetch-timeout-Mawkd1Br.js";
3
3
  import { t as resolveChannelDefaultAccountId } from "./helpers-D7MilaX-.js";
4
4
  import path from "node:path";
5
- import fsPromises from "node:fs/promises";
5
+ import fs from "node:fs/promises";
6
6
 
7
7
  //#region src/infra/update-channels.ts
8
8
  const DEFAULT_PACKAGE_CHANNEL = "stable";
@@ -86,11 +86,11 @@ function resolveUpdateChannelDisplay(params) {
86
86
  //#region src/infra/detect-package-manager.ts
87
87
  async function detectPackageManager$1(root) {
88
88
  try {
89
- const raw = await fsPromises.readFile(path.join(root, "package.json"), "utf-8");
89
+ const raw = await fs.readFile(path.join(root, "package.json"), "utf-8");
90
90
  const pm = JSON.parse(raw)?.packageManager?.split("@")[0]?.trim();
91
91
  if (pm === "pnpm" || pm === "bun" || pm === "npm") return pm;
92
92
  } catch {}
93
- const files = await fsPromises.readdir(root).catch(() => []);
93
+ const files = await fs.readdir(root).catch(() => []);
94
94
  if (files.includes("pnpm-lock.yaml")) return "pnpm";
95
95
  if (files.includes("bun.lockb")) return "bun";
96
96
  if (files.includes("package-lock.json")) return "npm";
@@ -112,7 +112,7 @@ function formatGitInstallLabel(update) {
112
112
  }
113
113
  async function exists(p) {
114
114
  try {
115
- await fsPromises.access(p);
115
+ await fs.access(p);
116
116
  return true;
117
117
  } catch {
118
118
  return false;
@@ -239,7 +239,7 @@ async function checkGitUpdateStatus(params) {
239
239
  }
240
240
  async function statMtimeMs(p) {
241
241
  try {
242
- return (await fsPromises.stat(p)).mtimeMs;
242
+ return (await fs.stat(p)).mtimeMs;
243
243
  } catch {
244
244
  return null;
245
245
  }
@@ -1,5 +1,5 @@
1
1
  import { t as createSubsystemLogger } from "./subsystem-Bw5n50gj.js";
2
- import { Xr as resolveRetryConfig, Zr as retryAsync } from "./auth-profiles-9T4j6jMy.js";
2
+ import { Xr as resolveRetryConfig, Zr as retryAsync } from "./auth-profiles-CX4YYu7Z.js";
3
3
  import { r as formatErrorMessage } from "./errors-BnRmsfe-.js";
4
4
  import { RateLimitError } from "@buape/carbon";
5
5
 
@@ -1,8 +1,8 @@
1
1
  import { r as isTruthyEnvValue } from "./entry.js";
2
2
  import { n as CHAT_CHANNEL_ORDER } from "./registry-BXcl3IkC.js";
3
- import { n as listChannelPlugins } from "./plugins-Bc7YM9X-.js";
4
- import { a as listChannelPluginCatalogEntries } from "./plugin-auto-enable-a3TK3OPT.js";
5
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-CFqqDqQV.js";
3
+ import { n as listChannelPlugins } from "./plugins-BDTkSIi7.js";
4
+ import { a as listChannelPluginCatalogEntries } from "./plugin-auto-enable-DJkHW_LG.js";
5
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-D3PnPE1D.js";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import path from "node:path";
8
8
  import fs from "node:fs";
@@ -1,5 +1,5 @@
1
1
  import { c as listDeliverableMessageChannels, l as normalizeMessageChannel, n as isDeliverableMessageChannel } from "./message-channel-DqvtYF2o.js";
2
- import { n as listChannelPlugins } from "./plugins-Bc7YM9X-.js";
2
+ import { n as listChannelPlugins } from "./plugins-BDTkSIi7.js";
3
3
 
4
4
  //#region src/infra/outbound/channel-selection.ts
5
5
  const getMessageChannels = () => listDeliverableMessageChannels();
@@ -1,28 +1,28 @@
1
1
  import { a as logVerbose, c as shouldLogVerbose, m as getChildLogger } from "./globals-BrhVUl-N.js";
2
2
  import { d as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Bw5n50gj.js";
3
- import { z as loadConfig } from "./auth-profiles-9T4j6jMy.js";
3
+ import { z as loadConfig } from "./auth-profiles-CX4YYu7Z.js";
4
4
  import { t as formatCliCommand } from "./command-format-D8-lYArk.js";
5
5
  import { a as buildGroupHistoryKey, c as normalizeAgentId, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey } from "./session-key-k6urs9r-.js";
6
6
  import { S as sleep, _ as resolveJidToE164, d as isSelfChatMode, f as jidToE164, n as clamp, p as normalizeE164, w as toWhatsappJid } from "./utils-D6vohX1h.js";
7
- import { a as resolveChannelGroupRequireMention, i as resolveChannelGroupPolicy } from "./dock-W3cGg46W.js";
8
- import { c as recordSessionMetaFromInbound, lt as resolveGroupSessionKey, o as loadSessionStore, u as updateLastRoute } from "./sessions-DgnXAQCc.js";
9
- import { i as resolveWhatsAppAccount, p as readWebSelfId, s as getWebAuthAgeMs } from "./accounts-BH9Qo1sQ.js";
10
- import { $ as shouldAckReactionForWhatsApp, A as resolveInboundSessionEnvelopeContext, Ct as resolveAgentRoute, Dn as normalizeGroupActivation, G as buildPairingReply, J as buildHistoryContextFromEntries, K as resolveMentionGating, On as parseActivationCommand, Q as warnMissingProviderGroupPolicyFallbackOnce, Sr as resolveMessagePrefix, St as buildAgentSessionKey, Un as enqueueSystemEvent, W as createReplyPrefixOptions, X as resolveDefaultGroupPolicy, Y as recordPendingHistoryEntryIfEnabled, Z as resolveOpenProviderRuntimeGroupPolicy, ct as createDedupeCache, dr as hasControlCommand, et as dispatchReplyWithBufferedBlockDispatcher, fr as shouldComputeCommandAuthorized, gr as normalizeMentionText, hr as buildMentionRegexes, it as formatInboundEnvelope, lt as getReplyFromConfig, nt as createInboundDebouncer, q as DEFAULT_GROUP_HISTORY_LIMIT, rt as resolveInboundDebounceMs, sr as finalizeInboundContext, xr as resolveIdentityNamePrefix } from "./subagent-registry-CQA6P2FO.js";
7
+ import { a as resolveChannelGroupRequireMention, i as resolveChannelGroupPolicy } from "./dock-DJJAj46v.js";
8
+ import { c as recordSessionMetaFromInbound, lt as resolveGroupSessionKey, o as loadSessionStore, u as updateLastRoute } from "./sessions-BWptzMw0.js";
9
+ import { i as resolveWhatsAppAccount, p as readWebSelfId, s as getWebAuthAgeMs } from "./accounts-BK8I0Svb.js";
10
+ import { $ as shouldAckReactionForWhatsApp, A as resolveInboundSessionEnvelopeContext, Ct as resolveAgentRoute, Dn as normalizeGroupActivation, G as buildPairingReply, J as buildHistoryContextFromEntries, K as resolveMentionGating, On as parseActivationCommand, Q as warnMissingProviderGroupPolicyFallbackOnce, Sr as resolveMessagePrefix, St as buildAgentSessionKey, Un as enqueueSystemEvent, W as createReplyPrefixOptions, X as resolveDefaultGroupPolicy, Y as recordPendingHistoryEntryIfEnabled, Z as resolveOpenProviderRuntimeGroupPolicy, ct as createDedupeCache, dr as hasControlCommand, et as dispatchReplyWithBufferedBlockDispatcher, fr as shouldComputeCommandAuthorized, gr as normalizeMentionText, hr as buildMentionRegexes, it as formatInboundEnvelope, lt as getReplyFromConfig, nt as createInboundDebouncer, q as DEFAULT_GROUP_HISTORY_LIMIT, rt as resolveInboundDebounceMs, sr as finalizeInboundContext, xr as resolveIdentityNamePrefix } from "./subagent-registry-CIgFD2oi.js";
11
11
  import { c as resolveStorePath } from "./paths-Dn_rzeZN.js";
12
- import { K as formatLocationText, q as toLocationContext } from "./send-BVyLW1cn.js";
13
- import { i as saveMediaBuffer } from "./store-BTkIx401.js";
14
- import { i as getAgentScopedMediaLocalRoots } from "./fetch-lq0SDLLE.js";
15
- import { g as registerUnhandledRejectionHandler } from "./audio-transcription-runner-D-uxpkbd.js";
16
- import { a as loadWebMedia, d as chunkMarkdownTextWithMode, h as resolveTextChunkLimit, m as resolveChunkMode, s as resolveMarkdownTableMode } from "./ir-C7He5vmn.js";
17
- import { s as upsertChannelPairingRequest } from "./pairing-store-BC4mnG9S.js";
12
+ import { K as formatLocationText, q as toLocationContext } from "./send-RDqyJwZx.js";
13
+ import { i as saveMediaBuffer } from "./store-BEIcnlgx.js";
14
+ import { i as getAgentScopedMediaLocalRoots } from "./fetch-CtoC2wgs.js";
15
+ import { g as registerUnhandledRejectionHandler } from "./audio-transcription-runner-DvQksGUE.js";
16
+ import { a as loadWebMedia, d as chunkMarkdownTextWithMode, h as resolveTextChunkLimit, m as resolveChunkMode, s as resolveMarkdownTableMode } from "./ir-BukzlgSp.js";
17
+ import { s as upsertChannelPairingRequest } from "./pairing-store-D0eOXyby.js";
18
18
  import { r as formatDurationPrecise } from "./format-duration-CZ0b60YO.js";
19
- import { f as computeBackoff, p as sleepWithAbort } from "./session-utils-D12gSo5W.js";
20
- import { n as recordChannelActivity } from "./channel-activity-wuB3-cfR.js";
21
- import { t as convertMarkdownTables } from "./tables-CGh4CW_h.js";
19
+ import { f as computeBackoff, p as sleepWithAbort } from "./session-utils-XY6JwRhT.js";
20
+ import { n as recordChannelActivity } from "./channel-activity-BZKeZQH-.js";
21
+ import { t as convertMarkdownTables } from "./tables-CIpKClDV.js";
22
22
  import { r as setActiveWebListener } from "./active-listener-tA6LTRr3.js";
23
- import { c as readStoreAllowFromForDmPolicy, d as resolveDmGroupAccessWithLists, f as resolvePinnedMainDmOwnerFromAllowlist, u as resolveDmGroupAccessWithCommandGate } from "./pi-tools.policy-D3RA94WF.js";
24
- import { i as markdownToWhatsApp, r as sendReactionWhatsApp } from "./outbound-CwzUo-rx.js";
25
- import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-eXSdl5mb.js";
23
+ import { c as readStoreAllowFromForDmPolicy, d as resolveDmGroupAccessWithLists, f as resolvePinnedMainDmOwnerFromAllowlist, u as resolveDmGroupAccessWithCommandGate } from "./pi-tools.policy-BwWnFLLV.js";
24
+ import { i as markdownToWhatsApp, r as sendReactionWhatsApp } from "./outbound-B7m9Vcd2.js";
25
+ import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-D0jodcgT.js";
26
26
  import { randomUUID } from "node:crypto";
27
27
  import { DisconnectReason, downloadMediaMessage, extractMessageContent, getContentType, isJidGroup, normalizeMessageContent } from "@whiskeysockets/baileys";
28
28