@termix-it/cryptoclaw 1.0.0

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 (1222) hide show
  1. package/CHANGELOG.md +1615 -0
  2. package/LICENSE +21 -0
  3. package/README-header.png +0 -0
  4. package/README.md +331 -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/cryptoclaw.mjs +14 -0
  18. package/dist/accounts-BPjR5SyC.js +251 -0
  19. package/dist/accounts-CIGHxE7R.js +251 -0
  20. package/dist/acp-cli-DBWmJpUJ.js +924 -0
  21. package/dist/acp-cli-DG9nygBk.js +926 -0
  22. package/dist/agent-3MZVCC-N.js +702 -0
  23. package/dist/agent-IDE9krld.js +702 -0
  24. package/dist/agent-scope-DBl1We79.js +370 -0
  25. package/dist/agent-scope-DLfFOxP6.js +370 -0
  26. package/dist/agent-scope-e_oNRhGi.js +606 -0
  27. package/dist/archive-Dy3Ezb-5.js +85 -0
  28. package/dist/archive-iT9wNsml.js +85 -0
  29. package/dist/audit-Bj_dxNaD.js +1853 -0
  30. package/dist/audit-jaTyyQX1.js +1853 -0
  31. package/dist/auth-RTEHx2eI.js +192 -0
  32. package/dist/auth-health-BlspzqyF.js +149 -0
  33. package/dist/auth-health-CCM6Z3vK.js +149 -0
  34. package/dist/auth-phxCaFNX.js +192 -0
  35. package/dist/auth-profiles-DoD7YxsD.js +2939 -0
  36. package/dist/boolean-BsqeuxE6.js +30 -0
  37. package/dist/brew-CAcErcKz.js +46 -0
  38. package/dist/brew-CqnNFIkD.js +46 -0
  39. package/dist/build-info.json +5 -0
  40. package/dist/call-D2DXG0AC.js +278 -0
  41. package/dist/call-DqxlETxE.js +278 -0
  42. package/dist/canvas-host/a2ui/.bundle.hash +1 -0
  43. package/dist/canvas-host/a2ui/a2ui.bundle.js +17765 -0
  44. package/dist/canvas-host/a2ui/index.html +307 -0
  45. package/dist/channel-options-BHpXOBuP.js +32 -0
  46. package/dist/channel-options-DUkxROTo.js +62 -0
  47. package/dist/channel-selection-BdigfMZZ.js +51 -0
  48. package/dist/channel-selection-D7jFTFec.js +51 -0
  49. package/dist/channel-summary-CobMoKN6.js +1120 -0
  50. package/dist/channel-summary-DS0kcHm2.js +1120 -0
  51. package/dist/channels-cli-D7ZNRrq7.js +1414 -0
  52. package/dist/channels-cli-DBwffwqw.js +1413 -0
  53. package/dist/channels-status-issues-C2UGSPvH.js +18 -0
  54. package/dist/channels-status-issues-Dxmd7zYk.js +18 -0
  55. package/dist/chrome-CwbWzmh4.js +1973 -0
  56. package/dist/chrome-SVqOMFxA.js +1953 -0
  57. package/dist/clack-prompter-k_egRADS.js +92 -0
  58. package/dist/clack-prompter-nSmn5cZ2.js +92 -0
  59. package/dist/cli/daemon-cli.js +2 -0
  60. package/dist/cli-C9xiWnx9.js +86 -0
  61. package/dist/cli-D6C9z94O.js +88 -0
  62. package/dist/cli-utils-B7iQwCY5.js +43 -0
  63. package/dist/cli-utils-CgOu3WAB.js +43 -0
  64. package/dist/client-BaTYzXOU.js +1617 -0
  65. package/dist/client-N6zH1neq.js +1617 -0
  66. package/dist/command-format-9IsYy-9N.js +52 -0
  67. package/dist/command-format-B0bnyrEA.js +38 -0
  68. package/dist/command-format-n_udBm8l.js +52 -0
  69. package/dist/command-options-DL1PhuUF.js +33 -0
  70. package/dist/commands-Dpeoos11.js +230 -0
  71. package/dist/completion-cli-B5nR7jt8.js +434 -0
  72. package/dist/completion-cli-CZ8zPqPs.js +773 -0
  73. package/dist/config-DSpb2aMV.js +4916 -0
  74. package/dist/config-IwiWafT3.js +5657 -0
  75. package/dist/config-dQK4rbfx.js +4916 -0
  76. package/dist/config-guard-DwIb5Y-v.js +5719 -0
  77. package/dist/configure-7M9mLC4o.js +896 -0
  78. package/dist/configure-CivCcvkA.js +896 -0
  79. package/dist/constants-C2T4hQIk.js +65 -0
  80. package/dist/constants-DBvu3LzZ.js +65 -0
  81. package/dist/control-service-BXC31sNw.js +61 -0
  82. package/dist/control-service-lVzEzp9f.js +61 -0
  83. package/dist/control-ui/apple-touch-icon.png +0 -0
  84. package/dist/control-ui/assets/index-DQ-7PWhX.js +7553 -0
  85. package/dist/control-ui/assets/index-DQ-7PWhX.js.map +1 -0
  86. package/dist/control-ui/assets/index-nlpH70Eh.css +1 -0
  87. package/dist/control-ui/favicon-32.png +0 -0
  88. package/dist/control-ui/favicon.ico +0 -0
  89. package/dist/control-ui/favicon.svg +22 -0
  90. package/dist/control-ui/index.html +17 -0
  91. package/dist/cron-cli-DS8ytfYQ.js +455 -0
  92. package/dist/cron-cli-Djb3HUdz.js +457 -0
  93. package/dist/daemon-cli-KoaJ2nJX.js +758 -0
  94. package/dist/daemon-cli-ZQIKLvAO.js +758 -0
  95. package/dist/daemon-runtime-CHWbAfKs.js +517 -0
  96. package/dist/daemon-runtime-DEjUQVjL.js +517 -0
  97. package/dist/deliver-DVRzRmNN.js +2557 -0
  98. package/dist/deliver-OfX6bSYR.js +2587 -0
  99. package/dist/deliver-sPBfRlXT.js +2587 -0
  100. package/dist/deps-BSdWD2wF.js +27 -0
  101. package/dist/deps-CZOfeWEp.js +27 -0
  102. package/dist/devices-cli-DHSpDnCS.js +207 -0
  103. package/dist/devices-cli-b9iF_uOi.js +205 -0
  104. package/dist/directory-cli-D0dTuAem.js +247 -0
  105. package/dist/directory-cli-qniSxsHo.js +245 -0
  106. package/dist/dispatcher-DA3u3CwV.js +160 -0
  107. package/dist/dns-cli-C0JUNb9O.js +201 -0
  108. package/dist/dns-cli-DwwMpMuN.js +199 -0
  109. package/dist/docs-cli-BlFHCHDz.js +161 -0
  110. package/dist/docs-cli-BpSPrY3Y.js +160 -0
  111. package/dist/doctor-Da1XgFcW.js +2584 -0
  112. package/dist/doctor-qrtookj-.js +2585 -0
  113. package/dist/entry.js +1156 -0
  114. package/dist/env-B2Cd_6IS.js +32 -0
  115. package/dist/errors--S5IAxQx.js +1952 -0
  116. package/dist/exec-CLQSz0CI.js +246 -0
  117. package/dist/exec-CW_QjkBi.js +246 -0
  118. package/dist/exec-D7I5LU33.js +1099 -0
  119. package/dist/exec-approvals-CuXem6Li.js +1043 -0
  120. package/dist/exec-approvals-P7vwSw4O.js +1043 -0
  121. package/dist/exec-approvals-cli-Csgqkksl.js +386 -0
  122. package/dist/exec-approvals-cli-Dk4yHE2L.js +388 -0
  123. package/dist/extensionAPI.js +64497 -0
  124. package/dist/format-B7OjpGnt.js +34 -0
  125. package/dist/format-Dv1wz41T.js +34 -0
  126. package/dist/gateway-cli-CJ7H2DgV.js +17352 -0
  127. package/dist/gateway-cli-CrKl-bIH.js +17352 -0
  128. package/dist/gateway-rpc--CH0NWWR.js +28 -0
  129. package/dist/gateway-rpc-BPfCU2Vi.js +28 -0
  130. package/dist/github-copilot-auth-CcPEEb3Q.js +1190 -0
  131. package/dist/github-copilot-auth-h3beCc_l.js +1190 -0
  132. package/dist/github-copilot-token-C1sArkX4.js +103 -0
  133. package/dist/github-copilot-token-DL6Pou2p.js +103 -0
  134. package/dist/github-copilot-token-hMl1wyZp.js +103 -0
  135. package/dist/gmail-setup-utils-CnVYPhaQ.js +428 -0
  136. package/dist/gmail-setup-utils-pZ9NnOvB.js +428 -0
  137. package/dist/health-format-BcsR5dtU.js +1211 -0
  138. package/dist/health-format-Pl8qK65t.js +1212 -0
  139. package/dist/help-format-BzWwbeSF.js +17 -0
  140. package/dist/help-format-CUnac_bT.js +17 -0
  141. package/dist/helpers-5yebzF4C.js +25 -0
  142. package/dist/helpers-CQI-5xS9.js +25 -0
  143. package/dist/helpers-CzQjTUbz.js +10 -0
  144. package/dist/helpers-OUt4hxkS.js +10 -0
  145. package/dist/hooks/bundled/boot-md/HOOK.md +19 -0
  146. package/dist/hooks/bundled/command-logger/HOOK.md +122 -0
  147. package/dist/hooks/bundled/session-memory/HOOK.md +109 -0
  148. package/dist/hooks/bundled/soul-evil/HOOK.md +71 -0
  149. package/dist/hooks-cli-BKHTdsn4.js +1058 -0
  150. package/dist/hooks-cli-zkLY25DX.js +1060 -0
  151. package/dist/hooks-status-BETsyuUR.js +443 -0
  152. package/dist/hooks-status-nPgxLL-x.js +443 -0
  153. package/dist/image-BFNcQzKp.js +629 -0
  154. package/dist/image-CC_YKDB-.js +1421 -0
  155. package/dist/image-DAsWVn7Q.js +629 -0
  156. package/dist/index.js +5900 -0
  157. package/dist/installs-Byb3s_8P.js +425 -0
  158. package/dist/installs-CELeuogN.js +425 -0
  159. package/dist/is-main-B6kCyqsv.js +25 -0
  160. package/dist/is-main-CBExsRNQ.js +25 -0
  161. package/dist/links-Brcj2Oc-.js +15 -0
  162. package/dist/links-cf9h8BXu.js +15 -0
  163. package/dist/loader-CU4bkeKe.js +61131 -0
  164. package/dist/logging-5MtSkLpb.js +1 -0
  165. package/dist/logging-BJRQDTME.js +15 -0
  166. package/dist/logging-CD55MXc7.js +15 -0
  167. package/dist/logging-kuFzZMsG.js +1 -0
  168. package/dist/login-qr-BCr2GKX6.js +475 -0
  169. package/dist/login-qr-BMbekoZW.js +478 -0
  170. package/dist/login-qr-HIPJAnbT.js +478 -0
  171. package/dist/logs-cli-CM7-XOcZ.js +230 -0
  172. package/dist/logs-cli-aqjT7oHu.js +228 -0
  173. package/dist/manager-C5m5qpB0.js +2871 -0
  174. package/dist/manager-CtGvmGvM.js +2872 -0
  175. package/dist/manager-DpZlm3gk.js +2870 -0
  176. package/dist/manifest-registry-BdTzIlta.js +669 -0
  177. package/dist/manifest-registry-DVQHMj0y.js +669 -0
  178. package/dist/message-channel-CfYBy4y3.js +110 -0
  179. package/dist/message-channel-CvHWS3C2.js +110 -0
  180. package/dist/model-selection-Av0fLq51.js +2940 -0
  181. package/dist/model-selection-DuI_Ue9Q.js +2691 -0
  182. package/dist/models-cli-C0JOZ5oP.js +2541 -0
  183. package/dist/models-cli-gmkzOpbq.js +2543 -0
  184. package/dist/net-D4G66Xui.js +137 -0
  185. package/dist/net-YrbuVTd2.js +137 -0
  186. package/dist/node-cli-BND9LLkM.js +1457 -0
  187. package/dist/node-cli-DNRB94ib.js +1459 -0
  188. package/dist/node-service-DTgDFo7M.js +67 -0
  189. package/dist/node-service-JEBcPQat.js +67 -0
  190. package/dist/nodes-cli-BCWlqHyR.js +1208 -0
  191. package/dist/nodes-cli-DWSo5dX7.js +1210 -0
  192. package/dist/nodes-screen-CMvShBEB.js +157 -0
  193. package/dist/nodes-screen-Cok3-EJw.js +157 -0
  194. package/dist/note-C5M2AQOP.js +73 -0
  195. package/dist/note-DEz9ZK7G.js +73 -0
  196. package/dist/onboard-channels-B75LjjVZ.js +671 -0
  197. package/dist/onboard-channels-DJz2TusQ.js +671 -0
  198. package/dist/onboard-skills-ByHkU9nx.js +3615 -0
  199. package/dist/onboard-skills-Wknr7pxR.js +3615 -0
  200. package/dist/onboarding-BejDjkx5.js +3455 -0
  201. package/dist/openclaw-root-YSGWCNem.js +84 -0
  202. package/dist/openclaw-root-_zPXSqgo.js +84 -0
  203. package/dist/pairing-cli-CFqD3IdI.js +122 -0
  204. package/dist/pairing-cli-Cn5vt4oI.js +120 -0
  205. package/dist/pairing-store-BHzy16_t.js +391 -0
  206. package/dist/pairing-store-BOhO49Bi.js +391 -0
  207. package/dist/parse-BZz5lHzQ.js +23 -0
  208. package/dist/parse-Bw0oH-rT.js +23 -0
  209. package/dist/parse-log-line-BxDgv4Uo.js +44 -0
  210. package/dist/parse-log-line-CUrpqe1w.js +44 -0
  211. package/dist/parse-timeout-D1XX_zN_.js +16 -0
  212. package/dist/parse-timeout-Du-wHHNi.js +16 -0
  213. package/dist/path-env-DQ-mM2ya.js +77 -0
  214. package/dist/path-env-eQ-HoQtS.js +77 -0
  215. package/dist/paths-C3yk0MGu.js +43 -0
  216. package/dist/paths-C90k-Dud.js +166 -0
  217. package/dist/paths-CGrNQEMk.js +201 -0
  218. package/dist/paths-D2ytuv-2.js +201 -0
  219. package/dist/paths-Dlp4VNXa.js +40 -0
  220. package/dist/paths-KUslkJRs.js +43 -0
  221. package/dist/pi-embedded-helpers-B7ARjDEK.js +1298 -0
  222. package/dist/pi-embedded-helpers-CQ9sq3Uu.js +8475 -0
  223. package/dist/pi-embedded-helpers-FPVRDeKf.js +1298 -0
  224. package/dist/pi-model-discovery-DWTTaAgY.js +20 -0
  225. package/dist/pi-model-discovery-EhM2JAQo.js +20 -0
  226. package/dist/pi-model-discovery-EwKVHlZB.js +20 -0
  227. package/dist/pi-tools.policy-Du4RZy9R.js +230 -0
  228. package/dist/plugin-auto-enable-EBxTHjFJ.js +461 -0
  229. package/dist/plugin-auto-enable-RwRwIUKC.js +461 -0
  230. package/dist/plugin-sdk/index.d.ts +8453 -0
  231. package/dist/plugin-sdk/index.js +23445 -0
  232. package/dist/plugin-sdk/pi-model-discovery-Dw3A6oXH.js +37 -0
  233. package/dist/plugins-BI-p2ba9.js +495 -0
  234. package/dist/plugins-Dk4UBZwz.js +496 -0
  235. package/dist/plugins-cli-CMg0G56J.js +441 -0
  236. package/dist/plugins-cli-CX7QeUjq.js +443 -0
  237. package/dist/ports-nXmd4Efh.js +96 -0
  238. package/dist/program-EAMJAB_2.js +191 -0
  239. package/dist/progress-D-Oc-KAH.js +133 -0
  240. package/dist/progress-DTEUicRP.js +133 -0
  241. package/dist/prompt-style-BBlJlXtd.js +9 -0
  242. package/dist/prompt-style-BntC_Eoo.js +9 -0
  243. package/dist/prompts-C2D9_VZC.js +10 -0
  244. package/dist/prompts-FbZThK8w.js +10 -0
  245. package/dist/pw-ai-D2jD_dho.js +1651 -0
  246. package/dist/pw-ai-D6JUaD41.js +1650 -0
  247. package/dist/pw-ai-ba2bHPGA.js +1649 -0
  248. package/dist/qmd-manager-B-ijyM7o.js +615 -0
  249. package/dist/qmd-manager-C_Jah5eo.js +618 -0
  250. package/dist/qmd-manager-xo4abL0u.js +618 -0
  251. package/dist/redact-1PNP01B_.js +97 -0
  252. package/dist/redact-BIMJ3ntQ.js +94 -0
  253. package/dist/redact-CVRUv382.js +97 -0
  254. package/dist/register.subclis-CJGimm3-.js +348 -0
  255. package/dist/reply-DfepuqG0.js +61133 -0
  256. package/dist/rolldown-runtime-Cbj13DAv.js +20 -0
  257. package/dist/routes-DkckwrRx.js +2410 -0
  258. package/dist/routes-Q42qtNl1.js +2410 -0
  259. package/dist/rpc-B4lvrGrD.js +95 -0
  260. package/dist/rpc-CbWcXAQK.js +95 -0
  261. package/dist/run-main-JFY3X4Xh.js +194 -0
  262. package/dist/sandbox-BGqDfFaH.js +2945 -0
  263. package/dist/sandbox-D_Tt3WRq.js +2945 -0
  264. package/dist/sandbox-cli-CaxqKiTq.js +461 -0
  265. package/dist/sandbox-cli-DA0Cbrzl.js +463 -0
  266. package/dist/security-cli-BZjA_GAD.js +508 -0
  267. package/dist/security-cli-Ct-pfF2h.js +506 -0
  268. package/dist/server-context-B9ez46MY.js +740 -0
  269. package/dist/server-context-C53lhEx_.js +740 -0
  270. package/dist/server-node-events-Cb6QOeDH.js +218 -0
  271. package/dist/server-node-events-DONmQvJg.js +216 -0
  272. package/dist/service-C0ccl5rU.js +680 -0
  273. package/dist/service-audit-AsnhO40e.js +542 -0
  274. package/dist/service-audit-BM-iyLL7.js +542 -0
  275. package/dist/service-mrQPgOXl.js +680 -0
  276. package/dist/session-cost-usage-B3HzifR9.js +692 -0
  277. package/dist/session-cost-usage-DH3c4xJA.js +692 -0
  278. package/dist/session-key-C-ig2pxJ.js +177 -0
  279. package/dist/session-key-CYpWeuht.js +177 -0
  280. package/dist/shared-CBcCIWC0.js +74 -0
  281. package/dist/shared-CtNMbLRE.js +150 -0
  282. package/dist/shared-DCh7fkR2.js +150 -0
  283. package/dist/shared-Na5zjEUc.js +74 -0
  284. package/dist/skill-scanner-AfOudYI1.js +255 -0
  285. package/dist/skill-scanner-BoGjHXUZ.js +255 -0
  286. package/dist/skills-7V483a6m.js +693 -0
  287. package/dist/skills-CsZRBUj0.js +694 -0
  288. package/dist/skills-cli-DQaq5LBX.js +290 -0
  289. package/dist/skills-cli-dVugbaAb.js +288 -0
  290. package/dist/skills-status-4_4zVBvV.js +187 -0
  291. package/dist/skills-status-cD4rfMR9.js +187 -0
  292. package/dist/sqlite-C4DljFNL.js +215 -0
  293. package/dist/sqlite-CvQzxS7q.js +197 -0
  294. package/dist/sqlite-Dnmf3LS7.js +215 -0
  295. package/dist/status-BakhDLuG.js +27 -0
  296. package/dist/status-BqtiImKF.js +21 -0
  297. package/dist/status-DHPz4Mg_.js +3364 -0
  298. package/dist/status-DSoYX3Ep.js +27 -0
  299. package/dist/status-Drziap9H.js +21 -0
  300. package/dist/subsystem-Btuh5yZj.js +834 -0
  301. package/dist/system-cli-CUQswQPX.js +83 -0
  302. package/dist/system-cli-Cz7in_Xr.js +81 -0
  303. package/dist/systemd-CFHiVC1D.js +438 -0
  304. package/dist/systemd-hints-CgQqk98i.js +19 -0
  305. package/dist/systemd-hints-DKVCFZS3.js +19 -0
  306. package/dist/systemd-kY3NnWdi.js +438 -0
  307. package/dist/systemd-linger-CFK5jDdq.js +75 -0
  308. package/dist/systemd-linger-CxBBzOjC.js +75 -0
  309. package/dist/table-DAOPkdc_.js +279 -0
  310. package/dist/table-DDQGlZSe.js +279 -0
  311. package/dist/tailnet-CZq_ZSNX.js +42 -0
  312. package/dist/tailnet-D5wOWpOX.js +42 -0
  313. package/dist/tailscale-BY0igR48.js +252 -0
  314. package/dist/tailscale-CCLcQalf.js +225 -0
  315. package/dist/tool-display-B2rS2o6B.js +795 -0
  316. package/dist/tool-display-Zbh1CRw5.js +795 -0
  317. package/dist/transcript-events-BOK6eOU8.js +17 -0
  318. package/dist/transcript-events-D2kT5WSz.js +17 -0
  319. package/dist/transcript-events-JLH5W4He.js +17 -0
  320. package/dist/tui-DFVs6pRO.js +2672 -0
  321. package/dist/tui-cli-CBKZVd1C.js +58 -0
  322. package/dist/tui-cli-DexeJOgZ.js +56 -0
  323. package/dist/tui-qPHLsB-x.js +2672 -0
  324. package/dist/update-B2q3duJD.js +317 -0
  325. package/dist/update-DNnej3C6.js +317 -0
  326. package/dist/update-cli-BPUtZjbl.js +1031 -0
  327. package/dist/update-cli-ehTYbpaU.js +1032 -0
  328. package/dist/update-runner-BfncKnU6.js +1375 -0
  329. package/dist/update-runner-DAeygRSU.js +1375 -0
  330. package/dist/usage-format-C4JfTbSp.js +36 -0
  331. package/dist/usage-format-DvowRSs-.js +36 -0
  332. package/dist/utils-7IMqr8vR.js +189 -0
  333. package/dist/utils-D7jskKIf.js +192 -0
  334. package/dist/wallet-manager-7KHKMCbT.js +264 -0
  335. package/dist/wallet-manager-CT1ykq2O.js +264 -0
  336. package/dist/webhooks-cli-C0CV-1jG.js +310 -0
  337. package/dist/webhooks-cli-DT16BygW.js +312 -0
  338. package/dist/widearea-dns-BJZTAyT3.js +127 -0
  339. package/dist/widearea-dns-Dk82I4Xa.js +127 -0
  340. package/dist/ws-6_dFpKWQ.js +13 -0
  341. package/dist/ws-D64QKPe6.js +13 -0
  342. package/dist/ws-log-BhQmGM0R.js +267 -0
  343. package/dist/ws-log-DsyLcTqD.js +267 -0
  344. package/dist/wsl-C24YfxH9.js +160 -0
  345. package/docs/.i18n/README.md +31 -0
  346. package/docs/.i18n/glossary.zh-CN.json +210 -0
  347. package/docs/.i18n/zh-CN.tm.jsonl +1329 -0
  348. package/docs/CNAME +1 -0
  349. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  350. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  351. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  352. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  353. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  354. package/docs/assets/openclaw-logo-text-dark.png +0 -0
  355. package/docs/assets/openclaw-logo-text.png +0 -0
  356. package/docs/assets/pixel-lobster.svg +60 -0
  357. package/docs/assets/showcase/agents-ui.jpg +0 -0
  358. package/docs/assets/showcase/bambu-cli.png +0 -0
  359. package/docs/assets/showcase/codexmonitor.png +0 -0
  360. package/docs/assets/showcase/gohome-grafana.png +0 -0
  361. package/docs/assets/showcase/ios-testflight.jpg +0 -0
  362. package/docs/assets/showcase/oura-health.png +0 -0
  363. package/docs/assets/showcase/padel-cli.svg +11 -0
  364. package/docs/assets/showcase/padel-screenshot.jpg +0 -0
  365. package/docs/assets/showcase/papla-tts.jpg +0 -0
  366. package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
  367. package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
  368. package/docs/assets/showcase/roborock-status.svg +13 -0
  369. package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
  370. package/docs/assets/showcase/snag.png +0 -0
  371. package/docs/assets/showcase/tesco-shop.jpg +0 -0
  372. package/docs/assets/showcase/wienerlinien.png +0 -0
  373. package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
  374. package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
  375. package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
  376. package/docs/automation/auth-monitoring.md +44 -0
  377. package/docs/automation/cron-jobs.md +468 -0
  378. package/docs/automation/cron-vs-heartbeat.md +282 -0
  379. package/docs/automation/gmail-pubsub.md +256 -0
  380. package/docs/automation/poll.md +69 -0
  381. package/docs/automation/webhook.md +163 -0
  382. package/docs/bedrock.md +176 -0
  383. package/docs/brave-search.md +41 -0
  384. package/docs/broadcast-groups.md +442 -0
  385. package/docs/channels/bluebubbles.md +338 -0
  386. package/docs/channels/discord.md +476 -0
  387. package/docs/channels/feishu.md +577 -0
  388. package/docs/channels/googlechat.md +250 -0
  389. package/docs/channels/grammy.md +31 -0
  390. package/docs/channels/imessage.md +299 -0
  391. package/docs/channels/index.md +46 -0
  392. package/docs/channels/line.md +186 -0
  393. package/docs/channels/location.md +56 -0
  394. package/docs/channels/matrix.md +233 -0
  395. package/docs/channels/mattermost.md +138 -0
  396. package/docs/channels/msteams.md +768 -0
  397. package/docs/channels/nextcloud-talk.md +136 -0
  398. package/docs/channels/nostr.md +233 -0
  399. package/docs/channels/signal.md +202 -0
  400. package/docs/channels/slack.md +548 -0
  401. package/docs/channels/telegram.md +769 -0
  402. package/docs/channels/tlon.md +132 -0
  403. package/docs/channels/troubleshooting.md +29 -0
  404. package/docs/channels/twitch.md +379 -0
  405. package/docs/channels/whatsapp.md +404 -0
  406. package/docs/channels/zalo.md +189 -0
  407. package/docs/channels/zalouser.md +140 -0
  408. package/docs/cli/acp.md +170 -0
  409. package/docs/cli/agent.md +24 -0
  410. package/docs/cli/agents.md +75 -0
  411. package/docs/cli/approvals.md +50 -0
  412. package/docs/cli/browser.md +107 -0
  413. package/docs/cli/channels.md +79 -0
  414. package/docs/cli/config.md +50 -0
  415. package/docs/cli/configure.md +33 -0
  416. package/docs/cli/cron.md +42 -0
  417. package/docs/cli/dashboard.md +16 -0
  418. package/docs/cli/devices.md +70 -0
  419. package/docs/cli/directory.md +63 -0
  420. package/docs/cli/dns.md +23 -0
  421. package/docs/cli/docs.md +15 -0
  422. package/docs/cli/doctor.md +41 -0
  423. package/docs/cli/gateway.md +202 -0
  424. package/docs/cli/health.md +21 -0
  425. package/docs/cli/hooks.md +304 -0
  426. package/docs/cli/index.md +1031 -0
  427. package/docs/cli/logs.md +24 -0
  428. package/docs/cli/memory.md +45 -0
  429. package/docs/cli/message.md +239 -0
  430. package/docs/cli/models.md +79 -0
  431. package/docs/cli/node.md +112 -0
  432. package/docs/cli/nodes.md +73 -0
  433. package/docs/cli/onboard.md +43 -0
  434. package/docs/cli/pairing.md +21 -0
  435. package/docs/cli/plugins.md +62 -0
  436. package/docs/cli/reset.md +17 -0
  437. package/docs/cli/sandbox.md +152 -0
  438. package/docs/cli/security.md +26 -0
  439. package/docs/cli/sessions.md +16 -0
  440. package/docs/cli/setup.md +29 -0
  441. package/docs/cli/skills.md +26 -0
  442. package/docs/cli/status.md +26 -0
  443. package/docs/cli/system.md +60 -0
  444. package/docs/cli/tui.md +23 -0
  445. package/docs/cli/uninstall.md +17 -0
  446. package/docs/cli/update.md +98 -0
  447. package/docs/cli/voicecall.md +34 -0
  448. package/docs/cli/webhooks.md +25 -0
  449. package/docs/concepts/agent-loop.md +146 -0
  450. package/docs/concepts/agent-workspace.md +233 -0
  451. package/docs/concepts/agent.md +123 -0
  452. package/docs/concepts/architecture.md +129 -0
  453. package/docs/concepts/channel-routing.md +114 -0
  454. package/docs/concepts/compaction.md +61 -0
  455. package/docs/concepts/context.md +161 -0
  456. package/docs/concepts/features.md +53 -0
  457. package/docs/concepts/group-messages.md +84 -0
  458. package/docs/concepts/groups.md +373 -0
  459. package/docs/concepts/markdown-formatting.md +130 -0
  460. package/docs/concepts/memory.md +546 -0
  461. package/docs/concepts/messages.md +154 -0
  462. package/docs/concepts/model-failover.md +149 -0
  463. package/docs/concepts/model-providers.md +316 -0
  464. package/docs/concepts/models.md +208 -0
  465. package/docs/concepts/multi-agent.md +376 -0
  466. package/docs/concepts/oauth.md +145 -0
  467. package/docs/concepts/presence.md +102 -0
  468. package/docs/concepts/queue.md +89 -0
  469. package/docs/concepts/retry.md +69 -0
  470. package/docs/concepts/session-pruning.md +122 -0
  471. package/docs/concepts/session-tool.md +193 -0
  472. package/docs/concepts/session.md +204 -0
  473. package/docs/concepts/sessions.md +10 -0
  474. package/docs/concepts/streaming.md +135 -0
  475. package/docs/concepts/system-prompt.md +115 -0
  476. package/docs/concepts/timezone.md +91 -0
  477. package/docs/concepts/typebox.md +289 -0
  478. package/docs/concepts/typing-indicators.md +68 -0
  479. package/docs/concepts/usage-tracking.md +35 -0
  480. package/docs/date-time.md +128 -0
  481. package/docs/debug/node-issue.md +83 -0
  482. package/docs/debugging.md +162 -0
  483. package/docs/diagnostics/flags.md +91 -0
  484. package/docs/docs.json +1736 -0
  485. package/docs/environment.md +81 -0
  486. package/docs/experiments/onboarding-config-protocol.md +40 -0
  487. package/docs/experiments/plans/cron-add-hardening.md +63 -0
  488. package/docs/experiments/plans/group-policy-hardening.md +40 -0
  489. package/docs/experiments/plans/openresponses-gateway.md +123 -0
  490. package/docs/experiments/proposals/model-config.md +36 -0
  491. package/docs/experiments/research/memory.md +228 -0
  492. package/docs/gateway/authentication.md +145 -0
  493. package/docs/gateway/background-process.md +93 -0
  494. package/docs/gateway/bonjour.md +167 -0
  495. package/docs/gateway/bridge-protocol.md +89 -0
  496. package/docs/gateway/cli-backends.md +225 -0
  497. package/docs/gateway/configuration-examples.md +606 -0
  498. package/docs/gateway/configuration.md +3411 -0
  499. package/docs/gateway/discovery.md +116 -0
  500. package/docs/gateway/doctor.md +282 -0
  501. package/docs/gateway/gateway-lock.md +34 -0
  502. package/docs/gateway/health.md +35 -0
  503. package/docs/gateway/heartbeat.md +362 -0
  504. package/docs/gateway/index.md +328 -0
  505. package/docs/gateway/local-models.md +150 -0
  506. package/docs/gateway/logging.md +113 -0
  507. package/docs/gateway/multiple-gateways.md +112 -0
  508. package/docs/gateway/network-model.md +17 -0
  509. package/docs/gateway/openai-http-api.md +118 -0
  510. package/docs/gateway/openresponses-http-api.md +317 -0
  511. package/docs/gateway/pairing.md +99 -0
  512. package/docs/gateway/protocol.md +221 -0
  513. package/docs/gateway/remote-gateway-readme.md +157 -0
  514. package/docs/gateway/remote.md +129 -0
  515. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +128 -0
  516. package/docs/gateway/sandboxing.md +193 -0
  517. package/docs/gateway/security/formal-verification.md +164 -0
  518. package/docs/gateway/security/index.md +825 -0
  519. package/docs/gateway/tailscale.md +127 -0
  520. package/docs/gateway/tools-invoke-http-api.md +85 -0
  521. package/docs/gateway/troubleshooting.md +767 -0
  522. package/docs/help/faq.md +2829 -0
  523. package/docs/help/index.md +21 -0
  524. package/docs/help/troubleshooting.md +98 -0
  525. package/docs/hooks/soul-evil.md +69 -0
  526. package/docs/hooks.md +913 -0
  527. package/docs/images/feishu-step2-create-app.png +0 -0
  528. package/docs/images/feishu-step3-credentials.png +0 -0
  529. package/docs/images/feishu-step4-permissions.png +0 -0
  530. package/docs/images/feishu-step5-bot-capability.png +0 -0
  531. package/docs/images/feishu-step6-event-subscription.png +0 -0
  532. package/docs/images/groups-flow.svg +52 -0
  533. package/docs/images/mobile-ui-screenshot.png +0 -0
  534. package/docs/index.md +192 -0
  535. package/docs/install/ansible.md +208 -0
  536. package/docs/install/bun.md +59 -0
  537. package/docs/install/development-channels.md +75 -0
  538. package/docs/install/docker.md +567 -0
  539. package/docs/install/exe-dev.md +126 -0
  540. package/docs/install/fly.md +486 -0
  541. package/docs/install/gcp.md +503 -0
  542. package/docs/install/hetzner.md +330 -0
  543. package/docs/install/index.md +187 -0
  544. package/docs/install/installer.md +123 -0
  545. package/docs/install/macos-vm.md +281 -0
  546. package/docs/install/migrating.md +192 -0
  547. package/docs/install/nix.md +96 -0
  548. package/docs/install/node.md +78 -0
  549. package/docs/install/northflank.mdx +53 -0
  550. package/docs/install/railway.mdx +99 -0
  551. package/docs/install/render.mdx +165 -0
  552. package/docs/install/uninstall.md +128 -0
  553. package/docs/install/updating.md +228 -0
  554. package/docs/logging.md +350 -0
  555. package/docs/multi-agent-sandbox-tools.md +395 -0
  556. package/docs/network.md +54 -0
  557. package/docs/nodes/audio.md +114 -0
  558. package/docs/nodes/camera.md +156 -0
  559. package/docs/nodes/images.md +72 -0
  560. package/docs/nodes/index.md +341 -0
  561. package/docs/nodes/location-command.md +113 -0
  562. package/docs/nodes/media-understanding.md +379 -0
  563. package/docs/nodes/talk.md +90 -0
  564. package/docs/nodes/voicewake.md +65 -0
  565. package/docs/perplexity.md +80 -0
  566. package/docs/pi-dev.md +70 -0
  567. package/docs/pi.md +612 -0
  568. package/docs/platforms/android.md +148 -0
  569. package/docs/platforms/digitalocean.md +262 -0
  570. package/docs/platforms/index.md +53 -0
  571. package/docs/platforms/ios.md +107 -0
  572. package/docs/platforms/linux.md +94 -0
  573. package/docs/platforms/mac/bundled-gateway.md +73 -0
  574. package/docs/platforms/mac/canvas.md +125 -0
  575. package/docs/platforms/mac/child-process.md +69 -0
  576. package/docs/platforms/mac/dev-setup.md +102 -0
  577. package/docs/platforms/mac/health.md +34 -0
  578. package/docs/platforms/mac/icon.md +31 -0
  579. package/docs/platforms/mac/logging.md +57 -0
  580. package/docs/platforms/mac/menu-bar.md +81 -0
  581. package/docs/platforms/mac/peekaboo.md +65 -0
  582. package/docs/platforms/mac/permissions.md +44 -0
  583. package/docs/platforms/mac/release.md +85 -0
  584. package/docs/platforms/mac/remote.md +83 -0
  585. package/docs/platforms/mac/signing.md +47 -0
  586. package/docs/platforms/mac/skills.md +33 -0
  587. package/docs/platforms/mac/voice-overlay.md +60 -0
  588. package/docs/platforms/mac/voicewake.md +67 -0
  589. package/docs/platforms/mac/webchat.md +41 -0
  590. package/docs/platforms/mac/xpc.md +61 -0
  591. package/docs/platforms/macos.md +203 -0
  592. package/docs/platforms/oracle.md +303 -0
  593. package/docs/platforms/raspberry-pi.md +358 -0
  594. package/docs/platforms/windows.md +159 -0
  595. package/docs/plugin.md +664 -0
  596. package/docs/plugins/agent-tools.md +99 -0
  597. package/docs/plugins/manifest.md +71 -0
  598. package/docs/plugins/voice-call.md +284 -0
  599. package/docs/plugins/zalouser.md +81 -0
  600. package/docs/prose.md +134 -0
  601. package/docs/providers/anthropic.md +152 -0
  602. package/docs/providers/claude-max-api-proxy.md +148 -0
  603. package/docs/providers/cloudflare-ai-gateway.md +71 -0
  604. package/docs/providers/deepgram.md +93 -0
  605. package/docs/providers/github-copilot.md +72 -0
  606. package/docs/providers/glm.md +33 -0
  607. package/docs/providers/index.md +63 -0
  608. package/docs/providers/minimax.md +208 -0
  609. package/docs/providers/models.md +51 -0
  610. package/docs/providers/moonshot.md +142 -0
  611. package/docs/providers/ollama.md +277 -0
  612. package/docs/providers/openai.md +62 -0
  613. package/docs/providers/opencode.md +36 -0
  614. package/docs/providers/openrouter.md +37 -0
  615. package/docs/providers/qwen.md +53 -0
  616. package/docs/providers/synthetic.md +99 -0
  617. package/docs/providers/venice.md +267 -0
  618. package/docs/providers/vercel-ai-gateway.md +50 -0
  619. package/docs/providers/xiaomi.md +64 -0
  620. package/docs/providers/zai.md +36 -0
  621. package/docs/refactor/clawnet.md +417 -0
  622. package/docs/refactor/exec-host.md +316 -0
  623. package/docs/refactor/outbound-session-mirroring.md +85 -0
  624. package/docs/refactor/plugin-sdk.md +214 -0
  625. package/docs/refactor/strict-config.md +93 -0
  626. package/docs/reference/AGENTS.default.md +124 -0
  627. package/docs/reference/RELEASING.md +120 -0
  628. package/docs/reference/api-usage-costs.md +137 -0
  629. package/docs/reference/credits.md +27 -0
  630. package/docs/reference/device-models.md +47 -0
  631. package/docs/reference/rpc.md +43 -0
  632. package/docs/reference/session-management-compaction.md +285 -0
  633. package/docs/reference/templates/AGENTS.dev.md +83 -0
  634. package/docs/reference/templates/AGENTS.md +218 -0
  635. package/docs/reference/templates/BOOT.md +10 -0
  636. package/docs/reference/templates/BOOTSTRAP.md +61 -0
  637. package/docs/reference/templates/HEARTBEAT.md +11 -0
  638. package/docs/reference/templates/IDENTITY.dev.md +47 -0
  639. package/docs/reference/templates/IDENTITY.md +27 -0
  640. package/docs/reference/templates/SOUL.dev.md +76 -0
  641. package/docs/reference/templates/SOUL.md +42 -0
  642. package/docs/reference/templates/TOOLS.dev.md +24 -0
  643. package/docs/reference/templates/TOOLS.md +46 -0
  644. package/docs/reference/templates/USER.dev.md +18 -0
  645. package/docs/reference/templates/USER.md +22 -0
  646. package/docs/reference/test.md +50 -0
  647. package/docs/reference/transcript-hygiene.md +129 -0
  648. package/docs/reference/wizard.md +268 -0
  649. package/docs/scripts.md +28 -0
  650. package/docs/security/formal-verification.md +164 -0
  651. package/docs/start/bootstrapping.md +41 -0
  652. package/docs/start/docs-directory.md +64 -0
  653. package/docs/start/getting-started.md +120 -0
  654. package/docs/start/hubs.md +197 -0
  655. package/docs/start/lore.md +219 -0
  656. package/docs/start/onboarding.md +80 -0
  657. package/docs/start/openclaw.md +224 -0
  658. package/docs/start/pairing.md +86 -0
  659. package/docs/start/quickstart.md +22 -0
  660. package/docs/start/setup.md +162 -0
  661. package/docs/start/showcase.md +416 -0
  662. package/docs/start/wizard-cli-automation.md +141 -0
  663. package/docs/start/wizard-cli-reference.md +244 -0
  664. package/docs/start/wizard.md +108 -0
  665. package/docs/style.css +3 -0
  666. package/docs/testing.md +368 -0
  667. package/docs/token-use.md +112 -0
  668. package/docs/tools/agent-send.md +53 -0
  669. package/docs/tools/apply-patch.md +50 -0
  670. package/docs/tools/browser-linux-troubleshooting.md +139 -0
  671. package/docs/tools/browser-login.md +68 -0
  672. package/docs/tools/browser.md +576 -0
  673. package/docs/tools/chrome-extension.md +178 -0
  674. package/docs/tools/clawhub.md +257 -0
  675. package/docs/tools/creating-skills.md +54 -0
  676. package/docs/tools/elevated.md +57 -0
  677. package/docs/tools/exec-approvals.md +246 -0
  678. package/docs/tools/exec.md +179 -0
  679. package/docs/tools/firecrawl.md +61 -0
  680. package/docs/tools/index.md +512 -0
  681. package/docs/tools/llm-task.md +115 -0
  682. package/docs/tools/lobster.md +342 -0
  683. package/docs/tools/reactions.md +22 -0
  684. package/docs/tools/skills-config.md +76 -0
  685. package/docs/tools/skills.md +300 -0
  686. package/docs/tools/slash-commands.md +198 -0
  687. package/docs/tools/subagents.md +151 -0
  688. package/docs/tools/thinking.md +74 -0
  689. package/docs/tools/web.md +261 -0
  690. package/docs/tts.md +396 -0
  691. package/docs/tui.md +162 -0
  692. package/docs/vps.md +43 -0
  693. package/docs/web/control-ui.md +223 -0
  694. package/docs/web/dashboard.md +46 -0
  695. package/docs/web/index.md +116 -0
  696. package/docs/web/webchat.md +49 -0
  697. package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
  698. package/docs/whatsapp-openclaw.jpg +0 -0
  699. package/docs/zh-CN/AGENTS.md +59 -0
  700. package/docs/zh-CN/automation/auth-monitoring.md +47 -0
  701. package/docs/zh-CN/automation/cron-jobs.md +424 -0
  702. package/docs/zh-CN/automation/cron-vs-heartbeat.md +286 -0
  703. package/docs/zh-CN/automation/gmail-pubsub.md +249 -0
  704. package/docs/zh-CN/automation/poll.md +76 -0
  705. package/docs/zh-CN/automation/webhook.md +163 -0
  706. package/docs/zh-CN/bedrock.md +170 -0
  707. package/docs/zh-CN/brave-search.md +48 -0
  708. package/docs/zh-CN/broadcast-groups.md +449 -0
  709. package/docs/zh-CN/channels/bluebubbles.md +271 -0
  710. package/docs/zh-CN/channels/discord.md +468 -0
  711. package/docs/zh-CN/channels/feishu.md +629 -0
  712. package/docs/zh-CN/channels/googlechat.md +257 -0
  713. package/docs/zh-CN/channels/grammy.md +38 -0
  714. package/docs/zh-CN/channels/imessage.md +302 -0
  715. package/docs/zh-CN/channels/index.md +53 -0
  716. package/docs/zh-CN/channels/line.md +180 -0
  717. package/docs/zh-CN/channels/location.md +63 -0
  718. package/docs/zh-CN/channels/matrix.md +221 -0
  719. package/docs/zh-CN/channels/mattermost.md +144 -0
  720. package/docs/zh-CN/channels/msteams.md +775 -0
  721. package/docs/zh-CN/channels/nextcloud-talk.md +142 -0
  722. package/docs/zh-CN/channels/nostr.md +240 -0
  723. package/docs/zh-CN/channels/signal.md +209 -0
  724. package/docs/zh-CN/channels/slack.md +531 -0
  725. package/docs/zh-CN/channels/telegram.md +751 -0
  726. package/docs/zh-CN/channels/tlon.md +136 -0
  727. package/docs/zh-CN/channels/troubleshooting.md +36 -0
  728. package/docs/zh-CN/channels/twitch.md +385 -0
  729. package/docs/zh-CN/channels/whatsapp.md +411 -0
  730. package/docs/zh-CN/channels/zalo.md +196 -0
  731. package/docs/zh-CN/channels/zalouser.md +147 -0
  732. package/docs/zh-CN/cli/acp.md +173 -0
  733. package/docs/zh-CN/cli/agent.md +30 -0
  734. package/docs/zh-CN/cli/agents.md +82 -0
  735. package/docs/zh-CN/cli/approvals.md +57 -0
  736. package/docs/zh-CN/cli/browser.md +114 -0
  737. package/docs/zh-CN/cli/channels.md +86 -0
  738. package/docs/zh-CN/cli/config.md +57 -0
  739. package/docs/zh-CN/cli/configure.md +38 -0
  740. package/docs/zh-CN/cli/cron.md +43 -0
  741. package/docs/zh-CN/cli/dashboard.md +23 -0
  742. package/docs/zh-CN/cli/devices.md +74 -0
  743. package/docs/zh-CN/cli/directory.md +70 -0
  744. package/docs/zh-CN/cli/dns.md +30 -0
  745. package/docs/zh-CN/cli/docs.md +22 -0
  746. package/docs/zh-CN/cli/doctor.md +48 -0
  747. package/docs/zh-CN/cli/gateway.md +206 -0
  748. package/docs/zh-CN/cli/health.md +28 -0
  749. package/docs/zh-CN/cli/hooks.md +311 -0
  750. package/docs/zh-CN/cli/index.md +1032 -0
  751. package/docs/zh-CN/cli/logs.md +31 -0
  752. package/docs/zh-CN/cli/memory.md +52 -0
  753. package/docs/zh-CN/cli/message.md +246 -0
  754. package/docs/zh-CN/cli/models.md +85 -0
  755. package/docs/zh-CN/cli/node.md +115 -0
  756. package/docs/zh-CN/cli/nodes.md +80 -0
  757. package/docs/zh-CN/cli/onboard.md +36 -0
  758. package/docs/zh-CN/cli/pairing.md +28 -0
  759. package/docs/zh-CN/cli/plugins.md +66 -0
  760. package/docs/zh-CN/cli/reset.md +24 -0
  761. package/docs/zh-CN/cli/sandbox.md +158 -0
  762. package/docs/zh-CN/cli/security.md +33 -0
  763. package/docs/zh-CN/cli/sessions.md +23 -0
  764. package/docs/zh-CN/cli/setup.md +36 -0
  765. package/docs/zh-CN/cli/skills.md +33 -0
  766. package/docs/zh-CN/cli/status.md +33 -0
  767. package/docs/zh-CN/cli/system.md +63 -0
  768. package/docs/zh-CN/cli/tui.md +30 -0
  769. package/docs/zh-CN/cli/uninstall.md +24 -0
  770. package/docs/zh-CN/cli/update.md +101 -0
  771. package/docs/zh-CN/cli/voicecall.md +41 -0
  772. package/docs/zh-CN/cli/webhooks.md +32 -0
  773. package/docs/zh-CN/concepts/agent-loop.md +146 -0
  774. package/docs/zh-CN/concepts/agent-workspace.md +219 -0
  775. package/docs/zh-CN/concepts/agent.md +115 -0
  776. package/docs/zh-CN/concepts/architecture.md +123 -0
  777. package/docs/zh-CN/concepts/channel-routing.md +117 -0
  778. package/docs/zh-CN/concepts/compaction.md +67 -0
  779. package/docs/zh-CN/concepts/context.md +168 -0
  780. package/docs/zh-CN/concepts/features.md +59 -0
  781. package/docs/zh-CN/concepts/group-messages.md +91 -0
  782. package/docs/zh-CN/concepts/groups.md +379 -0
  783. package/docs/zh-CN/concepts/markdown-formatting.md +117 -0
  784. package/docs/zh-CN/concepts/memory.md +412 -0
  785. package/docs/zh-CN/concepts/messages.md +141 -0
  786. package/docs/zh-CN/concepts/model-failover.md +145 -0
  787. package/docs/zh-CN/concepts/model-providers.md +320 -0
  788. package/docs/zh-CN/concepts/models.md +196 -0
  789. package/docs/zh-CN/concepts/multi-agent.md +372 -0
  790. package/docs/zh-CN/concepts/oauth.md +151 -0
  791. package/docs/zh-CN/concepts/presence.md +99 -0
  792. package/docs/zh-CN/concepts/queue.md +94 -0
  793. package/docs/zh-CN/concepts/retry.md +76 -0
  794. package/docs/zh-CN/concepts/session-pruning.md +129 -0
  795. package/docs/zh-CN/concepts/session-tool.md +200 -0
  796. package/docs/zh-CN/concepts/session.md +166 -0
  797. package/docs/zh-CN/concepts/sessions.md +17 -0
  798. package/docs/zh-CN/concepts/streaming.md +133 -0
  799. package/docs/zh-CN/concepts/system-prompt.md +101 -0
  800. package/docs/zh-CN/concepts/timezone.md +96 -0
  801. package/docs/zh-CN/concepts/typebox.md +284 -0
  802. package/docs/zh-CN/concepts/typing-indicators.md +74 -0
  803. package/docs/zh-CN/concepts/usage-tracking.md +42 -0
  804. package/docs/zh-CN/date-time.md +129 -0
  805. package/docs/zh-CN/debug/node-issue.md +90 -0
  806. package/docs/zh-CN/debugging.md +160 -0
  807. package/docs/zh-CN/diagnostics/flags.md +98 -0
  808. package/docs/zh-CN/environment.md +88 -0
  809. package/docs/zh-CN/experiments/onboarding-config-protocol.md +47 -0
  810. package/docs/zh-CN/experiments/plans/cron-add-hardening.md +70 -0
  811. package/docs/zh-CN/experiments/plans/group-policy-hardening.md +45 -0
  812. package/docs/zh-CN/experiments/plans/openresponses-gateway.md +121 -0
  813. package/docs/zh-CN/experiments/proposals/model-config.md +42 -0
  814. package/docs/zh-CN/experiments/research/memory.md +235 -0
  815. package/docs/zh-CN/gateway/authentication.md +142 -0
  816. package/docs/zh-CN/gateway/background-process.md +100 -0
  817. package/docs/zh-CN/gateway/bonjour.md +174 -0
  818. package/docs/zh-CN/gateway/bridge-protocol.md +86 -0
  819. package/docs/zh-CN/gateway/cli-backends.md +213 -0
  820. package/docs/zh-CN/gateway/configuration-examples.md +587 -0
  821. package/docs/zh-CN/gateway/configuration.md +3332 -0
  822. package/docs/zh-CN/gateway/discovery.md +123 -0
  823. package/docs/zh-CN/gateway/doctor.md +238 -0
  824. package/docs/zh-CN/gateway/gateway-lock.md +41 -0
  825. package/docs/zh-CN/gateway/health.md +42 -0
  826. package/docs/zh-CN/gateway/heartbeat.md +274 -0
  827. package/docs/zh-CN/gateway/index.md +335 -0
  828. package/docs/zh-CN/gateway/local-models.md +157 -0
  829. package/docs/zh-CN/gateway/logging.md +114 -0
  830. package/docs/zh-CN/gateway/multiple-gateways.md +119 -0
  831. package/docs/zh-CN/gateway/network-model.md +23 -0
  832. package/docs/zh-CN/gateway/openai-http-api.md +125 -0
  833. package/docs/zh-CN/gateway/openresponses-http-api.md +317 -0
  834. package/docs/zh-CN/gateway/pairing.md +99 -0
  835. package/docs/zh-CN/gateway/protocol.md +220 -0
  836. package/docs/zh-CN/gateway/remote-gateway-readme.md +164 -0
  837. package/docs/zh-CN/gateway/remote.md +133 -0
  838. package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +135 -0
  839. package/docs/zh-CN/gateway/sandboxing.md +188 -0
  840. package/docs/zh-CN/gateway/security/formal-verification.md +169 -0
  841. package/docs/zh-CN/gateway/security/index.md +777 -0
  842. package/docs/zh-CN/gateway/tailscale.md +124 -0
  843. package/docs/zh-CN/gateway/tools-invoke-http-api.md +92 -0
  844. package/docs/zh-CN/gateway/troubleshooting.md +771 -0
  845. package/docs/zh-CN/help/faq.md +2628 -0
  846. package/docs/zh-CN/help/index.md +28 -0
  847. package/docs/zh-CN/help/troubleshooting.md +104 -0
  848. package/docs/zh-CN/hooks/soul-evil.md +72 -0
  849. package/docs/zh-CN/hooks.md +919 -0
  850. package/docs/zh-CN/index.md +186 -0
  851. package/docs/zh-CN/install/ansible.md +215 -0
  852. package/docs/zh-CN/install/bun.md +65 -0
  853. package/docs/zh-CN/install/development-channels.md +81 -0
  854. package/docs/zh-CN/install/docker.md +532 -0
  855. package/docs/zh-CN/install/exe-dev.md +127 -0
  856. package/docs/zh-CN/install/fly.md +490 -0
  857. package/docs/zh-CN/install/gcp.md +510 -0
  858. package/docs/zh-CN/install/hetzner.md +337 -0
  859. package/docs/zh-CN/install/index.md +193 -0
  860. package/docs/zh-CN/install/installer.md +128 -0
  861. package/docs/zh-CN/install/macos-vm.md +288 -0
  862. package/docs/zh-CN/install/migrating.md +199 -0
  863. package/docs/zh-CN/install/nix.md +99 -0
  864. package/docs/zh-CN/install/node.md +85 -0
  865. package/docs/zh-CN/install/northflank.mdx +60 -0
  866. package/docs/zh-CN/install/railway.mdx +106 -0
  867. package/docs/zh-CN/install/render.mdx +169 -0
  868. package/docs/zh-CN/install/uninstall.md +135 -0
  869. package/docs/zh-CN/install/updating.md +233 -0
  870. package/docs/zh-CN/logging.md +329 -0
  871. package/docs/zh-CN/multi-agent-sandbox-tools.md +401 -0
  872. package/docs/zh-CN/network.md +59 -0
  873. package/docs/zh-CN/nodes/audio.md +120 -0
  874. package/docs/zh-CN/nodes/camera.md +162 -0
  875. package/docs/zh-CN/nodes/images.md +79 -0
  876. package/docs/zh-CN/nodes/index.md +348 -0
  877. package/docs/zh-CN/nodes/location-command.md +120 -0
  878. package/docs/zh-CN/nodes/media-understanding.md +380 -0
  879. package/docs/zh-CN/nodes/talk.md +97 -0
  880. package/docs/zh-CN/nodes/voicewake.md +72 -0
  881. package/docs/zh-CN/perplexity.md +84 -0
  882. package/docs/zh-CN/pi-dev.md +77 -0
  883. package/docs/zh-CN/pi.md +619 -0
  884. package/docs/zh-CN/platforms/android.md +155 -0
  885. package/docs/zh-CN/platforms/digitalocean.md +269 -0
  886. package/docs/zh-CN/platforms/index.md +60 -0
  887. package/docs/zh-CN/platforms/ios.md +114 -0
  888. package/docs/zh-CN/platforms/linux.md +101 -0
  889. package/docs/zh-CN/platforms/mac/bundled-gateway.md +75 -0
  890. package/docs/zh-CN/platforms/mac/canvas.md +128 -0
  891. package/docs/zh-CN/platforms/mac/child-process.md +73 -0
  892. package/docs/zh-CN/platforms/mac/dev-setup.md +109 -0
  893. package/docs/zh-CN/platforms/mac/health.md +41 -0
  894. package/docs/zh-CN/platforms/mac/icon.md +38 -0
  895. package/docs/zh-CN/platforms/mac/logging.md +64 -0
  896. package/docs/zh-CN/platforms/mac/menu-bar.md +88 -0
  897. package/docs/zh-CN/platforms/mac/peekaboo.md +62 -0
  898. package/docs/zh-CN/platforms/mac/permissions.md +46 -0
  899. package/docs/zh-CN/platforms/mac/release.md +92 -0
  900. package/docs/zh-CN/platforms/mac/remote.md +90 -0
  901. package/docs/zh-CN/platforms/mac/signing.md +54 -0
  902. package/docs/zh-CN/platforms/mac/skills.md +40 -0
  903. package/docs/zh-CN/platforms/mac/voice-overlay.md +67 -0
  904. package/docs/zh-CN/platforms/mac/voicewake.md +74 -0
  905. package/docs/zh-CN/platforms/mac/webchat.md +43 -0
  906. package/docs/zh-CN/platforms/mac/xpc.md +68 -0
  907. package/docs/zh-CN/platforms/macos.md +193 -0
  908. package/docs/zh-CN/platforms/oracle.md +310 -0
  909. package/docs/zh-CN/platforms/raspberry-pi.md +365 -0
  910. package/docs/zh-CN/platforms/windows.md +156 -0
  911. package/docs/zh-CN/plugin.md +639 -0
  912. package/docs/zh-CN/plugins/agent-tools.md +99 -0
  913. package/docs/zh-CN/plugins/manifest.md +68 -0
  914. package/docs/zh-CN/plugins/voice-call.md +250 -0
  915. package/docs/zh-CN/plugins/zalouser.md +88 -0
  916. package/docs/zh-CN/prose.md +141 -0
  917. package/docs/zh-CN/providers/anthropic.md +159 -0
  918. package/docs/zh-CN/providers/claude-max-api-proxy.md +155 -0
  919. package/docs/zh-CN/providers/deepgram.md +97 -0
  920. package/docs/zh-CN/providers/github-copilot.md +67 -0
  921. package/docs/zh-CN/providers/glm.md +39 -0
  922. package/docs/zh-CN/providers/index.md +68 -0
  923. package/docs/zh-CN/providers/minimax.md +206 -0
  924. package/docs/zh-CN/providers/models.md +55 -0
  925. package/docs/zh-CN/providers/moonshot.md +145 -0
  926. package/docs/zh-CN/providers/ollama.md +230 -0
  927. package/docs/zh-CN/providers/openai.md +68 -0
  928. package/docs/zh-CN/providers/opencode.md +41 -0
  929. package/docs/zh-CN/providers/openrouter.md +43 -0
  930. package/docs/zh-CN/providers/qwen.md +55 -0
  931. package/docs/zh-CN/providers/synthetic.md +102 -0
  932. package/docs/zh-CN/providers/venice.md +274 -0
  933. package/docs/zh-CN/providers/vercel-ai-gateway.md +57 -0
  934. package/docs/zh-CN/providers/xiaomi.md +68 -0
  935. package/docs/zh-CN/providers/zai.md +41 -0
  936. package/docs/zh-CN/refactor/clawnet.md +424 -0
  937. package/docs/zh-CN/refactor/exec-host.md +323 -0
  938. package/docs/zh-CN/refactor/outbound-session-mirroring.md +92 -0
  939. package/docs/zh-CN/refactor/plugin-sdk.md +221 -0
  940. package/docs/zh-CN/refactor/strict-config.md +100 -0
  941. package/docs/zh-CN/reference/AGENTS.default.md +131 -0
  942. package/docs/zh-CN/reference/RELEASING.md +123 -0
  943. package/docs/zh-CN/reference/api-usage-costs.md +136 -0
  944. package/docs/zh-CN/reference/credits.md +34 -0
  945. package/docs/zh-CN/reference/device-models.md +54 -0
  946. package/docs/zh-CN/reference/rpc.md +48 -0
  947. package/docs/zh-CN/reference/session-management-compaction.md +287 -0
  948. package/docs/zh-CN/reference/templates/AGENTS.dev.md +89 -0
  949. package/docs/zh-CN/reference/templates/AGENTS.md +225 -0
  950. package/docs/zh-CN/reference/templates/BOOT.md +17 -0
  951. package/docs/zh-CN/reference/templates/BOOTSTRAP.md +68 -0
  952. package/docs/zh-CN/reference/templates/HEARTBEAT.md +18 -0
  953. package/docs/zh-CN/reference/templates/IDENTITY.dev.md +54 -0
  954. package/docs/zh-CN/reference/templates/IDENTITY.md +35 -0
  955. package/docs/zh-CN/reference/templates/SOUL.dev.md +83 -0
  956. package/docs/zh-CN/reference/templates/SOUL.md +49 -0
  957. package/docs/zh-CN/reference/templates/TOOLS.dev.md +31 -0
  958. package/docs/zh-CN/reference/templates/TOOLS.md +53 -0
  959. package/docs/zh-CN/reference/templates/USER.dev.md +25 -0
  960. package/docs/zh-CN/reference/templates/USER.md +30 -0
  961. package/docs/zh-CN/reference/test.md +57 -0
  962. package/docs/zh-CN/reference/transcript-hygiene.md +109 -0
  963. package/docs/zh-CN/scripts.md +35 -0
  964. package/docs/zh-CN/security/formal-verification.md +171 -0
  965. package/docs/zh-CN/start/docs-directory.md +70 -0
  966. package/docs/zh-CN/start/getting-started.md +206 -0
  967. package/docs/zh-CN/start/hubs.md +200 -0
  968. package/docs/zh-CN/start/lore.md +226 -0
  969. package/docs/zh-CN/start/onboarding.md +105 -0
  970. package/docs/zh-CN/start/openclaw.md +248 -0
  971. package/docs/zh-CN/start/pairing.md +89 -0
  972. package/docs/zh-CN/start/quickstart.md +88 -0
  973. package/docs/zh-CN/start/setup.md +153 -0
  974. package/docs/zh-CN/start/showcase.md +423 -0
  975. package/docs/zh-CN/start/wizard.md +331 -0
  976. package/docs/zh-CN/testing.md +375 -0
  977. package/docs/zh-CN/token-use.md +119 -0
  978. package/docs/zh-CN/tools/agent-send.md +59 -0
  979. package/docs/zh-CN/tools/apply-patch.md +57 -0
  980. package/docs/zh-CN/tools/browser-linux-troubleshooting.md +144 -0
  981. package/docs/zh-CN/tools/browser-login.md +75 -0
  982. package/docs/zh-CN/tools/browser.md +553 -0
  983. package/docs/zh-CN/tools/chrome-extension.md +183 -0
  984. package/docs/zh-CN/tools/clawhub.md +209 -0
  985. package/docs/zh-CN/tools/creating-skills.md +61 -0
  986. package/docs/zh-CN/tools/elevated.md +64 -0
  987. package/docs/zh-CN/tools/exec-approvals.md +234 -0
  988. package/docs/zh-CN/tools/exec.md +169 -0
  989. package/docs/zh-CN/tools/firecrawl.md +68 -0
  990. package/docs/zh-CN/tools/index.md +515 -0
  991. package/docs/zh-CN/tools/llm-task.md +117 -0
  992. package/docs/zh-CN/tools/lobster.md +349 -0
  993. package/docs/zh-CN/tools/reactions.md +29 -0
  994. package/docs/zh-CN/tools/skills-config.md +78 -0
  995. package/docs/zh-CN/tools/skills.md +279 -0
  996. package/docs/zh-CN/tools/slash-commands.md +205 -0
  997. package/docs/zh-CN/tools/subagents.md +156 -0
  998. package/docs/zh-CN/tools/thinking.md +80 -0
  999. package/docs/zh-CN/tools/web.md +257 -0
  1000. package/docs/zh-CN/tts.md +375 -0
  1001. package/docs/zh-CN/tui.md +166 -0
  1002. package/docs/zh-CN/vps.md +47 -0
  1003. package/docs/zh-CN/web/control-ui.md +191 -0
  1004. package/docs/zh-CN/web/dashboard.md +53 -0
  1005. package/docs/zh-CN/web/index.md +118 -0
  1006. package/docs/zh-CN/web/webchat.md +56 -0
  1007. package/extensions/blockchain/cryptoclaw.plugin.json +17 -0
  1008. package/extensions/blockchain/index.ts +284 -0
  1009. package/extensions/blockchain/node_modules/.bin/cryptoclaw +21 -0
  1010. package/extensions/blockchain/node_modules/.bin/tsc +21 -0
  1011. package/extensions/blockchain/node_modules/.bin/tsserver +21 -0
  1012. package/extensions/blockchain/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  1013. package/extensions/blockchain/package.json +16 -0
  1014. package/extensions/blockchain/src/evm/chains.ts +150 -0
  1015. package/extensions/blockchain/src/evm/services/abi/erc1155.ts +128 -0
  1016. package/extensions/blockchain/src/evm/services/abi/erc20.ts +96 -0
  1017. package/extensions/blockchain/src/evm/services/abi/erc721.ts +130 -0
  1018. package/extensions/blockchain/src/evm/services/abi/erc8004-identity.ts +158 -0
  1019. package/extensions/blockchain/src/evm/services/abi/erc8004-reputation.ts +120 -0
  1020. package/extensions/blockchain/src/evm/services/abi/router-v2.ts +115 -0
  1021. package/extensions/blockchain/src/evm/services/abi/router-v3.ts +81 -0
  1022. package/extensions/blockchain/src/evm/services/agent-identity-config.test.ts +117 -0
  1023. package/extensions/blockchain/src/evm/services/agent-identity-config.ts +75 -0
  1024. package/extensions/blockchain/src/evm/services/agent-identity-store.ts +37 -0
  1025. package/extensions/blockchain/src/evm/services/agent-identity.ts +262 -0
  1026. package/extensions/blockchain/src/evm/services/balance.ts +76 -0
  1027. package/extensions/blockchain/src/evm/services/blocks.ts +25 -0
  1028. package/extensions/blockchain/src/evm/services/clients.ts +48 -0
  1029. package/extensions/blockchain/src/evm/services/contracts.ts +52 -0
  1030. package/extensions/blockchain/src/evm/services/dex-config.test.ts +145 -0
  1031. package/extensions/blockchain/src/evm/services/dex-config.ts +164 -0
  1032. package/extensions/blockchain/src/evm/services/ens.ts +27 -0
  1033. package/extensions/blockchain/src/evm/services/security.test.ts +127 -0
  1034. package/extensions/blockchain/src/evm/services/security.ts +110 -0
  1035. package/extensions/blockchain/src/evm/services/swap.test.ts +204 -0
  1036. package/extensions/blockchain/src/evm/services/swap.ts +534 -0
  1037. package/extensions/blockchain/src/evm/services/tokens.ts +118 -0
  1038. package/extensions/blockchain/src/evm/services/transactions.ts +54 -0
  1039. package/extensions/blockchain/src/evm/services/transfer.ts +174 -0
  1040. package/extensions/blockchain/src/evm/services/utils.ts +18 -0
  1041. package/extensions/blockchain/src/evm/tools/block-tools.ts +34 -0
  1042. package/extensions/blockchain/src/evm/tools/contract-tools.ts +138 -0
  1043. package/extensions/blockchain/src/evm/tools/identity-tools.ts +305 -0
  1044. package/extensions/blockchain/src/evm/tools/network-tools.ts +58 -0
  1045. package/extensions/blockchain/src/evm/tools/nft-tools.ts +103 -0
  1046. package/extensions/blockchain/src/evm/tools/security-tools.ts +38 -0
  1047. package/extensions/blockchain/src/evm/tools/swap-tools.ts +314 -0
  1048. package/extensions/blockchain/src/evm/tools/token-tools.ts +167 -0
  1049. package/extensions/blockchain/src/evm/tools/tx-tools.ts +73 -0
  1050. package/extensions/blockchain/src/evm/tools/wallet-tools.ts +196 -0
  1051. package/extensions/blockchain/src/tx-gate/confirmation.ts +55 -0
  1052. package/extensions/blockchain/src/tx-gate/spending-limits.ts +94 -0
  1053. package/extensions/blockchain/src/wallet/active-wallet.ts +27 -0
  1054. package/extensions/blockchain/src/wallet/key-guard.test.ts +156 -0
  1055. package/extensions/blockchain/src/wallet/key-guard.ts +80 -0
  1056. package/extensions/blockchain/src/wallet/keystore.ts +88 -0
  1057. package/extensions/blockchain/src/wallet/wallet-manager.test.ts +215 -0
  1058. package/extensions/blockchain/src/wallet/wallet-manager.ts +212 -0
  1059. package/extensions/copilot-proxy/README.md +24 -0
  1060. package/extensions/copilot-proxy/index.ts +149 -0
  1061. package/extensions/copilot-proxy/node_modules/.bin/cryptoclaw +21 -0
  1062. package/extensions/copilot-proxy/openclaw.plugin.json +9 -0
  1063. package/extensions/copilot-proxy/package.json +14 -0
  1064. package/extensions/diagnostics-otel/index.ts +15 -0
  1065. package/extensions/diagnostics-otel/node_modules/.bin/acorn +21 -0
  1066. package/extensions/diagnostics-otel/node_modules/.bin/cryptoclaw +21 -0
  1067. package/extensions/diagnostics-otel/openclaw.plugin.json +8 -0
  1068. package/extensions/diagnostics-otel/package.json +27 -0
  1069. package/extensions/diagnostics-otel/src/service.test.ts +227 -0
  1070. package/extensions/diagnostics-otel/src/service.ts +635 -0
  1071. package/extensions/discord/index.ts +17 -0
  1072. package/extensions/discord/node_modules/.bin/cryptoclaw +21 -0
  1073. package/extensions/discord/openclaw.plugin.json +9 -0
  1074. package/extensions/discord/package.json +14 -0
  1075. package/extensions/discord/src/channel.ts +422 -0
  1076. package/extensions/discord/src/runtime.ts +14 -0
  1077. package/extensions/imessage/index.ts +17 -0
  1078. package/extensions/imessage/node_modules/.bin/cryptoclaw +21 -0
  1079. package/extensions/imessage/openclaw.plugin.json +9 -0
  1080. package/extensions/imessage/package.json +14 -0
  1081. package/extensions/imessage/src/channel.ts +294 -0
  1082. package/extensions/imessage/src/runtime.ts +14 -0
  1083. package/extensions/memory-core/index.ts +38 -0
  1084. package/extensions/memory-core/node_modules/.bin/cryptoclaw +21 -0
  1085. package/extensions/memory-core/openclaw.plugin.json +9 -0
  1086. package/extensions/memory-core/package.json +17 -0
  1087. package/extensions/memory-lancedb/config.ts +139 -0
  1088. package/extensions/memory-lancedb/index.test.ts +295 -0
  1089. package/extensions/memory-lancedb/index.ts +608 -0
  1090. package/extensions/memory-lancedb/node_modules/.bin/arrow2csv +21 -0
  1091. package/extensions/memory-lancedb/node_modules/.bin/cryptoclaw +21 -0
  1092. package/extensions/memory-lancedb/node_modules/.bin/openai +21 -0
  1093. package/extensions/memory-lancedb/openclaw.plugin.json +60 -0
  1094. package/extensions/memory-lancedb/package.json +19 -0
  1095. package/extensions/nostr/CHANGELOG.md +80 -0
  1096. package/extensions/nostr/README.md +136 -0
  1097. package/extensions/nostr/index.ts +68 -0
  1098. package/extensions/nostr/node_modules/.bin/cryptoclaw +21 -0
  1099. package/extensions/nostr/node_modules/.bin/tsc +21 -0
  1100. package/extensions/nostr/node_modules/.bin/tsserver +21 -0
  1101. package/extensions/nostr/openclaw.plugin.json +9 -0
  1102. package/extensions/nostr/package.json +34 -0
  1103. package/extensions/nostr/src/channel.test.ts +151 -0
  1104. package/extensions/nostr/src/channel.ts +353 -0
  1105. package/extensions/nostr/src/config-schema.ts +90 -0
  1106. package/extensions/nostr/src/metrics.ts +478 -0
  1107. package/extensions/nostr/src/nostr-bus.fuzz.test.ts +533 -0
  1108. package/extensions/nostr/src/nostr-bus.integration.test.ts +448 -0
  1109. package/extensions/nostr/src/nostr-bus.test.ts +199 -0
  1110. package/extensions/nostr/src/nostr-bus.ts +715 -0
  1111. package/extensions/nostr/src/nostr-profile-http.test.ts +378 -0
  1112. package/extensions/nostr/src/nostr-profile-http.ts +519 -0
  1113. package/extensions/nostr/src/nostr-profile-import.test.ts +119 -0
  1114. package/extensions/nostr/src/nostr-profile-import.ts +262 -0
  1115. package/extensions/nostr/src/nostr-profile.fuzz.test.ts +477 -0
  1116. package/extensions/nostr/src/nostr-profile.test.ts +410 -0
  1117. package/extensions/nostr/src/nostr-profile.ts +277 -0
  1118. package/extensions/nostr/src/nostr-state-store.test.ts +131 -0
  1119. package/extensions/nostr/src/nostr-state-store.ts +226 -0
  1120. package/extensions/nostr/src/runtime.ts +14 -0
  1121. package/extensions/nostr/src/seen-tracker.ts +303 -0
  1122. package/extensions/nostr/src/types.test.ts +157 -0
  1123. package/extensions/nostr/src/types.ts +101 -0
  1124. package/extensions/nostr/test/setup.ts +5 -0
  1125. package/extensions/signal/index.ts +17 -0
  1126. package/extensions/signal/node_modules/.bin/cryptoclaw +21 -0
  1127. package/extensions/signal/openclaw.plugin.json +9 -0
  1128. package/extensions/signal/package.json +14 -0
  1129. package/extensions/signal/src/channel.ts +315 -0
  1130. package/extensions/signal/src/runtime.ts +14 -0
  1131. package/extensions/slack/index.ts +17 -0
  1132. package/extensions/slack/node_modules/.bin/cryptoclaw +21 -0
  1133. package/extensions/slack/openclaw.plugin.json +9 -0
  1134. package/extensions/slack/package.json +14 -0
  1135. package/extensions/slack/src/channel.ts +604 -0
  1136. package/extensions/slack/src/runtime.ts +14 -0
  1137. package/extensions/telegram/index.ts +17 -0
  1138. package/extensions/telegram/node_modules/.bin/cryptoclaw +21 -0
  1139. package/extensions/telegram/openclaw.plugin.json +9 -0
  1140. package/extensions/telegram/package.json +14 -0
  1141. package/extensions/telegram/src/channel.ts +482 -0
  1142. package/extensions/telegram/src/runtime.ts +14 -0
  1143. package/extensions/voice-call/CHANGELOG.md +115 -0
  1144. package/extensions/voice-call/README.md +139 -0
  1145. package/extensions/voice-call/index.ts +493 -0
  1146. package/extensions/voice-call/node_modules/.bin/cryptoclaw +21 -0
  1147. package/extensions/voice-call/openclaw.plugin.json +559 -0
  1148. package/extensions/voice-call/package.json +19 -0
  1149. package/extensions/voice-call/src/allowlist.ts +19 -0
  1150. package/extensions/voice-call/src/cli.ts +279 -0
  1151. package/extensions/voice-call/src/config.test.ts +234 -0
  1152. package/extensions/voice-call/src/config.ts +523 -0
  1153. package/extensions/voice-call/src/core-bridge.ts +159 -0
  1154. package/extensions/voice-call/src/manager/context.ts +21 -0
  1155. package/extensions/voice-call/src/manager/events.ts +188 -0
  1156. package/extensions/voice-call/src/manager/lookup.ts +35 -0
  1157. package/extensions/voice-call/src/manager/outbound.ts +275 -0
  1158. package/extensions/voice-call/src/manager/state.ts +48 -0
  1159. package/extensions/voice-call/src/manager/store.ts +91 -0
  1160. package/extensions/voice-call/src/manager/timers.ts +89 -0
  1161. package/extensions/voice-call/src/manager/twiml.ts +9 -0
  1162. package/extensions/voice-call/src/manager.test.ts +224 -0
  1163. package/extensions/voice-call/src/manager.ts +887 -0
  1164. package/extensions/voice-call/src/media-stream.test.ts +96 -0
  1165. package/extensions/voice-call/src/media-stream.ts +411 -0
  1166. package/extensions/voice-call/src/providers/base.ts +67 -0
  1167. package/extensions/voice-call/src/providers/index.ts +10 -0
  1168. package/extensions/voice-call/src/providers/mock.ts +165 -0
  1169. package/extensions/voice-call/src/providers/plivo.test.ts +27 -0
  1170. package/extensions/voice-call/src/providers/plivo.ts +515 -0
  1171. package/extensions/voice-call/src/providers/stt-openai-realtime.ts +311 -0
  1172. package/extensions/voice-call/src/providers/telnyx.ts +371 -0
  1173. package/extensions/voice-call/src/providers/tts-openai.ts +259 -0
  1174. package/extensions/voice-call/src/providers/twilio/api.ts +42 -0
  1175. package/extensions/voice-call/src/providers/twilio/webhook.ts +32 -0
  1176. package/extensions/voice-call/src/providers/twilio.test.ts +60 -0
  1177. package/extensions/voice-call/src/providers/twilio.ts +626 -0
  1178. package/extensions/voice-call/src/response-generator.ts +158 -0
  1179. package/extensions/voice-call/src/runtime.ts +212 -0
  1180. package/extensions/voice-call/src/telephony-audio.ts +90 -0
  1181. package/extensions/voice-call/src/telephony-tts.ts +104 -0
  1182. package/extensions/voice-call/src/tunnel.ts +314 -0
  1183. package/extensions/voice-call/src/types.ts +272 -0
  1184. package/extensions/voice-call/src/utils.ts +14 -0
  1185. package/extensions/voice-call/src/voice-mapping.ts +67 -0
  1186. package/extensions/voice-call/src/webhook-security.test.ts +377 -0
  1187. package/extensions/voice-call/src/webhook-security.ts +689 -0
  1188. package/extensions/voice-call/src/webhook.ts +491 -0
  1189. package/extensions/whatsapp/index.ts +17 -0
  1190. package/extensions/whatsapp/node_modules/.bin/cryptoclaw +21 -0
  1191. package/extensions/whatsapp/openclaw.plugin.json +9 -0
  1192. package/extensions/whatsapp/package.json +14 -0
  1193. package/extensions/whatsapp/src/channel.ts +508 -0
  1194. package/extensions/whatsapp/src/runtime.ts +14 -0
  1195. package/package.json +242 -0
  1196. package/skills/aave-bsc/SKILL.md +55 -0
  1197. package/skills/agent-identity/SKILL.md +48 -0
  1198. package/skills/bird/SKILL.md +224 -0
  1199. package/skills/canvas/SKILL.md +204 -0
  1200. package/skills/coding-agent/SKILL.md +285 -0
  1201. package/skills/coingecko/SKILL.md +114 -0
  1202. package/skills/contract-deployer/SKILL.md +42 -0
  1203. package/skills/debank/SKILL.md +143 -0
  1204. package/skills/defi-dashboard/SKILL.md +49 -0
  1205. package/skills/defillama/SKILL.md +117 -0
  1206. package/skills/discord/SKILL.md +578 -0
  1207. package/skills/dune/SKILL.md +178 -0
  1208. package/skills/etherscan/SKILL.md +117 -0
  1209. package/skills/four-meme/SKILL.md +80 -0
  1210. package/skills/gas-tracker/SKILL.md +43 -0
  1211. package/skills/github/SKILL.md +77 -0
  1212. package/skills/macro-calendar/SKILL.md +132 -0
  1213. package/skills/market-data/SKILL.md +44 -0
  1214. package/skills/nft-manager/SKILL.md +46 -0
  1215. package/skills/portfolio-tracker/SKILL.md +55 -0
  1216. package/skills/security-check/SKILL.md +153 -0
  1217. package/skills/tmux/SKILL.md +135 -0
  1218. package/skills/tmux/scripts/find-sessions.sh +112 -0
  1219. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  1220. package/skills/token-swap/SKILL.md +71 -0
  1221. package/skills/wallet-manager/SKILL.md +65 -0
  1222. package/skills/whale-watcher/SKILL.md +43 -0
@@ -0,0 +1,1617 @@
1
+ import { _ as resolveStateDir } from "./paths-D2ytuv-2.js";
2
+ import { a as logDebug, o as logError } from "./exec-CLQSz0CI.js";
3
+ import { t as rawDataToString } from "./ws-D64QKPe6.js";
4
+ import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES, p as GATEWAY_CLIENT_IDS } from "./message-channel-CfYBy4y3.js";
5
+ import path from "node:path";
6
+ import os from "node:os";
7
+ import fs from "node:fs";
8
+ import crypto, { randomUUID } from "node:crypto";
9
+ import AjvPkg from "ajv";
10
+ import { WebSocket as WebSocket$1 } from "ws";
11
+ import { Type } from "@sinclair/typebox";
12
+
13
+ //#region src/infra/device-identity.ts
14
+ const DEFAULT_DIR = path.join(os.homedir(), ".cryptoclaw", "identity");
15
+ const DEFAULT_FILE = path.join(DEFAULT_DIR, "device.json");
16
+ function ensureDir(filePath) {
17
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
18
+ }
19
+ const ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
20
+ function base64UrlEncode(buf) {
21
+ return buf.toString("base64").replaceAll("+", "-").replaceAll("/", "_").replace(/=+$/g, "");
22
+ }
23
+ function base64UrlDecode(input) {
24
+ const normalized = input.replaceAll("-", "+").replaceAll("_", "/");
25
+ const padded = normalized + "=".repeat((4 - normalized.length % 4) % 4);
26
+ return Buffer.from(padded, "base64");
27
+ }
28
+ function derivePublicKeyRaw(publicKeyPem) {
29
+ const spki = crypto.createPublicKey(publicKeyPem).export({
30
+ type: "spki",
31
+ format: "der"
32
+ });
33
+ if (spki.length === ED25519_SPKI_PREFIX.length + 32 && spki.subarray(0, ED25519_SPKI_PREFIX.length).equals(ED25519_SPKI_PREFIX)) return spki.subarray(ED25519_SPKI_PREFIX.length);
34
+ return spki;
35
+ }
36
+ function fingerprintPublicKey(publicKeyPem) {
37
+ const raw = derivePublicKeyRaw(publicKeyPem);
38
+ return crypto.createHash("sha256").update(raw).digest("hex");
39
+ }
40
+ function generateIdentity() {
41
+ const { publicKey, privateKey } = crypto.generateKeyPairSync("ed25519");
42
+ const publicKeyPem = publicKey.export({
43
+ type: "spki",
44
+ format: "pem"
45
+ }).toString();
46
+ const privateKeyPem = privateKey.export({
47
+ type: "pkcs8",
48
+ format: "pem"
49
+ }).toString();
50
+ return {
51
+ deviceId: fingerprintPublicKey(publicKeyPem),
52
+ publicKeyPem,
53
+ privateKeyPem
54
+ };
55
+ }
56
+ function loadOrCreateDeviceIdentity(filePath = DEFAULT_FILE) {
57
+ try {
58
+ if (fs.existsSync(filePath)) {
59
+ const raw = fs.readFileSync(filePath, "utf8");
60
+ const parsed = JSON.parse(raw);
61
+ if (parsed?.version === 1 && typeof parsed.deviceId === "string" && typeof parsed.publicKeyPem === "string" && typeof parsed.privateKeyPem === "string") {
62
+ const derivedId = fingerprintPublicKey(parsed.publicKeyPem);
63
+ if (derivedId && derivedId !== parsed.deviceId) {
64
+ const updated = {
65
+ ...parsed,
66
+ deviceId: derivedId
67
+ };
68
+ fs.writeFileSync(filePath, `${JSON.stringify(updated, null, 2)}\n`, { mode: 384 });
69
+ try {
70
+ fs.chmodSync(filePath, 384);
71
+ } catch {}
72
+ return {
73
+ deviceId: derivedId,
74
+ publicKeyPem: parsed.publicKeyPem,
75
+ privateKeyPem: parsed.privateKeyPem
76
+ };
77
+ }
78
+ return {
79
+ deviceId: parsed.deviceId,
80
+ publicKeyPem: parsed.publicKeyPem,
81
+ privateKeyPem: parsed.privateKeyPem
82
+ };
83
+ }
84
+ }
85
+ } catch {}
86
+ const identity = generateIdentity();
87
+ ensureDir(filePath);
88
+ const stored = {
89
+ version: 1,
90
+ deviceId: identity.deviceId,
91
+ publicKeyPem: identity.publicKeyPem,
92
+ privateKeyPem: identity.privateKeyPem,
93
+ createdAtMs: Date.now()
94
+ };
95
+ fs.writeFileSync(filePath, `${JSON.stringify(stored, null, 2)}\n`, { mode: 384 });
96
+ try {
97
+ fs.chmodSync(filePath, 384);
98
+ } catch {}
99
+ return identity;
100
+ }
101
+ function signDevicePayload(privateKeyPem, payload) {
102
+ const key = crypto.createPrivateKey(privateKeyPem);
103
+ return base64UrlEncode(crypto.sign(null, Buffer.from(payload, "utf8"), key));
104
+ }
105
+ function normalizeDevicePublicKeyBase64Url(publicKey) {
106
+ try {
107
+ if (publicKey.includes("BEGIN")) return base64UrlEncode(derivePublicKeyRaw(publicKey));
108
+ return base64UrlEncode(base64UrlDecode(publicKey));
109
+ } catch {
110
+ return null;
111
+ }
112
+ }
113
+ function deriveDeviceIdFromPublicKey(publicKey) {
114
+ try {
115
+ const raw = publicKey.includes("BEGIN") ? derivePublicKeyRaw(publicKey) : base64UrlDecode(publicKey);
116
+ return crypto.createHash("sha256").update(raw).digest("hex");
117
+ } catch {
118
+ return null;
119
+ }
120
+ }
121
+ function publicKeyRawBase64UrlFromPem(publicKeyPem) {
122
+ return base64UrlEncode(derivePublicKeyRaw(publicKeyPem));
123
+ }
124
+ function verifyDeviceSignature(publicKey, payload, signatureBase64Url) {
125
+ try {
126
+ const key = publicKey.includes("BEGIN") ? crypto.createPublicKey(publicKey) : crypto.createPublicKey({
127
+ key: Buffer.concat([ED25519_SPKI_PREFIX, base64UrlDecode(publicKey)]),
128
+ type: "spki",
129
+ format: "der"
130
+ });
131
+ const sig = (() => {
132
+ try {
133
+ return base64UrlDecode(signatureBase64Url);
134
+ } catch {
135
+ return Buffer.from(signatureBase64Url, "base64");
136
+ }
137
+ })();
138
+ return crypto.verify(null, Buffer.from(payload, "utf8"), key, sig);
139
+ } catch {
140
+ return false;
141
+ }
142
+ }
143
+
144
+ //#endregion
145
+ //#region src/infra/tls/fingerprint.ts
146
+ function normalizeFingerprint(input) {
147
+ return input.trim().replace(/^sha-?256\s*:?\s*/i, "").replace(/[^a-fA-F0-9]/g, "").toLowerCase();
148
+ }
149
+
150
+ //#endregion
151
+ //#region src/infra/device-auth-store.ts
152
+ const DEVICE_AUTH_FILE = "device-auth.json";
153
+ function resolveDeviceAuthPath(env = process.env) {
154
+ return path.join(resolveStateDir(env), "identity", DEVICE_AUTH_FILE);
155
+ }
156
+ function normalizeRole(role) {
157
+ return role.trim();
158
+ }
159
+ function normalizeScopes(scopes) {
160
+ if (!Array.isArray(scopes)) return [];
161
+ const out = /* @__PURE__ */ new Set();
162
+ for (const scope of scopes) {
163
+ const trimmed = scope.trim();
164
+ if (trimmed) out.add(trimmed);
165
+ }
166
+ return [...out].toSorted();
167
+ }
168
+ function readStore(filePath) {
169
+ try {
170
+ if (!fs.existsSync(filePath)) return null;
171
+ const raw = fs.readFileSync(filePath, "utf8");
172
+ const parsed = JSON.parse(raw);
173
+ if (parsed?.version !== 1 || typeof parsed.deviceId !== "string") return null;
174
+ if (!parsed.tokens || typeof parsed.tokens !== "object") return null;
175
+ return parsed;
176
+ } catch {
177
+ return null;
178
+ }
179
+ }
180
+ function writeStore(filePath, store) {
181
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
182
+ fs.writeFileSync(filePath, `${JSON.stringify(store, null, 2)}\n`, { mode: 384 });
183
+ try {
184
+ fs.chmodSync(filePath, 384);
185
+ } catch {}
186
+ }
187
+ function loadDeviceAuthToken(params) {
188
+ const store = readStore(resolveDeviceAuthPath(params.env));
189
+ if (!store) return null;
190
+ if (store.deviceId !== params.deviceId) return null;
191
+ const role = normalizeRole(params.role);
192
+ const entry = store.tokens[role];
193
+ if (!entry || typeof entry.token !== "string") return null;
194
+ return entry;
195
+ }
196
+ function storeDeviceAuthToken(params) {
197
+ const filePath = resolveDeviceAuthPath(params.env);
198
+ const existing = readStore(filePath);
199
+ const role = normalizeRole(params.role);
200
+ const next = {
201
+ version: 1,
202
+ deviceId: params.deviceId,
203
+ tokens: existing && existing.deviceId === params.deviceId && existing.tokens ? { ...existing.tokens } : {}
204
+ };
205
+ const entry = {
206
+ token: params.token,
207
+ role,
208
+ scopes: normalizeScopes(params.scopes),
209
+ updatedAtMs: Date.now()
210
+ };
211
+ next.tokens[role] = entry;
212
+ writeStore(filePath, next);
213
+ return entry;
214
+ }
215
+ function clearDeviceAuthToken(params) {
216
+ const filePath = resolveDeviceAuthPath(params.env);
217
+ const store = readStore(filePath);
218
+ if (!store || store.deviceId !== params.deviceId) return;
219
+ const role = normalizeRole(params.role);
220
+ if (!store.tokens[role]) return;
221
+ const next = {
222
+ version: 1,
223
+ deviceId: store.deviceId,
224
+ tokens: { ...store.tokens }
225
+ };
226
+ delete next.tokens[role];
227
+ writeStore(filePath, next);
228
+ }
229
+
230
+ //#endregion
231
+ //#region src/gateway/device-auth.ts
232
+ function buildDeviceAuthPayload(params) {
233
+ const version = params.version ?? (params.nonce ? "v2" : "v1");
234
+ const scopes = params.scopes.join(",");
235
+ const token = params.token ?? "";
236
+ const base = [
237
+ version,
238
+ params.deviceId,
239
+ params.clientId,
240
+ params.clientMode,
241
+ params.role,
242
+ scopes,
243
+ String(params.signedAtMs),
244
+ token
245
+ ];
246
+ if (version === "v2") base.push(params.nonce ?? "");
247
+ return base.join("|");
248
+ }
249
+
250
+ //#endregion
251
+ //#region src/sessions/session-label.ts
252
+ const SESSION_LABEL_MAX_LENGTH = 64;
253
+ function parseSessionLabel(raw) {
254
+ if (typeof raw !== "string") return {
255
+ ok: false,
256
+ error: "invalid label: must be a string"
257
+ };
258
+ const trimmed = raw.trim();
259
+ if (!trimmed) return {
260
+ ok: false,
261
+ error: "invalid label: empty"
262
+ };
263
+ if (trimmed.length > SESSION_LABEL_MAX_LENGTH) return {
264
+ ok: false,
265
+ error: `invalid label: too long (max ${SESSION_LABEL_MAX_LENGTH})`
266
+ };
267
+ return {
268
+ ok: true,
269
+ label: trimmed
270
+ };
271
+ }
272
+
273
+ //#endregion
274
+ //#region src/gateway/protocol/schema/primitives.ts
275
+ const NonEmptyString = Type.String({ minLength: 1 });
276
+ const SessionLabelString = Type.String({
277
+ minLength: 1,
278
+ maxLength: SESSION_LABEL_MAX_LENGTH
279
+ });
280
+ const GatewayClientIdSchema = Type.Union(Object.values(GATEWAY_CLIENT_IDS).map((value) => Type.Literal(value)));
281
+ const GatewayClientModeSchema = Type.Union(Object.values(GATEWAY_CLIENT_MODES).map((value) => Type.Literal(value)));
282
+
283
+ //#endregion
284
+ //#region src/gateway/protocol/schema/agent.ts
285
+ const AgentEventSchema = Type.Object({
286
+ runId: NonEmptyString,
287
+ seq: Type.Integer({ minimum: 0 }),
288
+ stream: NonEmptyString,
289
+ ts: Type.Integer({ minimum: 0 }),
290
+ data: Type.Record(Type.String(), Type.Unknown())
291
+ }, { additionalProperties: false });
292
+ const SendParamsSchema = Type.Object({
293
+ to: NonEmptyString,
294
+ message: NonEmptyString,
295
+ mediaUrl: Type.Optional(Type.String()),
296
+ mediaUrls: Type.Optional(Type.Array(Type.String())),
297
+ gifPlayback: Type.Optional(Type.Boolean()),
298
+ channel: Type.Optional(Type.String()),
299
+ accountId: Type.Optional(Type.String()),
300
+ sessionKey: Type.Optional(Type.String()),
301
+ idempotencyKey: NonEmptyString
302
+ }, { additionalProperties: false });
303
+ const PollParamsSchema = Type.Object({
304
+ to: NonEmptyString,
305
+ question: NonEmptyString,
306
+ options: Type.Array(NonEmptyString, {
307
+ minItems: 2,
308
+ maxItems: 12
309
+ }),
310
+ maxSelections: Type.Optional(Type.Integer({
311
+ minimum: 1,
312
+ maximum: 12
313
+ })),
314
+ durationHours: Type.Optional(Type.Integer({ minimum: 1 })),
315
+ channel: Type.Optional(Type.String()),
316
+ accountId: Type.Optional(Type.String()),
317
+ idempotencyKey: NonEmptyString
318
+ }, { additionalProperties: false });
319
+ const AgentParamsSchema = Type.Object({
320
+ message: NonEmptyString,
321
+ agentId: Type.Optional(NonEmptyString),
322
+ to: Type.Optional(Type.String()),
323
+ replyTo: Type.Optional(Type.String()),
324
+ sessionId: Type.Optional(Type.String()),
325
+ sessionKey: Type.Optional(Type.String()),
326
+ thinking: Type.Optional(Type.String()),
327
+ deliver: Type.Optional(Type.Boolean()),
328
+ attachments: Type.Optional(Type.Array(Type.Unknown())),
329
+ channel: Type.Optional(Type.String()),
330
+ replyChannel: Type.Optional(Type.String()),
331
+ accountId: Type.Optional(Type.String()),
332
+ replyAccountId: Type.Optional(Type.String()),
333
+ threadId: Type.Optional(Type.String()),
334
+ groupId: Type.Optional(Type.String()),
335
+ groupChannel: Type.Optional(Type.String()),
336
+ groupSpace: Type.Optional(Type.String()),
337
+ timeout: Type.Optional(Type.Integer({ minimum: 0 })),
338
+ lane: Type.Optional(Type.String()),
339
+ extraSystemPrompt: Type.Optional(Type.String()),
340
+ idempotencyKey: NonEmptyString,
341
+ label: Type.Optional(SessionLabelString),
342
+ spawnedBy: Type.Optional(Type.String())
343
+ }, { additionalProperties: false });
344
+ const AgentIdentityParamsSchema = Type.Object({
345
+ agentId: Type.Optional(NonEmptyString),
346
+ sessionKey: Type.Optional(Type.String())
347
+ }, { additionalProperties: false });
348
+ const AgentIdentityResultSchema = Type.Object({
349
+ agentId: NonEmptyString,
350
+ name: Type.Optional(NonEmptyString),
351
+ avatar: Type.Optional(NonEmptyString),
352
+ emoji: Type.Optional(NonEmptyString)
353
+ }, { additionalProperties: false });
354
+ const AgentWaitParamsSchema = Type.Object({
355
+ runId: NonEmptyString,
356
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 }))
357
+ }, { additionalProperties: false });
358
+ const WakeParamsSchema = Type.Object({
359
+ mode: Type.Union([Type.Literal("now"), Type.Literal("next-heartbeat")]),
360
+ text: NonEmptyString
361
+ }, { additionalProperties: false });
362
+
363
+ //#endregion
364
+ //#region src/gateway/protocol/schema/agents-models-skills.ts
365
+ const ModelChoiceSchema = Type.Object({
366
+ id: NonEmptyString,
367
+ name: NonEmptyString,
368
+ provider: NonEmptyString,
369
+ contextWindow: Type.Optional(Type.Integer({ minimum: 1 })),
370
+ reasoning: Type.Optional(Type.Boolean())
371
+ }, { additionalProperties: false });
372
+ const AgentSummarySchema = Type.Object({
373
+ id: NonEmptyString,
374
+ name: Type.Optional(NonEmptyString),
375
+ identity: Type.Optional(Type.Object({
376
+ name: Type.Optional(NonEmptyString),
377
+ theme: Type.Optional(NonEmptyString),
378
+ emoji: Type.Optional(NonEmptyString),
379
+ avatar: Type.Optional(NonEmptyString),
380
+ avatarUrl: Type.Optional(NonEmptyString)
381
+ }, { additionalProperties: false }))
382
+ }, { additionalProperties: false });
383
+ const AgentsListParamsSchema = Type.Object({}, { additionalProperties: false });
384
+ const AgentsListResultSchema = Type.Object({
385
+ defaultId: NonEmptyString,
386
+ mainKey: NonEmptyString,
387
+ scope: Type.Union([Type.Literal("per-sender"), Type.Literal("global")]),
388
+ agents: Type.Array(AgentSummarySchema)
389
+ }, { additionalProperties: false });
390
+ const AgentsFileEntrySchema = Type.Object({
391
+ name: NonEmptyString,
392
+ path: NonEmptyString,
393
+ missing: Type.Boolean(),
394
+ size: Type.Optional(Type.Integer({ minimum: 0 })),
395
+ updatedAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
396
+ content: Type.Optional(Type.String())
397
+ }, { additionalProperties: false });
398
+ const AgentsFilesListParamsSchema = Type.Object({ agentId: NonEmptyString }, { additionalProperties: false });
399
+ const AgentsFilesListResultSchema = Type.Object({
400
+ agentId: NonEmptyString,
401
+ workspace: NonEmptyString,
402
+ files: Type.Array(AgentsFileEntrySchema)
403
+ }, { additionalProperties: false });
404
+ const AgentsFilesGetParamsSchema = Type.Object({
405
+ agentId: NonEmptyString,
406
+ name: NonEmptyString
407
+ }, { additionalProperties: false });
408
+ const AgentsFilesGetResultSchema = Type.Object({
409
+ agentId: NonEmptyString,
410
+ workspace: NonEmptyString,
411
+ file: AgentsFileEntrySchema
412
+ }, { additionalProperties: false });
413
+ const AgentsFilesSetParamsSchema = Type.Object({
414
+ agentId: NonEmptyString,
415
+ name: NonEmptyString,
416
+ content: Type.String()
417
+ }, { additionalProperties: false });
418
+ const AgentsFilesSetResultSchema = Type.Object({
419
+ ok: Type.Literal(true),
420
+ agentId: NonEmptyString,
421
+ workspace: NonEmptyString,
422
+ file: AgentsFileEntrySchema
423
+ }, { additionalProperties: false });
424
+ const ModelsListParamsSchema = Type.Object({}, { additionalProperties: false });
425
+ const ModelsListResultSchema = Type.Object({ models: Type.Array(ModelChoiceSchema) }, { additionalProperties: false });
426
+ const SkillsStatusParamsSchema = Type.Object({ agentId: Type.Optional(NonEmptyString) }, { additionalProperties: false });
427
+ const SkillsBinsParamsSchema = Type.Object({}, { additionalProperties: false });
428
+ const SkillsBinsResultSchema = Type.Object({ bins: Type.Array(NonEmptyString) }, { additionalProperties: false });
429
+ const SkillsInstallParamsSchema = Type.Object({
430
+ name: NonEmptyString,
431
+ installId: NonEmptyString,
432
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 1e3 }))
433
+ }, { additionalProperties: false });
434
+ const SkillsUpdateParamsSchema = Type.Object({
435
+ skillKey: NonEmptyString,
436
+ enabled: Type.Optional(Type.Boolean()),
437
+ apiKey: Type.Optional(Type.String()),
438
+ env: Type.Optional(Type.Record(NonEmptyString, Type.String()))
439
+ }, { additionalProperties: false });
440
+
441
+ //#endregion
442
+ //#region src/gateway/protocol/schema/channels.ts
443
+ const TalkModeParamsSchema = Type.Object({
444
+ enabled: Type.Boolean(),
445
+ phase: Type.Optional(Type.String())
446
+ }, { additionalProperties: false });
447
+ const ChannelsStatusParamsSchema = Type.Object({
448
+ probe: Type.Optional(Type.Boolean()),
449
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 }))
450
+ }, { additionalProperties: false });
451
+ const ChannelAccountSnapshotSchema = Type.Object({
452
+ accountId: NonEmptyString,
453
+ name: Type.Optional(Type.String()),
454
+ enabled: Type.Optional(Type.Boolean()),
455
+ configured: Type.Optional(Type.Boolean()),
456
+ linked: Type.Optional(Type.Boolean()),
457
+ running: Type.Optional(Type.Boolean()),
458
+ connected: Type.Optional(Type.Boolean()),
459
+ reconnectAttempts: Type.Optional(Type.Integer({ minimum: 0 })),
460
+ lastConnectedAt: Type.Optional(Type.Integer({ minimum: 0 })),
461
+ lastError: Type.Optional(Type.String()),
462
+ lastStartAt: Type.Optional(Type.Integer({ minimum: 0 })),
463
+ lastStopAt: Type.Optional(Type.Integer({ minimum: 0 })),
464
+ lastInboundAt: Type.Optional(Type.Integer({ minimum: 0 })),
465
+ lastOutboundAt: Type.Optional(Type.Integer({ minimum: 0 })),
466
+ lastProbeAt: Type.Optional(Type.Integer({ minimum: 0 })),
467
+ mode: Type.Optional(Type.String()),
468
+ dmPolicy: Type.Optional(Type.String()),
469
+ allowFrom: Type.Optional(Type.Array(Type.String())),
470
+ tokenSource: Type.Optional(Type.String()),
471
+ botTokenSource: Type.Optional(Type.String()),
472
+ appTokenSource: Type.Optional(Type.String()),
473
+ baseUrl: Type.Optional(Type.String()),
474
+ allowUnmentionedGroups: Type.Optional(Type.Boolean()),
475
+ cliPath: Type.Optional(Type.Union([Type.String(), Type.Null()])),
476
+ dbPath: Type.Optional(Type.Union([Type.String(), Type.Null()])),
477
+ port: Type.Optional(Type.Union([Type.Integer({ minimum: 0 }), Type.Null()])),
478
+ probe: Type.Optional(Type.Unknown()),
479
+ audit: Type.Optional(Type.Unknown()),
480
+ application: Type.Optional(Type.Unknown())
481
+ }, { additionalProperties: true });
482
+ const ChannelUiMetaSchema = Type.Object({
483
+ id: NonEmptyString,
484
+ label: NonEmptyString,
485
+ detailLabel: NonEmptyString,
486
+ systemImage: Type.Optional(Type.String())
487
+ }, { additionalProperties: false });
488
+ const ChannelsStatusResultSchema = Type.Object({
489
+ ts: Type.Integer({ minimum: 0 }),
490
+ channelOrder: Type.Array(NonEmptyString),
491
+ channelLabels: Type.Record(NonEmptyString, NonEmptyString),
492
+ channelDetailLabels: Type.Optional(Type.Record(NonEmptyString, NonEmptyString)),
493
+ channelSystemImages: Type.Optional(Type.Record(NonEmptyString, NonEmptyString)),
494
+ channelMeta: Type.Optional(Type.Array(ChannelUiMetaSchema)),
495
+ channels: Type.Record(NonEmptyString, Type.Unknown()),
496
+ channelAccounts: Type.Record(NonEmptyString, Type.Array(ChannelAccountSnapshotSchema)),
497
+ channelDefaultAccountId: Type.Record(NonEmptyString, NonEmptyString)
498
+ }, { additionalProperties: false });
499
+ const ChannelsLogoutParamsSchema = Type.Object({
500
+ channel: NonEmptyString,
501
+ accountId: Type.Optional(Type.String())
502
+ }, { additionalProperties: false });
503
+ const WebLoginStartParamsSchema = Type.Object({
504
+ force: Type.Optional(Type.Boolean()),
505
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
506
+ verbose: Type.Optional(Type.Boolean()),
507
+ accountId: Type.Optional(Type.String())
508
+ }, { additionalProperties: false });
509
+ const WebLoginWaitParamsSchema = Type.Object({
510
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
511
+ accountId: Type.Optional(Type.String())
512
+ }, { additionalProperties: false });
513
+
514
+ //#endregion
515
+ //#region src/gateway/protocol/schema/config.ts
516
+ const ConfigGetParamsSchema = Type.Object({}, { additionalProperties: false });
517
+ const ConfigSetParamsSchema = Type.Object({
518
+ raw: NonEmptyString,
519
+ baseHash: Type.Optional(NonEmptyString)
520
+ }, { additionalProperties: false });
521
+ const ConfigApplyParamsSchema = Type.Object({
522
+ raw: NonEmptyString,
523
+ baseHash: Type.Optional(NonEmptyString),
524
+ sessionKey: Type.Optional(Type.String()),
525
+ note: Type.Optional(Type.String()),
526
+ restartDelayMs: Type.Optional(Type.Integer({ minimum: 0 }))
527
+ }, { additionalProperties: false });
528
+ const ConfigPatchParamsSchema = Type.Object({
529
+ raw: NonEmptyString,
530
+ baseHash: Type.Optional(NonEmptyString),
531
+ sessionKey: Type.Optional(Type.String()),
532
+ note: Type.Optional(Type.String()),
533
+ restartDelayMs: Type.Optional(Type.Integer({ minimum: 0 }))
534
+ }, { additionalProperties: false });
535
+ const ConfigSchemaParamsSchema = Type.Object({}, { additionalProperties: false });
536
+ const UpdateRunParamsSchema = Type.Object({
537
+ sessionKey: Type.Optional(Type.String()),
538
+ note: Type.Optional(Type.String()),
539
+ restartDelayMs: Type.Optional(Type.Integer({ minimum: 0 })),
540
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 1 }))
541
+ }, { additionalProperties: false });
542
+ const ConfigUiHintSchema = Type.Object({
543
+ label: Type.Optional(Type.String()),
544
+ help: Type.Optional(Type.String()),
545
+ group: Type.Optional(Type.String()),
546
+ order: Type.Optional(Type.Integer()),
547
+ advanced: Type.Optional(Type.Boolean()),
548
+ sensitive: Type.Optional(Type.Boolean()),
549
+ placeholder: Type.Optional(Type.String()),
550
+ itemTemplate: Type.Optional(Type.Unknown())
551
+ }, { additionalProperties: false });
552
+ const ConfigSchemaResponseSchema = Type.Object({
553
+ schema: Type.Unknown(),
554
+ uiHints: Type.Record(Type.String(), ConfigUiHintSchema),
555
+ version: NonEmptyString,
556
+ generatedAt: NonEmptyString
557
+ }, { additionalProperties: false });
558
+
559
+ //#endregion
560
+ //#region src/gateway/protocol/schema/cron.ts
561
+ const CronScheduleSchema = Type.Union([
562
+ Type.Object({
563
+ kind: Type.Literal("at"),
564
+ at: NonEmptyString
565
+ }, { additionalProperties: false }),
566
+ Type.Object({
567
+ kind: Type.Literal("every"),
568
+ everyMs: Type.Integer({ minimum: 1 }),
569
+ anchorMs: Type.Optional(Type.Integer({ minimum: 0 }))
570
+ }, { additionalProperties: false }),
571
+ Type.Object({
572
+ kind: Type.Literal("cron"),
573
+ expr: NonEmptyString,
574
+ tz: Type.Optional(Type.String())
575
+ }, { additionalProperties: false })
576
+ ]);
577
+ const CronPayloadSchema = Type.Union([Type.Object({
578
+ kind: Type.Literal("systemEvent"),
579
+ text: NonEmptyString
580
+ }, { additionalProperties: false }), Type.Object({
581
+ kind: Type.Literal("agentTurn"),
582
+ message: NonEmptyString,
583
+ model: Type.Optional(Type.String()),
584
+ thinking: Type.Optional(Type.String()),
585
+ timeoutSeconds: Type.Optional(Type.Integer({ minimum: 1 }))
586
+ }, { additionalProperties: false })]);
587
+ const CronPayloadPatchSchema = Type.Union([Type.Object({
588
+ kind: Type.Literal("systemEvent"),
589
+ text: Type.Optional(NonEmptyString)
590
+ }, { additionalProperties: false }), Type.Object({
591
+ kind: Type.Literal("agentTurn"),
592
+ message: Type.Optional(NonEmptyString),
593
+ model: Type.Optional(Type.String()),
594
+ thinking: Type.Optional(Type.String()),
595
+ timeoutSeconds: Type.Optional(Type.Integer({ minimum: 1 }))
596
+ }, { additionalProperties: false })]);
597
+ const CronDeliverySchema = Type.Object({
598
+ mode: Type.Union([Type.Literal("none"), Type.Literal("announce")]),
599
+ channel: Type.Optional(Type.Union([Type.Literal("last"), NonEmptyString])),
600
+ to: Type.Optional(Type.String()),
601
+ bestEffort: Type.Optional(Type.Boolean())
602
+ }, { additionalProperties: false });
603
+ const CronDeliveryPatchSchema = Type.Object({
604
+ mode: Type.Optional(Type.Union([Type.Literal("none"), Type.Literal("announce")])),
605
+ channel: Type.Optional(Type.Union([Type.Literal("last"), NonEmptyString])),
606
+ to: Type.Optional(Type.String()),
607
+ bestEffort: Type.Optional(Type.Boolean())
608
+ }, { additionalProperties: false });
609
+ const CronJobStateSchema = Type.Object({
610
+ nextRunAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
611
+ runningAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
612
+ lastRunAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
613
+ lastStatus: Type.Optional(Type.Union([
614
+ Type.Literal("ok"),
615
+ Type.Literal("error"),
616
+ Type.Literal("skipped")
617
+ ])),
618
+ lastError: Type.Optional(Type.String()),
619
+ lastDurationMs: Type.Optional(Type.Integer({ minimum: 0 }))
620
+ }, { additionalProperties: false });
621
+ const CronJobSchema = Type.Object({
622
+ id: NonEmptyString,
623
+ agentId: Type.Optional(NonEmptyString),
624
+ name: NonEmptyString,
625
+ description: Type.Optional(Type.String()),
626
+ enabled: Type.Boolean(),
627
+ deleteAfterRun: Type.Optional(Type.Boolean()),
628
+ createdAtMs: Type.Integer({ minimum: 0 }),
629
+ updatedAtMs: Type.Integer({ minimum: 0 }),
630
+ schedule: CronScheduleSchema,
631
+ sessionTarget: Type.Union([Type.Literal("main"), Type.Literal("isolated")]),
632
+ wakeMode: Type.Union([Type.Literal("next-heartbeat"), Type.Literal("now")]),
633
+ payload: CronPayloadSchema,
634
+ delivery: Type.Optional(CronDeliverySchema),
635
+ state: CronJobStateSchema
636
+ }, { additionalProperties: false });
637
+ const CronListParamsSchema = Type.Object({ includeDisabled: Type.Optional(Type.Boolean()) }, { additionalProperties: false });
638
+ const CronStatusParamsSchema = Type.Object({}, { additionalProperties: false });
639
+ const CronAddParamsSchema = Type.Object({
640
+ name: NonEmptyString,
641
+ agentId: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
642
+ description: Type.Optional(Type.String()),
643
+ enabled: Type.Optional(Type.Boolean()),
644
+ deleteAfterRun: Type.Optional(Type.Boolean()),
645
+ schedule: CronScheduleSchema,
646
+ sessionTarget: Type.Union([Type.Literal("main"), Type.Literal("isolated")]),
647
+ wakeMode: Type.Union([Type.Literal("next-heartbeat"), Type.Literal("now")]),
648
+ payload: CronPayloadSchema,
649
+ delivery: Type.Optional(CronDeliverySchema)
650
+ }, { additionalProperties: false });
651
+ const CronJobPatchSchema = Type.Object({
652
+ name: Type.Optional(NonEmptyString),
653
+ agentId: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
654
+ description: Type.Optional(Type.String()),
655
+ enabled: Type.Optional(Type.Boolean()),
656
+ deleteAfterRun: Type.Optional(Type.Boolean()),
657
+ schedule: Type.Optional(CronScheduleSchema),
658
+ sessionTarget: Type.Optional(Type.Union([Type.Literal("main"), Type.Literal("isolated")])),
659
+ wakeMode: Type.Optional(Type.Union([Type.Literal("next-heartbeat"), Type.Literal("now")])),
660
+ payload: Type.Optional(CronPayloadPatchSchema),
661
+ delivery: Type.Optional(CronDeliveryPatchSchema),
662
+ state: Type.Optional(Type.Partial(CronJobStateSchema))
663
+ }, { additionalProperties: false });
664
+ const CronUpdateParamsSchema = Type.Union([Type.Object({
665
+ id: NonEmptyString,
666
+ patch: CronJobPatchSchema
667
+ }, { additionalProperties: false }), Type.Object({
668
+ jobId: NonEmptyString,
669
+ patch: CronJobPatchSchema
670
+ }, { additionalProperties: false })]);
671
+ const CronRemoveParamsSchema = Type.Union([Type.Object({ id: NonEmptyString }, { additionalProperties: false }), Type.Object({ jobId: NonEmptyString }, { additionalProperties: false })]);
672
+ const CronRunParamsSchema = Type.Union([Type.Object({
673
+ id: NonEmptyString,
674
+ mode: Type.Optional(Type.Union([Type.Literal("due"), Type.Literal("force")]))
675
+ }, { additionalProperties: false }), Type.Object({
676
+ jobId: NonEmptyString,
677
+ mode: Type.Optional(Type.Union([Type.Literal("due"), Type.Literal("force")]))
678
+ }, { additionalProperties: false })]);
679
+ const CronRunsParamsSchema = Type.Union([Type.Object({
680
+ id: NonEmptyString,
681
+ limit: Type.Optional(Type.Integer({
682
+ minimum: 1,
683
+ maximum: 5e3
684
+ }))
685
+ }, { additionalProperties: false }), Type.Object({
686
+ jobId: NonEmptyString,
687
+ limit: Type.Optional(Type.Integer({
688
+ minimum: 1,
689
+ maximum: 5e3
690
+ }))
691
+ }, { additionalProperties: false })]);
692
+ const CronRunLogEntrySchema = Type.Object({
693
+ ts: Type.Integer({ minimum: 0 }),
694
+ jobId: NonEmptyString,
695
+ action: Type.Literal("finished"),
696
+ status: Type.Optional(Type.Union([
697
+ Type.Literal("ok"),
698
+ Type.Literal("error"),
699
+ Type.Literal("skipped")
700
+ ])),
701
+ error: Type.Optional(Type.String()),
702
+ summary: Type.Optional(Type.String()),
703
+ runAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
704
+ durationMs: Type.Optional(Type.Integer({ minimum: 0 })),
705
+ nextRunAtMs: Type.Optional(Type.Integer({ minimum: 0 }))
706
+ }, { additionalProperties: false });
707
+
708
+ //#endregion
709
+ //#region src/gateway/protocol/schema/error-codes.ts
710
+ const ErrorCodes = {
711
+ NOT_LINKED: "NOT_LINKED",
712
+ NOT_PAIRED: "NOT_PAIRED",
713
+ AGENT_TIMEOUT: "AGENT_TIMEOUT",
714
+ INVALID_REQUEST: "INVALID_REQUEST",
715
+ UNAVAILABLE: "UNAVAILABLE"
716
+ };
717
+ function errorShape(code, message, opts) {
718
+ return {
719
+ code,
720
+ message,
721
+ ...opts
722
+ };
723
+ }
724
+
725
+ //#endregion
726
+ //#region src/gateway/protocol/schema/exec-approvals.ts
727
+ const ExecApprovalsAllowlistEntrySchema = Type.Object({
728
+ id: Type.Optional(NonEmptyString),
729
+ pattern: Type.String(),
730
+ lastUsedAt: Type.Optional(Type.Integer({ minimum: 0 })),
731
+ lastUsedCommand: Type.Optional(Type.String()),
732
+ lastResolvedPath: Type.Optional(Type.String())
733
+ }, { additionalProperties: false });
734
+ const ExecApprovalsDefaultsSchema = Type.Object({
735
+ security: Type.Optional(Type.String()),
736
+ ask: Type.Optional(Type.String()),
737
+ askFallback: Type.Optional(Type.String()),
738
+ autoAllowSkills: Type.Optional(Type.Boolean())
739
+ }, { additionalProperties: false });
740
+ const ExecApprovalsAgentSchema = Type.Object({
741
+ security: Type.Optional(Type.String()),
742
+ ask: Type.Optional(Type.String()),
743
+ askFallback: Type.Optional(Type.String()),
744
+ autoAllowSkills: Type.Optional(Type.Boolean()),
745
+ allowlist: Type.Optional(Type.Array(ExecApprovalsAllowlistEntrySchema))
746
+ }, { additionalProperties: false });
747
+ const ExecApprovalsFileSchema = Type.Object({
748
+ version: Type.Literal(1),
749
+ socket: Type.Optional(Type.Object({
750
+ path: Type.Optional(Type.String()),
751
+ token: Type.Optional(Type.String())
752
+ }, { additionalProperties: false })),
753
+ defaults: Type.Optional(ExecApprovalsDefaultsSchema),
754
+ agents: Type.Optional(Type.Record(Type.String(), ExecApprovalsAgentSchema))
755
+ }, { additionalProperties: false });
756
+ const ExecApprovalsSnapshotSchema = Type.Object({
757
+ path: NonEmptyString,
758
+ exists: Type.Boolean(),
759
+ hash: NonEmptyString,
760
+ file: ExecApprovalsFileSchema
761
+ }, { additionalProperties: false });
762
+ const ExecApprovalsGetParamsSchema = Type.Object({}, { additionalProperties: false });
763
+ const ExecApprovalsSetParamsSchema = Type.Object({
764
+ file: ExecApprovalsFileSchema,
765
+ baseHash: Type.Optional(NonEmptyString)
766
+ }, { additionalProperties: false });
767
+ const ExecApprovalsNodeGetParamsSchema = Type.Object({ nodeId: NonEmptyString }, { additionalProperties: false });
768
+ const ExecApprovalsNodeSetParamsSchema = Type.Object({
769
+ nodeId: NonEmptyString,
770
+ file: ExecApprovalsFileSchema,
771
+ baseHash: Type.Optional(NonEmptyString)
772
+ }, { additionalProperties: false });
773
+ const ExecApprovalRequestParamsSchema = Type.Object({
774
+ id: Type.Optional(NonEmptyString),
775
+ command: NonEmptyString,
776
+ cwd: Type.Optional(Type.Union([Type.String(), Type.Null()])),
777
+ host: Type.Optional(Type.Union([Type.String(), Type.Null()])),
778
+ security: Type.Optional(Type.Union([Type.String(), Type.Null()])),
779
+ ask: Type.Optional(Type.Union([Type.String(), Type.Null()])),
780
+ agentId: Type.Optional(Type.Union([Type.String(), Type.Null()])),
781
+ resolvedPath: Type.Optional(Type.Union([Type.String(), Type.Null()])),
782
+ sessionKey: Type.Optional(Type.Union([Type.String(), Type.Null()])),
783
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 1 }))
784
+ }, { additionalProperties: false });
785
+ const ExecApprovalResolveParamsSchema = Type.Object({
786
+ id: NonEmptyString,
787
+ decision: NonEmptyString
788
+ }, { additionalProperties: false });
789
+
790
+ //#endregion
791
+ //#region src/gateway/protocol/schema/devices.ts
792
+ const DevicePairListParamsSchema = Type.Object({}, { additionalProperties: false });
793
+ const DevicePairApproveParamsSchema = Type.Object({ requestId: NonEmptyString }, { additionalProperties: false });
794
+ const DevicePairRejectParamsSchema = Type.Object({ requestId: NonEmptyString }, { additionalProperties: false });
795
+ const DeviceTokenRotateParamsSchema = Type.Object({
796
+ deviceId: NonEmptyString,
797
+ role: NonEmptyString,
798
+ scopes: Type.Optional(Type.Array(NonEmptyString))
799
+ }, { additionalProperties: false });
800
+ const DeviceTokenRevokeParamsSchema = Type.Object({
801
+ deviceId: NonEmptyString,
802
+ role: NonEmptyString
803
+ }, { additionalProperties: false });
804
+ const DevicePairRequestedEventSchema = Type.Object({
805
+ requestId: NonEmptyString,
806
+ deviceId: NonEmptyString,
807
+ publicKey: NonEmptyString,
808
+ displayName: Type.Optional(NonEmptyString),
809
+ platform: Type.Optional(NonEmptyString),
810
+ clientId: Type.Optional(NonEmptyString),
811
+ clientMode: Type.Optional(NonEmptyString),
812
+ role: Type.Optional(NonEmptyString),
813
+ roles: Type.Optional(Type.Array(NonEmptyString)),
814
+ scopes: Type.Optional(Type.Array(NonEmptyString)),
815
+ remoteIp: Type.Optional(NonEmptyString),
816
+ silent: Type.Optional(Type.Boolean()),
817
+ isRepair: Type.Optional(Type.Boolean()),
818
+ ts: Type.Integer({ minimum: 0 })
819
+ }, { additionalProperties: false });
820
+ const DevicePairResolvedEventSchema = Type.Object({
821
+ requestId: NonEmptyString,
822
+ deviceId: NonEmptyString,
823
+ decision: NonEmptyString,
824
+ ts: Type.Integer({ minimum: 0 })
825
+ }, { additionalProperties: false });
826
+
827
+ //#endregion
828
+ //#region src/gateway/protocol/schema/snapshot.ts
829
+ const PresenceEntrySchema = Type.Object({
830
+ host: Type.Optional(NonEmptyString),
831
+ ip: Type.Optional(NonEmptyString),
832
+ version: Type.Optional(NonEmptyString),
833
+ platform: Type.Optional(NonEmptyString),
834
+ deviceFamily: Type.Optional(NonEmptyString),
835
+ modelIdentifier: Type.Optional(NonEmptyString),
836
+ mode: Type.Optional(NonEmptyString),
837
+ lastInputSeconds: Type.Optional(Type.Integer({ minimum: 0 })),
838
+ reason: Type.Optional(NonEmptyString),
839
+ tags: Type.Optional(Type.Array(NonEmptyString)),
840
+ text: Type.Optional(Type.String()),
841
+ ts: Type.Integer({ minimum: 0 }),
842
+ deviceId: Type.Optional(NonEmptyString),
843
+ roles: Type.Optional(Type.Array(NonEmptyString)),
844
+ scopes: Type.Optional(Type.Array(NonEmptyString)),
845
+ instanceId: Type.Optional(NonEmptyString)
846
+ }, { additionalProperties: false });
847
+ const HealthSnapshotSchema = Type.Any();
848
+ const SessionDefaultsSchema = Type.Object({
849
+ defaultAgentId: NonEmptyString,
850
+ mainKey: NonEmptyString,
851
+ mainSessionKey: NonEmptyString,
852
+ scope: Type.Optional(NonEmptyString)
853
+ }, { additionalProperties: false });
854
+ const StateVersionSchema = Type.Object({
855
+ presence: Type.Integer({ minimum: 0 }),
856
+ health: Type.Integer({ minimum: 0 })
857
+ }, { additionalProperties: false });
858
+ const SnapshotSchema = Type.Object({
859
+ presence: Type.Array(PresenceEntrySchema),
860
+ health: HealthSnapshotSchema,
861
+ stateVersion: StateVersionSchema,
862
+ uptimeMs: Type.Integer({ minimum: 0 }),
863
+ configPath: Type.Optional(NonEmptyString),
864
+ stateDir: Type.Optional(NonEmptyString),
865
+ sessionDefaults: Type.Optional(SessionDefaultsSchema)
866
+ }, { additionalProperties: false });
867
+
868
+ //#endregion
869
+ //#region src/gateway/protocol/schema/frames.ts
870
+ const TickEventSchema = Type.Object({ ts: Type.Integer({ minimum: 0 }) }, { additionalProperties: false });
871
+ const ShutdownEventSchema = Type.Object({
872
+ reason: NonEmptyString,
873
+ restartExpectedMs: Type.Optional(Type.Integer({ minimum: 0 }))
874
+ }, { additionalProperties: false });
875
+ const ConnectParamsSchema = Type.Object({
876
+ minProtocol: Type.Integer({ minimum: 1 }),
877
+ maxProtocol: Type.Integer({ minimum: 1 }),
878
+ client: Type.Object({
879
+ id: GatewayClientIdSchema,
880
+ displayName: Type.Optional(NonEmptyString),
881
+ version: NonEmptyString,
882
+ platform: NonEmptyString,
883
+ deviceFamily: Type.Optional(NonEmptyString),
884
+ modelIdentifier: Type.Optional(NonEmptyString),
885
+ mode: GatewayClientModeSchema,
886
+ instanceId: Type.Optional(NonEmptyString)
887
+ }, { additionalProperties: false }),
888
+ caps: Type.Optional(Type.Array(NonEmptyString, { default: [] })),
889
+ commands: Type.Optional(Type.Array(NonEmptyString)),
890
+ permissions: Type.Optional(Type.Record(NonEmptyString, Type.Boolean())),
891
+ pathEnv: Type.Optional(Type.String()),
892
+ role: Type.Optional(NonEmptyString),
893
+ scopes: Type.Optional(Type.Array(NonEmptyString)),
894
+ device: Type.Optional(Type.Object({
895
+ id: NonEmptyString,
896
+ publicKey: NonEmptyString,
897
+ signature: NonEmptyString,
898
+ signedAt: Type.Integer({ minimum: 0 }),
899
+ nonce: Type.Optional(NonEmptyString)
900
+ }, { additionalProperties: false })),
901
+ auth: Type.Optional(Type.Object({
902
+ token: Type.Optional(Type.String()),
903
+ password: Type.Optional(Type.String())
904
+ }, { additionalProperties: false })),
905
+ locale: Type.Optional(Type.String()),
906
+ userAgent: Type.Optional(Type.String())
907
+ }, { additionalProperties: false });
908
+ const HelloOkSchema = Type.Object({
909
+ type: Type.Literal("hello-ok"),
910
+ protocol: Type.Integer({ minimum: 1 }),
911
+ server: Type.Object({
912
+ version: NonEmptyString,
913
+ commit: Type.Optional(NonEmptyString),
914
+ host: Type.Optional(NonEmptyString),
915
+ connId: NonEmptyString
916
+ }, { additionalProperties: false }),
917
+ features: Type.Object({
918
+ methods: Type.Array(NonEmptyString),
919
+ events: Type.Array(NonEmptyString)
920
+ }, { additionalProperties: false }),
921
+ snapshot: SnapshotSchema,
922
+ canvasHostUrl: Type.Optional(NonEmptyString),
923
+ auth: Type.Optional(Type.Object({
924
+ deviceToken: NonEmptyString,
925
+ role: NonEmptyString,
926
+ scopes: Type.Array(NonEmptyString),
927
+ issuedAtMs: Type.Optional(Type.Integer({ minimum: 0 }))
928
+ }, { additionalProperties: false })),
929
+ policy: Type.Object({
930
+ maxPayload: Type.Integer({ minimum: 1 }),
931
+ maxBufferedBytes: Type.Integer({ minimum: 1 }),
932
+ tickIntervalMs: Type.Integer({ minimum: 1 })
933
+ }, { additionalProperties: false })
934
+ }, { additionalProperties: false });
935
+ const ErrorShapeSchema = Type.Object({
936
+ code: NonEmptyString,
937
+ message: NonEmptyString,
938
+ details: Type.Optional(Type.Unknown()),
939
+ retryable: Type.Optional(Type.Boolean()),
940
+ retryAfterMs: Type.Optional(Type.Integer({ minimum: 0 }))
941
+ }, { additionalProperties: false });
942
+ const RequestFrameSchema = Type.Object({
943
+ type: Type.Literal("req"),
944
+ id: NonEmptyString,
945
+ method: NonEmptyString,
946
+ params: Type.Optional(Type.Unknown())
947
+ }, { additionalProperties: false });
948
+ const ResponseFrameSchema = Type.Object({
949
+ type: Type.Literal("res"),
950
+ id: NonEmptyString,
951
+ ok: Type.Boolean(),
952
+ payload: Type.Optional(Type.Unknown()),
953
+ error: Type.Optional(ErrorShapeSchema)
954
+ }, { additionalProperties: false });
955
+ const EventFrameSchema = Type.Object({
956
+ type: Type.Literal("event"),
957
+ event: NonEmptyString,
958
+ payload: Type.Optional(Type.Unknown()),
959
+ seq: Type.Optional(Type.Integer({ minimum: 0 })),
960
+ stateVersion: Type.Optional(StateVersionSchema)
961
+ }, { additionalProperties: false });
962
+ const GatewayFrameSchema = Type.Union([
963
+ RequestFrameSchema,
964
+ ResponseFrameSchema,
965
+ EventFrameSchema
966
+ ], { discriminator: "type" });
967
+
968
+ //#endregion
969
+ //#region src/gateway/protocol/schema/logs-chat.ts
970
+ const LogsTailParamsSchema = Type.Object({
971
+ cursor: Type.Optional(Type.Integer({ minimum: 0 })),
972
+ limit: Type.Optional(Type.Integer({
973
+ minimum: 1,
974
+ maximum: 5e3
975
+ })),
976
+ maxBytes: Type.Optional(Type.Integer({
977
+ minimum: 1,
978
+ maximum: 1e6
979
+ }))
980
+ }, { additionalProperties: false });
981
+ const LogsTailResultSchema = Type.Object({
982
+ file: NonEmptyString,
983
+ cursor: Type.Integer({ minimum: 0 }),
984
+ size: Type.Integer({ minimum: 0 }),
985
+ lines: Type.Array(Type.String()),
986
+ truncated: Type.Optional(Type.Boolean()),
987
+ reset: Type.Optional(Type.Boolean())
988
+ }, { additionalProperties: false });
989
+ const ChatHistoryParamsSchema = Type.Object({
990
+ sessionKey: NonEmptyString,
991
+ limit: Type.Optional(Type.Integer({
992
+ minimum: 1,
993
+ maximum: 1e3
994
+ }))
995
+ }, { additionalProperties: false });
996
+ const ChatSendParamsSchema = Type.Object({
997
+ sessionKey: NonEmptyString,
998
+ message: Type.String(),
999
+ thinking: Type.Optional(Type.String()),
1000
+ deliver: Type.Optional(Type.Boolean()),
1001
+ attachments: Type.Optional(Type.Array(Type.Unknown())),
1002
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
1003
+ idempotencyKey: NonEmptyString
1004
+ }, { additionalProperties: false });
1005
+ const ChatAbortParamsSchema = Type.Object({
1006
+ sessionKey: NonEmptyString,
1007
+ runId: Type.Optional(NonEmptyString)
1008
+ }, { additionalProperties: false });
1009
+ const ChatInjectParamsSchema = Type.Object({
1010
+ sessionKey: NonEmptyString,
1011
+ message: NonEmptyString,
1012
+ label: Type.Optional(Type.String({ maxLength: 100 }))
1013
+ }, { additionalProperties: false });
1014
+ const ChatEventSchema = Type.Object({
1015
+ runId: NonEmptyString,
1016
+ sessionKey: NonEmptyString,
1017
+ seq: Type.Integer({ minimum: 0 }),
1018
+ state: Type.Union([
1019
+ Type.Literal("delta"),
1020
+ Type.Literal("final"),
1021
+ Type.Literal("aborted"),
1022
+ Type.Literal("error")
1023
+ ]),
1024
+ message: Type.Optional(Type.Unknown()),
1025
+ errorMessage: Type.Optional(Type.String()),
1026
+ usage: Type.Optional(Type.Unknown()),
1027
+ stopReason: Type.Optional(Type.String())
1028
+ }, { additionalProperties: false });
1029
+
1030
+ //#endregion
1031
+ //#region src/gateway/protocol/schema/nodes.ts
1032
+ const NodePairRequestParamsSchema = Type.Object({
1033
+ nodeId: NonEmptyString,
1034
+ displayName: Type.Optional(NonEmptyString),
1035
+ platform: Type.Optional(NonEmptyString),
1036
+ version: Type.Optional(NonEmptyString),
1037
+ coreVersion: Type.Optional(NonEmptyString),
1038
+ uiVersion: Type.Optional(NonEmptyString),
1039
+ deviceFamily: Type.Optional(NonEmptyString),
1040
+ modelIdentifier: Type.Optional(NonEmptyString),
1041
+ caps: Type.Optional(Type.Array(NonEmptyString)),
1042
+ commands: Type.Optional(Type.Array(NonEmptyString)),
1043
+ remoteIp: Type.Optional(NonEmptyString),
1044
+ silent: Type.Optional(Type.Boolean())
1045
+ }, { additionalProperties: false });
1046
+ const NodePairListParamsSchema = Type.Object({}, { additionalProperties: false });
1047
+ const NodePairApproveParamsSchema = Type.Object({ requestId: NonEmptyString }, { additionalProperties: false });
1048
+ const NodePairRejectParamsSchema = Type.Object({ requestId: NonEmptyString }, { additionalProperties: false });
1049
+ const NodePairVerifyParamsSchema = Type.Object({
1050
+ nodeId: NonEmptyString,
1051
+ token: NonEmptyString
1052
+ }, { additionalProperties: false });
1053
+ const NodeRenameParamsSchema = Type.Object({
1054
+ nodeId: NonEmptyString,
1055
+ displayName: NonEmptyString
1056
+ }, { additionalProperties: false });
1057
+ const NodeListParamsSchema = Type.Object({}, { additionalProperties: false });
1058
+ const NodeDescribeParamsSchema = Type.Object({ nodeId: NonEmptyString }, { additionalProperties: false });
1059
+ const NodeInvokeParamsSchema = Type.Object({
1060
+ nodeId: NonEmptyString,
1061
+ command: NonEmptyString,
1062
+ params: Type.Optional(Type.Unknown()),
1063
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
1064
+ idempotencyKey: NonEmptyString
1065
+ }, { additionalProperties: false });
1066
+ const NodeInvokeResultParamsSchema = Type.Object({
1067
+ id: NonEmptyString,
1068
+ nodeId: NonEmptyString,
1069
+ ok: Type.Boolean(),
1070
+ payload: Type.Optional(Type.Unknown()),
1071
+ payloadJSON: Type.Optional(Type.String()),
1072
+ error: Type.Optional(Type.Object({
1073
+ code: Type.Optional(NonEmptyString),
1074
+ message: Type.Optional(NonEmptyString)
1075
+ }, { additionalProperties: false }))
1076
+ }, { additionalProperties: false });
1077
+ const NodeEventParamsSchema = Type.Object({
1078
+ event: NonEmptyString,
1079
+ payload: Type.Optional(Type.Unknown()),
1080
+ payloadJSON: Type.Optional(Type.String())
1081
+ }, { additionalProperties: false });
1082
+ const NodeInvokeRequestEventSchema = Type.Object({
1083
+ id: NonEmptyString,
1084
+ nodeId: NonEmptyString,
1085
+ command: NonEmptyString,
1086
+ paramsJSON: Type.Optional(Type.String()),
1087
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
1088
+ idempotencyKey: Type.Optional(NonEmptyString)
1089
+ }, { additionalProperties: false });
1090
+
1091
+ //#endregion
1092
+ //#region src/gateway/protocol/schema/sessions.ts
1093
+ const SessionsListParamsSchema = Type.Object({
1094
+ limit: Type.Optional(Type.Integer({ minimum: 1 })),
1095
+ activeMinutes: Type.Optional(Type.Integer({ minimum: 1 })),
1096
+ includeGlobal: Type.Optional(Type.Boolean()),
1097
+ includeUnknown: Type.Optional(Type.Boolean()),
1098
+ includeDerivedTitles: Type.Optional(Type.Boolean()),
1099
+ includeLastMessage: Type.Optional(Type.Boolean()),
1100
+ label: Type.Optional(SessionLabelString),
1101
+ spawnedBy: Type.Optional(NonEmptyString),
1102
+ agentId: Type.Optional(NonEmptyString),
1103
+ search: Type.Optional(Type.String())
1104
+ }, { additionalProperties: false });
1105
+ const SessionsPreviewParamsSchema = Type.Object({
1106
+ keys: Type.Array(NonEmptyString, { minItems: 1 }),
1107
+ limit: Type.Optional(Type.Integer({ minimum: 1 })),
1108
+ maxChars: Type.Optional(Type.Integer({ minimum: 20 }))
1109
+ }, { additionalProperties: false });
1110
+ const SessionsResolveParamsSchema = Type.Object({
1111
+ key: Type.Optional(NonEmptyString),
1112
+ sessionId: Type.Optional(NonEmptyString),
1113
+ label: Type.Optional(SessionLabelString),
1114
+ agentId: Type.Optional(NonEmptyString),
1115
+ spawnedBy: Type.Optional(NonEmptyString),
1116
+ includeGlobal: Type.Optional(Type.Boolean()),
1117
+ includeUnknown: Type.Optional(Type.Boolean())
1118
+ }, { additionalProperties: false });
1119
+ const SessionsPatchParamsSchema = Type.Object({
1120
+ key: NonEmptyString,
1121
+ label: Type.Optional(Type.Union([SessionLabelString, Type.Null()])),
1122
+ thinkingLevel: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1123
+ verboseLevel: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1124
+ reasoningLevel: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1125
+ responseUsage: Type.Optional(Type.Union([
1126
+ Type.Literal("off"),
1127
+ Type.Literal("tokens"),
1128
+ Type.Literal("full"),
1129
+ Type.Literal("on"),
1130
+ Type.Null()
1131
+ ])),
1132
+ elevatedLevel: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1133
+ execHost: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1134
+ execSecurity: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1135
+ execAsk: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1136
+ execNode: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1137
+ model: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1138
+ spawnedBy: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1139
+ sendPolicy: Type.Optional(Type.Union([
1140
+ Type.Literal("allow"),
1141
+ Type.Literal("deny"),
1142
+ Type.Null()
1143
+ ])),
1144
+ groupActivation: Type.Optional(Type.Union([
1145
+ Type.Literal("mention"),
1146
+ Type.Literal("always"),
1147
+ Type.Null()
1148
+ ]))
1149
+ }, { additionalProperties: false });
1150
+ const SessionsResetParamsSchema = Type.Object({ key: NonEmptyString }, { additionalProperties: false });
1151
+ const SessionsDeleteParamsSchema = Type.Object({
1152
+ key: NonEmptyString,
1153
+ deleteTranscript: Type.Optional(Type.Boolean())
1154
+ }, { additionalProperties: false });
1155
+ const SessionsCompactParamsSchema = Type.Object({
1156
+ key: NonEmptyString,
1157
+ maxLines: Type.Optional(Type.Integer({ minimum: 1 }))
1158
+ }, { additionalProperties: false });
1159
+ const SessionsUsageParamsSchema = Type.Object({
1160
+ key: Type.Optional(NonEmptyString),
1161
+ startDate: Type.Optional(Type.String({ pattern: "^\\d{4}-\\d{2}-\\d{2}$" })),
1162
+ endDate: Type.Optional(Type.String({ pattern: "^\\d{4}-\\d{2}-\\d{2}$" })),
1163
+ limit: Type.Optional(Type.Integer({ minimum: 1 })),
1164
+ includeContextWeight: Type.Optional(Type.Boolean())
1165
+ }, { additionalProperties: false });
1166
+
1167
+ //#endregion
1168
+ //#region src/gateway/protocol/schema/wizard.ts
1169
+ const WizardStartParamsSchema = Type.Object({
1170
+ mode: Type.Optional(Type.Union([Type.Literal("local"), Type.Literal("remote")])),
1171
+ workspace: Type.Optional(Type.String())
1172
+ }, { additionalProperties: false });
1173
+ const WizardAnswerSchema = Type.Object({
1174
+ stepId: NonEmptyString,
1175
+ value: Type.Optional(Type.Unknown())
1176
+ }, { additionalProperties: false });
1177
+ const WizardNextParamsSchema = Type.Object({
1178
+ sessionId: NonEmptyString,
1179
+ answer: Type.Optional(WizardAnswerSchema)
1180
+ }, { additionalProperties: false });
1181
+ const WizardCancelParamsSchema = Type.Object({ sessionId: NonEmptyString }, { additionalProperties: false });
1182
+ const WizardStatusParamsSchema = Type.Object({ sessionId: NonEmptyString }, { additionalProperties: false });
1183
+ const WizardStepOptionSchema = Type.Object({
1184
+ value: Type.Unknown(),
1185
+ label: NonEmptyString,
1186
+ hint: Type.Optional(Type.String())
1187
+ }, { additionalProperties: false });
1188
+ const WizardStepSchema = Type.Object({
1189
+ id: NonEmptyString,
1190
+ type: Type.Union([
1191
+ Type.Literal("note"),
1192
+ Type.Literal("select"),
1193
+ Type.Literal("text"),
1194
+ Type.Literal("confirm"),
1195
+ Type.Literal("multiselect"),
1196
+ Type.Literal("progress"),
1197
+ Type.Literal("action")
1198
+ ]),
1199
+ title: Type.Optional(Type.String()),
1200
+ message: Type.Optional(Type.String()),
1201
+ options: Type.Optional(Type.Array(WizardStepOptionSchema)),
1202
+ initialValue: Type.Optional(Type.Unknown()),
1203
+ placeholder: Type.Optional(Type.String()),
1204
+ sensitive: Type.Optional(Type.Boolean()),
1205
+ executor: Type.Optional(Type.Union([Type.Literal("gateway"), Type.Literal("client")]))
1206
+ }, { additionalProperties: false });
1207
+ const WizardNextResultSchema = Type.Object({
1208
+ done: Type.Boolean(),
1209
+ step: Type.Optional(WizardStepSchema),
1210
+ status: Type.Optional(Type.Union([
1211
+ Type.Literal("running"),
1212
+ Type.Literal("done"),
1213
+ Type.Literal("cancelled"),
1214
+ Type.Literal("error")
1215
+ ])),
1216
+ error: Type.Optional(Type.String())
1217
+ }, { additionalProperties: false });
1218
+ const WizardStartResultSchema = Type.Object({
1219
+ sessionId: NonEmptyString,
1220
+ done: Type.Boolean(),
1221
+ step: Type.Optional(WizardStepSchema),
1222
+ status: Type.Optional(Type.Union([
1223
+ Type.Literal("running"),
1224
+ Type.Literal("done"),
1225
+ Type.Literal("cancelled"),
1226
+ Type.Literal("error")
1227
+ ])),
1228
+ error: Type.Optional(Type.String())
1229
+ }, { additionalProperties: false });
1230
+ const WizardStatusResultSchema = Type.Object({
1231
+ status: Type.Union([
1232
+ Type.Literal("running"),
1233
+ Type.Literal("done"),
1234
+ Type.Literal("cancelled"),
1235
+ Type.Literal("error")
1236
+ ]),
1237
+ error: Type.Optional(Type.String())
1238
+ }, { additionalProperties: false });
1239
+
1240
+ //#endregion
1241
+ //#region src/gateway/protocol/schema/protocol-schemas.ts
1242
+ const PROTOCOL_VERSION = 3;
1243
+
1244
+ //#endregion
1245
+ //#region src/gateway/protocol/index.ts
1246
+ const ajv = new AjvPkg({
1247
+ allErrors: true,
1248
+ strict: false,
1249
+ removeAdditional: false
1250
+ });
1251
+ const validateConnectParams = ajv.compile(ConnectParamsSchema);
1252
+ const validateRequestFrame = ajv.compile(RequestFrameSchema);
1253
+ const validateResponseFrame = ajv.compile(ResponseFrameSchema);
1254
+ const validateEventFrame = ajv.compile(EventFrameSchema);
1255
+ const validateSendParams = ajv.compile(SendParamsSchema);
1256
+ const validatePollParams = ajv.compile(PollParamsSchema);
1257
+ const validateAgentParams = ajv.compile(AgentParamsSchema);
1258
+ const validateAgentIdentityParams = ajv.compile(AgentIdentityParamsSchema);
1259
+ const validateAgentWaitParams = ajv.compile(AgentWaitParamsSchema);
1260
+ const validateWakeParams = ajv.compile(WakeParamsSchema);
1261
+ const validateAgentsListParams = ajv.compile(AgentsListParamsSchema);
1262
+ const validateAgentsFilesListParams = ajv.compile(AgentsFilesListParamsSchema);
1263
+ const validateAgentsFilesGetParams = ajv.compile(AgentsFilesGetParamsSchema);
1264
+ const validateAgentsFilesSetParams = ajv.compile(AgentsFilesSetParamsSchema);
1265
+ const validateNodePairRequestParams = ajv.compile(NodePairRequestParamsSchema);
1266
+ const validateNodePairListParams = ajv.compile(NodePairListParamsSchema);
1267
+ const validateNodePairApproveParams = ajv.compile(NodePairApproveParamsSchema);
1268
+ const validateNodePairRejectParams = ajv.compile(NodePairRejectParamsSchema);
1269
+ const validateNodePairVerifyParams = ajv.compile(NodePairVerifyParamsSchema);
1270
+ const validateNodeRenameParams = ajv.compile(NodeRenameParamsSchema);
1271
+ const validateNodeListParams = ajv.compile(NodeListParamsSchema);
1272
+ const validateNodeDescribeParams = ajv.compile(NodeDescribeParamsSchema);
1273
+ const validateNodeInvokeParams = ajv.compile(NodeInvokeParamsSchema);
1274
+ const validateNodeInvokeResultParams = ajv.compile(NodeInvokeResultParamsSchema);
1275
+ const validateNodeEventParams = ajv.compile(NodeEventParamsSchema);
1276
+ const validateSessionsListParams = ajv.compile(SessionsListParamsSchema);
1277
+ const validateSessionsPreviewParams = ajv.compile(SessionsPreviewParamsSchema);
1278
+ const validateSessionsResolveParams = ajv.compile(SessionsResolveParamsSchema);
1279
+ const validateSessionsPatchParams = ajv.compile(SessionsPatchParamsSchema);
1280
+ const validateSessionsResetParams = ajv.compile(SessionsResetParamsSchema);
1281
+ const validateSessionsDeleteParams = ajv.compile(SessionsDeleteParamsSchema);
1282
+ const validateSessionsCompactParams = ajv.compile(SessionsCompactParamsSchema);
1283
+ const validateSessionsUsageParams = ajv.compile(SessionsUsageParamsSchema);
1284
+ const validateConfigGetParams = ajv.compile(ConfigGetParamsSchema);
1285
+ const validateConfigSetParams = ajv.compile(ConfigSetParamsSchema);
1286
+ const validateConfigApplyParams = ajv.compile(ConfigApplyParamsSchema);
1287
+ const validateConfigPatchParams = ajv.compile(ConfigPatchParamsSchema);
1288
+ const validateConfigSchemaParams = ajv.compile(ConfigSchemaParamsSchema);
1289
+ const validateWizardStartParams = ajv.compile(WizardStartParamsSchema);
1290
+ const validateWizardNextParams = ajv.compile(WizardNextParamsSchema);
1291
+ const validateWizardCancelParams = ajv.compile(WizardCancelParamsSchema);
1292
+ const validateWizardStatusParams = ajv.compile(WizardStatusParamsSchema);
1293
+ const validateTalkModeParams = ajv.compile(TalkModeParamsSchema);
1294
+ const validateChannelsStatusParams = ajv.compile(ChannelsStatusParamsSchema);
1295
+ const validateChannelsLogoutParams = ajv.compile(ChannelsLogoutParamsSchema);
1296
+ const validateModelsListParams = ajv.compile(ModelsListParamsSchema);
1297
+ const validateSkillsStatusParams = ajv.compile(SkillsStatusParamsSchema);
1298
+ const validateSkillsBinsParams = ajv.compile(SkillsBinsParamsSchema);
1299
+ const validateSkillsInstallParams = ajv.compile(SkillsInstallParamsSchema);
1300
+ const validateSkillsUpdateParams = ajv.compile(SkillsUpdateParamsSchema);
1301
+ const validateCronListParams = ajv.compile(CronListParamsSchema);
1302
+ const validateCronStatusParams = ajv.compile(CronStatusParamsSchema);
1303
+ const validateCronAddParams = ajv.compile(CronAddParamsSchema);
1304
+ const validateCronUpdateParams = ajv.compile(CronUpdateParamsSchema);
1305
+ const validateCronRemoveParams = ajv.compile(CronRemoveParamsSchema);
1306
+ const validateCronRunParams = ajv.compile(CronRunParamsSchema);
1307
+ const validateCronRunsParams = ajv.compile(CronRunsParamsSchema);
1308
+ const validateDevicePairListParams = ajv.compile(DevicePairListParamsSchema);
1309
+ const validateDevicePairApproveParams = ajv.compile(DevicePairApproveParamsSchema);
1310
+ const validateDevicePairRejectParams = ajv.compile(DevicePairRejectParamsSchema);
1311
+ const validateDeviceTokenRotateParams = ajv.compile(DeviceTokenRotateParamsSchema);
1312
+ const validateDeviceTokenRevokeParams = ajv.compile(DeviceTokenRevokeParamsSchema);
1313
+ const validateExecApprovalsGetParams = ajv.compile(ExecApprovalsGetParamsSchema);
1314
+ const validateExecApprovalsSetParams = ajv.compile(ExecApprovalsSetParamsSchema);
1315
+ const validateExecApprovalRequestParams = ajv.compile(ExecApprovalRequestParamsSchema);
1316
+ const validateExecApprovalResolveParams = ajv.compile(ExecApprovalResolveParamsSchema);
1317
+ const validateExecApprovalsNodeGetParams = ajv.compile(ExecApprovalsNodeGetParamsSchema);
1318
+ const validateExecApprovalsNodeSetParams = ajv.compile(ExecApprovalsNodeSetParamsSchema);
1319
+ const validateLogsTailParams = ajv.compile(LogsTailParamsSchema);
1320
+ const validateChatHistoryParams = ajv.compile(ChatHistoryParamsSchema);
1321
+ const validateChatSendParams = ajv.compile(ChatSendParamsSchema);
1322
+ const validateChatAbortParams = ajv.compile(ChatAbortParamsSchema);
1323
+ const validateChatInjectParams = ajv.compile(ChatInjectParamsSchema);
1324
+ const validateChatEvent = ajv.compile(ChatEventSchema);
1325
+ const validateUpdateRunParams = ajv.compile(UpdateRunParamsSchema);
1326
+ const validateWebLoginStartParams = ajv.compile(WebLoginStartParamsSchema);
1327
+ const validateWebLoginWaitParams = ajv.compile(WebLoginWaitParamsSchema);
1328
+ function formatValidationErrors(errors) {
1329
+ if (!errors?.length) return "unknown validation error";
1330
+ const parts = [];
1331
+ for (const err of errors) {
1332
+ const keyword = typeof err?.keyword === "string" ? err.keyword : "";
1333
+ const instancePath = typeof err?.instancePath === "string" ? err.instancePath : "";
1334
+ if (keyword === "additionalProperties") {
1335
+ const additionalProperty = (err?.params)?.additionalProperty;
1336
+ if (typeof additionalProperty === "string" && additionalProperty.trim()) {
1337
+ const where = instancePath ? `at ${instancePath}` : "at root";
1338
+ parts.push(`${where}: unexpected property '${additionalProperty}'`);
1339
+ continue;
1340
+ }
1341
+ }
1342
+ const message = typeof err?.message === "string" && err.message.trim() ? err.message : "validation error";
1343
+ const where = instancePath ? `at ${instancePath}: ` : "";
1344
+ parts.push(`${where}${message}`);
1345
+ }
1346
+ const unique = Array.from(new Set(parts.filter((part) => part.trim())));
1347
+ if (!unique.length) return ajv.errorsText(errors, { separator: "; " }) || "unknown validation error";
1348
+ return unique.join("; ");
1349
+ }
1350
+
1351
+ //#endregion
1352
+ //#region src/gateway/client.ts
1353
+ var GatewayClient = class {
1354
+ constructor(opts) {
1355
+ this.ws = null;
1356
+ this.pending = /* @__PURE__ */ new Map();
1357
+ this.backoffMs = 1e3;
1358
+ this.closed = false;
1359
+ this.lastSeq = null;
1360
+ this.connectNonce = null;
1361
+ this.connectSent = false;
1362
+ this.connectTimer = null;
1363
+ this.lastTick = null;
1364
+ this.tickIntervalMs = 3e4;
1365
+ this.tickTimer = null;
1366
+ this.opts = {
1367
+ ...opts,
1368
+ deviceIdentity: opts.deviceIdentity ?? loadOrCreateDeviceIdentity()
1369
+ };
1370
+ }
1371
+ start() {
1372
+ if (this.closed) return;
1373
+ const url = this.opts.url ?? "ws://127.0.0.1:18789";
1374
+ if (this.opts.tlsFingerprint && !url.startsWith("wss://")) {
1375
+ this.opts.onConnectError?.(/* @__PURE__ */ new Error("gateway tls fingerprint requires wss:// gateway url"));
1376
+ return;
1377
+ }
1378
+ const wsOptions = { maxPayload: 25 * 1024 * 1024 };
1379
+ if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
1380
+ wsOptions.rejectUnauthorized = false;
1381
+ wsOptions.checkServerIdentity = ((_host, cert) => {
1382
+ const fingerprintValue = typeof cert === "object" && cert && "fingerprint256" in cert ? cert.fingerprint256 ?? "" : "";
1383
+ const fingerprint = normalizeFingerprint(typeof fingerprintValue === "string" ? fingerprintValue : "");
1384
+ const expected = normalizeFingerprint(this.opts.tlsFingerprint ?? "");
1385
+ if (!expected) return /* @__PURE__ */ new Error("gateway tls fingerprint missing");
1386
+ if (!fingerprint) return /* @__PURE__ */ new Error("gateway tls fingerprint unavailable");
1387
+ if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
1388
+ });
1389
+ }
1390
+ this.ws = new WebSocket$1(url, wsOptions);
1391
+ this.ws.on("open", () => {
1392
+ if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
1393
+ const tlsError = this.validateTlsFingerprint();
1394
+ if (tlsError) {
1395
+ this.opts.onConnectError?.(tlsError);
1396
+ this.ws?.close(1008, tlsError.message);
1397
+ return;
1398
+ }
1399
+ }
1400
+ this.queueConnect();
1401
+ });
1402
+ this.ws.on("message", (data) => this.handleMessage(rawDataToString(data)));
1403
+ this.ws.on("close", (code, reason) => {
1404
+ const reasonText = rawDataToString(reason);
1405
+ this.ws = null;
1406
+ this.flushPendingErrors(/* @__PURE__ */ new Error(`gateway closed (${code}): ${reasonText}`));
1407
+ this.scheduleReconnect();
1408
+ this.opts.onClose?.(code, reasonText);
1409
+ });
1410
+ this.ws.on("error", (err) => {
1411
+ logDebug(`gateway client error: ${String(err)}`);
1412
+ if (!this.connectSent) this.opts.onConnectError?.(err instanceof Error ? err : new Error(String(err)));
1413
+ });
1414
+ }
1415
+ stop() {
1416
+ this.closed = true;
1417
+ if (this.tickTimer) {
1418
+ clearInterval(this.tickTimer);
1419
+ this.tickTimer = null;
1420
+ }
1421
+ this.ws?.close();
1422
+ this.ws = null;
1423
+ this.flushPendingErrors(/* @__PURE__ */ new Error("gateway client stopped"));
1424
+ }
1425
+ sendConnect() {
1426
+ if (this.connectSent) return;
1427
+ this.connectSent = true;
1428
+ if (this.connectTimer) {
1429
+ clearTimeout(this.connectTimer);
1430
+ this.connectTimer = null;
1431
+ }
1432
+ const role = this.opts.role ?? "operator";
1433
+ const storedToken = this.opts.deviceIdentity ? loadDeviceAuthToken({
1434
+ deviceId: this.opts.deviceIdentity.deviceId,
1435
+ role
1436
+ })?.token : null;
1437
+ const authToken = storedToken ?? this.opts.token ?? void 0;
1438
+ const canFallbackToShared = Boolean(storedToken && this.opts.token);
1439
+ const auth = authToken || this.opts.password ? {
1440
+ token: authToken,
1441
+ password: this.opts.password
1442
+ } : void 0;
1443
+ const signedAtMs = Date.now();
1444
+ const nonce = this.connectNonce ?? void 0;
1445
+ const scopes = this.opts.scopes ?? ["operator.admin"];
1446
+ const device = (() => {
1447
+ if (!this.opts.deviceIdentity) return;
1448
+ const payload = buildDeviceAuthPayload({
1449
+ deviceId: this.opts.deviceIdentity.deviceId,
1450
+ clientId: this.opts.clientName ?? GATEWAY_CLIENT_NAMES.GATEWAY_CLIENT,
1451
+ clientMode: this.opts.mode ?? GATEWAY_CLIENT_MODES.BACKEND,
1452
+ role,
1453
+ scopes,
1454
+ signedAtMs,
1455
+ token: authToken ?? null,
1456
+ nonce
1457
+ });
1458
+ const signature = signDevicePayload(this.opts.deviceIdentity.privateKeyPem, payload);
1459
+ return {
1460
+ id: this.opts.deviceIdentity.deviceId,
1461
+ publicKey: publicKeyRawBase64UrlFromPem(this.opts.deviceIdentity.publicKeyPem),
1462
+ signature,
1463
+ signedAt: signedAtMs,
1464
+ nonce
1465
+ };
1466
+ })();
1467
+ const params = {
1468
+ minProtocol: this.opts.minProtocol ?? PROTOCOL_VERSION,
1469
+ maxProtocol: this.opts.maxProtocol ?? PROTOCOL_VERSION,
1470
+ client: {
1471
+ id: this.opts.clientName ?? GATEWAY_CLIENT_NAMES.GATEWAY_CLIENT,
1472
+ displayName: this.opts.clientDisplayName,
1473
+ version: this.opts.clientVersion ?? "dev",
1474
+ platform: this.opts.platform ?? process.platform,
1475
+ mode: this.opts.mode ?? GATEWAY_CLIENT_MODES.BACKEND,
1476
+ instanceId: this.opts.instanceId
1477
+ },
1478
+ caps: Array.isArray(this.opts.caps) ? this.opts.caps : [],
1479
+ commands: Array.isArray(this.opts.commands) ? this.opts.commands : void 0,
1480
+ permissions: this.opts.permissions && typeof this.opts.permissions === "object" ? this.opts.permissions : void 0,
1481
+ pathEnv: this.opts.pathEnv,
1482
+ auth,
1483
+ role,
1484
+ scopes,
1485
+ device
1486
+ };
1487
+ this.request("connect", params).then((helloOk) => {
1488
+ const authInfo = helloOk?.auth;
1489
+ if (authInfo?.deviceToken && this.opts.deviceIdentity) storeDeviceAuthToken({
1490
+ deviceId: this.opts.deviceIdentity.deviceId,
1491
+ role: authInfo.role ?? role,
1492
+ token: authInfo.deviceToken,
1493
+ scopes: authInfo.scopes ?? []
1494
+ });
1495
+ this.backoffMs = 1e3;
1496
+ this.tickIntervalMs = typeof helloOk.policy?.tickIntervalMs === "number" ? helloOk.policy.tickIntervalMs : 3e4;
1497
+ this.lastTick = Date.now();
1498
+ this.startTickWatch();
1499
+ this.opts.onHelloOk?.(helloOk);
1500
+ }).catch((err) => {
1501
+ if (canFallbackToShared && this.opts.deviceIdentity) clearDeviceAuthToken({
1502
+ deviceId: this.opts.deviceIdentity.deviceId,
1503
+ role
1504
+ });
1505
+ this.opts.onConnectError?.(err instanceof Error ? err : new Error(String(err)));
1506
+ const msg = `gateway connect failed: ${String(err)}`;
1507
+ if (this.opts.mode === GATEWAY_CLIENT_MODES.PROBE) logDebug(msg);
1508
+ else logError(msg);
1509
+ this.ws?.close(1008, "connect failed");
1510
+ });
1511
+ }
1512
+ handleMessage(raw) {
1513
+ try {
1514
+ const parsed = JSON.parse(raw);
1515
+ if (validateEventFrame(parsed)) {
1516
+ const evt = parsed;
1517
+ if (evt.event === "connect.challenge") {
1518
+ const payload = evt.payload;
1519
+ const nonce = payload && typeof payload.nonce === "string" ? payload.nonce : null;
1520
+ if (nonce) {
1521
+ this.connectNonce = nonce;
1522
+ this.sendConnect();
1523
+ }
1524
+ return;
1525
+ }
1526
+ const seq = typeof evt.seq === "number" ? evt.seq : null;
1527
+ if (seq !== null) {
1528
+ if (this.lastSeq !== null && seq > this.lastSeq + 1) this.opts.onGap?.({
1529
+ expected: this.lastSeq + 1,
1530
+ received: seq
1531
+ });
1532
+ this.lastSeq = seq;
1533
+ }
1534
+ if (evt.event === "tick") this.lastTick = Date.now();
1535
+ this.opts.onEvent?.(evt);
1536
+ return;
1537
+ }
1538
+ if (validateResponseFrame(parsed)) {
1539
+ const pending = this.pending.get(parsed.id);
1540
+ if (!pending) return;
1541
+ const status = parsed.payload?.status;
1542
+ if (pending.expectFinal && status === "accepted") return;
1543
+ this.pending.delete(parsed.id);
1544
+ if (parsed.ok) pending.resolve(parsed.payload);
1545
+ else pending.reject(new Error(parsed.error?.message ?? "unknown error"));
1546
+ }
1547
+ } catch (err) {
1548
+ logDebug(`gateway client parse error: ${String(err)}`);
1549
+ }
1550
+ }
1551
+ queueConnect() {
1552
+ this.connectNonce = null;
1553
+ this.connectSent = false;
1554
+ if (this.connectTimer) clearTimeout(this.connectTimer);
1555
+ this.connectTimer = setTimeout(() => {
1556
+ this.sendConnect();
1557
+ }, 750);
1558
+ }
1559
+ scheduleReconnect() {
1560
+ if (this.closed) return;
1561
+ if (this.tickTimer) {
1562
+ clearInterval(this.tickTimer);
1563
+ this.tickTimer = null;
1564
+ }
1565
+ const delay = this.backoffMs;
1566
+ this.backoffMs = Math.min(this.backoffMs * 2, 3e4);
1567
+ setTimeout(() => this.start(), delay).unref();
1568
+ }
1569
+ flushPendingErrors(err) {
1570
+ for (const [, p] of this.pending) p.reject(err);
1571
+ this.pending.clear();
1572
+ }
1573
+ startTickWatch() {
1574
+ if (this.tickTimer) clearInterval(this.tickTimer);
1575
+ const interval = Math.max(this.tickIntervalMs, 1e3);
1576
+ this.tickTimer = setInterval(() => {
1577
+ if (this.closed) return;
1578
+ if (!this.lastTick) return;
1579
+ if (Date.now() - this.lastTick > this.tickIntervalMs * 2) this.ws?.close(4e3, "tick timeout");
1580
+ }, interval);
1581
+ }
1582
+ validateTlsFingerprint() {
1583
+ if (!this.opts.tlsFingerprint || !this.ws) return null;
1584
+ const expected = normalizeFingerprint(this.opts.tlsFingerprint);
1585
+ if (!expected) return /* @__PURE__ */ new Error("gateway tls fingerprint missing");
1586
+ const socket = this.ws._socket;
1587
+ if (!socket || typeof socket.getPeerCertificate !== "function") return /* @__PURE__ */ new Error("gateway tls fingerprint unavailable");
1588
+ const fingerprint = normalizeFingerprint(socket.getPeerCertificate()?.fingerprint256 ?? "");
1589
+ if (!fingerprint) return /* @__PURE__ */ new Error("gateway tls fingerprint unavailable");
1590
+ if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
1591
+ return null;
1592
+ }
1593
+ async request(method, params, opts) {
1594
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
1595
+ const id = randomUUID();
1596
+ const frame = {
1597
+ type: "req",
1598
+ id,
1599
+ method,
1600
+ params
1601
+ };
1602
+ if (!validateRequestFrame(frame)) throw new Error(`invalid request frame: ${JSON.stringify(validateRequestFrame.errors, null, 2)}`);
1603
+ const expectFinal = opts?.expectFinal === true;
1604
+ const p = new Promise((resolve, reject) => {
1605
+ this.pending.set(id, {
1606
+ resolve: (value) => resolve(value),
1607
+ reject,
1608
+ expectFinal
1609
+ });
1610
+ });
1611
+ this.ws.send(JSON.stringify(frame));
1612
+ return p;
1613
+ }
1614
+ };
1615
+
1616
+ //#endregion
1617
+ export { validatePollParams as $, validateDevicePairListParams as A, deriveDeviceIdFromPublicKey as At, validateLogsTailParams as B, validateCronListParams as C, PROTOCOL_VERSION as Ct, validateCronStatusParams as D, parseSessionLabel as Dt, validateCronRunsParams as E, SESSION_LABEL_MAX_LENGTH as Et, validateExecApprovalResolveParams as F, validateNodeInvokeResultParams as G, validateNodeDescribeParams as H, validateExecApprovalsGetParams as I, validateNodePairListParams as J, validateNodeListParams as K, validateExecApprovalsNodeGetParams as L, validateDeviceTokenRevokeParams as M, normalizeDevicePublicKeyBase64Url as Mt, validateDeviceTokenRotateParams as N, verifyDeviceSignature as Nt, validateCronUpdateParams as O, buildDeviceAuthPayload as Ot, validateExecApprovalRequestParams as P, validateNodeRenameParams as Q, validateExecApprovalsNodeSetParams as R, validateCronAddParams as S, validateWizardStatusParams as St, validateCronRunParams as T, errorShape as Tt, validateNodeEventParams as U, validateModelsListParams as V, validateNodeInvokeParams as W, validateNodePairRequestParams as X, validateNodePairRejectParams as Y, validateNodePairVerifyParams as Z, validateConfigGetParams as _, validateWebLoginStartParams as _t, validateAgentWaitParams as a, validateSessionsPatchParams as at, validateConfigSetParams as b, validateWizardNextParams as bt, validateAgentsFilesSetParams as c, validateSessionsResolveParams as ct, validateChannelsStatusParams as d, validateSkillsInstallParams as dt, validateRequestFrame as et, validateChatAbortParams as f, validateSkillsStatusParams as ft, validateConfigApplyParams as g, validateWakeParams as gt, validateChatSendParams as h, validateUpdateRunParams as ht, validateAgentParams as i, validateSessionsListParams as it, validateDevicePairRejectParams as j, loadOrCreateDeviceIdentity as jt, validateDevicePairApproveParams as k, normalizeFingerprint as kt, validateAgentsListParams as l, validateSessionsUsageParams as lt, validateChatInjectParams as m, validateTalkModeParams as mt, formatValidationErrors as n, validateSessionsCompactParams as nt, validateAgentsFilesGetParams as o, validateSessionsPreviewParams as ot, validateChatHistoryParams as p, validateSkillsUpdateParams as pt, validateNodePairApproveParams as q, validateAgentIdentityParams as r, validateSessionsDeleteParams as rt, validateAgentsFilesListParams as s, validateSessionsResetParams as st, GatewayClient as t, validateSendParams as tt, validateChannelsLogoutParams as u, validateSkillsBinsParams as ut, validateConfigPatchParams as v, validateWebLoginWaitParams as vt, validateCronRemoveParams as w, ErrorCodes as wt, validateConnectParams as x, validateWizardStartParams as xt, validateConfigSchemaParams as y, validateWizardCancelParams as yt, validateExecApprovalsSetParams as z };