@symerian/symi 2.7.8 → 2.7.9

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 (204) hide show
  1. package/dist/{acp-cli-DV6gYjcL.js → acp-cli-DwKj-AqM.js} +1 -1
  2. package/dist/{acp-cli-6peVIuMz.js → acp-cli-lkOF8AeX.js} +1 -1
  3. package/dist/{agents-DhWccW-I.js → agents-Qr0BDw_h.js} +5 -5
  4. package/dist/{agents.config-DwibJO90.js → agents.config-D0ih9tP3.js} +1 -1
  5. package/dist/{agents.config-ByNtHnqX.js → agents.config-DIjsIDbS.js} +1 -1
  6. package/dist/{audio-preflight-DIXDvyz5.js → audio-preflight-D0nJ1LEt.js} +4 -4
  7. package/dist/{audio-preflight-lr-WPpc9.js → audio-preflight-D_g9Duqw.js} +4 -4
  8. package/dist/{audit-BZU2PNKl.js → audit-DVUHZrf4.js} +1 -1
  9. package/dist/{audit-CaFXenfE.js → audit-DgAM_dWL.js} +1 -1
  10. package/dist/{auth-choice-Divyczym.js → auth-choice-DhI8MW-5.js} +2 -2
  11. package/dist/{auth-choice-DOQ4Xf6i.js → auth-choice-PdYn-qiM.js} +2 -2
  12. package/dist/{banner-Cyi2LLe-.js → banner-BQhYK_Ag.js} +1 -1
  13. package/dist/{browser-cli-DUcEYbmP.js → browser-cli-CQKRSqbb.js} +2 -2
  14. package/dist/{browser-cli-DM3GvpUm.js → browser-cli-ClxJjz9C.js} +2 -2
  15. package/dist/build-info.json +3 -3
  16. package/dist/bundled/boot-md/handler.js +6 -6
  17. package/dist/bundled/session-memory/handler.js +6 -6
  18. package/dist/{call-CJl0moIs.js → call-BrRWr7Lj.js} +1 -0
  19. package/dist/{call-BHn18ubR.js → call-CVqBgwrx.js} +1 -0
  20. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  21. package/dist/{channel-options-C1sGPky6.js → channel-options-CFwo8sFR.js} +1 -1
  22. package/dist/{channel-options-Bk4m4-d5.js → channel-options-ZHpChVVk.js} +1 -1
  23. package/dist/{channel-web-BKbzqQ7x.js → channel-web-UmRhDGhI.js} +1 -1
  24. package/dist/{channels-cli-CAz8gCcs.js → channels-cli-CRDgQtex.js} +6 -6
  25. package/dist/{channels-cli-CGOOVbGf.js → channels-cli-rzQvsXSw.js} +6 -6
  26. package/dist/{chrome-B14NNyfm.js → chrome-BUT--ob3.js} +7 -7
  27. package/dist/{chrome-ROtrXlNs.js → chrome-C08Z0XAa.js} +7 -7
  28. package/dist/cli/daemon-cli.js +1 -1
  29. package/dist/{cli-7JBNvH2_.js → cli-CC9jaj6w.js} +3 -3
  30. package/dist/{cli-C0zcu-AX.js → cli-DN6fX0Xu.js} +3 -3
  31. package/dist/{command-registry-BGMCr778.js → command-registry-qqb2gJ4P.js} +10 -10
  32. package/dist/{completion-cli-EO1xz8q6.js → completion-cli-BX_yaiom.js} +1 -1
  33. package/dist/{completion-cli-B1wj8Q43.js → completion-cli-g-Vdnude.js} +2 -2
  34. package/dist/{config-cli-B9RnWD0Y.js → config-cli-CnFTSv-1.js} +1 -1
  35. package/dist/{config-cli-QugXKbsV.js → config-cli-CsCvDCZV.js} +1 -1
  36. package/dist/{configure-C_BD9gNf.js → configure-BYd07Mo5.js} +6 -6
  37. package/dist/{configure-DOfxxuzV.js → configure-CAuW3YmR.js} +6 -6
  38. package/dist/control-ui/css/style.css +213 -6
  39. package/dist/control-ui/index.html +24 -2
  40. package/dist/control-ui/js/connections.js +113 -5
  41. package/dist/{cron-cli-CH0XOOxj.js → cron-cli--z6DSGhk.js} +2 -2
  42. package/dist/{cron-cli-DBt3Lxhm.js → cron-cli-DZJZ_EvY.js} +2 -2
  43. package/dist/{daemon-cli-BRMcpQb7.js → daemon-cli-B9yneKpO.js} +2 -2
  44. package/dist/{daemon-cli-DZeTm_F2.js → daemon-cli-bwFAShzf.js} +2 -2
  45. package/dist/daemon-cli.js +1 -0
  46. package/dist/{deliver-DrC7tG6s.js → deliver-B36OzmeP.js} +1 -1
  47. package/dist/{deliver-BC3liFsT.js → deliver-CLZGlRZt.js} +1 -1
  48. package/dist/{devices-cli-DwCYjYyV.js → devices-cli-fVRpoa9z.js} +1 -1
  49. package/dist/{devices-cli-C7aaQeFG.js → devices-cli-oqibXYae.js} +1 -1
  50. package/dist/{doctor-completion-Dm4QxJdc.js → doctor-completion-Cqce5h2X.js} +1 -1
  51. package/dist/{doctor-completion-DL-ojJGb.js → doctor-completion-Dqfl4aR1.js} +1 -1
  52. package/dist/entry.js +1 -1
  53. package/dist/{exec-approvals-cli-BcwVEh83.js → exec-approvals-cli-BpOqYXNL.js} +3 -3
  54. package/dist/{exec-approvals-cli-CWpi7F1X.js → exec-approvals-cli-DjGZKQbZ.js} +3 -3
  55. package/dist/extensionAPI.js +6 -6
  56. package/dist/{gateway-cli-DyFOMcg2.js → gateway-cli-BUqL_Yh6.js} +14 -13
  57. package/dist/{gateway-cli-DcrPLnL3.js → gateway-cli-DA1fRZ5w.js} +14 -13
  58. package/dist/{gateway-rpc-BzkjTxlD.js → gateway-rpc-Bp0KNJtL.js} +1 -1
  59. package/dist/{gateway-rpc-CJPoGX_W.js → gateway-rpc-XT8cFwtz.js} +1 -1
  60. package/dist/{glass-ui-ws-nxFknxgE.js → glass-ui-ws-BzBtCYP7.js} +10 -10
  61. package/dist/{glass-ui-ws-Czh-1YjO.js → glass-ui-ws-Cm-WtdFI.js} +10 -10
  62. package/dist/{health-CFd-Q1SH.js → health-Bx8UUqFA.js} +2 -2
  63. package/dist/{health-1ZDwurPU.js → health-C7HtwYDj.js} +2 -2
  64. package/dist/{hooks-cli-C4tUO222.js → hooks-cli-5G9JN39f.js} +4 -4
  65. package/dist/{hooks-cli-nKBiWE2v.js → hooks-cli-DtVT3wM_.js} +4 -4
  66. package/dist/{image-CKeN0xJL.js → image-BHhzdmbq.js} +1 -1
  67. package/dist/{image-C6v6m8Id.js → image-BnO8X_hj.js} +1 -1
  68. package/dist/index.js +8 -8
  69. package/dist/llm-slug-generator.js +6 -6
  70. package/dist/{logs-cli-DWqkAMwy.js → logs-cli-gU7p7zX0.js} +2 -2
  71. package/dist/{logs-cli-q93Kur4b.js → logs-cli-tJPD_Dps.js} +2 -2
  72. package/dist/{models-Cd9pFy1G.js → models-DQthIpnz.js} +3 -3
  73. package/dist/{models-cli-Cxo55E0S.js → models-cli-D8zc0jSg.js} +5 -5
  74. package/dist/{models-cli-CSqy5xI0.js → models-cli-UaHeUaJq.js} +4 -4
  75. package/dist/{nodes-cli-BHVOxukb.js → nodes-cli-6vHqlpLI.js} +2 -2
  76. package/dist/{nodes-cli-seBKfjdd.js → nodes-cli-DxHMNlWq.js} +2 -2
  77. package/dist/{onboard-SceHniST.js → onboard-C1GtzpAc.js} +3 -3
  78. package/dist/{onboard-channels-BI-59zLH.js → onboard-channels-CUUTFx1F.js} +1 -1
  79. package/dist/{onboard-channels-KGMbYFcP.js → onboard-channels-HyGv2y5c.js} +1 -1
  80. package/dist/{onboard-helpers-BV3zKTt_.js → onboard-helpers-7H_XiJt-.js} +1 -1
  81. package/dist/{onboard-helpers-BFyI1sla.js → onboard-helpers-CPSKXD5k.js} +1 -1
  82. package/dist/{onboard-remote-C-EvSvV9.js → onboard-remote-BlCdyTsP.js} +1 -1
  83. package/dist/{onboard-remote-CvtBwhma.js → onboard-remote-DFavRxQ6.js} +1 -1
  84. package/dist/{onboard-skills-C1jrqA-P.js → onboard-skills-CssuFDjw.js} +1 -1
  85. package/dist/{onboard-skills-CWaMGMQi.js → onboard-skills-DVtfVPsB.js} +1 -1
  86. package/dist/{onboard-CVKCZHVL.js → onboard-sl1Xputw.js} +3 -3
  87. package/dist/{onboarding-Bs3JhONv.js → onboarding-B4qg0ZYp.js} +7 -7
  88. package/dist/{onboarding-BPjquWC3.js → onboarding-C89rTOOy.js} +7 -7
  89. package/dist/{onboarding.finalize-Dbx89qG2.js → onboarding.finalize-CGk4vov2.js} +9 -9
  90. package/dist/{onboarding.finalize-lAwIuZFE.js → onboarding.finalize-ClJ1HBVt.js} +8 -8
  91. package/dist/{onboarding.gateway-config-Btb5PaGv.js → onboarding.gateway-config-TM8ERKyn.js} +2 -2
  92. package/dist/{onboarding.gateway-config-gMhAsXgO.js → onboarding.gateway-config-vGTQDqA6.js} +2 -2
  93. package/dist/{pi-embedded-CG4P3hy3.js → pi-embedded-BaNpG0Aq.js} +17 -16
  94. package/dist/{pi-embedded-helpers-D8YgtMdl.js → pi-embedded-helpers-BET359cH.js} +4 -4
  95. package/dist/{pi-embedded-helpers-BUNbSNWw.js → pi-embedded-helpers-DcN8GHTt.js} +4 -4
  96. package/dist/{plugin-registry-DSrgdZKM.js → plugin-registry-7MeuYUTG.js} +1 -1
  97. package/dist/{plugin-registry-C4aoDdOB.js → plugin-registry-Dx8MaVaX.js} +1 -1
  98. package/dist/plugin-sdk/{channel-web-CsZ6epLT.js → channel-web-C6_r-2VI.js} +1 -1
  99. package/dist/plugin-sdk/index.js +2 -2
  100. package/dist/plugin-sdk/{reply-Rv3jE0Rs.js → reply-CIDYJYie.js} +3 -2
  101. package/dist/plugin-sdk/{web-D6R4__wu.js → web-CHKraWl6.js} +2 -2
  102. package/dist/{plugins-cli-DJM_xxIg.js → plugins-cli-bblxpPhT.js} +4 -4
  103. package/dist/{plugins-cli-CSwcV2M6.js → plugins-cli-oatWFlGr.js} +4 -4
  104. package/dist/{program-CtX7o1VN.js → program-B4MbPh6k.js} +9 -9
  105. package/dist/{program-context-B2HPYMcn.js → program-context-BfdA1JM9.js} +28 -28
  106. package/dist/{prompt-select-styled-Cs79EjHm.js → prompt-select-styled-DNhjvdZL.js} +6 -6
  107. package/dist/{prompt-select-styled-5a7_K1sn.js → prompt-select-styled-bMJTZkj7.js} +6 -6
  108. package/dist/{provider-auth-helpers-DOa1Rc3D.js → provider-auth-helpers-CezJXPrZ.js} +1 -1
  109. package/dist/{provider-auth-helpers-fWAoFIwZ.js → provider-auth-helpers-D9BOiQMP.js} +1 -1
  110. package/dist/{push-apns-HnaGVJwW.js → push-apns-CL2MBhWP.js} +1 -1
  111. package/dist/{push-apns-Dnd_jTU-.js → push-apns-DUWtWoB-.js} +1 -1
  112. package/dist/{pw-ai-BLrC_W1X.js → pw-ai-B476LzSK.js} +1 -1
  113. package/dist/{pw-ai-DTmHAKPA.js → pw-ai-DE8wmtet.js} +1 -1
  114. package/dist/{register.agent-CaputGWT.js → register.agent-B-v1ixge.js} +8 -8
  115. package/dist/{register.agent-lqb5eXZs.js → register.agent-Dms0oymW.js} +7 -7
  116. package/dist/{register.configure-C0KBR4e6.js → register.configure-CVct6y53.js} +10 -10
  117. package/dist/{register.configure-C3AQZaAa.js → register.configure-MY0P8ucP.js} +10 -10
  118. package/dist/{register.maintenance-DLY3bZTm.js → register.maintenance-Ciblsa6H.js} +9 -9
  119. package/dist/{register.maintenance-c8Ig4nYO.js → register.maintenance-DpSSW9tp.js} +10 -10
  120. package/dist/{register.message-CUclEFp5.js → register.message-Csn-WBH0.js} +4 -4
  121. package/dist/{register.message-Bexo7F0u.js → register.message-FsBEsQeD.js} +4 -4
  122. package/dist/{register.onboard-CVmFRJ__.js → register.onboard-BQ-ciW9l.js} +6 -6
  123. package/dist/{register.onboard-DpeqS3GT.js → register.onboard-MIhaldvp.js} +6 -6
  124. package/dist/{register.setup-NiDBVZE2.js → register.setup-DCTamI7u.js} +6 -6
  125. package/dist/{register.setup-DogqYYN7.js → register.setup-M0O0Tp-n.js} +6 -6
  126. package/dist/{register.status-health-sessions-CTErhiR9.js → register.status-health-sessions-Drc5WQGq.js} +6 -6
  127. package/dist/{register.status-health-sessions-C5noW7M3.js → register.status-health-sessions-DzKtjfA-.js} +6 -6
  128. package/dist/{register.subclis-E_1XOkdf.js → register.subclis-Btg8-Nnf.js} +19 -19
  129. package/dist/{reply-DAMo5JhO.js → reply-B0azB7WR.js} +4 -4
  130. package/dist/{rpc-IXmOgc1l.js → rpc-CHb_JvbM.js} +1 -1
  131. package/dist/{rpc-k8pnK8TE.js → rpc-Cog-Z1rx.js} +1 -1
  132. package/dist/{run-main-Cv91hLSK.js → run-main-DfxDXt2d.js} +16 -16
  133. package/dist/{runner-COpebDew.js → runner-BVgCl6yZ.js} +1 -1
  134. package/dist/{runner-QX0Z6K1w.js → runner-D5nFF9E6.js} +1 -1
  135. package/dist/{security-cli-Cxmb5Rpv.js → security-cli-B5s73Le2.js} +2 -2
  136. package/dist/{security-cli-BsStEfWU.js → security-cli-CzWHkrqD.js} +2 -2
  137. package/dist/{server-methods-C_rhjm5p.js → server-methods-BcBroG6v.js} +68 -10
  138. package/dist/{server-methods-CXL1Nrbp.js → server-methods-OJbQNjOJ.js} +68 -10
  139. package/dist/{server-node-events-B_UZBZn_.js → server-node-events-AVxH5dXs.js} +4 -4
  140. package/dist/{server-node-events-CdUVoXvg.js → server-node-events-Ba9K9DB9.js} +4 -4
  141. package/dist/{status-Ds4oB9tJ.js → status-CpWkGj5h.js} +1 -1
  142. package/dist/{status-Drn5xFtL.js → status-DNxAYvxM.js} +1 -1
  143. package/dist/{status-CzI_lZth.js → status-RlJA2XzQ.js} +5 -5
  144. package/dist/{status-DQQ-w3eF.js → status-Ut-dfDT0.js} +5 -5
  145. package/dist/{subagent-registry-CfoRc8ng.js → subagent-registry-CsYeP8wc.js} +4 -4
  146. package/dist/{system-cli-DnlgTnqh.js → system-cli-D3CVv1ab.js} +2 -2
  147. package/dist/{system-cli-CQNazJoF.js → system-cli-rpyy5jcw.js} +2 -2
  148. package/dist/{tui-CXTwJqpz.js → tui-DfPeXwah.js} +1 -1
  149. package/dist/{tui-DTW81r9y.js → tui-LZPdrFmK.js} +1 -1
  150. package/dist/{tui-cli-KiaTeKr0.js → tui-cli-Bm3TJgXf.js} +2 -2
  151. package/dist/{tui-cli-DGmt1Xs0.js → tui-cli-DFXZ7r1F.js} +2 -2
  152. package/dist/{unified-runner-DweFv8Vx.js → unified-runner-BojeuKIk.js} +17 -16
  153. package/dist/{update-cli-Ba4La00X.js → update-cli-Cb12PjyN.js} +10 -10
  154. package/dist/{update-cli-BkJZPKh8.js → update-cli-Cm4ftHhu.js} +11 -11
  155. package/dist/{update-runner-w3GO-spo.js → update-runner-BE6kDMsw.js} +1 -1
  156. package/dist/{update-runner-CqWSrJXt.js → update-runner-Cv6hDgKV.js} +1 -1
  157. package/dist/{web-0cG6_ynp.js → web-BOv3xM7W.js} +4 -4
  158. package/dist/{web-DHAEIalz.js → web-CYf5I3aU.js} +3 -3
  159. package/dist/{web-9rrJ5lZr.js → web-Dxkxcp7P.js} +6 -6
  160. package/dist/{web-Cx3SfQiX.js → web-f1xT-H2y.js} +6 -6
  161. package/docs/connections/email.md +143 -0
  162. package/docs/connections/msteams.md +80 -0
  163. package/docs/connections/slack.md +91 -0
  164. package/extensions/bluebubbles/package.json +1 -1
  165. package/extensions/copilot-proxy/package.json +1 -1
  166. package/extensions/diagnostics-otel/package.json +1 -1
  167. package/extensions/discord/package.json +1 -1
  168. package/extensions/feishu/package.json +1 -1
  169. package/extensions/google-antigravity-auth/package.json +1 -1
  170. package/extensions/google-gemini-cli-auth/package.json +1 -1
  171. package/extensions/googlechat/package.json +1 -1
  172. package/extensions/imessage/package.json +1 -1
  173. package/extensions/irc/package.json +1 -1
  174. package/extensions/learning-loop/package.json +1 -1
  175. package/extensions/line/package.json +1 -1
  176. package/extensions/llm-task/package.json +1 -1
  177. package/extensions/matrix/CHANGELOG.md +6 -0
  178. package/extensions/matrix/package.json +1 -1
  179. package/extensions/mattermost/package.json +1 -1
  180. package/extensions/memory-core/package.json +1 -1
  181. package/extensions/memory-lancedb/package.json +1 -1
  182. package/extensions/minimax-portal-auth/package.json +1 -1
  183. package/extensions/msteams/CHANGELOG.md +6 -0
  184. package/extensions/msteams/package.json +1 -1
  185. package/extensions/nextcloud-talk/package.json +1 -1
  186. package/extensions/nostr/CHANGELOG.md +6 -0
  187. package/extensions/nostr/package.json +1 -1
  188. package/extensions/open-prose/package.json +1 -1
  189. package/extensions/outlook/package.json +1 -1
  190. package/extensions/pipeline/package.json +1 -1
  191. package/extensions/signal/package.json +1 -1
  192. package/extensions/slack/package.json +1 -1
  193. package/extensions/telegram/package.json +1 -1
  194. package/extensions/tlon/package.json +1 -1
  195. package/extensions/twitch/CHANGELOG.md +6 -0
  196. package/extensions/twitch/package.json +1 -1
  197. package/extensions/voice-call/CHANGELOG.md +6 -0
  198. package/extensions/voice-call/package.json +1 -1
  199. package/extensions/whatsapp/package.json +1 -1
  200. package/extensions/zalo/CHANGELOG.md +6 -0
  201. package/extensions/zalo/package.json +1 -1
  202. package/extensions/zalouser/CHANGELOG.md +6 -0
  203. package/extensions/zalouser/package.json +1 -1
  204. package/package.json +1 -1
@@ -11,10 +11,10 @@ import "./skills-D_oCiaQn.js";
11
11
  import "./manifest-registry-D5bnO5uA.js";
12
12
  import { i as loadConfig } from "./config-DXt3pc08.js";
13
13
  import "./client-qUlxXXVJ.js";
14
- import "./call-CJl0moIs.js";
14
+ import "./call-BrRWr7Lj.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import { m as loadSymiPlugins } from "./subagent-registry-CfoRc8ng.js";
17
+ import { m as loadSymiPlugins } from "./subagent-registry-CsYeP8wc.js";
18
18
  import "./sessions-BPD85pWA.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -94,7 +94,7 @@ import "./cli-utils-CCaEbxAz.js";
94
94
  import "./help-format-B0pWGnZs.js";
95
95
  import "./progress-BAHiAaDW.js";
96
96
  import "./replies-CsUBFXf6.js";
97
- import "./onboard-helpers-BV3zKTt_.js";
97
+ import "./onboard-helpers-7H_XiJt-.js";
98
98
  import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-DwceB1dG.js";
100
100
  import "./pi-tools.policy-DOVQ8dDx.js";
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { an as getPrimaryCommand, cn as hasHelpOrVersion } from "./entry.js";
3
- import { i as registerSubCliCommands, o as reparseProgramFromActionArgs } from "./register.subclis-E_1XOkdf.js";
3
+ import { i as registerSubCliCommands, o as reparseProgramFromActionArgs } from "./register.subclis-Btg8-Nnf.js";
4
4
 
5
5
  //#region src/cli/program/command-registry.ts
6
6
  var command_registry_exports = /* @__PURE__ */ __exportAll({
@@ -22,7 +22,7 @@ const coreEntries = [
22
22
  hasSubcommands: false
23
23
  }],
24
24
  register: async ({ program }) => {
25
- (await import("./register.setup-DogqYYN7.js")).registerSetupCommand(program);
25
+ (await import("./register.setup-M0O0Tp-n.js")).registerSetupCommand(program);
26
26
  }
27
27
  },
28
28
  {
@@ -32,7 +32,7 @@ const coreEntries = [
32
32
  hasSubcommands: false
33
33
  }],
34
34
  register: async ({ program }) => {
35
- (await import("./register.onboard-CVmFRJ__.js")).registerOnboardCommand(program);
35
+ (await import("./register.onboard-BQ-ciW9l.js")).registerOnboardCommand(program);
36
36
  }
37
37
  },
38
38
  {
@@ -42,7 +42,7 @@ const coreEntries = [
42
42
  hasSubcommands: false
43
43
  }],
44
44
  register: async ({ program }) => {
45
- (await import("./register.configure-C0KBR4e6.js")).registerConfigureCommand(program);
45
+ (await import("./register.configure-CVct6y53.js")).registerConfigureCommand(program);
46
46
  }
47
47
  },
48
48
  {
@@ -52,7 +52,7 @@ const coreEntries = [
52
52
  hasSubcommands: true
53
53
  }],
54
54
  register: async ({ program }) => {
55
- (await import("./config-cli-QugXKbsV.js")).registerConfigCli(program);
55
+ (await import("./config-cli-CsCvDCZV.js")).registerConfigCli(program);
56
56
  }
57
57
  },
58
58
  {
@@ -79,7 +79,7 @@ const coreEntries = [
79
79
  }
80
80
  ],
81
81
  register: async ({ program }) => {
82
- (await import("./register.maintenance-c8Ig4nYO.js")).registerMaintenanceCommands(program);
82
+ (await import("./register.maintenance-DpSSW9tp.js")).registerMaintenanceCommands(program);
83
83
  }
84
84
  },
85
85
  {
@@ -89,7 +89,7 @@ const coreEntries = [
89
89
  hasSubcommands: true
90
90
  }],
91
91
  register: async ({ program, ctx }) => {
92
- (await import("./register.message-CUclEFp5.js")).registerMessageCommands(program, ctx);
92
+ (await import("./register.message-Csn-WBH0.js")).registerMessageCommands(program, ctx);
93
93
  }
94
94
  },
95
95
  {
@@ -113,7 +113,7 @@ const coreEntries = [
113
113
  hasSubcommands: true
114
114
  }],
115
115
  register: async ({ program, ctx }) => {
116
- (await import("./register.agent-CaputGWT.js")).registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
116
+ (await import("./register.agent-B-v1ixge.js")).registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
117
117
  }
118
118
  },
119
119
  {
@@ -135,7 +135,7 @@ const coreEntries = [
135
135
  }
136
136
  ],
137
137
  register: async ({ program }) => {
138
- (await import("./register.status-health-sessions-C5noW7M3.js")).registerStatusHealthSessionsCommands(program);
138
+ (await import("./register.status-health-sessions-DzKtjfA-.js")).registerStatusHealthSessionsCommands(program);
139
139
  }
140
140
  },
141
141
  {
@@ -145,7 +145,7 @@ const coreEntries = [
145
145
  hasSubcommands: true
146
146
  }],
147
147
  register: async ({ program }) => {
148
- (await import("./browser-cli-DUcEYbmP.js")).registerBrowserCli(program);
148
+ (await import("./browser-cli-CQKRSqbb.js")).registerBrowserCli(program);
149
149
  }
150
150
  }
151
151
  ];
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
3
3
  import { h as pathExists } from "./utils-B-0b9bGM.js";
4
4
  import { i as routeLogsToStderr } from "./subsystem-D9vIQve0.js";
5
- import { a as registerCoreCliByName, c as getSubCliEntries, l as registerSubCliByName, r as getCoreCliCommandNames, t as getProgramContext } from "./program-context-B2HPYMcn.js";
5
+ import { a as registerCoreCliByName, c as getSubCliEntries, l as registerSubCliByName, r as getCoreCliCommandNames, t as getProgramContext } from "./program-context-BfdA1JM9.js";
6
6
  import os from "node:os";
7
7
  import path from "node:path";
8
8
  import fs from "node:fs/promises";
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { Yt as resolveStateDir, l as routeLogsToStderr, nt as pathExists } from "./entry.js";
3
- import { n as getSubCliEntries, r as registerSubCliByName } from "./register.subclis-E_1XOkdf.js";
4
- import { i as registerCoreCliByName, n as getCoreCliCommandNames } from "./command-registry-BGMCr778.js";
3
+ import { n as getSubCliEntries, r as registerSubCliByName } from "./register.subclis-Btg8-Nnf.js";
4
+ import { i as registerCoreCliByName, n as getCoreCliCommandNames } from "./command-registry-qqb2gJ4P.js";
5
5
  import { t as getProgramContext } from "./program-context-CqzR_m-7.js";
6
6
  import os from "node:os";
7
7
  import path from "node:path";
@@ -206,7 +206,7 @@ async function runConfigUnset(opts) {
206
206
  }
207
207
  function registerConfigCli(program) {
208
208
  const cmd = program.command("config").description("Non-interactive config helpers (get/set/unset). Run without subcommand for the setup wizard.").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/config", "docs.symi.ai/cli/config")}\n`).option("--section <section>", "Configure wizard sections (repeatable). Use with no subcommand.", (value, previous) => [...previous, value], []).action(async (opts) => {
209
- const { configureCommandFromSectionsArg } = await import("./configure-DOfxxuzV.js").then((n) => n.t);
209
+ const { configureCommandFromSectionsArg } = await import("./configure-CAuW3YmR.js").then((n) => n.t);
210
210
  await configureCommandFromSectionsArg(opts.section, defaultRuntime);
211
211
  });
212
212
  cmd.command("get").description("Get a config value by dot path").argument("<path>", "Config path (dot or bracket notation)").option("--json", "Output JSON", false).action(async (path, opts) => {
@@ -201,7 +201,7 @@ async function runConfigUnset(opts) {
201
201
  }
202
202
  function registerConfigCli(program) {
203
203
  const cmd = program.command("config").description("Non-interactive config helpers (get/set/unset). Run without subcommand for the setup wizard.").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/config", "docs.symi.ai/cli/config")}\n`).option("--section <section>", "Configure wizard sections (repeatable). Use with no subcommand.", (value, previous) => [...previous, value], []).action(async (opts) => {
204
- const { configureCommandFromSectionsArg } = await import("./configure-C_BD9gNf.js").then((n) => n.t);
204
+ const { configureCommandFromSectionsArg } = await import("./configure-BYd07Mo5.js").then((n) => n.t);
205
205
  await configureCommandFromSectionsArg(opts.section, defaultRuntime);
206
206
  });
207
207
  cmd.command("get").description("Get a config value by dot path").argument("<path>", "Config path (dot or bracket notation)").option("--json", "Output JSON", false).action(async (path, opts) => {
@@ -6,26 +6,26 @@ import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot } fr
6
6
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
7
7
  import { a as findTailscaleBinary } from "./tailscale-CbbvYNVw.js";
8
8
  import { n as withProgress } from "./progress-BAHiAaDW.js";
9
- import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, g as resolveControlUiLinks, h as randomToken, m as probeGatewayReachable, n as applyWizardMetadata, p as printWizardHeader, s as guardCancel, t as DEFAULT_WORKSPACE, u as normalizeGatewayTokenInput, v as summarizeExistingConfig, y as validateGatewayPasswordInput } from "./onboard-helpers-BV3zKTt_.js";
9
+ import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, g as resolveControlUiLinks, h as randomToken, m as probeGatewayReachable, n as applyWizardMetadata, p as printWizardHeader, s as guardCancel, t as DEFAULT_WORKSPACE, u as normalizeGatewayTokenInput, v as summarizeExistingConfig, y as validateGatewayPasswordInput } from "./onboard-helpers-7H_XiJt-.js";
10
10
  import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint } from "./prompt-style-DwCXob2h.js";
11
11
  import { t as note$1 } from "./note-DDecZomM.js";
12
12
  import { t as WizardCancelledError } from "./prompts-m1IJwIAx.js";
13
13
  import { t as createClackPrompter } from "./clack-prompter-B1aVoXd5.js";
14
- import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-KGMbYFcP.js";
14
+ import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-HyGv2y5c.js";
15
15
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-BV78EN62.js";
16
16
  import { t as resolveGatewayService } from "./service-Cm9j9WzQ.js";
17
- import { r as healthCommand } from "./health-1ZDwurPU.js";
17
+ import { r as healthCommand } from "./health-C7HtwYDj.js";
18
18
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BseSWee1.js";
19
19
  import { n as logConfigUpdated } from "./logging-BGewRZy0.js";
20
20
  import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-DVcYPG2v.js";
21
- import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-DOQ4Xf6i.js";
21
+ import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-PdYn-qiM.js";
22
22
  import { a as promptDefaultModel, n as applyModelFallbacksFromSelection, o as promptModelAllowlist, r as applyPrimaryModel, t as applyModelAllowlist } from "./model-picker-RQfDGgfM.js";
23
23
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-DA_LW52P.js";
24
24
  import { a as promptCustomApiConfig } from "./onboard-custom-B1paBymW.js";
25
25
  import { i as TAILSCALE_MISSING_BIN_NOTE_LINES, n as TAILSCALE_DOCS_LINES, r as TAILSCALE_EXPOSURE_OPTIONS, t as validateIPv4AddressInput } from "./ipv4-B-xy96ST.js";
26
26
  import { t as formatHealthCheckFailure } from "./health-format-CzgUHmmX.js";
27
- import { n as promptRemoteGatewayConfig } from "./onboard-remote-CvtBwhma.js";
28
- import { n as setupSkills } from "./onboard-skills-CWaMGMQi.js";
27
+ import { n as promptRemoteGatewayConfig } from "./onboard-remote-DFavRxQ6.js";
28
+ import { n as setupSkills } from "./onboard-skills-DVtfVPsB.js";
29
29
  import { confirm, intro, outro, select, text } from "@clack/prompts";
30
30
 
31
31
  //#region src/commands/configure.shared.ts
@@ -8,26 +8,26 @@ import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot } fr
8
8
  import { a as findTailscaleBinary } from "./tailscale-D5dKabOc.js";
9
9
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-DKDeQZF0.js";
10
10
  import { n as withProgress } from "./progress-jIePzvGA.js";
11
- import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, g as resolveControlUiLinks, h as randomToken, m as probeGatewayReachable, n as applyWizardMetadata, p as printWizardHeader, s as guardCancel, t as DEFAULT_WORKSPACE, u as normalizeGatewayTokenInput, v as summarizeExistingConfig, y as validateGatewayPasswordInput } from "./onboard-helpers-BFyI1sla.js";
11
+ import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, g as resolveControlUiLinks, h as randomToken, m as probeGatewayReachable, n as applyWizardMetadata, p as printWizardHeader, s as guardCancel, t as DEFAULT_WORKSPACE, u as normalizeGatewayTokenInput, v as summarizeExistingConfig, y as validateGatewayPasswordInput } from "./onboard-helpers-CPSKXD5k.js";
12
12
  import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint } from "./prompt-style-CnkMpSXt.js";
13
13
  import { t as note$1 } from "./note-DQ9BvHF2.js";
14
14
  import { t as WizardCancelledError } from "./prompts-CfOu9uZi.js";
15
15
  import { t as createClackPrompter } from "./clack-prompter-DMuVyYP2.js";
16
- import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-BI-59zLH.js";
16
+ import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-CUUTFx1F.js";
17
17
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-BT1zC2PU.js";
18
18
  import { t as resolveGatewayService } from "./service-osK70kTZ.js";
19
- import { r as healthCommand } from "./health-CFd-Q1SH.js";
19
+ import { r as healthCommand } from "./health-Bx8UUqFA.js";
20
20
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B7moDVHX.js";
21
21
  import { n as logConfigUpdated } from "./logging-KpicI3yD.js";
22
22
  import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-Cn6U3t8O.js";
23
- import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-Divyczym.js";
23
+ import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-DhI8MW-5.js";
24
24
  import { a as promptDefaultModel, n as applyModelFallbacksFromSelection, o as promptModelAllowlist, r as applyPrimaryModel, t as applyModelAllowlist } from "./model-picker-D-n-rWyt.js";
25
25
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-DCskIKcx.js";
26
26
  import { a as promptCustomApiConfig } from "./onboard-custom-B3CBlZe5.js";
27
27
  import { i as TAILSCALE_MISSING_BIN_NOTE_LINES, n as TAILSCALE_DOCS_LINES, r as TAILSCALE_EXPOSURE_OPTIONS, t as validateIPv4AddressInput } from "./ipv4-CjlyK5jc.js";
28
28
  import { t as formatHealthCheckFailure } from "./health-format-DRCaak6L.js";
29
- import { n as promptRemoteGatewayConfig } from "./onboard-remote-C-EvSvV9.js";
30
- import { n as setupSkills } from "./onboard-skills-C1jrqA-P.js";
29
+ import { n as promptRemoteGatewayConfig } from "./onboard-remote-BlCdyTsP.js";
30
+ import { n as setupSkills } from "./onboard-skills-CssuFDjw.js";
31
31
  import { confirm, intro, outro, select, text } from "@clack/prompts";
32
32
 
33
33
  //#region src/commands/configure.shared.ts
@@ -440,7 +440,8 @@ body {
440
440
  white-space: nowrap;
441
441
  appearance: none;
442
442
  -webkit-appearance: none;
443
- background-image: linear-gradient(45deg, transparent 50%, currentColor 50%),
443
+ background-image:
444
+ linear-gradient(45deg, transparent 50%, currentColor 50%),
444
445
  linear-gradient(135deg, currentColor 50%, transparent 50%);
445
446
  background-position:
446
447
  calc(100% - 10px) 50%,
@@ -3630,10 +3631,18 @@ body {
3630
3631
  font-weight: 600;
3631
3632
  letter-spacing: 0.04em;
3632
3633
  }
3633
- .debug-type--chat { color: var(--accent-cyan); }
3634
- .debug-type--agent { color: var(--accent-purple); }
3635
- .debug-type--error { color: #ef4444; }
3636
- .debug-type--other { color: rgba(255, 255, 255, 0.4); }
3634
+ .debug-type--chat {
3635
+ color: var(--accent-cyan);
3636
+ }
3637
+ .debug-type--agent {
3638
+ color: var(--accent-purple);
3639
+ }
3640
+ .debug-type--error {
3641
+ color: #ef4444;
3642
+ }
3643
+ .debug-type--other {
3644
+ color: rgba(255, 255, 255, 0.4);
3645
+ }
3637
3646
 
3638
3647
  .debug-summary {
3639
3648
  color: rgba(255, 255, 255, 0.55);
@@ -4114,10 +4123,12 @@ body {
4114
4123
  display: flex;
4115
4124
  align-items: center;
4116
4125
  gap: 8px;
4126
+ font-family: inherit;
4117
4127
  font-size: 12px;
4118
4128
  font-weight: 500;
4119
4129
  color: var(--accent-cyan);
4120
4130
  text-decoration: none;
4131
+ cursor: pointer;
4121
4132
  padding: 8px 14px;
4122
4133
  background: rgba(0, 212, 255, 0.1);
4123
4134
  border: 1px solid rgba(0, 212, 255, 0.2);
@@ -4129,6 +4140,203 @@ body {
4129
4140
  border-color: rgba(0, 212, 255, 0.35);
4130
4141
  }
4131
4142
 
4143
+ /* ── Docs Viewer Modal (scrollable markdown viewer) ────────────────────── */
4144
+
4145
+ .docs-viewer-overlay {
4146
+ position: fixed;
4147
+ inset: 0;
4148
+ z-index: 9100;
4149
+ display: flex;
4150
+ align-items: center;
4151
+ justify-content: center;
4152
+ background: rgba(0, 0, 0, 0.75);
4153
+ backdrop-filter: blur(10px);
4154
+ opacity: 0;
4155
+ visibility: hidden;
4156
+ transition:
4157
+ opacity 0.25s ease,
4158
+ visibility 0.25s ease;
4159
+ }
4160
+ .docs-viewer-overlay.open {
4161
+ opacity: 1;
4162
+ visibility: visible;
4163
+ }
4164
+
4165
+ .docs-viewer {
4166
+ position: relative;
4167
+ width: 92%;
4168
+ max-width: 820px;
4169
+ max-height: 82vh;
4170
+ display: flex;
4171
+ flex-direction: column;
4172
+ background: linear-gradient(135deg, rgba(15, 15, 25, 0.98), rgba(10, 10, 18, 0.98));
4173
+ border: 1px solid rgba(255, 255, 255, 0.12);
4174
+ border-radius: 16px;
4175
+ box-shadow:
4176
+ 0 28px 90px rgba(0, 0, 0, 0.7),
4177
+ 0 0 1px rgba(255, 255, 255, 0.1);
4178
+ transform: scale(0.96) translateY(12px);
4179
+ transition: transform 0.25s ease;
4180
+ overflow: hidden;
4181
+ }
4182
+ .docs-viewer-overlay.open .docs-viewer {
4183
+ transform: scale(1) translateY(0);
4184
+ }
4185
+
4186
+ .docs-viewer-header {
4187
+ display: flex;
4188
+ align-items: center;
4189
+ gap: 14px;
4190
+ padding: 18px 22px;
4191
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
4192
+ flex-shrink: 0;
4193
+ }
4194
+ .docs-viewer-title {
4195
+ flex: 1;
4196
+ font-size: 16px;
4197
+ font-weight: 600;
4198
+ color: var(--text);
4199
+ letter-spacing: 0.02em;
4200
+ }
4201
+ .docs-viewer-close {
4202
+ width: 34px;
4203
+ height: 34px;
4204
+ border: none;
4205
+ background: rgba(255, 255, 255, 0.06);
4206
+ border-radius: 8px;
4207
+ color: var(--text-muted);
4208
+ cursor: pointer;
4209
+ display: flex;
4210
+ align-items: center;
4211
+ justify-content: center;
4212
+ transition: all 0.2s ease;
4213
+ }
4214
+ .docs-viewer-close:hover {
4215
+ background: rgba(255, 255, 255, 0.12);
4216
+ color: var(--text);
4217
+ }
4218
+
4219
+ .docs-viewer-body {
4220
+ padding: 20px 28px 28px;
4221
+ overflow-y: auto;
4222
+ flex: 1 1 auto;
4223
+ color: var(--text);
4224
+ font-size: 14px;
4225
+ line-height: 1.6;
4226
+ }
4227
+ .docs-viewer-loading,
4228
+ .docs-viewer-error {
4229
+ color: var(--text-muted);
4230
+ font-style: italic;
4231
+ padding: 8px 0;
4232
+ }
4233
+ .docs-viewer-error {
4234
+ color: var(--accent-red, #f87171);
4235
+ font-style: normal;
4236
+ }
4237
+
4238
+ .docs-viewer-body h1,
4239
+ .docs-viewer-body h2,
4240
+ .docs-viewer-body h3,
4241
+ .docs-viewer-body h4 {
4242
+ color: var(--text);
4243
+ font-weight: 600;
4244
+ line-height: 1.3;
4245
+ margin-top: 1.4em;
4246
+ margin-bottom: 0.5em;
4247
+ }
4248
+ .docs-viewer-body h1 {
4249
+ font-size: 22px;
4250
+ margin-top: 0;
4251
+ }
4252
+ .docs-viewer-body h2 {
4253
+ font-size: 18px;
4254
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
4255
+ padding-bottom: 6px;
4256
+ }
4257
+ .docs-viewer-body h3 {
4258
+ font-size: 15px;
4259
+ color: var(--accent-cyan);
4260
+ }
4261
+ .docs-viewer-body h4 {
4262
+ font-size: 13px;
4263
+ text-transform: uppercase;
4264
+ letter-spacing: 0.06em;
4265
+ color: var(--text-muted);
4266
+ }
4267
+ .docs-viewer-body p {
4268
+ margin: 0.6em 0;
4269
+ }
4270
+ .docs-viewer-body ul,
4271
+ .docs-viewer-body ol {
4272
+ margin: 0.5em 0;
4273
+ padding-left: 1.4em;
4274
+ }
4275
+ .docs-viewer-body li {
4276
+ margin: 0.25em 0;
4277
+ }
4278
+ .docs-viewer-body a {
4279
+ color: var(--accent-cyan);
4280
+ text-decoration: underline;
4281
+ text-underline-offset: 2px;
4282
+ }
4283
+ .docs-viewer-body a:hover {
4284
+ color: var(--text);
4285
+ }
4286
+ .docs-viewer-body code {
4287
+ font-family: var(--font-mono);
4288
+ font-size: 12.5px;
4289
+ background: rgba(255, 255, 255, 0.06);
4290
+ border: 1px solid rgba(255, 255, 255, 0.08);
4291
+ border-radius: 4px;
4292
+ padding: 1px 5px;
4293
+ color: var(--accent-cyan);
4294
+ }
4295
+ .docs-viewer-body pre {
4296
+ background: rgba(0, 0, 0, 0.45);
4297
+ border: 1px solid rgba(255, 255, 255, 0.08);
4298
+ border-radius: 8px;
4299
+ padding: 12px 14px;
4300
+ overflow-x: auto;
4301
+ margin: 0.8em 0;
4302
+ }
4303
+ .docs-viewer-body pre code {
4304
+ background: none;
4305
+ border: none;
4306
+ padding: 0;
4307
+ color: var(--text);
4308
+ font-size: 12px;
4309
+ line-height: 1.55;
4310
+ }
4311
+ .docs-viewer-body table {
4312
+ width: 100%;
4313
+ border-collapse: collapse;
4314
+ margin: 0.8em 0;
4315
+ font-size: 13px;
4316
+ }
4317
+ .docs-viewer-body th,
4318
+ .docs-viewer-body td {
4319
+ text-align: left;
4320
+ padding: 8px 10px;
4321
+ border: 1px solid rgba(255, 255, 255, 0.08);
4322
+ }
4323
+ .docs-viewer-body th {
4324
+ background: rgba(255, 255, 255, 0.04);
4325
+ font-weight: 600;
4326
+ color: var(--text);
4327
+ }
4328
+ .docs-viewer-body blockquote {
4329
+ border-left: 3px solid rgba(0, 212, 255, 0.4);
4330
+ margin: 0.8em 0;
4331
+ padding: 0.3em 0 0.3em 14px;
4332
+ color: var(--text-muted);
4333
+ }
4334
+ .docs-viewer-body hr {
4335
+ border: none;
4336
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
4337
+ margin: 1.4em 0;
4338
+ }
4339
+
4132
4340
  /* ══════════════════════════════════════════════════════════════════════════
4133
4341
  SUBAGENTS PANEL
4134
4342
  ══════════════════════════════════════════════════════════════════════════ */
@@ -5488,4 +5696,3 @@ body {
5488
5696
  box-shadow: 0 0 0 4px rgba(239, 68, 68, 0);
5489
5697
  }
5490
5698
  }
5491
-
@@ -798,7 +798,7 @@
798
798
  </div>
799
799
  <div class="conn-modal-body" id="conn-modal-body"></div>
800
800
  <div class="conn-modal-footer" id="conn-modal-footer">
801
- <a class="conn-modal-docs" id="conn-modal-docs" href="#" target="_blank" rel="noopener">
801
+ <button class="conn-modal-docs" id="conn-modal-docs" type="button">
802
802
  <svg width="12" height="12" viewBox="0 0 24 24" fill="none">
803
803
  <path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20" stroke="currentColor" stroke-width="2" />
804
804
  <path
@@ -808,7 +808,29 @@
808
808
  />
809
809
  </svg>
810
810
  View Documentation
811
- </a>
811
+ </button>
812
+ </div>
813
+ </div>
814
+ </div>
815
+
816
+ <!-- ── Docs Viewer Modal (scrollable markdown viewer) ─────────────────── -->
817
+ <div class="docs-viewer-overlay" id="docs-viewer-overlay" aria-hidden="true">
818
+ <div class="docs-viewer" id="docs-viewer" role="dialog" aria-modal="true">
819
+ <div class="docs-viewer-header">
820
+ <div class="docs-viewer-title" id="docs-viewer-title">Documentation</div>
821
+ <button class="docs-viewer-close" id="docs-viewer-close" title="Close" type="button">
822
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
823
+ <path
824
+ d="M18 6L6 18M6 6l12 12"
825
+ stroke="currentColor"
826
+ stroke-width="2"
827
+ stroke-linecap="round"
828
+ />
829
+ </svg>
830
+ </button>
831
+ </div>
832
+ <div class="docs-viewer-body" id="docs-viewer-body">
833
+ <p class="docs-viewer-loading">Loading documentation…</p>
812
834
  </div>
813
835
  </div>
814
836
  </div>