wednesdayai 0.4.12-dev.703 → 0.4.12-dev.705

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 (257) hide show
  1. package/README.md +17 -37
  2. package/dist/{agent-scope-F7drwIgy.js → agent-scope-BGnYrze_.js} +3 -3
  3. package/dist/{agent-turn-runner-nWCLOjLp.js → agent-turn-runner-BpzPb_LQ.js} +5 -5
  4. package/dist/{agent-turn-runner-B-7YUyze.js → agent-turn-runner-CLScSQoW.js} +3 -3
  5. package/dist/{api-key-rotation-BP2NSDlP.js → api-key-rotation-C04Xj5nW.js} +2 -2
  6. package/dist/{audio-preflight-BqDFj2Ws.js → audio-preflight-BXfuOHLv.js} +27 -27
  7. package/dist/{audio-preflight-BXVADGV1.js → audio-preflight-D9KtmJay.js} +5 -5
  8. package/dist/{audio-transcription-runner-SSnrYiq8.js → audio-transcription-runner-BA6t6iSO.js} +11 -11
  9. package/dist/{audio-transcription-runner-rzX-3s-8.js → audio-transcription-runner-CdwSTFuT.js} +1 -1
  10. package/dist/build-info.json +3 -3
  11. package/dist/bundled/boot-md/handler.js +58 -58
  12. package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
  13. package/dist/bundled/command-logger/handler.js +2 -2
  14. package/dist/bundled/session-journal/handler.js +58 -58
  15. package/dist/bundled/session-memory/handler.js +58 -58
  16. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  17. package/dist/{channel-activity-IR8qx5kt.js → channel-activity-BVqxcijC.js} +3 -3
  18. package/dist/{chrome-BWMtx0mE.js → chrome-CGClRujb.js} +25 -25
  19. package/dist/{chrome-Dc923fsB.js → chrome-CTyhKrVS.js} +6 -6
  20. package/dist/{chunk-CuqMDQNC.js → chunk-odx78Acg.js} +3 -3
  21. package/dist/{command-queue-9A3kOAZN.js → command-queue-DKPv7dYN.js} +1 -1
  22. package/dist/{command-queue-Dbv34rZN.js → command-queue-o1awgKih.js} +1 -1
  23. package/dist/{commands-registry-gy0GLwWR.js → commands-registry-BEs7FrhT.js} +2 -2
  24. package/dist/{deliver-Co_a29nB.js → deliver-Bs58Ncxn.js} +1 -1
  25. package/dist/{deliver-C4Z63vgB.js → deliver-DrmyBByg.js} +24 -24
  26. package/dist/{diagnostic-Cfb2ONnX.js → diagnostic-Ba0VUozS.js} +1 -1
  27. package/dist/{diagnostic-BHAlpG8z.js → diagnostic-DmBrpD9P.js} +5 -5
  28. package/dist/extensionAPI.js +12 -12
  29. package/dist/{fetch-JP3BwRE3.js → fetch-DvY0ue_6.js} +8 -8
  30. package/dist/{fetch-guard-C4lEpM_9.js → fetch-guard-ri_5BFBs.js} +3 -3
  31. package/dist/{frontmatter-CNGr4YHw.js → frontmatter-Cw33lRgS.js} +3 -3
  32. package/dist/{fs-safe-BJgtqC5p.js → fs-safe-BNnzOM9C.js} +4 -4
  33. package/dist/{github-copilot-token-zGOMIGSh.js → github-copilot-token-WSjo05vB.js} +7 -7
  34. package/dist/{image-ops-B--THHJC.js → image-ops-pgAg_j4y.js} +1 -1
  35. package/dist/{ir-tsZDlE0-.js → ir-BHU3uh9A.js} +5 -5
  36. package/dist/{legacy-names-CBlBMsC7.js → legacy-names-DFLXH7MA.js} +1 -1
  37. package/dist/llm-slug-generator.js +58 -58
  38. package/dist/{logger-D7ojOVG0.js → logger-CkGiQRm7.js} +1 -1
  39. package/dist/{manager-nGC13TuB.js → manager-BUV9VkNZ.js} +12 -12
  40. package/dist/{markdown-tables-D9T2Ko0c.js → markdown-tables-D6t-eoFa.js} +2 -2
  41. package/dist/{model-selection-DZMms8JA.js → model-selection-DhXu1Q4_.js} +82 -82
  42. package/dist/{outbound-attachment-6FKwUHkE.js → outbound-attachment-C6U86gij.js} +2 -2
  43. package/dist/{outbound-message-hooks-CN_2VR3u.js → outbound-message-hooks-ClZq2IiI.js} +3 -3
  44. package/dist/{path-alias-guards-Bpl7jW13.js → path-alias-guards-y8gxUSMu.js} +1 -1
  45. package/dist/{paths-C6TxBCvO.js → paths-Cvc9EM8Y.js} +5 -5
  46. package/dist/{pi-embedded-CQloEk2m.js → pi-embedded-Cklnkha9.js} +167 -167
  47. package/dist/{pi-embedded-tUqWFr9c.js → pi-embedded-DHw7Di5R.js} +28 -28
  48. package/dist/{pi-embedded-helpers-BvZj1LkK.js → pi-embedded-helpers-4qLKF7Ti.js} +3 -3
  49. package/dist/{pi-embedded-helpers-BEYLnz1t.js → pi-embedded-helpers-DYlkCsNL.js} +24 -24
  50. package/dist/{pi-embedded-utils-BgW57VPl.js → pi-embedded-utils-CHJI4-m4.js} +1 -1
  51. package/dist/{pi-embedded-utils-Cff_00Q1.js → pi-embedded-utils-DGuyV3oI.js} +3 -3
  52. package/dist/{pi-model-discovery-DWGauIf8.js → pi-model-discovery-C3dMscCT.js} +7 -7
  53. package/dist/plugin-sdk/{agent-scope-oQ89afhJ.js → agent-scope-DuxkVlZ-.js} +2 -2
  54. package/dist/plugin-sdk/agent-turn-execute-BDRcxLgW.js +61 -0
  55. package/dist/plugin-sdk/{agent-turn-runner-CDH2OClz.js → agent-turn-runner-BJWQz-gA.js} +6 -6
  56. package/dist/plugin-sdk/agent-turn-runner-CzRmfMqm.js +11 -0
  57. package/dist/plugin-sdk/{api-key-rotation-DBFUeaE4.js → api-key-rotation-BYZhrCU3.js} +2 -2
  58. package/dist/plugin-sdk/{artifacts-CsH5S6T7.js → artifacts-BR0G7jgh.js} +1 -1
  59. package/dist/plugin-sdk/{audio-preflight-DT1RNzj0.js → audio-preflight-BOlD50bz.js} +2 -2
  60. package/dist/plugin-sdk/audio-preflight-CTGR5Hsd.js +28 -0
  61. package/dist/plugin-sdk/{audio-transcription-runner-CNdDOHDD.js → audio-transcription-runner-DEwdraKH.js} +10 -10
  62. package/dist/plugin-sdk/{auth-profiles-C5n3KjJR.js → auth-profiles-B80FVM6n.js} +5 -5
  63. package/dist/plugin-sdk/{channel-activity-CQ4sk3hC.js → channel-activity-CPP4IJ8j.js} +3 -3
  64. package/dist/plugin-sdk/{chrome-DgUMKrr1.js → chrome-Dio0wrAv.js} +4 -4
  65. package/dist/plugin-sdk/{chunk-BIyxDSyO.js → chunk-BjBBoHSQ.js} +6 -6
  66. package/dist/plugin-sdk/{chunk-CeoUVs5K.js → chunk-CXNOkk_w.js} +3 -3
  67. package/dist/plugin-sdk/{command-detection-QNHptKSJ.js → command-detection-C2mTIN0M.js} +85 -85
  68. package/dist/plugin-sdk/{command-queue-DNiG-3U6.js → command-queue-DRNi0Iq1.js} +8 -8
  69. package/dist/plugin-sdk/{command-queue-Df7MhgUx.js → command-queue-oI3bsfFo.js} +1 -1
  70. package/dist/plugin-sdk/{commands-registry-CA1olmQZ.js → commands-registry-B5LWTAu3.js} +2 -2
  71. package/dist/plugin-sdk/{commands-registry-osjh0Rhk.js → commands-registry-CjulKOu8.js} +6 -6
  72. package/dist/plugin-sdk/{config-DOY8NkH8.js → config-CFfrK92W.js} +7 -7
  73. package/dist/plugin-sdk/deliver-Dk3XJhoF.js +32 -0
  74. package/dist/plugin-sdk/{deliver-Jovxpus7.js → deliver-NV7I9o8B.js} +11 -11
  75. package/dist/plugin-sdk/{diagnostic-DHcuLQ06.js → diagnostic-5AC0iM1n.js} +7 -7
  76. package/dist/plugin-sdk/{diagnostic-BwHttr8I.js → diagnostic-CLEhveRO.js} +5 -5
  77. package/dist/plugin-sdk/{fetch-guard-D39-ff0z.js → fetch-guard-BzugbfpZ.js} +3 -3
  78. package/dist/plugin-sdk/{fs-safe-DwFzR-43.js → fs-safe-BbukgmJs.js} +3 -3
  79. package/dist/plugin-sdk/{hook-runner-global-7dXl1XmR.js → hook-runner-global-B14CF25I.js} +2 -2
  80. package/dist/plugin-sdk/{image-ops-BRc6SYbt.js → image-ops-Deabe2XL.js} +1 -1
  81. package/dist/plugin-sdk/index.js +54 -54
  82. package/dist/plugin-sdk/{ir-C76Butsn.js → ir-DvNnbzRJ.js} +5 -5
  83. package/dist/plugin-sdk/{local-roots-Bj6ufCy4.js → local-roots-K7o6fRdl.js} +7 -7
  84. package/dist/plugin-sdk/{logger-k-GQ-YhX.js → logger-qbelrLm7.js} +1 -1
  85. package/dist/plugin-sdk/{manager-D_xKED_P.js → manager-CtpBjZ6_.js} +8 -8
  86. package/dist/plugin-sdk/manager-nDSdkr_r.js +16 -0
  87. package/dist/plugin-sdk/markdown-tables-4LuMGoDL.js +10 -0
  88. package/dist/plugin-sdk/{markdown-tables-nC8ncMEv.js → markdown-tables-DK-jmrsM.js} +2 -2
  89. package/dist/plugin-sdk/{outbound-attachment-DYb2ouJr.js → outbound-attachment-765m3HRN.js} +2 -2
  90. package/dist/plugin-sdk/{path-alias-guards-DuUj5pOa.js → path-alias-guards-DXgdWlVV.js} +1 -1
  91. package/dist/plugin-sdk/{pi-embedded-helpers-DxreQHBo.js → pi-embedded-helpers-BHyLigAA.js} +11 -11
  92. package/dist/plugin-sdk/{pi-embedded-utils-CuF2a8B_.js → pi-embedded-utils-Bm-VMQvJ.js} +3 -3
  93. package/dist/plugin-sdk/{pi-model-discovery-vyiJ0WCg.js → pi-model-discovery-BHxWerwc.js} +6 -6
  94. package/dist/plugin-sdk/{pi-model-discovery-lbme_6ZY.js → pi-model-discovery-CtIzq4SZ.js} +1 -1
  95. package/dist/plugin-sdk/provider-dispatcher-W1pkLKIg.js +61 -0
  96. package/dist/plugin-sdk/provider-image-BXeNvw5h.js +22 -0
  97. package/dist/plugin-sdk/{provider-image-DmOszP1h.js → provider-image-DdGFXNcm.js} +5 -5
  98. package/dist/plugin-sdk/proxy-Bem5Ja8O.js +7 -0
  99. package/dist/plugin-sdk/{proxy-fetch-DR97MzBf.js → proxy-fetch-tDXPwHrY.js} +1 -1
  100. package/dist/plugin-sdk/{proxy-sWIy8aWT.js → proxy-vuhge5P0.js} +1 -1
  101. package/dist/plugin-sdk/{pw-ai-Co1cAo_x.js → pw-ai-CVqwMy3L.js} +10 -10
  102. package/dist/plugin-sdk/{qmd-manager-BUZkDo-2.js → qmd-manager-CbKMbQqy.js} +8 -8
  103. package/dist/plugin-sdk/{query-expansion-Dd_SnHAV.js → query-expansion-Czn3UuZE.js} +3 -3
  104. package/dist/plugin-sdk/{recorder-fSGqEPiN.js → recorder-B8eUr4qo.js} +4 -4
  105. package/dist/plugin-sdk/{redact-BqJzVqZS.js → redact-BN7L2dg6.js} +1 -1
  106. package/dist/plugin-sdk/replies-BOUte8J3.js +25 -0
  107. package/dist/plugin-sdk/{replies-D1R5YpXH.js → replies-Dq8vnfCv.js} +4 -4
  108. package/dist/plugin-sdk/{reply-directives-C2CFDtpy.js → reply-directives-D-GVQbm2.js} +2 -2
  109. package/dist/plugin-sdk/{reply-prefix-Vmv16GEM.js → reply-prefix-BnhAAeIw.js} +1 -1
  110. package/dist/plugin-sdk/reply-prefix-CyT5pXEH.js +7 -0
  111. package/dist/plugin-sdk/{resolve-route-Bm-xctoN.js → resolve-route-B-_3aGVu.js} +6 -6
  112. package/dist/plugin-sdk/{resolve-route-Cpk4y9HZ.js → resolve-route-DzFbdLUE.js} +4 -4
  113. package/dist/plugin-sdk/runs-BgcfLuqD.js +25 -0
  114. package/dist/plugin-sdk/{runs-B08Pf58t.js → runs-GYfRm1wm.js} +7 -7
  115. package/dist/plugin-sdk/{send-9tt88Cos.js → send-B5n5UHEj.js} +19 -19
  116. package/dist/plugin-sdk/send-CRsXDc8m.js +24 -0
  117. package/dist/plugin-sdk/{send-BQ2_sGJc.js → send-CilSx61t.js} +13 -13
  118. package/dist/plugin-sdk/{send-DGLXr2LH.js → send-D9b2K_jS.js} +8 -8
  119. package/dist/plugin-sdk/send-DGIuROFn.js +23 -0
  120. package/dist/plugin-sdk/send-DWgKIysx.js +27 -0
  121. package/dist/plugin-sdk/{send-BLYC96aw.js → send-Dp2tRhNb.js} +6 -6
  122. package/dist/plugin-sdk/send-RwdG7mzi.js +25 -0
  123. package/dist/plugin-sdk/{send-DK8kuk3o.js → send-Y056GDch.js} +6 -6
  124. package/dist/plugin-sdk/{send-CFqkd3U6.js → send-xTho5Weh.js} +7 -7
  125. package/dist/plugin-sdk/{session-meta-Bgk5sfbA.js → session-meta-D7wvEO0P.js} +2 -2
  126. package/dist/plugin-sdk/session-meta-J9PgeT7E.js +10 -0
  127. package/dist/plugin-sdk/{skill-commands-BYl06bB2.js → skill-commands-C6GZcZCO.js} +5 -5
  128. package/dist/plugin-sdk/skill-commands-DBvWVUnQ.js +14 -0
  129. package/dist/plugin-sdk/{skills-Cxhgf7RS.js → skills-CjJsBgbl.js} +6 -6
  130. package/dist/plugin-sdk/{ssrf-C6tFUn-U.js → ssrf-DR9xWewb.js} +2 -2
  131. package/dist/plugin-sdk/{store-yyHwOn7K.js → store-Bt0zQRQl.js} +2 -2
  132. package/dist/plugin-sdk/subagent-registry-79qX0iO4.js +61 -0
  133. package/dist/plugin-sdk/{subsystem-D7nM2AoW.js → subsystem-B8AkdtCZ.js} +4 -4
  134. package/dist/plugin-sdk/{tables-CAn8Uiv7.js → tables-DHN3rZ24.js} +1 -1
  135. package/dist/plugin-sdk/{tokens-cnVX9Q87.js → tokens-D7bndIFM.js} +1 -1
  136. package/dist/plugin-sdk/{tool-loop-detection-fff6kmkP.js → tool-loop-detection-VTqBeC_h.js} +1 -1
  137. package/dist/plugin-sdk/user-run-recording-B_LG8df9.js +11 -0
  138. package/dist/plugin-sdk/{user-run-recording-BgXqB78i.js → user-run-recording-CQENQmgV.js} +2 -2
  139. package/dist/{provider-image-tTArxp_m.js → provider-image-BfLbSFcG.js} +5 -5
  140. package/dist/{provider-image-Cn_5jslf.js → provider-image-CtDp01Fm.js} +1 -1
  141. package/dist/{proxy-B2bQVN0b.js → proxy-CJMip70P.js} +1 -1
  142. package/dist/{proxy-env-b209l87p.js → proxy-env-BBllD0qI.js} +2 -2
  143. package/dist/{proxy-fetch-CNzfDJKL.js → proxy-fetch-C4a8MwFs.js} +1 -1
  144. package/dist/{pw-ai-Dt4AEbVC.js → pw-ai-5UgHGA7x.js} +14 -14
  145. package/dist/{pw-ai-CZUfhsmk.js → pw-ai-Dmtqq3b6.js} +1 -1
  146. package/dist/{qmd-manager-Bk4YLrFZ.js → qmd-manager-yHQXCPr6.js} +10 -10
  147. package/dist/{query-expansion-DKwGIeDe.js → query-expansion-DJVKyeDw.js} +5 -5
  148. package/dist/{recorder-BWzqo70i.js → recorder-BESd9rZt.js} +4 -4
  149. package/dist/{redact-BFxpQajB.js → redact-D8fpDrdk.js} +1 -1
  150. package/dist/{replies-BKYeJ-lN.js → replies-LVVUM-gg.js} +4 -4
  151. package/dist/{reply-directives-MtuQmZ3x.js → reply-directives-CZPJmH1t.js} +2 -2
  152. package/dist/{reply-prefix-BivNEMUT.js → reply-prefix-r6A18fKP.js} +1 -1
  153. package/dist/{resolve-route-BxKedPkn.js → resolve-route-Cnxsmfj5.js} +5 -5
  154. package/dist/{run-with-concurrency-DNTVyFZm.js → run-with-concurrency-VoSJL2UI.js} +4 -4
  155. package/dist/{runs-B5jL-JGA.js → runs-BKXuFolN.js} +3 -3
  156. package/dist/{runs-Bfd3xo6Q.js → runs-Dgl9DXVG.js} +8 -8
  157. package/dist/{send-Bo-flx6B.js → send-BWsYS2bT.js} +1 -1
  158. package/dist/{send-DEMG5oDJ.js → send-C0_Cahgz.js} +8 -8
  159. package/dist/{send-is_ecMF8.js → send-C6j-WuJq.js} +25 -25
  160. package/dist/{send-DWgzW_VE.js → send-CyDzxMSP.js} +6 -6
  161. package/dist/{send-7ZbQnb3_.js → send-D8garnHE.js} +7 -7
  162. package/dist/{send-BxB9kMh0.js → send-DTHoJI7v.js} +6 -6
  163. package/dist/{session-meta-Bq4VCJl1.js → session-meta-Du0u83SI.js} +2 -2
  164. package/dist/{skill-commands-BeW5zYf3.js → skill-commands-DycP7LkE.js} +9 -9
  165. package/dist/{skills-CoDdFrlM.js → skills-C-1FVOPz.js} +21 -21
  166. package/dist/{store-BMD4fV1_.js → store-q3G7wCsG.js} +2 -2
  167. package/dist/{subsystem-CtVr6mhM.js → subsystem-iTNW5QQR.js} +60 -60
  168. package/dist/{tables-77QYYFpZ.js → tables-Epd9B-UQ.js} +1 -1
  169. package/dist/{tokens-Cu6l17bG.js → tokens-iu44eB15.js} +1 -1
  170. package/dist/{tool-loop-detection-CyJWzj_y.js → tool-loop-detection-B_CTZm9s.js} +2 -2
  171. package/dist/{user-run-recording-_9PhRwgi.js → user-run-recording-DU3V9-R7.js} +2 -2
  172. package/dist/{workspace-DNApJm8a.js → workspace-TtYCbjn0.js} +9 -9
  173. package/extensions/acpx/package.json +1 -1
  174. package/extensions/anthropic/package.json +1 -1
  175. package/extensions/bifrost/package.json +1 -1
  176. package/extensions/bluebubbles/package.json +1 -1
  177. package/extensions/copilot-proxy/package.json +1 -1
  178. package/extensions/deepgram/package.json +1 -1
  179. package/extensions/deepinfra/package.json +1 -1
  180. package/extensions/diagnostics-otel/package.json +1 -1
  181. package/extensions/diffs/package.json +1 -1
  182. package/extensions/discord/package.json +1 -1
  183. package/extensions/dream-cycle/package.json +1 -1
  184. package/extensions/elevenlabs/package.json +1 -1
  185. package/extensions/feishu/package.json +1 -1
  186. package/extensions/gemini-search/package.json +1 -1
  187. package/extensions/google/package.json +1 -1
  188. package/extensions/google-gemini-cli-auth/package.json +1 -1
  189. package/extensions/googlechat/package.json +1 -1
  190. package/extensions/grok-search/package.json +1 -1
  191. package/extensions/groq/package.json +1 -1
  192. package/extensions/imessage/package.json +1 -1
  193. package/extensions/irc/package.json +1 -1
  194. package/extensions/kimi-search/package.json +1 -1
  195. package/extensions/learning-core/index.ts +1 -1
  196. package/extensions/learning-core/package.json +1 -1
  197. package/extensions/learning-core/src/learning-schema.test.ts +1 -1
  198. package/extensions/learning-core/src/types.ts +1 -1
  199. package/extensions/line/package.json +1 -1
  200. package/extensions/llm-task/package.json +1 -1
  201. package/extensions/lobster/package.json +1 -1
  202. package/extensions/matrix/CHANGELOG.md +1 -1
  203. package/extensions/matrix/package.json +1 -1
  204. package/extensions/mattermost/package.json +1 -1
  205. package/extensions/memory-core/package.json +1 -1
  206. package/extensions/memory-lancedb/package.json +1 -1
  207. package/extensions/minimax/package.json +1 -1
  208. package/extensions/minimax-portal-auth/package.json +1 -1
  209. package/extensions/mistral/package.json +1 -1
  210. package/extensions/moonshot/package.json +1 -1
  211. package/extensions/msteams/CHANGELOG.md +1 -1
  212. package/extensions/msteams/package.json +1 -1
  213. package/extensions/nextcloud-talk/package.json +1 -1
  214. package/extensions/nostr/CHANGELOG.md +1 -1
  215. package/extensions/nostr/package.json +1 -1
  216. package/extensions/open-prose/package.json +1 -1
  217. package/extensions/openai/package.json +1 -1
  218. package/extensions/openai-realtime/package.json +1 -1
  219. package/extensions/openrouter/package.json +1 -1
  220. package/extensions/perplexity-search/package.json +1 -1
  221. package/extensions/searxng-search/package.json +1 -1
  222. package/extensions/signal/package.json +1 -1
  223. package/extensions/slack/package.json +1 -1
  224. package/extensions/synology-chat/package.json +1 -1
  225. package/extensions/telegram/package.json +1 -1
  226. package/extensions/tlon/package.json +1 -1
  227. package/extensions/twitch/CHANGELOG.md +1 -1
  228. package/extensions/twitch/package.json +1 -1
  229. package/extensions/voice-call/CHANGELOG.md +1 -1
  230. package/extensions/voice-call/package.json +1 -1
  231. package/extensions/whatsapp/package.json +1 -1
  232. package/extensions/zai/package.json +1 -1
  233. package/extensions/zalo/CHANGELOG.md +1 -1
  234. package/extensions/zalo/package.json +1 -1
  235. package/extensions/zalouser/CHANGELOG.md +1 -1
  236. package/extensions/zalouser/package.json +1 -1
  237. package/package.json +1 -1
  238. package/dist/plugin-sdk/agent-turn-execute-MCfUSNAn.js +0 -61
  239. package/dist/plugin-sdk/agent-turn-runner-CxTKSm01.js +0 -11
  240. package/dist/plugin-sdk/audio-preflight-CvfZay92.js +0 -28
  241. package/dist/plugin-sdk/deliver-Cvf-McDg.js +0 -32
  242. package/dist/plugin-sdk/manager-BxgZBJqX.js +0 -16
  243. package/dist/plugin-sdk/markdown-tables-BfxWyPNL.js +0 -10
  244. package/dist/plugin-sdk/provider-dispatcher-CmuWLups.js +0 -61
  245. package/dist/plugin-sdk/provider-image-QXB69xur.js +0 -22
  246. package/dist/plugin-sdk/proxy-D8NLdDcu.js +0 -7
  247. package/dist/plugin-sdk/replies-CFdGwJzf.js +0 -25
  248. package/dist/plugin-sdk/reply-prefix-BNDj6UL_.js +0 -7
  249. package/dist/plugin-sdk/runs-DYKrmhVM.js +0 -25
  250. package/dist/plugin-sdk/send-CnAE3Jo0.js +0 -24
  251. package/dist/plugin-sdk/send-D0F57nZU.js +0 -23
  252. package/dist/plugin-sdk/send-DiZVGsNc.js +0 -27
  253. package/dist/plugin-sdk/send-Q46WVgnx.js +0 -25
  254. package/dist/plugin-sdk/session-meta-GZHIw3Fv.js +0 -10
  255. package/dist/plugin-sdk/skill-commands-CQmHbw9e.js +0 -14
  256. package/dist/plugin-sdk/subagent-registry-C5F7F59N.js +0 -61
  257. package/dist/plugin-sdk/user-run-recording-ZaA2WM4L.js +0 -11
@@ -1,9 +1,9 @@
1
- import { d as resolveRequiredHomeDir, l as expandHomePrefix, r as resolveConfigPath, u as resolveEffectiveHomeDir } from "./paths-C6TxBCvO.js";
1
+ import { d as resolveRequiredHomeDir, l as expandHomePrefix, r as resolveConfigPath, u as resolveEffectiveHomeDir } from "./paths-Cvc9EM8Y.js";
2
2
  import { t as isPlainObject } from "./plain-object-CLm2c5Nu.js";
3
3
  import fs from "node:fs/promises";
4
4
  import os from "node:os";
5
5
  import path from "node:path";
6
- import syncFs from "node:fs";
6
+ import fs$1 from "node:fs";
7
7
  import chalk, { Chalk } from "chalk";
8
8
  import { Logger } from "tslog";
9
9
  import JSON5 from "json5";
@@ -57,15 +57,15 @@ function getCommandPathInternal(argv, depth, opts) {
57
57
  //#endregion
58
58
  //#region src/infra/tmp-openclaw-dir.ts
59
59
  const POSIX_OPENCLAW_TMP_DIR = "/tmp/openclaw";
60
- const TMP_DIR_ACCESS_MODE = syncFs.constants.W_OK | syncFs.constants.X_OK;
60
+ const TMP_DIR_ACCESS_MODE = fs$1.constants.W_OK | fs$1.constants.X_OK;
61
61
  function isNodeErrorWithCode(err, code) {
62
62
  return typeof err === "object" && err !== null && "code" in err && err.code === code;
63
63
  }
64
64
  function resolvePreferredOpenClawTmpDir(options = {}) {
65
- const accessSync = options.accessSync ?? syncFs.accessSync;
66
- const chmodSync = options.chmodSync ?? syncFs.chmodSync;
67
- const lstatSync = options.lstatSync ?? syncFs.lstatSync;
68
- const mkdirSync = options.mkdirSync ?? syncFs.mkdirSync;
65
+ const accessSync = options.accessSync ?? fs$1.accessSync;
66
+ const chmodSync = options.chmodSync ?? fs$1.chmodSync;
67
+ const lstatSync = options.lstatSync ?? fs$1.lstatSync;
68
+ const mkdirSync = options.mkdirSync ?? fs$1.mkdirSync;
69
69
  const warn = options.warn ?? ((message) => console.warn(message));
70
70
  const getuid = options.getuid ?? (() => {
71
71
  try {
@@ -156,14 +156,14 @@ function resolvePreferredOpenClawTmpDir(options = {}) {
156
156
  //#endregion
157
157
  //#region src/utils.ts
158
158
  async function ensureDir(dir) {
159
- await syncFs.promises.mkdir(dir, { recursive: true });
159
+ await fs$1.promises.mkdir(dir, { recursive: true });
160
160
  }
161
161
  /**
162
162
  * Check if a file or directory exists at the given path.
163
163
  */
164
164
  async function pathExists$1(targetPath) {
165
165
  try {
166
- await syncFs.promises.access(targetPath);
166
+ await fs$1.promises.access(targetPath);
167
167
  return true;
168
168
  } catch {
169
169
  return false;
@@ -253,7 +253,7 @@ function resolveConfigDir(env = process.env, homedir = os.homedir) {
253
253
  if (override) return resolveUserPath(override);
254
254
  const newDir = path.join(resolveRequiredHomeDir(env, homedir), ".openclaw");
255
255
  try {
256
- if (syncFs.existsSync(newDir)) return newDir;
256
+ if (fs$1.existsSync(newDir)) return newDir;
257
257
  } catch {}
258
258
  return newDir;
259
259
  }
@@ -851,7 +851,7 @@ function resolveBoundaryPathLexicalSync(params) {
851
851
  rootCanonicalPath: params.rootCanonicalPath,
852
852
  resolveParams: params.params,
853
853
  absolutePath: params.absolutePath,
854
- read: (cursor) => syncFs.lstatSync(cursor)
854
+ read: (cursor) => fs$1.lstatSync(cursor)
855
855
  });
856
856
  if (isPromiseLike(maybeStat)) throw new Error("Unexpected async lexical stat");
857
857
  const stat = maybeStat;
@@ -997,15 +997,15 @@ function resolvePathViaExistingAncestorSync(targetPath) {
997
997
  const normalized = path.resolve(targetPath);
998
998
  let cursor = normalized;
999
999
  const missingSuffix = [];
1000
- while (!isFilesystemRoot(cursor) && !syncFs.existsSync(cursor)) {
1000
+ while (!isFilesystemRoot(cursor) && !fs$1.existsSync(cursor)) {
1001
1001
  missingSuffix.unshift(path.basename(cursor));
1002
1002
  const parent = path.dirname(cursor);
1003
1003
  if (parent === cursor) break;
1004
1004
  cursor = parent;
1005
1005
  }
1006
- if (!syncFs.existsSync(cursor)) return normalized;
1006
+ if (!fs$1.existsSync(cursor)) return normalized;
1007
1007
  try {
1008
- const resolvedAncestor = path.resolve(syncFs.realpathSync(cursor));
1008
+ const resolvedAncestor = path.resolve(fs$1.realpathSync(cursor));
1009
1009
  if (missingSuffix.length === 0) return resolvedAncestor;
1010
1010
  return path.resolve(resolvedAncestor, ...missingSuffix);
1011
1011
  } catch {
@@ -1030,7 +1030,7 @@ function getPathKindSync(absolutePath, preserveFinalSymlink) {
1030
1030
  try {
1031
1031
  return {
1032
1032
  exists: true,
1033
- kind: toResolvedKind(preserveFinalSymlink ? syncFs.lstatSync(absolutePath) : syncFs.statSync(absolutePath))
1033
+ kind: toResolvedKind(preserveFinalSymlink ? fs$1.lstatSync(absolutePath) : fs$1.statSync(absolutePath))
1034
1034
  };
1035
1035
  } catch (error) {
1036
1036
  if (isNotFoundPathError(error)) return {
@@ -1090,10 +1090,10 @@ async function resolveSymlinkHopPath(symlinkPath) {
1090
1090
  }
1091
1091
  function resolveSymlinkHopPathSync(symlinkPath) {
1092
1092
  try {
1093
- return path.resolve(syncFs.realpathSync(symlinkPath));
1093
+ return path.resolve(fs$1.realpathSync(symlinkPath));
1094
1094
  } catch (error) {
1095
1095
  if (!isNotFoundPathError(error)) throw error;
1096
- const linkTarget = syncFs.readlinkSync(symlinkPath);
1096
+ const linkTarget = fs$1.readlinkSync(symlinkPath);
1097
1097
  return resolvePathViaExistingAncestorSync(path.resolve(path.dirname(symlinkPath), linkTarget));
1098
1098
  }
1099
1099
  }
@@ -1119,7 +1119,7 @@ function sameFileIdentity(left, right) {
1119
1119
  return sameFileIdentity$1(left, right);
1120
1120
  }
1121
1121
  function openVerifiedFileSync(params) {
1122
- const ioFs = params.ioFs ?? syncFs;
1122
+ const ioFs = params.ioFs ?? fs$1;
1123
1123
  const allowedType = params.allowedType ?? "file";
1124
1124
  const openReadFlags = ioFs.constants.O_RDONLY | (typeof ioFs.constants.O_NOFOLLOW === "number" ? ioFs.constants.O_NOFOLLOW : 0);
1125
1125
  let fd = null;
@@ -1196,7 +1196,7 @@ function canUseBoundaryFileOpen(ioFs) {
1196
1196
  return typeof ioFs.openSync === "function" && typeof ioFs.closeSync === "function" && typeof ioFs.fstatSync === "function" && typeof ioFs.lstatSync === "function" && typeof ioFs.realpathSync === "function" && typeof ioFs.readFileSync === "function" && typeof ioFs.constants === "object" && ioFs.constants !== null;
1197
1197
  }
1198
1198
  function openBoundaryFileSync(params) {
1199
- const ioFs = params.ioFs ?? syncFs;
1199
+ const ioFs = params.ioFs ?? fs$1;
1200
1200
  const resolved = resolveBoundaryFilePathGeneric({
1201
1201
  absolutePath: params.absolutePath,
1202
1202
  resolve: (absolutePath) => resolveBoundaryPathSync({
@@ -1247,7 +1247,7 @@ function finalizeBoundaryFileOpen(params) {
1247
1247
  });
1248
1248
  }
1249
1249
  async function openBoundaryFile(params) {
1250
- const ioFs = params.ioFs ?? syncFs;
1250
+ const ioFs = params.ioFs ?? fs$1;
1251
1251
  const maybeResolved = resolveBoundaryFilePathGeneric({
1252
1252
  absolutePath: params.absolutePath,
1253
1253
  resolve: (absolutePath) => resolveBoundaryPath({
@@ -1302,7 +1302,7 @@ function isPathInside(basePath, candidatePath) {
1302
1302
  }
1303
1303
  function safeRealpathSync(filePath) {
1304
1304
  try {
1305
- return syncFs.realpathSync(filePath);
1305
+ return fs$1.realpathSync(filePath);
1306
1306
  } catch {
1307
1307
  return null;
1308
1308
  }
@@ -1423,7 +1423,7 @@ var IncludeProcessor = class IncludeProcessor {
1423
1423
  const normalized = path.normalize(resolved);
1424
1424
  if (!isPathInside(this.rootDir, normalized)) throw new ConfigIncludeError(`Include path escapes config directory: ${includePath} (root: ${this.rootDir})`, includePath);
1425
1425
  try {
1426
- const real = syncFs.realpathSync(normalized);
1426
+ const real = fs$1.realpathSync(normalized);
1427
1427
  if (!isPathInside(this.rootRealDir, real)) throw new ConfigIncludeError(`Include path resolves outside config directory (symlink): ${includePath} (root: ${this.rootDir})`, includePath);
1428
1428
  } catch (err) {
1429
1429
  if (err instanceof ConfigIncludeError) throw err;
@@ -1465,13 +1465,13 @@ var IncludeProcessor = class IncludeProcessor {
1465
1465
  };
1466
1466
  function safeRealpath(target) {
1467
1467
  try {
1468
- return syncFs.realpathSync(target);
1468
+ return fs$1.realpathSync(target);
1469
1469
  } catch {
1470
1470
  return target;
1471
1471
  }
1472
1472
  }
1473
1473
  function readConfigIncludeFileWithGuards(params) {
1474
- const ioFs = params.ioFs ?? syncFs;
1474
+ const ioFs = params.ioFs ?? fs$1;
1475
1475
  const maxBytes = params.maxBytes ?? MAX_INCLUDE_FILE_BYTES;
1476
1476
  if (!canUseBoundaryFileOpen(ioFs)) return ioFs.readFileSync(params.resolvedPath, "utf-8");
1477
1477
  const opened = openBoundaryFileSync({
@@ -1494,7 +1494,7 @@ function readConfigIncludeFileWithGuards(params) {
1494
1494
  }
1495
1495
  }
1496
1496
  const defaultResolver = {
1497
- readFile: (p) => syncFs.readFileSync(p, "utf-8"),
1497
+ readFile: (p) => fs$1.readFileSync(p, "utf-8"),
1498
1498
  readFileWithGuards: ({ includePath, resolvedPath, rootRealDir }) => readConfigIncludeFileWithGuards({
1499
1499
  includePath,
1500
1500
  resolvedPath,
@@ -1555,10 +1555,10 @@ function normalizeConfigPaths(cfg) {
1555
1555
  function readLoggingConfig() {
1556
1556
  const configPath = resolveConfigPath();
1557
1557
  try {
1558
- if (!syncFs.existsSync(configPath)) return;
1559
- const raw = syncFs.readFileSync(configPath, "utf-8");
1558
+ if (!fs$1.existsSync(configPath)) return;
1559
+ const raw = fs$1.readFileSync(configPath, "utf-8");
1560
1560
  const resolvedIncludes = resolveConfigIncludes(JSON5.parse(raw), configPath, {
1561
- readFile: (candidate) => syncFs.readFileSync(candidate, "utf-8"),
1561
+ readFile: (candidate) => fs$1.readFileSync(candidate, "utf-8"),
1562
1562
  readFileWithGuards: ({ includePath, resolvedPath, rootRealDir }) => readConfigIncludeFileWithGuards({
1563
1563
  includePath,
1564
1564
  resolvedPath,
@@ -1748,7 +1748,7 @@ function rotateFileLog(filePath, policy, options = {}) {
1748
1748
  skipped: true
1749
1749
  };
1750
1750
  if (policy.maxBackups <= 0) {
1751
- syncFs.rmSync(filePath, { force: true });
1751
+ fs$1.rmSync(filePath, { force: true });
1752
1752
  return {
1753
1753
  at: (/* @__PURE__ */ new Date()).toISOString(),
1754
1754
  compressed: policy.compress === "gzip"
@@ -1757,9 +1757,9 @@ function rotateFileLog(filePath, policy, options = {}) {
1757
1757
  rotateExistingBackups(filePath, policy.maxBackups);
1758
1758
  const backup = `${filePath}.1${policy.compress === "gzip" ? ".gz" : ""}`;
1759
1759
  if (policy.compress === "gzip") {
1760
- syncFs.writeFileSync(backup, zlib.gzipSync(syncFs.readFileSync(filePath)), { mode: options.fileMode });
1761
- syncFs.rmSync(filePath, { force: true });
1762
- } else syncFs.renameSync(filePath, backup);
1760
+ fs$1.writeFileSync(backup, zlib.gzipSync(fs$1.readFileSync(filePath)), { mode: options.fileMode });
1761
+ fs$1.rmSync(filePath, { force: true });
1762
+ } else fs$1.renameSync(filePath, backup);
1763
1763
  pruneExcessBackups(filePath, policy.maxBackups);
1764
1764
  return {
1765
1765
  at: (/* @__PURE__ */ new Date()).toISOString(),
@@ -1808,7 +1808,7 @@ function appendWithState(state, line, opts) {
1808
1808
  async function appendNowAsync(state, policy, line, queuedBytes, opts) {
1809
1809
  try {
1810
1810
  state.activeOperation = "append";
1811
- await syncFs.promises.mkdir(path.dirname(policy.file), { recursive: true });
1811
+ await fs$1.promises.mkdir(path.dirname(policy.file), { recursive: true });
1812
1812
  const currentBytes = await currentFileBytesAsync(policy.file);
1813
1813
  if (currentBytes + queuedBytes > policy.maxFileBytes && currentBytes > 0) {
1814
1814
  state.activeOperation = "rotate";
@@ -1817,13 +1817,13 @@ async function appendNowAsync(state, policy, line, queuedBytes, opts) {
1817
1817
  strict: opts.strict
1818
1818
  });
1819
1819
  const rotationLine = state.lastRotation ? opts.onRotate?.(state.lastRotation) : void 0;
1820
- if (rotationLine) await syncFs.promises.appendFile(policy.file, rotationLine, {
1820
+ if (rotationLine) await fs$1.promises.appendFile(policy.file, rotationLine, {
1821
1821
  encoding: "utf8",
1822
1822
  mode: opts.fileMode
1823
1823
  });
1824
1824
  }
1825
1825
  state.activeOperation = "append";
1826
- await syncFs.promises.appendFile(policy.file, line, {
1826
+ await fs$1.promises.appendFile(policy.file, line, {
1827
1827
  encoding: "utf8",
1828
1828
  mode: opts.fileMode
1829
1829
  });
@@ -1838,7 +1838,7 @@ async function appendNowAsync(state, policy, line, queuedBytes, opts) {
1838
1838
  function appendNow(state, policy, line, queuedBytes, opts) {
1839
1839
  try {
1840
1840
  state.activeOperation = "append";
1841
- syncFs.mkdirSync(path.dirname(policy.file), { recursive: true });
1841
+ fs$1.mkdirSync(path.dirname(policy.file), { recursive: true });
1842
1842
  const currentBytes = currentFileBytes(policy.file);
1843
1843
  if (currentBytes + queuedBytes > policy.maxFileBytes && currentBytes > 0) {
1844
1844
  state.activeOperation = "rotate";
@@ -1847,13 +1847,13 @@ function appendNow(state, policy, line, queuedBytes, opts) {
1847
1847
  strict: opts.strict
1848
1848
  });
1849
1849
  const rotationLine = state.lastRotation ? opts.onRotate?.(state.lastRotation) : void 0;
1850
- if (rotationLine) syncFs.appendFileSync(policy.file, rotationLine, {
1850
+ if (rotationLine) fs$1.appendFileSync(policy.file, rotationLine, {
1851
1851
  encoding: "utf8",
1852
1852
  mode: opts.fileMode
1853
1853
  });
1854
1854
  }
1855
1855
  state.activeOperation = "append";
1856
- syncFs.appendFileSync(policy.file, line, {
1856
+ fs$1.appendFileSync(policy.file, line, {
1857
1857
  encoding: "utf8",
1858
1858
  mode: opts.fileMode
1859
1859
  });
@@ -1888,7 +1888,7 @@ async function rotateFileLogAsync(filePath, policy, options = {}) {
1888
1888
  skipped: true
1889
1889
  };
1890
1890
  if (policy.maxBackups <= 0) {
1891
- await syncFs.promises.rm(filePath, { force: true });
1891
+ await fs$1.promises.rm(filePath, { force: true });
1892
1892
  return {
1893
1893
  at: (/* @__PURE__ */ new Date()).toISOString(),
1894
1894
  compressed: policy.compress === "gzip"
@@ -1897,9 +1897,9 @@ async function rotateFileLogAsync(filePath, policy, options = {}) {
1897
1897
  await rotateExistingBackupsAsync(filePath, policy.maxBackups);
1898
1898
  const backup = `${filePath}.1${policy.compress === "gzip" ? ".gz" : ""}`;
1899
1899
  if (policy.compress === "gzip") {
1900
- await syncFs.promises.writeFile(backup, await gzipAsync(await syncFs.promises.readFile(filePath)), { mode: options.fileMode });
1901
- await syncFs.promises.rm(filePath, { force: true });
1902
- } else await syncFs.promises.rename(filePath, backup);
1900
+ await fs$1.promises.writeFile(backup, await gzipAsync(await fs$1.promises.readFile(filePath)), { mode: options.fileMode });
1901
+ await fs$1.promises.rm(filePath, { force: true });
1902
+ } else await fs$1.promises.rename(filePath, backup);
1903
1903
  await pruneExcessBackupsAsync(filePath, policy.maxBackups);
1904
1904
  return {
1905
1905
  at: (/* @__PURE__ */ new Date()).toISOString(),
@@ -1918,39 +1918,39 @@ async function rotateFileLogAsync(filePath, policy, options = {}) {
1918
1918
  function rotateExistingBackups(filePath, maxBackups) {
1919
1919
  for (const backup of listBackupEntries(filePath).toSorted((a, b) => b.slot - a.slot)) {
1920
1920
  if (backup.slot >= maxBackups) {
1921
- syncFs.rmSync(backup.path, { force: true });
1921
+ fs$1.rmSync(backup.path, { force: true });
1922
1922
  continue;
1923
1923
  }
1924
1924
  const target = `${filePath}.${backup.slot + 1}${backup.suffix}`;
1925
- syncFs.rmSync(target, { force: true });
1926
- syncFs.renameSync(backup.path, target);
1925
+ fs$1.rmSync(target, { force: true });
1926
+ fs$1.renameSync(backup.path, target);
1927
1927
  }
1928
1928
  }
1929
1929
  async function rotateExistingBackupsAsync(filePath, maxBackups) {
1930
1930
  for (const backup of (await listBackupEntriesAsync(filePath)).toSorted((a, b) => b.slot - a.slot)) {
1931
1931
  if (backup.slot >= maxBackups) {
1932
- await syncFs.promises.rm(backup.path, { force: true });
1932
+ await fs$1.promises.rm(backup.path, { force: true });
1933
1933
  continue;
1934
1934
  }
1935
1935
  const target = `${filePath}.${backup.slot + 1}${backup.suffix}`;
1936
- await syncFs.promises.rm(target, { force: true });
1937
- await syncFs.promises.rename(backup.path, target);
1936
+ await fs$1.promises.rm(target, { force: true });
1937
+ await fs$1.promises.rename(backup.path, target);
1938
1938
  }
1939
1939
  }
1940
1940
  function pruneExcessBackups(filePath, maxBackups) {
1941
1941
  const retained = listBackupEntries(filePath).toSorted((a, b) => a.slot - b.slot || b.mtimeMs - a.mtimeMs);
1942
- for (const backup of retained.slice(maxBackups)) syncFs.rmSync(backup.path, { force: true });
1942
+ for (const backup of retained.slice(maxBackups)) fs$1.rmSync(backup.path, { force: true });
1943
1943
  }
1944
1944
  async function pruneExcessBackupsAsync(filePath, maxBackups) {
1945
1945
  const retained = (await listBackupEntriesAsync(filePath)).toSorted((a, b) => a.slot - b.slot || b.mtimeMs - a.mtimeMs);
1946
- for (const backup of retained.slice(maxBackups)) await syncFs.promises.rm(backup.path, { force: true });
1946
+ for (const backup of retained.slice(maxBackups)) await fs$1.promises.rm(backup.path, { force: true });
1947
1947
  }
1948
1948
  function listBackupEntries(filePath) {
1949
1949
  const dir = path.dirname(filePath);
1950
1950
  const base = path.basename(filePath).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1951
1951
  let names = [];
1952
1952
  try {
1953
- names = syncFs.readdirSync(dir);
1953
+ names = fs$1.readdirSync(dir);
1954
1954
  } catch {
1955
1955
  return [];
1956
1956
  }
@@ -1961,7 +1961,7 @@ function listBackupEntries(filePath) {
1961
1961
  const backupPath = path.join(dir, name);
1962
1962
  let mtimeMs = 0;
1963
1963
  try {
1964
- mtimeMs = syncFs.statSync(backupPath).mtimeMs;
1964
+ mtimeMs = fs$1.statSync(backupPath).mtimeMs;
1965
1965
  } catch {
1966
1966
  return [];
1967
1967
  }
@@ -1978,7 +1978,7 @@ async function listBackupEntriesAsync(filePath) {
1978
1978
  const base = path.basename(filePath).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1979
1979
  let names = [];
1980
1980
  try {
1981
- names = await syncFs.promises.readdir(dir);
1981
+ names = await fs$1.promises.readdir(dir);
1982
1982
  } catch {
1983
1983
  return [];
1984
1984
  }
@@ -1988,7 +1988,7 @@ async function listBackupEntriesAsync(filePath) {
1988
1988
  if (!match) return null;
1989
1989
  const backupPath = path.join(dir, name);
1990
1990
  try {
1991
- const stat = await syncFs.promises.stat(backupPath);
1991
+ const stat = await fs$1.promises.stat(backupPath);
1992
1992
  return {
1993
1993
  path: backupPath,
1994
1994
  slot: Number(match[1]),
@@ -2002,14 +2002,14 @@ async function listBackupEntriesAsync(filePath) {
2002
2002
  }
2003
2003
  function currentFileBytes(filePath) {
2004
2004
  try {
2005
- return syncFs.statSync(filePath).size;
2005
+ return fs$1.statSync(filePath).size;
2006
2006
  } catch {
2007
2007
  return 0;
2008
2008
  }
2009
2009
  }
2010
2010
  async function currentFileBytesAsync(filePath) {
2011
2011
  try {
2012
- return (await syncFs.promises.stat(filePath)).size;
2012
+ return (await fs$1.promises.stat(filePath)).size;
2013
2013
  } catch {
2014
2014
  return 0;
2015
2015
  }
@@ -2158,7 +2158,7 @@ function buildLogger(settings) {
2158
2158
  for (const transport of externalTransports) attachExternalTransport(logger, transport);
2159
2159
  return logger;
2160
2160
  }
2161
- syncFs.mkdirSync(path.dirname(settings.file), { recursive: true });
2161
+ fs$1.mkdirSync(path.dirname(settings.file), { recursive: true });
2162
2162
  if (isRollingPath(settings.file)) pruneOldRollingLogs(path.dirname(settings.file));
2163
2163
  const primaryPolicy = resolveFileLogProfile(settings.writerConfig, "primary", {
2164
2164
  file: settings.file,
@@ -2229,7 +2229,7 @@ function isRollingPath(file) {
2229
2229
  }
2230
2230
  function pruneOldRollingLogs(dir) {
2231
2231
  try {
2232
- const entries = syncFs.readdirSync(dir, { withFileTypes: true });
2232
+ const entries = fs$1.readdirSync(dir, { withFileTypes: true });
2233
2233
  const cutoff = Date.now() - MAX_LOG_AGE_MS;
2234
2234
  for (const entry of entries) {
2235
2235
  if (!entry.isFile()) continue;
@@ -2237,13 +2237,13 @@ function pruneOldRollingLogs(dir) {
2237
2237
  const backupDateMs = rollingBackupDateMs(entry.name);
2238
2238
  if (backupDateMs !== null) {
2239
2239
  if (backupDateMs < cutoff) try {
2240
- syncFs.rmSync(fullPath, { force: true });
2240
+ fs$1.rmSync(fullPath, { force: true });
2241
2241
  } catch {}
2242
2242
  continue;
2243
2243
  }
2244
2244
  if (!entry.name.startsWith(`${LOG_PREFIX}-`) || !entry.name.endsWith(LOG_SUFFIX)) continue;
2245
2245
  try {
2246
- if (syncFs.statSync(fullPath).mtimeMs < cutoff) syncFs.rmSync(fullPath, { force: true });
2246
+ if (fs$1.statSync(fullPath).mtimeMs < cutoff) fs$1.rmSync(fullPath, { force: true });
2247
2247
  } catch {}
2248
2248
  }
2249
2249
  } catch {}
@@ -1,4 +1,4 @@
1
- import { r as markdownToIRWithMeta } from "./ir-tsZDlE0-.js";
1
+ import { r as markdownToIRWithMeta } from "./ir-BHU3uh9A.js";
2
2
  import { t as renderMarkdownWithMarkers } from "./render-BZdJrUxT.js";
3
3
 
4
4
  //#region src/markdown/tables.ts
@@ -1,4 +1,4 @@
1
- import { tt as escapeRegExp } from "./subsystem-CtVr6mhM.js";
1
+ import { tt as escapeRegExp } from "./subsystem-iTNW5QQR.js";
2
2
 
3
3
  //#region src/auto-reply/tokens.ts
4
4
  const HEARTBEAT_TOKEN = "HEARTBEAT_OK";
@@ -1,5 +1,5 @@
1
- import "./paths-C6TxBCvO.js";
2
- import { t as createSubsystemLogger } from "./subsystem-CtVr6mhM.js";
1
+ import "./paths-Cvc9EM8Y.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-iTNW5QQR.js";
3
3
  import { t as isPlainObject } from "./plain-object-CLm2c5Nu.js";
4
4
  import { createHash } from "node:crypto";
5
5
 
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { t as createSubsystemLogger } from "./subsystem-CtVr6mhM.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-iTNW5QQR.js";
3
3
  import { t as CommandLane } from "./lanes-DTaUAkeG.js";
4
- import { a as resolveSessionRunStore, i as summarizeSessionRunPrompt, n as deriveSessionRunId, r as inferSessionRunKind, t as createSessionRunRecorder } from "./recorder-BWzqo70i.js";
4
+ import { a as resolveSessionRunStore, i as summarizeSessionRunPrompt, n as deriveSessionRunId, r as inferSessionRunKind, t as createSessionRunRecorder } from "./recorder-BESd9rZt.js";
5
5
  import { randomUUID } from "node:crypto";
6
6
 
7
7
  //#region src/agents/lanes.ts
@@ -1,10 +1,10 @@
1
- import { d as resolveRequiredHomeDir } from "./paths-C6TxBCvO.js";
2
- import { P as openBoundaryFile, at as pathExists, h as shouldLogVerbose, j as isBlockedObjectKey, st as resolveUserPath, u as danger } from "./subsystem-CtVr6mhM.js";
3
- import { n as logError, t as logDebug } from "./logger-D7ojOVG0.js";
1
+ import { d as resolveRequiredHomeDir } from "./paths-Cvc9EM8Y.js";
2
+ import { P as openBoundaryFile, at as pathExists, h as shouldLogVerbose, j as isBlockedObjectKey, st as resolveUserPath, u as danger } from "./subsystem-iTNW5QQR.js";
3
+ import { n as logError, t as logDebug } from "./logger-CkGiQRm7.js";
4
4
  import fs from "node:fs/promises";
5
5
  import os from "node:os";
6
6
  import path from "node:path";
7
- import syncFs from "node:fs";
7
+ import fs$1 from "node:fs";
8
8
  import { promisify } from "node:util";
9
9
  import { execFile, spawn } from "node:child_process";
10
10
  import process$1 from "node:process";
@@ -402,7 +402,7 @@ function resolveNpmArgvForWindows(argv) {
402
402
  if (!cliName) return null;
403
403
  const nodeDir = path.dirname(process$1.execPath);
404
404
  const cliPath = path.join(nodeDir, "node_modules", "npm", "bin", cliName);
405
- if (!syncFs.existsSync(cliPath)) return null;
405
+ if (!fs$1.existsSync(cliPath)) return null;
406
406
  return [
407
407
  process$1.execPath,
408
408
  cliPath,
@@ -607,7 +607,7 @@ async function readPackageName(dir) {
607
607
  }
608
608
  function readPackageNameSync(dir) {
609
609
  try {
610
- const raw = syncFs.readFileSync(path.join(dir, "package.json"), "utf-8");
610
+ const raw = fs$1.readFileSync(path.join(dir, "package.json"), "utf-8");
611
611
  const parsed = JSON.parse(raw);
612
612
  return typeof parsed.name === "string" ? parsed.name : null;
613
613
  } catch {
@@ -635,7 +635,7 @@ function candidateDirsFromArgv1(argv1) {
635
635
  const normalized = path.resolve(argv1);
636
636
  const candidates = [path.dirname(normalized)];
637
637
  try {
638
- const resolved = syncFs.realpathSync(normalized);
638
+ const resolved = fs$1.realpathSync(normalized);
639
639
  if (resolved !== normalized) candidates.push(path.dirname(resolved));
640
640
  } catch {}
641
641
  const parts = normalized.split(path.sep);
@@ -735,7 +735,7 @@ function workspaceFileIdentity(stat, canonicalPath) {
735
735
  }
736
736
  function closeFileQuietlySync(fd) {
737
737
  try {
738
- syncFs.closeSync(fd);
738
+ fs$1.closeSync(fd);
739
739
  } catch {}
740
740
  }
741
741
  async function readWorkspaceFileWithGuards(params) {
@@ -760,7 +760,7 @@ async function readWorkspaceFileWithGuards(params) {
760
760
  };
761
761
  }
762
762
  try {
763
- const content = syncFs.readFileSync(opened.fd, "utf-8");
763
+ const content = fs$1.readFileSync(opened.fd, "utf-8");
764
764
  workspaceFileCache.set(params.filePath, {
765
765
  content,
766
766
  identity
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/acpx",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "description": "OpenClaw ACP runtime backend via acpx",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wednesdayai/anthropic",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "private": true,
5
5
  "description": "Anthropic media understanding: Claude image description.",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/bifrost",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "private": true,
5
5
  "description": "WednesdayAI Bifrost provider plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/bluebubbles",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "description": "OpenClaw BlueBubbles channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/copilot-proxy",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "private": true,
5
5
  "description": "OpenClaw Copilot Proxy provider plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wednesdayai/deepgram",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "private": true,
5
5
  "description": "Deepgram media understanding: nova-3 audio transcription.",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wednesdayai/deepinfra",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "private": true,
5
5
  "description": "DeepInfra media understanding: Whisper audio transcription via the DeepInfra OpenAI-compatible API.",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/diagnostics-otel",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "private": true,
5
5
  "description": "OpenClaw diagnostics OpenTelemetry exporter",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/diffs",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "private": true,
5
5
  "description": "OpenClaw diff viewer plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/discord",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "description": "OpenClaw Discord channel plugin",
5
5
  "type": "module",
6
6
  "openclaw": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/dream-cycle",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "private": true,
5
5
  "description": "WednesdayAI dream-cycle engine — idle-time sleep stages, contemplation, adaptation, crystallisation",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wednesdayai/elevenlabs",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "private": true,
5
5
  "description": "ElevenLabs media understanding: scribe_v2 audio transcription.",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/feishu",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "description": "OpenClaw Feishu/Lark channel plugin (community maintained by @m1heng)",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wednesdayai/gemini-search",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "private": true,
5
5
  "description": "WednesdayAI Google Gemini web search provider plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wednesdayai/google",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "private": true,
5
5
  "description": "Google Gemini media understanding: audio transcription, image and video description.",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/google-gemini-cli-auth",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "private": true,
5
5
  "description": "OpenClaw Gemini CLI OAuth provider plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/googlechat",
3
- "version": "0.4.12-dev.703+da431ae90",
3
+ "version": "0.4.12-dev.705+998bdf349",
4
4
  "private": true,
5
5
  "description": "OpenClaw Google Chat channel plugin",
6
6
  "type": "module",