@symerian/symi 3.4.30 → 3.4.31

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 (177) hide show
  1. package/dist/{agent-O3PihJOY.js → agent-ZFfYdexc.js} +10 -10
  2. package/dist/{agents-C2MpIr16.js → agents-C8naPegc.js} +5 -5
  3. package/dist/{audit-yf3H4Y1h.js → audit-DOfexJi4.js} +8 -8
  4. package/dist/{auth-choice-CyBcsQ9T.js → auth-choice-DxH-c3vK.js} +4 -4
  5. package/dist/{banner-D7__HlM-.js → banner-D7zYLyA8.js} +1 -1
  6. package/dist/{browser-cli-B_6WWHm_.js → browser-cli-MYIql1Ic.js} +3 -3
  7. package/dist/build-info.json +1 -1
  8. package/dist/bundled/boot-md/handler.js +4 -4
  9. package/dist/bundled/session-memory/handler.js +4 -4
  10. package/dist/{call-IfleM0ap.js → call-D9U2Sfhp.js} +1 -1
  11. package/dist/{channel-options-B5974x-7.js → channel-options-9PzSNQLG.js} +1 -1
  12. package/dist/{channels-cli-C6Nv9mzy.js → channels-cli-C3XnNkE5.js} +30 -30
  13. package/dist/{chrome-DT1fIVG1.js → chrome-B4P7ycw5.js} +7 -7
  14. package/dist/{chrome-DJCkCRLf.js → chrome-ClVIwINy.js} +1 -1
  15. package/dist/{cli-DZoms4qg.js → cli-DhTdzhjk.js} +26 -26
  16. package/dist/{command-registry--D98SJ6k.js → command-registry-BOwku-e8.js} +11 -11
  17. package/dist/{completion-cli-CHYvpIPw.js → completion-cli-KZYbGY4H.js} +2 -2
  18. package/dist/{config-BTSBEAnk.js → config-Byd2Y9rr.js} +5 -5
  19. package/dist/{config-cli-DstpcB33.js → config-cli-CJ1CRfG8.js} +5 -5
  20. package/dist/{config-guard-CCJrDmON.js → config-guard-zt0zhFHl.js} +2 -2
  21. package/dist/{config-validation-YCrMlM9Z.js → config-validation-CRazk6Kd.js} +1 -1
  22. package/dist/{configure-B-UvSZZ7.js → configure-CFY_XEps.js} +10 -10
  23. package/dist/{control-service-CwRG4M_O.js → control-service-DN6-IdFk.js} +4 -4
  24. package/dist/{cron-cli-DUETe3Of.js → cron-cli-fmiz43Pz.js} +3 -3
  25. package/dist/{daemon-cli-Dy5eY4M7.js → daemon-cli-BilAL40g.js} +6 -6
  26. package/dist/{daemon-runtime-ChztAKDA.js → daemon-runtime-D4KHzQq2.js} +1 -1
  27. package/dist/{deliver-59sRVaYQ.js → deliver-BkCYBlzi.js} +4 -4
  28. package/dist/{deliver-BHmK4isn.js → deliver-CnsfN7km.js} +1 -1
  29. package/dist/{devices-cli-BCZ2HHjT.js → devices-cli-D7HdOwRI.js} +2 -2
  30. package/dist/{directory-cli-BVGd0l0T.js → directory-cli-ed6QacBC.js} +1 -1
  31. package/dist/{dns-cli-DH-ksmiI.js → dns-cli-RPa1dGTQ.js} +1 -1
  32. package/dist/{docs-cli-BuX8FDdh.js → docs-cli-ZTdS_Gak.js} +2 -2
  33. package/dist/{doctor-completion-C4Sf8CFV.js → doctor-completion-DpGX8dau.js} +1 -1
  34. package/dist/{doctor-config-flow-BhmF6EAq.js → doctor-config-flow-CIrG_yW_.js} +4 -4
  35. package/dist/entry.js +3 -3
  36. package/dist/{exec-approvals-cli-CyXTXgft.js → exec-approvals-cli-65pcsa1y.js} +6 -6
  37. package/dist/{frontmatter-BH3ExkUY.js → frontmatter-B4levtVg.js} +2 -2
  38. package/dist/{gateway-cli-fT43bqlv.js → gateway-cli-CTi7Wl2k.js} +50 -50
  39. package/dist/{gateway-rpc-BEqCo2JK.js → gateway-rpc-2VPLhMhx.js} +1 -1
  40. package/dist/{glass-ui-ws-BfMKuf9v.js → glass-ui-ws-Bah_A-jn.js} +38 -38
  41. package/dist/{gmail-setup-utils-Cz9Tb30q.js → gmail-setup-utils-C9WBC6Cd.js} +1 -1
  42. package/dist/{health-DDxrkioj.js → health-B5rRzhyV.js} +3 -3
  43. package/dist/{hooks-cli-Btgk__9z.js → hooks-cli-CSDCGO-W.js} +29 -29
  44. package/dist/{hooks-status-BaV4_YaJ.js → hooks-status-OorbLcc2.js} +2 -2
  45. package/dist/index.js +0 -0
  46. package/dist/{lifecycle-core-B0tG8ERp.js → lifecycle-core-BRc-XqTk.js} +2 -2
  47. package/dist/llm-slug-generator.js +4 -4
  48. package/dist/{logs-cli-CUhZrDw7.js → logs-cli-D5phVUOT.js} +3 -3
  49. package/dist/{manager-BeNnzSJv.js → manager-BfhHvsI9.js} +1 -1
  50. package/dist/{manager-Di9qtuZF.js → manager-DzBH9uQG.js} +1 -1
  51. package/dist/{memory-BDeydRz3.js → memory-BCj0cj5v.js} +3 -3
  52. package/dist/{memory-cli-D4hZiGr5.js → memory-cli-9WUMBHol.js} +3 -3
  53. package/dist/{model-catalog-DPnCNs5N.js → model-catalog-CD2kTz4V.js} +2 -2
  54. package/dist/{model-picker-DuPommMc.js → model-picker-CVd5UuXV.js} +2 -2
  55. package/dist/{models-cli-CL5K06Wu.js → models-cli-rd4eX_6P.js} +30 -30
  56. package/dist/{models-config-CPlvO1b0.js → models-config-oxaGiRUT.js} +1 -1
  57. package/dist/{models-B0wNKA18.js → models-sbKIrJBG.js} +9 -9
  58. package/dist/{node-cli-CWWMajKF.js → node-cli-ClLXSdFL.js} +9 -9
  59. package/dist/{nodes-cli-YmE7S-JB.js → nodes-cli-DY38p5In.js} +3 -3
  60. package/dist/{onboard-HqUZVKyD.js → onboard-BAyp_UFm.js} +7 -7
  61. package/dist/{onboard-channels-BbF5-N3g.js → onboard-channels-CUpkV_IJ.js} +1 -1
  62. package/dist/{onboard-custom-63SI3jrk.js → onboard-custom-BMgLK-vo.js} +2 -2
  63. package/dist/{onboard-helpers-Cb3WFLl9.js → onboard-helpers-DIQjpQ-s.js} +2 -2
  64. package/dist/{onboard-hooks-DXXg3YH9.js → onboard-hooks-KZKmj5Dk.js} +3 -3
  65. package/dist/{onboard-remote-CqtCrqtm.js → onboard-remote-C-_NUgBl.js} +1 -1
  66. package/dist/{onboard-skills-CS3l5fhH.js → onboard-skills-CwvicFTi.js} +3 -3
  67. package/dist/{onboarding-Be_HJIFA.js → onboarding-BxCNNo75.js} +11 -11
  68. package/dist/{onboarding.finalize-dsCUTKCQ.js → onboarding.finalize-DgMPXTtO.js} +18 -18
  69. package/dist/{onboarding.gateway-config-Ctd1_QW4.js → onboarding.gateway-config-BAaWvPSX.js} +4 -4
  70. package/dist/{outbound-send-deps-DPsU_Xdy.js → outbound-send-deps-qhFaNYAY.js} +1 -1
  71. package/dist/{pairing-cli-PtlNv7Gr.js → pairing-cli-CFkiSx8t.js} +1 -1
  72. package/dist/{pi-embedded-helpers-CVKIHnFv.js → pi-embedded-helpers-CRG5LMS7.js} +1 -1
  73. package/dist/{pi-tools.policy-8_wTu7v2.js → pi-tools.policy-De6xHjVL.js} +2 -2
  74. package/dist/{plugin-registry-BG51uZOA.js → plugin-registry-BNe5jtPK.js} +2 -2
  75. package/dist/plugin-sdk/index.js +6 -6
  76. package/dist/{plugins-cli-B-zVOiQN.js → plugins-cli-CWj33_Hj.js} +27 -27
  77. package/dist/{program-BOh0XGsA.js → program-Z2OLlhsB.js} +33 -33
  78. package/dist/{prompt-select-styled-Bj-hrPCx.js → prompt-select-styled-BNwbBBcH.js} +16 -16
  79. package/dist/{provider-auth-helpers-BK6NFk2Q.js → provider-auth-helpers-5qb15Hje.js} +2 -2
  80. package/dist/{push-apns-CMxk3Hxf.js → push-apns-D6qV5P4h.js} +1 -1
  81. package/dist/{pw-ai-C5MJKzUM.js → pw-ai-BsEf8C15.js} +1 -1
  82. package/dist/{pw-ai-CE2TBGif.js → pw-ai-C7mvVllB.js} +2 -2
  83. package/dist/{qr-cli-BeHlC33g.js → qr-cli-oENcXq8d.js} +1 -1
  84. package/dist/{redact-identifier-B1VHIbnd.js → redact-identifier-ZE8OIUof.js} +1 -1
  85. package/dist/{register.agent-COv5OPLQ.js → register.agent-DpiHPMca.js} +36 -36
  86. package/dist/{register.configure-RhKVlfWH.js → register.configure-DRFaroYF.js} +40 -40
  87. package/dist/{register.maintenance-BAK-DiQY.js → register.maintenance-BGNNTt_1.js} +38 -38
  88. package/dist/{register.message-CCBmn5ja.js → register.message-R4AIHhlU.js} +28 -28
  89. package/dist/{register.onboard-B3jO_Goy.js → register.onboard-Cl-_Suyv.js} +13 -13
  90. package/dist/{register.setup-CYSISTDO.js → register.setup-Dt98v2V3.js} +15 -15
  91. package/dist/{register.status-health-sessions-CGbg9k6d.js → register.status-health-sessions-DiX5lVyr.js} +23 -23
  92. package/dist/{register.subclis-loifbhVx.js → register.subclis-DVObuR_P.js} +28 -28
  93. package/dist/{replies-Dj640LxQ.js → replies-VTJu1jUK.js} +1 -1
  94. package/dist/{routes-B5y-oAKp.js → routes-DOFg6X5M.js} +3 -3
  95. package/dist/{rpc-qWm1bRo5.js → rpc-BIHKXdlN.js} +1 -1
  96. package/dist/{run-main-B7Ria3zD.js → run-main-NAgYKzSu.js} +44 -44
  97. package/dist/{sandbox-BJgHc4Vu.js → sandbox-EB7cFSML.js} +6 -6
  98. package/dist/{sandbox-cli-CSudrHYL.js → sandbox-cli-D4dy6sUK.js} +8 -8
  99. package/dist/{security-cli-B2lCR2xX.js → security-cli-DwCKOrFm.js} +11 -11
  100. package/dist/{send-CY9na-Jw.js → send-CkRtuQbr.js} +1 -1
  101. package/dist/{server-context-DdWWaDf6.js → server-context-ww1jytet.js} +5 -5
  102. package/dist/{server-methods-Dk_EnINI.js → server-methods-BDiZyPvS.js} +23 -23
  103. package/dist/{server-node-events-BHegSgG9.js → server-node-events-9cY40B4m.js} +29 -29
  104. package/dist/{session-utils-CAVPV2Hh.js → session-utils-CStjqGE6.js} +3 -3
  105. package/dist/{sessions-BDM9kNY0.js → sessions-BSRHJH8T.js} +3 -3
  106. package/dist/{sessions-CqLQkkWg.js → sessions-CInbrqsF.js} +1 -1
  107. package/dist/{shared-CpwtQRJB.js → shared-DEAo94kI.js} +1 -1
  108. package/dist/{skill-commands-CRQniaHy.js → skill-commands-BkKfrbHt.js} +2 -2
  109. package/dist/{skills-CTcjFd_F.js → skills-CFLijAZ-.js} +1 -1
  110. package/dist/{skills-cli-9Mlb7VRg.js → skills-cli-BbagnO6p.js} +5 -5
  111. package/dist/{skills-install-D5ikt72d.js → skills-install-dLRO1KGp.js} +2 -2
  112. package/dist/{skills-remote-BASG1Doo.js → skills-remote-DQVB-3Pj.js} +1 -1
  113. package/dist/{skills-status-1iVfuVIG.js → skills-status-HWybfj0K.js} +2 -2
  114. package/dist/{status-Bci6O3aA.js → status-BSrVEUoJ.js} +2 -2
  115. package/dist/{status-D5RhVO0A.js → status-FIp7UKru.js} +12 -12
  116. package/dist/{status.update-D5CachQ_.js → status.update-Cm8Fm8QD.js} +1 -1
  117. package/dist/{subagent-registry-CsXaK_sy.js → subagent-registry-DqryocLT.js} +31 -31
  118. package/dist/{synthesis-dplLmFIP.js → synthesis-CS-lrEGy.js} +4 -4
  119. package/dist/{synthesis-BoZf8BeO.js → synthesis-DKhH0YwU.js} +26 -26
  120. package/dist/{system-cli-D5FffFX5.js → system-cli-DYSI6cIB.js} +3 -3
  121. package/dist/{systemd-hints-CufcSfMk.js → systemd-hints-EIfW5y8K.js} +1 -1
  122. package/dist/{tui-DZ8gksSZ.js → tui-C20rHOeB.js} +4 -4
  123. package/dist/{tui-cli-CyBJYh9u.js → tui-cli-JwlzHCza.js} +11 -11
  124. package/dist/{unified-runner-BFLLzEHE.js → unified-runner-AM9tFC5q.js} +10 -10
  125. package/dist/{update-cli-yW6Xl6fs.js → update-cli-BYfA3RPc.js} +41 -41
  126. package/dist/{update-runner-CIgLduhH.js → update-runner-CBG8p9iG.js} +1 -1
  127. package/dist/{webhooks-cli-4bmyKzwb.js → webhooks-cli-MuG_QGLp.js} +4 -4
  128. package/dist/{with-timeout-bWr6yBeX.js → with-timeout-BvxaeAo6.js} +1 -1
  129. package/dist/{workspace-DxscDsm6.js → workspace-D0d7Gi4-.js} +1 -1
  130. package/extensions/memory-core/node_modules/.bin/symi +0 -0
  131. package/extensions/msteams/node_modules/.bin/symi +0 -0
  132. package/extensions/outlook/node_modules/.bin/symi +0 -0
  133. package/extensions/slack/node_modules/.bin/symi +0 -0
  134. package/package.json +108 -79
  135. package/dist/control-ui/css/revert-red-theme.md +0 -141
  136. package/dist/control-ui/css/style.css +0 -5843
  137. package/dist/control-ui/css/style.css.backup-2026-03-03-162525 +0 -3546
  138. package/dist/control-ui/css/style.css.backup-before-red-2026-03-03-162525 +0 -3546
  139. package/dist/control-ui/css/style.css.backup-before-red-theme-2026-03-03-162530 +0 -3546
  140. package/dist/control-ui/css/style.css.pre-2row +0 -2165
  141. package/dist/control-ui/css/style.css.pre-brand +0 -1776
  142. package/dist/control-ui/css/style.css.pre-history +0 -1974
  143. package/dist/control-ui/css/style.css.pre-nav +0 -2264
  144. package/dist/control-ui/css/style.css.pre-newsession +0 -1898
  145. package/dist/control-ui/css/style.css.pre-queue +0 -2195
  146. package/dist/control-ui/css/style.css.pre-red-prompt +0 -2524
  147. package/dist/control-ui/css/style.css.pre-stop +0 -2239
  148. package/dist/control-ui/css/style.css.pre-textarea +0 -2184
  149. package/dist/control-ui/css/style.css.pre-watchdog +0 -1848
  150. package/dist/control-ui/css/style.css.red-theme +0 -2999
  151. package/dist/control-ui/index.html +0 -1042
  152. package/dist/control-ui/js/app.js +0 -1304
  153. package/dist/control-ui/js/app.js.pre-2row +0 -463
  154. package/dist/control-ui/js/app.js.pre-heartbeat-filter +0 -595
  155. package/dist/control-ui/js/app.js.pre-newsession +0 -408
  156. package/dist/control-ui/js/app.js.pre-queue +0 -476
  157. package/dist/control-ui/js/app.js.pre-stop +0 -564
  158. package/dist/control-ui/js/app.js.pre-textarea +0 -467
  159. package/dist/control-ui/js/app.js.pre-watchdog +0 -293
  160. package/dist/control-ui/js/connections.js +0 -438
  161. package/dist/control-ui/js/gateway.js +0 -233
  162. package/dist/control-ui/js/gateway.js.pre-stop +0 -110
  163. package/dist/control-ui/js/history.js +0 -732
  164. package/dist/control-ui/js/logs.js +0 -238
  165. package/dist/control-ui/js/menu.js +0 -230
  166. package/dist/control-ui/js/menu.js.pre-nav +0 -66
  167. package/dist/control-ui/js/metrics.js +0 -53
  168. package/dist/control-ui/js/models.js +0 -138
  169. package/dist/control-ui/js/render.js +0 -882
  170. package/dist/control-ui/js/render.test.js +0 -112
  171. package/dist/control-ui/js/scheduling.js +0 -461
  172. package/dist/control-ui/js/settings.js +0 -909
  173. package/dist/control-ui/js/slash-autocomplete.js +0 -168
  174. package/dist/control-ui/js/subagents.js +0 -560
  175. package/dist/control-ui/js/utils.js +0 -29
  176. package/dist/control-ui/vendor/highlight.min.js +0 -2518
  177. package/dist/control-ui/vendor/marked.min.js +0 -69
@@ -1,1042 +0,0 @@
1
- <!doctype html>
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
- <!--
9
- 3.0.6: removed `<link rel="stylesheet" href="/vendor/highlight.css" />`.
10
- The file was never present in the repo (introduced as a stray addition
11
- in commit 5696196e9 "Fix session file corruption with auto-repair
12
- mechanism" but the CSS itself was never committed). The 404 returned
13
- `Content-Type: text/plain` and modern browsers refuse to apply it as
14
- a stylesheet under strict MIME checking, producing two recurring
15
- console errors per page load.
16
-
17
- `glass-ui/js/render.js` still applies hljs class names to code blocks
18
- via `highlight.min.js` (which IS bundled in vendor/). Code blocks
19
- render structurally correct without color. To restore syntax colors,
20
- drop a real hljs theme CSS at `glass-ui/vendor/highlight.css` (e.g.,
21
- github-dark.min.css from highlight.js) and re-add the link.
22
- -->
23
-
24
- </head>
25
- <body>
26
- <!-- Animated background -->
27
- <div class="bg-orbs">
28
- <div class="orb orb-1"></div>
29
- <div class="orb orb-2"></div>
30
- <div class="orb orb-3"></div>
31
- </div>
32
- <div class="bg-grid"></div>
33
-
34
- <!-- Metrics — Left column -->
35
- <aside class="metrics-col metrics-left">
36
- <!-- Brand Panel -->
37
- <div class="glass-panel brand-panel">
38
- <div class="brand-mark">◈</div>
39
- <div class="brand-text">
40
- <div class="brand-name">SYMI</div>
41
- <div class="brand-sub">AI Assistant</div>
42
- </div>
43
- </div>
44
-
45
- <!-- Agent Status Panel — position #1 -->
46
- <div class="glass-panel agent-status-panel" id="agent-status-panel" data-state="idle">
47
- <div class="panel-label">AGENT STATUS</div>
48
- <div class="aso-orb-wrap">
49
- <svg class="aso-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
50
- <!-- Orbit guide tracks -->
51
- <circle class="aso-track" cx="50" cy="50" r="43" />
52
- <circle class="aso-track" cx="50" cy="50" r="31" />
53
- <circle class="aso-track" cx="50" cy="50" r="19" />
54
- <!-- Rotating arc groups -->
55
- <g class="aso-rot aso-rot1">
56
- <circle class="aso-arc" cx="50" cy="50" r="43" stroke-dasharray="55 215" />
57
- </g>
58
- <g class="aso-rot aso-rot2">
59
- <circle
60
- class="aso-arc aso-arc-dim"
61
- cx="50"
62
- cy="50"
63
- r="43"
64
- stroke-dasharray="22 248"
65
- />
66
- </g>
67
- <g class="aso-rot aso-rot3">
68
- <circle class="aso-arc" cx="50" cy="50" r="31" stroke-dasharray="40 155" />
69
- </g>
70
- <g class="aso-rot aso-rot4">
71
- <circle
72
- class="aso-arc aso-arc-dim"
73
- cx="50"
74
- cy="50"
75
- r="31"
76
- stroke-dasharray="15 180"
77
- />
78
- </g>
79
- <g class="aso-rot aso-rot5">
80
- <circle class="aso-arc" cx="50" cy="50" r="19" stroke-dasharray="20 99" />
81
- </g>
82
- <!-- Core glow halo -->
83
- <circle class="aso-core-halo" cx="50" cy="50" r="10" />
84
- <!-- Core dot -->
85
- <circle class="aso-core" cx="50" cy="50" r="5.5" />
86
- </svg>
87
- </div>
88
- <div class="aso-label" id="aso-label">STANDBY</div>
89
- <div class="aso-sub" id="aso-sub">Awaiting your prompt</div>
90
- <div class="aso-working" id="aso-working">
91
- <span class="aso-working-asterisk">✳</span>
92
- <span class="aso-working-text">Working</span>
93
- </div>
94
- <div class="aso-model-info">
95
- <span class="aso-model-label" id="active-model-label"></span>
96
- <span class="aso-model-badge" id="model-badge"></span>
97
- </div>
98
- </div>
99
-
100
- <!-- Subagents Panel -->
101
- <div class="glass-panel subagents-panel" id="subagents-panel">
102
- <div class="panel-label">
103
- SUBAGENTS
104
- <span class="subagents-count" id="subagents-count"></span>
105
- </div>
106
-
107
- <!-- Quick Deploy Section -->
108
- <div class="quick-deploy-section">
109
- <div class="quick-deploy-label">QUICK DEPLOY</div>
110
- <div class="quick-deploy-grid">
111
- <button class="quick-deploy-btn" data-agent="research" title="Research Agent">
112
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
113
- <circle cx="11" cy="11" r="8" />
114
- <path d="M21 21l-4.35-4.35" />
115
- </svg>
116
- <span>Research</span>
117
- </button>
118
- <button class="quick-deploy-btn" data-agent="review" title="Code Review Agent">
119
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
120
- <polyline points="16 18 22 12 16 6" />
121
- <polyline points="8 6 2 12 8 18" />
122
- </svg>
123
- <span>Review</span>
124
- </button>
125
- <button class="quick-deploy-btn" data-agent="writer" title="Writer Agent">
126
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
127
- <path d="M12 19l7-7 3 3-7 7-3-3z" />
128
- <path d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z" />
129
- </svg>
130
- <span>Writer</span>
131
- </button>
132
- <button class="quick-deploy-btn" data-agent="analyst" title="Analyst Agent">
133
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
134
- <line x1="18" y1="20" x2="18" y2="10" />
135
- <line x1="12" y1="20" x2="12" y2="4" />
136
- <line x1="6" y1="20" x2="6" y2="14" />
137
- </svg>
138
- <span>Analyst</span>
139
- </button>
140
- </div>
141
- </div>
142
-
143
- <!-- Staging Prompt Box -->
144
- <div class="staging-box" id="staging-box">
145
- <div class="staging-chips" id="staging-chips">
146
- <span class="staging-empty">Select agents above</span>
147
- </div>
148
- <button class="staging-deploy-btn" id="staging-deploy-btn" disabled>
149
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
150
- <path d="M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z" />
151
- </svg>
152
- Deploy
153
- </button>
154
- </div>
155
-
156
- <!-- Active Subagents list -->
157
- <div class="subagents-active-label">ACTIVE</div>
158
- <div class="subagents-list" id="subagents-list">
159
- <div class="subagents-empty" id="subagents-empty">
160
- <div class="subagents-empty-icon">
161
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
162
- <circle cx="12" cy="12" r="3" />
163
- <path
164
- 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"
165
- />
166
- </svg>
167
- </div>
168
- <div class="subagents-empty-text">No active subagents</div>
169
- </div>
170
- </div>
171
-
172
- <!-- Custom Spawn button -->
173
- <button class="subagent-spawn-btn" id="subagent-spawn-btn" title="Spawn a custom subagent">
174
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
175
- <circle cx="12" cy="12" r="10" />
176
- <path d="M12 8v8M8 12h8" />
177
- </svg>
178
- <span>Custom Subagent</span>
179
- </button>
180
- </div>
181
-
182
- <!-- Reasoning Panel -->
183
- <div class="glass-panel reasoning-panel" id="reasoning-panel">
184
- <div class="panel-label">
185
- REASONING
186
- <span class="reasoning-live-dot" id="reasoning-live-dot"></span>
187
- </div>
188
- <div class="reasoning-feed" id="reasoning-feed">
189
- <div class="reasoning-empty" id="reasoning-empty">
190
- <div class="reasoning-empty-icon">
191
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
192
- <circle cx="12" cy="12" r="3" />
193
- <path
194
- 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"
195
- />
196
- </svg>
197
- </div>
198
- <div class="reasoning-empty-text">No reasoning yet</div>
199
- </div>
200
- </div>
201
- </div>
202
- </aside>
203
-
204
- <!-- Metrics — Right column -->
205
- <aside class="metrics-col metrics-right">
206
- <!-- Connections Panel -->
207
- <div class="glass-panel connections-panel" id="connections-panel">
208
- <div class="panel-label">CONNECTIONS</div>
209
- <button class="conn-btn" id="conn-slack" data-channel="slack">
210
- <div class="conn-icon conn-icon-slack">
211
- <svg viewBox="0 0 24 24" fill="currentColor">
212
- <path
213
- 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"
214
- />
215
- </svg>
216
- </div>
217
- <div class="conn-info">
218
- <span class="conn-name">Slack</span>
219
- <span class="conn-btn-status" id="conn-slack-status">Checking...</span>
220
- </div>
221
- <div class="conn-state" id="conn-slack-state"><div class="conn-dot"></div></div>
222
- <span class="conn-notif" id="conn-slack-notif"></span>
223
- </button>
224
- <button class="conn-btn" id="conn-email" data-channel="email">
225
- <div class="conn-icon conn-icon-email">
226
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
227
- <rect x="2" y="4" width="20" height="16" rx="2" />
228
- <path d="M22 6l-10 7L2 6" />
229
- </svg>
230
- </div>
231
- <div class="conn-info">
232
- <span class="conn-name">Email</span>
233
- <span class="conn-btn-status" id="conn-email-status">Checking...</span>
234
- </div>
235
- <div class="conn-state" id="conn-email-state"><div class="conn-dot"></div></div>
236
- <span class="conn-notif" id="conn-email-notif"></span>
237
- </button>
238
- <button class="conn-btn" id="conn-teams" data-channel="msteams">
239
- <div class="conn-icon conn-icon-teams">
240
- <svg viewBox="0 0 24 24" fill="currentColor">
241
- <path
242
- 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"
243
- />
244
- <circle cx="17.5" cy="5.5" r="2.5" />
245
- </svg>
246
- </div>
247
- <div class="conn-info">
248
- <span class="conn-name">Teams</span>
249
- <span class="conn-btn-status" id="conn-teams-status">Checking...</span>
250
- </div>
251
- <div class="conn-state" id="conn-teams-state"><div class="conn-dot"></div></div>
252
- <span class="conn-notif" id="conn-teams-notif"></span>
253
- </button>
254
- </div>
255
-
256
- <div class="glass-panel gateway-panel">
257
- <div class="panel-label">SYMI GATEWAY</div>
258
- <div class="net-row">
259
- <div class="status-dot dot-green pulse"></div>
260
- <span class="net-name">Gateway</span>
261
- <span class="badge badge-green">ONLINE</span>
262
- </div>
263
- <div class="net-row">
264
- <span class="net-name muted">Port</span>
265
- <span class="net-ip">18789</span>
266
- </div>
267
- <div class="net-row">
268
- <span class="net-name muted">Auth</span>
269
- <span class="badge badge-blue">TOKEN</span>
270
- </div>
271
- <div class="net-row">
272
- <span class="net-name muted">Browser CDP</span>
273
- <span class="net-ip">18800</span>
274
- </div>
275
- </div>
276
-
277
- <div class="glass-panel" id="model-routing-panel">
278
- <div class="panel-label">MODEL ROUTING</div>
279
- <div class="model-toggle" id="model-toggle">
280
- <select class="model-toggle-select" id="model-toggle-spider" data-model="spider">
281
- <option value="" disabled selected>Spider ▾</option>
282
- <option value="spider-gemma4">Gemma 4 31B Uncensored</option>
283
- <option value="spider-qwen35">Qwen 3.5 35B</option>
284
- <option value="spider-qwen35-uncen">Qwen 3.5 Uncensored</option>
285
- <option value="spider-qwen36">Qwen 3.6 35B</option>
286
- </select>
287
- <button class="model-toggle-btn" data-model="redsand">CoreWeave</button>
288
- <button class="model-toggle-btn" data-model="coreweave2">Coreweave2</button>
289
- <button class="model-toggle-btn" data-model="api">API</button>
290
- </div>
291
- <div class="model-status" id="model-status">loading…</div>
292
- </div>
293
-
294
- <!-- Scheduling Panel -->
295
- <div class="glass-panel scheduling-panel" id="scheduling-panel">
296
- <div class="panel-label">
297
- SCHEDULING
298
- <span class="schedule-count" id="schedule-count"></span>
299
- </div>
300
- <div class="schedule-list" id="schedule-list">
301
- <div class="schedule-empty" id="schedule-empty">
302
- <div class="schedule-empty-icon">
303
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
304
- <circle cx="12" cy="12" r="10" />
305
- <polyline points="12 6 12 12 16 14" />
306
- </svg>
307
- </div>
308
- <div class="schedule-empty-text">No scheduled tasks</div>
309
- </div>
310
- </div>
311
- <button class="schedule-add-btn" id="schedule-add-btn" title="Add a scheduled task">
312
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
313
- <circle cx="12" cy="12" r="10" />
314
- <path d="M12 8v8M8 12h8" />
315
- </svg>
316
- <span>Add Schedule</span>
317
- </button>
318
- </div>
319
-
320
- </aside>
321
-
322
- <!-- Response waterfall area -->
323
- <main class="response-area" id="response-area"></main>
324
-
325
- <!-- Floating prompt bar -->
326
- <footer class="prompt-wrap">
327
- <div class="prompt-bar" id="prompt-bar">
328
- <!-- Row 1: icon + input + send -->
329
- <div class="prompt-row-main">
330
- <div class="prompt-icon">
331
- <svg width="18" height="18" viewBox="0 0 24 24" fill="none">
332
- <path
333
- d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"
334
- stroke="currentColor"
335
- stroke-width="1.5"
336
- stroke-linecap="round"
337
- stroke-linejoin="round"
338
- />
339
- </svg>
340
- </div>
341
- <textarea
342
- id="prompt-input"
343
- placeholder="Ask Symi anything…"
344
- autocomplete="off"
345
- spellcheck="false"
346
- rows="1"
347
- ></textarea>
348
- <button class="send-btn" id="send-btn" title="Send">
349
- <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
350
- <path d="M22 2L11 13" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
351
- <path
352
- d="M22 2L15 22 11 13 2 9l20-7z"
353
- stroke="currentColor"
354
- stroke-width="2"
355
- stroke-linecap="round"
356
- stroke-linejoin="round"
357
- />
358
- </svg>
359
- </button>
360
- </div>
361
-
362
- <!-- Row 2: action buttons (right-aligned) -->
363
- <div class="prompt-row-actions">
364
- <button class="history-btn" id="history-btn" title="Browse previous sessions">
365
- <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
366
- <circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2" />
367
- <path d="M12 7v5l3 3" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
368
- </svg>
369
- <span class="history-btn-label">History</span>
370
- </button>
371
-
372
- <!-- Stop button — shown while AI is responding, hidden otherwise -->
373
- <button class="stop-btn" id="stop-btn" title="Stop the current response">
374
- <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
375
- <rect x="4" y="4" width="16" height="16" rx="2" fill="currentColor" opacity="0.85" />
376
- </svg>
377
- <span class="stop-btn-label">Stop</span>
378
- </button>
379
-
380
- <!-- Queue button — replaces New Session while AI is responding -->
381
- <button
382
- class="queue-btn"
383
- id="queue-btn"
384
- title="Queue this message — sends automatically once Symi finishes"
385
- >
386
- <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
387
- <path
388
- d="M3 6h18M3 12h12M3 18h8"
389
- stroke="currentColor"
390
- stroke-width="2"
391
- stroke-linecap="round"
392
- />
393
- </svg>
394
- <span class="queue-btn-label">Queue ↵</span>
395
- <span class="queue-cancel-x" id="queue-cancel-x" title="Cancel queued message">✕</span>
396
- </button>
397
-
398
- <button
399
- class="new-session-btn"
400
- id="new-session-btn"
401
- title="New session — clears conversation and starts fresh"
402
- >
403
- <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
404
- <path
405
- d="M11 4H7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-4"
406
- stroke="currentColor"
407
- stroke-width="2"
408
- stroke-linecap="round"
409
- />
410
- <path
411
- d="M18.5 2.5a2.121 2.121 0 0 1 3 3L13 14l-4 1 1-4 8.5-8.5z"
412
- stroke="currentColor"
413
- stroke-width="2"
414
- stroke-linecap="round"
415
- stroke-linejoin="round"
416
- />
417
- </svg>
418
- <span class="new-session-label">New Session</span>
419
- </button>
420
- </div>
421
- </div>
422
- </footer>
423
-
424
- <!-- ── Menu Trigger ──────────────────────────────────────────────── -->
425
- <button
426
- class="menu-trigger"
427
- id="menu-trigger"
428
- aria-label="Command menu"
429
- title="Command Menu (M)"
430
- >
431
- <svg class="menu-icon-grid" width="17" height="17" viewBox="0 0 18 18" fill="none">
432
- <circle cx="3" cy="3" r="1.6" fill="currentColor" />
433
- <circle cx="9" cy="3" r="1.6" fill="currentColor" />
434
- <circle cx="15" cy="3" r="1.6" fill="currentColor" />
435
- <circle cx="3" cy="9" r="1.6" fill="currentColor" />
436
- <circle cx="9" cy="9" r="1.6" fill="currentColor" />
437
- <circle cx="15" cy="9" r="1.6" fill="currentColor" />
438
- <circle cx="3" cy="15" r="1.6" fill="currentColor" />
439
- <circle cx="9" cy="15" r="1.6" fill="currentColor" />
440
- <circle cx="15" cy="15" r="1.6" fill="currentColor" />
441
- </svg>
442
- <svg class="menu-icon-close" width="17" height="17" viewBox="0 0 18 18" fill="none">
443
- <path
444
- d="M2 2l14 14M16 2 2 16"
445
- stroke="currentColor"
446
- stroke-width="2.2"
447
- stroke-linecap="round"
448
- />
449
- </svg>
450
- </button>
451
-
452
- <!-- ── Command Overlay ────────────────────────────────────────────── -->
453
- <div class="cmd-overlay" id="cmd-overlay" aria-hidden="true">
454
- <div class="cmd-backdrop" id="cmd-backdrop"></div>
455
- <div class="cmd-shell">
456
- <!-- Header bar -->
457
- <div class="cmd-header">
458
- <div class="cmd-brand">
459
- <span class="cmd-brand-glyph">◈</span>
460
- <span class="cmd-brand-name">SYMI</span>
461
- <span class="cmd-brand-sep">/</span>
462
- <span class="cmd-brand-sub">COMMAND CENTER</span>
463
- </div>
464
- <div class="cmd-esc-hint">Press <kbd class="cmd-kbd">ESC</kbd> to close</div>
465
- </div>
466
-
467
- <!-- 5-group command grid -->
468
- <div class="cmd-grid">
469
- <!-- ── CHAT ──────────────────────────────────────────────── -->
470
- <div class="cmd-group cmd-group--chat">
471
- <div class="cmd-group-hd">
472
- <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
473
- <path
474
- d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"
475
- stroke="currentColor"
476
- stroke-width="1.5"
477
- stroke-linecap="round"
478
- stroke-linejoin="round"
479
- />
480
- </svg>
481
- <span class="cmd-group-label">CHAT</span>
482
- </div>
483
- <div class="cmd-items">
484
- <a class="cmd-item" href="#" data-href="#chat">
485
- <span class="cmd-item-icon">◈</span>
486
- <div class="cmd-item-body">
487
- <span class="cmd-item-name">Chat</span>
488
- <span class="cmd-item-desc">Main conversation</span>
489
- </div>
490
- <span class="cmd-item-badge">ACTIVE</span>
491
- </a>
492
- </div>
493
- </div>
494
-
495
- <!-- ── CONTROL ───────────────────────────────────────────── -->
496
- <div class="cmd-group cmd-group--control">
497
- <div class="cmd-group-hd">
498
- <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
499
- <rect
500
- x="3"
501
- y="3"
502
- width="7"
503
- height="7"
504
- rx="1.5"
505
- stroke="currentColor"
506
- stroke-width="1.5"
507
- />
508
- <rect
509
- x="14"
510
- y="3"
511
- width="7"
512
- height="7"
513
- rx="1.5"
514
- stroke="currentColor"
515
- stroke-width="1.5"
516
- />
517
- <rect
518
- x="3"
519
- y="14"
520
- width="7"
521
- height="7"
522
- rx="1.5"
523
- stroke="currentColor"
524
- stroke-width="1.5"
525
- />
526
- <rect
527
- x="14"
528
- y="14"
529
- width="7"
530
- height="7"
531
- rx="1.5"
532
- stroke="currentColor"
533
- stroke-width="1.5"
534
- />
535
- </svg>
536
- <span class="cmd-group-label">CONTROL</span>
537
- </div>
538
- <div class="cmd-items cmd-items--grid">
539
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/overview">
540
- <span class="cmd-item-icon">⊙</span>
541
- <div class="cmd-item-body">
542
- <span class="cmd-item-name">Overview</span
543
- ><span class="cmd-item-desc">System overview</span>
544
- </div>
545
- </a>
546
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/channels">
547
- <span class="cmd-item-icon">⊞</span>
548
- <div class="cmd-item-body">
549
- <span class="cmd-item-name">Channels</span
550
- ><span class="cmd-item-desc">Messaging channels</span>
551
- </div>
552
- </a>
553
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/instances">
554
- <span class="cmd-item-icon">⊟</span>
555
- <div class="cmd-item-body">
556
- <span class="cmd-item-name">Instances</span
557
- ><span class="cmd-item-desc">AI instances</span>
558
- </div>
559
- </a>
560
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/sessions">
561
- <span class="cmd-item-icon">≋</span>
562
- <div class="cmd-item-body">
563
- <span class="cmd-item-name">Sessions</span
564
- ><span class="cmd-item-desc">Active sessions</span>
565
- </div>
566
- </a>
567
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/usage">
568
- <span class="cmd-item-icon">▲</span>
569
- <div class="cmd-item-body">
570
- <span class="cmd-item-name">Usage</span
571
- ><span class="cmd-item-desc">Tokens &amp; costs</span>
572
- </div>
573
- </a>
574
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/cron">
575
- <span class="cmd-item-icon">◷</span>
576
- <div class="cmd-item-body">
577
- <span class="cmd-item-name">Cron Jobs</span
578
- ><span class="cmd-item-desc">Scheduled tasks</span>
579
- </div>
580
- </a>
581
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/tasks">
582
- <span class="cmd-item-icon">▣</span>
583
- <div class="cmd-item-body">
584
- <span class="cmd-item-name">Background Tasks</span
585
- ><span class="cmd-item-desc">Detached long-running jobs</span>
586
- </div>
587
- </a>
588
- </div>
589
- </div>
590
-
591
- <!-- ── AGENT ─────────────────────────────────────────────── -->
592
- <div class="cmd-group cmd-group--agent">
593
- <div class="cmd-group-hd">
594
- <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
595
- <circle cx="12" cy="12" r="3" stroke="currentColor" stroke-width="1.5" />
596
- <path
597
- 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"
598
- stroke="currentColor"
599
- stroke-width="1.5"
600
- stroke-linecap="round"
601
- />
602
- </svg>
603
- <span class="cmd-group-label">AGENT</span>
604
- </div>
605
- <div class="cmd-items">
606
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/agents">
607
- <span class="cmd-item-icon">◈</span>
608
- <div class="cmd-item-body">
609
- <span class="cmd-item-name">Agents</span
610
- ><span class="cmd-item-desc">Agent management</span>
611
- </div>
612
- </a>
613
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/skills">
614
- <span class="cmd-item-icon">⚡</span>
615
- <div class="cmd-item-body">
616
- <span class="cmd-item-name">Skills</span
617
- ><span class="cmd-item-desc">Agent capabilities</span>
618
- </div>
619
- </a>
620
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/nodes">
621
- <span class="cmd-item-icon">⬡</span>
622
- <div class="cmd-item-body">
623
- <span class="cmd-item-name">Nodes</span
624
- ><span class="cmd-item-desc">Connected devices</span>
625
- </div>
626
- </a>
627
- </div>
628
- </div>
629
-
630
- <!-- ── SETTINGS ──────────────────────────────────────────── -->
631
- <div class="cmd-group cmd-group--settings">
632
- <div class="cmd-group-hd">
633
- <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
634
- <circle cx="12" cy="12" r="3" stroke="currentColor" stroke-width="1.5" />
635
- <path
636
- 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"
637
- stroke="currentColor"
638
- stroke-width="1.5"
639
- />
640
- </svg>
641
- <span class="cmd-group-label">SETTINGS</span>
642
- </div>
643
- <div class="cmd-items">
644
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/config">
645
- <span class="cmd-item-icon">⚙</span>
646
- <div class="cmd-item-body">
647
- <span class="cmd-item-name">Config</span
648
- ><span class="cmd-item-desc">System configuration</span>
649
- </div>
650
- </a>
651
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/debug">
652
- <span class="cmd-item-icon">⬢</span>
653
- <div class="cmd-item-body">
654
- <span class="cmd-item-name">Debug</span
655
- ><span class="cmd-item-desc">Debug console</span>
656
- </div>
657
- </a>
658
- <a class="cmd-item" href="#" data-href="http://127.0.0.1:18789/logs">
659
- <span class="cmd-item-icon">≡</span>
660
- <div class="cmd-item-body">
661
- <span class="cmd-item-name">Logs</span
662
- ><span class="cmd-item-desc">System logs</span>
663
- </div>
664
- </a>
665
- </div>
666
- </div>
667
-
668
- <!-- ── RESOURCES ─────────────────────────────────────────── -->
669
- <div class="cmd-group cmd-group--resources">
670
- <div class="cmd-group-hd">
671
- <svg class="cmd-group-svg" viewBox="0 0 24 24" fill="none">
672
- <path
673
- d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"
674
- stroke="currentColor"
675
- stroke-width="1.5"
676
- stroke-linecap="round"
677
- />
678
- <path
679
- d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"
680
- stroke="currentColor"
681
- stroke-width="1.5"
682
- stroke-linecap="round"
683
- />
684
- </svg>
685
- <span class="cmd-group-label">RESOURCES</span>
686
- </div>
687
- <div class="cmd-items">
688
- <a class="cmd-item" href="#" data-href="https://docs.symi.ai/">
689
- <span class="cmd-item-icon">◻</span>
690
- <div class="cmd-item-body">
691
- <span class="cmd-item-name">Docs</span
692
- ><span class="cmd-item-desc">Official documentation</span>
693
- </div>
694
- </a>
695
- </div>
696
- </div>
697
- </div>
698
- <!-- /cmd-grid -->
699
- </div>
700
- <!-- /cmd-shell -->
701
- </div>
702
- <!-- /cmd-overlay -->
703
-
704
- <!-- Standard UI toggle removed — glass UI is served directly from gateway -->
705
-
706
- <!-- ── Page Navigation Overlay ──────────────────────────────────── -->
707
- <div class="page-overlay" id="page-overlay" aria-hidden="true">
708
- <div class="page-overlay-header">
709
- <button class="page-back-btn" id="page-back-btn" title="Back to menu">
710
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
711
- <path
712
- d="M19 12H5M5 12l7-7M5 12l7 7"
713
- stroke="currentColor"
714
- stroke-width="2"
715
- stroke-linecap="round"
716
- stroke-linejoin="round"
717
- />
718
- </svg>
719
- <span>Menu</span>
720
- </button>
721
- <span class="page-overlay-title" id="page-overlay-title"></span>
722
- <a
723
- class="page-popout-btn"
724
- id="page-popout-btn"
725
- href="#"
726
- target="_blank"
727
- title="Open in new tab"
728
- rel="noopener"
729
- >
730
- <svg width="13" height="13" viewBox="0 0 24 24" fill="none">
731
- <path
732
- d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"
733
- stroke="currentColor"
734
- stroke-width="2"
735
- stroke-linecap="round"
736
- />
737
- <path
738
- d="M15 3h6v6M10 14L21 3"
739
- stroke="currentColor"
740
- stroke-width="2"
741
- stroke-linecap="round"
742
- stroke-linejoin="round"
743
- />
744
- </svg>
745
- Pop out
746
- </a>
747
- </div>
748
- <iframe
749
- class="page-overlay-frame"
750
- id="page-overlay-frame"
751
- src=""
752
- title="Page view"
753
- allowfullscreen
754
- ></iframe>
755
- </div>
756
-
757
- <!-- ── History Drawer ───────────────────────────────────────────── -->
758
- <div class="history-overlay" id="history-overlay"></div>
759
- <div class="history-drawer" id="history-drawer" aria-hidden="true">
760
- <div class="history-drawer-header">
761
- <div class="history-drawer-title">
762
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
763
- <circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2" />
764
- <path d="M12 7v5l3 3" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
765
- </svg>
766
- CHAT HISTORY
767
- </div>
768
- <button class="history-close-btn" id="history-close-btn" title="Close (Esc)">✕</button>
769
- </div>
770
- <div class="history-drawer-search">
771
- <input
772
- type="search"
773
- id="history-search-input"
774
- class="history-search-input"
775
- placeholder="Search across all sessions…"
776
- autocomplete="off"
777
- spellcheck="false"
778
- />
779
- <button class="history-search-clear" id="history-search-clear" title="Clear" hidden>✕</button>
780
- </div>
781
- <div class="history-drawer-body" id="history-drawer-body">
782
- <div class="history-loading">Loading sessions…</div>
783
- </div>
784
- </div>
785
-
786
- <!-- ── Session archive toast ─────────────────────────────────────── -->
787
- <div class="session-archive-toast" id="session-archive-toast">
788
- <svg width="12" height="12" viewBox="0 0 24 24" fill="none">
789
- <circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2" />
790
- <path d="M12 7v5l3 3" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
791
- </svg>
792
- Session archived — <span id="session-archive-link">View history ↗</span>
793
- </div>
794
-
795
- <!-- ── Connection Modal ──────────────────────────────────────────────── -->
796
- <div class="conn-modal-overlay" id="conn-modal-overlay" aria-hidden="true">
797
- <div class="conn-modal" id="conn-modal">
798
- <div class="conn-modal-header">
799
- <div class="conn-modal-icon" id="conn-modal-icon"></div>
800
- <div class="conn-modal-title" id="conn-modal-title">Channel</div>
801
- <button class="conn-modal-close" id="conn-modal-close" title="Close">
802
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
803
- <path
804
- d="M18 6L6 18M6 6l12 12"
805
- stroke="currentColor"
806
- stroke-width="2"
807
- stroke-linecap="round"
808
- />
809
- </svg>
810
- </button>
811
- </div>
812
- <div class="conn-modal-body" id="conn-modal-body"></div>
813
- <div class="conn-modal-footer" id="conn-modal-footer">
814
- <button class="conn-modal-docs" id="conn-modal-docs" type="button">
815
- <svg width="12" height="12" viewBox="0 0 24 24" fill="none">
816
- <path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20" stroke="currentColor" stroke-width="2" />
817
- <path
818
- d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"
819
- stroke="currentColor"
820
- stroke-width="2"
821
- />
822
- </svg>
823
- View Documentation
824
- </button>
825
- </div>
826
- </div>
827
- </div>
828
-
829
- <!-- ── Docs Viewer Modal (scrollable markdown viewer) ─────────────────── -->
830
- <div class="docs-viewer-overlay" id="docs-viewer-overlay" aria-hidden="true">
831
- <div class="docs-viewer" id="docs-viewer" role="dialog" aria-modal="true">
832
- <div class="docs-viewer-header">
833
- <div class="docs-viewer-title" id="docs-viewer-title">Documentation</div>
834
- <button class="docs-viewer-close" id="docs-viewer-close" title="Close" type="button">
835
- <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
836
- <path
837
- d="M18 6L6 18M6 6l12 12"
838
- stroke="currentColor"
839
- stroke-width="2"
840
- stroke-linecap="round"
841
- />
842
- </svg>
843
- </button>
844
- </div>
845
- <div class="docs-viewer-body" id="docs-viewer-body">
846
- <p class="docs-viewer-loading">Loading documentation…</p>
847
- </div>
848
- </div>
849
- </div>
850
-
851
- <!-- ── Subagent Spawn Modal ──────────────────────────────────────────── -->
852
- <div class="subagent-modal-overlay" id="subagent-modal-overlay" aria-hidden="true">
853
- <div class="subagent-modal" id="subagent-modal">
854
- <div class="subagent-modal-header">
855
- <div class="subagent-modal-icon">
856
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
857
- <circle cx="12" cy="12" r="3" />
858
- <path
859
- 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"
860
- />
861
- </svg>
862
- </div>
863
- <div class="subagent-modal-title">Spawn Subagent</div>
864
- <button class="subagent-modal-close" id="subagent-modal-close" title="Close">
865
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
866
- <path
867
- d="M18 6L6 18M6 6l12 12"
868
- stroke="currentColor"
869
- stroke-width="2"
870
- stroke-linecap="round"
871
- />
872
- </svg>
873
- </button>
874
- </div>
875
- <div class="subagent-modal-body">
876
- <div class="subagent-form-group">
877
- <label class="subagent-form-label" for="subagent-task">Task</label>
878
- <textarea
879
- class="subagent-form-textarea"
880
- id="subagent-task"
881
- placeholder="Describe the task for the subagent..."
882
- rows="3"
883
- ></textarea>
884
- </div>
885
- <div class="subagent-form-group">
886
- <label class="subagent-form-label" for="subagent-label">Label (optional)</label>
887
- <input
888
- type="text"
889
- class="subagent-form-input"
890
- id="subagent-label"
891
- placeholder="e.g. Research Agent, Code Review..."
892
- />
893
- </div>
894
- <div class="subagent-form-row">
895
- <div class="subagent-form-group">
896
- <label class="subagent-form-label" for="subagent-model">Model</label>
897
- <select class="subagent-form-select" id="subagent-model">
898
- <option value="">Default</option>
899
- <option value="anthropic/claude-sonnet-4-6">Claude Sonnet 4.6</option>
900
- <option value="ollama/gemma4:31b-128k">Gemma 4 31B 128K</option>
901
- <option value="ollama/qwen2.5:32b">Qwen 2.5 32B</option>
902
- </select>
903
- </div>
904
- <div class="subagent-form-group">
905
- <label class="subagent-form-label" for="subagent-thinking">Thinking</label>
906
- <select class="subagent-form-select" id="subagent-thinking">
907
- <option value="">Default</option>
908
- <option value="off">Off</option>
909
- <option value="low">Low</option>
910
- <option value="medium">Medium</option>
911
- <option value="high">High</option>
912
- </select>
913
- </div>
914
- </div>
915
- </div>
916
- <div class="subagent-modal-footer">
917
- <button class="subagent-modal-cancel" id="subagent-modal-cancel">Cancel</button>
918
- <button class="subagent-modal-submit" id="subagent-modal-submit">
919
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
920
- <path d="M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z" />
921
- </svg>
922
- Spawn
923
- </button>
924
- </div>
925
- </div>
926
- </div>
927
-
928
- <!-- ── Schedule Modal ──────────────────────────────────────────────── -->
929
- <div class="schedule-modal-overlay" id="schedule-modal-overlay" aria-hidden="true">
930
- <div class="schedule-modal" id="schedule-modal">
931
- <div class="schedule-modal-header">
932
- <div class="schedule-modal-icon">
933
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
934
- <circle cx="12" cy="12" r="10" />
935
- <polyline points="12 6 12 12 16 14" />
936
- </svg>
937
- </div>
938
- <div class="schedule-modal-title">Add Schedule</div>
939
- <button class="schedule-modal-close" id="schedule-modal-close" title="Close">
940
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none">
941
- <path
942
- d="M18 6L6 18M6 6l12 12"
943
- stroke="currentColor"
944
- stroke-width="2"
945
- stroke-linecap="round"
946
- />
947
- </svg>
948
- </button>
949
- </div>
950
- <div class="schedule-modal-body">
951
- <div class="schedule-form-group">
952
- <label class="schedule-form-label" for="schedule-name">Name</label>
953
- <input
954
- type="text"
955
- class="schedule-form-input"
956
- id="schedule-name"
957
- placeholder="e.g. Daily Report, Weekly Backup..."
958
- />
959
- </div>
960
- <div class="schedule-form-group">
961
- <label class="schedule-form-label" for="schedule-task">Task</label>
962
- <textarea
963
- class="schedule-form-textarea"
964
- id="schedule-task"
965
- placeholder="Describe what should happen on this schedule..."
966
- rows="3"
967
- ></textarea>
968
- </div>
969
- <div class="schedule-form-group">
970
- <label class="schedule-form-label">Run Every</label>
971
- <div class="schedule-interval-grid">
972
- <button type="button" class="schedule-interval-btn" data-interval="hourly">
973
- <span class="schedule-interval-value">1</span
974
- ><span class="schedule-interval-unit">Hour</span>
975
- </button>
976
- <button type="button" class="schedule-interval-btn" data-interval="daily">
977
- <span class="schedule-interval-value">1</span
978
- ><span class="schedule-interval-unit">Day</span>
979
- </button>
980
- <button type="button" class="schedule-interval-btn" data-interval="weekly">
981
- <span class="schedule-interval-value">1</span
982
- ><span class="schedule-interval-unit">Week</span>
983
- </button>
984
- <button type="button" class="schedule-interval-btn" data-interval="custom">
985
- <span class="schedule-interval-value">...</span
986
- ><span class="schedule-interval-unit">Custom</span>
987
- </button>
988
- </div>
989
- </div>
990
- <div class="schedule-custom-options" id="schedule-custom-options" style="display: none">
991
- <div class="schedule-form-row">
992
- <div class="schedule-form-group">
993
- <label class="schedule-form-label" for="schedule-interval-value">Every</label>
994
- <input
995
- type="number"
996
- class="schedule-form-input"
997
- id="schedule-interval-value"
998
- min="1"
999
- value="1"
1000
- />
1001
- </div>
1002
- <div class="schedule-form-group">
1003
- <label class="schedule-form-label" for="schedule-interval-unit">Period</label>
1004
- <select class="schedule-form-select" id="schedule-interval-unit">
1005
- <option value="minutes">Minutes</option>
1006
- <option value="hours">Hours</option>
1007
- <option value="days" selected>Days</option>
1008
- <option value="weeks">Weeks</option>
1009
- </select>
1010
- </div>
1011
- </div>
1012
- </div>
1013
- </div>
1014
- <div class="schedule-modal-footer">
1015
- <button class="schedule-modal-cancel" id="schedule-modal-cancel">Cancel</button>
1016
- <button class="schedule-modal-submit" id="schedule-modal-submit">
1017
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
1018
- <circle cx="12" cy="12" r="10" />
1019
- <polyline points="12 6 12 12 16 14" />
1020
- </svg>
1021
- Schedule
1022
- </button>
1023
- </div>
1024
- </div>
1025
- </div>
1026
-
1027
- <script src="/vendor/marked.min.js"></script>
1028
- <script src="/vendor/highlight.min.js"></script>
1029
- <script src="js/metrics.js"></script>
1030
- <script src="js/gateway.js"></script>
1031
- <script src="js/render.js"></script>
1032
- <script src="js/app.js"></script>
1033
- <script src="js/settings.js"></script>
1034
- <script src="js/menu.js"></script>
1035
- <script src="js/history.js"></script>
1036
- <script src="js/connections.js"></script>
1037
- <script src="js/subagents.js"></script>
1038
- <script src="js/scheduling.js"></script>
1039
- <script src="js/models.js"></script>
1040
- <script src="js/slash-autocomplete.js"></script>
1041
- </body>
1042
- </html>