silentlake 2026.3.24

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 (1893) hide show
  1. package/CHANGELOG.md +4587 -0
  2. package/LICENSE +21 -0
  3. package/README.md +248 -0
  4. package/assets/avatar-placeholder.svg +19 -0
  5. package/assets/chrome-extension/icons/icon128.png +0 -0
  6. package/assets/chrome-extension/icons/icon16.png +0 -0
  7. package/assets/chrome-extension/icons/icon32.png +0 -0
  8. package/assets/chrome-extension/icons/icon48.png +0 -0
  9. package/assets/dmg-background-small.png +0 -0
  10. package/assets/dmg-background.png +0 -0
  11. package/assets/silentlake-banner.png +0 -0
  12. package/dist/APEv2Parser-BZv_dP9t.js +269 -0
  13. package/dist/APEv2Parser-CPzxFNBB.js +5 -0
  14. package/dist/AbstractID3Parser-mvDFcjYV.js +47 -0
  15. package/dist/AiffParser-BXQ9SRZk.js +145 -0
  16. package/dist/AsfParser-CmBDUlZE.js +631 -0
  17. package/dist/BasicParser-DhmXREDo.js +853 -0
  18. package/dist/DsdiffParser-CTKKGyZg.js +150 -0
  19. package/dist/DsfParser-Ds-YQe4Z.js +101 -0
  20. package/dist/FlacParser-B1XVPgXF.js +5 -0
  21. package/dist/FlacParser-DMPyL1y4.js +367 -0
  22. package/dist/ID3v1Parser-BICWWVDG.js +289 -0
  23. package/dist/ID3v2Parser-BmZHSUqs.js +650 -0
  24. package/dist/ID3v2Token-DeJf4tYQ.js +145 -0
  25. package/dist/MP4Parser-Cjf-Zs8T.js +1061 -0
  26. package/dist/MatroskaParser-DgBzBe8t.js +909 -0
  27. package/dist/MpegParser-D5swTpA1.js +744 -0
  28. package/dist/MusepackParser-D8EQXnpK.js +285 -0
  29. package/dist/OggParser-BcIYPHwP.js +390 -0
  30. package/dist/Util-D_zGsr97.js +170 -0
  31. package/dist/WavPackParser-hosU8gfo.js +166 -0
  32. package/dist/WaveParser-CA00FZrC.js +273 -0
  33. package/dist/abort-cutoff-CERmtgZI.js +56 -0
  34. package/dist/abort-cutoff.runtime-DZkGKKzv.js +61 -0
  35. package/dist/abort-signal-CsrBEr94.js +13 -0
  36. package/dist/account-helpers-D3c_eI7c.js +37 -0
  37. package/dist/account-helpers-ru3jdZSV.js +12 -0
  38. package/dist/account-id-DZnNZg8x.js +1 -0
  39. package/dist/account-id-ZCrgXl7Z.js +44 -0
  40. package/dist/account-lookup-nkoa-foB.js +10 -0
  41. package/dist/account-snapshot-fields-Cvq7803C.js +116 -0
  42. package/dist/account-summary-B5Xzvntm.js +36 -0
  43. package/dist/accounts-43SvCDEA.js +212 -0
  44. package/dist/accounts-CYgFhv2o.js +105 -0
  45. package/dist/accounts-ChlyF7cx.js +112 -0
  46. package/dist/ack-reactions-CNVwfOBj.js +43 -0
  47. package/dist/acp-cli-B4Rv7-xU.js +2033 -0
  48. package/dist/acp-runtime-BdLdT-QY.js +1 -0
  49. package/dist/actions.runtime-CqnQssoB.js +217 -0
  50. package/dist/actions.runtime-FLmCvVRd.js +236 -0
  51. package/dist/agent-CBOdzEvR.js +1 -0
  52. package/dist/agent-scope-BLhzf-o0.js +17 -0
  53. package/dist/agent-scope-DPP4Z_UU.js +193 -0
  54. package/dist/agents-D8pBK0II.js +855 -0
  55. package/dist/agents-Dihz1Ihx.js +323 -0
  56. package/dist/agents.config-C_lrnc9J.js +18 -0
  57. package/dist/agents.config-D1VqC78r.js +121 -0
  58. package/dist/allow-from-BPSBITdd.js +9 -0
  59. package/dist/allow-from-BwTLpvhp.js +20 -0
  60. package/dist/allow-from-C4iBpqFI.js +62 -0
  61. package/dist/allowlist-config-edit-CKbnMmwS.js +279 -0
  62. package/dist/allowlist-match-CYmPgg1K.js +63 -0
  63. package/dist/ansi-BEJF8NKS.js +54 -0
  64. package/dist/anthropic-vertex-provider-Dd5agCN9.js +60 -0
  65. package/dist/apply.runtime-DhKxNSJE.js +370 -0
  66. package/dist/apply.runtime-ghlh-P6X.js +211 -0
  67. package/dist/archive-Tr0wIUO-.js +532 -0
  68. package/dist/arg-split-Dtda0YDl.js +38 -0
  69. package/dist/artifacts-C_4LekPC.js +39 -0
  70. package/dist/audit-BOPSQQtd.js +54 -0
  71. package/dist/audit-C5kdrCi_.js +788 -0
  72. package/dist/audit-channel.allow-from.runtime-B7BHNblL.js +17 -0
  73. package/dist/audit-channel.collect.runtime-CjAbXFBV.js +521 -0
  74. package/dist/audit-channel.discord.runtime-BBY6S9lg.js +5 -0
  75. package/dist/audit-channel.telegram.runtime-SJnxOJH2.js +8 -0
  76. package/dist/audit-channel.zalouser.runtime-SGRWvHxT.js +5 -0
  77. package/dist/audit-extra.async-DY8v7LXH.js +817 -0
  78. package/dist/audit-fs-oDMUa5N_.js +375 -0
  79. package/dist/audit-membership-runtime-BPjFryEx.js +261 -0
  80. package/dist/audit.deep.runtime-WFf-TpsD.js +31 -0
  81. package/dist/audit.nondeep.runtime-B4BaEaRU.js +842 -0
  82. package/dist/audit.runtime-rFjCrods.js +74 -0
  83. package/dist/auth-O6LQFLHJ.js +416 -0
  84. package/dist/auth-choice-DIBaxmAQ.js +219 -0
  85. package/dist/auth-choice-PrbpIjyg.js +610 -0
  86. package/dist/auth-choice-legacy-Clyw2lVc.js +17 -0
  87. package/dist/auth-choice-options-ohUw8QR-.js +127 -0
  88. package/dist/auth-choice-prompt-Cm0s-9Du.js +215 -0
  89. package/dist/auth-choice-prompt-DI-Xl1Nv.js +36 -0
  90. package/dist/auth-choice-rKBOd02a.js +64 -0
  91. package/dist/auth-choice.apply-helpers-BibBSEl9.js +66 -0
  92. package/dist/auth-choice.plugin-providers.runtime-gqF9NO7_.js +219 -0
  93. package/dist/auth-health-TWboMYA5.js +166 -0
  94. package/dist/auth-mode-policy-DywddkT-.js +18 -0
  95. package/dist/auth-profiles-CWEIQV77.js +1047 -0
  96. package/dist/auth-profiles.runtime-B98lwopF.js +48 -0
  97. package/dist/avatar-policy-Ds9e6uHI.js +67 -0
  98. package/dist/axios-xDDnM0KG.js +12831 -0
  99. package/dist/backup-create-B6JAR6jJ.js +461 -0
  100. package/dist/banner-bez5CpOK.js +351 -0
  101. package/dist/base-session-key-Cf2rkwag.js +14 -0
  102. package/dist/bindings-BV4AtNSY.js +21 -0
  103. package/dist/bindings-kjwuC11Q.js +69 -0
  104. package/dist/bluebubbles-C1M3Geg0.js +87 -0
  105. package/dist/bluebubbles-DRW3JdOY.js +603 -0
  106. package/dist/bluebubbles-dEl4QpYz.js +37 -0
  107. package/dist/bonjour-discovery-C2oY96BG.js +376 -0
  108. package/dist/boolean-DKtCJu_W.js +29 -0
  109. package/dist/boolean-param-xAGXUSSN.js +13 -0
  110. package/dist/boundary-file-read-BP6VMpqH.js +106 -0
  111. package/dist/boundary-path-B3FFLYNx.js +557 -0
  112. package/dist/brave-CkimJe4j.js +405 -0
  113. package/dist/brew-DSwWqzLd.js +44 -0
  114. package/dist/browser-cli-D3kBUBNc.js +1502 -0
  115. package/dist/bundled/boot-md/handler.js +381 -0
  116. package/dist/bundled/bootstrap-extra-files/handler.js +56 -0
  117. package/dist/bundled/command-logger/handler.js +62 -0
  118. package/dist/bundled/session-memory/handler.js +401 -0
  119. package/dist/call-BDvaXe4i.js +44 -0
  120. package/dist/call-BmLt3xO1.js +639 -0
  121. package/dist/catalog-BwAYUfL7.js +240 -0
  122. package/dist/channel-BBCuV5OT.js +4945 -0
  123. package/dist/channel-BDBXuqeg.js +321 -0
  124. package/dist/channel-C8h1Irxm.js +1284 -0
  125. package/dist/channel-CbGpFzo4.js +1602 -0
  126. package/dist/channel-Ci3K8fI9.js +1006 -0
  127. package/dist/channel-DGT5N1v7.js +1077 -0
  128. package/dist/channel-account-context-Bwa-YH_o.js +104 -0
  129. package/dist/channel-actions-DU2CR3xW.js +37 -0
  130. package/dist/channel-activity-B8aReQoE.js +35 -0
  131. package/dist/channel-config-3Uv6ve2_.js +115 -0
  132. package/dist/channel-config-helpers-CieQWILI.js +377 -0
  133. package/dist/channel-config-schema-DEVsCZpj.js +1 -0
  134. package/dist/channel-feedback-G6zh8efr.js +245 -0
  135. package/dist/channel-inbound-DwzVf2PK.js +395 -0
  136. package/dist/channel-lifecycle-CpU1dRbh.js +354 -0
  137. package/dist/channel-options-DJaIP4Dv.js +38 -0
  138. package/dist/channel-pairing-D54mn51y.js +66 -0
  139. package/dist/channel-plugin-common-BhTxCE5t.js +1 -0
  140. package/dist/channel-plugin-ids-CFeS3qir.js +26 -0
  141. package/dist/channel-plugin-resolution-DUngfdFj.js +112 -0
  142. package/dist/channel-policy-C4GKHvhz.js +1 -0
  143. package/dist/channel-reply-pipeline-CPTuaW8n.js +15 -0
  144. package/dist/channel-send-result-By8EpCPw.js +40 -0
  145. package/dist/channel-setup-Ck35g7zI.js +49 -0
  146. package/dist/channel-shared-LkXtTPXk.js +308 -0
  147. package/dist/channel-summary-CdYLGMVt.js +137 -0
  148. package/dist/channel-summary-D33z52ft.js +41 -0
  149. package/dist/channel-targets-DfnKGXez.js +87 -0
  150. package/dist/channel.runtime-DAyBR2A5.js +324 -0
  151. package/dist/channel.runtime-DVq5tC2D.js +35 -0
  152. package/dist/channel.runtime-DaLTDGtF.js +288 -0
  153. package/dist/channel.runtime-FKfTev2g.js +512 -0
  154. package/dist/channel.runtime-owqedh1t.js +268 -0
  155. package/dist/channel.runtime-wOTeiifp.js +230 -0
  156. package/dist/channels-CIHgkPea.js +408 -0
  157. package/dist/channels-ZXK6Jiuk.js +1393 -0
  158. package/dist/channels-cli-Bj6qSlkE.js +412 -0
  159. package/dist/channels-status-issues-C_U44M8Y.js +16 -0
  160. package/dist/chat-type-C-n03mQY.js +10 -0
  161. package/dist/clack-prompter-DuzDnaLi.js +112 -0
  162. package/dist/clawbot-cli-YNPuwmTB.js +218 -0
  163. package/dist/cli/daemon-cli.js +88 -0
  164. package/dist/cli-CW46WAZn.js +254 -0
  165. package/dist/cli-name-Daok7A7-.js +25 -0
  166. package/dist/cli-runtime-aAVwbEYy.js +7 -0
  167. package/dist/cli-utils-Np4NAAtt.js +39 -0
  168. package/dist/command-format-CYK9XiUC.js +16 -0
  169. package/dist/command-format-g8YUHNir.js +2 -0
  170. package/dist/command-gating-BQXGSqc9.js +40 -0
  171. package/dist/command-options-5coRiipK.js +25 -0
  172. package/dist/command-poll-backoff-CpkSns-6.js +56 -0
  173. package/dist/command-poll-backoff.runtime-YT6EGcLN.js +7 -0
  174. package/dist/command-registry-BI2MOs89.js +242 -0
  175. package/dist/command-registry-BMsxnuoC.js +14 -0
  176. package/dist/command-secret-gateway-ChXyZwos.js +211 -0
  177. package/dist/command-secret-targets-COcwhn-D.js +88 -0
  178. package/dist/command-secret-targets-CQJT3viO.js +3 -0
  179. package/dist/commands-Bb9xUwz9.js +42 -0
  180. package/dist/commands-core-C1usZXC2.js +4923 -0
  181. package/dist/commands-core.runtime-OTZivlO2.js +232 -0
  182. package/dist/commands-registry-ChCep1KJ.js +295 -0
  183. package/dist/commands-registry.data-XyUTELK9.js +904 -0
  184. package/dist/commands-registry.runtime-m5WTxFtv.js +25 -0
  185. package/dist/commands-status.runtime-C8_hpNgj.js +211 -0
  186. package/dist/commands.runtime-BZPnQKcW.js +232 -0
  187. package/dist/common-CUBlLRXB.js +457 -0
  188. package/dist/compact.runtime-Djmzpbn6.js +216 -0
  189. package/dist/completion-cli-D8tLgE5W.js +445 -0
  190. package/dist/completion-cli-Dz89naVA.js +17 -0
  191. package/dist/config-6sZwvXJD.js +88 -0
  192. package/dist/config-B7tPwoHZ.js +38 -0
  193. package/dist/config-DdDLrP_v.js +273 -0
  194. package/dist/config-cli-C10R8azD.js +945 -0
  195. package/dist/config-guard-B1c73BYQ.js +126 -0
  196. package/dist/config-helpers-3u5wfLBu.js +117 -0
  197. package/dist/config-pn7LKJdW.js +23 -0
  198. package/dist/config-presence-BmUF_5K9.js +79 -0
  199. package/dist/config-regex-CvZFnWkO.js +39 -0
  200. package/dist/config-runtime-CstET7fq.js +142 -0
  201. package/dist/config-schema-5YkIW1xw.js +270 -0
  202. package/dist/config-schema-B1UGMwZ8.js +31 -0
  203. package/dist/config-schema-DzlnsY3D.js +33 -0
  204. package/dist/config-state-CE0CGjey.js +288 -0
  205. package/dist/config-validation-CkVqgkHr.js +272 -0
  206. package/dist/config-value-DgJrpclm.js +25 -0
  207. package/dist/configure-DMkp7Sr4.js +1126 -0
  208. package/dist/configure-DOrQthLy.js +344 -0
  209. package/dist/connection-auth-BSQJeDOU.js +30 -0
  210. package/dist/constants-C_Scc680.js +71 -0
  211. package/dist/control-ui-assets-DjqeIg6A.js +232 -0
  212. package/dist/control-ui-shared-DP000Pxd.js +29 -0
  213. package/dist/conversation-runtime-1O0Aaolb.js +1458 -0
  214. package/dist/core-C7aHA4Aq.js +187 -0
  215. package/dist/core-command-descriptors-DCUYAEZd.js +96 -0
  216. package/dist/credentials-BPwBlm1X.js +265 -0
  217. package/dist/cron-cli-N2Hw_02d.js +579 -0
  218. package/dist/daemon-cli-DgfaF9xx.js +354 -0
  219. package/dist/daemon-install-CbclJo5M.js +134 -0
  220. package/dist/daemon-install-plan.shared-DK6BHlWI.js +222 -0
  221. package/dist/daemon-runtime-CbClrCwc.js +12 -0
  222. package/dist/dangerous-config-flags-BJtLWIk7.js +15 -0
  223. package/dist/dangerous-name-matching-DZa_t0RM.js +44 -0
  224. package/dist/dangerous-tools-yGPDFTHh.js +27 -0
  225. package/dist/date-time-DCAyaBop.js +118 -0
  226. package/dist/dedupe-Cgnk5BbX.js +55 -0
  227. package/dist/defaults-CEdZhIIb.js +6 -0
  228. package/dist/delegate-D4ql5N70.js +43 -0
  229. package/dist/deliver-B004w1Mv.js +212 -0
  230. package/dist/deliver-runtime-IYvc0giI.js +211 -0
  231. package/dist/delivery-queue-B19wDCjT.js +3 -0
  232. package/dist/delivery-queue-DrrqB4Hi.js +299 -0
  233. package/dist/device-auth-GEXe9vqR.js +15 -0
  234. package/dist/device-bootstrap-CwwokLEY.js +96 -0
  235. package/dist/device-bootstrap-Dbhe6oe8.js +1 -0
  236. package/dist/device-metadata-normalization-BDSQ_eA7.js +21 -0
  237. package/dist/device-pairing-cFWbBray.js +553 -0
  238. package/dist/devices-cli-DzycjFzS.js +366 -0
  239. package/dist/diagnostic-DqJXx_4Q.js +310 -0
  240. package/dist/diagnostic-events-ktCoG8Br.js +48 -0
  241. package/dist/diagnostics-CMhyGsPu.js +33 -0
  242. package/dist/diagnostics-DpLHpQ9c.js +14 -0
  243. package/dist/directive-handling.fast-lane-toP_ri_H.js +273 -0
  244. package/dist/directive-handling.impl-BRARyrsT.js +638 -0
  245. package/dist/directive-handling.impl-CUB4MOnK.js +214 -0
  246. package/dist/directive-handling.levels-8vnMeuGX.js +2 -0
  247. package/dist/directive-handling.levels-CoruY1AA.js +13 -0
  248. package/dist/directive-handling.persist.runtime-78Du6PgL.js +170 -0
  249. package/dist/directive-handling.shared-DCGUCHjn.js +147 -0
  250. package/dist/directory-cli-DVsDcgIU.js +437 -0
  251. package/dist/directory-config-helpers-CURJ8mj7.js +129 -0
  252. package/dist/directory-runtime-DhC8QkMq.js +19 -0
  253. package/dist/directory.static-DQaG9ohH.js +44 -0
  254. package/dist/discord-CYj8s73O.js +214 -0
  255. package/dist/discord-L9zvSHVn.js +635 -0
  256. package/dist/discord-core-5tkl-BzP.js +1 -0
  257. package/dist/dm-policy-shared-6bCJzHOS.js +188 -0
  258. package/dist/dns-cli-BMvHy265.js +223 -0
  259. package/dist/docker-XFNiArwM.js +1254 -0
  260. package/dist/docs-cli-BTaH94wD.js +176 -0
  261. package/dist/doctor-completion-DKx5m2UC.js +90 -0
  262. package/dist/doctor-config-preflight-BzQgc3_t.js +40 -0
  263. package/dist/doctor-config-preflight-DxVCut8L.js +150 -0
  264. package/dist/doctor-state-migrations-CTF66iAy.js +732 -0
  265. package/dist/doctor-state-migrations-D0VP4dUh.js +212 -0
  266. package/dist/entry-status-B2OWAf0s.js +172 -0
  267. package/dist/entry.js +210 -0
  268. package/dist/env-BP70DGuy.js +30 -0
  269. package/dist/env-overrides-JneV60sd.js +434 -0
  270. package/dist/env-overrides.runtime-DLrwions.js +18 -0
  271. package/dist/env-substitution-D6t_sLS_.js +136 -0
  272. package/dist/errors-BxyFnvP3.js +58 -0
  273. package/dist/exec-Dmex2w_d.js +310 -0
  274. package/dist/exec-approvals-BJhuySBz.js +386 -0
  275. package/dist/exec-approvals-allowlist-B_wPddCb.js +384 -0
  276. package/dist/exec-approvals-cli-C2dwhSkX.js +427 -0
  277. package/dist/exec-safe-bin-runtime-policy-BZkObC8r.js +89 -0
  278. package/dist/exec-safety-CaaBy-Zw.js +24 -0
  279. package/dist/extension-shared-5txN7IXK.js +74 -0
  280. package/dist/extensionAPI.js +218 -0
  281. package/dist/extensions/amazon-bedrock/index.js +231 -0
  282. package/dist/extensions/anthropic/index.js +330 -0
  283. package/dist/extensions/bluebubbles/index.js +224 -0
  284. package/dist/extensions/bluebubbles/setup-entry.js +289 -0
  285. package/dist/extensions/brave/index.js +23 -0
  286. package/dist/extensions/byteplus/index.js +112 -0
  287. package/dist/extensions/chutes/index.js +221 -0
  288. package/dist/extensions/cloudflare-ai-gateway/index.js +218 -0
  289. package/dist/extensions/copilot-proxy/index.js +125 -0
  290. package/dist/extensions/device-pair/index.js +1040 -0
  291. package/dist/extensions/discord/index.js +215 -0
  292. package/dist/extensions/discord/setup-entry.js +215 -0
  293. package/dist/extensions/elevenlabs/index.js +223 -0
  294. package/dist/extensions/fal/index.js +112 -0
  295. package/dist/extensions/feishu/index.js +227 -0
  296. package/dist/extensions/feishu/setup-entry.js +112 -0
  297. package/dist/extensions/firecrawl/index.js +211 -0
  298. package/dist/extensions/github-copilot/index.js +490 -0
  299. package/dist/extensions/google/index.js +211 -0
  300. package/dist/extensions/huggingface/index.js +108 -0
  301. package/dist/extensions/imessage/index.js +223 -0
  302. package/dist/extensions/imessage/setup-entry.js +220 -0
  303. package/dist/extensions/irc/index.js +220 -0
  304. package/dist/extensions/irc/setup-entry.js +222 -0
  305. package/dist/extensions/kilocode/index.js +282 -0
  306. package/dist/extensions/kimi-coding/index.js +148 -0
  307. package/dist/extensions/line/index.js +57 -0
  308. package/dist/extensions/line/setup-entry.js +49 -0
  309. package/dist/extensions/llm-task/index.js +157 -0
  310. package/dist/extensions/lobster/index.js +261 -0
  311. package/dist/extensions/mattermost/index.js +220 -0
  312. package/dist/extensions/mattermost/setup-entry.js +222 -0
  313. package/dist/extensions/memory-core/index.js +36 -0
  314. package/dist/extensions/microsoft/index.js +223 -0
  315. package/dist/extensions/minimax/index.js +437 -0
  316. package/dist/extensions/mistral/index.js +149 -0
  317. package/dist/extensions/modelstudio/index.js +144 -0
  318. package/dist/extensions/moonshot/index.js +211 -0
  319. package/dist/extensions/nextcloud-talk/index.js +221 -0
  320. package/dist/extensions/nextcloud-talk/setup-entry.js +223 -0
  321. package/dist/extensions/nvidia/index.js +29 -0
  322. package/dist/extensions/ollama/index.js +118 -0
  323. package/dist/extensions/open-prose/index.js +10 -0
  324. package/dist/extensions/openai/index.js +677 -0
  325. package/dist/extensions/opencode/index.js +116 -0
  326. package/dist/extensions/opencode-go/index.js +114 -0
  327. package/dist/extensions/openrouter/index.js +398 -0
  328. package/dist/extensions/openshell/index.js +923 -0
  329. package/dist/extensions/perplexity/index.js +23 -0
  330. package/dist/extensions/phone-control/index.js +276 -0
  331. package/dist/extensions/qianfan/index.js +114 -0
  332. package/dist/extensions/qwen-portal-auth/index.js +350 -0
  333. package/dist/extensions/sglang/index.js +285 -0
  334. package/dist/extensions/signal/index.js +218 -0
  335. package/dist/extensions/signal/setup-entry.js +218 -0
  336. package/dist/extensions/slack/index.js +222 -0
  337. package/dist/extensions/slack/setup-entry.js +220 -0
  338. package/dist/extensions/synology-chat/index.js +56 -0
  339. package/dist/extensions/synology-chat/setup-entry.js +58 -0
  340. package/dist/extensions/synthetic/index.js +112 -0
  341. package/dist/extensions/talk-voice/index.js +197 -0
  342. package/dist/extensions/tavily/index.js +211 -0
  343. package/dist/extensions/telegram/index.js +221 -0
  344. package/dist/extensions/telegram/setup-entry.js +221 -0
  345. package/dist/extensions/thread-ownership/index.js +70 -0
  346. package/dist/extensions/together/index.js +113 -0
  347. package/dist/extensions/venice/index.js +132 -0
  348. package/dist/extensions/vercel-ai-gateway/index.js +86 -0
  349. package/dist/extensions/vllm/index.js +285 -0
  350. package/dist/extensions/voice-call/index.js +5715 -0
  351. package/dist/extensions/volcengine/index.js +112 -0
  352. package/dist/extensions/xai/index.js +211 -0
  353. package/dist/extensions/xiaomi/index.js +115 -0
  354. package/dist/extensions/zai/index.js +559 -0
  355. package/dist/extensions/zalo/index.js +225 -0
  356. package/dist/extensions/zalo/setup-entry.js +226 -0
  357. package/dist/external-content-BUdUOqkv.js +238 -0
  358. package/dist/feishu-CgbwAF0e.js +2664 -0
  359. package/dist/feishu-Dh5fEbh5.js +59127 -0
  360. package/dist/fetch-guard-DIyN1HW5.js +165 -0
  361. package/dist/fetch-timeout-C5xpMuGd.js +36 -0
  362. package/dist/file-identity-Cw0fQxYY.js +11 -0
  363. package/dist/file-lock-WbEmczmY.js +107 -0
  364. package/dist/filter-oMGaNOM1.js +20 -0
  365. package/dist/format-DH8ysi7s.js +19 -0
  366. package/dist/format-datetime-BGS6tLDE.js +73 -0
  367. package/dist/format-duration-CO0BGWB0.js +57 -0
  368. package/dist/format-relative-C3nDxnXz.js +54 -0
  369. package/dist/frontmatter-S5vS-I4a.js +309 -0
  370. package/dist/fs-safe-D3qzH-ab.js +731 -0
  371. package/dist/gateway-cli-PQNp7o0j.js +28378 -0
  372. package/dist/gateway-install-token-DV5KjD4F.js +164 -0
  373. package/dist/gateway-rpc-C0Ey-rik.js +26 -0
  374. package/dist/gateway-runtime-ih2e7a2K.js +42 -0
  375. package/dist/gaxios-fetch-compat-KX6bsqFm.js +165 -0
  376. package/dist/gemini-auth-B5ljg7jr.js +29 -0
  377. package/dist/git-commit-BIdLubm5.js +2 -0
  378. package/dist/git-commit-OvUvjri2.js +177 -0
  379. package/dist/github-copilot-auth-Ccm-cBwy.js +104 -0
  380. package/dist/global-singleton-4KwY5RvX.js +13 -0
  381. package/dist/globals-41sdSaKv.js +38 -0
  382. package/dist/gmail-setup-utils-BX68dZla.js +419 -0
  383. package/dist/group-access-DJZrYPx1.js +113 -0
  384. package/dist/group-keys-BD_IYSMs.js +44 -0
  385. package/dist/group-policy-CWFxv3iB.js +201 -0
  386. package/dist/group-policy-warnings-Ddu6lBkh.js +175 -0
  387. package/dist/health-Bu1sbyYy.js +573 -0
  388. package/dist/health-Cbxc9Bn3.js +59 -0
  389. package/dist/health-format-B5XfOTuJ.js +26 -0
  390. package/dist/heartbeat-7aHh0m3d.js +169 -0
  391. package/dist/heartbeat-summary-Das49TYq.js +57 -0
  392. package/dist/help-CcbF7-ha.js +81 -0
  393. package/dist/help-format-Dv45FpYu.js +15 -0
  394. package/dist/helpers-DJ-5HEbE.js +24 -0
  395. package/dist/helpers-MxyaLZUk.js +32 -0
  396. package/dist/history-CHjo8B5W.js +102 -0
  397. package/dist/hook-runtime-BnNBi_q4.js +1 -0
  398. package/dist/hooks-cli-DUYK4RM1.js +1102 -0
  399. package/dist/hooks-policy-BL6HDLUn.js +20 -0
  400. package/dist/hooks-status-gzNmo3li.js +78 -0
  401. package/dist/host-env-security-BogNN146.js +223 -0
  402. package/dist/http-body-CCiSfloA.js +237 -0
  403. package/dist/http-registry-WFFbLYRd.js +153 -0
  404. package/dist/identity-DovQV4zD.js +112 -0
  405. package/dist/identity-cyBYcoXS.js +84 -0
  406. package/dist/identity-file-EndG1nfc.js +60 -0
  407. package/dist/image-generation-CNKc-mFK.js +441 -0
  408. package/dist/image-kJ7Tbov4.js +211 -0
  409. package/dist/image-ops-j01UkxEv.js +371 -0
  410. package/dist/imessage-B5pSMT47.js +219 -0
  411. package/dist/imessage-CoIuY1Ro.js +1451 -0
  412. package/dist/imessage-Cqjsq4VW.js +190 -0
  413. package/dist/imessage-core-CsYJuaRZ.js +1 -0
  414. package/dist/inbound-envelope-4P3IIJc3.js +61 -0
  415. package/dist/inbound-reply-dispatch-i2Vekqyy.js +72 -0
  416. package/dist/includes-7XyL3p1c.js +188 -0
  417. package/dist/includes-scan-y-rS6tTw.js +55 -0
  418. package/dist/index.js +57 -0
  419. package/dist/infra/warning-filter.js +2 -0
  420. package/dist/inspect-CcxlJ1ba.js +279 -0
  421. package/dist/install-safe-path-Rwbw1XCZ.js +62 -0
  422. package/dist/installs-iHi2aSjM.js +532 -0
  423. package/dist/interactive-F7iY0yED.js +8 -0
  424. package/dist/interactive-runtime-OweOj_Vv.js +90 -0
  425. package/dist/internal-hooks-0uipqzRY.js +156 -0
  426. package/dist/io-BX49DsSJ.js +35 -0
  427. package/dist/io-jOnQRia2.js +7178 -0
  428. package/dist/ip-C8vmzVu0.js +203 -0
  429. package/dist/ipv4-DAmsJVOV.js +82 -0
  430. package/dist/irc-AZ-Ec8be.js +12 -0
  431. package/dist/irc-CCSRuEC2.js +660 -0
  432. package/dist/is-main-YViS6wOn.js +27 -0
  433. package/dist/issue-format-CBEXVico.js +31 -0
  434. package/dist/issue-format-D3HehoKZ.js +4 -0
  435. package/dist/json-file-C2zjA0Gv.js +23 -0
  436. package/dist/json-files-WW-H_psG.js +60 -0
  437. package/dist/json-pointer-f9dEnBoR.js +43 -0
  438. package/dist/json-store-O1LwpnBH.js +37 -0
  439. package/dist/kb-cli-DMZs6PCu.js +65 -0
  440. package/dist/keyed-async-queue-CPUWV5Pm.js +32 -0
  441. package/dist/kill-tree-CbjXBw3z.js +149 -0
  442. package/dist/kilocode-shared-DS7_0IMs.js +29 -0
  443. package/dist/launchd-tyqGVx9U.js +491 -0
  444. package/dist/lazy-runtime-BcXbyAaC.js +1 -0
  445. package/dist/lazy-runtime-bWkd2cs3.js +29 -0
  446. package/dist/legacy-names-CUNZ4vHN.js +7 -0
  447. package/dist/legacy-web-search-BgZjNG2h.js +222 -0
  448. package/dist/lib-CERS7N4b.js +503 -0
  449. package/dist/lib-PPICrHv1.js +1938 -0
  450. package/dist/library-CZ461krl.js +211 -0
  451. package/dist/lifecycle-core-Dnxnw0oy.js +382 -0
  452. package/dist/line/accounts.js +10 -0
  453. package/dist/line/send.js +39 -0
  454. package/dist/line/template-messages.js +2 -0
  455. package/dist/line-CJSvwApm.js +1 -0
  456. package/dist/line-N9vL-2JB.js +688 -0
  457. package/dist/line-core-BOIxkjgu.js +1 -0
  458. package/dist/links-Bilm-v0z.js +13 -0
  459. package/dist/llm-slug-generator-BuAuQ5Ft.js +68 -0
  460. package/dist/llm-slug-generator.js +212 -0
  461. package/dist/llm-task-Dx8ymRFr.js +1 -0
  462. package/dist/local-roots-DAzCjWbC.js +34 -0
  463. package/dist/location-DefAH9WS.js +42 -0
  464. package/dist/logger-CoEtkjhn.js +550 -0
  465. package/dist/logger-Cqy7-Maj.js +70 -0
  466. package/dist/logging-B2wMcpWV.js +13 -0
  467. package/dist/logging-Bz1qZDPg.js +16 -0
  468. package/dist/logging-CArEWRgI.js +36 -0
  469. package/dist/logging-CbTTfADU.js +1 -0
  470. package/dist/logs-cli-BSjKwaur.js +261 -0
  471. package/dist/magic-string.es-DJPWMt-n.js +1011 -0
  472. package/dist/main-session-DKr0lBVk.js +36 -0
  473. package/dist/manager-ChTGDe87.js +2005 -0
  474. package/dist/manager-DuwFn87U.js +4226 -0
  475. package/dist/manager-runtime-E16jsvRe.js +59 -0
  476. package/dist/manager.runtime-F9F1eFiB.js +827 -0
  477. package/dist/manifest-registry-B90TyTWl.js +1350 -0
  478. package/dist/map-size-CMTQVKUV.js +15 -0
  479. package/dist/markdown-to-line-BWwaRx5F.js +640 -0
  480. package/dist/mask-api-key-CprzEe7l.js +10 -0
  481. package/dist/matrix-DzvdUw97.js +228 -0
  482. package/dist/matrix-migration-snapshot-adoDbNii.js +702 -0
  483. package/dist/mattermost-DO0BCfF3.js +1 -0
  484. package/dist/mattermost-SjOt4QDb.js +15 -0
  485. package/dist/mcp-cli-BC_VPl_o.js +94 -0
  486. package/dist/mcp-config-Coky4zS4.js +108 -0
  487. package/dist/media-limits-Cuvmmhop.js +14 -0
  488. package/dist/media-understanding-DD2uMjK8.js +48 -0
  489. package/dist/media-understanding.runtime-Kbb2bRmk.js +216 -0
  490. package/dist/memory-DBjQ0TPd.js +1 -0
  491. package/dist/memory-cli-Cm4Df0hJ.js +215 -0
  492. package/dist/memory-cli-yzqneSF8.js +541 -0
  493. package/dist/memory-search-Das1tiuB.js +204 -0
  494. package/dist/memory-search-DxmSTjHq.js +18 -0
  495. package/dist/mention-gating-B_q-EHFx.js +25 -0
  496. package/dist/mentions-Bxys_va0.js +154 -0
  497. package/dist/message-channel-Cy-gN4K2.js +106 -0
  498. package/dist/message-hook-mappers-BBTV3JRQ.js +249 -0
  499. package/dist/method-scopes-DgypDW23.js +2649 -0
  500. package/dist/mime-C4vVTBso.js +150 -0
  501. package/dist/minimal-C5yUxtHy.js +2120 -0
  502. package/dist/model-auth-B__TJTPw.js +309 -0
  503. package/dist/model-auth-env-CF9ts7Th.js +111 -0
  504. package/dist/model-catalog.runtime-CWh17vcc.js +211 -0
  505. package/dist/model-id-normalization-Y-MIsyK_.js +16 -0
  506. package/dist/model-input-BB2wSAHb.js +20 -0
  507. package/dist/model-overrides-sIzKU2wo.js +84 -0
  508. package/dist/model-param-b-DIFEhICm.js +15 -0
  509. package/dist/model-picker-CAPjetT3.js +400 -0
  510. package/dist/model-picker-DEw9viWc.js +215 -0
  511. package/dist/model-picker.runtime-ixYl7lB5.js +224 -0
  512. package/dist/model-selection-BTpJnslv.js +437 -0
  513. package/dist/model-selection-Ci9cPkL2.js +765 -0
  514. package/dist/model-suppression.runtime-D8cIb6Y5.js +216 -0
  515. package/dist/models-BQtc3khN.js +226 -0
  516. package/dist/models-CQgBV5dW.js +2536 -0
  517. package/dist/models-cli-DbQ-QpQk.js +418 -0
  518. package/dist/models-config-D2xK-G6c.js +211 -0
  519. package/dist/models-config.providers.discovery-BaIk1NKL.js +141 -0
  520. package/dist/models-config.runtime-Cf7q9uAQ.js +211 -0
  521. package/dist/monitor-B5QmKaD7.js +3272 -0
  522. package/dist/monitor-CL5OYLih.js +878 -0
  523. package/dist/monitor-CNZxrM4d.js +3145 -0
  524. package/dist/monitor-CyQVZdDh.js +223 -0
  525. package/dist/multimodal-DC43jYNv.js +75 -0
  526. package/dist/mutable-allowlist-detectors-C6EAzWYE.js +62 -0
  527. package/dist/net-DlJFp95v.js +270 -0
  528. package/dist/network-mode-DOgvmom4.js +17 -0
  529. package/dist/nextcloud-talk-ChMP88s-.js +12 -0
  530. package/dist/nextcloud-talk-CwnkUy8E.js +1 -0
  531. package/dist/node-cli-BZDC7rXg.js +2484 -0
  532. package/dist/node-command-policy-Bg2g6Xjp.js +192 -0
  533. package/dist/node-commands-B6W6Eo0b.js +11 -0
  534. package/dist/node-require-BgDD9bTi.js +14 -0
  535. package/dist/node-resolve-BunMro3f.js +69 -0
  536. package/dist/node-service-CEZZaqba.js +65 -0
  537. package/dist/node-startup-env-Gz8ZQniA.js +50 -0
  538. package/dist/nodes-cli-B4Jr9vct.js +1330 -0
  539. package/dist/nodes-screen-CQ7IvP62.js +401 -0
  540. package/dist/normalize-secret-input-_PgpexOG.js +32 -0
  541. package/dist/note-dfjacCV8.js +109 -0
  542. package/dist/npm-pack-install-CYNRv-vM.js +574 -0
  543. package/dist/npm-resolution-Ml2aA6Nu.js +60 -0
  544. package/dist/oauth.runtime-DA_48MPQ.js +687 -0
  545. package/dist/oauth.runtime-DS1ry5__.js +318 -0
  546. package/dist/oauth.runtime-qCkidk8J.js +180 -0
  547. package/dist/ollama-defaults-asNuGW4_.js +4 -0
  548. package/dist/onboard-BM6gO6Uw.js +589 -0
  549. package/dist/onboard-D9IU-7uw.js +48 -0
  550. package/dist/onboard-DQaHGPRm.js +25 -0
  551. package/dist/onboard-channels-BdQtLjYb.js +300 -0
  552. package/dist/onboard-channels-DIVUygs5.js +1257 -0
  553. package/dist/onboard-config-DFKb-0sE.js +29 -0
  554. package/dist/onboard-config-DYykzJhx.js +2 -0
  555. package/dist/onboard-custom-CDP4w1AT.js +216 -0
  556. package/dist/onboard-custom-DhJN13UV.js +644 -0
  557. package/dist/onboard-helpers-B7XTd4Pw.js +335 -0
  558. package/dist/onboard-helpers-BUKtx5Bq.js +54 -0
  559. package/dist/onboard-hooks-BHSSLAhI.js +73 -0
  560. package/dist/onboard-remote-BOzEPdHA.js +59 -0
  561. package/dist/onboard-remote-DVza19_k.js +182 -0
  562. package/dist/onboard-search-CrS-n9_3.js +446 -0
  563. package/dist/onboard-skills-BojzIPvk.js +133 -0
  564. package/dist/onboard-skills-D7HyCVjz.js +69 -0
  565. package/dist/openai-codex-provider.runtime-BFsopDHI.js +2 -0
  566. package/dist/openai-defaults-B7FUywsh.js +10 -0
  567. package/dist/openclaw-exec-env-AcZ9we1N.js +14 -0
  568. package/dist/openclaw-root-TUHYdr9B.js +88 -0
  569. package/dist/openclaw-tools.runtime-draZJo5r.js +211 -0
  570. package/dist/outbound-media-69yrWRDt.js +11 -0
  571. package/dist/outbound-runtime-ic_7ulJJ.js +1 -0
  572. package/dist/pairing-challenge-CNrPmmi9.js +48 -0
  573. package/dist/pairing-cli-BohXW2BK.js +150 -0
  574. package/dist/pairing-labels-CNKCSmBK.js +7 -0
  575. package/dist/pairing-message-CBv2njJT.js +4 -0
  576. package/dist/pairing-store-C4lsd4pO.js +590 -0
  577. package/dist/pairing-token-gKj4SNFJ.js +55 -0
  578. package/dist/parse-duration-BBGYkY0S.js +41 -0
  579. package/dist/parse-finite-number-CP4MQF_w.js +30 -0
  580. package/dist/parse-log-line-CVh9zu3Q.js +43 -0
  581. package/dist/parse-port-COyt3COn.js +8 -0
  582. package/dist/path-alias-guards-ZTKqurNH.js +40 -0
  583. package/dist/path-env-CPkz6U0Y.js +87 -0
  584. package/dist/paths-CTjJI9l0.js +179 -0
  585. package/dist/paths-GHJ97ebE.js +268 -0
  586. package/dist/paths-nCHyK08H.js +56 -0
  587. package/dist/perplexity-Beshd9zu.js +422 -0
  588. package/dist/persistent-dedupe-bjKjVI5u.js +116 -0
  589. package/dist/pi-embedded-CSQySvOV.js +168518 -0
  590. package/dist/pi-model-discovery-CuX5CDyZ.js +125 -0
  591. package/dist/pi-model-discovery-runtime-DNsMrX1n.js +44 -0
  592. package/dist/pi-tools.before-tool-call.runtime-DxVqzMVf.js +387 -0
  593. package/dist/platform-launcher-CqGy6UhP.js +83 -0
  594. package/dist/plugin-entry-CwuwM1jC.js +17 -0
  595. package/dist/plugin-install-JJwfOXtg.js +216 -0
  596. package/dist/plugin-install-plan-cixz1_W4.js +49 -0
  597. package/dist/plugin-install-vkpI1UNd.js +184 -0
  598. package/dist/plugin-registry-C3j_DUnj.js +51 -0
  599. package/dist/plugin-registry-DB_yxabS.js +213 -0
  600. package/dist/plugin-sdk/account-helpers.js +3 -0
  601. package/dist/plugin-sdk/account-id.js +2 -0
  602. package/dist/plugin-sdk/account-resolution.js +216 -0
  603. package/dist/plugin-sdk/acp-runtime.js +46 -0
  604. package/dist/plugin-sdk/agent-runtime.js +215 -0
  605. package/dist/plugin-sdk/allow-from.js +17 -0
  606. package/dist/plugin-sdk/allowlist-config-edit.js +2 -0
  607. package/dist/plugin-sdk/bluebubbles.js +232 -0
  608. package/dist/plugin-sdk/boolean-param.js +2 -0
  609. package/dist/plugin-sdk/channel-actions.js +16 -0
  610. package/dist/plugin-sdk/channel-config-helpers.js +15 -0
  611. package/dist/plugin-sdk/channel-config-schema.js +5 -0
  612. package/dist/plugin-sdk/channel-contract.js +1 -0
  613. package/dist/plugin-sdk/channel-feedback.js +4 -0
  614. package/dist/plugin-sdk/channel-inbound.js +53 -0
  615. package/dist/plugin-sdk/channel-lifecycle.js +2 -0
  616. package/dist/plugin-sdk/channel-pairing.js +2 -0
  617. package/dist/plugin-sdk/channel-policy.js +19 -0
  618. package/dist/plugin-sdk/channel-reply-pipeline.js +23 -0
  619. package/dist/plugin-sdk/channel-runtime.js +33 -0
  620. package/dist/plugin-sdk/channel-send-result.js +2 -0
  621. package/dist/plugin-sdk/channel-setup.js +24 -0
  622. package/dist/plugin-sdk/channel-targets.js +3 -0
  623. package/dist/plugin-sdk/cli-runtime.js +5 -0
  624. package/dist/plugin-sdk/command-auth.js +212 -0
  625. package/dist/plugin-sdk/compat.js +59 -0
  626. package/dist/plugin-sdk/config-runtime.js +51 -0
  627. package/dist/plugin-sdk/conversation-runtime.js +55 -0
  628. package/dist/plugin-sdk/core.js +40 -0
  629. package/dist/plugin-sdk/device-bootstrap.js +6 -0
  630. package/dist/plugin-sdk/diagnostics-otel.js +7 -0
  631. package/dist/plugin-sdk/diffs.js +3 -0
  632. package/dist/plugin-sdk/directory-runtime.js +5 -0
  633. package/dist/plugin-sdk/discord-core.js +26 -0
  634. package/dist/plugin-sdk/discord.js +219 -0
  635. package/dist/plugin-sdk/extension-shared.js +15 -0
  636. package/dist/plugin-sdk/feishu.js +101 -0
  637. package/dist/plugin-sdk/gateway-runtime.js +46 -0
  638. package/dist/plugin-sdk/googlechat.js +93 -0
  639. package/dist/plugin-sdk/group-access.js +2 -0
  640. package/dist/plugin-sdk/hook-runtime.js +12 -0
  641. package/dist/plugin-sdk/image-generation.js +51 -0
  642. package/dist/plugin-sdk/imessage-core.js +214 -0
  643. package/dist/plugin-sdk/imessage.js +223 -0
  644. package/dist/plugin-sdk/index.js +55 -0
  645. package/dist/plugin-sdk/infra-runtime.js +223 -0
  646. package/dist/plugin-sdk/interactive-runtime.js +3 -0
  647. package/dist/plugin-sdk/irc.js +232 -0
  648. package/dist/plugin-sdk/json-store.js +9 -0
  649. package/dist/plugin-sdk/keyed-async-queue.js +2 -0
  650. package/dist/plugin-sdk/lazy-runtime.js +2 -0
  651. package/dist/plugin-sdk/line-core.js +29 -0
  652. package/dist/plugin-sdk/line.js +22 -0
  653. package/dist/plugin-sdk/llm-task.js +7 -0
  654. package/dist/plugin-sdk/matrix-runtime-heavy.js +223 -0
  655. package/dist/plugin-sdk/matrix-runtime-shared.js +2 -0
  656. package/dist/plugin-sdk/matrix.js +84 -0
  657. package/dist/plugin-sdk/mattermost.js +233 -0
  658. package/dist/plugin-sdk/media-runtime.js +212 -0
  659. package/dist/plugin-sdk/media-understanding-runtime.js +211 -0
  660. package/dist/plugin-sdk/media-understanding.js +15 -0
  661. package/dist/plugin-sdk/memory-core.js +2 -0
  662. package/dist/plugin-sdk/memory-lancedb.js +2 -0
  663. package/dist/plugin-sdk/msteams.js +244 -0
  664. package/dist/plugin-sdk/nextcloud-talk.js +231 -0
  665. package/dist/plugin-sdk/nostr.js +50 -0
  666. package/dist/plugin-sdk/ollama-setup.js +33 -0
  667. package/dist/plugin-sdk/outbound-runtime.js +23 -0
  668. package/dist/plugin-sdk/plugin-entry.js +3 -0
  669. package/dist/plugin-sdk/plugin-runtime.js +211 -0
  670. package/dist/plugin-sdk/process-runtime.js +12 -0
  671. package/dist/plugin-sdk/provider-auth-api-key.js +53 -0
  672. package/dist/plugin-sdk/provider-auth-login.js +2 -0
  673. package/dist/plugin-sdk/provider-auth.js +37 -0
  674. package/dist/plugin-sdk/provider-catalog.js +2 -0
  675. package/dist/plugin-sdk/provider-env-vars.js +2 -0
  676. package/dist/plugin-sdk/provider-google.js +3 -0
  677. package/dist/plugin-sdk/provider-models.js +27 -0
  678. package/dist/plugin-sdk/provider-onboard.js +20 -0
  679. package/dist/plugin-sdk/provider-setup.js +58 -0
  680. package/dist/plugin-sdk/provider-stream.js +211 -0
  681. package/dist/plugin-sdk/provider-usage.js +18 -0
  682. package/dist/plugin-sdk/provider-web-search.js +23 -0
  683. package/dist/plugin-sdk/provider-zai-endpoint.js +3 -0
  684. package/dist/plugin-sdk/reply-history.js +23 -0
  685. package/dist/plugin-sdk/reply-payload.js +2 -0
  686. package/dist/plugin-sdk/reply-runtime.js +211 -0
  687. package/dist/plugin-sdk/request-url.js +2 -0
  688. package/dist/plugin-sdk/routing.js +25 -0
  689. package/dist/plugin-sdk/runtime-env.js +15 -0
  690. package/dist/plugin-sdk/runtime-store.js +2 -0
  691. package/dist/plugin-sdk/runtime.js +15 -0
  692. package/dist/plugin-sdk/sandbox.js +66 -0
  693. package/dist/plugin-sdk/secret-input.js +3 -0
  694. package/dist/plugin-sdk/security-runtime.js +18 -0
  695. package/dist/plugin-sdk/self-hosted-provider-setup.js +33 -0
  696. package/dist/plugin-sdk/setup-adapter-runtime.js +2 -0
  697. package/dist/plugin-sdk/setup-runtime.js +17 -0
  698. package/dist/plugin-sdk/setup-tools.js +21 -0
  699. package/dist/plugin-sdk/setup.js +26 -0
  700. package/dist/plugin-sdk/signal.js +220 -0
  701. package/dist/plugin-sdk/slack-core.js +22 -0
  702. package/dist/plugin-sdk/slack.js +223 -0
  703. package/dist/plugin-sdk/speech-runtime.js +213 -0
  704. package/dist/plugin-sdk/speech.js +212 -0
  705. package/dist/plugin-sdk/ssrf-runtime.js +5 -0
  706. package/dist/plugin-sdk/state-paths.js +3 -0
  707. package/dist/plugin-sdk/status-helpers.js +9 -0
  708. package/dist/plugin-sdk/telegram-core.js +23 -0
  709. package/dist/plugin-sdk/telegram.js +224 -0
  710. package/dist/plugin-sdk/testing.js +13174 -0
  711. package/dist/plugin-sdk/text-runtime.js +45 -0
  712. package/dist/plugin-sdk/thread-bindings-runtime.js +2 -0
  713. package/dist/plugin-sdk/thread-ownership.js +2 -0
  714. package/dist/plugin-sdk/tlon.js +57 -0
  715. package/dist/plugin-sdk/tool-send.js +2 -0
  716. package/dist/plugin-sdk/twitch.js +46 -0
  717. package/dist/plugin-sdk/voice-call.js +213 -0
  718. package/dist/plugin-sdk/web-media.js +28 -0
  719. package/dist/plugin-sdk/webhook-ingress.js +7 -0
  720. package/dist/plugin-sdk/webhook-path.js +2 -0
  721. package/dist/plugin-sdk/whatsapp-core.js +219 -0
  722. package/dist/plugin-sdk/whatsapp-shared.js +18 -0
  723. package/dist/plugin-sdk/windows-spawn.js +2 -0
  724. package/dist/plugin-sdk/zalo.js +239 -0
  725. package/dist/plugin-sdk/zalouser.js +240 -0
  726. package/dist/plugins/build-smoke-entry.js +211 -0
  727. package/dist/plugins/runtime/index.js +229 -0
  728. package/dist/plugins-1Z50ecJ6.js +1 -0
  729. package/dist/plugins-C6fKmNuA.js +7 -0
  730. package/dist/plugins-cli-BkgQkGaU.js +1192 -0
  731. package/dist/policy-CpkbSAfm.js +60 -0
  732. package/dist/polls-B2VH7SN9.js +35 -0
  733. package/dist/ports-BjWuIIQw.js +262 -0
  734. package/dist/ports-DFiK_Jc-.js +385 -0
  735. package/dist/ports-lsof-DtJqhFOr.js +25 -0
  736. package/dist/ports-probe-BQqp8l8E.js +14 -0
  737. package/dist/preflight-audio.runtime-Fi9mofpp.js +216 -0
  738. package/dist/probe-BM9sbCgS.js +20 -0
  739. package/dist/probe-DLBOZftS.js +134 -0
  740. package/dist/probe-auth-Bjp3G4CI.js +48 -0
  741. package/dist/probe-auth-DMSPTRRk.js +45 -0
  742. package/dist/process-runtime-C7el-Ri4.js +1 -0
  743. package/dist/process-scoped-map-C4gOa-gv.js +61 -0
  744. package/dist/profile-utils-BcMYGFPT.js +15 -0
  745. package/dist/profiles-D17eMKQZ.js +683 -0
  746. package/dist/program-Ch-76sgl.js +155 -0
  747. package/dist/program-context-BMWNUfqL.js +10 -0
  748. package/dist/program-context-CD_RvRYh.js +2 -0
  749. package/dist/progress-D1r9bZU1.js +132 -0
  750. package/dist/prompt-select-styled-NUKYS9QR.js +4879 -0
  751. package/dist/prompt-style-BvciNCqy.js +7 -0
  752. package/dist/prompts-NtuylUyl.js +9 -0
  753. package/dist/prototype-keys-Cm_8mWvq.js +11 -0
  754. package/dist/provider-api-key-auth-BE0taXiB.js +108 -0
  755. package/dist/provider-api-key-auth.runtime-jDZZUAMX.js +34 -0
  756. package/dist/provider-auth-Bw8x1a3o.js +58 -0
  757. package/dist/provider-auth-api-key-BrQYvdxi.js +1 -0
  758. package/dist/provider-auth-choice-BYbPq0eC.js +128 -0
  759. package/dist/provider-auth-choice-helpers-Bj1GkOSn.js +48 -0
  760. package/dist/provider-auth-choice-preference-tKq5gaJL.js +192 -0
  761. package/dist/provider-auth-choice.runtime-DegPpvRJ.js +223 -0
  762. package/dist/provider-auth-choices-QSilukI1.js +58 -0
  763. package/dist/provider-auth-guidance-gninjjq8.js +34 -0
  764. package/dist/provider-auth-helpers-B0dS-1WK.js +86 -0
  765. package/dist/provider-auth-input-BftBdgvW.js +112 -0
  766. package/dist/provider-auth-login-D0n0lMuc.js +8 -0
  767. package/dist/provider-auth-login.runtime-LvuBkQrc.js +243 -0
  768. package/dist/provider-auth-mode-sTdccIKL.js +20 -0
  769. package/dist/provider-auth-ref-BS3gwrNr.js +168 -0
  770. package/dist/provider-auth-ref-BmEcEN7K.js +3 -0
  771. package/dist/provider-catalog--18-pW5t.js +11 -0
  772. package/dist/provider-catalog-2P2hel74.js +48 -0
  773. package/dist/provider-catalog-B0FqWSwe.js +48 -0
  774. package/dist/provider-catalog-BvORKzzD.js +91 -0
  775. package/dist/provider-catalog-C34j1_or.js +26 -0
  776. package/dist/provider-catalog-C5vmXjmb.js +11 -0
  777. package/dist/provider-catalog-CBufm2Dr.js +36 -0
  778. package/dist/provider-catalog-D7QvsUXS.js +12 -0
  779. package/dist/provider-catalog-DKy_dzQZ.js +41 -0
  780. package/dist/provider-env-vars-CsQlY7bF.js +110 -0
  781. package/dist/provider-id-BpXo5t6v.js +31 -0
  782. package/dist/provider-model-allowlist-4HSOnlX-.js +24 -0
  783. package/dist/provider-model-primary-NJ-xlhec.js +53 -0
  784. package/dist/provider-models-C2EjYMwW.js +2416 -0
  785. package/dist/provider-oauth-flow-BQN6F6EC.js +33 -0
  786. package/dist/provider-ollama-setup-DhQvDwAj.js +309 -0
  787. package/dist/provider-onboard-CjOfyeQG.js +1 -0
  788. package/dist/provider-onboarding-config-DOZ3pFA6.js +165 -0
  789. package/dist/provider-openai-codex-oauth-tls-Bo8U4D3E.js +101 -0
  790. package/dist/provider-runtime.runtime-DnP2jpoM.js +211 -0
  791. package/dist/provider-self-hosted-setup-CUrmsugW.js +182 -0
  792. package/dist/provider-usage-ClDVmkhl.js +633 -0
  793. package/dist/provider-usage-DIC6cn-3.js +211 -0
  794. package/dist/provider-web-search-NzK8ep1E.js +507 -0
  795. package/dist/provider-wizard-C6jCuyQe.js +236 -0
  796. package/dist/provider-zai-endpoint-DeDABzT4.js +106 -0
  797. package/dist/proxy-H5O2p6AP.js +121 -0
  798. package/dist/proxy-env-DG2u55RW.js +40 -0
  799. package/dist/push-apns-D4zD2tmP.js +1050 -0
  800. package/dist/pw-ai-BuPUVeUK.js +1876 -0
  801. package/dist/qmd-manager-BpygGMW9.js +1571 -0
  802. package/dist/qr-cli-DnWHXcxh.js +370 -0
  803. package/dist/qr-cli-yaZ0FZ6z.js +213 -0
  804. package/dist/query-expansion-Do45hILP.js +1114 -0
  805. package/dist/reactions-BcC_XZqD.js +281 -0
  806. package/dist/read-only-account-inspect-DPJzadPo.js +42 -0
  807. package/dist/read-only-account-inspect.discord.runtime-CW9DDKH8.js +216 -0
  808. package/dist/read-only-account-inspect.slack.runtime-BcXBPyh3.js +216 -0
  809. package/dist/read-only-account-inspect.telegram.runtime-Y7h0Jbdj.js +216 -0
  810. package/dist/redact-BDinS1q9.js +102 -0
  811. package/dist/redact-identifier-FUiWQxv5.js +13 -0
  812. package/dist/redact-snapshot-DBPmeYy2.js +2654 -0
  813. package/dist/ref-contract-CCBBbf1r.js +53 -0
  814. package/dist/register-CppP7Ddc.js +43 -0
  815. package/dist/register.agent-BOD5ROGQ.js +546 -0
  816. package/dist/register.backup-Y2VGqcRu.js +269 -0
  817. package/dist/register.configure-1qiTINph.js +354 -0
  818. package/dist/register.maintenance-shn-zigv.js +694 -0
  819. package/dist/register.message-mR4CLSoo.js +812 -0
  820. package/dist/register.onboard-CkDryVid.js +298 -0
  821. package/dist/register.setup-B0xW5olD.js +318 -0
  822. package/dist/register.status-health-sessions-CuhWc03j.js +604 -0
  823. package/dist/register.subclis-BazXM5TW.js +315 -0
  824. package/dist/register.subclis-C2d8UDhH.js +13 -0
  825. package/dist/registry-C3q59Qj0.js +55 -0
  826. package/dist/registry-CPsHw6xU.js +219 -0
  827. package/dist/registry-CxgtJ09C.js +28 -0
  828. package/dist/registry-rgYi7KoO.js +160 -0
  829. package/dist/repair-qXnOAvDy.js +105 -0
  830. package/dist/replies-EiwmmZ_W.js +122 -0
  831. package/dist/reply-history-CVCD5oE9.js +1 -0
  832. package/dist/reply-payload-DBGc074f.js +232 -0
  833. package/dist/report-cli-DB1jQx32.js +42 -0
  834. package/dist/request-url-BKfWAQx8.js +10 -0
  835. package/dist/resolve-Ckjd8TAk.js +14 -0
  836. package/dist/resolve-T2q_0ARF.js +619 -0
  837. package/dist/resolve-route-vEY3ONZ2.js +466 -0
  838. package/dist/resolve-utils-CbqJY2bs.js +102 -0
  839. package/dist/response-generator-VdoCcQ3y.js +153 -0
  840. package/dist/restart-stale-pids-CLGiqU2E.js +187 -0
  841. package/dist/retry-D15TD1S3.js +168 -0
  842. package/dist/root-help-B9Aou4ho.js +32 -0
  843. package/dist/routes-TpLEcKO8.js +7084 -0
  844. package/dist/routing-Y3m0o-kB.js +26 -0
  845. package/dist/rpc-C6MN-nVc.js +67 -0
  846. package/dist/run-command-DRKv5Lj6.js +32 -0
  847. package/dist/run-main-YZSMdx0B.js +424 -0
  848. package/dist/run-with-concurrency-BrSjWzpg.js +41 -0
  849. package/dist/runtime-B66W9flm.js +43 -0
  850. package/dist/runtime-C9VaVKYZ.js +2338 -0
  851. package/dist/runtime-CT2LIJZu.js +91 -0
  852. package/dist/runtime-CqDQ81eY.js +143 -0
  853. package/dist/runtime-CuvWMN7E.js +89 -0
  854. package/dist/runtime-D4_OpzA1.js +5 -0
  855. package/dist/runtime-DP-4DZja.js +5 -0
  856. package/dist/runtime-Dl17x_cV.js +1 -0
  857. package/dist/runtime-Z35JoYPC.js +30 -0
  858. package/dist/runtime-api-D79M0lQN.js +1 -0
  859. package/dist/runtime-api-y3zfnQGK.js +39 -0
  860. package/dist/runtime-discord-ops.runtime-Bg5h5v9-.js +234 -0
  861. package/dist/runtime-env-a_iwdJIv.js +1 -0
  862. package/dist/runtime-forwarders-DtMc8rBP.js +44 -0
  863. package/dist/runtime-group-policy-B7irU4eu.js +59 -0
  864. package/dist/runtime-guard-y62lPDGY.js +58 -0
  865. package/dist/runtime-parse-CeqXmZHJ.js +84 -0
  866. package/dist/runtime-paths-CstaCCMi.js +334 -0
  867. package/dist/runtime-slack-ops.runtime-BumgKDhS.js +226 -0
  868. package/dist/runtime-status-CgL02wYX.js +15 -0
  869. package/dist/runtime-store-Bt3Sdbrn.js +22 -0
  870. package/dist/runtime-telegram-ops.runtime-rSLQ3KrE.js +233 -0
  871. package/dist/runtime-whatsapp-boundary-xZem0NyQ.js +364 -0
  872. package/dist/safe-open-sync-Bt9R1Mnf.js +83 -0
  873. package/dist/safe-regex-tLlDZYfM.js +244 -0
  874. package/dist/safe-text-B_CQuica.js +16 -0
  875. package/dist/sandbox-CUUouiKs.js +2795 -0
  876. package/dist/sandbox-cli-BN8y0Get.js +499 -0
  877. package/dist/sandbox-paths-fqp_TZdO.js +144 -0
  878. package/dist/sandbox-qSs4h3sk.js +1 -0
  879. package/dist/sanitize-env-vars-vNSNqm0y.js +74 -0
  880. package/dist/scan-paths-BJmvUZ1E.js +28 -0
  881. package/dist/search-manager-DWhFgwyp.js +17 -0
  882. package/dist/search-manager-r8Cw4ZRv.js +392 -0
  883. package/dist/secret-equal-ObQfyZGa.js +9 -0
  884. package/dist/secret-file-Ch0yuOXR.js +11 -0
  885. package/dist/secret-file-DYJtH6kf.js +92 -0
  886. package/dist/secret-input-4REZ4sHo.js +35 -0
  887. package/dist/secrets-cli-D1df8b0o.js +2304 -0
  888. package/dist/secure-random-Cs8tw_HQ.js +10 -0
  889. package/dist/security-cli-V66ESmdT.js +676 -0
  890. package/dist/security-runtime-BuEhpJVE.js +23 -0
  891. package/dist/send-3tabvle6.js +100 -0
  892. package/dist/send-CC5J3tyW.js +1026 -0
  893. package/dist/send-deps-CrFMNvqO.js +19 -0
  894. package/dist/send-i2-mdtiE.js +250 -0
  895. package/dist/server-BTOjmlyi.js +116 -0
  896. package/dist/server-middleware-CCqKhKUb.js +106 -0
  897. package/dist/server-node-events-D6y22Tt8.js +611 -0
  898. package/dist/server-startup-matrix-migration-DHWSoS73.js +1595 -0
  899. package/dist/service-Bxc9uL2e.js +774 -0
  900. package/dist/service-CBLajPZL.js +21 -0
  901. package/dist/session-cost-usage-BmbaBvk4.js +212 -0
  902. package/dist/session-cost-usage-C30Jl2SI.js +615 -0
  903. package/dist/session-fork.runtime-BZfcC1Nc.js +51 -0
  904. package/dist/session-key-gFFk3uv9.js +216 -0
  905. package/dist/session-write-lock-DNKvpjKf.js +324 -0
  906. package/dist/sessions-BIH_j_XS.js +222 -0
  907. package/dist/sessions-D5dWcxC_.js +212 -0
  908. package/dist/sessions-DaSBVNwD.js +669 -0
  909. package/dist/setup-C2XF1YH3.js +397 -0
  910. package/dist/setup-CN-teRpz.js +8 -0
  911. package/dist/setup-adapter-runtime-Bjv2adwG.js +1 -0
  912. package/dist/setup-binary-BOJA7zdN.js +30 -0
  913. package/dist/setup-browser-BhNPCUtK.js +71 -0
  914. package/dist/setup-core-BsG09DZH.js +149 -0
  915. package/dist/setup-core-D-O1GQax.js +162 -0
  916. package/dist/setup-core-Dtm54Rcq.js +510 -0
  917. package/dist/setup-entry-B1mTa7bU.js +10 -0
  918. package/dist/setup-entry-CTMgw-K5.js +13 -0
  919. package/dist/setup-entry-Cmd_cufO.js +13 -0
  920. package/dist/setup-entry-CybgA3zP.js +12 -0
  921. package/dist/setup-entry-DED_hL6i.js +12 -0
  922. package/dist/setup-entry-WCq9VMWx.js +14 -0
  923. package/dist/setup-group-access-BtPApRvE.js +70 -0
  924. package/dist/setup-helpers-B62Ecg9r.js +362 -0
  925. package/dist/setup-surface-B7A7qowY.js +452 -0
  926. package/dist/setup-surface-BBYJVRXc.js +380 -0
  927. package/dist/setup-surface-CFUz_BJi.js +298 -0
  928. package/dist/setup-tools-BPiMjAN7.js +1 -0
  929. package/dist/setup-wizard-helpers-COZ1UAdX.js +770 -0
  930. package/dist/setup-wizard-proxy-Slwi-1gX.js +116 -0
  931. package/dist/setup.finalize-B8O01nge.js +633 -0
  932. package/dist/setup.gateway-config-BPDIFk__.js +288 -0
  933. package/dist/setup.secret-input-BL-bqJpt.js +25 -0
  934. package/dist/shared-AygSbeCK.js +50 -0
  935. package/dist/shared-BHqDLkMG.js +127 -0
  936. package/dist/shared-BPtG8PgB.js +70 -0
  937. package/dist/shared-BU0QgVMZ.js +36 -0
  938. package/dist/shared-Bzr2UyEm.js +351 -0
  939. package/dist/shared-C_XXbGIF.js +87 -0
  940. package/dist/shared-Diw3KzwZ.js +82 -0
  941. package/dist/shared-DngjQumT.js +196 -0
  942. package/dist/shared-DzH3zmAy.js +64 -0
  943. package/dist/shared-LeP8iUTz.js +54 -0
  944. package/dist/shell-argv-DWV43Vya.js +72 -0
  945. package/dist/shell-env-cD92jEyV.js +181 -0
  946. package/dist/signal-BQd9f9dF.js +315 -0
  947. package/dist/signal-Ca7y47bM.js +46 -0
  948. package/dist/signal-Did9U_fa.js +214 -0
  949. package/dist/signal-cli-install-DxoL8CgF.js +188 -0
  950. package/dist/skill-commands-CiSwTFBQ.js +652 -0
  951. package/dist/skill-commands.runtime-CEwlWT4j.js +34 -0
  952. package/dist/skill-scanner-DG7MT7pu.js +354 -0
  953. package/dist/skills-BC8GJ9Rp.js +22 -0
  954. package/dist/skills-CCgKs_NJ.js +863 -0
  955. package/dist/skills-cli-dhYXJCuL.js +339 -0
  956. package/dist/skills-install-DiriUXJd.js +763 -0
  957. package/dist/skills-status-BmQTn4jL.js +23 -0
  958. package/dist/skills-status-a9b899Y3.js +169 -0
  959. package/dist/slack-CXgv7nu7.js +730 -0
  960. package/dist/slack-CcSByPzI.js +217 -0
  961. package/dist/slack-CtcCh0Lj.js +24537 -0
  962. package/dist/slack-core-DcsbATUs.js +1 -0
  963. package/dist/slash-commands.runtime-kO8EUKYW.js +228 -0
  964. package/dist/slash-dispatch.runtime-Bu2yMeFy.js +238 -0
  965. package/dist/slash-skill-commands.runtime-wwX3tF84.js +216 -0
  966. package/dist/speech-bSreRuDH.js +1 -0
  967. package/dist/speech-runtime-y1FcnGVA.js +1 -0
  968. package/dist/src-CmXHIz5f.js +846 -0
  969. package/dist/ssh-config-ChqR6ijV.js +77 -0
  970. package/dist/ssh-tunnel-Cz51VBAt.js +159 -0
  971. package/dist/ssh-tunnel-DWze2IQS.js +16 -0
  972. package/dist/ssrf-Dk9XaoKN.js +220 -0
  973. package/dist/ssrf-policy-Dk6oMa20.js +69 -0
  974. package/dist/ssrf-runtime-C-mAQLVA.js +1 -0
  975. package/dist/stagger-DU7FjHYo.js +54 -0
  976. package/dist/state-paths-DJIGEFq_.js +1 -0
  977. package/dist/status-69r8-Zey.js +75 -0
  978. package/dist/status-BdLTvZOL.js +44 -0
  979. package/dist/status-Bt7DQmRI.js +1665 -0
  980. package/dist/status-CoUFSBgt.js +202 -0
  981. package/dist/status-DbI3Kbh5.js +235 -0
  982. package/dist/status-DeKlzu_o.js +212 -0
  983. package/dist/status-Haie42Fc.js +606 -0
  984. package/dist/status-helpers-Cda-rGLX.js +101 -0
  985. package/dist/status-json-DS1M_MWJ.js +322 -0
  986. package/dist/status.link-channel-Cb8bZ_Od.js +40 -0
  987. package/dist/status.scan.deps.runtime-7_6VUs50.js +77 -0
  988. package/dist/status.scan.runtime-DtR8BIE9.js +14 -0
  989. package/dist/status.summary-l_Bi1buR.js +600 -0
  990. package/dist/status.summary.runtime-Cng6MzRU.js +151 -0
  991. package/dist/status.update-DtbnnPKx.js +79 -0
  992. package/dist/store-CvL8MPei.js +1446 -0
  993. package/dist/store.runtime-hgnvmZgO.js +43 -0
  994. package/dist/string-normalization-CvzuCAZv.js +19 -0
  995. package/dist/string-sample-BOLqzr4Y.js +11 -0
  996. package/dist/subagent-orphan-recovery-si1z2iBu.js +407 -0
  997. package/dist/subagent-registry-runtime-CXUDI8gL.js +211 -0
  998. package/dist/subcli-descriptors-CY_nHzpZ.js +151 -0
  999. package/dist/subsystem-CUp-6QQf.js +421 -0
  1000. package/dist/synology-chat-CdejNfs0.js +12 -0
  1001. package/dist/system-cli-DkOaXHkQ.js +99 -0
  1002. package/dist/system-events-mAu6Ap6K.js +75 -0
  1003. package/dist/system-message-DA9eUYzB.js +16 -0
  1004. package/dist/system-run-command-Cxq2F1MB.js +258 -0
  1005. package/dist/systemd-CrxZBFae.js +557 -0
  1006. package/dist/systemd-hints-y-zJ9aTm.js +315 -0
  1007. package/dist/systemd-linger-BdklDcLg.js +16 -0
  1008. package/dist/systemd-linger-DLrbG9_d.js +68 -0
  1009. package/dist/table-DFMOhmNZ.js +305 -0
  1010. package/dist/tailnet-ofqBrXzu.js +38 -0
  1011. package/dist/tailscale-Cbsx-2HB.js +254 -0
  1012. package/dist/target-errors-ksphhzJg.js +26 -0
  1013. package/dist/target-registry-krAVlXi_.js +1321 -0
  1014. package/dist/telegram/audit.js +2 -0
  1015. package/dist/telegram/token.js +211 -0
  1016. package/dist/telegram-BjDUP22F.js +10910 -0
  1017. package/dist/telegram-DMiNSGAJ.js +575 -0
  1018. package/dist/telegram-Dt11B3JL.js +218 -0
  1019. package/dist/telegram-core-B4Jo-uko.js +1 -0
  1020. package/dist/template-messages-kh7VfgOb.js +214 -0
  1021. package/dist/text-chunking-CUf5WgqG.js +19 -0
  1022. package/dist/text-format-sFXlJfHH.js +8 -0
  1023. package/dist/text-runtime-C_Roi_Je.js +1418 -0
  1024. package/dist/theme-B5HDbQfl.js +2 -0
  1025. package/dist/theme-CdOoMzRk.js +34 -0
  1026. package/dist/thinking-BBD_0HSp.js +68 -0
  1027. package/dist/thinking.shared-CncvRHts.js +246 -0
  1028. package/dist/thread-bindings-messages-Cdo8jSa9.js +229 -0
  1029. package/dist/thread-bindings-policy-DMjOaNyR.js +119 -0
  1030. package/dist/thread-bindings-runtime-Ckwk3Uuz.js +1 -0
  1031. package/dist/threading-helpers-Cq55SUtb.js +14 -0
  1032. package/dist/timeouts-BwR1sGom.js +72 -0
  1033. package/dist/tmp-openclaw-dir-idKIOMmb.js +102 -0
  1034. package/dist/token-Bgv8XEsC.js +50 -0
  1035. package/dist/tool-catalog-BV6FcEWS.js +337 -0
  1036. package/dist/tool-policy-match-CHqTCSdK.js +46 -0
  1037. package/dist/tool-send-9LXKcrda.js +16 -0
  1038. package/dist/topology-cli-BhUXVViF.js +43 -0
  1039. package/dist/transcript-events-B1V6z5ct.js +29 -0
  1040. package/dist/tui-DDJMGCFK.js +3838 -0
  1041. package/dist/tui-cli-ByN-ZH6y.js +237 -0
  1042. package/dist/typebox-D0SHDJST.js +175 -0
  1043. package/dist/types-BCKGVVld.js +83 -0
  1044. package/dist/types-CtpUGsDP.js +30 -0
  1045. package/dist/types.secrets-BWSeXrF4.js +80 -0
  1046. package/dist/types.tools-BBO8HCi6.js +22 -0
  1047. package/dist/typing-DG_YqWJ7.js +224 -0
  1048. package/dist/unhandled-rejections-CDJ8dOVP.js +170 -0
  1049. package/dist/unhandled-rejections-O6cVOz2D.js +4 -0
  1050. package/dist/update-Br8U-txJ.js +1039 -0
  1051. package/dist/update-check-C3TeQaWg.js +464 -0
  1052. package/dist/update-cli-XHfIntD0.js +1625 -0
  1053. package/dist/update-offset-store-36vzzZXw.js +211 -0
  1054. package/dist/upsert-with-lock-Bb96JHpb.js +34 -0
  1055. package/dist/url-userinfo-Db63ng4y.js +14 -0
  1056. package/dist/utils-Bxk6BLTg.js +236 -0
  1057. package/dist/utils-vDeUf98G.js +7 -0
  1058. package/dist/version-DCY9_obP.js +64 -0
  1059. package/dist/version-DRF-wKTV.js +2 -0
  1060. package/dist/voice-call-D4fgwZNO.js +1 -0
  1061. package/dist/warning-filter-CgvLQB4Y.js +56 -0
  1062. package/dist/web-media-BfBb8i48.js +1 -0
  1063. package/dist/web-media-CtU6jM5V.js +498 -0
  1064. package/dist/webhook-ingress-CupqYpKM.js +338 -0
  1065. package/dist/webhook-memory-guards-BHrFZ4yq.js +129 -0
  1066. package/dist/webhook-path-BGFZ55ML.js +22 -0
  1067. package/dist/webhook-shared-Cvk3b0ac.js +349 -0
  1068. package/dist/webhooks-cli-vOAoBF9b.js +357 -0
  1069. package/dist/whatsapp-D5nD0rGG.js +58 -0
  1070. package/dist/whatsapp-DXbWlm3A.js +82 -0
  1071. package/dist/whatsapp-core-C2WGMsaY.js +89451 -0
  1072. package/dist/whatsapp-heartbeat-CSWnPQ7q.js +84 -0
  1073. package/dist/whatsapp-shared-BmHKqTtR.js +95 -0
  1074. package/dist/widearea-dns-CXimgJzu.js +125 -0
  1075. package/dist/windows-argv-IXrdWrJj.js +145 -0
  1076. package/dist/windows-spawn-vMJGZo89.js +154 -0
  1077. package/dist/with-timeout-2AKTISee.js +58 -0
  1078. package/dist/workspace-BH7CXmrr.js +479 -0
  1079. package/dist/workspace-dirs-_O4V3xCR.js +13 -0
  1080. package/dist/workspace-v5XppK5M.js +302 -0
  1081. package/dist/ws-By-QcLjg.js +11 -0
  1082. package/dist/wsl-BV3Cb66X.js +57 -0
  1083. package/dist/zalo-CHQzsLhE.js +301 -0
  1084. package/dist/zalo-CcJ3J9f2.js +13 -0
  1085. package/dist/zod-schema.agent-runtime-T_EC_6fg.js +600 -0
  1086. package/dist/zod-schema.core-BdgRr-F1.js +545 -0
  1087. package/dist/zod-schema.providers-core-Dgq7MTqU.js +1613 -0
  1088. package/docs/.i18n/README.md +31 -0
  1089. package/docs/.i18n/glossary.ja-JP.json +14 -0
  1090. package/docs/.i18n/glossary.zh-CN.json +242 -0
  1091. package/docs/.i18n/ja-JP.tm.jsonl +0 -0
  1092. package/docs/assets/install-script.svg +1 -0
  1093. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  1094. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  1095. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  1096. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  1097. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  1098. package/docs/assets/openclaw-logo-text-dark.png +0 -0
  1099. package/docs/assets/openclaw-logo-text-dark.svg +418 -0
  1100. package/docs/assets/openclaw-logo-text.png +0 -0
  1101. package/docs/assets/openclaw-logo-text.svg +418 -0
  1102. package/docs/assets/pixel-lobster.svg +60 -0
  1103. package/docs/assets/showcase/agents-ui.jpg +0 -0
  1104. package/docs/assets/showcase/bambu-cli.png +0 -0
  1105. package/docs/assets/showcase/codexmonitor.png +0 -0
  1106. package/docs/assets/showcase/gohome-grafana.png +0 -0
  1107. package/docs/assets/showcase/ios-testflight.jpg +0 -0
  1108. package/docs/assets/showcase/oura-health.png +0 -0
  1109. package/docs/assets/showcase/padel-cli.svg +11 -0
  1110. package/docs/assets/showcase/padel-screenshot.jpg +0 -0
  1111. package/docs/assets/showcase/papla-tts.jpg +0 -0
  1112. package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
  1113. package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
  1114. package/docs/assets/showcase/roborock-status.svg +13 -0
  1115. package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
  1116. package/docs/assets/showcase/snag.png +0 -0
  1117. package/docs/assets/showcase/tesco-shop.jpg +0 -0
  1118. package/docs/assets/showcase/wienerlinien.png +0 -0
  1119. package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
  1120. package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
  1121. package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
  1122. package/docs/assets/sponsors/blacksmith.svg +14 -0
  1123. package/docs/assets/sponsors/convex.svg +16 -0
  1124. package/docs/assets/sponsors/openai.svg +3 -0
  1125. package/docs/assets/sponsors/vercel.svg +5 -0
  1126. package/docs/auth-credential-semantics.md +53 -0
  1127. package/docs/automation/auth-monitoring.md +44 -0
  1128. package/docs/automation/cron-jobs.md +727 -0
  1129. package/docs/automation/cron-vs-heartbeat.md +286 -0
  1130. package/docs/automation/gmail-pubsub.md +256 -0
  1131. package/docs/automation/hooks.md +1049 -0
  1132. package/docs/automation/poll.md +86 -0
  1133. package/docs/automation/standing-orders.md +251 -0
  1134. package/docs/automation/troubleshooting.md +122 -0
  1135. package/docs/automation/webhook.md +217 -0
  1136. package/docs/brave-search.md +93 -0
  1137. package/docs/channels/bluebubbles.md +347 -0
  1138. package/docs/channels/broadcast-groups.md +442 -0
  1139. package/docs/channels/channel-routing.md +139 -0
  1140. package/docs/channels/discord.md +1229 -0
  1141. package/docs/channels/feishu.md +747 -0
  1142. package/docs/channels/googlechat.md +261 -0
  1143. package/docs/channels/group-messages.md +84 -0
  1144. package/docs/channels/groups.md +379 -0
  1145. package/docs/channels/imessage.md +367 -0
  1146. package/docs/channels/index.md +47 -0
  1147. package/docs/channels/irc.md +242 -0
  1148. package/docs/channels/line.md +194 -0
  1149. package/docs/channels/location.md +56 -0
  1150. package/docs/channels/matrix.md +677 -0
  1151. package/docs/channels/mattermost.md +427 -0
  1152. package/docs/channels/msteams.md +780 -0
  1153. package/docs/channels/nextcloud-talk.md +138 -0
  1154. package/docs/channels/nostr.md +242 -0
  1155. package/docs/channels/pairing.md +114 -0
  1156. package/docs/channels/signal.md +329 -0
  1157. package/docs/channels/slack.md +603 -0
  1158. package/docs/channels/synology-chat.md +132 -0
  1159. package/docs/channels/telegram.md +987 -0
  1160. package/docs/channels/tlon.md +276 -0
  1161. package/docs/channels/troubleshooting.md +118 -0
  1162. package/docs/channels/twitch.md +379 -0
  1163. package/docs/channels/whatsapp.md +460 -0
  1164. package/docs/channels/zalo.md +243 -0
  1165. package/docs/channels/zalouser.md +181 -0
  1166. package/docs/ci.md +55 -0
  1167. package/docs/cli/acp.md +288 -0
  1168. package/docs/cli/agent.md +29 -0
  1169. package/docs/cli/agents.md +123 -0
  1170. package/docs/cli/approvals.md +50 -0
  1171. package/docs/cli/backup.md +76 -0
  1172. package/docs/cli/browser.md +106 -0
  1173. package/docs/cli/channels.md +102 -0
  1174. package/docs/cli/clawbot.md +21 -0
  1175. package/docs/cli/completion.md +35 -0
  1176. package/docs/cli/config.md +295 -0
  1177. package/docs/cli/configure.md +36 -0
  1178. package/docs/cli/cron.md +77 -0
  1179. package/docs/cli/daemon.md +53 -0
  1180. package/docs/cli/dashboard.md +22 -0
  1181. package/docs/cli/devices.md +139 -0
  1182. package/docs/cli/directory.md +63 -0
  1183. package/docs/cli/dns.md +23 -0
  1184. package/docs/cli/docs.md +15 -0
  1185. package/docs/cli/doctor.md +48 -0
  1186. package/docs/cli/gateway.md +235 -0
  1187. package/docs/cli/health.md +21 -0
  1188. package/docs/cli/hooks.md +318 -0
  1189. package/docs/cli/index.md +1147 -0
  1190. package/docs/cli/logs.md +28 -0
  1191. package/docs/cli/memory.md +66 -0
  1192. package/docs/cli/message.md +278 -0
  1193. package/docs/cli/models.md +81 -0
  1194. package/docs/cli/node.md +127 -0
  1195. package/docs/cli/nodes.md +75 -0
  1196. package/docs/cli/onboard.md +157 -0
  1197. package/docs/cli/pairing.md +32 -0
  1198. package/docs/cli/plugins.md +186 -0
  1199. package/docs/cli/qr.md +46 -0
  1200. package/docs/cli/reset.md +20 -0
  1201. package/docs/cli/sandbox.md +197 -0
  1202. package/docs/cli/secrets.md +188 -0
  1203. package/docs/cli/security.md +79 -0
  1204. package/docs/cli/sessions.md +110 -0
  1205. package/docs/cli/setup.md +29 -0
  1206. package/docs/cli/skills.md +26 -0
  1207. package/docs/cli/status.md +30 -0
  1208. package/docs/cli/system.md +60 -0
  1209. package/docs/cli/tui.md +30 -0
  1210. package/docs/cli/uninstall.md +20 -0
  1211. package/docs/cli/update.md +103 -0
  1212. package/docs/cli/voicecall.md +34 -0
  1213. package/docs/cli/webhooks.md +25 -0
  1214. package/docs/concepts/agent-loop.md +148 -0
  1215. package/docs/concepts/agent-workspace.md +236 -0
  1216. package/docs/concepts/agent.md +122 -0
  1217. package/docs/concepts/architecture.md +137 -0
  1218. package/docs/concepts/compaction.md +123 -0
  1219. package/docs/concepts/context-engine.md +268 -0
  1220. package/docs/concepts/context.md +172 -0
  1221. package/docs/concepts/delegate-architecture.md +296 -0
  1222. package/docs/concepts/features.md +73 -0
  1223. package/docs/concepts/markdown-formatting.md +130 -0
  1224. package/docs/concepts/memory.md +108 -0
  1225. package/docs/concepts/messages.md +154 -0
  1226. package/docs/concepts/model-failover.md +152 -0
  1227. package/docs/concepts/model-providers.md +607 -0
  1228. package/docs/concepts/models.md +225 -0
  1229. package/docs/concepts/multi-agent.md +552 -0
  1230. package/docs/concepts/oauth.md +158 -0
  1231. package/docs/concepts/presence.md +102 -0
  1232. package/docs/concepts/queue.md +89 -0
  1233. package/docs/concepts/retry.md +69 -0
  1234. package/docs/concepts/session-pruning.md +121 -0
  1235. package/docs/concepts/session-tool.md +242 -0
  1236. package/docs/concepts/session.md +310 -0
  1237. package/docs/concepts/streaming.md +155 -0
  1238. package/docs/concepts/system-prompt.md +132 -0
  1239. package/docs/concepts/timezone.md +91 -0
  1240. package/docs/concepts/typebox.md +291 -0
  1241. package/docs/concepts/typing-indicators.md +68 -0
  1242. package/docs/concepts/usage-tracking.md +35 -0
  1243. package/docs/date-time.md +128 -0
  1244. package/docs/debug/node-issue.md +85 -0
  1245. package/docs/diagnostics/flags.md +91 -0
  1246. package/docs/docs.json +2061 -0
  1247. package/docs/gateway/authentication.md +179 -0
  1248. package/docs/gateway/background-process.md +97 -0
  1249. package/docs/gateway/bonjour.md +177 -0
  1250. package/docs/gateway/bridge-protocol.md +91 -0
  1251. package/docs/gateway/cli-backends.md +225 -0
  1252. package/docs/gateway/configuration-examples.md +651 -0
  1253. package/docs/gateway/configuration-reference.md +3123 -0
  1254. package/docs/gateway/configuration.md +633 -0
  1255. package/docs/gateway/discovery.md +123 -0
  1256. package/docs/gateway/doctor.md +362 -0
  1257. package/docs/gateway/gateway-lock.md +34 -0
  1258. package/docs/gateway/health.md +44 -0
  1259. package/docs/gateway/heartbeat.md +393 -0
  1260. package/docs/gateway/index.md +261 -0
  1261. package/docs/gateway/local-models.md +152 -0
  1262. package/docs/gateway/logging.md +113 -0
  1263. package/docs/gateway/multiple-gateways.md +112 -0
  1264. package/docs/gateway/network-model.md +22 -0
  1265. package/docs/gateway/openai-http-api.md +132 -0
  1266. package/docs/gateway/openresponses-http-api.md +295 -0
  1267. package/docs/gateway/openshell.md +307 -0
  1268. package/docs/gateway/pairing.md +99 -0
  1269. package/docs/gateway/protocol.md +267 -0
  1270. package/docs/gateway/remote-gateway-readme.md +158 -0
  1271. package/docs/gateway/remote.md +153 -0
  1272. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +134 -0
  1273. package/docs/gateway/sandboxing.md +469 -0
  1274. package/docs/gateway/secrets-plan-contract.md +116 -0
  1275. package/docs/gateway/secrets.md +503 -0
  1276. package/docs/gateway/security/index.md +1213 -0
  1277. package/docs/gateway/tailscale.md +132 -0
  1278. package/docs/gateway/tools-invoke-http-api.md +110 -0
  1279. package/docs/gateway/troubleshooting.md +378 -0
  1280. package/docs/gateway/trusted-proxy-auth.md +330 -0
  1281. package/docs/help/debugging.md +168 -0
  1282. package/docs/help/environment.md +163 -0
  1283. package/docs/help/faq.md +2999 -0
  1284. package/docs/help/index.md +28 -0
  1285. package/docs/help/scripts.md +28 -0
  1286. package/docs/help/testing.md +524 -0
  1287. package/docs/help/troubleshooting.md +297 -0
  1288. package/docs/images/configure-model-picker-unsearchable.png +0 -0
  1289. package/docs/images/feishu-step2-create-app.png +0 -0
  1290. package/docs/images/feishu-step3-credentials.png +0 -0
  1291. package/docs/images/feishu-step4-permissions.png +0 -0
  1292. package/docs/images/feishu-step5-bot-capability.png +0 -0
  1293. package/docs/images/feishu-step6-event-subscription.png +0 -0
  1294. package/docs/images/feishu-verification-token.png +0 -0
  1295. package/docs/images/groups-flow.svg +52 -0
  1296. package/docs/images/mobile-ui-screenshot.png +0 -0
  1297. package/docs/index.md +196 -0
  1298. package/docs/install/ansible.md +230 -0
  1299. package/docs/install/azure.md +311 -0
  1300. package/docs/install/bun.md +55 -0
  1301. package/docs/install/development-channels.md +120 -0
  1302. package/docs/install/digitalocean.md +129 -0
  1303. package/docs/install/docker-vm-runtime.md +142 -0
  1304. package/docs/install/docker.md +375 -0
  1305. package/docs/install/exe-dev.md +126 -0
  1306. package/docs/install/fly.md +501 -0
  1307. package/docs/install/gcp.md +402 -0
  1308. package/docs/install/hetzner.md +251 -0
  1309. package/docs/install/index.md +183 -0
  1310. package/docs/install/installer.md +415 -0
  1311. package/docs/install/kubernetes.md +191 -0
  1312. package/docs/install/macos-vm.md +281 -0
  1313. package/docs/install/migrating-matrix.md +346 -0
  1314. package/docs/install/migrating.md +110 -0
  1315. package/docs/install/nix.md +89 -0
  1316. package/docs/install/node.md +138 -0
  1317. package/docs/install/northflank.mdx +54 -0
  1318. package/docs/install/oracle.md +156 -0
  1319. package/docs/install/podman.md +133 -0
  1320. package/docs/install/railway.mdx +100 -0
  1321. package/docs/install/raspberry-pi.md +159 -0
  1322. package/docs/install/render.mdx +169 -0
  1323. package/docs/install/uninstall.md +128 -0
  1324. package/docs/install/updating.md +128 -0
  1325. package/docs/ja-JP/index.md +186 -0
  1326. package/docs/ja-JP/start/getting-started.md +125 -0
  1327. package/docs/ja-JP/start/wizard.md +77 -0
  1328. package/docs/logging.md +352 -0
  1329. package/docs/nav-tabs-underline.js +100 -0
  1330. package/docs/network.md +54 -0
  1331. package/docs/nodes/audio.md +187 -0
  1332. package/docs/nodes/camera.md +162 -0
  1333. package/docs/nodes/images.md +72 -0
  1334. package/docs/nodes/index.md +393 -0
  1335. package/docs/nodes/location-command.md +98 -0
  1336. package/docs/nodes/media-understanding.md +394 -0
  1337. package/docs/nodes/talk.md +92 -0
  1338. package/docs/nodes/troubleshooting.md +114 -0
  1339. package/docs/nodes/voicewake.md +66 -0
  1340. package/docs/perplexity.md +174 -0
  1341. package/docs/pi-dev.md +80 -0
  1342. package/docs/pi.md +567 -0
  1343. package/docs/platforms/android.md +168 -0
  1344. package/docs/platforms/digitalocean.md +266 -0
  1345. package/docs/platforms/index.md +54 -0
  1346. package/docs/platforms/ios.md +220 -0
  1347. package/docs/platforms/linux.md +94 -0
  1348. package/docs/platforms/mac/bundled-gateway.md +73 -0
  1349. package/docs/platforms/mac/canvas.md +125 -0
  1350. package/docs/platforms/mac/child-process.md +69 -0
  1351. package/docs/platforms/mac/dev-setup.md +104 -0
  1352. package/docs/platforms/mac/health.md +34 -0
  1353. package/docs/platforms/mac/icon.md +31 -0
  1354. package/docs/platforms/mac/logging.md +57 -0
  1355. package/docs/platforms/mac/menu-bar.md +81 -0
  1356. package/docs/platforms/mac/peekaboo.md +65 -0
  1357. package/docs/platforms/mac/permissions.md +50 -0
  1358. package/docs/platforms/mac/remote.md +84 -0
  1359. package/docs/platforms/mac/signing.md +47 -0
  1360. package/docs/platforms/mac/skills.md +33 -0
  1361. package/docs/platforms/mac/voice-overlay.md +60 -0
  1362. package/docs/platforms/mac/voicewake.md +67 -0
  1363. package/docs/platforms/mac/webchat.md +43 -0
  1364. package/docs/platforms/mac/xpc.md +61 -0
  1365. package/docs/platforms/macos.md +226 -0
  1366. package/docs/platforms/oracle.md +303 -0
  1367. package/docs/platforms/raspberry-pi.md +412 -0
  1368. package/docs/platforms/windows.md +241 -0
  1369. package/docs/plugins/agent-tools.md +10 -0
  1370. package/docs/plugins/architecture.md +1363 -0
  1371. package/docs/plugins/building-extensions.md +10 -0
  1372. package/docs/plugins/building-plugins.md +376 -0
  1373. package/docs/plugins/bundles.md +181 -0
  1374. package/docs/plugins/community.md +141 -0
  1375. package/docs/plugins/manifest.md +145 -0
  1376. package/docs/plugins/sdk-migration.md +169 -0
  1377. package/docs/plugins/voice-call.md +380 -0
  1378. package/docs/plugins/zalouser.md +77 -0
  1379. package/docs/prose.md +134 -0
  1380. package/docs/providers/anthropic.md +259 -0
  1381. package/docs/providers/bedrock.md +176 -0
  1382. package/docs/providers/claude-max-api-proxy.md +154 -0
  1383. package/docs/providers/cloudflare-ai-gateway.md +71 -0
  1384. package/docs/providers/deepgram.md +93 -0
  1385. package/docs/providers/github-copilot.md +72 -0
  1386. package/docs/providers/glm.md +43 -0
  1387. package/docs/providers/google.md +78 -0
  1388. package/docs/providers/groq.md +96 -0
  1389. package/docs/providers/huggingface.md +209 -0
  1390. package/docs/providers/index.md +69 -0
  1391. package/docs/providers/kilocode.md +74 -0
  1392. package/docs/providers/litellm.md +154 -0
  1393. package/docs/providers/minimax.md +224 -0
  1394. package/docs/providers/mistral.md +54 -0
  1395. package/docs/providers/models.md +45 -0
  1396. package/docs/providers/modelstudio.md +66 -0
  1397. package/docs/providers/moonshot.md +175 -0
  1398. package/docs/providers/nvidia.md +55 -0
  1399. package/docs/providers/ollama.md +352 -0
  1400. package/docs/providers/openai.md +303 -0
  1401. package/docs/providers/opencode-go.md +45 -0
  1402. package/docs/providers/opencode.md +64 -0
  1403. package/docs/providers/openrouter.md +37 -0
  1404. package/docs/providers/perplexity-provider.md +62 -0
  1405. package/docs/providers/qianfan.md +38 -0
  1406. package/docs/providers/qwen.md +53 -0
  1407. package/docs/providers/sglang.md +104 -0
  1408. package/docs/providers/synthetic.md +99 -0
  1409. package/docs/providers/together.md +66 -0
  1410. package/docs/providers/venice.md +282 -0
  1411. package/docs/providers/vercel-ai-gateway.md +60 -0
  1412. package/docs/providers/vllm.md +92 -0
  1413. package/docs/providers/volcengine.md +74 -0
  1414. package/docs/providers/xai.md +60 -0
  1415. package/docs/providers/xiaomi.md +86 -0
  1416. package/docs/providers/zai.md +46 -0
  1417. package/docs/reference/AGENTS.default.md +126 -0
  1418. package/docs/reference/RELEASING.md +42 -0
  1419. package/docs/reference/api-usage-costs.md +144 -0
  1420. package/docs/reference/credits.md +30 -0
  1421. package/docs/reference/device-models.md +47 -0
  1422. package/docs/reference/memory-config.md +711 -0
  1423. package/docs/reference/prompt-caching.md +185 -0
  1424. package/docs/reference/rpc.md +43 -0
  1425. package/docs/reference/secretref-credential-surface.md +140 -0
  1426. package/docs/reference/secretref-user-supplied-credentials-matrix.json +563 -0
  1427. package/docs/reference/session-management-compaction.md +324 -0
  1428. package/docs/reference/templates/AGENTS.dev.md +83 -0
  1429. package/docs/reference/templates/AGENTS.md +219 -0
  1430. package/docs/reference/templates/BOOT.md +11 -0
  1431. package/docs/reference/templates/BOOTSTRAP.md +62 -0
  1432. package/docs/reference/templates/HEARTBEAT.md +14 -0
  1433. package/docs/reference/templates/IDENTITY.dev.md +47 -0
  1434. package/docs/reference/templates/IDENTITY.md +29 -0
  1435. package/docs/reference/templates/SOUL.dev.md +76 -0
  1436. package/docs/reference/templates/SOUL.md +43 -0
  1437. package/docs/reference/templates/TOOLS.dev.md +24 -0
  1438. package/docs/reference/templates/TOOLS.md +47 -0
  1439. package/docs/reference/templates/USER.dev.md +18 -0
  1440. package/docs/reference/templates/USER.md +23 -0
  1441. package/docs/reference/test.md +90 -0
  1442. package/docs/reference/token-use.md +175 -0
  1443. package/docs/reference/transcript-hygiene.md +151 -0
  1444. package/docs/reference/wizard.md +235 -0
  1445. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +98 -0
  1446. package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
  1447. package/docs/security/formal-verification.md +167 -0
  1448. package/docs/start/bootstrapping.md +41 -0
  1449. package/docs/start/docs-directory.md +66 -0
  1450. package/docs/start/getting-started.md +116 -0
  1451. package/docs/start/hubs.md +198 -0
  1452. package/docs/start/lore.md +219 -0
  1453. package/docs/start/onboarding-overview.md +67 -0
  1454. package/docs/start/onboarding.md +91 -0
  1455. package/docs/start/openclaw.md +216 -0
  1456. package/docs/start/quickstart.md +22 -0
  1457. package/docs/start/setup.md +164 -0
  1458. package/docs/start/showcase.md +418 -0
  1459. package/docs/start/wizard-cli-automation.md +215 -0
  1460. package/docs/start/wizard-cli-reference.md +299 -0
  1461. package/docs/start/wizard.md +125 -0
  1462. package/docs/style.css +37 -0
  1463. package/docs/tools/acp-agents.md +623 -0
  1464. package/docs/tools/agent-send.md +100 -0
  1465. package/docs/tools/apply-patch.md +51 -0
  1466. package/docs/tools/brave-search.md +93 -0
  1467. package/docs/tools/browser-linux-troubleshooting.md +138 -0
  1468. package/docs/tools/browser-login.md +73 -0
  1469. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +211 -0
  1470. package/docs/tools/browser.md +731 -0
  1471. package/docs/tools/btw.md +142 -0
  1472. package/docs/tools/capability-cookbook.md +119 -0
  1473. package/docs/tools/clawhub.md +257 -0
  1474. package/docs/tools/creating-skills.md +117 -0
  1475. package/docs/tools/diffs.md +386 -0
  1476. package/docs/tools/elevated.md +114 -0
  1477. package/docs/tools/exec-approvals.md +400 -0
  1478. package/docs/tools/exec.md +204 -0
  1479. package/docs/tools/firecrawl.md +140 -0
  1480. package/docs/tools/index.md +137 -0
  1481. package/docs/tools/llm-task.md +119 -0
  1482. package/docs/tools/lobster.md +340 -0
  1483. package/docs/tools/loop-detection.md +100 -0
  1484. package/docs/tools/multi-agent-sandbox-tools.md +364 -0
  1485. package/docs/tools/pdf.md +156 -0
  1486. package/docs/tools/perplexity-search.md +174 -0
  1487. package/docs/tools/plugin.md +251 -0
  1488. package/docs/tools/reactions.md +64 -0
  1489. package/docs/tools/skills-config.md +86 -0
  1490. package/docs/tools/skills.md +306 -0
  1491. package/docs/tools/slash-commands.md +294 -0
  1492. package/docs/tools/subagents.md +295 -0
  1493. package/docs/tools/tavily.md +125 -0
  1494. package/docs/tools/thinking.md +96 -0
  1495. package/docs/tools/tts.md +406 -0
  1496. package/docs/tools/web.md +516 -0
  1497. package/docs/tts.md +406 -0
  1498. package/docs/vps.md +112 -0
  1499. package/docs/web/control-ui.md +275 -0
  1500. package/docs/web/dashboard.md +54 -0
  1501. package/docs/web/index.md +120 -0
  1502. package/docs/web/tui.md +170 -0
  1503. package/docs/web/webchat.md +61 -0
  1504. package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
  1505. package/docs/whatsapp-openclaw.jpg +0 -0
  1506. package/docs/zh-CN/AGENTS.md +61 -0
  1507. package/docs/zh-CN/automation/auth-monitoring.md +47 -0
  1508. package/docs/zh-CN/automation/cron-jobs.md +435 -0
  1509. package/docs/zh-CN/automation/cron-vs-heartbeat.md +286 -0
  1510. package/docs/zh-CN/automation/gmail-pubsub.md +249 -0
  1511. package/docs/zh-CN/automation/hooks.md +1051 -0
  1512. package/docs/zh-CN/automation/poll.md +76 -0
  1513. package/docs/zh-CN/automation/troubleshooting.md +8 -0
  1514. package/docs/zh-CN/automation/webhook.md +163 -0
  1515. package/docs/zh-CN/brave-search.md +60 -0
  1516. package/docs/zh-CN/channels/bluebubbles.md +354 -0
  1517. package/docs/zh-CN/channels/broadcast-groups.md +449 -0
  1518. package/docs/zh-CN/channels/channel-routing.md +117 -0
  1519. package/docs/zh-CN/channels/discord.md +468 -0
  1520. package/docs/zh-CN/channels/feishu.md +728 -0
  1521. package/docs/zh-CN/channels/googlechat.md +257 -0
  1522. package/docs/zh-CN/channels/grammy.md +38 -0
  1523. package/docs/zh-CN/channels/group-messages.md +91 -0
  1524. package/docs/zh-CN/channels/groups.md +379 -0
  1525. package/docs/zh-CN/channels/imessage.md +302 -0
  1526. package/docs/zh-CN/channels/index.md +53 -0
  1527. package/docs/zh-CN/channels/line.md +180 -0
  1528. package/docs/zh-CN/channels/location.md +63 -0
  1529. package/docs/zh-CN/channels/matrix.md +221 -0
  1530. package/docs/zh-CN/channels/mattermost.md +144 -0
  1531. package/docs/zh-CN/channels/msteams.md +775 -0
  1532. package/docs/zh-CN/channels/nextcloud-talk.md +142 -0
  1533. package/docs/zh-CN/channels/nostr.md +249 -0
  1534. package/docs/zh-CN/channels/pairing.md +89 -0
  1535. package/docs/zh-CN/channels/signal.md +209 -0
  1536. package/docs/zh-CN/channels/slack.md +531 -0
  1537. package/docs/zh-CN/channels/synology-chat.md +138 -0
  1538. package/docs/zh-CN/channels/telegram.md +751 -0
  1539. package/docs/zh-CN/channels/tlon.md +136 -0
  1540. package/docs/zh-CN/channels/troubleshooting.md +36 -0
  1541. package/docs/zh-CN/channels/twitch.md +385 -0
  1542. package/docs/zh-CN/channels/whatsapp.md +411 -0
  1543. package/docs/zh-CN/channels/zalo.md +196 -0
  1544. package/docs/zh-CN/channels/zalouser.md +147 -0
  1545. package/docs/zh-CN/cli/acp.md +173 -0
  1546. package/docs/zh-CN/cli/agent.md +30 -0
  1547. package/docs/zh-CN/cli/agents.md +82 -0
  1548. package/docs/zh-CN/cli/approvals.md +57 -0
  1549. package/docs/zh-CN/cli/browser.md +114 -0
  1550. package/docs/zh-CN/cli/channels.md +86 -0
  1551. package/docs/zh-CN/cli/config.md +57 -0
  1552. package/docs/zh-CN/cli/configure.md +38 -0
  1553. package/docs/zh-CN/cli/cron.md +43 -0
  1554. package/docs/zh-CN/cli/dashboard.md +23 -0
  1555. package/docs/zh-CN/cli/devices.md +74 -0
  1556. package/docs/zh-CN/cli/directory.md +70 -0
  1557. package/docs/zh-CN/cli/dns.md +30 -0
  1558. package/docs/zh-CN/cli/docs.md +22 -0
  1559. package/docs/zh-CN/cli/doctor.md +48 -0
  1560. package/docs/zh-CN/cli/gateway.md +206 -0
  1561. package/docs/zh-CN/cli/health.md +28 -0
  1562. package/docs/zh-CN/cli/hooks.md +298 -0
  1563. package/docs/zh-CN/cli/index.md +1143 -0
  1564. package/docs/zh-CN/cli/logs.md +31 -0
  1565. package/docs/zh-CN/cli/memory.md +52 -0
  1566. package/docs/zh-CN/cli/message.md +246 -0
  1567. package/docs/zh-CN/cli/models.md +85 -0
  1568. package/docs/zh-CN/cli/node.md +115 -0
  1569. package/docs/zh-CN/cli/nodes.md +80 -0
  1570. package/docs/zh-CN/cli/onboard.md +164 -0
  1571. package/docs/zh-CN/cli/pairing.md +28 -0
  1572. package/docs/zh-CN/cli/plugins.md +66 -0
  1573. package/docs/zh-CN/cli/reset.md +24 -0
  1574. package/docs/zh-CN/cli/sandbox.md +158 -0
  1575. package/docs/zh-CN/cli/security.md +33 -0
  1576. package/docs/zh-CN/cli/sessions.md +23 -0
  1577. package/docs/zh-CN/cli/setup.md +36 -0
  1578. package/docs/zh-CN/cli/skills.md +33 -0
  1579. package/docs/zh-CN/cli/status.md +33 -0
  1580. package/docs/zh-CN/cli/system.md +63 -0
  1581. package/docs/zh-CN/cli/tui.md +30 -0
  1582. package/docs/zh-CN/cli/uninstall.md +24 -0
  1583. package/docs/zh-CN/cli/update.md +101 -0
  1584. package/docs/zh-CN/cli/voicecall.md +41 -0
  1585. package/docs/zh-CN/cli/webhooks.md +32 -0
  1586. package/docs/zh-CN/concepts/agent-loop.md +146 -0
  1587. package/docs/zh-CN/concepts/agent-workspace.md +219 -0
  1588. package/docs/zh-CN/concepts/agent.md +115 -0
  1589. package/docs/zh-CN/concepts/architecture.md +123 -0
  1590. package/docs/zh-CN/concepts/compaction.md +67 -0
  1591. package/docs/zh-CN/concepts/context.md +168 -0
  1592. package/docs/zh-CN/concepts/features.md +59 -0
  1593. package/docs/zh-CN/concepts/markdown-formatting.md +117 -0
  1594. package/docs/zh-CN/concepts/memory.md +412 -0
  1595. package/docs/zh-CN/concepts/messages.md +141 -0
  1596. package/docs/zh-CN/concepts/model-failover.md +145 -0
  1597. package/docs/zh-CN/concepts/model-providers.md +606 -0
  1598. package/docs/zh-CN/concepts/models.md +225 -0
  1599. package/docs/zh-CN/concepts/multi-agent.md +372 -0
  1600. package/docs/zh-CN/concepts/oauth.md +164 -0
  1601. package/docs/zh-CN/concepts/presence.md +99 -0
  1602. package/docs/zh-CN/concepts/queue.md +94 -0
  1603. package/docs/zh-CN/concepts/retry.md +76 -0
  1604. package/docs/zh-CN/concepts/session-pruning.md +129 -0
  1605. package/docs/zh-CN/concepts/session-tool.md +200 -0
  1606. package/docs/zh-CN/concepts/session.md +166 -0
  1607. package/docs/zh-CN/concepts/streaming.md +133 -0
  1608. package/docs/zh-CN/concepts/system-prompt.md +101 -0
  1609. package/docs/zh-CN/concepts/timezone.md +96 -0
  1610. package/docs/zh-CN/concepts/typebox.md +284 -0
  1611. package/docs/zh-CN/concepts/typing-indicators.md +74 -0
  1612. package/docs/zh-CN/concepts/usage-tracking.md +42 -0
  1613. package/docs/zh-CN/date-time.md +129 -0
  1614. package/docs/zh-CN/debug/node-issue.md +90 -0
  1615. package/docs/zh-CN/diagnostics/flags.md +98 -0
  1616. package/docs/zh-CN/gateway/authentication.md +184 -0
  1617. package/docs/zh-CN/gateway/background-process.md +100 -0
  1618. package/docs/zh-CN/gateway/bonjour.md +174 -0
  1619. package/docs/zh-CN/gateway/bridge-protocol.md +86 -0
  1620. package/docs/zh-CN/gateway/cli-backends.md +213 -0
  1621. package/docs/zh-CN/gateway/configuration-examples.md +587 -0
  1622. package/docs/zh-CN/gateway/configuration-reference.md +3103 -0
  1623. package/docs/zh-CN/gateway/configuration.md +640 -0
  1624. package/docs/zh-CN/gateway/discovery.md +123 -0
  1625. package/docs/zh-CN/gateway/doctor.md +238 -0
  1626. package/docs/zh-CN/gateway/gateway-lock.md +41 -0
  1627. package/docs/zh-CN/gateway/health.md +42 -0
  1628. package/docs/zh-CN/gateway/heartbeat.md +274 -0
  1629. package/docs/zh-CN/gateway/index.md +335 -0
  1630. package/docs/zh-CN/gateway/local-models.md +159 -0
  1631. package/docs/zh-CN/gateway/logging.md +114 -0
  1632. package/docs/zh-CN/gateway/multiple-gateways.md +119 -0
  1633. package/docs/zh-CN/gateway/network-model.md +23 -0
  1634. package/docs/zh-CN/gateway/openai-http-api.md +125 -0
  1635. package/docs/zh-CN/gateway/openresponses-http-api.md +317 -0
  1636. package/docs/zh-CN/gateway/pairing.md +99 -0
  1637. package/docs/zh-CN/gateway/protocol.md +220 -0
  1638. package/docs/zh-CN/gateway/remote-gateway-readme.md +164 -0
  1639. package/docs/zh-CN/gateway/remote.md +133 -0
  1640. package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +135 -0
  1641. package/docs/zh-CN/gateway/sandboxing.md +188 -0
  1642. package/docs/zh-CN/gateway/security/index.md +777 -0
  1643. package/docs/zh-CN/gateway/tailscale.md +124 -0
  1644. package/docs/zh-CN/gateway/tools-invoke-http-api.md +92 -0
  1645. package/docs/zh-CN/gateway/troubleshooting.md +771 -0
  1646. package/docs/zh-CN/help/debugging.md +160 -0
  1647. package/docs/zh-CN/help/environment.md +88 -0
  1648. package/docs/zh-CN/help/faq.md +2640 -0
  1649. package/docs/zh-CN/help/index.md +28 -0
  1650. package/docs/zh-CN/help/scripts.md +35 -0
  1651. package/docs/zh-CN/help/testing.md +375 -0
  1652. package/docs/zh-CN/help/troubleshooting.md +104 -0
  1653. package/docs/zh-CN/index.md +186 -0
  1654. package/docs/zh-CN/install/ansible.md +215 -0
  1655. package/docs/zh-CN/install/bun.md +65 -0
  1656. package/docs/zh-CN/install/development-channels.md +81 -0
  1657. package/docs/zh-CN/install/docker.md +532 -0
  1658. package/docs/zh-CN/install/exe-dev.md +133 -0
  1659. package/docs/zh-CN/install/fly.md +490 -0
  1660. package/docs/zh-CN/install/gcp.md +510 -0
  1661. package/docs/zh-CN/install/hetzner.md +337 -0
  1662. package/docs/zh-CN/install/index.md +235 -0
  1663. package/docs/zh-CN/install/installer.md +422 -0
  1664. package/docs/zh-CN/install/macos-vm.md +288 -0
  1665. package/docs/zh-CN/install/migrating.md +199 -0
  1666. package/docs/zh-CN/install/nix.md +99 -0
  1667. package/docs/zh-CN/install/node.md +8 -0
  1668. package/docs/zh-CN/install/northflank.mdx +60 -0
  1669. package/docs/zh-CN/install/railway.mdx +106 -0
  1670. package/docs/zh-CN/install/render.mdx +169 -0
  1671. package/docs/zh-CN/install/uninstall.md +135 -0
  1672. package/docs/zh-CN/install/updating.md +233 -0
  1673. package/docs/zh-CN/logging.md +329 -0
  1674. package/docs/zh-CN/network.md +59 -0
  1675. package/docs/zh-CN/nodes/audio.md +120 -0
  1676. package/docs/zh-CN/nodes/camera.md +162 -0
  1677. package/docs/zh-CN/nodes/images.md +79 -0
  1678. package/docs/zh-CN/nodes/index.md +348 -0
  1679. package/docs/zh-CN/nodes/location-command.md +120 -0
  1680. package/docs/zh-CN/nodes/media-understanding.md +380 -0
  1681. package/docs/zh-CN/nodes/talk.md +97 -0
  1682. package/docs/zh-CN/nodes/troubleshooting.md +8 -0
  1683. package/docs/zh-CN/nodes/voicewake.md +72 -0
  1684. package/docs/zh-CN/perplexity.md +102 -0
  1685. package/docs/zh-CN/pi-dev.md +77 -0
  1686. package/docs/zh-CN/pi.md +619 -0
  1687. package/docs/zh-CN/platforms/android.md +155 -0
  1688. package/docs/zh-CN/platforms/digitalocean.md +273 -0
  1689. package/docs/zh-CN/platforms/index.md +60 -0
  1690. package/docs/zh-CN/platforms/ios.md +114 -0
  1691. package/docs/zh-CN/platforms/linux.md +100 -0
  1692. package/docs/zh-CN/platforms/mac/bundled-gateway.md +75 -0
  1693. package/docs/zh-CN/platforms/mac/canvas.md +128 -0
  1694. package/docs/zh-CN/platforms/mac/child-process.md +73 -0
  1695. package/docs/zh-CN/platforms/mac/dev-setup.md +109 -0
  1696. package/docs/zh-CN/platforms/mac/health.md +41 -0
  1697. package/docs/zh-CN/platforms/mac/icon.md +38 -0
  1698. package/docs/zh-CN/platforms/mac/logging.md +64 -0
  1699. package/docs/zh-CN/platforms/mac/menu-bar.md +88 -0
  1700. package/docs/zh-CN/platforms/mac/peekaboo.md +62 -0
  1701. package/docs/zh-CN/platforms/mac/permissions.md +46 -0
  1702. package/docs/zh-CN/platforms/mac/remote.md +90 -0
  1703. package/docs/zh-CN/platforms/mac/signing.md +54 -0
  1704. package/docs/zh-CN/platforms/mac/skills.md +40 -0
  1705. package/docs/zh-CN/platforms/mac/voice-overlay.md +67 -0
  1706. package/docs/zh-CN/platforms/mac/voicewake.md +74 -0
  1707. package/docs/zh-CN/platforms/mac/webchat.md +43 -0
  1708. package/docs/zh-CN/platforms/mac/xpc.md +68 -0
  1709. package/docs/zh-CN/platforms/macos.md +193 -0
  1710. package/docs/zh-CN/platforms/oracle.md +310 -0
  1711. package/docs/zh-CN/platforms/raspberry-pi.md +416 -0
  1712. package/docs/zh-CN/platforms/windows.md +247 -0
  1713. package/docs/zh-CN/plugins/agent-tools.md +99 -0
  1714. package/docs/zh-CN/plugins/manifest.md +68 -0
  1715. package/docs/zh-CN/plugins/voice-call.md +250 -0
  1716. package/docs/zh-CN/plugins/zalouser.md +88 -0
  1717. package/docs/zh-CN/prose.md +141 -0
  1718. package/docs/zh-CN/providers/anthropic.md +265 -0
  1719. package/docs/zh-CN/providers/bedrock.md +170 -0
  1720. package/docs/zh-CN/providers/claude-max-api-proxy.md +155 -0
  1721. package/docs/zh-CN/providers/cloudflare-ai-gateway.md +78 -0
  1722. package/docs/zh-CN/providers/deepgram.md +97 -0
  1723. package/docs/zh-CN/providers/github-copilot.md +67 -0
  1724. package/docs/zh-CN/providers/glm.md +50 -0
  1725. package/docs/zh-CN/providers/huggingface.md +216 -0
  1726. package/docs/zh-CN/providers/index.md +69 -0
  1727. package/docs/zh-CN/providers/kilocode.md +80 -0
  1728. package/docs/zh-CN/providers/litellm.md +160 -0
  1729. package/docs/zh-CN/providers/minimax.md +222 -0
  1730. package/docs/zh-CN/providers/mistral.md +61 -0
  1731. package/docs/zh-CN/providers/models.md +51 -0
  1732. package/docs/zh-CN/providers/moonshot.md +182 -0
  1733. package/docs/zh-CN/providers/nvidia.md +62 -0
  1734. package/docs/zh-CN/providers/ollama.md +359 -0
  1735. package/docs/zh-CN/providers/openai.md +308 -0
  1736. package/docs/zh-CN/providers/opencode-go.md +52 -0
  1737. package/docs/zh-CN/providers/opencode.md +71 -0
  1738. package/docs/zh-CN/providers/openrouter.md +44 -0
  1739. package/docs/zh-CN/providers/qianfan.md +45 -0
  1740. package/docs/zh-CN/providers/qwen.md +55 -0
  1741. package/docs/zh-CN/providers/sglang.md +111 -0
  1742. package/docs/zh-CN/providers/synthetic.md +106 -0
  1743. package/docs/zh-CN/providers/together.md +72 -0
  1744. package/docs/zh-CN/providers/venice.md +289 -0
  1745. package/docs/zh-CN/providers/vercel-ai-gateway.md +66 -0
  1746. package/docs/zh-CN/providers/xiaomi.md +93 -0
  1747. package/docs/zh-CN/providers/zai.md +53 -0
  1748. package/docs/zh-CN/reference/AGENTS.default.md +131 -0
  1749. package/docs/zh-CN/reference/RELEASING.md +48 -0
  1750. package/docs/zh-CN/reference/api-usage-costs.md +141 -0
  1751. package/docs/zh-CN/reference/credits.md +34 -0
  1752. package/docs/zh-CN/reference/device-models.md +54 -0
  1753. package/docs/zh-CN/reference/rpc.md +48 -0
  1754. package/docs/zh-CN/reference/session-management-compaction.md +287 -0
  1755. package/docs/zh-CN/reference/templates/AGENTS.dev.md +89 -0
  1756. package/docs/zh-CN/reference/templates/AGENTS.md +225 -0
  1757. package/docs/zh-CN/reference/templates/BOOT.md +17 -0
  1758. package/docs/zh-CN/reference/templates/BOOTSTRAP.md +68 -0
  1759. package/docs/zh-CN/reference/templates/HEARTBEAT.md +18 -0
  1760. package/docs/zh-CN/reference/templates/IDENTITY.dev.md +54 -0
  1761. package/docs/zh-CN/reference/templates/IDENTITY.md +36 -0
  1762. package/docs/zh-CN/reference/templates/SOUL.dev.md +83 -0
  1763. package/docs/zh-CN/reference/templates/SOUL.md +49 -0
  1764. package/docs/zh-CN/reference/templates/TOOLS.dev.md +31 -0
  1765. package/docs/zh-CN/reference/templates/TOOLS.md +53 -0
  1766. package/docs/zh-CN/reference/templates/USER.dev.md +25 -0
  1767. package/docs/zh-CN/reference/templates/USER.md +30 -0
  1768. package/docs/zh-CN/reference/test.md +57 -0
  1769. package/docs/zh-CN/reference/token-use.md +119 -0
  1770. package/docs/zh-CN/reference/transcript-hygiene.md +109 -0
  1771. package/docs/zh-CN/reference/wizard.md +242 -0
  1772. package/docs/zh-CN/security/formal-verification.md +171 -0
  1773. package/docs/zh-CN/start/bootstrapping.md +9 -0
  1774. package/docs/zh-CN/start/docs-directory.md +70 -0
  1775. package/docs/zh-CN/start/getting-started.md +143 -0
  1776. package/docs/zh-CN/start/hubs.md +194 -0
  1777. package/docs/zh-CN/start/lore.md +226 -0
  1778. package/docs/zh-CN/start/onboarding-overview.md +58 -0
  1779. package/docs/zh-CN/start/onboarding.md +105 -0
  1780. package/docs/zh-CN/start/openclaw.md +248 -0
  1781. package/docs/zh-CN/start/quickstart.md +88 -0
  1782. package/docs/zh-CN/start/setup.md +153 -0
  1783. package/docs/zh-CN/start/showcase.md +423 -0
  1784. package/docs/zh-CN/start/wizard-cli-automation.md +222 -0
  1785. package/docs/zh-CN/start/wizard-cli-reference.md +306 -0
  1786. package/docs/zh-CN/start/wizard.md +132 -0
  1787. package/docs/zh-CN/tools/agent-send.md +59 -0
  1788. package/docs/zh-CN/tools/apply-patch.md +57 -0
  1789. package/docs/zh-CN/tools/browser-linux-troubleshooting.md +144 -0
  1790. package/docs/zh-CN/tools/browser-login.md +75 -0
  1791. package/docs/zh-CN/tools/browser.md +553 -0
  1792. package/docs/zh-CN/tools/chrome-extension.md +183 -0
  1793. package/docs/zh-CN/tools/clawhub.md +209 -0
  1794. package/docs/zh-CN/tools/creating-skills.md +61 -0
  1795. package/docs/zh-CN/tools/elevated.md +64 -0
  1796. package/docs/zh-CN/tools/exec-approvals.md +234 -0
  1797. package/docs/zh-CN/tools/exec.md +169 -0
  1798. package/docs/zh-CN/tools/firecrawl.md +68 -0
  1799. package/docs/zh-CN/tools/index.md +515 -0
  1800. package/docs/zh-CN/tools/llm-task.md +117 -0
  1801. package/docs/zh-CN/tools/lobster.md +349 -0
  1802. package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +401 -0
  1803. package/docs/zh-CN/tools/plugin.md +1612 -0
  1804. package/docs/zh-CN/tools/reactions.md +29 -0
  1805. package/docs/zh-CN/tools/skills-config.md +78 -0
  1806. package/docs/zh-CN/tools/skills.md +279 -0
  1807. package/docs/zh-CN/tools/slash-commands.md +205 -0
  1808. package/docs/zh-CN/tools/subagents.md +167 -0
  1809. package/docs/zh-CN/tools/thinking.md +80 -0
  1810. package/docs/zh-CN/tools/web.md +289 -0
  1811. package/docs/zh-CN/tts.md +375 -0
  1812. package/docs/zh-CN/vps.md +47 -0
  1813. package/docs/zh-CN/web/control-ui.md +191 -0
  1814. package/docs/zh-CN/web/dashboard.md +53 -0
  1815. package/docs/zh-CN/web/index.md +118 -0
  1816. package/docs/zh-CN/web/tui.md +166 -0
  1817. package/docs/zh-CN/web/webchat.md +56 -0
  1818. package/openclaw.mjs +135 -0
  1819. package/package.json +835 -0
  1820. package/skills/1password/SKILL.md +70 -0
  1821. package/skills/1password/references/cli-examples.md +29 -0
  1822. package/skills/1password/references/get-started.md +17 -0
  1823. package/skills/apple-notes/SKILL.md +77 -0
  1824. package/skills/apple-reminders/SKILL.md +118 -0
  1825. package/skills/bear-notes/SKILL.md +107 -0
  1826. package/skills/blogwatcher/SKILL.md +69 -0
  1827. package/skills/blucli/SKILL.md +47 -0
  1828. package/skills/bluebubbles/SKILL.md +131 -0
  1829. package/skills/camsnap/SKILL.md +45 -0
  1830. package/skills/canvas/SKILL.md +198 -0
  1831. package/skills/clawhub/SKILL.md +77 -0
  1832. package/skills/coding-agent/SKILL.md +295 -0
  1833. package/skills/discord/SKILL.md +197 -0
  1834. package/skills/doubao-code/SKILL.md +43 -0
  1835. package/skills/eightctl/SKILL.md +50 -0
  1836. package/skills/gemini/SKILL.md +43 -0
  1837. package/skills/gh-issues/SKILL.md +865 -0
  1838. package/skills/gifgrep/SKILL.md +79 -0
  1839. package/skills/github/SKILL.md +163 -0
  1840. package/skills/gog/SKILL.md +116 -0
  1841. package/skills/goplaces/SKILL.md +52 -0
  1842. package/skills/healthcheck/SKILL.md +245 -0
  1843. package/skills/himalaya/SKILL.md +257 -0
  1844. package/skills/himalaya/references/configuration.md +184 -0
  1845. package/skills/himalaya/references/message-composition.md +199 -0
  1846. package/skills/imsg/SKILL.md +122 -0
  1847. package/skills/kimi-code/SKILL.md +42 -0
  1848. package/skills/mcporter/SKILL.md +61 -0
  1849. package/skills/model-usage/SKILL.md +69 -0
  1850. package/skills/model-usage/references/codexbar-cli.md +33 -0
  1851. package/skills/model-usage/scripts/model_usage.py +320 -0
  1852. package/skills/model-usage/scripts/test_model_usage.py +40 -0
  1853. package/skills/nano-pdf/SKILL.md +38 -0
  1854. package/skills/node-connect/SKILL.md +142 -0
  1855. package/skills/notion/SKILL.md +174 -0
  1856. package/skills/obsidian/SKILL.md +81 -0
  1857. package/skills/openai-image-gen/SKILL.md +92 -0
  1858. package/skills/openai-image-gen/scripts/gen.py +328 -0
  1859. package/skills/openai-image-gen/scripts/test_gen.py +140 -0
  1860. package/skills/openai-whisper/SKILL.md +38 -0
  1861. package/skills/openai-whisper-api/SKILL.md +52 -0
  1862. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  1863. package/skills/openhue/SKILL.md +112 -0
  1864. package/skills/oracle/SKILL.md +125 -0
  1865. package/skills/ordercli/SKILL.md +78 -0
  1866. package/skills/peekaboo/SKILL.md +190 -0
  1867. package/skills/sag/SKILL.md +87 -0
  1868. package/skills/session-logs/SKILL.md +115 -0
  1869. package/skills/sherpa-onnx-tts/SKILL.md +103 -0
  1870. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  1871. package/skills/skill-creator/SKILL.md +372 -0
  1872. package/skills/skill-creator/license.txt +202 -0
  1873. package/skills/skill-creator/scripts/init_skill.py +378 -0
  1874. package/skills/skill-creator/scripts/package_skill.py +139 -0
  1875. package/skills/skill-creator/scripts/quick_validate.py +159 -0
  1876. package/skills/skill-creator/scripts/test_package_skill.py +160 -0
  1877. package/skills/skill-creator/scripts/test_quick_validate.py +72 -0
  1878. package/skills/slack/SKILL.md +144 -0
  1879. package/skills/songsee/SKILL.md +49 -0
  1880. package/skills/sonoscli/SKILL.md +65 -0
  1881. package/skills/spotify-player/SKILL.md +64 -0
  1882. package/skills/summarize/SKILL.md +87 -0
  1883. package/skills/things-mac/SKILL.md +86 -0
  1884. package/skills/tmux/SKILL.md +153 -0
  1885. package/skills/tmux/scripts/find-sessions.sh +112 -0
  1886. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  1887. package/skills/trello/SKILL.md +95 -0
  1888. package/skills/video-frames/SKILL.md +46 -0
  1889. package/skills/video-frames/scripts/frame.sh +81 -0
  1890. package/skills/voice-call/SKILL.md +45 -0
  1891. package/skills/wacli/SKILL.md +72 -0
  1892. package/skills/weather/SKILL.md +112 -0
  1893. package/skills/xurl/SKILL.md +461 -0
@@ -0,0 +1,2649 @@
1
+ import { _ as resolveStateDir } from "./paths-GHJ97ebE.js";
2
+ import { n as logError, t as logDebug } from "./logger-Cqy7-Maj.js";
3
+ import { n as VERSION } from "./version-DCY9_obP.js";
4
+ import { n as ENV_SECRET_REF_ID_RE } from "./types.secrets-BWSeXrF4.js";
5
+ import { n as FILE_SECRET_REF_ID_PATTERN, r as SECRET_PROVIDER_ALIAS_PATTERN, t as EXEC_SECRET_REF_ID_JSON_SCHEMA_PATTERN } from "./ref-contract-CCBBbf1r.js";
6
+ import { a as isSecureWebSocketUrl, r as isLoopbackHost } from "./net-DlJFp95v.js";
7
+ import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES, p as GATEWAY_CLIENT_IDS } from "./message-channel-Cy-gN4K2.js";
8
+ import { n as normalizeDeviceAuthScopes, t as normalizeDeviceAuthRole } from "./device-auth-GEXe9vqR.js";
9
+ import { t as rawDataToString } from "./ws-By-QcLjg.js";
10
+ import { t as normalizeDeviceMetadataForAuth } from "./device-metadata-normalization-BDSQ_eA7.js";
11
+ import fs from "node:fs";
12
+ import path from "node:path";
13
+ import crypto, { randomUUID } from "node:crypto";
14
+ import { WebSocket } from "ws";
15
+ import Ajv from "ajv";
16
+ import { Type } from "@sinclair/typebox";
17
+ //#region src/infra/device-identity.ts
18
+ function resolveDefaultIdentityPath() {
19
+ return path.join(resolveStateDir(), "identity", "device.json");
20
+ }
21
+ function ensureDir(filePath) {
22
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
23
+ }
24
+ const ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
25
+ function base64UrlEncode(buf) {
26
+ return buf.toString("base64").replaceAll("+", "-").replaceAll("/", "_").replace(/=+$/g, "");
27
+ }
28
+ function base64UrlDecode(input) {
29
+ const normalized = input.replaceAll("-", "+").replaceAll("_", "/");
30
+ const padded = normalized + "=".repeat((4 - normalized.length % 4) % 4);
31
+ return Buffer.from(padded, "base64");
32
+ }
33
+ function derivePublicKeyRaw(publicKeyPem) {
34
+ const spki = crypto.createPublicKey(publicKeyPem).export({
35
+ type: "spki",
36
+ format: "der"
37
+ });
38
+ 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);
39
+ return spki;
40
+ }
41
+ function fingerprintPublicKey(publicKeyPem) {
42
+ const raw = derivePublicKeyRaw(publicKeyPem);
43
+ return crypto.createHash("sha256").update(raw).digest("hex");
44
+ }
45
+ function generateIdentity() {
46
+ const { publicKey, privateKey } = crypto.generateKeyPairSync("ed25519");
47
+ const publicKeyPem = publicKey.export({
48
+ type: "spki",
49
+ format: "pem"
50
+ }).toString();
51
+ const privateKeyPem = privateKey.export({
52
+ type: "pkcs8",
53
+ format: "pem"
54
+ }).toString();
55
+ return {
56
+ deviceId: fingerprintPublicKey(publicKeyPem),
57
+ publicKeyPem,
58
+ privateKeyPem
59
+ };
60
+ }
61
+ function loadOrCreateDeviceIdentity(filePath = resolveDefaultIdentityPath()) {
62
+ try {
63
+ if (fs.existsSync(filePath)) {
64
+ const raw = fs.readFileSync(filePath, "utf8");
65
+ const parsed = JSON.parse(raw);
66
+ if (parsed?.version === 1 && typeof parsed.deviceId === "string" && typeof parsed.publicKeyPem === "string" && typeof parsed.privateKeyPem === "string") {
67
+ const derivedId = fingerprintPublicKey(parsed.publicKeyPem);
68
+ if (derivedId && derivedId !== parsed.deviceId) {
69
+ const updated = {
70
+ ...parsed,
71
+ deviceId: derivedId
72
+ };
73
+ fs.writeFileSync(filePath, `${JSON.stringify(updated, null, 2)}\n`, { mode: 384 });
74
+ try {
75
+ fs.chmodSync(filePath, 384);
76
+ } catch {}
77
+ return {
78
+ deviceId: derivedId,
79
+ publicKeyPem: parsed.publicKeyPem,
80
+ privateKeyPem: parsed.privateKeyPem
81
+ };
82
+ }
83
+ return {
84
+ deviceId: parsed.deviceId,
85
+ publicKeyPem: parsed.publicKeyPem,
86
+ privateKeyPem: parsed.privateKeyPem
87
+ };
88
+ }
89
+ }
90
+ } catch {}
91
+ const identity = generateIdentity();
92
+ ensureDir(filePath);
93
+ const stored = {
94
+ version: 1,
95
+ deviceId: identity.deviceId,
96
+ publicKeyPem: identity.publicKeyPem,
97
+ privateKeyPem: identity.privateKeyPem,
98
+ createdAtMs: Date.now()
99
+ };
100
+ fs.writeFileSync(filePath, `${JSON.stringify(stored, null, 2)}\n`, { mode: 384 });
101
+ try {
102
+ fs.chmodSync(filePath, 384);
103
+ } catch {}
104
+ return identity;
105
+ }
106
+ function signDevicePayload(privateKeyPem, payload) {
107
+ const key = crypto.createPrivateKey(privateKeyPem);
108
+ return base64UrlEncode(crypto.sign(null, Buffer.from(payload, "utf8"), key));
109
+ }
110
+ function normalizeDevicePublicKeyBase64Url(publicKey) {
111
+ try {
112
+ if (publicKey.includes("BEGIN")) return base64UrlEncode(derivePublicKeyRaw(publicKey));
113
+ const raw = base64UrlDecode(publicKey);
114
+ if (raw.length === 0) return null;
115
+ return base64UrlEncode(raw);
116
+ } catch {
117
+ return null;
118
+ }
119
+ }
120
+ function deriveDeviceIdFromPublicKey(publicKey) {
121
+ try {
122
+ const raw = publicKey.includes("BEGIN") ? derivePublicKeyRaw(publicKey) : base64UrlDecode(publicKey);
123
+ if (raw.length === 0) return null;
124
+ return crypto.createHash("sha256").update(raw).digest("hex");
125
+ } catch {
126
+ return null;
127
+ }
128
+ }
129
+ function publicKeyRawBase64UrlFromPem(publicKeyPem) {
130
+ return base64UrlEncode(derivePublicKeyRaw(publicKeyPem));
131
+ }
132
+ function verifyDeviceSignature(publicKey, payload, signatureBase64Url) {
133
+ try {
134
+ const key = publicKey.includes("BEGIN") ? crypto.createPublicKey(publicKey) : crypto.createPublicKey({
135
+ key: Buffer.concat([ED25519_SPKI_PREFIX, base64UrlDecode(publicKey)]),
136
+ type: "spki",
137
+ format: "der"
138
+ });
139
+ const sig = (() => {
140
+ try {
141
+ return base64UrlDecode(signatureBase64Url);
142
+ } catch {
143
+ return Buffer.from(signatureBase64Url, "base64");
144
+ }
145
+ })();
146
+ return crypto.verify(null, Buffer.from(payload, "utf8"), key, sig);
147
+ } catch {
148
+ return false;
149
+ }
150
+ }
151
+ //#endregion
152
+ //#region src/infra/tls/fingerprint.ts
153
+ function normalizeFingerprint(input) {
154
+ return input.trim().replace(/^sha-?256\s*:?\s*/i, "").replace(/[^a-fA-F0-9]/g, "").toLowerCase();
155
+ }
156
+ //#endregion
157
+ //#region src/shared/device-auth-store.ts
158
+ function loadDeviceAuthTokenFromStore(params) {
159
+ const store = params.adapter.readStore();
160
+ if (!store || store.deviceId !== params.deviceId) return null;
161
+ const role = normalizeDeviceAuthRole(params.role);
162
+ const entry = store.tokens[role];
163
+ if (!entry || typeof entry.token !== "string") return null;
164
+ return entry;
165
+ }
166
+ function storeDeviceAuthTokenInStore(params) {
167
+ const role = normalizeDeviceAuthRole(params.role);
168
+ const existing = params.adapter.readStore();
169
+ const next = {
170
+ version: 1,
171
+ deviceId: params.deviceId,
172
+ tokens: existing && existing.deviceId === params.deviceId && existing.tokens ? { ...existing.tokens } : {}
173
+ };
174
+ const entry = {
175
+ token: params.token,
176
+ role,
177
+ scopes: normalizeDeviceAuthScopes(params.scopes),
178
+ updatedAtMs: Date.now()
179
+ };
180
+ next.tokens[role] = entry;
181
+ params.adapter.writeStore(next);
182
+ return entry;
183
+ }
184
+ function clearDeviceAuthTokenFromStore(params) {
185
+ const store = params.adapter.readStore();
186
+ if (!store || store.deviceId !== params.deviceId) return;
187
+ const role = normalizeDeviceAuthRole(params.role);
188
+ if (!store.tokens[role]) return;
189
+ const next = {
190
+ version: 1,
191
+ deviceId: store.deviceId,
192
+ tokens: { ...store.tokens }
193
+ };
194
+ delete next.tokens[role];
195
+ params.adapter.writeStore(next);
196
+ }
197
+ //#endregion
198
+ //#region src/infra/device-auth-store.ts
199
+ const DEVICE_AUTH_FILE = "device-auth.json";
200
+ function resolveDeviceAuthPath(env = process.env) {
201
+ return path.join(resolveStateDir(env), "identity", DEVICE_AUTH_FILE);
202
+ }
203
+ function readStore(filePath) {
204
+ try {
205
+ if (!fs.existsSync(filePath)) return null;
206
+ const raw = fs.readFileSync(filePath, "utf8");
207
+ const parsed = JSON.parse(raw);
208
+ if (parsed?.version !== 1 || typeof parsed.deviceId !== "string") return null;
209
+ if (!parsed.tokens || typeof parsed.tokens !== "object") return null;
210
+ return parsed;
211
+ } catch {
212
+ return null;
213
+ }
214
+ }
215
+ function writeStore(filePath, store) {
216
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
217
+ fs.writeFileSync(filePath, `${JSON.stringify(store, null, 2)}\n`, { mode: 384 });
218
+ try {
219
+ fs.chmodSync(filePath, 384);
220
+ } catch {}
221
+ }
222
+ function loadDeviceAuthToken(params) {
223
+ const filePath = resolveDeviceAuthPath(params.env);
224
+ return loadDeviceAuthTokenFromStore({
225
+ adapter: {
226
+ readStore: () => readStore(filePath),
227
+ writeStore: (_store) => {}
228
+ },
229
+ deviceId: params.deviceId,
230
+ role: params.role
231
+ });
232
+ }
233
+ function storeDeviceAuthToken(params) {
234
+ const filePath = resolveDeviceAuthPath(params.env);
235
+ return storeDeviceAuthTokenInStore({
236
+ adapter: {
237
+ readStore: () => readStore(filePath),
238
+ writeStore: (store) => writeStore(filePath, store)
239
+ },
240
+ deviceId: params.deviceId,
241
+ role: params.role,
242
+ token: params.token,
243
+ scopes: params.scopes
244
+ });
245
+ }
246
+ function clearDeviceAuthToken(params) {
247
+ const filePath = resolveDeviceAuthPath(params.env);
248
+ clearDeviceAuthTokenFromStore({
249
+ adapter: {
250
+ readStore: () => readStore(filePath),
251
+ writeStore: (store) => writeStore(filePath, store)
252
+ },
253
+ deviceId: params.deviceId,
254
+ role: params.role
255
+ });
256
+ }
257
+ //#endregion
258
+ //#region src/gateway/device-auth.ts
259
+ function buildDeviceAuthPayload(params) {
260
+ const scopes = params.scopes.join(",");
261
+ const token = params.token ?? "";
262
+ return [
263
+ "v2",
264
+ params.deviceId,
265
+ params.clientId,
266
+ params.clientMode,
267
+ params.role,
268
+ scopes,
269
+ String(params.signedAtMs),
270
+ token,
271
+ params.nonce
272
+ ].join("|");
273
+ }
274
+ function buildDeviceAuthPayloadV3(params) {
275
+ const scopes = params.scopes.join(",");
276
+ const token = params.token ?? "";
277
+ const platform = normalizeDeviceMetadataForAuth(params.platform);
278
+ const deviceFamily = normalizeDeviceMetadataForAuth(params.deviceFamily);
279
+ return [
280
+ "v3",
281
+ params.deviceId,
282
+ params.clientId,
283
+ params.clientMode,
284
+ params.role,
285
+ scopes,
286
+ String(params.signedAtMs),
287
+ token,
288
+ params.nonce,
289
+ platform,
290
+ deviceFamily
291
+ ].join("|");
292
+ }
293
+ //#endregion
294
+ //#region src/gateway/protocol/connect-error-details.ts
295
+ const ConnectErrorDetailCodes = {
296
+ AUTH_REQUIRED: "AUTH_REQUIRED",
297
+ AUTH_UNAUTHORIZED: "AUTH_UNAUTHORIZED",
298
+ AUTH_TOKEN_MISSING: "AUTH_TOKEN_MISSING",
299
+ AUTH_TOKEN_MISMATCH: "AUTH_TOKEN_MISMATCH",
300
+ AUTH_TOKEN_NOT_CONFIGURED: "AUTH_TOKEN_NOT_CONFIGURED",
301
+ AUTH_PASSWORD_MISSING: "AUTH_PASSWORD_MISSING",
302
+ AUTH_PASSWORD_MISMATCH: "AUTH_PASSWORD_MISMATCH",
303
+ AUTH_PASSWORD_NOT_CONFIGURED: "AUTH_PASSWORD_NOT_CONFIGURED",
304
+ AUTH_BOOTSTRAP_TOKEN_INVALID: "AUTH_BOOTSTRAP_TOKEN_INVALID",
305
+ AUTH_DEVICE_TOKEN_MISMATCH: "AUTH_DEVICE_TOKEN_MISMATCH",
306
+ AUTH_RATE_LIMITED: "AUTH_RATE_LIMITED",
307
+ AUTH_TAILSCALE_IDENTITY_MISSING: "AUTH_TAILSCALE_IDENTITY_MISSING",
308
+ AUTH_TAILSCALE_PROXY_MISSING: "AUTH_TAILSCALE_PROXY_MISSING",
309
+ AUTH_TAILSCALE_WHOIS_FAILED: "AUTH_TAILSCALE_WHOIS_FAILED",
310
+ AUTH_TAILSCALE_IDENTITY_MISMATCH: "AUTH_TAILSCALE_IDENTITY_MISMATCH",
311
+ CONTROL_UI_ORIGIN_NOT_ALLOWED: "CONTROL_UI_ORIGIN_NOT_ALLOWED",
312
+ CONTROL_UI_DEVICE_IDENTITY_REQUIRED: "CONTROL_UI_DEVICE_IDENTITY_REQUIRED",
313
+ DEVICE_IDENTITY_REQUIRED: "DEVICE_IDENTITY_REQUIRED",
314
+ DEVICE_AUTH_INVALID: "DEVICE_AUTH_INVALID",
315
+ DEVICE_AUTH_DEVICE_ID_MISMATCH: "DEVICE_AUTH_DEVICE_ID_MISMATCH",
316
+ DEVICE_AUTH_SIGNATURE_EXPIRED: "DEVICE_AUTH_SIGNATURE_EXPIRED",
317
+ DEVICE_AUTH_NONCE_REQUIRED: "DEVICE_AUTH_NONCE_REQUIRED",
318
+ DEVICE_AUTH_NONCE_MISMATCH: "DEVICE_AUTH_NONCE_MISMATCH",
319
+ DEVICE_AUTH_SIGNATURE_INVALID: "DEVICE_AUTH_SIGNATURE_INVALID",
320
+ DEVICE_AUTH_PUBLIC_KEY_INVALID: "DEVICE_AUTH_PUBLIC_KEY_INVALID",
321
+ PAIRING_REQUIRED: "PAIRING_REQUIRED"
322
+ };
323
+ const CONNECT_RECOVERY_NEXT_STEP_VALUES = new Set([
324
+ "retry_with_device_token",
325
+ "update_auth_configuration",
326
+ "update_auth_credentials",
327
+ "wait_then_retry",
328
+ "review_auth_configuration"
329
+ ]);
330
+ function resolveAuthConnectErrorDetailCode(reason) {
331
+ switch (reason) {
332
+ case "token_missing": return ConnectErrorDetailCodes.AUTH_TOKEN_MISSING;
333
+ case "token_mismatch": return ConnectErrorDetailCodes.AUTH_TOKEN_MISMATCH;
334
+ case "token_missing_config": return ConnectErrorDetailCodes.AUTH_TOKEN_NOT_CONFIGURED;
335
+ case "password_missing": return ConnectErrorDetailCodes.AUTH_PASSWORD_MISSING;
336
+ case "password_mismatch": return ConnectErrorDetailCodes.AUTH_PASSWORD_MISMATCH;
337
+ case "password_missing_config": return ConnectErrorDetailCodes.AUTH_PASSWORD_NOT_CONFIGURED;
338
+ case "bootstrap_token_invalid": return ConnectErrorDetailCodes.AUTH_BOOTSTRAP_TOKEN_INVALID;
339
+ case "tailscale_user_missing": return ConnectErrorDetailCodes.AUTH_TAILSCALE_IDENTITY_MISSING;
340
+ case "tailscale_proxy_missing": return ConnectErrorDetailCodes.AUTH_TAILSCALE_PROXY_MISSING;
341
+ case "tailscale_whois_failed": return ConnectErrorDetailCodes.AUTH_TAILSCALE_WHOIS_FAILED;
342
+ case "tailscale_user_mismatch": return ConnectErrorDetailCodes.AUTH_TAILSCALE_IDENTITY_MISMATCH;
343
+ case "rate_limited": return ConnectErrorDetailCodes.AUTH_RATE_LIMITED;
344
+ case "device_token_mismatch": return ConnectErrorDetailCodes.AUTH_DEVICE_TOKEN_MISMATCH;
345
+ case void 0: return ConnectErrorDetailCodes.AUTH_REQUIRED;
346
+ default: return ConnectErrorDetailCodes.AUTH_UNAUTHORIZED;
347
+ }
348
+ }
349
+ function resolveDeviceAuthConnectErrorDetailCode(reason) {
350
+ switch (reason) {
351
+ case "device-id-mismatch": return ConnectErrorDetailCodes.DEVICE_AUTH_DEVICE_ID_MISMATCH;
352
+ case "device-signature-stale": return ConnectErrorDetailCodes.DEVICE_AUTH_SIGNATURE_EXPIRED;
353
+ case "device-nonce-missing": return ConnectErrorDetailCodes.DEVICE_AUTH_NONCE_REQUIRED;
354
+ case "device-nonce-mismatch": return ConnectErrorDetailCodes.DEVICE_AUTH_NONCE_MISMATCH;
355
+ case "device-signature": return ConnectErrorDetailCodes.DEVICE_AUTH_SIGNATURE_INVALID;
356
+ case "device-public-key": return ConnectErrorDetailCodes.DEVICE_AUTH_PUBLIC_KEY_INVALID;
357
+ default: return ConnectErrorDetailCodes.DEVICE_AUTH_INVALID;
358
+ }
359
+ }
360
+ function readConnectErrorDetailCode(details) {
361
+ if (!details || typeof details !== "object" || Array.isArray(details)) return null;
362
+ const code = details.code;
363
+ return typeof code === "string" && code.trim().length > 0 ? code : null;
364
+ }
365
+ function readConnectErrorRecoveryAdvice(details) {
366
+ if (!details || typeof details !== "object" || Array.isArray(details)) return {};
367
+ const raw = details;
368
+ const canRetryWithDeviceToken = typeof raw.canRetryWithDeviceToken === "boolean" ? raw.canRetryWithDeviceToken : void 0;
369
+ const normalizedNextStep = typeof raw.recommendedNextStep === "string" ? raw.recommendedNextStep.trim() : "";
370
+ return {
371
+ canRetryWithDeviceToken,
372
+ recommendedNextStep: CONNECT_RECOVERY_NEXT_STEP_VALUES.has(normalizedNextStep) ? normalizedNextStep : void 0
373
+ };
374
+ }
375
+ //#endregion
376
+ //#region src/sessions/input-provenance.ts
377
+ const INPUT_PROVENANCE_KIND_VALUES = [
378
+ "external_user",
379
+ "inter_session",
380
+ "internal_system"
381
+ ];
382
+ function normalizeOptionalString(value) {
383
+ if (typeof value !== "string") return;
384
+ const trimmed = value.trim();
385
+ return trimmed ? trimmed : void 0;
386
+ }
387
+ function isInputProvenanceKind(value) {
388
+ return typeof value === "string" && INPUT_PROVENANCE_KIND_VALUES.includes(value);
389
+ }
390
+ function normalizeInputProvenance(value) {
391
+ if (!value || typeof value !== "object") return;
392
+ const record = value;
393
+ if (!isInputProvenanceKind(record.kind)) return;
394
+ return {
395
+ kind: record.kind,
396
+ originSessionId: normalizeOptionalString(record.originSessionId),
397
+ sourceSessionKey: normalizeOptionalString(record.sourceSessionKey),
398
+ sourceChannel: normalizeOptionalString(record.sourceChannel),
399
+ sourceTool: normalizeOptionalString(record.sourceTool)
400
+ };
401
+ }
402
+ function applyInputProvenanceToUserMessage(message, inputProvenance) {
403
+ if (!inputProvenance) return message;
404
+ if (message.role !== "user") return message;
405
+ if (normalizeInputProvenance(message.provenance)) return message;
406
+ return {
407
+ ...message,
408
+ provenance: inputProvenance
409
+ };
410
+ }
411
+ function isInterSessionInputProvenance(value) {
412
+ return normalizeInputProvenance(value)?.kind === "inter_session";
413
+ }
414
+ function hasInterSessionUserProvenance(message) {
415
+ if (!message || message.role !== "user") return false;
416
+ return isInterSessionInputProvenance(message.provenance);
417
+ }
418
+ function parseSessionLabel(raw) {
419
+ if (typeof raw !== "string") return {
420
+ ok: false,
421
+ error: "invalid label: must be a string"
422
+ };
423
+ const trimmed = raw.trim();
424
+ if (!trimmed) return {
425
+ ok: false,
426
+ error: "invalid label: empty"
427
+ };
428
+ if (trimmed.length > 512) return {
429
+ ok: false,
430
+ error: `invalid label: too long (max 512)`
431
+ };
432
+ return {
433
+ ok: true,
434
+ label: trimmed
435
+ };
436
+ }
437
+ //#endregion
438
+ //#region src/gateway/protocol/schema/primitives.ts
439
+ const NonEmptyString = Type.String({ minLength: 1 });
440
+ const ChatSendSessionKeyString = Type.String({
441
+ minLength: 1,
442
+ maxLength: 512
443
+ });
444
+ const SessionLabelString = Type.String({
445
+ minLength: 1,
446
+ maxLength: 512
447
+ });
448
+ const InputProvenanceSchema = Type.Object({
449
+ kind: Type.String({ enum: [...INPUT_PROVENANCE_KIND_VALUES] }),
450
+ originSessionId: Type.Optional(Type.String()),
451
+ sourceSessionKey: Type.Optional(Type.String()),
452
+ sourceChannel: Type.Optional(Type.String()),
453
+ sourceTool: Type.Optional(Type.String())
454
+ }, { additionalProperties: false });
455
+ const GatewayClientIdSchema = Type.Union(Object.values(GATEWAY_CLIENT_IDS).map((value) => Type.Literal(value)));
456
+ const GatewayClientModeSchema = Type.Union(Object.values(GATEWAY_CLIENT_MODES).map((value) => Type.Literal(value)));
457
+ Type.Union([
458
+ Type.Literal("env"),
459
+ Type.Literal("file"),
460
+ Type.Literal("exec")
461
+ ]);
462
+ const SecretProviderAliasString = Type.String({ pattern: SECRET_PROVIDER_ALIAS_PATTERN.source });
463
+ const EnvSecretRefSchema = Type.Object({
464
+ source: Type.Literal("env"),
465
+ provider: SecretProviderAliasString,
466
+ id: Type.String({ pattern: ENV_SECRET_REF_ID_RE.source })
467
+ }, { additionalProperties: false });
468
+ const FileSecretRefSchema = Type.Object({
469
+ source: Type.Literal("file"),
470
+ provider: SecretProviderAliasString,
471
+ id: Type.String({ pattern: FILE_SECRET_REF_ID_PATTERN.source })
472
+ }, { additionalProperties: false });
473
+ const ExecSecretRefSchema = Type.Object({
474
+ source: Type.Literal("exec"),
475
+ provider: SecretProviderAliasString,
476
+ id: Type.String({ pattern: EXEC_SECRET_REF_ID_JSON_SCHEMA_PATTERN })
477
+ }, { additionalProperties: false });
478
+ const SecretRefSchema = Type.Union([
479
+ EnvSecretRefSchema,
480
+ FileSecretRefSchema,
481
+ ExecSecretRefSchema
482
+ ]);
483
+ const SecretInputSchema = Type.Union([Type.String(), SecretRefSchema]);
484
+ //#endregion
485
+ //#region src/gateway/protocol/schema/agent.ts
486
+ const AgentInternalEventSchema = Type.Object({
487
+ type: Type.Literal("task_completion"),
488
+ source: Type.String({ enum: ["subagent", "cron"] }),
489
+ childSessionKey: Type.String(),
490
+ childSessionId: Type.Optional(Type.String()),
491
+ announceType: Type.String(),
492
+ taskLabel: Type.String(),
493
+ status: Type.String({ enum: [
494
+ "ok",
495
+ "timeout",
496
+ "error",
497
+ "unknown"
498
+ ] }),
499
+ statusLabel: Type.String(),
500
+ result: Type.String(),
501
+ statsLine: Type.Optional(Type.String()),
502
+ replyInstruction: Type.String()
503
+ }, { additionalProperties: false });
504
+ Type.Object({
505
+ runId: NonEmptyString,
506
+ seq: Type.Integer({ minimum: 0 }),
507
+ stream: NonEmptyString,
508
+ ts: Type.Integer({ minimum: 0 }),
509
+ data: Type.Record(Type.String(), Type.Unknown())
510
+ }, { additionalProperties: false });
511
+ const SendParamsSchema = Type.Object({
512
+ to: NonEmptyString,
513
+ message: Type.Optional(Type.String()),
514
+ mediaUrl: Type.Optional(Type.String()),
515
+ mediaUrls: Type.Optional(Type.Array(Type.String())),
516
+ gifPlayback: Type.Optional(Type.Boolean()),
517
+ channel: Type.Optional(Type.String()),
518
+ accountId: Type.Optional(Type.String()),
519
+ agentId: Type.Optional(Type.String()),
520
+ threadId: Type.Optional(Type.String()),
521
+ sessionKey: Type.Optional(Type.String()),
522
+ idempotencyKey: NonEmptyString
523
+ }, { additionalProperties: false });
524
+ const PollParamsSchema = Type.Object({
525
+ to: NonEmptyString,
526
+ question: NonEmptyString,
527
+ options: Type.Array(NonEmptyString, {
528
+ minItems: 2,
529
+ maxItems: 12
530
+ }),
531
+ maxSelections: Type.Optional(Type.Integer({
532
+ minimum: 1,
533
+ maximum: 12
534
+ })),
535
+ durationSeconds: Type.Optional(Type.Integer({
536
+ minimum: 1,
537
+ maximum: 604800
538
+ })),
539
+ durationHours: Type.Optional(Type.Integer({ minimum: 1 })),
540
+ silent: Type.Optional(Type.Boolean()),
541
+ isAnonymous: Type.Optional(Type.Boolean()),
542
+ threadId: Type.Optional(Type.String()),
543
+ channel: Type.Optional(Type.String()),
544
+ accountId: Type.Optional(Type.String()),
545
+ idempotencyKey: NonEmptyString
546
+ }, { additionalProperties: false });
547
+ const AgentParamsSchema = Type.Object({
548
+ message: NonEmptyString,
549
+ agentId: Type.Optional(NonEmptyString),
550
+ provider: Type.Optional(Type.String()),
551
+ model: Type.Optional(Type.String()),
552
+ to: Type.Optional(Type.String()),
553
+ replyTo: Type.Optional(Type.String()),
554
+ sessionId: Type.Optional(Type.String()),
555
+ sessionKey: Type.Optional(Type.String()),
556
+ thinking: Type.Optional(Type.String()),
557
+ deliver: Type.Optional(Type.Boolean()),
558
+ attachments: Type.Optional(Type.Array(Type.Unknown())),
559
+ channel: Type.Optional(Type.String()),
560
+ replyChannel: Type.Optional(Type.String()),
561
+ accountId: Type.Optional(Type.String()),
562
+ replyAccountId: Type.Optional(Type.String()),
563
+ threadId: Type.Optional(Type.String()),
564
+ groupId: Type.Optional(Type.String()),
565
+ groupChannel: Type.Optional(Type.String()),
566
+ groupSpace: Type.Optional(Type.String()),
567
+ timeout: Type.Optional(Type.Integer({ minimum: 0 })),
568
+ bestEffortDeliver: Type.Optional(Type.Boolean()),
569
+ lane: Type.Optional(Type.String()),
570
+ extraSystemPrompt: Type.Optional(Type.String()),
571
+ internalEvents: Type.Optional(Type.Array(AgentInternalEventSchema)),
572
+ inputProvenance: Type.Optional(InputProvenanceSchema),
573
+ idempotencyKey: NonEmptyString,
574
+ label: Type.Optional(SessionLabelString)
575
+ }, { additionalProperties: false });
576
+ const AgentIdentityParamsSchema = Type.Object({
577
+ agentId: Type.Optional(NonEmptyString),
578
+ sessionKey: Type.Optional(Type.String())
579
+ }, { additionalProperties: false });
580
+ Type.Object({
581
+ agentId: NonEmptyString,
582
+ name: Type.Optional(NonEmptyString),
583
+ avatar: Type.Optional(NonEmptyString),
584
+ emoji: Type.Optional(NonEmptyString)
585
+ }, { additionalProperties: false });
586
+ const AgentWaitParamsSchema = Type.Object({
587
+ runId: NonEmptyString,
588
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 }))
589
+ }, { additionalProperties: false });
590
+ const WakeParamsSchema = Type.Object({
591
+ mode: Type.Union([Type.Literal("now"), Type.Literal("next-heartbeat")]),
592
+ text: NonEmptyString
593
+ }, { additionalProperties: false });
594
+ //#endregion
595
+ //#region src/gateway/protocol/schema/agents-models-skills.ts
596
+ const ModelChoiceSchema = Type.Object({
597
+ id: NonEmptyString,
598
+ name: NonEmptyString,
599
+ provider: NonEmptyString,
600
+ contextWindow: Type.Optional(Type.Integer({ minimum: 1 })),
601
+ reasoning: Type.Optional(Type.Boolean())
602
+ }, { additionalProperties: false });
603
+ const AgentSummarySchema = Type.Object({
604
+ id: NonEmptyString,
605
+ name: Type.Optional(NonEmptyString),
606
+ identity: Type.Optional(Type.Object({
607
+ name: Type.Optional(NonEmptyString),
608
+ theme: Type.Optional(NonEmptyString),
609
+ emoji: Type.Optional(NonEmptyString),
610
+ avatar: Type.Optional(NonEmptyString),
611
+ avatarUrl: Type.Optional(NonEmptyString)
612
+ }, { additionalProperties: false }))
613
+ }, { additionalProperties: false });
614
+ const AgentsListParamsSchema = Type.Object({}, { additionalProperties: false });
615
+ Type.Object({
616
+ defaultId: NonEmptyString,
617
+ mainKey: NonEmptyString,
618
+ scope: Type.Union([Type.Literal("per-sender"), Type.Literal("global")]),
619
+ agents: Type.Array(AgentSummarySchema)
620
+ }, { additionalProperties: false });
621
+ const AgentsCreateParamsSchema = Type.Object({
622
+ name: NonEmptyString,
623
+ workspace: NonEmptyString,
624
+ emoji: Type.Optional(Type.String()),
625
+ avatar: Type.Optional(Type.String())
626
+ }, { additionalProperties: false });
627
+ Type.Object({
628
+ ok: Type.Literal(true),
629
+ agentId: NonEmptyString,
630
+ name: NonEmptyString,
631
+ workspace: NonEmptyString
632
+ }, { additionalProperties: false });
633
+ const AgentsUpdateParamsSchema = Type.Object({
634
+ agentId: NonEmptyString,
635
+ name: Type.Optional(NonEmptyString),
636
+ workspace: Type.Optional(NonEmptyString),
637
+ model: Type.Optional(NonEmptyString),
638
+ avatar: Type.Optional(Type.String())
639
+ }, { additionalProperties: false });
640
+ Type.Object({
641
+ ok: Type.Literal(true),
642
+ agentId: NonEmptyString
643
+ }, { additionalProperties: false });
644
+ const AgentsDeleteParamsSchema = Type.Object({
645
+ agentId: NonEmptyString,
646
+ deleteFiles: Type.Optional(Type.Boolean())
647
+ }, { additionalProperties: false });
648
+ Type.Object({
649
+ ok: Type.Literal(true),
650
+ agentId: NonEmptyString,
651
+ removedBindings: Type.Integer({ minimum: 0 })
652
+ }, { additionalProperties: false });
653
+ const AgentsFileEntrySchema = Type.Object({
654
+ name: NonEmptyString,
655
+ path: NonEmptyString,
656
+ missing: Type.Boolean(),
657
+ size: Type.Optional(Type.Integer({ minimum: 0 })),
658
+ updatedAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
659
+ content: Type.Optional(Type.String())
660
+ }, { additionalProperties: false });
661
+ const AgentsFilesListParamsSchema = Type.Object({ agentId: NonEmptyString }, { additionalProperties: false });
662
+ Type.Object({
663
+ agentId: NonEmptyString,
664
+ workspace: NonEmptyString,
665
+ files: Type.Array(AgentsFileEntrySchema)
666
+ }, { additionalProperties: false });
667
+ const AgentsFilesGetParamsSchema = Type.Object({
668
+ agentId: NonEmptyString,
669
+ name: NonEmptyString
670
+ }, { additionalProperties: false });
671
+ Type.Object({
672
+ agentId: NonEmptyString,
673
+ workspace: NonEmptyString,
674
+ file: AgentsFileEntrySchema
675
+ }, { additionalProperties: false });
676
+ const AgentsFilesSetParamsSchema = Type.Object({
677
+ agentId: NonEmptyString,
678
+ name: NonEmptyString,
679
+ content: Type.String()
680
+ }, { additionalProperties: false });
681
+ Type.Object({
682
+ ok: Type.Literal(true),
683
+ agentId: NonEmptyString,
684
+ workspace: NonEmptyString,
685
+ file: AgentsFileEntrySchema
686
+ }, { additionalProperties: false });
687
+ const ModelsListParamsSchema = Type.Object({}, { additionalProperties: false });
688
+ Type.Object({ models: Type.Array(ModelChoiceSchema) }, { additionalProperties: false });
689
+ const SkillsStatusParamsSchema = Type.Object({ agentId: Type.Optional(NonEmptyString) }, { additionalProperties: false });
690
+ const SkillsBinsParamsSchema = Type.Object({}, { additionalProperties: false });
691
+ Type.Object({ bins: Type.Array(NonEmptyString) }, { additionalProperties: false });
692
+ const SkillsInstallParamsSchema = Type.Object({
693
+ name: NonEmptyString,
694
+ installId: NonEmptyString,
695
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 1e3 }))
696
+ }, { additionalProperties: false });
697
+ const SkillsUpdateParamsSchema = Type.Object({
698
+ skillKey: NonEmptyString,
699
+ enabled: Type.Optional(Type.Boolean()),
700
+ apiKey: Type.Optional(Type.String()),
701
+ env: Type.Optional(Type.Record(NonEmptyString, Type.String()))
702
+ }, { additionalProperties: false });
703
+ const ToolsCatalogParamsSchema = Type.Object({
704
+ agentId: Type.Optional(NonEmptyString),
705
+ includePlugins: Type.Optional(Type.Boolean())
706
+ }, { additionalProperties: false });
707
+ const ToolCatalogProfileSchema = Type.Object({
708
+ id: Type.Union([
709
+ Type.Literal("minimal"),
710
+ Type.Literal("coding"),
711
+ Type.Literal("messaging"),
712
+ Type.Literal("full")
713
+ ]),
714
+ label: NonEmptyString
715
+ }, { additionalProperties: false });
716
+ const ToolCatalogEntrySchema = Type.Object({
717
+ id: NonEmptyString,
718
+ label: NonEmptyString,
719
+ description: Type.String(),
720
+ source: Type.Union([Type.Literal("core"), Type.Literal("plugin")]),
721
+ pluginId: Type.Optional(NonEmptyString),
722
+ optional: Type.Optional(Type.Boolean()),
723
+ defaultProfiles: Type.Array(Type.Union([
724
+ Type.Literal("minimal"),
725
+ Type.Literal("coding"),
726
+ Type.Literal("messaging"),
727
+ Type.Literal("full")
728
+ ]))
729
+ }, { additionalProperties: false });
730
+ const ToolCatalogGroupSchema = Type.Object({
731
+ id: NonEmptyString,
732
+ label: NonEmptyString,
733
+ source: Type.Union([Type.Literal("core"), Type.Literal("plugin")]),
734
+ pluginId: Type.Optional(NonEmptyString),
735
+ tools: Type.Array(ToolCatalogEntrySchema)
736
+ }, { additionalProperties: false });
737
+ Type.Object({
738
+ agentId: NonEmptyString,
739
+ profiles: Type.Array(ToolCatalogProfileSchema),
740
+ groups: Type.Array(ToolCatalogGroupSchema)
741
+ }, { additionalProperties: false });
742
+ //#endregion
743
+ //#region src/gateway/protocol/schema/channels.ts
744
+ const TalkModeParamsSchema = Type.Object({
745
+ enabled: Type.Boolean(),
746
+ phase: Type.Optional(Type.String())
747
+ }, { additionalProperties: false });
748
+ const TalkConfigParamsSchema = Type.Object({ includeSecrets: Type.Optional(Type.Boolean()) }, { additionalProperties: false });
749
+ const TalkSpeakParamsSchema = Type.Object({
750
+ text: NonEmptyString,
751
+ voiceId: Type.Optional(Type.String()),
752
+ modelId: Type.Optional(Type.String()),
753
+ outputFormat: Type.Optional(Type.String()),
754
+ speed: Type.Optional(Type.Number()),
755
+ stability: Type.Optional(Type.Number()),
756
+ similarity: Type.Optional(Type.Number()),
757
+ style: Type.Optional(Type.Number()),
758
+ speakerBoost: Type.Optional(Type.Boolean()),
759
+ seed: Type.Optional(Type.Integer({ minimum: 0 })),
760
+ normalize: Type.Optional(Type.String()),
761
+ language: Type.Optional(Type.String())
762
+ }, { additionalProperties: false });
763
+ const talkProviderFieldSchemas = {
764
+ voiceId: Type.Optional(Type.String()),
765
+ voiceAliases: Type.Optional(Type.Record(Type.String(), Type.String())),
766
+ modelId: Type.Optional(Type.String()),
767
+ outputFormat: Type.Optional(Type.String()),
768
+ apiKey: Type.Optional(SecretInputSchema)
769
+ };
770
+ const TalkProviderConfigSchema = Type.Object(talkProviderFieldSchemas, { additionalProperties: true });
771
+ const ResolvedTalkConfigSchema = Type.Object({
772
+ provider: Type.String(),
773
+ config: TalkProviderConfigSchema
774
+ }, { additionalProperties: false });
775
+ const LegacyTalkConfigSchema = Type.Object({
776
+ ...talkProviderFieldSchemas,
777
+ interruptOnSpeech: Type.Optional(Type.Boolean()),
778
+ silenceTimeoutMs: Type.Optional(Type.Integer({ minimum: 1 }))
779
+ }, { additionalProperties: false });
780
+ const NormalizedTalkConfigSchema = Type.Object({
781
+ provider: Type.Optional(Type.String()),
782
+ providers: Type.Optional(Type.Record(Type.String(), TalkProviderConfigSchema)),
783
+ resolved: ResolvedTalkConfigSchema,
784
+ ...talkProviderFieldSchemas,
785
+ interruptOnSpeech: Type.Optional(Type.Boolean()),
786
+ silenceTimeoutMs: Type.Optional(Type.Integer({ minimum: 1 }))
787
+ }, { additionalProperties: false });
788
+ const TalkConfigResultSchema = Type.Object({ config: Type.Object({
789
+ talk: Type.Optional(Type.Union([LegacyTalkConfigSchema, NormalizedTalkConfigSchema])),
790
+ session: Type.Optional(Type.Object({ mainKey: Type.Optional(Type.String()) }, { additionalProperties: false })),
791
+ ui: Type.Optional(Type.Object({ seamColor: Type.Optional(Type.String()) }, { additionalProperties: false }))
792
+ }, { additionalProperties: false }) }, { additionalProperties: false });
793
+ const TalkSpeakResultSchema = Type.Object({
794
+ audioBase64: NonEmptyString,
795
+ provider: NonEmptyString,
796
+ outputFormat: Type.Optional(Type.String()),
797
+ voiceCompatible: Type.Optional(Type.Boolean()),
798
+ mimeType: Type.Optional(Type.String()),
799
+ fileExtension: Type.Optional(Type.String())
800
+ }, { additionalProperties: false });
801
+ const ChannelsStatusParamsSchema = Type.Object({
802
+ probe: Type.Optional(Type.Boolean()),
803
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 }))
804
+ }, { additionalProperties: false });
805
+ const ChannelAccountSnapshotSchema = Type.Object({
806
+ accountId: NonEmptyString,
807
+ name: Type.Optional(Type.String()),
808
+ enabled: Type.Optional(Type.Boolean()),
809
+ configured: Type.Optional(Type.Boolean()),
810
+ linked: Type.Optional(Type.Boolean()),
811
+ running: Type.Optional(Type.Boolean()),
812
+ connected: Type.Optional(Type.Boolean()),
813
+ reconnectAttempts: Type.Optional(Type.Integer({ minimum: 0 })),
814
+ lastConnectedAt: Type.Optional(Type.Integer({ minimum: 0 })),
815
+ lastError: Type.Optional(Type.String()),
816
+ lastStartAt: Type.Optional(Type.Integer({ minimum: 0 })),
817
+ lastStopAt: Type.Optional(Type.Integer({ minimum: 0 })),
818
+ lastInboundAt: Type.Optional(Type.Integer({ minimum: 0 })),
819
+ lastOutboundAt: Type.Optional(Type.Integer({ minimum: 0 })),
820
+ busy: Type.Optional(Type.Boolean()),
821
+ activeRuns: Type.Optional(Type.Integer({ minimum: 0 })),
822
+ lastRunActivityAt: Type.Optional(Type.Integer({ minimum: 0 })),
823
+ lastProbeAt: Type.Optional(Type.Integer({ minimum: 0 })),
824
+ mode: Type.Optional(Type.String()),
825
+ dmPolicy: Type.Optional(Type.String()),
826
+ allowFrom: Type.Optional(Type.Array(Type.String())),
827
+ tokenSource: Type.Optional(Type.String()),
828
+ botTokenSource: Type.Optional(Type.String()),
829
+ appTokenSource: Type.Optional(Type.String()),
830
+ baseUrl: Type.Optional(Type.String()),
831
+ allowUnmentionedGroups: Type.Optional(Type.Boolean()),
832
+ cliPath: Type.Optional(Type.Union([Type.String(), Type.Null()])),
833
+ dbPath: Type.Optional(Type.Union([Type.String(), Type.Null()])),
834
+ port: Type.Optional(Type.Union([Type.Integer({ minimum: 0 }), Type.Null()])),
835
+ probe: Type.Optional(Type.Unknown()),
836
+ audit: Type.Optional(Type.Unknown()),
837
+ application: Type.Optional(Type.Unknown())
838
+ }, { additionalProperties: true });
839
+ const ChannelUiMetaSchema = Type.Object({
840
+ id: NonEmptyString,
841
+ label: NonEmptyString,
842
+ detailLabel: NonEmptyString,
843
+ systemImage: Type.Optional(Type.String())
844
+ }, { additionalProperties: false });
845
+ Type.Object({
846
+ ts: Type.Integer({ minimum: 0 }),
847
+ channelOrder: Type.Array(NonEmptyString),
848
+ channelLabels: Type.Record(NonEmptyString, NonEmptyString),
849
+ channelDetailLabels: Type.Optional(Type.Record(NonEmptyString, NonEmptyString)),
850
+ channelSystemImages: Type.Optional(Type.Record(NonEmptyString, NonEmptyString)),
851
+ channelMeta: Type.Optional(Type.Array(ChannelUiMetaSchema)),
852
+ channels: Type.Record(NonEmptyString, Type.Unknown()),
853
+ channelAccounts: Type.Record(NonEmptyString, Type.Array(ChannelAccountSnapshotSchema)),
854
+ channelDefaultAccountId: Type.Record(NonEmptyString, NonEmptyString)
855
+ }, { additionalProperties: false });
856
+ const ChannelsLogoutParamsSchema = Type.Object({
857
+ channel: NonEmptyString,
858
+ accountId: Type.Optional(Type.String())
859
+ }, { additionalProperties: false });
860
+ const WebLoginStartParamsSchema = Type.Object({
861
+ force: Type.Optional(Type.Boolean()),
862
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
863
+ verbose: Type.Optional(Type.Boolean()),
864
+ accountId: Type.Optional(Type.String())
865
+ }, { additionalProperties: false });
866
+ const WebLoginWaitParamsSchema = Type.Object({
867
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
868
+ accountId: Type.Optional(Type.String())
869
+ }, { additionalProperties: false });
870
+ //#endregion
871
+ //#region src/gateway/protocol/schema/config.ts
872
+ const ConfigSchemaLookupPathString = Type.String({
873
+ minLength: 1,
874
+ maxLength: 1024,
875
+ pattern: "^[A-Za-z0-9_./\\[\\]\\-*]+$"
876
+ });
877
+ const ConfigGetParamsSchema = Type.Object({}, { additionalProperties: false });
878
+ const ConfigSetParamsSchema = Type.Object({
879
+ raw: NonEmptyString,
880
+ baseHash: Type.Optional(NonEmptyString)
881
+ }, { additionalProperties: false });
882
+ const ConfigApplyLikeParamsSchema = Type.Object({
883
+ raw: NonEmptyString,
884
+ baseHash: Type.Optional(NonEmptyString),
885
+ sessionKey: Type.Optional(Type.String()),
886
+ note: Type.Optional(Type.String()),
887
+ restartDelayMs: Type.Optional(Type.Integer({ minimum: 0 }))
888
+ }, { additionalProperties: false });
889
+ const ConfigApplyParamsSchema = ConfigApplyLikeParamsSchema;
890
+ const ConfigPatchParamsSchema = ConfigApplyLikeParamsSchema;
891
+ const ConfigSchemaParamsSchema = Type.Object({}, { additionalProperties: false });
892
+ const ConfigSchemaLookupParamsSchema = Type.Object({ path: ConfigSchemaLookupPathString }, { additionalProperties: false });
893
+ const UpdateRunParamsSchema = Type.Object({
894
+ sessionKey: Type.Optional(Type.String()),
895
+ note: Type.Optional(Type.String()),
896
+ restartDelayMs: Type.Optional(Type.Integer({ minimum: 0 })),
897
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 1 }))
898
+ }, { additionalProperties: false });
899
+ const ConfigUiHintSchema = Type.Object({
900
+ label: Type.Optional(Type.String()),
901
+ help: Type.Optional(Type.String()),
902
+ tags: Type.Optional(Type.Array(Type.String())),
903
+ group: Type.Optional(Type.String()),
904
+ order: Type.Optional(Type.Integer()),
905
+ advanced: Type.Optional(Type.Boolean()),
906
+ sensitive: Type.Optional(Type.Boolean()),
907
+ placeholder: Type.Optional(Type.String()),
908
+ itemTemplate: Type.Optional(Type.Unknown())
909
+ }, { additionalProperties: false });
910
+ Type.Object({
911
+ schema: Type.Unknown(),
912
+ uiHints: Type.Record(Type.String(), ConfigUiHintSchema),
913
+ version: NonEmptyString,
914
+ generatedAt: NonEmptyString
915
+ }, { additionalProperties: false });
916
+ const ConfigSchemaLookupChildSchema = Type.Object({
917
+ key: NonEmptyString,
918
+ path: NonEmptyString,
919
+ type: Type.Optional(Type.Union([Type.String(), Type.Array(Type.String())])),
920
+ required: Type.Boolean(),
921
+ hasChildren: Type.Boolean(),
922
+ hint: Type.Optional(ConfigUiHintSchema),
923
+ hintPath: Type.Optional(Type.String())
924
+ }, { additionalProperties: false });
925
+ const ConfigSchemaLookupResultSchema = Type.Object({
926
+ path: NonEmptyString,
927
+ schema: Type.Unknown(),
928
+ hint: Type.Optional(ConfigUiHintSchema),
929
+ hintPath: Type.Optional(Type.String()),
930
+ children: Type.Array(ConfigSchemaLookupChildSchema)
931
+ }, { additionalProperties: false });
932
+ //#endregion
933
+ //#region src/gateway/protocol/schema/cron.ts
934
+ function cronAgentTurnPayloadSchema(params) {
935
+ return Type.Object({
936
+ kind: Type.Literal("agentTurn"),
937
+ message: params.message,
938
+ model: Type.Optional(Type.String()),
939
+ fallbacks: Type.Optional(Type.Array(Type.String())),
940
+ thinking: Type.Optional(Type.String()),
941
+ timeoutSeconds: Type.Optional(Type.Integer({ minimum: 0 })),
942
+ allowUnsafeExternalContent: Type.Optional(Type.Boolean()),
943
+ lightContext: Type.Optional(Type.Boolean()),
944
+ deliver: Type.Optional(Type.Boolean()),
945
+ channel: Type.Optional(Type.String()),
946
+ to: Type.Optional(Type.String()),
947
+ bestEffortDeliver: Type.Optional(Type.Boolean())
948
+ }, { additionalProperties: false });
949
+ }
950
+ const CronSessionTargetSchema = Type.Union([
951
+ Type.Literal("main"),
952
+ Type.Literal("isolated"),
953
+ Type.Literal("current"),
954
+ Type.String({ pattern: "^session:.+" })
955
+ ]);
956
+ const CronWakeModeSchema = Type.Union([Type.Literal("next-heartbeat"), Type.Literal("now")]);
957
+ const CronRunStatusSchema = Type.Union([
958
+ Type.Literal("ok"),
959
+ Type.Literal("error"),
960
+ Type.Literal("skipped")
961
+ ]);
962
+ const CronSortDirSchema = Type.Union([Type.Literal("asc"), Type.Literal("desc")]);
963
+ const CronJobsEnabledFilterSchema = Type.Union([
964
+ Type.Literal("all"),
965
+ Type.Literal("enabled"),
966
+ Type.Literal("disabled")
967
+ ]);
968
+ const CronJobsSortBySchema = Type.Union([
969
+ Type.Literal("nextRunAtMs"),
970
+ Type.Literal("updatedAtMs"),
971
+ Type.Literal("name")
972
+ ]);
973
+ const CronRunsStatusFilterSchema = Type.Union([
974
+ Type.Literal("all"),
975
+ Type.Literal("ok"),
976
+ Type.Literal("error"),
977
+ Type.Literal("skipped")
978
+ ]);
979
+ const CronRunsStatusValueSchema = Type.Union([
980
+ Type.Literal("ok"),
981
+ Type.Literal("error"),
982
+ Type.Literal("skipped")
983
+ ]);
984
+ const CronDeliveryStatusSchema = Type.Union([
985
+ Type.Literal("delivered"),
986
+ Type.Literal("not-delivered"),
987
+ Type.Literal("unknown"),
988
+ Type.Literal("not-requested")
989
+ ]);
990
+ const CronFailoverReasonSchema = Type.Union([
991
+ Type.Literal("auth"),
992
+ Type.Literal("format"),
993
+ Type.Literal("rate_limit"),
994
+ Type.Literal("billing"),
995
+ Type.Literal("timeout"),
996
+ Type.Literal("model_not_found"),
997
+ Type.Literal("unknown")
998
+ ]);
999
+ const CronCommonOptionalFields = {
1000
+ agentId: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1001
+ sessionKey: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1002
+ description: Type.Optional(Type.String()),
1003
+ enabled: Type.Optional(Type.Boolean()),
1004
+ deleteAfterRun: Type.Optional(Type.Boolean())
1005
+ };
1006
+ function cronIdOrJobIdParams(extraFields) {
1007
+ return Type.Union([Type.Object({
1008
+ id: NonEmptyString,
1009
+ ...extraFields
1010
+ }, { additionalProperties: false }), Type.Object({
1011
+ jobId: NonEmptyString,
1012
+ ...extraFields
1013
+ }, { additionalProperties: false })]);
1014
+ }
1015
+ const CronRunLogJobIdSchema = Type.String({
1016
+ minLength: 1,
1017
+ pattern: "^[^/\\\\]+$"
1018
+ });
1019
+ const CronScheduleSchema = Type.Union([
1020
+ Type.Object({
1021
+ kind: Type.Literal("at"),
1022
+ at: NonEmptyString
1023
+ }, { additionalProperties: false }),
1024
+ Type.Object({
1025
+ kind: Type.Literal("every"),
1026
+ everyMs: Type.Integer({ minimum: 1 }),
1027
+ anchorMs: Type.Optional(Type.Integer({ minimum: 0 }))
1028
+ }, { additionalProperties: false }),
1029
+ Type.Object({
1030
+ kind: Type.Literal("cron"),
1031
+ expr: NonEmptyString,
1032
+ tz: Type.Optional(Type.String()),
1033
+ staggerMs: Type.Optional(Type.Integer({ minimum: 0 }))
1034
+ }, { additionalProperties: false })
1035
+ ]);
1036
+ const CronPayloadSchema = Type.Union([Type.Object({
1037
+ kind: Type.Literal("systemEvent"),
1038
+ text: NonEmptyString
1039
+ }, { additionalProperties: false }), cronAgentTurnPayloadSchema({ message: NonEmptyString })]);
1040
+ const CronPayloadPatchSchema = Type.Union([Type.Object({
1041
+ kind: Type.Literal("systemEvent"),
1042
+ text: Type.Optional(NonEmptyString)
1043
+ }, { additionalProperties: false }), cronAgentTurnPayloadSchema({ message: Type.Optional(NonEmptyString) })]);
1044
+ const CronFailureAlertSchema = Type.Object({
1045
+ after: Type.Optional(Type.Integer({ minimum: 1 })),
1046
+ channel: Type.Optional(Type.Union([Type.Literal("last"), NonEmptyString])),
1047
+ to: Type.Optional(Type.String()),
1048
+ cooldownMs: Type.Optional(Type.Integer({ minimum: 0 })),
1049
+ mode: Type.Optional(Type.Union([Type.Literal("announce"), Type.Literal("webhook")])),
1050
+ accountId: Type.Optional(NonEmptyString)
1051
+ }, { additionalProperties: false });
1052
+ const CronFailureDestinationSchema = Type.Object({
1053
+ channel: Type.Optional(Type.Union([Type.Literal("last"), NonEmptyString])),
1054
+ to: Type.Optional(Type.String()),
1055
+ accountId: Type.Optional(NonEmptyString),
1056
+ mode: Type.Optional(Type.Union([Type.Literal("announce"), Type.Literal("webhook")]))
1057
+ }, { additionalProperties: false });
1058
+ const CronDeliverySharedProperties = {
1059
+ channel: Type.Optional(Type.Union([Type.Literal("last"), NonEmptyString])),
1060
+ accountId: Type.Optional(NonEmptyString),
1061
+ bestEffort: Type.Optional(Type.Boolean()),
1062
+ failureDestination: Type.Optional(CronFailureDestinationSchema)
1063
+ };
1064
+ const CronDeliveryNoopSchema = Type.Object({
1065
+ mode: Type.Literal("none"),
1066
+ ...CronDeliverySharedProperties,
1067
+ to: Type.Optional(Type.String())
1068
+ }, { additionalProperties: false });
1069
+ const CronDeliveryAnnounceSchema = Type.Object({
1070
+ mode: Type.Literal("announce"),
1071
+ ...CronDeliverySharedProperties,
1072
+ to: Type.Optional(Type.String())
1073
+ }, { additionalProperties: false });
1074
+ const CronDeliveryWebhookSchema = Type.Object({
1075
+ mode: Type.Literal("webhook"),
1076
+ ...CronDeliverySharedProperties,
1077
+ to: NonEmptyString
1078
+ }, { additionalProperties: false });
1079
+ const CronDeliverySchema = Type.Union([
1080
+ CronDeliveryNoopSchema,
1081
+ CronDeliveryAnnounceSchema,
1082
+ CronDeliveryWebhookSchema
1083
+ ]);
1084
+ const CronDeliveryPatchSchema = Type.Object({
1085
+ mode: Type.Optional(Type.Union([
1086
+ Type.Literal("none"),
1087
+ Type.Literal("announce"),
1088
+ Type.Literal("webhook")
1089
+ ])),
1090
+ ...CronDeliverySharedProperties,
1091
+ to: Type.Optional(Type.String())
1092
+ }, { additionalProperties: false });
1093
+ const CronJobStateSchema = Type.Object({
1094
+ nextRunAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
1095
+ runningAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
1096
+ lastRunAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
1097
+ lastRunStatus: Type.Optional(CronRunStatusSchema),
1098
+ lastStatus: Type.Optional(CronRunStatusSchema),
1099
+ lastError: Type.Optional(Type.String()),
1100
+ lastErrorReason: Type.Optional(CronFailoverReasonSchema),
1101
+ lastDurationMs: Type.Optional(Type.Integer({ minimum: 0 })),
1102
+ consecutiveErrors: Type.Optional(Type.Integer({ minimum: 0 })),
1103
+ lastDelivered: Type.Optional(Type.Boolean()),
1104
+ lastDeliveryStatus: Type.Optional(CronDeliveryStatusSchema),
1105
+ lastDeliveryError: Type.Optional(Type.String()),
1106
+ lastFailureAlertAtMs: Type.Optional(Type.Integer({ minimum: 0 }))
1107
+ }, { additionalProperties: false });
1108
+ Type.Object({
1109
+ id: NonEmptyString,
1110
+ agentId: Type.Optional(NonEmptyString),
1111
+ sessionKey: Type.Optional(NonEmptyString),
1112
+ name: NonEmptyString,
1113
+ description: Type.Optional(Type.String()),
1114
+ enabled: Type.Boolean(),
1115
+ deleteAfterRun: Type.Optional(Type.Boolean()),
1116
+ createdAtMs: Type.Integer({ minimum: 0 }),
1117
+ updatedAtMs: Type.Integer({ minimum: 0 }),
1118
+ schedule: CronScheduleSchema,
1119
+ sessionTarget: CronSessionTargetSchema,
1120
+ wakeMode: CronWakeModeSchema,
1121
+ payload: CronPayloadSchema,
1122
+ delivery: Type.Optional(CronDeliverySchema),
1123
+ failureAlert: Type.Optional(Type.Union([Type.Literal(false), CronFailureAlertSchema])),
1124
+ state: CronJobStateSchema
1125
+ }, { additionalProperties: false });
1126
+ const CronListParamsSchema = Type.Object({
1127
+ includeDisabled: Type.Optional(Type.Boolean()),
1128
+ limit: Type.Optional(Type.Integer({
1129
+ minimum: 1,
1130
+ maximum: 200
1131
+ })),
1132
+ offset: Type.Optional(Type.Integer({ minimum: 0 })),
1133
+ query: Type.Optional(Type.String()),
1134
+ enabled: Type.Optional(CronJobsEnabledFilterSchema),
1135
+ sortBy: Type.Optional(CronJobsSortBySchema),
1136
+ sortDir: Type.Optional(CronSortDirSchema)
1137
+ }, { additionalProperties: false });
1138
+ const CronStatusParamsSchema = Type.Object({}, { additionalProperties: false });
1139
+ const CronAddParamsSchema = Type.Object({
1140
+ name: NonEmptyString,
1141
+ ...CronCommonOptionalFields,
1142
+ schedule: CronScheduleSchema,
1143
+ sessionTarget: CronSessionTargetSchema,
1144
+ wakeMode: CronWakeModeSchema,
1145
+ payload: CronPayloadSchema,
1146
+ delivery: Type.Optional(CronDeliverySchema),
1147
+ failureAlert: Type.Optional(Type.Union([Type.Literal(false), CronFailureAlertSchema]))
1148
+ }, { additionalProperties: false });
1149
+ const CronUpdateParamsSchema = cronIdOrJobIdParams({ patch: Type.Object({
1150
+ name: Type.Optional(NonEmptyString),
1151
+ ...CronCommonOptionalFields,
1152
+ schedule: Type.Optional(CronScheduleSchema),
1153
+ sessionTarget: Type.Optional(CronSessionTargetSchema),
1154
+ wakeMode: Type.Optional(CronWakeModeSchema),
1155
+ payload: Type.Optional(CronPayloadPatchSchema),
1156
+ delivery: Type.Optional(CronDeliveryPatchSchema),
1157
+ failureAlert: Type.Optional(Type.Union([Type.Literal(false), CronFailureAlertSchema])),
1158
+ state: Type.Optional(Type.Partial(CronJobStateSchema))
1159
+ }, { additionalProperties: false }) });
1160
+ const CronRemoveParamsSchema = cronIdOrJobIdParams({});
1161
+ const CronRunParamsSchema = cronIdOrJobIdParams({ mode: Type.Optional(Type.Union([Type.Literal("due"), Type.Literal("force")])) });
1162
+ const CronRunsParamsSchema = Type.Object({
1163
+ scope: Type.Optional(Type.Union([Type.Literal("job"), Type.Literal("all")])),
1164
+ id: Type.Optional(CronRunLogJobIdSchema),
1165
+ jobId: Type.Optional(CronRunLogJobIdSchema),
1166
+ limit: Type.Optional(Type.Integer({
1167
+ minimum: 1,
1168
+ maximum: 200
1169
+ })),
1170
+ offset: Type.Optional(Type.Integer({ minimum: 0 })),
1171
+ statuses: Type.Optional(Type.Array(CronRunsStatusValueSchema, {
1172
+ minItems: 1,
1173
+ maxItems: 3
1174
+ })),
1175
+ status: Type.Optional(CronRunsStatusFilterSchema),
1176
+ deliveryStatuses: Type.Optional(Type.Array(CronDeliveryStatusSchema, {
1177
+ minItems: 1,
1178
+ maxItems: 4
1179
+ })),
1180
+ deliveryStatus: Type.Optional(CronDeliveryStatusSchema),
1181
+ query: Type.Optional(Type.String()),
1182
+ sortDir: Type.Optional(CronSortDirSchema)
1183
+ }, { additionalProperties: false });
1184
+ Type.Object({
1185
+ ts: Type.Integer({ minimum: 0 }),
1186
+ jobId: NonEmptyString,
1187
+ action: Type.Literal("finished"),
1188
+ status: Type.Optional(CronRunStatusSchema),
1189
+ error: Type.Optional(Type.String()),
1190
+ summary: Type.Optional(Type.String()),
1191
+ delivered: Type.Optional(Type.Boolean()),
1192
+ deliveryStatus: Type.Optional(CronDeliveryStatusSchema),
1193
+ deliveryError: Type.Optional(Type.String()),
1194
+ sessionId: Type.Optional(NonEmptyString),
1195
+ sessionKey: Type.Optional(NonEmptyString),
1196
+ runAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
1197
+ durationMs: Type.Optional(Type.Integer({ minimum: 0 })),
1198
+ nextRunAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
1199
+ model: Type.Optional(Type.String()),
1200
+ provider: Type.Optional(Type.String()),
1201
+ usage: Type.Optional(Type.Object({
1202
+ input_tokens: Type.Optional(Type.Number()),
1203
+ output_tokens: Type.Optional(Type.Number()),
1204
+ total_tokens: Type.Optional(Type.Number()),
1205
+ cache_read_tokens: Type.Optional(Type.Number()),
1206
+ cache_write_tokens: Type.Optional(Type.Number())
1207
+ }, { additionalProperties: false })),
1208
+ jobName: Type.Optional(Type.String())
1209
+ }, { additionalProperties: false });
1210
+ //#endregion
1211
+ //#region src/gateway/protocol/schema/error-codes.ts
1212
+ const ErrorCodes = {
1213
+ NOT_LINKED: "NOT_LINKED",
1214
+ NOT_PAIRED: "NOT_PAIRED",
1215
+ AGENT_TIMEOUT: "AGENT_TIMEOUT",
1216
+ INVALID_REQUEST: "INVALID_REQUEST",
1217
+ UNAVAILABLE: "UNAVAILABLE"
1218
+ };
1219
+ function errorShape(code, message, opts) {
1220
+ return {
1221
+ code,
1222
+ message,
1223
+ ...opts
1224
+ };
1225
+ }
1226
+ //#endregion
1227
+ //#region src/gateway/protocol/schema/exec-approvals.ts
1228
+ const ExecApprovalsAllowlistEntrySchema = Type.Object({
1229
+ id: Type.Optional(NonEmptyString),
1230
+ pattern: Type.String(),
1231
+ lastUsedAt: Type.Optional(Type.Integer({ minimum: 0 })),
1232
+ lastUsedCommand: Type.Optional(Type.String()),
1233
+ lastResolvedPath: Type.Optional(Type.String())
1234
+ }, { additionalProperties: false });
1235
+ const ExecApprovalsPolicyFields = {
1236
+ security: Type.Optional(Type.String()),
1237
+ ask: Type.Optional(Type.String()),
1238
+ askFallback: Type.Optional(Type.String()),
1239
+ autoAllowSkills: Type.Optional(Type.Boolean())
1240
+ };
1241
+ const ExecApprovalsDefaultsSchema = Type.Object(ExecApprovalsPolicyFields, { additionalProperties: false });
1242
+ const ExecApprovalsAgentSchema = Type.Object({
1243
+ ...ExecApprovalsPolicyFields,
1244
+ allowlist: Type.Optional(Type.Array(ExecApprovalsAllowlistEntrySchema))
1245
+ }, { additionalProperties: false });
1246
+ const ExecApprovalsFileSchema = Type.Object({
1247
+ version: Type.Literal(1),
1248
+ socket: Type.Optional(Type.Object({
1249
+ path: Type.Optional(Type.String()),
1250
+ token: Type.Optional(Type.String())
1251
+ }, { additionalProperties: false })),
1252
+ defaults: Type.Optional(ExecApprovalsDefaultsSchema),
1253
+ agents: Type.Optional(Type.Record(Type.String(), ExecApprovalsAgentSchema))
1254
+ }, { additionalProperties: false });
1255
+ Type.Object({
1256
+ path: NonEmptyString,
1257
+ exists: Type.Boolean(),
1258
+ hash: NonEmptyString,
1259
+ file: ExecApprovalsFileSchema
1260
+ }, { additionalProperties: false });
1261
+ const ExecApprovalsGetParamsSchema = Type.Object({}, { additionalProperties: false });
1262
+ const ExecApprovalsSetParamsSchema = Type.Object({
1263
+ file: ExecApprovalsFileSchema,
1264
+ baseHash: Type.Optional(NonEmptyString)
1265
+ }, { additionalProperties: false });
1266
+ const ExecApprovalsNodeGetParamsSchema = Type.Object({ nodeId: NonEmptyString }, { additionalProperties: false });
1267
+ const ExecApprovalsNodeSetParamsSchema = Type.Object({
1268
+ nodeId: NonEmptyString,
1269
+ file: ExecApprovalsFileSchema,
1270
+ baseHash: Type.Optional(NonEmptyString)
1271
+ }, { additionalProperties: false });
1272
+ const ExecApprovalRequestParamsSchema = Type.Object({
1273
+ id: Type.Optional(NonEmptyString),
1274
+ command: Type.Optional(NonEmptyString),
1275
+ commandArgv: Type.Optional(Type.Array(Type.String())),
1276
+ systemRunPlan: Type.Optional(Type.Object({
1277
+ argv: Type.Array(Type.String()),
1278
+ cwd: Type.Union([Type.String(), Type.Null()]),
1279
+ commandText: Type.String(),
1280
+ commandPreview: Type.Optional(Type.Union([Type.String(), Type.Null()])),
1281
+ agentId: Type.Union([Type.String(), Type.Null()]),
1282
+ sessionKey: Type.Union([Type.String(), Type.Null()]),
1283
+ mutableFileOperand: Type.Optional(Type.Union([Type.Object({
1284
+ argvIndex: Type.Integer({ minimum: 0 }),
1285
+ path: Type.String(),
1286
+ sha256: Type.String()
1287
+ }, { additionalProperties: false }), Type.Null()]))
1288
+ }, { additionalProperties: false })),
1289
+ env: Type.Optional(Type.Record(NonEmptyString, Type.String())),
1290
+ cwd: Type.Optional(Type.Union([Type.String(), Type.Null()])),
1291
+ nodeId: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1292
+ host: Type.Optional(Type.Union([Type.String(), Type.Null()])),
1293
+ security: Type.Optional(Type.Union([Type.String(), Type.Null()])),
1294
+ ask: Type.Optional(Type.Union([Type.String(), Type.Null()])),
1295
+ agentId: Type.Optional(Type.Union([Type.String(), Type.Null()])),
1296
+ resolvedPath: Type.Optional(Type.Union([Type.String(), Type.Null()])),
1297
+ sessionKey: Type.Optional(Type.Union([Type.String(), Type.Null()])),
1298
+ turnSourceChannel: Type.Optional(Type.Union([Type.String(), Type.Null()])),
1299
+ turnSourceTo: Type.Optional(Type.Union([Type.String(), Type.Null()])),
1300
+ turnSourceAccountId: Type.Optional(Type.Union([Type.String(), Type.Null()])),
1301
+ turnSourceThreadId: Type.Optional(Type.Union([
1302
+ Type.String(),
1303
+ Type.Number(),
1304
+ Type.Null()
1305
+ ])),
1306
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 1 })),
1307
+ twoPhase: Type.Optional(Type.Boolean())
1308
+ }, { additionalProperties: false });
1309
+ const ExecApprovalResolveParamsSchema = Type.Object({
1310
+ id: NonEmptyString,
1311
+ decision: NonEmptyString
1312
+ }, { additionalProperties: false });
1313
+ //#endregion
1314
+ //#region src/gateway/protocol/schema/devices.ts
1315
+ const DevicePairListParamsSchema = Type.Object({}, { additionalProperties: false });
1316
+ const DevicePairApproveParamsSchema = Type.Object({ requestId: NonEmptyString }, { additionalProperties: false });
1317
+ const DevicePairRejectParamsSchema = Type.Object({ requestId: NonEmptyString }, { additionalProperties: false });
1318
+ const DevicePairRemoveParamsSchema = Type.Object({ deviceId: NonEmptyString }, { additionalProperties: false });
1319
+ const DeviceTokenRotateParamsSchema = Type.Object({
1320
+ deviceId: NonEmptyString,
1321
+ role: NonEmptyString,
1322
+ scopes: Type.Optional(Type.Array(NonEmptyString))
1323
+ }, { additionalProperties: false });
1324
+ const DeviceTokenRevokeParamsSchema = Type.Object({
1325
+ deviceId: NonEmptyString,
1326
+ role: NonEmptyString
1327
+ }, { additionalProperties: false });
1328
+ Type.Object({
1329
+ requestId: NonEmptyString,
1330
+ deviceId: NonEmptyString,
1331
+ publicKey: NonEmptyString,
1332
+ displayName: Type.Optional(NonEmptyString),
1333
+ platform: Type.Optional(NonEmptyString),
1334
+ deviceFamily: Type.Optional(NonEmptyString),
1335
+ clientId: Type.Optional(NonEmptyString),
1336
+ clientMode: Type.Optional(NonEmptyString),
1337
+ role: Type.Optional(NonEmptyString),
1338
+ roles: Type.Optional(Type.Array(NonEmptyString)),
1339
+ scopes: Type.Optional(Type.Array(NonEmptyString)),
1340
+ remoteIp: Type.Optional(NonEmptyString),
1341
+ silent: Type.Optional(Type.Boolean()),
1342
+ isRepair: Type.Optional(Type.Boolean()),
1343
+ ts: Type.Integer({ minimum: 0 })
1344
+ }, { additionalProperties: false });
1345
+ Type.Object({
1346
+ requestId: NonEmptyString,
1347
+ deviceId: NonEmptyString,
1348
+ decision: NonEmptyString,
1349
+ ts: Type.Integer({ minimum: 0 })
1350
+ }, { additionalProperties: false });
1351
+ //#endregion
1352
+ //#region src/gateway/protocol/schema/snapshot.ts
1353
+ const PresenceEntrySchema = Type.Object({
1354
+ host: Type.Optional(NonEmptyString),
1355
+ ip: Type.Optional(NonEmptyString),
1356
+ version: Type.Optional(NonEmptyString),
1357
+ platform: Type.Optional(NonEmptyString),
1358
+ deviceFamily: Type.Optional(NonEmptyString),
1359
+ modelIdentifier: Type.Optional(NonEmptyString),
1360
+ mode: Type.Optional(NonEmptyString),
1361
+ lastInputSeconds: Type.Optional(Type.Integer({ minimum: 0 })),
1362
+ reason: Type.Optional(NonEmptyString),
1363
+ tags: Type.Optional(Type.Array(NonEmptyString)),
1364
+ text: Type.Optional(Type.String()),
1365
+ ts: Type.Integer({ minimum: 0 }),
1366
+ deviceId: Type.Optional(NonEmptyString),
1367
+ roles: Type.Optional(Type.Array(NonEmptyString)),
1368
+ scopes: Type.Optional(Type.Array(NonEmptyString)),
1369
+ instanceId: Type.Optional(NonEmptyString)
1370
+ }, { additionalProperties: false });
1371
+ const HealthSnapshotSchema = Type.Any();
1372
+ const SessionDefaultsSchema = Type.Object({
1373
+ defaultAgentId: NonEmptyString,
1374
+ mainKey: NonEmptyString,
1375
+ mainSessionKey: NonEmptyString,
1376
+ scope: Type.Optional(NonEmptyString)
1377
+ }, { additionalProperties: false });
1378
+ const StateVersionSchema = Type.Object({
1379
+ presence: Type.Integer({ minimum: 0 }),
1380
+ health: Type.Integer({ minimum: 0 })
1381
+ }, { additionalProperties: false });
1382
+ const SnapshotSchema = Type.Object({
1383
+ presence: Type.Array(PresenceEntrySchema),
1384
+ health: HealthSnapshotSchema,
1385
+ stateVersion: StateVersionSchema,
1386
+ uptimeMs: Type.Integer({ minimum: 0 }),
1387
+ configPath: Type.Optional(NonEmptyString),
1388
+ stateDir: Type.Optional(NonEmptyString),
1389
+ sessionDefaults: Type.Optional(SessionDefaultsSchema),
1390
+ authMode: Type.Optional(Type.Union([
1391
+ Type.Literal("none"),
1392
+ Type.Literal("token"),
1393
+ Type.Literal("password"),
1394
+ Type.Literal("trusted-proxy")
1395
+ ])),
1396
+ updateAvailable: Type.Optional(Type.Object({
1397
+ currentVersion: NonEmptyString,
1398
+ latestVersion: NonEmptyString,
1399
+ channel: NonEmptyString
1400
+ }))
1401
+ }, { additionalProperties: false });
1402
+ Type.Object({ ts: Type.Integer({ minimum: 0 }) }, { additionalProperties: false });
1403
+ Type.Object({
1404
+ reason: NonEmptyString,
1405
+ restartExpectedMs: Type.Optional(Type.Integer({ minimum: 0 }))
1406
+ }, { additionalProperties: false });
1407
+ const ConnectParamsSchema = Type.Object({
1408
+ minProtocol: Type.Integer({ minimum: 1 }),
1409
+ maxProtocol: Type.Integer({ minimum: 1 }),
1410
+ client: Type.Object({
1411
+ id: GatewayClientIdSchema,
1412
+ displayName: Type.Optional(NonEmptyString),
1413
+ version: NonEmptyString,
1414
+ platform: NonEmptyString,
1415
+ deviceFamily: Type.Optional(NonEmptyString),
1416
+ modelIdentifier: Type.Optional(NonEmptyString),
1417
+ mode: GatewayClientModeSchema,
1418
+ instanceId: Type.Optional(NonEmptyString)
1419
+ }, { additionalProperties: false }),
1420
+ caps: Type.Optional(Type.Array(NonEmptyString, { default: [] })),
1421
+ commands: Type.Optional(Type.Array(NonEmptyString)),
1422
+ permissions: Type.Optional(Type.Record(NonEmptyString, Type.Boolean())),
1423
+ pathEnv: Type.Optional(Type.String()),
1424
+ role: Type.Optional(NonEmptyString),
1425
+ scopes: Type.Optional(Type.Array(NonEmptyString)),
1426
+ device: Type.Optional(Type.Object({
1427
+ id: NonEmptyString,
1428
+ publicKey: NonEmptyString,
1429
+ signature: NonEmptyString,
1430
+ signedAt: Type.Integer({ minimum: 0 }),
1431
+ nonce: NonEmptyString
1432
+ }, { additionalProperties: false })),
1433
+ auth: Type.Optional(Type.Object({
1434
+ token: Type.Optional(Type.String()),
1435
+ bootstrapToken: Type.Optional(Type.String()),
1436
+ deviceToken: Type.Optional(Type.String()),
1437
+ password: Type.Optional(Type.String())
1438
+ }, { additionalProperties: false })),
1439
+ locale: Type.Optional(Type.String()),
1440
+ userAgent: Type.Optional(Type.String())
1441
+ }, { additionalProperties: false });
1442
+ Type.Object({
1443
+ type: Type.Literal("hello-ok"),
1444
+ protocol: Type.Integer({ minimum: 1 }),
1445
+ server: Type.Object({
1446
+ version: NonEmptyString,
1447
+ connId: NonEmptyString
1448
+ }, { additionalProperties: false }),
1449
+ features: Type.Object({
1450
+ methods: Type.Array(NonEmptyString),
1451
+ events: Type.Array(NonEmptyString)
1452
+ }, { additionalProperties: false }),
1453
+ snapshot: SnapshotSchema,
1454
+ canvasHostUrl: Type.Optional(NonEmptyString),
1455
+ auth: Type.Optional(Type.Object({
1456
+ deviceToken: NonEmptyString,
1457
+ role: NonEmptyString,
1458
+ scopes: Type.Array(NonEmptyString),
1459
+ issuedAtMs: Type.Optional(Type.Integer({ minimum: 0 }))
1460
+ }, { additionalProperties: false })),
1461
+ policy: Type.Object({
1462
+ maxPayload: Type.Integer({ minimum: 1 }),
1463
+ maxBufferedBytes: Type.Integer({ minimum: 1 }),
1464
+ tickIntervalMs: Type.Integer({ minimum: 1 })
1465
+ }, { additionalProperties: false })
1466
+ }, { additionalProperties: false });
1467
+ const ErrorShapeSchema = Type.Object({
1468
+ code: NonEmptyString,
1469
+ message: NonEmptyString,
1470
+ details: Type.Optional(Type.Unknown()),
1471
+ retryable: Type.Optional(Type.Boolean()),
1472
+ retryAfterMs: Type.Optional(Type.Integer({ minimum: 0 }))
1473
+ }, { additionalProperties: false });
1474
+ const RequestFrameSchema = Type.Object({
1475
+ type: Type.Literal("req"),
1476
+ id: NonEmptyString,
1477
+ method: NonEmptyString,
1478
+ params: Type.Optional(Type.Unknown())
1479
+ }, { additionalProperties: false });
1480
+ const ResponseFrameSchema = Type.Object({
1481
+ type: Type.Literal("res"),
1482
+ id: NonEmptyString,
1483
+ ok: Type.Boolean(),
1484
+ payload: Type.Optional(Type.Unknown()),
1485
+ error: Type.Optional(ErrorShapeSchema)
1486
+ }, { additionalProperties: false });
1487
+ const EventFrameSchema = Type.Object({
1488
+ type: Type.Literal("event"),
1489
+ event: NonEmptyString,
1490
+ payload: Type.Optional(Type.Unknown()),
1491
+ seq: Type.Optional(Type.Integer({ minimum: 0 })),
1492
+ stateVersion: Type.Optional(StateVersionSchema)
1493
+ }, { additionalProperties: false });
1494
+ Type.Union([
1495
+ RequestFrameSchema,
1496
+ ResponseFrameSchema,
1497
+ EventFrameSchema
1498
+ ], { discriminator: "type" });
1499
+ //#endregion
1500
+ //#region src/gateway/protocol/schema/logs-chat.ts
1501
+ const LogsTailParamsSchema = Type.Object({
1502
+ cursor: Type.Optional(Type.Integer({ minimum: 0 })),
1503
+ limit: Type.Optional(Type.Integer({
1504
+ minimum: 1,
1505
+ maximum: 5e3
1506
+ })),
1507
+ maxBytes: Type.Optional(Type.Integer({
1508
+ minimum: 1,
1509
+ maximum: 1e6
1510
+ }))
1511
+ }, { additionalProperties: false });
1512
+ Type.Object({
1513
+ file: NonEmptyString,
1514
+ cursor: Type.Integer({ minimum: 0 }),
1515
+ size: Type.Integer({ minimum: 0 }),
1516
+ lines: Type.Array(Type.String()),
1517
+ truncated: Type.Optional(Type.Boolean()),
1518
+ reset: Type.Optional(Type.Boolean())
1519
+ }, { additionalProperties: false });
1520
+ const ChatHistoryParamsSchema = Type.Object({
1521
+ sessionKey: NonEmptyString,
1522
+ limit: Type.Optional(Type.Integer({
1523
+ minimum: 1,
1524
+ maximum: 1e3
1525
+ }))
1526
+ }, { additionalProperties: false });
1527
+ const ChatSendParamsSchema = Type.Object({
1528
+ sessionKey: ChatSendSessionKeyString,
1529
+ message: Type.String(),
1530
+ thinking: Type.Optional(Type.String()),
1531
+ deliver: Type.Optional(Type.Boolean()),
1532
+ attachments: Type.Optional(Type.Array(Type.Unknown())),
1533
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
1534
+ systemInputProvenance: Type.Optional(InputProvenanceSchema),
1535
+ systemProvenanceReceipt: Type.Optional(Type.String()),
1536
+ idempotencyKey: NonEmptyString
1537
+ }, { additionalProperties: false });
1538
+ const ChatAbortParamsSchema = Type.Object({
1539
+ sessionKey: NonEmptyString,
1540
+ runId: Type.Optional(NonEmptyString)
1541
+ }, { additionalProperties: false });
1542
+ const ChatInjectParamsSchema = Type.Object({
1543
+ sessionKey: NonEmptyString,
1544
+ message: NonEmptyString,
1545
+ label: Type.Optional(Type.String({ maxLength: 100 }))
1546
+ }, { additionalProperties: false });
1547
+ const ChatEventSchema = Type.Object({
1548
+ runId: NonEmptyString,
1549
+ sessionKey: NonEmptyString,
1550
+ seq: Type.Integer({ minimum: 0 }),
1551
+ state: Type.Union([
1552
+ Type.Literal("delta"),
1553
+ Type.Literal("final"),
1554
+ Type.Literal("aborted"),
1555
+ Type.Literal("error")
1556
+ ]),
1557
+ message: Type.Optional(Type.Unknown()),
1558
+ errorMessage: Type.Optional(Type.String()),
1559
+ usage: Type.Optional(Type.Unknown()),
1560
+ stopReason: Type.Optional(Type.String())
1561
+ }, { additionalProperties: false });
1562
+ //#endregion
1563
+ //#region src/gateway/protocol/schema/nodes.ts
1564
+ const NodePendingWorkTypeSchema = Type.String({ enum: ["status.request", "location.request"] });
1565
+ const NodePendingWorkPrioritySchema = Type.String({ enum: ["normal", "high"] });
1566
+ const NodePairRequestParamsSchema = Type.Object({
1567
+ nodeId: NonEmptyString,
1568
+ displayName: Type.Optional(NonEmptyString),
1569
+ platform: Type.Optional(NonEmptyString),
1570
+ version: Type.Optional(NonEmptyString),
1571
+ coreVersion: Type.Optional(NonEmptyString),
1572
+ uiVersion: Type.Optional(NonEmptyString),
1573
+ deviceFamily: Type.Optional(NonEmptyString),
1574
+ modelIdentifier: Type.Optional(NonEmptyString),
1575
+ caps: Type.Optional(Type.Array(NonEmptyString)),
1576
+ commands: Type.Optional(Type.Array(NonEmptyString)),
1577
+ remoteIp: Type.Optional(NonEmptyString),
1578
+ silent: Type.Optional(Type.Boolean())
1579
+ }, { additionalProperties: false });
1580
+ const NodePairListParamsSchema = Type.Object({}, { additionalProperties: false });
1581
+ const NodePairApproveParamsSchema = Type.Object({ requestId: NonEmptyString }, { additionalProperties: false });
1582
+ const NodePairRejectParamsSchema = Type.Object({ requestId: NonEmptyString }, { additionalProperties: false });
1583
+ const NodePairVerifyParamsSchema = Type.Object({
1584
+ nodeId: NonEmptyString,
1585
+ token: NonEmptyString
1586
+ }, { additionalProperties: false });
1587
+ const NodeRenameParamsSchema = Type.Object({
1588
+ nodeId: NonEmptyString,
1589
+ displayName: NonEmptyString
1590
+ }, { additionalProperties: false });
1591
+ const NodeListParamsSchema = Type.Object({}, { additionalProperties: false });
1592
+ const NodePendingAckParamsSchema = Type.Object({ ids: Type.Array(NonEmptyString, { minItems: 1 }) }, { additionalProperties: false });
1593
+ const NodeDescribeParamsSchema = Type.Object({ nodeId: NonEmptyString }, { additionalProperties: false });
1594
+ const NodeInvokeParamsSchema = Type.Object({
1595
+ nodeId: NonEmptyString,
1596
+ command: NonEmptyString,
1597
+ params: Type.Optional(Type.Unknown()),
1598
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
1599
+ idempotencyKey: NonEmptyString
1600
+ }, { additionalProperties: false });
1601
+ const NodeInvokeResultParamsSchema = Type.Object({
1602
+ id: NonEmptyString,
1603
+ nodeId: NonEmptyString,
1604
+ ok: Type.Boolean(),
1605
+ payload: Type.Optional(Type.Unknown()),
1606
+ payloadJSON: Type.Optional(Type.String()),
1607
+ error: Type.Optional(Type.Object({
1608
+ code: Type.Optional(NonEmptyString),
1609
+ message: Type.Optional(NonEmptyString)
1610
+ }, { additionalProperties: false }))
1611
+ }, { additionalProperties: false });
1612
+ const NodeEventParamsSchema = Type.Object({
1613
+ event: NonEmptyString,
1614
+ payload: Type.Optional(Type.Unknown()),
1615
+ payloadJSON: Type.Optional(Type.String())
1616
+ }, { additionalProperties: false });
1617
+ const NodePendingDrainParamsSchema = Type.Object({ maxItems: Type.Optional(Type.Integer({
1618
+ minimum: 1,
1619
+ maximum: 10
1620
+ })) }, { additionalProperties: false });
1621
+ const NodePendingDrainItemSchema = Type.Object({
1622
+ id: NonEmptyString,
1623
+ type: NodePendingWorkTypeSchema,
1624
+ priority: Type.String({ enum: [
1625
+ "default",
1626
+ "normal",
1627
+ "high"
1628
+ ] }),
1629
+ createdAtMs: Type.Integer({ minimum: 0 }),
1630
+ expiresAtMs: Type.Optional(Type.Union([Type.Integer({ minimum: 0 }), Type.Null()])),
1631
+ payload: Type.Optional(Type.Record(Type.String(), Type.Unknown()))
1632
+ }, { additionalProperties: false });
1633
+ Type.Object({
1634
+ nodeId: NonEmptyString,
1635
+ revision: Type.Integer({ minimum: 0 }),
1636
+ items: Type.Array(NodePendingDrainItemSchema),
1637
+ hasMore: Type.Boolean()
1638
+ }, { additionalProperties: false });
1639
+ const NodePendingEnqueueParamsSchema = Type.Object({
1640
+ nodeId: NonEmptyString,
1641
+ type: NodePendingWorkTypeSchema,
1642
+ priority: Type.Optional(NodePendingWorkPrioritySchema),
1643
+ expiresInMs: Type.Optional(Type.Integer({
1644
+ minimum: 1e3,
1645
+ maximum: 864e5
1646
+ })),
1647
+ wake: Type.Optional(Type.Boolean())
1648
+ }, { additionalProperties: false });
1649
+ Type.Object({
1650
+ nodeId: NonEmptyString,
1651
+ revision: Type.Integer({ minimum: 0 }),
1652
+ queued: NodePendingDrainItemSchema,
1653
+ wakeTriggered: Type.Boolean()
1654
+ }, { additionalProperties: false });
1655
+ Type.Object({
1656
+ id: NonEmptyString,
1657
+ nodeId: NonEmptyString,
1658
+ command: NonEmptyString,
1659
+ paramsJSON: Type.Optional(Type.String()),
1660
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
1661
+ idempotencyKey: Type.Optional(NonEmptyString)
1662
+ }, { additionalProperties: false });
1663
+ //#endregion
1664
+ //#region src/gateway/protocol/schema/push.ts
1665
+ const ApnsEnvironmentSchema = Type.String({ enum: ["sandbox", "production"] });
1666
+ const PushTestParamsSchema = Type.Object({
1667
+ nodeId: NonEmptyString,
1668
+ title: Type.Optional(Type.String()),
1669
+ body: Type.Optional(Type.String()),
1670
+ environment: Type.Optional(ApnsEnvironmentSchema)
1671
+ }, { additionalProperties: false });
1672
+ Type.Object({
1673
+ ok: Type.Boolean(),
1674
+ status: Type.Integer(),
1675
+ apnsId: Type.Optional(Type.String()),
1676
+ reason: Type.Optional(Type.String()),
1677
+ tokenSuffix: Type.String(),
1678
+ topic: Type.String(),
1679
+ environment: ApnsEnvironmentSchema,
1680
+ transport: Type.String({ enum: ["direct", "relay"] })
1681
+ }, { additionalProperties: false });
1682
+ Type.Object({}, { additionalProperties: false });
1683
+ const SecretsResolveParamsSchema = Type.Object({
1684
+ commandName: NonEmptyString,
1685
+ targetIds: Type.Array(NonEmptyString)
1686
+ }, { additionalProperties: false });
1687
+ const SecretsResolveAssignmentSchema = Type.Object({
1688
+ path: Type.Optional(NonEmptyString),
1689
+ pathSegments: Type.Array(NonEmptyString),
1690
+ value: Type.Unknown()
1691
+ }, { additionalProperties: false });
1692
+ const SecretsResolveResultSchema = Type.Object({
1693
+ ok: Type.Optional(Type.Boolean()),
1694
+ assignments: Type.Optional(Type.Array(SecretsResolveAssignmentSchema)),
1695
+ diagnostics: Type.Optional(Type.Array(NonEmptyString)),
1696
+ inactiveRefPaths: Type.Optional(Type.Array(NonEmptyString))
1697
+ }, { additionalProperties: false });
1698
+ //#endregion
1699
+ //#region src/gateway/protocol/schema/sessions.ts
1700
+ const SessionsListParamsSchema = Type.Object({
1701
+ limit: Type.Optional(Type.Integer({ minimum: 1 })),
1702
+ activeMinutes: Type.Optional(Type.Integer({ minimum: 1 })),
1703
+ includeGlobal: Type.Optional(Type.Boolean()),
1704
+ includeUnknown: Type.Optional(Type.Boolean()),
1705
+ includeDerivedTitles: Type.Optional(Type.Boolean()),
1706
+ includeLastMessage: Type.Optional(Type.Boolean()),
1707
+ label: Type.Optional(SessionLabelString),
1708
+ spawnedBy: Type.Optional(NonEmptyString),
1709
+ agentId: Type.Optional(NonEmptyString),
1710
+ search: Type.Optional(Type.String())
1711
+ }, { additionalProperties: false });
1712
+ const SessionsPreviewParamsSchema = Type.Object({
1713
+ keys: Type.Array(NonEmptyString, { minItems: 1 }),
1714
+ limit: Type.Optional(Type.Integer({ minimum: 1 })),
1715
+ maxChars: Type.Optional(Type.Integer({ minimum: 20 }))
1716
+ }, { additionalProperties: false });
1717
+ const SessionsResolveParamsSchema = Type.Object({
1718
+ key: Type.Optional(NonEmptyString),
1719
+ sessionId: Type.Optional(NonEmptyString),
1720
+ label: Type.Optional(SessionLabelString),
1721
+ agentId: Type.Optional(NonEmptyString),
1722
+ spawnedBy: Type.Optional(NonEmptyString),
1723
+ includeGlobal: Type.Optional(Type.Boolean()),
1724
+ includeUnknown: Type.Optional(Type.Boolean())
1725
+ }, { additionalProperties: false });
1726
+ const SessionsCreateParamsSchema = Type.Object({
1727
+ key: Type.Optional(NonEmptyString),
1728
+ agentId: Type.Optional(NonEmptyString),
1729
+ label: Type.Optional(SessionLabelString),
1730
+ model: Type.Optional(NonEmptyString),
1731
+ parentSessionKey: Type.Optional(NonEmptyString),
1732
+ task: Type.Optional(Type.String()),
1733
+ message: Type.Optional(Type.String())
1734
+ }, { additionalProperties: false });
1735
+ const SessionsSendParamsSchema = Type.Object({
1736
+ key: NonEmptyString,
1737
+ message: Type.String(),
1738
+ thinking: Type.Optional(Type.String()),
1739
+ attachments: Type.Optional(Type.Array(Type.Unknown())),
1740
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 0 })),
1741
+ idempotencyKey: Type.Optional(NonEmptyString)
1742
+ }, { additionalProperties: false });
1743
+ const SessionsMessagesSubscribeParamsSchema = Type.Object({ key: NonEmptyString }, { additionalProperties: false });
1744
+ const SessionsMessagesUnsubscribeParamsSchema = Type.Object({ key: NonEmptyString }, { additionalProperties: false });
1745
+ const SessionsAbortParamsSchema = Type.Object({
1746
+ key: NonEmptyString,
1747
+ runId: Type.Optional(NonEmptyString)
1748
+ }, { additionalProperties: false });
1749
+ const SessionsPatchParamsSchema = Type.Object({
1750
+ key: NonEmptyString,
1751
+ label: Type.Optional(Type.Union([SessionLabelString, Type.Null()])),
1752
+ thinkingLevel: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1753
+ fastMode: Type.Optional(Type.Union([Type.Boolean(), Type.Null()])),
1754
+ verboseLevel: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1755
+ reasoningLevel: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1756
+ responseUsage: Type.Optional(Type.Union([
1757
+ Type.Literal("off"),
1758
+ Type.Literal("tokens"),
1759
+ Type.Literal("full"),
1760
+ Type.Literal("on"),
1761
+ Type.Null()
1762
+ ])),
1763
+ elevatedLevel: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1764
+ execHost: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1765
+ execSecurity: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1766
+ execAsk: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1767
+ execNode: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1768
+ model: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1769
+ spawnedBy: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1770
+ spawnedWorkspaceDir: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),
1771
+ spawnDepth: Type.Optional(Type.Union([Type.Integer({ minimum: 0 }), Type.Null()])),
1772
+ subagentRole: Type.Optional(Type.Union([
1773
+ Type.Literal("orchestrator"),
1774
+ Type.Literal("leaf"),
1775
+ Type.Null()
1776
+ ])),
1777
+ subagentControlScope: Type.Optional(Type.Union([
1778
+ Type.Literal("children"),
1779
+ Type.Literal("none"),
1780
+ Type.Null()
1781
+ ])),
1782
+ sendPolicy: Type.Optional(Type.Union([
1783
+ Type.Literal("allow"),
1784
+ Type.Literal("deny"),
1785
+ Type.Null()
1786
+ ])),
1787
+ groupActivation: Type.Optional(Type.Union([
1788
+ Type.Literal("mention"),
1789
+ Type.Literal("always"),
1790
+ Type.Null()
1791
+ ]))
1792
+ }, { additionalProperties: false });
1793
+ const SessionsResetParamsSchema = Type.Object({
1794
+ key: NonEmptyString,
1795
+ reason: Type.Optional(Type.Union([Type.Literal("new"), Type.Literal("reset")]))
1796
+ }, { additionalProperties: false });
1797
+ const SessionsDeleteParamsSchema = Type.Object({
1798
+ key: NonEmptyString,
1799
+ deleteTranscript: Type.Optional(Type.Boolean()),
1800
+ emitLifecycleHooks: Type.Optional(Type.Boolean())
1801
+ }, { additionalProperties: false });
1802
+ const SessionsCompactParamsSchema = Type.Object({
1803
+ key: NonEmptyString,
1804
+ maxLines: Type.Optional(Type.Integer({ minimum: 1 }))
1805
+ }, { additionalProperties: false });
1806
+ const SessionsUsageParamsSchema = Type.Object({
1807
+ key: Type.Optional(NonEmptyString),
1808
+ startDate: Type.Optional(Type.String({ pattern: "^\\d{4}-\\d{2}-\\d{2}$" })),
1809
+ endDate: Type.Optional(Type.String({ pattern: "^\\d{4}-\\d{2}-\\d{2}$" })),
1810
+ mode: Type.Optional(Type.Union([
1811
+ Type.Literal("utc"),
1812
+ Type.Literal("gateway"),
1813
+ Type.Literal("specific")
1814
+ ])),
1815
+ utcOffset: Type.Optional(Type.String({ pattern: "^UTC[+-]\\d{1,2}(?::[0-5]\\d)?$" })),
1816
+ limit: Type.Optional(Type.Integer({ minimum: 1 })),
1817
+ includeContextWeight: Type.Optional(Type.Boolean())
1818
+ }, { additionalProperties: false });
1819
+ //#endregion
1820
+ //#region src/gateway/protocol/schema/wizard.ts
1821
+ const WizardRunStatusSchema = Type.Union([
1822
+ Type.Literal("running"),
1823
+ Type.Literal("done"),
1824
+ Type.Literal("cancelled"),
1825
+ Type.Literal("error")
1826
+ ]);
1827
+ const WizardStartParamsSchema = Type.Object({
1828
+ mode: Type.Optional(Type.Union([Type.Literal("local"), Type.Literal("remote")])),
1829
+ workspace: Type.Optional(Type.String())
1830
+ }, { additionalProperties: false });
1831
+ const WizardAnswerSchema = Type.Object({
1832
+ stepId: NonEmptyString,
1833
+ value: Type.Optional(Type.Unknown())
1834
+ }, { additionalProperties: false });
1835
+ const WizardNextParamsSchema = Type.Object({
1836
+ sessionId: NonEmptyString,
1837
+ answer: Type.Optional(WizardAnswerSchema)
1838
+ }, { additionalProperties: false });
1839
+ const WizardSessionIdParamsSchema = Type.Object({ sessionId: NonEmptyString }, { additionalProperties: false });
1840
+ const WizardCancelParamsSchema = WizardSessionIdParamsSchema;
1841
+ const WizardStatusParamsSchema = WizardSessionIdParamsSchema;
1842
+ const WizardStepOptionSchema = Type.Object({
1843
+ value: Type.Unknown(),
1844
+ label: NonEmptyString,
1845
+ hint: Type.Optional(Type.String())
1846
+ }, { additionalProperties: false });
1847
+ const WizardStepSchema = Type.Object({
1848
+ id: NonEmptyString,
1849
+ type: Type.Union([
1850
+ Type.Literal("note"),
1851
+ Type.Literal("select"),
1852
+ Type.Literal("text"),
1853
+ Type.Literal("confirm"),
1854
+ Type.Literal("multiselect"),
1855
+ Type.Literal("progress"),
1856
+ Type.Literal("action")
1857
+ ]),
1858
+ title: Type.Optional(Type.String()),
1859
+ message: Type.Optional(Type.String()),
1860
+ options: Type.Optional(Type.Array(WizardStepOptionSchema)),
1861
+ initialValue: Type.Optional(Type.Unknown()),
1862
+ placeholder: Type.Optional(Type.String()),
1863
+ sensitive: Type.Optional(Type.Boolean()),
1864
+ executor: Type.Optional(Type.Union([Type.Literal("gateway"), Type.Literal("client")]))
1865
+ }, { additionalProperties: false });
1866
+ const WizardResultFields = {
1867
+ done: Type.Boolean(),
1868
+ step: Type.Optional(WizardStepSchema),
1869
+ status: Type.Optional(WizardRunStatusSchema),
1870
+ error: Type.Optional(Type.String())
1871
+ };
1872
+ Type.Object(WizardResultFields, { additionalProperties: false });
1873
+ Type.Object({
1874
+ sessionId: NonEmptyString,
1875
+ ...WizardResultFields
1876
+ }, { additionalProperties: false });
1877
+ Type.Object({
1878
+ status: WizardRunStatusSchema,
1879
+ error: Type.Optional(Type.String())
1880
+ }, { additionalProperties: false });
1881
+ //#endregion
1882
+ //#region src/gateway/protocol/index.ts
1883
+ const ajv = new Ajv({
1884
+ allErrors: true,
1885
+ strict: false,
1886
+ removeAdditional: false
1887
+ });
1888
+ const validateConnectParams = ajv.compile(ConnectParamsSchema);
1889
+ const validateRequestFrame = ajv.compile(RequestFrameSchema);
1890
+ const validateResponseFrame = ajv.compile(ResponseFrameSchema);
1891
+ const validateEventFrame = ajv.compile(EventFrameSchema);
1892
+ const validateSendParams = ajv.compile(SendParamsSchema);
1893
+ const validatePollParams = ajv.compile(PollParamsSchema);
1894
+ const validateAgentParams = ajv.compile(AgentParamsSchema);
1895
+ const validateAgentIdentityParams = ajv.compile(AgentIdentityParamsSchema);
1896
+ const validateAgentWaitParams = ajv.compile(AgentWaitParamsSchema);
1897
+ const validateWakeParams = ajv.compile(WakeParamsSchema);
1898
+ const validateAgentsListParams = ajv.compile(AgentsListParamsSchema);
1899
+ const validateAgentsCreateParams = ajv.compile(AgentsCreateParamsSchema);
1900
+ const validateAgentsUpdateParams = ajv.compile(AgentsUpdateParamsSchema);
1901
+ const validateAgentsDeleteParams = ajv.compile(AgentsDeleteParamsSchema);
1902
+ const validateAgentsFilesListParams = ajv.compile(AgentsFilesListParamsSchema);
1903
+ const validateAgentsFilesGetParams = ajv.compile(AgentsFilesGetParamsSchema);
1904
+ const validateAgentsFilesSetParams = ajv.compile(AgentsFilesSetParamsSchema);
1905
+ const validateNodePairRequestParams = ajv.compile(NodePairRequestParamsSchema);
1906
+ const validateNodePairListParams = ajv.compile(NodePairListParamsSchema);
1907
+ const validateNodePairApproveParams = ajv.compile(NodePairApproveParamsSchema);
1908
+ const validateNodePairRejectParams = ajv.compile(NodePairRejectParamsSchema);
1909
+ const validateNodePairVerifyParams = ajv.compile(NodePairVerifyParamsSchema);
1910
+ const validateNodeRenameParams = ajv.compile(NodeRenameParamsSchema);
1911
+ const validateNodeListParams = ajv.compile(NodeListParamsSchema);
1912
+ const validateNodePendingAckParams = ajv.compile(NodePendingAckParamsSchema);
1913
+ const validateNodeDescribeParams = ajv.compile(NodeDescribeParamsSchema);
1914
+ const validateNodeInvokeParams = ajv.compile(NodeInvokeParamsSchema);
1915
+ const validateNodeInvokeResultParams = ajv.compile(NodeInvokeResultParamsSchema);
1916
+ const validateNodeEventParams = ajv.compile(NodeEventParamsSchema);
1917
+ const validateNodePendingDrainParams = ajv.compile(NodePendingDrainParamsSchema);
1918
+ const validateNodePendingEnqueueParams = ajv.compile(NodePendingEnqueueParamsSchema);
1919
+ const validatePushTestParams = ajv.compile(PushTestParamsSchema);
1920
+ const validateSecretsResolveParams = ajv.compile(SecretsResolveParamsSchema);
1921
+ const validateSecretsResolveResult = ajv.compile(SecretsResolveResultSchema);
1922
+ const validateSessionsListParams = ajv.compile(SessionsListParamsSchema);
1923
+ const validateSessionsPreviewParams = ajv.compile(SessionsPreviewParamsSchema);
1924
+ const validateSessionsResolveParams = ajv.compile(SessionsResolveParamsSchema);
1925
+ const validateSessionsCreateParams = ajv.compile(SessionsCreateParamsSchema);
1926
+ const validateSessionsSendParams = ajv.compile(SessionsSendParamsSchema);
1927
+ const validateSessionsMessagesSubscribeParams = ajv.compile(SessionsMessagesSubscribeParamsSchema);
1928
+ const validateSessionsMessagesUnsubscribeParams = ajv.compile(SessionsMessagesUnsubscribeParamsSchema);
1929
+ const validateSessionsAbortParams = ajv.compile(SessionsAbortParamsSchema);
1930
+ const validateSessionsPatchParams = ajv.compile(SessionsPatchParamsSchema);
1931
+ const validateSessionsResetParams = ajv.compile(SessionsResetParamsSchema);
1932
+ const validateSessionsDeleteParams = ajv.compile(SessionsDeleteParamsSchema);
1933
+ const validateSessionsCompactParams = ajv.compile(SessionsCompactParamsSchema);
1934
+ const validateSessionsUsageParams = ajv.compile(SessionsUsageParamsSchema);
1935
+ const validateConfigGetParams = ajv.compile(ConfigGetParamsSchema);
1936
+ const validateConfigSetParams = ajv.compile(ConfigSetParamsSchema);
1937
+ const validateConfigApplyParams = ajv.compile(ConfigApplyParamsSchema);
1938
+ const validateConfigPatchParams = ajv.compile(ConfigPatchParamsSchema);
1939
+ const validateConfigSchemaParams = ajv.compile(ConfigSchemaParamsSchema);
1940
+ const validateConfigSchemaLookupParams = ajv.compile(ConfigSchemaLookupParamsSchema);
1941
+ const validateConfigSchemaLookupResult = ajv.compile(ConfigSchemaLookupResultSchema);
1942
+ const validateWizardStartParams = ajv.compile(WizardStartParamsSchema);
1943
+ const validateWizardNextParams = ajv.compile(WizardNextParamsSchema);
1944
+ const validateWizardCancelParams = ajv.compile(WizardCancelParamsSchema);
1945
+ const validateWizardStatusParams = ajv.compile(WizardStatusParamsSchema);
1946
+ const validateTalkModeParams = ajv.compile(TalkModeParamsSchema);
1947
+ const validateTalkConfigParams = ajv.compile(TalkConfigParamsSchema);
1948
+ ajv.compile(TalkConfigResultSchema);
1949
+ const validateTalkSpeakParams = ajv.compile(TalkSpeakParamsSchema);
1950
+ ajv.compile(TalkSpeakResultSchema);
1951
+ const validateChannelsStatusParams = ajv.compile(ChannelsStatusParamsSchema);
1952
+ const validateChannelsLogoutParams = ajv.compile(ChannelsLogoutParamsSchema);
1953
+ const validateModelsListParams = ajv.compile(ModelsListParamsSchema);
1954
+ const validateSkillsStatusParams = ajv.compile(SkillsStatusParamsSchema);
1955
+ const validateToolsCatalogParams = ajv.compile(ToolsCatalogParamsSchema);
1956
+ const validateSkillsBinsParams = ajv.compile(SkillsBinsParamsSchema);
1957
+ const validateSkillsInstallParams = ajv.compile(SkillsInstallParamsSchema);
1958
+ const validateSkillsUpdateParams = ajv.compile(SkillsUpdateParamsSchema);
1959
+ const validateCronListParams = ajv.compile(CronListParamsSchema);
1960
+ const validateCronStatusParams = ajv.compile(CronStatusParamsSchema);
1961
+ const validateCronAddParams = ajv.compile(CronAddParamsSchema);
1962
+ const validateCronUpdateParams = ajv.compile(CronUpdateParamsSchema);
1963
+ const validateCronRemoveParams = ajv.compile(CronRemoveParamsSchema);
1964
+ const validateCronRunParams = ajv.compile(CronRunParamsSchema);
1965
+ const validateCronRunsParams = ajv.compile(CronRunsParamsSchema);
1966
+ const validateDevicePairListParams = ajv.compile(DevicePairListParamsSchema);
1967
+ const validateDevicePairApproveParams = ajv.compile(DevicePairApproveParamsSchema);
1968
+ const validateDevicePairRejectParams = ajv.compile(DevicePairRejectParamsSchema);
1969
+ const validateDevicePairRemoveParams = ajv.compile(DevicePairRemoveParamsSchema);
1970
+ const validateDeviceTokenRotateParams = ajv.compile(DeviceTokenRotateParamsSchema);
1971
+ const validateDeviceTokenRevokeParams = ajv.compile(DeviceTokenRevokeParamsSchema);
1972
+ const validateExecApprovalsGetParams = ajv.compile(ExecApprovalsGetParamsSchema);
1973
+ const validateExecApprovalsSetParams = ajv.compile(ExecApprovalsSetParamsSchema);
1974
+ const validateExecApprovalRequestParams = ajv.compile(ExecApprovalRequestParamsSchema);
1975
+ const validateExecApprovalResolveParams = ajv.compile(ExecApprovalResolveParamsSchema);
1976
+ const validateExecApprovalsNodeGetParams = ajv.compile(ExecApprovalsNodeGetParamsSchema);
1977
+ const validateExecApprovalsNodeSetParams = ajv.compile(ExecApprovalsNodeSetParamsSchema);
1978
+ const validateLogsTailParams = ajv.compile(LogsTailParamsSchema);
1979
+ const validateChatHistoryParams = ajv.compile(ChatHistoryParamsSchema);
1980
+ const validateChatSendParams = ajv.compile(ChatSendParamsSchema);
1981
+ const validateChatAbortParams = ajv.compile(ChatAbortParamsSchema);
1982
+ const validateChatInjectParams = ajv.compile(ChatInjectParamsSchema);
1983
+ ajv.compile(ChatEventSchema);
1984
+ const validateUpdateRunParams = ajv.compile(UpdateRunParamsSchema);
1985
+ const validateWebLoginStartParams = ajv.compile(WebLoginStartParamsSchema);
1986
+ const validateWebLoginWaitParams = ajv.compile(WebLoginWaitParamsSchema);
1987
+ function formatValidationErrors(errors) {
1988
+ if (!errors?.length) return "unknown validation error";
1989
+ const parts = [];
1990
+ for (const err of errors) {
1991
+ const keyword = typeof err?.keyword === "string" ? err.keyword : "";
1992
+ const instancePath = typeof err?.instancePath === "string" ? err.instancePath : "";
1993
+ if (keyword === "additionalProperties") {
1994
+ const additionalProperty = (err?.params)?.additionalProperty;
1995
+ if (typeof additionalProperty === "string" && additionalProperty.trim()) {
1996
+ const where = instancePath ? `at ${instancePath}` : "at root";
1997
+ parts.push(`${where}: unexpected property '${additionalProperty}'`);
1998
+ continue;
1999
+ }
2000
+ }
2001
+ const message = typeof err?.message === "string" && err.message.trim() ? err.message : "validation error";
2002
+ const where = instancePath ? `at ${instancePath}: ` : "";
2003
+ parts.push(`${where}${message}`);
2004
+ }
2005
+ const unique = Array.from(new Set(parts.filter((part) => part.trim())));
2006
+ if (!unique.length) return ajv.errorsText(errors, { separator: "; " }) || "unknown validation error";
2007
+ return unique.join("; ");
2008
+ }
2009
+ //#endregion
2010
+ //#region src/gateway/client.ts
2011
+ var GatewayClientRequestError = class extends Error {
2012
+ constructor(error) {
2013
+ super(error.message ?? "gateway request failed");
2014
+ this.name = "GatewayClientRequestError";
2015
+ this.gatewayCode = error.code ?? "UNAVAILABLE";
2016
+ this.details = error.details;
2017
+ }
2018
+ };
2019
+ const FORCE_STOP_TERMINATE_GRACE_MS = 250;
2020
+ const STOP_AND_WAIT_TIMEOUT_MS = 1e3;
2021
+ var GatewayClient = class {
2022
+ constructor(opts) {
2023
+ this.ws = null;
2024
+ this.pending = /* @__PURE__ */ new Map();
2025
+ this.backoffMs = 1e3;
2026
+ this.closed = false;
2027
+ this.lastSeq = null;
2028
+ this.connectNonce = null;
2029
+ this.connectSent = false;
2030
+ this.connectTimer = null;
2031
+ this.pendingDeviceTokenRetry = false;
2032
+ this.deviceTokenRetryBudgetUsed = false;
2033
+ this.pendingConnectErrorDetailCode = null;
2034
+ this.lastTick = null;
2035
+ this.tickIntervalMs = 3e4;
2036
+ this.tickTimer = null;
2037
+ this.pendingStop = null;
2038
+ this.opts = {
2039
+ ...opts,
2040
+ deviceIdentity: opts.deviceIdentity === null ? void 0 : opts.deviceIdentity ?? loadOrCreateDeviceIdentity()
2041
+ };
2042
+ this.requestTimeoutMs = typeof opts.requestTimeoutMs === "number" && Number.isFinite(opts.requestTimeoutMs) ? Math.max(1, Math.min(Math.floor(opts.requestTimeoutMs), 2147483647)) : 3e4;
2043
+ }
2044
+ start() {
2045
+ if (this.closed) return;
2046
+ const url = this.opts.url ?? "ws://127.0.0.1:18789";
2047
+ if (this.opts.tlsFingerprint && !url.startsWith("wss://")) {
2048
+ this.opts.onConnectError?.(/* @__PURE__ */ new Error("gateway tls fingerprint requires wss:// gateway url"));
2049
+ return;
2050
+ }
2051
+ const allowPrivateWs = process.env.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS === "1";
2052
+ if (!isSecureWebSocketUrl(url, { allowPrivateWs })) {
2053
+ let displayHost = url;
2054
+ try {
2055
+ displayHost = new URL(url).hostname || url;
2056
+ } catch {}
2057
+ const error = /* @__PURE__ */ new Error(`SECURITY ERROR: Cannot connect to "${displayHost}" over plaintext ws://. Both credentials and chat data would be exposed to network interception. Use wss:// for remote URLs. Safe defaults: keep gateway.bind=loopback and connect via SSH tunnel (ssh -N -L 18789:127.0.0.1:18789 user@gateway-host), or use Tailscale Serve/Funnel. ` + (allowPrivateWs ? "" : "Break-glass (trusted private networks only): set OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1. ") + "Run `openclaw doctor --fix` for guidance.");
2058
+ this.opts.onConnectError?.(error);
2059
+ return;
2060
+ }
2061
+ const wsOptions = { maxPayload: 25 * 1024 * 1024 };
2062
+ if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
2063
+ wsOptions.rejectUnauthorized = false;
2064
+ wsOptions.checkServerIdentity = ((_host, cert) => {
2065
+ const fingerprintValue = typeof cert === "object" && cert && "fingerprint256" in cert ? cert.fingerprint256 ?? "" : "";
2066
+ const fingerprint = normalizeFingerprint(typeof fingerprintValue === "string" ? fingerprintValue : "");
2067
+ const expected = normalizeFingerprint(this.opts.tlsFingerprint ?? "");
2068
+ if (!expected) return /* @__PURE__ */ new Error("gateway tls fingerprint missing");
2069
+ if (!fingerprint) return /* @__PURE__ */ new Error("gateway tls fingerprint unavailable");
2070
+ if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
2071
+ });
2072
+ }
2073
+ const ws = new WebSocket(url, wsOptions);
2074
+ this.ws = ws;
2075
+ ws.on("open", () => {
2076
+ if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
2077
+ const tlsError = this.validateTlsFingerprint();
2078
+ if (tlsError) {
2079
+ this.opts.onConnectError?.(tlsError);
2080
+ this.ws?.close(1008, tlsError.message);
2081
+ return;
2082
+ }
2083
+ }
2084
+ this.queueConnect();
2085
+ });
2086
+ ws.on("message", (data) => this.handleMessage(rawDataToString(data)));
2087
+ ws.on("close", (code, reason) => {
2088
+ const reasonText = rawDataToString(reason);
2089
+ const connectErrorDetailCode = this.pendingConnectErrorDetailCode;
2090
+ this.pendingConnectErrorDetailCode = null;
2091
+ if (this.ws === ws) this.ws = null;
2092
+ this.resolvePendingStop(ws);
2093
+ if (code === 1008 && reasonText.toLowerCase().includes("device token mismatch") && !this.opts.token && !this.opts.password && this.opts.deviceIdentity) {
2094
+ const deviceId = this.opts.deviceIdentity.deviceId;
2095
+ const role = this.opts.role ?? "operator";
2096
+ try {
2097
+ clearDeviceAuthToken({
2098
+ deviceId,
2099
+ role
2100
+ });
2101
+ logDebug(`cleared stale device-auth token for device ${deviceId}`);
2102
+ } catch (err) {
2103
+ logDebug(`failed clearing stale device-auth token for device ${deviceId}: ${String(err)}`);
2104
+ }
2105
+ }
2106
+ this.flushPendingErrors(/* @__PURE__ */ new Error(`gateway closed (${code}): ${reasonText}`));
2107
+ if (this.shouldPauseReconnectAfterAuthFailure(connectErrorDetailCode)) {
2108
+ this.opts.onClose?.(code, reasonText);
2109
+ return;
2110
+ }
2111
+ this.scheduleReconnect();
2112
+ this.opts.onClose?.(code, reasonText);
2113
+ });
2114
+ ws.on("error", (err) => {
2115
+ logDebug(`gateway client error: ${String(err)}`);
2116
+ if (!this.connectSent) this.opts.onConnectError?.(err instanceof Error ? err : new Error(String(err)));
2117
+ });
2118
+ }
2119
+ stop() {
2120
+ this.beginStop();
2121
+ }
2122
+ async stopAndWait(opts) {
2123
+ const stopPromise = this.beginStop();
2124
+ if (!stopPromise) return;
2125
+ const timeoutMs = typeof opts?.timeoutMs === "number" && Number.isFinite(opts.timeoutMs) ? Math.max(1, Math.floor(opts.timeoutMs)) : STOP_AND_WAIT_TIMEOUT_MS;
2126
+ let timeout = null;
2127
+ try {
2128
+ await Promise.race([stopPromise, new Promise((_, reject) => {
2129
+ timeout = setTimeout(() => {
2130
+ reject(/* @__PURE__ */ new Error(`gateway client stop timed out after ${timeoutMs}ms`));
2131
+ }, timeoutMs);
2132
+ timeout.unref?.();
2133
+ })]);
2134
+ } finally {
2135
+ if (timeout) clearTimeout(timeout);
2136
+ }
2137
+ }
2138
+ beginStop() {
2139
+ this.closed = true;
2140
+ this.pendingDeviceTokenRetry = false;
2141
+ this.deviceTokenRetryBudgetUsed = false;
2142
+ this.pendingConnectErrorDetailCode = null;
2143
+ if (this.tickTimer) {
2144
+ clearInterval(this.tickTimer);
2145
+ this.tickTimer = null;
2146
+ }
2147
+ if (this.connectTimer) {
2148
+ clearTimeout(this.connectTimer);
2149
+ this.connectTimer = null;
2150
+ }
2151
+ if (this.pendingStop) {
2152
+ this.flushPendingErrors(/* @__PURE__ */ new Error("gateway client stopped"));
2153
+ return this.pendingStop.promise;
2154
+ }
2155
+ const ws = this.ws;
2156
+ this.ws = null;
2157
+ if (ws) {
2158
+ const stopPromise = this.createPendingStop(ws);
2159
+ ws.close();
2160
+ setTimeout(() => {
2161
+ try {
2162
+ ws.terminate();
2163
+ } catch {}
2164
+ this.resolvePendingStop(ws);
2165
+ }, FORCE_STOP_TERMINATE_GRACE_MS).unref?.();
2166
+ this.flushPendingErrors(/* @__PURE__ */ new Error("gateway client stopped"));
2167
+ return stopPromise;
2168
+ }
2169
+ this.flushPendingErrors(/* @__PURE__ */ new Error("gateway client stopped"));
2170
+ return null;
2171
+ }
2172
+ createPendingStop(ws) {
2173
+ if (this.pendingStop?.ws === ws) return this.pendingStop.promise;
2174
+ let resolve;
2175
+ const promise = new Promise((res) => {
2176
+ resolve = res;
2177
+ });
2178
+ this.pendingStop = {
2179
+ ws,
2180
+ promise,
2181
+ resolve
2182
+ };
2183
+ return promise;
2184
+ }
2185
+ resolvePendingStop(ws) {
2186
+ if (this.pendingStop?.ws !== ws) return;
2187
+ const { resolve } = this.pendingStop;
2188
+ this.pendingStop = null;
2189
+ resolve();
2190
+ }
2191
+ sendConnect() {
2192
+ if (this.connectSent) return;
2193
+ const nonce = this.connectNonce?.trim() ?? "";
2194
+ if (!nonce) {
2195
+ this.opts.onConnectError?.(/* @__PURE__ */ new Error("gateway connect challenge missing nonce"));
2196
+ this.ws?.close(1008, "connect challenge missing nonce");
2197
+ return;
2198
+ }
2199
+ this.connectSent = true;
2200
+ if (this.connectTimer) {
2201
+ clearTimeout(this.connectTimer);
2202
+ this.connectTimer = null;
2203
+ }
2204
+ const role = this.opts.role ?? "operator";
2205
+ const { authToken, authBootstrapToken, authDeviceToken, authPassword, signatureToken, resolvedDeviceToken, storedToken } = this.selectConnectAuth(role);
2206
+ if (this.pendingDeviceTokenRetry && authDeviceToken) this.pendingDeviceTokenRetry = false;
2207
+ const auth = authToken || authBootstrapToken || authPassword || resolvedDeviceToken ? {
2208
+ token: authToken,
2209
+ bootstrapToken: authBootstrapToken,
2210
+ deviceToken: authDeviceToken ?? resolvedDeviceToken,
2211
+ password: authPassword
2212
+ } : void 0;
2213
+ const signedAtMs = Date.now();
2214
+ const scopes = this.opts.scopes ?? ["operator.admin"];
2215
+ const platform = this.opts.platform ?? process.platform;
2216
+ const device = (() => {
2217
+ if (!this.opts.deviceIdentity) return;
2218
+ const payload = buildDeviceAuthPayloadV3({
2219
+ deviceId: this.opts.deviceIdentity.deviceId,
2220
+ clientId: this.opts.clientName ?? GATEWAY_CLIENT_NAMES.GATEWAY_CLIENT,
2221
+ clientMode: this.opts.mode ?? GATEWAY_CLIENT_MODES.BACKEND,
2222
+ role,
2223
+ scopes,
2224
+ signedAtMs,
2225
+ token: signatureToken ?? null,
2226
+ nonce,
2227
+ platform,
2228
+ deviceFamily: this.opts.deviceFamily
2229
+ });
2230
+ const signature = signDevicePayload(this.opts.deviceIdentity.privateKeyPem, payload);
2231
+ return {
2232
+ id: this.opts.deviceIdentity.deviceId,
2233
+ publicKey: publicKeyRawBase64UrlFromPem(this.opts.deviceIdentity.publicKeyPem),
2234
+ signature,
2235
+ signedAt: signedAtMs,
2236
+ nonce
2237
+ };
2238
+ })();
2239
+ const params = {
2240
+ minProtocol: this.opts.minProtocol ?? 3,
2241
+ maxProtocol: this.opts.maxProtocol ?? 3,
2242
+ client: {
2243
+ id: this.opts.clientName ?? GATEWAY_CLIENT_NAMES.GATEWAY_CLIENT,
2244
+ displayName: this.opts.clientDisplayName,
2245
+ version: this.opts.clientVersion ?? VERSION,
2246
+ platform,
2247
+ deviceFamily: this.opts.deviceFamily,
2248
+ mode: this.opts.mode ?? GATEWAY_CLIENT_MODES.BACKEND,
2249
+ instanceId: this.opts.instanceId
2250
+ },
2251
+ caps: Array.isArray(this.opts.caps) ? this.opts.caps : [],
2252
+ commands: Array.isArray(this.opts.commands) ? this.opts.commands : void 0,
2253
+ permissions: this.opts.permissions && typeof this.opts.permissions === "object" ? this.opts.permissions : void 0,
2254
+ pathEnv: this.opts.pathEnv,
2255
+ auth,
2256
+ role,
2257
+ scopes,
2258
+ device
2259
+ };
2260
+ this.request("connect", params).then((helloOk) => {
2261
+ this.pendingDeviceTokenRetry = false;
2262
+ this.deviceTokenRetryBudgetUsed = false;
2263
+ this.pendingConnectErrorDetailCode = null;
2264
+ const authInfo = helloOk?.auth;
2265
+ if (authInfo?.deviceToken && this.opts.deviceIdentity) storeDeviceAuthToken({
2266
+ deviceId: this.opts.deviceIdentity.deviceId,
2267
+ role: authInfo.role ?? role,
2268
+ token: authInfo.deviceToken,
2269
+ scopes: authInfo.scopes ?? []
2270
+ });
2271
+ this.backoffMs = 1e3;
2272
+ this.tickIntervalMs = typeof helloOk.policy?.tickIntervalMs === "number" ? helloOk.policy.tickIntervalMs : 3e4;
2273
+ this.lastTick = Date.now();
2274
+ this.startTickWatch();
2275
+ this.opts.onHelloOk?.(helloOk);
2276
+ }).catch((err) => {
2277
+ this.pendingConnectErrorDetailCode = err instanceof GatewayClientRequestError ? readConnectErrorDetailCode(err.details) : null;
2278
+ if (this.shouldRetryWithStoredDeviceToken({
2279
+ error: err,
2280
+ explicitGatewayToken: this.opts.token?.trim() || void 0,
2281
+ resolvedDeviceToken,
2282
+ storedToken: storedToken ?? void 0
2283
+ })) {
2284
+ this.pendingDeviceTokenRetry = true;
2285
+ this.deviceTokenRetryBudgetUsed = true;
2286
+ this.backoffMs = Math.min(this.backoffMs, 250);
2287
+ }
2288
+ this.opts.onConnectError?.(err instanceof Error ? err : new Error(String(err)));
2289
+ const msg = `gateway connect failed: ${String(err)}`;
2290
+ if (this.opts.mode === GATEWAY_CLIENT_MODES.PROBE) logDebug(msg);
2291
+ else logError(msg);
2292
+ this.ws?.close(1008, "connect failed");
2293
+ });
2294
+ }
2295
+ shouldPauseReconnectAfterAuthFailure(detailCode) {
2296
+ if (!detailCode) return false;
2297
+ if (detailCode === ConnectErrorDetailCodes.AUTH_TOKEN_MISSING || detailCode === ConnectErrorDetailCodes.AUTH_BOOTSTRAP_TOKEN_INVALID || detailCode === ConnectErrorDetailCodes.AUTH_PASSWORD_MISSING || detailCode === ConnectErrorDetailCodes.AUTH_PASSWORD_MISMATCH || detailCode === ConnectErrorDetailCodes.AUTH_RATE_LIMITED || detailCode === ConnectErrorDetailCodes.PAIRING_REQUIRED || detailCode === ConnectErrorDetailCodes.CONTROL_UI_DEVICE_IDENTITY_REQUIRED || detailCode === ConnectErrorDetailCodes.DEVICE_IDENTITY_REQUIRED) return true;
2298
+ if (detailCode !== ConnectErrorDetailCodes.AUTH_TOKEN_MISMATCH) return false;
2299
+ if (this.pendingDeviceTokenRetry) return false;
2300
+ if (!this.isTrustedDeviceRetryEndpoint()) return true;
2301
+ return this.deviceTokenRetryBudgetUsed;
2302
+ }
2303
+ shouldRetryWithStoredDeviceToken(params) {
2304
+ if (this.deviceTokenRetryBudgetUsed) return false;
2305
+ if (params.resolvedDeviceToken) return false;
2306
+ if (!params.explicitGatewayToken || !params.storedToken) return false;
2307
+ if (!this.isTrustedDeviceRetryEndpoint()) return false;
2308
+ if (!(params.error instanceof GatewayClientRequestError)) return false;
2309
+ const detailCode = readConnectErrorDetailCode(params.error.details);
2310
+ const advice = readConnectErrorRecoveryAdvice(params.error.details);
2311
+ const retryWithDeviceTokenRecommended = advice.recommendedNextStep === "retry_with_device_token";
2312
+ return advice.canRetryWithDeviceToken === true || retryWithDeviceTokenRecommended || detailCode === ConnectErrorDetailCodes.AUTH_TOKEN_MISMATCH;
2313
+ }
2314
+ isTrustedDeviceRetryEndpoint() {
2315
+ const rawUrl = this.opts.url ?? "ws://127.0.0.1:18789";
2316
+ try {
2317
+ const parsed = new URL(rawUrl);
2318
+ const protocol = parsed.protocol === "https:" ? "wss:" : parsed.protocol === "http:" ? "ws:" : parsed.protocol;
2319
+ if (isLoopbackHost(parsed.hostname)) return true;
2320
+ return protocol === "wss:" && Boolean(this.opts.tlsFingerprint?.trim());
2321
+ } catch {
2322
+ return false;
2323
+ }
2324
+ }
2325
+ selectConnectAuth(role) {
2326
+ const explicitGatewayToken = this.opts.token?.trim() || void 0;
2327
+ const explicitBootstrapToken = this.opts.bootstrapToken?.trim() || void 0;
2328
+ const explicitDeviceToken = this.opts.deviceToken?.trim() || void 0;
2329
+ const authPassword = this.opts.password?.trim() || void 0;
2330
+ const storedToken = this.opts.deviceIdentity ? loadDeviceAuthToken({
2331
+ deviceId: this.opts.deviceIdentity.deviceId,
2332
+ role
2333
+ })?.token : null;
2334
+ const shouldUseDeviceRetryToken = this.pendingDeviceTokenRetry && !explicitDeviceToken && Boolean(explicitGatewayToken) && Boolean(storedToken) && this.isTrustedDeviceRetryEndpoint();
2335
+ const resolvedDeviceToken = explicitDeviceToken ?? (shouldUseDeviceRetryToken || !(explicitGatewayToken || authPassword) && (!explicitBootstrapToken || Boolean(storedToken)) ? storedToken ?? void 0 : void 0);
2336
+ const authToken = explicitGatewayToken ?? resolvedDeviceToken;
2337
+ const authBootstrapToken = !explicitGatewayToken && !resolvedDeviceToken ? explicitBootstrapToken : void 0;
2338
+ return {
2339
+ authToken,
2340
+ authBootstrapToken,
2341
+ authDeviceToken: shouldUseDeviceRetryToken ? storedToken ?? void 0 : void 0,
2342
+ authPassword,
2343
+ signatureToken: authToken ?? authBootstrapToken ?? void 0,
2344
+ resolvedDeviceToken,
2345
+ storedToken: storedToken ?? void 0
2346
+ };
2347
+ }
2348
+ handleMessage(raw) {
2349
+ try {
2350
+ const parsed = JSON.parse(raw);
2351
+ if (validateEventFrame(parsed)) {
2352
+ const evt = parsed;
2353
+ if (evt.event === "connect.challenge") {
2354
+ const payload = evt.payload;
2355
+ const nonce = payload && typeof payload.nonce === "string" ? payload.nonce : null;
2356
+ if (!nonce || nonce.trim().length === 0) {
2357
+ this.opts.onConnectError?.(/* @__PURE__ */ new Error("gateway connect challenge missing nonce"));
2358
+ this.ws?.close(1008, "connect challenge missing nonce");
2359
+ return;
2360
+ }
2361
+ this.connectNonce = nonce.trim();
2362
+ this.sendConnect();
2363
+ return;
2364
+ }
2365
+ const seq = typeof evt.seq === "number" ? evt.seq : null;
2366
+ if (seq !== null) {
2367
+ if (this.lastSeq !== null && seq > this.lastSeq + 1) this.opts.onGap?.({
2368
+ expected: this.lastSeq + 1,
2369
+ received: seq
2370
+ });
2371
+ this.lastSeq = seq;
2372
+ }
2373
+ if (evt.event === "tick") this.lastTick = Date.now();
2374
+ this.opts.onEvent?.(evt);
2375
+ return;
2376
+ }
2377
+ if (validateResponseFrame(parsed)) {
2378
+ const pending = this.pending.get(parsed.id);
2379
+ if (!pending) return;
2380
+ const status = parsed.payload?.status;
2381
+ if (pending.expectFinal && status === "accepted") return;
2382
+ this.pending.delete(parsed.id);
2383
+ if (pending.timeout) clearTimeout(pending.timeout);
2384
+ if (parsed.ok) pending.resolve(parsed.payload);
2385
+ else pending.reject(new GatewayClientRequestError({
2386
+ code: parsed.error?.code,
2387
+ message: parsed.error?.message ?? "unknown error",
2388
+ details: parsed.error?.details
2389
+ }));
2390
+ }
2391
+ } catch (err) {
2392
+ logDebug(`gateway client parse error: ${String(err)}`);
2393
+ }
2394
+ }
2395
+ queueConnect() {
2396
+ this.connectNonce = null;
2397
+ this.connectSent = false;
2398
+ const rawConnectDelayMs = this.opts.connectDelayMs;
2399
+ const connectChallengeTimeoutMs = typeof rawConnectDelayMs === "number" && Number.isFinite(rawConnectDelayMs) ? Math.max(250, Math.min(1e4, rawConnectDelayMs)) : 2e3;
2400
+ if (this.connectTimer) clearTimeout(this.connectTimer);
2401
+ this.connectTimer = setTimeout(() => {
2402
+ if (this.connectSent || this.ws?.readyState !== WebSocket.OPEN) return;
2403
+ this.opts.onConnectError?.(/* @__PURE__ */ new Error("gateway connect challenge timeout"));
2404
+ this.ws?.close(1008, "connect challenge timeout");
2405
+ }, connectChallengeTimeoutMs);
2406
+ }
2407
+ scheduleReconnect() {
2408
+ if (this.closed) return;
2409
+ if (this.tickTimer) {
2410
+ clearInterval(this.tickTimer);
2411
+ this.tickTimer = null;
2412
+ }
2413
+ const delay = this.backoffMs;
2414
+ this.backoffMs = Math.min(this.backoffMs * 2, 3e4);
2415
+ setTimeout(() => this.start(), delay).unref();
2416
+ }
2417
+ flushPendingErrors(err) {
2418
+ for (const [, p] of this.pending) {
2419
+ if (p.timeout) clearTimeout(p.timeout);
2420
+ p.reject(err);
2421
+ }
2422
+ this.pending.clear();
2423
+ }
2424
+ startTickWatch() {
2425
+ if (this.tickTimer) clearInterval(this.tickTimer);
2426
+ const rawMinInterval = this.opts.tickWatchMinIntervalMs;
2427
+ const minInterval = typeof rawMinInterval === "number" && Number.isFinite(rawMinInterval) ? Math.max(1, Math.min(3e4, rawMinInterval)) : 1e3;
2428
+ const interval = Math.max(this.tickIntervalMs, minInterval);
2429
+ this.tickTimer = setInterval(() => {
2430
+ if (this.closed) return;
2431
+ if (!this.lastTick) return;
2432
+ if (Date.now() - this.lastTick > this.tickIntervalMs * 2) this.ws?.close(4e3, "tick timeout");
2433
+ }, interval);
2434
+ }
2435
+ validateTlsFingerprint() {
2436
+ if (!this.opts.tlsFingerprint || !this.ws) return null;
2437
+ const expected = normalizeFingerprint(this.opts.tlsFingerprint);
2438
+ if (!expected) return /* @__PURE__ */ new Error("gateway tls fingerprint missing");
2439
+ const socket = this.ws._socket;
2440
+ if (!socket || typeof socket.getPeerCertificate !== "function") return /* @__PURE__ */ new Error("gateway tls fingerprint unavailable");
2441
+ const fingerprint = normalizeFingerprint(socket.getPeerCertificate()?.fingerprint256 ?? "");
2442
+ if (!fingerprint) return /* @__PURE__ */ new Error("gateway tls fingerprint unavailable");
2443
+ if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
2444
+ return null;
2445
+ }
2446
+ async request(method, params, opts) {
2447
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
2448
+ const id = randomUUID();
2449
+ const frame = {
2450
+ type: "req",
2451
+ id,
2452
+ method,
2453
+ params
2454
+ };
2455
+ if (!validateRequestFrame(frame)) throw new Error(`invalid request frame: ${JSON.stringify(validateRequestFrame.errors, null, 2)}`);
2456
+ const expectFinal = opts?.expectFinal === true;
2457
+ const timeoutMs = opts?.timeoutMs === null ? null : typeof opts?.timeoutMs === "number" && Number.isFinite(opts.timeoutMs) ? Math.max(1, Math.min(Math.floor(opts.timeoutMs), 2147483647)) : expectFinal ? null : this.requestTimeoutMs;
2458
+ const p = new Promise((resolve, reject) => {
2459
+ const timeout = timeoutMs === null ? null : setTimeout(() => {
2460
+ this.pending.delete(id);
2461
+ reject(/* @__PURE__ */ new Error(`gateway request timeout for ${method}`));
2462
+ }, timeoutMs);
2463
+ this.pending.set(id, {
2464
+ resolve: (value) => resolve(value),
2465
+ reject,
2466
+ expectFinal,
2467
+ timeout
2468
+ });
2469
+ });
2470
+ this.ws.send(JSON.stringify(frame));
2471
+ return p;
2472
+ }
2473
+ };
2474
+ //#endregion
2475
+ //#region src/gateway/method-scopes.ts
2476
+ const ADMIN_SCOPE = "operator.admin";
2477
+ const READ_SCOPE = "operator.read";
2478
+ const WRITE_SCOPE = "operator.write";
2479
+ const APPROVALS_SCOPE = "operator.approvals";
2480
+ const PAIRING_SCOPE = "operator.pairing";
2481
+ const CLI_DEFAULT_OPERATOR_SCOPES = [
2482
+ ADMIN_SCOPE,
2483
+ READ_SCOPE,
2484
+ WRITE_SCOPE,
2485
+ APPROVALS_SCOPE,
2486
+ PAIRING_SCOPE
2487
+ ];
2488
+ const NODE_ROLE_METHODS = new Set([
2489
+ "node.invoke.result",
2490
+ "node.event",
2491
+ "node.pending.drain",
2492
+ "node.canvas.capability.refresh",
2493
+ "node.pending.pull",
2494
+ "node.pending.ack",
2495
+ "skills.bins"
2496
+ ]);
2497
+ const METHOD_SCOPE_GROUPS = {
2498
+ [APPROVALS_SCOPE]: [
2499
+ "exec.approval.request",
2500
+ "exec.approval.waitDecision",
2501
+ "exec.approval.resolve"
2502
+ ],
2503
+ [PAIRING_SCOPE]: [
2504
+ "node.pair.request",
2505
+ "node.pair.list",
2506
+ "node.pair.approve",
2507
+ "node.pair.reject",
2508
+ "node.pair.verify",
2509
+ "device.pair.list",
2510
+ "device.pair.approve",
2511
+ "device.pair.reject",
2512
+ "device.pair.remove",
2513
+ "device.token.rotate",
2514
+ "device.token.revoke",
2515
+ "node.rename"
2516
+ ],
2517
+ [READ_SCOPE]: [
2518
+ "health",
2519
+ "doctor.memory.status",
2520
+ "logs.tail",
2521
+ "channels.status",
2522
+ "status",
2523
+ "usage.status",
2524
+ "usage.cost",
2525
+ "tts.status",
2526
+ "tts.providers",
2527
+ "models.list",
2528
+ "tools.catalog",
2529
+ "agents.list",
2530
+ "agent.identity.get",
2531
+ "skills.status",
2532
+ "voicewake.get",
2533
+ "sessions.list",
2534
+ "sessions.get",
2535
+ "sessions.preview",
2536
+ "sessions.resolve",
2537
+ "sessions.subscribe",
2538
+ "sessions.unsubscribe",
2539
+ "sessions.messages.subscribe",
2540
+ "sessions.messages.unsubscribe",
2541
+ "sessions.usage",
2542
+ "sessions.usage.timeseries",
2543
+ "sessions.usage.logs",
2544
+ "cron.list",
2545
+ "cron.status",
2546
+ "cron.runs",
2547
+ "gateway.identity.get",
2548
+ "system-presence",
2549
+ "last-heartbeat",
2550
+ "node.list",
2551
+ "node.describe",
2552
+ "chat.history",
2553
+ "config.get",
2554
+ "config.schema.lookup",
2555
+ "talk.config",
2556
+ "agents.files.list",
2557
+ "agents.files.get"
2558
+ ],
2559
+ [WRITE_SCOPE]: [
2560
+ "send",
2561
+ "poll",
2562
+ "agent",
2563
+ "agent.wait",
2564
+ "wake",
2565
+ "talk.mode",
2566
+ "talk.speak",
2567
+ "tts.enable",
2568
+ "tts.disable",
2569
+ "tts.convert",
2570
+ "tts.setProvider",
2571
+ "voicewake.set",
2572
+ "node.invoke",
2573
+ "chat.send",
2574
+ "chat.abort",
2575
+ "sessions.create",
2576
+ "sessions.send",
2577
+ "sessions.steer",
2578
+ "sessions.abort",
2579
+ "browser.request",
2580
+ "push.test",
2581
+ "node.pending.enqueue"
2582
+ ],
2583
+ [ADMIN_SCOPE]: [
2584
+ "channels.logout",
2585
+ "agents.create",
2586
+ "agents.update",
2587
+ "agents.delete",
2588
+ "skills.install",
2589
+ "skills.update",
2590
+ "secrets.reload",
2591
+ "secrets.resolve",
2592
+ "cron.add",
2593
+ "cron.update",
2594
+ "cron.remove",
2595
+ "cron.run",
2596
+ "sessions.patch",
2597
+ "sessions.reset",
2598
+ "sessions.delete",
2599
+ "sessions.compact",
2600
+ "connect",
2601
+ "chat.inject",
2602
+ "web.login.start",
2603
+ "web.login.wait",
2604
+ "set-heartbeats",
2605
+ "system-event",
2606
+ "agents.files.set"
2607
+ ]
2608
+ };
2609
+ const ADMIN_METHOD_PREFIXES = [
2610
+ "exec.approvals.",
2611
+ "config.",
2612
+ "wizard.",
2613
+ "update."
2614
+ ];
2615
+ const METHOD_SCOPE_BY_NAME = new Map(Object.entries(METHOD_SCOPE_GROUPS).flatMap(([scope, methods]) => methods.map((method) => [method, scope])));
2616
+ function resolveScopedMethod(method) {
2617
+ const explicitScope = METHOD_SCOPE_BY_NAME.get(method);
2618
+ if (explicitScope) return explicitScope;
2619
+ if (ADMIN_METHOD_PREFIXES.some((prefix) => method.startsWith(prefix))) return ADMIN_SCOPE;
2620
+ }
2621
+ function isNodeRoleMethod(method) {
2622
+ return NODE_ROLE_METHODS.has(method);
2623
+ }
2624
+ function resolveRequiredOperatorScopeForMethod(method) {
2625
+ return resolveScopedMethod(method);
2626
+ }
2627
+ function resolveLeastPrivilegeOperatorScopesForMethod(method) {
2628
+ const requiredScope = resolveRequiredOperatorScopeForMethod(method);
2629
+ if (requiredScope) return [requiredScope];
2630
+ return [];
2631
+ }
2632
+ function authorizeOperatorScopesForMethod(method, scopes) {
2633
+ if (scopes.includes("operator.admin")) return { allowed: true };
2634
+ const requiredScope = resolveRequiredOperatorScopeForMethod(method) ?? "operator.admin";
2635
+ if (requiredScope === "operator.read") {
2636
+ if (scopes.includes("operator.read") || scopes.includes("operator.write")) return { allowed: true };
2637
+ return {
2638
+ allowed: false,
2639
+ missingScope: READ_SCOPE
2640
+ };
2641
+ }
2642
+ if (scopes.includes(requiredScope)) return { allowed: true };
2643
+ return {
2644
+ allowed: false,
2645
+ missingScope: requiredScope
2646
+ };
2647
+ }
2648
+ //#endregion
2649
+ export { validateExecApprovalsNodeSetParams as $, errorShape as $t, validateConfigPatchParams as A, validateSessionsPatchParams as At, validateCronRunsParams as B, validateTalkConfigParams as Bt, validateChannelsStatusParams as C, validateSessionsAbortParams as Ct, validateChatSendParams as D, validateSessionsListParams as Dt, validateChatInjectParams as E, validateSessionsDeleteParams as Et, validateConnectParams as F, validateSessionsUsageParams as Ft, validateDevicePairRejectParams as G, validateWakeParams as Gt, validateCronUpdateParams as H, validateTalkSpeakParams as Ht, validateCronAddParams as I, validateSkillsBinsParams as It, validateDeviceTokenRotateParams as J, validateWizardCancelParams as Jt, validateDevicePairRemoveParams as K, validateWebLoginStartParams as Kt, validateCronListParams as L, validateSkillsInstallParams as Lt, validateConfigSchemaLookupResult as M, validateSessionsResetParams as Mt, validateConfigSchemaParams as N, validateSessionsResolveParams as Nt, validateConfigApplyParams as O, validateSessionsMessagesSubscribeParams as Ot, validateConfigSetParams as P, validateSessionsSendParams as Pt, validateExecApprovalsNodeGetParams as Q, ErrorCodes as Qt, validateCronRemoveParams as R, validateSkillsStatusParams as Rt, validateChannelsLogoutParams as S, validateSendParams as St, validateChatHistoryParams as T, validateSessionsCreateParams as Tt, validateDevicePairApproveParams as U, validateToolsCatalogParams as Ut, validateCronStatusParams as V, validateTalkModeParams as Vt, validateDevicePairListParams as W, validateUpdateRunParams as Wt, validateExecApprovalResolveParams as X, validateWizardStartParams as Xt, validateExecApprovalRequestParams as Y, validateWizardNextParams as Yt, validateExecApprovalsGetParams as Z, validateWizardStatusParams as Zt, validateAgentsFilesGetParams as _, validatePollParams as _t, READ_SCOPE as a, resolveAuthConnectErrorDetailCode as an, validateNodeInvokeParams as at, validateAgentsListParams as b, validateSecretsResolveParams as bt, isNodeRoleMethod as c, buildDeviceAuthPayloadV3 as cn, validateNodePairApproveParams as ct, formatValidationErrors as d, loadOrCreateDeviceIdentity as dn, validateNodePairRequestParams as dt, parseSessionLabel as en, validateExecApprovalsSetParams as et, validateAgentIdentityParams as f, normalizeDevicePublicKeyBase64Url as fn, validateNodePairVerifyParams as ft, validateAgentsDeleteParams as g, validateNodeRenameParams as gt, validateAgentsCreateParams as h, verifyDeviceSignature as hn, validateNodePendingEnqueueParams as ht, PAIRING_SCOPE as i, ConnectErrorDetailCodes as in, validateNodeEventParams as it, validateConfigSchemaLookupParams as j, validateSessionsPreviewParams as jt, validateConfigGetParams as k, validateSessionsMessagesUnsubscribeParams as kt, resolveLeastPrivilegeOperatorScopesForMethod as l, normalizeFingerprint as ln, validateNodePairListParams as lt, validateAgentWaitParams as m, signDevicePayload as mn, validateNodePendingDrainParams as mt, APPROVALS_SCOPE as n, hasInterSessionUserProvenance as nn, validateModelsListParams as nt, WRITE_SCOPE as o, resolveDeviceAuthConnectErrorDetailCode as on, validateNodeInvokeResultParams as ot, validateAgentParams as p, publicKeyRawBase64UrlFromPem as pn, validateNodePendingAckParams as pt, validateDeviceTokenRevokeParams as q, validateWebLoginWaitParams as qt, CLI_DEFAULT_OPERATOR_SCOPES as r, normalizeInputProvenance as rn, validateNodeDescribeParams as rt, authorizeOperatorScopesForMethod as s, buildDeviceAuthPayload as sn, validateNodeListParams as st, ADMIN_SCOPE as t, applyInputProvenanceToUserMessage as tn, validateLogsTailParams as tt, GatewayClient as u, deriveDeviceIdFromPublicKey as un, validateNodePairRejectParams as ut, validateAgentsFilesListParams as v, validatePushTestParams as vt, validateChatAbortParams as w, validateSessionsCompactParams as wt, validateAgentsUpdateParams as x, validateSecretsResolveResult as xt, validateAgentsFilesSetParams as y, validateRequestFrame as yt, validateCronRunParams as z, validateSkillsUpdateParams as zt };