squidclaw 3.3.2 → 3.3.6

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 (222) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/canvas-host/a2ui/a2ui.bundle.js +1 -1
  3. package/dist/{command-registry-DU59Zys9.js → command-registry-D-1yrjO5.js} +4 -4
  4. package/dist/{completion-cli-B58zTxLB.js → completion-cli-DDG6rQHB.js} +2 -2
  5. package/dist/{completion-cli-BLY0f3DS.js → completion-cli-YquOT8ke.js} +1 -1
  6. package/dist/control-ui/assets/{index-BqxuPQOl.js → index-Bb5MB8jH.js} +358 -358
  7. package/dist/control-ui/assets/index-Bb5MB8jH.js.map +1 -0
  8. package/dist/control-ui/index.html +1 -1
  9. package/dist/daemon-cli.js +6 -6
  10. package/dist/{doctor-completion-DRCOGhwS.js → doctor-completion-B63lREru.js} +1 -1
  11. package/dist/{doctor-completion-kjDYgxZk.js → doctor-completion-CoKUBmAB.js} +1 -1
  12. package/dist/entry.js +2 -2
  13. package/dist/{gateway-cli-DvWNtJxy.js → gateway-cli-BP1USKKw.js} +1 -1
  14. package/dist/{gateway-cli-lvhI_G2p.js → gateway-cli-CIhENRqY.js} +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/{onboard-BP7rTtCO.js → onboard-BYwFqDe-.js} +1 -1
  17. package/dist/{onboard-BwVAkxW0.js → onboard-gmbrf0mc.js} +1 -1
  18. package/dist/{onboarding-LbGi6oDz.js → onboarding-C7eyvBep.js} +1 -1
  19. package/dist/{onboarding-D_ImwR9D.js → onboarding-OrcdwciM.js} +1 -1
  20. package/dist/{onboarding.finalize-ClTc_ghC.js → onboarding.finalize-Bf3EExjS.js} +56 -13
  21. package/dist/{onboarding.finalize-CWcaxeIO.js → onboarding.finalize-DZBXbwYe.js} +55 -12
  22. package/dist/plugin-sdk/accounts-B9RVtSwn.js +35 -0
  23. package/dist/plugin-sdk/{accounts-BhCAa-05.js → accounts-BLOLIF6Q.js} +2 -2
  24. package/dist/plugin-sdk/{accounts-DKXGC2Vu.js → accounts-BvzvDHNx.js} +3 -3
  25. package/dist/plugin-sdk/{accounts-BChIl5as.js → accounts-ByCKM_Y3.js} +2 -2
  26. package/dist/plugin-sdk/accounts-Cnpikxly.js +288 -0
  27. package/dist/plugin-sdk/accounts-ZkT4ovw_.js +46 -0
  28. package/dist/plugin-sdk/{active-listener-TTbK9PGk.js → active-listener-CKD9GljM.js} +2 -2
  29. package/dist/plugin-sdk/active-listener-Ccj2fSCa.js +50 -0
  30. package/dist/plugin-sdk/{api-key-rotation-BqhYVBBK.js → api-key-rotation--boE2y8I.js} +2 -2
  31. package/dist/plugin-sdk/api-key-rotation-0Xm0okk5.js +181 -0
  32. package/dist/plugin-sdk/{audio-preflight-DAf0ptAM.js → audio-preflight-B_pcDw8d.js} +26 -26
  33. package/dist/plugin-sdk/audio-preflight-DQZ2WSG4.js +69 -0
  34. package/dist/plugin-sdk/audio-transcription-runner-C4aP5aYG.js +2176 -0
  35. package/dist/plugin-sdk/{audio-transcription-runner-CBASOlbc.js → audio-transcription-runner-u6tijzUS.js} +11 -11
  36. package/dist/plugin-sdk/{audit-membership-runtime-Xl20kCBe.js → audit-membership-runtime-DHQDvH4u.js} +2 -2
  37. package/dist/plugin-sdk/audit-membership-runtime-DPTwvWpd.js +58 -0
  38. package/dist/plugin-sdk/{channel-activity-95JVLzNY.js → channel-activity-BVUdxSNs.js} +3 -3
  39. package/dist/plugin-sdk/channel-activity-DAX5uVAX.js +94 -0
  40. package/dist/plugin-sdk/{channel-web-DCkC6Ydu.js → channel-web-BX2s-JXF.js} +18 -18
  41. package/dist/plugin-sdk/channel-web-CgS5ek7s.js +2256 -0
  42. package/dist/plugin-sdk/{chrome-BlXpNOQu.js → chrome-6EkqVcyR.js} +6 -6
  43. package/dist/plugin-sdk/chrome-BHzykCQ9.js +2415 -0
  44. package/dist/plugin-sdk/{commands-registry-C9y_w3eW.js → commands-registry-CDHo6SSs.js} +4 -4
  45. package/dist/plugin-sdk/commands-registry-CRVdcP1W.js +1125 -0
  46. package/dist/plugin-sdk/{common-CEwMUbms.js → common-Emz6EPQM.js} +2 -2
  47. package/dist/plugin-sdk/compat.js +50 -50
  48. package/dist/plugin-sdk/{config-sMifxgre.js → config-CMjn_DSB.js} +7 -7
  49. package/dist/plugin-sdk/config-DMdJidZc.js +17912 -0
  50. package/dist/plugin-sdk/{deliver-2zt3NeFA.js → deliver-Cz6GluMN.js} +10 -10
  51. package/dist/plugin-sdk/deliver-DMb_cOF7.js +1694 -0
  52. package/dist/plugin-sdk/deliver-runtime-CjCJkoFM.js +32 -0
  53. package/dist/plugin-sdk/deliver-runtime-D0qfBG05.js +32 -0
  54. package/dist/plugin-sdk/deps-send-discord.runtime-9igTHMx2.js +23 -0
  55. package/dist/plugin-sdk/deps-send-discord.runtime-C4AEwjGl.js +23 -0
  56. package/dist/plugin-sdk/deps-send-imessage.runtime-BFpdfthT.js +22 -0
  57. package/dist/plugin-sdk/deps-send-imessage.runtime-DCdEe-_E.js +22 -0
  58. package/dist/plugin-sdk/deps-send-signal.runtime-BNO6SPmR.js +21 -0
  59. package/dist/plugin-sdk/deps-send-signal.runtime-BqB_Ilh-.js +21 -0
  60. package/dist/plugin-sdk/deps-send-slack.runtime-BChVBURL.js +19 -0
  61. package/dist/plugin-sdk/deps-send-slack.runtime-o7IR7Ynh.js +19 -0
  62. package/dist/plugin-sdk/deps-send-telegram.runtime-7Xdhax8B.js +24 -0
  63. package/dist/plugin-sdk/deps-send-telegram.runtime-DyCorUw2.js +24 -0
  64. package/dist/plugin-sdk/deps-send-whatsapp.runtime-D6gMTFom.js +57 -0
  65. package/dist/plugin-sdk/deps-send-whatsapp.runtime-DoOYrpKa.js +57 -0
  66. package/dist/plugin-sdk/diagnostic-BidLPPBm.js +319 -0
  67. package/dist/plugin-sdk/{diagnostic-CU_mni6m.js → diagnostic-DhO2TqL_.js} +2 -2
  68. package/dist/plugin-sdk/{errors-CgRPdp3o.js → errors-9oVz7reJ.js} +1 -1
  69. package/dist/plugin-sdk/errors-s9jrwzSl.js +54 -0
  70. package/dist/plugin-sdk/fetch-guard-CEd4HUIR.js +156 -0
  71. package/dist/plugin-sdk/{fetch-guard-BxMLJbqt.js → fetch-guard-CGQ35-A_.js} +2 -2
  72. package/dist/plugin-sdk/{fs-safe-5aQcM_qM.js → fs-safe-B26UxJny.js} +3 -3
  73. package/dist/plugin-sdk/fs-safe-CZ2NvCjz.js +352 -0
  74. package/dist/plugin-sdk/image-BKaDODzM.js +2310 -0
  75. package/dist/plugin-sdk/{image-BJXV9IMV.js → image-DPgEp54d.js} +6 -6
  76. package/dist/plugin-sdk/{image-ops-DovJMvdf.js → image-ops-CbKrfi-N.js} +2 -2
  77. package/dist/plugin-sdk/image-ops-D0YKZqPy.js +584 -0
  78. package/dist/plugin-sdk/image-runtime-DN6PHT8G.js +25 -0
  79. package/dist/plugin-sdk/image-runtime-DxJgD-YS.js +25 -0
  80. package/dist/plugin-sdk/{ir-DE2ewdq5.js → ir-4JdLS2Hz.js} +7 -7
  81. package/dist/plugin-sdk/ir-D9fxXkgD.js +1296 -0
  82. package/dist/plugin-sdk/local-roots-HL9eBLUg.js +186 -0
  83. package/dist/plugin-sdk/{local-roots-CIwDgpY2.js → local-roots-T6lXDGzr.js} +4 -4
  84. package/dist/plugin-sdk/{logger-DIb2cGHp.js → logger-Bg4vIUJn.js} +2 -2
  85. package/dist/plugin-sdk/logger-D0ST0Irn.js +1163 -0
  86. package/dist/plugin-sdk/{login-CLIcsAVy.js → login-BNCjks0C.js} +4 -4
  87. package/dist/plugin-sdk/login-CUdm5Ct-.js +57 -0
  88. package/dist/plugin-sdk/login-qr-34QcLRte.js +320 -0
  89. package/dist/plugin-sdk/{login-qr-BlxjA0vQ.js → login-qr-CTjNgxhl.js} +5 -5
  90. package/dist/plugin-sdk/manager-DZ9Hn0Fe.js +3917 -0
  91. package/dist/plugin-sdk/{manager-CpAGPHeX.js → manager-D__CoDGL.js} +8 -8
  92. package/dist/plugin-sdk/manager-runtime-B9aBGLrF.js +15 -0
  93. package/dist/plugin-sdk/manager-runtime-DMEBebYo.js +15 -0
  94. package/dist/plugin-sdk/mattermost.js +3 -3
  95. package/dist/plugin-sdk/{outbound-DDpRevO_.js → outbound-DTQ-9Cjw.js} +5 -5
  96. package/dist/plugin-sdk/outbound-DTndjh8O.js +212 -0
  97. package/dist/plugin-sdk/outbound-attachment-BNMQOIcP.js +19 -0
  98. package/dist/plugin-sdk/{outbound-attachment-CVavq5II.js → outbound-attachment-CdHX9v0q.js} +2 -2
  99. package/dist/plugin-sdk/{path-alias-guards-BfpU4lAT.js → path-alias-guards-DSCFtpsd.js} +1 -1
  100. package/dist/plugin-sdk/path-alias-guards-DUn7Q6iW.js +43 -0
  101. package/dist/plugin-sdk/paths-6WIn8_si.js +166 -0
  102. package/dist/plugin-sdk/{paths-CK3lTJYw.js → paths-BQHqKGA8.js} +1 -1
  103. package/dist/plugin-sdk/{pi-embedded-helpers-Cb_h9zSJ.js → pi-embedded-helpers-B7nmCbf7.js} +16 -16
  104. package/dist/plugin-sdk/pi-embedded-helpers-BMA7JWLb.js +9627 -0
  105. package/dist/plugin-sdk/pi-model-discovery-B6gpdlWb.js +134 -0
  106. package/dist/plugin-sdk/{pi-model-discovery-B3B3R7L9.js → pi-model-discovery-DyDwYiK3.js} +1 -1
  107. package/dist/plugin-sdk/pi-model-discovery-runtime-CN6ZaL0W.js +8 -0
  108. package/dist/plugin-sdk/pi-model-discovery-runtime-Q6toTOMZ.js +8 -0
  109. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-CP4hHLJk.js +354 -0
  110. package/dist/plugin-sdk/{pi-tools.before-tool-call.runtime-DivpBAM0.js → pi-tools.before-tool-call.runtime-D_f6TDo7.js} +4 -4
  111. package/dist/plugin-sdk/{plugins-BlTrm4bw.js → plugins-BSPvol4w.js} +4 -4
  112. package/dist/plugin-sdk/plugins-CWIlxjXW.js +864 -0
  113. package/dist/plugin-sdk/{proxy-env-Cdh-OQYk.js → proxy-env-D-iVYTBk.js} +1 -1
  114. package/dist/plugin-sdk/{proxy-fetch-Dt5BedH8.js → proxy-fetch-Cf3IUSDw.js} +1 -1
  115. package/dist/plugin-sdk/proxy-fetch-tPMv_1eB.js +38 -0
  116. package/dist/plugin-sdk/{pw-ai-DEDRpMlY.js → pw-ai-BO445UDA.js} +9 -9
  117. package/dist/plugin-sdk/pw-ai-BSMHQrVM.js +1938 -0
  118. package/dist/plugin-sdk/{qmd-manager-Ct9rtJjd.js → qmd-manager-81ezWnIN.js} +7 -7
  119. package/dist/plugin-sdk/qmd-manager-DnMoZBC7.js +1448 -0
  120. package/dist/plugin-sdk/{query-expansion-OdwWuN1S.js → query-expansion-BCOK4OTO.js} +5 -5
  121. package/dist/plugin-sdk/query-expansion-DxTmIU4K.js +1011 -0
  122. package/dist/plugin-sdk/{redact-9WsNyb7S.js → redact-Bns9Du30.js} +1 -1
  123. package/dist/plugin-sdk/redact-DfACyt0X.js +319 -0
  124. package/dist/plugin-sdk/reply-C-WT0k-v.js +98763 -0
  125. package/dist/plugin-sdk/{reply-wZhosbPd.js → reply-DJ3rbbnv.js} +73 -73
  126. package/dist/plugin-sdk/resolve-outbound-target-C6GLRc_O.js +40 -0
  127. package/dist/plugin-sdk/{resolve-outbound-target-BJmCIkW_.js → resolve-outbound-target-DtQd8TzZ.js} +2 -2
  128. package/dist/plugin-sdk/run-with-concurrency-Baa7LYZD.js +2023 -0
  129. package/dist/plugin-sdk/{run-with-concurrency-EUEKeAa8.js → run-with-concurrency-CYcPpb5E.js} +1 -1
  130. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-CUr_hlGk.js +10 -0
  131. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-ai8hcGi_.js +10 -0
  132. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-ByDLfLF3.js +19 -0
  133. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-BzvoaI1G.js +19 -0
  134. package/dist/plugin-sdk/send-7do64QqA.js +2587 -0
  135. package/dist/plugin-sdk/{send-Drs4JqVD.js → send-B9GVkvTk.js} +5 -5
  136. package/dist/plugin-sdk/{send-BMWyVUhm.js → send-BPEn9L0o.js} +13 -13
  137. package/dist/plugin-sdk/send-Bjh-MMdN.js +503 -0
  138. package/dist/plugin-sdk/send-C9jI56cY.js +3135 -0
  139. package/dist/plugin-sdk/{send-0C4KdD-T.js → send-CGjI0pJn.js} +7 -7
  140. package/dist/plugin-sdk/send-CTsZjmvQ.js +540 -0
  141. package/dist/plugin-sdk/{send-oo6mQbab.js → send-CZ6HDwDu.js} +8 -8
  142. package/dist/plugin-sdk/{send-BGWGV_mz.js → send-D6nUI0S3.js} +6 -6
  143. package/dist/plugin-sdk/send-DiuYhmpi.js +414 -0
  144. package/dist/plugin-sdk/{session-CXVARKFK.js → session-Bwjlseuf.js} +3 -3
  145. package/dist/plugin-sdk/session-CiEv9qvh.js +169 -0
  146. package/dist/plugin-sdk/signal.js +2 -2
  147. package/dist/plugin-sdk/{skill-commands-CoqGFLfM.js → skill-commands-BpB2Oe8e.js} +4 -4
  148. package/dist/plugin-sdk/skill-commands-Cuzs_Puw.js +342 -0
  149. package/dist/plugin-sdk/{skills-di-5uS9y.js → skills-CaQpr1kx.js} +6 -6
  150. package/dist/plugin-sdk/skills-RHzhTtJf.js +1428 -0
  151. package/dist/plugin-sdk/slash-commands.runtime-BH06o3dH.js +13 -0
  152. package/dist/plugin-sdk/slash-commands.runtime-Dqev3QWp.js +13 -0
  153. package/dist/plugin-sdk/slash-dispatch.runtime-BotYesgY.js +52 -0
  154. package/dist/plugin-sdk/slash-dispatch.runtime-C_reWfLU.js +52 -0
  155. package/dist/plugin-sdk/slash-skill-commands.runtime-Cl5Y6y_v.js +16 -0
  156. package/dist/plugin-sdk/slash-skill-commands.runtime-CzPvxiUD.js +16 -0
  157. package/dist/plugin-sdk/ssrf-dGOzgEI_.js +202 -0
  158. package/dist/plugin-sdk/store-DQ2KuNGv.js +81 -0
  159. package/dist/plugin-sdk/{store-Dn_E3uaN.js → store-K6C7eOpg.js} +2 -2
  160. package/dist/plugin-sdk/subagent-registry-runtime-BbcgUYOO.js +52 -0
  161. package/dist/plugin-sdk/subagent-registry-runtime-Dhtf2h8u.js +52 -0
  162. package/dist/plugin-sdk/tables-B3jPS9G8.js +55 -0
  163. package/dist/plugin-sdk/{tables-_e9wMygc.js → tables-CeWt6UjS.js} +1 -1
  164. package/dist/plugin-sdk/target-errors-vzf_mLjC.js +195 -0
  165. package/dist/plugin-sdk/thinking-R15Mehif.js +1206 -0
  166. package/dist/plugin-sdk/{thinking-Cih_nxDY.js → thinking-gpcjIDQZ.js} +7 -7
  167. package/dist/plugin-sdk/{tokens-CLE20fRI.js → tokens-C-B2SvJW.js} +1 -1
  168. package/dist/plugin-sdk/tokens-DAL_5WHL.js +52 -0
  169. package/dist/plugin-sdk/{tool-images-D6a1Ua4p.js → tool-images-9Hn0F1o_.js} +2 -2
  170. package/dist/plugin-sdk/tool-images-l3TE_qXt.js +274 -0
  171. package/dist/plugin-sdk/web-C4irM2fl.js +56 -0
  172. package/dist/plugin-sdk/web-DZ7nBzZy.js +56 -0
  173. package/dist/plugin-sdk/{whatsapp-actions-UAnHjKbE.js → whatsapp-actions-CbzdjX4B.js} +17 -17
  174. package/dist/plugin-sdk/whatsapp-actions-DZHLwaea.js +80 -0
  175. package/dist/plugin-sdk/whatsapp.js +50 -50
  176. package/dist/plugin-sdk/zalo.js +2 -2
  177. package/dist/{program-B5Vn_UD_.js → program-D5HYdN0q.js} +2 -2
  178. package/dist/{program-context-Cc5-MG37.js → program-context-CWU-LWnL.js} +6 -6
  179. package/dist/{prompt-select-styled-DTnRirU4.js → prompt-select-styled-C_C2Ae8a.js} +1 -1
  180. package/dist/{prompt-select-styled-BmJHQFIe.js → prompt-select-styled-CjkK2AWX.js} +1 -1
  181. package/dist/{register.maintenance-Di-_iCcy.js → register.maintenance-BnT8sF7e.js} +4 -4
  182. package/dist/{register.maintenance-dpQRuXYm.js → register.maintenance-CVWvM_w8.js} +5 -5
  183. package/dist/{register.onboard-D8V8BiRf.js → register.onboard-B68iwPcU.js} +2 -2
  184. package/dist/{register.onboard-CI1dr2mE.js → register.onboard-Bx2xxYE0.js} +2 -2
  185. package/dist/{register.setup-Dsl5n4Uf.js → register.setup-BgRFFdoH.js} +2 -2
  186. package/dist/{register.setup-CuD_ucSh.js → register.setup-DkztcYGa.js} +2 -2
  187. package/dist/{register.subclis-C4twva8y.js → register.subclis-Bb6WLUhM.js} +3 -3
  188. package/dist/{run-main-6tdntESl.js → run-main-CApmG6CS.js} +3 -3
  189. package/dist/{update-cli-XGRmAcuW.js → update-cli-DoKsKvCz.js} +4 -4
  190. package/dist/{update-cli-CKvgxhEz.js → update-cli-VQSBFHlu.js} +5 -5
  191. package/extensions/acpx/node_modules/.bin/acpx +2 -2
  192. package/extensions/diffs/node_modules/.bin/playwright-core +2 -2
  193. package/extensions/googlechat/node_modules/.bin/squidclaw +4 -4
  194. package/extensions/matrix/node_modules/.bin/markdown-it +2 -2
  195. package/extensions/memory-core/node_modules/.bin/squidclaw +4 -4
  196. package/extensions/memory-lancedb/node_modules/.bin/openai +2 -2
  197. package/extensions/tlon/node_modules/.bin/tlon +2 -2
  198. package/package.json +1 -1
  199. package/dist/control-ui/assets/index-BqxuPQOl.js.map +0 -1
  200. package/dist/plugin-sdk/deliver-runtime-Dx0Sg-lg.js +0 -32
  201. package/dist/plugin-sdk/deps-send-discord.runtime-bKwjojX0.js +0 -23
  202. package/dist/plugin-sdk/deps-send-imessage.runtime-DcxfdKGE.js +0 -22
  203. package/dist/plugin-sdk/deps-send-signal.runtime-79rGat6V.js +0 -21
  204. package/dist/plugin-sdk/deps-send-slack.runtime-DfMO701H.js +0 -19
  205. package/dist/plugin-sdk/deps-send-telegram.runtime-Bnjwm6SU.js +0 -24
  206. package/dist/plugin-sdk/deps-send-whatsapp.runtime-CS50_Jgh.js +0 -57
  207. package/dist/plugin-sdk/image-runtime-f-WKB3Bx.js +0 -25
  208. package/dist/plugin-sdk/manager-runtime-DAKJEbuY.js +0 -15
  209. package/dist/plugin-sdk/pi-model-discovery-runtime-Bm4bHwpO.js +0 -8
  210. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-D74eZbH7.js +0 -10
  211. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-BidSddX5.js +0 -19
  212. package/dist/plugin-sdk/slash-commands.runtime-CseiMacz.js +0 -13
  213. package/dist/plugin-sdk/slash-dispatch.runtime-88gX6CLk.js +0 -52
  214. package/dist/plugin-sdk/slash-skill-commands.runtime-BNrQNIZ7.js +0 -16
  215. package/dist/plugin-sdk/subagent-registry-runtime-Cv8RHTjT.js +0 -52
  216. package/dist/plugin-sdk/web-C4tTN9Xu.js +0 -56
  217. package/docs/reference/templates/IDENTITY.md +0 -14
  218. package/docs/reference/templates/USER.md +0 -9
  219. package/extensions/diagnostics-otel/node_modules/.bin/acorn +0 -21
  220. package/extensions/memory-lancedb/node_modules/.bin/arrow2csv +0 -21
  221. package/extensions/nostr/node_modules/.bin/tsc +0 -21
  222. package/extensions/nostr/node_modules/.bin/tsserver +0 -21
@@ -8,7 +8,7 @@
8
8
  <link rel="icon" type="image/svg+xml" href="./favicon.svg" />
9
9
  <link rel="icon" type="image/png" sizes="32x32" href="./favicon-32.png" />
10
10
  <link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png" />
11
- <script type="module" crossorigin src="./assets/index-BqxuPQOl.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-Bb5MB8jH.js"></script>
12
12
  <link rel="stylesheet" crossorigin href="./assets/index-E0j6Tkrc.css">
13
13
  </head>
14
14
  <body>
@@ -3,7 +3,7 @@ import fs from "node:fs";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
5
  import { Logger } from "tslog";
6
- import json5 from "json5";
6
+ import JSON5 from "json5";
7
7
  import chalk, { Chalk } from "chalk";
8
8
  import fs$1 from "node:fs/promises";
9
9
  import { execFile, execFileSync, spawn } from "node:child_process";
@@ -407,7 +407,7 @@ function readLoggingConfig() {
407
407
  try {
408
408
  if (!fs.existsSync(configPath)) return;
409
409
  const raw = fs.readFileSync(configPath, "utf-8");
410
- const logging = json5.parse(raw)?.logging;
410
+ const logging = JSON5.parse(raw)?.logging;
411
411
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
412
412
  return logging;
413
413
  } catch {
@@ -5582,7 +5582,7 @@ const defaultResolver = {
5582
5582
  resolvedPath,
5583
5583
  rootRealDir
5584
5584
  }),
5585
- parseJson: (raw) => json5.parse(raw)
5585
+ parseJson: (raw) => JSON5.parse(raw)
5586
5586
  };
5587
5587
  /**
5588
5588
  * Resolves all $include directives in a parsed config object.
@@ -13076,7 +13076,7 @@ function resolveConfigPathForDeps(deps) {
13076
13076
  function normalizeDeps(overrides = {}) {
13077
13077
  return {
13078
13078
  fs: overrides.fs ?? fs,
13079
- json5: overrides.json5 ?? json5,
13079
+ json5: overrides.json5 ?? JSON5,
13080
13080
  env: overrides.env ?? process.env,
13081
13081
  homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
13082
13082
  configPath: overrides.configPath ?? "",
@@ -13087,11 +13087,11 @@ function maybeLoadDotEnvForConfig(env) {
13087
13087
  if (env !== process.env) return;
13088
13088
  loadDotEnv({ quiet: true });
13089
13089
  }
13090
- function parseConfigJson5(raw, json5$1 = json5) {
13090
+ function parseConfigJson5(raw, json5 = JSON5) {
13091
13091
  try {
13092
13092
  return {
13093
13093
  ok: true,
13094
- parsed: json5$1.parse(raw)
13094
+ parsed: json5.parse(raw)
13095
13095
  };
13096
13096
  } catch (err) {
13097
13097
  return {
@@ -1,7 +1,7 @@
1
1
  import { r as resolveCliName } from "./command-format-D8-lYArk.js";
2
2
  import { t as resolveSquidClawPackageRoot } from "./squidclaw-root-BQfLymzj.js";
3
3
  import { t as note } from "./note-IoQo8Ol0.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-B58zTxLB.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DDG6rQHB.js";
5
5
  import { spawnSync } from "node:child_process";
6
6
  import path from "node:path";
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { t as resolveSquidClawPackageRoot } from "./squidclaw-root-CnE19yKj.js";
2
2
  import { r as resolveCliName } from "./command-format-z1t1m-Kx.js";
3
3
  import { t as note } from "./note-CBt9wSWa.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BLY0f3DS.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-YquOT8ke.js";
5
5
  import path from "node:path";
6
6
  import { spawnSync } from "node:child_process";
7
7
 
package/dist/entry.js CHANGED
@@ -370,7 +370,7 @@ if (!isMainModule({
370
370
  }
371
371
  function tryHandleRootHelpFastPath(argv) {
372
372
  if (!isRootHelpInvocation(argv)) return false;
373
- import("./program-B5Vn_UD_.js").then(({ buildProgram }) => {
373
+ import("./program-D5HYdN0q.js").then(({ buildProgram }) => {
374
374
  buildProgram().outputHelp();
375
375
  }).catch((error) => {
376
376
  console.error("[squidclaw] Failed to display help:", error instanceof Error ? error.stack ?? error.message : error);
@@ -389,7 +389,7 @@ if (!isMainModule({
389
389
  applyCliProfileEnv({ profile: parsed.profile });
390
390
  process$1.argv = parsed.argv;
391
391
  }
392
- if (!tryHandleRootVersionFastPath(process$1.argv) && !tryHandleRootHelpFastPath(process$1.argv)) import("./run-main-6tdntESl.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
392
+ if (!tryHandleRootVersionFastPath(process$1.argv) && !tryHandleRootHelpFastPath(process$1.argv)) import("./run-main-CApmG6CS.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
393
393
  console.error("[squidclaw] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
394
394
  process$1.exitCode = 1;
395
395
  });
@@ -153,7 +153,7 @@ import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t
153
153
  import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-CQ6rCiGI.js";
154
154
  import { a as resolveCommandSecretsFromActiveRuntimeSnapshot, i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-_Vk5eISV.js";
155
155
  import "./onboarding.secret-input-h4sXfwga.js";
156
- import { t as runOnboardingWizard } from "./onboarding-D_ImwR9D.js";
156
+ import { t as runOnboardingWizard } from "./onboarding-OrcdwciM.js";
157
157
  import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-BZeUZhYN.js";
158
158
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-BDpWdYq5.js";
159
159
  import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy--2bsadiu.js";
@@ -152,7 +152,7 @@ import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t
152
152
  import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-e4ysObLI.js";
153
153
  import { a as resolveCommandSecretsFromActiveRuntimeSnapshot, i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-CHbuDvUV.js";
154
154
  import "./onboarding.secret-input-CW9tPVNP.js";
155
- import { t as runOnboardingWizard } from "./onboarding-LbGi6oDz.js";
155
+ import { t as runOnboardingWizard } from "./onboarding-C7eyvBep.js";
156
156
  import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-BH6u2jeD.js";
157
157
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-CDJE1jBL.js";
158
158
  import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-CPjB6YQt.js";
package/dist/index.js CHANGED
@@ -119,7 +119,7 @@ import { t as isMainModule } from "./is-main-D5LnS2LP.js";
119
119
  import { t as ensureSquidClawCliOnPath } from "./path-env-kSxA2INU.js";
120
120
  import { t as assertSupportedRuntime } from "./runtime-guard-pMNmDPEU.js";
121
121
  import "./ports-CXjhFS7T.js";
122
- import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-Cc5-MG37.js";
122
+ import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-CWU-LWnL.js";
123
123
  import "./plugin-registry-FXXByNP3.js";
124
124
  import { n as resolveCliChannelOptions } from "./channel-options-DiLSWw11.js";
125
125
  import process$1 from "node:process";
@@ -8,7 +8,7 @@ import { t as assertSupportedRuntime } from "./runtime-guard-pMNmDPEU.js";
8
8
  import { t as WizardCancelledError } from "./prompts-knTF_LVq.js";
9
9
  import { t as createClackPrompter } from "./clack-prompter-Bx0vssUh.js";
10
10
  import { t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-Di8BSZyD.js";
11
- import { t as runOnboardingWizard } from "./onboarding-LbGi6oDz.js";
11
+ import { t as runOnboardingWizard } from "./onboarding-C7eyvBep.js";
12
12
  import { n as logConfigUpdated } from "./logging-AGpu_2Pc.js";
13
13
  import { i as normalizeLegacyOnboardAuthChoice, r as isDeprecatedAuthChoice, t as ONBOARD_PROVIDER_AUTH_FLAGS } from "./onboard-provider-auth-flags-BpV7mEJN.js";
14
14
  import { t as applyOnboardingLocalWorkspaceConfig } from "./onboard-config-ClJAny4z.js";
@@ -8,7 +8,7 @@ import { t as WizardCancelledError } from "./prompts-l_pUOv42.js";
8
8
  import { t as createClackPrompter } from "./clack-prompter-DU01bRlk.js";
9
9
  import { t as assertSupportedRuntime } from "./runtime-guard-BPoq8vFM.js";
10
10
  import { t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-Dgg-ogyc.js";
11
- import { t as runOnboardingWizard } from "./onboarding-D_ImwR9D.js";
11
+ import { t as runOnboardingWizard } from "./onboarding-OrcdwciM.js";
12
12
  import { n as logConfigUpdated } from "./logging-ZAeFsd9K.js";
13
13
  import { i as normalizeLegacyOnboardAuthChoice, r as isDeprecatedAuthChoice, t as ONBOARD_PROVIDER_AUTH_FLAGS } from "./onboard-provider-auth-flags-DjGs2ip7.js";
14
14
  import { t as applyOnboardingLocalWorkspaceConfig } from "./onboard-config-Dr7DjNAf.js";
@@ -328,7 +328,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
328
328
  mode
329
329
  });
330
330
  await writeConfigFile(nextConfig);
331
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-CWcaxeIO.js");
331
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-DZBXbwYe.js");
332
332
  const { launchedTui } = await finalizeOnboardingWizard({
333
333
  flow,
334
334
  opts,
@@ -328,7 +328,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
328
328
  mode
329
329
  });
330
330
  await writeConfigFile(nextConfig);
331
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-ClTc_ghC.js");
331
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-Bf3EExjS.js");
332
332
  const { launchedTui } = await finalizeOnboardingWizard({
333
333
  flow,
334
334
  opts,
@@ -112,9 +112,9 @@ import "./cli-utils-BKqG4ZT-.js";
112
112
  import "./help-format-CpR5cEGe.js";
113
113
  import "./progress-DuhDspl6.js";
114
114
  import "./note-IoQo8Ol0.js";
115
- import { r as installCompletion } from "./completion-cli-B58zTxLB.js";
116
- import "./register.subclis-C4twva8y.js";
117
- import "./command-registry-DU59Zys9.js";
115
+ import { r as installCompletion } from "./completion-cli-DDG6rQHB.js";
116
+ import "./register.subclis-Bb6WLUhM.js";
117
+ import "./command-registry-D-1yrjO5.js";
118
118
  import "./program-context-DKVuITe2.js";
119
119
  import { n as gatewayInstallErrorHint, t as buildGatewayInstallPlan } from "./daemon-install-helpers-CJtiW2RE.js";
120
120
  import "./runtime-guard-BPoq8vFM.js";
@@ -125,7 +125,7 @@ import { r as healthCommand } from "./health-CxqVSgKj.js";
125
125
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BYEy341x.js";
126
126
  import { t as resolveOnboardingSecretInputString } from "./onboarding.secret-input-h4sXfwga.js";
127
127
  import { t as formatHealthCheckFailure } from "./health-format-eNDYxTNS.js";
128
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DRCOGhwS.js";
128
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-B63lREru.js";
129
129
  import { t as runTui } from "./tui-DN34soFB.js";
130
130
  import { spawn } from "node:child_process";
131
131
  import os from "node:os";
@@ -529,22 +529,65 @@ async function finalizeOnboardingWizard(options) {
529
529
  const webSearchKey = webSearchProvider === "perplexity" ? (nextConfig.tools?.web?.search?.perplexity?.apiKey ?? "").trim() : (nextConfig.tools?.web?.search?.apiKey ?? "").trim();
530
530
  const webSearchEnv = webSearchProvider === "perplexity" ? (process.env.PERPLEXITY_API_KEY ?? "").trim() : (process.env.BRAVE_API_KEY ?? "").trim();
531
531
  const hasWebSearchKey = Boolean(webSearchKey || webSearchEnv);
532
- await prompter.note(hasWebSearchKey ? [
532
+ const agentName = nextConfig.agents?.main?.persona?.name ?? "Agent";
533
+ const agentEmoji = nextConfig.agents?.main?.persona?.emoji ?? "🐙";
534
+ const channelConnections = Object.entries(nextConfig.channels ?? {}).filter(([, config]) => config?.enabled).map(([name, config]) => {
535
+ if (name === "whatsapp" && config?.whatsapp?.phoneNumber) return `WhatsApp Channel: ${config.whatsapp.phoneNumber}`;
536
+ if (name === "telegram" && config?.telegram?.botToken) return `Telegram Channel: ${config.telegram.username ? `@${config.telegram.username}` : "Bot"} (${config.telegram.botToken.split(":")[0]})`;
537
+ return `${name.charAt(0).toUpperCase()}${name.slice(1)} Channel: configured`;
538
+ });
539
+ const sessionStorage = `${resolveUserPath(options.workspaceDir)}/.squidclaw/agents/main/sessions`;
540
+ const agentInfo = [
541
+ `Agent: ${agentName} ${agentEmoji}`,
542
+ "Heartbeat interval: 30m (main)",
543
+ "Session store (main): " + sessionStorage,
544
+ "",
545
+ ...channelConnections.length > 0 ? channelConnections : ["No channels configured"]
546
+ ].join("\n");
547
+ await prompter.note(agentInfo, "Agent");
548
+ await prompter.note([
549
+ "Add nodes for extra features:",
550
+ "- macOS app (system + notifications)",
551
+ "- iOS app (camera/canvas)",
552
+ "- Android app (camera/canvas)"
553
+ ].join("\n"), "Optional apps");
554
+ const controlUiInfo = [
555
+ `Web UI: ${links.httpUrl}`,
556
+ ...settings.authMode === "token" && settings.gatewayToken ? [`Web UI (with token): ${authedUrl}`] : [],
557
+ `Gateway WS: ${links.wsUrl}`,
558
+ gatewayStatusLine,
559
+ "Docs: https://docs.squidclaw.dev/web/control-ui"
560
+ ].filter(Boolean).join("\n");
561
+ await prompter.note(controlUiInfo, "Control UI");
562
+ await prompter.note([
563
+ "Gateway token: shared auth for the Gateway + Control UI.",
564
+ "Stored in: ~/.squidclaw/squidclaw.json (gateway.auth.token) or SQUIDCLAW_GATEWAY_TOKEN.",
565
+ `View token: ${formatCliCommand("squidclaw config get gateway.auth.token")}`,
566
+ `Generate token: ${formatCliCommand("squidclaw doctor --generate-gateway-token")}`,
567
+ "Web UI stores a copy in this browser's localStorage (squidclaw.control.settings.v1).",
568
+ `Open the dashboard anytime: ${formatCliCommand("squidclaw dashboard --no-open")}`,
569
+ "If prompted: paste the token into Control UI settings (or use the tokenized dashboard URL)."
570
+ ].join("\n"), "Token");
571
+ const webSearchInfo = hasWebSearchKey ? [
533
572
  "Web search is enabled, so your agent can look things up online when needed.",
534
573
  "",
535
574
  `Provider: ${webSearchProvider === "perplexity" ? "Perplexity Search" : "Brave Search"}`,
536
- webSearchKey ? `API key: stored in config (tools.web.search.${webSearchProvider === "perplexity" ? "perplexity.apiKey" : "apiKey"}).` : `API key: provided via ${webSearchProvider === "perplexity" ? "PERPLEXITY_API_KEY" : "BRAVE_API_KEY"} env var (Gateway environment).`,
575
+ webSearchKey ? `API key: stored in config (tools.web.search.${webSearchProvider === "perplexity" ? "perplexity.apiKey" : "apiKey"}).` : `API key: provided via ${webSearchProvider === "perplexity" ? "PERPLEXITY_API_KEY" : "BRAVE_API_KEY"} env var.`,
537
576
  "Docs: https://docs.squidclaw.dev/tools/web"
538
- ].join("\n") : [
539
- "To enable web search, your agent will need an API key for either Perplexity Search or Brave Search.",
540
- "",
541
- "Set it up interactively:",
577
+ ] : [
578
+ "To enable web search, set up an API key:",
542
579
  `- Run: ${formatCliCommand("squidclaw configure --section web")}`,
543
- "- Choose a provider and paste your API key",
580
+ "- Or set PERPLEXITY_API_KEY or BRAVE_API_KEY env var",
544
581
  "",
545
- "Alternative: set PERPLEXITY_API_KEY or BRAVE_API_KEY in the Gateway environment (no config changes).",
546
582
  "Docs: https://docs.squidclaw.dev/tools/web"
547
- ].join("\n"), "Web search (optional)");
583
+ ];
584
+ await prompter.note(webSearchInfo.join("\n"), "Web search (optional)");
585
+ await prompter.note([
586
+ "This is the defining action that makes your agent you.",
587
+ "Please take your time.",
588
+ "The more you tell it, the better the experience will be.",
589
+ "We will send: \"Hey up, my Friend!\""
590
+ ].join("\n"), "Start TUI (best option!)");
548
591
  await prompter.note("What now: https://squidclaw.dev/showcase (\"What People Are Building\").", "What now");
549
592
  await prompter.outro(controlUiOpened ? "Onboarding complete. Dashboard opened; keep that tab to control SquidClaw." : "Onboarding complete. Use the dashboard link above to control SquidClaw.");
550
593
  return { launchedTui };
@@ -111,9 +111,9 @@ import "./progress-BHN121Ps.js";
111
111
  import "./server-lifecycle-CL57-qY-.js";
112
112
  import "./stagger-DL-XRpny.js";
113
113
  import "./runtime-guard-pMNmDPEU.js";
114
- import "./program-context-Cc5-MG37.js";
114
+ import "./program-context-CWU-LWnL.js";
115
115
  import "./note-CBt9wSWa.js";
116
- import { r as installCompletion } from "./completion-cli-BLY0f3DS.js";
116
+ import { r as installCompletion } from "./completion-cli-YquOT8ke.js";
117
117
  import { n as gatewayInstallErrorHint, t as buildGatewayInstallPlan } from "./daemon-install-helpers-a4pGEsbA.js";
118
118
  import { n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-Di8BSZyD.js";
119
119
  import { r as isSystemdUserServiceAvailable } from "./systemd-fP8tz4aL.js";
@@ -122,7 +122,7 @@ import { r as healthCommand } from "./health-TD-34Yp-.js";
122
122
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Bz7TCLpb.js";
123
123
  import { t as resolveOnboardingSecretInputString } from "./onboarding.secret-input-CW9tPVNP.js";
124
124
  import { t as formatHealthCheckFailure } from "./health-format-B3bJdIC6.js";
125
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-kjDYgxZk.js";
125
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CoKUBmAB.js";
126
126
  import { t as runTui } from "./tui-ChZP3wJ7.js";
127
127
  import os from "node:os";
128
128
  import path from "node:path";
@@ -526,22 +526,65 @@ async function finalizeOnboardingWizard(options) {
526
526
  const webSearchKey = webSearchProvider === "perplexity" ? (nextConfig.tools?.web?.search?.perplexity?.apiKey ?? "").trim() : (nextConfig.tools?.web?.search?.apiKey ?? "").trim();
527
527
  const webSearchEnv = webSearchProvider === "perplexity" ? (process.env.PERPLEXITY_API_KEY ?? "").trim() : (process.env.BRAVE_API_KEY ?? "").trim();
528
528
  const hasWebSearchKey = Boolean(webSearchKey || webSearchEnv);
529
- await prompter.note(hasWebSearchKey ? [
529
+ const agentName = nextConfig.agents?.main?.persona?.name ?? "Agent";
530
+ const agentEmoji = nextConfig.agents?.main?.persona?.emoji ?? "🐙";
531
+ const channelConnections = Object.entries(nextConfig.channels ?? {}).filter(([, config]) => config?.enabled).map(([name, config]) => {
532
+ if (name === "whatsapp" && config?.whatsapp?.phoneNumber) return `WhatsApp Channel: ${config.whatsapp.phoneNumber}`;
533
+ if (name === "telegram" && config?.telegram?.botToken) return `Telegram Channel: ${config.telegram.username ? `@${config.telegram.username}` : "Bot"} (${config.telegram.botToken.split(":")[0]})`;
534
+ return `${name.charAt(0).toUpperCase()}${name.slice(1)} Channel: configured`;
535
+ });
536
+ const sessionStorage = `${resolveUserPath(options.workspaceDir)}/.squidclaw/agents/main/sessions`;
537
+ const agentInfo = [
538
+ `Agent: ${agentName} ${agentEmoji}`,
539
+ "Heartbeat interval: 30m (main)",
540
+ "Session store (main): " + sessionStorage,
541
+ "",
542
+ ...channelConnections.length > 0 ? channelConnections : ["No channels configured"]
543
+ ].join("\n");
544
+ await prompter.note(agentInfo, "Agent");
545
+ await prompter.note([
546
+ "Add nodes for extra features:",
547
+ "- macOS app (system + notifications)",
548
+ "- iOS app (camera/canvas)",
549
+ "- Android app (camera/canvas)"
550
+ ].join("\n"), "Optional apps");
551
+ const controlUiInfo = [
552
+ `Web UI: ${links.httpUrl}`,
553
+ ...settings.authMode === "token" && settings.gatewayToken ? [`Web UI (with token): ${authedUrl}`] : [],
554
+ `Gateway WS: ${links.wsUrl}`,
555
+ gatewayStatusLine,
556
+ "Docs: https://docs.squidclaw.dev/web/control-ui"
557
+ ].filter(Boolean).join("\n");
558
+ await prompter.note(controlUiInfo, "Control UI");
559
+ await prompter.note([
560
+ "Gateway token: shared auth for the Gateway + Control UI.",
561
+ "Stored in: ~/.squidclaw/squidclaw.json (gateway.auth.token) or SQUIDCLAW_GATEWAY_TOKEN.",
562
+ `View token: ${formatCliCommand("squidclaw config get gateway.auth.token")}`,
563
+ `Generate token: ${formatCliCommand("squidclaw doctor --generate-gateway-token")}`,
564
+ "Web UI stores a copy in this browser's localStorage (squidclaw.control.settings.v1).",
565
+ `Open the dashboard anytime: ${formatCliCommand("squidclaw dashboard --no-open")}`,
566
+ "If prompted: paste the token into Control UI settings (or use the tokenized dashboard URL)."
567
+ ].join("\n"), "Token");
568
+ const webSearchInfo = hasWebSearchKey ? [
530
569
  "Web search is enabled, so your agent can look things up online when needed.",
531
570
  "",
532
571
  `Provider: ${webSearchProvider === "perplexity" ? "Perplexity Search" : "Brave Search"}`,
533
- webSearchKey ? `API key: stored in config (tools.web.search.${webSearchProvider === "perplexity" ? "perplexity.apiKey" : "apiKey"}).` : `API key: provided via ${webSearchProvider === "perplexity" ? "PERPLEXITY_API_KEY" : "BRAVE_API_KEY"} env var (Gateway environment).`,
572
+ webSearchKey ? `API key: stored in config (tools.web.search.${webSearchProvider === "perplexity" ? "perplexity.apiKey" : "apiKey"}).` : `API key: provided via ${webSearchProvider === "perplexity" ? "PERPLEXITY_API_KEY" : "BRAVE_API_KEY"} env var.`,
534
573
  "Docs: https://docs.squidclaw.dev/tools/web"
535
- ].join("\n") : [
536
- "To enable web search, your agent will need an API key for either Perplexity Search or Brave Search.",
537
- "",
538
- "Set it up interactively:",
574
+ ] : [
575
+ "To enable web search, set up an API key:",
539
576
  `- Run: ${formatCliCommand("squidclaw configure --section web")}`,
540
- "- Choose a provider and paste your API key",
577
+ "- Or set PERPLEXITY_API_KEY or BRAVE_API_KEY env var",
541
578
  "",
542
- "Alternative: set PERPLEXITY_API_KEY or BRAVE_API_KEY in the Gateway environment (no config changes).",
543
579
  "Docs: https://docs.squidclaw.dev/tools/web"
544
- ].join("\n"), "Web search (optional)");
580
+ ];
581
+ await prompter.note(webSearchInfo.join("\n"), "Web search (optional)");
582
+ await prompter.note([
583
+ "This is the defining action that makes your agent you.",
584
+ "Please take your time.",
585
+ "The more you tell it, the better the experience will be.",
586
+ "We will send: \"Hey up, my Friend!\""
587
+ ].join("\n"), "Start TUI (best option!)");
545
588
  await prompter.note("What now: https://squidclaw.dev/showcase (\"What People Are Building\").", "What now");
546
589
  await prompter.outro(controlUiOpened ? "Onboarding complete. Dashboard opened; keep that tab to control SquidClaw." : "Onboarding complete. Use the dashboard link above to control SquidClaw.");
547
590
  return { launchedTui };
@@ -0,0 +1,35 @@
1
+ import { ot as normalizeAccountId } from "./run-with-concurrency-Baa7LYZD.js";
2
+ import { v as resolveAccountEntry, y as createAccountListHelpers } from "./accounts-Cnpikxly.js";
3
+
4
+ //#region src/imessage/accounts.ts
5
+ const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("imessage");
6
+ const listIMessageAccountIds = listAccountIds;
7
+ const resolveDefaultIMessageAccountId = resolveDefaultAccountId;
8
+ function resolveAccountConfig(cfg, accountId) {
9
+ return resolveAccountEntry(cfg.channels?.imessage?.accounts, accountId);
10
+ }
11
+ function mergeIMessageAccountConfig(cfg, accountId) {
12
+ const { accounts: _ignored, ...base } = cfg.channels?.imessage ?? {};
13
+ const account = resolveAccountConfig(cfg, accountId) ?? {};
14
+ return {
15
+ ...base,
16
+ ...account
17
+ };
18
+ }
19
+ function resolveIMessageAccount(params) {
20
+ const accountId = normalizeAccountId(params.accountId);
21
+ const baseEnabled = params.cfg.channels?.imessage?.enabled !== false;
22
+ const merged = mergeIMessageAccountConfig(params.cfg, accountId);
23
+ const accountEnabled = merged.enabled !== false;
24
+ const configured = Boolean(merged.cliPath?.trim() || merged.dbPath?.trim() || merged.service || merged.region?.trim() || merged.allowFrom && merged.allowFrom.length > 0 || merged.groupAllowFrom && merged.groupAllowFrom.length > 0 || merged.dmPolicy || merged.groupPolicy || typeof merged.includeAttachments === "boolean" || merged.attachmentRoots && merged.attachmentRoots.length > 0 || merged.remoteAttachmentRoots && merged.remoteAttachmentRoots.length > 0 || typeof merged.mediaMaxMb === "number" || typeof merged.textChunkLimit === "number" || merged.groups && Object.keys(merged.groups).length > 0);
25
+ return {
26
+ accountId,
27
+ enabled: baseEnabled && accountEnabled,
28
+ name: merged.name?.trim() || void 0,
29
+ config: merged,
30
+ configured
31
+ };
32
+ }
33
+
34
+ //#endregion
35
+ export { resolveDefaultIMessageAccountId as n, resolveIMessageAccount as r, listIMessageAccountIds as t };
@@ -1,5 +1,5 @@
1
- import { ot as normalizeAccountId } from "./run-with-concurrency-EUEKeAa8.js";
2
- import { v as resolveAccountEntry, y as createAccountListHelpers } from "./accounts-DKXGC2Vu.js";
1
+ import { ot as normalizeAccountId } from "./run-with-concurrency-CYcPpb5E.js";
2
+ import { v as resolveAccountEntry, y as createAccountListHelpers } from "./accounts-BvzvDHNx.js";
3
3
 
4
4
  //#region src/imessage/accounts.ts
5
5
  const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("imessage");
@@ -1,6 +1,6 @@
1
- import { at as DEFAULT_ACCOUNT_ID, ot as normalizeAccountId, st as normalizeOptionalAccountId } from "./run-with-concurrency-EUEKeAa8.js";
2
- import { Tr as formatCliCommand } from "./config-sMifxgre.js";
3
- import { B as success, G as getChildLogger, I as info, j as defaultRuntime, m as jidToE164, y as resolveUserPath } from "./logger-DIb2cGHp.js";
1
+ import { at as DEFAULT_ACCOUNT_ID, ot as normalizeAccountId, st as normalizeOptionalAccountId } from "./run-with-concurrency-CYcPpb5E.js";
2
+ import { Tr as formatCliCommand } from "./config-CMjn_DSB.js";
3
+ import { B as success, G as getChildLogger, I as info, j as defaultRuntime, m as jidToE164, y as resolveUserPath } from "./logger-Bg4vIUJn.js";
4
4
  import { o as resolveOAuthDir } from "./paths-Duwviem_.js";
5
5
  import path from "node:path";
6
6
  import fs from "node:fs";
@@ -1,5 +1,5 @@
1
- import { ot as normalizeAccountId } from "./run-with-concurrency-EUEKeAa8.js";
2
- import { v as resolveAccountEntry, y as createAccountListHelpers } from "./accounts-DKXGC2Vu.js";
1
+ import { ot as normalizeAccountId } from "./run-with-concurrency-CYcPpb5E.js";
2
+ import { v as resolveAccountEntry, y as createAccountListHelpers } from "./accounts-BvzvDHNx.js";
3
3
 
4
4
  //#region src/signal/accounts.ts
5
5
  const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("signal");