@symerian/symi 3.4.30 → 3.4.32

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 (422) hide show
  1. package/dist/{agent-O3PihJOY.js → agent-BaSGoKPq.js} +17 -17
  2. package/dist/{agent-tdS4G7e8.js → agent-C8IIjDyn.js} +21 -21
  3. package/dist/{agent-scope-Ck_TLGsV.js → agent-scope-B6p555mP.js} +1 -1
  4. package/dist/{agent-scope-DJI5ijOw.js → agent-scope-DIjW66iO.js} +3 -3
  5. package/dist/{agents-C2MpIr16.js → agents-D6Ygz9ED.js} +12 -12
  6. package/dist/{agents.config-PPeqGzAc.js → agents.config-D1nFwU81.js} +1 -1
  7. package/dist/{agents.config-LRW5SZoE.js → agents.config-D7cHU-OU.js} +1 -1
  8. package/dist/{audit-TmPjr_wD.js → audit-BI8Rbs5q.js} +19 -19
  9. package/dist/{audit-yf3H4Y1h.js → audit-nqP-JeOr.js} +17 -17
  10. package/dist/{auth-BSmNj-Lv.js → auth-BbwD4lRX.js} +1 -1
  11. package/dist/{auth-choice-Bw2Kd6RM.js → auth-choice-BBrEzoy2.js} +8 -8
  12. package/dist/{auth-choice-CyBcsQ9T.js → auth-choice-Bx4Duu6u.js} +8 -8
  13. package/dist/{auth-profiles-C1lvfaCM.js → auth-profiles-BFSVvFKy.js} +6 -6
  14. package/dist/{auth-profiles-BG_wMJz6.js → auth-profiles-Bs5D0GUv.js} +4 -4
  15. package/dist/{auth-token-C0-TDuag.js → auth-token-Brb1Askz.js} +2 -2
  16. package/dist/{auth-token-BwQ5Nv4O.js → auth-token-SebYuqfR.js} +2 -2
  17. package/dist/{banner-D7__HlM-.js → banner-l9GjW5Rm.js} +2 -2
  18. package/dist/{bindings-D5s2VRjL.js → bindings-9LSA3Jr1.js} +1 -1
  19. package/dist/{bonjour-discovery-YoubCASb.js → bonjour-discovery-BTpm6P8H.js} +1 -1
  20. package/dist/{bonjour-discovery-CPzedvdf.js → bonjour-discovery-CU1mz7AC.js} +2 -2
  21. package/dist/{browser-cli-R6JagRCf.js → browser-cli-BAxOL41p.js} +22 -22
  22. package/dist/{browser-cli-B_6WWHm_.js → browser-cli-Bk8DxxeA.js} +13 -13
  23. package/dist/build-info.json +3 -3
  24. package/dist/bundled/boot-md/handler.js +4 -4
  25. package/dist/bundled/session-memory/handler.js +4 -4
  26. package/dist/{call-IfleM0ap.js → call-5IE9ycvm.js} +3 -4
  27. package/dist/{call-sikajorp.js → call-BPJn2_th.js} +5 -6
  28. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  29. package/dist/{catalog-DgsRZ5Yu.js → catalog-CJzUbDcX.js} +2 -2
  30. package/dist/{catalog-Bc0hKvgn.js → catalog-CSgSg5Gp.js} +2 -2
  31. package/dist/{channel-options-DrHwfPTb.js → channel-options-COanIUoQ.js} +5 -5
  32. package/dist/{channel-options-B5974x-7.js → channel-options-DGUqfnbP.js} +2 -2
  33. package/dist/{channel-selection-Cc4Pvn6b.js → channel-selection-BvIcXQLj.js} +2 -2
  34. package/dist/{channels-cli-D50PQAPc.js → channels-cli-B1zmnm5a.js} +83 -83
  35. package/dist/{channels-cli-C6Nv9mzy.js → channels-cli-CZ3M3yE1.js} +62 -62
  36. package/dist/{channels-status-issues-VZcSU4qT.js → channels-status-issues-DC8vgOMo.js} +1 -1
  37. package/dist/{chrome-DJCkCRLf.js → chrome-B0wRtBRB.js} +3 -3
  38. package/dist/{chrome-DT1fIVG1.js → chrome-B4P7ycw5.js} +7 -7
  39. package/dist/{chrome-CPSDqbK6.js → chrome-CQn8fDIy.js} +7 -7
  40. package/dist/{chrome-BM8HZu2p.js → chrome-VbDUdW0_.js} +4 -4
  41. package/dist/{chunk-D2_aCcvs.js → chunk-DQGU0F8t.js} +1 -1
  42. package/dist/{clack-prompter-BwhCW0Jc.js → clack-prompter-CWQQn_CK.js} +5 -5
  43. package/dist/cli-C7I5uEFC.js +128 -0
  44. package/dist/{cli-DZoms4qg.js → cli-CC5GrdTI.js} +52 -52
  45. package/dist/{client-Bcz3rG5V.js → client-Dp8LUTmF.js} +3 -5
  46. package/dist/{client-BzacpVvW.js → client-qjXXRKCO.js} +5 -7
  47. package/dist/{clipboard-Dz-Ob0yt.js → clipboard-McRwF3r0.js} +1 -1
  48. package/dist/{command-format-6B5tP-i9.js → command-format-Xm6vX3qJ.js} +1 -1
  49. package/dist/{command-registry--D98SJ6k.js → command-registry-D8fj6th4.js} +12 -12
  50. package/dist/{commands-DgyiLrAe.js → commands-B3UrgxIz.js} +2 -2
  51. package/dist/{commands-BN08daX-.js → commands-CHkx0oTl.js} +1 -1
  52. package/dist/{commands-registry-Bbs_ugoi.js → commands-registry-BNCcZy2y.js} +5 -5
  53. package/dist/{commands-registry-QB7xD3bc.js → commands-registry-Bccp0eH5.js} +3 -3
  54. package/dist/{completion-cli-CHYvpIPw.js → completion-cli-BxspmuYm.js} +3 -3
  55. package/dist/{completion-cli-QxWULepB.js → completion-cli-C-85b5b8.js} +4 -4
  56. package/dist/{config-vtCLkS2w.js → config-DqMsGcSQ.js} +7 -21
  57. package/dist/{config-cli-CcZo2229.js → config-cli-BqzjDmIH.js} +13 -13
  58. package/dist/{config-cli-DstpcB33.js → config-cli-DSDGwckX.js} +12 -12
  59. package/dist/{config-guard-CC-lFWDU.js → config-guard-CJcSKMuP.js} +21 -21
  60. package/dist/{config-guard-CCJrDmON.js → config-guard-Cu-dwAgi.js} +4 -4
  61. package/dist/{config-BTSBEAnk.js → config-igdtSRrZ.js} +10 -24
  62. package/dist/{config-validation-DSnQNdDO.js → config-validation-Bp2wJ610.js} +1 -1
  63. package/dist/{config-validation-YCrMlM9Z.js → config-validation-Bs1Gp2oG.js} +2 -2
  64. package/dist/{configure-B-UvSZZ7.js → configure-BazJdwKU.js} +14 -14
  65. package/dist/{configure-C4Qjzxdq.js → configure-Dl1f1Den.js} +25 -25
  66. package/dist/{consolidate-CPVaVTv0.js → consolidate-7Usm-b2g.js} +4 -4
  67. package/dist/{control-service-CwRG4M_O.js → control-service-DO8FjrS6.js} +4 -4
  68. package/dist/{control-service--TrXUUt_.js → control-service-Fn3d9AlH.js} +5 -5
  69. package/dist/{control-ui-assets-DI1jLkM6.js → control-ui-assets-DUhvOLUL.js} +2 -2
  70. package/dist/{cron-cli-DUETe3Of.js → cron-cli-DXgI5Lid.js} +10 -10
  71. package/dist/{cron-cli-BfUM5_Kw.js → cron-cli-DZyH2BfZ.js} +19 -19
  72. package/dist/{daemon-cli-DRDkDw_M.js → daemon-cli-C6FSROt1.js} +18 -18
  73. package/dist/{daemon-cli-Dy5eY4M7.js → daemon-cli-DmMYx5Uf.js} +10 -10
  74. package/dist/daemon-cli.js +0 -3
  75. package/dist/{daemon-runtime-ChztAKDA.js → daemon-runtime-2Y9RfgcP.js} +2 -2
  76. package/dist/{daemon-runtime-CqMnoGym.js → daemon-runtime-BpfA4d6Q.js} +2 -2
  77. package/dist/{deliver-59sRVaYQ.js → deliver-BkCYBlzi.js} +4 -4
  78. package/dist/{deliver-Mqq3tgqB.js → deliver-DvW5xHHr.js} +4 -4
  79. package/dist/{deliver-fvcQPsBc.js → deliver-RwovDEDy.js} +8 -8
  80. package/dist/{deliver-BHmK4isn.js → deliver-izdrXPr4.js} +5 -5
  81. package/dist/{delivery-queue-Du1ukE9B.js → delivery-queue-DDs84baU.js} +1 -1
  82. package/dist/{delivery-queue-Bqja5xKq.js → delivery-queue-nheCYaMd.js} +1 -1
  83. package/dist/{deps-CeHgkkO6.js → deps-bCHNuszw.js} +1 -1
  84. package/dist/{devices-cli-DV8wT4cj.js → devices-cli-D6xXc9Ym.js} +17 -17
  85. package/dist/{devices-cli-BCZ2HHjT.js → devices-cli-IMv-0zor.js} +9 -9
  86. package/dist/{diagnostic-Db9MI5bh.js → diagnostic-CwF3MnBL.js} +1 -1
  87. package/dist/{diagnostics-B9e2Kvx8.js → diagnostics-DxdqTfpW.js} +1 -1
  88. package/dist/{directory-cli-BVGd0l0T.js → directory-cli-3wlYB9In.js} +7 -7
  89. package/dist/{directory-cli-B6Ja7314.js → directory-cli-ClbYhd6z.js} +17 -17
  90. package/dist/{dm-policy-shared-Bjdk2L7B.js → dm-policy-shared-5HLej1br.js} +2 -2
  91. package/dist/{dm-policy-shared-BBTioONS.js → dm-policy-shared-CSF4Tw_F.js} +1 -1
  92. package/dist/{dns-cli-MEjZBWpL.js → dns-cli-CY2voLuR.js} +14 -14
  93. package/dist/{dns-cli-DH-ksmiI.js → dns-cli-CoVIqRWx.js} +8 -8
  94. package/dist/{dock-CSF4Y7tm.js → dock-CnGWTXL4.js} +2 -2
  95. package/dist/{docs-cli-BuX8FDdh.js → docs-cli-CFklWCND.js} +5 -5
  96. package/dist/{docs-cli-Cc3Rhfkx.js → docs-cli-DjQ3SvBq.js} +8 -8
  97. package/dist/{doctor-completion-rBc-f29C.js → doctor-completion-BwHbIZjF.js} +2 -2
  98. package/dist/{doctor-completion-C4Sf8CFV.js → doctor-completion-CX7LjkOD.js} +2 -2
  99. package/dist/{doctor-config-flow-CrnteetS.js → doctor-config-flow-CYDx1U0Z.js} +7 -7
  100. package/dist/{doctor-config-flow-BhmF6EAq.js → doctor-config-flow-wvoEFNeZ.js} +8 -8
  101. package/dist/entry.js +4 -7
  102. package/dist/{env-DoZWjLUy.js → env-B97Ms861.js} +1 -1
  103. package/dist/{exec-BcMHopF9.js → exec-DKyLtSjm.js} +2 -2
  104. package/dist/{exec-approvals-BndOYKTM.js → exec-approvals-B8n8es8o.js} +1 -1
  105. package/dist/{exec-approvals-BZBjOrJL.js → exec-approvals-CZOc8M5w.js} +1 -1
  106. package/dist/{exec-approvals-cli-Bqh3x_d1.js → exec-approvals-cli-B_P-1zVp.js} +24 -24
  107. package/dist/{exec-approvals-cli-CyXTXgft.js → exec-approvals-cli-Dy1jvh2M.js} +16 -16
  108. package/dist/extensionAPI.js +4 -4
  109. package/dist/{fetch-guard-BuQQKfW1.js → fetch-guard-DG6T0ZdL.js} +1 -1
  110. package/dist/{frontmatter-BH3ExkUY.js → frontmatter-B4levtVg.js} +2 -2
  111. package/dist/{gateway-cli-BrcMZGyF.js → gateway-cli-CTcK1Az2.js} +113 -114
  112. package/dist/{gateway-cli-fT43bqlv.js → gateway-cli-CW-Z71cE.js} +88 -89
  113. package/dist/{gateway-rpc-BEqCo2JK.js → gateway-rpc-C1xjWlxu.js} +1 -1
  114. package/dist/{gateway-rpc-cpgRv0Yq.js → gateway-rpc-DD_aXogj.js} +3 -3
  115. package/dist/{github-copilot-token-DIIEouRg.js → github-copilot-token-BTNK6Tcd.js} +1 -1
  116. package/dist/{github-copilot-token-CrM1aEWo.js → github-copilot-token-a6a53zx_.js} +1 -1
  117. package/dist/{glass-ui-ws-dERcmtve.js → glass-ui-ws-BNJkhJrL.js} +96 -96
  118. package/dist/{glass-ui-ws-BfMKuf9v.js → glass-ui-ws-BZvH4MBO.js} +68 -68
  119. package/dist/{gmail-setup-utils-Cz9Tb30q.js → gmail-setup-utils-B1BYpISg.js} +2 -2
  120. package/dist/{gmail-setup-utils-5bVmaBiu.js → gmail-setup-utils-fA1VaWLv.js} +3 -3
  121. package/dist/{health-Bpjd5_Oq.js → health-D8cKia4i.js} +10 -10
  122. package/dist/{health-DDxrkioj.js → health-DdzNc1yA.js} +5 -5
  123. package/dist/{health-format-BQcmGV4C.js → health-format-39e76m9p.js} +1 -1
  124. package/dist/{help-format-Bm9CoBSa.js → help-format-BI_G2p1e.js} +1 -1
  125. package/dist/{hooks-cli-Bkp-j7h6.js → hooks-cli-DkP3Y4ou.js} +76 -76
  126. package/dist/{hooks-cli-Btgk__9z.js → hooks-cli-qO421UdO.js} +59 -59
  127. package/dist/{hooks-status-BjjfBQnp.js → hooks-status-COU9Cw9_.js} +2 -2
  128. package/dist/{hooks-status-BaV4_YaJ.js → hooks-status-uaFS2SUa.js} +3 -3
  129. package/dist/{image-ops-CiGlXf65.js → image-ops-C-gIIp7Q.js} +1 -1
  130. package/dist/index.js +81 -81
  131. package/dist/{inspect-B_hklr0u.js → inspect-BDzd6yBs.js} +1 -1
  132. package/dist/{installs-DjzewzNC.js → installs-DhSLZRT7.js} +2 -2
  133. package/dist/{installs-B7y-N4mr.js → installs-cPraL4Dg.js} +2 -2
  134. package/dist/{lifecycle-core-CHB-QdED.js → lifecycle-core-BEmljRfh.js} +7 -7
  135. package/dist/{lifecycle-core-B0tG8ERp.js → lifecycle-core-uN2bsrZs.js} +3 -3
  136. package/dist/{links-Bmkpld9F.js → links-CSaUKNKm.js} +1 -1
  137. package/dist/{links-D4w-tJYZ.js → links-Db3Rw0Tg.js} +1 -1
  138. package/dist/llm-slug-generator.js +4 -4
  139. package/dist/{local-roots-DSeNuIW-.js → local-roots-Bk3321gv.js} +2 -2
  140. package/dist/{local-roots-lknhM9c3.js → local-roots-BnDnugq3.js} +3 -3
  141. package/dist/{logging-miJdTAeb.js → logging-B96FQvnn.js} +2 -2
  142. package/dist/{logging-DrqPd0Fg.js → logging-BeA4q4J_.js} +1 -1
  143. package/dist/{logs-cli-CUhZrDw7.js → logs-cli-BB0Mq8D1.js} +11 -11
  144. package/dist/{logs-cli-CGcdfvBo.js → logs-cli-Dbmzz8m_.js} +18 -18
  145. package/dist/{manager-BeNnzSJv.js → manager-BD_cpL9b.js} +1 -1
  146. package/dist/{manager-Di9qtuZF.js → manager-BQaZlWzK.js} +6 -6
  147. package/dist/{manager-uBAL1G42.js → manager-D0NIHMuQ.js} +1 -1
  148. package/dist/{manager-DqMx0qDw.js → manager-DOiW-Koo.js} +9 -9
  149. package/dist/{manifest-registry-0FO1WTmC.js → manifest-registry-DJcKcUQ9.js} +1 -1
  150. package/dist/{manifest-registry-DYQQ9Cci.js → manifest-registry-D_LsBSyt.js} +1 -1
  151. package/dist/{markdown-tables-Ca1j7TYS.js → markdown-tables-GTLvbzuR.js} +1 -1
  152. package/dist/{memory-BDeydRz3.js → memory-Cl4I_45k.js} +6 -6
  153. package/dist/{memory-cli-D4hZiGr5.js → memory-cli-CszP57Ee.js} +8 -8
  154. package/dist/{memory-cli-BXclq7qt.js → memory-cli-DkD_OD70.js} +13 -13
  155. package/dist/{memory-BXoRMmVn.js → memory-kIYeV9aO.js} +7 -7
  156. package/dist/{message-channel-BqrA0uMO.js → message-channel-C_V8IAYx.js} +1 -1
  157. package/dist/{model-DibfNW71.js → model-BRcKPW49.js} +1 -1
  158. package/dist/{model-Czbmn47-.js → model-DgN15006.js} +1 -1
  159. package/dist/{model-catalog-DPnCNs5N.js → model-catalog-C2rNhRI4.js} +4 -4
  160. package/dist/{model-catalog-Ds0dg_ob.js → model-catalog-CaGfL-2g.js} +4 -4
  161. package/dist/{model-picker-DuPommMc.js → model-picker-4NUXHy8M.js} +3 -3
  162. package/dist/{model-picker-BbaEgNir.js → model-picker-CV56GE8A.js} +3 -3
  163. package/dist/{models-B0wNKA18.js → models-BYi0Fo1a.js} +21 -21
  164. package/dist/{models-cli-CZY5Me88.js → models-cli-Bn9M1TgO.js} +83 -83
  165. package/dist/{models-cli-CL5K06Wu.js → models-cli-EdjvkvFO.js} +59 -59
  166. package/dist/{models-config-Box19p27.js → models-config-Unnduxgs.js} +3 -3
  167. package/dist/{models-config-CPlvO1b0.js → models-config-yKxNCn4V.js} +3 -3
  168. package/dist/{node-cli-BFBfD3vK.js → node-cli-39H0MZ8q.js} +36 -36
  169. package/dist/{node-cli-CWWMajKF.js → node-cli-C8FYMIjN.js} +21 -21
  170. package/dist/{node-service-CkP4-uRI.js → node-service-tPO_yUk7.js} +1 -1
  171. package/dist/{nodes-cli-BY4Ppctn.js → nodes-cli-C-03nIJ0.js} +22 -22
  172. package/dist/{nodes-cli-YmE7S-JB.js → nodes-cli-CqxQexTU.js} +14 -14
  173. package/dist/{nodes-screen-BfQScwqX.js → nodes-screen-Bkq2kswx.js} +2 -2
  174. package/dist/{nodes-screen-BMUoHTPZ.js → nodes-screen-JELuBMBi.js} +1 -1
  175. package/dist/{note-C4Pc_hIl.js → note-CHrtEumO.js} +2 -2
  176. package/dist/{npm-registry-spec-C8W7KCAB.js → npm-registry-spec-BXw_6vF6.js} +2 -2
  177. package/dist/{npm-registry-spec-s-9OX2Kw.js → npm-registry-spec-NLo2PCol.js} +1 -1
  178. package/dist/{onboard-DjlI4mIw.js → onboard-C8IQnigm.js} +19 -19
  179. package/dist/{onboard-HqUZVKyD.js → onboard-CAIujkV7.js} +13 -13
  180. package/dist/{onboard-channels-BbF5-N3g.js → onboard-channels-B2l6OoMg.js} +7 -7
  181. package/dist/{onboard-channels-C5EUFcLq.js → onboard-channels-D_uUQbem.js} +9 -9
  182. package/dist/{onboard-custom-C-6Cooq5.js → onboard-custom-B2fJvyxt.js} +3 -3
  183. package/dist/{onboard-custom-63SI3jrk.js → onboard-custom-DcZ2SEUv.js} +3 -3
  184. package/dist/{onboard-helpers-Cb3WFLl9.js → onboard-helpers-Bm-oyLWy.js} +5 -5
  185. package/dist/{onboard-helpers-Bpa6_3vl.js → onboard-helpers-CHfdRdZR.js} +9 -9
  186. package/dist/{onboard-hooks-ggR6fsQs.js → onboard-hooks-DBYkemjF.js} +8 -8
  187. package/dist/{onboard-hooks-DXXg3YH9.js → onboard-hooks-DgRzMz0E.js} +5 -5
  188. package/dist/{onboard-remote-Cnxe89N8.js → onboard-remote-ecyetiyL.js} +3 -3
  189. package/dist/{onboard-remote-CqtCrqtm.js → onboard-remote-z8XLK4M0.js} +3 -3
  190. package/dist/{onboard-skills-D5Ww8pwO.js → onboard-skills-BLvL0KPR.js} +4 -4
  191. package/dist/{onboard-skills-CS3l5fhH.js → onboard-skills-C53RGq_5.js} +5 -5
  192. package/dist/{onboarding-BPmsmDud.js → onboarding-4v9LJueP.js} +18 -18
  193. package/dist/{onboarding-Be_HJIFA.js → onboarding-BIq5BxG0.js} +16 -16
  194. package/dist/{onboarding.finalize-QwO5yuPm.js → onboarding.finalize-Bkcwe5RS.js} +51 -51
  195. package/dist/{onboarding.finalize-dsCUTKCQ.js → onboarding.finalize-CXAQzVXM.js} +32 -32
  196. package/dist/{onboarding.gateway-config-BZDShYzP.js → onboarding.gateway-config-3JMN1xRf.js} +22 -22
  197. package/dist/{onboarding.gateway-config-Ctd1_QW4.js → onboarding.gateway-config-Ft3f6Jba.js} +11 -11
  198. package/dist/{openai-model-default-Dxlm7Pvs.js → openai-model-default-BVPmAuXK.js} +3 -3
  199. package/dist/{openai-model-default-DT9-42Xb.js → openai-model-default-CDDFpxUr.js} +3 -3
  200. package/dist/{outbound-send-deps-DPsU_Xdy.js → outbound-send-deps-Dmc3B-LK.js} +1 -1
  201. package/dist/{pairing-cli-PtlNv7Gr.js → pairing-cli-B_icqS8Y.js} +9 -9
  202. package/dist/{pairing-cli-C1TeY-2m.js → pairing-cli-CJGA4j6G.js} +15 -15
  203. package/dist/{pairing-store-5oyzSW2X.js → pairing-store-BGf29nPx.js} +4 -4
  204. package/dist/{pairing-store-B9MEud_Y.js → pairing-store-CtBnCGHZ.js} +2 -2
  205. package/dist/{pairing-token-Cup-49D-.js → pairing-token-Bnr7QjVF.js} +1 -1
  206. package/dist/{pairing-token-BaZLnDjo.js → pairing-token-CURbSHdi.js} +1 -1
  207. package/dist/{path-env-C8hRAfiL.js → path-env-DuQralyy.js} +1 -1
  208. package/dist/{paths-By0XjHBk.js → paths-BSzKwaxE.js} +1 -4
  209. package/dist/{paths-BldkKgCk.js → paths-CJcw9nbZ.js} +1 -1
  210. package/dist/{paths-gcw23t43.js → paths-CNexk5_o.js} +1 -1
  211. package/dist/{paths-7zaGPdLp.js → paths-CsQkeUQ3.js} +1 -1
  212. package/dist/{paths-DeDKrl27.js → paths-Dc6A9_vI.js} +1 -1
  213. package/dist/{pi-auth-json-BOXWkXms.js → pi-auth-json-CUZ7IgY7.js} +1 -1
  214. package/dist/{pi-auth-json-DVUJqaKg.js → pi-auth-json-SHGGQzOL.js} +1 -1
  215. package/dist/{pi-embedded-Cp7d6jtB.js → pi-embedded-CGebiST2.js} +10 -13
  216. package/dist/{pi-embedded-helpers-CVKIHnFv.js → pi-embedded-helpers-BwBjqJM5.js} +2 -2
  217. package/dist/{pi-embedded-helpers-DMVyRPBT.js → pi-embedded-helpers-CAdI9wJ5.js} +4 -4
  218. package/dist/{pi-tools.policy-8_wTu7v2.js → pi-tools.policy-BaRznBvu.js} +3 -3
  219. package/dist/{pi-tools.policy-C5aC-K5q.js → pi-tools.policy-Dyx3nBmp.js} +5 -5
  220. package/dist/{plugin-auto-enable-CYoZQPJO.js → plugin-auto-enable-D2TNEv3x.js} +4 -4
  221. package/dist/{plugin-auto-enable-BWd5lJQf.js → plugin-auto-enable-DSliW8o4.js} +3 -3
  222. package/dist/{plugin-registry-BG51uZOA.js → plugin-registry-D7ACpV2Y.js} +3 -3
  223. package/dist/{plugin-registry-BouuQy-X.js → plugin-registry-d4hMhLLZ.js} +5 -5
  224. package/dist/plugin-sdk/gateway/protocol/index.d.ts +2 -5
  225. package/dist/plugin-sdk/gateway/protocol/schema/logs-chat.d.ts +0 -1
  226. package/dist/{plugins-CypN_04v.js → plugins-DuuHorqi.js} +1 -1
  227. package/dist/{plugins-cli-Bk7Al8u3.js → plugins-cli-CPf1hMaZ.js} +76 -76
  228. package/dist/{plugins-cli-B-zVOiQN.js → plugins-cli-D1gd8p9T.js} +58 -58
  229. package/dist/{ports-BgvsHTN5.js → ports-BAzQoIw0.js} +2 -2
  230. package/dist/{ports-YkSuli-C.js → ports-Cv4kt1bT.js} +1 -1
  231. package/dist/{ports-BxtK6PMH.js → ports-DRHSHvqY.js} +2 -2
  232. package/dist/{ports-CduvYJlk.js → ports-DqxP-bXz.js} +3 -3
  233. package/dist/{program-BOh0XGsA.js → program-C19G7o-Q.js} +63 -63
  234. package/dist/{program-context-D73fzUUe.js → program-context-BSUkEz3n.js} +39 -39
  235. package/dist/{progress-B3rWk9lR.js → progress-CyPyGCDn.js} +2 -2
  236. package/dist/{prompt-select-styled-Bz1VV3Qu.js → prompt-select-styled-B5wlPYN5.js} +40 -40
  237. package/dist/{prompt-select-styled-Bj-hrPCx.js → prompt-select-styled-CnYM7W0j.js} +24 -24
  238. package/dist/{prompt-style-LtRrtcTi.js → prompt-style-Cad0BDRS.js} +1 -1
  239. package/dist/{provider-auth-helpers-BK6NFk2Q.js → provider-auth-helpers-BUC4xGK9.js} +5 -5
  240. package/dist/{provider-auth-helpers-D3hXI6HN.js → provider-auth-helpers-DpRoNr_8.js} +7 -7
  241. package/dist/{push-apns-C1guJr4R.js → push-apns-Bm39oOO9.js} +5 -5
  242. package/dist/{push-apns-CMxk3Hxf.js → push-apns-DqmFEcqh.js} +3 -3
  243. package/dist/{pw-ai-CE2TBGif.js → pw-ai-B0-pgbYu.js} +9 -9
  244. package/dist/{pw-ai-EtT_bBJY.js → pw-ai-B2NuWIL7.js} +13 -13
  245. package/dist/{pw-ai-w6Qalz1W.js → pw-ai-BB1pJj9_.js} +1 -1
  246. package/dist/{pw-ai-C5MJKzUM.js → pw-ai-BsEf8C15.js} +1 -1
  247. package/dist/{qmd-manager--xIse9H_.js → qmd-manager--kGuC39q.js} +4 -4
  248. package/dist/{qmd-manager-DgCmfS8D.js → qmd-manager-358OTDns.js} +8 -8
  249. package/dist/{qr-cli-BeHlC33g.js → qr-cli-Cx7DYTSk.js} +5 -5
  250. package/dist/{qr-cli-zto9YWnY.js → qr-cli-hPIeUYAT.js} +11 -11
  251. package/dist/{redact-identifier-B1VHIbnd.js → redact-identifier-Cm1VfV7E.js} +4 -4
  252. package/dist/{register.agent-CNhg2KUt.js → register.agent-CCKcgAXs.js} +91 -91
  253. package/dist/{register.agent-COv5OPLQ.js → register.agent-DZuxoC0a.js} +71 -71
  254. package/dist/register.configure-CJErdFO_.js +129 -0
  255. package/dist/register.configure-JT8T7HO5.js +125 -0
  256. package/dist/{register.maintenance-BAK-DiQY.js → register.maintenance-CKsv0lok.js} +70 -70
  257. package/dist/{register.maintenance-B_slxJa6.js → register.maintenance-DDzKUGYJ.js} +98 -98
  258. package/dist/{register.message-Bbtej3vy.js → register.message-CpOXi1rz.js} +74 -74
  259. package/dist/{register.message-CCBmn5ja.js → register.message-_bfhetTg.js} +55 -55
  260. package/dist/{register.onboard-Cu2KnArg.js → register.onboard-BHtTh0b_.js} +42 -42
  261. package/dist/{register.onboard-B3jO_Goy.js → register.onboard-CkIM3hU7.js} +24 -24
  262. package/dist/{register.setup-Ca6zdWpf.js → register.setup-CLhdFQHW.js} +42 -42
  263. package/dist/{register.setup-CYSISTDO.js → register.setup-CYtYDKMU.js} +27 -27
  264. package/dist/{register.status-health-sessions-D9p0ClqJ.js → register.status-health-sessions-DZnebsxZ.js} +60 -60
  265. package/dist/{register.status-health-sessions-CGbg9k6d.js → register.status-health-sessions-DmX0DLAt.js} +39 -39
  266. package/dist/{register.subclis-loifbhVx.js → register.subclis-CnDo2jzv.js} +29 -29
  267. package/dist/{registry-Sbac4a4z.js → registry-DKJLAPDB.js} +2 -2
  268. package/dist/{replies-PetyGT0p.js → replies-B2O2eRh6.js} +3 -3
  269. package/dist/{replies-Dj640LxQ.js → replies-DIHkSwoW.js} +2 -2
  270. package/dist/{reply-prefix-CXsO5E1Z.js → reply-prefix-B7pYEiW_.js} +1 -1
  271. package/dist/{reply-prefix-DKeEUCUp.js → reply-prefix-BOdARKaY.js} +1 -1
  272. package/dist/{resolve-route-8JoEBwi6.js → resolve-route-CRWE36h5.js} +4 -4
  273. package/dist/{resolve-route-BcYnh5es.js → resolve-route-DNKcB7Q9.js} +1 -1
  274. package/dist/{routes-CJ4en0jL.js → routes-BMShi_eY.js} +7 -7
  275. package/dist/{routes-B5y-oAKp.js → routes-Cio8is5Y.js} +5 -5
  276. package/dist/{rpc-qWm1bRo5.js → rpc-CEhoSTGo.js} +1 -1
  277. package/dist/{rpc-ElDiKzq4.js → rpc-D0Ldc6Hv.js} +3 -3
  278. package/dist/{run-main-B7Ria3zD.js → run-main-BIRbWKyA.js} +73 -73
  279. package/dist/{runtime-guard-oeRbIq84.js → runtime-guard-BZ3_1QqS.js} +1 -1
  280. package/dist/{sandbox-BJgHc4Vu.js → sandbox-B4RfQ7k1.js} +9 -9
  281. package/dist/{sandbox-C8Gh5iJW.js → sandbox-C-UeHmuJ.js} +11 -11
  282. package/dist/{sandbox-cli-CSudrHYL.js → sandbox-cli-B43FqqPT.js} +17 -17
  283. package/dist/{sandbox-cli-DkMmnojU.js → sandbox-cli-CNAPNXJ4.js} +29 -29
  284. package/dist/{security-cli-pLoqKkfb.js → security-cli-BSd8_Gsq.js} +38 -38
  285. package/dist/{security-cli-B2lCR2xX.js → security-cli-DDM0Z6IW.js} +27 -27
  286. package/dist/{send-DuYvWRLE.js → send-DSK6O8SC.js} +9 -9
  287. package/dist/{send-CY9na-Jw.js → send-EluKytgO.js} +3 -3
  288. package/dist/{server-context-DdWWaDf6.js → server-context-CDTuNR-O.js} +5 -5
  289. package/dist/{server-context-CJFU_WfI.js → server-context-DFO6o83F.js} +8 -8
  290. package/dist/{server-methods-Dk_EnINI.js → server-methods-Dz6NGEg3.js} +35 -59
  291. package/dist/{server-methods-RhVqtIqB.js → server-methods-vp5zi6v5.js} +41 -65
  292. package/dist/{server-node-events-BHegSgG9.js → server-node-events-4ufB_olv.js} +55 -55
  293. package/dist/{server-node-events-UQx561GA.js → server-node-events-B7UtUhkC.js} +74 -74
  294. package/dist/{service-BCu0FBzN.js → service-AP9pR9R5.js} +1 -1
  295. package/dist/{session-cost-usage-5VmVPhKy.js → session-cost-usage-Cj3vd7lZ.js} +1 -1
  296. package/dist/{session-cost-usage-XhPrxXSs.js → session-cost-usage-DYcv40ss.js} +1 -1
  297. package/dist/{session-utils-DFJztVrF.js → session-utils-CgGDr4eh.js} +12 -12
  298. package/dist/{session-utils-CAVPV2Hh.js → session-utils-D1VcHni_.js} +7 -7
  299. package/dist/{sessions-CqLQkkWg.js → sessions-BNEDanZO.js} +4 -4
  300. package/dist/{sessions-BsGGoTdl.js → sessions-Dh88Kqd6.js} +9 -9
  301. package/dist/{sessions-BDM9kNY0.js → sessions-iLfSd6VD.js} +5 -5
  302. package/dist/{shared-CpwtQRJB.js → shared-CIeW3aWF.js} +4 -4
  303. package/dist/{shared-D7tsGdxc.js → shared-DP6YX7_w.js} +1 -1
  304. package/dist/{shared-B7nP44vU.js → shared-DmYHvtn2.js} +2 -2
  305. package/dist/{shared-CbUpEKXt.js → shared-_wwqvx84.js} +3 -3
  306. package/dist/{skill-commands-B45w-suH.js → skill-commands-5QB5E8bv.js} +4 -4
  307. package/dist/{skill-commands-CRQniaHy.js → skill-commands-CcCCVblU.js} +4 -4
  308. package/dist/{skills-CTcjFd_F.js → skills-BP6p7GnN.js} +3 -3
  309. package/dist/{skills-haW9gU7e.js → skills-Bmjf5nFv.js} +3 -3
  310. package/dist/{skills-cli-9Mlb7VRg.js → skills-cli-BJDvUT_e.js} +13 -13
  311. package/dist/{skills-cli-CV_42wby.js → skills-cli-Byp9MfZh.js} +17 -17
  312. package/dist/{skills-install-B4JPO_Np.js → skills-install-BB27sD4d.js} +4 -4
  313. package/dist/{skills-install-D5ikt72d.js → skills-install-BzqoHn0x.js} +3 -3
  314. package/dist/{skills-remote-BW2GvG2l.js → skills-remote-CqwR3Zvp.js} +5 -5
  315. package/dist/{skills-remote-BASG1Doo.js → skills-remote-DHfuS68n.js} +4 -4
  316. package/dist/{skills-status-1iVfuVIG.js → skills-status-01KNlWUS.js} +3 -3
  317. package/dist/{skills-status-C9lLJu0B.js → skills-status-BNDqwHkP.js} +3 -3
  318. package/dist/{sqlite-DL_ZWVN-.js → sqlite-DBEvS-Ne.js} +2 -2
  319. package/dist/{sqlite-67BqaVPd.js → sqlite-l3CZYU6t.js} +1 -1
  320. package/dist/{status-CrddsMfu.js → status-B0HecH1s.js} +4 -4
  321. package/dist/{status-D5RhVO0A.js → status-BD8gFYKH.js} +18 -18
  322. package/dist/{status-DPu7qNXE.js → status-DEXnB1sw.js} +27 -27
  323. package/dist/{status-Bci6O3aA.js → status-MMLxoRgQ.js} +3 -3
  324. package/dist/{status.update-D5CachQ_.js → status.update-Be8PuHCh.js} +2 -2
  325. package/dist/{status.update-Dfd0eZOH.js → status.update-CB9e3eWW.js} +2 -2
  326. package/dist/{subagent-registry-CsXaK_sy.js → subagent-registry-C57PFGHU.js} +61 -61
  327. package/dist/{subsystem-CHbO_DkH.js → subsystem-CtH6J8AV.js} +1 -1
  328. package/dist/{synthesis-BwcfS9jt.js → synthesis-CQdzrLFL.js} +4 -4
  329. package/dist/{synthesis-CU_MR7nV.js → synthesis-CjsIBd8X.js} +71 -71
  330. package/dist/{synthesis-dplLmFIP.js → synthesis-DSdF0vsi.js} +4 -4
  331. package/dist/{synthesis-BoZf8BeO.js → synthesis-j_kjlFo1.js} +52 -52
  332. package/dist/{system-cli-CCn-08Zm.js → system-cli-BM8KbtUc.js} +18 -18
  333. package/dist/{system-cli-D5FffFX5.js → system-cli-CQFH_HwX.js} +10 -10
  334. package/dist/{systemd-bkj5giUQ.js → systemd-9LEEqibe.js} +2 -2
  335. package/dist/{systemd-hints-UeG2BDXq.js → systemd-hints-A1W3AdVo.js} +3 -3
  336. package/dist/{systemd-hints-CufcSfMk.js → systemd-hints-BejQ6J2Y.js} +2 -2
  337. package/dist/{systemd-linger-DVkUgWAi.js → systemd-linger-PqG8iGCt.js} +2 -2
  338. package/dist/{table-Sfrx6RZ-.js → table-CSEp22Mk.js} +1 -1
  339. package/dist/{table-B4DunWtf.js → table-DkAQzCOR.js} +2 -2
  340. package/dist/{tailscale-G_tEEN9T.js → tailscale-D7dC-5EX.js} +3 -3
  341. package/dist/{tokens-BdVB8KXo.js → tokens-BKbemuIk.js} +1 -1
  342. package/dist/{tokens-h4i8ww8n.js → tokens-K3kGchJA.js} +1 -1
  343. package/dist/{tool-display-BngPYwnR.js → tool-display-Dr6VaTg5.js} +1 -1
  344. package/dist/{tool-display-DccYrlOh.js → tool-display-wSdT0Ynz.js} +1 -1
  345. package/dist/{tool-loop-detection-ckNnHN4a.js → tool-loop-detection-CLDr_JBu.js} +1 -1
  346. package/dist/{tool-loop-detection-DldKffR8.js → tool-loop-detection-CSSq5kkt.js} +4 -4
  347. package/dist/{trash-S6FbJcDo.js → trash-BjVrPcAx.js} +1 -1
  348. package/dist/{tui-DZ8gksSZ.js → tui-D0j61PXx.js} +8 -8
  349. package/dist/{tui-DroW8IOb.js → tui-DFuScHlA.js} +10 -10
  350. package/dist/{tui-cli-CyBJYh9u.js → tui-cli-25xTveHh.js} +24 -24
  351. package/dist/{tui-cli-1SpmbQMM.js → tui-cli-C3dXNtPo.js} +36 -36
  352. package/dist/{unified-runner-BFLLzEHE.js → unified-runner-BNt7TQKM.js} +10 -13
  353. package/dist/{unified-runner-CSPkKZHX.js → unified-runner-DCiPB--z.js} +73 -73
  354. package/dist/{update-BITFZPr2.js → update-C1rkPV1C.js} +3 -3
  355. package/dist/{update-OkPZ3jjl.js → update-CjZgU686.js} +3 -3
  356. package/dist/{update-check-CMbKkelk.js → update-check-CZxZhEXr.js} +2 -2
  357. package/dist/{update-cli-Dh5dvdv-.js → update-cli-CWufRpkr.js} +104 -104
  358. package/dist/{update-cli-yW6Xl6fs.js → update-cli-Dl_QbjXc.js} +77 -77
  359. package/dist/{update-runner-BI8ZSR1b.js → update-runner-Dq5UYQbo.js} +5 -5
  360. package/dist/{update-runner-CIgLduhH.js → update-runner-ENJw0Mco.js} +2 -2
  361. package/dist/{utils-CTPsqyE_.js → utils-BU8jVQFM.js} +1 -1
  362. package/dist/{webhooks-cli-Cwhu9vyD.js → webhooks-cli-Clx8DGfA.js} +14 -14
  363. package/dist/{webhooks-cli-4bmyKzwb.js → webhooks-cli-UfO_WffC.js} +11 -11
  364. package/dist/{widearea-dns-BZ7fV_kq.js → widearea-dns-C5NqCQ3L.js} +1 -1
  365. package/dist/{widearea-dns-D9KXb2gb.js → widearea-dns-drOINmDM.js} +1 -1
  366. package/dist/{with-timeout-D_FOTx48.js → with-timeout-BE7lxhxW.js} +2 -2
  367. package/dist/{with-timeout-bWr6yBeX.js → with-timeout-BcL6qAbd.js} +2 -2
  368. package/dist/{workspace-DxscDsm6.js → workspace-B3sO7QlN.js} +2 -2
  369. package/dist/{workspace-BHDa_VCi.js → workspace-Bb1HX2I0.js} +1 -1
  370. package/dist/{workspace-dirs-2xcWGse3.js → workspace-dirs-23IYtZj2.js} +1 -1
  371. package/dist/{workspace-dirs-aYEM1rQE.js → workspace-dirs-D5OnUmvw.js} +1 -1
  372. package/extensions/memory-core/node_modules/.bin/symi +0 -0
  373. package/extensions/msteams/node_modules/.bin/symi +0 -0
  374. package/extensions/outlook/node_modules/.bin/symi +0 -0
  375. package/extensions/slack/node_modules/.bin/symi +0 -0
  376. package/package.json +108 -79
  377. package/dist/cli-CK62Eh_9.js +0 -128
  378. package/dist/control-ui/css/revert-red-theme.md +0 -141
  379. package/dist/control-ui/css/style.css +0 -5843
  380. package/dist/control-ui/css/style.css.backup-2026-03-03-162525 +0 -3546
  381. package/dist/control-ui/css/style.css.backup-before-red-2026-03-03-162525 +0 -3546
  382. package/dist/control-ui/css/style.css.backup-before-red-theme-2026-03-03-162530 +0 -3546
  383. package/dist/control-ui/css/style.css.pre-2row +0 -2165
  384. package/dist/control-ui/css/style.css.pre-brand +0 -1776
  385. package/dist/control-ui/css/style.css.pre-history +0 -1974
  386. package/dist/control-ui/css/style.css.pre-nav +0 -2264
  387. package/dist/control-ui/css/style.css.pre-newsession +0 -1898
  388. package/dist/control-ui/css/style.css.pre-queue +0 -2195
  389. package/dist/control-ui/css/style.css.pre-red-prompt +0 -2524
  390. package/dist/control-ui/css/style.css.pre-stop +0 -2239
  391. package/dist/control-ui/css/style.css.pre-textarea +0 -2184
  392. package/dist/control-ui/css/style.css.pre-watchdog +0 -1848
  393. package/dist/control-ui/css/style.css.red-theme +0 -2999
  394. package/dist/control-ui/index.html +0 -1042
  395. package/dist/control-ui/js/app.js +0 -1304
  396. package/dist/control-ui/js/app.js.pre-2row +0 -463
  397. package/dist/control-ui/js/app.js.pre-heartbeat-filter +0 -595
  398. package/dist/control-ui/js/app.js.pre-newsession +0 -408
  399. package/dist/control-ui/js/app.js.pre-queue +0 -476
  400. package/dist/control-ui/js/app.js.pre-stop +0 -564
  401. package/dist/control-ui/js/app.js.pre-textarea +0 -467
  402. package/dist/control-ui/js/app.js.pre-watchdog +0 -293
  403. package/dist/control-ui/js/connections.js +0 -438
  404. package/dist/control-ui/js/gateway.js +0 -233
  405. package/dist/control-ui/js/gateway.js.pre-stop +0 -110
  406. package/dist/control-ui/js/history.js +0 -732
  407. package/dist/control-ui/js/logs.js +0 -238
  408. package/dist/control-ui/js/menu.js +0 -230
  409. package/dist/control-ui/js/menu.js.pre-nav +0 -66
  410. package/dist/control-ui/js/metrics.js +0 -53
  411. package/dist/control-ui/js/models.js +0 -138
  412. package/dist/control-ui/js/render.js +0 -882
  413. package/dist/control-ui/js/render.test.js +0 -112
  414. package/dist/control-ui/js/scheduling.js +0 -461
  415. package/dist/control-ui/js/settings.js +0 -909
  416. package/dist/control-ui/js/slash-autocomplete.js +0 -168
  417. package/dist/control-ui/js/subagents.js +0 -560
  418. package/dist/control-ui/js/utils.js +0 -29
  419. package/dist/control-ui/vendor/highlight.min.js +0 -2518
  420. package/dist/control-ui/vendor/marked.min.js +0 -69
  421. package/dist/register.configure-RhKVlfWH.js +0 -125
  422. package/dist/register.configure-q33027ym.js +0 -129
@@ -1,238 +0,0 @@
1
- // ── Native Logs Viewer ────────────────────────────────────────────────
2
- // Fetches logs via the Glass UI's gateway RPC and renders them natively.
3
- // No iframe, no SPA proxy — direct gateway connection.
4
-
5
- const LOGS_POLL_MS = 3000;
6
- const LOGS_LIMIT = 500;
7
- const LOGS_MAX_BYTES = 250000;
8
-
9
- const LEVEL_COLORS = {
10
- TRACE: '#6b7280',
11
- DEBUG: '#8b5cf6',
12
- INFO: '#60a5fa',
13
- WARN: '#f59e0b',
14
- ERROR: '#ef4444',
15
- FATAL: '#dc2626',
16
- };
17
-
18
- const LEVEL_ORDER = ['TRACE', 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL'];
19
-
20
- let logsContainer = null;
21
- let logsCursor = null;
22
- let logsTimer = null;
23
- let logsAutoFollow = true;
24
- let logsLevelFilters = new Set(LEVEL_ORDER);
25
- let logsFilterText = '';
26
- let logsEntries = [];
27
-
28
- function createLogsUI() {
29
- const overlay = document.querySelector('body > .page-overlay');
30
- const frame = document.getElementById('page-overlay-frame');
31
-
32
- // Hide the iframe
33
- if (frame) frame.style.display = 'none';
34
-
35
- // Create or get native logs container
36
- let container = document.getElementById('native-logs-container');
37
- if (!container) {
38
- container = document.createElement('div');
39
- container.id = 'native-logs-container';
40
- container.innerHTML = `
41
- <div class="logs-toolbar">
42
- <div class="logs-filters">
43
- ${LEVEL_ORDER.map(l => `
44
- <label class="logs-level-toggle" data-level="${l}">
45
- <input type="checkbox" checked data-level="${l}">
46
- <span class="logs-level-badge" style="color:${LEVEL_COLORS[l]}">${l}</span>
47
- </label>
48
- `).join('')}
49
- </div>
50
- <div class="logs-search">
51
- <input type="text" id="logs-search-input" placeholder="Filter logs..." />
52
- </div>
53
- <div class="logs-actions">
54
- <label class="logs-auto-follow">
55
- <input type="checkbox" id="logs-auto-follow-cb" checked> Auto-follow
56
- </label>
57
- <button id="logs-export-btn" title="Export visible">Export</button>
58
- </div>
59
- </div>
60
- <div class="logs-scroll" id="logs-scroll">
61
- <div class="logs-entries" id="logs-entries"></div>
62
- </div>
63
- `;
64
- overlay.appendChild(container);
65
-
66
- // Wire up level filters
67
- container.querySelectorAll('.logs-level-toggle input').forEach(cb => {
68
- cb.addEventListener('change', () => {
69
- const level = cb.dataset.level;
70
- if (cb.checked) logsLevelFilters.add(level);
71
- else logsLevelFilters.delete(level);
72
- renderLogs();
73
- });
74
- });
75
-
76
- // Wire up search
77
- document.getElementById('logs-search-input').addEventListener('input', e => {
78
- logsFilterText = e.target.value.toLowerCase();
79
- renderLogs();
80
- });
81
-
82
- // Wire up auto-follow
83
- document.getElementById('logs-auto-follow-cb').addEventListener('change', e => {
84
- logsAutoFollow = e.target.checked;
85
- if (logsAutoFollow) scrollToBottom();
86
- });
87
-
88
- // Wire up export
89
- document.getElementById('logs-export-btn').addEventListener('click', () => {
90
- const visible = getVisibleEntries();
91
- const text = visible.map(e => e.raw).join('\n');
92
- const blob = new Blob([text], { type: 'text/plain' });
93
- const a = document.createElement('a');
94
- a.href = URL.createObjectURL(blob);
95
- a.download = `symi-logs-${new Date().toISOString().slice(0,19)}.txt`;
96
- a.click();
97
- });
98
- }
99
-
100
- logsContainer = container;
101
- container.style.display = 'flex';
102
- return container;
103
- }
104
-
105
- function destroyLogsUI() {
106
- if (logsTimer) { clearInterval(logsTimer); logsTimer = null; }
107
- const container = document.getElementById('native-logs-container');
108
- if (container) container.style.display = 'none';
109
- const frame = document.getElementById('page-overlay-frame');
110
- if (frame) frame.style.display = '';
111
- }
112
-
113
- function parseLogLine(line) {
114
- try {
115
- const obj = JSON.parse(line);
116
- const level = obj._meta?.logLevelName || 'INFO';
117
- const time = obj.time || obj._meta?.date || '';
118
- const msg = obj['1'] || obj.msg || obj.message || '';
119
- const sub = obj['0'] || '';
120
- return { level, time, msg, sub, raw: line, parsed: obj };
121
- } catch {
122
- // Plain text line
123
- return { level: 'INFO', time: '', msg: line, sub: '', raw: line, parsed: null };
124
- }
125
- }
126
-
127
- function getVisibleEntries() {
128
- return logsEntries.filter(e => {
129
- if (!logsLevelFilters.has(e.level)) return false;
130
- if (logsFilterText && !e.raw.toLowerCase().includes(logsFilterText)) return false;
131
- return true;
132
- });
133
- }
134
-
135
- function renderLogs() {
136
- const el = document.getElementById('logs-entries');
137
- if (!el) return;
138
-
139
- const visible = getVisibleEntries();
140
- const html = visible.map(e => {
141
- const color = LEVEL_COLORS[e.level] || '#999';
142
- const timeStr = e.time ? new Date(e.time).toLocaleTimeString() : '';
143
- const escapedMsg = escapeHtml(e.msg).substring(0, 500);
144
- const escapedSub = escapeHtml(e.sub);
145
- return `<div class="log-line">
146
- <span class="log-time">${timeStr}</span>
147
- <span class="log-level" style="color:${color}">${e.level.padEnd(5)}</span>
148
- ${escapedSub ? `<span class="log-sub">${escapedSub}</span>` : ''}
149
- <span class="log-msg">${escapedMsg}</span>
150
- </div>`;
151
- }).join('');
152
-
153
- el.innerHTML = html || '<div class="log-empty">No log entries.</div>';
154
-
155
- if (logsAutoFollow) scrollToBottom();
156
- }
157
-
158
- function scrollToBottom() {
159
- const scroll = document.getElementById('logs-scroll');
160
- if (scroll) scroll.scrollTop = scroll.scrollHeight;
161
- }
162
-
163
- function escapeHtml(s) {
164
- return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
165
- }
166
-
167
- async function fetchLogs() {
168
- console.log('[logs] fetchLogs called, gateway exists:', !!window.gateway, 'connected:', window.gateway?.connected);
169
- if (!window.gateway?.connected) return;
170
- try {
171
- const params = { limit: LOGS_LIMIT, maxBytes: LOGS_MAX_BYTES };
172
- if (logsCursor != null) params.cursor = logsCursor;
173
- console.log('[logs] calling rpc logs.tail...');
174
- const result = await window.gateway.rpc('logs.tail', params);
175
- console.log('[logs] rpc result:', result ? 'ok, lines=' + (result.lines?.length || 0) : 'null');
176
- if (!result) return;
177
-
178
- if (result.reset) {
179
- logsEntries = [];
180
- logsCursor = null;
181
- }
182
-
183
- if (result.lines && result.lines.length > 0) {
184
- const newEntries = result.lines.map(parseLogLine);
185
- logsEntries.push(...newEntries);
186
- // Cap at 2000 entries
187
- if (logsEntries.length > 2000) {
188
- logsEntries = logsEntries.slice(logsEntries.length - 2000);
189
- }
190
- renderLogs();
191
- }
192
-
193
- if (typeof result.cursor === 'number') {
194
- logsCursor = result.cursor;
195
- }
196
- } catch (err) {
197
- console.error('[logs] fetch error:', err);
198
- }
199
- }
200
-
201
- function startLogsPolling() {
202
- console.log('[logs] startLogsPolling, gateway:', !!window.gateway, 'connected:', window.gateway?.connected);
203
- // Initial fetch
204
- logsCursor = null;
205
- logsEntries = [];
206
-
207
- // If gateway isn't connected yet, wait for it
208
- if (!window.gateway?.connected) {
209
- console.log('[logs] gateway not connected, waiting...');
210
- const waitIv = setInterval(() => {
211
- console.log('[logs] waiting for gateway... connected:', window.gateway?.connected);
212
- if (window.gateway?.connected) {
213
- clearInterval(waitIv);
214
- console.log('[logs] gateway connected! starting fetch...');
215
- fetchLogs();
216
- if (logsTimer) clearInterval(logsTimer);
217
- logsTimer = setInterval(fetchLogs, LOGS_POLL_MS);
218
- }
219
- }, 500);
220
- setTimeout(() => clearInterval(waitIv), 30000);
221
- return;
222
- }
223
-
224
- fetchLogs();
225
- // Poll every few seconds
226
- if (logsTimer) clearInterval(logsTimer);
227
- logsTimer = setInterval(fetchLogs, LOGS_POLL_MS);
228
- }
229
-
230
- // Public API
231
- window.openNativeLogs = function() {
232
- createLogsUI();
233
- startLogsPolling();
234
- };
235
-
236
- window.closeNativeLogs = function() {
237
- destroyLogsUI();
238
- };
@@ -1,230 +0,0 @@
1
- // ── Command Menu ──────────────────────────────────────────────────────────────
2
-
3
- const menuOverlay = document.getElementById("cmd-overlay");
4
- const menuTrigger = document.getElementById("menu-trigger");
5
- const menuBackdrop = document.getElementById("cmd-backdrop");
6
-
7
- let menuIsOpen = false;
8
-
9
- function openMenu() {
10
- menuIsOpen = true;
11
- menuOverlay.classList.add("open");
12
- menuOverlay.removeAttribute("aria-hidden");
13
- menuTrigger.classList.add("menu-open");
14
- menuTrigger.setAttribute("aria-expanded", "true");
15
- document.addEventListener("keydown", onMenuKey);
16
- }
17
-
18
- function closeMenu() {
19
- menuIsOpen = false;
20
- menuOverlay.classList.remove("open");
21
- menuOverlay.setAttribute("aria-hidden", "true");
22
- menuTrigger.classList.remove("menu-open");
23
- menuTrigger.setAttribute("aria-expanded", "false");
24
- document.removeEventListener("keydown", onMenuKey);
25
- }
26
-
27
- function toggleMenu() {
28
- if (menuIsOpen) {
29
- closeMenu();
30
- } else {
31
- openMenu();
32
- }
33
- }
34
-
35
- function onMenuKey(e) {
36
- if (e.key === "Escape") {
37
- closeMenu();
38
- }
39
- }
40
-
41
- // ── Trigger & backdrop ────────────────────────────────────────────────────────
42
- menuTrigger.addEventListener("click", toggleMenu);
43
- menuBackdrop.addEventListener("click", closeMenu);
44
-
45
- // Keyboard shortcut: press M to open (when not focused on input)
46
- document.addEventListener("keydown", (e) => {
47
- if (menuIsOpen) {
48
- return;
49
- }
50
- if (e.key === "m" || e.key === "M") {
51
- if (
52
- document.activeElement.tagName === "INPUT" ||
53
- document.activeElement.tagName === "TEXTAREA"
54
- ) {
55
- return;
56
- }
57
- e.preventDefault();
58
- openMenu();
59
- }
60
- });
61
-
62
- // ── Page Overlay (native in-app navigation) ───────────────────────────────────
63
- // Use direct-child selectors to avoid matching duplicates inside chat messages
64
- function getPageOverlay() {
65
- return document.querySelector("body > .page-overlay");
66
- }
67
- function _getPageBackBtn() {
68
- return document.querySelector("body > .page-overlay #page-back-btn");
69
- }
70
- function getPageTitle() {
71
- return document.querySelector("body > .page-overlay #page-overlay-title");
72
- }
73
- function getPagePopoutBtn() {
74
- return document.querySelector("body > .page-overlay #page-popout-btn");
75
- }
76
- function getPageFrame() {
77
- return document.querySelector("body > .page-overlay #page-overlay-frame");
78
- }
79
-
80
- let overlayIsOpen = false;
81
-
82
- function openPageOverlay(name, standardUrl) {
83
- // Derive the proxy URL: strip 18789 origin, prefix with /standard, add ?embed=1
84
- // Also pass token + gatewayUrl via hash so the SPA auto-connects
85
- let proxyUrl;
86
- try {
87
- const parsed = new URL(standardUrl);
88
- proxyUrl = `/standard${parsed.pathname}${parsed.search ? parsed.search + "&embed=1" : "?embed=1"}`;
89
- } catch {
90
- proxyUrl = `/standard/?embed=1`;
91
- }
92
- // The SPA reads token and gatewayUrl from hash params → triggers auto-connect
93
- proxyUrl +=
94
- "#token=" +
95
- encodeURIComponent(window.__SYMI_EMBED_TOKEN || "") +
96
- "&gatewayUrl=" +
97
- encodeURIComponent("ws://127.0.0.1:3333");
98
-
99
- getPageTitle().textContent = name.toUpperCase();
100
- getPagePopoutBtn().href = standardUrl;
101
- getPageFrame().src = proxyUrl;
102
-
103
- overlayIsOpen = true;
104
- getPageOverlay().classList.add("open");
105
- getPageOverlay().setAttribute("aria-hidden", "false");
106
- document.addEventListener("keydown", onOverlayKey);
107
- }
108
-
109
- function closePageOverlay() {
110
- overlayIsOpen = false;
111
- // Clean up native settings panel if open
112
- if (window.closeNativeSettings) {
113
- window.closeNativeSettings();
114
- }
115
- getPageOverlay().classList.remove("open");
116
- getPageOverlay().setAttribute("aria-hidden", "true");
117
- // Restore iframe + popout button for next use
118
- getPageFrame().style.display = "";
119
- getPagePopoutBtn().style.display = "";
120
- // Delay clearing src so the close animation plays cleanly
121
- setTimeout(() => {
122
- if (!overlayIsOpen) {
123
- getPageFrame().src = "";
124
- }
125
- }, 300);
126
- document.removeEventListener("keydown", onOverlayKey);
127
- }
128
-
129
- function onOverlayKey(e) {
130
- if (e.key === "Escape") {
131
- closePageOverlay();
132
- }
133
- }
134
-
135
- document.querySelector("body > .page-overlay #page-back-btn")?.addEventListener("click", () => {
136
- // Go back to the menu instead of closing everything
137
- closePageOverlay();
138
- openMenu();
139
- });
140
-
141
- // ── Item routing ──────────────────────────────────────────────────────────────
142
- // Page display names (mapped from the menu item text)
143
- const PAGE_NAMES = {
144
- "/overview": "Overview",
145
- "/channels": "Channels",
146
- "/instances": "Instances",
147
- "/sessions": "Sessions",
148
- "/usage": "Usage",
149
- "/cron": "Cron Jobs",
150
- "/tasks": "Background Tasks",
151
- "/agents": "Agents",
152
- "/skills": "Skills",
153
- "/nodes": "Nodes",
154
- "/config": "Config",
155
- "/debug": "Debug",
156
- "/logs": "Logs",
157
- };
158
-
159
- // All internal pages rendered natively (no iframe)
160
- const NATIVE_PAGES = {
161
- "/overview": "overview",
162
- "/channels": "channels",
163
- "/instances": "instances",
164
- "/sessions": "sessions",
165
- "/usage": "usage",
166
- "/cron": "cron",
167
- "/tasks": "tasks",
168
- "/agents": "agents",
169
- "/skills": "skills",
170
- "/nodes": "nodes",
171
- "/config": "config",
172
- "/debug": "debug",
173
- "/logs": "logs",
174
- };
175
-
176
- function openNativePage(pageName, pageKey) {
177
- if (window.closeNativeSettings) {
178
- window.closeNativeSettings();
179
- }
180
- getPageTitle().textContent = pageName.toUpperCase();
181
- getPagePopoutBtn().style.display = "none";
182
- getPageFrame().style.display = "none";
183
- overlayIsOpen = true;
184
- getPageOverlay().classList.add("open");
185
- getPageOverlay().setAttribute("aria-hidden", "false");
186
- document.addEventListener("keydown", onOverlayKey);
187
- if (window.openNativeSettings) {
188
- window.openNativeSettings(pageKey);
189
- }
190
- }
191
-
192
- document.querySelectorAll(".cmd-item[data-href]").forEach((item) => {
193
- item.addEventListener("click", (e) => {
194
- e.preventDefault();
195
- const href = item.dataset.href;
196
-
197
- if (href === "#chat") {
198
- closeMenu();
199
- if (window.closeNativeSettings) {
200
- window.closeNativeSettings();
201
- }
202
- closePageOverlay();
203
- return;
204
- }
205
-
206
- // Internal pages rendered natively
207
- if (href.includes("127.0.0.1:18789")) {
208
- let pathname = "/";
209
- try {
210
- pathname = new URL(href).pathname;
211
- } catch {}
212
-
213
- const pageKey = NATIVE_PAGES[pathname];
214
- if (pageKey) {
215
- const pageName = PAGE_NAMES[pathname] ?? "Page";
216
- closeMenu();
217
- openNativePage(pageName, pageKey);
218
- return;
219
- }
220
- }
221
-
222
- // External links open in new tab
223
- window.open(href, "_blank", "noopener");
224
- closeMenu();
225
- });
226
- });
227
-
228
- // Expose for external use (e.g., if other modules need to close the overlay)
229
- window.openPageOverlay = openPageOverlay;
230
- window.closePageOverlay = closePageOverlay;
@@ -1,66 +0,0 @@
1
- // ── Command Menu ──────────────────────────────────────────────────────────────
2
-
3
- const menuOverlay = document.getElementById('cmd-overlay');
4
- const menuTrigger = document.getElementById('menu-trigger');
5
- const menuBackdrop = document.getElementById('cmd-backdrop');
6
-
7
- let menuIsOpen = false;
8
-
9
- function openMenu() {
10
- menuIsOpen = true;
11
- menuOverlay.classList.add('open');
12
- menuOverlay.removeAttribute('aria-hidden');
13
- menuTrigger.classList.add('menu-open');
14
- menuTrigger.setAttribute('aria-expanded', 'true');
15
- document.addEventListener('keydown', onMenuKey);
16
- }
17
-
18
- function closeMenu() {
19
- menuIsOpen = false;
20
- menuOverlay.classList.remove('open');
21
- menuOverlay.setAttribute('aria-hidden', 'true');
22
- menuTrigger.classList.remove('menu-open');
23
- menuTrigger.setAttribute('aria-expanded', 'false');
24
- document.removeEventListener('keydown', onMenuKey);
25
- }
26
-
27
- function toggleMenu() {
28
- menuIsOpen ? closeMenu() : openMenu();
29
- }
30
-
31
- function onMenuKey(e) {
32
- if (e.key === 'Escape') closeMenu();
33
- }
34
-
35
- // ── Trigger & backdrop ────────────────────────────────────────────────────────
36
- menuTrigger.addEventListener('click', toggleMenu);
37
- menuBackdrop.addEventListener('click', closeMenu);
38
-
39
- // Keyboard shortcut: press M to open (when not focused on input)
40
- document.addEventListener('keydown', e => {
41
- if (menuIsOpen) return;
42
- if (e.key === 'm' || e.key === 'M') {
43
- if (document.activeElement.tagName === 'INPUT' ||
44
- document.activeElement.tagName === 'TEXTAREA') return;
45
- e.preventDefault();
46
- openMenu();
47
- }
48
- });
49
-
50
- // ── Item routing ──────────────────────────────────────────────────────────────
51
- document.querySelectorAll('.cmd-item[data-href]').forEach(item => {
52
- item.addEventListener('click', e => {
53
- e.preventDefault();
54
- const href = item.dataset.href;
55
-
56
- if (href === '#chat') {
57
- // Already on the chat — just close the menu
58
- closeMenu();
59
- return;
60
- }
61
-
62
- // All other items: open in new tab (preserves new UI in current tab)
63
- window.open(href, '_blank', 'noopener');
64
- closeMenu();
65
- });
66
- });
@@ -1,53 +0,0 @@
1
- // ── Live metrics via /api/metrics (served by Node.js app layer) ───────
2
-
3
- function setBar(barId, valId, pct, label) {
4
- const bar = document.getElementById(barId);
5
- const val = document.getElementById(valId);
6
- if (bar) {
7
- bar.style.width = Math.min(pct, 100) + "%";
8
- }
9
- if (val && label !== undefined) {
10
- val.textContent = label;
11
- }
12
- }
13
-
14
- async function updateMetrics() {
15
- try {
16
- const res = await fetch("/api/metrics");
17
- const data = await res.json();
18
-
19
- setBar("cpu-bar", "cpu-val", data.cpu, data.cpu + "%");
20
- setBar("ram-bar", "ram-val", data.memPct, data.memUsedGB + "G");
21
- setBar("gpu-bar", "gpu-val", 5, "5%"); // GPU live data future enhancement
22
- setBar("disk-bar", "disk-val", 5, "5%");
23
-
24
- const uptimeEl = document.getElementById("uptime");
25
- if (uptimeEl) {
26
- uptimeEl.textContent = data.uptime;
27
- }
28
- } catch {
29
- // Server not ready yet — no-op
30
- }
31
- }
32
-
33
- function updateUptime() {
34
- // Static uptime from system — weeks:days:hours
35
- const el = document.getElementById("uptime");
36
- if (el) {
37
- el.textContent = "2w 3d 21h";
38
- }
39
- }
40
-
41
- function updateSubagents() {
42
- const el = document.getElementById("subagent-count");
43
- if (el) {
44
- el.textContent = "0 active";
45
- }
46
- }
47
-
48
- // Initial + interval updates
49
- void updateMetrics();
50
- updateUptime();
51
- updateSubagents();
52
-
53
- setInterval(updateMetrics, 2000);