@spacebar_ai/moldclaw-core 2026.3.14 → 2026.3.16

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 (1074) hide show
  1. package/README.md +108 -3
  2. package/dist/account-id-plS5L20e.d.ts +1 -0
  3. package/dist/accounts-BAYVGC2k.js +109 -0
  4. package/dist/accounts-DrjRgReV.d.ts +103 -0
  5. package/dist/acp-cli-at_UYEOS.js +2088 -0
  6. package/dist/acpx-Chy1GQ_k.d.ts +5 -0
  7. package/dist/actions.runtime-C0F7dMfO.js +114 -0
  8. package/dist/actions.runtime-caI2LG9o.js +128 -0
  9. package/dist/agent-media-payload-CkpAqaOh.d.ts +16 -0
  10. package/dist/agents-B98yPGc5.js +853 -0
  11. package/dist/agents-BrLr08L3.js +217 -0
  12. package/dist/allow-from-BIwT4dl7.d.ts +42 -0
  13. package/dist/allow-list-CHt7yvAf.js +81 -0
  14. package/dist/allowlist-CxQo2wQc.js +142 -0
  15. package/dist/allowlist-resolution-B7ib7gye.d.ts +17 -0
  16. package/dist/api-Co7TNHbL.js +6953 -0
  17. package/dist/api-cEQ_ql_8.js +112 -0
  18. package/dist/audit-AnKnnlaZ.js +787 -0
  19. package/dist/audit-channel.collect.runtime-CAk1DFQ3.js +600 -0
  20. package/dist/audit-channel.runtime-5phdZp_m.js +116 -0
  21. package/dist/audit-extra.async-B8ZXFxic.js +813 -0
  22. package/dist/audit-hdKa3D-u.js +54 -0
  23. package/dist/audit-membership-runtime-CJV5XvGU.js +157 -0
  24. package/dist/audit.deep.runtime-DNMcRQrp.js +24 -0
  25. package/dist/audit.nondeep.runtime-DhNDL6yM.js +831 -0
  26. package/dist/audit.runtime-Bx7uWEh8.js +113 -0
  27. package/dist/auth-choice-C37W9MA7.js +268 -0
  28. package/dist/auth-choice-CNppOY_V.js +117 -0
  29. package/dist/auth-choice-XYFnp6fI.js +502 -0
  30. package/dist/auth-choice-options-D6oZY4Xo.js +123 -0
  31. package/dist/auth-choice-prompt-BhRqchJx.js +110 -0
  32. package/dist/auth-choice-prompt-C1xv0N08.js +36 -0
  33. package/dist/auth-choice.plugin-providers.runtime-DhLEtbmR.js +114 -0
  34. package/dist/auth-profiles-9zZdaXJK.js +127756 -0
  35. package/dist/auth-profiles.runtime-HONFDgiu.js +111 -0
  36. package/dist/bluebubbles-BY8JhO4y.js +64 -0
  37. package/dist/bluebubbles-CQjEnzK_.d.ts +6 -0
  38. package/dist/bluebubbles-RmcKgkBa.d.ts +45 -0
  39. package/dist/boolean-param-F1sMwnPu.d.ts +5 -0
  40. package/dist/bot-BGh-ATV7.d.ts +478 -0
  41. package/dist/brave-CljenznH.js +24 -0
  42. package/dist/browser-cli-CX8i0wf0.js +1492 -0
  43. package/dist/build-info.json +3 -3
  44. package/dist/bundled/boot-md/handler.d.ts +6 -0
  45. package/dist/bundled/boot-md/handler.js +26 -26
  46. package/dist/bundled/bootstrap-extra-files/handler.d.ts +6 -0
  47. package/dist/bundled/command-logger/handler.d.ts +9 -0
  48. package/dist/bundled/session-memory/handler.d.ts +9 -0
  49. package/dist/bundled/session-memory/handler.js +27 -27
  50. package/dist/call-Bc257L16.js +37 -0
  51. package/dist/call-DYFR7oGy.js +639 -0
  52. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  53. package/dist/channel-Bd-igGEW.js +803 -0
  54. package/dist/channel-BgRMb6bZ.js +575 -0
  55. package/dist/channel-BtcLrU6J.js +1598 -0
  56. package/dist/channel-Bwf6m_hD.js +538 -0
  57. package/dist/channel-C7-kgDBd.js +562 -0
  58. package/dist/channel-CEXOAxIc.js +949 -0
  59. package/dist/channel-CpZ3p9MJ.js +226 -0
  60. package/dist/channel-CqBlN6A2.js +619 -0
  61. package/dist/channel-DKhfHW4U.js +352 -0
  62. package/dist/channel-DS3t_KdJ2.js +316 -0
  63. package/dist/channel-DY24FA1v.js +4681 -0
  64. package/dist/channel-DYFGmImJ.js +542 -0
  65. package/dist/channel-DcyIqX5p.js +207 -0
  66. package/dist/channel-J-2XcAli.js +214 -0
  67. package/dist/channel-N616f4gZ.js +306 -0
  68. package/dist/channel-NY7aU2Gj.js +397 -0
  69. package/dist/channel-PNI8BOmm.js +1321 -0
  70. package/dist/channel-UcXepDJs.js +943 -0
  71. package/dist/channel-account-context-CL3hEq1j.js +103 -0
  72. package/dist/channel-config-schema-Q2nzcCCR.d.ts +1 -0
  73. package/dist/channel-jA_jodJo.js +920 -0
  74. package/dist/channel-options-CtgU5qkG.js +50 -0
  75. package/dist/channel-policy-7wXDp6d3.d.ts +1 -0
  76. package/dist/channel-rGI8uig4.js +497 -0
  77. package/dist/channel-summary-DGJZXo0r.js +106 -0
  78. package/dist/channel.runtime--WZvlNJM.js +413 -0
  79. package/dist/channel.runtime-B0ct42DL.js +122 -0
  80. package/dist/channel.runtime-BEZUZrYB.js +177 -0
  81. package/dist/channel.runtime-BMuWmsIC.js +166 -0
  82. package/dist/channel.runtime-BtvHP0po.js +4006 -0
  83. package/dist/channel.runtime-Cwf993pX.js +194 -0
  84. package/dist/channel.runtime-Cy4lEpTX.js +174 -0
  85. package/dist/channel.runtime-DAz6axda.js +865 -0
  86. package/dist/channel.runtime-DdQ2mOVh.js +236 -0
  87. package/dist/channel.runtime-Dy3HPgOU.js +399 -0
  88. package/dist/channel.runtime-iqfC25k7.js +213 -0
  89. package/dist/channel.setup-B4VYMZlQ.js +9 -0
  90. package/dist/channel.setup-BohGbCbI.js +57 -0
  91. package/dist/channel.setup-Bq2AQqqc.js +6 -0
  92. package/dist/channel.setup-BxiSfLp1.js +8 -0
  93. package/dist/channel.setup-DOUS6fjO.js +8 -0
  94. package/dist/channel.setup-DXhdYU3g.js +9 -0
  95. package/dist/channel.setup-N51CgfNy.js +11 -0
  96. package/dist/channels/plugins/actions/discord.d.ts +3 -0
  97. package/dist/channels/plugins/actions/discord.js +26 -26
  98. package/dist/channels/plugins/actions/signal.d.ts +2 -0
  99. package/dist/channels/plugins/actions/signal.js +26 -26
  100. package/dist/channels/plugins/actions/telegram.d.ts +3 -0
  101. package/dist/channels/plugins/actions/telegram.js +26 -26
  102. package/dist/channels/plugins/agent-tools/whatsapp-login.d.ts +4 -0
  103. package/dist/channels/plugins/agent-tools/whatsapp-login.js +26 -26
  104. package/dist/channels-CueeFf0q.js +404 -0
  105. package/dist/channels-PheAd73E.js +1113 -0
  106. package/dist/channels-cli-CXzVF84v.js +286 -0
  107. package/dist/channels-status-issues-BjWBQHhU.js +16 -0
  108. package/dist/chat-type-BlSN0vo4.d.ts +5 -0
  109. package/dist/clawbot-cli-BBehDXW1.js +113 -0
  110. package/dist/cli/daemon-cli.d.ts +58 -0
  111. package/dist/cli/daemon-cli.js +1 -1
  112. package/dist/cli-CIm7d5Id.js +149 -0
  113. package/dist/command-format-pq3tS8t2.d.ts +4 -0
  114. package/dist/command-registry-CDkp__KH.js +13 -0
  115. package/dist/command-registry-DSEkUBW1.js +212 -0
  116. package/dist/command-secret-gateway-CqP_o0n8.js +106 -0
  117. package/dist/compact.runtime-Qm_csEtG.js +111 -0
  118. package/dist/completion-cli-Ch1sgSLQ.js +445 -0
  119. package/dist/completion-cli-vF067Tso.js +16 -0
  120. package/dist/config-B2W1zTP1.js +44 -0
  121. package/dist/config-CMhKplgO.js +938 -0
  122. package/dist/config-DchtRsvs.js +30 -0
  123. package/dist/config-cli-C41d88_c.js +428 -0
  124. package/dist/config-guard-B_vjkXCQ.js +117 -0
  125. package/dist/config-schema-pPBCF4hz.js +31 -0
  126. package/dist/config-validation-6om9cBUx.js +262 -0
  127. package/dist/config-value-Dl3XEpA6.js +132 -0
  128. package/dist/configure-BxzvDSzu.js +1100 -0
  129. package/dist/configure-CLMLoWAn.js +238 -0
  130. package/dist/control-ui-shared-E8Nz6uKZ.js +29 -0
  131. package/dist/core-Cd3fMFKq.d.ts +87 -0
  132. package/dist/credentials-yYt6VWCq.js +268 -0
  133. package/dist/cron-cli-CA3lV3kh.js +634 -0
  134. package/dist/daemon-cli-BtQuIXEk.js +339 -0
  135. package/dist/daemon-install-BWKGzgMm.js +175 -0
  136. package/dist/deliver-CgMNmfTy.js +106 -0
  137. package/dist/deliver-runtime-Bn1KWoiQ.js +106 -0
  138. package/dist/devices-cli-D601npiL.js +340 -0
  139. package/dist/diagnostic-CkiYEGqt.js +310 -0
  140. package/dist/diffs-B5tZ8Coj.d.ts +1 -0
  141. package/dist/directory-cli-skEV8MT7.js +306 -0
  142. package/dist/directory-config-helpers-B-tiBKIv.d.ts +38 -0
  143. package/dist/directory-runtime-BEJ2fCIR.d.ts +1 -0
  144. package/dist/directory.static-CnyzoWbV.js +44 -0
  145. package/dist/discord-B_gbzPti.js +109 -0
  146. package/dist/discovery-CqI-e_Mv.js +48 -0
  147. package/dist/dm-policy-shared-nybkS1uP.d.ts +95 -0
  148. package/dist/dns-cli-Cjes3Ruw.js +216 -0
  149. package/dist/docs-cli-C3g3Gi_d.js +173 -0
  150. package/dist/doctor-completion-TvgV4SZH.js +90 -0
  151. package/dist/doctor-config-flow-0w9Ux7V8.js +107 -0
  152. package/dist/doctor-config-flow-DLzr8W7Y.js +2437 -0
  153. package/dist/enable-VYzv8b2z.js +24 -0
  154. package/dist/entry.d.ts +7 -0
  155. package/dist/entry.js +1 -1
  156. package/dist/env-overrides-DYVIkuvN.js +434 -0
  157. package/dist/env-overrides.runtime-6kijpIuu.js +17 -0
  158. package/dist/exec-approvals-cli-D_lkTG-l.js +419 -0
  159. package/dist/exec-sVmouhA9.d.ts +39 -0
  160. package/dist/extensions/acpx/index.d.ts +11 -0
  161. package/dist/extensions/acpx/index.js +1 -1
  162. package/dist/extensions/amazon-bedrock/index.d.ts +11 -0
  163. package/dist/extensions/anthropic/index.d.ts +11 -0
  164. package/dist/extensions/anthropic/index.js +26 -26
  165. package/dist/extensions/bluebubbles/index.d.ts +11 -0
  166. package/dist/extensions/bluebubbles/index.js +30 -30
  167. package/dist/extensions/bluebubbles/setup-entry.d.ts +59 -0
  168. package/dist/extensions/bluebubbles/setup-entry.js +30 -30
  169. package/dist/extensions/brave/index.d.ts +11 -0
  170. package/dist/extensions/brave/index.js +2 -2
  171. package/dist/extensions/byteplus/index.d.ts +11 -0
  172. package/dist/extensions/byteplus/index.js +26 -26
  173. package/dist/extensions/cloudflare-ai-gateway/index.d.ts +11 -0
  174. package/dist/extensions/cloudflare-ai-gateway/index.js +27 -27
  175. package/dist/extensions/copilot-proxy/index.d.ts +11 -0
  176. package/dist/extensions/device-pair/index.d.ts +12 -0
  177. package/dist/extensions/diagnostics-otel/index.d.ts +11 -0
  178. package/dist/extensions/diffs/index.d.ts +11 -0
  179. package/dist/extensions/discord/index.d.ts +11 -0
  180. package/dist/extensions/discord/index.js +31 -31
  181. package/dist/extensions/discord/setup-entry.d.ts +7 -0
  182. package/dist/extensions/discord/setup-entry.js +29 -29
  183. package/dist/extensions/elevenlabs/index.d.ts +11 -0
  184. package/dist/extensions/elevenlabs/index.js +26 -26
  185. package/dist/extensions/feishu/index.d.ts +229 -0
  186. package/dist/extensions/feishu/index.js +31 -31
  187. package/dist/extensions/feishu/setup-entry.d.ts +9 -0
  188. package/dist/extensions/feishu/setup-entry.js +28 -28
  189. package/dist/extensions/firecrawl/index.d.ts +11 -0
  190. package/dist/extensions/firecrawl/index.js +26 -26
  191. package/dist/extensions/github-copilot/index.d.ts +11 -0
  192. package/dist/extensions/github-copilot/index.js +27 -27
  193. package/dist/extensions/google/index.d.ts +11 -0
  194. package/dist/extensions/google/index.js +26 -26
  195. package/dist/extensions/googlechat/index.d.ts +11 -0
  196. package/dist/extensions/googlechat/index.js +30 -30
  197. package/dist/extensions/googlechat/setup-entry.d.ts +19 -0
  198. package/dist/extensions/googlechat/setup-entry.js +30 -30
  199. package/dist/extensions/huggingface/index.d.ts +11 -0
  200. package/dist/extensions/huggingface/index.js +26 -26
  201. package/dist/extensions/imessage/index.d.ts +11 -0
  202. package/dist/extensions/imessage/index.js +30 -30
  203. package/dist/extensions/imessage/setup-entry.d.ts +7 -0
  204. package/dist/extensions/imessage/setup-entry.js +30 -30
  205. package/dist/extensions/irc/index.d.ts +11 -0
  206. package/dist/extensions/irc/index.js +29 -29
  207. package/dist/extensions/irc/setup-entry.d.ts +8 -0
  208. package/dist/extensions/irc/setup-entry.js +29 -29
  209. package/dist/extensions/kakao-talkchannel/index.d.ts +19 -0
  210. package/dist/extensions/kakao-talkchannel/index.js +1762 -0
  211. package/dist/extensions/kakao-talkchannel/moldclaw.plugin.json +111 -0
  212. package/dist/extensions/kakao-talkchannel/package.json +12 -0
  213. package/dist/extensions/kilocode/index.d.ts +11 -0
  214. package/dist/extensions/kilocode/index.js +26 -26
  215. package/dist/extensions/kimi-coding/index.d.ts +11 -0
  216. package/dist/extensions/kimi-coding/index.js +26 -26
  217. package/dist/extensions/line/index.d.ts +11 -0
  218. package/dist/extensions/line/index.js +28 -28
  219. package/dist/extensions/line/setup-entry.d.ts +7 -0
  220. package/dist/extensions/line/setup-entry.js +28 -28
  221. package/dist/extensions/llm-task/index.d.ts +11 -0
  222. package/dist/extensions/llm-task/index.js +28 -28
  223. package/dist/extensions/lobster/index.d.ts +11 -0
  224. package/dist/extensions/matrix/index.d.ts +11 -0
  225. package/dist/extensions/matrix/index.js +31 -31
  226. package/dist/extensions/matrix/setup-entry.d.ts +20 -0
  227. package/dist/extensions/matrix/setup-entry.js +31 -31
  228. package/dist/extensions/mattermost/index.d.ts +11 -0
  229. package/dist/extensions/mattermost/index.js +28 -28
  230. package/dist/extensions/mattermost/setup-entry.d.ts +88 -0
  231. package/dist/extensions/mattermost/setup-entry.js +28 -28
  232. package/dist/extensions/memory-core/index.d.ts +11 -0
  233. package/dist/extensions/memory-lancedb/index.d.ts +25 -0
  234. package/dist/extensions/microsoft/index.d.ts +11 -0
  235. package/dist/extensions/microsoft/index.js +26 -26
  236. package/dist/extensions/minimax/index.d.ts +11 -0
  237. package/dist/extensions/minimax/index.js +26 -26
  238. package/dist/extensions/mistral/index.d.ts +11 -0
  239. package/dist/extensions/mistral/index.js +26 -26
  240. package/dist/extensions/modelstudio/index.d.ts +11 -0
  241. package/dist/extensions/modelstudio/index.js +26 -26
  242. package/dist/extensions/moonshot/index.d.ts +11 -0
  243. package/dist/extensions/moonshot/index.js +26 -26
  244. package/dist/extensions/msteams/index.d.ts +11 -0
  245. package/dist/extensions/msteams/index.js +31 -31
  246. package/dist/extensions/msteams/setup-entry.d.ts +11 -0
  247. package/dist/extensions/msteams/setup-entry.js +31 -31
  248. package/dist/extensions/nextcloud-talk/index.d.ts +11 -0
  249. package/dist/extensions/nextcloud-talk/index.js +28 -28
  250. package/dist/extensions/nextcloud-talk/setup-entry.d.ts +60 -0
  251. package/dist/extensions/nextcloud-talk/setup-entry.js +28 -28
  252. package/dist/extensions/nostr/index.d.ts +11 -0
  253. package/dist/extensions/nostr/index.js +28 -28
  254. package/dist/extensions/nostr/setup-entry.d.ts +49 -0
  255. package/dist/extensions/nostr/setup-entry.js +28 -28
  256. package/dist/extensions/nvidia/index.d.ts +11 -0
  257. package/dist/extensions/ollama/index.d.ts +11 -0
  258. package/dist/extensions/open-prose/index.d.ts +11 -0
  259. package/dist/extensions/openai/index.d.ts +11 -0
  260. package/dist/extensions/openai/index.js +26 -26
  261. package/dist/extensions/opencode/index.d.ts +11 -0
  262. package/dist/extensions/opencode/index.js +26 -26
  263. package/dist/extensions/opencode-go/index.d.ts +11 -0
  264. package/dist/extensions/opencode-go/index.js +26 -26
  265. package/dist/extensions/openrouter/index.d.ts +11 -0
  266. package/dist/extensions/openrouter/index.js +26 -26
  267. package/dist/extensions/openshell/index.d.ts +11 -0
  268. package/dist/extensions/openshell/index.js +26 -26
  269. package/dist/extensions/perplexity/index.d.ts +11 -0
  270. package/dist/extensions/perplexity/index.js +2 -2
  271. package/dist/extensions/phone-control/index.d.ts +12 -0
  272. package/dist/extensions/qianfan/index.d.ts +11 -0
  273. package/dist/extensions/qianfan/index.js +26 -26
  274. package/dist/extensions/qwen-portal-auth/index.d.ts +12 -0
  275. package/dist/extensions/qwen-portal-auth/index.js +26 -26
  276. package/dist/extensions/sglang/index.d.ts +11 -0
  277. package/dist/extensions/sglang/index.js +26 -26
  278. package/dist/extensions/signal/index.d.ts +11 -0
  279. package/dist/extensions/signal/index.js +29 -29
  280. package/dist/extensions/signal/setup-entry.d.ts +7 -0
  281. package/dist/extensions/signal/setup-entry.js +29 -29
  282. package/dist/extensions/slack/index.d.ts +11 -0
  283. package/dist/extensions/slack/index.js +30 -30
  284. package/dist/extensions/slack/setup-entry.d.ts +7 -0
  285. package/dist/extensions/slack/setup-entry.js +29 -29
  286. package/dist/extensions/synology-chat/index.d.ts +11 -0
  287. package/dist/extensions/synology-chat/index.js +28 -28
  288. package/dist/extensions/synology-chat/setup-entry.d.ts +138 -0
  289. package/dist/extensions/synology-chat/setup-entry.js +28 -28
  290. package/dist/extensions/synthetic/index.d.ts +11 -0
  291. package/dist/extensions/synthetic/index.js +26 -26
  292. package/dist/extensions/talk-voice/index.d.ts +12 -0
  293. package/dist/extensions/talk-voice/index.js +26 -26
  294. package/dist/extensions/telegram/index.d.ts +11 -0
  295. package/dist/extensions/telegram/index.js +29 -29
  296. package/dist/extensions/telegram/setup-entry.d.ts +7 -0
  297. package/dist/extensions/telegram/setup-entry.js +28 -28
  298. package/dist/extensions/thread-ownership/index.d.ts +12 -0
  299. package/dist/extensions/tlon/index.d.ts +11 -0
  300. package/dist/extensions/tlon/index.js +28 -28
  301. package/dist/extensions/tlon/setup-entry.d.ts +7 -0
  302. package/dist/extensions/tlon/setup-entry.js +28 -28
  303. package/dist/extensions/together/index.d.ts +11 -0
  304. package/dist/extensions/together/index.js +26 -26
  305. package/dist/extensions/twitch/index.d.ts +39 -0
  306. package/dist/extensions/twitch/index.js +28 -28
  307. package/dist/extensions/venice/index.d.ts +11 -0
  308. package/dist/extensions/venice/index.js +26 -26
  309. package/dist/extensions/vercel-ai-gateway/index.d.ts +11 -0
  310. package/dist/extensions/vercel-ai-gateway/index.js +26 -26
  311. package/dist/extensions/vllm/index.d.ts +11 -0
  312. package/dist/extensions/vllm/index.js +26 -26
  313. package/dist/extensions/voice-call/index.d.ts +11 -0
  314. package/dist/extensions/voice-call/index.js +26 -26
  315. package/dist/extensions/volcengine/index.d.ts +11 -0
  316. package/dist/extensions/volcengine/index.js +26 -26
  317. package/dist/extensions/whatsapp/index.d.ts +11 -0
  318. package/dist/extensions/whatsapp/index.js +29 -29
  319. package/dist/extensions/whatsapp/setup-entry.d.ts +7 -0
  320. package/dist/extensions/whatsapp/setup-entry.js +29 -29
  321. package/dist/extensions/xai/index.d.ts +11 -0
  322. package/dist/extensions/xai/index.js +26 -26
  323. package/dist/extensions/xiaomi/index.d.ts +11 -0
  324. package/dist/extensions/xiaomi/index.js +26 -26
  325. package/dist/extensions/zai/index.d.ts +11 -0
  326. package/dist/extensions/zai/index.js +26 -26
  327. package/dist/extensions/zalo/index.d.ts +11 -0
  328. package/dist/extensions/zalo/index.js +30 -30
  329. package/dist/extensions/zalo/setup-entry.d.ts +34 -0
  330. package/dist/extensions/zalo/setup-entry.js +30 -30
  331. package/dist/extensions/zalouser/index.d.ts +11 -0
  332. package/dist/extensions/zalouser/index.js +31 -31
  333. package/dist/extensions/zalouser/setup-entry.d.ts +42 -0
  334. package/dist/extensions/zalouser/setup-entry.js +31 -31
  335. package/dist/feishu-DCKEC3ao.d.ts +36 -0
  336. package/dist/gateway-cli-DN1Ii6J-.js +26432 -0
  337. package/dist/gateway-install-token-CJYFJBaC.js +163 -0
  338. package/dist/gateway-rpc-CroQg9MB.js +26 -0
  339. package/dist/gateway-runtime-D9FRZqKP.js +69 -0
  340. package/dist/googlechat-CBCkerAy.js +307 -0
  341. package/dist/googlechat-CSUNieHX.d.ts +12 -0
  342. package/dist/group-access-rSvkIglb.d.ts +61 -0
  343. package/dist/health-B6WwLJp4.js +570 -0
  344. package/dist/health-CAlJydXv.js +108 -0
  345. package/dist/history-BwNxb0sJ.d.ts +75 -0
  346. package/dist/hooks-BYlfU3Nf.d.ts +6 -0
  347. package/dist/hooks-cli-DuKmdo_H.js +995 -0
  348. package/dist/http-registry-DX_LVtuK.d.ts +20 -0
  349. package/dist/image-generation-DKkdRpve.d.ts +9 -0
  350. package/dist/imessage-7abjbe2Q.js +31 -0
  351. package/dist/imessage-DOH1yaDE.js +110 -0
  352. package/dist/inbound-envelope-CmvweL6U.d.ts +78 -0
  353. package/dist/inbound-reply-dispatch-BvnKTOec.js +71 -0
  354. package/dist/inbound-reply-dispatch-C7LjHRZN.d.ts +72 -0
  355. package/dist/index-DTQqfqj9.d.ts +1 -0
  356. package/dist/index.d.ts +27 -0
  357. package/dist/index.js +2 -2
  358. package/dist/infra/warning-filter.d.ts +10 -0
  359. package/dist/install-target-tXRD7VkM.js +574 -0
  360. package/dist/installs-C8fz8sm3.js +532 -0
  361. package/dist/io-C6XifaT4.js +9737 -0
  362. package/dist/io-C8awRnSW.js +28 -0
  363. package/dist/ipv4-d88_Jn2p.js +82 -0
  364. package/dist/irc-DpR6FXjN.js +672 -0
  365. package/dist/json-store-Sr_kk-II.d.ts +14 -0
  366. package/dist/keyed-async-queue-BA3BKukE.d.ts +19 -0
  367. package/dist/library-DOwowAGN.js +107 -0
  368. package/dist/lifecycle-core-BHHBoRTY.js +382 -0
  369. package/dist/line/accounts.d.ts +3 -0
  370. package/dist/line/send.d.ts +2 -0
  371. package/dist/line/send.js +4 -4
  372. package/dist/line/template-messages.d.ts +2 -0
  373. package/dist/line-8rsNbJCP.js +530 -0
  374. package/dist/line-D_cvIf6B.d.ts +75 -0
  375. package/dist/links-BOnvOj1z.d.ts +7 -0
  376. package/dist/llm-slug-generator-D9HjWtJT.js +67 -0
  377. package/dist/llm-slug-generator.d.ts +12 -0
  378. package/dist/llm-slug-generator.js +27 -27
  379. package/dist/logging-BhqLWxTD.js +13 -0
  380. package/dist/logging-DfaiL4OX.js +29 -0
  381. package/dist/login-qr-COBYR52w.js +233 -0
  382. package/dist/login-qr-xK4QIpPc.js +107 -0
  383. package/dist/logs-cli-RSSTw8L_.js +254 -0
  384. package/dist/manager-runtime-DL6JoSj9.js +106 -0
  385. package/dist/manager.runtime-Cbyhg1vB.js +710 -0
  386. package/dist/markdown-to-line-BTlEkOls.d.ts +91 -0
  387. package/dist/matrix-DX-jaB88.js +1490 -0
  388. package/dist/matrix-H6Yyj1QZ.d.ts +68 -0
  389. package/dist/matrix-J8s45tRw.js +1269 -0
  390. package/dist/mattermost-D75n6bRI.d.ts +6 -0
  391. package/dist/mcp-cli-CLc3_yCO.js +86 -0
  392. package/dist/media-understanding.runtime-BI0Lljbl.js +111 -0
  393. package/dist/memory-cli-CTp2cYrf.js +106 -0
  394. package/dist/method-scopes-Du8ODGFW.js +2586 -0
  395. package/dist/model-auth-markers-DEDakSUW.d.ts +20 -0
  396. package/dist/model-picker-CDBs7LJF.js +390 -0
  397. package/dist/model-picker-CRix4Wwv.js +107 -0
  398. package/dist/model-picker.runtime-CITyy3Rn.js +120 -0
  399. package/dist/model-suppression.runtime-Ce7D6QUT.js +111 -0
  400. package/dist/models-BK1eanuP.js +113 -0
  401. package/dist/models-X4Czy3uE.js +2514 -0
  402. package/dist/models-cli-C79Ulviy.js +304 -0
  403. package/dist/models-config-DALlu3S9.js +106 -0
  404. package/dist/models-config.providers.discovery-CSJ1STM1.d.ts +18 -0
  405. package/dist/monitor-B45a_RpX.js +3468 -0
  406. package/dist/monitor-C8KbJ-i0.js +767 -0
  407. package/dist/monitor-CIhrvegZ.js +3076 -0
  408. package/dist/monitor-CQut7klP.js +6823 -0
  409. package/dist/monitor-DZb5IJle.js +777 -0
  410. package/dist/monitor-DaFkdD27.js +108 -0
  411. package/dist/monitor-Do9Tp2Ii.js +110 -0
  412. package/dist/monitor-shared-CMK9cDOb.js +444 -0
  413. package/dist/msteams-A6H_wv5F.js +852 -0
  414. package/dist/net-DpMJgN-o.d.ts +19 -0
  415. package/dist/nextcloud-talk-f1pZ5Bge.d.ts +1 -0
  416. package/dist/node-cli-BXnmsjzL.js +2498 -0
  417. package/dist/node-resolve-CupmrA0Y.js +835 -0
  418. package/dist/nodes-cli-DZVrah_8.js +1375 -0
  419. package/dist/nostr-DMV534Ks.d.ts +7 -0
  420. package/dist/nostr-SAk3tjtR.js +8744 -0
  421. package/dist/npm-resolution-Dr9wssCY.js +60 -0
  422. package/dist/oauth-utils-DnyXdWU9.d.ts +10 -0
  423. package/dist/onboard-BE5pmb1g.js +589 -0
  424. package/dist/onboard-channels-3hNVY0E7.js +1241 -0
  425. package/dist/onboard-channels-vaO3nWLL.js +200 -0
  426. package/dist/onboard-custom-CI5uFyWH.js +571 -0
  427. package/dist/onboard-custom-eIvRswgv.js +109 -0
  428. package/dist/onboard-helpers-ChMWfUnl.js +335 -0
  429. package/dist/onboard-helpers-DRFi9oaD.js +108 -0
  430. package/dist/onboard-remote-BTspTgA4.js +112 -0
  431. package/dist/onboard-remote-so38yXlX.js +181 -0
  432. package/dist/onboard-search-DS0tZS24.js +297 -0
  433. package/dist/onboard-skills-B9DxCCiU.js +133 -0
  434. package/dist/onboard-skills-so0a_BJV.js +112 -0
  435. package/dist/outbound-media-BiJscGlR.js +11 -0
  436. package/dist/outbound-media-DJF-TuJu.d.ts +11 -0
  437. package/dist/pairing-access-CuiJP9xN.d.ts +21 -0
  438. package/dist/pairing-cli-DN0u1Cez.js +212 -0
  439. package/dist/parse-finite-number-B3FJTjyQ.d.ts +5 -0
  440. package/dist/perplexity-Bw1u3CAF.js +24 -0
  441. package/dist/persistent-dedupe-DR5Ka6BX.d.ts +26 -0
  442. package/dist/pi-model-discovery-runtime-iwKNCaYu.js +106 -0
  443. package/dist/pi-tools.before-tool-call.runtime-BM_N-JZe.js +380 -0
  444. package/dist/plugin-install--KVul05Z.js +184 -0
  445. package/dist/plugin-install-DVpPsLkS.js +112 -0
  446. package/dist/plugin-install-plan-Dwc6-coz.js +49 -0
  447. package/dist/plugin-registry-XRswugE9.js +108 -0
  448. package/dist/plugin-registry-jozQafRo.js +49 -0
  449. package/dist/plugin-sdk/account-resolution.js +26 -26
  450. package/dist/plugin-sdk/acp-runtime.js +26 -26
  451. package/dist/plugin-sdk/acpx.js +1 -1
  452. package/dist/plugin-sdk/agent-runtime.js +26 -26
  453. package/dist/plugin-sdk/bluebubbles.js +29 -29
  454. package/dist/plugin-sdk/channel-config-helpers.js +26 -26
  455. package/dist/plugin-sdk/channel-config-schema.js +2 -2
  456. package/dist/plugin-sdk/channel-policy.js +26 -26
  457. package/dist/plugin-sdk/channel-runtime.js +26 -26
  458. package/dist/plugin-sdk/compat.js +27 -27
  459. package/dist/plugin-sdk/config-runtime.js +28 -28
  460. package/dist/plugin-sdk/conversation-runtime.js +26 -26
  461. package/dist/plugin-sdk/discord.js +26 -26
  462. package/dist/plugin-sdk/feishu.js +27 -27
  463. package/dist/plugin-sdk/gateway-runtime.js +8 -8
  464. package/dist/plugin-sdk/googlechat.js +29 -29
  465. package/dist/plugin-sdk/image-generation-runtime.js +26 -26
  466. package/dist/plugin-sdk/image-generation.js +26 -26
  467. package/dist/plugin-sdk/imessage.js +27 -27
  468. package/dist/plugin-sdk/index.js +26 -26
  469. package/dist/plugin-sdk/infra-runtime.js +26 -26
  470. package/dist/plugin-sdk/irc.js +29 -29
  471. package/dist/plugin-sdk/line.js +27 -27
  472. package/dist/plugin-sdk/llm-task.js +26 -26
  473. package/dist/plugin-sdk/matrix.js +29 -29
  474. package/dist/plugin-sdk/mattermost.js +28 -28
  475. package/dist/plugin-sdk/media-runtime.js +26 -26
  476. package/dist/plugin-sdk/media-understanding-runtime.js +26 -26
  477. package/dist/plugin-sdk/media-understanding.js +26 -26
  478. package/dist/plugin-sdk/msteams.js +30 -30
  479. package/dist/plugin-sdk/nextcloud-talk.js +28 -28
  480. package/dist/plugin-sdk/nostr.js +27 -27
  481. package/dist/plugin-sdk/plugin-runtime.js +26 -26
  482. package/dist/plugin-sdk/provider-auth.js +28 -28
  483. package/dist/plugin-sdk/provider-setup.js +27 -27
  484. package/dist/plugin-sdk/provider-web-search.js +1 -1
  485. package/dist/plugin-sdk/qwen-portal-auth.js +26 -26
  486. package/dist/plugin-sdk/reply-history.js +26 -26
  487. package/dist/plugin-sdk/reply-runtime.js +26 -26
  488. package/dist/plugin-sdk/sandbox.js +26 -26
  489. package/dist/plugin-sdk/security-runtime.js +26 -26
  490. package/dist/plugin-sdk/self-hosted-provider-setup.js +27 -27
  491. package/dist/plugin-sdk/setup.js +27 -27
  492. package/dist/plugin-sdk/signal.js +26 -26
  493. package/dist/plugin-sdk/slack.js +26 -26
  494. package/dist/plugin-sdk/speech-runtime.js +26 -26
  495. package/dist/plugin-sdk/speech.js +26 -26
  496. package/dist/plugin-sdk/src/channels/plugins/setup-wizard-helpers.d.ts +3 -0
  497. package/dist/plugin-sdk/src/config/config-lock.d.ts +38 -0
  498. package/dist/plugin-sdk/src/config/config.d.ts +1 -1
  499. package/dist/plugin-sdk/src/config/io.d.ts +39 -0
  500. package/dist/plugin-sdk/src/config/types.gateway.d.ts +12 -0
  501. package/dist/plugin-sdk/src/config/types.secrets.d.ts +10 -0
  502. package/dist/plugin-sdk/src/config/zod-schema.d.ts +2 -0
  503. package/dist/plugin-sdk/src/gateway/credential-planner.d.ts +3 -1
  504. package/dist/plugin-sdk/src/secrets/provider-env-vars.d.ts +61 -0
  505. package/dist/plugin-sdk/src/secrets/sec1-placeholder.d.ts +181 -0
  506. package/dist/plugin-sdk/src/secrets/sec1-utils.d.ts +57 -0
  507. package/dist/plugin-sdk/synology-chat.js +27 -27
  508. package/dist/plugin-sdk/telegram.js +26 -26
  509. package/dist/plugin-sdk/text-runtime.js +4 -4
  510. package/dist/plugin-sdk/tlon.js +27 -27
  511. package/dist/plugin-sdk/twitch.js +26 -26
  512. package/dist/plugin-sdk/voice-call.js +26 -26
  513. package/dist/plugin-sdk/whatsapp.js +26 -26
  514. package/dist/plugin-sdk/zalo.js +30 -30
  515. package/dist/plugin-sdk/zalouser.js +29 -29
  516. package/dist/plugins/runtime/index.d.ts +22 -0
  517. package/dist/plugins/runtime/index.js +26 -26
  518. package/dist/plugins-C4PiDdjc.js +106 -0
  519. package/dist/plugins-cli-zhmliYNU.js +912 -0
  520. package/dist/policy-CcSolumc.js +143 -0
  521. package/dist/preflight-audio.runtime-BAbfqqzW.js +111 -0
  522. package/dist/probe-Bgt5c-cr.js +129 -0
  523. package/dist/probe-CPk5iGcg.js +47 -0
  524. package/dist/probe-DR4KRKXz.js +19 -0
  525. package/dist/probe-DnoCyJ_m.js +1793 -0
  526. package/dist/probe-VsLtK3vQ.js +6328 -0
  527. package/dist/probe-auth-BnsKrQt7.js +38 -0
  528. package/dist/probe-auth-DYdUG8l1.js +48 -0
  529. package/dist/program-8enYYBsc.js +247 -0
  530. package/dist/prompt-select-styled-DxBcUasv.js +2673 -0
  531. package/dist/provider-api-key-auth.runtime-DsLZyt6h.js +116 -0
  532. package/dist/provider-auth-choice-30EvRxqc.js +126 -0
  533. package/dist/provider-auth-choice-preference-DMr1WmRg.js +189 -0
  534. package/dist/provider-auth-choice.runtime-CI98BgQF.js +118 -0
  535. package/dist/provider-auth-guidance-WKDIi_wk.js +34 -0
  536. package/dist/provider-auth-result-Cs8wguSI.d.ts +18 -0
  537. package/dist/provider-models-EOys_Nvi.d.ts +867 -0
  538. package/dist/provider-ollama-setup-D89zlm9C.d.ts +32 -0
  539. package/dist/provider-onboard-BzOpgCLu.d.ts +40 -0
  540. package/dist/provider-runtime.runtime-Cm4as2KG.js +106 -0
  541. package/dist/provider-self-hosted-setup-Bmv_AQmw.d.ts +61 -0
  542. package/dist/provider-self-hosted-setup-CJwFVVB4.js +182 -0
  543. package/dist/provider-usage-CVNyLLDb.js +106 -0
  544. package/dist/provider-usage.types-CdTymHNu.d.ts +16 -0
  545. package/dist/provider-web-search-BJhXD5dH.js +2392 -0
  546. package/dist/provider-wizard-DMMYXjlW.js +152 -0
  547. package/dist/push-apns-BnWTdTEk.js +1038 -0
  548. package/dist/pw-ai-CtK_7Cy2.js +1866 -0
  549. package/dist/qr-cli-CA-BF0--.js +108 -0
  550. package/dist/qr-cli-D18HiUkh.js +369 -0
  551. package/dist/reactions-Df7XG8Uh.js +281 -0
  552. package/dist/read-only-account-inspect.discord.runtime-B-FP0mwb.js +111 -0
  553. package/dist/read-only-account-inspect.slack.runtime-DkWZ2ccW.js +111 -0
  554. package/dist/read-only-account-inspect.telegram.runtime-BnlTkn_e.js +111 -0
  555. package/dist/redact-snapshot-DVdstBvO.js +2661 -0
  556. package/dist/ref-contract-RPkB754Q.js +53 -0
  557. package/dist/register.agent-DVAxXQKW.js +434 -0
  558. package/dist/register.backup-CUuL5KUZ.js +624 -0
  559. package/dist/register.configure-bC0UEwfU.js +247 -0
  560. package/dist/register.maintenance-iIqvl_eT.js +569 -0
  561. package/dist/register.message-CEDd4z07.js +704 -0
  562. package/dist/register.onboard-Cejfnysy.js +187 -0
  563. package/dist/register.setup-DU7uHdYt.js +207 -0
  564. package/dist/register.status-health-sessions-BWphMXNR.js +493 -0
  565. package/dist/register.subclis-DnIweTEG.js +315 -0
  566. package/dist/register.subclis-gJX_Pbub.js +12 -0
  567. package/dist/registry-Dgwc-7eS.js +1183 -0
  568. package/dist/replies-D9PEZ8yn.js +110 -0
  569. package/dist/reply-history-lHgoC4l3.d.ts +1 -0
  570. package/dist/reply-payload-Bd2HuR4g.d.ts +46 -0
  571. package/dist/request-url-BcSJaiiu.d.ts +5 -0
  572. package/dist/resolve-BbsCHGLY.js +660 -0
  573. package/dist/resolve-channels-BtrGC95o.js +262 -0
  574. package/dist/resolve-channels-C1SthO1N.js +226 -0
  575. package/dist/resolve-users-CgSxHrU0.js +143 -0
  576. package/dist/routes-BZtqNrBf.js +7097 -0
  577. package/dist/rpc-D3KMxG4J.js +67 -0
  578. package/dist/run-command-C8b3dCZV.d.ts +16 -0
  579. package/dist/run-main-BlWJVotF.js +423 -0
  580. package/dist/runtime-RWGbO5Qy.d.ts +26 -0
  581. package/dist/runtime-discord-ops.runtime-DUXIYvQr.js +9073 -0
  582. package/dist/runtime-slack-ops.runtime-n1yFfyp1.js +4551 -0
  583. package/dist/runtime-telegram-ops.runtime-PZUWchjT.js +128 -0
  584. package/dist/runtime-whatsapp-login.runtime-xsuNyvGz.js +109 -0
  585. package/dist/runtime-whatsapp-outbound.runtime-5EfEyCsO.js +112 -0
  586. package/dist/sandbox-cli-Dw1nWNmQ.js +530 -0
  587. package/dist/search-manager-BJoRxOaf.js +15 -0
  588. package/dist/search-manager-DxkQvUrW.js +386 -0
  589. package/dist/secret-input-schema-Cp_La9qv.d.ts +19 -0
  590. package/dist/secrets-cli-BPyV2gSq.js +2065 -0
  591. package/dist/security-cli-EK4sSRfG.js +570 -0
  592. package/dist/send-B01Gvh9m.js +629 -0
  593. package/dist/send-B4L4wRJO.js +100 -0
  594. package/dist/send-BDcGrXt0.js +1025 -0
  595. package/dist/send-BRRtHxyR.js +283 -0
  596. package/dist/send-DU6dmMXW.js +631 -0
  597. package/dist/server-CWw5GFEg.js +106 -0
  598. package/dist/server-node-events-92cDVswC.js +501 -0
  599. package/dist/session-key-DbkfhOjM.d.ts +46 -0
  600. package/dist/sessions-B052uHA3.js +218 -0
  601. package/dist/sessions-Cef4dZNP.js +107 -0
  602. package/dist/setup-BlQPyDPy.js +387 -0
  603. package/dist/setup-DcSZ_pTn.d.ts +37 -0
  604. package/dist/setup-core-B9mdZYnU.js +166 -0
  605. package/dist/setup-core-Cj0sLkpP.js +47 -0
  606. package/dist/setup-core-CkZbebOv.js +143 -0
  607. package/dist/setup-core-MRNjnrJl.js +205 -0
  608. package/dist/setup-surface-3ZY0JtWE.js +490 -0
  609. package/dist/setup-wizard-helpers-Dwzb9Dcz.d.ts +203 -0
  610. package/dist/setup.finalize-B5ETm3Ui.js +517 -0
  611. package/dist/setup.gateway-config-C8hdtlbw.js +338 -0
  612. package/dist/setup.secret-input-BZSIeiqy.js +25 -0
  613. package/dist/shared--9_eQ_lc.js +75 -0
  614. package/dist/shared-CxkH3H0U.js +102 -0
  615. package/dist/shared-DTNL0hA9.js +298 -0
  616. package/dist/shared-HSP1OV-Q.js +96 -0
  617. package/dist/shared-UIjWb_3B.js +182 -0
  618. package/dist/signal-CTI6bSmB.js +109 -0
  619. package/dist/skills-4-r1mfJM.js +853 -0
  620. package/dist/skills-RNm54CBO.js +19 -0
  621. package/dist/skills-cli-te7dSs5p.js +291 -0
  622. package/dist/skills-install-Del-Ogv8.js +763 -0
  623. package/dist/skills-status-BZpoMXrR.js +169 -0
  624. package/dist/skills-status-Dq61Sz8U.js +20 -0
  625. package/dist/slack-oc-viUtl.js +109 -0
  626. package/dist/slash-commands.runtime-NdkD2LZV.js +123 -0
  627. package/dist/slash-dispatch.runtime-DQgeaF3J.js +136 -0
  628. package/dist/slash-skill-commands.runtime-DmOl2DnL.js +111 -0
  629. package/dist/src-0wtt7seR.js +1696 -0
  630. package/dist/status-5oR_gqv_.js +121 -0
  631. package/dist/status-BO8LY0hC.js +1599 -0
  632. package/dist/status-D_oHA9yO.js +126 -0
  633. package/dist/status-IrMacJRj.js +606 -0
  634. package/dist/status-Prdeg53E.js +43 -0
  635. package/dist/status-json-Da0hR-1Z.js +286 -0
  636. package/dist/status.link-channel-BgUJEZAz.js +138 -0
  637. package/dist/status.scan.deps.runtime-D9vHTxOW.js +121 -0
  638. package/dist/status.scan.runtime-D-EdD5CW.js +114 -0
  639. package/dist/status.summary--i6xduWH.js +592 -0
  640. package/dist/status.summary.runtime-BqMXjaBc.js +113 -0
  641. package/dist/subagent-orphan-recovery-DiRJcFQc.js +302 -0
  642. package/dist/subagent-registry-runtime-B66EYEYm.js +106 -0
  643. package/dist/synology-chat-BemXqdzG.js +297 -0
  644. package/dist/system-cli-CSuiia4-.js +92 -0
  645. package/dist/telegram/audit.d.ts +2 -0
  646. package/dist/telegram/audit.js +1 -1
  647. package/dist/telegram/token.d.ts +2 -0
  648. package/dist/telegram/token.js +26 -26
  649. package/dist/telegram-DLFcRv5a.js +109 -0
  650. package/dist/testing-DZrulv-n.d.ts +1755 -0
  651. package/dist/text-chunking-BaYBIUoR.d.ts +79 -0
  652. package/dist/text-chunking-C8kmbNfa.js +84 -0
  653. package/dist/thinking-D8aqmr3o.d.ts +13 -0
  654. package/dist/tlon-Bpr4f3yF.js +433 -0
  655. package/dist/tool-send-BHKm5ztm.d.ts +9 -0
  656. package/dist/tui-BY3QRgC1.js +3834 -0
  657. package/dist/tui-cli-CCfZOlV0.js +132 -0
  658. package/dist/types-CKx5nDZB.d.ts +45 -0
  659. package/dist/types-DBhDdMQd.d.ts +22670 -0
  660. package/dist/types.base-B_TkkSS8.d.ts +188 -0
  661. package/dist/types.secrets-Bojc4omL.js +92 -0
  662. package/dist/ui-1UpZZyI3.js +31 -0
  663. package/dist/update-BR4JvFpV.js +1036 -0
  664. package/dist/update-cli-BZv44lFq.js +1498 -0
  665. package/dist/update-offset-store-DGdBotIW.js +107 -0
  666. package/dist/update-runner-D34sooPe.js +1496 -0
  667. package/dist/vllm-defaults-BCGSJ7K0.d.ts +13 -0
  668. package/dist/wait-BU9vJv22.d.ts +4 -0
  669. package/dist/web-CXpU2D41.js +107 -0
  670. package/dist/web-shared-B4sL45ah.d.ts +45 -0
  671. package/dist/webhook-memory-guards-B7oLVseG.d.ts +43 -0
  672. package/dist/webhook-request-guards-CqIH7equ.d.ts +76 -0
  673. package/dist/webhook-targets-CAAGATtk.js +181 -0
  674. package/dist/webhook-targets-oQ0jd4r0.d.ts +106 -0
  675. package/dist/webhooks-cli-B46t2VT5.js +349 -0
  676. package/dist/whatsapp-Dniwd4Rv.js +109 -0
  677. package/dist/whatsapp-actions-fL46PsNs.js +162 -0
  678. package/dist/windows-spawn-DGeE98SH.d.ts +43 -0
  679. package/dist/workspace-dirs-d3Ms_ryk.js +2002 -0
  680. package/dist/zalo-Csulx0XK.d.ts +9 -0
  681. package/dist/zalo-gh0yAWmS.js +415 -0
  682. package/dist/zalouser-CuxRvztM.js +30911 -0
  683. package/dist/zod-schema.agent-runtime-B4MkB-_3.d.ts +10 -0
  684. package/dist/zod-schema.core-D5reNip6.js +541 -0
  685. package/dist/zod-schema.core-DN3RhEUG.d.ts +173 -0
  686. package/docs/SEC1.md +523 -0
  687. package/docs/SEC1_IMPLEMENTATION/CHANNELS_REPORT.md +173 -0
  688. package/docs/SEC1_IMPLEMENTATION/CORE_UTIL_REPORT.md +139 -0
  689. package/docs/SEC1_IMPLEMENTATION/DOCS_REPORT.md +134 -0
  690. package/docs/SEC1_IMPLEMENTATION/ENV_MAP_DRAFT.md +148 -0
  691. package/docs/SEC1_IMPLEMENTATION/INTEGRATION_REPORT.md +170 -0
  692. package/docs/SEC1_IMPLEMENTATION/PROVIDERS_REPORT.md +291 -0
  693. package/docs/SEC1_IMPLEMENTATION/QA_REPORT.md +249 -0
  694. package/docs/SEC1_IMPLEMENTATION/RECURSIVE_QA/wave1-channels.md +317 -0
  695. package/docs/SEC1_IMPLEMENTATION/RECURSIVE_QA/wave1-docs.md +212 -0
  696. package/docs/SEC1_IMPLEMENTATION/RECURSIVE_QA/wave1-security.md +368 -0
  697. package/docs/SEC1_IMPLEMENTATION/RECURSIVE_QA/wave2-critic-consolidated.md +195 -0
  698. package/docs/SEC1_IMPLEMENTATION/RECURSIVE_QA/wave3-fix-report.md +105 -0
  699. package/docs/SEC1_IMPLEMENTATION/STRATEGY.md +451 -0
  700. package/docs/SEC1_IMPLEMENTATION/TEST_REPORT.md +156 -0
  701. package/docs/pipeline-sdk/CLI_SPEC.md +609 -0
  702. package/docs/pipeline-sdk/PIPELINE_SDK_DESIGN.md +1372 -0
  703. package/extensions/kakao-talkchannel/MIGRATION_ARCH_ANALYSIS.md +455 -0
  704. package/extensions/kakao-talkchannel/MIGRATION_CODE_ANALYSIS.md +383 -0
  705. package/extensions/kakao-talkchannel/MIGRATION_STRATEGY.md +115 -0
  706. package/extensions/kakao-talkchannel/README.md +50 -0
  707. package/extensions/kakao-talkchannel/index.ts +20 -0
  708. package/extensions/kakao-talkchannel/moldclaw.plugin.json +98 -0
  709. package/extensions/kakao-talkchannel/package.json +12 -0
  710. package/extensions/kakao-talkchannel/src/adapters/config.ts +132 -0
  711. package/extensions/kakao-talkchannel/src/adapters/gateway.ts +974 -0
  712. package/extensions/kakao-talkchannel/src/adapters/outbound.ts +52 -0
  713. package/extensions/kakao-talkchannel/src/adapters/pairing.ts +35 -0
  714. package/extensions/kakao-talkchannel/src/adapters/security.ts +57 -0
  715. package/extensions/kakao-talkchannel/src/adapters/setup.ts +105 -0
  716. package/extensions/kakao-talkchannel/src/adapters/status.ts +117 -0
  717. package/extensions/kakao-talkchannel/src/channel.ts +58 -0
  718. package/extensions/kakao-talkchannel/src/commands/card.ts +413 -0
  719. package/extensions/kakao-talkchannel/src/config/schema.ts +129 -0
  720. package/extensions/kakao-talkchannel/src/kakao/callback.ts +133 -0
  721. package/extensions/kakao-talkchannel/src/kakao/limits.ts +129 -0
  722. package/extensions/kakao-talkchannel/src/kakao/payload.ts +138 -0
  723. package/extensions/kakao-talkchannel/src/kakao/response.ts +373 -0
  724. package/extensions/kakao-talkchannel/src/relay/client.ts +146 -0
  725. package/extensions/kakao-talkchannel/src/relay/session.ts +137 -0
  726. package/extensions/kakao-talkchannel/src/relay/sse.ts +258 -0
  727. package/extensions/kakao-talkchannel/src/relay/stream.ts +149 -0
  728. package/extensions/kakao-talkchannel/src/runtime.ts +21 -0
  729. package/extensions/kakao-talkchannel/src/types.ts +447 -0
  730. package/extensions/kakao-talkchannel/src/version.ts +3 -0
  731. package/extensions/kakao-talkchannel/tsconfig.json +19 -0
  732. package/package.json +23 -8
  733. package/skills/meshy/SKILL.md +69 -0
  734. package/skills/meshy/scripts/__pycache__/check_status.cpython-312.pyc +0 -0
  735. package/skills/meshy/scripts/__pycache__/image_to_3d.cpython-312.pyc +0 -0
  736. package/skills/meshy/scripts/__pycache__/text_to_3d.cpython-312.pyc +0 -0
  737. package/skills/meshy/scripts/check_status.py +147 -0
  738. package/skills/meshy/scripts/image_to_3d.py +229 -0
  739. package/skills/meshy/scripts/text_to_3d.py +214 -0
  740. package/skills/nano-banana-pro/scripts/generate_image.py +1 -1
  741. package/skills/openai-whisper-api/scripts/transcribe.sh +0 -0
  742. package/skills/tavily-search/SKILL.md +61 -0
  743. package/skills/tavily-search/scripts/__pycache__/search.cpython-312.pyc +0 -0
  744. package/skills/tavily-search/scripts/search.py +238 -0
  745. package/skills/video-frames/scripts/frame.sh +0 -0
  746. package/LICENSE +0 -21
  747. package/dist/accounts-UcSvD34O.js +0 -109
  748. package/dist/acp-cli-BPb8PgHP.js +0 -2088
  749. package/dist/actions.runtime-BL5QRooG.js +0 -114
  750. package/dist/actions.runtime-DSdfSo40.js +0 -128
  751. package/dist/agents-CHeX_5-H.js +0 -217
  752. package/dist/agents-DQRL9XKP.js +0 -853
  753. package/dist/allow-list-Boi79v-U.js +0 -81
  754. package/dist/allowlist-B2eBBeMF.js +0 -142
  755. package/dist/api-CFAtRSYL.js +0 -6953
  756. package/dist/api-D5JNJj8n.js +0 -112
  757. package/dist/audit-BM0GsdzV.js +0 -787
  758. package/dist/audit-BqRK9OSj.js +0 -54
  759. package/dist/audit-channel.collect.runtime-BPvDB8aq.js +0 -600
  760. package/dist/audit-channel.runtime-D3fzHiAo.js +0 -116
  761. package/dist/audit-extra.async-NveNIzX0.js +0 -813
  762. package/dist/audit-membership-runtime-mu470WFO.js +0 -157
  763. package/dist/audit.deep.runtime-RdxvW8Tj.js +0 -24
  764. package/dist/audit.nondeep.runtime-DDu8vA9Z.js +0 -831
  765. package/dist/audit.runtime-Y8C9W7s9.js +0 -113
  766. package/dist/auth-choice-C1CIxRsi.js +0 -268
  767. package/dist/auth-choice-CTvqWiDI.js +0 -117
  768. package/dist/auth-choice-Ddzko1B8.js +0 -502
  769. package/dist/auth-choice-options-BIAmAiCe.js +0 -123
  770. package/dist/auth-choice-prompt-B815kArz.js +0 -110
  771. package/dist/auth-choice-prompt-CGhTNCJx.js +0 -36
  772. package/dist/auth-choice.plugin-providers.runtime-AvAZ6S5W.js +0 -114
  773. package/dist/auth-profiles-BJcHzwPy.js +0 -127650
  774. package/dist/auth-profiles.runtime-CieFilK5.js +0 -111
  775. package/dist/bluebubbles-F8FGE9cH.js +0 -64
  776. package/dist/brave-BG5Yopn8.js +0 -24
  777. package/dist/browser-cli-Co7PJGZF.js +0 -1492
  778. package/dist/call-CoaQYq7c.js +0 -639
  779. package/dist/call-D3eu5Jjh.js +0 -37
  780. package/dist/channel-BftWD6yu.js +0 -1321
  781. package/dist/channel-Bub9U5Xg.js +0 -214
  782. package/dist/channel-C0oDs7TO.js +0 -4681
  783. package/dist/channel-C8CnEdkZ.js +0 -352
  784. package/dist/channel-CI-RC-xf.js +0 -497
  785. package/dist/channel-CY-hZCOJ.js +0 -397
  786. package/dist/channel-CbtGJB2x.js +0 -943
  787. package/dist/channel-CcfK3wP8.js +0 -803
  788. package/dist/channel-DBoDIeVj.js +0 -619
  789. package/dist/channel-DEq6Ecs-.js +0 -920
  790. package/dist/channel-DH4dhW1n.js +0 -226
  791. package/dist/channel-DQ_wdKg_.js +0 -575
  792. package/dist/channel-DT6qD1Ic.js +0 -207
  793. package/dist/channel-DZNAyxwr.js +0 -542
  794. package/dist/channel-DtakwAEe.js +0 -538
  795. package/dist/channel-DuYgH6p1.js +0 -562
  796. package/dist/channel-Hn-AN-d52.js +0 -316
  797. package/dist/channel-_R4hbD5h.js +0 -1598
  798. package/dist/channel-account-context-DXq8dlvI.js +0 -103
  799. package/dist/channel-kQmEVn3I.js +0 -306
  800. package/dist/channel-options-DHfxaklg.js +0 -50
  801. package/dist/channel-summary-DUpnoYhI.js +0 -106
  802. package/dist/channel-t-JxCWk6.js +0 -949
  803. package/dist/channel.runtime--GYriaXU.js +0 -213
  804. package/dist/channel.runtime-BJtn3GOH.js +0 -174
  805. package/dist/channel.runtime-BV7t_oNz.js +0 -166
  806. package/dist/channel.runtime-Bi8a3n9S.js +0 -865
  807. package/dist/channel.runtime-BjsYF0NN.js +0 -122
  808. package/dist/channel.runtime-BnI6YtmI.js +0 -413
  809. package/dist/channel.runtime-CQOftcCd.js +0 -194
  810. package/dist/channel.runtime-CuIAcPjZ.js +0 -4006
  811. package/dist/channel.runtime-DH1Q1G4k.js +0 -399
  812. package/dist/channel.runtime-DYYUPKxr.js +0 -236
  813. package/dist/channel.runtime-U5Gszsr5.js +0 -177
  814. package/dist/channel.setup-BQFHmgki.js +0 -9
  815. package/dist/channel.setup-BVoDwklu.js +0 -8
  816. package/dist/channel.setup-Bf73HsXr.js +0 -57
  817. package/dist/channel.setup-CblD4flM.js +0 -11
  818. package/dist/channel.setup-DgxlrPgz.js +0 -6
  819. package/dist/channel.setup-GLIAEVKL.js +0 -8
  820. package/dist/channel.setup-YTy5R1sz.js +0 -9
  821. package/dist/channels-CTL8iR9J.js +0 -404
  822. package/dist/channels-DBGvnjHY.js +0 -1113
  823. package/dist/channels-cli-BmVO5-sq.js +0 -286
  824. package/dist/channels-status-issues-kDtsWzA-.js +0 -16
  825. package/dist/clawbot-cli-DtcMJHqX.js +0 -113
  826. package/dist/cli-BNGECGVY.js +0 -149
  827. package/dist/command-registry-1SDrWgER.js +0 -13
  828. package/dist/command-registry-DNorYU4w.js +0 -212
  829. package/dist/command-secret-gateway-DqDZparO.js +0 -106
  830. package/dist/compact.runtime-C1ZN8UGb.js +0 -111
  831. package/dist/completion-cli-Q_Jt5Foc.js +0 -16
  832. package/dist/completion-cli-QkTXhuJh.js +0 -445
  833. package/dist/config-BbxrRaLf.js +0 -938
  834. package/dist/config-CkD8DJ7L.js +0 -44
  835. package/dist/config-cli-BoPrlYTp.js +0 -428
  836. package/dist/config-guard-CEhCvr_u.js +0 -117
  837. package/dist/config-schema-GQ6uWjXe.js +0 -31
  838. package/dist/config-validation-woE2_LpC.js +0 -262
  839. package/dist/config-value-Dh8m-CFf.js +0 -132
  840. package/dist/config-y4i5g7s4.js +0 -30
  841. package/dist/configure-DGRzwdFN.js +0 -1100
  842. package/dist/configure-S4AHE3k_.js +0 -238
  843. package/dist/control-ui-shared-kLBp4YlS.js +0 -29
  844. package/dist/credentials-D5uBf_C5.js +0 -265
  845. package/dist/cron-cli-lGupeVCW.js +0 -634
  846. package/dist/daemon-cli-Cs_edi0I.js +0 -339
  847. package/dist/daemon-install-DIFpP_qv.js +0 -175
  848. package/dist/deliver-DYa_DFZU.js +0 -106
  849. package/dist/deliver-runtime-DCW_o2Ot.js +0 -106
  850. package/dist/devices-cli-YsGOW2-w.js +0 -340
  851. package/dist/diagnostic-vMghIesG.js +0 -310
  852. package/dist/directory-cli-DtjMQjU5.js +0 -306
  853. package/dist/directory.static-DBZGvsdF.js +0 -44
  854. package/dist/discord-DYCu19HT.js +0 -109
  855. package/dist/discovery-DZYAoDF_.js +0 -48
  856. package/dist/dns-cli-DqW4pNgW.js +0 -216
  857. package/dist/docs-cli-Bu9TBlDU.js +0 -173
  858. package/dist/doctor-completion-B5hcQD5c.js +0 -90
  859. package/dist/doctor-config-flow-BBB2ZKfT.js +0 -107
  860. package/dist/doctor-config-flow-DDBYUS9f.js +0 -2437
  861. package/dist/enable-Tmsp8QuB.js +0 -24
  862. package/dist/env-overrides-BHxqjYZG.js +0 -434
  863. package/dist/env-overrides.runtime-Cz98bf-l.js +0 -17
  864. package/dist/exec-approvals-cli-wO5cYfMa.js +0 -419
  865. package/dist/gateway-cli-CFvDGhB9.js +0 -26429
  866. package/dist/gateway-install-token-CskJfo_N.js +0 -163
  867. package/dist/gateway-rpc-srYfBID9.js +0 -26
  868. package/dist/gateway-runtime-C76hUmUV.js +0 -69
  869. package/dist/googlechat-Cha5utST.js +0 -307
  870. package/dist/health-DDQYYsJy.js +0 -108
  871. package/dist/health-DXZykGaX.js +0 -570
  872. package/dist/hooks-cli-DfkurPYP.js +0 -995
  873. package/dist/imessage-B26k39pl.js +0 -110
  874. package/dist/imessage-Bp1_6cws.js +0 -31
  875. package/dist/inbound-reply-dispatch-DoIJLztA.js +0 -71
  876. package/dist/install-target-BjOuS4I8.js +0 -574
  877. package/dist/installs-Cz4k0W1Y.js +0 -532
  878. package/dist/io-B0OKifLZ.js +0 -28
  879. package/dist/io-DcoxdH6t.js +0 -9570
  880. package/dist/ipv4-CTQQ4_IW.js +0 -82
  881. package/dist/irc-B8vBDigm.js +0 -672
  882. package/dist/library-VCM_cQY4.js +0 -107
  883. package/dist/lifecycle-core-Ctz36PdQ.js +0 -382
  884. package/dist/line-B_uTLrdI.js +0 -530
  885. package/dist/llm-slug-generator-YWg0g2pj.js +0 -67
  886. package/dist/logging-S-5LPdfQ.js +0 -13
  887. package/dist/logging-ueBMCGMR.js +0 -29
  888. package/dist/login-qr-pcACm2Ng.js +0 -107
  889. package/dist/login-qr-pv-kxMfF.js +0 -233
  890. package/dist/logs-cli-RgADgSMO.js +0 -254
  891. package/dist/manager-runtime-BhTkoKmb.js +0 -106
  892. package/dist/manager.runtime-BjHzikoK.js +0 -710
  893. package/dist/matrix-C4EEu2Qp.js +0 -1490
  894. package/dist/matrix-Dfzcc5nV.js +0 -1269
  895. package/dist/mcp-cli-CJmOm9Oj.js +0 -86
  896. package/dist/media-understanding.runtime-DCETFCw_.js +0 -111
  897. package/dist/memory-cli-DFqd6tYx.js +0 -106
  898. package/dist/method-scopes-D-Q9dvbj.js +0 -2586
  899. package/dist/model-picker-Z-CUcuMr.js +0 -390
  900. package/dist/model-picker-v5mUsZ4J.js +0 -107
  901. package/dist/model-picker.runtime-A_z0dHfS.js +0 -120
  902. package/dist/model-suppression.runtime-QVWVJRr-.js +0 -111
  903. package/dist/models-Bbj0xV4F.js +0 -2514
  904. package/dist/models-D-OIjZqU.js +0 -113
  905. package/dist/models-cli-Bpn-5i4h.js +0 -304
  906. package/dist/models-config-Cwa5cJbC.js +0 -106
  907. package/dist/monitor-BchfCAaU.js +0 -6823
  908. package/dist/monitor-BydV44SP.js +0 -3076
  909. package/dist/monitor-CT8axwfm.js +0 -767
  910. package/dist/monitor-CZGWNOvn.js +0 -777
  911. package/dist/monitor-DN62r69g.js +0 -3468
  912. package/dist/monitor-DZ0fzJku.js +0 -110
  913. package/dist/monitor-DvNjzWFu.js +0 -108
  914. package/dist/monitor-shared-B-DBSlkQ.js +0 -444
  915. package/dist/msteams-Bf-wk2Rp.js +0 -852
  916. package/dist/node-cli-kH16TQI7.js +0 -2498
  917. package/dist/node-resolve-DfOpQmxm.js +0 -835
  918. package/dist/nodes-cli-CkAMXW5u.js +0 -1375
  919. package/dist/nostr-B8UGHclZ.js +0 -8744
  920. package/dist/npm-resolution-DmjlifII.js +0 -60
  921. package/dist/onboard-C883nfyw.js +0 -589
  922. package/dist/onboard-channels-Dc-BxN7p.js +0 -200
  923. package/dist/onboard-channels-j5EENtum.js +0 -1241
  924. package/dist/onboard-custom-0atne0C5.js +0 -571
  925. package/dist/onboard-custom-CWMqwjJx.js +0 -109
  926. package/dist/onboard-helpers-D3wWfH8F.js +0 -335
  927. package/dist/onboard-helpers-DZmRCe8l.js +0 -108
  928. package/dist/onboard-remote-Cn6kW-p0.js +0 -112
  929. package/dist/onboard-remote-Cx4w5VAk.js +0 -181
  930. package/dist/onboard-search-Ck9HRh2M.js +0 -297
  931. package/dist/onboard-skills-BtqrGioT.js +0 -133
  932. package/dist/onboard-skills-Dnw19Os8.js +0 -112
  933. package/dist/outbound-media-C5Nv4o18.js +0 -11
  934. package/dist/pairing-cli-Cwy9QZ_4.js +0 -212
  935. package/dist/perplexity-Brhpb45X.js +0 -24
  936. package/dist/pi-model-discovery-runtime-DIOdo6D8.js +0 -106
  937. package/dist/pi-tools.before-tool-call.runtime-CFM4gsDF.js +0 -380
  938. package/dist/plugin-install-BOV00hia.js +0 -112
  939. package/dist/plugin-install-Bak8fUBv.js +0 -184
  940. package/dist/plugin-install-plan-bKkEefRf.js +0 -49
  941. package/dist/plugin-registry-DxAXQUlZ.js +0 -108
  942. package/dist/plugin-registry-n0p3phem.js +0 -49
  943. package/dist/plugins-Ca3RK8Fi.js +0 -106
  944. package/dist/plugins-cli-BnC51H2R.js +0 -912
  945. package/dist/policy-BJv97w9e.js +0 -143
  946. package/dist/preflight-audio.runtime-BrFcf-6_.js +0 -111
  947. package/dist/probe-063xvvZc.js +0 -19
  948. package/dist/probe-BJEb2wGv.js +0 -1793
  949. package/dist/probe-CJQlxgsl.js +0 -47
  950. package/dist/probe-Caa2HznF.js +0 -6328
  951. package/dist/probe-CfL4tnJ6.js +0 -129
  952. package/dist/probe-auth-DN2Ec83-.js +0 -38
  953. package/dist/probe-auth-D_UKzu4m.js +0 -48
  954. package/dist/program-BOMdC7MC.js +0 -247
  955. package/dist/prompt-select-styled-DDnCfM3j.js +0 -2673
  956. package/dist/provider-api-key-auth.runtime-DUns3fwX.js +0 -116
  957. package/dist/provider-auth-choice-B_j1ctT2.js +0 -126
  958. package/dist/provider-auth-choice-preference-BaOBZ_Xn.js +0 -189
  959. package/dist/provider-auth-choice.runtime-DOako_zV.js +0 -118
  960. package/dist/provider-auth-guidance-CrjxnoNZ.js +0 -34
  961. package/dist/provider-runtime.runtime-BkOkgmTw.js +0 -106
  962. package/dist/provider-self-hosted-setup-BFDU6dRa.js +0 -182
  963. package/dist/provider-usage-CaDE0mqq.js +0 -106
  964. package/dist/provider-web-search-BR7etTjJ.js +0 -2392
  965. package/dist/provider-wizard-DCPdKUvb.js +0 -152
  966. package/dist/push-apns-B_OZjm4v.js +0 -1038
  967. package/dist/pw-ai-dG60P0hQ.js +0 -1866
  968. package/dist/qr-cli-DWfiw79I.js +0 -369
  969. package/dist/qr-cli-DwuKtyZQ.js +0 -108
  970. package/dist/reactions-CIGAPBn8.js +0 -281
  971. package/dist/read-only-account-inspect.discord.runtime-D54mnq8l.js +0 -111
  972. package/dist/read-only-account-inspect.slack.runtime-Bxs9ObMC.js +0 -111
  973. package/dist/read-only-account-inspect.telegram.runtime-UoVuf_Yo.js +0 -111
  974. package/dist/redact-snapshot-DZ3Vq-SC.js +0 -2657
  975. package/dist/ref-contract-D96lSYLs.js +0 -53
  976. package/dist/register.agent-2KmeahEL.js +0 -434
  977. package/dist/register.backup-ECBnWVR7.js +0 -624
  978. package/dist/register.configure-Doz1daCp.js +0 -247
  979. package/dist/register.maintenance-C33cV-WM.js +0 -569
  980. package/dist/register.message-CnL0NiF6.js +0 -704
  981. package/dist/register.onboard-BrYGZeQA.js +0 -187
  982. package/dist/register.setup-Bx6gEg6X.js +0 -207
  983. package/dist/register.status-health-sessions-FLb0CUOO.js +0 -493
  984. package/dist/register.subclis-BuqgaeIf.js +0 -12
  985. package/dist/register.subclis-DwdgfdnT.js +0 -315
  986. package/dist/registry-xhgvU89y.js +0 -1107
  987. package/dist/replies-hB2aipLu.js +0 -110
  988. package/dist/resolve-3ErMOltL.js +0 -660
  989. package/dist/resolve-channels-BV8GXuPe.js +0 -226
  990. package/dist/resolve-channels-CTY_XRIP.js +0 -262
  991. package/dist/resolve-users-DQ4Ne4Zc.js +0 -143
  992. package/dist/routes-BNDsNO_e.js +0 -7097
  993. package/dist/rpc-BLGTBWXq.js +0 -67
  994. package/dist/run-main-COAE4GlI.js +0 -423
  995. package/dist/runtime-discord-ops.runtime-Dxg-nlgd.js +0 -9073
  996. package/dist/runtime-slack-ops.runtime-Di474LJr.js +0 -4551
  997. package/dist/runtime-telegram-ops.runtime-Da8vgf3O.js +0 -128
  998. package/dist/runtime-whatsapp-login.runtime-DcouP4iF.js +0 -109
  999. package/dist/runtime-whatsapp-outbound.runtime-CYamaEJX.js +0 -112
  1000. package/dist/sandbox-cli-U5ZTxhxL.js +0 -530
  1001. package/dist/search-manager-CfizyEMk.js +0 -386
  1002. package/dist/search-manager-DaF2QP4s.js +0 -15
  1003. package/dist/secrets-cli-C0gytFip.js +0 -2065
  1004. package/dist/security-cli-C74EuLUO.js +0 -570
  1005. package/dist/send-BTLVBf_E.js +0 -631
  1006. package/dist/send-BlWWCEZE.js +0 -1025
  1007. package/dist/send-CfypD1B_.js +0 -100
  1008. package/dist/send-Cm9v3uhF.js +0 -283
  1009. package/dist/send-g2odQuYI.js +0 -629
  1010. package/dist/server-C8b5QJ2s.js +0 -106
  1011. package/dist/server-node-events-xqQe5xiu.js +0 -501
  1012. package/dist/sessions-CSSzvgPQ.js +0 -107
  1013. package/dist/sessions-z0GIvdKa.js +0 -218
  1014. package/dist/setup-D9XTmlF8.js +0 -387
  1015. package/dist/setup-core-BDrLOwYO.js +0 -143
  1016. package/dist/setup-core-CM7cY7_i.js +0 -166
  1017. package/dist/setup-core-CnmgANY-.js +0 -205
  1018. package/dist/setup-core-DgcjCKmG.js +0 -47
  1019. package/dist/setup-surface-DzRrVKYj.js +0 -490
  1020. package/dist/setup.finalize-UaPu_adv.js +0 -517
  1021. package/dist/setup.gateway-config-Djc1ceEh.js +0 -338
  1022. package/dist/setup.secret-input-BkczghbR.js +0 -25
  1023. package/dist/shared-BHizGoNk.js +0 -298
  1024. package/dist/shared-CUfYhQkP.js +0 -96
  1025. package/dist/shared-DYYqr9EC.js +0 -75
  1026. package/dist/shared-DthOxMRQ.js +0 -182
  1027. package/dist/shared-On_A5_hW.js +0 -102
  1028. package/dist/signal-D6px9PGZ.js +0 -109
  1029. package/dist/skills-B4h1k-SP.js +0 -853
  1030. package/dist/skills-Bto10BGB.js +0 -19
  1031. package/dist/skills-cli-CXGR3Y5j.js +0 -291
  1032. package/dist/skills-install-B1AlkK8C.js +0 -763
  1033. package/dist/skills-status-BsmJ_iSg.js +0 -20
  1034. package/dist/skills-status-DGdxY3OI.js +0 -169
  1035. package/dist/slack-B7vWFmxP.js +0 -109
  1036. package/dist/slash-commands.runtime-DXdAT84n.js +0 -123
  1037. package/dist/slash-dispatch.runtime-CNf2-9Aj.js +0 -136
  1038. package/dist/slash-skill-commands.runtime-CBjffHRX.js +0 -111
  1039. package/dist/src-Cp7P7T08.js +0 -1696
  1040. package/dist/status-158fWh4A.js +0 -43
  1041. package/dist/status-BJIVLJnb.js +0 -1599
  1042. package/dist/status-BQiBI6N9.js +0 -126
  1043. package/dist/status-CZipXGUu.js +0 -121
  1044. package/dist/status-ZZIVFLI-.js +0 -606
  1045. package/dist/status-json-BNUy5Mem.js +0 -286
  1046. package/dist/status.link-channel-B694y1Xu.js +0 -138
  1047. package/dist/status.scan.deps.runtime-BcoKEzQD.js +0 -121
  1048. package/dist/status.scan.runtime-CqScDt-p.js +0 -114
  1049. package/dist/status.summary-AMek7qvI.js +0 -592
  1050. package/dist/status.summary.runtime-XgkcQ_kr.js +0 -113
  1051. package/dist/subagent-orphan-recovery-CrCYTmFC.js +0 -302
  1052. package/dist/subagent-registry-runtime-Cg-YvLx3.js +0 -106
  1053. package/dist/synology-chat-0G85jIqQ.js +0 -297
  1054. package/dist/system-cli-kZtSxKNm.js +0 -92
  1055. package/dist/telegram-DV0Wy89w.js +0 -109
  1056. package/dist/text-chunking-C2J2Oeul.js +0 -84
  1057. package/dist/tlon-DmK1NUVP.js +0 -433
  1058. package/dist/tui-D3bNPLG7.js +0 -3834
  1059. package/dist/tui-cli-DtMp9k_s.js +0 -132
  1060. package/dist/types.secrets-DuSPmmWB.js +0 -80
  1061. package/dist/ui-CeGztSEL.js +0 -31
  1062. package/dist/update-De7VudzP.js +0 -1036
  1063. package/dist/update-cli-BH8Pb-So.js +0 -1498
  1064. package/dist/update-offset-store-syELkdEW.js +0 -107
  1065. package/dist/update-runner-Cq-Q40T9.js +0 -1496
  1066. package/dist/web-CjMtvfSq.js +0 -107
  1067. package/dist/webhook-targets-_jTR0Bb_.js +0 -181
  1068. package/dist/webhooks-cli-DQ6u2Qau.js +0 -349
  1069. package/dist/whatsapp-CyLk16SZ.js +0 -109
  1070. package/dist/whatsapp-actions-Dzr2Wzqw.js +0 -162
  1071. package/dist/workspace-dirs-L1_QQ9mB.js +0 -2002
  1072. package/dist/zalo-CrehfXvK.js +0 -415
  1073. package/dist/zalouser-D1QD-O-I.js +0 -30911
  1074. package/dist/zod-schema.core-CWxzqcUs.js +0 -541
@@ -1,1241 +0,0 @@
1
- import { t as formatDocsLink } from "./links-C5I443Xb.js";
2
- import { Fw as listChannelPluginCatalogEntries, MT as resolveChannelDefaultAccountId, Mg as splitSetupEntries, O as getActivePluginRegistryVersion, Sg as resolveAccountIdForConfigure, Vn as isChannelConfigured, bg as promptResolvedAllowFrom, j as requireActivePluginRegistry, wg as runSingleChannelSecretStep } from "./auth-profiles-BJcHzwPy.js";
3
- import { m as resolveDefaultAgentId, p as resolveAgentWorkspaceDir } from "./agent-scope-DA7O8MVG.js";
4
- import { n as normalizeAccountId, t as DEFAULT_ACCOUNT_ID } from "./account-id-O4Og6DrK.js";
5
- import { a as listChatChannels, n as formatChannelSelectionLine, t as formatChannelPrimerLine, u as CHAT_CHANNEL_ORDER } from "./registry-DcDGl2X7.js";
6
- import { t as formatCliCommand } from "./command-format-DIDjlImI.js";
7
- import { t as bluebubblesPlugin } from "./channel-CbtGJB2x.js";
8
- import { t as discordPlugin } from "./channel-DZNAyxwr.js";
9
- import { t as discordSetupPlugin } from "./channel.setup-DgxlrPgz.js";
10
- import { t as feishuPlugin } from "./channel-t-JxCWk6.js";
11
- import { t as googlechatPlugin } from "./channel-DuYgH6p1.js";
12
- import { t as imessagePlugin } from "./channel-DT6qD1Ic.js";
13
- import { t as imessageSetupPlugin } from "./channel.setup-YTy5R1sz.js";
14
- import { t as ircPlugin } from "./channel-BftWD6yu.js";
15
- import { t as linePlugin } from "./channel-CI-RC-xf.js";
16
- import { t as lineSetupPlugin } from "./channel.setup-Bf73HsXr.js";
17
- import { t as matrixPlugin } from "./channel-DEq6Ecs-.js";
18
- import { t as mattermostPlugin } from "./channel-C0oDs7TO.js";
19
- import { t as msteamsPlugin } from "./channel-CY-hZCOJ.js";
20
- import { t as nextcloudTalkPlugin } from "./channel-_R4hbD5h.js";
21
- import { n as nostrPlugin } from "./channel-DH4dhW1n.js";
22
- import { t as signalPlugin } from "./channel-C8CnEdkZ.js";
23
- import { t as signalSetupPlugin } from "./channel.setup-BQFHmgki.js";
24
- import { t as slackPlugin } from "./channel-DtakwAEe.js";
25
- import { t as slackSetupPlugin } from "./channel.setup-BVoDwklu.js";
26
- import { t as synologyChatPlugin } from "./channel-CcfK3wP8.js";
27
- import { t as telegramPlugin } from "./channel-DQ_wdKg_.js";
28
- import { t as telegramSetupPlugin } from "./channel.setup-GLIAEVKL.js";
29
- import { t as tlonPlugin } from "./channel-Bub9U5Xg.js";
30
- import { t as whatsappPlugin } from "./channel-kQmEVn3I.js";
31
- import { t as whatsappSetupPlugin } from "./channel.setup-CblD4flM.js";
32
- import { t as zaloPlugin } from "./channel-Hn-AN-d52.js";
33
- import { t as zalouserPlugin } from "./channel-DBoDIeVj.js";
34
- import { t as enablePluginInConfig } from "./enable-Tmsp8QuB.js";
35
- import { n as resolveChannelSetupEntries } from "./discovery-DZYAoDF_.js";
36
- import { n as loadChannelSetupPluginRegistrySnapshotForChannel, t as ensureChannelSetupPluginInstalled } from "./plugin-install-Bak8fUBv.js";
37
- //#region src/channels/plugins/bundled.ts
38
- const bundledChannelPlugins = [
39
- bluebubblesPlugin,
40
- discordPlugin,
41
- feishuPlugin,
42
- googlechatPlugin,
43
- imessagePlugin,
44
- ircPlugin,
45
- linePlugin,
46
- matrixPlugin,
47
- mattermostPlugin,
48
- msteamsPlugin,
49
- nextcloudTalkPlugin,
50
- nostrPlugin,
51
- signalPlugin,
52
- slackPlugin,
53
- synologyChatPlugin,
54
- telegramPlugin,
55
- tlonPlugin,
56
- whatsappPlugin,
57
- zaloPlugin,
58
- zalouserPlugin
59
- ];
60
- const bundledChannelSetupPlugins = [
61
- telegramSetupPlugin,
62
- whatsappSetupPlugin,
63
- discordSetupPlugin,
64
- ircPlugin,
65
- googlechatPlugin,
66
- slackSetupPlugin,
67
- signalSetupPlugin,
68
- imessageSetupPlugin,
69
- lineSetupPlugin
70
- ];
71
- new Map(bundledChannelPlugins.map((plugin) => [plugin.id, plugin]));
72
- //#endregion
73
- //#region src/channels/plugins/setup-registry.ts
74
- let cachedChannelSetupPlugins = {
75
- registryVersion: -1,
76
- sorted: [],
77
- byId: /* @__PURE__ */ new Map()
78
- };
79
- function dedupeSetupPlugins(plugins) {
80
- const seen = /* @__PURE__ */ new Set();
81
- const resolved = [];
82
- for (const plugin of plugins) {
83
- const id = String(plugin.id).trim();
84
- if (!id || seen.has(id)) continue;
85
- seen.add(id);
86
- resolved.push(plugin);
87
- }
88
- return resolved;
89
- }
90
- function sortChannelSetupPlugins(plugins) {
91
- return dedupeSetupPlugins(plugins).toSorted((a, b) => {
92
- const indexA = CHAT_CHANNEL_ORDER.indexOf(a.id);
93
- const indexB = CHAT_CHANNEL_ORDER.indexOf(b.id);
94
- const orderA = a.meta.order ?? (indexA === -1 ? 999 : indexA);
95
- const orderB = b.meta.order ?? (indexB === -1 ? 999 : indexB);
96
- if (orderA !== orderB) return orderA - orderB;
97
- return a.id.localeCompare(b.id);
98
- });
99
- }
100
- function resolveCachedChannelSetupPlugins() {
101
- const registry = requireActivePluginRegistry();
102
- const registryVersion = getActivePluginRegistryVersion();
103
- const cached = cachedChannelSetupPlugins;
104
- if (cached.registryVersion === registryVersion) return cached;
105
- const registryPlugins = (registry.channelSetups ?? []).map((entry) => entry.plugin);
106
- const sorted = sortChannelSetupPlugins(registryPlugins.length > 0 ? registryPlugins : bundledChannelSetupPlugins);
107
- const byId = /* @__PURE__ */ new Map();
108
- for (const plugin of sorted) byId.set(plugin.id, plugin);
109
- const next = {
110
- registryVersion,
111
- sorted,
112
- byId
113
- };
114
- cachedChannelSetupPlugins = next;
115
- return next;
116
- }
117
- function listChannelSetupPlugins() {
118
- return resolveCachedChannelSetupPlugins().sorted.slice();
119
- }
120
- function getChannelSetupPlugin(id) {
121
- const resolvedId = String(id).trim();
122
- if (!resolvedId) return;
123
- return resolveCachedChannelSetupPlugins().byId.get(resolvedId);
124
- }
125
- //#endregion
126
- //#region src/channels/plugins/setup-group-access.ts
127
- function parseAllowlistEntries(raw) {
128
- return splitSetupEntries(String(raw ?? ""));
129
- }
130
- function formatAllowlistEntries(entries) {
131
- return entries.map((entry) => entry.trim()).filter(Boolean).join(", ");
132
- }
133
- async function promptChannelAccessPolicy(params) {
134
- const options = [{
135
- value: "allowlist",
136
- label: "Allowlist (recommended)"
137
- }];
138
- if (params.allowOpen !== false) options.push({
139
- value: "open",
140
- label: "Open (allow all channels)"
141
- });
142
- if (params.allowDisabled !== false) options.push({
143
- value: "disabled",
144
- label: "Disabled (block all channels)"
145
- });
146
- const initialValue = params.currentPolicy ?? "allowlist";
147
- return await params.prompter.select({
148
- message: `${params.label} access`,
149
- options,
150
- initialValue
151
- });
152
- }
153
- async function promptChannelAllowlist(params) {
154
- const initialValue = params.currentEntries && params.currentEntries.length > 0 ? formatAllowlistEntries(params.currentEntries) : void 0;
155
- return parseAllowlistEntries(await params.prompter.text({
156
- message: `${params.label} allowlist (comma-separated)`,
157
- placeholder: params.placeholder,
158
- initialValue
159
- }));
160
- }
161
- async function promptChannelAccessConfig(params) {
162
- const hasEntries = (params.currentEntries ?? []).length > 0;
163
- const shouldPrompt = params.defaultPrompt ?? !hasEntries;
164
- if (!await params.prompter.confirm({
165
- message: params.updatePrompt ? `Update ${params.label} access?` : `Configure ${params.label} access?`,
166
- initialValue: shouldPrompt
167
- })) return null;
168
- const policy = await promptChannelAccessPolicy({
169
- prompter: params.prompter,
170
- label: params.label,
171
- currentPolicy: params.currentPolicy,
172
- allowOpen: params.allowOpen,
173
- allowDisabled: params.allowDisabled
174
- });
175
- if (policy !== "allowlist") return {
176
- policy,
177
- entries: []
178
- };
179
- if (params.skipAllowlistEntries) return {
180
- policy,
181
- entries: []
182
- };
183
- return {
184
- policy,
185
- entries: await promptChannelAllowlist({
186
- prompter: params.prompter,
187
- label: params.label,
188
- currentEntries: params.currentEntries,
189
- placeholder: params.placeholder
190
- })
191
- };
192
- }
193
- //#endregion
194
- //#region src/channels/plugins/setup-group-access-configure.ts
195
- async function configureChannelAccessWithAllowlist(params) {
196
- let next = params.cfg;
197
- const accessConfig = await promptChannelAccessConfig({
198
- prompter: params.prompter,
199
- label: params.label,
200
- currentPolicy: params.currentPolicy,
201
- currentEntries: params.currentEntries,
202
- placeholder: params.placeholder,
203
- updatePrompt: params.updatePrompt,
204
- skipAllowlistEntries: params.skipAllowlistEntries
205
- });
206
- if (!accessConfig) return next;
207
- if (accessConfig.policy !== "allowlist") return params.setPolicy(next, accessConfig.policy);
208
- if (params.skipAllowlistEntries || !params.resolveAllowlist || !params.applyAllowlist) return params.setPolicy(next, "allowlist");
209
- const resolved = await params.resolveAllowlist({
210
- cfg: next,
211
- entries: accessConfig.entries
212
- });
213
- next = params.setPolicy(next, "allowlist");
214
- return params.applyAllowlist({
215
- cfg: next,
216
- resolved
217
- });
218
- }
219
- //#endregion
220
- //#region src/channels/plugins/setup-wizard.ts
221
- async function buildStatus(plugin, wizard, ctx) {
222
- const configured = await wizard.status.resolveConfigured({ cfg: ctx.cfg });
223
- const statusLines = await wizard.status.resolveStatusLines?.({
224
- cfg: ctx.cfg,
225
- configured
226
- }) ?? [`${plugin.meta.label}: ${configured ? wizard.status.configuredLabel : wizard.status.unconfiguredLabel}`];
227
- const selectionHint = await wizard.status.resolveSelectionHint?.({
228
- cfg: ctx.cfg,
229
- configured
230
- }) ?? (configured ? wizard.status.configuredHint : wizard.status.unconfiguredHint);
231
- const quickstartScore = await wizard.status.resolveQuickstartScore?.({
232
- cfg: ctx.cfg,
233
- configured
234
- }) ?? (configured ? wizard.status.configuredScore : wizard.status.unconfiguredScore);
235
- return {
236
- channel: plugin.id,
237
- configured,
238
- statusLines,
239
- selectionHint,
240
- quickstartScore
241
- };
242
- }
243
- function applySetupInput(params) {
244
- const setup = params.plugin.setup;
245
- if (!setup?.applyAccountConfig) throw new Error(`${params.plugin.id} does not support setup`);
246
- const resolvedAccountId = setup.resolveAccountId?.({
247
- cfg: params.cfg,
248
- accountId: params.accountId,
249
- input: params.input
250
- }) ?? params.accountId;
251
- const validationError = setup.validateInput?.({
252
- cfg: params.cfg,
253
- accountId: resolvedAccountId,
254
- input: params.input
255
- });
256
- if (validationError) throw new Error(validationError);
257
- let next = setup.applyAccountConfig({
258
- cfg: params.cfg,
259
- accountId: resolvedAccountId,
260
- input: params.input
261
- });
262
- if (params.input.name?.trim() && setup.applyAccountName) next = setup.applyAccountName({
263
- cfg: next,
264
- accountId: resolvedAccountId,
265
- name: params.input.name
266
- });
267
- return {
268
- cfg: next,
269
- accountId: resolvedAccountId
270
- };
271
- }
272
- function trimResolvedValue(value) {
273
- const trimmed = value?.trim();
274
- return trimmed ? trimmed : void 0;
275
- }
276
- function collectCredentialValues(params) {
277
- const values = {};
278
- for (const credential of params.wizard.credentials) {
279
- const resolvedValue = trimResolvedValue(credential.inspect({
280
- cfg: params.cfg,
281
- accountId: params.accountId
282
- }).resolvedValue);
283
- if (resolvedValue) values[credential.inputKey] = resolvedValue;
284
- }
285
- return values;
286
- }
287
- async function applyWizardTextInputValue(params) {
288
- return params.input.applySet ? await params.input.applySet({
289
- cfg: params.cfg,
290
- accountId: params.accountId,
291
- value: params.value
292
- }) : applySetupInput({
293
- plugin: params.plugin,
294
- cfg: params.cfg,
295
- accountId: params.accountId,
296
- input: { [params.input.inputKey]: params.value }
297
- }).cfg;
298
- }
299
- function buildChannelSetupWizardAdapterFromSetupWizard(params) {
300
- const { plugin, wizard } = params;
301
- return {
302
- channel: plugin.id,
303
- getStatus: async (ctx) => buildStatus(plugin, wizard, ctx),
304
- configure: async ({ cfg, runtime, prompter, options, accountOverrides, shouldPromptAccountIds, forceAllowFrom }) => {
305
- const defaultAccountId = plugin.config.defaultAccountId?.(cfg) ?? plugin.config.listAccountIds(cfg)[0] ?? "default";
306
- const resolvedShouldPromptAccountIds = wizard.resolveShouldPromptAccountIds?.({
307
- cfg,
308
- options,
309
- shouldPromptAccountIds
310
- }) ?? shouldPromptAccountIds;
311
- const accountId = await (wizard.resolveAccountIdForConfigure ? wizard.resolveAccountIdForConfigure({
312
- cfg,
313
- prompter,
314
- options,
315
- accountOverride: accountOverrides[plugin.id],
316
- shouldPromptAccountIds: resolvedShouldPromptAccountIds,
317
- listAccountIds: plugin.config.listAccountIds,
318
- defaultAccountId
319
- }) : resolveAccountIdForConfigure({
320
- cfg,
321
- prompter,
322
- label: plugin.meta.label,
323
- accountOverride: accountOverrides[plugin.id],
324
- shouldPromptAccountIds: resolvedShouldPromptAccountIds,
325
- listAccountIds: plugin.config.listAccountIds,
326
- defaultAccountId
327
- }));
328
- let next = cfg;
329
- let credentialValues = collectCredentialValues({
330
- wizard,
331
- cfg: next,
332
- accountId
333
- });
334
- let usedEnvShortcut = false;
335
- if (wizard.envShortcut?.isAvailable({
336
- cfg: next,
337
- accountId
338
- })) {
339
- if (await prompter.confirm({
340
- message: wizard.envShortcut.prompt,
341
- initialValue: true
342
- })) {
343
- next = await wizard.envShortcut.apply({
344
- cfg: next,
345
- accountId
346
- });
347
- credentialValues = collectCredentialValues({
348
- wizard,
349
- cfg: next,
350
- accountId
351
- });
352
- usedEnvShortcut = true;
353
- }
354
- }
355
- if (!usedEnvShortcut && (wizard.introNote?.shouldShow ? await wizard.introNote.shouldShow({
356
- cfg: next,
357
- accountId,
358
- credentialValues
359
- }) : Boolean(wizard.introNote)) && wizard.introNote) await prompter.note(wizard.introNote.lines.join("\n"), wizard.introNote.title);
360
- if (wizard.prepare) {
361
- const prepared = await wizard.prepare({
362
- cfg: next,
363
- accountId,
364
- credentialValues,
365
- runtime,
366
- prompter,
367
- options
368
- });
369
- if (prepared?.cfg) next = prepared.cfg;
370
- if (prepared?.credentialValues) credentialValues = {
371
- ...credentialValues,
372
- ...prepared.credentialValues
373
- };
374
- }
375
- const runCredentialSteps = async () => {
376
- if (usedEnvShortcut) return;
377
- for (const credential of wizard.credentials) {
378
- let credentialState = credential.inspect({
379
- cfg: next,
380
- accountId
381
- });
382
- let resolvedCredentialValue = trimResolvedValue(credentialState.resolvedValue);
383
- if (!(credential.shouldPrompt ? await credential.shouldPrompt({
384
- cfg: next,
385
- accountId,
386
- credentialValues,
387
- currentValue: resolvedCredentialValue,
388
- state: credentialState
389
- }) : true)) {
390
- if (resolvedCredentialValue) credentialValues[credential.inputKey] = resolvedCredentialValue;
391
- else delete credentialValues[credential.inputKey];
392
- continue;
393
- }
394
- const allowEnv = credential.allowEnv?.({
395
- cfg: next,
396
- accountId
397
- }) ?? false;
398
- const credentialResult = await runSingleChannelSecretStep({
399
- cfg: next,
400
- prompter,
401
- providerHint: credential.providerHint,
402
- credentialLabel: credential.credentialLabel,
403
- secretInputMode: options?.secretInputMode,
404
- accountConfigured: credentialState.accountConfigured,
405
- hasConfigToken: credentialState.hasConfiguredValue,
406
- allowEnv,
407
- envValue: credentialState.envValue,
408
- envPrompt: credential.envPrompt,
409
- keepPrompt: credential.keepPrompt,
410
- inputPrompt: credential.inputPrompt,
411
- preferredEnvVar: credential.preferredEnvVar,
412
- onMissingConfigured: credential.helpLines && credential.helpLines.length > 0 ? async () => {
413
- await prompter.note(credential.helpLines.join("\n"), credential.helpTitle ?? credential.credentialLabel);
414
- } : void 0,
415
- applyUseEnv: async (currentCfg) => credential.applyUseEnv ? await credential.applyUseEnv({
416
- cfg: currentCfg,
417
- accountId
418
- }) : applySetupInput({
419
- plugin,
420
- cfg: currentCfg,
421
- accountId,
422
- input: {
423
- [credential.inputKey]: void 0,
424
- useEnv: true
425
- }
426
- }).cfg,
427
- applySet: async (currentCfg, value, resolvedValue) => {
428
- resolvedCredentialValue = resolvedValue;
429
- return credential.applySet ? await credential.applySet({
430
- cfg: currentCfg,
431
- accountId,
432
- credentialValues,
433
- value,
434
- resolvedValue
435
- }) : applySetupInput({
436
- plugin,
437
- cfg: currentCfg,
438
- accountId,
439
- input: {
440
- [credential.inputKey]: value,
441
- useEnv: false
442
- }
443
- }).cfg;
444
- }
445
- });
446
- next = credentialResult.cfg;
447
- credentialState = credential.inspect({
448
- cfg: next,
449
- accountId
450
- });
451
- resolvedCredentialValue = trimResolvedValue(credentialResult.resolvedValue) || trimResolvedValue(credentialState.resolvedValue);
452
- if (resolvedCredentialValue) credentialValues[credential.inputKey] = resolvedCredentialValue;
453
- else delete credentialValues[credential.inputKey];
454
- }
455
- };
456
- const runTextInputSteps = async () => {
457
- for (const textInput of wizard.textInputs ?? []) {
458
- let currentValue = trimResolvedValue(typeof credentialValues[textInput.inputKey] === "string" ? credentialValues[textInput.inputKey] : void 0);
459
- if (!currentValue && textInput.currentValue) currentValue = trimResolvedValue(await textInput.currentValue({
460
- cfg: next,
461
- accountId,
462
- credentialValues
463
- }));
464
- if (!(textInput.shouldPrompt ? await textInput.shouldPrompt({
465
- cfg: next,
466
- accountId,
467
- credentialValues,
468
- currentValue
469
- }) : true)) {
470
- if (currentValue) {
471
- credentialValues[textInput.inputKey] = currentValue;
472
- if (textInput.applyCurrentValue) next = await applyWizardTextInputValue({
473
- plugin,
474
- input: textInput,
475
- cfg: next,
476
- accountId,
477
- value: currentValue
478
- });
479
- }
480
- continue;
481
- }
482
- if (textInput.helpLines && textInput.helpLines.length > 0) await prompter.note(textInput.helpLines.join("\n"), textInput.helpTitle ?? textInput.message);
483
- if (currentValue && textInput.confirmCurrentValue !== false) {
484
- if (await prompter.confirm({
485
- message: typeof textInput.keepPrompt === "function" ? textInput.keepPrompt(currentValue) : textInput.keepPrompt ?? `${textInput.message} set (${currentValue}). Keep it?`,
486
- initialValue: true
487
- })) {
488
- credentialValues[textInput.inputKey] = currentValue;
489
- if (textInput.applyCurrentValue) next = await applyWizardTextInputValue({
490
- plugin,
491
- input: textInput,
492
- cfg: next,
493
- accountId,
494
- value: currentValue
495
- });
496
- continue;
497
- }
498
- }
499
- const initialValue = trimResolvedValue(await textInput.initialValue?.({
500
- cfg: next,
501
- accountId,
502
- credentialValues
503
- }) ?? currentValue);
504
- const trimmedValue = String(await prompter.text({
505
- message: textInput.message,
506
- initialValue,
507
- placeholder: textInput.placeholder,
508
- validate: (value) => {
509
- const trimmed = String(value ?? "").trim();
510
- if (!trimmed && textInput.required !== false) return "Required";
511
- return textInput.validate?.({
512
- value: trimmed,
513
- cfg: next,
514
- accountId,
515
- credentialValues
516
- });
517
- }
518
- })).trim();
519
- if (!trimmedValue && textInput.required === false) {
520
- if (textInput.applyEmptyValue) next = await applyWizardTextInputValue({
521
- plugin,
522
- input: textInput,
523
- cfg: next,
524
- accountId,
525
- value: ""
526
- });
527
- delete credentialValues[textInput.inputKey];
528
- continue;
529
- }
530
- const normalizedValue = trimResolvedValue(textInput.normalizeValue?.({
531
- value: trimmedValue,
532
- cfg: next,
533
- accountId,
534
- credentialValues
535
- }) ?? trimmedValue);
536
- if (!normalizedValue) {
537
- delete credentialValues[textInput.inputKey];
538
- continue;
539
- }
540
- next = await applyWizardTextInputValue({
541
- plugin,
542
- input: textInput,
543
- cfg: next,
544
- accountId,
545
- value: normalizedValue
546
- });
547
- credentialValues[textInput.inputKey] = normalizedValue;
548
- }
549
- };
550
- if (wizard.stepOrder === "text-first") {
551
- await runTextInputSteps();
552
- await runCredentialSteps();
553
- } else {
554
- await runCredentialSteps();
555
- await runTextInputSteps();
556
- }
557
- if (wizard.groupAccess) {
558
- const access = wizard.groupAccess;
559
- if (access.helpLines && access.helpLines.length > 0) await prompter.note(access.helpLines.join("\n"), access.helpTitle ?? access.label);
560
- next = await configureChannelAccessWithAllowlist({
561
- cfg: next,
562
- prompter,
563
- label: access.label,
564
- currentPolicy: access.currentPolicy({
565
- cfg: next,
566
- accountId
567
- }),
568
- currentEntries: access.currentEntries({
569
- cfg: next,
570
- accountId
571
- }),
572
- placeholder: access.placeholder,
573
- updatePrompt: access.updatePrompt({
574
- cfg: next,
575
- accountId
576
- }),
577
- skipAllowlistEntries: access.skipAllowlistEntries,
578
- setPolicy: (currentCfg, policy) => access.setPolicy({
579
- cfg: currentCfg,
580
- accountId,
581
- policy
582
- }),
583
- resolveAllowlist: access.resolveAllowlist ? async ({ cfg: currentCfg, entries }) => await access.resolveAllowlist({
584
- cfg: currentCfg,
585
- accountId,
586
- credentialValues,
587
- entries,
588
- prompter
589
- }) : void 0,
590
- applyAllowlist: access.applyAllowlist ? ({ cfg: currentCfg, resolved }) => access.applyAllowlist({
591
- cfg: currentCfg,
592
- accountId,
593
- resolved
594
- }) : void 0
595
- });
596
- }
597
- if (forceAllowFrom && wizard.allowFrom) {
598
- const allowFrom = wizard.allowFrom;
599
- const allowFromCredentialValue = trimResolvedValue(credentialValues[allowFrom.credentialInputKey ?? wizard.credentials[0]?.inputKey]);
600
- if (allowFrom.helpLines && allowFrom.helpLines.length > 0) await prompter.note(allowFrom.helpLines.join("\n"), allowFrom.helpTitle ?? `${plugin.meta.label} allowlist`);
601
- const unique = await promptResolvedAllowFrom({
602
- prompter,
603
- existing: plugin.config.resolveAllowFrom?.({
604
- cfg: next,
605
- accountId
606
- }) ?? [],
607
- token: allowFromCredentialValue,
608
- message: allowFrom.message,
609
- placeholder: allowFrom.placeholder,
610
- label: allowFrom.helpTitle ?? `${plugin.meta.label} allowlist`,
611
- parseInputs: allowFrom.parseInputs ?? splitSetupEntries,
612
- parseId: allowFrom.parseId,
613
- invalidWithoutTokenNote: allowFrom.invalidWithoutCredentialNote,
614
- resolveEntries: async ({ entries }) => allowFrom.resolveEntries({
615
- cfg: next,
616
- accountId,
617
- credentialValues,
618
- entries
619
- })
620
- });
621
- next = await allowFrom.apply({
622
- cfg: next,
623
- accountId,
624
- allowFrom: unique
625
- });
626
- }
627
- if (wizard.finalize) {
628
- const finalized = await wizard.finalize({
629
- cfg: next,
630
- accountId,
631
- credentialValues,
632
- runtime,
633
- prompter,
634
- options,
635
- forceAllowFrom
636
- });
637
- if (finalized?.cfg) next = finalized.cfg;
638
- if (finalized?.credentialValues) credentialValues = {
639
- ...credentialValues,
640
- ...finalized.credentialValues
641
- };
642
- }
643
- if (wizard.completionNote && (wizard.completionNote.shouldShow ? await wizard.completionNote.shouldShow({
644
- cfg: next,
645
- accountId,
646
- credentialValues
647
- }) : true) && wizard.completionNote) await prompter.note(wizard.completionNote.lines.join("\n"), wizard.completionNote.title);
648
- return {
649
- cfg: next,
650
- accountId
651
- };
652
- },
653
- dmPolicy: wizard.dmPolicy,
654
- disable: wizard.disable,
655
- onAccountRecorded: wizard.onAccountRecorded
656
- };
657
- }
658
- //#endregion
659
- //#region src/commands/channel-setup/registry.ts
660
- const setupWizardAdapters = /* @__PURE__ */ new WeakMap();
661
- function resolveChannelSetupWizardAdapterForPlugin(plugin) {
662
- if (plugin?.setupWizard) {
663
- const cached = setupWizardAdapters.get(plugin);
664
- if (cached) return cached;
665
- const adapter = buildChannelSetupWizardAdapterFromSetupWizard({
666
- plugin,
667
- wizard: plugin.setupWizard
668
- });
669
- setupWizardAdapters.set(plugin, adapter);
670
- return adapter;
671
- }
672
- }
673
- //#endregion
674
- //#region src/commands/onboard-channels.ts
675
- function formatAccountLabel(accountId) {
676
- return accountId === "default" ? "default (primary)" : accountId;
677
- }
678
- async function promptConfiguredAction(params) {
679
- const { prompter, label, supportsDisable, supportsDelete } = params;
680
- const updateOption = {
681
- value: "update",
682
- label: "Modify settings"
683
- };
684
- const disableOption = {
685
- value: "disable",
686
- label: "Disable (keeps config)"
687
- };
688
- const deleteOption = {
689
- value: "delete",
690
- label: "Delete config"
691
- };
692
- const skipOption = {
693
- value: "skip",
694
- label: "Skip (leave as-is)"
695
- };
696
- const options = [
697
- updateOption,
698
- ...supportsDisable ? [disableOption] : [],
699
- ...supportsDelete ? [deleteOption] : [],
700
- skipOption
701
- ];
702
- return await prompter.select({
703
- message: `${label} already configured. What do you want to do?`,
704
- options,
705
- initialValue: "update"
706
- });
707
- }
708
- async function promptRemovalAccountId(params) {
709
- const { cfg, prompter, label, channel } = params;
710
- const plugin = params.plugin ?? getChannelSetupPlugin(channel);
711
- if (!plugin) return DEFAULT_ACCOUNT_ID;
712
- const accountIds = plugin.config.listAccountIds(cfg).filter(Boolean);
713
- const defaultAccountId = resolveChannelDefaultAccountId({
714
- plugin,
715
- cfg,
716
- accountIds
717
- });
718
- if (accountIds.length <= 1) return defaultAccountId;
719
- return normalizeAccountId(await prompter.select({
720
- message: `${label} account`,
721
- options: accountIds.map((accountId) => ({
722
- value: accountId,
723
- label: formatAccountLabel(accountId)
724
- })),
725
- initialValue: defaultAccountId
726
- })) ?? defaultAccountId;
727
- }
728
- async function collectChannelStatus(params) {
729
- const installedPlugins = params.installedPlugins ?? listChannelSetupPlugins();
730
- const workspaceDir = resolveAgentWorkspaceDir(params.cfg, resolveDefaultAgentId(params.cfg));
731
- const { installedCatalogEntries, installableCatalogEntries } = resolveChannelSetupEntries({
732
- cfg: params.cfg,
733
- installedPlugins,
734
- workspaceDir
735
- });
736
- const resolveAdapter = params.resolveAdapter ?? ((channel) => resolveChannelSetupWizardAdapterForPlugin(installedPlugins.find((plugin) => plugin.id === channel)));
737
- const statusEntries = await Promise.all(installedPlugins.flatMap((plugin) => {
738
- const adapter = resolveAdapter(plugin.id);
739
- if (!adapter) return [];
740
- return adapter.getStatus({
741
- cfg: params.cfg,
742
- options: params.options,
743
- accountOverrides: params.accountOverrides
744
- });
745
- }));
746
- const statusByChannel = new Map(statusEntries.map((entry) => [entry.channel, entry]));
747
- const fallbackStatuses = listChatChannels().filter((meta) => !statusByChannel.has(meta.id)).map((meta) => {
748
- const configured = isChannelConfigured(params.cfg, meta.id);
749
- const statusLabel = configured ? "configured (plugin disabled)" : "not configured";
750
- return {
751
- channel: meta.id,
752
- configured,
753
- statusLines: [`${meta.label}: ${statusLabel}`],
754
- selectionHint: configured ? "configured · plugin disabled" : "not configured",
755
- quickstartScore: 0
756
- };
757
- });
758
- const discoveredPluginStatuses = installedCatalogEntries.filter((entry) => !statusByChannel.has(entry.id)).map((entry) => {
759
- const configured = isChannelConfigured(params.cfg, entry.id);
760
- const pluginEnabled = params.cfg.plugins?.entries?.[entry.pluginId ?? entry.id]?.enabled !== false;
761
- const statusLabel = configured ? pluginEnabled ? "configured" : "configured (plugin disabled)" : pluginEnabled ? "installed" : "installed (plugin disabled)";
762
- return {
763
- channel: entry.id,
764
- configured,
765
- statusLines: [`${entry.meta.label}: ${statusLabel}`],
766
- selectionHint: statusLabel,
767
- quickstartScore: 0
768
- };
769
- });
770
- const catalogStatuses = installableCatalogEntries.map((entry) => ({
771
- channel: entry.id,
772
- configured: false,
773
- statusLines: [`${entry.meta.label}: install plugin to enable`],
774
- selectionHint: "plugin · install",
775
- quickstartScore: 0
776
- }));
777
- const combinedStatuses = [
778
- ...statusEntries,
779
- ...fallbackStatuses,
780
- ...discoveredPluginStatuses,
781
- ...catalogStatuses
782
- ];
783
- return {
784
- installedPlugins,
785
- catalogEntries: installableCatalogEntries,
786
- installedCatalogEntries,
787
- statusByChannel: new Map(combinedStatuses.map((entry) => [entry.channel, entry])),
788
- statusLines: combinedStatuses.flatMap((entry) => entry.statusLines)
789
- };
790
- }
791
- async function noteChannelStatus(params) {
792
- const { statusLines } = await collectChannelStatus({
793
- cfg: params.cfg,
794
- options: params.options,
795
- accountOverrides: params.accountOverrides ?? {}
796
- });
797
- if (statusLines.length > 0) await params.prompter.note(statusLines.join("\n"), "Channel status");
798
- }
799
- async function noteChannelPrimer(prompter, channels) {
800
- const channelLines = channels.map((channel) => formatChannelPrimerLine({
801
- id: channel.id,
802
- label: channel.label,
803
- selectionLabel: channel.label,
804
- docsPath: "/",
805
- blurb: channel.blurb
806
- }));
807
- await prompter.note([
808
- "DM security: default is pairing; unknown DMs get a pairing code.",
809
- `Approve with: ${formatCliCommand("moldclaw pairing approve <channel> <code>")}`,
810
- "Public DMs require dmPolicy=\"open\" + allowFrom=[\"*\"].",
811
- "Multi-user DMs: run: " + formatCliCommand("moldclaw config set session.dmScope \"per-channel-peer\"") + " (or \"per-account-channel-peer\" for multi-account channels) to isolate sessions.",
812
- `Docs: ${formatDocsLink("/channels/pairing", "channels/pairing")}`,
813
- "",
814
- ...channelLines
815
- ].join("\n"), "How channels work");
816
- }
817
- function resolveQuickstartDefault(statusByChannel) {
818
- let best = null;
819
- for (const [channel, status] of statusByChannel) {
820
- if (status.quickstartScore == null) continue;
821
- if (!best || status.quickstartScore > best.score) best = {
822
- channel,
823
- score: status.quickstartScore
824
- };
825
- }
826
- return best?.channel;
827
- }
828
- async function maybeConfigureDmPolicies(params) {
829
- const { selection, prompter, accountIdsByChannel } = params;
830
- const resolve = params.resolveAdapter ?? (() => void 0);
831
- const dmPolicies = selection.map((channel) => resolve(channel)?.dmPolicy).filter(Boolean);
832
- if (dmPolicies.length === 0) return params.cfg;
833
- if (!await prompter.confirm({
834
- message: "Configure DM access policies now? (default: pairing)",
835
- initialValue: false
836
- })) return params.cfg;
837
- let cfg = params.cfg;
838
- const selectPolicy = async (policy) => {
839
- await prompter.note([
840
- "Default: pairing (unknown DMs get a pairing code).",
841
- `Approve: ${formatCliCommand(`moldclaw pairing approve ${policy.channel} <code>`)}`,
842
- `Allowlist DMs: ${policy.policyKey}="allowlist" + ${policy.allowFromKey} entries.`,
843
- `Public DMs: ${policy.policyKey}="open" + ${policy.allowFromKey} includes "*".`,
844
- "Multi-user DMs: run: " + formatCliCommand("moldclaw config set session.dmScope \"per-channel-peer\"") + " (or \"per-account-channel-peer\" for multi-account channels) to isolate sessions.",
845
- `Docs: ${formatDocsLink("/channels/pairing", "channels/pairing")}`
846
- ].join("\n"), `${policy.label} DM access`);
847
- return await prompter.select({
848
- message: `${policy.label} DM policy`,
849
- options: [
850
- {
851
- value: "pairing",
852
- label: "Pairing (recommended)"
853
- },
854
- {
855
- value: "allowlist",
856
- label: "Allowlist (specific users only)"
857
- },
858
- {
859
- value: "open",
860
- label: "Open (public inbound DMs)"
861
- },
862
- {
863
- value: "disabled",
864
- label: "Disabled (ignore DMs)"
865
- }
866
- ]
867
- });
868
- };
869
- for (const policy of dmPolicies) {
870
- const current = policy.getCurrent(cfg);
871
- const nextPolicy = await selectPolicy(policy);
872
- if (nextPolicy !== current) cfg = policy.setPolicy(cfg, nextPolicy);
873
- if (nextPolicy === "allowlist" && policy.promptAllowFrom) cfg = await policy.promptAllowFrom({
874
- cfg,
875
- prompter,
876
- accountId: accountIdsByChannel?.get(policy.channel)
877
- });
878
- }
879
- return cfg;
880
- }
881
- async function setupChannels(cfg, runtime, prompter, options) {
882
- let next = cfg;
883
- const forceAllowFromChannels = new Set(options?.forceAllowFromChannels ?? []);
884
- const accountOverrides = { ...options?.accountIds };
885
- const scopedPluginsById = /* @__PURE__ */ new Map();
886
- const resolveWorkspaceDir = () => resolveAgentWorkspaceDir(next, resolveDefaultAgentId(next));
887
- const rememberScopedPlugin = (plugin) => {
888
- const channel = plugin.id;
889
- scopedPluginsById.set(channel, plugin);
890
- options?.onResolvedPlugin?.(channel, plugin);
891
- };
892
- const getVisibleChannelPlugin = (channel) => scopedPluginsById.get(channel) ?? getChannelSetupPlugin(channel);
893
- const listVisibleInstalledPlugins = () => {
894
- const merged = /* @__PURE__ */ new Map();
895
- for (const plugin of listChannelSetupPlugins()) merged.set(plugin.id, plugin);
896
- for (const plugin of scopedPluginsById.values()) merged.set(plugin.id, plugin);
897
- return Array.from(merged.values());
898
- };
899
- const loadScopedChannelPlugin = async (channel, pluginId) => {
900
- const existing = getVisibleChannelPlugin(channel);
901
- if (existing) return existing;
902
- const snapshot = loadChannelSetupPluginRegistrySnapshotForChannel({
903
- cfg: next,
904
- runtime,
905
- channel,
906
- ...pluginId ? { pluginId } : {},
907
- workspaceDir: resolveWorkspaceDir()
908
- });
909
- const plugin = snapshot.channels.find((entry) => entry.plugin.id === channel)?.plugin ?? snapshot.channelSetups.find((entry) => entry.plugin.id === channel)?.plugin;
910
- if (plugin) {
911
- rememberScopedPlugin(plugin);
912
- return plugin;
913
- }
914
- };
915
- const getVisibleSetupFlowAdapter = (channel) => {
916
- const scopedPlugin = scopedPluginsById.get(channel);
917
- if (scopedPlugin) return resolveChannelSetupWizardAdapterForPlugin(scopedPlugin);
918
- return resolveChannelSetupWizardAdapterForPlugin(getChannelSetupPlugin(channel));
919
- };
920
- const preloadConfiguredExternalPlugins = () => {
921
- const workspaceDir = resolveWorkspaceDir();
922
- for (const entry of listChannelPluginCatalogEntries({ workspaceDir })) {
923
- const channel = entry.id;
924
- if (getVisibleChannelPlugin(channel)) continue;
925
- if (!(next.plugins?.entries?.[entry.pluginId ?? channel]?.enabled === true) && !isChannelConfigured(next, channel)) continue;
926
- loadScopedChannelPlugin(channel, entry.pluginId);
927
- }
928
- };
929
- if (options?.whatsappAccountId?.trim()) accountOverrides.whatsapp = options.whatsappAccountId.trim();
930
- preloadConfiguredExternalPlugins();
931
- const { installedPlugins, catalogEntries, installedCatalogEntries, statusByChannel, statusLines } = await collectChannelStatus({
932
- cfg: next,
933
- options,
934
- accountOverrides,
935
- installedPlugins: listVisibleInstalledPlugins(),
936
- resolveAdapter: getVisibleSetupFlowAdapter
937
- });
938
- if (!options?.skipStatusNote && statusLines.length > 0) await prompter.note(statusLines.join("\n"), "Channel status");
939
- if (!(options?.skipConfirm ? true : await prompter.confirm({
940
- message: "Configure chat channels now?",
941
- initialValue: true
942
- }))) return cfg;
943
- const corePrimer = listChatChannels().map((meta) => ({
944
- id: meta.id,
945
- label: meta.label,
946
- blurb: meta.blurb
947
- }));
948
- const coreIds = new Set(corePrimer.map((entry) => entry.id));
949
- await noteChannelPrimer(prompter, [
950
- ...corePrimer,
951
- ...installedPlugins.filter((plugin) => !coreIds.has(plugin.id)).map((plugin) => ({
952
- id: plugin.id,
953
- label: plugin.meta.label,
954
- blurb: plugin.meta.blurb
955
- })),
956
- ...installedCatalogEntries.filter((entry) => !coreIds.has(entry.id)).map((entry) => ({
957
- id: entry.id,
958
- label: entry.meta.label,
959
- blurb: entry.meta.blurb
960
- })),
961
- ...catalogEntries.filter((entry) => !coreIds.has(entry.id)).map((entry) => ({
962
- id: entry.id,
963
- label: entry.meta.label,
964
- blurb: entry.meta.blurb
965
- }))
966
- ]);
967
- const quickstartDefault = options?.initialSelection?.[0] ?? resolveQuickstartDefault(statusByChannel);
968
- const shouldPromptAccountIds = options?.promptAccountIds === true;
969
- const accountIdsByChannel = /* @__PURE__ */ new Map();
970
- const recordAccount = (channel, accountId) => {
971
- options?.onAccountId?.(channel, accountId);
972
- getVisibleSetupFlowAdapter(channel)?.onAccountRecorded?.(accountId, options);
973
- accountIdsByChannel.set(channel, accountId);
974
- };
975
- const selection = [];
976
- const addSelection = (channel) => {
977
- if (!selection.includes(channel)) selection.push(channel);
978
- };
979
- const resolveDisabledHint = (channel) => {
980
- if (typeof next.channels?.[channel]?.enabled === "boolean") return next.channels[channel]?.enabled === false ? "disabled" : void 0;
981
- const plugin = getVisibleChannelPlugin(channel);
982
- if (!plugin) {
983
- if (next.plugins?.entries?.[channel]?.enabled === false) return "plugin disabled";
984
- if (next.plugins?.enabled === false) return "plugins disabled";
985
- return;
986
- }
987
- const accountId = resolveChannelDefaultAccountId({
988
- plugin,
989
- cfg: next
990
- });
991
- const account = plugin.config.resolveAccount(next, accountId);
992
- let enabled;
993
- if (plugin.config.isEnabled) enabled = plugin.config.isEnabled(account, next);
994
- else if (typeof account?.enabled === "boolean") enabled = account.enabled;
995
- return enabled === false ? "disabled" : void 0;
996
- };
997
- const buildSelectionOptions = (entries) => entries.map((entry) => {
998
- const status = statusByChannel.get(entry.id);
999
- const disabledHint = resolveDisabledHint(entry.id);
1000
- const hint = [status?.selectionHint, disabledHint].filter(Boolean).join(" · ") || void 0;
1001
- return {
1002
- value: entry.meta.id,
1003
- label: entry.meta.selectionLabel ?? entry.meta.label,
1004
- ...hint ? { hint } : {}
1005
- };
1006
- });
1007
- const getChannelEntries = () => {
1008
- const resolved = resolveChannelSetupEntries({
1009
- cfg: next,
1010
- installedPlugins: listVisibleInstalledPlugins(),
1011
- workspaceDir: resolveWorkspaceDir()
1012
- });
1013
- return {
1014
- entries: resolved.entries,
1015
- catalogById: resolved.installableCatalogById,
1016
- installedCatalogById: resolved.installedCatalogById
1017
- };
1018
- };
1019
- const refreshStatus = async (channel) => {
1020
- const adapter = getVisibleSetupFlowAdapter(channel);
1021
- if (!adapter) return;
1022
- const status = await adapter.getStatus({
1023
- cfg: next,
1024
- options,
1025
- accountOverrides
1026
- });
1027
- statusByChannel.set(channel, status);
1028
- };
1029
- const enableBundledPluginForSetup = async (channel) => {
1030
- if (getVisibleChannelPlugin(channel)) {
1031
- await refreshStatus(channel);
1032
- return true;
1033
- }
1034
- const result = enablePluginInConfig(next, channel);
1035
- next = result.config;
1036
- if (!result.enabled) {
1037
- await prompter.note(`Cannot enable ${channel}: ${result.reason ?? "plugin disabled"}.`, "Channel setup");
1038
- return false;
1039
- }
1040
- const plugin = await loadScopedChannelPlugin(channel);
1041
- const adapter = getVisibleSetupFlowAdapter(channel);
1042
- if (!plugin) {
1043
- if (adapter) {
1044
- await prompter.note(`${channel} plugin not available (continuing with setup). If the channel still doesn't work after setup, run \`${formatCliCommand("moldclaw plugins list")}\` and \`${formatCliCommand("moldclaw plugins enable " + channel)}\`, then restart the gateway.`, "Channel setup");
1045
- await refreshStatus(channel);
1046
- return true;
1047
- }
1048
- await prompter.note(`${channel} plugin not available.`, "Channel setup");
1049
- return false;
1050
- }
1051
- await refreshStatus(channel);
1052
- return true;
1053
- };
1054
- const applySetupResult = async (channel, result) => {
1055
- next = result.cfg;
1056
- if (result.accountId) recordAccount(channel, result.accountId);
1057
- addSelection(channel);
1058
- await refreshStatus(channel);
1059
- };
1060
- const applyCustomSetupResult = async (channel, result) => {
1061
- if (result === "skip") return false;
1062
- await applySetupResult(channel, result);
1063
- return true;
1064
- };
1065
- const configureChannel = async (channel) => {
1066
- const adapter = getVisibleSetupFlowAdapter(channel);
1067
- if (!adapter) {
1068
- await prompter.note(`${channel} does not support guided setup yet.`, "Channel setup");
1069
- return;
1070
- }
1071
- await applySetupResult(channel, await adapter.configure({
1072
- cfg: next,
1073
- runtime,
1074
- prompter,
1075
- options,
1076
- accountOverrides,
1077
- shouldPromptAccountIds,
1078
- forceAllowFrom: forceAllowFromChannels.has(channel)
1079
- }));
1080
- };
1081
- const handleConfiguredChannel = async (channel, label) => {
1082
- const plugin = getVisibleChannelPlugin(channel);
1083
- const adapter = getVisibleSetupFlowAdapter(channel);
1084
- if (adapter?.configureWhenConfigured) {
1085
- if (!await applyCustomSetupResult(channel, await adapter.configureWhenConfigured({
1086
- cfg: next,
1087
- runtime,
1088
- prompter,
1089
- options,
1090
- accountOverrides,
1091
- shouldPromptAccountIds,
1092
- forceAllowFrom: forceAllowFromChannels.has(channel),
1093
- configured: true,
1094
- label
1095
- }))) return;
1096
- return;
1097
- }
1098
- const supportsDisable = Boolean(options?.allowDisable && (plugin?.config.setAccountEnabled || adapter?.disable));
1099
- const supportsDelete = Boolean(options?.allowDisable && plugin?.config.deleteAccount);
1100
- const action = await promptConfiguredAction({
1101
- prompter,
1102
- label,
1103
- supportsDisable,
1104
- supportsDelete
1105
- });
1106
- if (action === "skip") return;
1107
- if (action === "update") {
1108
- await configureChannel(channel);
1109
- return;
1110
- }
1111
- if (!options?.allowDisable) return;
1112
- if (action === "delete" && !supportsDelete) {
1113
- await prompter.note(`${label} does not support deleting config entries.`, "Remove channel");
1114
- return;
1115
- }
1116
- const resolvedAccountId = normalizeAccountId((action === "delete" ? Boolean(plugin?.config.deleteAccount) : Boolean(plugin?.config.setAccountEnabled)) ? await promptRemovalAccountId({
1117
- cfg: next,
1118
- prompter,
1119
- label,
1120
- channel,
1121
- plugin
1122
- }) : "default") ?? (plugin ? resolveChannelDefaultAccountId({
1123
- plugin,
1124
- cfg: next
1125
- }) : "default");
1126
- const accountLabel = formatAccountLabel(resolvedAccountId);
1127
- if (action === "delete") {
1128
- if (!await prompter.confirm({
1129
- message: `Delete ${label} account "${accountLabel}"?`,
1130
- initialValue: false
1131
- })) return;
1132
- if (plugin?.config.deleteAccount) next = plugin.config.deleteAccount({
1133
- cfg: next,
1134
- accountId: resolvedAccountId
1135
- });
1136
- await refreshStatus(channel);
1137
- return;
1138
- }
1139
- if (plugin?.config.setAccountEnabled) next = plugin.config.setAccountEnabled({
1140
- cfg: next,
1141
- accountId: resolvedAccountId,
1142
- enabled: false
1143
- });
1144
- else if (adapter?.disable) next = adapter.disable(next);
1145
- await refreshStatus(channel);
1146
- };
1147
- const handleChannelChoice = async (channel) => {
1148
- const { catalogById, installedCatalogById } = getChannelEntries();
1149
- const catalogEntry = catalogById.get(channel);
1150
- const installedCatalogEntry = installedCatalogById.get(channel);
1151
- if (catalogEntry) {
1152
- const workspaceDir = resolveWorkspaceDir();
1153
- const result = await ensureChannelSetupPluginInstalled({
1154
- cfg: next,
1155
- entry: catalogEntry,
1156
- prompter,
1157
- runtime,
1158
- workspaceDir
1159
- });
1160
- next = result.cfg;
1161
- if (!result.installed) return;
1162
- await loadScopedChannelPlugin(channel, result.pluginId ?? catalogEntry.pluginId);
1163
- await refreshStatus(channel);
1164
- } else if (installedCatalogEntry) {
1165
- if (!await loadScopedChannelPlugin(channel, installedCatalogEntry.pluginId)) {
1166
- await prompter.note(`${channel} plugin not available.`, "Channel setup");
1167
- return;
1168
- }
1169
- await refreshStatus(channel);
1170
- } else if (!await enableBundledPluginForSetup(channel)) return;
1171
- const plugin = getVisibleChannelPlugin(channel);
1172
- const adapter = getVisibleSetupFlowAdapter(channel);
1173
- const label = plugin?.meta.label ?? catalogEntry?.meta.label ?? channel;
1174
- const configured = statusByChannel.get(channel)?.configured ?? false;
1175
- if (adapter?.configureInteractive) {
1176
- if (!await applyCustomSetupResult(channel, await adapter.configureInteractive({
1177
- cfg: next,
1178
- runtime,
1179
- prompter,
1180
- options,
1181
- accountOverrides,
1182
- shouldPromptAccountIds,
1183
- forceAllowFrom: forceAllowFromChannels.has(channel),
1184
- configured,
1185
- label
1186
- }))) return;
1187
- return;
1188
- }
1189
- if (configured) {
1190
- await handleConfiguredChannel(channel, label);
1191
- return;
1192
- }
1193
- await configureChannel(channel);
1194
- };
1195
- if (options?.quickstartDefaults) {
1196
- const { entries } = getChannelEntries();
1197
- const choice = await prompter.select({
1198
- message: "Select channel (QuickStart)",
1199
- options: [...buildSelectionOptions(entries), {
1200
- value: "__skip__",
1201
- label: "Skip for now",
1202
- hint: `You can add channels later via \`${formatCliCommand("moldclaw channels add")}\``
1203
- }],
1204
- initialValue: quickstartDefault
1205
- });
1206
- if (choice !== "__skip__") await handleChannelChoice(choice);
1207
- } else {
1208
- const doneValue = "__done__";
1209
- const initialValue = options?.initialSelection?.[0] ?? quickstartDefault;
1210
- while (true) {
1211
- const { entries } = getChannelEntries();
1212
- const choice = await prompter.select({
1213
- message: "Select a channel",
1214
- options: [...buildSelectionOptions(entries), {
1215
- value: doneValue,
1216
- label: "Finished",
1217
- hint: selection.length > 0 ? "Done" : "Skip for now"
1218
- }],
1219
- initialValue
1220
- });
1221
- if (choice === doneValue) break;
1222
- await handleChannelChoice(choice);
1223
- }
1224
- }
1225
- options?.onSelection?.(selection);
1226
- const selectionNotes = /* @__PURE__ */ new Map();
1227
- const { entries: selectionEntries } = getChannelEntries();
1228
- for (const entry of selectionEntries) selectionNotes.set(entry.id, formatChannelSelectionLine(entry.meta, formatDocsLink));
1229
- const selectedLines = selection.map((channel) => selectionNotes.get(channel)).filter((line) => Boolean(line));
1230
- if (selectedLines.length > 0) await prompter.note(selectedLines.join("\n"), "Selected channels");
1231
- if (!options?.skipDmPolicyPrompt) next = await maybeConfigureDmPolicies({
1232
- cfg: next,
1233
- selection,
1234
- prompter,
1235
- accountIdsByChannel,
1236
- resolveAdapter: getVisibleSetupFlowAdapter
1237
- });
1238
- return next;
1239
- }
1240
- //#endregion
1241
- export { setupChannels as n, noteChannelStatus as t };