squidclaw 3.0.28 → 3.0.29

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 (105) hide show
  1. package/dist/{accounts-C7pGQPcS.js → accounts-A_9Khwyv.js} +2 -2
  2. package/dist/{accounts-DjhBQg_8.js → accounts-Cz_Fvguv.js} +2 -2
  3. package/dist/{accounts-DwGoZKGm.js → accounts-f6iuhXVV.js} +17 -17
  4. package/dist/{active-listener-DPc_PGsA.js → active-listener-Cpv61XW5.js} +2 -2
  5. package/dist/{api-key-rotation-DVyYtQxC.js → api-key-rotation-6zH7pb_E.js} +2 -2
  6. package/dist/{audio-preflight-BUCBED7N.js → audio-preflight-DsLwB4dE.js} +32 -32
  7. package/dist/{audio-transcription-runner-Cv0Q47cM.js → audio-transcription-runner-zGqnorSY.js} +12 -12
  8. package/dist/{audit-membership-runtime-DyLj-uhz.js → audit-membership-runtime-By9-qSwl.js} +4 -4
  9. package/dist/build-info.json +2 -2
  10. package/dist/bundled/boot-md/handler.js +51 -51
  11. package/dist/bundled/bootstrap-extra-files/handler.js +7 -7
  12. package/dist/bundled/command-logger/handler.js +2 -2
  13. package/dist/bundled/session-memory/handler.js +153 -60
  14. package/dist/{channel-activity-CPpt4XaL.js → channel-activity-Byj9--iR.js} +3 -3
  15. package/dist/{chrome-OgCChbC_.js → chrome-BvWxjtGl.js} +18 -18
  16. package/dist/{commands-registry-BJjv8_oR.js → commands-registry-tedusR2M.js} +4 -4
  17. package/dist/{deliver-DMTUTpTM.js → deliver-RetmM0fn.js} +21 -21
  18. package/dist/deliver-runtime-tqK6d8Uv.js +36 -0
  19. package/dist/deps-send-discord.runtime-BGaHOctc.js +26 -0
  20. package/dist/deps-send-imessage.runtime-BIYidS73.js +25 -0
  21. package/dist/deps-send-signal.runtime-CjglZ1PO.js +24 -0
  22. package/dist/deps-send-slack.runtime-DOkzJ6nC.js +22 -0
  23. package/dist/deps-send-telegram.runtime-Cz8mtMyE.js +27 -0
  24. package/dist/deps-send-whatsapp.runtime-DFfgQ9HF.js +60 -0
  25. package/dist/{diagnostic-CnVwZNbm.js → diagnostic-DnZCgMrc.js} +2 -2
  26. package/dist/{errors-kkRuS2Cs.js → errors-CCLnP2Fs.js} +1 -1
  27. package/dist/{fetch-DP-JjB6Z.js → fetch-cQwsz0rO.js} +5 -5
  28. package/dist/{fetch-guard-BDy975wP.js → fetch-guard-BkqLWF6M.js} +2 -2
  29. package/dist/{frontmatter-Cq1TcIQ2.js → frontmatter-vSrur-r-.js} +5 -5
  30. package/dist/{fs-safe-BoB4X3GD.js → fs-safe-Dyju4C81.js} +4 -4
  31. package/dist/{github-copilot-token-B5cPlwaz.js → github-copilot-token-B8Wx9FgQ.js} +7 -7
  32. package/dist/{image-kKMG59st.js → image-kOIz_XGP.js} +6 -6
  33. package/dist/{image-ops-Dg8iraUV.js → image-ops-CumBuu0G.js} +2 -2
  34. package/dist/image-runtime-CSRwqD0g.js +29 -0
  35. package/dist/{ir-CKK03mBV.js → ir-rIK14_OY.js} +8 -8
  36. package/dist/{legacy-names-aGJJuzM_.js → legacy-names-CDxprteD.js} +1 -1
  37. package/dist/llm-slug-generator.js +51 -51
  38. package/dist/{logger-CnTSBL7T.js → logger-onBePS9K.js} +7 -7
  39. package/dist/{login-CeKDrz6_.js → login-BFH4YHqv.js} +5 -5
  40. package/dist/{login-qr-KbOpR0GQ.js → login-qr-BuzK_3o4.js} +10 -10
  41. package/dist/{manager-DINhLnMi.js → manager-B-q7-W4P.js} +13 -13
  42. package/dist/manager-runtime-CF4Tq0lu.js +18 -0
  43. package/dist/{model-selection-DuNLFQPR.js → model-selection-BEglDVk0.js} +48 -48
  44. package/dist/{outbound-C9svt6RH.js → outbound-ZriFY47D.js} +6 -6
  45. package/dist/{outbound-attachment-DwupUxYF.js → outbound-attachment-CtS0mrgi.js} +2 -2
  46. package/dist/{path-alias-guards-DORgbZ1w.js → path-alias-guards-CNSVgZrJ.js} +1 -1
  47. package/dist/{paths-DSd911Oe.js → paths-CUF9-Xea.js} +4 -4
  48. package/dist/{paths-DA5srn0U.js → paths-ZhiQAuKk.js} +5 -5
  49. package/dist/{pi-embedded-Zmr4Opc3.js → pi-embedded-NI8lHL1N.js} +160 -160
  50. package/dist/{pi-embedded-helpers-Di58J7Eh.js → pi-embedded-helpers-BYajLWsL.js} +52 -52
  51. package/dist/{pi-model-discovery-V-InbjOM.js → pi-model-discovery-COoRoqoO.js} +7 -7
  52. package/dist/pi-model-discovery-runtime-CV-86a0O.js +11 -0
  53. package/dist/{pi-tools.before-tool-call.runtime-Bpk4qTgV.js → pi-tools.before-tool-call.runtime-pbvzHMRb.js} +9 -9
  54. package/dist/plugin-sdk/imessage.js +2 -2
  55. package/dist/plugin-sdk/mattermost.js +3 -3
  56. package/dist/{plugins-DvejjZnJ.js → plugins-Dr2YhZ4p.js} +11 -11
  57. package/dist/{proxy-env-D-fike7s.js → proxy-env-CY4kVbFL.js} +1 -1
  58. package/dist/{proxy-fetch-lH6RsRTE.js → proxy-fetch-08-dhqxn.js} +1 -1
  59. package/dist/{pw-ai-B8ymIYub.js → pw-ai-D2Tp5DPG.js} +14 -14
  60. package/dist/{qmd-manager-BN0siR2Z.js → qmd-manager-v3fVcsJ9.js} +10 -10
  61. package/dist/{query-expansion-Dzxt6kXo.js → query-expansion-CeQC9es_.js} +6 -6
  62. package/dist/{redact-DvzicBMu.js → redact-rnJm_Z5E.js} +1 -1
  63. package/dist/{run-with-concurrency-BFR3ReeF.js → run-with-concurrency-BaKbvnLu.js} +4 -4
  64. package/dist/runtime-whatsapp-login.runtime-Dw75S1uv.js +13 -0
  65. package/dist/runtime-whatsapp-outbound.runtime-aHIvDvKJ.js +22 -0
  66. package/dist/{send-dTQd-IyJ.js → send-5d2Ieqww.js} +5 -5
  67. package/dist/{send-4nRsZJXH.js → send-Bz835W6s.js} +7 -7
  68. package/dist/{send-BTUU1jWM.js → send-JKHC2tCh.js} +8 -8
  69. package/dist/{send-BGlcHjUD.js → send-RT7WHA5n.js} +28 -28
  70. package/dist/{send-DdBbRpTP.js → send-rbU7BzyJ.js} +6 -6
  71. package/dist/{session-CnCwDJke.js → session-C-9V4uqt.js} +8 -8
  72. package/dist/{skill-commands-Cz45_nme.js → skill-commands-CYH1hk0d.js} +9 -9
  73. package/dist/{skills-CdCS1HeL.js → skills-CZ1lBgEC.js} +22 -22
  74. package/dist/slash-commands.runtime-DNDYdj2t.js +16 -0
  75. package/dist/slash-dispatch.runtime-BjHf74oU.js +56 -0
  76. package/dist/slash-skill-commands.runtime-DdMrdbxl.js +20 -0
  77. package/dist/{store-D9z0dn7D.js → store-Dcz4tfzS.js} +2 -2
  78. package/dist/subagent-registry-runtime-CUpD6G1o.js +56 -0
  79. package/dist/{subsystem-6v7sWnAD.js → subsystem-BJ89YjCN.js} +16 -16
  80. package/dist/{tables-BTFiZyRU.js → tables-8uP1Il18.js} +1 -1
  81. package/dist/{target-errors-DgNRx3Nr.js → target-errors-Ch8ZjtbC.js} +2 -2
  82. package/dist/{thinking-B75CXkTT.js → thinking-BtewZXu7.js} +7 -7
  83. package/dist/{tokens-DfbMVF9y.js → tokens-9NF8L9Uh.js} +1 -1
  84. package/dist/{tool-images-Dp5OiXeA.js → tool-images-DDvIxFgD.js} +2 -2
  85. package/dist/{web-CgLD9XZC.js → web-BeedURrs.js} +55 -55
  86. package/dist/{whatsapp-actions-CzqsuSGx.js → whatsapp-actions-D6yjFXCT.js} +21 -21
  87. package/dist/{workspace-kVMIaBrV.js → workspace-imNgYePS.js} +20 -20
  88. package/package.json +2 -2
  89. package/dist/deliver-runtime-B80olQwJ.js +0 -36
  90. package/dist/deps-send-discord.runtime-GIuvX7Xw.js +0 -26
  91. package/dist/deps-send-imessage.runtime-B3TC7G80.js +0 -25
  92. package/dist/deps-send-signal.runtime-CuVJyw7n.js +0 -24
  93. package/dist/deps-send-slack.runtime-cbfFoLZ4.js +0 -22
  94. package/dist/deps-send-telegram.runtime-CRyP-xDQ.js +0 -27
  95. package/dist/deps-send-whatsapp.runtime-C5L5YIp9.js +0 -60
  96. package/dist/image-runtime-BqIv7p_K.js +0 -29
  97. package/dist/manager-runtime-D6ckUNSs.js +0 -18
  98. package/dist/pi-model-discovery-runtime--t6tAlar.js +0 -11
  99. package/dist/runtime-whatsapp-login.runtime-DxV9iv6l.js +0 -13
  100. package/dist/runtime-whatsapp-outbound.runtime-DQqIlwhS.js +0 -22
  101. package/dist/slash-commands.runtime-CZz6v6b3.js +0 -16
  102. package/dist/slash-dispatch.runtime-ocKNC56j.js +0 -56
  103. package/dist/slash-skill-commands.runtime-Bawt7j0r.js +0 -20
  104. package/dist/subagent-registry-runtime-CeMECsgS.js +0 -56
  105. /package/dist/{config-DWRgGn0l.js → hooks-DubLZ3ar.js} +0 -0
@@ -1,63 +1,63 @@
1
- import { a as resolveAgentDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId, o as resolveAgentEffectiveModelPrimary } from "../../run-with-concurrency-BFR3ReeF.js";
2
- import { c as resolveStateDir } from "../../paths-DA5srn0U.js";
3
- import { t as createSubsystemLogger } from "../../subsystem-6v7sWnAD.js";
4
- import { B as resolveAgentIdFromSessionKey } from "../../workspace-kVMIaBrV.js";
5
- import "../../logger-CnTSBL7T.js";
6
- import { br as DEFAULT_MODEL, l as parseModelRef, xr as DEFAULT_PROVIDER } from "../../model-selection-DuNLFQPR.js";
7
- import "../../github-copilot-token-B5cPlwaz.js";
8
- import "../../legacy-names-aGJJuzM_.js";
9
- import "../../thinking-B75CXkTT.js";
10
- import "../../tokens-DfbMVF9y.js";
11
- import { t as runEmbeddedPiAgent } from "../../pi-embedded-Zmr4Opc3.js";
12
- import "../../plugins-DvejjZnJ.js";
13
- import "../../accounts-DwGoZKGm.js";
14
- import "../../send-DdBbRpTP.js";
15
- import "../../send-BTUU1jWM.js";
16
- import "../../deliver-DMTUTpTM.js";
17
- import "../../diagnostic-CnVwZNbm.js";
18
- import "../../accounts-C7pGQPcS.js";
19
- import "../../image-ops-Dg8iraUV.js";
20
- import "../../send-BGlcHjUD.js";
21
- import "../../pi-model-discovery-V-InbjOM.js";
22
- import { dt as hasInterSessionUserProvenance } from "../../pi-embedded-helpers-Di58J7Eh.js";
23
- import "../../chrome-OgCChbC_.js";
24
- import "../../frontmatter-Cq1TcIQ2.js";
25
- import "../../skills-CdCS1HeL.js";
26
- import "../../path-alias-guards-DORgbZ1w.js";
27
- import "../../redact-DvzicBMu.js";
28
- import "../../errors-kkRuS2Cs.js";
29
- import { c as writeFileWithinRoot } from "../../fs-safe-BoB4X3GD.js";
30
- import "../../proxy-env-D-fike7s.js";
31
- import "../../store-D9z0dn7D.js";
32
- import "../../accounts-DjhBQg_8.js";
33
- import "../../paths-DSd911Oe.js";
34
- import "../../tool-images-Dp5OiXeA.js";
35
- import "../../image-kKMG59st.js";
36
- import "../../audio-transcription-runner-Cv0Q47cM.js";
37
- import "../../fetch-DP-JjB6Z.js";
38
- import "../../fetch-guard-BDy975wP.js";
39
- import "../../api-key-rotation-DVyYtQxC.js";
40
- import "../../proxy-fetch-lH6RsRTE.js";
41
- import "../../ir-CKK03mBV.js";
1
+ import { a as resolveAgentDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId, o as resolveAgentEffectiveModelPrimary } from "../../run-with-concurrency-BaKbvnLu.js";
2
+ import { c as resolveStateDir } from "../../paths-ZhiQAuKk.js";
3
+ import { t as createSubsystemLogger } from "../../subsystem-BJ89YjCN.js";
4
+ import { B as resolveAgentIdFromSessionKey } from "../../workspace-imNgYePS.js";
5
+ import "../../logger-onBePS9K.js";
6
+ import { br as DEFAULT_MODEL, l as parseModelRef, xr as DEFAULT_PROVIDER } from "../../model-selection-BEglDVk0.js";
7
+ import "../../github-copilot-token-B8Wx9FgQ.js";
8
+ import { i as isAgentBootstrapEvent } from "../../legacy-names-CDxprteD.js";
9
+ import "../../thinking-BtewZXu7.js";
10
+ import "../../tokens-9NF8L9Uh.js";
11
+ import { t as runEmbeddedPiAgent } from "../../pi-embedded-NI8lHL1N.js";
12
+ import "../../plugins-Dr2YhZ4p.js";
13
+ import "../../accounts-f6iuhXVV.js";
14
+ import "../../send-rbU7BzyJ.js";
15
+ import "../../send-JKHC2tCh.js";
16
+ import "../../deliver-RetmM0fn.js";
17
+ import "../../diagnostic-DnZCgMrc.js";
18
+ import "../../accounts-A_9Khwyv.js";
19
+ import "../../image-ops-CumBuu0G.js";
20
+ import "../../send-RT7WHA5n.js";
21
+ import "../../pi-model-discovery-COoRoqoO.js";
22
+ import { dt as hasInterSessionUserProvenance } from "../../pi-embedded-helpers-BYajLWsL.js";
23
+ import "../../chrome-BvWxjtGl.js";
24
+ import "../../frontmatter-vSrur-r-.js";
25
+ import "../../skills-CZ1lBgEC.js";
26
+ import "../../path-alias-guards-CNSVgZrJ.js";
27
+ import "../../redact-rnJm_Z5E.js";
28
+ import "../../errors-CCLnP2Fs.js";
29
+ import { c as writeFileWithinRoot } from "../../fs-safe-Dyju4C81.js";
30
+ import "../../proxy-env-CY4kVbFL.js";
31
+ import "../../store-Dcz4tfzS.js";
32
+ import "../../accounts-Cz_Fvguv.js";
33
+ import "../../paths-CUF9-Xea.js";
34
+ import "../../tool-images-DDvIxFgD.js";
35
+ import "../../image-kOIz_XGP.js";
36
+ import "../../audio-transcription-runner-zGqnorSY.js";
37
+ import "../../fetch-cQwsz0rO.js";
38
+ import "../../fetch-guard-BkqLWF6M.js";
39
+ import "../../api-key-rotation-6zH7pb_E.js";
40
+ import "../../proxy-fetch-08-dhqxn.js";
41
+ import "../../ir-rIK14_OY.js";
42
42
  import "../../render-DW7AcFdD.js";
43
- import "../../target-errors-DgNRx3Nr.js";
44
- import "../../commands-registry-BJjv8_oR.js";
45
- import "../../skill-commands-Cz45_nme.js";
43
+ import "../../target-errors-Ch8ZjtbC.js";
44
+ import "../../commands-registry-tedusR2M.js";
45
+ import "../../skill-commands-CYH1hk0d.js";
46
46
  import "../../fetch-tZXOZ9FV.js";
47
- import "../../channel-activity-CPpt4XaL.js";
48
- import "../../tables-BTFiZyRU.js";
49
- import "../../send-dTQd-IyJ.js";
50
- import "../../outbound-attachment-DwupUxYF.js";
51
- import "../../send-4nRsZJXH.js";
47
+ import "../../channel-activity-Byj9--iR.js";
48
+ import "../../tables-8uP1Il18.js";
49
+ import "../../send-5d2Ieqww.js";
50
+ import "../../outbound-attachment-CtS0mrgi.js";
51
+ import "../../send-Bz835W6s.js";
52
52
  import "../../proxy-CecQTx_Z.js";
53
- import "../../manager-DINhLnMi.js";
54
- import "../../query-expansion-Dzxt6kXo.js";
53
+ import "../../manager-B-q7-W4P.js";
54
+ import "../../query-expansion-CeQC9es_.js";
55
55
  import { generateSlugViaLLM } from "../../llm-slug-generator.js";
56
- import { t as resolveHookConfig } from "../../config-DWRgGn0l.js";
56
+ import { t as resolveHookConfig } from "../../hooks-DubLZ3ar.js";
57
57
  import fs from "node:fs/promises";
58
58
  import os from "node:os";
59
59
  import path from "node:path";
60
- import syncFs from "node:fs";
60
+ import fssync from "node:fs";
61
61
  import { DatabaseSync } from "node:sqlite";
62
62
 
63
63
  //#region src/memory/long-term/schema.ts
@@ -262,7 +262,7 @@ var MemoryManager = class {
262
262
  this.agentId = params.agentId;
263
263
  this.userId = params.userId;
264
264
  const dir = path.dirname(params.dbPath);
265
- if (!syncFs.existsSync(dir)) syncFs.mkdirSync(dir, { recursive: true });
265
+ if (!fssync.existsSync(dir)) fssync.mkdirSync(dir, { recursive: true });
266
266
  this.db = new DatabaseSync(params.dbPath);
267
267
  this.initSchema();
268
268
  }
@@ -685,7 +685,9 @@ ${params.sessionContent.slice(-6e3)}`;
685
685
  });
686
686
  await syncLongTermContextFile({
687
687
  manager,
688
- workspaceDir: params.workspaceDir
688
+ workspaceDir: params.workspaceDir,
689
+ userId: params.userId,
690
+ agentId: params.agentId
689
691
  });
690
692
  manager.close();
691
693
  log$1.info(`LTM extraction: +${created} created, ${updated} updated, ${skipped} skipped`);
@@ -731,8 +733,10 @@ async function runDailyCleanupIfDue(params) {
731
733
  }
732
734
  }
733
735
  /**
734
- * Write `memory/long-term-context.md` in the workspace.
735
- * This file is auto-loaded by Squidclaw's bootstrap file system.
736
+ * Write memory context to workspace.
737
+ * - Main/owner users (userId === agentId or unspecified): writes to `memory/long-term-context.md`
738
+ * - Other users: writes to `memory/users/{userId}-context.md`
739
+ * The per-user files are injected at session start by the session-memory bootstrap hook.
736
740
  */
737
741
  async function syncLongTermContextFile(params) {
738
742
  const lines = [
@@ -781,7 +785,11 @@ async function syncLongTermContextFile(params) {
781
785
  lines.push(`*${stats.episodic} events · ${stats.semantic} facts · ${stats.procedural} workflows · ${stats.working} active tasks*`);
782
786
  const memDir = path.join(params.workspaceDir, "memory");
783
787
  await fs.mkdir(memDir, { recursive: true });
784
- await fs.writeFile(path.join(memDir, "long-term-context.md"), lines.join("\n"), "utf-8");
788
+ if (params.userId && params.agentId && params.userId !== params.agentId) {
789
+ const usersDir = path.join(memDir, "users");
790
+ await fs.mkdir(usersDir, { recursive: true });
791
+ await fs.writeFile(path.join(usersDir, `${params.userId}-context.md`), lines.join("\n"), "utf-8");
792
+ } else await fs.writeFile(path.join(memDir, "long-term-context.md"), lines.join("\n"), "utf-8");
785
793
  }
786
794
 
787
795
  //#endregion
@@ -863,9 +871,93 @@ async function findPreviousSessionFile(params) {
863
871
  } catch {}
864
872
  }
865
873
  /**
874
+ * Extract the peer ID from a session key.
875
+ * Format: "agent:main:telegram:direct:8123517797" → "8123517797"
876
+ * Returns null for non-peer sessions (main, default, subagent, cron).
877
+ */
878
+ function extractPeerIdFromSessionKey(sessionKey) {
879
+ const parts = sessionKey.split(":");
880
+ const last = parts[parts.length - 1];
881
+ if (!last || last === "main" || last === "default" || last.startsWith("cron-")) return null;
882
+ return last;
883
+ }
884
+ /**
885
+ * Build a short memory context string for a peer from the long-term DB.
886
+ * Returns null if no memories exist for this peer.
887
+ */
888
+ function buildPeerMemoryContext(dbPath, agentId, peerId) {
889
+ if (!fssync.existsSync(dbPath)) return null;
890
+ try {
891
+ const manager = new MemoryManager({
892
+ dbPath,
893
+ agentId,
894
+ userId: peerId
895
+ });
896
+ const semantic = manager.getActiveSemantic(20);
897
+ const episodic = manager.getRecentEpisodic(10);
898
+ const working = manager.getLatestWorkingMemory(3);
899
+ manager.close();
900
+ if (semantic.length === 0 && episodic.length === 0 && working.length === 0) return null;
901
+ const lines = ["## Your Memory\n*What I remember about you from previous conversations.*\n"];
902
+ if (working.length > 0) {
903
+ lines.push("### 🔄 Resume Here");
904
+ for (const w of working) try {
905
+ const parsed = JSON.parse(w.content);
906
+ const proj = parsed.project ? `**[${parsed.project}]** ` : "";
907
+ const next = parsed.next_step ? ` → Next: ${parsed.next_step}` : "";
908
+ lines.push(`- ${proj}${parsed.task}${next}`);
909
+ } catch {
910
+ lines.push(`- ${w.content}`);
911
+ }
912
+ lines.push("");
913
+ }
914
+ if (semantic.length > 0) {
915
+ lines.push("### What I know about you");
916
+ for (const s of semantic.slice(0, 15)) lines.push(`- ${s.fact}`);
917
+ lines.push("");
918
+ }
919
+ if (episodic.length > 0) {
920
+ lines.push("### Our past conversations");
921
+ for (const e of episodic) {
922
+ const date = new Date(e.timestamp).toISOString().slice(0, 10);
923
+ lines.push(`- [${date}] ${e.summary}`);
924
+ }
925
+ lines.push("");
926
+ }
927
+ return lines.join("\n");
928
+ } catch (err) {
929
+ log.warn("Per-user memory context build failed", {
930
+ error: String(err),
931
+ peerId
932
+ });
933
+ return null;
934
+ }
935
+ }
936
+ /**
866
937
  * Save session context to memory when /new or /reset command is triggered
867
938
  */
868
939
  const saveSessionToMemory = async (event) => {
940
+ if (isAgentBootstrapEvent(event)) {
941
+ const peerId = extractPeerIdFromSessionKey(event.sessionKey);
942
+ if (!peerId) return;
943
+ const context = event.context;
944
+ const cfg = context.cfg;
945
+ if (!cfg) return;
946
+ const agentId = resolveAgentIdFromSessionKey(event.sessionKey);
947
+ const workspaceDir = cfg ? resolveAgentWorkspaceDir(cfg, agentId) : path.join(resolveStateDir(process.env, os.homedir), "workspace");
948
+ const dbPath = path.join(workspaceDir, "memory", "long-term.db");
949
+ const memoryContent = buildPeerMemoryContext(dbPath, agentId ?? "default", peerId);
950
+ if (!memoryContent) return;
951
+ const bootstrapFile = {
952
+ name: "memory.md",
953
+ path: dbPath,
954
+ content: memoryContent,
955
+ missing: false
956
+ };
957
+ context.bootstrapFiles = [...context.bootstrapFiles ?? [], bootstrapFile];
958
+ log.info(`Per-user memory injected for peer ${peerId} (semantic+episodic)`);
959
+ return;
960
+ }
869
961
  const isResetCommand = event.action === "new" || event.action === "reset";
870
962
  if (event.type !== "command" || !isResetCommand) return;
871
963
  try {
@@ -956,6 +1048,7 @@ const saveSessionToMemory = async (event) => {
956
1048
  log.info(`Session context saved to ${relPath}`);
957
1049
  if (sessionContent && cfg) {
958
1050
  const ltmAgentId = agentId ?? "default";
1051
+ const ltmUserId = extractPeerIdFromSessionKey(event.sessionKey) ?? ltmAgentId;
959
1052
  const ltmDbPath = path.join(workspaceDir, "memory", "long-term.db");
960
1053
  setImmediate(() => {
961
1054
  runLongTermExtraction({
@@ -964,13 +1057,13 @@ const saveSessionToMemory = async (event) => {
964
1057
  cfg,
965
1058
  workspaceDir,
966
1059
  agentId: ltmAgentId,
967
- userId: ltmAgentId,
1060
+ userId: ltmUserId,
968
1061
  dbPath: ltmDbPath
969
1062
  }).then(() => runDailyCleanupIfDue({
970
1063
  dbPath: ltmDbPath,
971
1064
  workspaceDir,
972
1065
  agentId: ltmAgentId,
973
- userId: ltmAgentId
1066
+ userId: ltmUserId
974
1067
  })).catch((err) => {
975
1068
  log.warn("Long-term memory extraction/cleanup failed (non-fatal)", { error: String(err) });
976
1069
  });
@@ -1,6 +1,6 @@
1
- import { t as createSubsystemLogger } from "./subsystem-6v7sWnAD.js";
2
- import { S as retryAsync, x as resolveRetryConfig } from "./model-selection-DuNLFQPR.js";
3
- import { r as formatErrorMessage } from "./errors-kkRuS2Cs.js";
1
+ import { t as createSubsystemLogger } from "./subsystem-BJ89YjCN.js";
2
+ import { S as retryAsync, x as resolveRetryConfig } from "./model-selection-BEglDVk0.js";
3
+ import { r as formatErrorMessage } from "./errors-CCLnP2Fs.js";
4
4
  import { RateLimitError } from "@buape/carbon";
5
5
 
6
6
  //#region src/infra/retry-policy.ts
@@ -1,14 +1,14 @@
1
- import { t as createSubsystemLogger, w as resolvePreferredSquidClawTmpDir } from "./subsystem-6v7sWnAD.js";
2
- import { D as isNotFoundPathError, O as isPathInside } from "./workspace-kVMIaBrV.js";
3
- import { a as CONFIG_DIR } from "./logger-CnTSBL7T.js";
4
- import { Ct as isPrivateOrLoopbackIpAddress, St as isLoopbackIpAddress, X as loadConfig, wt as normalizeIpAddress } from "./model-selection-DuNLFQPR.js";
5
- import { a as isErrno } from "./errors-kkRuS2Cs.js";
6
- import { i as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-BoB4X3GD.js";
7
- import { o as isPrivateNetworkAllowedByPolicy, s as resolvePinnedHostnameWithPolicy, t as hasProxyEnvConfigured } from "./proxy-env-D-fike7s.js";
1
+ import { t as createSubsystemLogger, w as resolvePreferredSquidClawTmpDir } from "./subsystem-BJ89YjCN.js";
2
+ import { D as isNotFoundPathError, O as isPathInside } from "./workspace-imNgYePS.js";
3
+ import { a as CONFIG_DIR } from "./logger-onBePS9K.js";
4
+ import { Ct as isPrivateOrLoopbackIpAddress, St as isLoopbackIpAddress, X as loadConfig, wt as normalizeIpAddress } from "./model-selection-BEglDVk0.js";
5
+ import { a as isErrno } from "./errors-CCLnP2Fs.js";
6
+ import { i as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-Dyju4C81.js";
7
+ import { o as isPrivateNetworkAllowedByPolicy, s as resolvePinnedHostnameWithPolicy, t as hasProxyEnvConfigured } from "./proxy-env-CY4kVbFL.js";
8
8
  import fs from "node:fs/promises";
9
9
  import os from "node:os";
10
10
  import path from "node:path";
11
- import syncFs from "node:fs";
11
+ import fssync from "node:fs";
12
12
  import { execFileSync, spawn } from "node:child_process";
13
13
  import { createHmac } from "node:crypto";
14
14
  import net from "node:net";
@@ -1595,7 +1595,7 @@ const CHROMIUM_EXE_NAMES = new Set([
1595
1595
  ]);
1596
1596
  function exists$1(filePath) {
1597
1597
  try {
1598
- return syncFs.existsSync(filePath);
1598
+ return fssync.existsSync(filePath);
1599
1599
  } catch {
1600
1600
  return false;
1601
1601
  }
@@ -1738,7 +1738,7 @@ function findDesktopFilePath(desktopId) {
1738
1738
  }
1739
1739
  function readDesktopExecLine(desktopPath) {
1740
1740
  try {
1741
- const lines = syncFs.readFileSync(desktopPath, "utf8").split(/\r?\n/);
1741
+ const lines = fssync.readFileSync(desktopPath, "utf8").split(/\r?\n/);
1742
1742
  for (const line of lines) if (line.startsWith("Exec=")) return line.slice(5).trim();
1743
1743
  } catch {}
1744
1744
  return null;
@@ -1996,7 +1996,7 @@ function resolveBrowserExecutableForPlatform(resolved, platform) {
1996
1996
  const LSOF_CANDIDATES = process.platform === "darwin" ? ["/usr/sbin/lsof", "/usr/bin/lsof"] : ["/usr/bin/lsof", "/usr/sbin/lsof"];
1997
1997
  function resolveLsofCommandSync() {
1998
1998
  for (const candidate of LSOF_CANDIDATES) try {
1999
- syncFs.accessSync(candidate, syncFs.constants.X_OK);
1999
+ fssync.accessSync(candidate, fssync.constants.X_OK);
2000
2000
  return candidate;
2001
2001
  } catch {}
2002
2002
  return "lsof";
@@ -2041,8 +2041,8 @@ function decoratedMarkerPath(userDataDir) {
2041
2041
  }
2042
2042
  function safeReadJson(filePath) {
2043
2043
  try {
2044
- if (!syncFs.existsSync(filePath)) return null;
2045
- const raw = syncFs.readFileSync(filePath, "utf-8");
2044
+ if (!fssync.existsSync(filePath)) return null;
2045
+ const raw = fssync.readFileSync(filePath, "utf-8");
2046
2046
  const parsed = JSON.parse(raw);
2047
2047
  if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) return null;
2048
2048
  return parsed;
@@ -2051,8 +2051,8 @@ function safeReadJson(filePath) {
2051
2051
  }
2052
2052
  }
2053
2053
  function safeWriteJson(filePath, data) {
2054
- syncFs.mkdirSync(path.dirname(filePath), { recursive: true });
2055
- syncFs.writeFileSync(filePath, JSON.stringify(data, null, 2));
2054
+ fssync.mkdirSync(path.dirname(filePath), { recursive: true });
2055
+ fssync.writeFileSync(filePath, JSON.stringify(data, null, 2));
2056
2056
  }
2057
2057
  function setDeep(obj, keys, value) {
2058
2058
  let node = obj;
@@ -2179,7 +2179,7 @@ function decorateSquidClawProfile(userDataDir, opts) {
2179
2179
  }
2180
2180
  safeWriteJson(preferencesPath, prefs);
2181
2181
  try {
2182
- syncFs.writeFileSync(decoratedMarkerPath(userDataDir), `${Date.now()}\n`, "utf-8");
2182
+ fssync.writeFileSync(decoratedMarkerPath(userDataDir), `${Date.now()}\n`, "utf-8");
2183
2183
  } catch {}
2184
2184
  }
2185
2185
  function ensureProfileCleanExit(userDataDir) {
@@ -2195,7 +2195,7 @@ function ensureProfileCleanExit(userDataDir) {
2195
2195
  const log = createSubsystemLogger("browser").child("chrome");
2196
2196
  function exists(filePath) {
2197
2197
  try {
2198
- return syncFs.existsSync(filePath);
2198
+ return fssync.existsSync(filePath);
2199
2199
  } catch {
2200
2200
  return false;
2201
2201
  }
@@ -2293,7 +2293,7 @@ async function launchSquidClawChrome(resolved, profile) {
2293
2293
  const exe = resolveBrowserExecutable(resolved);
2294
2294
  if (!exe) throw new Error("No supported browser found (Chrome/Brave/Edge/Chromium on macOS, Linux, or Windows).");
2295
2295
  const userDataDir = resolveSquidClawUserDataDir(profile.name);
2296
- syncFs.mkdirSync(userDataDir, { recursive: true });
2296
+ fssync.mkdirSync(userDataDir, { recursive: true });
2297
2297
  const needsDecorate = !isProfileDecorated(userDataDir, profile.name, (profile.color ?? DEFAULT_SQUIDCLAW_BROWSER_COLOR).toUpperCase());
2298
2298
  const spawnOnce = () => {
2299
2299
  const args = [
@@ -1,7 +1,7 @@
1
- import { D as isPlainObject, u as escapeRegExp } from "./logger-CnTSBL7T.js";
2
- import { Jt as getActivePluginRegistry, br as DEFAULT_MODEL, u as resolveConfiguredModelRef, xr as DEFAULT_PROVIDER } from "./model-selection-DuNLFQPR.js";
3
- import { f as listChannelDocks, r as listThinkingLevels } from "./thinking-B75CXkTT.js";
4
- import { r as normalizeChannelId } from "./plugins-DvejjZnJ.js";
1
+ import { D as isPlainObject, u as escapeRegExp } from "./logger-onBePS9K.js";
2
+ import { Jt as getActivePluginRegistry, br as DEFAULT_MODEL, u as resolveConfiguredModelRef, xr as DEFAULT_PROVIDER } from "./model-selection-BEglDVk0.js";
3
+ import { f as listChannelDocks, r as listThinkingLevels } from "./thinking-BtewZXu7.js";
4
+ import { r as normalizeChannelId } from "./plugins-Dr2YhZ4p.js";
5
5
 
6
6
  //#region src/config/commands.ts
7
7
  function resolveAutoDefault(providerId) {
@@ -1,19 +1,19 @@
1
- import { c as resolveStateDir } from "./paths-DA5srn0U.js";
2
- import { t as createSubsystemLogger, u as logVerbose } from "./subsystem-6v7sWnAD.js";
3
- import { G as normalizeAccountId, K as normalizeOptionalAccountId } from "./workspace-kVMIaBrV.js";
4
- import { Jt as getActivePluginRegistry, Xt as getActivePluginRegistryVersion } from "./model-selection-DuNLFQPR.js";
5
- import { r as createInternalHookEvent, s as triggerInternalHook } from "./legacy-names-aGJJuzM_.js";
6
- import { d as getChannelDock } from "./thinking-B75CXkTT.js";
7
- import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-DfbMVF9y.js";
8
- import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-DvejjZnJ.js";
1
+ import { c as resolveStateDir } from "./paths-ZhiQAuKk.js";
2
+ import { t as createSubsystemLogger, u as logVerbose } from "./subsystem-BJ89YjCN.js";
3
+ import { G as normalizeAccountId, K as normalizeOptionalAccountId } from "./workspace-imNgYePS.js";
4
+ import { Jt as getActivePluginRegistry, Xt as getActivePluginRegistryVersion } from "./model-selection-BEglDVk0.js";
5
+ import { r as createInternalHookEvent, s as triggerInternalHook } from "./legacy-names-CDxprteD.js";
6
+ import { d as getChannelDock } from "./thinking-BtewZXu7.js";
7
+ import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-9NF8L9Uh.js";
8
+ import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-Dr2YhZ4p.js";
9
9
  import { n as generateSecureUuid } from "./secure-random-CXrBi7Jq.js";
10
10
  import { r as parseTelegramTarget } from "./targets-BiE9e9-P.js";
11
- import { H as resolveMirroredTranscriptText, V as appendAssistantMessageToSessionTranscript, ct as parseInlineDirectives, i as isMessagingToolDuplicate } from "./pi-embedded-helpers-Di58J7Eh.js";
12
- import { i as getAgentScopedMediaLocalRoots } from "./fetch-DP-JjB6Z.js";
13
- import { d as chunkMarkdownTextWithMode, h as resolveTextChunkLimit, l as chunkByParagraph, m as resolveChunkMode, s as resolveMarkdownTableMode, v as parseFenceSpans } from "./ir-CKK03mBV.js";
14
- import { c as markdownToSignalTextChunks, t as sendMessageSignal } from "./send-dTQd-IyJ.js";
11
+ import { H as resolveMirroredTranscriptText, V as appendAssistantMessageToSessionTranscript, ct as parseInlineDirectives, i as isMessagingToolDuplicate } from "./pi-embedded-helpers-BYajLWsL.js";
12
+ import { i as getAgentScopedMediaLocalRoots } from "./fetch-cQwsz0rO.js";
13
+ import { d as chunkMarkdownTextWithMode, h as resolveTextChunkLimit, l as chunkByParagraph, m as resolveChunkMode, s as resolveMarkdownTableMode, v as parseFenceSpans } from "./ir-rIK14_OY.js";
14
+ import { c as markdownToSignalTextChunks, t as sendMessageSignal } from "./send-5d2Ieqww.js";
15
15
  import path from "node:path";
16
- import syncFs from "node:fs";
16
+ import fssync from "node:fs";
17
17
 
18
18
  //#region src/plugins/hooks.ts
19
19
  /**
@@ -1081,11 +1081,11 @@ function resolveFailedDir(stateDir) {
1081
1081
  /** Ensure the queue directory (and failed/ subdirectory) exist. */
1082
1082
  async function ensureQueueDir(stateDir) {
1083
1083
  const queueDir = resolveQueueDir(stateDir);
1084
- await syncFs.promises.mkdir(queueDir, {
1084
+ await fssync.promises.mkdir(queueDir, {
1085
1085
  recursive: true,
1086
1086
  mode: 448
1087
1087
  });
1088
- await syncFs.promises.mkdir(resolveFailedDir(stateDir), {
1088
+ await fssync.promises.mkdir(resolveFailedDir(stateDir), {
1089
1089
  recursive: true,
1090
1090
  mode: 448
1091
1091
  });
@@ -1112,18 +1112,18 @@ async function enqueueDelivery(params, stateDir) {
1112
1112
  const filePath = path.join(queueDir, `${id}.json`);
1113
1113
  const tmp = `${filePath}.${process.pid}.tmp`;
1114
1114
  const json = JSON.stringify(entry, null, 2);
1115
- await syncFs.promises.writeFile(tmp, json, {
1115
+ await fssync.promises.writeFile(tmp, json, {
1116
1116
  encoding: "utf-8",
1117
1117
  mode: 384
1118
1118
  });
1119
- await syncFs.promises.rename(tmp, filePath);
1119
+ await fssync.promises.rename(tmp, filePath);
1120
1120
  return id;
1121
1121
  }
1122
1122
  /** Remove a successfully delivered entry from the queue. */
1123
1123
  async function ackDelivery(id, stateDir) {
1124
1124
  const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
1125
1125
  try {
1126
- await syncFs.promises.unlink(filePath);
1126
+ await fssync.promises.unlink(filePath);
1127
1127
  } catch (err) {
1128
1128
  if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) !== "ENOENT") throw err;
1129
1129
  }
@@ -1131,17 +1131,17 @@ async function ackDelivery(id, stateDir) {
1131
1131
  /** Update a queue entry after a failed delivery attempt. */
1132
1132
  async function failDelivery(id, error, stateDir) {
1133
1133
  const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
1134
- const raw = await syncFs.promises.readFile(filePath, "utf-8");
1134
+ const raw = await fssync.promises.readFile(filePath, "utf-8");
1135
1135
  const entry = JSON.parse(raw);
1136
1136
  entry.retryCount += 1;
1137
1137
  entry.lastAttemptAt = Date.now();
1138
1138
  entry.lastError = error;
1139
1139
  const tmp = `${filePath}.${process.pid}.tmp`;
1140
- await syncFs.promises.writeFile(tmp, JSON.stringify(entry, null, 2), {
1140
+ await fssync.promises.writeFile(tmp, JSON.stringify(entry, null, 2), {
1141
1141
  encoding: "utf-8",
1142
1142
  mode: 384
1143
1143
  });
1144
- await syncFs.promises.rename(tmp, filePath);
1144
+ await fssync.promises.rename(tmp, filePath);
1145
1145
  }
1146
1146
 
1147
1147
  //#endregion
@@ -0,0 +1,36 @@
1
+ import "./run-with-concurrency-BaKbvnLu.js";
2
+ import "./paths-ZhiQAuKk.js";
3
+ import "./subsystem-BJ89YjCN.js";
4
+ import "./workspace-imNgYePS.js";
5
+ import "./logger-onBePS9K.js";
6
+ import "./model-selection-BEglDVk0.js";
7
+ import "./github-copilot-token-B8Wx9FgQ.js";
8
+ import "./legacy-names-CDxprteD.js";
9
+ import "./thinking-BtewZXu7.js";
10
+ import "./tokens-9NF8L9Uh.js";
11
+ import "./plugins-Dr2YhZ4p.js";
12
+ import "./accounts-f6iuhXVV.js";
13
+ import { t as deliverOutboundPayloads } from "./deliver-RetmM0fn.js";
14
+ import "./accounts-A_9Khwyv.js";
15
+ import "./image-ops-CumBuu0G.js";
16
+ import "./pi-embedded-helpers-BYajLWsL.js";
17
+ import "./chrome-BvWxjtGl.js";
18
+ import "./frontmatter-vSrur-r-.js";
19
+ import "./skills-CZ1lBgEC.js";
20
+ import "./path-alias-guards-CNSVgZrJ.js";
21
+ import "./redact-rnJm_Z5E.js";
22
+ import "./errors-CCLnP2Fs.js";
23
+ import "./fs-safe-Dyju4C81.js";
24
+ import "./proxy-env-CY4kVbFL.js";
25
+ import "./store-Dcz4tfzS.js";
26
+ import "./accounts-Cz_Fvguv.js";
27
+ import "./paths-CUF9-Xea.js";
28
+ import "./tool-images-DDvIxFgD.js";
29
+ import "./fetch-cQwsz0rO.js";
30
+ import "./fetch-guard-BkqLWF6M.js";
31
+ import "./ir-rIK14_OY.js";
32
+ import "./fetch-tZXOZ9FV.js";
33
+ import "./send-5d2Ieqww.js";
34
+ import "./outbound-attachment-CtS0mrgi.js";
35
+
36
+ export { deliverOutboundPayloads };
@@ -0,0 +1,26 @@
1
+ import "./run-with-concurrency-BaKbvnLu.js";
2
+ import "./paths-ZhiQAuKk.js";
3
+ import "./subsystem-BJ89YjCN.js";
4
+ import "./workspace-imNgYePS.js";
5
+ import "./logger-onBePS9K.js";
6
+ import "./model-selection-BEglDVk0.js";
7
+ import "./github-copilot-token-B8Wx9FgQ.js";
8
+ import "./legacy-names-CDxprteD.js";
9
+ import "./plugins-Dr2YhZ4p.js";
10
+ import "./accounts-f6iuhXVV.js";
11
+ import { h as sendMessageDiscord } from "./send-JKHC2tCh.js";
12
+ import "./image-ops-CumBuu0G.js";
13
+ import "./path-alias-guards-CNSVgZrJ.js";
14
+ import "./redact-rnJm_Z5E.js";
15
+ import "./errors-CCLnP2Fs.js";
16
+ import "./fs-safe-Dyju4C81.js";
17
+ import "./proxy-env-CY4kVbFL.js";
18
+ import "./fetch-cQwsz0rO.js";
19
+ import "./fetch-guard-BkqLWF6M.js";
20
+ import "./ir-rIK14_OY.js";
21
+ import "./render-DW7AcFdD.js";
22
+ import "./fetch-tZXOZ9FV.js";
23
+ import "./channel-activity-Byj9--iR.js";
24
+ import "./tables-8uP1Il18.js";
25
+
26
+ export { sendMessageDiscord };
@@ -0,0 +1,25 @@
1
+ import "./run-with-concurrency-BaKbvnLu.js";
2
+ import "./paths-ZhiQAuKk.js";
3
+ import "./subsystem-BJ89YjCN.js";
4
+ import "./workspace-imNgYePS.js";
5
+ import "./logger-onBePS9K.js";
6
+ import "./model-selection-BEglDVk0.js";
7
+ import "./github-copilot-token-B8Wx9FgQ.js";
8
+ import "./legacy-names-CDxprteD.js";
9
+ import "./plugins-Dr2YhZ4p.js";
10
+ import "./accounts-f6iuhXVV.js";
11
+ import "./image-ops-CumBuu0G.js";
12
+ import "./path-alias-guards-CNSVgZrJ.js";
13
+ import "./fs-safe-Dyju4C81.js";
14
+ import "./proxy-env-CY4kVbFL.js";
15
+ import "./store-Dcz4tfzS.js";
16
+ import "./accounts-Cz_Fvguv.js";
17
+ import "./fetch-cQwsz0rO.js";
18
+ import "./fetch-guard-BkqLWF6M.js";
19
+ import "./ir-rIK14_OY.js";
20
+ import "./render-DW7AcFdD.js";
21
+ import "./tables-8uP1Il18.js";
22
+ import "./outbound-attachment-CtS0mrgi.js";
23
+ import { t as sendMessageIMessage } from "./send-Bz835W6s.js";
24
+
25
+ export { sendMessageIMessage };
@@ -0,0 +1,24 @@
1
+ import "./run-with-concurrency-BaKbvnLu.js";
2
+ import "./paths-ZhiQAuKk.js";
3
+ import "./subsystem-BJ89YjCN.js";
4
+ import "./workspace-imNgYePS.js";
5
+ import "./logger-onBePS9K.js";
6
+ import "./model-selection-BEglDVk0.js";
7
+ import "./github-copilot-token-B8Wx9FgQ.js";
8
+ import "./legacy-names-CDxprteD.js";
9
+ import "./plugins-Dr2YhZ4p.js";
10
+ import "./accounts-f6iuhXVV.js";
11
+ import "./accounts-A_9Khwyv.js";
12
+ import "./image-ops-CumBuu0G.js";
13
+ import "./path-alias-guards-CNSVgZrJ.js";
14
+ import "./fs-safe-Dyju4C81.js";
15
+ import "./proxy-env-CY4kVbFL.js";
16
+ import "./store-Dcz4tfzS.js";
17
+ import "./fetch-cQwsz0rO.js";
18
+ import "./fetch-guard-BkqLWF6M.js";
19
+ import "./ir-rIK14_OY.js";
20
+ import "./fetch-tZXOZ9FV.js";
21
+ import { t as sendMessageSignal } from "./send-5d2Ieqww.js";
22
+ import "./outbound-attachment-CtS0mrgi.js";
23
+
24
+ export { sendMessageSignal };
@@ -0,0 +1,22 @@
1
+ import "./run-with-concurrency-BaKbvnLu.js";
2
+ import "./paths-ZhiQAuKk.js";
3
+ import "./subsystem-BJ89YjCN.js";
4
+ import "./workspace-imNgYePS.js";
5
+ import "./logger-onBePS9K.js";
6
+ import "./model-selection-BEglDVk0.js";
7
+ import "./github-copilot-token-B8Wx9FgQ.js";
8
+ import "./legacy-names-CDxprteD.js";
9
+ import "./tokens-9NF8L9Uh.js";
10
+ import "./plugins-Dr2YhZ4p.js";
11
+ import "./accounts-f6iuhXVV.js";
12
+ import { t as sendMessageSlack } from "./send-rbU7BzyJ.js";
13
+ import "./image-ops-CumBuu0G.js";
14
+ import "./path-alias-guards-CNSVgZrJ.js";
15
+ import "./fs-safe-Dyju4C81.js";
16
+ import "./proxy-env-CY4kVbFL.js";
17
+ import "./fetch-cQwsz0rO.js";
18
+ import "./fetch-guard-BkqLWF6M.js";
19
+ import "./ir-rIK14_OY.js";
20
+ import "./render-DW7AcFdD.js";
21
+
22
+ export { sendMessageSlack };