@guadskill/openclaw-proxy 2026.2.4

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 (1732) hide show
  1. package/CHANGELOG.md +1573 -0
  2. package/LICENSE +21 -0
  3. package/README-header.png +0 -0
  4. package/README.md +544 -0
  5. package/assets/avatar-placeholder.svg +19 -0
  6. package/assets/chrome-extension/README.md +22 -0
  7. package/assets/chrome-extension/background.js +438 -0
  8. package/assets/chrome-extension/icons/icon128.png +0 -0
  9. package/assets/chrome-extension/icons/icon16.png +0 -0
  10. package/assets/chrome-extension/icons/icon32.png +0 -0
  11. package/assets/chrome-extension/icons/icon48.png +0 -0
  12. package/assets/chrome-extension/manifest.json +25 -0
  13. package/assets/chrome-extension/options.html +196 -0
  14. package/assets/chrome-extension/options.js +59 -0
  15. package/assets/dmg-background-small.png +0 -0
  16. package/assets/dmg-background.png +0 -0
  17. package/dist/accounts-ClnuDahN.js +250 -0
  18. package/dist/accounts-DzBgAM3C.js +251 -0
  19. package/dist/acp-cli-Bslzkc7p.js +926 -0
  20. package/dist/acp-cli-BzMBTZq1.js +923 -0
  21. package/dist/agent-B20ZAlPq.js +700 -0
  22. package/dist/agent-C6oB1C7Q.js +700 -0
  23. package/dist/agent-scope-BbT4OG2N.js +545 -0
  24. package/dist/agent-scope-C_O6Vpl0.js +545 -0
  25. package/dist/agent-scope-Csu2B6AM.js +606 -0
  26. package/dist/archive-BRhJgzXf.js +85 -0
  27. package/dist/archive-ccN9aDgq.js +85 -0
  28. package/dist/audit-DM36chrb.js +1852 -0
  29. package/dist/audit-FONb40op.js +1852 -0
  30. package/dist/auth-BpEOJZNM.js +192 -0
  31. package/dist/auth-health-TxjASTBn.js +149 -0
  32. package/dist/auth-health-iSVoRZJo.js +149 -0
  33. package/dist/auth-nnRYiqpH.js +192 -0
  34. package/dist/auth-profiles-CvXmOJ7i.js +2937 -0
  35. package/dist/boolean-Wzu0-e0P.js +30 -0
  36. package/dist/brew-DyBGNK8A.js +46 -0
  37. package/dist/brew-pE1HlyB8.js +46 -0
  38. package/dist/build-info.json +5 -0
  39. package/dist/call-8orFRlzD.js +278 -0
  40. package/dist/call-HmkY2Og0.js +278 -0
  41. package/dist/canvas-host/a2ui/.bundle.hash +1 -0
  42. package/dist/canvas-host/a2ui/a2ui.bundle.js +17780 -0
  43. package/dist/canvas-host/a2ui/index.html +307 -0
  44. package/dist/channel-options-BxaoxlLY.js +32 -0
  45. package/dist/channel-options-CGuly8Kg.js +62 -0
  46. package/dist/channel-selection-BWwIiYxA.js +51 -0
  47. package/dist/channel-selection-DnMbJBwK.js +51 -0
  48. package/dist/channel-summary-BvUzkAtV.js +1154 -0
  49. package/dist/channel-summary-CJK-YnpL.js +1154 -0
  50. package/dist/channels-cli-CM1kVis1.js +1412 -0
  51. package/dist/channels-cli-CTlZwvwc.js +1414 -0
  52. package/dist/channels-status-issues-DfeplQer.js +18 -0
  53. package/dist/channels-status-issues-ssvYlSeV.js +18 -0
  54. package/dist/chrome-B3IuUad-.js +1953 -0
  55. package/dist/chrome-BZ9K48w9.js +1973 -0
  56. package/dist/clack-prompter-B9yLhyOm.js +92 -0
  57. package/dist/clack-prompter-DL4_d-3B.js +92 -0
  58. package/dist/cli/daemon-cli.js +2 -0
  59. package/dist/cli-DO2o1szx.js +89 -0
  60. package/dist/cli-DsHfoV34.js +86 -0
  61. package/dist/cli-utils-BkRQdAoC.js +43 -0
  62. package/dist/cli-utils-D2NrEoOM.js +43 -0
  63. package/dist/client-B6l_NSED.js +1609 -0
  64. package/dist/client-CBaY9GLK.js +1609 -0
  65. package/dist/command-format-CFzL448l.js +52 -0
  66. package/dist/command-format-DELazozB.js +52 -0
  67. package/dist/command-format-ayFsmwwz.js +38 -0
  68. package/dist/command-options-DQONlSAJ.js +33 -0
  69. package/dist/commands-BfzmpQgG.js +229 -0
  70. package/dist/completion-cli-DJFm8nL6.js +434 -0
  71. package/dist/completion-cli-iU8FQxNX.js +773 -0
  72. package/dist/config-BNDgPGKU.js +4898 -0
  73. package/dist/config-Cl0qV63v.js +5640 -0
  74. package/dist/config-guard-DumiN0l-.js +5752 -0
  75. package/dist/config-hfzHFLcB.js +4899 -0
  76. package/dist/configure-BE0S7d0e.js +895 -0
  77. package/dist/configure-CNtWsnCY.js +896 -0
  78. package/dist/constants-BwSEqbCV.js +65 -0
  79. package/dist/constants-D1op9uGI.js +65 -0
  80. package/dist/control-service-B08kuW3q.js +61 -0
  81. package/dist/control-service-DB9k683J.js +61 -0
  82. package/dist/control-ui/apple-touch-icon.png +0 -0
  83. package/dist/control-ui/assets/index-BoXosYY6.css +1 -0
  84. package/dist/control-ui/assets/index-CTtQ0yWI.js +4585 -0
  85. package/dist/control-ui/assets/index-CTtQ0yWI.js.map +1 -0
  86. package/dist/control-ui/favicon-32.png +0 -0
  87. package/dist/control-ui/favicon.ico +0 -0
  88. package/dist/control-ui/favicon.svg +22 -0
  89. package/dist/control-ui/index.html +17 -0
  90. package/dist/cron-cli-B-TPicN5.js +453 -0
  91. package/dist/cron-cli-KBjJ7UC0.js +456 -0
  92. package/dist/daemon-cli-2YS_h4NB.js +761 -0
  93. package/dist/daemon-cli-B3wzJJRD.js +760 -0
  94. package/dist/daemon-runtime-Cpz5kXBh.js +460 -0
  95. package/dist/daemon-runtime-DCL2NSog.js +460 -0
  96. package/dist/deliver-B2kB-lvv.js +2557 -0
  97. package/dist/deliver-BJ16ioKR.js +2545 -0
  98. package/dist/deliver-CTAU2Lsl.js +2545 -0
  99. package/dist/deps-CfB_dTjF.js +27 -0
  100. package/dist/deps-Csz0wi5R.js +27 -0
  101. package/dist/devices-cli-CVi-8CzD.js +207 -0
  102. package/dist/devices-cli-jOQsjZDH.js +204 -0
  103. package/dist/directory-cli-Deru7wk3.js +247 -0
  104. package/dist/directory-cli-bNH5-BVN.js +244 -0
  105. package/dist/dispatcher-TNQCvlrC.js +160 -0
  106. package/dist/dns-cli-C2unpGnO.js +201 -0
  107. package/dist/dns-cli-CICc3UCV.js +198 -0
  108. package/dist/docs-cli-D6jhnbl-.js +159 -0
  109. package/dist/docs-cli-DV4dtZuW.js +161 -0
  110. package/dist/doctor-BdMh4FQ7.js +2586 -0
  111. package/dist/doctor-Dac1oots.js +2584 -0
  112. package/dist/entry.js +1330 -0
  113. package/dist/env-l7QVNj6j.js +32 -0
  114. package/dist/errors-CMCg46fK.js +1952 -0
  115. package/dist/exec-B8JKbXKW.js +246 -0
  116. package/dist/exec-BMnoMcZW.js +1099 -0
  117. package/dist/exec-HEWTMJ7j.js +246 -0
  118. package/dist/exec-approvals-BvZBpCaF.js +1043 -0
  119. package/dist/exec-approvals-BxNysSke.js +1043 -0
  120. package/dist/exec-approvals-cli-CgMFSqMo.js +385 -0
  121. package/dist/exec-approvals-cli-Dtiu-o66.js +388 -0
  122. package/dist/extensionAPI.js +67199 -0
  123. package/dist/fetch-CcCleeU3.js +44 -0
  124. package/dist/fetch-a2WIvOW7.js +44 -0
  125. package/dist/format-BgR4sIly.js +34 -0
  126. package/dist/format-tlvh4-cQ.js +34 -0
  127. package/dist/gateway-cli-CW6pFvMo.js +16934 -0
  128. package/dist/gateway-cli-CaPPMciY.js +16935 -0
  129. package/dist/gateway-rpc-FzvIp9rt.js +28 -0
  130. package/dist/gateway-rpc-St1jAOcL.js +28 -0
  131. package/dist/github-copilot-auth-Lsi_w3ly.js +1189 -0
  132. package/dist/github-copilot-auth-w5X7lOri.js +1189 -0
  133. package/dist/github-copilot-token-B3SA95yo.js +103 -0
  134. package/dist/github-copilot-token-C8XFYz0i.js +103 -0
  135. package/dist/github-copilot-token-CnxakiSC.js +103 -0
  136. package/dist/gmail-setup-utils-DaIfgRFK.js +428 -0
  137. package/dist/gmail-setup-utils-DgiUqBKC.js +428 -0
  138. package/dist/health-format-_ZnCrN3w.js +1211 -0
  139. package/dist/health-format-u34MPaDj.js +1210 -0
  140. package/dist/help-format-BlaVZH29.js +17 -0
  141. package/dist/help-format-CfZ94KRN.js +17 -0
  142. package/dist/helpers-BiyEksaK.js +25 -0
  143. package/dist/helpers-C12w9zxf.js +10 -0
  144. package/dist/helpers-CbjwQEou.js +25 -0
  145. package/dist/helpers-D37DRpCZ.js +10 -0
  146. package/dist/hooks/bundled/boot-md/HOOK.md +19 -0
  147. package/dist/hooks/bundled/command-logger/HOOK.md +122 -0
  148. package/dist/hooks/bundled/session-memory/HOOK.md +109 -0
  149. package/dist/hooks/bundled/soul-evil/HOOK.md +71 -0
  150. package/dist/hooks-cli-B6KpLq7n.js +1058 -0
  151. package/dist/hooks-cli-BEcZ1djY.js +1061 -0
  152. package/dist/hooks-status-Bz2z9WxH.js +443 -0
  153. package/dist/hooks-status-JZCCkoAJ.js +443 -0
  154. package/dist/image-4YNIgY-_.js +1421 -0
  155. package/dist/image-DHat2qLh.js +629 -0
  156. package/dist/image-DzJBIV0I.js +629 -0
  157. package/dist/index.js +5936 -0
  158. package/dist/installs-C0Xjvfhf.js +425 -0
  159. package/dist/installs-DOAiYAqW.js +425 -0
  160. package/dist/is-main-DMohpoM9.js +25 -0
  161. package/dist/is-main-PYGa3tDA.js +25 -0
  162. package/dist/links-B4nk2iDf.js +15 -0
  163. package/dist/links-B5pRdmo1.js +15 -0
  164. package/dist/loader-BL29rrWH.js +64272 -0
  165. package/dist/logging-6zx7VGt-.js +15 -0
  166. package/dist/logging-BuJAMSjm.js +15 -0
  167. package/dist/logging-CY-Q5cwf.js +1 -0
  168. package/dist/logging-pqyrk15z.js +1 -0
  169. package/dist/login-qr-BxE22mru.js +475 -0
  170. package/dist/login-qr-D1apt7XW.js +478 -0
  171. package/dist/login-qr-EVccyUKT.js +478 -0
  172. package/dist/logs-cli-ByJNFJRZ.js +230 -0
  173. package/dist/logs-cli-C3XkZdMo.js +227 -0
  174. package/dist/manager-C4ILl-d3.js +2870 -0
  175. package/dist/manager-CAjzs8zZ.js +2870 -0
  176. package/dist/manager-DSKsNxD0.js +2872 -0
  177. package/dist/manifest-registry-Bwjq9Iev.js +668 -0
  178. package/dist/manifest-registry-D2Yntqcb.js +668 -0
  179. package/dist/message-channel-B8sq-ATS.js +110 -0
  180. package/dist/message-channel-CQ6DgRUw.js +110 -0
  181. package/dist/model-selection-BlR8RpVg.js +2939 -0
  182. package/dist/model-selection-mzTqrNoj.js +2691 -0
  183. package/dist/models-cli-BCmJaSiT.js +2544 -0
  184. package/dist/models-cli-BpDnCgsE.js +2541 -0
  185. package/dist/net-Cb7aIE0d.js +137 -0
  186. package/dist/net-DKJPqXuW.js +137 -0
  187. package/dist/node-cli-B8YjPAwG.js +1456 -0
  188. package/dist/node-cli-CEhBhWXG.js +1459 -0
  189. package/dist/node-service-C0voAvkx.js +67 -0
  190. package/dist/node-service-Cl1tk1LE.js +67 -0
  191. package/dist/nodes-cli-2ED0s8IX.js +1207 -0
  192. package/dist/nodes-cli-Br0tbTmz.js +1210 -0
  193. package/dist/nodes-screen-D3Sc9uSV.js +157 -0
  194. package/dist/nodes-screen-DtXuFQdk.js +157 -0
  195. package/dist/note-DLYOWdeB.js +73 -0
  196. package/dist/note-_C44YfAQ.js +73 -0
  197. package/dist/onboard-channels-CHz0pcOF.js +670 -0
  198. package/dist/onboard-channels-ChUCLsjA.js +670 -0
  199. package/dist/onboard-skills-D9ClIyDs.js +3546 -0
  200. package/dist/onboard-skills-inA2uKre.js +3546 -0
  201. package/dist/onboarding-B8Tw755f.js +3271 -0
  202. package/dist/openclaw-root-9ILYSmJ9.js +84 -0
  203. package/dist/openclaw-root-Cvotktkd.js +84 -0
  204. package/dist/pairing-cli-BDQoD24i.js +117 -0
  205. package/dist/pairing-cli-DZTystii.js +114 -0
  206. package/dist/pairing-labels-EjeFHyx0.js +9 -0
  207. package/dist/pairing-labels-mgB0IlYv.js +9 -0
  208. package/dist/pairing-store-9odwlfpf.js +391 -0
  209. package/dist/pairing-store-DZhxkFBw.js +391 -0
  210. package/dist/parse-DbH9TEJ1.js +23 -0
  211. package/dist/parse-DqAvJRIf.js +23 -0
  212. package/dist/parse-log-line-BxDgv4Uo.js +44 -0
  213. package/dist/parse-log-line-Dg-RjsyO.js +44 -0
  214. package/dist/parse-timeout-BndZ8KMO.js +16 -0
  215. package/dist/parse-timeout-DFSPLxpY.js +16 -0
  216. package/dist/path-env-D0zha4n7.js +77 -0
  217. package/dist/path-env-DEj4CiFN.js +77 -0
  218. package/dist/paths-B-q1nXdY.js +43 -0
  219. package/dist/paths-B1kfl4h5.js +164 -0
  220. package/dist/paths-B4kigINg.js +40 -0
  221. package/dist/paths-BlKGresh.js +43 -0
  222. package/dist/paths-scjhy7N2.js +180 -0
  223. package/dist/pi-embedded-helpers-Bc28x5wO.js +1298 -0
  224. package/dist/pi-embedded-helpers-D6XTIi2t.js +1298 -0
  225. package/dist/pi-embedded-helpers-qgoWGXt5.js +8475 -0
  226. package/dist/pi-model-discovery-B6CsmK6Y.js +20 -0
  227. package/dist/pi-model-discovery-DsRqYJLy.js +20 -0
  228. package/dist/pi-model-discovery-EhM2JAQo.js +20 -0
  229. package/dist/pi-tools.policy-BM1uYSYK.js +229 -0
  230. package/dist/plugin-auto-enable-CT0GLtRB.js +461 -0
  231. package/dist/plugin-auto-enable-Gq-Hco1V.js +461 -0
  232. package/dist/plugin-sdk/index.d.ts +8854 -0
  233. package/dist/plugin-sdk/index.js +24301 -0
  234. package/dist/plugin-sdk/pi-model-discovery-Dw3A6oXH.js +37 -0
  235. package/dist/plugins-C3Bm-HQV.js +494 -0
  236. package/dist/plugins-QJjTXliB.js +495 -0
  237. package/dist/plugins-cli-CD3qOzIc.js +441 -0
  238. package/dist/plugins-cli-CI0jwJ23.js +444 -0
  239. package/dist/ports-DsQlpea1.js +96 -0
  240. package/dist/program-yfwD40IH.js +192 -0
  241. package/dist/progress-Bcjniu7m.js +133 -0
  242. package/dist/progress-xpLtQsNY.js +133 -0
  243. package/dist/prompt-style-CFsleyxV.js +9 -0
  244. package/dist/prompt-style-vzh0MGHs.js +9 -0
  245. package/dist/prompts-CudpZgTI.js +10 -0
  246. package/dist/prompts-Drly230e.js +10 -0
  247. package/dist/proxy-fetch-Y5wGyQ3j.js +53 -0
  248. package/dist/proxy-fetch-_AVgCPth.js +53 -0
  249. package/dist/pw-ai-08F3GD-3.js +1649 -0
  250. package/dist/pw-ai-BiJd1PM1.js +1651 -0
  251. package/dist/pw-ai-tNPuRNn3.js +1649 -0
  252. package/dist/qmd-manager-BqkNpRLl.js +617 -0
  253. package/dist/qmd-manager-CF52nuBg.js +615 -0
  254. package/dist/qmd-manager-DQrW_IJO.js +616 -0
  255. package/dist/redact-BIMJ3ntQ.js +94 -0
  256. package/dist/redact-Bt-krp_b.js +97 -0
  257. package/dist/redact-KzWHRS5J.js +97 -0
  258. package/dist/register.subclis-Bh09soRX.js +348 -0
  259. package/dist/reply-Bd8FvjsB.js +64275 -0
  260. package/dist/restart-sentinel-0jZiP6wa.js +65 -0
  261. package/dist/restart-sentinel-BfNkhRcY.js +65 -0
  262. package/dist/rolldown-runtime-Cbj13DAv.js +20 -0
  263. package/dist/routes-BM_KybLk.js +2410 -0
  264. package/dist/routes-DW4Wu2jw.js +2410 -0
  265. package/dist/rpc-DCfTOgsV.js +95 -0
  266. package/dist/rpc-xptVI4aX.js +95 -0
  267. package/dist/run-main-BDjv9pg0.js +196 -0
  268. package/dist/runtime-guard-3G4IRfJ2.js +60 -0
  269. package/dist/runtime-guard-83TpoNmK.js +60 -0
  270. package/dist/sandbox-CUP2w5rn.js +2943 -0
  271. package/dist/sandbox-CudnqybF.js +2944 -0
  272. package/dist/sandbox-cli-BpbWFbKA.js +462 -0
  273. package/dist/sandbox-cli-L_UvQieX.js +459 -0
  274. package/dist/security-cli-BDw18wWm.js +504 -0
  275. package/dist/security-cli-CSheoOJ9.js +507 -0
  276. package/dist/server-context-BFH7HB_M.js +740 -0
  277. package/dist/server-context-cZ1L3VL8.js +740 -0
  278. package/dist/server-node-events-Csw2mwVU.js +215 -0
  279. package/dist/server-node-events-S70f4mOe.js +218 -0
  280. package/dist/service-B1GsXJaa.js +859 -0
  281. package/dist/service-BeVe7-_W.js +859 -0
  282. package/dist/service-audit-CgT8PF6a.js +542 -0
  283. package/dist/service-audit-D2MqRzJ6.js +542 -0
  284. package/dist/shared-BpcIsygQ.js +74 -0
  285. package/dist/shared-C4ID2bDG.js +74 -0
  286. package/dist/shared-D0vX4-Vw.js +150 -0
  287. package/dist/shared-D7q29LDD.js +150 -0
  288. package/dist/skill-scanner-COatt01v.js +255 -0
  289. package/dist/skill-scanner-D75vg4aF.js +255 -0
  290. package/dist/skills-BMyDQ-63.js +693 -0
  291. package/dist/skills-Tky2kCMO.js +694 -0
  292. package/dist/skills-cli-CKs5zc-y.js +287 -0
  293. package/dist/skills-cli-VpE6OBOn.js +290 -0
  294. package/dist/skills-status-C4pCFdXL.js +187 -0
  295. package/dist/skills-status-Ca3rn_Ir.js +187 -0
  296. package/dist/sqlite-BS0q--MG.js +197 -0
  297. package/dist/sqlite-Dnmf3LS7.js +215 -0
  298. package/dist/sqlite-QDf0yuU0.js +215 -0
  299. package/dist/status-BqtiImKF.js +21 -0
  300. package/dist/status-CD2PjMdD.js +21 -0
  301. package/dist/status-CT09OZrt.js +27 -0
  302. package/dist/status-ChVEOKZu.js +3179 -0
  303. package/dist/status-DtvGB1uS.js +27 -0
  304. package/dist/status.update-9fYSKqax.js +79 -0
  305. package/dist/status.update-B7lcxLT1.js +79 -0
  306. package/dist/subsystem-CAq3uyo7.js +834 -0
  307. package/dist/system-cli-CWVJgwZk.js +83 -0
  308. package/dist/system-cli-zT4ISi7G.js +80 -0
  309. package/dist/systemd-DeSLoJgE.js +438 -0
  310. package/dist/systemd-hints-3-E4ndGf.js +19 -0
  311. package/dist/systemd-hints-Ct78rpa1.js +19 -0
  312. package/dist/systemd-linger-Cd6P7vEV.js +75 -0
  313. package/dist/systemd-linger-DC9yGjen.js +75 -0
  314. package/dist/systemd-x41DoAVw.js +438 -0
  315. package/dist/table-BGYjbJbA.js +279 -0
  316. package/dist/table-DTx1GQy4.js +279 -0
  317. package/dist/tailnet-Bg_vE5qi.js +42 -0
  318. package/dist/tailnet-CrNWlQRJ.js +42 -0
  319. package/dist/tailscale-B6H8NmyN.js +252 -0
  320. package/dist/tailscale-DCnMs7_q.js +225 -0
  321. package/dist/tool-display-BEACy9rK.js +795 -0
  322. package/dist/tool-display-PgbqPY5M.js +795 -0
  323. package/dist/transcript-events-Bv_eRVym.js +17 -0
  324. package/dist/transcript-events-CsB1Saa6.js +17 -0
  325. package/dist/transcript-events-JLH5W4He.js +17 -0
  326. package/dist/tui-CEMsOJ2R.js +2669 -0
  327. package/dist/tui-HBCUFvqd.js +2670 -0
  328. package/dist/tui-cli-BJHaKh4i.js +55 -0
  329. package/dist/tui-cli-CSXxe8zT.js +58 -0
  330. package/dist/update-B4_d8CFN.js +317 -0
  331. package/dist/update-BadBiZRo.js +317 -0
  332. package/dist/update-cli-DUx5iNuh.js +990 -0
  333. package/dist/update-cli-eqUw2bP0.js +988 -0
  334. package/dist/update-runner-C6CdBo-h.js +1310 -0
  335. package/dist/update-runner-zrM-LkXQ.js +1310 -0
  336. package/dist/utils-CKSrBNwq.js +192 -0
  337. package/dist/utils-DX85MiPR.js +188 -0
  338. package/dist/webhooks-cli-C8WVG2ja.js +309 -0
  339. package/dist/webhooks-cli-DkqThM7-.js +312 -0
  340. package/dist/widearea-dns-D9Al4QRv.js +127 -0
  341. package/dist/widearea-dns-DDNQMGyz.js +127 -0
  342. package/dist/ws-3zr8WUwL.js +13 -0
  343. package/dist/ws-log-C7XrTO_G.js +267 -0
  344. package/dist/ws-log-DjH95yNf.js +267 -0
  345. package/dist/ws-lzrgabja.js +13 -0
  346. package/dist/wsl-VVr_6ZkA.js +160 -0
  347. package/docs/.i18n/README.md +31 -0
  348. package/docs/.i18n/glossary.zh-CN.json +210 -0
  349. package/docs/.i18n/zh-CN.tm.jsonl +1329 -0
  350. package/docs/CNAME +1 -0
  351. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  352. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  353. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  354. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  355. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  356. package/docs/assets/openclaw-logo-text-dark.png +0 -0
  357. package/docs/assets/openclaw-logo-text.png +0 -0
  358. package/docs/assets/pixel-lobster.svg +60 -0
  359. package/docs/assets/showcase/agents-ui.jpg +0 -0
  360. package/docs/assets/showcase/bambu-cli.png +0 -0
  361. package/docs/assets/showcase/codexmonitor.png +0 -0
  362. package/docs/assets/showcase/gohome-grafana.png +0 -0
  363. package/docs/assets/showcase/ios-testflight.jpg +0 -0
  364. package/docs/assets/showcase/oura-health.png +0 -0
  365. package/docs/assets/showcase/padel-cli.svg +11 -0
  366. package/docs/assets/showcase/padel-screenshot.jpg +0 -0
  367. package/docs/assets/showcase/papla-tts.jpg +0 -0
  368. package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
  369. package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
  370. package/docs/assets/showcase/roborock-status.svg +13 -0
  371. package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
  372. package/docs/assets/showcase/snag.png +0 -0
  373. package/docs/assets/showcase/tesco-shop.jpg +0 -0
  374. package/docs/assets/showcase/wienerlinien.png +0 -0
  375. package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
  376. package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
  377. package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
  378. package/docs/automation/auth-monitoring.md +44 -0
  379. package/docs/automation/cron-jobs.md +468 -0
  380. package/docs/automation/cron-vs-heartbeat.md +282 -0
  381. package/docs/automation/gmail-pubsub.md +256 -0
  382. package/docs/automation/poll.md +69 -0
  383. package/docs/automation/webhook.md +163 -0
  384. package/docs/bedrock.md +176 -0
  385. package/docs/brave-search.md +41 -0
  386. package/docs/broadcast-groups.md +442 -0
  387. package/docs/channels/bluebubbles.md +338 -0
  388. package/docs/channels/discord.md +476 -0
  389. package/docs/channels/feishu.md +577 -0
  390. package/docs/channels/googlechat.md +250 -0
  391. package/docs/channels/grammy.md +31 -0
  392. package/docs/channels/imessage.md +299 -0
  393. package/docs/channels/index.md +46 -0
  394. package/docs/channels/line.md +186 -0
  395. package/docs/channels/location.md +56 -0
  396. package/docs/channels/matrix.md +233 -0
  397. package/docs/channels/mattermost.md +138 -0
  398. package/docs/channels/msteams.md +768 -0
  399. package/docs/channels/nextcloud-talk.md +136 -0
  400. package/docs/channels/nostr.md +233 -0
  401. package/docs/channels/signal.md +202 -0
  402. package/docs/channels/slack.md +548 -0
  403. package/docs/channels/telegram.md +769 -0
  404. package/docs/channels/tlon.md +132 -0
  405. package/docs/channels/troubleshooting.md +29 -0
  406. package/docs/channels/twitch.md +379 -0
  407. package/docs/channels/whatsapp.md +404 -0
  408. package/docs/channels/zalo.md +189 -0
  409. package/docs/channels/zalouser.md +140 -0
  410. package/docs/cli/acp.md +170 -0
  411. package/docs/cli/agent.md +24 -0
  412. package/docs/cli/agents.md +75 -0
  413. package/docs/cli/approvals.md +50 -0
  414. package/docs/cli/browser.md +107 -0
  415. package/docs/cli/channels.md +79 -0
  416. package/docs/cli/config.md +50 -0
  417. package/docs/cli/configure.md +33 -0
  418. package/docs/cli/cron.md +42 -0
  419. package/docs/cli/dashboard.md +16 -0
  420. package/docs/cli/devices.md +70 -0
  421. package/docs/cli/directory.md +63 -0
  422. package/docs/cli/dns.md +23 -0
  423. package/docs/cli/docs.md +15 -0
  424. package/docs/cli/doctor.md +41 -0
  425. package/docs/cli/gateway.md +202 -0
  426. package/docs/cli/health.md +21 -0
  427. package/docs/cli/hooks.md +304 -0
  428. package/docs/cli/index.md +1031 -0
  429. package/docs/cli/logs.md +24 -0
  430. package/docs/cli/memory.md +45 -0
  431. package/docs/cli/message.md +239 -0
  432. package/docs/cli/models.md +79 -0
  433. package/docs/cli/node.md +112 -0
  434. package/docs/cli/nodes.md +73 -0
  435. package/docs/cli/onboard.md +43 -0
  436. package/docs/cli/pairing.md +21 -0
  437. package/docs/cli/plugins.md +62 -0
  438. package/docs/cli/reset.md +17 -0
  439. package/docs/cli/sandbox.md +152 -0
  440. package/docs/cli/security.md +26 -0
  441. package/docs/cli/sessions.md +16 -0
  442. package/docs/cli/setup.md +29 -0
  443. package/docs/cli/skills.md +26 -0
  444. package/docs/cli/status.md +26 -0
  445. package/docs/cli/system.md +60 -0
  446. package/docs/cli/tui.md +23 -0
  447. package/docs/cli/uninstall.md +17 -0
  448. package/docs/cli/update.md +98 -0
  449. package/docs/cli/voicecall.md +34 -0
  450. package/docs/cli/webhooks.md +25 -0
  451. package/docs/concepts/agent-loop.md +146 -0
  452. package/docs/concepts/agent-workspace.md +233 -0
  453. package/docs/concepts/agent.md +123 -0
  454. package/docs/concepts/architecture.md +129 -0
  455. package/docs/concepts/channel-routing.md +114 -0
  456. package/docs/concepts/compaction.md +61 -0
  457. package/docs/concepts/context.md +161 -0
  458. package/docs/concepts/features.md +53 -0
  459. package/docs/concepts/group-messages.md +84 -0
  460. package/docs/concepts/groups.md +373 -0
  461. package/docs/concepts/markdown-formatting.md +130 -0
  462. package/docs/concepts/memory.md +546 -0
  463. package/docs/concepts/messages.md +154 -0
  464. package/docs/concepts/model-failover.md +149 -0
  465. package/docs/concepts/model-providers.md +316 -0
  466. package/docs/concepts/models.md +208 -0
  467. package/docs/concepts/multi-agent.md +376 -0
  468. package/docs/concepts/oauth.md +145 -0
  469. package/docs/concepts/presence.md +102 -0
  470. package/docs/concepts/queue.md +89 -0
  471. package/docs/concepts/retry.md +69 -0
  472. package/docs/concepts/session-pruning.md +122 -0
  473. package/docs/concepts/session-tool.md +193 -0
  474. package/docs/concepts/session.md +204 -0
  475. package/docs/concepts/sessions.md +10 -0
  476. package/docs/concepts/streaming.md +135 -0
  477. package/docs/concepts/system-prompt.md +115 -0
  478. package/docs/concepts/timezone.md +91 -0
  479. package/docs/concepts/typebox.md +289 -0
  480. package/docs/concepts/typing-indicators.md +68 -0
  481. package/docs/concepts/usage-tracking.md +35 -0
  482. package/docs/date-time.md +128 -0
  483. package/docs/debug/node-issue.md +83 -0
  484. package/docs/debugging.md +162 -0
  485. package/docs/diagnostics/flags.md +91 -0
  486. package/docs/docs.json +1736 -0
  487. package/docs/environment.md +81 -0
  488. package/docs/experiments/onboarding-config-protocol.md +40 -0
  489. package/docs/experiments/plans/cron-add-hardening.md +63 -0
  490. package/docs/experiments/plans/group-policy-hardening.md +40 -0
  491. package/docs/experiments/plans/openresponses-gateway.md +123 -0
  492. package/docs/experiments/proposals/model-config.md +36 -0
  493. package/docs/experiments/research/memory.md +228 -0
  494. package/docs/gateway/authentication.md +145 -0
  495. package/docs/gateway/background-process.md +93 -0
  496. package/docs/gateway/bonjour.md +167 -0
  497. package/docs/gateway/bridge-protocol.md +89 -0
  498. package/docs/gateway/cli-backends.md +225 -0
  499. package/docs/gateway/configuration-examples.md +606 -0
  500. package/docs/gateway/configuration.md +3411 -0
  501. package/docs/gateway/discovery.md +116 -0
  502. package/docs/gateway/doctor.md +282 -0
  503. package/docs/gateway/gateway-lock.md +34 -0
  504. package/docs/gateway/health.md +35 -0
  505. package/docs/gateway/heartbeat.md +362 -0
  506. package/docs/gateway/index.md +328 -0
  507. package/docs/gateway/local-models.md +150 -0
  508. package/docs/gateway/logging.md +113 -0
  509. package/docs/gateway/multiple-gateways.md +112 -0
  510. package/docs/gateway/network-model.md +17 -0
  511. package/docs/gateway/openai-http-api.md +118 -0
  512. package/docs/gateway/openresponses-http-api.md +317 -0
  513. package/docs/gateway/pairing.md +99 -0
  514. package/docs/gateway/protocol.md +221 -0
  515. package/docs/gateway/remote-gateway-readme.md +157 -0
  516. package/docs/gateway/remote.md +129 -0
  517. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +128 -0
  518. package/docs/gateway/sandboxing.md +193 -0
  519. package/docs/gateway/security/formal-verification.md +164 -0
  520. package/docs/gateway/security/index.md +825 -0
  521. package/docs/gateway/tailscale.md +127 -0
  522. package/docs/gateway/tools-invoke-http-api.md +85 -0
  523. package/docs/gateway/troubleshooting.md +767 -0
  524. package/docs/help/faq.md +2829 -0
  525. package/docs/help/index.md +21 -0
  526. package/docs/help/troubleshooting.md +98 -0
  527. package/docs/hooks/soul-evil.md +69 -0
  528. package/docs/hooks.md +913 -0
  529. package/docs/images/feishu-step2-create-app.png +0 -0
  530. package/docs/images/feishu-step3-credentials.png +0 -0
  531. package/docs/images/feishu-step4-permissions.png +0 -0
  532. package/docs/images/feishu-step5-bot-capability.png +0 -0
  533. package/docs/images/feishu-step6-event-subscription.png +0 -0
  534. package/docs/images/groups-flow.svg +52 -0
  535. package/docs/images/mobile-ui-screenshot.png +0 -0
  536. package/docs/index.md +192 -0
  537. package/docs/install/ansible.md +208 -0
  538. package/docs/install/bun.md +59 -0
  539. package/docs/install/development-channels.md +75 -0
  540. package/docs/install/docker.md +567 -0
  541. package/docs/install/exe-dev.md +126 -0
  542. package/docs/install/fly.md +486 -0
  543. package/docs/install/gcp.md +503 -0
  544. package/docs/install/hetzner.md +330 -0
  545. package/docs/install/index.md +187 -0
  546. package/docs/install/installer.md +123 -0
  547. package/docs/install/macos-vm.md +281 -0
  548. package/docs/install/migrating.md +192 -0
  549. package/docs/install/nix.md +96 -0
  550. package/docs/install/node.md +78 -0
  551. package/docs/install/northflank.mdx +53 -0
  552. package/docs/install/railway.mdx +99 -0
  553. package/docs/install/render.mdx +165 -0
  554. package/docs/install/uninstall.md +128 -0
  555. package/docs/install/updating.md +228 -0
  556. package/docs/logging.md +350 -0
  557. package/docs/multi-agent-sandbox-tools.md +395 -0
  558. package/docs/network.md +54 -0
  559. package/docs/nodes/audio.md +114 -0
  560. package/docs/nodes/camera.md +156 -0
  561. package/docs/nodes/images.md +72 -0
  562. package/docs/nodes/index.md +341 -0
  563. package/docs/nodes/location-command.md +113 -0
  564. package/docs/nodes/media-understanding.md +379 -0
  565. package/docs/nodes/talk.md +90 -0
  566. package/docs/nodes/voicewake.md +65 -0
  567. package/docs/perplexity.md +80 -0
  568. package/docs/pi-dev.md +70 -0
  569. package/docs/pi.md +612 -0
  570. package/docs/platforms/android.md +148 -0
  571. package/docs/platforms/digitalocean.md +262 -0
  572. package/docs/platforms/index.md +53 -0
  573. package/docs/platforms/ios.md +107 -0
  574. package/docs/platforms/linux.md +94 -0
  575. package/docs/platforms/mac/bundled-gateway.md +73 -0
  576. package/docs/platforms/mac/canvas.md +125 -0
  577. package/docs/platforms/mac/child-process.md +69 -0
  578. package/docs/platforms/mac/dev-setup.md +102 -0
  579. package/docs/platforms/mac/health.md +34 -0
  580. package/docs/platforms/mac/icon.md +31 -0
  581. package/docs/platforms/mac/logging.md +57 -0
  582. package/docs/platforms/mac/menu-bar.md +81 -0
  583. package/docs/platforms/mac/peekaboo.md +65 -0
  584. package/docs/platforms/mac/permissions.md +44 -0
  585. package/docs/platforms/mac/release.md +85 -0
  586. package/docs/platforms/mac/remote.md +83 -0
  587. package/docs/platforms/mac/signing.md +47 -0
  588. package/docs/platforms/mac/skills.md +33 -0
  589. package/docs/platforms/mac/voice-overlay.md +60 -0
  590. package/docs/platforms/mac/voicewake.md +67 -0
  591. package/docs/platforms/mac/webchat.md +41 -0
  592. package/docs/platforms/mac/xpc.md +61 -0
  593. package/docs/platforms/macos.md +203 -0
  594. package/docs/platforms/oracle.md +303 -0
  595. package/docs/platforms/raspberry-pi.md +358 -0
  596. package/docs/platforms/windows.md +159 -0
  597. package/docs/plugin.md +664 -0
  598. package/docs/plugins/agent-tools.md +99 -0
  599. package/docs/plugins/manifest.md +71 -0
  600. package/docs/plugins/voice-call.md +284 -0
  601. package/docs/plugins/zalouser.md +81 -0
  602. package/docs/prose.md +134 -0
  603. package/docs/providers/anthropic.md +152 -0
  604. package/docs/providers/claude-max-api-proxy.md +148 -0
  605. package/docs/providers/cloudflare-ai-gateway.md +71 -0
  606. package/docs/providers/deepgram.md +93 -0
  607. package/docs/providers/github-copilot.md +72 -0
  608. package/docs/providers/glm.md +33 -0
  609. package/docs/providers/index.md +63 -0
  610. package/docs/providers/minimax.md +208 -0
  611. package/docs/providers/models.md +51 -0
  612. package/docs/providers/moonshot.md +142 -0
  613. package/docs/providers/ollama.md +277 -0
  614. package/docs/providers/openai.md +62 -0
  615. package/docs/providers/opencode.md +36 -0
  616. package/docs/providers/openrouter.md +37 -0
  617. package/docs/providers/qwen.md +53 -0
  618. package/docs/providers/synthetic.md +99 -0
  619. package/docs/providers/venice.md +267 -0
  620. package/docs/providers/vercel-ai-gateway.md +50 -0
  621. package/docs/providers/xiaomi.md +64 -0
  622. package/docs/providers/zai.md +36 -0
  623. package/docs/refactor/clawnet.md +417 -0
  624. package/docs/refactor/exec-host.md +316 -0
  625. package/docs/refactor/outbound-session-mirroring.md +85 -0
  626. package/docs/refactor/plugin-sdk.md +214 -0
  627. package/docs/refactor/strict-config.md +93 -0
  628. package/docs/reference/AGENTS.default.md +124 -0
  629. package/docs/reference/RELEASING.md +120 -0
  630. package/docs/reference/api-usage-costs.md +137 -0
  631. package/docs/reference/credits.md +27 -0
  632. package/docs/reference/device-models.md +47 -0
  633. package/docs/reference/rpc.md +43 -0
  634. package/docs/reference/session-management-compaction.md +285 -0
  635. package/docs/reference/templates/AGENTS.dev.md +83 -0
  636. package/docs/reference/templates/AGENTS.md +218 -0
  637. package/docs/reference/templates/BOOT.md +10 -0
  638. package/docs/reference/templates/BOOTSTRAP.md +61 -0
  639. package/docs/reference/templates/HEARTBEAT.md +11 -0
  640. package/docs/reference/templates/IDENTITY.dev.md +47 -0
  641. package/docs/reference/templates/IDENTITY.md +29 -0
  642. package/docs/reference/templates/SOUL.dev.md +76 -0
  643. package/docs/reference/templates/SOUL.md +42 -0
  644. package/docs/reference/templates/TOOLS.dev.md +24 -0
  645. package/docs/reference/templates/TOOLS.md +46 -0
  646. package/docs/reference/templates/USER.dev.md +18 -0
  647. package/docs/reference/templates/USER.md +22 -0
  648. package/docs/reference/test.md +50 -0
  649. package/docs/reference/transcript-hygiene.md +129 -0
  650. package/docs/reference/wizard.md +268 -0
  651. package/docs/scripts.md +28 -0
  652. package/docs/security/formal-verification.md +164 -0
  653. package/docs/start/bootstrapping.md +41 -0
  654. package/docs/start/docs-directory.md +64 -0
  655. package/docs/start/getting-started.md +120 -0
  656. package/docs/start/hubs.md +197 -0
  657. package/docs/start/lore.md +219 -0
  658. package/docs/start/onboarding.md +80 -0
  659. package/docs/start/openclaw.md +224 -0
  660. package/docs/start/pairing.md +86 -0
  661. package/docs/start/quickstart.md +22 -0
  662. package/docs/start/setup.md +162 -0
  663. package/docs/start/showcase.md +416 -0
  664. package/docs/start/wizard-cli-automation.md +141 -0
  665. package/docs/start/wizard-cli-reference.md +244 -0
  666. package/docs/start/wizard.md +108 -0
  667. package/docs/style.css +3 -0
  668. package/docs/testing.md +368 -0
  669. package/docs/token-use.md +112 -0
  670. package/docs/tools/agent-send.md +53 -0
  671. package/docs/tools/apply-patch.md +50 -0
  672. package/docs/tools/browser-linux-troubleshooting.md +139 -0
  673. package/docs/tools/browser-login.md +68 -0
  674. package/docs/tools/browser.md +576 -0
  675. package/docs/tools/chrome-extension.md +178 -0
  676. package/docs/tools/clawhub.md +257 -0
  677. package/docs/tools/creating-skills.md +54 -0
  678. package/docs/tools/elevated.md +57 -0
  679. package/docs/tools/exec-approvals.md +246 -0
  680. package/docs/tools/exec.md +179 -0
  681. package/docs/tools/firecrawl.md +61 -0
  682. package/docs/tools/index.md +512 -0
  683. package/docs/tools/llm-task.md +115 -0
  684. package/docs/tools/lobster.md +342 -0
  685. package/docs/tools/reactions.md +22 -0
  686. package/docs/tools/skills-config.md +76 -0
  687. package/docs/tools/skills.md +300 -0
  688. package/docs/tools/slash-commands.md +198 -0
  689. package/docs/tools/subagents.md +151 -0
  690. package/docs/tools/thinking.md +74 -0
  691. package/docs/tools/web.md +261 -0
  692. package/docs/tts.md +396 -0
  693. package/docs/tui.md +162 -0
  694. package/docs/vps.md +43 -0
  695. package/docs/web/control-ui.md +223 -0
  696. package/docs/web/dashboard.md +46 -0
  697. package/docs/web/index.md +116 -0
  698. package/docs/web/webchat.md +49 -0
  699. package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
  700. package/docs/whatsapp-openclaw.jpg +0 -0
  701. package/docs/zh-CN/AGENTS.md +59 -0
  702. package/docs/zh-CN/automation/auth-monitoring.md +47 -0
  703. package/docs/zh-CN/automation/cron-jobs.md +424 -0
  704. package/docs/zh-CN/automation/cron-vs-heartbeat.md +286 -0
  705. package/docs/zh-CN/automation/gmail-pubsub.md +249 -0
  706. package/docs/zh-CN/automation/poll.md +76 -0
  707. package/docs/zh-CN/automation/webhook.md +163 -0
  708. package/docs/zh-CN/bedrock.md +170 -0
  709. package/docs/zh-CN/brave-search.md +48 -0
  710. package/docs/zh-CN/broadcast-groups.md +449 -0
  711. package/docs/zh-CN/channels/bluebubbles.md +271 -0
  712. package/docs/zh-CN/channels/discord.md +468 -0
  713. package/docs/zh-CN/channels/feishu.md +629 -0
  714. package/docs/zh-CN/channels/googlechat.md +257 -0
  715. package/docs/zh-CN/channels/grammy.md +38 -0
  716. package/docs/zh-CN/channels/imessage.md +302 -0
  717. package/docs/zh-CN/channels/index.md +53 -0
  718. package/docs/zh-CN/channels/line.md +180 -0
  719. package/docs/zh-CN/channels/location.md +63 -0
  720. package/docs/zh-CN/channels/matrix.md +221 -0
  721. package/docs/zh-CN/channels/mattermost.md +144 -0
  722. package/docs/zh-CN/channels/msteams.md +775 -0
  723. package/docs/zh-CN/channels/nextcloud-talk.md +142 -0
  724. package/docs/zh-CN/channels/nostr.md +240 -0
  725. package/docs/zh-CN/channels/signal.md +209 -0
  726. package/docs/zh-CN/channels/slack.md +531 -0
  727. package/docs/zh-CN/channels/telegram.md +751 -0
  728. package/docs/zh-CN/channels/tlon.md +136 -0
  729. package/docs/zh-CN/channels/troubleshooting.md +36 -0
  730. package/docs/zh-CN/channels/twitch.md +385 -0
  731. package/docs/zh-CN/channels/whatsapp.md +411 -0
  732. package/docs/zh-CN/channels/zalo.md +196 -0
  733. package/docs/zh-CN/channels/zalouser.md +147 -0
  734. package/docs/zh-CN/cli/acp.md +173 -0
  735. package/docs/zh-CN/cli/agent.md +30 -0
  736. package/docs/zh-CN/cli/agents.md +82 -0
  737. package/docs/zh-CN/cli/approvals.md +57 -0
  738. package/docs/zh-CN/cli/browser.md +114 -0
  739. package/docs/zh-CN/cli/channels.md +86 -0
  740. package/docs/zh-CN/cli/config.md +57 -0
  741. package/docs/zh-CN/cli/configure.md +38 -0
  742. package/docs/zh-CN/cli/cron.md +43 -0
  743. package/docs/zh-CN/cli/dashboard.md +23 -0
  744. package/docs/zh-CN/cli/devices.md +74 -0
  745. package/docs/zh-CN/cli/directory.md +70 -0
  746. package/docs/zh-CN/cli/dns.md +30 -0
  747. package/docs/zh-CN/cli/docs.md +22 -0
  748. package/docs/zh-CN/cli/doctor.md +48 -0
  749. package/docs/zh-CN/cli/gateway.md +206 -0
  750. package/docs/zh-CN/cli/health.md +28 -0
  751. package/docs/zh-CN/cli/hooks.md +311 -0
  752. package/docs/zh-CN/cli/index.md +1032 -0
  753. package/docs/zh-CN/cli/logs.md +31 -0
  754. package/docs/zh-CN/cli/memory.md +52 -0
  755. package/docs/zh-CN/cli/message.md +246 -0
  756. package/docs/zh-CN/cli/models.md +85 -0
  757. package/docs/zh-CN/cli/node.md +115 -0
  758. package/docs/zh-CN/cli/nodes.md +80 -0
  759. package/docs/zh-CN/cli/onboard.md +36 -0
  760. package/docs/zh-CN/cli/pairing.md +28 -0
  761. package/docs/zh-CN/cli/plugins.md +66 -0
  762. package/docs/zh-CN/cli/reset.md +24 -0
  763. package/docs/zh-CN/cli/sandbox.md +158 -0
  764. package/docs/zh-CN/cli/security.md +33 -0
  765. package/docs/zh-CN/cli/sessions.md +23 -0
  766. package/docs/zh-CN/cli/setup.md +36 -0
  767. package/docs/zh-CN/cli/skills.md +33 -0
  768. package/docs/zh-CN/cli/status.md +33 -0
  769. package/docs/zh-CN/cli/system.md +63 -0
  770. package/docs/zh-CN/cli/tui.md +30 -0
  771. package/docs/zh-CN/cli/uninstall.md +24 -0
  772. package/docs/zh-CN/cli/update.md +101 -0
  773. package/docs/zh-CN/cli/voicecall.md +41 -0
  774. package/docs/zh-CN/cli/webhooks.md +32 -0
  775. package/docs/zh-CN/concepts/agent-loop.md +146 -0
  776. package/docs/zh-CN/concepts/agent-workspace.md +219 -0
  777. package/docs/zh-CN/concepts/agent.md +115 -0
  778. package/docs/zh-CN/concepts/architecture.md +123 -0
  779. package/docs/zh-CN/concepts/channel-routing.md +117 -0
  780. package/docs/zh-CN/concepts/compaction.md +67 -0
  781. package/docs/zh-CN/concepts/context.md +168 -0
  782. package/docs/zh-CN/concepts/features.md +59 -0
  783. package/docs/zh-CN/concepts/group-messages.md +91 -0
  784. package/docs/zh-CN/concepts/groups.md +379 -0
  785. package/docs/zh-CN/concepts/markdown-formatting.md +117 -0
  786. package/docs/zh-CN/concepts/memory.md +412 -0
  787. package/docs/zh-CN/concepts/messages.md +141 -0
  788. package/docs/zh-CN/concepts/model-failover.md +145 -0
  789. package/docs/zh-CN/concepts/model-providers.md +320 -0
  790. package/docs/zh-CN/concepts/models.md +196 -0
  791. package/docs/zh-CN/concepts/multi-agent.md +372 -0
  792. package/docs/zh-CN/concepts/oauth.md +151 -0
  793. package/docs/zh-CN/concepts/presence.md +99 -0
  794. package/docs/zh-CN/concepts/queue.md +94 -0
  795. package/docs/zh-CN/concepts/retry.md +76 -0
  796. package/docs/zh-CN/concepts/session-pruning.md +129 -0
  797. package/docs/zh-CN/concepts/session-tool.md +200 -0
  798. package/docs/zh-CN/concepts/session.md +166 -0
  799. package/docs/zh-CN/concepts/sessions.md +17 -0
  800. package/docs/zh-CN/concepts/streaming.md +133 -0
  801. package/docs/zh-CN/concepts/system-prompt.md +101 -0
  802. package/docs/zh-CN/concepts/timezone.md +96 -0
  803. package/docs/zh-CN/concepts/typebox.md +284 -0
  804. package/docs/zh-CN/concepts/typing-indicators.md +74 -0
  805. package/docs/zh-CN/concepts/usage-tracking.md +42 -0
  806. package/docs/zh-CN/date-time.md +129 -0
  807. package/docs/zh-CN/debug/node-issue.md +90 -0
  808. package/docs/zh-CN/debugging.md +160 -0
  809. package/docs/zh-CN/diagnostics/flags.md +98 -0
  810. package/docs/zh-CN/environment.md +88 -0
  811. package/docs/zh-CN/experiments/onboarding-config-protocol.md +47 -0
  812. package/docs/zh-CN/experiments/plans/cron-add-hardening.md +70 -0
  813. package/docs/zh-CN/experiments/plans/group-policy-hardening.md +45 -0
  814. package/docs/zh-CN/experiments/plans/openresponses-gateway.md +121 -0
  815. package/docs/zh-CN/experiments/proposals/model-config.md +42 -0
  816. package/docs/zh-CN/experiments/research/memory.md +235 -0
  817. package/docs/zh-CN/gateway/authentication.md +142 -0
  818. package/docs/zh-CN/gateway/background-process.md +100 -0
  819. package/docs/zh-CN/gateway/bonjour.md +174 -0
  820. package/docs/zh-CN/gateway/bridge-protocol.md +86 -0
  821. package/docs/zh-CN/gateway/cli-backends.md +213 -0
  822. package/docs/zh-CN/gateway/configuration-examples.md +587 -0
  823. package/docs/zh-CN/gateway/configuration.md +3332 -0
  824. package/docs/zh-CN/gateway/discovery.md +123 -0
  825. package/docs/zh-CN/gateway/doctor.md +238 -0
  826. package/docs/zh-CN/gateway/gateway-lock.md +41 -0
  827. package/docs/zh-CN/gateway/health.md +42 -0
  828. package/docs/zh-CN/gateway/heartbeat.md +274 -0
  829. package/docs/zh-CN/gateway/index.md +335 -0
  830. package/docs/zh-CN/gateway/local-models.md +157 -0
  831. package/docs/zh-CN/gateway/logging.md +114 -0
  832. package/docs/zh-CN/gateway/multiple-gateways.md +119 -0
  833. package/docs/zh-CN/gateway/network-model.md +23 -0
  834. package/docs/zh-CN/gateway/openai-http-api.md +125 -0
  835. package/docs/zh-CN/gateway/openresponses-http-api.md +317 -0
  836. package/docs/zh-CN/gateway/pairing.md +99 -0
  837. package/docs/zh-CN/gateway/protocol.md +220 -0
  838. package/docs/zh-CN/gateway/remote-gateway-readme.md +164 -0
  839. package/docs/zh-CN/gateway/remote.md +133 -0
  840. package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +135 -0
  841. package/docs/zh-CN/gateway/sandboxing.md +188 -0
  842. package/docs/zh-CN/gateway/security/formal-verification.md +169 -0
  843. package/docs/zh-CN/gateway/security/index.md +777 -0
  844. package/docs/zh-CN/gateway/tailscale.md +124 -0
  845. package/docs/zh-CN/gateway/tools-invoke-http-api.md +92 -0
  846. package/docs/zh-CN/gateway/troubleshooting.md +771 -0
  847. package/docs/zh-CN/help/faq.md +2628 -0
  848. package/docs/zh-CN/help/index.md +28 -0
  849. package/docs/zh-CN/help/troubleshooting.md +104 -0
  850. package/docs/zh-CN/hooks/soul-evil.md +72 -0
  851. package/docs/zh-CN/hooks.md +919 -0
  852. package/docs/zh-CN/index.md +186 -0
  853. package/docs/zh-CN/install/ansible.md +215 -0
  854. package/docs/zh-CN/install/bun.md +65 -0
  855. package/docs/zh-CN/install/development-channels.md +81 -0
  856. package/docs/zh-CN/install/docker.md +532 -0
  857. package/docs/zh-CN/install/exe-dev.md +127 -0
  858. package/docs/zh-CN/install/fly.md +490 -0
  859. package/docs/zh-CN/install/gcp.md +510 -0
  860. package/docs/zh-CN/install/hetzner.md +337 -0
  861. package/docs/zh-CN/install/index.md +193 -0
  862. package/docs/zh-CN/install/installer.md +128 -0
  863. package/docs/zh-CN/install/macos-vm.md +288 -0
  864. package/docs/zh-CN/install/migrating.md +199 -0
  865. package/docs/zh-CN/install/nix.md +99 -0
  866. package/docs/zh-CN/install/node.md +85 -0
  867. package/docs/zh-CN/install/northflank.mdx +60 -0
  868. package/docs/zh-CN/install/railway.mdx +106 -0
  869. package/docs/zh-CN/install/render.mdx +169 -0
  870. package/docs/zh-CN/install/uninstall.md +135 -0
  871. package/docs/zh-CN/install/updating.md +233 -0
  872. package/docs/zh-CN/logging.md +329 -0
  873. package/docs/zh-CN/multi-agent-sandbox-tools.md +401 -0
  874. package/docs/zh-CN/network.md +59 -0
  875. package/docs/zh-CN/nodes/audio.md +120 -0
  876. package/docs/zh-CN/nodes/camera.md +162 -0
  877. package/docs/zh-CN/nodes/images.md +79 -0
  878. package/docs/zh-CN/nodes/index.md +348 -0
  879. package/docs/zh-CN/nodes/location-command.md +120 -0
  880. package/docs/zh-CN/nodes/media-understanding.md +380 -0
  881. package/docs/zh-CN/nodes/talk.md +97 -0
  882. package/docs/zh-CN/nodes/voicewake.md +72 -0
  883. package/docs/zh-CN/perplexity.md +84 -0
  884. package/docs/zh-CN/pi-dev.md +77 -0
  885. package/docs/zh-CN/pi.md +619 -0
  886. package/docs/zh-CN/platforms/android.md +155 -0
  887. package/docs/zh-CN/platforms/digitalocean.md +269 -0
  888. package/docs/zh-CN/platforms/index.md +60 -0
  889. package/docs/zh-CN/platforms/ios.md +114 -0
  890. package/docs/zh-CN/platforms/linux.md +101 -0
  891. package/docs/zh-CN/platforms/mac/bundled-gateway.md +75 -0
  892. package/docs/zh-CN/platforms/mac/canvas.md +128 -0
  893. package/docs/zh-CN/platforms/mac/child-process.md +73 -0
  894. package/docs/zh-CN/platforms/mac/dev-setup.md +109 -0
  895. package/docs/zh-CN/platforms/mac/health.md +41 -0
  896. package/docs/zh-CN/platforms/mac/icon.md +38 -0
  897. package/docs/zh-CN/platforms/mac/logging.md +64 -0
  898. package/docs/zh-CN/platforms/mac/menu-bar.md +88 -0
  899. package/docs/zh-CN/platforms/mac/peekaboo.md +62 -0
  900. package/docs/zh-CN/platforms/mac/permissions.md +46 -0
  901. package/docs/zh-CN/platforms/mac/release.md +92 -0
  902. package/docs/zh-CN/platforms/mac/remote.md +90 -0
  903. package/docs/zh-CN/platforms/mac/signing.md +54 -0
  904. package/docs/zh-CN/platforms/mac/skills.md +40 -0
  905. package/docs/zh-CN/platforms/mac/voice-overlay.md +67 -0
  906. package/docs/zh-CN/platforms/mac/voicewake.md +74 -0
  907. package/docs/zh-CN/platforms/mac/webchat.md +43 -0
  908. package/docs/zh-CN/platforms/mac/xpc.md +68 -0
  909. package/docs/zh-CN/platforms/macos.md +193 -0
  910. package/docs/zh-CN/platforms/oracle.md +310 -0
  911. package/docs/zh-CN/platforms/raspberry-pi.md +365 -0
  912. package/docs/zh-CN/platforms/windows.md +156 -0
  913. package/docs/zh-CN/plugin.md +639 -0
  914. package/docs/zh-CN/plugins/agent-tools.md +99 -0
  915. package/docs/zh-CN/plugins/manifest.md +68 -0
  916. package/docs/zh-CN/plugins/voice-call.md +250 -0
  917. package/docs/zh-CN/plugins/zalouser.md +88 -0
  918. package/docs/zh-CN/prose.md +141 -0
  919. package/docs/zh-CN/providers/anthropic.md +159 -0
  920. package/docs/zh-CN/providers/claude-max-api-proxy.md +155 -0
  921. package/docs/zh-CN/providers/deepgram.md +97 -0
  922. package/docs/zh-CN/providers/github-copilot.md +67 -0
  923. package/docs/zh-CN/providers/glm.md +39 -0
  924. package/docs/zh-CN/providers/index.md +68 -0
  925. package/docs/zh-CN/providers/minimax.md +206 -0
  926. package/docs/zh-CN/providers/models.md +55 -0
  927. package/docs/zh-CN/providers/moonshot.md +145 -0
  928. package/docs/zh-CN/providers/ollama.md +230 -0
  929. package/docs/zh-CN/providers/openai.md +68 -0
  930. package/docs/zh-CN/providers/opencode.md +41 -0
  931. package/docs/zh-CN/providers/openrouter.md +43 -0
  932. package/docs/zh-CN/providers/qwen.md +55 -0
  933. package/docs/zh-CN/providers/synthetic.md +102 -0
  934. package/docs/zh-CN/providers/venice.md +274 -0
  935. package/docs/zh-CN/providers/vercel-ai-gateway.md +57 -0
  936. package/docs/zh-CN/providers/xiaomi.md +68 -0
  937. package/docs/zh-CN/providers/zai.md +41 -0
  938. package/docs/zh-CN/refactor/clawnet.md +424 -0
  939. package/docs/zh-CN/refactor/exec-host.md +323 -0
  940. package/docs/zh-CN/refactor/outbound-session-mirroring.md +92 -0
  941. package/docs/zh-CN/refactor/plugin-sdk.md +221 -0
  942. package/docs/zh-CN/refactor/strict-config.md +100 -0
  943. package/docs/zh-CN/reference/AGENTS.default.md +131 -0
  944. package/docs/zh-CN/reference/RELEASING.md +123 -0
  945. package/docs/zh-CN/reference/api-usage-costs.md +136 -0
  946. package/docs/zh-CN/reference/credits.md +34 -0
  947. package/docs/zh-CN/reference/device-models.md +54 -0
  948. package/docs/zh-CN/reference/rpc.md +48 -0
  949. package/docs/zh-CN/reference/session-management-compaction.md +287 -0
  950. package/docs/zh-CN/reference/templates/AGENTS.dev.md +89 -0
  951. package/docs/zh-CN/reference/templates/AGENTS.md +225 -0
  952. package/docs/zh-CN/reference/templates/BOOT.md +17 -0
  953. package/docs/zh-CN/reference/templates/BOOTSTRAP.md +68 -0
  954. package/docs/zh-CN/reference/templates/HEARTBEAT.md +18 -0
  955. package/docs/zh-CN/reference/templates/IDENTITY.dev.md +54 -0
  956. package/docs/zh-CN/reference/templates/IDENTITY.md +36 -0
  957. package/docs/zh-CN/reference/templates/SOUL.dev.md +83 -0
  958. package/docs/zh-CN/reference/templates/SOUL.md +49 -0
  959. package/docs/zh-CN/reference/templates/TOOLS.dev.md +31 -0
  960. package/docs/zh-CN/reference/templates/TOOLS.md +53 -0
  961. package/docs/zh-CN/reference/templates/USER.dev.md +25 -0
  962. package/docs/zh-CN/reference/templates/USER.md +30 -0
  963. package/docs/zh-CN/reference/test.md +57 -0
  964. package/docs/zh-CN/reference/transcript-hygiene.md +109 -0
  965. package/docs/zh-CN/scripts.md +35 -0
  966. package/docs/zh-CN/security/formal-verification.md +171 -0
  967. package/docs/zh-CN/start/docs-directory.md +70 -0
  968. package/docs/zh-CN/start/getting-started.md +206 -0
  969. package/docs/zh-CN/start/hubs.md +200 -0
  970. package/docs/zh-CN/start/lore.md +226 -0
  971. package/docs/zh-CN/start/onboarding.md +105 -0
  972. package/docs/zh-CN/start/openclaw.md +248 -0
  973. package/docs/zh-CN/start/pairing.md +89 -0
  974. package/docs/zh-CN/start/quickstart.md +88 -0
  975. package/docs/zh-CN/start/setup.md +153 -0
  976. package/docs/zh-CN/start/showcase.md +423 -0
  977. package/docs/zh-CN/start/wizard.md +331 -0
  978. package/docs/zh-CN/testing.md +375 -0
  979. package/docs/zh-CN/token-use.md +119 -0
  980. package/docs/zh-CN/tools/agent-send.md +59 -0
  981. package/docs/zh-CN/tools/apply-patch.md +57 -0
  982. package/docs/zh-CN/tools/browser-linux-troubleshooting.md +144 -0
  983. package/docs/zh-CN/tools/browser-login.md +75 -0
  984. package/docs/zh-CN/tools/browser.md +553 -0
  985. package/docs/zh-CN/tools/chrome-extension.md +183 -0
  986. package/docs/zh-CN/tools/clawhub.md +209 -0
  987. package/docs/zh-CN/tools/creating-skills.md +61 -0
  988. package/docs/zh-CN/tools/elevated.md +64 -0
  989. package/docs/zh-CN/tools/exec-approvals.md +234 -0
  990. package/docs/zh-CN/tools/exec.md +169 -0
  991. package/docs/zh-CN/tools/firecrawl.md +68 -0
  992. package/docs/zh-CN/tools/index.md +515 -0
  993. package/docs/zh-CN/tools/llm-task.md +117 -0
  994. package/docs/zh-CN/tools/lobster.md +349 -0
  995. package/docs/zh-CN/tools/reactions.md +29 -0
  996. package/docs/zh-CN/tools/skills-config.md +78 -0
  997. package/docs/zh-CN/tools/skills.md +279 -0
  998. package/docs/zh-CN/tools/slash-commands.md +205 -0
  999. package/docs/zh-CN/tools/subagents.md +156 -0
  1000. package/docs/zh-CN/tools/thinking.md +80 -0
  1001. package/docs/zh-CN/tools/web.md +257 -0
  1002. package/docs/zh-CN/tts.md +375 -0
  1003. package/docs/zh-CN/tui.md +166 -0
  1004. package/docs/zh-CN/vps.md +47 -0
  1005. package/docs/zh-CN/web/control-ui.md +191 -0
  1006. package/docs/zh-CN/web/dashboard.md +53 -0
  1007. package/docs/zh-CN/web/index.md +118 -0
  1008. package/docs/zh-CN/web/webchat.md +56 -0
  1009. package/extensions/bluebubbles/README.md +45 -0
  1010. package/extensions/bluebubbles/index.ts +19 -0
  1011. package/extensions/bluebubbles/node_modules/.bin/openclaw +21 -0
  1012. package/extensions/bluebubbles/openclaw.plugin.json +9 -0
  1013. package/extensions/bluebubbles/package.json +36 -0
  1014. package/extensions/bluebubbles/src/accounts.ts +88 -0
  1015. package/extensions/bluebubbles/src/actions.test.ts +650 -0
  1016. package/extensions/bluebubbles/src/actions.ts +438 -0
  1017. package/extensions/bluebubbles/src/attachments.test.ts +345 -0
  1018. package/extensions/bluebubbles/src/attachments.ts +300 -0
  1019. package/extensions/bluebubbles/src/channel.ts +414 -0
  1020. package/extensions/bluebubbles/src/chat.test.ts +461 -0
  1021. package/extensions/bluebubbles/src/chat.ts +378 -0
  1022. package/extensions/bluebubbles/src/config-schema.ts +51 -0
  1023. package/extensions/bluebubbles/src/media-send.ts +174 -0
  1024. package/extensions/bluebubbles/src/monitor.test.ts +2342 -0
  1025. package/extensions/bluebubbles/src/monitor.ts +2499 -0
  1026. package/extensions/bluebubbles/src/onboarding.ts +352 -0
  1027. package/extensions/bluebubbles/src/probe.ts +135 -0
  1028. package/extensions/bluebubbles/src/reactions.test.ts +392 -0
  1029. package/extensions/bluebubbles/src/reactions.ts +188 -0
  1030. package/extensions/bluebubbles/src/runtime.ts +14 -0
  1031. package/extensions/bluebubbles/src/send.test.ts +808 -0
  1032. package/extensions/bluebubbles/src/send.ts +467 -0
  1033. package/extensions/bluebubbles/src/targets.test.ts +183 -0
  1034. package/extensions/bluebubbles/src/targets.ts +422 -0
  1035. package/extensions/bluebubbles/src/types.ts +127 -0
  1036. package/extensions/copilot-proxy/README.md +24 -0
  1037. package/extensions/copilot-proxy/index.ts +149 -0
  1038. package/extensions/copilot-proxy/node_modules/.bin/openclaw +21 -0
  1039. package/extensions/copilot-proxy/openclaw.plugin.json +9 -0
  1040. package/extensions/copilot-proxy/package.json +14 -0
  1041. package/extensions/diagnostics-otel/index.ts +15 -0
  1042. package/extensions/diagnostics-otel/node_modules/.bin/openclaw +21 -0
  1043. package/extensions/diagnostics-otel/openclaw.plugin.json +8 -0
  1044. package/extensions/diagnostics-otel/package.json +27 -0
  1045. package/extensions/diagnostics-otel/src/service.test.ts +226 -0
  1046. package/extensions/diagnostics-otel/src/service.ts +635 -0
  1047. package/extensions/discord/index.ts +17 -0
  1048. package/extensions/discord/node_modules/.bin/openclaw +21 -0
  1049. package/extensions/discord/openclaw.plugin.json +9 -0
  1050. package/extensions/discord/package.json +14 -0
  1051. package/extensions/discord/src/channel.ts +422 -0
  1052. package/extensions/discord/src/runtime.ts +14 -0
  1053. package/extensions/feishu/index.ts +63 -0
  1054. package/extensions/feishu/node_modules/.bin/openclaw +21 -0
  1055. package/extensions/feishu/openclaw.plugin.json +10 -0
  1056. package/extensions/feishu/package.json +37 -0
  1057. package/extensions/feishu/skills/feishu-doc/SKILL.md +105 -0
  1058. package/extensions/feishu/skills/feishu-doc/references/block-types.md +103 -0
  1059. package/extensions/feishu/skills/feishu-drive/SKILL.md +97 -0
  1060. package/extensions/feishu/skills/feishu-perm/SKILL.md +119 -0
  1061. package/extensions/feishu/skills/feishu-wiki/SKILL.md +111 -0
  1062. package/extensions/feishu/src/accounts.ts +144 -0
  1063. package/extensions/feishu/src/bitable.ts +459 -0
  1064. package/extensions/feishu/src/bot.ts +871 -0
  1065. package/extensions/feishu/src/channel.ts +341 -0
  1066. package/extensions/feishu/src/client.ts +118 -0
  1067. package/extensions/feishu/src/config-schema.ts +172 -0
  1068. package/extensions/feishu/src/directory.ts +177 -0
  1069. package/extensions/feishu/src/doc-schema.ts +47 -0
  1070. package/extensions/feishu/src/docx.ts +521 -0
  1071. package/extensions/feishu/src/drive-schema.ts +46 -0
  1072. package/extensions/feishu/src/drive.ts +227 -0
  1073. package/extensions/feishu/src/media.ts +527 -0
  1074. package/extensions/feishu/src/mention.ts +126 -0
  1075. package/extensions/feishu/src/monitor.ts +190 -0
  1076. package/extensions/feishu/src/onboarding.ts +356 -0
  1077. package/extensions/feishu/src/outbound.ts +40 -0
  1078. package/extensions/feishu/src/perm-schema.ts +52 -0
  1079. package/extensions/feishu/src/perm.ts +173 -0
  1080. package/extensions/feishu/src/policy.ts +104 -0
  1081. package/extensions/feishu/src/probe.ts +44 -0
  1082. package/extensions/feishu/src/reactions.ts +160 -0
  1083. package/extensions/feishu/src/reply-dispatcher.ts +184 -0
  1084. package/extensions/feishu/src/runtime.ts +14 -0
  1085. package/extensions/feishu/src/send.ts +358 -0
  1086. package/extensions/feishu/src/targets.ts +78 -0
  1087. package/extensions/feishu/src/tools-config.ts +21 -0
  1088. package/extensions/feishu/src/types.ts +75 -0
  1089. package/extensions/feishu/src/typing.ts +80 -0
  1090. package/extensions/feishu/src/wiki-schema.ts +55 -0
  1091. package/extensions/feishu/src/wiki.ts +232 -0
  1092. package/extensions/google-antigravity-auth/README.md +24 -0
  1093. package/extensions/google-antigravity-auth/index.ts +461 -0
  1094. package/extensions/google-antigravity-auth/node_modules/.bin/openclaw +21 -0
  1095. package/extensions/google-antigravity-auth/openclaw.plugin.json +9 -0
  1096. package/extensions/google-antigravity-auth/package.json +14 -0
  1097. package/extensions/google-gemini-cli-auth/README.md +35 -0
  1098. package/extensions/google-gemini-cli-auth/index.ts +88 -0
  1099. package/extensions/google-gemini-cli-auth/node_modules/.bin/openclaw +21 -0
  1100. package/extensions/google-gemini-cli-auth/oauth.test.ts +240 -0
  1101. package/extensions/google-gemini-cli-auth/oauth.ts +662 -0
  1102. package/extensions/google-gemini-cli-auth/openclaw.plugin.json +9 -0
  1103. package/extensions/google-gemini-cli-auth/package.json +14 -0
  1104. package/extensions/googlechat/index.ts +19 -0
  1105. package/extensions/googlechat/node_modules/.bin/clawdbot +21 -0
  1106. package/extensions/googlechat/node_modules/.bin/moltbot +21 -0
  1107. package/extensions/googlechat/node_modules/.bin/openclaw +21 -0
  1108. package/extensions/googlechat/openclaw.plugin.json +9 -0
  1109. package/extensions/googlechat/package.json +39 -0
  1110. package/extensions/googlechat/src/accounts.ts +147 -0
  1111. package/extensions/googlechat/src/actions.ts +181 -0
  1112. package/extensions/googlechat/src/api.test.ts +61 -0
  1113. package/extensions/googlechat/src/api.ts +282 -0
  1114. package/extensions/googlechat/src/auth.ts +123 -0
  1115. package/extensions/googlechat/src/channel.ts +583 -0
  1116. package/extensions/googlechat/src/monitor.test.ts +22 -0
  1117. package/extensions/googlechat/src/monitor.ts +960 -0
  1118. package/extensions/googlechat/src/onboarding.ts +269 -0
  1119. package/extensions/googlechat/src/runtime.ts +14 -0
  1120. package/extensions/googlechat/src/targets.test.ts +32 -0
  1121. package/extensions/googlechat/src/targets.ts +65 -0
  1122. package/extensions/googlechat/src/types.config.ts +3 -0
  1123. package/extensions/googlechat/src/types.ts +73 -0
  1124. package/extensions/imessage/index.ts +17 -0
  1125. package/extensions/imessage/node_modules/.bin/openclaw +21 -0
  1126. package/extensions/imessage/openclaw.plugin.json +9 -0
  1127. package/extensions/imessage/package.json +14 -0
  1128. package/extensions/imessage/src/channel.ts +294 -0
  1129. package/extensions/imessage/src/runtime.ts +14 -0
  1130. package/extensions/line/index.ts +19 -0
  1131. package/extensions/line/node_modules/.bin/clawdbot +21 -0
  1132. package/extensions/line/node_modules/.bin/moltbot +21 -0
  1133. package/extensions/line/node_modules/.bin/openclaw +21 -0
  1134. package/extensions/line/openclaw.plugin.json +9 -0
  1135. package/extensions/line/package.json +29 -0
  1136. package/extensions/line/src/card-command.ts +344 -0
  1137. package/extensions/line/src/channel.logout.test.ts +99 -0
  1138. package/extensions/line/src/channel.sendPayload.test.ts +306 -0
  1139. package/extensions/line/src/channel.ts +780 -0
  1140. package/extensions/line/src/runtime.ts +14 -0
  1141. package/extensions/llm-task/README.md +97 -0
  1142. package/extensions/llm-task/index.ts +6 -0
  1143. package/extensions/llm-task/node_modules/.bin/openclaw +21 -0
  1144. package/extensions/llm-task/openclaw.plugin.json +21 -0
  1145. package/extensions/llm-task/package.json +14 -0
  1146. package/extensions/llm-task/src/llm-task-tool.test.ts +138 -0
  1147. package/extensions/llm-task/src/llm-task-tool.ts +245 -0
  1148. package/extensions/lobster/README.md +75 -0
  1149. package/extensions/lobster/SKILL.md +97 -0
  1150. package/extensions/lobster/index.ts +14 -0
  1151. package/extensions/lobster/node_modules/.bin/openclaw +21 -0
  1152. package/extensions/lobster/openclaw.plugin.json +10 -0
  1153. package/extensions/lobster/package.json +14 -0
  1154. package/extensions/lobster/src/lobster-tool.test.ts +247 -0
  1155. package/extensions/lobster/src/lobster-tool.ts +328 -0
  1156. package/extensions/matrix/CHANGELOG.md +93 -0
  1157. package/extensions/matrix/index.ts +17 -0
  1158. package/extensions/matrix/node_modules/.bin/clawdbot +21 -0
  1159. package/extensions/matrix/node_modules/.bin/markdown-it +21 -0
  1160. package/extensions/matrix/node_modules/.bin/moltbot +21 -0
  1161. package/extensions/matrix/node_modules/.bin/openclaw +21 -0
  1162. package/extensions/matrix/openclaw.plugin.json +9 -0
  1163. package/extensions/matrix/package.json +36 -0
  1164. package/extensions/matrix/src/actions.ts +195 -0
  1165. package/extensions/matrix/src/channel.directory.test.ts +64 -0
  1166. package/extensions/matrix/src/channel.ts +439 -0
  1167. package/extensions/matrix/src/config-schema.ts +63 -0
  1168. package/extensions/matrix/src/directory-live.ts +188 -0
  1169. package/extensions/matrix/src/group-mentions.ts +66 -0
  1170. package/extensions/matrix/src/matrix/accounts.test.ts +82 -0
  1171. package/extensions/matrix/src/matrix/accounts.ts +65 -0
  1172. package/extensions/matrix/src/matrix/actions/client.ts +57 -0
  1173. package/extensions/matrix/src/matrix/actions/messages.ts +128 -0
  1174. package/extensions/matrix/src/matrix/actions/pins.ts +76 -0
  1175. package/extensions/matrix/src/matrix/actions/reactions.ts +96 -0
  1176. package/extensions/matrix/src/matrix/actions/room.ts +85 -0
  1177. package/extensions/matrix/src/matrix/actions/summary.ts +75 -0
  1178. package/extensions/matrix/src/matrix/actions/types.ts +84 -0
  1179. package/extensions/matrix/src/matrix/actions.ts +15 -0
  1180. package/extensions/matrix/src/matrix/active-client.ts +11 -0
  1181. package/extensions/matrix/src/matrix/client/config.ts +160 -0
  1182. package/extensions/matrix/src/matrix/client/create-client.ts +123 -0
  1183. package/extensions/matrix/src/matrix/client/logging.ts +36 -0
  1184. package/extensions/matrix/src/matrix/client/runtime.ts +4 -0
  1185. package/extensions/matrix/src/matrix/client/shared.ts +170 -0
  1186. package/extensions/matrix/src/matrix/client/storage.ts +131 -0
  1187. package/extensions/matrix/src/matrix/client/types.ts +34 -0
  1188. package/extensions/matrix/src/matrix/client.test.ts +56 -0
  1189. package/extensions/matrix/src/matrix/client.ts +5 -0
  1190. package/extensions/matrix/src/matrix/credentials.ts +105 -0
  1191. package/extensions/matrix/src/matrix/deps.ts +60 -0
  1192. package/extensions/matrix/src/matrix/format.test.ts +33 -0
  1193. package/extensions/matrix/src/matrix/format.ts +22 -0
  1194. package/extensions/matrix/src/matrix/index.ts +11 -0
  1195. package/extensions/matrix/src/matrix/monitor/allowlist.test.ts +45 -0
  1196. package/extensions/matrix/src/matrix/monitor/allowlist.ts +103 -0
  1197. package/extensions/matrix/src/matrix/monitor/auto-join.ts +71 -0
  1198. package/extensions/matrix/src/matrix/monitor/direct.ts +104 -0
  1199. package/extensions/matrix/src/matrix/monitor/events.ts +101 -0
  1200. package/extensions/matrix/src/matrix/monitor/handler.ts +665 -0
  1201. package/extensions/matrix/src/matrix/monitor/index.ts +338 -0
  1202. package/extensions/matrix/src/matrix/monitor/location.ts +100 -0
  1203. package/extensions/matrix/src/matrix/monitor/media.test.ts +102 -0
  1204. package/extensions/matrix/src/matrix/monitor/media.ts +113 -0
  1205. package/extensions/matrix/src/matrix/monitor/mentions.ts +31 -0
  1206. package/extensions/matrix/src/matrix/monitor/replies.ts +97 -0
  1207. package/extensions/matrix/src/matrix/monitor/room-info.ts +55 -0
  1208. package/extensions/matrix/src/matrix/monitor/rooms.test.ts +39 -0
  1209. package/extensions/matrix/src/matrix/monitor/rooms.ts +47 -0
  1210. package/extensions/matrix/src/matrix/monitor/threads.ts +68 -0
  1211. package/extensions/matrix/src/matrix/monitor/types.ts +39 -0
  1212. package/extensions/matrix/src/matrix/poll-types.test.ts +21 -0
  1213. package/extensions/matrix/src/matrix/poll-types.ts +166 -0
  1214. package/extensions/matrix/src/matrix/probe.ts +70 -0
  1215. package/extensions/matrix/src/matrix/send/client.ts +66 -0
  1216. package/extensions/matrix/src/matrix/send/formatting.ts +89 -0
  1217. package/extensions/matrix/src/matrix/send/media.ts +229 -0
  1218. package/extensions/matrix/src/matrix/send/targets.test.ts +98 -0
  1219. package/extensions/matrix/src/matrix/send/targets.ts +136 -0
  1220. package/extensions/matrix/src/matrix/send/types.ts +109 -0
  1221. package/extensions/matrix/src/matrix/send.test.ts +171 -0
  1222. package/extensions/matrix/src/matrix/send.ts +260 -0
  1223. package/extensions/matrix/src/onboarding.ts +449 -0
  1224. package/extensions/matrix/src/outbound.ts +52 -0
  1225. package/extensions/matrix/src/resolve-targets.test.ts +48 -0
  1226. package/extensions/matrix/src/resolve-targets.ts +135 -0
  1227. package/extensions/matrix/src/runtime.ts +14 -0
  1228. package/extensions/matrix/src/tool-actions.ts +164 -0
  1229. package/extensions/matrix/src/types.ts +97 -0
  1230. package/extensions/mattermost/index.ts +17 -0
  1231. package/extensions/mattermost/node_modules/.bin/openclaw +21 -0
  1232. package/extensions/mattermost/openclaw.plugin.json +9 -0
  1233. package/extensions/mattermost/package.json +28 -0
  1234. package/extensions/mattermost/src/channel.test.ts +72 -0
  1235. package/extensions/mattermost/src/channel.ts +337 -0
  1236. package/extensions/mattermost/src/config-schema.ts +56 -0
  1237. package/extensions/mattermost/src/group-mentions.ts +15 -0
  1238. package/extensions/mattermost/src/mattermost/accounts.ts +128 -0
  1239. package/extensions/mattermost/src/mattermost/client.ts +220 -0
  1240. package/extensions/mattermost/src/mattermost/index.ts +9 -0
  1241. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +166 -0
  1242. package/extensions/mattermost/src/mattermost/monitor.ts +991 -0
  1243. package/extensions/mattermost/src/mattermost/probe.ts +74 -0
  1244. package/extensions/mattermost/src/mattermost/send.ts +231 -0
  1245. package/extensions/mattermost/src/normalize.ts +46 -0
  1246. package/extensions/mattermost/src/onboarding-helpers.ts +44 -0
  1247. package/extensions/mattermost/src/onboarding.ts +186 -0
  1248. package/extensions/mattermost/src/runtime.ts +14 -0
  1249. package/extensions/mattermost/src/types.ts +52 -0
  1250. package/extensions/memory-core/index.ts +38 -0
  1251. package/extensions/memory-core/node_modules/.bin/clawdbot +21 -0
  1252. package/extensions/memory-core/node_modules/.bin/moltbot +21 -0
  1253. package/extensions/memory-core/node_modules/.bin/openclaw +21 -0
  1254. package/extensions/memory-core/openclaw.plugin.json +9 -0
  1255. package/extensions/memory-core/package.json +17 -0
  1256. package/extensions/memory-lancedb/config.ts +139 -0
  1257. package/extensions/memory-lancedb/index.test.ts +295 -0
  1258. package/extensions/memory-lancedb/index.ts +608 -0
  1259. package/extensions/memory-lancedb/node_modules/.bin/openai +21 -0
  1260. package/extensions/memory-lancedb/node_modules/.bin/openclaw +21 -0
  1261. package/extensions/memory-lancedb/openclaw.plugin.json +60 -0
  1262. package/extensions/memory-lancedb/package.json +19 -0
  1263. package/extensions/minimax-portal-auth/README.md +33 -0
  1264. package/extensions/minimax-portal-auth/index.ts +155 -0
  1265. package/extensions/minimax-portal-auth/node_modules/.bin/openclaw +21 -0
  1266. package/extensions/minimax-portal-auth/oauth.ts +247 -0
  1267. package/extensions/minimax-portal-auth/openclaw.plugin.json +9 -0
  1268. package/extensions/minimax-portal-auth/package.json +14 -0
  1269. package/extensions/msteams/CHANGELOG.md +89 -0
  1270. package/extensions/msteams/index.ts +17 -0
  1271. package/extensions/msteams/node_modules/.bin/clawdbot +21 -0
  1272. package/extensions/msteams/node_modules/.bin/moltbot +21 -0
  1273. package/extensions/msteams/node_modules/.bin/openclaw +21 -0
  1274. package/extensions/msteams/openclaw.plugin.json +9 -0
  1275. package/extensions/msteams/package.json +39 -0
  1276. package/extensions/msteams/src/attachments/download.ts +283 -0
  1277. package/extensions/msteams/src/attachments/graph.ts +353 -0
  1278. package/extensions/msteams/src/attachments/html.ts +90 -0
  1279. package/extensions/msteams/src/attachments/payload.ts +22 -0
  1280. package/extensions/msteams/src/attachments/shared.ts +291 -0
  1281. package/extensions/msteams/src/attachments/types.ts +37 -0
  1282. package/extensions/msteams/src/attachments.test.ts +459 -0
  1283. package/extensions/msteams/src/attachments.ts +18 -0
  1284. package/extensions/msteams/src/channel.directory.test.ts +48 -0
  1285. package/extensions/msteams/src/channel.ts +459 -0
  1286. package/extensions/msteams/src/conversation-store-fs.test.ts +88 -0
  1287. package/extensions/msteams/src/conversation-store-fs.ts +165 -0
  1288. package/extensions/msteams/src/conversation-store-memory.ts +47 -0
  1289. package/extensions/msteams/src/conversation-store.ts +41 -0
  1290. package/extensions/msteams/src/directory-live.ts +205 -0
  1291. package/extensions/msteams/src/errors.test.ts +45 -0
  1292. package/extensions/msteams/src/errors.ts +190 -0
  1293. package/extensions/msteams/src/file-consent-helpers.test.ts +243 -0
  1294. package/extensions/msteams/src/file-consent-helpers.ts +73 -0
  1295. package/extensions/msteams/src/file-consent.ts +126 -0
  1296. package/extensions/msteams/src/graph-chat.ts +53 -0
  1297. package/extensions/msteams/src/graph-upload.ts +453 -0
  1298. package/extensions/msteams/src/inbound.test.ts +66 -0
  1299. package/extensions/msteams/src/inbound.ts +48 -0
  1300. package/extensions/msteams/src/index.ts +4 -0
  1301. package/extensions/msteams/src/media-helpers.test.ts +189 -0
  1302. package/extensions/msteams/src/media-helpers.ts +86 -0
  1303. package/extensions/msteams/src/messenger.test.ts +248 -0
  1304. package/extensions/msteams/src/messenger.ts +495 -0
  1305. package/extensions/msteams/src/monitor-handler/inbound-media.ts +128 -0
  1306. package/extensions/msteams/src/monitor-handler/message-handler.ts +641 -0
  1307. package/extensions/msteams/src/monitor-handler.ts +162 -0
  1308. package/extensions/msteams/src/monitor-types.ts +5 -0
  1309. package/extensions/msteams/src/monitor.ts +295 -0
  1310. package/extensions/msteams/src/onboarding.ts +431 -0
  1311. package/extensions/msteams/src/outbound.ts +46 -0
  1312. package/extensions/msteams/src/pending-uploads.ts +89 -0
  1313. package/extensions/msteams/src/policy.test.ts +209 -0
  1314. package/extensions/msteams/src/policy.ts +273 -0
  1315. package/extensions/msteams/src/polls-store-memory.ts +32 -0
  1316. package/extensions/msteams/src/polls-store.test.ts +38 -0
  1317. package/extensions/msteams/src/polls.test.ts +72 -0
  1318. package/extensions/msteams/src/polls.ts +315 -0
  1319. package/extensions/msteams/src/probe.test.ts +58 -0
  1320. package/extensions/msteams/src/probe.ts +107 -0
  1321. package/extensions/msteams/src/reply-dispatcher.ts +132 -0
  1322. package/extensions/msteams/src/resolve-allowlist.ts +297 -0
  1323. package/extensions/msteams/src/runtime.ts +14 -0
  1324. package/extensions/msteams/src/sdk-types.ts +19 -0
  1325. package/extensions/msteams/src/sdk.ts +33 -0
  1326. package/extensions/msteams/src/send-context.ts +164 -0
  1327. package/extensions/msteams/src/send.ts +519 -0
  1328. package/extensions/msteams/src/sent-message-cache.test.ts +15 -0
  1329. package/extensions/msteams/src/sent-message-cache.ts +47 -0
  1330. package/extensions/msteams/src/storage.ts +25 -0
  1331. package/extensions/msteams/src/store-fs.ts +83 -0
  1332. package/extensions/msteams/src/token.ts +19 -0
  1333. package/extensions/nextcloud-talk/index.ts +17 -0
  1334. package/extensions/nextcloud-talk/node_modules/.bin/openclaw +21 -0
  1335. package/extensions/nextcloud-talk/openclaw.plugin.json +9 -0
  1336. package/extensions/nextcloud-talk/package.json +33 -0
  1337. package/extensions/nextcloud-talk/src/accounts.ts +174 -0
  1338. package/extensions/nextcloud-talk/src/channel.ts +409 -0
  1339. package/extensions/nextcloud-talk/src/config-schema.ts +79 -0
  1340. package/extensions/nextcloud-talk/src/format.ts +79 -0
  1341. package/extensions/nextcloud-talk/src/inbound.ts +327 -0
  1342. package/extensions/nextcloud-talk/src/monitor.ts +246 -0
  1343. package/extensions/nextcloud-talk/src/normalize.ts +39 -0
  1344. package/extensions/nextcloud-talk/src/onboarding.ts +343 -0
  1345. package/extensions/nextcloud-talk/src/policy.test.ts +33 -0
  1346. package/extensions/nextcloud-talk/src/policy.ts +180 -0
  1347. package/extensions/nextcloud-talk/src/room-info.ts +125 -0
  1348. package/extensions/nextcloud-talk/src/runtime.ts +14 -0
  1349. package/extensions/nextcloud-talk/src/send.ts +215 -0
  1350. package/extensions/nextcloud-talk/src/signature.ts +72 -0
  1351. package/extensions/nextcloud-talk/src/types.ts +181 -0
  1352. package/extensions/nostr/CHANGELOG.md +80 -0
  1353. package/extensions/nostr/README.md +136 -0
  1354. package/extensions/nostr/index.ts +68 -0
  1355. package/extensions/nostr/node_modules/.bin/clawdbot +21 -0
  1356. package/extensions/nostr/node_modules/.bin/moltbot +21 -0
  1357. package/extensions/nostr/node_modules/.bin/openclaw +21 -0
  1358. package/extensions/nostr/openclaw.plugin.json +9 -0
  1359. package/extensions/nostr/package.json +34 -0
  1360. package/extensions/nostr/src/channel.test.ts +151 -0
  1361. package/extensions/nostr/src/channel.ts +353 -0
  1362. package/extensions/nostr/src/config-schema.ts +90 -0
  1363. package/extensions/nostr/src/metrics.ts +478 -0
  1364. package/extensions/nostr/src/nostr-bus.fuzz.test.ts +533 -0
  1365. package/extensions/nostr/src/nostr-bus.integration.test.ts +448 -0
  1366. package/extensions/nostr/src/nostr-bus.test.ts +199 -0
  1367. package/extensions/nostr/src/nostr-bus.ts +715 -0
  1368. package/extensions/nostr/src/nostr-profile-http.test.ts +378 -0
  1369. package/extensions/nostr/src/nostr-profile-http.ts +519 -0
  1370. package/extensions/nostr/src/nostr-profile-import.test.ts +119 -0
  1371. package/extensions/nostr/src/nostr-profile-import.ts +262 -0
  1372. package/extensions/nostr/src/nostr-profile.fuzz.test.ts +477 -0
  1373. package/extensions/nostr/src/nostr-profile.test.ts +410 -0
  1374. package/extensions/nostr/src/nostr-profile.ts +277 -0
  1375. package/extensions/nostr/src/nostr-state-store.test.ts +131 -0
  1376. package/extensions/nostr/src/nostr-state-store.ts +226 -0
  1377. package/extensions/nostr/src/runtime.ts +14 -0
  1378. package/extensions/nostr/src/seen-tracker.ts +303 -0
  1379. package/extensions/nostr/src/types.test.ts +157 -0
  1380. package/extensions/nostr/src/types.ts +101 -0
  1381. package/extensions/nostr/test/setup.ts +5 -0
  1382. package/extensions/open-prose/README.md +25 -0
  1383. package/extensions/open-prose/index.ts +5 -0
  1384. package/extensions/open-prose/node_modules/.bin/openclaw +21 -0
  1385. package/extensions/open-prose/openclaw.plugin.json +11 -0
  1386. package/extensions/open-prose/package.json +14 -0
  1387. package/extensions/open-prose/skills/prose/LICENSE +21 -0
  1388. package/extensions/open-prose/skills/prose/SKILL.md +323 -0
  1389. package/extensions/open-prose/skills/prose/alt-borges.md +141 -0
  1390. package/extensions/open-prose/skills/prose/alts/arabian-nights.md +358 -0
  1391. package/extensions/open-prose/skills/prose/alts/borges.md +360 -0
  1392. package/extensions/open-prose/skills/prose/alts/folk.md +322 -0
  1393. package/extensions/open-prose/skills/prose/alts/homer.md +346 -0
  1394. package/extensions/open-prose/skills/prose/alts/kafka.md +373 -0
  1395. package/extensions/open-prose/skills/prose/compiler.md +2971 -0
  1396. package/extensions/open-prose/skills/prose/examples/01-hello-world.prose +4 -0
  1397. package/extensions/open-prose/skills/prose/examples/02-research-and-summarize.prose +6 -0
  1398. package/extensions/open-prose/skills/prose/examples/03-code-review.prose +17 -0
  1399. package/extensions/open-prose/skills/prose/examples/04-write-and-refine.prose +14 -0
  1400. package/extensions/open-prose/skills/prose/examples/05-debug-issue.prose +20 -0
  1401. package/extensions/open-prose/skills/prose/examples/06-explain-codebase.prose +17 -0
  1402. package/extensions/open-prose/skills/prose/examples/07-refactor.prose +20 -0
  1403. package/extensions/open-prose/skills/prose/examples/08-blog-post.prose +20 -0
  1404. package/extensions/open-prose/skills/prose/examples/09-research-with-agents.prose +25 -0
  1405. package/extensions/open-prose/skills/prose/examples/10-code-review-agents.prose +32 -0
  1406. package/extensions/open-prose/skills/prose/examples/11-skills-and-imports.prose +27 -0
  1407. package/extensions/open-prose/skills/prose/examples/12-secure-agent-permissions.prose +43 -0
  1408. package/extensions/open-prose/skills/prose/examples/13-variables-and-context.prose +51 -0
  1409. package/extensions/open-prose/skills/prose/examples/14-composition-blocks.prose +48 -0
  1410. package/extensions/open-prose/skills/prose/examples/15-inline-sequences.prose +23 -0
  1411. package/extensions/open-prose/skills/prose/examples/16-parallel-reviews.prose +19 -0
  1412. package/extensions/open-prose/skills/prose/examples/17-parallel-research.prose +19 -0
  1413. package/extensions/open-prose/skills/prose/examples/18-mixed-parallel-sequential.prose +36 -0
  1414. package/extensions/open-prose/skills/prose/examples/19-advanced-parallel.prose +71 -0
  1415. package/extensions/open-prose/skills/prose/examples/20-fixed-loops.prose +20 -0
  1416. package/extensions/open-prose/skills/prose/examples/21-pipeline-operations.prose +35 -0
  1417. package/extensions/open-prose/skills/prose/examples/22-error-handling.prose +51 -0
  1418. package/extensions/open-prose/skills/prose/examples/23-retry-with-backoff.prose +63 -0
  1419. package/extensions/open-prose/skills/prose/examples/24-choice-blocks.prose +86 -0
  1420. package/extensions/open-prose/skills/prose/examples/25-conditionals.prose +114 -0
  1421. package/extensions/open-prose/skills/prose/examples/26-parameterized-blocks.prose +100 -0
  1422. package/extensions/open-prose/skills/prose/examples/27-string-interpolation.prose +105 -0
  1423. package/extensions/open-prose/skills/prose/examples/28-automated-pr-review.prose +37 -0
  1424. package/extensions/open-prose/skills/prose/examples/28-gas-town.prose +1572 -0
  1425. package/extensions/open-prose/skills/prose/examples/29-captains-chair.prose +218 -0
  1426. package/extensions/open-prose/skills/prose/examples/30-captains-chair-simple.prose +42 -0
  1427. package/extensions/open-prose/skills/prose/examples/31-captains-chair-with-memory.prose +145 -0
  1428. package/extensions/open-prose/skills/prose/examples/33-pr-review-autofix.prose +168 -0
  1429. package/extensions/open-prose/skills/prose/examples/34-content-pipeline.prose +204 -0
  1430. package/extensions/open-prose/skills/prose/examples/35-feature-factory.prose +296 -0
  1431. package/extensions/open-prose/skills/prose/examples/36-bug-hunter.prose +237 -0
  1432. package/extensions/open-prose/skills/prose/examples/37-the-forge.prose +1474 -0
  1433. package/extensions/open-prose/skills/prose/examples/38-skill-scan.prose +455 -0
  1434. package/extensions/open-prose/skills/prose/examples/39-architect-by-simulation.prose +277 -0
  1435. package/extensions/open-prose/skills/prose/examples/40-rlm-self-refine.prose +32 -0
  1436. package/extensions/open-prose/skills/prose/examples/41-rlm-divide-conquer.prose +38 -0
  1437. package/extensions/open-prose/skills/prose/examples/42-rlm-filter-recurse.prose +46 -0
  1438. package/extensions/open-prose/skills/prose/examples/43-rlm-pairwise.prose +50 -0
  1439. package/extensions/open-prose/skills/prose/examples/44-run-endpoint-ux-test.prose +261 -0
  1440. package/extensions/open-prose/skills/prose/examples/45-plugin-release.prose +159 -0
  1441. package/extensions/open-prose/skills/prose/examples/45-run-endpoint-ux-test-with-remediation.prose +637 -0
  1442. package/extensions/open-prose/skills/prose/examples/46-run-endpoint-ux-test-fast.prose +148 -0
  1443. package/extensions/open-prose/skills/prose/examples/46-workflow-crystallizer.prose +225 -0
  1444. package/extensions/open-prose/skills/prose/examples/47-language-self-improvement.prose +356 -0
  1445. package/extensions/open-prose/skills/prose/examples/48-habit-miner.prose +445 -0
  1446. package/extensions/open-prose/skills/prose/examples/49-prose-run-retrospective.prose +210 -0
  1447. package/extensions/open-prose/skills/prose/examples/README.md +391 -0
  1448. package/extensions/open-prose/skills/prose/examples/roadmap/README.md +22 -0
  1449. package/extensions/open-prose/skills/prose/examples/roadmap/iterative-refinement.prose +20 -0
  1450. package/extensions/open-prose/skills/prose/examples/roadmap/parallel-review.prose +18 -0
  1451. package/extensions/open-prose/skills/prose/examples/roadmap/simple-pipeline.prose +17 -0
  1452. package/extensions/open-prose/skills/prose/examples/roadmap/syntax/open-prose-syntax.prose +223 -0
  1453. package/extensions/open-prose/skills/prose/guidance/antipatterns.md +951 -0
  1454. package/extensions/open-prose/skills/prose/guidance/patterns.md +700 -0
  1455. package/extensions/open-prose/skills/prose/guidance/system-prompt.md +180 -0
  1456. package/extensions/open-prose/skills/prose/help.md +144 -0
  1457. package/extensions/open-prose/skills/prose/lib/README.md +108 -0
  1458. package/extensions/open-prose/skills/prose/lib/calibrator.prose +215 -0
  1459. package/extensions/open-prose/skills/prose/lib/cost-analyzer.prose +174 -0
  1460. package/extensions/open-prose/skills/prose/lib/error-forensics.prose +250 -0
  1461. package/extensions/open-prose/skills/prose/lib/inspector.prose +196 -0
  1462. package/extensions/open-prose/skills/prose/lib/profiler.prose +460 -0
  1463. package/extensions/open-prose/skills/prose/lib/program-improver.prose +275 -0
  1464. package/extensions/open-prose/skills/prose/lib/project-memory.prose +118 -0
  1465. package/extensions/open-prose/skills/prose/lib/user-memory.prose +93 -0
  1466. package/extensions/open-prose/skills/prose/lib/vm-improver.prose +243 -0
  1467. package/extensions/open-prose/skills/prose/primitives/session.md +593 -0
  1468. package/extensions/open-prose/skills/prose/prose.md +1237 -0
  1469. package/extensions/open-prose/skills/prose/state/filesystem.md +498 -0
  1470. package/extensions/open-prose/skills/prose/state/in-context.md +384 -0
  1471. package/extensions/open-prose/skills/prose/state/postgres.md +880 -0
  1472. package/extensions/open-prose/skills/prose/state/sqlite.md +574 -0
  1473. package/extensions/qwen-portal-auth/README.md +24 -0
  1474. package/extensions/qwen-portal-auth/index.ts +130 -0
  1475. package/extensions/qwen-portal-auth/oauth.ts +190 -0
  1476. package/extensions/qwen-portal-auth/openclaw.plugin.json +9 -0
  1477. package/extensions/signal/index.ts +17 -0
  1478. package/extensions/signal/node_modules/.bin/openclaw +21 -0
  1479. package/extensions/signal/openclaw.plugin.json +9 -0
  1480. package/extensions/signal/package.json +14 -0
  1481. package/extensions/signal/src/channel.ts +315 -0
  1482. package/extensions/signal/src/runtime.ts +14 -0
  1483. package/extensions/slack/index.ts +17 -0
  1484. package/extensions/slack/node_modules/.bin/openclaw +21 -0
  1485. package/extensions/slack/openclaw.plugin.json +9 -0
  1486. package/extensions/slack/package.json +14 -0
  1487. package/extensions/slack/src/channel.ts +604 -0
  1488. package/extensions/slack/src/runtime.ts +14 -0
  1489. package/extensions/telegram/index.ts +17 -0
  1490. package/extensions/telegram/node_modules/.bin/openclaw +21 -0
  1491. package/extensions/telegram/openclaw.plugin.json +9 -0
  1492. package/extensions/telegram/package.json +14 -0
  1493. package/extensions/telegram/src/channel.ts +482 -0
  1494. package/extensions/telegram/src/runtime.ts +14 -0
  1495. package/extensions/tlon/README.md +5 -0
  1496. package/extensions/tlon/index.ts +17 -0
  1497. package/extensions/tlon/node_modules/.bin/openclaw +21 -0
  1498. package/extensions/tlon/openclaw.plugin.json +9 -0
  1499. package/extensions/tlon/package.json +33 -0
  1500. package/extensions/tlon/src/channel.ts +392 -0
  1501. package/extensions/tlon/src/config-schema.test.ts +31 -0
  1502. package/extensions/tlon/src/config-schema.ts +45 -0
  1503. package/extensions/tlon/src/monitor/discovery.ts +76 -0
  1504. package/extensions/tlon/src/monitor/history.ts +90 -0
  1505. package/extensions/tlon/src/monitor/index.ts +580 -0
  1506. package/extensions/tlon/src/monitor/processed-messages.test.ts +23 -0
  1507. package/extensions/tlon/src/monitor/processed-messages.ts +46 -0
  1508. package/extensions/tlon/src/monitor/utils.ts +106 -0
  1509. package/extensions/tlon/src/onboarding.ts +214 -0
  1510. package/extensions/tlon/src/runtime.ts +14 -0
  1511. package/extensions/tlon/src/targets.ts +89 -0
  1512. package/extensions/tlon/src/types.ts +92 -0
  1513. package/extensions/tlon/src/urbit/auth.ts +18 -0
  1514. package/extensions/tlon/src/urbit/http-api.ts +38 -0
  1515. package/extensions/tlon/src/urbit/send.test.ts +38 -0
  1516. package/extensions/tlon/src/urbit/send.ts +131 -0
  1517. package/extensions/tlon/src/urbit/sse-client.test.ts +40 -0
  1518. package/extensions/tlon/src/urbit/sse-client.ts +395 -0
  1519. package/extensions/twitch/CHANGELOG.md +51 -0
  1520. package/extensions/twitch/README.md +89 -0
  1521. package/extensions/twitch/index.ts +20 -0
  1522. package/extensions/twitch/node_modules/.bin/clawdbot +21 -0
  1523. package/extensions/twitch/node_modules/.bin/moltbot +21 -0
  1524. package/extensions/twitch/node_modules/.bin/openclaw +21 -0
  1525. package/extensions/twitch/openclaw.plugin.json +9 -0
  1526. package/extensions/twitch/package.json +20 -0
  1527. package/extensions/twitch/src/access-control.test.ts +489 -0
  1528. package/extensions/twitch/src/access-control.ts +166 -0
  1529. package/extensions/twitch/src/actions.ts +173 -0
  1530. package/extensions/twitch/src/client-manager-registry.ts +115 -0
  1531. package/extensions/twitch/src/config-schema.ts +84 -0
  1532. package/extensions/twitch/src/config.test.ts +87 -0
  1533. package/extensions/twitch/src/config.ts +116 -0
  1534. package/extensions/twitch/src/monitor.ts +272 -0
  1535. package/extensions/twitch/src/onboarding.test.ts +311 -0
  1536. package/extensions/twitch/src/onboarding.ts +417 -0
  1537. package/extensions/twitch/src/outbound.test.ts +373 -0
  1538. package/extensions/twitch/src/outbound.ts +184 -0
  1539. package/extensions/twitch/src/plugin.test.ts +39 -0
  1540. package/extensions/twitch/src/plugin.ts +274 -0
  1541. package/extensions/twitch/src/probe.test.ts +195 -0
  1542. package/extensions/twitch/src/probe.ts +120 -0
  1543. package/extensions/twitch/src/resolver.ts +137 -0
  1544. package/extensions/twitch/src/runtime.ts +14 -0
  1545. package/extensions/twitch/src/send.test.ts +289 -0
  1546. package/extensions/twitch/src/send.ts +136 -0
  1547. package/extensions/twitch/src/status.test.ts +270 -0
  1548. package/extensions/twitch/src/status.ts +178 -0
  1549. package/extensions/twitch/src/token.test.ts +171 -0
  1550. package/extensions/twitch/src/token.ts +91 -0
  1551. package/extensions/twitch/src/twitch-client.test.ts +589 -0
  1552. package/extensions/twitch/src/twitch-client.ts +277 -0
  1553. package/extensions/twitch/src/types.ts +143 -0
  1554. package/extensions/twitch/src/utils/markdown.ts +98 -0
  1555. package/extensions/twitch/src/utils/twitch.ts +78 -0
  1556. package/extensions/twitch/test/setup.ts +7 -0
  1557. package/extensions/voice-call/CHANGELOG.md +115 -0
  1558. package/extensions/voice-call/README.md +139 -0
  1559. package/extensions/voice-call/index.ts +493 -0
  1560. package/extensions/voice-call/node_modules/.bin/openclaw +21 -0
  1561. package/extensions/voice-call/openclaw.plugin.json +559 -0
  1562. package/extensions/voice-call/package.json +19 -0
  1563. package/extensions/voice-call/src/allowlist.ts +19 -0
  1564. package/extensions/voice-call/src/cli.ts +279 -0
  1565. package/extensions/voice-call/src/config.test.ts +234 -0
  1566. package/extensions/voice-call/src/config.ts +523 -0
  1567. package/extensions/voice-call/src/core-bridge.ts +159 -0
  1568. package/extensions/voice-call/src/manager/context.ts +21 -0
  1569. package/extensions/voice-call/src/manager/events.ts +188 -0
  1570. package/extensions/voice-call/src/manager/lookup.ts +35 -0
  1571. package/extensions/voice-call/src/manager/outbound.ts +275 -0
  1572. package/extensions/voice-call/src/manager/state.ts +48 -0
  1573. package/extensions/voice-call/src/manager/store.ts +91 -0
  1574. package/extensions/voice-call/src/manager/timers.ts +89 -0
  1575. package/extensions/voice-call/src/manager/twiml.ts +9 -0
  1576. package/extensions/voice-call/src/manager.test.ts +224 -0
  1577. package/extensions/voice-call/src/manager.ts +887 -0
  1578. package/extensions/voice-call/src/media-stream.test.ts +96 -0
  1579. package/extensions/voice-call/src/media-stream.ts +411 -0
  1580. package/extensions/voice-call/src/providers/base.ts +67 -0
  1581. package/extensions/voice-call/src/providers/index.ts +10 -0
  1582. package/extensions/voice-call/src/providers/mock.ts +165 -0
  1583. package/extensions/voice-call/src/providers/plivo.test.ts +27 -0
  1584. package/extensions/voice-call/src/providers/plivo.ts +515 -0
  1585. package/extensions/voice-call/src/providers/stt-openai-realtime.ts +311 -0
  1586. package/extensions/voice-call/src/providers/telnyx.ts +371 -0
  1587. package/extensions/voice-call/src/providers/tts-openai.ts +259 -0
  1588. package/extensions/voice-call/src/providers/twilio/api.ts +42 -0
  1589. package/extensions/voice-call/src/providers/twilio/webhook.ts +32 -0
  1590. package/extensions/voice-call/src/providers/twilio.test.ts +60 -0
  1591. package/extensions/voice-call/src/providers/twilio.ts +626 -0
  1592. package/extensions/voice-call/src/response-generator.ts +158 -0
  1593. package/extensions/voice-call/src/runtime.ts +212 -0
  1594. package/extensions/voice-call/src/telephony-audio.ts +90 -0
  1595. package/extensions/voice-call/src/telephony-tts.ts +104 -0
  1596. package/extensions/voice-call/src/tunnel.ts +314 -0
  1597. package/extensions/voice-call/src/types.ts +272 -0
  1598. package/extensions/voice-call/src/utils.ts +14 -0
  1599. package/extensions/voice-call/src/voice-mapping.ts +67 -0
  1600. package/extensions/voice-call/src/webhook-security.test.ts +377 -0
  1601. package/extensions/voice-call/src/webhook-security.ts +689 -0
  1602. package/extensions/voice-call/src/webhook.ts +491 -0
  1603. package/extensions/whatsapp/index.ts +17 -0
  1604. package/extensions/whatsapp/node_modules/.bin/openclaw +21 -0
  1605. package/extensions/whatsapp/openclaw.plugin.json +9 -0
  1606. package/extensions/whatsapp/package.json +14 -0
  1607. package/extensions/whatsapp/src/channel.ts +508 -0
  1608. package/extensions/whatsapp/src/runtime.ts +14 -0
  1609. package/extensions/zalo/CHANGELOG.md +95 -0
  1610. package/extensions/zalo/README.md +50 -0
  1611. package/extensions/zalo/index.ts +19 -0
  1612. package/extensions/zalo/node_modules/.bin/clawdbot +21 -0
  1613. package/extensions/zalo/node_modules/.bin/moltbot +21 -0
  1614. package/extensions/zalo/node_modules/.bin/openclaw +21 -0
  1615. package/extensions/zalo/openclaw.plugin.json +9 -0
  1616. package/extensions/zalo/package.json +36 -0
  1617. package/extensions/zalo/src/accounts.ts +80 -0
  1618. package/extensions/zalo/src/actions.ts +67 -0
  1619. package/extensions/zalo/src/api.ts +208 -0
  1620. package/extensions/zalo/src/channel.directory.test.ts +43 -0
  1621. package/extensions/zalo/src/channel.ts +414 -0
  1622. package/extensions/zalo/src/config-schema.ts +25 -0
  1623. package/extensions/zalo/src/monitor.ts +764 -0
  1624. package/extensions/zalo/src/monitor.webhook.test.ts +73 -0
  1625. package/extensions/zalo/src/onboarding.ts +401 -0
  1626. package/extensions/zalo/src/probe.ts +46 -0
  1627. package/extensions/zalo/src/proxy.ts +21 -0
  1628. package/extensions/zalo/src/runtime.ts +14 -0
  1629. package/extensions/zalo/src/send.ts +124 -0
  1630. package/extensions/zalo/src/status-issues.ts +53 -0
  1631. package/extensions/zalo/src/token.ts +63 -0
  1632. package/extensions/zalo/src/types.ts +44 -0
  1633. package/extensions/zalouser/CHANGELOG.md +67 -0
  1634. package/extensions/zalouser/README.md +225 -0
  1635. package/extensions/zalouser/index.ts +31 -0
  1636. package/extensions/zalouser/node_modules/.bin/clawdbot +21 -0
  1637. package/extensions/zalouser/node_modules/.bin/moltbot +21 -0
  1638. package/extensions/zalouser/node_modules/.bin/openclaw +21 -0
  1639. package/extensions/zalouser/openclaw.plugin.json +9 -0
  1640. package/extensions/zalouser/package.json +36 -0
  1641. package/extensions/zalouser/src/accounts.ts +135 -0
  1642. package/extensions/zalouser/src/channel.test.ts +18 -0
  1643. package/extensions/zalouser/src/channel.ts +686 -0
  1644. package/extensions/zalouser/src/config-schema.ts +28 -0
  1645. package/extensions/zalouser/src/monitor.ts +601 -0
  1646. package/extensions/zalouser/src/onboarding.ts +504 -0
  1647. package/extensions/zalouser/src/probe.ts +28 -0
  1648. package/extensions/zalouser/src/runtime.ts +14 -0
  1649. package/extensions/zalouser/src/send.ts +160 -0
  1650. package/extensions/zalouser/src/status-issues.test.ts +57 -0
  1651. package/extensions/zalouser/src/status-issues.ts +89 -0
  1652. package/extensions/zalouser/src/tool.ts +164 -0
  1653. package/extensions/zalouser/src/types.ts +110 -0
  1654. package/extensions/zalouser/src/zca.ts +202 -0
  1655. package/openclaw.mjs +14 -0
  1656. package/package.json +244 -0
  1657. package/skills/1password/SKILL.md +70 -0
  1658. package/skills/1password/references/cli-examples.md +29 -0
  1659. package/skills/1password/references/get-started.md +17 -0
  1660. package/skills/apple-notes/SKILL.md +77 -0
  1661. package/skills/apple-reminders/SKILL.md +96 -0
  1662. package/skills/bear-notes/SKILL.md +107 -0
  1663. package/skills/bird/SKILL.md +224 -0
  1664. package/skills/blogwatcher/SKILL.md +69 -0
  1665. package/skills/blucli/SKILL.md +47 -0
  1666. package/skills/bluebubbles/SKILL.md +131 -0
  1667. package/skills/camsnap/SKILL.md +45 -0
  1668. package/skills/canvas/SKILL.md +198 -0
  1669. package/skills/clawhub/SKILL.md +77 -0
  1670. package/skills/coding-agent/SKILL.md +284 -0
  1671. package/skills/discord/SKILL.md +578 -0
  1672. package/skills/eightctl/SKILL.md +50 -0
  1673. package/skills/food-order/SKILL.md +48 -0
  1674. package/skills/gemini/SKILL.md +43 -0
  1675. package/skills/gifgrep/SKILL.md +79 -0
  1676. package/skills/github/SKILL.md +77 -0
  1677. package/skills/gog/SKILL.md +116 -0
  1678. package/skills/goplaces/SKILL.md +52 -0
  1679. package/skills/healthcheck/SKILL.md +245 -0
  1680. package/skills/himalaya/SKILL.md +257 -0
  1681. package/skills/himalaya/references/configuration.md +184 -0
  1682. package/skills/himalaya/references/message-composition.md +199 -0
  1683. package/skills/imsg/SKILL.md +74 -0
  1684. package/skills/local-places/SERVER_README.md +101 -0
  1685. package/skills/local-places/SKILL.md +102 -0
  1686. package/skills/local-places/pyproject.toml +21 -0
  1687. package/skills/local-places/src/local_places/__init__.py +2 -0
  1688. package/skills/local-places/src/local_places/google_places.py +314 -0
  1689. package/skills/local-places/src/local_places/main.py +65 -0
  1690. package/skills/local-places/src/local_places/schemas.py +107 -0
  1691. package/skills/mcporter/SKILL.md +61 -0
  1692. package/skills/model-usage/SKILL.md +69 -0
  1693. package/skills/model-usage/references/codexbar-cli.md +33 -0
  1694. package/skills/model-usage/scripts/model_usage.py +310 -0
  1695. package/skills/nano-banana-pro/SKILL.md +58 -0
  1696. package/skills/nano-banana-pro/scripts/generate_image.py +184 -0
  1697. package/skills/nano-pdf/SKILL.md +38 -0
  1698. package/skills/notion/SKILL.md +172 -0
  1699. package/skills/obsidian/SKILL.md +81 -0
  1700. package/skills/openai-image-gen/SKILL.md +89 -0
  1701. package/skills/openai-image-gen/scripts/gen.py +240 -0
  1702. package/skills/openai-whisper/SKILL.md +38 -0
  1703. package/skills/openai-whisper-api/SKILL.md +52 -0
  1704. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  1705. package/skills/openhue/SKILL.md +51 -0
  1706. package/skills/oracle/SKILL.md +125 -0
  1707. package/skills/ordercli/SKILL.md +78 -0
  1708. package/skills/peekaboo/SKILL.md +190 -0
  1709. package/skills/sag/SKILL.md +87 -0
  1710. package/skills/session-logs/SKILL.md +115 -0
  1711. package/skills/sherpa-onnx-tts/SKILL.md +103 -0
  1712. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  1713. package/skills/skill-creator/SKILL.md +370 -0
  1714. package/skills/skill-creator/license.txt +202 -0
  1715. package/skills/skill-creator/scripts/init_skill.py +378 -0
  1716. package/skills/skill-creator/scripts/package_skill.py +111 -0
  1717. package/skills/skill-creator/scripts/quick_validate.py +101 -0
  1718. package/skills/slack/SKILL.md +144 -0
  1719. package/skills/songsee/SKILL.md +49 -0
  1720. package/skills/sonoscli/SKILL.md +46 -0
  1721. package/skills/spotify-player/SKILL.md +64 -0
  1722. package/skills/summarize/SKILL.md +87 -0
  1723. package/skills/things-mac/SKILL.md +86 -0
  1724. package/skills/tmux/SKILL.md +135 -0
  1725. package/skills/tmux/scripts/find-sessions.sh +112 -0
  1726. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  1727. package/skills/trello/SKILL.md +95 -0
  1728. package/skills/video-frames/SKILL.md +46 -0
  1729. package/skills/video-frames/scripts/frame.sh +81 -0
  1730. package/skills/voice-call/SKILL.md +45 -0
  1731. package/skills/wacli/SKILL.md +72 -0
  1732. package/skills/weather/SKILL.md +54 -0
@@ -0,0 +1,1298 @@
1
+ import { t as createSubsystemLogger } from "./subsystem-CAq3uyo7.js";
2
+ import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-CudnqybF.js";
3
+ import { o as resizeToJpeg, r as getImageMetadata } from "./routes-DW4Wu2jw.js";
4
+ import path from "node:path";
5
+ import fs from "node:fs/promises";
6
+ import { createHash } from "node:crypto";
7
+
8
+ //#region src/auto-reply/thinking.ts
9
+ function normalizeProviderId(provider) {
10
+ if (!provider) return "";
11
+ const normalized = provider.trim().toLowerCase();
12
+ if (normalized === "z.ai" || normalized === "z-ai") return "zai";
13
+ return normalized;
14
+ }
15
+ function isBinaryThinkingProvider(provider) {
16
+ return normalizeProviderId(provider) === "zai";
17
+ }
18
+ const XHIGH_MODEL_REFS = [
19
+ "openai/gpt-5.2",
20
+ "openai-codex/gpt-5.3-codex",
21
+ "openai-codex/gpt-5.2-codex",
22
+ "openai-codex/gpt-5.1-codex"
23
+ ];
24
+ const XHIGH_MODEL_SET = new Set(XHIGH_MODEL_REFS.map((entry) => entry.toLowerCase()));
25
+ const XHIGH_MODEL_IDS = new Set(XHIGH_MODEL_REFS.map((entry) => entry.split("/")[1]?.toLowerCase()).filter((entry) => Boolean(entry)));
26
+ function normalizeThinkLevel(raw) {
27
+ if (!raw) return;
28
+ const key = raw.trim().toLowerCase();
29
+ const collapsed = key.replace(/[\s_-]+/g, "");
30
+ if (collapsed === "xhigh" || collapsed === "extrahigh") return "xhigh";
31
+ if (["off"].includes(key)) return "off";
32
+ if ([
33
+ "on",
34
+ "enable",
35
+ "enabled"
36
+ ].includes(key)) return "low";
37
+ if (["min", "minimal"].includes(key)) return "minimal";
38
+ if ([
39
+ "low",
40
+ "thinkhard",
41
+ "think-hard",
42
+ "think_hard"
43
+ ].includes(key)) return "low";
44
+ if ([
45
+ "mid",
46
+ "med",
47
+ "medium",
48
+ "thinkharder",
49
+ "think-harder",
50
+ "harder"
51
+ ].includes(key)) return "medium";
52
+ if ([
53
+ "high",
54
+ "ultra",
55
+ "ultrathink",
56
+ "think-hard",
57
+ "thinkhardest",
58
+ "highest",
59
+ "max"
60
+ ].includes(key)) return "high";
61
+ if (["think"].includes(key)) return "minimal";
62
+ }
63
+ function supportsXHighThinking(provider, model) {
64
+ const modelKey = model?.trim().toLowerCase();
65
+ if (!modelKey) return false;
66
+ const providerKey = provider?.trim().toLowerCase();
67
+ if (providerKey) return XHIGH_MODEL_SET.has(`${providerKey}/${modelKey}`);
68
+ return XHIGH_MODEL_IDS.has(modelKey);
69
+ }
70
+ function listThinkingLevels(provider, model) {
71
+ const levels = [
72
+ "off",
73
+ "minimal",
74
+ "low",
75
+ "medium",
76
+ "high"
77
+ ];
78
+ if (supportsXHighThinking(provider, model)) levels.push("xhigh");
79
+ return levels;
80
+ }
81
+ function listThinkingLevelLabels(provider, model) {
82
+ if (isBinaryThinkingProvider(provider)) return ["off", "on"];
83
+ return listThinkingLevels(provider, model);
84
+ }
85
+ function formatThinkingLevels(provider, model, separator = ", ") {
86
+ return listThinkingLevelLabels(provider, model).join(separator);
87
+ }
88
+ function formatXHighModelHint() {
89
+ const refs = [...XHIGH_MODEL_REFS];
90
+ if (refs.length === 0) return "unknown model";
91
+ if (refs.length === 1) return refs[0];
92
+ if (refs.length === 2) return `${refs[0]} or ${refs[1]}`;
93
+ return `${refs.slice(0, -1).join(", ")} or ${refs[refs.length - 1]}`;
94
+ }
95
+ function normalizeVerboseLevel(raw) {
96
+ if (!raw) return;
97
+ const key = raw.toLowerCase();
98
+ if ([
99
+ "off",
100
+ "false",
101
+ "no",
102
+ "0"
103
+ ].includes(key)) return "off";
104
+ if ([
105
+ "full",
106
+ "all",
107
+ "everything"
108
+ ].includes(key)) return "full";
109
+ if ([
110
+ "on",
111
+ "minimal",
112
+ "true",
113
+ "yes",
114
+ "1"
115
+ ].includes(key)) return "on";
116
+ }
117
+ function normalizeUsageDisplay(raw) {
118
+ if (!raw) return;
119
+ const key = raw.toLowerCase();
120
+ if ([
121
+ "off",
122
+ "false",
123
+ "no",
124
+ "0",
125
+ "disable",
126
+ "disabled"
127
+ ].includes(key)) return "off";
128
+ if ([
129
+ "on",
130
+ "true",
131
+ "yes",
132
+ "1",
133
+ "enable",
134
+ "enabled"
135
+ ].includes(key)) return "tokens";
136
+ if ([
137
+ "tokens",
138
+ "token",
139
+ "tok",
140
+ "minimal",
141
+ "min"
142
+ ].includes(key)) return "tokens";
143
+ if (["full", "session"].includes(key)) return "full";
144
+ }
145
+ function resolveResponseUsageMode(raw) {
146
+ return normalizeUsageDisplay(raw) ?? "off";
147
+ }
148
+ function normalizeElevatedLevel(raw) {
149
+ if (!raw) return;
150
+ const key = raw.toLowerCase();
151
+ if ([
152
+ "off",
153
+ "false",
154
+ "no",
155
+ "0"
156
+ ].includes(key)) return "off";
157
+ if ([
158
+ "full",
159
+ "auto",
160
+ "auto-approve",
161
+ "autoapprove"
162
+ ].includes(key)) return "full";
163
+ if ([
164
+ "ask",
165
+ "prompt",
166
+ "approval",
167
+ "approve"
168
+ ].includes(key)) return "ask";
169
+ if ([
170
+ "on",
171
+ "true",
172
+ "yes",
173
+ "1"
174
+ ].includes(key)) return "on";
175
+ }
176
+ function normalizeReasoningLevel(raw) {
177
+ if (!raw) return;
178
+ const key = raw.toLowerCase();
179
+ if ([
180
+ "off",
181
+ "false",
182
+ "no",
183
+ "0",
184
+ "hide",
185
+ "hidden",
186
+ "disable",
187
+ "disabled"
188
+ ].includes(key)) return "off";
189
+ if ([
190
+ "on",
191
+ "true",
192
+ "yes",
193
+ "1",
194
+ "show",
195
+ "visible",
196
+ "enable",
197
+ "enabled"
198
+ ].includes(key)) return "on";
199
+ if ([
200
+ "stream",
201
+ "streaming",
202
+ "draft",
203
+ "live"
204
+ ].includes(key)) return "stream";
205
+ }
206
+
207
+ //#endregion
208
+ //#region src/agents/pi-embedded-helpers/bootstrap.ts
209
+ function isBase64Signature(value) {
210
+ const trimmed = value.trim();
211
+ if (!trimmed) return false;
212
+ const compact = trimmed.replace(/\s+/g, "");
213
+ if (!/^[A-Za-z0-9+/=_-]+$/.test(compact)) return false;
214
+ const isUrl = compact.includes("-") || compact.includes("_");
215
+ try {
216
+ const buf = Buffer.from(compact, isUrl ? "base64url" : "base64");
217
+ if (buf.length === 0) return false;
218
+ const encoded = buf.toString(isUrl ? "base64url" : "base64");
219
+ const normalize = (input) => input.replace(/=+$/g, "");
220
+ return normalize(encoded) === normalize(compact);
221
+ } catch {
222
+ return false;
223
+ }
224
+ }
225
+ /**
226
+ * Strips Claude-style thought_signature fields from content blocks.
227
+ *
228
+ * Gemini expects thought signatures as base64-encoded bytes, but Claude stores message ids
229
+ * like "msg_abc123...". We only strip "msg_*" to preserve any provider-valid signatures.
230
+ */
231
+ function stripThoughtSignatures(content, options) {
232
+ if (!Array.isArray(content)) return content;
233
+ const allowBase64Only = options?.allowBase64Only ?? false;
234
+ const includeCamelCase = options?.includeCamelCase ?? false;
235
+ const shouldStripSignature = (value) => {
236
+ if (!allowBase64Only) return typeof value === "string" && value.startsWith("msg_");
237
+ return typeof value !== "string" || !isBase64Signature(value);
238
+ };
239
+ return content.map((block) => {
240
+ if (!block || typeof block !== "object") return block;
241
+ const rec = block;
242
+ const stripSnake = shouldStripSignature(rec.thought_signature);
243
+ const stripCamel = includeCamelCase ? shouldStripSignature(rec.thoughtSignature) : false;
244
+ if (!stripSnake && !stripCamel) return block;
245
+ const next = { ...rec };
246
+ if (stripSnake) delete next.thought_signature;
247
+ if (stripCamel) delete next.thoughtSignature;
248
+ return next;
249
+ });
250
+ }
251
+ const DEFAULT_BOOTSTRAP_MAX_CHARS = 2e4;
252
+ const BOOTSTRAP_HEAD_RATIO = .7;
253
+ const BOOTSTRAP_TAIL_RATIO = .2;
254
+ function resolveBootstrapMaxChars(cfg) {
255
+ const raw = cfg?.agents?.defaults?.bootstrapMaxChars;
256
+ if (typeof raw === "number" && Number.isFinite(raw) && raw > 0) return Math.floor(raw);
257
+ return DEFAULT_BOOTSTRAP_MAX_CHARS;
258
+ }
259
+ function trimBootstrapContent(content, fileName, maxChars) {
260
+ const trimmed = content.trimEnd();
261
+ if (trimmed.length <= maxChars) return {
262
+ content: trimmed,
263
+ truncated: false,
264
+ maxChars,
265
+ originalLength: trimmed.length
266
+ };
267
+ const headChars = Math.floor(maxChars * BOOTSTRAP_HEAD_RATIO);
268
+ const tailChars = Math.floor(maxChars * BOOTSTRAP_TAIL_RATIO);
269
+ const head = trimmed.slice(0, headChars);
270
+ const tail = trimmed.slice(-tailChars);
271
+ return {
272
+ content: [
273
+ head,
274
+ [
275
+ "",
276
+ `[...truncated, read ${fileName} for full content...]`,
277
+ `…(truncated ${fileName}: kept ${headChars}+${tailChars} chars of ${trimmed.length})…`,
278
+ ""
279
+ ].join("\n"),
280
+ tail
281
+ ].join("\n"),
282
+ truncated: true,
283
+ maxChars,
284
+ originalLength: trimmed.length
285
+ };
286
+ }
287
+ async function ensureSessionHeader(params) {
288
+ const file = params.sessionFile;
289
+ try {
290
+ await fs.stat(file);
291
+ return;
292
+ } catch {}
293
+ await fs.mkdir(path.dirname(file), { recursive: true });
294
+ const entry = {
295
+ type: "session",
296
+ version: 2,
297
+ id: params.sessionId,
298
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
299
+ cwd: params.cwd
300
+ };
301
+ await fs.writeFile(file, `${JSON.stringify(entry)}\n`, "utf-8");
302
+ }
303
+ function buildBootstrapContextFiles(files, opts) {
304
+ const maxChars = opts?.maxChars ?? DEFAULT_BOOTSTRAP_MAX_CHARS;
305
+ const result = [];
306
+ for (const file of files) {
307
+ if (file.missing) {
308
+ result.push({
309
+ path: file.name,
310
+ content: `[MISSING] Expected at: ${file.path}`
311
+ });
312
+ continue;
313
+ }
314
+ const trimmed = trimBootstrapContent(file.content ?? "", file.name, maxChars);
315
+ if (!trimmed.content) continue;
316
+ if (trimmed.truncated) opts?.warn?.(`workspace bootstrap file ${file.name} is ${trimmed.originalLength} chars (limit ${trimmed.maxChars}); truncating in injected context`);
317
+ result.push({
318
+ path: file.name,
319
+ content: trimmed.content
320
+ });
321
+ }
322
+ return result;
323
+ }
324
+ function sanitizeGoogleTurnOrdering(messages) {
325
+ const GOOGLE_TURN_ORDER_BOOTSTRAP_TEXT = "(session bootstrap)";
326
+ const first = messages[0];
327
+ const role = first?.role;
328
+ const content = first?.content;
329
+ if (role === "user" && typeof content === "string" && content.trim() === GOOGLE_TURN_ORDER_BOOTSTRAP_TEXT) return messages;
330
+ if (role !== "assistant") return messages;
331
+ return [{
332
+ role: "user",
333
+ content: GOOGLE_TURN_ORDER_BOOTSTRAP_TEXT,
334
+ timestamp: Date.now()
335
+ }, ...messages];
336
+ }
337
+
338
+ //#endregion
339
+ //#region src/agents/pi-embedded-helpers/errors.ts
340
+ const BILLING_ERROR_USER_MESSAGE = "⚠️ API provider returned a billing error — your API key has run out of credits or has an insufficient balance. Check your provider's billing dashboard and top up or switch to a different API key.";
341
+ function isContextOverflowError(errorMessage) {
342
+ if (!errorMessage) return false;
343
+ const lower = errorMessage.toLowerCase();
344
+ const hasRequestSizeExceeds = lower.includes("request size exceeds");
345
+ const hasContextWindow = lower.includes("context window") || lower.includes("context length") || lower.includes("maximum context length");
346
+ return lower.includes("request_too_large") || lower.includes("request exceeds the maximum size") || lower.includes("context length exceeded") || lower.includes("maximum context length") || lower.includes("prompt is too long") || lower.includes("exceeds model context window") || hasRequestSizeExceeds && hasContextWindow || lower.includes("context overflow") || lower.includes("413") && lower.includes("too large");
347
+ }
348
+ const CONTEXT_WINDOW_TOO_SMALL_RE = /context window.*(too small|minimum is)/i;
349
+ const CONTEXT_OVERFLOW_HINT_RE = /context.*overflow|context window.*(too (?:large|long)|exceed|over|limit|max(?:imum)?|requested|sent|tokens)|(?:prompt|request|input).*(too (?:large|long)|exceed|over|limit|max(?:imum)?)/i;
350
+ function isLikelyContextOverflowError(errorMessage) {
351
+ if (!errorMessage) return false;
352
+ if (CONTEXT_WINDOW_TOO_SMALL_RE.test(errorMessage)) return false;
353
+ if (isContextOverflowError(errorMessage)) return true;
354
+ return CONTEXT_OVERFLOW_HINT_RE.test(errorMessage);
355
+ }
356
+ function isCompactionFailureError(errorMessage) {
357
+ if (!errorMessage) return false;
358
+ if (!isContextOverflowError(errorMessage)) return false;
359
+ const lower = errorMessage.toLowerCase();
360
+ return lower.includes("summarization failed") || lower.includes("auto-compaction") || lower.includes("compaction failed") || lower.includes("compaction");
361
+ }
362
+ const ERROR_PAYLOAD_PREFIX_RE = /^(?:error|api\s*error|apierror|openai\s*error|anthropic\s*error|gateway\s*error)[:\s-]+/i;
363
+ const FINAL_TAG_RE = /<\s*\/?\s*final\s*>/gi;
364
+ const ERROR_PREFIX_RE = /^(?:error|api\s*error|openai\s*error|anthropic\s*error|gateway\s*error|request failed|failed|exception)[:\s-]+/i;
365
+ const HTTP_STATUS_PREFIX_RE = /^(?:http\s*)?(\d{3})\s+(.+)$/i;
366
+ const HTTP_ERROR_HINTS = [
367
+ "error",
368
+ "bad request",
369
+ "not found",
370
+ "unauthorized",
371
+ "forbidden",
372
+ "internal server",
373
+ "service unavailable",
374
+ "gateway",
375
+ "rate limit",
376
+ "overloaded",
377
+ "timeout",
378
+ "timed out",
379
+ "invalid",
380
+ "too many requests",
381
+ "permission"
382
+ ];
383
+ function stripFinalTagsFromText(text) {
384
+ if (!text) return text;
385
+ return text.replace(FINAL_TAG_RE, "");
386
+ }
387
+ function collapseConsecutiveDuplicateBlocks(text) {
388
+ const trimmed = text.trim();
389
+ if (!trimmed) return text;
390
+ const blocks = trimmed.split(/\n{2,}/);
391
+ if (blocks.length < 2) return text;
392
+ const normalizeBlock = (value) => value.trim().replace(/\s+/g, " ");
393
+ const result = [];
394
+ let lastNormalized = null;
395
+ for (const block of blocks) {
396
+ const normalized = normalizeBlock(block);
397
+ if (lastNormalized && normalized === lastNormalized) continue;
398
+ result.push(block.trim());
399
+ lastNormalized = normalized;
400
+ }
401
+ if (result.length === blocks.length) return text;
402
+ return result.join("\n\n");
403
+ }
404
+ function isLikelyHttpErrorText(raw) {
405
+ const match = raw.match(HTTP_STATUS_PREFIX_RE);
406
+ if (!match) return false;
407
+ const code = Number(match[1]);
408
+ if (!Number.isFinite(code) || code < 400) return false;
409
+ const message = match[2].toLowerCase();
410
+ return HTTP_ERROR_HINTS.some((hint) => message.includes(hint));
411
+ }
412
+ function isErrorPayloadObject(payload) {
413
+ if (!payload || typeof payload !== "object" || Array.isArray(payload)) return false;
414
+ const record = payload;
415
+ if (record.type === "error") return true;
416
+ if (typeof record.request_id === "string" || typeof record.requestId === "string") return true;
417
+ if ("error" in record) {
418
+ const err = record.error;
419
+ if (err && typeof err === "object" && !Array.isArray(err)) {
420
+ const errRecord = err;
421
+ if (typeof errRecord.message === "string" || typeof errRecord.type === "string" || typeof errRecord.code === "string") return true;
422
+ }
423
+ }
424
+ return false;
425
+ }
426
+ function parseApiErrorPayload(raw) {
427
+ if (!raw) return null;
428
+ const trimmed = raw.trim();
429
+ if (!trimmed) return null;
430
+ const candidates = [trimmed];
431
+ if (ERROR_PAYLOAD_PREFIX_RE.test(trimmed)) candidates.push(trimmed.replace(ERROR_PAYLOAD_PREFIX_RE, "").trim());
432
+ for (const candidate of candidates) {
433
+ if (!candidate.startsWith("{") || !candidate.endsWith("}")) continue;
434
+ try {
435
+ const parsed = JSON.parse(candidate);
436
+ if (isErrorPayloadObject(parsed)) return parsed;
437
+ } catch {}
438
+ }
439
+ return null;
440
+ }
441
+ function stableStringify(value) {
442
+ if (!value || typeof value !== "object") return JSON.stringify(value) ?? "null";
443
+ if (Array.isArray(value)) return `[${value.map((entry) => stableStringify(entry)).join(",")}]`;
444
+ const record = value;
445
+ return `{${Object.keys(record).toSorted().map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`).join(",")}}`;
446
+ }
447
+ function getApiErrorPayloadFingerprint(raw) {
448
+ if (!raw) return null;
449
+ const payload = parseApiErrorPayload(raw);
450
+ if (!payload) return null;
451
+ return stableStringify(payload);
452
+ }
453
+ function isRawApiErrorPayload(raw) {
454
+ return getApiErrorPayloadFingerprint(raw) !== null;
455
+ }
456
+ function parseApiErrorInfo(raw) {
457
+ if (!raw) return null;
458
+ const trimmed = raw.trim();
459
+ if (!trimmed) return null;
460
+ let httpCode;
461
+ let candidate = trimmed;
462
+ const httpPrefixMatch = candidate.match(/^(\d{3})\s+(.+)$/s);
463
+ if (httpPrefixMatch) {
464
+ httpCode = httpPrefixMatch[1];
465
+ candidate = httpPrefixMatch[2].trim();
466
+ }
467
+ const payload = parseApiErrorPayload(candidate);
468
+ if (!payload) return null;
469
+ const requestId = typeof payload.request_id === "string" ? payload.request_id : typeof payload.requestId === "string" ? payload.requestId : void 0;
470
+ const topType = typeof payload.type === "string" ? payload.type : void 0;
471
+ const topMessage = typeof payload.message === "string" ? payload.message : void 0;
472
+ let errType;
473
+ let errMessage;
474
+ if (payload.error && typeof payload.error === "object" && !Array.isArray(payload.error)) {
475
+ const err = payload.error;
476
+ if (typeof err.type === "string") errType = err.type;
477
+ if (typeof err.code === "string" && !errType) errType = err.code;
478
+ if (typeof err.message === "string") errMessage = err.message;
479
+ }
480
+ return {
481
+ httpCode,
482
+ type: errType ?? topType,
483
+ message: errMessage ?? topMessage,
484
+ requestId
485
+ };
486
+ }
487
+ function formatRawAssistantErrorForUi(raw) {
488
+ const trimmed = (raw ?? "").trim();
489
+ if (!trimmed) return "LLM request failed with an unknown error.";
490
+ const httpMatch = trimmed.match(HTTP_STATUS_PREFIX_RE);
491
+ if (httpMatch) {
492
+ const rest = httpMatch[2].trim();
493
+ if (!rest.startsWith("{")) return `HTTP ${httpMatch[1]}: ${rest}`;
494
+ }
495
+ const info = parseApiErrorInfo(trimmed);
496
+ if (info?.message) {
497
+ const prefix = info.httpCode ? `HTTP ${info.httpCode}` : "LLM error";
498
+ const type = info.type ? ` ${info.type}` : "";
499
+ const requestId = info.requestId ? ` (request_id: ${info.requestId})` : "";
500
+ return `${prefix}${type}: ${info.message}${requestId}`;
501
+ }
502
+ return trimmed.length > 600 ? `${trimmed.slice(0, 600)}…` : trimmed;
503
+ }
504
+ function formatAssistantErrorText(msg, opts) {
505
+ const raw = (msg.errorMessage ?? "").trim();
506
+ if (msg.stopReason !== "error" && !raw) return;
507
+ if (!raw) return "LLM request failed with an unknown error.";
508
+ const unknownTool = raw.match(/unknown tool[:\s]+["']?([a-z0-9_-]+)["']?/i) ?? raw.match(/tool\s+["']?([a-z0-9_-]+)["']?\s+(?:not found|is not available)/i);
509
+ if (unknownTool?.[1]) {
510
+ const rewritten = formatSandboxToolPolicyBlockedMessage({
511
+ cfg: opts?.cfg,
512
+ sessionKey: opts?.sessionKey,
513
+ toolName: unknownTool[1]
514
+ });
515
+ if (rewritten) return rewritten;
516
+ }
517
+ if (isContextOverflowError(raw)) return "Context overflow: prompt too large for the model. Try again with less input or a larger-context model.";
518
+ if (/incorrect role information|roles must alternate|400.*role|"message".*role.*information/i.test(raw)) return "Message ordering conflict - please try again. If this persists, use /new to start a fresh session.";
519
+ if (isMissingToolCallInputError(raw)) return "Session history looks corrupted (tool call input missing). Use /new to start a fresh session. If this keeps happening, reset the session or delete the corrupted session transcript.";
520
+ const invalidRequest = raw.match(/"type":"invalid_request_error".*?"message":"([^"]+)"/);
521
+ if (invalidRequest?.[1]) return `LLM request rejected: ${invalidRequest[1]}`;
522
+ if (isOverloadedErrorMessage(raw)) return "The AI service is temporarily overloaded. Please try again in a moment.";
523
+ if (isBillingErrorMessage(raw)) return BILLING_ERROR_USER_MESSAGE;
524
+ if (isLikelyHttpErrorText(raw) || isRawApiErrorPayload(raw)) return formatRawAssistantErrorForUi(raw);
525
+ if (raw.length > 600) console.warn("[formatAssistantErrorText] Long error truncated:", raw.slice(0, 200));
526
+ return raw.length > 600 ? `${raw.slice(0, 600)}…` : raw;
527
+ }
528
+ function sanitizeUserFacingText(text) {
529
+ if (!text) return text;
530
+ const stripped = stripFinalTagsFromText(text);
531
+ const trimmed = stripped.trim();
532
+ if (!trimmed) return stripped;
533
+ if (/incorrect role information|roles must alternate/i.test(trimmed)) return "Message ordering conflict - please try again. If this persists, use /new to start a fresh session.";
534
+ if (isContextOverflowError(trimmed)) return "Context overflow: prompt too large for the model. Try again with less input or a larger-context model.";
535
+ if (isBillingErrorMessage(trimmed)) return BILLING_ERROR_USER_MESSAGE;
536
+ if (isRawApiErrorPayload(trimmed) || isLikelyHttpErrorText(trimmed)) return formatRawAssistantErrorForUi(trimmed);
537
+ if (ERROR_PREFIX_RE.test(trimmed)) {
538
+ if (isOverloadedErrorMessage(trimmed) || isRateLimitErrorMessage(trimmed)) return "The AI service is temporarily overloaded. Please try again in a moment.";
539
+ if (isTimeoutErrorMessage(trimmed)) return "LLM request timed out.";
540
+ return formatRawAssistantErrorForUi(trimmed);
541
+ }
542
+ return collapseConsecutiveDuplicateBlocks(stripped);
543
+ }
544
+ function isRateLimitAssistantError(msg) {
545
+ if (!msg || msg.stopReason !== "error") return false;
546
+ return isRateLimitErrorMessage(msg.errorMessage ?? "");
547
+ }
548
+ const ERROR_PATTERNS = {
549
+ rateLimit: [
550
+ /rate[_ ]limit|too many requests|429/,
551
+ "exceeded your current quota",
552
+ "resource has been exhausted",
553
+ "quota exceeded",
554
+ "resource_exhausted",
555
+ "usage limit"
556
+ ],
557
+ overloaded: [/overloaded_error|"type"\s*:\s*"overloaded_error"/i, "overloaded"],
558
+ timeout: [
559
+ "timeout",
560
+ "timed out",
561
+ "deadline exceeded",
562
+ "context deadline exceeded"
563
+ ],
564
+ billing: [
565
+ /\b402\b/,
566
+ "payment required",
567
+ "insufficient credits",
568
+ "credit balance",
569
+ "plans & billing"
570
+ ],
571
+ auth: [
572
+ /invalid[_ ]?api[_ ]?key/,
573
+ "incorrect api key",
574
+ "invalid token",
575
+ "authentication",
576
+ "re-authenticate",
577
+ "oauth token refresh failed",
578
+ "unauthorized",
579
+ "forbidden",
580
+ "access denied",
581
+ "expired",
582
+ "token has expired",
583
+ /\b401\b/,
584
+ /\b403\b/,
585
+ "no credentials found",
586
+ "no api key found"
587
+ ],
588
+ format: [
589
+ "string should match pattern",
590
+ "tool_use.id",
591
+ "tool_use_id",
592
+ "messages.1.content.1.tool_use.id",
593
+ "invalid request format"
594
+ ]
595
+ };
596
+ const TOOL_CALL_INPUT_MISSING_RE = /tool_(?:use|call)\.(?:input|arguments).*?(?:field required|required)/i;
597
+ const TOOL_CALL_INPUT_PATH_RE = /messages\.\d+\.content\.\d+\.tool_(?:use|call)\.(?:input|arguments)/i;
598
+ const IMAGE_DIMENSION_ERROR_RE = /image dimensions exceed max allowed size for many-image requests:\s*(\d+)\s*pixels/i;
599
+ const IMAGE_DIMENSION_PATH_RE = /messages\.(\d+)\.content\.(\d+)\.image/i;
600
+ const IMAGE_SIZE_ERROR_RE = /image exceeds\s*(\d+(?:\.\d+)?)\s*mb/i;
601
+ function matchesErrorPatterns(raw, patterns) {
602
+ if (!raw) return false;
603
+ const value = raw.toLowerCase();
604
+ return patterns.some((pattern) => pattern instanceof RegExp ? pattern.test(value) : value.includes(pattern));
605
+ }
606
+ function isRateLimitErrorMessage(raw) {
607
+ return matchesErrorPatterns(raw, ERROR_PATTERNS.rateLimit);
608
+ }
609
+ function isTimeoutErrorMessage(raw) {
610
+ return matchesErrorPatterns(raw, ERROR_PATTERNS.timeout);
611
+ }
612
+ function isBillingErrorMessage(raw) {
613
+ const value = raw.toLowerCase();
614
+ if (!value) return false;
615
+ if (matchesErrorPatterns(value, ERROR_PATTERNS.billing)) return true;
616
+ return value.includes("billing") && (value.includes("upgrade") || value.includes("credits") || value.includes("payment") || value.includes("plan"));
617
+ }
618
+ function isMissingToolCallInputError(raw) {
619
+ if (!raw) return false;
620
+ return TOOL_CALL_INPUT_MISSING_RE.test(raw) || TOOL_CALL_INPUT_PATH_RE.test(raw);
621
+ }
622
+ function isBillingAssistantError(msg) {
623
+ if (!msg || msg.stopReason !== "error") return false;
624
+ return isBillingErrorMessage(msg.errorMessage ?? "");
625
+ }
626
+ function isAuthErrorMessage(raw) {
627
+ return matchesErrorPatterns(raw, ERROR_PATTERNS.auth);
628
+ }
629
+ function isOverloadedErrorMessage(raw) {
630
+ return matchesErrorPatterns(raw, ERROR_PATTERNS.overloaded);
631
+ }
632
+ function parseImageDimensionError(raw) {
633
+ if (!raw) return null;
634
+ if (!raw.toLowerCase().includes("image dimensions exceed max allowed size")) return null;
635
+ const limitMatch = raw.match(IMAGE_DIMENSION_ERROR_RE);
636
+ const pathMatch = raw.match(IMAGE_DIMENSION_PATH_RE);
637
+ return {
638
+ maxDimensionPx: limitMatch?.[1] ? Number.parseInt(limitMatch[1], 10) : void 0,
639
+ messageIndex: pathMatch?.[1] ? Number.parseInt(pathMatch[1], 10) : void 0,
640
+ contentIndex: pathMatch?.[2] ? Number.parseInt(pathMatch[2], 10) : void 0,
641
+ raw
642
+ };
643
+ }
644
+ function isImageDimensionErrorMessage(raw) {
645
+ return Boolean(parseImageDimensionError(raw));
646
+ }
647
+ function parseImageSizeError(raw) {
648
+ if (!raw) return null;
649
+ const lower = raw.toLowerCase();
650
+ if (!lower.includes("image exceeds") || !lower.includes("mb")) return null;
651
+ const match = raw.match(IMAGE_SIZE_ERROR_RE);
652
+ return {
653
+ maxMb: match?.[1] ? Number.parseFloat(match[1]) : void 0,
654
+ raw
655
+ };
656
+ }
657
+ function isImageSizeError(errorMessage) {
658
+ if (!errorMessage) return false;
659
+ return Boolean(parseImageSizeError(errorMessage));
660
+ }
661
+ function isCloudCodeAssistFormatError(raw) {
662
+ return !isImageDimensionErrorMessage(raw) && matchesErrorPatterns(raw, ERROR_PATTERNS.format);
663
+ }
664
+ function isAuthAssistantError(msg) {
665
+ if (!msg || msg.stopReason !== "error") return false;
666
+ return isAuthErrorMessage(msg.errorMessage ?? "");
667
+ }
668
+ function classifyFailoverReason(raw) {
669
+ if (isImageDimensionErrorMessage(raw)) return null;
670
+ if (isImageSizeError(raw)) return null;
671
+ if (isRateLimitErrorMessage(raw)) return "rate_limit";
672
+ if (isOverloadedErrorMessage(raw)) return "rate_limit";
673
+ if (isCloudCodeAssistFormatError(raw)) return "format";
674
+ if (isBillingErrorMessage(raw)) return "billing";
675
+ if (isTimeoutErrorMessage(raw)) return "timeout";
676
+ if (isAuthErrorMessage(raw)) return "auth";
677
+ return null;
678
+ }
679
+ function isFailoverErrorMessage(raw) {
680
+ return classifyFailoverReason(raw) !== null;
681
+ }
682
+ function isFailoverAssistantError(msg) {
683
+ if (!msg || msg.stopReason !== "error") return false;
684
+ return isFailoverErrorMessage(msg.errorMessage ?? "");
685
+ }
686
+
687
+ //#endregion
688
+ //#region src/agents/pi-embedded-helpers/google.ts
689
+ function isGoogleModelApi(api) {
690
+ return api === "google-gemini-cli" || api === "google-generative-ai" || api === "google-antigravity";
691
+ }
692
+ function isAntigravityClaude(params) {
693
+ const provider = params.provider?.toLowerCase();
694
+ const api = params.api?.toLowerCase();
695
+ if (provider !== "google-antigravity" && api !== "google-antigravity") return false;
696
+ return params.modelId?.toLowerCase().includes("claude") ?? false;
697
+ }
698
+
699
+ //#endregion
700
+ //#region src/agents/pi-embedded-helpers/openai.ts
701
+ function parseOpenAIReasoningSignature(value) {
702
+ if (!value) return null;
703
+ let candidate = null;
704
+ if (typeof value === "string") {
705
+ const trimmed = value.trim();
706
+ if (!trimmed.startsWith("{") || !trimmed.endsWith("}")) return null;
707
+ try {
708
+ candidate = JSON.parse(trimmed);
709
+ } catch {
710
+ return null;
711
+ }
712
+ } else if (typeof value === "object") candidate = value;
713
+ if (!candidate) return null;
714
+ const id = typeof candidate.id === "string" ? candidate.id : "";
715
+ const type = typeof candidate.type === "string" ? candidate.type : "";
716
+ if (!id.startsWith("rs_")) return null;
717
+ if (type === "reasoning" || type.startsWith("reasoning.")) return {
718
+ id,
719
+ type
720
+ };
721
+ return null;
722
+ }
723
+ function hasFollowingNonThinkingBlock(content, index) {
724
+ for (let i = index + 1; i < content.length; i++) {
725
+ const block = content[i];
726
+ if (!block || typeof block !== "object") return true;
727
+ if (block.type !== "thinking") return true;
728
+ }
729
+ return false;
730
+ }
731
+ /**
732
+ * OpenAI Responses API can reject transcripts that contain a standalone `reasoning` item id
733
+ * without the required following item.
734
+ *
735
+ * OpenClaw persists provider-specific reasoning metadata in `thinkingSignature`; if that metadata
736
+ * is incomplete, drop the block to keep history usable.
737
+ */
738
+ function downgradeOpenAIReasoningBlocks(messages) {
739
+ const out = [];
740
+ for (const msg of messages) {
741
+ if (!msg || typeof msg !== "object") {
742
+ out.push(msg);
743
+ continue;
744
+ }
745
+ if (msg.role !== "assistant") {
746
+ out.push(msg);
747
+ continue;
748
+ }
749
+ const assistantMsg = msg;
750
+ if (!Array.isArray(assistantMsg.content)) {
751
+ out.push(msg);
752
+ continue;
753
+ }
754
+ let changed = false;
755
+ const nextContent = [];
756
+ for (let i = 0; i < assistantMsg.content.length; i++) {
757
+ const block = assistantMsg.content[i];
758
+ if (!block || typeof block !== "object") {
759
+ nextContent.push(block);
760
+ continue;
761
+ }
762
+ const record = block;
763
+ if (record.type !== "thinking") {
764
+ nextContent.push(block);
765
+ continue;
766
+ }
767
+ if (!parseOpenAIReasoningSignature(record.thinkingSignature)) {
768
+ nextContent.push(block);
769
+ continue;
770
+ }
771
+ if (hasFollowingNonThinkingBlock(assistantMsg.content, i)) {
772
+ nextContent.push(block);
773
+ continue;
774
+ }
775
+ changed = true;
776
+ }
777
+ if (!changed) {
778
+ out.push(msg);
779
+ continue;
780
+ }
781
+ if (nextContent.length === 0) continue;
782
+ out.push({
783
+ ...assistantMsg,
784
+ content: nextContent
785
+ });
786
+ }
787
+ return out;
788
+ }
789
+
790
+ //#endregion
791
+ //#region src/agents/tool-call-id.ts
792
+ const STRICT9_LEN = 9;
793
+ /**
794
+ * Sanitize a tool call ID to be compatible with various providers.
795
+ *
796
+ * - "strict" mode: only [a-zA-Z0-9]
797
+ * - "strict9" mode: only [a-zA-Z0-9], length 9 (Mistral tool call requirement)
798
+ */
799
+ function sanitizeToolCallId(id, mode = "strict") {
800
+ if (!id || typeof id !== "string") {
801
+ if (mode === "strict9") return "defaultid";
802
+ return "defaulttoolid";
803
+ }
804
+ if (mode === "strict9") {
805
+ const alphanumericOnly = id.replace(/[^a-zA-Z0-9]/g, "");
806
+ if (alphanumericOnly.length >= STRICT9_LEN) return alphanumericOnly.slice(0, STRICT9_LEN);
807
+ if (alphanumericOnly.length > 0) return shortHash(alphanumericOnly, STRICT9_LEN);
808
+ return shortHash("sanitized", STRICT9_LEN);
809
+ }
810
+ const alphanumericOnly = id.replace(/[^a-zA-Z0-9]/g, "");
811
+ return alphanumericOnly.length > 0 ? alphanumericOnly : "sanitizedtoolid";
812
+ }
813
+ function shortHash(text, length = 8) {
814
+ return createHash("sha1").update(text).digest("hex").slice(0, length);
815
+ }
816
+ function makeUniqueToolId(params) {
817
+ if (params.mode === "strict9") {
818
+ const base = sanitizeToolCallId(params.id, params.mode);
819
+ const candidate = base.length >= STRICT9_LEN ? base.slice(0, STRICT9_LEN) : "";
820
+ if (candidate && !params.used.has(candidate)) return candidate;
821
+ for (let i = 0; i < 1e3; i += 1) {
822
+ const hashed = shortHash(`${params.id}:${i}`, STRICT9_LEN);
823
+ if (!params.used.has(hashed)) return hashed;
824
+ }
825
+ return shortHash(`${params.id}:${Date.now()}`, STRICT9_LEN);
826
+ }
827
+ const MAX_LEN = 40;
828
+ const base = sanitizeToolCallId(params.id, params.mode).slice(0, MAX_LEN);
829
+ if (!params.used.has(base)) return base;
830
+ const hash = shortHash(params.id);
831
+ const separator = params.mode === "strict" ? "" : "_";
832
+ const maxBaseLen = MAX_LEN - separator.length - hash.length;
833
+ const candidate = `${base.length > maxBaseLen ? base.slice(0, maxBaseLen) : base}${separator}${hash}`;
834
+ if (!params.used.has(candidate)) return candidate;
835
+ for (let i = 2; i < 1e3; i += 1) {
836
+ const suffix = params.mode === "strict" ? `x${i}` : `_${i}`;
837
+ const next = `${candidate.slice(0, MAX_LEN - suffix.length)}${suffix}`;
838
+ if (!params.used.has(next)) return next;
839
+ }
840
+ const ts = params.mode === "strict" ? `t${Date.now()}` : `_${Date.now()}`;
841
+ return `${candidate.slice(0, MAX_LEN - ts.length)}${ts}`;
842
+ }
843
+ function rewriteAssistantToolCallIds(params) {
844
+ const content = params.message.content;
845
+ if (!Array.isArray(content)) return params.message;
846
+ let changed = false;
847
+ const next = content.map((block) => {
848
+ if (!block || typeof block !== "object") return block;
849
+ const rec = block;
850
+ const type = rec.type;
851
+ const id = rec.id;
852
+ if (type !== "functionCall" && type !== "toolUse" && type !== "toolCall" || typeof id !== "string" || !id) return block;
853
+ const nextId = params.resolve(id);
854
+ if (nextId === id) return block;
855
+ changed = true;
856
+ return {
857
+ ...block,
858
+ id: nextId
859
+ };
860
+ });
861
+ if (!changed) return params.message;
862
+ return {
863
+ ...params.message,
864
+ content: next
865
+ };
866
+ }
867
+ function rewriteToolResultIds(params) {
868
+ const toolCallId = typeof params.message.toolCallId === "string" && params.message.toolCallId ? params.message.toolCallId : void 0;
869
+ const toolUseId = params.message.toolUseId;
870
+ const toolUseIdStr = typeof toolUseId === "string" && toolUseId ? toolUseId : void 0;
871
+ const nextToolCallId = toolCallId ? params.resolve(toolCallId) : void 0;
872
+ const nextToolUseId = toolUseIdStr ? params.resolve(toolUseIdStr) : void 0;
873
+ if (nextToolCallId === toolCallId && nextToolUseId === toolUseIdStr) return params.message;
874
+ return {
875
+ ...params.message,
876
+ ...nextToolCallId && { toolCallId: nextToolCallId },
877
+ ...nextToolUseId && { toolUseId: nextToolUseId }
878
+ };
879
+ }
880
+ /**
881
+ * Sanitize tool call IDs for provider compatibility.
882
+ *
883
+ * @param messages - The messages to sanitize
884
+ * @param mode - "strict" (alphanumeric only) or "strict9" (alphanumeric length 9)
885
+ */
886
+ function sanitizeToolCallIdsForCloudCodeAssist(messages, mode = "strict") {
887
+ const map = /* @__PURE__ */ new Map();
888
+ const used = /* @__PURE__ */ new Set();
889
+ const resolve = (id) => {
890
+ const existing = map.get(id);
891
+ if (existing) return existing;
892
+ const next = makeUniqueToolId({
893
+ id,
894
+ used,
895
+ mode
896
+ });
897
+ map.set(id, next);
898
+ used.add(next);
899
+ return next;
900
+ };
901
+ let changed = false;
902
+ const out = messages.map((msg) => {
903
+ if (!msg || typeof msg !== "object") return msg;
904
+ const role = msg.role;
905
+ if (role === "assistant") {
906
+ const next = rewriteAssistantToolCallIds({
907
+ message: msg,
908
+ resolve
909
+ });
910
+ if (next !== msg) changed = true;
911
+ return next;
912
+ }
913
+ if (role === "toolResult") {
914
+ const next = rewriteToolResultIds({
915
+ message: msg,
916
+ resolve
917
+ });
918
+ if (next !== msg) changed = true;
919
+ return next;
920
+ }
921
+ return msg;
922
+ });
923
+ return changed ? out : messages;
924
+ }
925
+
926
+ //#endregion
927
+ //#region src/agents/tool-images.ts
928
+ const MAX_IMAGE_DIMENSION_PX = 2e3;
929
+ const MAX_IMAGE_BYTES = 5 * 1024 * 1024;
930
+ const log = createSubsystemLogger("agents/tool-images");
931
+ function isImageBlock(block) {
932
+ if (!block || typeof block !== "object") return false;
933
+ const rec = block;
934
+ return rec.type === "image" && typeof rec.data === "string" && typeof rec.mimeType === "string";
935
+ }
936
+ function isTextBlock(block) {
937
+ if (!block || typeof block !== "object") return false;
938
+ const rec = block;
939
+ return rec.type === "text" && typeof rec.text === "string";
940
+ }
941
+ function inferMimeTypeFromBase64(base64) {
942
+ const trimmed = base64.trim();
943
+ if (!trimmed) return;
944
+ if (trimmed.startsWith("/9j/")) return "image/jpeg";
945
+ if (trimmed.startsWith("iVBOR")) return "image/png";
946
+ if (trimmed.startsWith("R0lGOD")) return "image/gif";
947
+ }
948
+ async function resizeImageBase64IfNeeded(params) {
949
+ const buf = Buffer.from(params.base64, "base64");
950
+ const meta = await getImageMetadata(buf);
951
+ const width = meta?.width;
952
+ const height = meta?.height;
953
+ const overBytes = buf.byteLength > params.maxBytes;
954
+ const hasDimensions = typeof width === "number" && typeof height === "number";
955
+ if (hasDimensions && !overBytes && width <= params.maxDimensionPx && height <= params.maxDimensionPx) return {
956
+ base64: params.base64,
957
+ mimeType: params.mimeType,
958
+ resized: false,
959
+ width,
960
+ height
961
+ };
962
+ if (hasDimensions && (width > params.maxDimensionPx || height > params.maxDimensionPx || overBytes)) log.warn("Image exceeds limits; resizing", {
963
+ label: params.label,
964
+ width,
965
+ height,
966
+ maxDimensionPx: params.maxDimensionPx,
967
+ maxBytes: params.maxBytes
968
+ });
969
+ const qualities = [
970
+ 85,
971
+ 75,
972
+ 65,
973
+ 55,
974
+ 45,
975
+ 35
976
+ ];
977
+ const maxDim = hasDimensions ? Math.max(width ?? 0, height ?? 0) : params.maxDimensionPx;
978
+ const sideGrid = [
979
+ maxDim > 0 ? Math.min(params.maxDimensionPx, maxDim) : params.maxDimensionPx,
980
+ 1800,
981
+ 1600,
982
+ 1400,
983
+ 1200,
984
+ 1e3,
985
+ 800
986
+ ].map((v) => Math.min(params.maxDimensionPx, v)).filter((v, i, arr) => v > 0 && arr.indexOf(v) === i).toSorted((a, b) => b - a);
987
+ let smallest = null;
988
+ for (const side of sideGrid) for (const quality of qualities) {
989
+ const out = await resizeToJpeg({
990
+ buffer: buf,
991
+ maxSide: side,
992
+ quality,
993
+ withoutEnlargement: true
994
+ });
995
+ if (!smallest || out.byteLength < smallest.size) smallest = {
996
+ buffer: out,
997
+ size: out.byteLength
998
+ };
999
+ if (out.byteLength <= params.maxBytes) {
1000
+ log.info("Image resized", {
1001
+ label: params.label,
1002
+ width,
1003
+ height,
1004
+ maxDimensionPx: params.maxDimensionPx,
1005
+ maxBytes: params.maxBytes,
1006
+ originalBytes: buf.byteLength,
1007
+ resizedBytes: out.byteLength,
1008
+ quality,
1009
+ side
1010
+ });
1011
+ return {
1012
+ base64: out.toString("base64"),
1013
+ mimeType: "image/jpeg",
1014
+ resized: true,
1015
+ width,
1016
+ height
1017
+ };
1018
+ }
1019
+ }
1020
+ const best = smallest?.buffer ?? buf;
1021
+ const maxMb = (params.maxBytes / (1024 * 1024)).toFixed(0);
1022
+ const gotMb = (best.byteLength / (1024 * 1024)).toFixed(2);
1023
+ throw new Error(`Image could not be reduced below ${maxMb}MB (got ${gotMb}MB)`);
1024
+ }
1025
+ async function sanitizeContentBlocksImages(blocks, label, opts = {}) {
1026
+ const maxDimensionPx = Math.max(opts.maxDimensionPx ?? MAX_IMAGE_DIMENSION_PX, 1);
1027
+ const maxBytes = Math.max(opts.maxBytes ?? MAX_IMAGE_BYTES, 1);
1028
+ const out = [];
1029
+ for (const block of blocks) {
1030
+ if (!isImageBlock(block)) {
1031
+ out.push(block);
1032
+ continue;
1033
+ }
1034
+ const data = block.data.trim();
1035
+ if (!data) {
1036
+ out.push({
1037
+ type: "text",
1038
+ text: `[${label}] omitted empty image payload`
1039
+ });
1040
+ continue;
1041
+ }
1042
+ try {
1043
+ const mimeType = inferMimeTypeFromBase64(data) ?? block.mimeType;
1044
+ const resized = await resizeImageBase64IfNeeded({
1045
+ base64: data,
1046
+ mimeType,
1047
+ maxDimensionPx,
1048
+ maxBytes,
1049
+ label
1050
+ });
1051
+ out.push({
1052
+ ...block,
1053
+ data: resized.base64,
1054
+ mimeType: resized.resized ? resized.mimeType : mimeType
1055
+ });
1056
+ } catch (err) {
1057
+ out.push({
1058
+ type: "text",
1059
+ text: `[${label}] omitted image payload: ${String(err)}`
1060
+ });
1061
+ }
1062
+ }
1063
+ return out;
1064
+ }
1065
+ async function sanitizeImageBlocks(images, label, opts = {}) {
1066
+ if (images.length === 0) return {
1067
+ images,
1068
+ dropped: 0
1069
+ };
1070
+ const next = (await sanitizeContentBlocksImages(images, label, opts)).filter(isImageBlock);
1071
+ return {
1072
+ images: next,
1073
+ dropped: Math.max(0, images.length - next.length)
1074
+ };
1075
+ }
1076
+ async function sanitizeToolResultImages(result, label, opts = {}) {
1077
+ const content = Array.isArray(result.content) ? result.content : [];
1078
+ if (!content.some((b) => isImageBlock(b) || isTextBlock(b))) return result;
1079
+ const next = await sanitizeContentBlocksImages(content, label, opts);
1080
+ return {
1081
+ ...result,
1082
+ content: next
1083
+ };
1084
+ }
1085
+
1086
+ //#endregion
1087
+ //#region src/agents/pi-embedded-helpers/images.ts
1088
+ async function sanitizeSessionMessagesImages(messages, label, options) {
1089
+ const allowNonImageSanitization = (options?.sanitizeMode ?? "full") === "full";
1090
+ const sanitizedIds = allowNonImageSanitization && options?.sanitizeToolCallIds ? sanitizeToolCallIdsForCloudCodeAssist(messages, options.toolCallIdMode) : messages;
1091
+ const out = [];
1092
+ for (const msg of sanitizedIds) {
1093
+ if (!msg || typeof msg !== "object") {
1094
+ out.push(msg);
1095
+ continue;
1096
+ }
1097
+ const role = msg.role;
1098
+ if (role === "toolResult") {
1099
+ const toolMsg = msg;
1100
+ const nextContent = await sanitizeContentBlocksImages(Array.isArray(toolMsg.content) ? toolMsg.content : [], label);
1101
+ out.push({
1102
+ ...toolMsg,
1103
+ content: nextContent
1104
+ });
1105
+ continue;
1106
+ }
1107
+ if (role === "user") {
1108
+ const userMsg = msg;
1109
+ const content = userMsg.content;
1110
+ if (Array.isArray(content)) {
1111
+ const nextContent = await sanitizeContentBlocksImages(content, label);
1112
+ out.push({
1113
+ ...userMsg,
1114
+ content: nextContent
1115
+ });
1116
+ continue;
1117
+ }
1118
+ }
1119
+ if (role === "assistant") {
1120
+ const assistantMsg = msg;
1121
+ if (assistantMsg.stopReason === "error") {
1122
+ const content = assistantMsg.content;
1123
+ if (Array.isArray(content)) {
1124
+ const nextContent = await sanitizeContentBlocksImages(content, label);
1125
+ out.push({
1126
+ ...assistantMsg,
1127
+ content: nextContent
1128
+ });
1129
+ } else out.push(assistantMsg);
1130
+ continue;
1131
+ }
1132
+ const content = assistantMsg.content;
1133
+ if (Array.isArray(content)) {
1134
+ if (!allowNonImageSanitization) {
1135
+ const nextContent = await sanitizeContentBlocksImages(content, label);
1136
+ out.push({
1137
+ ...assistantMsg,
1138
+ content: nextContent
1139
+ });
1140
+ continue;
1141
+ }
1142
+ const finalContent = await sanitizeContentBlocksImages((options?.preserveSignatures ? content : stripThoughtSignatures(content, options?.sanitizeThoughtSignatures)).filter((block) => {
1143
+ if (!block || typeof block !== "object") return true;
1144
+ const rec = block;
1145
+ if (rec.type !== "text" || typeof rec.text !== "string") return true;
1146
+ return rec.text.trim().length > 0;
1147
+ }), label);
1148
+ if (finalContent.length === 0) continue;
1149
+ out.push({
1150
+ ...assistantMsg,
1151
+ content: finalContent
1152
+ });
1153
+ continue;
1154
+ }
1155
+ }
1156
+ out.push(msg);
1157
+ }
1158
+ return out;
1159
+ }
1160
+
1161
+ //#endregion
1162
+ //#region src/agents/pi-embedded-helpers/messaging-dedupe.ts
1163
+ const MIN_DUPLICATE_TEXT_LENGTH = 10;
1164
+ /**
1165
+ * Normalize text for duplicate comparison.
1166
+ * - Trims whitespace
1167
+ * - Lowercases
1168
+ * - Strips emoji (Emoji_Presentation and Extended_Pictographic)
1169
+ * - Collapses multiple spaces to single space
1170
+ */
1171
+ function normalizeTextForComparison(text) {
1172
+ return text.trim().toLowerCase().replace(/\p{Emoji_Presentation}|\p{Extended_Pictographic}/gu, "").replace(/\s+/g, " ").trim();
1173
+ }
1174
+ function isMessagingToolDuplicateNormalized(normalized, normalizedSentTexts) {
1175
+ if (normalizedSentTexts.length === 0) return false;
1176
+ if (!normalized || normalized.length < MIN_DUPLICATE_TEXT_LENGTH) return false;
1177
+ return normalizedSentTexts.some((normalizedSent) => {
1178
+ if (!normalizedSent || normalizedSent.length < MIN_DUPLICATE_TEXT_LENGTH) return false;
1179
+ return normalized.includes(normalizedSent) || normalizedSent.includes(normalized);
1180
+ });
1181
+ }
1182
+ function isMessagingToolDuplicate(text, sentTexts) {
1183
+ if (sentTexts.length === 0) return false;
1184
+ const normalized = normalizeTextForComparison(text);
1185
+ if (!normalized || normalized.length < MIN_DUPLICATE_TEXT_LENGTH) return false;
1186
+ return isMessagingToolDuplicateNormalized(normalized, sentTexts.map(normalizeTextForComparison));
1187
+ }
1188
+
1189
+ //#endregion
1190
+ //#region src/agents/pi-embedded-helpers/thinking.ts
1191
+ function extractSupportedValues(raw) {
1192
+ const match = raw.match(/supported values are:\s*([^\n.]+)/i) ?? raw.match(/supported values:\s*([^\n.]+)/i);
1193
+ if (!match?.[1]) return [];
1194
+ const fragment = match[1];
1195
+ const quoted = Array.from(fragment.matchAll(/['"]([^'"]+)['"]/g)).map((entry) => entry[1]?.trim());
1196
+ if (quoted.length > 0) return quoted.filter((entry) => Boolean(entry));
1197
+ return fragment.split(/,|\band\b/gi).map((entry) => entry.replace(/^[^a-zA-Z]+|[^a-zA-Z]+$/g, "").trim()).filter(Boolean);
1198
+ }
1199
+ function pickFallbackThinkingLevel(params) {
1200
+ const raw = params.message?.trim();
1201
+ if (!raw) return;
1202
+ const supported = extractSupportedValues(raw);
1203
+ if (supported.length === 0) return;
1204
+ for (const entry of supported) {
1205
+ const normalized = normalizeThinkLevel(entry);
1206
+ if (!normalized) continue;
1207
+ if (params.attempted.has(normalized)) continue;
1208
+ return normalized;
1209
+ }
1210
+ }
1211
+
1212
+ //#endregion
1213
+ //#region src/agents/pi-embedded-helpers/turns.ts
1214
+ /**
1215
+ * Validates and fixes conversation turn sequences for Gemini API.
1216
+ * Gemini requires strict alternating user→assistant→tool→user pattern.
1217
+ * Merges consecutive assistant messages together.
1218
+ */
1219
+ function validateGeminiTurns(messages) {
1220
+ if (!Array.isArray(messages) || messages.length === 0) return messages;
1221
+ const result = [];
1222
+ let lastRole;
1223
+ for (const msg of messages) {
1224
+ if (!msg || typeof msg !== "object") {
1225
+ result.push(msg);
1226
+ continue;
1227
+ }
1228
+ const msgRole = msg.role;
1229
+ if (!msgRole) {
1230
+ result.push(msg);
1231
+ continue;
1232
+ }
1233
+ if (msgRole === lastRole && lastRole === "assistant") {
1234
+ const lastMsg = result[result.length - 1];
1235
+ const currentMsg = msg;
1236
+ if (lastMsg && typeof lastMsg === "object") {
1237
+ const lastAsst = lastMsg;
1238
+ const mergedContent = [...Array.isArray(lastAsst.content) ? lastAsst.content : [], ...Array.isArray(currentMsg.content) ? currentMsg.content : []];
1239
+ const merged = {
1240
+ ...lastAsst,
1241
+ content: mergedContent,
1242
+ ...currentMsg.usage && { usage: currentMsg.usage },
1243
+ ...currentMsg.stopReason && { stopReason: currentMsg.stopReason },
1244
+ ...currentMsg.errorMessage && { errorMessage: currentMsg.errorMessage }
1245
+ };
1246
+ result[result.length - 1] = merged;
1247
+ continue;
1248
+ }
1249
+ }
1250
+ result.push(msg);
1251
+ lastRole = msgRole;
1252
+ }
1253
+ return result;
1254
+ }
1255
+ function mergeConsecutiveUserTurns(previous, current) {
1256
+ const mergedContent = [...Array.isArray(previous.content) ? previous.content : [], ...Array.isArray(current.content) ? current.content : []];
1257
+ return {
1258
+ ...current,
1259
+ content: mergedContent,
1260
+ timestamp: current.timestamp ?? previous.timestamp
1261
+ };
1262
+ }
1263
+ /**
1264
+ * Validates and fixes conversation turn sequences for Anthropic API.
1265
+ * Anthropic requires strict alternating user→assistant pattern.
1266
+ * Merges consecutive user messages together.
1267
+ */
1268
+ function validateAnthropicTurns(messages) {
1269
+ if (!Array.isArray(messages) || messages.length === 0) return messages;
1270
+ const result = [];
1271
+ let lastRole;
1272
+ for (const msg of messages) {
1273
+ if (!msg || typeof msg !== "object") {
1274
+ result.push(msg);
1275
+ continue;
1276
+ }
1277
+ const msgRole = msg.role;
1278
+ if (!msgRole) {
1279
+ result.push(msg);
1280
+ continue;
1281
+ }
1282
+ if (msgRole === lastRole && lastRole === "user") {
1283
+ const lastMsg = result[result.length - 1];
1284
+ const currentMsg = msg;
1285
+ if (lastMsg && typeof lastMsg === "object") {
1286
+ const merged = mergeConsecutiveUserTurns(lastMsg, currentMsg);
1287
+ result[result.length - 1] = merged;
1288
+ continue;
1289
+ }
1290
+ }
1291
+ result.push(msg);
1292
+ lastRole = msgRole;
1293
+ }
1294
+ return result;
1295
+ }
1296
+
1297
+ //#endregion
1298
+ export { parseImageSizeError as A, normalizeElevatedLevel as B, isFailoverAssistantError as C, isRawApiErrorPayload as D, isRateLimitAssistantError as E, sanitizeGoogleTurnOrdering as F, resolveResponseUsageMode as G, normalizeThinkLevel as H, formatThinkingLevels as I, supportsXHighThinking as K, formatXHighModelHint as L, buildBootstrapContextFiles as M, ensureSessionHeader as N, isTimeoutErrorMessage as O, resolveBootstrapMaxChars as P, listThinkingLevelLabels as R, isContextOverflowError as S, isLikelyContextOverflowError as T, normalizeUsageDisplay as U, normalizeReasoningLevel as V, normalizeVerboseLevel as W, getApiErrorPayloadFingerprint as _, isMessagingToolDuplicateNormalized as a, isCloudCodeAssistFormatError as b, sanitizeImageBlocks as c, isAntigravityClaude as d, isGoogleModelApi as f, formatRawAssistantErrorForUi as g, formatAssistantErrorText as h, isMessagingToolDuplicate as i, sanitizeUserFacingText as j, parseImageDimensionError as k, sanitizeToolResultImages as l, classifyFailoverReason as m, validateGeminiTurns as n, normalizeTextForComparison as o, BILLING_ERROR_USER_MESSAGE as p, pickFallbackThinkingLevel as r, sanitizeSessionMessagesImages as s, validateAnthropicTurns as t, downgradeOpenAIReasoningBlocks as u, isAuthAssistantError as v, isFailoverErrorMessage as w, isCompactionFailureError as x, isBillingAssistantError as y, listThinkingLevels as z };