@symerian/symi 2.2.8 → 2.3.1

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 (361) hide show
  1. package/dist/{accounts-tNElYrCH.js → accounts-CI6zQTJj.js} +14 -14
  2. package/dist/{accounts-qtxJ-6em.js → accounts-CJR8j_Kq.js} +1 -1
  3. package/dist/{accounts-CWktKM8a.js → accounts-ChTFYj8Q.js} +1 -1
  4. package/dist/{acp-cli-C39L0DlT.js → acp-cli-Cu4icbJT.js} +2 -2
  5. package/dist/{acp-cli-C3PXowAr.js → acp-cli-NJzARaHq.js} +2 -2
  6. package/dist/{active-listener-C9r8ZB9m.js → active-listener-D6sXIjAg.js} +1 -1
  7. package/dist/{agent-scope-BxoUQqgM.js → agent-scope-Bw1Ed8W9.js} +3 -3
  8. package/dist/{agents-DbnUoR_W.js → agents-DzuttgJU.js} +7 -7
  9. package/dist/{agents.config-qyBeLoW5.js → agents.config-2HlZJsR3.js} +1 -1
  10. package/dist/{agents.config-D4WnZfkE.js → agents.config-CSucty2T.js} +1 -1
  11. package/dist/{audio-preflight-Cv9Z1hfd.js → audio-preflight-BsfqyC31.js} +29 -29
  12. package/dist/{audio-preflight-BsS_1f9-.js → audio-preflight-C40mKAp7.js} +5 -5
  13. package/dist/{audio-preflight-D6xo_ucC.js → audio-preflight-CWnxkaac.js} +11 -11
  14. package/dist/{audio-preflight-Dx82ytdb.js → audio-preflight-xSDULLAj.js} +11 -11
  15. package/dist/{audit-F6tyY79q.js → audit-Byo5jCLN.js} +5 -5
  16. package/dist/{audit-CbxXbquQ.js → audit-CrITRV6w.js} +5 -5
  17. package/dist/{auth-choice-DYxn5otk.js → auth-choice-ChrEc3cZ.js} +4 -4
  18. package/dist/{auth-choice-TbOBqNzh.js → auth-choice-Cve09z1a.js} +4 -4
  19. package/dist/{banner-BGxrGU83.js → banner-BoLflN_R.js} +1 -1
  20. package/dist/{bindings-B7Ke6LJi.js → bindings-BU2hsBd9.js} +2 -2
  21. package/dist/{browser-cli-BsdB0_5b.js → browser-cli-BG4qPxpM.js} +3 -3
  22. package/dist/{browser-cli-CTQX5_tu.js → browser-cli-CPcnnsJJ.js} +3 -3
  23. package/dist/build-info.json +3 -3
  24. package/dist/bundled/boot-md/handler.js +53 -53
  25. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  26. package/dist/bundled/command-logger/handler.js +1 -1
  27. package/dist/bundled/session-memory/handler.js +53 -53
  28. package/dist/{call-C7OJzLEL.js → call-BcE47FtD.js} +1 -1
  29. package/dist/{call-BOIceRVF.js → call-CJaS1iRF.js} +1 -1
  30. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  31. package/dist/{channel-activity-CsM_hJ_s.js → channel-activity-C9-gaquj.js} +1 -1
  32. package/dist/{channel-options-qDtKomWq.js → channel-options-Dkd1WQZx.js} +1 -1
  33. package/dist/{channel-options-8st4ZPAV.js → channel-options-DqgeO1f6.js} +1 -1
  34. package/dist/{channel-web-DQusem-l.js → channel-web-CJvDQ5Ea.js} +7 -7
  35. package/dist/{channels-cli-DZ9QSHcp.js → channels-cli-D0jjOLRb.js} +29 -29
  36. package/dist/{channels-cli-BfrCgEUI.js → channels-cli-DtqwJZWy.js} +30 -30
  37. package/dist/{chrome-Bf5N4gMh.js → chrome-CDJYxX5a.js} +8 -8
  38. package/dist/{chrome-CCN6Uf1O.js → chrome-Dq0bSDVx.js} +1 -1
  39. package/dist/{chrome-BtuJAYB6.js → chrome-DtPkPq9T.js} +1 -1
  40. package/dist/{chrome-CQNK4Of4.js → chrome-w3SLcQJF.js} +13 -13
  41. package/dist/{chunk-BW5f05BR.js → chunk-ClbN9Pqy.js} +1 -1
  42. package/dist/cli/daemon-cli.js +1 -1
  43. package/dist/{cli-isTrIFLa.js → cli-CEtg8kql.js} +26 -26
  44. package/dist/{cli-D484UoYM.js → cli-CHOmeum9.js} +25 -25
  45. package/dist/{command-format-BaxDnULz.js → command-format-UKHV-j0K.js} +1 -1
  46. package/dist/{command-registry-D4kcHIMn.js → command-registry-Ba2z3dYq.js} +11 -11
  47. package/dist/{commands-registry-D7CTCQPm.js → commands-registry-VSmULp-g.js} +4 -4
  48. package/dist/{completion-cli-CtOpZu6z.js → completion-cli-BgX3MWVU.js} +1 -1
  49. package/dist/{completion-cli-1m5OvbnB.js → completion-cli-CD-306wt.js} +2 -2
  50. package/dist/{config-Btm9gODl.js → config-BmV60pPT.js} +28 -0
  51. package/dist/{config-CkPct-ND.js → config-CHwyw6l5.js} +28 -0
  52. package/dist/{config-CJigbfdK.js → config-DHBLS1Hl.js} +28 -0
  53. package/dist/{config-cli-BlpcRRjX.js → config-cli-Cz87-TYh.js} +2 -2
  54. package/dist/{config-cli-BVbYrdKA.js → config-cli-DAbXVRUL.js} +2 -2
  55. package/dist/{config-CT6a99bQ.js → config-eEaJddXj.js} +40 -12
  56. package/dist/{config-guard-Q2nmK4Xy.js → config-guard-BflmO0t7.js} +3 -3
  57. package/dist/{config-guard-Fe8ddF5U.js → config-guard-CPHvOzsC.js} +2 -2
  58. package/dist/{config-validation-CqVVl--v.js → config-validation-BITwrsxY.js} +1 -1
  59. package/dist/{config-validation-DXA9-y5q.js → config-validation-CmimHAES.js} +1 -1
  60. package/dist/{configure-D4WT6m8B.js → configure-0nrthdSf.js} +10 -10
  61. package/dist/{configure-C-o6fkN4.js → configure-D45ne4lm.js} +10 -10
  62. package/dist/{control-service-DWy5T1wZ.js → control-service-Bz7rxLWq.js} +4 -4
  63. package/dist/{control-service-D2-SfYYP.js → control-service-DEVN6FRR.js} +4 -4
  64. package/dist/control-ui/css/style.css +1437 -548
  65. package/dist/control-ui/index.html +912 -652
  66. package/dist/control-ui/js/app.js +82 -6
  67. package/dist/control-ui/js/debug.js +55 -0
  68. package/dist/control-ui/js/gateway.js +11 -0
  69. package/dist/control-ui/js/models.js +16 -1
  70. package/dist/control-ui/js/render.js +74 -1
  71. package/dist/control-ui/js/render.test.js +36 -35
  72. package/dist/control-ui/js/utils.js +6 -6
  73. package/dist/{cron-cli-DCjmF5-B.js → cron-cli-BP24xl6n.js} +3 -3
  74. package/dist/{cron-cli-BXgHvojs.js → cron-cli-DBIlCvp3.js} +3 -3
  75. package/dist/{daemon-cli-D-Ceof_K.js → daemon-cli-DscwlsKW.js} +6 -6
  76. package/dist/{daemon-cli-2Xzn9zI0.js → daemon-cli-wWnBIQtk.js} +6 -6
  77. package/dist/daemon-cli.js +28 -0
  78. package/dist/{daemon-runtime-DpFImSwP.js → daemon-runtime-2mwX-jqj.js} +1 -1
  79. package/dist/{daemon-runtime-Co0_hiZm.js → daemon-runtime-CfRwa6qh.js} +1 -1
  80. package/dist/{deliver-CBVqE05W.js → deliver-BH0l3UKW.js} +2 -2
  81. package/dist/{deliver-CeOnWRNZ.js → deliver-BmPK91JP.js} +20 -20
  82. package/dist/{deliver-PKvGnPCv.js → deliver-CXRSdUr1.js} +3 -3
  83. package/dist/{deliver-CuDHWgo8.js → deliver-CceEhg3d.js} +3 -3
  84. package/dist/{devices-cli-Sgz97CCh.js → devices-cli-BHiPx2c2.js} +2 -2
  85. package/dist/{devices-cli-gzdkKCIr.js → devices-cli-Dds-25Ve.js} +2 -2
  86. package/dist/{diagnostic-CI0kRQkt.js → diagnostic-C3nsWaw3.js} +1 -1
  87. package/dist/{directory-cli-B7qWiEB9.js → directory-cli-CpUByQew.js} +1 -1
  88. package/dist/{directory-cli-B3reyWxB.js → directory-cli-D6vlxPje.js} +1 -1
  89. package/dist/{dns-cli-w2PtF7dQ.js → dns-cli-BEub5qgQ.js} +1 -1
  90. package/dist/{dns-cli-CAyakH9y.js → dns-cli-Beyzdh3S.js} +1 -1
  91. package/dist/{doctor-completion-CU32z26S.js → doctor-completion-CcDVOtZ5.js} +1 -1
  92. package/dist/{doctor-completion-rtRPARP8.js → doctor-completion-CmGtqUHQ.js} +1 -1
  93. package/dist/{doctor-config-flow-Bvd_Aoem.js → doctor-config-flow-CA3eiKhd.js} +2 -2
  94. package/dist/{doctor-config-flow-q1cK5vqE.js → doctor-config-flow-QnaBd8kL.js} +2 -2
  95. package/dist/entry.js +1 -1
  96. package/dist/{exec-approvals-cli-BGR981x_.js → exec-approvals-cli--zyXYrNY.js} +4 -4
  97. package/dist/{exec-approvals-cli-qL61CX5W.js → exec-approvals-cli-BliRl8VB.js} +4 -4
  98. package/dist/extensionAPI.js +13 -13
  99. package/dist/{frontmatter-C_bv_0P8.js → frontmatter-DPlG6yha.js} +2 -2
  100. package/dist/{gateway-cli-dxsgPoqI.js → gateway-cli-BVN31fwu.js} +135 -45
  101. package/dist/{gateway-cli-D9tJexeo.js → gateway-cli-DajX3Pye.js} +134 -44
  102. package/dist/{gateway-rpc-o-EndnYx.js → gateway-rpc-BxkKeCZ0.js} +1 -1
  103. package/dist/{gateway-rpc-DjjmZ7bN.js → gateway-rpc-DfZSz5JF.js} +1 -1
  104. package/dist/{gemini-auth-CdSPHuLl.js → gemini-auth-CF48hUR9.js} +1 -1
  105. package/dist/{github-copilot-token-C_qUP7p5.js → github-copilot-token-DJqsJ2-r.js} +7 -7
  106. package/dist/{glass-ui-ws-BvSaDLuk.js → glass-ui-ws-CQG6acJl.js} +34 -34
  107. package/dist/{glass-ui-ws-BxliIaQO.js → glass-ui-ws-Z1IOT6Vc.js} +33 -33
  108. package/dist/{health-BpVkd1NR.js → health-D9eQW7fJ.js} +5 -5
  109. package/dist/{health-6atzBDlL.js → health-f056vLGT.js} +5 -5
  110. package/dist/{hooks-cli-BdV4KLxW.js → hooks-cli-CW-IRS72.js} +27 -27
  111. package/dist/{hooks-cli-A0zhogYG.js → hooks-cli-hJ4euq2R.js} +26 -26
  112. package/dist/{image-Crdjqg8r.js → image-CHzdaNJ4.js} +2 -2
  113. package/dist/{image-CAI2RIyk.js → image-CO4meYzg.js} +2 -2
  114. package/dist/{image-Bf75JOg6.js → image-D9uvDTrc.js} +2 -2
  115. package/dist/{image-ops-CvJzsyvE.js → image-ops-S8-8dAhx.js} +1 -1
  116. package/dist/{image-CAUuNGNO.js → image-rZ4x9VS9.js} +4 -4
  117. package/dist/index.js +34 -34
  118. package/dist/{ir-DccrnjsE.js → ir-CbFUkv_T.js} +4 -4
  119. package/dist/{lifecycle-core-S8m0j4NY.js → lifecycle-core-D6LYXpFj.js} +2 -2
  120. package/dist/{lifecycle-core-D7Ye5Yes.js → lifecycle-core-DIBHfMOL.js} +2 -2
  121. package/dist/llm-slug-generator.js +53 -53
  122. package/dist/{local-roots-DMwIh5cS.js → local-roots-C7OCYACU.js} +5 -5
  123. package/dist/{login-Bw5pRDS9.js → login-B8uiUAnV.js} +7 -7
  124. package/dist/{login-Cy0xKkFK.js → login-XprgoYoQ.js} +2 -2
  125. package/dist/{login-CLDr2P2d.js → login-dIlDkG4X.js} +2 -2
  126. package/dist/{login-qr-UgF5nhwc.js → login-qr-CIZk8uKX.js} +12 -12
  127. package/dist/{login-qr-B1vLxxOr.js → login-qr-CUErSLXH.js} +2 -2
  128. package/dist/{login-qr-x-m9V4_i.js → login-qr-CqPpNO1y.js} +2 -2
  129. package/dist/{login-qr-CJ3r_moH.js → login-qr-pbXdFORv.js} +2 -2
  130. package/dist/{login-CrnzK7Rc.js → login-tFW8qUTU.js} +2 -2
  131. package/dist/{logs-cli-DJIwkEZN.js → logs-cli-Du8FCgKK.js} +3 -3
  132. package/dist/{logs-cli-DoSU6ypE.js → logs-cli-xOzIPrHm.js} +3 -3
  133. package/dist/{manager-D_LwXbc6.js → manager-BoLr3xR_.js} +13 -13
  134. package/dist/{manifest-registry-D0IQ3WuX.js → manifest-registry-CneMHk0N.js} +19 -19
  135. package/dist/{markdown-tables-iMQQZu4Q.js → markdown-tables-DSHvnTLx.js} +1 -1
  136. package/dist/{memory-cli-B1eBVFD2.js → memory-cli-C2SWDd8g.js} +1 -1
  137. package/dist/{memory-cli-DKU7WTEa.js → memory-cli-Ca5r9AUb.js} +1 -1
  138. package/dist/{message-channel-Dz5lr5b0.js → message-channel-DbsRltF2.js} +1 -1
  139. package/dist/{model-auth-DK43VicI.js → model-auth-CwOuTuXl.js} +9 -9
  140. package/dist/{model-catalog-D2Q4fkGC.js → model-catalog-CqCsARJX.js} +2 -2
  141. package/dist/{model-catalog-67tJywj6.js → model-catalog-DvBJ8pMD.js} +3 -3
  142. package/dist/{model-picker-Cv_lMtfR.js → model-picker-D5nCutGW.js} +2 -2
  143. package/dist/{model-picker-C5-xr7Au.js → model-picker-Ddo3jHe-.js} +2 -2
  144. package/dist/{models-cli-BIM5pEpQ.js → models-cli-B2ticsCM.js} +29 -29
  145. package/dist/{models-cli-DlUDMBlo.js → models-cli-D9bG44Ao.js} +29 -29
  146. package/dist/{models-config--wR0kLo6.js → models-config-CCMpqFyr.js} +1 -1
  147. package/dist/{models-config-CZKT8W0M.js → models-config-qyOXrOli.js} +1 -1
  148. package/dist/{models-CBEZc-xT.js → models-nO_t1uzp.js} +8 -8
  149. package/dist/{node-cli-D8nG9EDD.js → node-cli-C_G-Q3h-.js} +9 -9
  150. package/dist/{node-cli-DGmvLskU.js → node-cli-DSEhcjUV.js} +9 -9
  151. package/dist/{nodes-cli-B058F0sZ.js → nodes-cli-BIPA9B8G.js} +3 -3
  152. package/dist/{nodes-cli-BZ5aitST.js → nodes-cli-BcnuJajV.js} +3 -3
  153. package/dist/{onboard-BXp3rpw1.js → onboard-BDbpfrZj.js} +7 -7
  154. package/dist/{onboard-DXEF3bw2.js → onboard-BtZ9WqhJ.js} +7 -7
  155. package/dist/{onboard-channels-OKIylMMu.js → onboard-channels-CHE8nfNA.js} +1 -1
  156. package/dist/{onboard-channels-qLCTzt3v.js → onboard-channels-HubyUVjT.js} +1 -1
  157. package/dist/{onboard-custom-BiDvzYz-.js → onboard-custom-C7O-zfQ1.js} +2 -2
  158. package/dist/{onboard-custom-Bcifi3N2.js → onboard-custom-DdWPfzJO.js} +2 -2
  159. package/dist/{onboard-helpers-DHgVt6rY.js → onboard-helpers-ZmZYzlq3.js} +2 -2
  160. package/dist/{onboard-helpers-Cammg0Xb.js → onboard-helpers-_pit1NZW.js} +2 -2
  161. package/dist/{onboard-remote-BnOKv_rG.js → onboard-remote-R1g6st9i.js} +1 -1
  162. package/dist/{onboard-remote-CPI1Dsgo.js → onboard-remote-zUjD7UtM.js} +1 -1
  163. package/dist/{onboard-skills-5R6rRZiZ.js → onboard-skills-BB0YhUmF.js} +1 -1
  164. package/dist/{onboard-skills-LkCNrrQL.js → onboard-skills-ByO_wSN5.js} +1 -1
  165. package/dist/{onboarding-HJJedJ3u.js → onboarding-DtP0sps0.js} +10 -10
  166. package/dist/{onboarding-m_e9LePg.js → onboarding-eVb5gvwo.js} +10 -10
  167. package/dist/{onboarding.finalize-CbjQ-91D.js → onboarding.finalize-CetxPTxL.js} +31 -31
  168. package/dist/{onboarding.finalize-CGVAc5-e.js → onboarding.finalize-D8035U2E.js} +33 -33
  169. package/dist/{onboarding.gateway-config-BOUh5scQ.js → onboarding.gateway-config-BQFO9a_h.js} +4 -4
  170. package/dist/{onboarding.gateway-config-xF_Hfx5r.js → onboarding.gateway-config-CJUgDC6Y.js} +4 -4
  171. package/dist/{outbound-DzTvHYT8.js → outbound-3MZ12YrQ.js} +1 -1
  172. package/dist/{outbound-DHZ4Sktx.js → outbound-DB5Zus0-.js} +1 -1
  173. package/dist/{outbound-attachment-DjNDa3zn.js → outbound-attachment-Co2diKdP.js} +2 -2
  174. package/dist/{outbound-DeJ-MyLv.js → outbound-drXCcH8D.js} +1 -1
  175. package/dist/{outbound-GuMlcXXN.js → outbound-opDNxv-l.js} +7 -7
  176. package/dist/{pairing-cli-BunHc86C.js → pairing-cli-CBLfGvqW.js} +1 -1
  177. package/dist/{pairing-cli-DNAQqsxT.js → pairing-cli-CQRAnpvm.js} +1 -1
  178. package/dist/{paths-DLyHUt31.js → paths-Cb87-LzP.js} +1 -1
  179. package/dist/{paths-Cce4PUkG.js → paths-CySxpNhH.js} +5 -5
  180. package/dist/{pi-auth-json-0SYBFZTt.js → pi-auth-json-DPWPoruO.js} +8 -8
  181. package/dist/{pi-auth-json-C3yexKNU.js → pi-auth-json-DayrlDg_.js} +1 -1
  182. package/dist/{pi-embedded-Cd7Gd0Am.js → pi-embedded-BY-dBus2.js} +250 -39
  183. package/dist/{pi-embedded-C4Cb6hc3.js → pi-embedded-Dc3muKtS.js} +374 -163
  184. package/dist/{pi-embedded-helpers-B86ZS0eB.js → pi-embedded-helpers-B2z46qeM.js} +52 -52
  185. package/dist/{pi-embedded-helpers-UsrsQKwr.js → pi-embedded-helpers-CNPyv_ax.js} +1 -1
  186. package/dist/{pi-embedded-helpers-B2k8Fh9T.js → pi-embedded-helpers-DE9h5GAu.js} +1 -1
  187. package/dist/{pi-embedded-helpers-xjO9noTy.js → pi-embedded-helpers-lgx_U5KS.js} +5 -5
  188. package/dist/{pi-tools.policy-DKHZCIA2.js → pi-tools.policy-CIDBbw6x.js} +2 -2
  189. package/dist/{pi-tools.policy-CwzwRugl.js → pi-tools.policy-De00gPXt.js} +2 -2
  190. package/dist/{plugin-registry-DOEhQFQJ.js → plugin-registry-CuoX8mar.js} +2 -2
  191. package/dist/{plugin-registry-D0iAVBbj.js → plugin-registry-fxcvycGr.js} +2 -2
  192. package/dist/plugin-sdk/{audio-preflight-B8X7BvQ5.js → audio-preflight-DoQQKlxa.js} +5 -5
  193. package/dist/plugin-sdk/{channel-web-B92UQWLf.js → channel-web-CV1KLtZh.js} +7 -7
  194. package/dist/plugin-sdk/{chrome-DxJPopF7.js → chrome-C7c_0I5M.js} +1 -1
  195. package/dist/plugin-sdk/config/model-profiles-builtin.d.ts +9 -0
  196. package/dist/plugin-sdk/config/model-profiles.d.ts +56 -0
  197. package/dist/plugin-sdk/config/resolve-model-profile.d.ts +15 -0
  198. package/dist/plugin-sdk/config/types.models.d.ts +28 -0
  199. package/dist/plugin-sdk/config/zod-schema.core.d.ts +54 -0
  200. package/dist/plugin-sdk/config/zod-schema.d.ts +27 -0
  201. package/dist/plugin-sdk/{config-B0SemGqU.js → config-DDkdiUOR.js} +28 -0
  202. package/dist/plugin-sdk/{deliver-C51eaClJ.js → deliver-BUns_L9e.js} +2 -2
  203. package/dist/plugin-sdk/{image-VGrV0d09.js → image-BOYy0Ump.js} +2 -2
  204. package/dist/plugin-sdk/index.js +17 -17
  205. package/dist/plugin-sdk/{login-CG8p5_rW.js → login-Bh3DZPam.js} +2 -2
  206. package/dist/plugin-sdk/{login-qr-buvA9Dp8.js → login-qr-DbR7odSr.js} +2 -2
  207. package/dist/plugin-sdk/{outbound-LqNDFLO5.js → outbound-rF6G8Xpr.js} +1 -1
  208. package/dist/plugin-sdk/{pi-embedded-helpers-IkpqVZZa.js → pi-embedded-helpers-BveUP4hk.js} +5 -5
  209. package/dist/plugin-sdk/{pw-ai-CjPImm6b.js → pw-ai-DjGUsee-.js} +2 -2
  210. package/dist/plugin-sdk/{replies-BLMuwbVf.js → replies-fI39rPGa.js} +1 -1
  211. package/dist/plugin-sdk/{reply-BS99Apig.js → reply-C4mijdMZ.js} +246 -35
  212. package/dist/plugin-sdk/{runner-pmvwohi9.js → runner-BVqnEfNe.js} +2 -2
  213. package/dist/plugin-sdk/{send-D8Zs62CE.js → send-BHbXh8Ly.js} +1 -1
  214. package/dist/plugin-sdk/{send-DOXV-BQw.js → send-BMfJIhCk.js} +1 -1
  215. package/dist/plugin-sdk/{send-BinD92v_.js → send-BtANzsAo.js} +1 -1
  216. package/dist/plugin-sdk/{send-cUp3Bf9t.js → send-Bxdu6ZZy.js} +1 -1
  217. package/dist/plugin-sdk/{send-BOrHNGsc.js → send-D6LMZJ_h.js} +1 -1
  218. package/dist/plugin-sdk/{session-B0bWB4Wf.js → session-kI0tzViQ.js} +1 -1
  219. package/dist/plugin-sdk/{web-CF79DBe3.js → web-B17UUsjm.js} +17 -17
  220. package/dist/plugin-sdk/{whatsapp-actions-Bp33E4JW.js → whatsapp-actions-CcBzDuL-.js} +2 -2
  221. package/dist/{plugins-DQYI3Fr-.js → plugins-C4C9637U.js} +9 -9
  222. package/dist/{plugins-cli-6nKHKPj8.js → plugins-cli-4OqSGHp-.js} +26 -26
  223. package/dist/{plugins-cli-DU06_0f6.js → plugins-cli-BbE_Qnlk.js} +27 -27
  224. package/dist/{program-D1icw1T9.js → program-DkXOdfM2.js} +33 -33
  225. package/dist/{program-context-Bqybavvo.js → program-context-0bDxGpMx.js} +38 -38
  226. package/dist/{prompt-select-styled-DptZ40df.js → prompt-select-styled-DJkRn30j.js} +14 -14
  227. package/dist/{prompt-select-styled-Cj3jTVJJ.js → prompt-select-styled-_6KbTFXs.js} +14 -14
  228. package/dist/{provider-auth-helpers-CDnMFdFw.js → provider-auth-helpers-Bnkj4QXS.js} +2 -2
  229. package/dist/{provider-auth-helpers-BVSJctmE.js → provider-auth-helpers-BpVAdwK_.js} +2 -2
  230. package/dist/{push-apns-DtKC_-eP.js → push-apns-C0wMP1XU.js} +1 -1
  231. package/dist/{push-apns-CpUJIlI7.js → push-apns-EKnCwrqK.js} +1 -1
  232. package/dist/{pw-ai-DgDn1s1W.js → pw-ai-CbyO1fbh.js} +2 -2
  233. package/dist/{pw-ai-C2hGnRfL.js → pw-ai-De-KR9_s.js} +2 -2
  234. package/dist/{pw-ai-CsvxsEwI.js → pw-ai-DqL87js3.js} +2 -2
  235. package/dist/{pw-ai-BcniFyZm.js → pw-ai-PiQUncix.js} +11 -11
  236. package/dist/{qmd-manager-QHUP-_em.js → qmd-manager-DdZh9PHs.js} +7 -7
  237. package/dist/{qr-cli-Deyb-bdE.js → qr-cli-jd9LdZpq.js} +1 -1
  238. package/dist/{qr-cli-DvDQ233a.js → qr-cli-mgnfD5ce.js} +1 -1
  239. package/dist/{register.agent-DesQbi0N.js → register.agent-B0S1CJEx.js} +32 -32
  240. package/dist/{register.agent-DszKb7kT.js → register.agent-B48Vf_DK.js} +34 -34
  241. package/dist/{register.configure-CPZ2pkCL.js → register.configure-Drr3E9OG.js} +36 -36
  242. package/dist/{register.configure-CiHbtNBW.js → register.configure-Wyv7vb24.js} +37 -37
  243. package/dist/{register.maintenance-BBjwt-34.js → register.maintenance-Cmf17EW0.js} +34 -34
  244. package/dist/{register.maintenance-hUQ3a2-X.js → register.maintenance-TgjAQ4E0.js} +36 -36
  245. package/dist/{register.message-BZ_faykn.js → register.message-BcsPnPvW.js} +26 -26
  246. package/dist/{register.message-BJG43ey1.js → register.message-Dwv2puIB.js} +27 -27
  247. package/dist/{register.onboard-CtDGWgek.js → register.onboard-BDGaSyq2.js} +32 -32
  248. package/dist/{register.onboard-BuvppItf.js → register.onboard-C8w7_w93.js} +33 -33
  249. package/dist/{register.setup-09FZm-3U.js → register.setup-CMGSNKXS.js} +33 -33
  250. package/dist/{register.setup-CK_rXwht.js → register.setup-CiEuZOlI.js} +32 -32
  251. package/dist/{register.status-health-sessions-CYBXZfzw.js → register.status-health-sessions-C8p0uINc.js} +29 -29
  252. package/dist/{register.status-health-sessions-Dq1GhVZd.js → register.status-health-sessions-zKjmZyOs.js} +31 -31
  253. package/dist/{register.subclis-oaqsIg7c.js → register.subclis-CofZE_pt.js} +28 -28
  254. package/dist/{registry-CK4e9hn8.js → registry-DP24za6g.js} +17 -17
  255. package/dist/{replies-CVeSBasT.js → replies-DO80zq73.js} +1 -1
  256. package/dist/{replies-9jiCJtyj.js → replies-DpPvWiGF.js} +3 -3
  257. package/dist/{replies-Dfqu9AXG.js → replies-ZYtI9jr0.js} +1 -1
  258. package/dist/{replies-ByiY6ZyB.js → replies-vgss3_QA.js} +1 -1
  259. package/dist/{reply-BnAPNcvn.js → reply-SBi_U7P7.js} +258 -47
  260. package/dist/{reply-prefix-XlyuyChD.js → reply-prefix-CtL0omgM.js} +1 -1
  261. package/dist/{resolve-route-CZ-1eqw0.js → resolve-route-BVikmvWO.js} +4 -4
  262. package/dist/{retry-Cly39XZB.js → retry-dGG-MbxL.js} +1 -1
  263. package/dist/{routes-br_73dY_.js → routes-BFw2-yAN.js} +3 -3
  264. package/dist/{routes-BZCzIvY1.js → routes-Ba9CUQ8M.js} +3 -3
  265. package/dist/{rpc-CbirYKS1.js → rpc-BfhojW8g.js} +1 -1
  266. package/dist/{rpc-BsIk35AA.js → rpc-BjLadgzu.js} +1 -1
  267. package/dist/{run-main-g9-g4T_a.js → run-main-BJaDO3WW.js} +44 -44
  268. package/dist/{runner-BPcjrrjx.js → runner-BORIO-D3.js} +3 -3
  269. package/dist/{runner-M7hSmkG1.js → runner-CCSMfQee.js} +9 -9
  270. package/dist/{runner-Iw-AU75D.js → runner-CUglpiFP.js} +3 -3
  271. package/dist/{runner-DFFbD4Jj.js → runner-DUBExAb5.js} +2 -2
  272. package/dist/{sandbox-C9zB9HTn.js → sandbox-BFzSUT19.js} +5 -5
  273. package/dist/{sandbox-BnivFdOs.js → sandbox-C-T6hOMv.js} +5 -5
  274. package/dist/{sandbox-cli-6RGP0CNN.js → sandbox-cli-BllVdQzR.js} +6 -6
  275. package/dist/{sandbox-cli-Dl8IMlpe.js → sandbox-cli-Cj5__-gh.js} +6 -6
  276. package/dist/{security-cli-BHG6kV1z.js → security-cli-BFLtWWHy.js} +9 -9
  277. package/dist/{security-cli-CtgTAznE.js → security-cli-Dmb1k47A.js} +9 -9
  278. package/dist/{send-uxuOCFdA.js → send-BArQpbtx.js} +1 -1
  279. package/dist/{send-C1DE47RQ.js → send-C1IYd3g7.js} +1 -1
  280. package/dist/{send-CdxBNofn.js → send-C4Ucr8ep.js} +1 -1
  281. package/dist/{send-Z6uznj5j.js → send-CHEOWVc8.js} +6 -6
  282. package/dist/{send-DB2tDd9M.js → send-CPF8hSFp.js} +1 -1
  283. package/dist/{send-DKvfyTNM.js → send-CR5fRDgW.js} +1 -1
  284. package/dist/{send-CU_BDzc0.js → send-CXxQ_f7L.js} +1 -1
  285. package/dist/{send-CkYljROn.js → send-CY8oqBFg.js} +1 -1
  286. package/dist/{send-Bf-tLRDW.js → send-CZr1hVHY.js} +1 -1
  287. package/dist/{send-DP6zL1r4.js → send-CukP8Vq4.js} +1 -1
  288. package/dist/{send-DKB9atcf.js → send-Cutb0ZDY.js} +1 -1
  289. package/dist/{send-DoiQ-lVY.js → send-D-hWrHoH.js} +1 -1
  290. package/dist/{send-rirP23D6.js → send-DK_pm_7l.js} +1 -1
  291. package/dist/{send-Dv5K7btg.js → send-DTTtmhjA.js} +1 -1
  292. package/dist/{send-DUWSrao-.js → send-DXW6mdgR.js} +1 -1
  293. package/dist/{send-KhJZHqoK.js → send-DbcLJb0P.js} +7 -7
  294. package/dist/{send-B2c8xd6F.js → send-DeEosX8F.js} +18 -18
  295. package/dist/{send-Dp3_Z9LN.js → send-DwKJK3sM.js} +10 -10
  296. package/dist/{send-Bv3GF77o.js → send-tanEMpHN.js} +1 -1
  297. package/dist/{send-IjhsR55j.js → send-zSarozV2.js} +6 -6
  298. package/dist/{server-context-Bn72icrR.js → server-context-CEpFjqSk.js} +5 -5
  299. package/dist/{server-context-BogDcclm.js → server-context-H24IFajW.js} +5 -5
  300. package/dist/{server-methods-CYVVBHwG.js → server-methods-Cm6W01ne.js} +15 -15
  301. package/dist/{server-methods-1TVNg0k5.js → server-methods-CyFB3XQf.js} +16 -16
  302. package/dist/{server-node-events-CPTRFOMY.js → server-node-events-Bhgt3xLw.js} +26 -26
  303. package/dist/{server-node-events-Cvqw-9rw.js → server-node-events-CX1plxJz.js} +27 -27
  304. package/dist/{session-CRf_exZ0.js → session-Ckw7cXeP.js} +1 -1
  305. package/dist/{session-eZHBxAr-.js → session-DIBTkyvE.js} +1 -1
  306. package/dist/{session-BvpMfKh-.js → session-DV1MNlbV.js} +8 -8
  307. package/dist/{session-C4z7523K.js → session-DtMfLMdP.js} +1 -1
  308. package/dist/{session-utils-D5F7F--L.js → session-utils-Bka9dR4m.js} +3 -3
  309. package/dist/{sessions-Cb4Hj78H.js → sessions-CJXnZVjR.js} +1 -1
  310. package/dist/{sessions-B2cR2hug.js → sessions-DgYpBvse.js} +1 -1
  311. package/dist/{sessions-DHCZbuoQ.js → sessions-WBoXk-Ag.js} +3 -3
  312. package/dist/{shared-zPQArNFi.js → shared-D8K9MkWg.js} +1 -1
  313. package/dist/{shared-CxsYh_6Q.js → shared-Knv1hy6h.js} +1 -1
  314. package/dist/{skill-commands-BJMb_psG.js → skill-commands-D610IKhm.js} +9 -9
  315. package/dist/{skills-cli-urhcJuu8.js → skills-cli-BZTBLQTt.js} +1 -1
  316. package/dist/{skills-cli-XmXhTH3z.js → skills-cli-CkTGL9dR.js} +1 -1
  317. package/dist/{skills-BFekKL7i.js → skills-o5WVqM4V.js} +21 -21
  318. package/dist/{sqlite-DRbx2dhW.js → sqlite-6H6Zw1cs.js} +4 -4
  319. package/dist/{status-B7VIwi53.js → status-BBpD_1pG.js} +10 -10
  320. package/dist/{status-CDpLvmFd.js → status-BdmYV3_x.js} +2 -2
  321. package/dist/{status-CCrlpUEA.js → status-CwXg8OO1.js} +9 -9
  322. package/dist/{status-BS3y9HjF.js → status-U_1mE-yc.js} +2 -2
  323. package/dist/{status.update-D8lzj5TK.js → status.update-DbmZz0Aq.js} +1 -1
  324. package/dist/{status.update-Cu6R3wwz.js → status.update-DtwCUTf-.js} +1 -1
  325. package/dist/{store-C0wvOkae.js → store-vVE6N2mH.js} +2 -2
  326. package/dist/{subagent-registry-BSgPGZxs.js → subagent-registry-Du9P0G2U.js} +259 -48
  327. package/dist/{subsystem-Bs9YvKLa.js → subsystem-DgpxyDQ_.js} +1 -1
  328. package/dist/{system-cli-BXvpbG10.js → system-cli-D_EIZpBm.js} +3 -3
  329. package/dist/{system-cli-CD1cvYkc.js → system-cli-UMsMEurS.js} +3 -3
  330. package/dist/{systemd-hints-Cn-fd1AF.js → systemd-hints-BR6gChwm.js} +1 -1
  331. package/dist/{systemd-hints-BMl55p2_.js → systemd-hints-sQipWGd1.js} +1 -1
  332. package/dist/{tables-DuZspiBu.js → tables-BIWsCKXJ.js} +1 -1
  333. package/dist/{target-errors-Be1SwYlW.js → target-errors-DyItGyW9.js} +2 -2
  334. package/dist/{thinking-CdlENGRW.js → thinking-Ni0HF-w6.js} +5 -5
  335. package/dist/{tokens-H1H1LiSQ.js → tokens-c_SLAkVb.js} +1 -1
  336. package/dist/{tool-images-DXB7tqWi.js → tool-images-DBCfXdli.js} +2 -2
  337. package/dist/{tool-loop-detection-Cs8_HCsx.js → tool-loop-detection-Bbc9OPFR.js} +3 -3
  338. package/dist/{tui-OUhw8eT1.js → tui-BJB80muc.js} +4 -4
  339. package/dist/{tui-DJefgPwz.js → tui-CriznorL.js} +4 -4
  340. package/dist/{tui-cli-_ohekmDR.js → tui-cli-C7Q9lK8Q.js} +9 -9
  341. package/dist/{tui-cli-C-CoSVeQ.js → tui-cli-CSIdfCTR.js} +9 -9
  342. package/dist/{update-cli-DL3Tb3b0.js → update-cli-DJzF_9UX.js} +37 -37
  343. package/dist/{update-cli-C8sM6pAA.js → update-cli-_45TJ3hZ.js} +39 -39
  344. package/dist/{update-runner-ChoWv-od.js → update-runner-8Ac4bJ1w.js} +1 -1
  345. package/dist/{update-runner-Dm7EwGFW.js → update-runner-BSQFv9b6.js} +1 -1
  346. package/dist/{web-sQrQA6or.js → web-BZSI7b07.js} +29 -29
  347. package/dist/{web-0w8t_r2B.js → web-BqRsq6mP.js} +57 -57
  348. package/dist/{web-UEqiaso9.js → web-C1Zn8_qW.js} +16 -16
  349. package/dist/{web-VbydcdAk.js → web-w-vV1rCZ.js} +29 -29
  350. package/dist/{webhooks-cli-B8gdUXw-.js → webhooks-cli-ChiCyIaD.js} +1 -1
  351. package/dist/{webhooks-cli-DpiLQ_-A.js → webhooks-cli-cD58DWAE.js} +1 -1
  352. package/dist/{whatsapp-actions-DrReF5st.js → whatsapp-actions-C8nNH4ax.js} +2 -2
  353. package/dist/{whatsapp-actions-xolxich-.js → whatsapp-actions-DbcsdOH3.js} +2 -2
  354. package/dist/{whatsapp-actions-D_KIOhRu.js → whatsapp-actions-DvhI5-DC.js} +2 -2
  355. package/dist/{whatsapp-actions-BVZaCecm.js → whatsapp-actions-oRQjcdQe.js} +23 -23
  356. package/dist/{with-timeout-vknUanNX.js → with-timeout-Di0nddLY.js} +1 -1
  357. package/dist/{with-timeout-DIHZxCIl.js → with-timeout-gmK6RciS.js} +1 -1
  358. package/dist/{workspace-wAaHI8-5.js → workspace-CbvamIU6.js} +6 -6
  359. package/docs/reference/templates/CONFIG-SCHEMA.md +173 -0
  360. package/docs/reference/templates/SYMICORE.md +24 -0
  361. package/package.json +1 -1
@@ -1,740 +1,1000 @@
1
- <!DOCTYPE html>
1
+ <!doctype html>
2
2
  <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <title>Symi</title>
7
- <link rel="stylesheet" href="css/style.css" />
8
- <link rel="stylesheet" href="/vendor/highlight.css" />
9
- </head>
10
- <body>
11
-
12
- <!-- Animated background -->
13
- <div class="bg-orbs">
14
- <div class="orb orb-1"></div>
15
- <div class="orb orb-2"></div>
16
- <div class="orb orb-3"></div>
17
- </div>
18
- <div class="bg-grid"></div>
19
-
20
- <!-- Metrics — Left column -->
21
- <aside class="metrics-col metrics-left">
22
-
23
- <!-- Brand Panel -->
24
- <div class="glass-panel brand-panel">
25
- <div class="brand-mark">◈</div>
26
- <div class="brand-text">
27
- <div class="brand-name">SYMI</div>
28
- <div class="brand-sub">AI Assistant</div>
29
- </div>
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Symi</title>
7
+ <link rel="stylesheet" href="css/style.css" />
8
+ <link rel="stylesheet" href="/vendor/highlight.css" />
9
+ </head>
10
+ <body>
11
+ <!-- Animated background -->
12
+ <div class="bg-orbs">
13
+ <div class="orb orb-1"></div>
14
+ <div class="orb orb-2"></div>
15
+ <div class="orb orb-3"></div>
30
16
  </div>
31
-
32
- <!-- Agent Status Panel — position #1 -->
33
- <div class="glass-panel agent-status-panel" id="agent-status-panel" data-state="idle">
34
- <div class="panel-label">AGENT STATUS</div>
35
- <div class="aso-orb-wrap">
36
- <svg class="aso-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
37
- <!-- Orbit guide tracks -->
38
- <circle class="aso-track" cx="50" cy="50" r="43"/>
39
- <circle class="aso-track" cx="50" cy="50" r="31"/>
40
- <circle class="aso-track" cx="50" cy="50" r="19"/>
41
- <!-- Rotating arc groups -->
42
- <g class="aso-rot aso-rot1">
43
- <circle class="aso-arc" cx="50" cy="50" r="43" stroke-dasharray="55 215"/>
44
- </g>
45
- <g class="aso-rot aso-rot2">
46
- <circle class="aso-arc aso-arc-dim" cx="50" cy="50" r="43" stroke-dasharray="22 248"/>
47
- </g>
48
- <g class="aso-rot aso-rot3">
49
- <circle class="aso-arc" cx="50" cy="50" r="31" stroke-dasharray="40 155"/>
50
- </g>
51
- <g class="aso-rot aso-rot4">
52
- <circle class="aso-arc aso-arc-dim" cx="50" cy="50" r="31" stroke-dasharray="15 180"/>
53
- </g>
54
- <g class="aso-rot aso-rot5">
55
- <circle class="aso-arc" cx="50" cy="50" r="19" stroke-dasharray="20 99"/>
56
- </g>
57
- <!-- Core glow halo -->
58
- <circle class="aso-core-halo" cx="50" cy="50" r="10"/>
59
- <!-- Core dot -->
60
- <circle class="aso-core" cx="50" cy="50" r="5.5"/>
61
- </svg>
62
- </div>
63
- <div class="aso-label" id="aso-label">STANDBY</div>
64
- <div class="aso-sub" id="aso-sub">Awaiting your prompt</div>
65
- <div class="aso-working" id="aso-working">
66
- <span class="aso-working-asterisk">✳</span>
67
- <span class="aso-working-text">Working</span>
17
+ <div class="bg-grid"></div>
18
+
19
+ <!-- Metrics Left column -->
20
+ <aside class="metrics-col metrics-left">
21
+ <!-- Brand Panel -->
22
+ <div class="glass-panel brand-panel">
23
+ <div class="brand-mark">◈</div>
24
+ <div class="brand-text">
25
+ <div class="brand-name">SYMI</div>
26
+ <div class="brand-sub">AI Assistant</div>
27
+ </div>
68
28
  </div>
69
- </div>
70
29
 
71
- <!-- Subagents Panel -->
72
- <div class="glass-panel subagents-panel" id="subagents-panel">
73
- <div class="panel-label">
74
- SUBAGENTS
75
- <span class="subagents-count" id="subagents-count"></span>
30
+ <!-- Agent Status Panel — position #1 -->
31
+ <div class="glass-panel agent-status-panel" id="agent-status-panel" data-state="idle">
32
+ <div class="panel-label">AGENT STATUS</div>
33
+ <div class="aso-orb-wrap">
34
+ <svg class="aso-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
35
+ <!-- Orbit guide tracks -->
36
+ <circle class="aso-track" cx="50" cy="50" r="43" />
37
+ <circle class="aso-track" cx="50" cy="50" r="31" />
38
+ <circle class="aso-track" cx="50" cy="50" r="19" />
39
+ <!-- Rotating arc groups -->
40
+ <g class="aso-rot aso-rot1">
41
+ <circle class="aso-arc" cx="50" cy="50" r="43" stroke-dasharray="55 215" />
42
+ </g>
43
+ <g class="aso-rot aso-rot2">
44
+ <circle
45
+ class="aso-arc aso-arc-dim"
46
+ cx="50"
47
+ cy="50"
48
+ r="43"
49
+ stroke-dasharray="22 248"
50
+ />
51
+ </g>
52
+ <g class="aso-rot aso-rot3">
53
+ <circle class="aso-arc" cx="50" cy="50" r="31" stroke-dasharray="40 155" />
54
+ </g>
55
+ <g class="aso-rot aso-rot4">
56
+ <circle
57
+ class="aso-arc aso-arc-dim"
58
+ cx="50"
59
+ cy="50"
60
+ r="31"
61
+ stroke-dasharray="15 180"
62
+ />
63
+ </g>
64
+ <g class="aso-rot aso-rot5">
65
+ <circle class="aso-arc" cx="50" cy="50" r="19" stroke-dasharray="20 99" />
66
+ </g>
67
+ <!-- Core glow halo -->
68
+ <circle class="aso-core-halo" cx="50" cy="50" r="10" />
69
+ <!-- Core dot -->
70
+ <circle class="aso-core" cx="50" cy="50" r="5.5" />
71
+ </svg>
72
+ </div>
73
+ <div class="aso-label" id="aso-label">STANDBY</div>
74
+ <div class="aso-sub" id="aso-sub">Awaiting your prompt</div>
75
+ <div class="aso-working" id="aso-working">
76
+ <span class="aso-working-asterisk">✳</span>
77
+ <span class="aso-working-text">Working</span>
78
+ </div>
79
+ <div class="aso-model-info">
80
+ <span class="aso-model-label" id="active-model-label"></span>
81
+ <span class="aso-model-badge" id="model-badge"></span>
82
+ </div>
76
83
  </div>
77
84
 
78
- <!-- Quick Deploy Section -->
79
- <div class="quick-deploy-section">
80
- <div class="quick-deploy-label">QUICK DEPLOY</div>
81
- <div class="quick-deploy-grid">
82
- <button class="quick-deploy-btn" data-agent="research" title="Research Agent">
83
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
84
- <circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/>
85
- </svg>
86
- <span>Research</span>
87
- </button>
88
- <button class="quick-deploy-btn" data-agent="review" title="Code Review Agent">
89
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
90
- <polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/>
91
- </svg>
92
- <span>Review</span>
93
- </button>
94
- <button class="quick-deploy-btn" data-agent="writer" title="Writer Agent">
95
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
96
- <path d="M12 19l7-7 3 3-7 7-3-3z"/><path d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"/>
97
- </svg>
98
- <span>Writer</span>
99
- </button>
100
- <button class="quick-deploy-btn" data-agent="analyst" title="Analyst Agent">
85
+ <!-- Subagents Panel -->
86
+ <div class="glass-panel subagents-panel" id="subagents-panel">
87
+ <div class="panel-label">
88
+ SUBAGENTS
89
+ <span class="subagents-count" id="subagents-count"></span>
90
+ </div>
91
+
92
+ <!-- Quick Deploy Section -->
93
+ <div class="quick-deploy-section">
94
+ <div class="quick-deploy-label">QUICK DEPLOY</div>
95
+ <div class="quick-deploy-grid">
96
+ <button class="quick-deploy-btn" data-agent="research" title="Research Agent">
97
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
98
+ <circle cx="11" cy="11" r="8" />
99
+ <path d="M21 21l-4.35-4.35" />
100
+ </svg>
101
+ <span>Research</span>
102
+ </button>
103
+ <button class="quick-deploy-btn" data-agent="review" title="Code Review Agent">
104
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
105
+ <polyline points="16 18 22 12 16 6" />
106
+ <polyline points="8 6 2 12 8 18" />
107
+ </svg>
108
+ <span>Review</span>
109
+ </button>
110
+ <button class="quick-deploy-btn" data-agent="writer" title="Writer Agent">
111
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
112
+ <path d="M12 19l7-7 3 3-7 7-3-3z" />
113
+ <path d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z" />
114
+ </svg>
115
+ <span>Writer</span>
116
+ </button>
117
+ <button class="quick-deploy-btn" data-agent="analyst" title="Analyst Agent">
118
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
119
+ <line x1="18" y1="20" x2="18" y2="10" />
120
+ <line x1="12" y1="20" x2="12" y2="4" />
121
+ <line x1="6" y1="20" x2="6" y2="14" />
122
+ </svg>
123
+ <span>Analyst</span>
124
+ </button>
125
+ </div>
126
+ </div>
127
+
128
+ <!-- Staging Prompt Box -->
129
+ <div class="staging-box" id="staging-box">
130
+ <div class="staging-chips" id="staging-chips">
131
+ <span class="staging-empty">Select agents above</span>
132
+ </div>
133
+ <button class="staging-deploy-btn" id="staging-deploy-btn" disabled>
101
134
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
102
- <line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/>
135
+ <path d="M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z" />
103
136
  </svg>
104
- <span>Analyst</span>
137
+ Deploy
105
138
  </button>
106
139
  </div>
107
- </div>
108
140
 
109
- <!-- Staging Prompt Box -->
110
- <div class="staging-box" id="staging-box">
111
- <div class="staging-chips" id="staging-chips">
112
- <span class="staging-empty">Select agents above</span>
141
+ <!-- Active Subagents list -->
142
+ <div class="subagents-active-label">ACTIVE</div>
143
+ <div class="subagents-list" id="subagents-list">
144
+ <div class="subagents-empty" id="subagents-empty">
145
+ <div class="subagents-empty-icon">
146
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
147
+ <circle cx="12" cy="12" r="3" />
148
+ <path
149
+ d="M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"
150
+ />
151
+ </svg>
152
+ </div>
153
+ <div class="subagents-empty-text">No active subagents</div>
154
+ </div>
113
155
  </div>
114
- <button class="staging-deploy-btn" id="staging-deploy-btn" disabled>
156
+
157
+ <!-- Custom Spawn button -->
158
+ <button class="subagent-spawn-btn" id="subagent-spawn-btn" title="Spawn a custom subagent">
115
159
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
116
- <path d="M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z"/>
160
+ <circle cx="12" cy="12" r="10" />
161
+ <path d="M12 8v8M8 12h8" />
117
162
  </svg>
118
- Deploy
163
+ <span>Custom Subagent</span>
119
164
  </button>
120
165
  </div>
121
166
 
122
- <!-- Active Subagents list -->
123
- <div class="subagents-active-label">ACTIVE</div>
124
- <div class="subagents-list" id="subagents-list">
125
- <div class="subagents-empty" id="subagents-empty">
126
- <div class="subagents-empty-icon">
127
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
128
- <circle cx="12" cy="12" r="3"/>
129
- <path d="M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"/>
130
- </svg>
167
+ <!-- Reasoning Panel -->
168
+ <div class="glass-panel reasoning-panel" id="reasoning-panel">
169
+ <div class="panel-label">
170
+ REASONING
171
+ <span class="reasoning-live-dot" id="reasoning-live-dot"></span>
172
+ </div>
173
+ <div class="reasoning-feed" id="reasoning-feed">
174
+ <div class="reasoning-empty" id="reasoning-empty">
175
+ <div class="reasoning-empty-icon">
176
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
177
+ <circle cx="12" cy="12" r="3" />
178
+ <path
179
+ d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"
180
+ />
181
+ </svg>
182
+ </div>
183
+ <div class="reasoning-empty-text">No reasoning yet</div>
131
184
  </div>
132
- <div class="subagents-empty-text">No active subagents</div>
133
185
  </div>
134
186
  </div>
135
-
136
- <!-- Custom Spawn button -->
137
- <button class="subagent-spawn-btn" id="subagent-spawn-btn" title="Spawn a custom subagent">
138
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
139
- <circle cx="12" cy="12" r="10"/><path d="M12 8v8M8 12h8"/>
140
- </svg>
141
- <span>Custom Subagent</span>
142
- </button>
143
- </div>
144
-
145
- <!-- Reasoning Panel -->
146
- <div class="glass-panel reasoning-panel" id="reasoning-panel">
147
- <div class="panel-label">
148
- REASONING
149
- <span class="reasoning-live-dot" id="reasoning-live-dot"></span>
150
- </div>
151
- <div class="reasoning-feed" id="reasoning-feed">
152
- <div class="reasoning-empty" id="reasoning-empty">
153
- <div class="reasoning-empty-icon">
154
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
155
- <circle cx="12" cy="12" r="3"/>
156
- <path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/>
187
+ </aside>
188
+
189
+ <!-- Metrics Right column -->
190
+ <aside class="metrics-col metrics-right">
191
+ <!-- Connections Panel -->
192
+ <div class="glass-panel connections-panel" id="connections-panel">
193
+ <div class="panel-label">CONNECTIONS</div>
194
+ <button class="conn-btn" id="conn-slack" data-channel="slack">
195
+ <div class="conn-icon conn-icon-slack">
196
+ <svg viewBox="0 0 24 24" fill="currentColor">
197
+ <path
198
+ d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.124 2.521a2.528 2.528 0 0 1 2.52-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.52V8.834zm-1.271 0a2.528 2.528 0 0 1-2.521 2.521 2.528 2.528 0 0 1-2.521-2.521V2.522A2.528 2.528 0 0 1 15.166 0a2.528 2.528 0 0 1 2.521 2.522v6.312zm-2.521 10.124a2.528 2.528 0 0 1 2.521 2.52A2.528 2.528 0 0 1 15.166 24a2.528 2.528 0 0 1-2.521-2.522v-2.52h2.521zm0-1.271a2.528 2.528 0 0 1-2.521-2.521 2.528 2.528 0 0 1 2.521-2.521h6.312A2.528 2.528 0 0 1 24 15.166a2.528 2.528 0 0 1-2.522 2.521h-6.312z"
199
+ />
157
200
  </svg>
158
201
  </div>
159
- <div class="reasoning-empty-text">No reasoning yet</div>
160
- </div>
202
+ <div class="conn-info">
203
+ <span class="conn-name">Slack</span>
204
+ <span class="conn-btn-status" id="conn-slack-status">Checking...</span>
205
+ </div>
206
+ <div class="conn-state" id="conn-slack-state"><div class="conn-dot"></div></div>
207
+ <span class="conn-notif" id="conn-slack-notif"></span>
208
+ </button>
209
+ <button class="conn-btn" id="conn-email" data-channel="email">
210
+ <div class="conn-icon conn-icon-email">
211
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
212
+ <rect x="2" y="4" width="20" height="16" rx="2" />
213
+ <path d="M22 6l-10 7L2 6" />
214
+ </svg>
215
+ </div>
216
+ <div class="conn-info">
217
+ <span class="conn-name">Email</span>
218
+ <span class="conn-btn-status" id="conn-email-status">Checking...</span>
219
+ </div>
220
+ <div class="conn-state" id="conn-email-state"><div class="conn-dot"></div></div>
221
+ <span class="conn-notif" id="conn-email-notif"></span>
222
+ </button>
223
+ <button class="conn-btn" id="conn-teams" data-channel="msteams">
224
+ <div class="conn-icon conn-icon-teams">
225
+ <svg viewBox="0 0 24 24" fill="currentColor">
226
+ <path
227
+ d="M19.19 8.77c-.73 0-1.39.29-1.88.76V8.5a2.5 2.5 0 0 0-2.5-2.5h-1.62c.18-.46.28-.96.28-1.48a4.04 4.04 0 0 0-4.04-4.04c-2.23 0-4.04 1.81-4.04 4.04 0 .52.1 1.02.28 1.48H4.5A2.5 2.5 0 0 0 2 8.5v9a2.5 2.5 0 0 0 2.5 2.5h9a2.5 2.5 0 0 0 2.5-2.5v-.97c.49.47 1.15.76 1.88.76a2.69 2.69 0 0 0 2.69-2.69v-3.14a2.69 2.69 0 0 0-2.69-2.69h.31zM9.43 2.98a2.04 2.04 0 1 1 0 4.08 2.04 2.04 0 0 1 0-4.08zm4.57 14.52a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 .5.5v9zm5.88-4.17a.69.69 0 0 1-.69.69.69.69 0 0 1-.69-.69v-3.14c0-.38.31-.69.69-.69.38 0 .69.31.69.69v3.14z"
228
+ />
229
+ <circle cx="17.5" cy="5.5" r="2.5" />
230
+ </svg>
231
+ </div>
232
+ <div class="conn-info">
233
+ <span class="conn-name">Teams</span>
234
+ <span class="conn-btn-status" id="conn-teams-status">Checking...</span>
235
+ </div>
236
+ <div class="conn-state" id="conn-teams-state"><div class="conn-dot"></div></div>
237
+ <span class="conn-notif" id="conn-teams-notif"></span>
238
+ </button>
161
239
  </div>
162
- </div>
163
240
 
164
- </aside>
165
-
166
- <!-- Metrics — Right column -->
167
- <aside class="metrics-col metrics-right">
168
- <!-- Connections Panel -->
169
- <div class="glass-panel connections-panel" id="connections-panel">
170
- <div class="panel-label">CONNECTIONS</div>
171
- <button class="conn-btn" id="conn-slack" data-channel="slack">
172
- <div class="conn-icon conn-icon-slack">
173
- <svg viewBox="0 0 24 24" fill="currentColor">
174
- <path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.124 2.521a2.528 2.528 0 0 1 2.52-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.52V8.834zm-1.271 0a2.528 2.528 0 0 1-2.521 2.521 2.528 2.528 0 0 1-2.521-2.521V2.522A2.528 2.528 0 0 1 15.166 0a2.528 2.528 0 0 1 2.521 2.522v6.312zm-2.521 10.124a2.528 2.528 0 0 1 2.521 2.52A2.528 2.528 0 0 1 15.166 24a2.528 2.528 0 0 1-2.521-2.522v-2.52h2.521zm0-1.271a2.528 2.528 0 0 1-2.521-2.521 2.528 2.528 0 0 1 2.521-2.521h6.312A2.528 2.528 0 0 1 24 15.166a2.528 2.528 0 0 1-2.522 2.521h-6.312z"/>
175
- </svg>
241
+ <div class="glass-panel">
242
+ <div class="panel-label">SYMI GATEWAY</div>
243
+ <div class="net-row">
244
+ <div class="status-dot dot-green pulse"></div>
245
+ <span class="net-name">Gateway</span>
246
+ <span class="badge badge-green">ONLINE</span>
176
247
  </div>
177
- <div class="conn-info">
178
- <span class="conn-name">Slack</span>
179
- <span class="conn-btn-status" id="conn-slack-status">Checking...</span>
248
+ <div class="net-row">
249
+ <span class="net-name muted">Port</span>
250
+ <span class="net-ip">18789</span>
180
251
  </div>
181
- <div class="conn-state" id="conn-slack-state"><div class="conn-dot"></div></div>
182
- <span class="conn-notif" id="conn-slack-notif"></span>
183
- </button>
184
- <button class="conn-btn" id="conn-email" data-channel="email">
185
- <div class="conn-icon conn-icon-email">
186
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
187
- <rect x="2" y="4" width="20" height="16" rx="2"/><path d="M22 6l-10 7L2 6"/>
188
- </svg>
252
+ <div class="net-row">
253
+ <span class="net-name muted">Auth</span>
254
+ <span class="badge badge-blue">TOKEN</span>
189
255
  </div>
190
- <div class="conn-info">
191
- <span class="conn-name">Email</span>
192
- <span class="conn-btn-status" id="conn-email-status">Checking...</span>
193
- </div>
194
- <div class="conn-state" id="conn-email-state"><div class="conn-dot"></div></div>
195
- <span class="conn-notif" id="conn-email-notif"></span>
196
- </button>
197
- <button class="conn-btn" id="conn-teams" data-channel="msteams">
198
- <div class="conn-icon conn-icon-teams">
199
- <svg viewBox="0 0 24 24" fill="currentColor">
200
- <path d="M19.19 8.77c-.73 0-1.39.29-1.88.76V8.5a2.5 2.5 0 0 0-2.5-2.5h-1.62c.18-.46.28-.96.28-1.48a4.04 4.04 0 0 0-4.04-4.04c-2.23 0-4.04 1.81-4.04 4.04 0 .52.1 1.02.28 1.48H4.5A2.5 2.5 0 0 0 2 8.5v9a2.5 2.5 0 0 0 2.5 2.5h9a2.5 2.5 0 0 0 2.5-2.5v-.97c.49.47 1.15.76 1.88.76a2.69 2.69 0 0 0 2.69-2.69v-3.14a2.69 2.69 0 0 0-2.69-2.69h.31zM9.43 2.98a2.04 2.04 0 1 1 0 4.08 2.04 2.04 0 0 1 0-4.08zm4.57 14.52a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 .5.5v9zm5.88-4.17a.69.69 0 0 1-.69.69.69.69 0 0 1-.69-.69v-3.14c0-.38.31-.69.69-.69.38 0 .69.31.69.69v3.14z"/>
201
- <circle cx="17.5" cy="5.5" r="2.5"/>
202
- </svg>
203
- </div>
204
- <div class="conn-info">
205
- <span class="conn-name">Teams</span>
206
- <span class="conn-btn-status" id="conn-teams-status">Checking...</span>
256
+ <div class="net-row">
257
+ <span class="net-name muted">Browser CDP</span>
258
+ <span class="net-ip">18800</span>
207
259
  </div>
208
- <div class="conn-state" id="conn-teams-state"><div class="conn-dot"></div></div>
209
- <span class="conn-notif" id="conn-teams-notif"></span>
210
- </button>
211
- </div>
212
-
213
- <div class="glass-panel">
214
- <div class="panel-label">SYMI GATEWAY</div>
215
- <div class="net-row">
216
- <div class="status-dot dot-green pulse"></div>
217
- <span class="net-name">Gateway</span>
218
- <span class="badge badge-green">ONLINE</span>
219
- </div>
220
- <div class="net-row">
221
- <span class="net-name muted">Port</span>
222
- <span class="net-ip">18789</span>
223
- </div>
224
- <div class="net-row">
225
- <span class="net-name muted">Auth</span>
226
- <span class="badge badge-blue">TOKEN</span>
227
- </div>
228
- <div class="net-row">
229
- <span class="net-name muted">Browser CDP</span>
230
- <span class="net-ip">18800</span>
231
260
  </div>
232
- </div>
233
261
 
234
- <div class="glass-panel" id="model-routing-panel">
235
- <div class="panel-label">MODEL ROUTING</div>
236
- <div class="model-toggle" id="model-toggle">
237
- <button class="model-toggle-btn" data-model="local">Local</button>
238
- <button class="model-toggle-btn" data-model="redsand">CoreWeave</button>
239
- <button class="model-toggle-btn" data-model="api">API</button>
240
- </div>
241
- <div class="model-status" id="model-status">loading…</div>
242
- </div>
243
-
244
- <!-- Scheduling Panel -->
245
- <div class="glass-panel scheduling-panel" id="scheduling-panel">
246
- <div class="panel-label">
247
- SCHEDULING
248
- <span class="schedule-count" id="schedule-count"></span>
249
- </div>
250
- <div class="schedule-list" id="schedule-list">
251
- <div class="schedule-empty" id="schedule-empty">
252
- <div class="schedule-empty-icon">
253
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
254
- <circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/>
255
- </svg>
256
- </div>
257
- <div class="schedule-empty-text">No scheduled tasks</div>
262
+ <div class="glass-panel" id="model-routing-panel">
263
+ <div class="panel-label">MODEL ROUTING</div>
264
+ <div class="model-toggle" id="model-toggle">
265
+ <button class="model-toggle-btn" data-model="local">Local</button>
266
+ <button class="model-toggle-btn" data-model="redsand">CoreWeave</button>
267
+ <button class="model-toggle-btn" data-model="api">API</button>
258
268
  </div>
269
+ <div class="model-status" id="model-status">loading…</div>
259
270
  </div>
260
- <button class="schedule-add-btn" id="schedule-add-btn" title="Add a scheduled task">
261
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
262
- <circle cx="12" cy="12" r="10"/><path d="M12 8v8M8 12h8"/>
263
- </svg>
264
- <span>Add Schedule</span>
265
- </button>
266
- </div>
267
271
 
268
- <!-- Symipulse Panel -->
269
- <div class="glass-panel symipulse-panel" id="symipulse-panel">
270
- <div class="panel-label">
271
- SYMIPULSE
272
- <span class="symipulse-live-dot" id="symipulse-live-dot"></span>
273
- </div>
274
- <div class="symipulse-feed" id="symipulse-feed">
275
- <div class="symipulse-empty" id="symipulse-empty">
276
- <div class="symipulse-empty-text">No heartbeats yet</div>
272
+ <!-- Scheduling Panel -->
273
+ <div class="glass-panel scheduling-panel" id="scheduling-panel">
274
+ <div class="panel-label">
275
+ SCHEDULING
276
+ <span class="schedule-count" id="schedule-count"></span>
277
277
  </div>
278
- </div>
279
- </div>
280
- </aside>
281
-
282
- <!-- Response waterfall area -->
283
- <main class="response-area" id="response-area"></main>
284
-
285
- <!-- Floating prompt bar -->
286
- <footer class="prompt-wrap">
287
- <div class="prompt-bar" id="prompt-bar">
288
-
289
- <!-- Row 1: icon + input + send -->
290
- <div class="prompt-row-main">
291
- <div class="prompt-icon">
292
- <svg width="18" height="18" viewBox="0 0 24 24" fill="none">
293
- <path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
294
- </svg>
278
+ <div class="schedule-list" id="schedule-list">
279
+ <div class="schedule-empty" id="schedule-empty">
280
+ <div class="schedule-empty-icon">
281
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
282
+ <circle cx="12" cy="12" r="10" />
283
+ <polyline points="12 6 12 12 16 14" />
284
+ </svg>
285
+ </div>
286
+ <div class="schedule-empty-text">No scheduled tasks</div>
287
+ </div>
295
288
  </div>
296
- <textarea
297
- id="prompt-input"
298
- placeholder="Ask Symi anything…"
299
- autocomplete="off"
300
- spellcheck="false"
301
- rows="1"
302
- ></textarea>
303
- <button class="send-btn" id="send-btn" title="Send">
304
- <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
305
- <path d="M22 2L11 13" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
306
- <path d="M22 2L15 22 11 13 2 9l20-7z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
289
+ <button class="schedule-add-btn" id="schedule-add-btn" title="Add a scheduled task">
290
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
291
+ <circle cx="12" cy="12" r="10" />
292
+ <path d="M12 8v8M8 12h8" />
307
293
  </svg>
294
+ <span>Add Schedule</span>
308
295
  </button>
309
296
  </div>
310
297
 
311
- <!-- Row 2: action buttons (right-aligned) -->
312
- <div class="prompt-row-actions">
313
- <button class="history-btn" id="history-btn" title="Browse previous sessions">
314
- <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
315
- <circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2"/>
316
- <path d="M12 7v5l3 3" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
317
- </svg>
318
- <span class="history-btn-label">History</span>
319
- </button>
320
-
321
- <!-- Stop button — shown while AI is responding, hidden otherwise -->
322
- <button class="stop-btn" id="stop-btn" title="Stop the current response">
323
- <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
324
- <rect x="4" y="4" width="16" height="16" rx="2" fill="currentColor" opacity="0.85"/>
325
- </svg>
326
- <span class="stop-btn-label">Stop</span>
327
- </button>
328
-
329
- <!-- Queue button — replaces New Session while AI is responding -->
330
- <button class="queue-btn" id="queue-btn" title="Queue this message — sends automatically once Symi finishes">
331
- <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
332
- <path d="M3 6h18M3 12h12M3 18h8" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
333
- </svg>
334
- <span class="queue-btn-label">Queue ↵</span>
335
- <span class="queue-cancel-x" id="queue-cancel-x" title="Cancel queued message">✕</span>
336
- </button>
337
-
338
- <button class="new-session-btn" id="new-session-btn" title="New session — clears conversation and starts fresh">
339
- <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
340
- <path d="M11 4H7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-4"
341
- stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
342
- <path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L13 14l-4 1 1-4 8.5-8.5z"
343
- stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
344
- </svg>
345
- <span class="new-session-label">New Session</span>
346
- </button>
298
+ <!-- Debug Panel (hidden by default, toggle with Shift+D) -->
299
+ <div class="glass-panel debug-panel collapsed" id="debug-panel">
300
+ <div class="panel-label" onclick="this.parentElement.classList.toggle('collapsed')">
301
+ DEBUG EVENTS <span class="debug-toggle-arrow">&#x25B6;</span>
302
+ </div>
303
+ <div class="debug-entries" id="debug-panel-entries"></div>
347
304
  </div>
348
305
 
349
- </div>
350
- </footer>
351
-
352
- <!-- ── Menu Trigger ──────────────────────────────────────────────── -->
353
- <button class="menu-trigger" id="menu-trigger" aria-label="Command menu" title="Command Menu (M)">
354
- <svg class="menu-icon-grid" width="17" height="17" viewBox="0 0 18 18" fill="none">
355
- <circle cx="3" cy="3" r="1.6" fill="currentColor"/>
356
- <circle cx="9" cy="3" r="1.6" fill="currentColor"/>
357
- <circle cx="15" cy="3" r="1.6" fill="currentColor"/>
358
- <circle cx="3" cy="9" r="1.6" fill="currentColor"/>
359
- <circle cx="9" cy="9" r="1.6" fill="currentColor"/>
360
- <circle cx="15" cy="9" r="1.6" fill="currentColor"/>
361
- <circle cx="3" cy="15" r="1.6" fill="currentColor"/>
362
- <circle cx="9" cy="15" r="1.6" fill="currentColor"/>
363
- <circle cx="15" cy="15" r="1.6" fill="currentColor"/>
364
- </svg>
365
- <svg class="menu-icon-close" width="17" height="17" viewBox="0 0 18 18" fill="none">
366
- <path d="M2 2l14 14M16 2 2 16" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"/>
367
- </svg>
368
- </button>
369
-
370
- <!-- ── Command Overlay ────────────────────────────────────────────── -->
371
- <div class="cmd-overlay" id="cmd-overlay" aria-hidden="true">
372
- <div class="cmd-backdrop" id="cmd-backdrop"></div>
373
- <div class="cmd-shell">
374
-
375
- <!-- Header bar -->
376
- <div class="cmd-header">
377
- <div class="cmd-brand">
378
- <span class="cmd-brand-glyph">◈</span>
379
- <span class="cmd-brand-name">SYMI</span>
380
- <span class="cmd-brand-sep">/</span>
381
- <span class="cmd-brand-sub">COMMAND CENTER</span>
382
- </div>
383
- <div class="cmd-esc-hint">Press <kbd class="cmd-kbd">ESC</kbd> to close</div>
306
+ <!-- Symipulse Panel -->
307
+ <div class="glass-panel symipulse-panel" id="symipulse-panel">
308
+ <div class="panel-label">
309
+ SYMIPULSE
310
+ <span class="symipulse-live-dot" id="symipulse-live-dot"></span>
311
+ </div>
312
+ <div class="symipulse-feed" id="symipulse-feed">
313
+ <div class="symipulse-empty" id="symipulse-empty">
314
+ <div class="symipulse-empty-text">No heartbeats yet</div>
315
+ </div>
316
+ </div>
384
317
  </div>
385
-
386
- <!-- 5-group command grid -->
387
- <div class="cmd-grid">
388
-
389
- <!-- ── CHAT ──────────────────────────────────────────────── -->
390
- <div class="cmd-group cmd-group--chat">
391
- <div class="cmd-group-hd">
392
- <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
393
- <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
318
+ </aside>
319
+
320
+ <!-- Response waterfall area -->
321
+ <main class="response-area" id="response-area"></main>
322
+
323
+ <!-- Floating prompt bar -->
324
+ <footer class="prompt-wrap">
325
+ <div class="prompt-bar" id="prompt-bar">
326
+ <!-- Row 1: icon + input + send -->
327
+ <div class="prompt-row-main">
328
+ <div class="prompt-icon">
329
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none">
330
+ <path
331
+ d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"
332
+ stroke="currentColor"
333
+ stroke-width="1.5"
334
+ stroke-linecap="round"
335
+ stroke-linejoin="round"
336
+ />
394
337
  </svg>
395
- <span class="cmd-group-label">CHAT</span>
396
- </div>
397
- <div class="cmd-items">
398
- <a class="cmd-item" href="#" data-href="#chat">
399
- <span class="cmd-item-icon">◈</span>
400
- <div class="cmd-item-body">
401
- <span class="cmd-item-name">Chat</span>
402
- <span class="cmd-item-desc">Main conversation</span>
403
- </div>
404
- <span class="cmd-item-badge">ACTIVE</span>
405
- </a>
406
338
  </div>
339
+ <textarea
340
+ id="prompt-input"
341
+ placeholder="Ask Symi anything…"
342
+ autocomplete="off"
343
+ spellcheck="false"
344
+ rows="1"
345
+ ></textarea>
346
+ <button class="send-btn" id="send-btn" title="Send">
347
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
348
+ <path d="M22 2L11 13" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
349
+ <path
350
+ d="M22 2L15 22 11 13 2 9l20-7z"
351
+ stroke="currentColor"
352
+ stroke-width="2"
353
+ stroke-linecap="round"
354
+ stroke-linejoin="round"
355
+ />
356
+ </svg>
357
+ </button>
407
358
  </div>
408
359
 
409
- <!-- ── CONTROL ───────────────────────────────────────────── -->
410
- <div class="cmd-group cmd-group--control">
411
- <div class="cmd-group-hd">
412
- <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
413
- <rect x="3" y="3" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.5"/>
414
- <rect x="14" y="3" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.5"/>
415
- <rect x="3" y="14" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.5"/>
416
- <rect x="14" y="14" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.5"/>
360
+ <!-- Row 2: action buttons (right-aligned) -->
361
+ <div class="prompt-row-actions">
362
+ <button class="history-btn" id="history-btn" title="Browse previous sessions">
363
+ <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
364
+ <circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2" />
365
+ <path d="M12 7v5l3 3" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
417
366
  </svg>
418
- <span class="cmd-group-label">CONTROL</span>
419
- </div>
420
- <div class="cmd-items cmd-items--grid">
421
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/overview">
422
- <span class="cmd-item-icon">⊙</span>
423
- <div class="cmd-item-body"><span class="cmd-item-name">Overview</span><span class="cmd-item-desc">System overview</span></div>
424
- </a>
425
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/channels">
426
- <span class="cmd-item-icon">⊞</span>
427
- <div class="cmd-item-body"><span class="cmd-item-name">Channels</span><span class="cmd-item-desc">Messaging channels</span></div>
428
- </a>
429
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/instances">
430
- <span class="cmd-item-icon">⊟</span>
431
- <div class="cmd-item-body"><span class="cmd-item-name">Instances</span><span class="cmd-item-desc">AI instances</span></div>
432
- </a>
433
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/sessions">
434
- <span class="cmd-item-icon">≋</span>
435
- <div class="cmd-item-body"><span class="cmd-item-name">Sessions</span><span class="cmd-item-desc">Active sessions</span></div>
436
- </a>
437
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/usage">
438
- <span class="cmd-item-icon">▲</span>
439
- <div class="cmd-item-body"><span class="cmd-item-name">Usage</span><span class="cmd-item-desc">Tokens &amp; costs</span></div>
440
- </a>
441
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/cron">
442
- <span class="cmd-item-icon">◷</span>
443
- <div class="cmd-item-body"><span class="cmd-item-name">Cron Jobs</span><span class="cmd-item-desc">Scheduled tasks</span></div>
444
- </a>
445
- </div>
446
- </div>
367
+ <span class="history-btn-label">History</span>
368
+ </button>
447
369
 
448
- <!-- ── AGENT ─────────────────────────────────────────────── -->
449
- <div class="cmd-group cmd-group--agent">
450
- <div class="cmd-group-hd">
451
- <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
452
- <circle cx="12" cy="12" r="3" stroke="currentColor" stroke-width="1.5"/>
453
- <path d="M12 2v2M12 20v2M2 12h2M20 12h2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
370
+ <!-- Stop button shown while AI is responding, hidden otherwise -->
371
+ <button class="stop-btn" id="stop-btn" title="Stop the current response">
372
+ <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
373
+ <rect x="4" y="4" width="16" height="16" rx="2" fill="currentColor" opacity="0.85" />
454
374
  </svg>
455
- <span class="cmd-group-label">AGENT</span>
456
- </div>
457
- <div class="cmd-items">
458
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/agents">
459
- <span class="cmd-item-icon">◈</span>
460
- <div class="cmd-item-body"><span class="cmd-item-name">Agents</span><span class="cmd-item-desc">Agent management</span></div>
461
- </a>
462
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/skills">
463
- <span class="cmd-item-icon">⚡</span>
464
- <div class="cmd-item-body"><span class="cmd-item-name">Skills</span><span class="cmd-item-desc">Agent capabilities</span></div>
465
- </a>
466
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/nodes">
467
- <span class="cmd-item-icon">⬡</span>
468
- <div class="cmd-item-body"><span class="cmd-item-name">Nodes</span><span class="cmd-item-desc">Connected devices</span></div>
469
- </a>
375
+ <span class="stop-btn-label">Stop</span>
376
+ </button>
377
+
378
+ <!-- Queue button — replaces New Session while AI is responding -->
379
+ <button
380
+ class="queue-btn"
381
+ id="queue-btn"
382
+ title="Queue this message — sends automatically once Symi finishes"
383
+ >
384
+ <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
385
+ <path
386
+ d="M3 6h18M3 12h12M3 18h8"
387
+ stroke="currentColor"
388
+ stroke-width="2"
389
+ stroke-linecap="round"
390
+ />
391
+ </svg>
392
+ <span class="queue-btn-label">Queue ↵</span>
393
+ <span class="queue-cancel-x" id="queue-cancel-x" title="Cancel queued message">✕</span>
394
+ </button>
395
+
396
+ <button
397
+ class="new-session-btn"
398
+ id="new-session-btn"
399
+ title="New session — clears conversation and starts fresh"
400
+ >
401
+ <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
402
+ <path
403
+ d="M11 4H7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-4"
404
+ stroke="currentColor"
405
+ stroke-width="2"
406
+ stroke-linecap="round"
407
+ />
408
+ <path
409
+ d="M18.5 2.5a2.121 2.121 0 0 1 3 3L13 14l-4 1 1-4 8.5-8.5z"
410
+ stroke="currentColor"
411
+ stroke-width="2"
412
+ stroke-linecap="round"
413
+ stroke-linejoin="round"
414
+ />
415
+ </svg>
416
+ <span class="new-session-label">New Session</span>
417
+ </button>
418
+ </div>
419
+ </div>
420
+ </footer>
421
+
422
+ <!-- ── Menu Trigger ──────────────────────────────────────────────── -->
423
+ <button
424
+ class="menu-trigger"
425
+ id="menu-trigger"
426
+ aria-label="Command menu"
427
+ title="Command Menu (M)"
428
+ >
429
+ <svg class="menu-icon-grid" width="17" height="17" viewBox="0 0 18 18" fill="none">
430
+ <circle cx="3" cy="3" r="1.6" fill="currentColor" />
431
+ <circle cx="9" cy="3" r="1.6" fill="currentColor" />
432
+ <circle cx="15" cy="3" r="1.6" fill="currentColor" />
433
+ <circle cx="3" cy="9" r="1.6" fill="currentColor" />
434
+ <circle cx="9" cy="9" r="1.6" fill="currentColor" />
435
+ <circle cx="15" cy="9" r="1.6" fill="currentColor" />
436
+ <circle cx="3" cy="15" r="1.6" fill="currentColor" />
437
+ <circle cx="9" cy="15" r="1.6" fill="currentColor" />
438
+ <circle cx="15" cy="15" r="1.6" fill="currentColor" />
439
+ </svg>
440
+ <svg class="menu-icon-close" width="17" height="17" viewBox="0 0 18 18" fill="none">
441
+ <path
442
+ d="M2 2l14 14M16 2 2 16"
443
+ stroke="currentColor"
444
+ stroke-width="2.2"
445
+ stroke-linecap="round"
446
+ />
447
+ </svg>
448
+ </button>
449
+
450
+ <!-- ── Command Overlay ────────────────────────────────────────────── -->
451
+ <div class="cmd-overlay" id="cmd-overlay" aria-hidden="true">
452
+ <div class="cmd-backdrop" id="cmd-backdrop"></div>
453
+ <div class="cmd-shell">
454
+ <!-- Header bar -->
455
+ <div class="cmd-header">
456
+ <div class="cmd-brand">
457
+ <span class="cmd-brand-glyph">◈</span>
458
+ <span class="cmd-brand-name">SYMI</span>
459
+ <span class="cmd-brand-sep">/</span>
460
+ <span class="cmd-brand-sub">COMMAND CENTER</span>
470
461
  </div>
462
+ <div class="cmd-esc-hint">Press <kbd class="cmd-kbd">ESC</kbd> to close</div>
471
463
  </div>
472
464
 
473
- <!-- ── SETTINGS ──────────────────────────────────────────── -->
474
- <div class="cmd-group cmd-group--settings">
475
- <div class="cmd-group-hd">
476
- <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
477
- <circle cx="12" cy="12" r="3" stroke="currentColor" stroke-width="1.5"/>
478
- <path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z" stroke="currentColor" stroke-width="1.5"/>
479
- </svg>
480
- <span class="cmd-group-label">SETTINGS</span>
465
+ <!-- 5-group command grid -->
466
+ <div class="cmd-grid">
467
+ <!-- ── CHAT ──────────────────────────────────────────────── -->
468
+ <div class="cmd-group cmd-group--chat">
469
+ <div class="cmd-group-hd">
470
+ <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
471
+ <path
472
+ d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"
473
+ stroke="currentColor"
474
+ stroke-width="1.5"
475
+ stroke-linecap="round"
476
+ stroke-linejoin="round"
477
+ />
478
+ </svg>
479
+ <span class="cmd-group-label">CHAT</span>
480
+ </div>
481
+ <div class="cmd-items">
482
+ <a class="cmd-item" href="#" data-href="#chat">
483
+ <span class="cmd-item-icon">◈</span>
484
+ <div class="cmd-item-body">
485
+ <span class="cmd-item-name">Chat</span>
486
+ <span class="cmd-item-desc">Main conversation</span>
487
+ </div>
488
+ <span class="cmd-item-badge">ACTIVE</span>
489
+ </a>
490
+ </div>
481
491
  </div>
482
- <div class="cmd-items">
483
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/config">
484
- <span class="cmd-item-icon">⚙</span>
485
- <div class="cmd-item-body"><span class="cmd-item-name">Config</span><span class="cmd-item-desc">System configuration</span></div>
486
- </a>
487
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/debug">
488
- <span class="cmd-item-icon">⬢</span>
489
- <div class="cmd-item-body"><span class="cmd-item-name">Debug</span><span class="cmd-item-desc">Debug console</span></div>
490
- </a>
491
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/logs">
492
- <span class="cmd-item-icon">≡</span>
493
- <div class="cmd-item-body"><span class="cmd-item-name">Logs</span><span class="cmd-item-desc">System logs</span></div>
494
- </a>
492
+
493
+ <!-- ── CONTROL ───────────────────────────────────────────── -->
494
+ <div class="cmd-group cmd-group--control">
495
+ <div class="cmd-group-hd">
496
+ <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
497
+ <rect
498
+ x="3"
499
+ y="3"
500
+ width="7"
501
+ height="7"
502
+ rx="1.5"
503
+ stroke="currentColor"
504
+ stroke-width="1.5"
505
+ />
506
+ <rect
507
+ x="14"
508
+ y="3"
509
+ width="7"
510
+ height="7"
511
+ rx="1.5"
512
+ stroke="currentColor"
513
+ stroke-width="1.5"
514
+ />
515
+ <rect
516
+ x="3"
517
+ y="14"
518
+ width="7"
519
+ height="7"
520
+ rx="1.5"
521
+ stroke="currentColor"
522
+ stroke-width="1.5"
523
+ />
524
+ <rect
525
+ x="14"
526
+ y="14"
527
+ width="7"
528
+ height="7"
529
+ rx="1.5"
530
+ stroke="currentColor"
531
+ stroke-width="1.5"
532
+ />
533
+ </svg>
534
+ <span class="cmd-group-label">CONTROL</span>
535
+ </div>
536
+ <div class="cmd-items cmd-items--grid">
537
+ <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/overview">
538
+ <span class="cmd-item-icon">⊙</span>
539
+ <div class="cmd-item-body">
540
+ <span class="cmd-item-name">Overview</span
541
+ ><span class="cmd-item-desc">System overview</span>
542
+ </div>
543
+ </a>
544
+ <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/channels">
545
+ <span class="cmd-item-icon">⊞</span>
546
+ <div class="cmd-item-body">
547
+ <span class="cmd-item-name">Channels</span
548
+ ><span class="cmd-item-desc">Messaging channels</span>
549
+ </div>
550
+ </a>
551
+ <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/instances">
552
+ <span class="cmd-item-icon">⊟</span>
553
+ <div class="cmd-item-body">
554
+ <span class="cmd-item-name">Instances</span
555
+ ><span class="cmd-item-desc">AI instances</span>
556
+ </div>
557
+ </a>
558
+ <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/sessions">
559
+ <span class="cmd-item-icon">≋</span>
560
+ <div class="cmd-item-body">
561
+ <span class="cmd-item-name">Sessions</span
562
+ ><span class="cmd-item-desc">Active sessions</span>
563
+ </div>
564
+ </a>
565
+ <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/usage">
566
+ <span class="cmd-item-icon">▲</span>
567
+ <div class="cmd-item-body">
568
+ <span class="cmd-item-name">Usage</span
569
+ ><span class="cmd-item-desc">Tokens &amp; costs</span>
570
+ </div>
571
+ </a>
572
+ <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/cron">
573
+ <span class="cmd-item-icon">◷</span>
574
+ <div class="cmd-item-body">
575
+ <span class="cmd-item-name">Cron Jobs</span
576
+ ><span class="cmd-item-desc">Scheduled tasks</span>
577
+ </div>
578
+ </a>
579
+ </div>
495
580
  </div>
496
- </div>
497
581
 
498
- <!-- ── RESOURCES ─────────────────────────────────────────── -->
499
- <div class="cmd-group cmd-group--resources">
500
- <div class="cmd-group-hd">
501
- <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
502
- <path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
503
- <path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
504
- </svg>
505
- <span class="cmd-group-label">RESOURCES</span>
582
+ <!-- ── AGENT ─────────────────────────────────────────────── -->
583
+ <div class="cmd-group cmd-group--agent">
584
+ <div class="cmd-group-hd">
585
+ <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
586
+ <circle cx="12" cy="12" r="3" stroke="currentColor" stroke-width="1.5" />
587
+ <path
588
+ d="M12 2v2M12 20v2M2 12h2M20 12h2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"
589
+ stroke="currentColor"
590
+ stroke-width="1.5"
591
+ stroke-linecap="round"
592
+ />
593
+ </svg>
594
+ <span class="cmd-group-label">AGENT</span>
595
+ </div>
596
+ <div class="cmd-items">
597
+ <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/agents">
598
+ <span class="cmd-item-icon">◈</span>
599
+ <div class="cmd-item-body">
600
+ <span class="cmd-item-name">Agents</span
601
+ ><span class="cmd-item-desc">Agent management</span>
602
+ </div>
603
+ </a>
604
+ <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/skills">
605
+ <span class="cmd-item-icon">⚡</span>
606
+ <div class="cmd-item-body">
607
+ <span class="cmd-item-name">Skills</span
608
+ ><span class="cmd-item-desc">Agent capabilities</span>
609
+ </div>
610
+ </a>
611
+ <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/nodes">
612
+ <span class="cmd-item-icon">⬡</span>
613
+ <div class="cmd-item-body">
614
+ <span class="cmd-item-name">Nodes</span
615
+ ><span class="cmd-item-desc">Connected devices</span>
616
+ </div>
617
+ </a>
618
+ </div>
506
619
  </div>
507
- <div class="cmd-items">
508
- <a class="cmd-item" href="#" data-href="https://docs.symi.ai/">
509
- <span class="cmd-item-icon">◻</span>
510
- <div class="cmd-item-body"><span class="cmd-item-name">Docs</span><span class="cmd-item-desc">Official documentation</span></div>
511
- </a>
620
+
621
+ <!-- ── SETTINGS ──────────────────────────────────────────── -->
622
+ <div class="cmd-group cmd-group--settings">
623
+ <div class="cmd-group-hd">
624
+ <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
625
+ <circle cx="12" cy="12" r="3" stroke="currentColor" stroke-width="1.5" />
626
+ <path
627
+ d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"
628
+ stroke="currentColor"
629
+ stroke-width="1.5"
630
+ />
631
+ </svg>
632
+ <span class="cmd-group-label">SETTINGS</span>
633
+ </div>
634
+ <div class="cmd-items">
635
+ <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/config">
636
+ <span class="cmd-item-icon">⚙</span>
637
+ <div class="cmd-item-body">
638
+ <span class="cmd-item-name">Config</span
639
+ ><span class="cmd-item-desc">System configuration</span>
640
+ </div>
641
+ </a>
642
+ <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/debug">
643
+ <span class="cmd-item-icon">⬢</span>
644
+ <div class="cmd-item-body">
645
+ <span class="cmd-item-name">Debug</span
646
+ ><span class="cmd-item-desc">Debug console</span>
647
+ </div>
648
+ </a>
649
+ <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/logs">
650
+ <span class="cmd-item-icon">≡</span>
651
+ <div class="cmd-item-body">
652
+ <span class="cmd-item-name">Logs</span
653
+ ><span class="cmd-item-desc">System logs</span>
654
+ </div>
655
+ </a>
656
+ </div>
512
657
  </div>
513
- </div>
514
658
 
515
- </div><!-- /cmd-grid -->
516
- </div><!-- /cmd-shell -->
517
- </div><!-- /cmd-overlay -->
518
-
519
- <!-- Standard UI toggle removed — glass UI is served directly from gateway -->
520
-
521
- <!-- ── Page Navigation Overlay ──────────────────────────────────── -->
522
- <div class="page-overlay" id="page-overlay" aria-hidden="true">
523
- <div class="page-overlay-header">
524
- <button class="page-back-btn" id="page-back-btn" title="Back to chat">
525
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
526
- <path d="M19 12H5M5 12l7-7M5 12l7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
527
- </svg>
528
- <span>Chat</span>
529
- </button>
530
- <span class="page-overlay-title" id="page-overlay-title"></span>
531
- <a class="page-popout-btn" id="page-popout-btn" href="#" target="_blank" title="Open in new tab" rel="noopener">
532
- <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
533
- <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
534
- <path d="M15 3h6v6M10 14L21 3" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
535
- </svg>
536
- Pop out
537
- </a>
538
- </div>
539
- <iframe class="page-overlay-frame" id="page-overlay-frame" src="" title="Page view" allowfullscreen></iframe>
540
- </div>
541
-
542
- <!-- ── History Drawer ───────────────────────────────────────────── -->
543
- <div class="history-overlay" id="history-overlay"></div>
544
- <div class="history-drawer" id="history-drawer" aria-hidden="true">
545
- <div class="history-drawer-header">
546
- <div class="history-drawer-title">
547
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
548
- <circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2"/>
549
- <path d="M12 7v5l3 3" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
550
- </svg>
551
- CHAT HISTORY
659
+ <!-- ── RESOURCES ─────────────────────────────────────────── -->
660
+ <div class="cmd-group cmd-group--resources">
661
+ <div class="cmd-group-hd">
662
+ <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
663
+ <path
664
+ d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"
665
+ stroke="currentColor"
666
+ stroke-width="1.5"
667
+ stroke-linecap="round"
668
+ />
669
+ <path
670
+ d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"
671
+ stroke="currentColor"
672
+ stroke-width="1.5"
673
+ stroke-linecap="round"
674
+ />
675
+ </svg>
676
+ <span class="cmd-group-label">RESOURCES</span>
677
+ </div>
678
+ <div class="cmd-items">
679
+ <a class="cmd-item" href="#" data-href="https://docs.symi.ai/">
680
+ <span class="cmd-item-icon">◻</span>
681
+ <div class="cmd-item-body">
682
+ <span class="cmd-item-name">Docs</span
683
+ ><span class="cmd-item-desc">Official documentation</span>
684
+ </div>
685
+ </a>
686
+ </div>
687
+ </div>
688
+ </div>
689
+ <!-- /cmd-grid -->
552
690
  </div>
553
- <button class="history-close-btn" id="history-close-btn" title="Close (Esc)">✕</button>
554
- </div>
555
- <div class="history-drawer-body" id="history-drawer-body">
556
- <div class="history-loading">Loading sessions…</div>
691
+ <!-- /cmd-shell -->
557
692
  </div>
558
- </div>
559
-
560
- <!-- ── Session archive toast ─────────────────────────────────────── -->
561
- <div class="session-archive-toast" id="session-archive-toast">
562
- <svg width="12" height="12" viewBox="0 0 24 24" fill="none">
563
- <circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2"/>
564
- <path d="M12 7v5l3 3" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
565
- </svg>
566
- Session archived — <span id="session-archive-link">View history ↗</span>
567
- </div>
568
-
569
- <!-- ── Connection Modal ──────────────────────────────────────────────── -->
570
- <div class="conn-modal-overlay" id="conn-modal-overlay" aria-hidden="true">
571
- <div class="conn-modal" id="conn-modal">
572
- <div class="conn-modal-header">
573
- <div class="conn-modal-icon" id="conn-modal-icon"></div>
574
- <div class="conn-modal-title" id="conn-modal-title">Channel</div>
575
- <button class="conn-modal-close" id="conn-modal-close" title="Close">
693
+ <!-- /cmd-overlay -->
694
+
695
+ <!-- Standard UI toggle removed glass UI is served directly from gateway -->
696
+
697
+ <!-- ── Page Navigation Overlay ──────────────────────────────────── -->
698
+ <div class="page-overlay" id="page-overlay" aria-hidden="true">
699
+ <div class="page-overlay-header">
700
+ <button class="page-back-btn" id="page-back-btn" title="Back to chat">
576
701
  <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
577
- <path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
702
+ <path
703
+ d="M19 12H5M5 12l7-7M5 12l7 7"
704
+ stroke="currentColor"
705
+ stroke-width="2"
706
+ stroke-linecap="round"
707
+ stroke-linejoin="round"
708
+ />
578
709
  </svg>
710
+ <span>Chat</span>
579
711
  </button>
580
- </div>
581
- <div class="conn-modal-body" id="conn-modal-body"></div>
582
- <div class="conn-modal-footer" id="conn-modal-footer">
583
- <a class="conn-modal-docs" id="conn-modal-docs" href="#" target="_blank" rel="noopener">
584
- <svg width="12" height="12" viewBox="0 0 24 24" fill="none">
585
- <path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20" stroke="currentColor" stroke-width="2"/>
586
- <path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z" stroke="currentColor" stroke-width="2"/>
712
+ <span class="page-overlay-title" id="page-overlay-title"></span>
713
+ <a
714
+ class="page-popout-btn"
715
+ id="page-popout-btn"
716
+ href="#"
717
+ target="_blank"
718
+ title="Open in new tab"
719
+ rel="noopener"
720
+ >
721
+ <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
722
+ <path
723
+ d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"
724
+ stroke="currentColor"
725
+ stroke-width="2"
726
+ stroke-linecap="round"
727
+ />
728
+ <path
729
+ d="M15 3h6v6M10 14L21 3"
730
+ stroke="currentColor"
731
+ stroke-width="2"
732
+ stroke-linecap="round"
733
+ stroke-linejoin="round"
734
+ />
587
735
  </svg>
588
- View Documentation
736
+ Pop out
589
737
  </a>
590
738
  </div>
739
+ <iframe
740
+ class="page-overlay-frame"
741
+ id="page-overlay-frame"
742
+ src=""
743
+ title="Page view"
744
+ allowfullscreen
745
+ ></iframe>
591
746
  </div>
592
- </div>
593
-
594
- <!-- ── Subagent Spawn Modal ──────────────────────────────────────────── -->
595
- <div class="subagent-modal-overlay" id="subagent-modal-overlay" aria-hidden="true">
596
- <div class="subagent-modal" id="subagent-modal">
597
- <div class="subagent-modal-header">
598
- <div class="subagent-modal-icon">
599
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
600
- <circle cx="12" cy="12" r="3"/>
601
- <path d="M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"/>
602
- </svg>
603
- </div>
604
- <div class="subagent-modal-title">Spawn Subagent</div>
605
- <button class="subagent-modal-close" id="subagent-modal-close" title="Close">
747
+
748
+ <!-- ── History Drawer ───────────────────────────────────────────── -->
749
+ <div class="history-overlay" id="history-overlay"></div>
750
+ <div class="history-drawer" id="history-drawer" aria-hidden="true">
751
+ <div class="history-drawer-header">
752
+ <div class="history-drawer-title">
606
753
  <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
607
- <path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
754
+ <circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2" />
755
+ <path d="M12 7v5l3 3" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
608
756
  </svg>
609
- </button>
757
+ CHAT HISTORY
758
+ </div>
759
+ <button class="history-close-btn" id="history-close-btn" title="Close (Esc)">✕</button>
760
+ </div>
761
+ <div class="history-drawer-body" id="history-drawer-body">
762
+ <div class="history-loading">Loading sessions…</div>
610
763
  </div>
611
- <div class="subagent-modal-body">
612
- <div class="subagent-form-group">
613
- <label class="subagent-form-label" for="subagent-task">Task</label>
614
- <textarea class="subagent-form-textarea" id="subagent-task" placeholder="Describe the task for the subagent..." rows="3"></textarea>
764
+ </div>
765
+
766
+ <!-- ── Session archive toast ─────────────────────────────────────── -->
767
+ <div class="session-archive-toast" id="session-archive-toast">
768
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none">
769
+ <circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2" />
770
+ <path d="M12 7v5l3 3" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
771
+ </svg>
772
+ Session archived — <span id="session-archive-link">View history ↗</span>
773
+ </div>
774
+
775
+ <!-- ── Connection Modal ──────────────────────────────────────────────── -->
776
+ <div class="conn-modal-overlay" id="conn-modal-overlay" aria-hidden="true">
777
+ <div class="conn-modal" id="conn-modal">
778
+ <div class="conn-modal-header">
779
+ <div class="conn-modal-icon" id="conn-modal-icon"></div>
780
+ <div class="conn-modal-title" id="conn-modal-title">Channel</div>
781
+ <button class="conn-modal-close" id="conn-modal-close" title="Close">
782
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
783
+ <path
784
+ d="M18 6L6 18M6 6l12 12"
785
+ stroke="currentColor"
786
+ stroke-width="2"
787
+ stroke-linecap="round"
788
+ />
789
+ </svg>
790
+ </button>
615
791
  </div>
616
- <div class="subagent-form-group">
617
- <label class="subagent-form-label" for="subagent-label">Label (optional)</label>
618
- <input type="text" class="subagent-form-input" id="subagent-label" placeholder="e.g. Research Agent, Code Review...">
792
+ <div class="conn-modal-body" id="conn-modal-body"></div>
793
+ <div class="conn-modal-footer" id="conn-modal-footer">
794
+ <a class="conn-modal-docs" id="conn-modal-docs" href="#" target="_blank" rel="noopener">
795
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none">
796
+ <path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20" stroke="currentColor" stroke-width="2" />
797
+ <path
798
+ d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"
799
+ stroke="currentColor"
800
+ stroke-width="2"
801
+ />
802
+ </svg>
803
+ View Documentation
804
+ </a>
805
+ </div>
806
+ </div>
807
+ </div>
808
+
809
+ <!-- ── Subagent Spawn Modal ──────────────────────────────────────────── -->
810
+ <div class="subagent-modal-overlay" id="subagent-modal-overlay" aria-hidden="true">
811
+ <div class="subagent-modal" id="subagent-modal">
812
+ <div class="subagent-modal-header">
813
+ <div class="subagent-modal-icon">
814
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
815
+ <circle cx="12" cy="12" r="3" />
816
+ <path
817
+ d="M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"
818
+ />
819
+ </svg>
820
+ </div>
821
+ <div class="subagent-modal-title">Spawn Subagent</div>
822
+ <button class="subagent-modal-close" id="subagent-modal-close" title="Close">
823
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
824
+ <path
825
+ d="M18 6L6 18M6 6l12 12"
826
+ stroke="currentColor"
827
+ stroke-width="2"
828
+ stroke-linecap="round"
829
+ />
830
+ </svg>
831
+ </button>
619
832
  </div>
620
- <div class="subagent-form-row">
833
+ <div class="subagent-modal-body">
621
834
  <div class="subagent-form-group">
622
- <label class="subagent-form-label" for="subagent-model">Model</label>
623
- <select class="subagent-form-select" id="subagent-model">
624
- <option value="">Default</option>
625
- <option value="anthropic/claude-sonnet-4-6">Claude Sonnet 4.6</option>
626
- <option value="ollama/gemma4:31b-128k">Gemma 4 31B 128K</option>
627
- <option value="ollama/qwen2.5:32b">Qwen 2.5 32B</option>
628
- </select>
835
+ <label class="subagent-form-label" for="subagent-task">Task</label>
836
+ <textarea
837
+ class="subagent-form-textarea"
838
+ id="subagent-task"
839
+ placeholder="Describe the task for the subagent..."
840
+ rows="3"
841
+ ></textarea>
629
842
  </div>
630
843
  <div class="subagent-form-group">
631
- <label class="subagent-form-label" for="subagent-thinking">Thinking</label>
632
- <select class="subagent-form-select" id="subagent-thinking">
633
- <option value="">Default</option>
634
- <option value="off">Off</option>
635
- <option value="low">Low</option>
636
- <option value="medium">Medium</option>
637
- <option value="high">High</option>
638
- </select>
844
+ <label class="subagent-form-label" for="subagent-label">Label (optional)</label>
845
+ <input
846
+ type="text"
847
+ class="subagent-form-input"
848
+ id="subagent-label"
849
+ placeholder="e.g. Research Agent, Code Review..."
850
+ />
851
+ </div>
852
+ <div class="subagent-form-row">
853
+ <div class="subagent-form-group">
854
+ <label class="subagent-form-label" for="subagent-model">Model</label>
855
+ <select class="subagent-form-select" id="subagent-model">
856
+ <option value="">Default</option>
857
+ <option value="anthropic/claude-sonnet-4-6">Claude Sonnet 4.6</option>
858
+ <option value="ollama/gemma4:31b-128k">Gemma 4 31B 128K</option>
859
+ <option value="ollama/qwen2.5:32b">Qwen 2.5 32B</option>
860
+ </select>
861
+ </div>
862
+ <div class="subagent-form-group">
863
+ <label class="subagent-form-label" for="subagent-thinking">Thinking</label>
864
+ <select class="subagent-form-select" id="subagent-thinking">
865
+ <option value="">Default</option>
866
+ <option value="off">Off</option>
867
+ <option value="low">Low</option>
868
+ <option value="medium">Medium</option>
869
+ <option value="high">High</option>
870
+ </select>
871
+ </div>
639
872
  </div>
640
873
  </div>
641
- </div>
642
- <div class="subagent-modal-footer">
643
- <button class="subagent-modal-cancel" id="subagent-modal-cancel">Cancel</button>
644
- <button class="subagent-modal-submit" id="subagent-modal-submit">
645
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
646
- <path d="M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z"/>
647
- </svg>
648
- Spawn
649
- </button>
650
- </div>
651
- </div>
652
- </div>
653
-
654
- <!-- ── Schedule Modal ──────────────────────────────────────────────── -->
655
- <div class="schedule-modal-overlay" id="schedule-modal-overlay" aria-hidden="true">
656
- <div class="schedule-modal" id="schedule-modal">
657
- <div class="schedule-modal-header">
658
- <div class="schedule-modal-icon">
659
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
660
- <circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/>
661
- </svg>
874
+ <div class="subagent-modal-footer">
875
+ <button class="subagent-modal-cancel" id="subagent-modal-cancel">Cancel</button>
876
+ <button class="subagent-modal-submit" id="subagent-modal-submit">
877
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
878
+ <path d="M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z" />
879
+ </svg>
880
+ Spawn
881
+ </button>
662
882
  </div>
663
- <div class="schedule-modal-title">Add Schedule</div>
664
- <button class="schedule-modal-close" id="schedule-modal-close" title="Close">
665
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
666
- <path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
667
- </svg>
668
- </button>
669
883
  </div>
670
- <div class="schedule-modal-body">
671
- <div class="schedule-form-group">
672
- <label class="schedule-form-label" for="schedule-name">Name</label>
673
- <input type="text" class="schedule-form-input" id="schedule-name" placeholder="e.g. Daily Report, Weekly Backup...">
674
- </div>
675
- <div class="schedule-form-group">
676
- <label class="schedule-form-label" for="schedule-task">Task</label>
677
- <textarea class="schedule-form-textarea" id="schedule-task" placeholder="Describe what should happen on this schedule..." rows="3"></textarea>
678
- </div>
679
- <div class="schedule-form-group">
680
- <label class="schedule-form-label">Run Every</label>
681
- <div class="schedule-interval-grid">
682
- <button type="button" class="schedule-interval-btn" data-interval="hourly">
683
- <span class="schedule-interval-value">1</span><span class="schedule-interval-unit">Hour</span>
684
- </button>
685
- <button type="button" class="schedule-interval-btn" data-interval="daily">
686
- <span class="schedule-interval-value">1</span><span class="schedule-interval-unit">Day</span>
687
- </button>
688
- <button type="button" class="schedule-interval-btn" data-interval="weekly">
689
- <span class="schedule-interval-value">1</span><span class="schedule-interval-unit">Week</span>
690
- </button>
691
- <button type="button" class="schedule-interval-btn" data-interval="custom">
692
- <span class="schedule-interval-value">...</span><span class="schedule-interval-unit">Custom</span>
693
- </button>
884
+ </div>
885
+
886
+ <!-- ── Schedule Modal ──────────────────────────────────────────────── -->
887
+ <div class="schedule-modal-overlay" id="schedule-modal-overlay" aria-hidden="true">
888
+ <div class="schedule-modal" id="schedule-modal">
889
+ <div class="schedule-modal-header">
890
+ <div class="schedule-modal-icon">
891
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
892
+ <circle cx="12" cy="12" r="10" />
893
+ <polyline points="12 6 12 12 16 14" />
894
+ </svg>
694
895
  </div>
896
+ <div class="schedule-modal-title">Add Schedule</div>
897
+ <button class="schedule-modal-close" id="schedule-modal-close" title="Close">
898
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
899
+ <path
900
+ d="M18 6L6 18M6 6l12 12"
901
+ stroke="currentColor"
902
+ stroke-width="2"
903
+ stroke-linecap="round"
904
+ />
905
+ </svg>
906
+ </button>
695
907
  </div>
696
- <div class="schedule-custom-options" id="schedule-custom-options" style="display: none;">
697
- <div class="schedule-form-row">
698
- <div class="schedule-form-group">
699
- <label class="schedule-form-label" for="schedule-interval-value">Every</label>
700
- <input type="number" class="schedule-form-input" id="schedule-interval-value" min="1" value="1">
908
+ <div class="schedule-modal-body">
909
+ <div class="schedule-form-group">
910
+ <label class="schedule-form-label" for="schedule-name">Name</label>
911
+ <input
912
+ type="text"
913
+ class="schedule-form-input"
914
+ id="schedule-name"
915
+ placeholder="e.g. Daily Report, Weekly Backup..."
916
+ />
917
+ </div>
918
+ <div class="schedule-form-group">
919
+ <label class="schedule-form-label" for="schedule-task">Task</label>
920
+ <textarea
921
+ class="schedule-form-textarea"
922
+ id="schedule-task"
923
+ placeholder="Describe what should happen on this schedule..."
924
+ rows="3"
925
+ ></textarea>
926
+ </div>
927
+ <div class="schedule-form-group">
928
+ <label class="schedule-form-label">Run Every</label>
929
+ <div class="schedule-interval-grid">
930
+ <button type="button" class="schedule-interval-btn" data-interval="hourly">
931
+ <span class="schedule-interval-value">1</span
932
+ ><span class="schedule-interval-unit">Hour</span>
933
+ </button>
934
+ <button type="button" class="schedule-interval-btn" data-interval="daily">
935
+ <span class="schedule-interval-value">1</span
936
+ ><span class="schedule-interval-unit">Day</span>
937
+ </button>
938
+ <button type="button" class="schedule-interval-btn" data-interval="weekly">
939
+ <span class="schedule-interval-value">1</span
940
+ ><span class="schedule-interval-unit">Week</span>
941
+ </button>
942
+ <button type="button" class="schedule-interval-btn" data-interval="custom">
943
+ <span class="schedule-interval-value">...</span
944
+ ><span class="schedule-interval-unit">Custom</span>
945
+ </button>
701
946
  </div>
702
- <div class="schedule-form-group">
703
- <label class="schedule-form-label" for="schedule-interval-unit">Period</label>
704
- <select class="schedule-form-select" id="schedule-interval-unit">
705
- <option value="minutes">Minutes</option>
706
- <option value="hours">Hours</option>
707
- <option value="days" selected>Days</option>
708
- <option value="weeks">Weeks</option>
709
- </select>
947
+ </div>
948
+ <div class="schedule-custom-options" id="schedule-custom-options" style="display: none">
949
+ <div class="schedule-form-row">
950
+ <div class="schedule-form-group">
951
+ <label class="schedule-form-label" for="schedule-interval-value">Every</label>
952
+ <input
953
+ type="number"
954
+ class="schedule-form-input"
955
+ id="schedule-interval-value"
956
+ min="1"
957
+ value="1"
958
+ />
959
+ </div>
960
+ <div class="schedule-form-group">
961
+ <label class="schedule-form-label" for="schedule-interval-unit">Period</label>
962
+ <select class="schedule-form-select" id="schedule-interval-unit">
963
+ <option value="minutes">Minutes</option>
964
+ <option value="hours">Hours</option>
965
+ <option value="days" selected>Days</option>
966
+ <option value="weeks">Weeks</option>
967
+ </select>
968
+ </div>
710
969
  </div>
711
970
  </div>
712
971
  </div>
713
- </div>
714
- <div class="schedule-modal-footer">
715
- <button class="schedule-modal-cancel" id="schedule-modal-cancel">Cancel</button>
716
- <button class="schedule-modal-submit" id="schedule-modal-submit">
717
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
718
- <circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/>
719
- </svg>
720
- Schedule
721
- </button>
972
+ <div class="schedule-modal-footer">
973
+ <button class="schedule-modal-cancel" id="schedule-modal-cancel">Cancel</button>
974
+ <button class="schedule-modal-submit" id="schedule-modal-submit">
975
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
976
+ <circle cx="12" cy="12" r="10" />
977
+ <polyline points="12 6 12 12 16 14" />
978
+ </svg>
979
+ Schedule
980
+ </button>
981
+ </div>
722
982
  </div>
723
983
  </div>
724
- </div>
725
-
726
- <script src="/vendor/marked.min.js"></script>
727
- <script src="/vendor/highlight.min.js"></script>
728
- <script src="js/metrics.js"></script>
729
- <script src="js/gateway.js"></script>
730
- <script src="js/render.js"></script>
731
- <script src="js/symipulse.js"></script>
732
- <script src="js/app.js"></script>
733
- <script src="js/menu.js"></script>
734
- <script src="js/history.js"></script>
735
- <script src="js/connections.js"></script>
736
- <script src="js/subagents.js"></script>
737
- <script src="js/scheduling.js"></script>
738
- <script src="js/models.js"></script>
739
- </body>
984
+
985
+ <script src="/vendor/marked.min.js"></script>
986
+ <script src="/vendor/highlight.min.js"></script>
987
+ <script src="js/metrics.js"></script>
988
+ <script src="js/gateway.js"></script>
989
+ <script src="js/render.js"></script>
990
+ <script src="js/symipulse.js"></script>
991
+ <script src="js/app.js"></script>
992
+ <script src="js/menu.js"></script>
993
+ <script src="js/history.js"></script>
994
+ <script src="js/connections.js"></script>
995
+ <script src="js/subagents.js"></script>
996
+ <script src="js/scheduling.js"></script>
997
+ <script src="js/models.js"></script>
998
+ <script src="js/debug.js"></script>
999
+ </body>
740
1000
  </html>