@gguf/claw 2026.2.9 → 2026.2.13

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 (715) hide show
  1. package/CHANGELOG.md +159 -0
  2. package/LICENSE +1 -1
  3. package/dist/{accounts-MyAvfCVH.js → accounts-54zZMYCo.js} +5 -2
  4. package/dist/{accounts-DbzMEfKN.js → accounts-Bvh0DFxS.js} +5 -2
  5. package/dist/{acp-cli-MZ3h1E1n.js → acp-cli-BslcOPdx.js} +146 -25
  6. package/dist/{acp-cli-DKJRTfwB.js → acp-cli-D6rk5cOh.js} +145 -24
  7. package/dist/{agent-whSJT2Lk.js → agent-C0yL70cy.js} +26 -20
  8. package/dist/{agent-c1QNeDmV.js → agent-DjZxytiC.js} +26 -20
  9. package/dist/{agent-scope-D3me2AZa.js → agent-scope-Bkr9fZtl.js} +31 -14
  10. package/dist/{agent-scope-Dp8sREli.js → agent-scope-DASgjz2_.js} +199 -14
  11. package/dist/{agent-scope-DnyDZ5RH.js → agent-scope-GYIs5dyU.js} +30 -13
  12. package/dist/{agent-scope-Dpav7C-i.js → agent-scope-okUOVjE5.js} +32 -11
  13. package/dist/audio-preflight-B0kLz-Ma.js +60 -0
  14. package/dist/audio-preflight-BCs_J33s.js +60 -0
  15. package/dist/audio-preflight-CTl2RCyF.js +71 -0
  16. package/dist/audio-preflight-MhF6YlAY.js +74 -0
  17. package/dist/{audit-BFYy1qSw.js → audit-BYfhZ7LA.js} +454 -31
  18. package/dist/{audit-Dn2cBl2x.js → audit-CfPZ_5Id.js} +452 -29
  19. package/dist/auth-9nTeB2Je.js +602 -0
  20. package/dist/auth-CLhyWwAU.js +593 -0
  21. package/dist/{auth-health-Cx5exPMV.js → auth-health-CWiLyzSr.js} +1 -1
  22. package/dist/{auth-health-DjT4fUpw.js → auth-health-qD4RND47.js} +1 -1
  23. package/dist/{auth-profiles-FJ3VY25a.js → auth-profiles-Cp9MtUdM.js} +353 -33
  24. package/dist/build-info.json +2 -2
  25. package/dist/bundled/boot-md/handler.js +33 -25
  26. package/dist/bundled/session-memory/handler.js +33 -22
  27. package/dist/{call-CD2IZCHT.js → call-CjEdFGAf.js} +7 -7
  28. package/dist/{call-CM25qgxz.js → call-DAfkvtVq.js} +6 -6
  29. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  30. package/dist/canvas-host/a2ui/a2ui.bundle.js +7 -1
  31. package/dist/{channel-options-CremuJyh.js → channel-options-B8dPzlyO.js} +4 -4
  32. package/dist/{channel-options-D-JnJ4Ft.js → channel-options-Bq5IC5Tv.js} +12 -7
  33. package/dist/{channel-selection-DAHCVAX4.js → channel-selection-BaW1xXEa.js} +2 -2
  34. package/dist/{channel-selection-DPV9hvY8.js → channel-selection-dR0jCgTn.js} +2 -2
  35. package/dist/{channels-cli-6deHFr9t.js → channels-cli-hPo28hWS.js} +61 -56
  36. package/dist/{channels-cli-D3tKmhlt.js → channels-cli-zi3rO0jq.js} +62 -57
  37. package/dist/{channels-status-issues-BN1ICfdy.js → channels-status-issues-kb-M2Fi0.js} +1 -1
  38. package/dist/{channels-status-issues-DFhI_u0p.js → channels-status-issues-ketdwZun.js} +1 -1
  39. package/dist/{chrome-B2UjqY-9.js → chrome--Fe8F5Kf.js} +24 -12
  40. package/dist/{chrome-COabMr6f.js → chrome-BWeMtFGf.js} +24 -12
  41. package/dist/{chrome-CQd_MVOA.js → chrome-Bx24uq7B.js} +27 -15
  42. package/dist/{chrome-CxRJz4ZD.js → chrome-n_3rtK2c.js} +22 -11
  43. package/dist/{clack-prompter-BkNZ4Xdw.js → clack-prompter-B-tJmODa.js} +5 -5
  44. package/dist/{clack-prompter-DuBVnTKy.js → clack-prompter-DpuKn_Uy.js} +5 -5
  45. package/dist/cli/daemon-cli.js +8 -1
  46. package/dist/cli-9lwO6Ttx.js +94 -0
  47. package/dist/cli-CNNdyxPO.js +91 -0
  48. package/dist/{client-DMloFP_O.js → client-BhZjzrH2.js} +73 -9
  49. package/dist/{client-C0gQ7hrj.js → client-DyAxKXKY.js} +73 -9
  50. package/dist/{command-format-ayFsmwwz.js → command-format-Bxe0mWee.js} +1 -1
  51. package/dist/{command-options-BQdH6qnK.js → command-options-BDV7Xgs-.js} +9 -4
  52. package/dist/{commands-BWHYcc83.js → commands-gOiRcfoU.js} +4 -4
  53. package/dist/{tui-formatters-BDP_71Xt.js → commands-registry-6NUFrejL.js} +6 -114
  54. package/dist/{tui-formatters-CIx4sCQO.js → commands-registry-DGgkLQ7A.js} +6 -114
  55. package/dist/{completion-cli-DEJia0V1.js → completion-cli-B1kHKJZX.js} +30 -30
  56. package/dist/{completion-cli-D_0fx2O6.js → completion-cli-Drks7xRK.js} +3 -3
  57. package/dist/{config-CQt4vGxI.js → config-7NCznPmF.js} +336 -97
  58. package/dist/{config-fCnPoWjU.js → config-B8v0zg48.js} +295 -99
  59. package/dist/{config-Bj2eDa02.js → config-CeWMHOiQ.js} +295 -99
  60. package/dist/{config-ethqi73X.js → config-D8pgDSNo.js} +358 -99
  61. package/dist/{config-guard-BJuqQvng.js → config-guard-RbHxYc9j.js} +212 -63
  62. package/dist/{configure-skrLiSwW.js → configure-DLp2Xz7L.js} +59 -40
  63. package/dist/{configure-C-pYuYg_.js → configure-Su1S0gi-.js} +58 -39
  64. package/dist/control-auth-BlWU-jBl.js +54 -0
  65. package/dist/control-auth-C8rIqEdA.js +54 -0
  66. package/dist/{control-service-BDgF-FZ0.js → control-service-BNDthc1N.js} +11 -5
  67. package/dist/{control-service-Djd_WI3_.js → control-service-COF59GQe.js} +10 -4
  68. package/dist/control-ui/assets/{index-CnB9IO4a.js → index-BECn2L1T.js} +369 -368
  69. package/dist/control-ui/assets/index-BECn2L1T.js.map +1 -0
  70. package/dist/control-ui/assets/index-DRPcd1Z4.css +1 -0
  71. package/dist/control-ui/index.html +2 -2
  72. package/dist/{cron-cli-CB6CufAb.js → cron-cli-CSy4-JGS.js} +20 -20
  73. package/dist/{cron-cli-Db6fardJ.js → cron-cli-Db3uCDIT.js} +21 -21
  74. package/dist/{daemon-cli-Xe22v7lZ.js → daemon-cli-BLbzcTuD.js} +61 -22
  75. package/dist/{daemon-cli-BlHK0ly2.js → daemon-cli-DR0D35MO.js} +60 -21
  76. package/dist/{daemon-runtime-CMqH8BUE.js → daemon-runtime-ZWXvLDxx.js} +3 -3
  77. package/dist/{daemon-runtime-DwQFvDXZ.js → daemon-runtime-pVcZ2KDE.js} +3 -3
  78. package/dist/{deliver-CD7-BhYD.js → deliver-BHNoC9Yk.js} +396 -290
  79. package/dist/{deliver-BdGjIcTC.js → deliver-C_5eGQrX.js} +392 -286
  80. package/dist/{deliver-nTKaXF--.js → deliver-DPHZlWgr.js} +392 -287
  81. package/dist/{deliver-CDMGxRoW.js → deliver-geVWJ52I.js} +394 -288
  82. package/dist/{deps-BDQ_K8zf.js → deps-CP0dcOgD.js} +2 -2
  83. package/dist/{deps-D60FbgTP.js → deps-DW5r2IEk.js} +2 -2
  84. package/dist/{devices-cli-N559801X.js → devices-cli-BViqX5pl.js} +15 -15
  85. package/dist/{devices-cli-IxmPLIk8.js → devices-cli-DpYaY-iM.js} +14 -14
  86. package/dist/{directory-cli-Caq-OYk8.js → directory-cli-BWD1DdKf.js} +16 -16
  87. package/dist/{directory-cli-ClrdmQL-.js → directory-cli-BcvZfkfo.js} +17 -17
  88. package/dist/{dispatcher-BfXtm4Dl.js → dispatcher-4Qn951N3.js} +5 -3
  89. package/dist/{dns-cli-DgVO0Pkw.js → dns-cli-_Ych2tu9.js} +12 -12
  90. package/dist/{dns-cli-BTNZkWHs.js → dns-cli-gQCxUXgU.js} +13 -13
  91. package/dist/{docs-cli-9Xan7C6D.js → docs-cli-Bseiau7J.js} +7 -7
  92. package/dist/{docs-cli-DZULc91f.js → docs-cli-DzBTlWQE.js} +8 -8
  93. package/dist/{doctor-D39rZvNH.js → doctor-BNkYYahD.js} +37 -36
  94. package/dist/{doctor-Dq1YeYdH.js → doctor-DzIgdPx1.js} +37 -36
  95. package/dist/entry.js +77 -21
  96. package/dist/{env-B5YXooWp.js → env-BUuSkE19.js} +1 -1
  97. package/dist/{exec-DFOtZbI0.js → exec-BPQSKwGa.js} +5 -3
  98. package/dist/{exec-B8JKbXKW.js → exec-DqZFMawz.js} +5 -3
  99. package/dist/{exec-Bas1hoSJ.js → exec-EKUaAU91.js} +57 -18
  100. package/dist/{exec-CiH_vkWn.js → exec-_PSUrMP8.js} +528 -19
  101. package/dist/{exec-approvals-DGPTjO0N.js → exec-approvals-Bqk-tIxY.js} +134 -51
  102. package/dist/{exec-approvals-C9InMoAB.js → exec-approvals-C67V-ljH.js} +134 -51
  103. package/dist/{exec-approvals-cli-EASbqFd-.js → exec-approvals-cli-D6vfSqQu.js} +22 -22
  104. package/dist/{exec-approvals-cli-DPHItoxG.js → exec-approvals-cli-DAdoki_R.js} +21 -21
  105. package/dist/extensionAPI.js +8518 -9140
  106. package/dist/fetch-Bz1WxfzV.js +285 -0
  107. package/dist/fetch-D2O8s8I1.js +285 -0
  108. package/dist/fetch-Dm-nCwa_.js +285 -0
  109. package/dist/fetch-wuOZDzdT.js +285 -0
  110. package/dist/{gateway-cli-BFqUIif8.js → gateway-cli-C-k7JPlr.js} +1868 -1072
  111. package/dist/{gateway-cli-v4kSPsLE.js → gateway-cli-DIIJ9Z0Y.js} +1870 -1074
  112. package/dist/{gateway-rpc-D6LrkcSA.js → gateway-rpc-D6jLh81b.js} +3 -3
  113. package/dist/{gateway-rpc-dHFK02Kk.js → gateway-rpc-aqysUyf5.js} +3 -3
  114. package/dist/{github-copilot-auth-CQIWc0hC.js → github-copilot-auth-BUqfX7hG.js} +316 -52
  115. package/dist/{github-copilot-auth-D2jfnapd.js → github-copilot-auth-By-nyRb6.js} +316 -52
  116. package/dist/{github-copilot-token-SLWintYd.js → github-copilot-token-C9W4SY9o.js} +7 -4
  117. package/dist/{github-copilot-token-BW-SEg7E.js → github-copilot-token-CiF5Iyi2.js} +6 -3
  118. package/dist/{github-copilot-token-C9IJh2Pn.js → github-copilot-token-DatTe1w-.js} +6 -3
  119. package/dist/{github-copilot-token-wCk9Fg_E.js → github-copilot-token-c9Igt3ZH.js} +6 -3
  120. package/dist/{gmail-setup-utils-CVNgLkXL.js → gmail-setup-utils-HvKMdooP.js} +4 -4
  121. package/dist/{gmail-setup-utils-CAM1vbUS.js → gmail-setup-utils-c-iF00aL.js} +3 -3
  122. package/dist/{health-format-C77hrjEQ.js → health-format-BORnJOeS.js} +106 -44
  123. package/dist/{health-format-DDYtlkB9.js → health-format-Nd0jcoqM.js} +105 -43
  124. package/dist/{help-format-CUnac_bT.js → help-format-Cd5PLwXe.js} +1 -1
  125. package/dist/{help-format-aiW76js8.js → help-format-DYBEvMOX.js} +1 -1
  126. package/dist/{hooks-cli-DsflBRxX.js → hooks-cli-3KdsbdRi.js} +53 -47
  127. package/dist/{hooks-cli-C7kctMuZ.js → hooks-cli-BThja6wK.js} +53 -47
  128. package/dist/{hooks-status-DRAVHSPg.js → hooks-status-BbIz0zmm.js} +6 -5
  129. package/dist/{hooks-status-lHWrY64E.js → hooks-status-DPJORMB6.js} +6 -5
  130. package/dist/{image--gbzucyh.js → image-BaJKrmCs.js} +12 -8
  131. package/dist/{image-ORs4LLwg.js → image-D-5pUELC.js} +13 -9
  132. package/dist/{image-DMnjYGdA.js → image-TvL5YI_W.js} +13 -9
  133. package/dist/{image-BVNytEIn.js → image-bodq5cUH.js} +13 -9
  134. package/dist/index.js +261 -109
  135. package/dist/{installs-CXGV291R.js → installs-BrOMqREO.js} +7 -6
  136. package/dist/{installs-89zeUsVn.js → installs-z69au9Te.js} +7 -6
  137. package/dist/{links-Dg90NTyF.js → links-AVB88xxH.js} +1 -1
  138. package/dist/{links-7M-j83As.js → links-DpxpaKe1.js} +1 -1
  139. package/dist/llm-slug-generator.js +18 -19
  140. package/dist/{loader-BnzQyT31.js → loader-CS-5lMQa.js} +3694 -4531
  141. package/dist/{logging-DuK6YXuK.js → logging-B3KnAryz.js} +2 -2
  142. package/dist/{logging-CNq0UUgf.js → logging-DEPo2hji.js} +1 -1
  143. package/dist/{login-qr-CJ__cE3-.js → login-qr--28WL1TN.js} +11 -5
  144. package/dist/{login-qr-BVeOFfNW.js → login-qr-4o2aC2UE.js} +9 -4
  145. package/dist/{login-qr-BJChByHH.js → login-qr-BUdeu1Sl.js} +8 -2
  146. package/dist/{login-qr-KUOtNJaQ.js → login-qr-BsYM2E1y.js} +12 -6
  147. package/dist/{logs-cli-Cm7AiarR.js → logs-cli-DDMD5w5_.js} +38 -22
  148. package/dist/{logs-cli-BWmtAsjp.js → logs-cli-DvPoVKCN.js} +38 -22
  149. package/dist/{manager-C-jXr9ks.js → manager-CXo1uqmO.js} +102 -86
  150. package/dist/{manager-CMFBuvVd.js → manager-ChW0jk7T.js} +101 -85
  151. package/dist/{manager-D2Ndphg3.js → manager-DUOe7ud6.js} +100 -85
  152. package/dist/{manager-BsdlwsL5.js → manager-PoxUqdN_.js} +98 -82
  153. package/dist/{manifest-registry-D5SiA3xq.js → manifest-registry-CVsqjgX0.js} +40 -2
  154. package/dist/{manifest-registry-DyMRD3rY.js → manifest-registry-jeAPx6AW.js} +40 -2
  155. package/dist/{message-channel-CHRYQtAM.js → message-channel-CTtrEkmW.js} +1 -1
  156. package/dist/{message-channel-BlgPSDAh.js → message-channel-DWcu72r7.js} +1 -1
  157. package/dist/{model-auth-BqjMkNFs.js → model-auth-BvODRbV0.js} +362 -35
  158. package/dist/{model-selection-DbsbOAoh.js → model-selection-B53OvWCf.js} +353 -33
  159. package/dist/{model-selection-DlV6wnTr.js → model-selection-vC82fEiP.js} +331 -30
  160. package/dist/{models-cli-DIFBrK4W.js → models-cli-DqsKsOgd.js} +66 -55
  161. package/dist/{models-cli-0XhQQbMW.js → models-cli-NV0bnh8l.js} +66 -55
  162. package/dist/{node-cli-BMUfVCSq.js → node-cli-C7YleuBk.js} +54 -44
  163. package/dist/{node-cli-DY4lzhDA.js → node-cli-CxwoHnZ6.js} +54 -44
  164. package/dist/{node-service-DQ-tiSie.js → node-service-C7f_uvx9.js} +2 -2
  165. package/dist/{node-service-u8g85nD3.js → node-service-De_WkxJe.js} +2 -2
  166. package/dist/{nodes-cli-BX6oWnLC.js → nodes-cli-BxrMVI9V.js} +25 -23
  167. package/dist/{nodes-cli-CVHzcQo2.js → nodes-cli-Clb0ocwB.js} +24 -22
  168. package/dist/{nodes-screen-DGlNPbk4.js → nodes-screen-CVL9363A.js} +48 -6
  169. package/dist/{nodes-screen-lykd2cny.js → nodes-screen-DsHJIN2I.js} +47 -5
  170. package/dist/{note-Ci08TSbV.js → note-Duiadw1g.js} +1 -1
  171. package/dist/{note-DVO1KLaW.js → note-uC6iDp4y.js} +2 -2
  172. package/dist/{onboard-channels-DTkFFbzS.js → onboard-channels-C5Iaafwb.js} +10 -10
  173. package/dist/{onboard-channels-CtDnwaF5.js → onboard-channels-C5uL3i8d.js} +11 -11
  174. package/dist/{onboard-skills-BnAcpzfX.js → onboard-skills-BFxdI1Y1.js} +1143 -112
  175. package/dist/{onboard-skills-DuoDzEmI.js → onboard-skills-DUG8Y0se.js} +1142 -111
  176. package/dist/{onboarding-DvhiiHh0.js → onboarding-ClzElK4D.js} +56 -48
  177. package/dist/{openclaw-root-93W6UrUK.js → openclaw-root-BKsZvO6K.js} +6 -2
  178. package/dist/{openclaw-root-9ILYSmJ9.js → openclaw-root-CEnmuBUN.js} +6 -2
  179. package/dist/{pairing-cli-BKJHBxwT.js → pairing-cli-BWWFZF7Q.js} +16 -16
  180. package/dist/{pairing-cli-DJHjPBwu.js → pairing-cli-BrFLxnug.js} +16 -16
  181. package/dist/{pairing-labels-xImhiJax.js → pairing-labels-C8KULWNH.js} +1 -1
  182. package/dist/{pairing-labels-CHxlh3tT.js → pairing-labels-Dt2vXyI7.js} +1 -1
  183. package/dist/{pairing-store-CO6umWFP.js → pairing-store-Dz-ArTQS.js} +3 -3
  184. package/dist/{pairing-store-BpPUNzmB.js → pairing-store-gQdv7Ruh.js} +2 -2
  185. package/dist/{path-env-Nq83EHH9.js → path-env-BRKerjt1.js} +2 -2
  186. package/dist/{path-env-CXWUFfFv.js → path-env-OJAyUeWW.js} +1 -1
  187. package/dist/paths-BZK4Ct0I.js +81 -0
  188. package/dist/paths-DWYi0R_2.js +78 -0
  189. package/dist/{paths-Bkhd_qY8.js → paths-DdKf4lHp.js} +35 -5
  190. package/dist/paths-SFzVNGbc.js +78 -0
  191. package/dist/pi-auth-json-D7hGObyW.js +12 -0
  192. package/dist/pi-auth-json-DgvHjfJy.js +8 -0
  193. package/dist/pi-auth-json-la6lnAzY.js +79 -0
  194. package/dist/pi-auth-json-p3vsMR7W.js +79 -0
  195. package/dist/{pi-embedded-C1qKCgDT.js → pi-embedded-De6SeAPs.js} +9518 -9968
  196. package/dist/{pi-embedded-helpers-DtPn5RC8.js → pi-embedded-helpers-BrUBxrE2.js} +70 -10
  197. package/dist/{pi-embedded-helpers-DhEkdWB1.js → pi-embedded-helpers-D0mqOwwq.js} +821 -128
  198. package/dist/{pi-embedded-helpers-7AjuNiiJ.js → pi-embedded-helpers-DpJb0kUk.js} +69 -9
  199. package/dist/{pi-embedded-helpers-BTkXgwJ7.js → pi-embedded-helpers-ZI1UCSRM.js} +927 -136
  200. package/dist/{pi-tools.policy-gG96mWwA.js → pi-tools.policy-z5Wd_2WN.js} +4 -4
  201. package/dist/{plugin-auto-enable-D5ye7QnB.js → plugin-auto-enable-B8mX3rX3.js} +14 -5
  202. package/dist/{plugin-auto-enable-BROgMZcf.js → plugin-auto-enable-OO0eDINB.js} +14 -5
  203. package/dist/plugin-sdk/agents/apply-patch-update.d.ts +3 -1
  204. package/dist/plugin-sdk/agents/apply-patch.d.ts +11 -3
  205. package/dist/plugin-sdk/agents/auth-profiles/profiles.d.ts +5 -0
  206. package/dist/plugin-sdk/agents/auth-profiles.d.ts +1 -1
  207. package/dist/plugin-sdk/agents/bash-process-registry.d.ts +1 -0
  208. package/dist/plugin-sdk/agents/bash-tools.exec.d.ts +26 -0
  209. package/dist/plugin-sdk/agents/current-time.d.ts +17 -0
  210. package/dist/plugin-sdk/agents/huggingface-models.d.ts +17 -0
  211. package/dist/plugin-sdk/agents/models-config.providers.d.ts +10 -0
  212. package/dist/plugin-sdk/agents/openclaw-tools.d.ts +2 -0
  213. package/dist/plugin-sdk/agents/pi-auth-json.d.ts +14 -0
  214. package/dist/plugin-sdk/agents/pi-embedded-helpers/errors.d.ts +5 -1
  215. package/dist/plugin-sdk/agents/pi-embedded-helpers.d.ts +1 -1
  216. package/dist/plugin-sdk/agents/pi-embedded-runner/google.d.ts +1 -0
  217. package/dist/plugin-sdk/agents/pi-embedded-runner/run/images.d.ts +9 -4
  218. package/dist/plugin-sdk/agents/pi-embedded-runner/run/params.d.ts +2 -0
  219. package/dist/plugin-sdk/agents/pi-embedded-runner/run/payloads.d.ts +1 -0
  220. package/dist/plugin-sdk/agents/pi-embedded-runner/run/types.d.ts +2 -0
  221. package/dist/plugin-sdk/agents/pi-embedded-runner/types.d.ts +15 -0
  222. package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.tools.d.ts +1 -1
  223. package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.types.d.ts +2 -0
  224. package/dist/plugin-sdk/agents/pi-embedded-subscribe.types.d.ts +2 -0
  225. package/dist/plugin-sdk/agents/pi-tools.read.d.ts +8 -3
  226. package/dist/plugin-sdk/agents/sandbox/constants.d.ts +1 -1
  227. package/dist/plugin-sdk/agents/sandbox/docker.d.ts +14 -3
  228. package/dist/plugin-sdk/agents/sandbox/fs-bridge.d.ts +56 -0
  229. package/dist/plugin-sdk/agents/sandbox/types.d.ts +2 -0
  230. package/dist/plugin-sdk/agents/session-tool-result-guard-wrapper.d.ts +2 -0
  231. package/dist/plugin-sdk/agents/session-tool-result-guard.d.ts +4 -0
  232. package/dist/plugin-sdk/agents/subagent-registry.d.ts +3 -1
  233. package/dist/plugin-sdk/agents/tools/agent-step.d.ts +3 -0
  234. package/dist/plugin-sdk/agents/tools/browser-tool.schema.d.ts +2 -2
  235. package/dist/plugin-sdk/agents/tools/common.d.ts +4 -0
  236. package/dist/plugin-sdk/agents/tools/image-tool.d.ts +9 -1
  237. package/dist/plugin-sdk/agents/tools/web-search.d.ts +10 -1
  238. package/dist/plugin-sdk/agents/usage.d.ts +1 -0
  239. package/dist/plugin-sdk/auto-reply/reply/commands-status.d.ts +1 -0
  240. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +1 -0
  241. package/dist/plugin-sdk/auto-reply/reply/memory-flush.d.ts +2 -2
  242. package/dist/plugin-sdk/auto-reply/reply/mentions.d.ts +1 -0
  243. package/dist/plugin-sdk/auto-reply/reply/model-selection.d.ts +3 -0
  244. package/dist/plugin-sdk/auto-reply/reply/reply-reference.d.ts +1 -1
  245. package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +11 -0
  246. package/dist/plugin-sdk/auto-reply/reply/session-usage.d.ts +8 -0
  247. package/dist/plugin-sdk/auto-reply/status.d.ts +2 -0
  248. package/dist/plugin-sdk/auto-reply/templating.d.ts +3 -0
  249. package/dist/plugin-sdk/auto-reply/thinking.d.ts +1 -1
  250. package/dist/plugin-sdk/auto-reply/types.d.ts +2 -0
  251. package/dist/plugin-sdk/browser/cdp.helpers.d.ts +2 -1
  252. package/dist/plugin-sdk/browser/client-actions-core.d.ts +1 -0
  253. package/dist/plugin-sdk/browser/control-auth.d.ts +13 -0
  254. package/dist/plugin-sdk/browser/pw-ai.d.ts +1 -1
  255. package/dist/plugin-sdk/browser/pw-session.d.ts +25 -0
  256. package/dist/plugin-sdk/browser/pw-tools-core.interactions.d.ts +2 -0
  257. package/dist/plugin-sdk/browser/routes/dispatcher.d.ts +1 -0
  258. package/dist/plugin-sdk/browser/routes/types.d.ts +5 -0
  259. package/dist/plugin-sdk/channels/plugins/onboarding/signal.d.ts +1 -0
  260. package/dist/plugin-sdk/channels/registry.d.ts +2 -2
  261. package/dist/plugin-sdk/cli/nodes-camera.d.ts +8 -2
  262. package/dist/plugin-sdk/cli/prompt.d.ts +1 -0
  263. package/dist/plugin-sdk/commands/agent/types.d.ts +2 -0
  264. package/dist/plugin-sdk/commands/onboard-helpers.d.ts +1 -0
  265. package/dist/plugin-sdk/commands/onboard-types.d.ts +9 -1
  266. package/dist/plugin-sdk/commands/signal-install.d.ts +20 -0
  267. package/dist/plugin-sdk/config/config.d.ts +1 -1
  268. package/dist/plugin-sdk/config/group-policy.d.ts +3 -0
  269. package/dist/plugin-sdk/config/merge-patch.d.ts +1 -0
  270. package/dist/plugin-sdk/config/sessions/paths.d.ts +14 -4
  271. package/dist/plugin-sdk/config/sessions/store.d.ts +8 -0
  272. package/dist/plugin-sdk/config/sessions/types.d.ts +8 -0
  273. package/dist/plugin-sdk/config/types.agents.d.ts +2 -0
  274. package/dist/plugin-sdk/config/types.channels.d.ts +2 -0
  275. package/dist/plugin-sdk/config/types.d.ts +1 -0
  276. package/dist/plugin-sdk/config/types.discord.d.ts +5 -0
  277. package/dist/plugin-sdk/config/types.gateway.d.ts +35 -0
  278. package/dist/plugin-sdk/config/types.hooks.d.ts +23 -1
  279. package/dist/plugin-sdk/config/types.irc.d.ts +96 -0
  280. package/dist/plugin-sdk/config/types.memory.d.ts +2 -0
  281. package/dist/plugin-sdk/config/types.openclaw.d.ts +6 -0
  282. package/dist/plugin-sdk/config/types.queue.d.ts +1 -0
  283. package/dist/plugin-sdk/config/types.slack.d.ts +2 -0
  284. package/dist/plugin-sdk/config/types.telegram.d.ts +2 -0
  285. package/dist/plugin-sdk/config/validation.d.ts +20 -0
  286. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +1 -0
  287. package/dist/plugin-sdk/config/zod-schema.core.d.ts +2 -0
  288. package/dist/plugin-sdk/config/zod-schema.d.ts +193 -2
  289. package/dist/plugin-sdk/config/zod-schema.hooks.d.ts +3 -2
  290. package/dist/plugin-sdk/config/zod-schema.providers-core.d.ts +378 -0
  291. package/dist/plugin-sdk/config/zod-schema.providers.d.ts +176 -0
  292. package/dist/plugin-sdk/config/zod-schema.sensitive.d.ts +2 -0
  293. package/dist/plugin-sdk/config/zod-schema.session.d.ts +1 -0
  294. package/dist/plugin-sdk/cron/service/jobs.d.ts +8 -0
  295. package/dist/plugin-sdk/cron/service/state.d.ts +1 -0
  296. package/dist/plugin-sdk/cron/types.d.ts +2 -0
  297. package/dist/plugin-sdk/discord/monitor/allow-list.d.ts +15 -0
  298. package/dist/plugin-sdk/discord/send.types.d.ts +5 -0
  299. package/dist/plugin-sdk/gateway/auth-rate-limit.d.ts +59 -0
  300. package/dist/plugin-sdk/gateway/auth.d.ts +47 -0
  301. package/dist/plugin-sdk/gateway/net.d.ts +5 -0
  302. package/dist/plugin-sdk/gateway/protocol/index.d.ts +7 -7
  303. package/dist/plugin-sdk/gateway/protocol/schema/agent.d.ts +7 -1
  304. package/dist/plugin-sdk/gateway/protocol/schema/channels.d.ts +21 -0
  305. package/dist/plugin-sdk/gateway/protocol/schema/types.d.ts +3 -1
  306. package/dist/plugin-sdk/gateway/session-utils.fs.d.ts +3 -1
  307. package/dist/plugin-sdk/gateway/session-utils.types.d.ts +1 -0
  308. package/dist/plugin-sdk/imessage/send.d.ts +12 -0
  309. package/dist/plugin-sdk/index.js +2147 -900
  310. package/dist/plugin-sdk/infra/binaries.d.ts +3 -0
  311. package/dist/plugin-sdk/infra/brew.d.ts +8 -0
  312. package/dist/plugin-sdk/infra/heartbeat-active-hours.d.ts +5 -0
  313. package/dist/plugin-sdk/infra/heartbeat-runner.d.ts +1 -0
  314. package/dist/plugin-sdk/infra/heartbeat-wake.d.ts +8 -1
  315. package/dist/plugin-sdk/infra/net/fetch-guard.d.ts +1 -0
  316. package/dist/plugin-sdk/infra/net/ssrf.d.ts +1 -0
  317. package/dist/plugin-sdk/infra/outbound/message.d.ts +2 -0
  318. package/dist/plugin-sdk/infra/outbound/outbound-send-service.d.ts +2 -0
  319. package/dist/plugin-sdk/infra/session-cost-usage.d.ts +3 -0
  320. package/dist/plugin-sdk/infra/tailscale.d.ts +34 -0
  321. package/dist/plugin-sdk/infra/tmp-openclaw-dir.d.ts +10 -0
  322. package/dist/plugin-sdk/logging/console.d.ts +4 -0
  323. package/dist/plugin-sdk/logging/logger.d.ts +1 -1
  324. package/dist/plugin-sdk/logging/state.d.ts +1 -0
  325. package/dist/plugin-sdk/logging.d.ts +2 -2
  326. package/dist/plugin-sdk/markdown/ir.d.ts +1 -1
  327. package/dist/plugin-sdk/markdown/whatsapp.d.ts +14 -0
  328. package/dist/plugin-sdk/media/input-files.d.ts +5 -0
  329. package/dist/plugin-sdk/media/store.d.ts +10 -0
  330. package/dist/plugin-sdk/media-understanding/audio-preflight.d.ts +16 -0
  331. package/dist/plugin-sdk/media-understanding/types.d.ts +1 -0
  332. package/dist/plugin-sdk/memory/backend-config.d.ts +2 -1
  333. package/dist/plugin-sdk/memory/embedding-chunk-limits.d.ts +3 -0
  334. package/dist/plugin-sdk/memory/embedding-input-limits.d.ts +2 -0
  335. package/dist/plugin-sdk/memory/embedding-model-limits.d.ts +2 -0
  336. package/dist/plugin-sdk/memory/embeddings.d.ts +1 -0
  337. package/dist/plugin-sdk/memory/internal.d.ts +11 -0
  338. package/dist/plugin-sdk/memory/manager.d.ts +0 -6
  339. package/dist/plugin-sdk/memory/qmd-manager.d.ts +2 -0
  340. package/dist/plugin-sdk/memory/qmd-query-parser.d.ts +8 -0
  341. package/dist/plugin-sdk/memory/session-files.d.ts +2 -0
  342. package/dist/plugin-sdk/process/command-queue.d.ts +16 -0
  343. package/dist/plugin-sdk/providers/github-copilot-token.d.ts +3 -0
  344. package/dist/plugin-sdk/routing/resolve-route.d.ts +3 -1
  345. package/dist/plugin-sdk/security/external-content.d.ts +1 -1
  346. package/dist/plugin-sdk/security/secret-equal.d.ts +1 -0
  347. package/dist/plugin-sdk/sessions/input-provenance.d.ts +16 -0
  348. package/dist/plugin-sdk/signal/monitor/event-handler.types.d.ts +8 -0
  349. package/dist/plugin-sdk/signal/monitor/mentions.d.ts +2 -0
  350. package/dist/plugin-sdk/slack/monitor/commands.d.ts +5 -0
  351. package/dist/plugin-sdk/slack/monitor/media.d.ts +21 -0
  352. package/dist/plugin-sdk/slack/types.d.ts +1 -0
  353. package/dist/plugin-sdk/telegram/bot-message-context.d.ts +2 -1
  354. package/dist/plugin-sdk/telegram/fetch.d.ts +1 -0
  355. package/dist/plugin-sdk/telegram/monitor.d.ts +1 -0
  356. package/dist/plugin-sdk/telegram/send.d.ts +3 -0
  357. package/dist/plugin-sdk/tts/tts.d.ts +2 -2
  358. package/dist/plugin-sdk/utils/fetch-timeout.d.ts +2 -0
  359. package/dist/plugin-sdk/web/media.d.ts +12 -2
  360. package/dist/{plugins-CQw3z3Nw.js → plugins-CTjLu-z-.js} +4 -4
  361. package/dist/{plugins-B7F0Ly9G.js → plugins-CxrdL_IZ.js} +3 -3
  362. package/dist/{plugins-cli-CJ74eHvr.js → plugins-cli-CbX97Kvt.js} +259 -49
  363. package/dist/{plugins-cli-ubDwUAzK.js → plugins-cli-Dn9OeO53.js} +257 -47
  364. package/dist/{ports-kYsTYQdA.js → ports-C8YYHVlc.js} +2 -2
  365. package/dist/{program-1bQ15ivo.js → program-D-mNC0It.js} +86 -83
  366. package/dist/{progress-Da1ehW-x.js → progress-COHv-uNT.js} +1 -1
  367. package/dist/{progress-COzt9PNY.js → progress-DZb6yPcJ.js} +1 -1
  368. package/dist/{prompt-style-Dc0C5HC9.js → prompt-style-Cf1r1L6k.js} +1 -1
  369. package/dist/{prompt-style-DjZDxcFg.js → prompt-style-lSlXMhsd.js} +1 -1
  370. package/dist/{pw-ai-CQ4-gUNR.js → pw-ai-6GzTgK5g.js} +205 -32
  371. package/dist/{pw-ai-1NN0FrJb.js → pw-ai-C8YhJRaI.js} +207 -32
  372. package/dist/{pw-ai-qEMUq5Mt.js → pw-ai-CKGenizV.js} +203 -29
  373. package/dist/{pw-ai-IOqEXO1O.js → pw-ai-D7devT89.js} +206 -32
  374. package/dist/{qmd-manager-CEwp3el1.js → qmd-manager-CQzWovq-.js} +71 -90
  375. package/dist/{qmd-manager-D6N3qvQ5.js → qmd-manager-Cs8RJVQp.js} +73 -90
  376. package/dist/{qmd-manager-C48QzrRe.js → qmd-manager-DdgrQ2kc.js} +71 -88
  377. package/dist/{qmd-manager-DaUqCKB_.js → qmd-manager-dyIoOvKl.js} +73 -90
  378. package/dist/{register.subclis-Cm-VJ5nP.js → register.subclis-ifHtmF3e.js} +29 -29
  379. package/dist/{reply-CBs4e9Rm.js → reply-VIHqsQ-k.js} +7906 -8743
  380. package/dist/{routes-9ygR0GOk.js → routes-CaCvio4Q.js} +36 -15
  381. package/dist/{routes-BrWrBk2R.js → routes-Cpfxk96k.js} +36 -14
  382. package/dist/{rpc-Cjuz2Gv1.js → rpc-BhB01Bhj.js} +3 -3
  383. package/dist/{rpc-DhkLVY5H.js → rpc-C5WsS_Ne.js} +3 -3
  384. package/dist/{run-main-BlZ5l-X9.js → run-main-DVy6KJTe.js} +88 -85
  385. package/dist/runner-B7CKBC80.js +1800 -0
  386. package/dist/runner-BEy5ZGFv.js +1901 -0
  387. package/dist/runner-Bv0BmJPF.js +1800 -0
  388. package/dist/runner-ChqVEgPx.js +1901 -0
  389. package/dist/{sandbox-qt49csTr.js → sandbox-BAChxjC5.js} +627 -157
  390. package/dist/{sandbox-CPZiaKcS.js → sandbox-DNHDwHw8.js} +628 -158
  391. package/dist/{sandbox-cli-C6_iNuqO.js → sandbox-cli-9oq67QEg.js} +22 -22
  392. package/dist/{sandbox-cli-C_wK-KAE.js → sandbox-cli-BiNq9yUe.js} +22 -22
  393. package/dist/{security-cli-CTTD1vms.js → security-cli-CRg03hvq.js} +28 -28
  394. package/dist/{security-cli-DRpGF2Yc.js → security-cli-LmBBHnmh.js} +28 -28
  395. package/dist/{server-context-lyNcqJYD.js → server-context-FwqBRH3K.js} +10 -10
  396. package/dist/{server-context-39mkstUs.js → server-context-RY7lRaxl.js} +9 -9
  397. package/dist/{server-node-events-V_G9BRRw.js → server-node-events-BbHOZX3O.js} +48 -43
  398. package/dist/{server-node-events-o9G18PaE.js → server-node-events-CngNLVL-.js} +50 -45
  399. package/dist/{service-DOlJdIqe.js → service-BnqdBTAK.js} +8 -4
  400. package/dist/{service-DDPRbf8a.js → service-DZN7KRok.js} +8 -4
  401. package/dist/{service-audit-VDRrWefh.js → service-audit-0Eil3ISN.js} +4 -4
  402. package/dist/{service-audit-CVy00Ze_.js → service-audit-B8KIOe8A.js} +4 -4
  403. package/dist/{session-cost-usage-CcCEQNuc.js → session-cost-usage-B-tyjp76.js} +14 -14
  404. package/dist/{session-cost-usage-PvyVZz-g.js → session-cost-usage-BYUb7fov.js} +14 -14
  405. package/dist/{shared-BnpC3wMU.js → shared-BCdNboU1.js} +3 -3
  406. package/dist/{shared-CagUDdmp.js → shared-CsAwU6-q.js} +3 -3
  407. package/dist/{shared-BDk_zC9p.js → shared-Csn6DLBA.js} +5 -5
  408. package/dist/{shared-C92wo-6f.js → shared-DEanAgja.js} +4 -4
  409. package/dist/{skill-scanner-C_fQzVDu.js → skill-scanner-BrGkh5K7.js} +1 -1
  410. package/dist/{skill-scanner-DrVEHfC6.js → skill-scanner-CucvxYhu.js} +1 -1
  411. package/dist/{skills-Ccsv3IQq.js → skills-CE7by2IF.js} +151 -8
  412. package/dist/{skills-_eKGrw9z.js → skills-Dz15dAM4.js} +152 -9
  413. package/dist/{skills-cli-DqvLjooh.js → skills-cli-B5b75pDK.js} +13 -13
  414. package/dist/{skills-cli-DUncybht.js → skills-cli-CbCDrYwp.js} +13 -13
  415. package/dist/{skills-status-Cp2ZFhIx.js → skills-status-B99Us6yS.js} +2 -2
  416. package/dist/{skills-status-Ck0CCFZG.js → skills-status-ChM7JE47.js} +3 -3
  417. package/dist/{sqlite-DODNHWJb.js → sqlite-2UsPaJz5.js} +97 -2
  418. package/dist/{sqlite-cSdsHVEw.js → sqlite-CASnHrgX.js} +97 -1
  419. package/dist/{sqlite-Bwo2rASR.js → sqlite-CVWiMkGu.js} +97 -1
  420. package/dist/{sqlite-CpqIbY4-.js → sqlite-CcIWkGaM.js} +97 -1
  421. package/dist/{status-Bmx9_1C7.js → status-CKuX1-zb.js} +3 -3
  422. package/dist/{status-CBGgwlTW.js → status-Cm4q6o-I.js} +57 -49
  423. package/dist/{status-DkJgtvSz.js → status-DD2iqGc9.js} +4 -4
  424. package/dist/{subsystem-DPnkvS73.js → subsystem-DHfJG4gk.js} +73 -20
  425. package/dist/{system-cli-9fQ1uLiz.js → system-cli-BVJDR474.js} +87 -15
  426. package/dist/{system-cli-Gq8OWHFg.js → system-cli-C3Y_9VpI.js} +88 -16
  427. package/dist/{systemd-Pa7LURHB.js → systemd-DxddcFsa.js} +3 -3
  428. package/dist/{systemd-hints-zi4ohCOY.js → systemd-hints-BVLopJ9O.js} +1 -1
  429. package/dist/{systemd-linger-CDo2UbHM.js → systemd-linger-BThjV1Sr.js} +2 -2
  430. package/dist/{systemd-linger-6_naJcJp.js → systemd-linger-D3Va1Cv7.js} +2 -2
  431. package/dist/{systemd-BEWwfwn0.js → systemd-s3S2HVog.js} +3 -3
  432. package/dist/{table-Bb9gAVIp.js → table-BIk8Aan_.js} +2 -2
  433. package/dist/{table-cCoGqLsk.js → table-Bvka_vkc.js} +1 -1
  434. package/dist/{tool-display-DUVhO36P.js → tool-display-DbdMQFZx.js} +2 -2
  435. package/dist/{tool-display-DNOVCI6J.js → tool-display-kpW5Hg2z.js} +2 -2
  436. package/dist/{tui-DDVqLwqT.js → tui-B40Z2jMa.js} +120 -14
  437. package/dist/{tui-cli-CurbazQf.js → tui-cli-Bwa6K7xR.js} +28 -28
  438. package/dist/{tui-cli-BeN2K38I.js → tui-cli-DD6g7uZb.js} +27 -27
  439. package/dist/{tui-B9zLJxf6.js → tui-lFMZUnx6.js} +121 -13
  440. package/dist/{update-Ct9sqJC_.js → update-Bos8PPCG.js} +3 -3
  441. package/dist/{update--i077azM.js → update-Cg8MtrEr.js} +3 -3
  442. package/dist/{update-cli-CT5W0kpw.js → update-cli-CC-wTeje.js} +92 -73
  443. package/dist/{update-cli-C87lNK1S.js → update-cli-CULnXFL_.js} +91 -72
  444. package/dist/{update-runner-BIttRDyV.js → update-runner-BaLsla0c.js} +11 -11
  445. package/dist/{update-runner-xbeVkAD9.js → update-runner-Dbsdl5AU.js} +10 -10
  446. package/dist/{utils-Dk86IbEs.js → utils-BLJAc3ZV.js} +1 -1
  447. package/dist/{utils-BTaR--Ln.js → utils-BtIMES3N.js} +1 -1
  448. package/dist/{webhooks-cli-Db3zyJaw.js → webhooks-cli-ClHLUu_j.js} +21 -13
  449. package/dist/{webhooks-cli-DUUa8gVY.js → webhooks-cli-DVXr2uyN.js} +21 -13
  450. package/dist/{widearea-dns-BgYasW6m.js → widearea-dns-C4RnIR9O.js} +3 -3
  451. package/dist/{widearea-dns-CMIG6-74.js → widearea-dns-Ypwgjpsr.js} +3 -3
  452. package/dist/{ws-C0k_dhCP.js → ws-BcJt4pcg.js} +24 -2
  453. package/dist/{ws-DtDKpbLR.js → ws-MC-rTJLe.js} +24 -2
  454. package/dist/{ws-log-cMNgAyLy.js → ws-log-WrJ4QYu7.js} +1 -1
  455. package/dist/{ws-log-C6vm_XMA.js → ws-log-lip4ETlm.js} +2 -2
  456. package/dist/{wsl-rfIr_Sde.js → wsl-BvTIzy-8.js} +5 -3
  457. package/docs/assets/install-script.svg +1 -0
  458. package/docs/automation/hooks.md +1 -38
  459. package/docs/automation/webhook.md +52 -2
  460. package/docs/channels/discord.md +389 -381
  461. package/docs/channels/grammy.md +1 -1
  462. package/docs/channels/imessage.md +229 -218
  463. package/docs/channels/index.md +1 -0
  464. package/docs/channels/irc.md +234 -0
  465. package/docs/channels/msteams.md +2 -0
  466. package/docs/channels/pairing.md +1 -1
  467. package/docs/channels/slack.md +295 -415
  468. package/docs/channels/telegram.md +397 -460
  469. package/docs/channels/whatsapp.md +338 -310
  470. package/docs/ci.md +0 -12
  471. package/docs/cli/hooks.md +1 -14
  472. package/docs/cli/index.md +6 -1
  473. package/docs/cli/logs.md +4 -0
  474. package/docs/cli/onboard.md +33 -0
  475. package/docs/cli/plugins.md +20 -1
  476. package/docs/cli/security.md +2 -0
  477. package/docs/concepts/architecture.md +0 -16
  478. package/docs/concepts/memory.md +7 -4
  479. package/docs/concepts/model-providers.md +27 -0
  480. package/docs/concepts/session-tool.md +1 -0
  481. package/docs/concepts/system-prompt.md +13 -0
  482. package/docs/docs.json +18 -12
  483. package/docs/experiments/plans/browser-evaluate-cdp-refactor.md +229 -0
  484. package/docs/gateway/configuration-examples.md +9 -2
  485. package/docs/gateway/configuration-reference.md +2345 -0
  486. package/docs/gateway/configuration.md +338 -3297
  487. package/docs/gateway/index.md +162 -238
  488. package/docs/gateway/openai-http-api.md +1 -0
  489. package/docs/gateway/openresponses-http-api.md +16 -0
  490. package/docs/gateway/remote-gateway-readme.md +0 -16
  491. package/docs/gateway/security/index.md +4 -16
  492. package/docs/gateway/tools-invoke-http-api.md +26 -1
  493. package/docs/help/faq.md +9 -0
  494. package/docs/help/testing.md +11 -0
  495. package/docs/install/docker.md +18 -0
  496. package/docs/install/hetzner.md +21 -0
  497. package/docs/install/installer.md +20 -0
  498. package/docs/nodes/audio.md +19 -0
  499. package/docs/platforms/mac/release.md +7 -7
  500. package/docs/providers/glm.md +3 -3
  501. package/docs/providers/huggingface.md +209 -0
  502. package/docs/providers/index.md +3 -0
  503. package/docs/providers/litellm.md +153 -0
  504. package/docs/providers/together.md +2 -2
  505. package/docs/providers/vllm.md +92 -0
  506. package/docs/providers/zai.md +2 -2
  507. package/docs/reference/credits.md +4 -28
  508. package/docs/reference/test.md +2 -1
  509. package/docs/reference/token-use.md +1 -1
  510. package/docs/reference/transcript-hygiene.md +18 -0
  511. package/docs/start/getting-started.md +5 -0
  512. package/docs/start/onboarding-overview.md +51 -0
  513. package/docs/start/onboarding.md +1 -0
  514. package/docs/start/openclaw.md +0 -16
  515. package/docs/start/wizard-cli-automation.md +17 -0
  516. package/docs/start/wizard-cli-reference.md +12 -0
  517. package/docs/start/wizard.md +3 -1
  518. package/docs/tools/browser.md +6 -0
  519. package/docs/zh-CN/automation/hooks.md +1 -38
  520. package/docs/zh-CN/cli/hooks.md +1 -14
  521. package/extensions/bluebubbles/package.json +1 -1
  522. package/extensions/bluebubbles/src/monitor.test.ts +40 -28
  523. package/extensions/bluebubbles/src/monitor.ts +0 -4
  524. package/extensions/copilot-proxy/package.json +1 -1
  525. package/extensions/diagnostics-otel/package.json +10 -10
  526. package/extensions/discord/package.json +1 -1
  527. package/extensions/feishu/package.json +2 -5
  528. package/extensions/feishu/src/bot.checkBotMentioned.test.ts +64 -0
  529. package/extensions/feishu/src/bot.test.ts +265 -0
  530. package/extensions/feishu/src/bot.ts +73 -18
  531. package/extensions/feishu/src/channel.test.ts +48 -0
  532. package/extensions/feishu/src/channel.ts +1 -3
  533. package/extensions/feishu/src/config-schema.ts +6 -0
  534. package/extensions/feishu/src/docx.ts +14 -4
  535. package/extensions/feishu/src/media.test.ts +151 -0
  536. package/extensions/feishu/src/media.ts +27 -13
  537. package/extensions/feishu/src/reply-dispatcher.test.ts +116 -0
  538. package/extensions/feishu/src/reply-dispatcher.ts +124 -67
  539. package/extensions/feishu/src/streaming-card.ts +223 -0
  540. package/extensions/feishu/src/targets.test.ts +16 -0
  541. package/extensions/feishu/src/targets.ts +1 -1
  542. package/extensions/google-antigravity-auth/package.json +1 -1
  543. package/extensions/google-gemini-cli-auth/oauth.test.ts +4 -1
  544. package/extensions/google-gemini-cli-auth/package.json +1 -1
  545. package/extensions/googlechat/package.json +1 -1
  546. package/extensions/googlechat/src/channel.ts +3 -20
  547. package/extensions/googlechat/src/resolve-target.test.ts +138 -0
  548. package/extensions/imessage/package.json +1 -1
  549. package/extensions/irc/index.ts +17 -0
  550. package/extensions/irc/openclaw.plugin.json +9 -0
  551. package/extensions/irc/package.json +14 -0
  552. package/extensions/irc/src/accounts.ts +268 -0
  553. package/extensions/irc/src/channel.ts +367 -0
  554. package/extensions/irc/src/client.test.ts +43 -0
  555. package/extensions/irc/src/client.ts +439 -0
  556. package/extensions/irc/src/config-schema.test.ts +27 -0
  557. package/extensions/irc/src/config-schema.ts +97 -0
  558. package/extensions/irc/src/control-chars.ts +22 -0
  559. package/extensions/irc/src/inbound.ts +334 -0
  560. package/extensions/irc/src/monitor.test.ts +43 -0
  561. package/extensions/irc/src/monitor.ts +158 -0
  562. package/extensions/irc/src/normalize.test.ts +46 -0
  563. package/extensions/irc/src/normalize.ts +117 -0
  564. package/extensions/irc/src/onboarding.test.ts +118 -0
  565. package/extensions/irc/src/onboarding.ts +479 -0
  566. package/extensions/irc/src/policy.test.ts +132 -0
  567. package/extensions/irc/src/policy.ts +157 -0
  568. package/extensions/irc/src/probe.ts +64 -0
  569. package/extensions/irc/src/protocol.test.ts +44 -0
  570. package/extensions/irc/src/protocol.ts +169 -0
  571. package/extensions/irc/src/runtime.ts +14 -0
  572. package/extensions/irc/src/send.ts +99 -0
  573. package/extensions/irc/src/types.ts +94 -0
  574. package/extensions/line/package.json +1 -1
  575. package/extensions/llm-task/package.json +1 -1
  576. package/extensions/lobster/package.json +1 -1
  577. package/extensions/matrix/CHANGELOG.md +6 -0
  578. package/extensions/matrix/node_modules/.bin/markdown-it +2 -2
  579. package/extensions/matrix/node_modules/.bin/markdown-it.CMD +2 -2
  580. package/extensions/matrix/node_modules/.bin/markdown-it.ps1 +2 -2
  581. package/extensions/matrix/package.json +2 -2
  582. package/extensions/matrix/src/matrix/monitor/media.ts +4 -2
  583. package/extensions/mattermost/package.json +1 -1
  584. package/extensions/memory-core/package.json +1 -1
  585. package/extensions/memory-lancedb/index.ts +6 -2
  586. package/extensions/memory-lancedb/node_modules/.bin/openai +2 -2
  587. package/extensions/memory-lancedb/node_modules/.bin/openai.CMD +2 -2
  588. package/extensions/memory-lancedb/node_modules/.bin/openai.ps1 +2 -2
  589. package/extensions/memory-lancedb/package.json +2 -2
  590. package/extensions/minimax-portal-auth/index.ts +7 -5
  591. package/extensions/minimax-portal-auth/package.json +1 -1
  592. package/extensions/msteams/CHANGELOG.md +6 -0
  593. package/extensions/msteams/package.json +1 -1
  594. package/extensions/msteams/src/media-helpers.test.ts +9 -0
  595. package/extensions/msteams/src/media-helpers.ts +15 -1
  596. package/extensions/msteams/src/mentions.test.ts +235 -0
  597. package/extensions/msteams/src/mentions.ts +114 -0
  598. package/extensions/msteams/src/messenger.test.ts +81 -1
  599. package/extensions/msteams/src/messenger.ts +11 -2
  600. package/extensions/nextcloud-talk/package.json +1 -1
  601. package/extensions/nostr/CHANGELOG.md +6 -0
  602. package/extensions/nostr/package.json +2 -2
  603. package/extensions/open-prose/package.json +1 -1
  604. package/extensions/signal/package.json +1 -1
  605. package/extensions/slack/package.json +1 -1
  606. package/extensions/telegram/package.json +1 -1
  607. package/extensions/telegram/src/channel.ts +1 -0
  608. package/extensions/tlon/package.json +1 -1
  609. package/extensions/twitch/CHANGELOG.md +6 -0
  610. package/extensions/twitch/package.json +1 -1
  611. package/extensions/twitch/src/onboarding.test.ts +5 -0
  612. package/extensions/twitch/src/outbound.test.ts +17 -6
  613. package/extensions/twitch/src/outbound.ts +12 -10
  614. package/extensions/voice-call/CHANGELOG.md +6 -0
  615. package/extensions/voice-call/package.json +1 -1
  616. package/extensions/voice-call/src/media-stream.ts +7 -1
  617. package/extensions/voice-call/src/providers/twilio.test.ts +5 -3
  618. package/extensions/voice-call/src/providers/twilio.ts +12 -1
  619. package/extensions/whatsapp/package.json +1 -1
  620. package/extensions/whatsapp/src/channel.ts +6 -16
  621. package/extensions/whatsapp/src/resolve-target.test.ts +154 -0
  622. package/extensions/zalo/CHANGELOG.md +6 -0
  623. package/extensions/zalo/package.json +1 -1
  624. package/extensions/zalouser/CHANGELOG.md +6 -0
  625. package/extensions/zalouser/package.json +1 -1
  626. package/package.json +26 -22
  627. package/dist/auth-BcNHFK-i.js +0 -184
  628. package/dist/auth-DkjJ3pm-.js +0 -184
  629. package/dist/boolean-M-esQJt6.js +0 -30
  630. package/dist/bundled/soul-evil/HOOK.md +0 -71
  631. package/dist/bundled/soul-evil/handler.js +0 -194
  632. package/dist/cli-B631__JU.js +0 -89
  633. package/dist/cli-DVhCVZZ6.js +0 -86
  634. package/dist/config-CI7EpvlP.js +0 -15
  635. package/dist/constants-DuoCkWRh.js +0 -65
  636. package/dist/control-ui/assets/index-CnB9IO4a.js.map +0 -1
  637. package/dist/control-ui/assets/index-DWhx-9JL.css +0 -1
  638. package/dist/date-time-c6HTX6IW.js +0 -187
  639. package/dist/frontmatter-xwTm0734.js +0 -105
  640. package/dist/parse-DqAvJRIf.js +0 -23
  641. package/dist/parse-duration-De_tAQSe.js +0 -24
  642. package/dist/parse-timeout-DV8NQQWk.js +0 -16
  643. package/dist/paths-IivnSNkP.js +0 -51
  644. package/dist/paths-MnZaxqPw.js +0 -48
  645. package/dist/paths-uoGO2aiO.js +0 -48
  646. package/dist/pi-model-discovery-DzFOAbQt.js +0 -20
  647. package/dist/plugin-sdk/tui/tui-formatters.d.ts +0 -31
  648. package/dist/session-key-nXYQSv-a.js +0 -167
  649. package/dist/tailscale-DU6DgqVy.js +0 -225
  650. package/dist/tailscale-DzJUWmKf.js +0 -252
  651. package/dist/utils-dp_OM900.js +0 -476
  652. package/docs/hooks/soul-evil.md +0 -69
  653. package/docs/zh-CN/hooks/soul-evil.md +0 -72
  654. package/skills/local-places/SERVER_README.md +0 -101
  655. package/skills/local-places/SKILL.md +0 -102
  656. package/skills/local-places/pyproject.toml +0 -21
  657. package/skills/local-places/src/local_places/__init__.py +0 -2
  658. package/skills/local-places/src/local_places/google_places.py +0 -314
  659. package/skills/local-places/src/local_places/main.py +0 -65
  660. package/skills/local-places/src/local_places/schemas.py +0 -107
  661. /package/dist/{archive-CXhvR9nU.js → archive-aSMUcOc6.js} +0 -0
  662. /package/dist/{archive-D0z3LZDK.js → archive-beaSfAzA.js} +0 -0
  663. /package/dist/{brew-BIrWdDps.js → brew-DlQQMJ3n.js} +0 -0
  664. /package/dist/{brew-B7YK4ZoL.js → brew-ROHf0-Xp.js} +0 -0
  665. /package/dist/{cli-utils-PlLcDZlM.js → cli-utils-CRhVAaLV.js} +0 -0
  666. /package/dist/{cli-utils-R-ECs5cY.js → cli-utils-CodyYLHe.js} +0 -0
  667. /package/dist/{command-format-BUxhT1xL.js → command-format-qUVxzqYm.js} +0 -0
  668. /package/dist/{constants-CNTiY-ZN.js → constants-BvQ6S8j5.js} +0 -0
  669. /package/dist/{errors-D3tYRJWG.js → errors-B91HIDPD.js} +0 -0
  670. /package/dist/{errors-B0eT3jVv.js → errors-Bv81hF2P.js} +0 -0
  671. /package/dist/{errors-x4NYs-1P.js → errors-Cojm0Kl7.js} +0 -0
  672. /package/dist/{format-CaxeRcue.js → format-CL8VOhxX.js} +0 -0
  673. /package/dist/{format-DLOJPZmo.js → format-DcfK-dwd.js} +0 -0
  674. /package/dist/{format-duration-CEmFWLyX.js → format-duration--hQihAvf.js} +0 -0
  675. /package/dist/{format-duration-DCXJx2ba.js → format-duration-84n6_DgO.js} +0 -0
  676. /package/dist/{format-relative-79_Y1n2Y.js → format-relative-Cywx6ldk.js} +0 -0
  677. /package/dist/{format-relative-Db7eqEu8.js → format-relative-cegC_FF5.js} +0 -0
  678. /package/dist/{helpers-CQI-5xS9.js → helpers-8O7IVGO-.js} +0 -0
  679. /package/dist/{helpers-DdwqKAAS.js → helpers-ByYj2Aq5.js} +0 -0
  680. /package/dist/{helpers-CRzoyyXS.js → helpers-CUVSCDJV.js} +0 -0
  681. /package/dist/{helpers-C89IG08W.js → helpers-HyeZXsnu.js} +0 -0
  682. /package/dist/{is-main-qJ675wPV.js → is-main-B9A8S9YC.js} +0 -0
  683. /package/dist/{is-main-WWuz28Ip.js → is-main-BWoXGz7p.js} +0 -0
  684. /package/dist/{logging-BzvBIA3Y.js → logging-D-Jq2wIo.js} +0 -0
  685. /package/dist/{logging-CfEk_PnX.js → logging-fywhKCmE.js} +0 -0
  686. /package/dist/{parse-Cjiudy6x.js → parse-Bw0oH-rT.js} +0 -0
  687. /package/dist/{parse-log-line-CUrpqe1w.js → parse-log-line-BuRiE-Ij.js} +0 -0
  688. /package/dist/{parse-log-line-D2UGw0wR.js → parse-log-line-CfVgwy6x.js} +0 -0
  689. /package/dist/{parse-timeout-DFSPLxpY.js → parse-timeout-D1XX_zN_.js} +0 -0
  690. /package/dist/{pi-model-discovery-CV2V1HHz.js → pi-model-discovery-DqgqUyAv.js} +0 -0
  691. /package/dist/{pi-model-discovery-DzEIEgHL.js → pi-model-discovery-EwKVHlZB.js} +0 -0
  692. /package/dist/{prompts--d-6l5Ln.js → prompts-Bg96reub.js} +0 -0
  693. /package/dist/{prompts-CXLLIBwP.js → prompts-Dszjy1n_.js} +0 -0
  694. /package/dist/{redact-BRmQPYDR.js → redact-BIMJ3ntQ.js} +0 -0
  695. /package/dist/{redact-BHmk44DI.js → redact-BRsnXqwD.js} +0 -0
  696. /package/dist/{redact-DAKeu7PA.js → redact-UvkXqguc.js} +0 -0
  697. /package/dist/{status-Cv36yYdi.js → status-C_dMhoE0.js} +0 -0
  698. /package/dist/{status-Drziap9H.js → status-DCkF_L3U.js} +0 -0
  699. /package/dist/{systemd-hints-CH4pbCFD.js → systemd-hints-CXNtLw9Q.js} +0 -0
  700. /package/dist/{tailnet-CL5GtL7t.js → tailnet-DATIFSsY.js} +0 -0
  701. /package/dist/{tailnet-DGRSvYuQ.js → tailnet-uoFvUSsw.js} +0 -0
  702. /package/dist/{transcript-events-BlIONGVn.js → transcript-events-BHS7QoRl.js} +0 -0
  703. /package/dist/{transcript-events-C1hdue6u.js → transcript-events-Bp7fGnwv.js} +0 -0
  704. /package/dist/{transcript-events-CZ8CG4ht.js → transcript-events-Ch7wLX-j.js} +0 -0
  705. /package/dist/{usage-format-6Uar63S0.js → usage-format-Bhl_WCWP.js} +0 -0
  706. /package/dist/{usage-format-hd37en6b.js → usage-format-CpORtVCG.js} +0 -0
  707. /package/extensions/{feishu → irc}/node_modules/.bin/claw +0 -0
  708. /package/extensions/{feishu → irc}/node_modules/.bin/claw.CMD +0 -0
  709. /package/extensions/{feishu → irc}/node_modules/.bin/claw.ps1 +0 -0
  710. /package/extensions/{feishu → irc}/node_modules/.bin/moltbot +0 -0
  711. /package/extensions/{feishu → irc}/node_modules/.bin/moltbot.CMD +0 -0
  712. /package/extensions/{feishu → irc}/node_modules/.bin/moltbot.ps1 +0 -0
  713. /package/extensions/{feishu → irc}/node_modules/.bin/pigbot +0 -0
  714. /package/extensions/{feishu → irc}/node_modules/.bin/pigbot.CMD +0 -0
  715. /package/extensions/{feishu → irc}/node_modules/.bin/pigbot.ps1 +0 -0
@@ -1,13 +1,177 @@
1
1
  import { s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-BZtyHNCi.js";
2
- import { g as parseAgentSessionKey, h as isSubagentSessionKey, l as normalizeAgentId, n as DEFAULT_AGENT_ID } from "./session-key-nXYQSv-a.js";
3
- import { g as resolveUserPath, p as pathExists } from "./utils-dp_OM900.js";
4
- import { t as runCommandWithTimeout } from "./exec-CiH_vkWn.js";
2
+ import { I as pathExists, t as runCommandWithTimeout, z as resolveUserPath } from "./exec-_PSUrMP8.js";
5
3
  import fs from "node:fs/promises";
6
4
  import os from "node:os";
7
5
  import path from "node:path";
8
6
  import fs$1 from "node:fs";
9
7
  import { fileURLToPath } from "node:url";
10
8
 
9
+ //#region src/sessions/session-key-utils.ts
10
+ function parseAgentSessionKey(sessionKey) {
11
+ const raw = (sessionKey ?? "").trim();
12
+ if (!raw) return null;
13
+ const parts = raw.split(":").filter(Boolean);
14
+ if (parts.length < 3) return null;
15
+ if (parts[0] !== "agent") return null;
16
+ const agentId = parts[1]?.trim();
17
+ const rest = parts.slice(2).join(":");
18
+ if (!agentId || !rest) return null;
19
+ return {
20
+ agentId,
21
+ rest
22
+ };
23
+ }
24
+ function isSubagentSessionKey(sessionKey) {
25
+ const raw = (sessionKey ?? "").trim();
26
+ if (!raw) return false;
27
+ if (raw.toLowerCase().startsWith("subagent:")) return true;
28
+ const parsed = parseAgentSessionKey(raw);
29
+ return Boolean((parsed?.rest ?? "").toLowerCase().startsWith("subagent:"));
30
+ }
31
+ function isAcpSessionKey(sessionKey) {
32
+ const raw = (sessionKey ?? "").trim();
33
+ if (!raw) return false;
34
+ if (raw.toLowerCase().startsWith("acp:")) return true;
35
+ const parsed = parseAgentSessionKey(raw);
36
+ return Boolean((parsed?.rest ?? "").toLowerCase().startsWith("acp:"));
37
+ }
38
+ const THREAD_SESSION_MARKERS = [":thread:", ":topic:"];
39
+ function resolveThreadParentSessionKey(sessionKey) {
40
+ const raw = (sessionKey ?? "").trim();
41
+ if (!raw) return null;
42
+ const normalized = raw.toLowerCase();
43
+ let idx = -1;
44
+ for (const marker of THREAD_SESSION_MARKERS) {
45
+ const candidate = normalized.lastIndexOf(marker);
46
+ if (candidate > idx) idx = candidate;
47
+ }
48
+ if (idx <= 0) return null;
49
+ const parent = raw.slice(0, idx).trim();
50
+ return parent ? parent : null;
51
+ }
52
+
53
+ //#endregion
54
+ //#region src/routing/session-key.ts
55
+ const DEFAULT_AGENT_ID = "main";
56
+ const DEFAULT_MAIN_KEY = "main";
57
+ const DEFAULT_ACCOUNT_ID = "default";
58
+ const VALID_ID_RE = /^[a-z0-9][a-z0-9_-]{0,63}$/i;
59
+ const INVALID_CHARS_RE = /[^a-z0-9_-]+/g;
60
+ const LEADING_DASH_RE = /^-+/;
61
+ const TRAILING_DASH_RE = /-+$/;
62
+ function normalizeToken(value) {
63
+ return (value ?? "").trim().toLowerCase();
64
+ }
65
+ function normalizeMainKey(value) {
66
+ const trimmed = (value ?? "").trim();
67
+ return trimmed ? trimmed.toLowerCase() : DEFAULT_MAIN_KEY;
68
+ }
69
+ function resolveAgentIdFromSessionKey(sessionKey) {
70
+ return normalizeAgentId(parseAgentSessionKey(sessionKey)?.agentId ?? DEFAULT_AGENT_ID);
71
+ }
72
+ function classifySessionKeyShape(sessionKey) {
73
+ const raw = (sessionKey ?? "").trim();
74
+ if (!raw) return "missing";
75
+ if (parseAgentSessionKey(raw)) return "agent";
76
+ return raw.toLowerCase().startsWith("agent:") ? "malformed_agent" : "legacy_or_alias";
77
+ }
78
+ function normalizeAgentId(value) {
79
+ const trimmed = (value ?? "").trim();
80
+ if (!trimmed) return DEFAULT_AGENT_ID;
81
+ if (VALID_ID_RE.test(trimmed)) return trimmed.toLowerCase();
82
+ return trimmed.toLowerCase().replace(INVALID_CHARS_RE, "-").replace(LEADING_DASH_RE, "").replace(TRAILING_DASH_RE, "").slice(0, 64) || DEFAULT_AGENT_ID;
83
+ }
84
+ function sanitizeAgentId(value) {
85
+ const trimmed = (value ?? "").trim();
86
+ if (!trimmed) return DEFAULT_AGENT_ID;
87
+ if (VALID_ID_RE.test(trimmed)) return trimmed.toLowerCase();
88
+ return trimmed.toLowerCase().replace(INVALID_CHARS_RE, "-").replace(LEADING_DASH_RE, "").replace(TRAILING_DASH_RE, "").slice(0, 64) || DEFAULT_AGENT_ID;
89
+ }
90
+ function normalizeAccountId(value) {
91
+ const trimmed = (value ?? "").trim();
92
+ if (!trimmed) return DEFAULT_ACCOUNT_ID;
93
+ if (VALID_ID_RE.test(trimmed)) return trimmed.toLowerCase();
94
+ return trimmed.toLowerCase().replace(INVALID_CHARS_RE, "-").replace(LEADING_DASH_RE, "").replace(TRAILING_DASH_RE, "").slice(0, 64) || DEFAULT_ACCOUNT_ID;
95
+ }
96
+ function buildAgentMainSessionKey(params) {
97
+ return `agent:${normalizeAgentId(params.agentId)}:${normalizeMainKey(params.mainKey)}`;
98
+ }
99
+ function buildAgentPeerSessionKey(params) {
100
+ const peerKind = params.peerKind ?? "direct";
101
+ if (peerKind === "direct") {
102
+ const dmScope = params.dmScope ?? "main";
103
+ let peerId = (params.peerId ?? "").trim();
104
+ const linkedPeerId = dmScope === "main" ? null : resolveLinkedPeerId({
105
+ identityLinks: params.identityLinks,
106
+ channel: params.channel,
107
+ peerId
108
+ });
109
+ if (linkedPeerId) peerId = linkedPeerId;
110
+ peerId = peerId.toLowerCase();
111
+ if (dmScope === "per-account-channel-peer" && peerId) {
112
+ const channel = (params.channel ?? "").trim().toLowerCase() || "unknown";
113
+ const accountId = normalizeAccountId(params.accountId);
114
+ return `agent:${normalizeAgentId(params.agentId)}:${channel}:${accountId}:direct:${peerId}`;
115
+ }
116
+ if (dmScope === "per-channel-peer" && peerId) {
117
+ const channel = (params.channel ?? "").trim().toLowerCase() || "unknown";
118
+ return `agent:${normalizeAgentId(params.agentId)}:${channel}:direct:${peerId}`;
119
+ }
120
+ if (dmScope === "per-peer" && peerId) return `agent:${normalizeAgentId(params.agentId)}:direct:${peerId}`;
121
+ return buildAgentMainSessionKey({
122
+ agentId: params.agentId,
123
+ mainKey: params.mainKey
124
+ });
125
+ }
126
+ const channel = (params.channel ?? "").trim().toLowerCase() || "unknown";
127
+ const peerId = ((params.peerId ?? "").trim() || "unknown").toLowerCase();
128
+ return `agent:${normalizeAgentId(params.agentId)}:${channel}:${peerKind}:${peerId}`;
129
+ }
130
+ function resolveLinkedPeerId(params) {
131
+ const identityLinks = params.identityLinks;
132
+ if (!identityLinks) return null;
133
+ const peerId = params.peerId.trim();
134
+ if (!peerId) return null;
135
+ const candidates = /* @__PURE__ */ new Set();
136
+ const rawCandidate = normalizeToken(peerId);
137
+ if (rawCandidate) candidates.add(rawCandidate);
138
+ const channel = normalizeToken(params.channel);
139
+ if (channel) {
140
+ const scopedCandidate = normalizeToken(`${channel}:${peerId}`);
141
+ if (scopedCandidate) candidates.add(scopedCandidate);
142
+ }
143
+ if (candidates.size === 0) return null;
144
+ for (const [canonical, ids] of Object.entries(identityLinks)) {
145
+ const canonicalName = canonical.trim();
146
+ if (!canonicalName) continue;
147
+ if (!Array.isArray(ids)) continue;
148
+ for (const id of ids) {
149
+ const normalized = normalizeToken(id);
150
+ if (normalized && candidates.has(normalized)) return canonicalName;
151
+ }
152
+ }
153
+ return null;
154
+ }
155
+ function buildGroupHistoryKey(params) {
156
+ const channel = normalizeToken(params.channel) || "unknown";
157
+ const accountId = normalizeAccountId(params.accountId);
158
+ const peerId = params.peerId.trim().toLowerCase() || "unknown";
159
+ return `${channel}:${accountId}:${params.peerKind}:${peerId}`;
160
+ }
161
+ function resolveThreadSessionKeys(params) {
162
+ const threadId = (params.threadId ?? "").trim();
163
+ if (!threadId) return {
164
+ sessionKey: params.baseSessionKey,
165
+ parentSessionKey: void 0
166
+ };
167
+ const normalizedThreadId = threadId.toLowerCase();
168
+ return {
169
+ sessionKey: params.useSuffix ?? true ? `${params.baseSessionKey}:thread:${normalizedThreadId}` : params.baseSessionKey,
170
+ parentSessionKey: params.parentSessionKey
171
+ };
172
+ }
173
+
174
+ //#endregion
11
175
  //#region src/infra/openclaw-root.ts
12
176
  const CORE_PACKAGE_NAMES = new Set(["openclaw"]);
13
177
  async function readPackageName(dir) {
@@ -53,6 +217,10 @@ function findPackageRootSync(startDir, maxDepth = 12) {
53
217
  function candidateDirsFromArgv1(argv1) {
54
218
  const normalized = path.resolve(argv1);
55
219
  const candidates = [path.dirname(normalized)];
220
+ try {
221
+ const resolved = fs$1.realpathSync(normalized);
222
+ if (resolved !== normalized) candidates.push(path.dirname(resolved));
223
+ } catch {}
56
224
  const parts = normalized.split(path.sep);
57
225
  const binIndex = parts.lastIndexOf(".bin");
58
226
  if (binIndex > 0 && parts[binIndex - 1] === "node_modules") {
@@ -139,6 +307,8 @@ const DEFAULT_HEARTBEAT_FILENAME = "HEARTBEAT.md";
139
307
  const DEFAULT_BOOTSTRAP_FILENAME = "BOOTSTRAP.md";
140
308
  const DEFAULT_MEMORY_FILENAME = "MEMORY.md";
141
309
  const DEFAULT_MEMORY_ALT_FILENAME = "memory.md";
310
+ const workspaceTemplateCache = /* @__PURE__ */ new Map();
311
+ let gitAvailabilityPromise = null;
142
312
  function stripFrontMatter(content) {
143
313
  if (!content.startsWith("---")) return content;
144
314
  const endIndex = content.indexOf("\n---", 3);
@@ -149,12 +319,23 @@ function stripFrontMatter(content) {
149
319
  return trimmed;
150
320
  }
151
321
  async function loadTemplate(name) {
152
- const templateDir = await resolveWorkspaceTemplateDir();
153
- const templatePath = path.join(templateDir, name);
322
+ const cached = workspaceTemplateCache.get(name);
323
+ if (cached) return cached;
324
+ const pending = (async () => {
325
+ const templateDir = await resolveWorkspaceTemplateDir();
326
+ const templatePath = path.join(templateDir, name);
327
+ try {
328
+ return stripFrontMatter(await fs.readFile(templatePath, "utf-8"));
329
+ } catch {
330
+ throw new Error(`Missing workspace template: ${name} (${templatePath}). Ensure docs/reference/templates are packaged.`);
331
+ }
332
+ })();
333
+ workspaceTemplateCache.set(name, pending);
154
334
  try {
155
- return stripFrontMatter(await fs.readFile(templatePath, "utf-8"));
156
- } catch {
157
- throw new Error(`Missing workspace template: ${name} (${templatePath}). Ensure docs/reference/templates are packaged.`);
335
+ return await pending;
336
+ } catch (error) {
337
+ workspaceTemplateCache.delete(name);
338
+ throw error;
158
339
  }
159
340
  }
160
341
  async function writeFileIfMissing(filePath, content) {
@@ -176,11 +357,15 @@ async function hasGitRepo(dir) {
176
357
  }
177
358
  }
178
359
  async function isGitAvailable() {
179
- try {
180
- return (await runCommandWithTimeout(["git", "--version"], { timeoutMs: 2e3 })).code === 0;
181
- } catch {
182
- return false;
183
- }
360
+ if (gitAvailabilityPromise) return gitAvailabilityPromise;
361
+ gitAvailabilityPromise = (async () => {
362
+ try {
363
+ return (await runCommandWithTimeout(["git", "--version"], { timeoutMs: 2e3 })).code === 0;
364
+ } catch {
365
+ return false;
366
+ }
367
+ })();
368
+ return gitAvailabilityPromise;
184
369
  }
185
370
  async function ensureGitRepo(dir, isBrandNewWorkspace) {
186
371
  if (!isBrandNewWorkspace) return;
@@ -439,4 +624,4 @@ function resolveAgentDir(cfg, agentId) {
439
624
  }
440
625
 
441
626
  //#endregion
442
- export { resolveOpenClawPackageRootSync as C, resolveOpenClawPackageRoot as S, DEFAULT_TOOLS_FILENAME as _, resolveAgentModelPrimary as a, filterBootstrapFilesForSession as b, resolveDefaultAgentId as c, DEFAULT_AGENTS_FILENAME as d, DEFAULT_AGENT_WORKSPACE_DIR as f, DEFAULT_SOUL_FILENAME as g, DEFAULT_IDENTITY_FILENAME as h, resolveAgentModelFallbacksOverride as i, resolveSessionAgentId as l, DEFAULT_HEARTBEAT_FILENAME as m, resolveAgentConfig as n, resolveAgentSkillsFilter as o, DEFAULT_BOOTSTRAP_FILENAME as p, resolveAgentDir as r, resolveAgentWorkspaceDir as s, listAgentIds as t, resolveSessionAgentIds as u, DEFAULT_USER_FILENAME as v, loadWorkspaceBootstrapFiles as x, ensureAgentWorkspace as y };
627
+ export { classifySessionKeyShape as A, resolveThreadParentSessionKey as B, resolveOpenClawPackageRootSync as C, buildAgentMainSessionKey as D, DEFAULT_MAIN_KEY as E, resolveThreadSessionKeys as F, sanitizeAgentId as I, isAcpSessionKey as L, normalizeAgentId as M, normalizeMainKey as N, buildAgentPeerSessionKey as O, resolveAgentIdFromSessionKey as P, isSubagentSessionKey as R, resolveOpenClawPackageRoot as S, DEFAULT_AGENT_ID as T, DEFAULT_TOOLS_FILENAME as _, resolveAgentModelPrimary as a, filterBootstrapFilesForSession as b, resolveDefaultAgentId as c, DEFAULT_AGENTS_FILENAME as d, DEFAULT_AGENT_WORKSPACE_DIR as f, DEFAULT_SOUL_FILENAME as g, DEFAULT_IDENTITY_FILENAME as h, resolveAgentModelFallbacksOverride as i, normalizeAccountId as j, buildGroupHistoryKey as k, resolveSessionAgentId as l, DEFAULT_HEARTBEAT_FILENAME as m, resolveAgentConfig as n, resolveAgentSkillsFilter as o, DEFAULT_BOOTSTRAP_FILENAME as p, resolveAgentDir as r, resolveAgentWorkspaceDir as s, listAgentIds as t, resolveSessionAgentIds as u, DEFAULT_USER_FILENAME as v, DEFAULT_ACCOUNT_ID as w, loadWorkspaceBootstrapFiles as x, ensureAgentWorkspace as y, parseAgentSessionKey as z };
@@ -1,8 +1,8 @@
1
1
  import { g as resolveStateDir, y as resolveRequiredHomeDir } from "./paths-DVBShlw6.js";
2
- import { b as resolveUserPath, g as pathExists } from "./utils-BTaR--Ln.js";
2
+ import { b as resolveUserPath, g as pathExists } from "./utils-BtIMES3N.js";
3
3
  import { l as normalizeAgentId, n as DEFAULT_AGENT_ID, v as isSubagentSessionKey, y as parseAgentSessionKey } from "./session-key-BWxPj0z_.js";
4
- import { t as runCommandWithTimeout } from "./exec-DFOtZbI0.js";
5
- import { t as resolveOpenClawPackageRoot } from "./openclaw-root-93W6UrUK.js";
4
+ import { t as runCommandWithTimeout } from "./exec-BPQSKwGa.js";
5
+ import { t as resolveOpenClawPackageRoot } from "./openclaw-root-CEnmuBUN.js";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import os from "node:os";
8
8
  import path from "node:path";
@@ -61,6 +61,8 @@ const DEFAULT_HEARTBEAT_FILENAME = "HEARTBEAT.md";
61
61
  const DEFAULT_BOOTSTRAP_FILENAME = "BOOTSTRAP.md";
62
62
  const DEFAULT_MEMORY_FILENAME = "MEMORY.md";
63
63
  const DEFAULT_MEMORY_ALT_FILENAME = "memory.md";
64
+ const workspaceTemplateCache = /* @__PURE__ */ new Map();
65
+ let gitAvailabilityPromise = null;
64
66
  function stripFrontMatter(content) {
65
67
  if (!content.startsWith("---")) return content;
66
68
  const endIndex = content.indexOf("\n---", 3);
@@ -71,12 +73,23 @@ function stripFrontMatter(content) {
71
73
  return trimmed;
72
74
  }
73
75
  async function loadTemplate(name) {
74
- const templateDir = await resolveWorkspaceTemplateDir();
75
- const templatePath = path.join(templateDir, name);
76
+ const cached = workspaceTemplateCache.get(name);
77
+ if (cached) return cached;
78
+ const pending = (async () => {
79
+ const templateDir = await resolveWorkspaceTemplateDir();
80
+ const templatePath = path.join(templateDir, name);
81
+ try {
82
+ return stripFrontMatter(await fs.readFile(templatePath, "utf-8"));
83
+ } catch {
84
+ throw new Error(`Missing workspace template: ${name} (${templatePath}). Ensure docs/reference/templates are packaged.`);
85
+ }
86
+ })();
87
+ workspaceTemplateCache.set(name, pending);
76
88
  try {
77
- return stripFrontMatter(await fs.readFile(templatePath, "utf-8"));
78
- } catch {
79
- throw new Error(`Missing workspace template: ${name} (${templatePath}). Ensure docs/reference/templates are packaged.`);
89
+ return await pending;
90
+ } catch (error) {
91
+ workspaceTemplateCache.delete(name);
92
+ throw error;
80
93
  }
81
94
  }
82
95
  async function writeFileIfMissing(filePath, content) {
@@ -98,11 +111,15 @@ async function hasGitRepo(dir) {
98
111
  }
99
112
  }
100
113
  async function isGitAvailable() {
101
- try {
102
- return (await runCommandWithTimeout(["git", "--version"], { timeoutMs: 2e3 })).code === 0;
103
- } catch {
104
- return false;
105
- }
114
+ if (gitAvailabilityPromise) return gitAvailabilityPromise;
115
+ gitAvailabilityPromise = (async () => {
116
+ try {
117
+ return (await runCommandWithTimeout(["git", "--version"], { timeoutMs: 2e3 })).code === 0;
118
+ } catch {
119
+ return false;
120
+ }
121
+ })();
122
+ return gitAvailabilityPromise;
106
123
  }
107
124
  async function ensureGitRepo(dir, isBrandNewWorkspace) {
108
125
  if (!isBrandNewWorkspace) return;
@@ -1,5 +1,5 @@
1
1
  import { s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-rb94mUrR.js";
2
- import { F as pathExists, R as resolveUserPath, t as runCommandWithTimeout } from "./exec-Bas1hoSJ.js";
2
+ import { F as pathExists, R as resolveUserPath, t as runCommandWithTimeout } from "./exec-EKUaAU91.js";
3
3
  import path from "node:path";
4
4
  import fs from "node:fs";
5
5
  import os from "node:os";
@@ -217,6 +217,10 @@ function findPackageRootSync(startDir, maxDepth = 12) {
217
217
  function candidateDirsFromArgv1(argv1) {
218
218
  const normalized = path.resolve(argv1);
219
219
  const candidates = [path.dirname(normalized)];
220
+ try {
221
+ const resolved = fs.realpathSync(normalized);
222
+ if (resolved !== normalized) candidates.push(path.dirname(resolved));
223
+ } catch {}
220
224
  const parts = normalized.split(path.sep);
221
225
  const binIndex = parts.lastIndexOf(".bin");
222
226
  if (binIndex > 0 && parts[binIndex - 1] === "node_modules") {
@@ -303,6 +307,8 @@ const DEFAULT_HEARTBEAT_FILENAME = "HEARTBEAT.md";
303
307
  const DEFAULT_BOOTSTRAP_FILENAME = "BOOTSTRAP.md";
304
308
  const DEFAULT_MEMORY_FILENAME = "MEMORY.md";
305
309
  const DEFAULT_MEMORY_ALT_FILENAME = "memory.md";
310
+ const workspaceTemplateCache = /* @__PURE__ */ new Map();
311
+ let gitAvailabilityPromise = null;
306
312
  function stripFrontMatter(content) {
307
313
  if (!content.startsWith("---")) return content;
308
314
  const endIndex = content.indexOf("\n---", 3);
@@ -313,12 +319,23 @@ function stripFrontMatter(content) {
313
319
  return trimmed;
314
320
  }
315
321
  async function loadTemplate(name) {
316
- const templateDir = await resolveWorkspaceTemplateDir();
317
- const templatePath = path.join(templateDir, name);
322
+ const cached = workspaceTemplateCache.get(name);
323
+ if (cached) return cached;
324
+ const pending = (async () => {
325
+ const templateDir = await resolveWorkspaceTemplateDir();
326
+ const templatePath = path.join(templateDir, name);
327
+ try {
328
+ return stripFrontMatter(await fs$1.readFile(templatePath, "utf-8"));
329
+ } catch {
330
+ throw new Error(`Missing workspace template: ${name} (${templatePath}). Ensure docs/reference/templates are packaged.`);
331
+ }
332
+ })();
333
+ workspaceTemplateCache.set(name, pending);
318
334
  try {
319
- return stripFrontMatter(await fs$1.readFile(templatePath, "utf-8"));
320
- } catch {
321
- throw new Error(`Missing workspace template: ${name} (${templatePath}). Ensure docs/reference/templates are packaged.`);
335
+ return await pending;
336
+ } catch (error) {
337
+ workspaceTemplateCache.delete(name);
338
+ throw error;
322
339
  }
323
340
  }
324
341
  async function writeFileIfMissing(filePath, content) {
@@ -340,11 +357,15 @@ async function hasGitRepo(dir) {
340
357
  }
341
358
  }
342
359
  async function isGitAvailable() {
343
- try {
344
- return (await runCommandWithTimeout(["git", "--version"], { timeoutMs: 2e3 })).code === 0;
345
- } catch {
346
- return false;
347
- }
360
+ if (gitAvailabilityPromise) return gitAvailabilityPromise;
361
+ gitAvailabilityPromise = (async () => {
362
+ try {
363
+ return (await runCommandWithTimeout(["git", "--version"], { timeoutMs: 2e3 })).code === 0;
364
+ } catch {
365
+ return false;
366
+ }
367
+ })();
368
+ return gitAvailabilityPromise;
348
369
  }
349
370
  async function ensureGitRepo(dir, isBrandNewWorkspace) {
350
371
  if (!isBrandNewWorkspace) return;
@@ -0,0 +1,60 @@
1
+ import "./paths-BZtyHNCi.js";
2
+ import "./agent-scope-DASgjz2_.js";
3
+ import { Y as logVerbose, Z as shouldLogVerbose } from "./exec-_PSUrMP8.js";
4
+ import "./pi-embedded-helpers-ZI1UCSRM.js";
5
+ import "./model-auth-BvODRbV0.js";
6
+ import "./config-D8pgDSNo.js";
7
+ import "./github-copilot-token-DatTe1w-.js";
8
+ import "./pi-model-discovery-DqgqUyAv.js";
9
+ import "./chrome-n_3rtK2c.js";
10
+ import "./paths-SFzVNGbc.js";
11
+ import "./image-bodq5cUH.js";
12
+ import "./redact-BrXLgslJ.js";
13
+ import "./fetch-Dm-nCwa_.js";
14
+ import { a as runCapability, l as isAudioAttachment, n as createMediaAttachmentCache, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-B7CKBC80.js";
15
+
16
+ //#region src/media-understanding/audio-preflight.ts
17
+ /**
18
+ * Transcribes the first audio attachment BEFORE mention checking.
19
+ * This allows voice notes to be processed in group chats with requireMention: true.
20
+ * Returns the transcript or undefined if transcription fails or no audio is found.
21
+ */
22
+ async function transcribeFirstAudio(params) {
23
+ const { ctx, cfg } = params;
24
+ const audioConfig = cfg.tools?.media?.audio;
25
+ if (!audioConfig || audioConfig.enabled === false) return;
26
+ const attachments = normalizeMediaAttachments(ctx);
27
+ if (!attachments || attachments.length === 0) return;
28
+ const firstAudio = attachments.find((att) => att && isAudioAttachment(att) && !att.alreadyTranscribed);
29
+ if (!firstAudio) return;
30
+ if (shouldLogVerbose()) logVerbose(`audio-preflight: transcribing attachment ${firstAudio.index} for mention check`);
31
+ const providerRegistry = buildProviderRegistry(params.providers);
32
+ const cache = createMediaAttachmentCache(attachments);
33
+ try {
34
+ const result = await runCapability({
35
+ capability: "audio",
36
+ cfg,
37
+ ctx,
38
+ attachments: cache,
39
+ media: attachments,
40
+ agentDir: params.agentDir,
41
+ providerRegistry,
42
+ config: audioConfig,
43
+ activeModel: params.activeModel
44
+ });
45
+ if (!result || result.outputs.length === 0) return;
46
+ const audioOutput = result.outputs.find((output) => output.kind === "audio.transcription");
47
+ if (!audioOutput || !audioOutput.text) return;
48
+ firstAudio.alreadyTranscribed = true;
49
+ if (shouldLogVerbose()) logVerbose(`audio-preflight: transcribed ${audioOutput.text.length} chars from attachment ${firstAudio.index}`);
50
+ return audioOutput.text;
51
+ } catch (err) {
52
+ if (shouldLogVerbose()) logVerbose(`audio-preflight: transcription failed: ${String(err)}`);
53
+ return;
54
+ } finally {
55
+ await cache.cleanup();
56
+ }
57
+ }
58
+
59
+ //#endregion
60
+ export { transcribeFirstAudio };
@@ -0,0 +1,60 @@
1
+ import "./paths-rb94mUrR.js";
2
+ import "./agent-scope-okUOVjE5.js";
3
+ import { J as logVerbose, X as shouldLogVerbose } from "./exec-EKUaAU91.js";
4
+ import "./model-selection-vC82fEiP.js";
5
+ import "./github-copilot-token-c9Igt3ZH.js";
6
+ import "./pi-embedded-helpers-D0mqOwwq.js";
7
+ import "./config-7NCznPmF.js";
8
+ import "./pi-model-discovery-EhM2JAQo.js";
9
+ import "./chrome-Bx24uq7B.js";
10
+ import "./paths-DWYi0R_2.js";
11
+ import "./image-BaJKrmCs.js";
12
+ import "./redact-BIMJ3ntQ.js";
13
+ import "./fetch-Bz1WxfzV.js";
14
+ import { a as runCapability, l as isAudioAttachment, n as createMediaAttachmentCache, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-Bv0BmJPF.js";
15
+
16
+ //#region src/media-understanding/audio-preflight.ts
17
+ /**
18
+ * Transcribes the first audio attachment BEFORE mention checking.
19
+ * This allows voice notes to be processed in group chats with requireMention: true.
20
+ * Returns the transcript or undefined if transcription fails or no audio is found.
21
+ */
22
+ async function transcribeFirstAudio(params) {
23
+ const { ctx, cfg } = params;
24
+ const audioConfig = cfg.tools?.media?.audio;
25
+ if (!audioConfig || audioConfig.enabled === false) return;
26
+ const attachments = normalizeMediaAttachments(ctx);
27
+ if (!attachments || attachments.length === 0) return;
28
+ const firstAudio = attachments.find((att) => att && isAudioAttachment(att) && !att.alreadyTranscribed);
29
+ if (!firstAudio) return;
30
+ if (shouldLogVerbose()) logVerbose(`audio-preflight: transcribing attachment ${firstAudio.index} for mention check`);
31
+ const providerRegistry = buildProviderRegistry(params.providers);
32
+ const cache = createMediaAttachmentCache(attachments);
33
+ try {
34
+ const result = await runCapability({
35
+ capability: "audio",
36
+ cfg,
37
+ ctx,
38
+ attachments: cache,
39
+ media: attachments,
40
+ agentDir: params.agentDir,
41
+ providerRegistry,
42
+ config: audioConfig,
43
+ activeModel: params.activeModel
44
+ });
45
+ if (!result || result.outputs.length === 0) return;
46
+ const audioOutput = result.outputs.find((output) => output.kind === "audio.transcription");
47
+ if (!audioOutput || !audioOutput.text) return;
48
+ firstAudio.alreadyTranscribed = true;
49
+ if (shouldLogVerbose()) logVerbose(`audio-preflight: transcribed ${audioOutput.text.length} chars from attachment ${firstAudio.index}`);
50
+ return audioOutput.text;
51
+ } catch (err) {
52
+ if (shouldLogVerbose()) logVerbose(`audio-preflight: transcription failed: ${String(err)}`);
53
+ return;
54
+ } finally {
55
+ await cache.cleanup();
56
+ }
57
+ }
58
+
59
+ //#endregion
60
+ export { transcribeFirstAudio };
@@ -0,0 +1,71 @@
1
+ import { S as logVerbose, T as shouldLogVerbose } from "./entry.js";
2
+ import "./auth-profiles-Cp9MtUdM.js";
3
+ import "./utils-BLJAc3ZV.js";
4
+ import "./exec-DqZFMawz.js";
5
+ import "./agent-scope-Bkr9fZtl.js";
6
+ import "./github-copilot-token-C9W4SY9o.js";
7
+ import "./pi-model-discovery-EhM2JAQo.js";
8
+ import "./config-B8v0zg48.js";
9
+ import "./manifest-registry-CVsqjgX0.js";
10
+ import "./server-context-FwqBRH3K.js";
11
+ import "./chrome--Fe8F5Kf.js";
12
+ import "./message-channel-DWcu72r7.js";
13
+ import "./plugins-CxrdL_IZ.js";
14
+ import "./logging-D-Jq2wIo.js";
15
+ import "./accounts-Bvh0DFxS.js";
16
+ import "./paths-BZK4Ct0I.js";
17
+ import "./redact-UvkXqguc.js";
18
+ import "./routes-CaCvio4Q.js";
19
+ import "./pi-embedded-helpers-DpJb0kUk.js";
20
+ import "./fetch-wuOZDzdT.js";
21
+ import "./sandbox-DNHDwHw8.js";
22
+ import "./skills-CE7by2IF.js";
23
+ import "./image-D-5pUELC.js";
24
+ import "./tool-display-DbdMQFZx.js";
25
+ import { a as runCapability, n as createMediaAttachmentCache, o as isAudioAttachment, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-BEy5ZGFv.js";
26
+
27
+ //#region src/media-understanding/audio-preflight.ts
28
+ /**
29
+ * Transcribes the first audio attachment BEFORE mention checking.
30
+ * This allows voice notes to be processed in group chats with requireMention: true.
31
+ * Returns the transcript or undefined if transcription fails or no audio is found.
32
+ */
33
+ async function transcribeFirstAudio(params) {
34
+ const { ctx, cfg } = params;
35
+ const audioConfig = cfg.tools?.media?.audio;
36
+ if (!audioConfig || audioConfig.enabled === false) return;
37
+ const attachments = normalizeMediaAttachments(ctx);
38
+ if (!attachments || attachments.length === 0) return;
39
+ const firstAudio = attachments.find((att) => att && isAudioAttachment(att) && !att.alreadyTranscribed);
40
+ if (!firstAudio) return;
41
+ if (shouldLogVerbose()) logVerbose(`audio-preflight: transcribing attachment ${firstAudio.index} for mention check`);
42
+ const providerRegistry = buildProviderRegistry(params.providers);
43
+ const cache = createMediaAttachmentCache(attachments);
44
+ try {
45
+ const result = await runCapability({
46
+ capability: "audio",
47
+ cfg,
48
+ ctx,
49
+ attachments: cache,
50
+ media: attachments,
51
+ agentDir: params.agentDir,
52
+ providerRegistry,
53
+ config: audioConfig,
54
+ activeModel: params.activeModel
55
+ });
56
+ if (!result || result.outputs.length === 0) return;
57
+ const audioOutput = result.outputs.find((output) => output.kind === "audio.transcription");
58
+ if (!audioOutput || !audioOutput.text) return;
59
+ firstAudio.alreadyTranscribed = true;
60
+ if (shouldLogVerbose()) logVerbose(`audio-preflight: transcribed ${audioOutput.text.length} chars from attachment ${firstAudio.index}`);
61
+ return audioOutput.text;
62
+ } catch (err) {
63
+ if (shouldLogVerbose()) logVerbose(`audio-preflight: transcription failed: ${String(err)}`);
64
+ return;
65
+ } finally {
66
+ await cache.cleanup();
67
+ }
68
+ }
69
+
70
+ //#endregion
71
+ export { transcribeFirstAudio };
@@ -0,0 +1,74 @@
1
+ import "./paths-DVBShlw6.js";
2
+ import { A as logVerbose, N as shouldLogVerbose } from "./subsystem-DHfJG4gk.js";
3
+ import "./utils-BtIMES3N.js";
4
+ import "./pi-embedded-helpers-BrUBxrE2.js";
5
+ import "./exec-BPQSKwGa.js";
6
+ import "./agent-scope-GYIs5dyU.js";
7
+ import "./model-selection-B53OvWCf.js";
8
+ import "./github-copilot-token-CiF5Iyi2.js";
9
+ import "./boolean-BgXe2hyu.js";
10
+ import "./env-BUuSkE19.js";
11
+ import "./config-CeWMHOiQ.js";
12
+ import "./manifest-registry-jeAPx6AW.js";
13
+ import "./plugins-CTjLu-z-.js";
14
+ import "./sandbox-BAChxjC5.js";
15
+ import { a as runCapability, l as isAudioAttachment, n as createMediaAttachmentCache, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-ChqVEgPx.js";
16
+ import "./image-TvL5YI_W.js";
17
+ import "./pi-model-discovery-EwKVHlZB.js";
18
+ import "./chrome-BWeMtFGf.js";
19
+ import "./skills-Dz15dAM4.js";
20
+ import "./routes-Cpfxk96k.js";
21
+ import "./server-context-RY7lRaxl.js";
22
+ import "./message-channel-CTtrEkmW.js";
23
+ import "./logging-fywhKCmE.js";
24
+ import "./accounts-54zZMYCo.js";
25
+ import "./paths-DdKf4lHp.js";
26
+ import "./redact-BRsnXqwD.js";
27
+ import "./tool-display-kpW5Hg2z.js";
28
+ import "./fetch-D2O8s8I1.js";
29
+
30
+ //#region src/media-understanding/audio-preflight.ts
31
+ /**
32
+ * Transcribes the first audio attachment BEFORE mention checking.
33
+ * This allows voice notes to be processed in group chats with requireMention: true.
34
+ * Returns the transcript or undefined if transcription fails or no audio is found.
35
+ */
36
+ async function transcribeFirstAudio(params) {
37
+ const { ctx, cfg } = params;
38
+ const audioConfig = cfg.tools?.media?.audio;
39
+ if (!audioConfig || audioConfig.enabled === false) return;
40
+ const attachments = normalizeMediaAttachments(ctx);
41
+ if (!attachments || attachments.length === 0) return;
42
+ const firstAudio = attachments.find((att) => att && isAudioAttachment(att) && !att.alreadyTranscribed);
43
+ if (!firstAudio) return;
44
+ if (shouldLogVerbose()) logVerbose(`audio-preflight: transcribing attachment ${firstAudio.index} for mention check`);
45
+ const providerRegistry = buildProviderRegistry(params.providers);
46
+ const cache = createMediaAttachmentCache(attachments);
47
+ try {
48
+ const result = await runCapability({
49
+ capability: "audio",
50
+ cfg,
51
+ ctx,
52
+ attachments: cache,
53
+ media: attachments,
54
+ agentDir: params.agentDir,
55
+ providerRegistry,
56
+ config: audioConfig,
57
+ activeModel: params.activeModel
58
+ });
59
+ if (!result || result.outputs.length === 0) return;
60
+ const audioOutput = result.outputs.find((output) => output.kind === "audio.transcription");
61
+ if (!audioOutput || !audioOutput.text) return;
62
+ firstAudio.alreadyTranscribed = true;
63
+ if (shouldLogVerbose()) logVerbose(`audio-preflight: transcribed ${audioOutput.text.length} chars from attachment ${firstAudio.index}`);
64
+ return audioOutput.text;
65
+ } catch (err) {
66
+ if (shouldLogVerbose()) logVerbose(`audio-preflight: transcription failed: ${String(err)}`);
67
+ return;
68
+ } finally {
69
+ await cache.cleanup();
70
+ }
71
+ }
72
+
73
+ //#endregion
74
+ export { transcribeFirstAudio };