@bitseek/claw 1.3.7 → 1.3.8-beta.1

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 (172) hide show
  1. package/dist/{agents-BqONdWNu.js → agents-4yiCX5vO.js} +4 -4
  2. package/dist/{agents.config-2cTTTDPj.js → agents.config-C26BMyOA.js} +1 -1
  3. package/dist/{agents.config-DhIvFsFv.js → agents.config-C4xJzUcO.js} +1 -1
  4. package/dist/{auth-choice-D6WGnKQk.js → auth-choice-Cpai95xS.js} +1 -1
  5. package/dist/{auth-choice-lhaABxGx.js → auth-choice-D9W2yx7x.js} +1 -1
  6. package/dist/{banner-CMCfl-_K.js → banner-DtaJorEc.js} +1 -1
  7. package/dist/build-info.json +2 -2
  8. package/dist/bundled/boot-md/handler.js +1 -1
  9. package/dist/bundled/session-memory/handler.js +1 -1
  10. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  11. package/dist/{channel-options-gDhT85r4.js → channel-options-D3Ck-1W2.js} +1 -1
  12. package/dist/{channel-options-Didnr81h.js → channel-options-DffMDeTp.js} +1 -1
  13. package/dist/{channel-web-C45x6ahP.js → channel-web-BB66exAr.js} +1 -1
  14. package/dist/{channel-web-rP0VBNIt.js → channel-web-zni8DLt7.js} +1 -1
  15. package/dist/{channels-cli-CZQbGl-H.js → channels-cli-D_gj850i.js} +6 -6
  16. package/dist/{channels-cli-BpiA2BQE.js → channels-cli-IQCAixeN.js} +6 -6
  17. package/dist/{cli-Cvdtw0CY.js → cli-BlPS7kZ9.js} +1 -1
  18. package/dist/{cli-D5yg1LCm.js → cli-CrgfzbyT.js} +1 -1
  19. package/dist/{command-registry-CtTmCFgA.js → command-registry-CjTwwZuF.js} +10 -10
  20. package/dist/{completion-cli-wYWbi5wA.js → completion-cli-CgjnsXtn.js} +1 -1
  21. package/dist/{completion-cli-D_Hxee-R.js → completion-cli-Clj1_156.js} +2 -2
  22. package/dist/{config-cli-C-yIXgGr.js → config-cli-CE1eTqAM.js} +1 -1
  23. package/dist/{config-cli-BtvOIDkG.js → config-cli-DwKVeQtE.js} +1 -1
  24. package/dist/{configure-DflayaB2.js → configure-BCUvl2Zf.js} +3 -3
  25. package/dist/{configure-CgbTpfrx.js → configure-D2KyFnr8.js} +3 -3
  26. package/dist/{doctor-completion-BYgrEW3s.js → doctor-completion-BoZbJ2cC.js} +1 -1
  27. package/dist/{doctor-completion-Bai361_Y.js → doctor-completion-CACrVkvp.js} +1 -1
  28. package/dist/entry.js +2 -2
  29. package/dist/extensionAPI.js +1 -1
  30. package/dist/{gateway-cli-C3ftrrlK.js → gateway-cli-BUFxEad5.js} +8 -8
  31. package/dist/{gateway-cli-CBGutU8q.js → gateway-cli-D9mIlXNc.js} +8 -8
  32. package/dist/{health-Gkd0akfz.js → health-Cjj_F37M.js} +1 -1
  33. package/dist/{health-DaN3xECS.js → health-CpbNiL9A.js} +1 -1
  34. package/dist/{hooks-cli-gRM8FMyG.js → hooks-cli-C0lC4Kj0.js} +2 -2
  35. package/dist/{hooks-cli-n5Weiheq.js → hooks-cli-DRkHJxMs.js} +2 -2
  36. package/dist/index.js +6 -6
  37. package/dist/llm-slug-generator.js +1 -1
  38. package/dist/{models-CJodAVSF.js → models-De_qVfBK.js} +2 -2
  39. package/dist/{models-cli-B1Dwj01V.js → models-cli-By7lFchJ.js} +2 -2
  40. package/dist/{models-cli-Ceb37L0t.js → models-cli-aJswKT_o.js} +3 -3
  41. package/dist/{npm-resolution-B5fqS6mO.js → npm-resolution-BiJCUhct.js} +1 -1
  42. package/dist/{npm-resolution-dNC8uD0I.js → npm-resolution-Ez_78UD2.js} +1 -1
  43. package/dist/{onboard-CI1TyO0l.js → onboard-CIrRD9vz.js} +2 -2
  44. package/dist/{onboard-C0Bo_5Vw.js → onboard-DQJ6ZB5N.js} +2 -2
  45. package/dist/{onboard-channels-DPIysHDh.js → onboard-channels-AbBziYo3.js} +1 -1
  46. package/dist/{onboard-channels-DQ1rkv4c.js → onboard-channels-yslMqzIm.js} +1 -1
  47. package/dist/{onboarding-DjOCmNCk.js → onboarding-CIsQzEx6.js} +3 -3
  48. package/dist/{onboarding-DufCP2B8.js → onboarding-exdNo-8e.js} +3 -3
  49. package/dist/{onboarding.finalize-C7iEnG3X.js → onboarding.finalize-BqpH39L7.js} +5 -5
  50. package/dist/{onboarding.finalize-BI2feWXN.js → onboarding.finalize-spYqvVP0.js} +6 -6
  51. package/dist/{pi-embedded-cmJctBve.js → pi-embedded-BW8O-Z_R.js} +109 -15
  52. package/dist/{pi-embedded-BQqt592d.js → pi-embedded-DLrpQftt.js} +109 -15
  53. package/dist/{plugin-registry-NaHPDM1s.js → plugin-registry-CgjiDSJy.js} +1 -1
  54. package/dist/{plugin-registry-2CmN8Jv2.js → plugin-registry-DXEjCmXY.js} +1 -1
  55. package/dist/plugin-sdk/{accounts-AbI8uETR.js → accounts-BZrkOo6-.js} +1 -1
  56. package/dist/plugin-sdk/{accounts-4WE2wtsW.js → accounts-COLYAAOx.js} +1 -1
  57. package/dist/plugin-sdk/{accounts-BYcizTXn.js → accounts-D_pT5EjF.js} +3 -3
  58. package/dist/plugin-sdk/{active-listener-pnqLAUOh.js → active-listener-DxBXcWm_.js} +1 -1
  59. package/dist/plugin-sdk/{agent-scope-_j3fIYCK.js → agent-scope-DT5pxpJB.js} +3 -3
  60. package/dist/plugin-sdk/agents/pi-tools.read.d.ts +1 -0
  61. package/dist/plugin-sdk/{api-key-rotation-CYI51U_M.js → api-key-rotation-Dl6Ad7Nj.js} +2 -2
  62. package/dist/plugin-sdk/{audio-preflight-D8BVTHCB.js → audio-preflight-PGsiEosa.js} +33 -33
  63. package/dist/plugin-sdk/{audio-transcription-runner-CRpY5uDq.js → audio-transcription-runner-CooPnqtC.js} +10 -10
  64. package/dist/plugin-sdk/{bindings-CxxzC7gn.js → bindings-BSfhEjKN.js} +2 -2
  65. package/dist/plugin-sdk/{channel-activity-B3yZ-f-m.js → channel-activity-DAEbma-o.js} +3 -3
  66. package/dist/plugin-sdk/{channel-web-BgnipXq5.js → channel-web-BhgjzJX5.js} +23 -23
  67. package/dist/plugin-sdk/{chrome-oPevdeh5.js → chrome-Dn0G4NoF.js} +7 -7
  68. package/dist/plugin-sdk/{chunk-BPyPeheZ.js → chunk-cvtXztAT.js} +1 -1
  69. package/dist/plugin-sdk/{command-format-DvyMEXQo.js → command-format-BOJz3y1v.js} +1 -1
  70. package/dist/plugin-sdk/{commands-registry-Dk8re8Lz.js → commands-registry-CZWv_JwZ.js} +5 -5
  71. package/dist/plugin-sdk/{config-D7I2_X4P.js → config-DAwOhnVF.js} +10 -10
  72. package/dist/plugin-sdk/{deliver-NrIHn0__.js → deliver-PdH-MCq8.js} +11 -11
  73. package/dist/plugin-sdk/{diagnostic-DL3k_wRi.js → diagnostic-BZvj-qNu.js} +2 -2
  74. package/dist/plugin-sdk/{dock-CjdkiLH7.js → dock-BdR3OYZn.js} +6 -6
  75. package/dist/plugin-sdk/{errors-DFTN4h2I.js → errors-jusxdu7M.js} +1 -1
  76. package/dist/plugin-sdk/{fetch-guard-BivEyA4v.js → fetch-guard-Dary6WwJ.js} +2 -2
  77. package/dist/plugin-sdk/{fs-safe-B256n7Ff.js → fs-safe-DMCE0ej9.js} +3 -3
  78. package/dist/plugin-sdk/{image-CkPzr3XN.js → image-B3A2l2ep.js} +6 -6
  79. package/dist/plugin-sdk/{image-ops-C9GXWF3o.js → image-ops-DulHE5Qc.js} +1 -1
  80. package/dist/plugin-sdk/index.js +64 -64
  81. package/dist/plugin-sdk/{ir-BIm-jvIK.js → ir-BFXiJrsN.js} +6 -6
  82. package/dist/plugin-sdk/{local-roots-2AOXGUXW.js → local-roots-DssN60r6.js} +4 -4
  83. package/dist/plugin-sdk/{logger-CNhs9eKJ.js → logger-Cr-x0vMf.js} +1 -1
  84. package/dist/plugin-sdk/{login-BcLiF9tC.js → login-D0ul3-6C.js} +6 -6
  85. package/dist/plugin-sdk/{login-qr-GyPUodKJ.js → login-qr-XWKTFBuI.js} +9 -9
  86. package/dist/plugin-sdk/{manager-DYLqNUb4.js → manager-DGx_cF54.js} +10 -10
  87. package/dist/plugin-sdk/{markdown-tables-D9mmqMKi.js → markdown-tables-CsQpDNU5.js} +1 -1
  88. package/dist/plugin-sdk/{message-channel-_CEZcqxE.js → message-channel-CvNq-esz.js} +1 -1
  89. package/dist/plugin-sdk/{outbound-DdTsUaXa.js → outbound-D29FHlQl.js} +7 -7
  90. package/dist/plugin-sdk/{outbound-attachment--hkuIDR1.js → outbound-attachment-DRHrZUOx.js} +2 -2
  91. package/dist/plugin-sdk/{path-alias-guards-BqUCBfUg.js → path-alias-guards-DpKV1B5p.js} +1 -1
  92. package/dist/plugin-sdk/{pi-embedded-helpers-CTfvZz83.js → pi-embedded-helpers-CKEUWckk.js} +17 -17
  93. package/dist/plugin-sdk/{pi-model-discovery-CK3Ih_kq.js → pi-model-discovery-BPeQq9XM.js} +1 -1
  94. package/dist/plugin-sdk/{plugins-BpHAMNJ1.js → plugins-DF_dKXTR.js} +6 -6
  95. package/dist/plugin-sdk/{proxy-BJdRZOnJ.js → proxy-BfmEDoun.js} +1 -1
  96. package/dist/plugin-sdk/{proxy-fetch-jmbopGcm.js → proxy-fetch-BpHIgvBk.js} +1 -1
  97. package/dist/plugin-sdk/{pw-ai-D0Kx7w1D.js → pw-ai-BmmXDjtm.js} +13 -13
  98. package/dist/plugin-sdk/{qmd-manager-BDcutPp9.js → qmd-manager-3hQbqkm5.js} +8 -8
  99. package/dist/plugin-sdk/{query-expansion-C_X8SyEA.js → query-expansion-BOGLUWB7.js} +2 -2
  100. package/dist/plugin-sdk/{redact-DH8u23pF.js → redact-BOuKZWXa.js} +1 -1
  101. package/dist/plugin-sdk/{registry-HF8_S7QO.js → registry-Cv-oHUj1.js} +2 -2
  102. package/dist/plugin-sdk/{replies-DbjvV4gf.js → replies-CddwWBTJ.js} +3 -3
  103. package/dist/plugin-sdk/{reply-DpplAsbO.js → reply-CLQkx08P.js} +197 -103
  104. package/dist/plugin-sdk/{reply-prefix-KODsMNJ-.js → reply-prefix-DXthVxCx.js} +1 -1
  105. package/dist/plugin-sdk/{resolve-outbound-target-BPT4aNiD.js → resolve-outbound-target-D3Y4F2Le.js} +2 -2
  106. package/dist/plugin-sdk/{resolve-route-De2B5QY_.js → resolve-route-DuwYYn4a.js} +4 -4
  107. package/dist/plugin-sdk/{retry-pZ8iKytf.js → retry-BMcrIz7L.js} +1 -1
  108. package/dist/plugin-sdk/{send-C-Rd2stz.js → send-B0ztz6QC.js} +6 -6
  109. package/dist/plugin-sdk/{send-BoNw1Bki.js → send-C5USYGq7.js} +8 -8
  110. package/dist/plugin-sdk/{send-1uW-uqPf.js → send-D0AaWnIj.js} +7 -7
  111. package/dist/plugin-sdk/{send-wCqsQs_s.js → send-DEyQJTzd.js} +10 -10
  112. package/dist/plugin-sdk/{send-CZIN8SDx.js → send-DJzwu8kk.js} +15 -15
  113. package/dist/plugin-sdk/{session-ooYcB82T.js → session-BA7tVDpV.js} +5 -5
  114. package/dist/plugin-sdk/{session-meta-7J-uHiM_.js → session-meta-ChWvKVWj.js} +1 -1
  115. package/dist/plugin-sdk/{sessions-lAIo5l8W.js → sessions-BXps6YzJ.js} +6 -6
  116. package/dist/plugin-sdk/{skill-commands-D1Q6hGS4.js → skill-commands-B20uUsji.js} +5 -5
  117. package/dist/plugin-sdk/{skills-BWSDv2F_.js → skills-DXOTei42.js} +8 -8
  118. package/dist/plugin-sdk/{ssrf-JKDwTi8i.js → ssrf-Doxv9M7Q.js} +1 -1
  119. package/dist/plugin-sdk/{store-BMeqzQAf.js → store-BZbE1V-C.js} +2 -2
  120. package/dist/plugin-sdk/{subsystem-B0V8LFBA.js → subsystem-CM1s2lDT.js} +2 -2
  121. package/dist/plugin-sdk/{tables-DCSeBGBz.js → tables-BhH8EIqU.js} +1 -1
  122. package/dist/plugin-sdk/{target-errors-0u6pegQv.js → target-errors-QZay02Cv.js} +2 -2
  123. package/dist/plugin-sdk/{tokens-DF2_VTJy.js → tokens-DIE-Bf72.js} +1 -1
  124. package/dist/plugin-sdk/{tool-images-BbsgbHMZ.js → tool-images-heXfaJdb.js} +2 -2
  125. package/dist/plugin-sdk/{tool-loop-detection-JkCpGrfk.js → tool-loop-detection-CygMSQUK.js} +2 -2
  126. package/dist/plugin-sdk/{utils-BfVxx6bk.js → utils-BcL6KGZf.js} +1 -1
  127. package/dist/plugin-sdk/web-D5yQYvYF.js +72 -0
  128. package/dist/plugin-sdk/{whatsapp-actions-tVcrGNQc.js → whatsapp-actions-CRean1yN.js} +25 -25
  129. package/dist/{plugins-cli-DwKgp7q7.js → plugins-cli-CpSINdz-.js} +2 -2
  130. package/dist/{plugins-cli-o6KJO4Qe.js → plugins-cli-DKIC54hQ.js} +2 -2
  131. package/dist/{program-CQtsVyIe.js → program-R4eCXcVV.js} +7 -7
  132. package/dist/{program-context-CbirfwjC.js → program-context-XIBDpYkH.js} +18 -18
  133. package/dist/{prompt-select-styled-CY9iF1l-.js → prompt-select-styled-CSGsMtmW.js} +4 -4
  134. package/dist/{prompt-select-styled-BlHvgGuv.js → prompt-select-styled-CxcE42jh.js} +4 -4
  135. package/dist/{provider-auth-helpers-hI1pbI9r.js → provider-auth-helpers-BPwzCB_M.js} +1 -1
  136. package/dist/{provider-auth-helpers-CzSm0FSu.js → provider-auth-helpers-BqRZaAgE.js} +1 -1
  137. package/dist/{push-apns-DZ0qaSFA.js → push-apns-BFPYim-z.js} +1 -1
  138. package/dist/{push-apns-DMeB2M_b.js → push-apns-D_JirvZj.js} +1 -1
  139. package/dist/{register.agent-D9rmYCMS.js → register.agent-Cls5qjTc.js} +6 -6
  140. package/dist/{register.agent-BBOmACUM.js → register.agent-rU2v36L0.js} +7 -7
  141. package/dist/{register.configure-CZF2XAPO.js → register.configure-BMDzBahu.js} +7 -7
  142. package/dist/{register.configure-BJ7l1h-A.js → register.configure-BUhyYBGQ.js} +7 -7
  143. package/dist/{register.init-BdPckTb9.js → register.init-CFdcOH88.js} +1 -0
  144. package/dist/{register.init-CNKrbvCo.js → register.init-pWy0PRza.js} +1 -0
  145. package/dist/{register.maintenance-CyXghztz.js → register.maintenance-CofdyNUx.js} +7 -7
  146. package/dist/{register.maintenance-Cid2HJ-t.js → register.maintenance-Cy17SXVH.js} +8 -8
  147. package/dist/{register.message-BME4m1Jr.js → register.message-3BQdcipC.js} +2 -2
  148. package/dist/{register.message-Cs0mwtTw.js → register.message-Ce33qQCZ.js} +2 -2
  149. package/dist/{register.onboard-BsT9XRRr.js → register.onboard-BlcK7F0u.js} +2 -2
  150. package/dist/{register.onboard-CoItO2Ov.js → register.onboard-ESEjBMtx.js} +2 -2
  151. package/dist/{register.setup-2S-SXPOC.js → register.setup-CUxHFPRL.js} +2 -2
  152. package/dist/{register.setup-DJjPOLJK.js → register.setup-N8V5bjG1.js} +2 -2
  153. package/dist/{register.status-health-sessions-Czq26k6E.js → register.status-health-sessions-BKFS62CW.js} +3 -3
  154. package/dist/{register.status-health-sessions-wp3A615j.js → register.status-health-sessions-Bj4rUQRe.js} +3 -3
  155. package/dist/{register.subclis-CIlBs5A-.js → register.subclis-lEqV1Knw.js} +9 -9
  156. package/dist/{reply-OEcNPoWd.js → reply-CAA6gLtt.js} +109 -15
  157. package/dist/{run-main-bo-QbYn_.js → run-main-BTmP3wme.js} +14 -14
  158. package/dist/{server-node-events-BE-B31Iv.js → server-node-events-CD_Wo8L4.js} +2 -2
  159. package/dist/{server-node-events-h5NyibKC.js → server-node-events-ap09x8RZ.js} +2 -2
  160. package/dist/{status-CmNVuywF.js → status-CB2Fs5iL.js} +2 -2
  161. package/dist/{status-D_I-fLJF.js → status-DCtLhxlh.js} +2 -2
  162. package/dist/{subagent-registry-D4xGq2uc.js → subagent-registry-B4xJjOu2.js} +109 -15
  163. package/dist/{update-cli-BYrdZPXD.js → update-cli-BIMys5Ua.js} +7 -7
  164. package/dist/{update-cli-wmp8VSbx.js → update-cli-BuVnlit7.js} +8 -8
  165. package/dist/{update-runner-D5vyQGte.js → update-runner-C4bLqctv.js} +1 -1
  166. package/dist/{update-runner-BUth8QlB.js → update-runner-DGqZqXVF.js} +1 -1
  167. package/dist/{web-CQqnJkMB.js → web-BCpNE4aE.js} +2 -2
  168. package/dist/{web-BYeS4JNp.js → web-BJQKWHqO.js} +1 -1
  169. package/dist/{web-C5gLi1bN.js → web-Bun-T89j.js} +1 -1
  170. package/dist/{web-Bc1AWW4q.js → web-Cb4sindp.js} +2 -2
  171. package/package.json +1 -1
  172. package/dist/plugin-sdk/web-pXzbtWjI.js +0 -72
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { A as spawnWithFallback, C as loadWorkspaceBootstrapFiles, E as resolveOpenClawPackageRoot, G as resolveAgentModelPrimaryValue, H as normalizeWindowsPathForComparison, K as toAgentModelListLike, M as openBoundaryFile, N as openBoundaryFileSync, O as runCommandWithTimeout, S as filterBootstrapFilesForSession, W as resolveAgentModelFallbackValues, _ as DEFAULT_IDENTITY_FILENAME, c as resolveDefaultAgentId, d as resolveSessionAgentId, f as resolveSessionAgentIds, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, k as runExec, l as resolveEffectiveModelFallbacks, m as DEFAULT_AGENT_WORKSPACE_DIR, n as listAgentIds, o as resolveAgentSkillsFilter, r as resolveAgentConfig, s as resolveAgentWorkspaceDir, t as hasConfiguredModelFallbacks, u as resolveRunModelFallbacksOverride, w as resolveWorkspaceAttachmentsRoot, x as ensureAgentWorkspace } from "./agent-scope-BV1a5xUb.js";
2
+ import { A as spawnWithFallback, B as isPathInside, C as loadWorkspaceBootstrapFiles, E as resolveOpenClawPackageRoot, G as resolveAgentModelPrimaryValue, H as normalizeWindowsPathForComparison, K as toAgentModelListLike, M as openBoundaryFile, N as openBoundaryFileSync, O as runCommandWithTimeout, R as hasNodeErrorCode, S as filterBootstrapFilesForSession, W as resolveAgentModelFallbackValues, _ as DEFAULT_IDENTITY_FILENAME, c as resolveDefaultAgentId, d as resolveSessionAgentId, f as resolveSessionAgentIds, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, k as runExec, l as resolveEffectiveModelFallbacks, m as DEFAULT_AGENT_WORKSPACE_DIR, n as listAgentIds, o as resolveAgentSkillsFilter, r as resolveAgentConfig, s as resolveAgentWorkspaceDir, t as hasConfiguredModelFallbacks, u as resolveRunModelFallbacksOverride, w as resolveWorkspaceAttachmentsRoot, x as ensureAgentWorkspace, z as isNotFoundPathError } from "./agent-scope-BV1a5xUb.js";
3
3
  import { a as resolveGatewayPort, c as resolveStateDir, d as resolveRequiredHomeDir, l as expandHomePrefix, n as STATE_DIR, p as resolveCliName, r as resolveConfigPath } from "./paths-De1_4l4O.js";
4
4
  import { C as normalizeLogLevel, E as consumeRootOptionToken, T as FLAG_TERMINATOR, _ as isRich, a as clearActiveProgressLine, c as danger, f as setVerbose, g as colorize, h as warn, i as defaultRuntime, o as registerActiveProgressLine, p as shouldLogVerbose, r as createNonExitingRuntime, s as unregisterActiveProgressLine, t as createSubsystemLogger, u as logVerbose, v as theme, w as resolvePreferredOpenClawTmpDir, y as getChildLogger } from "./subsystem-CVmydYhZ.js";
5
5
  import { C as resolveThreadParentSessionKey, S as parseAgentSessionKey, _ as deriveSessionChatType, b as isCronSessionKey, c as normalizeAgentId, d as resolveThreadSessionKeys, f as sanitizeAgentId, g as isBlockedObjectKey, h as normalizeOptionalAccountId, l as normalizeMainKey, m as normalizeAccountId$2, o as classifySessionKeyShape, p as DEFAULT_ACCOUNT_ID, r as buildAgentMainSessionKey, s as isValidAgentId, t as DEFAULT_AGENT_ID, u as resolveAgentIdFromSessionKey, v as getSubagentDepth, x as isSubagentSessionKey, y as isAcpSessionKey } from "./session-key-a6av96Fj.js";
6
6
  import { C as isPlainObject, S as truncateUtf16Safe, _ as shortenHomeInString, a as ensureDir$3, b as sliceUtf16Safe, c as isRecord$1, d as normalizeE164, h as resolveUserPath, o as escapeRegExp, r as clampInt, s as formatTerminalLink, t as CONFIG_DIR, v as shortenHomePath, y as sleep$1 } from "./utils-CM9uSTVd.js";
7
7
  import { i as logWarn, n as logError, r as logInfo, t as logDebug } from "./logger-9KuF7Fqb.js";
8
- import { $ as resolveIMessageAttachmentRoots, $t as resolveCommandResolutionFromArgv, A as resolveEnvApiKey, An as resolveOpenClawAgentDir, At as normalizePluginsConfig, Bn as DEFAULT_MODEL, Bt as unsetConfigValueAtPath, C as buildAssistantMessageWithZeroUsage, Cn as isDangerousHostEnvVarName, Ct as loadPluginManifestRegistry, D as getCustomProviderApiKey, Dn as markAuthProfileGood, E as getApiKeyForModel, En as listProfilesForProvider, Et as safeStatSync, F as isProfileInCooldown, Fn as resolveAuthProfileDisplayLabel, Ft as setConfigOverride, G as writeConfigFile, Gt as validateSafeBinArgv, H as readConfigFileSnapshot, Ht as isTrustedSafeBinPath, I as markAuthProfileFailure, It as unsetConfigOverride, J as normalizeTelegramCommandName, Jt as isWindowsPlatform, K as validateConfigObjectWithPlugins, Kt as analyzeShellCommand, L as markAuthProfileUsed, Ln as normalizeSecretInput, Lt as getConfigValueAtPath, Mt as resolveMemorySlotDecision, N as resolveAuthProfileOrder, Nt as getConfigOverrides, O as requireApiKey, On as ensureAuthProfileStore, Ot as MANIFEST_KEY, P as getSoonestCooldownExpiry, Pt as resetConfigOverrides, Qt as resolveAllowlistCandidatePath, R as resolveProfilesUnavailableReason, Rn as splitTrailingAuthProfile, Rt as parseConfigPath, S as buildAssistantMessage, Sn as resolveShellEnvFallbackTimeoutMs, St as validateJsonSchemaValue, T as buildUsageWithNoCost, Tn as dedupeProfileIds, Tt as isPathInside, Ut as listWritableExplicitTrustedSafeBinDirs, V as loadConfig, Vn as DEFAULT_PROVIDER, Vt as getTrustedSafeBinDirs, W as resolveConfigSnapshotHash, Wt as normalizeTrustedSafeBinDirs, Xt as DEFAULT_SAFE_BINS, Y as resolveTelegramCustomCommands, Yt as splitCommandChain, Z as isInboundPathAllowed, Zt as matchAllowlist, _t as AVATAR_MAX_BYTES, a as isCliProvider, an as splitShellArgs, b as OLLAMA_NATIVE_BASE_URL, bn as VERSION, bt as isPathWithinRoot, c as normalizeProviderId, cn as resolveSafeBinProfiles, d as resolveModelRefFromString, dn as mapStreamingModeToSlackLegacyDraftStreamMode, en as extractShellWrapperInlineCommand, et as resolveIMessageRemoteAttachmentRoots, f as resolveReasoningDefault, fn as resolveDiscordPreviewStreamMode, i as findNormalizedProviderValue, in as unwrapKnownShellMultiplexerInvocation, it as parseDurationMs, j as resolveModelAuthMode, jn as withFileLock, jt as resolveEffectiveEnableState, k as resolveApiKeyForProvider, kn as resolveAuthStorePathForDisplay, kt as applyTestPluginDefaults, l as resolveConfiguredModelRef, ln as applyMergePatch, m as resolveThinkingDefault, mn as resolveSlackStreamingMode, n as buildConfiguredAllowlistKeys, nn as isShellWrapperExecutable, nt as parseNonNegativeByteSize, o as modelKey, on as SAFE_BIN_PROFILES, p as resolveSubagentSpawnModelSelection, pn as resolveSlackNativeStreaming, q as TELEGRAM_COMMAND_NAME_PATTERN, qt as buildEnforcedShellCommand, r as buildModelAliasIndex, rn as unwrapKnownDispatchWrapperInvocation, s as normalizeModelRef$2, sn as normalizeSafeBinProfileFixtures, t as buildAllowedModelSet, tn as isDispatchWrapperExecutable, tt as normalizeScpRemoteHost, u as resolveDefaultModelForAgent, un as isSafeExecutableValue, vn as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, vt as isAvatarDataUrl, w as buildStreamErrorAssistantMessage, wn as resolveOwnerDisplaySetting, wt as discoverOpenClawPlugins, x as createOllamaStreamFn, xn as getShellPathFromLoginShell, xt as isSupportedLocalAvatarExtension, yn as resolveAgentMaxConcurrent, yt as isAvatarHttpUrl, z as resolveApiKeyForProfile, zn as DEFAULT_CONTEXT_TOKENS, zt as setConfigValueAtPath } from "./model-selection-D5OFBCTr.js";
8
+ import { $ as resolveIMessageAttachmentRoots, $t as resolveCommandResolutionFromArgv, A as resolveEnvApiKey, An as resolveOpenClawAgentDir, At as normalizePluginsConfig, Bn as DEFAULT_MODEL, Bt as unsetConfigValueAtPath, C as buildAssistantMessageWithZeroUsage, Cn as isDangerousHostEnvVarName, Ct as loadPluginManifestRegistry, D as getCustomProviderApiKey, Dn as markAuthProfileGood, E as getApiKeyForModel, En as listProfilesForProvider, Et as safeStatSync, F as isProfileInCooldown, Fn as resolveAuthProfileDisplayLabel, Ft as setConfigOverride, G as writeConfigFile, Gt as validateSafeBinArgv, H as readConfigFileSnapshot, Ht as isTrustedSafeBinPath, I as markAuthProfileFailure, It as unsetConfigOverride, J as normalizeTelegramCommandName, Jt as isWindowsPlatform, K as validateConfigObjectWithPlugins, Kt as analyzeShellCommand, L as markAuthProfileUsed, Ln as normalizeSecretInput, Lt as getConfigValueAtPath, Mt as resolveMemorySlotDecision, N as resolveAuthProfileOrder, Nt as getConfigOverrides, O as requireApiKey, On as ensureAuthProfileStore, Ot as MANIFEST_KEY, P as getSoonestCooldownExpiry, Pt as resetConfigOverrides, Qt as resolveAllowlistCandidatePath, R as resolveProfilesUnavailableReason, Rn as splitTrailingAuthProfile, Rt as parseConfigPath, S as buildAssistantMessage, Sn as resolveShellEnvFallbackTimeoutMs, St as validateJsonSchemaValue, T as buildUsageWithNoCost, Tn as dedupeProfileIds, Tt as isPathInside$1, Ut as listWritableExplicitTrustedSafeBinDirs, V as loadConfig, Vn as DEFAULT_PROVIDER, Vt as getTrustedSafeBinDirs, W as resolveConfigSnapshotHash, Wt as normalizeTrustedSafeBinDirs, Xt as DEFAULT_SAFE_BINS, Y as resolveTelegramCustomCommands, Yt as splitCommandChain, Z as isInboundPathAllowed, Zt as matchAllowlist, _t as AVATAR_MAX_BYTES, a as isCliProvider, an as splitShellArgs, b as OLLAMA_NATIVE_BASE_URL, bn as VERSION, bt as isPathWithinRoot, c as normalizeProviderId, cn as resolveSafeBinProfiles, d as resolveModelRefFromString, dn as mapStreamingModeToSlackLegacyDraftStreamMode, en as extractShellWrapperInlineCommand, et as resolveIMessageRemoteAttachmentRoots, f as resolveReasoningDefault, fn as resolveDiscordPreviewStreamMode, i as findNormalizedProviderValue, in as unwrapKnownShellMultiplexerInvocation, it as parseDurationMs, j as resolveModelAuthMode, jn as withFileLock, jt as resolveEffectiveEnableState, k as resolveApiKeyForProvider, kn as resolveAuthStorePathForDisplay, kt as applyTestPluginDefaults, l as resolveConfiguredModelRef, ln as applyMergePatch, m as resolveThinkingDefault, mn as resolveSlackStreamingMode, n as buildConfiguredAllowlistKeys, nn as isShellWrapperExecutable, nt as parseNonNegativeByteSize, o as modelKey, on as SAFE_BIN_PROFILES, p as resolveSubagentSpawnModelSelection, pn as resolveSlackNativeStreaming, q as TELEGRAM_COMMAND_NAME_PATTERN, qt as buildEnforcedShellCommand, r as buildModelAliasIndex, rn as unwrapKnownDispatchWrapperInvocation, s as normalizeModelRef$2, sn as normalizeSafeBinProfileFixtures, t as buildAllowedModelSet, tn as isDispatchWrapperExecutable, tt as normalizeScpRemoteHost, u as resolveDefaultModelForAgent, un as isSafeExecutableValue, vn as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, vt as isAvatarDataUrl, w as buildStreamErrorAssistantMessage, wn as resolveOwnerDisplaySetting, wt as discoverOpenClawPlugins, x as createOllamaStreamFn, xn as getShellPathFromLoginShell, xt as isSupportedLocalAvatarExtension, yn as resolveAgentMaxConcurrent, yt as isAvatarHttpUrl, z as resolveApiKeyForProfile, zn as DEFAULT_CONTEXT_TOKENS, zt as setConfigValueAtPath } from "./model-selection-D5OFBCTr.js";
9
9
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-BDSRMl8C.js";
10
10
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-CwIS0zs9.js";
11
11
  import { n as parseBooleanValue$1, r as formatCliCommand, t as isTruthyEnvValue } from "./env-zky96nK6.js";
@@ -61007,7 +61007,7 @@ function createOutboundSendDepsFromCliSource(deps) {
61007
61007
  function createDefaultDeps() {
61008
61008
  return {
61009
61009
  sendMessageWhatsApp: async (...args) => {
61010
- const { sendMessageWhatsApp } = await import("./web-BYeS4JNp.js");
61010
+ const { sendMessageWhatsApp } = await import("./web-BJQKWHqO.js");
61011
61011
  return await sendMessageWhatsApp(...args);
61012
61012
  },
61013
61013
  sendMessageTelegram: async (...args) => {
@@ -79265,7 +79265,7 @@ function loadWebLoginQr() {
79265
79265
  return webLoginQrPromise;
79266
79266
  }
79267
79267
  function loadWebChannel() {
79268
- webChannelPromise ??= import("./web-BYeS4JNp.js");
79268
+ webChannelPromise ??= import("./web-BJQKWHqO.js");
79269
79269
  return webChannelPromise;
79270
79270
  }
79271
79271
  function loadWhatsAppActions() {
@@ -80894,7 +80894,7 @@ function addPathToMatcher(matcher, rawPath) {
80894
80894
  }
80895
80895
  function matchesPathMatcher(matcher, sourcePath) {
80896
80896
  if (matcher.exact.has(sourcePath)) return true;
80897
- return matcher.dirs.some((dirPath) => isPathInside(dirPath, sourcePath));
80897
+ return matcher.dirs.some((dirPath) => isPathInside$1(dirPath, sourcePath));
80898
80898
  }
80899
80899
  function buildProvenanceIndex(params) {
80900
80900
  const loadPathMatcher = createPathMatcher();
@@ -82450,6 +82450,82 @@ function stripReadTruncationContentDetails(result) {
82450
82450
  }
82451
82451
  };
82452
82452
  }
82453
+ function extractRequestedReadPath(record) {
82454
+ const trimmed = (typeof record?.path === "string" ? record.path : typeof record?.file_path === "string" ? record.file_path : void 0)?.trim();
82455
+ return trimmed ? trimmed : void 0;
82456
+ }
82457
+ function normalizeReadPathCandidate(filePath) {
82458
+ const trimmed = filePath.trim();
82459
+ const withoutAt = trimmed.startsWith("@") ? trimmed.slice(1) : trimmed;
82460
+ if (/^file:\/\//i.test(withoutAt)) try {
82461
+ return fileURLToPath(withoutAt);
82462
+ } catch {
82463
+ return withoutAt;
82464
+ }
82465
+ return withoutAt;
82466
+ }
82467
+ function normalizeRelativeReadPath(filePath) {
82468
+ return filePath.replace(/\\/g, "/").replace(/^(?:\.\/)+/, "").replace(/^\/+/, "").replace(/\/+$/, "");
82469
+ }
82470
+ function getReadPathRelativeToWorkspace(filePath, workspaceRoot) {
82471
+ const normalized = normalizeReadPathCandidate(filePath);
82472
+ if (!path.isAbsolute(normalized)) return normalizeRelativeReadPath(normalized);
82473
+ if (!workspaceRoot) return;
82474
+ const root = path.resolve(workspaceRoot);
82475
+ const resolved = path.resolve(normalized);
82476
+ if (!isPathInside(root, resolved)) return;
82477
+ return normalizeRelativeReadPath(path.relative(root, resolved));
82478
+ }
82479
+ function isMemoryReadPath(filePath, workspaceRoot) {
82480
+ const relative = getReadPathRelativeToWorkspace(filePath, workspaceRoot);
82481
+ return relative === "memory" || Boolean(relative?.startsWith("memory/"));
82482
+ }
82483
+ function resolveReadPathWithinWorkspace(filePath, workspaceRoot) {
82484
+ if (!workspaceRoot) return;
82485
+ const normalized = normalizeReadPathCandidate(filePath);
82486
+ const resolved = path.isAbsolute(normalized) ? path.resolve(normalized) : path.resolve(workspaceRoot, normalized);
82487
+ return isPathInside(path.resolve(workspaceRoot), resolved) ? resolved : void 0;
82488
+ }
82489
+ function createMemoryDirectoryReadResult(filePath) {
82490
+ return {
82491
+ content: [{
82492
+ type: "text",
82493
+ text: `${filePath} is a directory, not a file. Read a specific file such as MEMORY.md or memory/YYYY-MM-DD.md instead.`
82494
+ }],
82495
+ details: {}
82496
+ };
82497
+ }
82498
+ function createMissingMemoryReadResult(filePath) {
82499
+ return {
82500
+ content: [{
82501
+ type: "text",
82502
+ text: `No memory file exists at ${filePath} yet. Continue normally, or create a file such as memory/YYYY-MM-DD.md when you want to save notes.`
82503
+ }],
82504
+ details: {}
82505
+ };
82506
+ }
82507
+ async function maybeCreateMemoryReadCompatibilityResult(params) {
82508
+ if (!isMemoryReadPath(params.filePath, params.workspaceRoot)) return null;
82509
+ const absolutePath = resolveReadPathWithinWorkspace(params.filePath, params.workspaceRoot);
82510
+ if (!absolutePath) return null;
82511
+ try {
82512
+ if ((await fs.stat(absolutePath)).isDirectory()) return createMemoryDirectoryReadResult(params.filePath);
82513
+ return null;
82514
+ } catch (error) {
82515
+ if (isNotFoundPathError(error)) return createMissingMemoryReadResult(params.filePath);
82516
+ throw error;
82517
+ }
82518
+ }
82519
+ function maybeRecoverMemoryReadError(params) {
82520
+ if (!isMemoryReadPath(params.filePath, params.workspaceRoot)) return null;
82521
+ if (params.error instanceof SafeOpenError) {
82522
+ if (params.error.code === "not-file") return createMemoryDirectoryReadResult(params.filePath);
82523
+ if (params.error.code === "not-found") return createMissingMemoryReadResult(params.filePath);
82524
+ }
82525
+ if (hasNodeErrorCode(params.error, "EISDIR")) return createMemoryDirectoryReadResult(params.filePath);
82526
+ if (isNotFoundPathError(params.error)) return createMissingMemoryReadResult(params.filePath);
82527
+ return null;
82528
+ }
82453
82529
  async function executeReadWithAdaptivePaging(params) {
82454
82530
  const userLimit = params.args.limit;
82455
82531
  if (typeof userLimit === "number" && Number.isFinite(userLimit) && userLimit > 0) return await params.base.execute(params.toolCallId, params.args, params.signal);
@@ -82725,7 +82801,8 @@ function wrapToolWorkspaceRootGuardWithOptions(tool, root, options) {
82725
82801
  function createSandboxedReadTool(params) {
82726
82802
  return createOpenClawReadTool(createReadTool(params.root, { operations: createSandboxReadOperations(params) }), {
82727
82803
  modelContextWindowTokens: params.modelContextWindowTokens,
82728
- imageSanitization: params.imageSanitization
82804
+ imageSanitization: params.imageSanitization,
82805
+ workspaceRoot: params.root
82729
82806
  });
82730
82807
  }
82731
82808
  function createSandboxedWriteTool(params) {
@@ -82791,14 +82868,30 @@ function createOpenClawReadTool(base, options) {
82791
82868
  const normalized = normalizeToolParams(params);
82792
82869
  const record = normalized ?? (params && typeof params === "object" ? params : void 0);
82793
82870
  assertRequiredParams(record, CLAUDE_PARAM_GROUPS.read, base.name);
82794
- const result = await executeReadWithAdaptivePaging({
82795
- base,
82796
- toolCallId,
82797
- args: normalized ?? params ?? {},
82798
- signal,
82799
- maxBytes: resolveAdaptiveReadMaxBytes(options)
82800
- });
82801
- const filePath = typeof record?.path === "string" ? String(record.path) : "<unknown>";
82871
+ const filePath = extractRequestedReadPath(record) ?? "<unknown>";
82872
+ const memoryCompatibilityResult = filePath !== "<unknown>" ? await maybeCreateMemoryReadCompatibilityResult({
82873
+ filePath,
82874
+ workspaceRoot: options?.workspaceRoot
82875
+ }) : null;
82876
+ if (memoryCompatibilityResult) return memoryCompatibilityResult;
82877
+ let result;
82878
+ try {
82879
+ result = await executeReadWithAdaptivePaging({
82880
+ base,
82881
+ toolCallId,
82882
+ args: normalized ?? params ?? {},
82883
+ signal,
82884
+ maxBytes: resolveAdaptiveReadMaxBytes(options)
82885
+ });
82886
+ } catch (error) {
82887
+ const recovered = filePath !== "<unknown>" ? maybeRecoverMemoryReadError({
82888
+ filePath,
82889
+ workspaceRoot: options?.workspaceRoot,
82890
+ error
82891
+ }) : null;
82892
+ if (recovered) return recovered;
82893
+ throw error;
82894
+ }
82802
82895
  return sanitizeToolResultImages(await normalizeReadImageResult(stripReadTruncationContentDetails(result), filePath), `read:${filePath}`, options?.imageSanitization);
82803
82896
  }
82804
82897
  };
@@ -83564,7 +83657,8 @@ function createOpenClawCodingTools(options) {
83564
83657
  }
83565
83658
  const wrapped = createOpenClawReadTool(createReadTool(workspaceRoot), {
83566
83659
  modelContextWindowTokens: options?.modelContextWindowTokens,
83567
- imageSanitization
83660
+ imageSanitization,
83661
+ workspaceRoot
83568
83662
  });
83569
83663
  return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
83570
83664
  }
@@ -4,9 +4,9 @@ import { a as resolveGatewayPort, c as resolveStateDir, d as resolveRequiredHome
4
4
  import { C as normalizeLogLevel, E as consumeRootOptionToken, T as FLAG_TERMINATOR, _ as isRich, a as clearActiveProgressLine, c as danger, f as setVerbose, g as colorize, h as warn, i as defaultRuntime, o as registerActiveProgressLine, p as shouldLogVerbose, r as createNonExitingRuntime, s as unregisterActiveProgressLine, t as createSubsystemLogger, u as logVerbose, v as theme, w as resolvePreferredOpenClawTmpDir, y as getChildLogger } from "./subsystem-BRjuJbbM.js";
5
5
  import { C as resolveThreadParentSessionKey, S as parseAgentSessionKey, _ as deriveSessionChatType, b as isCronSessionKey, c as normalizeAgentId, d as resolveThreadSessionKeys, f as sanitizeAgentId, g as isBlockedObjectKey, h as normalizeOptionalAccountId, l as normalizeMainKey, m as normalizeAccountId$2, o as classifySessionKeyShape, p as DEFAULT_ACCOUNT_ID, r as buildAgentMainSessionKey, s as isValidAgentId, t as DEFAULT_AGENT_ID, u as resolveAgentIdFromSessionKey, v as getSubagentDepth, x as isSubagentSessionKey, y as isAcpSessionKey } from "./session-key-a6av96Fj.js";
6
6
  import { C as isPlainObject, S as truncateUtf16Safe, _ as shortenHomeInString, a as ensureDir$3, b as sliceUtf16Safe, c as isRecord$1, d as normalizeE164, h as resolveUserPath, o as escapeRegExp, r as clampInt, s as formatTerminalLink, t as CONFIG_DIR, v as shortenHomePath, y as sleep$1 } from "./utils-BFZnl-5N.js";
7
- import { C as openBoundaryFileSync, M as normalizeWindowsPathForComparison, S as openBoundaryFile, a as DEFAULT_IDENTITY_FILENAME, b as spawnWithFallback, f as loadWorkspaceBootstrapFiles, g as resolveOpenClawPackageRoot, l as ensureAgentWorkspace, m as resolveWorkspaceAttachmentsRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as runCommandWithTimeout, y as runExec } from "./workspace-D6mrCnXi.js";
7
+ import { A as isPathInside, C as openBoundaryFileSync, M as normalizeWindowsPathForComparison, O as hasNodeErrorCode, S as openBoundaryFile, a as DEFAULT_IDENTITY_FILENAME, b as spawnWithFallback, f as loadWorkspaceBootstrapFiles, g as resolveOpenClawPackageRoot, k as isNotFoundPathError, l as ensureAgentWorkspace, m as resolveWorkspaceAttachmentsRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as runCommandWithTimeout, y as runExec } from "./workspace-D6mrCnXi.js";
8
8
  import { i as logWarn, n as logError, r as logInfo, t as logDebug } from "./logger-BlH5MJiV.js";
9
- import { $t as extractShellWrapperInlineCommand, A as resolveApiKeyForProvider, An as withFileLock, At as resolveEffectiveEnableState, B as resolveApiKeyForProfile, Bn as DEFAULT_PROVIDER, Bt as getTrustedSafeBinDirs, C as buildAssistantMessage, Cn as resolveOwnerDisplaySetting, Ct as validateJsonSchemaValue, D as getApiKeyForModel, Dn as ensureAuthProfileStore, Dt as safeStatSync, E as buildUsageWithNoCost, En as markAuthProfileGood, Et as isPathInside, F as getSoonestCooldownExpiry, Ft as unsetConfigOverride, G as resolveConfigSnapshotHash, Gt as analyzeShellCommand, H as loadConfig, Ht as listWritableExplicitTrustedSafeBinDirs, I as isProfileInCooldown, In as normalizeSecretInput, It as getConfigValueAtPath, J as TELEGRAM_COMMAND_NAME_PATTERN, Jt as splitCommandChain, K as writeConfigFile, Kt as buildEnforcedShellCommand, L as markAuthProfileFailure, Ln as splitTrailingAuthProfile, Lt as parseConfigPath, M as resolveModelAuthMode, Mt as getConfigOverrides, Nt as resetConfigOverrides, O as getCustomProviderApiKey, On as resolveAuthStorePathForDisplay, Ot as applyTestPluginDefaults, P as resolveAuthProfileOrder, Pn as resolveAuthProfileDisplayLabel, Pt as setConfigOverride, Q as isInboundPathAllowed, Qt as resolveCommandResolutionFromArgv, R as markAuthProfileUsed, Rn as DEFAULT_CONTEXT_TOKENS, Rt as setConfigValueAtPath, S as createOllamaStreamFn, Sn as isDangerousHostEnvVarName, St as isSupportedLocalAvatarExtension, T as buildStreamErrorAssistantMessage, Tn as listProfilesForProvider, Tt as discoverOpenClawPlugins, U as readConfigFileSnapshot, Ut as normalizeTrustedSafeBinDirs, Vt as isTrustedSafeBinPath, Wt as validateSafeBinArgv, X as resolveTelegramCustomCommands, Xt as matchAllowlist, Y as normalizeTelegramCommandName, Yt as DEFAULT_SAFE_BINS, Zt as resolveAllowlistCandidatePath, _n as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, a as isCliProvider, an as SAFE_BIN_PROFILES, at as parseDurationMs, bn as getShellPathFromLoginShell, bt as isAvatarHttpUrl, c as normalizeProviderId, cn as applyMergePatch, d as resolveDefaultModelForAgent, dn as resolveDiscordPreviewStreamMode, en as isDispatchWrapperExecutable, et as resolveIMessageAttachmentRoots, f as resolveModelRefFromString, fn as resolveSlackNativeStreaming, h as resolveThinkingDefault, i as findNormalizedProviderValue, in as splitShellArgs, j as resolveEnvApiKey, jt as resolveMemorySlotDecision, k as requireApiKey, kn as resolveOpenClawAgentDir, kt as normalizePluginsConfig, ln as isSafeExecutableValue, m as resolveSubagentSpawnModelSelection, n as buildConfiguredAllowlistKeys, nn as unwrapKnownDispatchWrapperInvocation, nt as normalizeScpRemoteHost, o as modelKey, on as normalizeSafeBinProfileFixtures, p as resolveReasoningDefault, pn as resolveSlackStreamingMode, q as validateConfigObjectWithPlugins, qt as isWindowsPlatform, r as buildModelAliasIndex, rn as unwrapKnownShellMultiplexerInvocation, rt as parseNonNegativeByteSize, s as normalizeModelRef$2, sn as resolveSafeBinProfiles, t as buildAllowedModelSet, tn as isShellWrapperExecutable, tt as resolveIMessageRemoteAttachmentRoots, u as resolveConfiguredModelRef, un as mapStreamingModeToSlackLegacyDraftStreamMode, vn as resolveAgentMaxConcurrent, vt as AVATAR_MAX_BYTES, w as buildAssistantMessageWithZeroUsage, wn as dedupeProfileIds, wt as loadPluginManifestRegistry, x as OLLAMA_NATIVE_BASE_URL, xn as resolveShellEnvFallbackTimeoutMs, xt as isPathWithinRoot, yn as VERSION, yt as isAvatarDataUrl, z as resolveProfilesUnavailableReason, zn as DEFAULT_MODEL, zt as unsetConfigValueAtPath } from "./model-selection-D_Si2Ict.js";
9
+ import { $t as extractShellWrapperInlineCommand, A as resolveApiKeyForProvider, An as withFileLock, At as resolveEffectiveEnableState, B as resolveApiKeyForProfile, Bn as DEFAULT_PROVIDER, Bt as getTrustedSafeBinDirs, C as buildAssistantMessage, Cn as resolveOwnerDisplaySetting, Ct as validateJsonSchemaValue, D as getApiKeyForModel, Dn as ensureAuthProfileStore, Dt as safeStatSync, E as buildUsageWithNoCost, En as markAuthProfileGood, Et as isPathInside$1, F as getSoonestCooldownExpiry, Ft as unsetConfigOverride, G as resolveConfigSnapshotHash, Gt as analyzeShellCommand, H as loadConfig, Ht as listWritableExplicitTrustedSafeBinDirs, I as isProfileInCooldown, In as normalizeSecretInput, It as getConfigValueAtPath, J as TELEGRAM_COMMAND_NAME_PATTERN, Jt as splitCommandChain, K as writeConfigFile, Kt as buildEnforcedShellCommand, L as markAuthProfileFailure, Ln as splitTrailingAuthProfile, Lt as parseConfigPath, M as resolveModelAuthMode, Mt as getConfigOverrides, Nt as resetConfigOverrides, O as getCustomProviderApiKey, On as resolveAuthStorePathForDisplay, Ot as applyTestPluginDefaults, P as resolveAuthProfileOrder, Pn as resolveAuthProfileDisplayLabel, Pt as setConfigOverride, Q as isInboundPathAllowed, Qt as resolveCommandResolutionFromArgv, R as markAuthProfileUsed, Rn as DEFAULT_CONTEXT_TOKENS, Rt as setConfigValueAtPath, S as createOllamaStreamFn, Sn as isDangerousHostEnvVarName, St as isSupportedLocalAvatarExtension, T as buildStreamErrorAssistantMessage, Tn as listProfilesForProvider, Tt as discoverOpenClawPlugins, U as readConfigFileSnapshot, Ut as normalizeTrustedSafeBinDirs, Vt as isTrustedSafeBinPath, Wt as validateSafeBinArgv, X as resolveTelegramCustomCommands, Xt as matchAllowlist, Y as normalizeTelegramCommandName, Yt as DEFAULT_SAFE_BINS, Zt as resolveAllowlistCandidatePath, _n as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, a as isCliProvider, an as SAFE_BIN_PROFILES, at as parseDurationMs, bn as getShellPathFromLoginShell, bt as isAvatarHttpUrl, c as normalizeProviderId, cn as applyMergePatch, d as resolveDefaultModelForAgent, dn as resolveDiscordPreviewStreamMode, en as isDispatchWrapperExecutable, et as resolveIMessageAttachmentRoots, f as resolveModelRefFromString, fn as resolveSlackNativeStreaming, h as resolveThinkingDefault, i as findNormalizedProviderValue, in as splitShellArgs, j as resolveEnvApiKey, jt as resolveMemorySlotDecision, k as requireApiKey, kn as resolveOpenClawAgentDir, kt as normalizePluginsConfig, ln as isSafeExecutableValue, m as resolveSubagentSpawnModelSelection, n as buildConfiguredAllowlistKeys, nn as unwrapKnownDispatchWrapperInvocation, nt as normalizeScpRemoteHost, o as modelKey, on as normalizeSafeBinProfileFixtures, p as resolveReasoningDefault, pn as resolveSlackStreamingMode, q as validateConfigObjectWithPlugins, qt as isWindowsPlatform, r as buildModelAliasIndex, rn as unwrapKnownShellMultiplexerInvocation, rt as parseNonNegativeByteSize, s as normalizeModelRef$2, sn as resolveSafeBinProfiles, t as buildAllowedModelSet, tn as isShellWrapperExecutable, tt as resolveIMessageRemoteAttachmentRoots, u as resolveConfiguredModelRef, un as mapStreamingModeToSlackLegacyDraftStreamMode, vn as resolveAgentMaxConcurrent, vt as AVATAR_MAX_BYTES, w as buildAssistantMessageWithZeroUsage, wn as dedupeProfileIds, wt as loadPluginManifestRegistry, x as OLLAMA_NATIVE_BASE_URL, xn as resolveShellEnvFallbackTimeoutMs, xt as isPathWithinRoot, yn as VERSION, yt as isAvatarDataUrl, z as resolveProfilesUnavailableReason, zn as DEFAULT_MODEL, zt as unsetConfigValueAtPath } from "./model-selection-D_Si2Ict.js";
10
10
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-DLGN-8YS.js";
11
11
  import { n as formatCliCommand, t as isTruthyEnvValue } from "./env-DNMZEG57.js";
12
12
  import { t as parseBooleanValue$1 } from "./boolean-mcn6kL0s.js";
@@ -61011,7 +61011,7 @@ function createOutboundSendDepsFromCliSource(deps) {
61011
61011
  function createDefaultDeps() {
61012
61012
  return {
61013
61013
  sendMessageWhatsApp: async (...args) => {
61014
- const { sendMessageWhatsApp } = await import("./web-C5gLi1bN.js");
61014
+ const { sendMessageWhatsApp } = await import("./web-Bun-T89j.js");
61015
61015
  return await sendMessageWhatsApp(...args);
61016
61016
  },
61017
61017
  sendMessageTelegram: async (...args) => {
@@ -79275,7 +79275,7 @@ function loadWebLoginQr() {
79275
79275
  return webLoginQrPromise;
79276
79276
  }
79277
79277
  function loadWebChannel() {
79278
- webChannelPromise ??= import("./web-C5gLi1bN.js");
79278
+ webChannelPromise ??= import("./web-Bun-T89j.js");
79279
79279
  return webChannelPromise;
79280
79280
  }
79281
79281
  function loadWhatsAppActions() {
@@ -80904,7 +80904,7 @@ function addPathToMatcher(matcher, rawPath) {
80904
80904
  }
80905
80905
  function matchesPathMatcher(matcher, sourcePath) {
80906
80906
  if (matcher.exact.has(sourcePath)) return true;
80907
- return matcher.dirs.some((dirPath) => isPathInside(dirPath, sourcePath));
80907
+ return matcher.dirs.some((dirPath) => isPathInside$1(dirPath, sourcePath));
80908
80908
  }
80909
80909
  function buildProvenanceIndex(params) {
80910
80910
  const loadPathMatcher = createPathMatcher();
@@ -82460,6 +82460,82 @@ function stripReadTruncationContentDetails(result) {
82460
82460
  }
82461
82461
  };
82462
82462
  }
82463
+ function extractRequestedReadPath(record) {
82464
+ const trimmed = (typeof record?.path === "string" ? record.path : typeof record?.file_path === "string" ? record.file_path : void 0)?.trim();
82465
+ return trimmed ? trimmed : void 0;
82466
+ }
82467
+ function normalizeReadPathCandidate(filePath) {
82468
+ const trimmed = filePath.trim();
82469
+ const withoutAt = trimmed.startsWith("@") ? trimmed.slice(1) : trimmed;
82470
+ if (/^file:\/\//i.test(withoutAt)) try {
82471
+ return fileURLToPath(withoutAt);
82472
+ } catch {
82473
+ return withoutAt;
82474
+ }
82475
+ return withoutAt;
82476
+ }
82477
+ function normalizeRelativeReadPath(filePath) {
82478
+ return filePath.replace(/\\/g, "/").replace(/^(?:\.\/)+/, "").replace(/^\/+/, "").replace(/\/+$/, "");
82479
+ }
82480
+ function getReadPathRelativeToWorkspace(filePath, workspaceRoot) {
82481
+ const normalized = normalizeReadPathCandidate(filePath);
82482
+ if (!path.isAbsolute(normalized)) return normalizeRelativeReadPath(normalized);
82483
+ if (!workspaceRoot) return;
82484
+ const root = path.resolve(workspaceRoot);
82485
+ const resolved = path.resolve(normalized);
82486
+ if (!isPathInside(root, resolved)) return;
82487
+ return normalizeRelativeReadPath(path.relative(root, resolved));
82488
+ }
82489
+ function isMemoryReadPath(filePath, workspaceRoot) {
82490
+ const relative = getReadPathRelativeToWorkspace(filePath, workspaceRoot);
82491
+ return relative === "memory" || Boolean(relative?.startsWith("memory/"));
82492
+ }
82493
+ function resolveReadPathWithinWorkspace(filePath, workspaceRoot) {
82494
+ if (!workspaceRoot) return;
82495
+ const normalized = normalizeReadPathCandidate(filePath);
82496
+ const resolved = path.isAbsolute(normalized) ? path.resolve(normalized) : path.resolve(workspaceRoot, normalized);
82497
+ return isPathInside(path.resolve(workspaceRoot), resolved) ? resolved : void 0;
82498
+ }
82499
+ function createMemoryDirectoryReadResult(filePath) {
82500
+ return {
82501
+ content: [{
82502
+ type: "text",
82503
+ text: `${filePath} is a directory, not a file. Read a specific file such as MEMORY.md or memory/YYYY-MM-DD.md instead.`
82504
+ }],
82505
+ details: {}
82506
+ };
82507
+ }
82508
+ function createMissingMemoryReadResult(filePath) {
82509
+ return {
82510
+ content: [{
82511
+ type: "text",
82512
+ text: `No memory file exists at ${filePath} yet. Continue normally, or create a file such as memory/YYYY-MM-DD.md when you want to save notes.`
82513
+ }],
82514
+ details: {}
82515
+ };
82516
+ }
82517
+ async function maybeCreateMemoryReadCompatibilityResult(params) {
82518
+ if (!isMemoryReadPath(params.filePath, params.workspaceRoot)) return null;
82519
+ const absolutePath = resolveReadPathWithinWorkspace(params.filePath, params.workspaceRoot);
82520
+ if (!absolutePath) return null;
82521
+ try {
82522
+ if ((await fs.stat(absolutePath)).isDirectory()) return createMemoryDirectoryReadResult(params.filePath);
82523
+ return null;
82524
+ } catch (error) {
82525
+ if (isNotFoundPathError(error)) return createMissingMemoryReadResult(params.filePath);
82526
+ throw error;
82527
+ }
82528
+ }
82529
+ function maybeRecoverMemoryReadError(params) {
82530
+ if (!isMemoryReadPath(params.filePath, params.workspaceRoot)) return null;
82531
+ if (params.error instanceof SafeOpenError) {
82532
+ if (params.error.code === "not-file") return createMemoryDirectoryReadResult(params.filePath);
82533
+ if (params.error.code === "not-found") return createMissingMemoryReadResult(params.filePath);
82534
+ }
82535
+ if (hasNodeErrorCode(params.error, "EISDIR")) return createMemoryDirectoryReadResult(params.filePath);
82536
+ if (isNotFoundPathError(params.error)) return createMissingMemoryReadResult(params.filePath);
82537
+ return null;
82538
+ }
82463
82539
  async function executeReadWithAdaptivePaging(params) {
82464
82540
  const userLimit = params.args.limit;
82465
82541
  if (typeof userLimit === "number" && Number.isFinite(userLimit) && userLimit > 0) return await params.base.execute(params.toolCallId, params.args, params.signal);
@@ -82735,7 +82811,8 @@ function wrapToolWorkspaceRootGuardWithOptions(tool, root, options) {
82735
82811
  function createSandboxedReadTool(params) {
82736
82812
  return createOpenClawReadTool(createReadTool(params.root, { operations: createSandboxReadOperations(params) }), {
82737
82813
  modelContextWindowTokens: params.modelContextWindowTokens,
82738
- imageSanitization: params.imageSanitization
82814
+ imageSanitization: params.imageSanitization,
82815
+ workspaceRoot: params.root
82739
82816
  });
82740
82817
  }
82741
82818
  function createSandboxedWriteTool(params) {
@@ -82801,14 +82878,30 @@ function createOpenClawReadTool(base, options) {
82801
82878
  const normalized = normalizeToolParams(params);
82802
82879
  const record = normalized ?? (params && typeof params === "object" ? params : void 0);
82803
82880
  assertRequiredParams(record, CLAUDE_PARAM_GROUPS.read, base.name);
82804
- const result = await executeReadWithAdaptivePaging({
82805
- base,
82806
- toolCallId,
82807
- args: normalized ?? params ?? {},
82808
- signal,
82809
- maxBytes: resolveAdaptiveReadMaxBytes(options)
82810
- });
82811
- const filePath = typeof record?.path === "string" ? String(record.path) : "<unknown>";
82881
+ const filePath = extractRequestedReadPath(record) ?? "<unknown>";
82882
+ const memoryCompatibilityResult = filePath !== "<unknown>" ? await maybeCreateMemoryReadCompatibilityResult({
82883
+ filePath,
82884
+ workspaceRoot: options?.workspaceRoot
82885
+ }) : null;
82886
+ if (memoryCompatibilityResult) return memoryCompatibilityResult;
82887
+ let result;
82888
+ try {
82889
+ result = await executeReadWithAdaptivePaging({
82890
+ base,
82891
+ toolCallId,
82892
+ args: normalized ?? params ?? {},
82893
+ signal,
82894
+ maxBytes: resolveAdaptiveReadMaxBytes(options)
82895
+ });
82896
+ } catch (error) {
82897
+ const recovered = filePath !== "<unknown>" ? maybeRecoverMemoryReadError({
82898
+ filePath,
82899
+ workspaceRoot: options?.workspaceRoot,
82900
+ error
82901
+ }) : null;
82902
+ if (recovered) return recovered;
82903
+ throw error;
82904
+ }
82812
82905
  return sanitizeToolResultImages(await normalizeReadImageResult(stripReadTruncationContentDetails(result), filePath), `read:${filePath}`, options?.imageSanitization);
82813
82906
  }
82814
82907
  };
@@ -83574,7 +83667,8 @@ function createOpenClawCodingTools(options) {
83574
83667
  }
83575
83668
  const wrapped = createOpenClawReadTool(createReadTool(workspaceRoot), {
83576
83669
  modelContextWindowTokens: options?.modelContextWindowTokens,
83577
- imageSanitization
83670
+ imageSanitization,
83671
+ workspaceRoot
83578
83672
  });
83579
83673
  return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
83580
83674
  }
@@ -3,7 +3,7 @@ import { t as createSubsystemLogger } from "./subsystem-DjdBljTA.js";
3
3
  import { M as loadConfig } from "./auth-profiles-Ncv1fyN5.js";
4
4
  import { d as resolveDefaultAgentId, u as resolveAgentWorkspaceDir } from "./agent-scope-CJelRKYY.js";
5
5
  import { u as getActivePluginRegistry } from "./registry-7fg1BnMw.js";
6
- import { _ as loadOpenClawPlugins } from "./subagent-registry-D4xGq2uc.js";
6
+ import { _ as loadOpenClawPlugins } from "./subagent-registry-B4xJjOu2.js";
7
7
 
8
8
  //#region src/cli/plugin-registry.ts
9
9
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { dt as loadOpenClawPlugins } from "./reply-OEcNPoWd.js";
2
+ import { dt as loadOpenClawPlugins } from "./reply-CAA6gLtt.js";
3
3
  import { d as resolveDefaultAgentId, u as resolveAgentWorkspaceDir } from "./agent-scope-CiBV1K6b.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-BT74-yyS.js";
5
5
  import { Wt as loadConfig } from "./model-selection-xdfZxwgB.js";
@@ -1,5 +1,5 @@
1
1
  import { m as normalizeAccountId } from "./session-key-CVIXEtLx.js";
2
- import { v as createAccountListHelpers } from "./accounts-BYcizTXn.js";
2
+ import { v as createAccountListHelpers } from "./accounts-D_pT5EjF.js";
3
3
  import { t as resolveAccountEntry } from "./account-lookup-BCxEEOS8.js";
4
4
 
5
5
  //#region src/signal/accounts.ts
@@ -1,5 +1,5 @@
1
1
  import { m as normalizeAccountId } from "./session-key-CVIXEtLx.js";
2
- import { v as createAccountListHelpers } from "./accounts-BYcizTXn.js";
2
+ import { v as createAccountListHelpers } from "./accounts-D_pT5EjF.js";
3
3
  import { t as resolveAccountEntry } from "./account-lookup-BCxEEOS8.js";
4
4
 
5
5
  //#region src/imessage/accounts.ts
@@ -1,8 +1,8 @@
1
1
  import { h as normalizeOptionalAccountId, m as normalizeAccountId, p as DEFAULT_ACCOUNT_ID } from "./session-key-CVIXEtLx.js";
2
2
  import { o as resolveOAuthDir } from "./paths-C__vjTc0.js";
3
- import { i as defaultRuntime, l as info, m as success, y as getChildLogger } from "./subsystem-B0V8LFBA.js";
4
- import { h as resolveUserPath, u as jidToE164 } from "./utils-BfVxx6bk.js";
5
- import { t as formatCliCommand } from "./command-format-DvyMEXQo.js";
3
+ import { i as defaultRuntime, l as info, m as success, y as getChildLogger } from "./subsystem-CM1s2lDT.js";
4
+ import { h as resolveUserPath, u as jidToE164 } from "./utils-BcL6KGZf.js";
5
+ import { t as formatCliCommand } from "./command-format-BOJz3y1v.js";
6
6
  import { t as resolveAccountEntry } from "./account-lookup-BCxEEOS8.js";
7
7
  import fs from "node:fs";
8
8
  import path from "node:path";
@@ -1,5 +1,5 @@
1
1
  import { p as DEFAULT_ACCOUNT_ID } from "./session-key-CVIXEtLx.js";
2
- import { t as formatCliCommand } from "./command-format-DvyMEXQo.js";
2
+ import { t as formatCliCommand } from "./command-format-BOJz3y1v.js";
3
3
  import crypto from "node:crypto";
4
4
 
5
5
  //#region src/logging/redact-identifier.ts
@@ -1,8 +1,8 @@
1
1
  import { S as parseAgentSessionKey, b as isCronSessionKey, c as normalizeAgentId, t as DEFAULT_AGENT_ID, u as resolveAgentIdFromSessionKey, x as isSubagentSessionKey } from "./session-key-CVIXEtLx.js";
2
2
  import { c as resolveStateDir } from "./paths-C__vjTc0.js";
3
- import { c as danger, p as shouldLogVerbose, t as createSubsystemLogger } from "./subsystem-B0V8LFBA.js";
4
- import { f as pathExists$1, h as resolveUserPath } from "./utils-BfVxx6bk.js";
5
- import { n as logError, t as logDebug } from "./logger-CNhs9eKJ.js";
3
+ import { c as danger, p as shouldLogVerbose, t as createSubsystemLogger } from "./subsystem-CM1s2lDT.js";
4
+ import { f as pathExists$1, h as resolveUserPath } from "./utils-BcL6KGZf.js";
5
+ import { n as logError, t as logDebug } from "./logger-Cr-x0vMf.js";
6
6
  import fs from "node:fs";
7
7
  import path from "node:path";
8
8
  import os from "node:os";
@@ -4,6 +4,7 @@ import type { SandboxFsBridge } from "./sandbox/fs-bridge.js";
4
4
  type OpenClawReadToolOptions = {
5
5
  modelContextWindowTokens?: number;
6
6
  imageSanitization?: ImageSanitizationLimits;
7
+ workspaceRoot?: string;
7
8
  };
8
9
  type RequiredParamGroup = {
9
10
  keys: readonly string[];
@@ -1,5 +1,5 @@
1
- import { ln as normalizeProviderId } from "./config-D7I2_X4P.js";
2
- import { r as formatErrorMessage } from "./errors-DFTN4h2I.js";
1
+ import { ln as normalizeProviderId } from "./config-DAwOhnVF.js";
2
+ import { r as formatErrorMessage } from "./errors-jusxdu7M.js";
3
3
 
4
4
  //#region src/infra/gemini-auth.ts
5
5
  /**
@@ -1,40 +1,40 @@
1
- import "./accounts-BYcizTXn.js";
1
+ import "./accounts-D_pT5EjF.js";
2
2
  import "./paths-C__vjTc0.js";
3
3
  import "./github-copilot-token-WHEJfZD4.js";
4
- import "./config-D7I2_X4P.js";
5
- import { p as shouldLogVerbose, u as logVerbose } from "./subsystem-B0V8LFBA.js";
6
- import "./utils-BfVxx6bk.js";
7
- import "./command-format-DvyMEXQo.js";
8
- import "./agent-scope-_j3fIYCK.js";
9
- import "./logger-CNhs9eKJ.js";
10
- import "./registry-HF8_S7QO.js";
11
- import "./dock-CjdkiLH7.js";
12
- import "./message-channel-_CEZcqxE.js";
13
- import "./sessions-lAIo5l8W.js";
14
- import "./plugins-BpHAMNJ1.js";
15
- import "./accounts-4WE2wtsW.js";
16
- import "./accounts-AbI8uETR.js";
17
- import "./bindings-CxxzC7gn.js";
4
+ import "./config-DAwOhnVF.js";
5
+ import { p as shouldLogVerbose, u as logVerbose } from "./subsystem-CM1s2lDT.js";
6
+ import "./utils-BcL6KGZf.js";
7
+ import "./command-format-BOJz3y1v.js";
8
+ import "./agent-scope-DT5pxpJB.js";
9
+ import "./logger-Cr-x0vMf.js";
10
+ import "./registry-Cv-oHUj1.js";
11
+ import "./dock-BdR3OYZn.js";
12
+ import "./message-channel-CvNq-esz.js";
13
+ import "./sessions-BXps6YzJ.js";
14
+ import "./plugins-DF_dKXTR.js";
15
+ import "./accounts-COLYAAOx.js";
16
+ import "./accounts-BZrkOo6-.js";
17
+ import "./bindings-BSfhEjKN.js";
18
18
  import "./paths-DlLOyPPw.js";
19
- import "./redact-DH8u23pF.js";
20
- import "./errors-DFTN4h2I.js";
21
- import "./path-alias-guards-BqUCBfUg.js";
22
- import "./fs-safe-B256n7Ff.js";
23
- import "./image-ops-C9GXWF3o.js";
24
- import "./ssrf-JKDwTi8i.js";
25
- import "./fetch-guard-BivEyA4v.js";
26
- import "./local-roots-2AOXGUXW.js";
27
- import "./tool-images-BbsgbHMZ.js";
28
- import { i as normalizeMediaAttachments, o as resolveMediaAttachmentLocalRoots, p as isAudioAttachment, t as runAudioTranscription } from "./audio-transcription-runner-CRpY5uDq.js";
29
- import "./skills-BWSDv2F_.js";
30
- import "./chrome-oPevdeh5.js";
31
- import "./store-BMeqzQAf.js";
32
- import "./pi-embedded-helpers-CTfvZz83.js";
19
+ import "./redact-BOuKZWXa.js";
20
+ import "./errors-jusxdu7M.js";
21
+ import "./path-alias-guards-DpKV1B5p.js";
22
+ import "./fs-safe-DMCE0ej9.js";
23
+ import "./image-ops-DulHE5Qc.js";
24
+ import "./ssrf-Doxv9M7Q.js";
25
+ import "./fetch-guard-Dary6WwJ.js";
26
+ import "./local-roots-DssN60r6.js";
27
+ import "./tool-images-heXfaJdb.js";
28
+ import { i as normalizeMediaAttachments, o as resolveMediaAttachmentLocalRoots, p as isAudioAttachment, t as runAudioTranscription } from "./audio-transcription-runner-CooPnqtC.js";
29
+ import "./skills-DXOTei42.js";
30
+ import "./chrome-Dn0G4NoF.js";
31
+ import "./store-BZbE1V-C.js";
32
+ import "./pi-embedded-helpers-CKEUWckk.js";
33
33
  import "./thinking-DGaZRXAR.js";
34
- import "./image-CkPzr3XN.js";
35
- import "./pi-model-discovery-CK3Ih_kq.js";
36
- import "./api-key-rotation-CYI51U_M.js";
37
- import "./proxy-fetch-jmbopGcm.js";
34
+ import "./image-B3A2l2ep.js";
35
+ import "./pi-model-discovery-BPeQq9XM.js";
36
+ import "./api-key-rotation-Dl6Ad7Nj.js";
37
+ import "./proxy-fetch-BpHIgvBk.js";
38
38
 
39
39
  //#region src/media-understanding/audio-preflight.ts
40
40
  /**
@@ -1,14 +1,14 @@
1
- import { An as resolveApiKeyForProvider, S as resolveIMessageAttachmentRoots, b as isInboundPathAllowed, gn as normalizeGoogleModelId, kn as requireApiKey, ln as normalizeProviderId, n as loadConfig, qn as resolveOpenClawAgentDir, x as mergeInboundPathRoots, y as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS } from "./config-D7I2_X4P.js";
2
- import { T as resolvePreferredOpenClawTmpDir, p as shouldLogVerbose, t as createSubsystemLogger, u as logVerbose } from "./subsystem-B0V8LFBA.js";
3
- import { G as resolveAgentModelPrimaryValue, W as resolveAgentModelFallbackValues, k as runExec } from "./agent-scope-_j3fIYCK.js";
1
+ import { An as resolveApiKeyForProvider, S as resolveIMessageAttachmentRoots, b as isInboundPathAllowed, gn as normalizeGoogleModelId, kn as requireApiKey, ln as normalizeProviderId, n as loadConfig, qn as resolveOpenClawAgentDir, x as mergeInboundPathRoots, y as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS } from "./config-DAwOhnVF.js";
2
+ import { T as resolvePreferredOpenClawTmpDir, p as shouldLogVerbose, t as createSubsystemLogger, u as logVerbose } from "./subsystem-CM1s2lDT.js";
3
+ import { G as resolveAgentModelPrimaryValue, W as resolveAgentModelFallbackValues, k as runExec } from "./agent-scope-DT5pxpJB.js";
4
4
  import { t as normalizeChatType } from "./chat-type-C4pAlbsI.js";
5
5
  import { n as fetchWithTimeout } from "./fetch-timeout-C-qHqfzG.js";
6
- import { c as detectMime, f as isAudioFileName, m as kindFromMime, u as getFileExtension } from "./image-ops-C9GXWF3o.js";
7
- import { t as fetchWithSsrFGuard } from "./fetch-guard-BivEyA4v.js";
8
- import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, r as MediaFetchError } from "./local-roots-2AOXGUXW.js";
9
- import { t as describeImageWithModel, w as ensureOpenClawModelsJson } from "./image-CkPzr3XN.js";
10
- import { n as executeWithApiKeyRotation, r as parseGeminiAuth, t as collectProviderApiKeysForExecution } from "./api-key-rotation-CYI51U_M.js";
11
- import { n as resolveProxyFetchFromEnv } from "./proxy-fetch-jmbopGcm.js";
6
+ import { c as detectMime, f as isAudioFileName, m as kindFromMime, u as getFileExtension } from "./image-ops-DulHE5Qc.js";
7
+ import { t as fetchWithSsrFGuard } from "./fetch-guard-Dary6WwJ.js";
8
+ import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, r as MediaFetchError } from "./local-roots-DssN60r6.js";
9
+ import { t as describeImageWithModel, w as ensureOpenClawModelsJson } from "./image-B3A2l2ep.js";
10
+ import { n as executeWithApiKeyRotation, r as parseGeminiAuth, t as collectProviderApiKeysForExecution } from "./api-key-rotation-Dl6Ad7Nj.js";
11
+ import { n as resolveProxyFetchFromEnv } from "./proxy-fetch-BpHIgvBk.js";
12
12
  import { constants } from "node:fs";
13
13
  import path from "node:path";
14
14
  import os from "node:os";
@@ -1027,7 +1027,7 @@ function resolveAliasedOpenAiCompatibleModelId(modelId) {
1027
1027
  const log = createSubsystemLogger("model-catalog");
1028
1028
  let modelCatalogPromise = null;
1029
1029
  let hasLoggedModelCatalogError = false;
1030
- const defaultImportPiSdk = () => import("./pi-model-discovery-CK3Ih_kq.js").then((n) => n.r);
1030
+ const defaultImportPiSdk = () => import("./pi-model-discovery-BPeQq9XM.js").then((n) => n.r);
1031
1031
  let importPiSdk = defaultImportPiSdk;
1032
1032
  const CODEX_PROVIDER = "openai-codex";
1033
1033
  const OPENAI_CODEX_GPT53_MODEL_ID = "gpt-5.3-codex";
@@ -1,6 +1,6 @@
1
1
  import { c as normalizeAgentId, m as normalizeAccountId } from "./session-key-CVIXEtLx.js";
2
- import { c as resolveDefaultAgentId } from "./agent-scope-_j3fIYCK.js";
3
- import { s as normalizeChatChannelId } from "./registry-HF8_S7QO.js";
2
+ import { c as resolveDefaultAgentId } from "./agent-scope-DT5pxpJB.js";
3
+ import { s as normalizeChatChannelId } from "./registry-Cv-oHUj1.js";
4
4
 
5
5
  //#region src/routing/bindings.ts
6
6
  function normalizeBindingChannelId(raw) {
@@ -1,6 +1,6 @@
1
- import { t as createSubsystemLogger } from "./subsystem-B0V8LFBA.js";
2
- import { n as retryAsync, t as resolveRetryConfig } from "./retry-pZ8iKytf.js";
3
- import { r as formatErrorMessage } from "./errors-DFTN4h2I.js";
1
+ import { t as createSubsystemLogger } from "./subsystem-CM1s2lDT.js";
2
+ import { n as retryAsync, t as resolveRetryConfig } from "./retry-BMcrIz7L.js";
3
+ import { r as formatErrorMessage } from "./errors-jusxdu7M.js";
4
4
  import { RateLimitError } from "@buape/carbon";
5
5
 
6
6
  //#region src/infra/retry-policy.ts