@symerian/symi 3.5.20 → 3.5.21

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 (257) hide show
  1. package/dist/{agent-D0Z4r5fr.js → agent-DgVWcnlD.js} +1 -1
  2. package/dist/{agent-DCDT-MPE.js → agent-NT0EKnK_.js} +18 -18
  3. package/dist/{agent-scope-DOrZjOnW.js → agent-scope-Bnsyyeci.js} +18 -18
  4. package/dist/{agents-CdkBeP0d.js → agents-Dlcpc1K3.js} +3 -3
  5. package/dist/{agents.config-B7sNDvhz.js → agents.config-DA0ISLi7.js} +1 -1
  6. package/dist/{audit-B7deV4Lp.js → audit-CPloCzEZ.js} +2 -2
  7. package/dist/{audit-BCStg-Hv.js → audit-CXIXYDRx.js} +20 -20
  8. package/dist/{auth-choice-BIGcxSzP.js → auth-choice--DymOp5O.js} +2 -2
  9. package/dist/{auth-choice-B3DU-aBr.js → auth-choice-BtXIQPTU.js} +11 -11
  10. package/dist/{auth-profiles-Ce7R_25e.js → auth-profiles-D5nYBj_Z.js} +2 -2
  11. package/dist/{auth-token-Cr28IDKY.js → auth-token-fgnCQEHT.js} +3 -3
  12. package/dist/{banner-ChNdzPjD.js → banner-CY_9VW7E.js} +1 -1
  13. package/dist/{browser-cli-C9xaKW8l.js → browser-cli-C5VVk6C9.js} +3 -3
  14. package/dist/{browser-cli-BTg8SVs-.js → browser-cli-DOTM7UBC.js} +9 -9
  15. package/dist/build-info.json +3 -3
  16. package/dist/bundled/boot-md/handler.js +4 -4
  17. package/dist/bundled/session-memory/handler.js +4 -4
  18. package/dist/{call-BccaLPi8.js → call-Bpjj5p7I.js} +9 -9
  19. package/dist/{call-DZg43vv8.js → call-C2urR5Fj.js} +1 -1
  20. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  21. package/dist/{channel-options-CUptVX8c.js → channel-options-XRJiHUm5.js} +1 -1
  22. package/dist/{channel-options-LLmAnD_L.js → channel-options-rFgJaKzJ.js} +1 -1
  23. package/dist/{channels-cli-xoromnio.js → channels-cli-CQ4M05oy.js} +57 -57
  24. package/dist/{channels-cli-B0OQvVUL.js → channels-cli-QMHCRAb5.js} +9 -9
  25. package/dist/{chrome-DJChpTwP.js → chrome-38OnGyuN.js} +2 -2
  26. package/dist/{chrome-CmQwGAuL.js → chrome-OTJg3QKn.js} +7 -7
  27. package/dist/{cli-C7v-sID8.js → cli-B-uoiYP2.js} +45 -45
  28. package/dist/{cli-CMNR7ULk.js → cli-BafqEuaj.js} +6 -6
  29. package/dist/{client-k0MT6NBw.js → client-CTrfpKT3.js} +7 -2
  30. package/dist/{client-DCxeV1bw.js → client-yVTJ5jx5.js} +6 -1
  31. package/dist/{command-registry-CXcvXjUR.js → command-registry-CLm8TAH3.js} +11 -11
  32. package/dist/{commands-registry-Ca5hh7nh.js → commands-registry-CwXsDVuO.js} +1 -1
  33. package/dist/{completion-cli-DJ1YCeSg.js → completion-cli-Cn_81QBb.js} +12 -12
  34. package/dist/{completion-cli-B1Fg6Lmg.js → completion-cli-DOBXkVwG.js} +2 -2
  35. package/dist/{config-B4jkreCN.js → config-BngIfn5l.js} +2 -2
  36. package/dist/{config-cli-D5DlWt6T.js → config-cli-B1cPkJ4p.js} +4 -4
  37. package/dist/{config-cli-CQ1FAvY_.js → config-cli-BgHYqFH1.js} +1 -1
  38. package/dist/{config-guard-BRm3RiOi.js → config-guard-DStz4_V2.js} +6 -6
  39. package/dist/{config-validation-Cdyg1BZB.js → config-validation-Dxj9LRzr.js} +1 -1
  40. package/dist/{configure-bhJB2Dti.js → configure-C7zmSgvC.js} +14 -14
  41. package/dist/{configure-DG1lf0Ld.js → configure-DmzM0S7L.js} +6 -6
  42. package/dist/{consolidate-DymnvvYm.js → consolidate-CO32_TEx.js} +6 -6
  43. package/dist/{control-service-D8kKOts5.js → control-service-CUreKVeY.js} +4 -4
  44. package/dist/control-ui/css/style.css +270 -0
  45. package/dist/control-ui/index.html +44 -114
  46. package/dist/control-ui/js/scheduling.js +85 -224
  47. package/dist/control-ui/js/subagents.js +78 -394
  48. package/dist/control-ui/js/symframe-awaiting.js +301 -0
  49. package/dist/control-ui/js/symframe-pin-store.js +104 -0
  50. package/dist/control-ui/js/symframe.js +238 -2
  51. package/dist/{control-ui-assets-CJQ97d4u.js → control-ui-assets-B8B9z_Ll.js} +1 -1
  52. package/dist/{cost-cli-DWiVCOCx.js → cost-cli-D-ssjcRF.js} +3 -3
  53. package/dist/{cron-cli-8RaBr1CM.js → cron-cli-BNBs3zue.js} +3 -3
  54. package/dist/{cron-cli-fW3wtftG.js → cron-cli-otPeKxmi.js} +7 -7
  55. package/dist/{daemon-cli-Y6clFgva.js → daemon-cli-DDqeG2nd.js} +2 -2
  56. package/dist/{daemon-cli-0EiZTQ2A.js → daemon-cli-qDdMg615.js} +11 -11
  57. package/dist/daemon-cli.js +6 -1
  58. package/dist/{daemon-runtime-DlQla_dA.js → daemon-runtime-CKn0wmCk.js} +10 -10
  59. package/dist/{deliver-B04yNX82.js → deliver-BiWlR84Y.js} +4 -4
  60. package/dist/{deliver-lTZLIQqf.js → deliver-CWMFmMCv.js} +2 -2
  61. package/dist/{deps-Bf9dt2UO.js → deps-CdibsPMx.js} +1 -1
  62. package/dist/{devices-cli-C2gQTsB0.js → devices-cli-BJ3rVWOw.js} +2 -2
  63. package/dist/{devices-cli-DfiSkZ7k.js → devices-cli-DDPwF2Nx.js} +6 -6
  64. package/dist/{diagnostics-DlZODdRf.js → diagnostics-CYkqD5lP.js} +5 -5
  65. package/dist/{directory-cli-Bm5QYEo-.js → directory-cli-giqTe8Yg.js} +3 -3
  66. package/dist/{dm-policy-shared-CeFt0nch.js → dm-policy-shared-B61_yf6G.js} +1 -1
  67. package/dist/{dns-cli-CubLq4j9.js → dns-cli-Dssz4RqF.js} +3 -3
  68. package/dist/{docs-cli-PS8m1er7.js → docs-cli-Ct1STieY.js} +1 -1
  69. package/dist/{doctor-completion-CfF0J8fs.js → doctor-completion-CL7MyXlo.js} +2 -2
  70. package/dist/{doctor-completion-ScxFfN93.js → doctor-completion-k0HiL05o.js} +1 -1
  71. package/dist/{doctor-config-flow-C52W1uUK.js → doctor-config-flow-ljVnQJjo.js} +9 -9
  72. package/dist/entry.js +1 -1
  73. package/dist/{exec-approvals-cli-Cl-vWA1q.js → exec-approvals-cli-Cau1vPQI.js} +4 -4
  74. package/dist/{exec-approvals-cli-BaKWIf56.js → exec-approvals-cli-DsBoQu5H.js} +13 -13
  75. package/dist/extensionAPI.js +2 -2
  76. package/dist/{file-lock-BVUYnlQv.js → file-lock-2AecMjCa.js} +8 -8
  77. package/dist/{fs-safe-BdejYjW8.js → fs-safe-B0Is-oLk.js} +6 -6
  78. package/dist/{gateway-cli-kq5EWlnF.js → gateway-cli-DG_2YZ8B.js} +98 -98
  79. package/dist/{gateway-cli-CK-5nguV.js → gateway-cli-DgmGygc6.js} +16 -16
  80. package/dist/{gateway-rpc-Bzg_TTKP.js → gateway-rpc-Kv0-8W2E.js} +1 -1
  81. package/dist/{gateway-rpc-D12UaJS5.js → gateway-rpc-gaoD882s.js} +1 -1
  82. package/dist/{glass-ui-ws-B6p0iPsO.js → glass-ui-ws-Bof7krDJ.js} +67 -67
  83. package/dist/{glass-ui-ws-CVr0_1gT.js → glass-ui-ws-Dl45d7eU.js} +13 -13
  84. package/dist/{health-CPU9rQGj.js → health-CMbUI4aN.js} +4 -4
  85. package/dist/{health-CJb2CYtg.js → health-znS85U-F.js} +1 -1
  86. package/dist/{hooks-cli-DbgVZaP4.js → hooks-cli-Cb9BzCOY.js} +7 -7
  87. package/dist/{hooks-cli-13HCu5Xs.js → hooks-cli-Cgjor7F-.js} +59 -59
  88. package/dist/{image-ops-L70xVnpG.js → image-ops-BzCBIakN.js} +10 -10
  89. package/dist/index.js +52 -52
  90. package/dist/{inspect-CGKsaVZ4.js → inspect-DzYUb_Dl.js} +4 -4
  91. package/dist/{install-safe-path-B2JrFspY.js → install-safe-path-BrpA09f2.js} +11 -11
  92. package/dist/{installs-D890uIIW.js → installs-bnDlOSq2.js} +10 -10
  93. package/dist/{internal-DVCddhhN.js → internal-csqU78gW.js} +9 -9
  94. package/dist/{lifecycle-core-wFwnK_mD.js → lifecycle-core-cSR_xiIO.js} +5 -5
  95. package/dist/llm-slug-generator.js +4 -4
  96. package/dist/{local-roots-CgDCgCuM.js → local-roots-2Jb79HZ8.js} +1 -1
  97. package/dist/{logs-cli-R16VTptK.js → logs-cli-Kr145PO_.js} +7 -7
  98. package/dist/{logs-cli-CQeK5fn7.js → logs-cli-LiAjkog2.js} +3 -3
  99. package/dist/{manager-CxFs8Z_F.js → manager-CceVgXHV.js} +1 -1
  100. package/dist/{manager-B2SWSuad.js → manager-Cv4xI8sP.js} +1 -1
  101. package/dist/{manager-CHLdCC6u.js → manager-DG6PODgu.js} +15 -15
  102. package/dist/{manager-LPPGAsqn.js → manager-V4UCf0Av.js} +1 -1
  103. package/dist/{memory-DFpqcIst.js → memory-A2D5e8dL.js} +2 -2
  104. package/dist/{memory-DavRjdTi.js → memory-BFnx3v3_.js} +5 -5
  105. package/dist/{memory-cli-DZnq3S6s.js → memory-cli-1zjVJITN.js} +2 -2
  106. package/dist/{memory-cli-B-Cp1Sb1.js → memory-cli-CHNghdrm.js} +12 -12
  107. package/dist/{model-MUMSB_7d.js → model-Cwbcw-km.js} +1 -1
  108. package/dist/{model-auth-1EAQvYRv.js → model-auth-_C07_3Yr.js} +2 -2
  109. package/dist/{model-catalog-IWi6-nY9.js → model-catalog-BWurV7gl.js} +3 -3
  110. package/dist/{model-picker-Cf6UgQEh.js → model-picker-Dpkr5xBW.js} +5 -5
  111. package/dist/{model-selection-7wdmO-Iw.js → model-selection-CCTzD29o.js} +1 -1
  112. package/dist/{models-Cht7Mzvs.js → models-BYev6YAG.js} +3 -3
  113. package/dist/{models-cli-B_motPDX.js → models-cli-BbK8HMKa.js} +55 -55
  114. package/dist/{models-cli-DXswzgUR.js → models-cli-Fa5r1QYP.js} +9 -9
  115. package/dist/{models-config-B5Xxy-c-.js → models-config-DlXge3Sd.js} +8 -8
  116. package/dist/{node-cli-D-gsjRXY.js → node-cli-BPnBosC4.js} +27 -27
  117. package/dist/{node-cli-VmKhIXuP.js → node-cli-Cv7x1gGu.js} +1 -1
  118. package/dist/{node-service-BH08wY5j.js → node-service-Cc18m-uk.js} +1 -1
  119. package/dist/{nodes-cli-BMvxQGCp.js → nodes-cli-CN_m6PO5.js} +10 -10
  120. package/dist/{nodes-cli-D199d74o.js → nodes-cli-DaHOBbd4.js} +3 -3
  121. package/dist/{nodes-screen-De9ma6e1.js → nodes-screen-Cp5QP3ET.js} +4 -4
  122. package/dist/{npm-registry-spec-DTqn-NXZ.js → npm-registry-spec-C-muP97-.js} +9 -9
  123. package/dist/{onboard-DFJcbABp.js → onboard-B2IcTMv-.js} +15 -15
  124. package/dist/{onboard-CdRA8BRG.js → onboard-D-m6WTZl.js} +3 -3
  125. package/dist/{onboard-channels-fadyQGBK.js → onboard-channels-Z-Jkrk5-.js} +1 -1
  126. package/dist/{onboard-channels-Ca7ZFQ2Y.js → onboard-channels-wfGO5Zlh.js} +4 -4
  127. package/dist/{onboard-custom-BcRYreNG.js → onboard-custom-DnDrvxSg.js} +3 -3
  128. package/dist/{onboard-helpers-CQBpac8h.js → onboard-helpers-BKejzolA.js} +8 -8
  129. package/dist/{onboard-helpers-BcLPSb5N.js → onboard-helpers-Dhr98nj8.js} +1 -1
  130. package/dist/{onboard-hooks-2SCajRKc.js → onboard-hooks-D9jHwImb.js} +1 -1
  131. package/dist/{onboard-remote-Bo3tpC9N.js → onboard-remote-DZdMxd1Q.js} +1 -1
  132. package/dist/{onboard-remote-BWK5Ths4.js → onboard-remote-y3ZmP90U.js} +1 -1
  133. package/dist/{onboard-skills-BLl8HPJO.js → onboard-skills-2SUv-W7i.js} +1 -1
  134. package/dist/{onboard-skills-DvacccqZ.js → onboard-skills-BFhHfrt9.js} +3 -3
  135. package/dist/{onboarding-ojb2rFkA.js → onboarding-BckHLQMV.js} +7 -7
  136. package/dist/{onboarding-BywueA1d.js → onboarding-DqlPV372.js} +12 -12
  137. package/dist/{onboarding.finalize-DdxBQpUU.js → onboarding.finalize-Bwjv3jew.js} +31 -31
  138. package/dist/{onboarding.finalize-DHvlZi9G.js → onboarding.finalize-CbH_ShIW.js} +9 -9
  139. package/dist/{onboarding.gateway-config-DPBNWNV6.js → onboarding.gateway-config-CiRo9EMt.js} +8 -8
  140. package/dist/{onboarding.gateway-config-ZK9517uR.js → onboarding.gateway-config-sNSeEykB.js} +3 -3
  141. package/dist/{openai-model-default-BkuuK-Di.js → openai-model-default-De-UAjwg.js} +2 -2
  142. package/dist/{pairing-cli-Rsae0KnN.js → pairing-cli-CBMMCNnx.js} +5 -5
  143. package/dist/{pairing-store-BNhJOnWn.js → pairing-store-Be-ZQK87.js} +1 -1
  144. package/dist/{pairing-token-Dcy37-4s.js → pairing-token-B703A1U3.js} +7 -7
  145. package/dist/{paths-DObzwe08.js → paths-BWqg8NZT.js} +1 -1
  146. package/dist/{pi-auth-json-Db8XJVGL.js → pi-auth-json-D-vdh-nY.js} +6 -6
  147. package/dist/{pi-embedded-Da0QRlM0.js → pi-embedded-B9rtlNMc.js} +25 -9
  148. package/dist/{pi-embedded-helpers-D-OFjhdI.js → pi-embedded-helpers-j1JrlsI0.js} +6 -6
  149. package/dist/{pi-tools.policy-H2t-Xkfc.js → pi-tools.policy-CvAqjEH9.js} +3 -3
  150. package/dist/{plugin-auto-enable-DJBhDIMq.js → plugin-auto-enable-BXSJTxI7.js} +1 -1
  151. package/dist/{plugin-registry-tG7NXc3Y.js → plugin-registry-B43UosQh.js} +3 -3
  152. package/dist/{plugin-registry-Tlmjr-LX.js → plugin-registry-CS4WgHbu.js} +1 -1
  153. package/dist/plugin-sdk/gateway/protocol/schema/logs-chat.d.ts +1 -1
  154. package/dist/plugin-sdk/index.js +6 -6
  155. package/dist/plugin-sdk/infra/symframe-broadcast.d.ts +18 -6
  156. package/dist/{plugins-cli-CRKD8aho.js → plugins-cli-BV2wbjfI.js} +54 -54
  157. package/dist/{plugins-cli-Cm0G_-Y5.js → plugins-cli-BY42hyHP.js} +7 -7
  158. package/dist/{ports-r7LBic2V.js → ports-Bi3V_3n9.js} +1 -1
  159. package/dist/{ports-gxLM5ahL.js → ports-CB_Iu83U.js} +2 -2
  160. package/dist/{program-DEmAlwmD.js → program-P9F1DxBa.js} +12 -12
  161. package/dist/{program-context-DRCRbDpu.js → program-context-BmXxHUKe.js} +40 -40
  162. package/dist/{prompt-select-styled-pomsR-zf.js → prompt-select-styled-B2ah467m.js} +7 -7
  163. package/dist/{prompt-select-styled-B41Tx9aC.js → prompt-select-styled-BlQZX6pK.js} +38 -38
  164. package/dist/{provider-auth-helpers-rKWs_r7a.js → provider-auth-helpers-Bgb_Bfp9.js} +1 -1
  165. package/dist/{provider-auth-helpers-CdQwOam7.js → provider-auth-helpers-WLwb6tL4.js} +6 -6
  166. package/dist/{push-apns-eCM0qmrY.js → push-apns-CBGvXev_.js} +4 -4
  167. package/dist/{push-apns-CZPUHftn.js → push-apns-DnSCjFu7.js} +1 -1
  168. package/dist/{pw-ai-BiBvIJzd.js → pw-ai-CP5pn3eU.js} +7 -7
  169. package/dist/{pw-ai-DLsdzdgc.js → pw-ai-DY_6l11g.js} +1 -1
  170. package/dist/{qmd-manager-C8-M4Pru.js → qmd-manager-Dxyue7B1.js} +19 -19
  171. package/dist/{qr-cli-1sCVaPcF.js → qr-cli-DHw6muwK.js} +3 -3
  172. package/dist/{register.agent-BQPvYYdn.js → register.agent-BuEcmVg0.js} +12 -12
  173. package/dist/{register.agent-N1hoqMFR.js → register.agent-CXdTiqyP.js} +67 -67
  174. package/dist/{register.configure-BHHZ44xB.js → register.configure-DVcn-gCO.js} +70 -70
  175. package/dist/{register.configure-BAc3P4Z-.js → register.configure-YDKJ-KQg.js} +14 -14
  176. package/dist/{register.maintenance-lX0a3Hzl.js → register.maintenance-BiGvpEj-.js} +13 -13
  177. package/dist/{register.maintenance-DDgy5Iyy.js → register.maintenance-cpspl8D6.js} +67 -67
  178. package/dist/{register.message-Br-IH_0z.js → register.message-BIuLbESM.js} +7 -7
  179. package/dist/{register.message-B4lDhHpE.js → register.message-BjcYy5UG.js} +47 -47
  180. package/dist/{register.onboard-B-GoYJIc.js → register.onboard-C4vIASed.js} +6 -6
  181. package/dist/{register.onboard-Bv0s2_KV.js → register.onboard-D4RN92s2.js} +25 -25
  182. package/dist/{register.setup-DQ6KLkAI.js → register.setup-BvoXF0xl.js} +28 -28
  183. package/dist/{register.setup-4lNdC98i.js → register.setup-D-Jt2e1d.js} +6 -6
  184. package/dist/{register.status-health-sessions-Cg7bK5K2.js → register.status-health-sessions-BY9hMD1s.js} +8 -8
  185. package/dist/{register.status-health-sessions-ByGn71_M.js → register.status-health-sessions-DjDvCXBn.js} +41 -41
  186. package/dist/{register.subclis-FMlcLBX0.js → register.subclis-Cibmeapc.js} +20 -20
  187. package/dist/{replies-CbXXjn9X.js → replies-B_3j7R_Q.js} +1 -1
  188. package/dist/{reply-prefix-BFNeXT65.js → reply-prefix-CtZtkTJK.js} +1 -1
  189. package/dist/{resolve-route-C1IIA6kH.js → resolve-route-Du0VftVs.js} +1 -1
  190. package/dist/{routes-ivqbutvM.js → routes-BwTUoI5h.js} +10 -10
  191. package/dist/{rpc-Dk1Az_d8.js → rpc-BnAKPQDB.js} +1 -1
  192. package/dist/{rpc-JAmDaTYt.js → rpc-CwxSZZOx.js} +1 -1
  193. package/dist/{run-main-DSyeVDsT.js → run-main-BhEQjKtM.js} +20 -20
  194. package/dist/{sandbox-BkznAPKO.js → sandbox-CZGTCone.js} +18 -18
  195. package/dist/{sandbox-cli-Bb9cBtBH.js → sandbox-cli-DEtGT_4y.js} +13 -13
  196. package/dist/{security-cli-DmgGLP83.js → security-cli-CS-ZT1LE.js} +3 -3
  197. package/dist/{security-cli-D47LQbpf.js → security-cli-DJd7Fcdy.js} +29 -29
  198. package/dist/{send-B0jHSNMF.js → send-CxjvucMO.js} +7 -7
  199. package/dist/{server-context-ChcbJgNo.js → server-context-DXdk410X.js} +5 -5
  200. package/dist/{server-methods-DGBBt49x.js → server-methods-CWxr5b-w.js} +19 -13
  201. package/dist/{server-methods-BkHB2MOW.js → server-methods-DfVfzYqq.js} +68 -62
  202. package/dist/{server-node-events-C186LRm0.js → server-node-events-B0yC6hi1.js} +48 -48
  203. package/dist/{server-node-events-D-Akk3uq.js → server-node-events-ClDEcUTJ.js} +8 -8
  204. package/dist/{service-e6MzlLCd.js → service-CRZoXO_n.js} +15 -15
  205. package/dist/{session-dirs-C9E2G0yZ.js → session-dirs-a00Ad2SO.js} +2 -2
  206. package/dist/{session-utils-Cs1jlD-q.js → session-utils-CJhcRx3E.js} +14 -14
  207. package/dist/{sessions-Dxf5Kjig.js → sessions-BCc3THTm.js} +10 -10
  208. package/dist/{shared-1xPo9ygd.js → shared-C39SiDDJ.js} +1 -1
  209. package/dist/{shared-COtpr3Ad.js → shared-Dh-O8nRd.js} +3 -3
  210. package/dist/{skill-commands-DDGGlq68.js → skill-commands-DWvXs3lz.js} +4 -4
  211. package/dist/{skill-scanner-BCgVcIwi.js → skill-scanner-CIlHPszT.js} +5 -5
  212. package/dist/{skills-BwDmcZdt.js → skills-CYcBtLGH.js} +4 -4
  213. package/dist/{skills-cli-B-7TY-vS.js → skills-cli-CD9s3cgm.js} +7 -7
  214. package/dist/{skills-install-Dwzsjoc8.js → skills-install-BTa9IuQ6.js} +3 -3
  215. package/dist/{skills-remote-bz71Bstn.js → skills-remote-BcRQTDsZ.js} +3 -3
  216. package/dist/{skills-status-BKX1PjCc.js → skills-status-DLnCHUZ2.js} +1 -1
  217. package/dist/{sqlite-Cod7C5ba.js → sqlite-BpogPlQW.js} +5 -5
  218. package/dist/{status-CFgCSaDq.js → status-BWxLtb3D.js} +23 -23
  219. package/dist/{status-poPDyC8O.js → status-Doq8T1zj.js} +3 -3
  220. package/dist/{status-Bahhq7OQ.js → status-K1k4g3Ai.js} +1 -1
  221. package/dist/{status-D9LC5P_Y.js → status-ojZB_Lrf.js} +5 -5
  222. package/dist/{status.update-DGJi0OLl.js → status.update-CKfyV6zw.js} +3 -3
  223. package/dist/{subagent-registry-V2o45tIn.js → subagent-registry-BOt7g9hn.js} +21 -10
  224. package/dist/{symframe-cli-bxdpivve.js → symframe-cli-CrUtJw_7.js} +31 -7
  225. package/dist/{symframe-cli-ppdMo15M.js → symframe-cli-D1CtN3pf.js} +37 -13
  226. package/dist/{symi-root-BQ0IpoW2.js → symi-root-DeCVdZB4.js} +2 -2
  227. package/dist/{synthesis-B2EyHFXy.js → synthesis-BIQLrbys.js} +6 -6
  228. package/dist/{synthesis-DGau1ONT.js → synthesis-Bc2QkGvt.js} +2 -2
  229. package/dist/{synthesis-CPSq83PP.js → synthesis-VZNnlUTf.js} +45 -45
  230. package/dist/{synthesis-C2WbvLOI.js → synthesis-yl24Ovw4.js} +4 -4
  231. package/dist/{system-cli-nPyjUPBH.js → system-cli-CvN-Wq9U.js} +3 -3
  232. package/dist/{system-cli-BroqLjZ6.js → system-cli-r7WJj0Xh.js} +7 -7
  233. package/dist/{systemd-CUIM0n5P.js → systemd-CsoVnIbM.js} +5 -5
  234. package/dist/{systemd-hints-CsrzMCTD.js → systemd-hints-QISwLlFU.js} +6 -6
  235. package/dist/{systemd-linger-BzYk7A6M.js → systemd-linger-BnhuRdbt.js} +1 -1
  236. package/dist/{tui-Bp9k5skv.js → tui-BxgdImL_.js} +2 -2
  237. package/dist/{tui-DzROrE20.js → tui-J7Jxp-FF.js} +7 -7
  238. package/dist/{tui-cli-BHBF8O-3.js → tui-cli-DR48dU_C.js} +19 -19
  239. package/dist/{tui-cli-Dv4hBFdc.js → tui-cli-DqvgN5ng.js} +3 -3
  240. package/dist/{unified-runner-CIQIkbvi.js → unified-runner-BV5TdNFv.js} +32 -16
  241. package/dist/{unified-runner-CduaBH_0.js → unified-runner-DXjH-prv.js} +117 -106
  242. package/dist/{update-yYduAjKd.js → update-Cb0Fmxic.js} +3 -3
  243. package/dist/{update-check-BCL_K7kx.js → update-check-u6Jgr1cz.js} +5 -5
  244. package/dist/{update-cli-WcLxjBiY.js → update-cli-CKpjWtlv.js} +77 -77
  245. package/dist/{update-cli-BKnHBe8a.js → update-cli-Dn6QQZLd.js} +14 -14
  246. package/dist/{update-runner-BLV8SI96.js → update-runner-G2YgEATs.js} +15 -15
  247. package/dist/{webhooks-cli-D5k-Y2A8.js → webhooks-cli-DjUITimx.js} +4 -4
  248. package/dist/{with-timeout-DPR4A2dx.js → with-timeout-CLrF-Yr_.js} +1 -1
  249. package/dist/{workspace-dirs-jKFQf7of.js → workspace-dirs-DCICLTHx.js} +1 -1
  250. package/dist/{wsl-CglTdtlb.js → wsl-DTi7eX-V.js} +2 -2
  251. package/extensions/memory-core/package.json +1 -1
  252. package/extensions/msteams/CHANGELOG.md +6 -0
  253. package/extensions/msteams/package.json +1 -1
  254. package/extensions/open-prose/package.json +1 -1
  255. package/extensions/outlook/package.json +1 -1
  256. package/extensions/slack/package.json +1 -1
  257. package/package.json +1 -1
@@ -1,23 +1,34 @@
1
- // ── Scheduling Panel ─────────────────────────────────────────────────────────
2
- // Manages scheduled tasks using the cron.* RPC methods.
1
+ // ── Scheduling (modal + RPC poller only) ────────────────────────────────────
2
+ // Stage C of the Dynamic Glass Panel arc — see ~/Documents/dynamic-glass-panel.md.
3
+ //
4
+ // Before Stage C this file owned the SCHEDULING sticky panel: list
5
+ // rendering, toggle controls, count badge, Add button. The sticky panel
6
+ // is gone; scheduled jobs now surface in the AWAITING footer
7
+ // (glass-ui/js/symframe-awaiting.js).
8
+ //
9
+ // What survives here:
10
+ // - The schedule create/edit modal (overlay + form + submit handler)
11
+ // - The fetchSchedules poll loop (30s + gateway:connected)
12
+ // - window.schedulingPanel exported API:
13
+ // refresh() — force a fetch
14
+ // open() — open the create modal
15
+ // openForEdit(job) — open the modal pre-filled for a job
16
+ // getActive() — current schedules snapshot
17
+ // toggle(jobId) — enable/disable a job via cron.update
18
+ // - CustomEvent dispatch after each successful fetch so the AWAITING
19
+ // surface re-renders without polling a parallel copy of the same RPC.
3
20
  // ─────────────────────────────────────────────────────────────────────────────
4
21
 
5
22
  "use strict";
6
23
 
7
24
  (function () {
8
- // ── State ──────────────────────────────────────────────────────────────────
25
+ // ── State ──
9
26
  let schedules = [];
10
27
  let selectedInterval = null;
11
28
  let editingScheduleId = null;
12
29
  let _pollInterval = null;
13
30
 
14
- // ── DOM Elements ───────────────────────────────────────────────────────────
15
- const list = document.getElementById("schedule-list");
16
- const emptyState = document.getElementById("schedule-empty");
17
- const countBadge = document.getElementById("schedule-count");
18
- const addBtn = document.getElementById("schedule-add-btn");
19
-
20
- // Modal elements
31
+ // ── Modal DOM refs (separate overlay block in index.html) ──
21
32
  const modalOverlay = document.getElementById("schedule-modal-overlay");
22
33
  const modalClose = document.getElementById("schedule-modal-close");
23
34
  const modalCancel = document.getElementById("schedule-modal-cancel");
@@ -30,8 +41,7 @@
30
41
  const intervalUnitSelect = document.getElementById("schedule-interval-unit");
31
42
  const timeInput = document.getElementById("schedule-time");
32
43
 
33
- // ── Interval Helpers ───────────────────────────────────────────────────────
34
- // Convert UI interval to milliseconds
44
+ // ── Interval helpers ──
35
45
  const UNIT_TO_MS = {
36
46
  minutes: 60 * 1000,
37
47
  hours: 60 * 60 * 1000,
@@ -39,145 +49,34 @@
39
49
  weeks: 7 * 24 * 60 * 60 * 1000,
40
50
  };
41
51
 
42
- // Preset intervals
43
52
  const PRESETS = {
44
53
  hourly: { value: 1, unit: "hours" },
45
54
  daily: { value: 1, unit: "days" },
46
55
  weekly: { value: 1, unit: "weeks" },
47
56
  };
48
57
 
49
- function formatInterval(job) {
50
- const schedule = job.schedule;
51
- if (!schedule) {
52
- return "Custom";
53
- }
54
-
55
- if (schedule.kind === "every") {
56
- const ms = schedule.everyMs;
57
- if (ms >= UNIT_TO_MS.weeks) {
58
- const weeks = Math.round(ms / UNIT_TO_MS.weeks);
59
- return weeks === 1 ? "WEEK" : `${weeks}W`;
60
- }
61
- if (ms >= UNIT_TO_MS.days) {
62
- const days = Math.round(ms / UNIT_TO_MS.days);
63
- return days === 1 ? "DAY" : `${days}D`;
64
- }
65
- if (ms >= UNIT_TO_MS.hours) {
66
- const hours = Math.round(ms / UNIT_TO_MS.hours);
67
- return hours === 1 ? "HOUR" : `${hours}H`;
68
- }
69
- const mins = Math.round(ms / UNIT_TO_MS.minutes);
70
- return mins === 1 ? "MIN" : `${mins}M`;
71
- }
72
-
73
- if (schedule.kind === "cron") {
74
- return "CRON";
75
- }
76
-
77
- if (schedule.kind === "at") {
78
- return "ONCE";
79
- }
80
-
81
- return "CUSTOM";
82
- }
83
-
84
- function formatNextRun(job) {
85
- const nextRunAtMs = job.state?.nextRunAtMs;
86
- if (!nextRunAtMs) {
87
- return "Not scheduled";
88
- }
89
-
90
- const next = new Date(nextRunAtMs);
91
- const now = new Date();
92
- const diffMs = next - now;
93
-
94
- if (diffMs < 0) {
95
- return "Overdue";
96
- }
97
-
98
- const diffMins = Math.floor(diffMs / 60000);
99
- const diffHours = Math.floor(diffMins / 60);
100
- const diffDays = Math.floor(diffHours / 24);
101
-
102
- if (diffMins < 60) {
103
- return `in ${diffMins}m`;
104
- }
105
- if (diffHours < 24) {
106
- return `in ${diffHours}h`;
107
- }
108
- if (diffDays === 1) {
109
- return "Tomorrow";
110
- }
111
- if (diffDays < 7) {
112
- return `in ${diffDays} days`;
113
- }
114
-
115
- return next.toLocaleDateString("en-US", { month: "short", day: "numeric" });
116
- }
117
-
118
- // ── Render Schedules ───────────────────────────────────────────────────────
119
- function render() {
120
- const activeCount = schedules.filter((s) => s.enabled).length;
121
- countBadge.textContent = activeCount > 0 ? activeCount : "";
122
-
123
- // Clear existing items (except empty state)
124
- const items = list.querySelectorAll(".schedule-item");
125
- items.forEach((item) => item.remove());
126
-
127
- if (schedules.length === 0) {
128
- emptyState.style.display = "";
58
+ // ── Fetch + notify ──
59
+ async function fetchSchedules() {
60
+ if (!window.gateway?.connected) {
129
61
  return;
130
62
  }
131
-
132
- emptyState.style.display = "none";
133
-
134
- // Sort: enabled first, then by nextRunAtMs
135
- const sorted = [...schedules].toSorted((a, b) => {
136
- if (a.enabled !== b.enabled) {
137
- return b.enabled ? 1 : -1;
63
+ try {
64
+ const result = await window.gateway.rpc("cron.list", { includeDisabled: true });
65
+ if (result?.jobs) {
66
+ schedules = result.jobs;
67
+ window.dispatchEvent(new CustomEvent("symi:schedules-updated", { detail: { schedules } }));
138
68
  }
139
- const aNext = a.state?.nextRunAtMs || 0;
140
- const bNext = b.state?.nextRunAtMs || 0;
141
- return aNext - bNext;
142
- });
143
-
144
- for (const job of sorted) {
145
- const item = document.createElement("div");
146
- item.className = "schedule-item";
147
- item.setAttribute("data-active", job.enabled ? "true" : "false");
148
- item.setAttribute("data-schedule-id", job.id || "");
149
-
150
- item.innerHTML = `
151
- <div class="schedule-toggle" title="${job.enabled ? "Disable" : "Enable"}"></div>
152
- <div class="schedule-info">
153
- <div class="schedule-name">${escHtml(job.name || "Unnamed")}</div>
154
- <div class="schedule-next">Next: ${formatNextRun(job)}</div>
155
- </div>
156
- <div class="schedule-interval">${formatInterval(job)}</div>
157
- `;
158
-
159
- // Toggle click
160
- const toggle = item.querySelector(".schedule-toggle");
161
- toggle.addEventListener("click", (e) => {
162
- e.stopPropagation();
163
- void toggleSchedule(job.id);
164
- });
165
-
166
- // Item click to edit
167
- item.addEventListener("click", () => openModalForEdit(job));
168
- list.appendChild(item);
69
+ } catch (err) {
70
+ console.debug("[scheduling] Failed to fetch:", err.message);
169
71
  }
170
72
  }
171
73
 
172
- // ── Toggle Schedule ────────────────────────────────────────────────────────
173
74
  async function toggleSchedule(jobId) {
174
75
  const job = schedules.find((s) => s.id === jobId);
175
76
  if (!job) {
176
77
  return;
177
78
  }
178
-
179
79
  const newEnabled = !job.enabled;
180
-
181
80
  try {
182
81
  if (window.gateway?.connected) {
183
82
  await window.gateway.rpc("cron.update", {
@@ -185,53 +84,36 @@
185
84
  patch: { enabled: newEnabled },
186
85
  });
187
86
  }
188
-
189
87
  job.enabled = newEnabled;
190
- render();
88
+ window.dispatchEvent(new CustomEvent("symi:schedules-updated", { detail: { schedules } }));
191
89
  } catch (err) {
192
90
  console.error("[scheduling] Toggle failed:", err);
193
91
  }
194
92
  }
195
93
 
196
- // ── Fetch Schedules ────────────────────────────────────────────────────────
197
- async function fetchSchedules() {
198
- if (!window.gateway?.connected) {
94
+ // ── Modal ──
95
+ function openModal() {
96
+ if (!modalOverlay) {
199
97
  return;
200
98
  }
201
-
202
- try {
203
- const result = await window.gateway.rpc("cron.list", {
204
- includeDisabled: true,
205
- });
206
-
207
- if (result?.jobs) {
208
- schedules = result.jobs;
209
- render();
210
- }
211
- } catch (err) {
212
- console.debug("[scheduling] Failed to fetch:", err.message);
213
- }
214
- }
215
-
216
- // ── Modal Controls ─────────────────────────────────────────────────────────
217
- function openModal() {
218
99
  editingScheduleId = null;
219
100
  selectedInterval = null;
220
101
  resetForm();
221
-
222
102
  modalOverlay.classList.add("open");
223
103
  modalOverlay.setAttribute("aria-hidden", "false");
224
- nameInput.focus();
104
+ nameInput?.focus();
225
105
  document.addEventListener("keydown", onModalKey);
226
106
  }
227
107
 
228
108
  function openModalForEdit(job) {
109
+ if (!modalOverlay || !nameInput) {
110
+ return;
111
+ }
229
112
  editingScheduleId = job.id;
230
-
231
113
  nameInput.value = job.name || "";
232
- taskInput.value = job.payload?.message || "";
233
-
234
- // Determine interval type from schedule
114
+ if (taskInput) {
115
+ taskInput.value = job.payload?.message || "";
116
+ }
235
117
  const schedule = job.schedule;
236
118
  if (schedule?.kind === "every") {
237
119
  const ms = schedule.everyMs;
@@ -243,7 +125,6 @@
243
125
  selectInterval("weekly");
244
126
  } else {
245
127
  selectInterval("custom");
246
- // Determine best unit
247
128
  if (ms % UNIT_TO_MS.weeks === 0) {
248
129
  intervalValueInput.value = ms / UNIT_TO_MS.weeks;
249
130
  intervalUnitSelect.value = "weeks";
@@ -261,7 +142,6 @@
261
142
  } else {
262
143
  selectInterval("custom");
263
144
  }
264
-
265
145
  modalOverlay.classList.add("open");
266
146
  modalOverlay.setAttribute("aria-hidden", "false");
267
147
  nameInput.focus();
@@ -269,6 +149,9 @@
269
149
  }
270
150
 
271
151
  function closeModal() {
152
+ if (!modalOverlay) {
153
+ return;
154
+ }
272
155
  modalOverlay.classList.remove("open");
273
156
  modalOverlay.setAttribute("aria-hidden", "true");
274
157
  document.removeEventListener("keydown", onModalKey);
@@ -277,13 +160,25 @@
277
160
  }
278
161
 
279
162
  function resetForm() {
280
- nameInput.value = "";
281
- taskInput.value = "";
282
- intervalValueInput.value = "1";
283
- intervalUnitSelect.value = "days";
284
- timeInput.value = "09:00";
163
+ if (nameInput) {
164
+ nameInput.value = "";
165
+ }
166
+ if (taskInput) {
167
+ taskInput.value = "";
168
+ }
169
+ if (intervalValueInput) {
170
+ intervalValueInput.value = "1";
171
+ }
172
+ if (intervalUnitSelect) {
173
+ intervalUnitSelect.value = "days";
174
+ }
175
+ if (timeInput) {
176
+ timeInput.value = "09:00";
177
+ }
285
178
  selectedInterval = null;
286
- customOptions.style.display = "none";
179
+ if (customOptions) {
180
+ customOptions.style.display = "none";
181
+ }
287
182
  intervalBtns.forEach((btn) => btn.classList.remove("selected"));
288
183
  }
289
184
 
@@ -293,68 +188,52 @@
293
188
  }
294
189
  }
295
190
 
296
- // ── Interval Selection ─────────────────────────────────────────────────────
297
191
  function selectInterval(interval) {
298
192
  selectedInterval = interval;
299
-
300
193
  intervalBtns.forEach((btn) => {
301
194
  const btnInterval = btn.getAttribute("data-interval");
302
195
  btn.classList.toggle("selected", btnInterval === interval);
303
196
  });
304
-
305
- if (interval === "custom") {
306
- customOptions.style.display = "block";
307
- } else {
308
- customOptions.style.display = "none";
197
+ if (customOptions) {
198
+ customOptions.style.display = interval === "custom" ? "block" : "none";
309
199
  }
310
200
  }
311
201
 
312
- // ── Save Schedule ──────────────────────────────────────────────────────────
202
+ // ── Save ──
313
203
  async function saveSchedule() {
204
+ if (!nameInput || !taskInput) {
205
+ return;
206
+ }
314
207
  const name = nameInput.value.trim();
315
208
  const task = taskInput.value.trim();
316
-
317
209
  if (!name) {
318
210
  nameInput.focus();
319
211
  return;
320
212
  }
321
-
322
213
  if (!task) {
323
214
  taskInput.focus();
324
215
  return;
325
216
  }
326
-
327
217
  if (!selectedInterval) {
328
- // Default to daily if none selected
329
218
  selectInterval("daily");
330
219
  }
331
-
332
- // Calculate everyMs based on interval selection
333
220
  let everyMs;
334
221
  if (selectedInterval === "custom") {
335
- const value = parseInt(intervalValueInput.value) || 1;
336
- const unit = intervalUnitSelect.value;
222
+ const value = parseInt(intervalValueInput?.value) || 1;
223
+ const unit = intervalUnitSelect?.value || "days";
337
224
  everyMs = value * UNIT_TO_MS[unit];
338
225
  } else {
339
226
  const preset = PRESETS[selectedInterval];
340
227
  everyMs = preset.value * UNIT_TO_MS[preset.unit];
341
228
  }
342
-
343
- modalSubmit.disabled = true;
344
- modalSubmit.innerHTML = `
345
- <svg class="spin" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
346
- <circle cx="12" cy="12" r="10" stroke-dasharray="60" stroke-dashoffset="20"/>
347
- </svg>
348
- Saving...
349
- `;
350
-
229
+ if (modalSubmit) {
230
+ modalSubmit.disabled = true;
231
+ }
351
232
  try {
352
233
  if (!window.gateway?.connected) {
353
234
  throw new Error("Gateway not connected");
354
235
  }
355
-
356
236
  if (editingScheduleId) {
357
- // Update existing job
358
237
  await window.gateway.rpc("cron.update", {
359
238
  id: editingScheduleId,
360
239
  patch: {
@@ -364,7 +243,6 @@
364
243
  },
365
244
  });
366
245
  } else {
367
- // Create new job
368
246
  await window.gateway.rpc("cron.add", {
369
247
  name,
370
248
  enabled: true,
@@ -374,32 +252,20 @@
374
252
  payload: { kind: "agentTurn", message: task },
375
253
  });
376
254
  }
377
-
378
255
  closeModal();
379
256
  setTimeout(fetchSchedules, 300);
380
257
  } catch (err) {
381
258
  console.error("[scheduling] Save failed:", err);
382
259
  alert("Failed to save schedule: " + (err.message || "Unknown error"));
383
260
  } finally {
384
- modalSubmit.disabled = false;
385
- modalSubmit.innerHTML = `
386
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
387
- <circle cx="12" cy="12" r="10"/>
388
- <polyline points="12 6 12 12 16 14"/>
389
- </svg>
390
- Schedule
391
- `;
261
+ if (modalSubmit) {
262
+ modalSubmit.disabled = false;
263
+ }
392
264
  }
393
265
  }
394
266
 
395
- // ── Initialize ─────────────────────────────────────────────────────────────
267
+ // ── Init ──
396
268
  function init() {
397
- // Add button
398
- if (addBtn) {
399
- addBtn.addEventListener("click", openModal);
400
- }
401
-
402
- // Modal controls
403
269
  if (modalClose) {
404
270
  modalClose.addEventListener("click", closeModal);
405
271
  }
@@ -416,16 +282,12 @@
416
282
  }
417
283
  });
418
284
  }
419
-
420
- // Interval buttons
421
285
  intervalBtns.forEach((btn) => {
422
286
  btn.addEventListener("click", () => {
423
287
  const interval = btn.getAttribute("data-interval");
424
288
  selectInterval(interval);
425
289
  });
426
290
  });
427
-
428
- // Submit on Enter in name field (with Ctrl/Cmd)
429
291
  if (nameInput) {
430
292
  nameInput.addEventListener("keydown", (e) => {
431
293
  if ((e.ctrlKey || e.metaKey) && e.key === "Enter") {
@@ -434,27 +296,26 @@
434
296
  });
435
297
  }
436
298
 
437
- // Initial fetch
438
299
  void fetchSchedules();
439
-
440
- // Poll every 30 seconds
441
300
  _pollInterval = setInterval(fetchSchedules, 30000);
442
-
443
- // Also fetch on gateway connect
444
301
  window.addEventListener("gateway:connected", fetchSchedules);
445
302
  window.addEventListener("gateway:hello", fetchSchedules);
446
303
  }
447
304
 
448
- // Start when DOM is ready
449
305
  if (document.readyState === "loading") {
450
306
  document.addEventListener("DOMContentLoaded", init);
451
307
  } else {
452
308
  init();
453
309
  }
454
310
 
455
- // Expose for external use
311
+ // Public API extended in Stage C with getActive() + openForEdit() +
312
+ // toggle() so the AWAITING surface can read state, edit jobs, and
313
+ // flip enabled flags without re-implementing the cron RPC layer.
456
314
  window.schedulingPanel = {
457
315
  refresh: fetchSchedules,
458
316
  open: openModal,
317
+ openForEdit: openModalForEdit,
318
+ getActive: () => [...schedules],
319
+ toggle: toggleSchedule,
459
320
  };
460
321
  })();