@symerian/symi 3.5.14 → 3.5.16

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 (165) hide show
  1. package/dist/{agent-Cq8f1rHB.js → agent-RWZSPbLw.js} +1 -1
  2. package/dist/{agent-CSOQs4VQ.js → agent-Za31LZ2H.js} +1 -1
  3. package/dist/{agents-BiKiy1SO.js → agents-CulBOE6L.js} +3 -3
  4. package/dist/{audit-DJURK8ly.js → audit-B1fVD2bA.js} +2 -2
  5. package/dist/{audit-BPhWpe_6.js → audit-BQnxE5w6.js} +2 -2
  6. package/dist/{auth-choice-9XyVfAyH.js → auth-choice-B8n3tJtT.js} +2 -2
  7. package/dist/{auth-choice-BYOypIGE.js → auth-choice-C8ElO44A.js} +2 -2
  8. package/dist/{banner-BDexjPFs.js → banner-B91SPus6.js} +1 -1
  9. package/dist/{browser-cli-BxDx4t2-.js → browser-cli-BvOz7txM.js} +3 -3
  10. package/dist/{browser-cli-BT0akXlr.js → browser-cli-CXDzGAN7.js} +3 -3
  11. package/dist/build-info.json +3 -3
  12. package/dist/bundled/boot-md/handler.js +4 -4
  13. package/dist/bundled/session-memory/handler.js +4 -4
  14. package/dist/{call-mzNPQq1S.js → call-A18kwyah.js} +2 -1
  15. package/dist/{call-BC1HAVqW.js → call-PpGwcPn-.js} +2 -1
  16. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  17. package/dist/{channel-options-Cy9aQzx9.js → channel-options-1G5HGFpn.js} +1 -1
  18. package/dist/{channel-options-BjgoCETm.js → channel-options-CsyyC4uc.js} +1 -1
  19. package/dist/{channels-cli-DokpJOeN.js → channels-cli-R3TK9Jwf.js} +9 -9
  20. package/dist/{channels-cli-R0UMOKTA.js → channels-cli-aF7d6Af9.js} +9 -9
  21. package/dist/{chrome-CmQwGAuL.js → chrome-OTJg3QKn.js} +7 -7
  22. package/dist/{cli-ay-COtm8.js → cli-Bguq-s8o.js} +6 -6
  23. package/dist/{cli-BnLVnWOZ.js → cli-CFaH6TRI.js} +6 -6
  24. package/dist/{client-BcvL_D-H.js → client-CdiymIXS.js} +32 -1
  25. package/dist/{client-BfnNfATE.js → client-DDqXo-cF.js} +32 -1
  26. package/dist/{command-registry-CjxdlqkY.js → command-registry-2hfSOaGL.js} +11 -11
  27. package/dist/{completion-cli-kGAGMr-I.js → completion-cli-BEO2AB41.js} +1 -1
  28. package/dist/{completion-cli-D2pLg5yF.js → completion-cli-TYU7Y_XZ.js} +2 -2
  29. package/dist/{config-cli-D12Nouyy.js → config-cli-Cvylxp-R.js} +1 -1
  30. package/dist/{config-cli-BAognmPE.js → config-cli-D6vpEtzB.js} +1 -1
  31. package/dist/{configure-CJp0NIbm.js → configure-BMRfSJ5h.js} +6 -6
  32. package/dist/{configure-B8-2sqW3.js → configure-DRDyxmMR.js} +6 -6
  33. package/dist/control-ui/css/style.css +80 -0
  34. package/dist/control-ui/index.html +1 -0
  35. package/dist/control-ui/js/gateway.js +10 -0
  36. package/dist/control-ui/js/symframe.js +353 -0
  37. package/dist/{cron-cli-DoXlzwQ0.js → cron-cli-DVEdIAaa.js} +3 -3
  38. package/dist/{cron-cli-BJzi2QtY.js → cron-cli-DlxcZT7g.js} +3 -3
  39. package/dist/{daemon-cli-CRGNFCN7.js → daemon-cli-6ZV3jmTp.js} +2 -2
  40. package/dist/{daemon-cli-DXHRewv8.js → daemon-cli-DqJhEk3T.js} +2 -2
  41. package/dist/daemon-cli.js +32 -0
  42. package/dist/{deliver-B04yNX82.js → deliver-BiWlR84Y.js} +4 -4
  43. package/dist/{devices-cli-DAG-TaOo.js → devices-cli-C4rLpzkl.js} +2 -2
  44. package/dist/{devices-cli-YdVaVQkF.js → devices-cli-C6EdHL_5.js} +2 -2
  45. package/dist/{doctor-completion-CmKOsLDy.js → doctor-completion-CvaSyxyp.js} +1 -1
  46. package/dist/{doctor-completion-Ca692KiP.js → doctor-completion-DgNgQFQQ.js} +1 -1
  47. package/dist/entry.js +1 -1
  48. package/dist/{exec-approvals-cli-Cnie7kMb.js → exec-approvals-cli-Ca54uWdL.js} +4 -4
  49. package/dist/{exec-approvals-cli-BuHNELGd.js → exec-approvals-cli-bu1S7v6i.js} +4 -4
  50. package/dist/extensionAPI.js +2 -2
  51. package/dist/{gateway-cli-zh8P3vbG.js → gateway-cli-BNhURE6O.js} +16 -16
  52. package/dist/{gateway-cli-CvzoUDQs.js → gateway-cli-DCTPCoQx.js} +16 -16
  53. package/dist/{gateway-rpc-st8ffJBC.js → gateway-rpc-DMSsr0Xn.js} +1 -1
  54. package/dist/{gateway-rpc-CIHuIeji.js → gateway-rpc-vivTzTCq.js} +1 -1
  55. package/dist/{glass-ui-ws-QqYp-Uof.js → glass-ui-ws-Bzs3ALoN.js} +13 -13
  56. package/dist/{glass-ui-ws-DCXg7AbP.js → glass-ui-ws-C88aJslb.js} +13 -13
  57. package/dist/{health-BIwN5H6b.js → health--v-C6lSf.js} +1 -1
  58. package/dist/{health-BaYDaHPT.js → health-D0jGdk53.js} +1 -1
  59. package/dist/{hooks-cli-ClMPrbD7.js → hooks-cli-CZ_pSdXS.js} +7 -7
  60. package/dist/{hooks-cli-CJ0OoLFk.js → hooks-cli-CrZvzan1.js} +7 -7
  61. package/dist/index.js +10 -10
  62. package/dist/llm-slug-generator.js +4 -4
  63. package/dist/{logs-cli-D8A5dpnm.js → logs-cli-Dde2Dp2w.js} +3 -3
  64. package/dist/{logs-cli-CK9YhKnf.js → logs-cli-vIxaNVmF.js} +3 -3
  65. package/dist/{manager-Ct4kRT7n.js → manager--GmDbwza.js} +1 -1
  66. package/dist/{manager-Dh_-GTcG.js → manager-BMA3iRMq.js} +1 -1
  67. package/dist/{manager-DjhxLEpd.js → manager-DjhE8yLr.js} +1 -1
  68. package/dist/{manager-807ZlqEf.js → manager-S5d36_EM.js} +1 -1
  69. package/dist/{memory-CkJCn1Gg.js → memory-BcdI7NSs.js} +3 -3
  70. package/dist/{memory-B2hM774N.js → memory-DBx1wEvf.js} +3 -3
  71. package/dist/{memory-cli-C3CONZGB.js → memory-cli-CQSVrNAK.js} +2 -2
  72. package/dist/{memory-cli-CPebu_bx.js → memory-cli-jNf_SaXU.js} +2 -2
  73. package/dist/{models-Cbad7KB1.js → models-BgZWEpSL.js} +3 -3
  74. package/dist/{models-cli-C1yhTK5G.js → models-cli-6tdy2DaI.js} +9 -9
  75. package/dist/{models-cli-B_U9E8SV.js → models-cli-CiL6wDtk.js} +8 -8
  76. package/dist/{node-cli-CFIBFPOd.js → node-cli-BTXwMEJE.js} +1 -1
  77. package/dist/{node-cli-Cmfs9las.js → node-cli-ClniLggz.js} +1 -1
  78. package/dist/{nodes-cli-DlkO0Hyw.js → nodes-cli-DLaX4pgX.js} +3 -3
  79. package/dist/{nodes-cli-BH1TUf3n.js → nodes-cli-DrhMUDXx.js} +3 -3
  80. package/dist/{onboard-CWNtW-LS.js → onboard-DRn6pFfO.js} +3 -3
  81. package/dist/{onboard-channels-DPzbq3iB.js → onboard-channels-BN00--TD.js} +1 -1
  82. package/dist/{onboard-channels-BRi2UP_-.js → onboard-channels-DeRg97iI.js} +1 -1
  83. package/dist/{onboard-8eYravsD.js → onboard-fBxK2Bky.js} +3 -3
  84. package/dist/{onboard-helpers-DahbbzzQ.js → onboard-helpers-CAAZ0RDq.js} +1 -1
  85. package/dist/{onboard-helpers-Bf1LB5fd.js → onboard-helpers-Cv6fL8Vq.js} +1 -1
  86. package/dist/{onboard-remote-BgDE1b8f.js → onboard-remote-CXRFa8AU.js} +1 -1
  87. package/dist/{onboard-remote-B6Ox0wMi.js → onboard-remote-pucDu-pH.js} +1 -1
  88. package/dist/{onboard-skills-D-ppyTcQ.js → onboard-skills-BVTCfqlg.js} +1 -1
  89. package/dist/{onboard-skills-V1IT5l9E.js → onboard-skills-C_93kjju.js} +1 -1
  90. package/dist/{onboarding-Cw8abFVd.js → onboarding-CLOZkMhc.js} +8 -8
  91. package/dist/{onboarding-D35WPHUd.js → onboarding-i1rA1XGe.js} +8 -8
  92. package/dist/{onboarding.finalize-BStHm3Q-.js → onboarding.finalize-BV76YUaD.js} +9 -9
  93. package/dist/{onboarding.finalize-C50T8L4e.js → onboarding.finalize-gk9ot6lb.js} +8 -8
  94. package/dist/{onboarding.gateway-config-DJ1YAlBD.js → onboarding.gateway-config-eFJnSC-S.js} +3 -3
  95. package/dist/{onboarding.gateway-config-D6xPpItN.js → onboarding.gateway-config-wB3ShGU4.js} +3 -3
  96. package/dist/{pi-embedded-BxKs-STI.js → pi-embedded-BAgVs8XC.js} +35 -3
  97. package/dist/{plugin-registry-BFyeIJdT.js → plugin-registry-2DU3g0AT.js} +1 -1
  98. package/dist/{plugin-registry-B9SUsQmV.js → plugin-registry-CubHLj0v.js} +1 -1
  99. package/dist/plugin-sdk/gateway/protocol/index.d.ts +5 -2
  100. package/dist/plugin-sdk/gateway/protocol/schema/logs-chat.d.ts +26 -0
  101. package/dist/{plugins-cli-DKEgD6T2.js → plugins-cli-CIYGRkKI.js} +7 -7
  102. package/dist/{plugins-cli-BTdd7aE9.js → plugins-cli-Dpj76E3-.js} +7 -7
  103. package/dist/{program-C668x3bd.js → program-Qug3oi2C.js} +12 -12
  104. package/dist/{program-context-CV_ibEw9.js → program-context-CCIGjsQL.js} +38 -30
  105. package/dist/{prompt-select-styled-BlpvaJVg.js → prompt-select-styled-ARnCLf3Q.js} +7 -7
  106. package/dist/{prompt-select-styled-G6u6Q8v9.js → prompt-select-styled-BdNTADj2.js} +7 -7
  107. package/dist/{provider-auth-helpers-R-cnIeud.js → provider-auth-helpers-B_gA1eP9.js} +1 -1
  108. package/dist/{provider-auth-helpers-DAtMFGrU.js → provider-auth-helpers-LpT83BSS.js} +1 -1
  109. package/dist/{push-apns-Bx0i-bNw.js → push-apns-BWeNJb15.js} +1 -1
  110. package/dist/{push-apns--j8PeFrK.js → push-apns-CLngpXwL.js} +1 -1
  111. package/dist/{pw-ai-DLsdzdgc.js → pw-ai-DY_6l11g.js} +1 -1
  112. package/dist/{register.agent-muhvyTMD.js → register.agent-Dz24Zz7t.js} +11 -11
  113. package/dist/{register.agent-CYRt1iiv.js → register.agent-pWEv9TC7.js} +12 -12
  114. package/dist/{register.configure-CsvtHB87.js → register.configure-BMLA-3Mt.js} +14 -14
  115. package/dist/{register.configure-DUaVY9dt.js → register.configure-DQWtFNGt.js} +14 -14
  116. package/dist/{register.maintenance-BrNuk6hl.js → register.maintenance-BncnnneX.js} +12 -12
  117. package/dist/{register.maintenance-DMLKAqqc.js → register.maintenance-CTF70v5h.js} +13 -13
  118. package/dist/{register.message-9WxgUBSA.js → register.message-C-p-GZ8z.js} +7 -7
  119. package/dist/{register.message-DZG9UElS.js → register.message-vUwGF3E9.js} +7 -7
  120. package/dist/{register.onboard-C-5RaI3-.js → register.onboard-DhcpKFgU.js} +6 -6
  121. package/dist/{register.onboard-Bpo5ofDH.js → register.onboard-O0P6rCuX.js} +6 -6
  122. package/dist/{register.setup-D87mlpLA.js → register.setup-CZfWa9-Z.js} +6 -6
  123. package/dist/{register.setup-DQXuZsGD.js → register.setup-D3XQyELS.js} +6 -6
  124. package/dist/{register.status-health-sessions-B600sqsd.js → register.status-health-sessions-C9Zdn1ai.js} +8 -8
  125. package/dist/{register.status-health-sessions-ZYT6lFhO.js → register.status-health-sessions-Dn2gy0gi.js} +8 -8
  126. package/dist/{register.subclis-DdlLdgzD.js → register.subclis-Dv8bf2ox.js} +28 -20
  127. package/dist/{rpc-Co5Ci69t.js → rpc-DP3AhcZq.js} +1 -1
  128. package/dist/{rpc-DZpJ-mGE.js → rpc-KjYXUeLD.js} +1 -1
  129. package/dist/{run-main-C1YGbNWb.js → run-main-BsVhPYM4.js} +20 -20
  130. package/dist/{security-cli-Bkcil7sD.js → security-cli-CGLnA_ni.js} +3 -3
  131. package/dist/{security-cli-CAdCbDUS.js → security-cli-hTCYStCU.js} +3 -3
  132. package/dist/{server-methods-FxoNbY02.js → server-methods-C3_JU-DI.js} +36 -11
  133. package/dist/{server-methods-DMPwNvoz.js → server-methods-D_zGEWNK.js} +36 -11
  134. package/dist/{server-node-events-Dp9EiddI.js → server-node-events-CRYzL3TY.js} +8 -8
  135. package/dist/{server-node-events-k7h7NWLL.js → server-node-events-CW5ilXPN.js} +8 -8
  136. package/dist/{status-CYqfS1u_.js → status-1ACP62Xm.js} +5 -5
  137. package/dist/{status-BU-hn3iH.js → status-C_K3wapX.js} +1 -1
  138. package/dist/{status-D3h1mSLx.js → status-DbIBRkrV.js} +5 -5
  139. package/dist/{status-CHEd1LqO.js → status-NK8EUhIy.js} +1 -1
  140. package/dist/{subagent-registry-4qeNm1OL.js → subagent-registry-SZbZfkbr.js} +5 -5
  141. package/dist/symframe-cli-BKrtoG8H.js +51 -0
  142. package/dist/symframe-cli-CsA_x7U9.js +56 -0
  143. package/dist/{synthesis-DceZPirI.js → synthesis-BLRsy_PZ.js} +6 -6
  144. package/dist/{synthesis-DFNyev83.js → synthesis-CA2zGGNE.js} +6 -6
  145. package/dist/{synthesis-CxR-cX-4.js → synthesis-CUbz4CaL.js} +2 -2
  146. package/dist/{synthesis-BH4onG1c.js → synthesis-Dv6bJWYX.js} +4 -4
  147. package/dist/{system-cli-BCAd92UF.js → system-cli-BoxTfo1R.js} +3 -3
  148. package/dist/{system-cli-GwzCZpdT.js → system-cli-CYgTroZA.js} +3 -3
  149. package/dist/{tui-9lZLkRZm.js → tui-BdtfeKft.js} +2 -2
  150. package/dist/{tui-ROL_b9BF.js → tui-CO7OA9ZO.js} +2 -2
  151. package/dist/{tui-cli-C7NUBeQi.js → tui-cli-CcSS08na.js} +3 -3
  152. package/dist/{tui-cli-C6Q0KKvj.js → tui-cli-_WzJLbOA.js} +3 -3
  153. package/dist/{unified-runner-D9LZYzyF.js → unified-runner-B0cMr4If.js} +5 -5
  154. package/dist/{unified-runner-LBbNjudz.js → unified-runner-ByJSAveb.js} +42 -10
  155. package/dist/{update-cli-Du-NLjgh.js → update-cli-CrP5Kvo4.js} +13 -13
  156. package/dist/{update-cli-CWYfdfuU.js → update-cli-y4Q__h4E.js} +14 -14
  157. package/package.json +1 -1
  158. /package/dist/{consolidate-BSUbtSDt.js → consolidate-BoM9cz9L.js} +0 -0
  159. /package/dist/{consolidate-DhoiF4n7.js → consolidate-nNhnUpNj.js} +0 -0
  160. /package/dist/{onboard-hooks-CXRw9BJY.js → onboard-hooks-CxJRzS5z.js} +0 -0
  161. /package/dist/{onboard-hooks-DfDF9AU4.js → onboard-hooks-D5-mtFUY.js} +0 -0
  162. /package/dist/{qmd-manager-CYEAMLE7.js → qmd-manager-C1levE0a.js} +0 -0
  163. /package/dist/{qmd-manager-C6wRtPm_.js → qmd-manager-CR71XjjR.js} +0 -0
  164. /package/dist/{webhooks-cli-C3uyehJS.js → webhooks-cli-BUWSS_ve.js} +0 -0
  165. /package/dist/{webhooks-cli-C3g4MxCE.js → webhooks-cli-BrDeMswO.js} +0 -0
@@ -41,7 +41,7 @@ const entries = [
41
41
  description: "Run, inspect, and query the WebSocket Gateway",
42
42
  hasSubcommands: true,
43
43
  register: async (program) => {
44
- (await import("./gateway-cli-CvzoUDQs.js")).registerGatewayCli(program);
44
+ (await import("./gateway-cli-DCTPCoQx.js")).registerGatewayCli(program);
45
45
  }
46
46
  },
47
47
  {
@@ -49,7 +49,7 @@ const entries = [
49
49
  description: "Gateway service (legacy alias)",
50
50
  hasSubcommands: true,
51
51
  register: async (program) => {
52
- (await import("./daemon-cli-DXHRewv8.js").then((n) => n.t)).registerDaemonCli(program);
52
+ (await import("./daemon-cli-DqJhEk3T.js").then((n) => n.t)).registerDaemonCli(program);
53
53
  }
54
54
  },
55
55
  {
@@ -57,7 +57,7 @@ const entries = [
57
57
  description: "Tail gateway file logs via RPC",
58
58
  hasSubcommands: false,
59
59
  register: async (program) => {
60
- (await import("./logs-cli-CK9YhKnf.js")).registerLogsCli(program);
60
+ (await import("./logs-cli-vIxaNVmF.js")).registerLogsCli(program);
61
61
  }
62
62
  },
63
63
  {
@@ -65,7 +65,7 @@ const entries = [
65
65
  description: "System events and presence",
66
66
  hasSubcommands: true,
67
67
  register: async (program) => {
68
- (await import("./system-cli-GwzCZpdT.js")).registerSystemCli(program);
68
+ (await import("./system-cli-CYgTroZA.js")).registerSystemCli(program);
69
69
  }
70
70
  },
71
71
  {
@@ -73,7 +73,7 @@ const entries = [
73
73
  description: "Discover, scan, and configure models",
74
74
  hasSubcommands: true,
75
75
  register: async (program) => {
76
- (await import("./models-cli-C1yhTK5G.js")).registerModelsCli(program);
76
+ (await import("./models-cli-6tdy2DaI.js")).registerModelsCli(program);
77
77
  }
78
78
  },
79
79
  {
@@ -81,7 +81,7 @@ const entries = [
81
81
  description: "Manage exec approvals (gateway or node host)",
82
82
  hasSubcommands: true,
83
83
  register: async (program) => {
84
- (await import("./exec-approvals-cli-Cnie7kMb.js")).registerExecApprovalsCli(program);
84
+ (await import("./exec-approvals-cli-Ca54uWdL.js")).registerExecApprovalsCli(program);
85
85
  }
86
86
  },
87
87
  {
@@ -89,7 +89,7 @@ const entries = [
89
89
  description: "Manage gateway-owned node pairing and node commands",
90
90
  hasSubcommands: true,
91
91
  register: async (program) => {
92
- (await import("./nodes-cli-BH1TUf3n.js")).registerNodesCli(program);
92
+ (await import("./nodes-cli-DrhMUDXx.js")).registerNodesCli(program);
93
93
  }
94
94
  },
95
95
  {
@@ -97,7 +97,7 @@ const entries = [
97
97
  description: "Device pairing + token management",
98
98
  hasSubcommands: true,
99
99
  register: async (program) => {
100
- (await import("./devices-cli-YdVaVQkF.js")).registerDevicesCli(program);
100
+ (await import("./devices-cli-C6EdHL_5.js")).registerDevicesCli(program);
101
101
  }
102
102
  },
103
103
  {
@@ -105,7 +105,7 @@ const entries = [
105
105
  description: "Run and manage the headless node host service",
106
106
  hasSubcommands: true,
107
107
  register: async (program) => {
108
- (await import("./node-cli-Cmfs9las.js")).registerNodeCli(program);
108
+ (await import("./node-cli-ClniLggz.js")).registerNodeCli(program);
109
109
  }
110
110
  },
111
111
  {
@@ -121,7 +121,7 @@ const entries = [
121
121
  description: "Open a terminal UI connected to the Gateway",
122
122
  hasSubcommands: false,
123
123
  register: async (program) => {
124
- (await import("./tui-cli-C7NUBeQi.js")).registerTuiCli(program);
124
+ (await import("./tui-cli-CcSS08na.js")).registerTuiCli(program);
125
125
  }
126
126
  },
127
127
  {
@@ -129,7 +129,7 @@ const entries = [
129
129
  description: "Manage cron jobs via the Gateway scheduler",
130
130
  hasSubcommands: true,
131
131
  register: async (program) => {
132
- (await import("./cron-cli-BJzi2QtY.js")).registerCronCli(program);
132
+ (await import("./cron-cli-DlxcZT7g.js")).registerCronCli(program);
133
133
  }
134
134
  },
135
135
  {
@@ -153,7 +153,7 @@ const entries = [
153
153
  description: "Manage internal agent hooks",
154
154
  hasSubcommands: true,
155
155
  register: async (program) => {
156
- (await import("./hooks-cli-ClMPrbD7.js")).registerHooksCli(program);
156
+ (await import("./hooks-cli-CZ_pSdXS.js")).registerHooksCli(program);
157
157
  }
158
158
  },
159
159
  {
@@ -161,7 +161,7 @@ const entries = [
161
161
  description: "Webhook helpers and integrations",
162
162
  hasSubcommands: true,
163
163
  register: async (program) => {
164
- (await import("./webhooks-cli-C3uyehJS.js")).registerWebhooksCli(program);
164
+ (await import("./webhooks-cli-BUWSS_ve.js")).registerWebhooksCli(program);
165
165
  }
166
166
  },
167
167
  {
@@ -177,7 +177,7 @@ const entries = [
177
177
  description: "Secure DM pairing (approve inbound requests)",
178
178
  hasSubcommands: true,
179
179
  register: async (program) => {
180
- const { registerPluginCliCommands } = await import("./cli-ay-COtm8.js");
180
+ const { registerPluginCliCommands } = await import("./cli-Bguq-s8o.js");
181
181
  registerPluginCliCommands(program, await loadConfig());
182
182
  (await import("./pairing-cli-D7_UlTsI.js")).registerPairingCli(program);
183
183
  }
@@ -187,8 +187,8 @@ const entries = [
187
187
  description: "Manage Symi plugins and extensions",
188
188
  hasSubcommands: true,
189
189
  register: async (program) => {
190
- (await import("./plugins-cli-DKEgD6T2.js")).registerPluginsCli(program);
191
- const { registerPluginCliCommands } = await import("./cli-ay-COtm8.js");
190
+ (await import("./plugins-cli-CIYGRkKI.js")).registerPluginsCli(program);
191
+ const { registerPluginCliCommands } = await import("./cli-Bguq-s8o.js");
192
192
  registerPluginCliCommands(program, await loadConfig());
193
193
  }
194
194
  },
@@ -197,7 +197,7 @@ const entries = [
197
197
  description: "Manage connected chat channels (Telegram, Slack, etc.)",
198
198
  hasSubcommands: true,
199
199
  register: async (program) => {
200
- (await import("./channels-cli-DokpJOeN.js")).registerChannelsCli(program);
200
+ (await import("./channels-cli-R3TK9Jwf.js")).registerChannelsCli(program);
201
201
  }
202
202
  },
203
203
  {
@@ -213,7 +213,7 @@ const entries = [
213
213
  description: "Security tools and local config audits",
214
214
  hasSubcommands: true,
215
215
  register: async (program) => {
216
- (await import("./security-cli-Bkcil7sD.js")).registerSecurityCli(program);
216
+ (await import("./security-cli-CGLnA_ni.js")).registerSecurityCli(program);
217
217
  }
218
218
  },
219
219
  {
@@ -229,7 +229,7 @@ const entries = [
229
229
  description: "Update Symi and inspect update channel status",
230
230
  hasSubcommands: true,
231
231
  register: async (program) => {
232
- (await import("./update-cli-CWYfdfuU.js")).registerUpdateCli(program);
232
+ (await import("./update-cli-y4Q__h4E.js")).registerUpdateCli(program);
233
233
  }
234
234
  },
235
235
  {
@@ -237,7 +237,7 @@ const entries = [
237
237
  description: "Generate shell completion script",
238
238
  hasSubcommands: false,
239
239
  register: async (program) => {
240
- (await import("./completion-cli-D2pLg5yF.js").then((n) => n.n)).registerCompletionCli(program);
240
+ (await import("./completion-cli-TYU7Y_XZ.js").then((n) => n.n)).registerCompletionCli(program);
241
241
  }
242
242
  },
243
243
  {
@@ -247,6 +247,14 @@ const entries = [
247
247
  register: async (program) => {
248
248
  (await import("./cost-cli-CmfkZsmZ.js")).registerCostCli(program);
249
249
  }
250
+ },
251
+ {
252
+ name: "symframe",
253
+ description: "Push cards to the Glass UI symframe (right-column dynamic display)",
254
+ hasSubcommands: true,
255
+ register: async (program) => {
256
+ (await import("./symframe-cli-BKrtoG8H.js")).registerSymframeCli(program);
257
+ }
250
258
  }
251
259
  ];
252
260
  function getSubCliEntries() {
@@ -1,4 +1,4 @@
1
- import { a as randomIdempotencyKey, n as callGateway } from "./call-mzNPQq1S.js";
1
+ import { a as randomIdempotencyKey, n as callGateway } from "./call-A18kwyah.js";
2
2
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DXToSaWK.js";
3
3
  import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-N7nsmfM6.js";
4
4
  import { n as withProgress } from "./progress-BOQ0hkeM.js";
@@ -1,5 +1,5 @@
1
1
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DgjXWzf-.js";
2
- import { a as randomIdempotencyKey, n as callGateway } from "./call-BC1HAVqW.js";
2
+ import { a as randomIdempotencyKey, n as callGateway } from "./call-PpGwcPn-.js";
3
3
  import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-N7nsmfM6.js";
4
4
  import { n as withProgress } from "./progress-DQTvTiEg.js";
5
5
 
@@ -13,11 +13,11 @@ import "./skills-cLBEdkqu.js";
13
13
  import "./manifest-registry-CVLmi8rz.js";
14
14
  import { F as loadDotEnv, N as VERSION } from "./config-D7TcU4qN.js";
15
15
  import "./shell-env-CTYaxUs_.js";
16
- import "./client-BcvL_D-H.js";
17
- import "./call-mzNPQq1S.js";
16
+ import "./client-CdiymIXS.js";
17
+ import "./call-A18kwyah.js";
18
18
  import "./message-channel-DXToSaWK.js";
19
19
  import "./pairing-token-B-OTYROz.js";
20
- import { Wt as installUnhandledRejectionHandler } from "./subagent-registry-4qeNm1OL.js";
20
+ import { Wt as installUnhandledRejectionHandler } from "./subagent-registry-SZbZfkbr.js";
21
21
  import "./sessions-Dn6VXn4p.js";
22
22
  import "./plugins-BsEhWvLn.js";
23
23
  import "./send-Dq252-bi.js";
@@ -47,8 +47,8 @@ import "./model-auth-Byr7Gic_.js";
47
47
  import "./github-copilot-token-B5y4__YM.js";
48
48
  import "./models-config-CiR_RUxw.js";
49
49
  import "./reply-prefix-DV3KhOhL.js";
50
- import "./memory-CkJCn1Gg.js";
51
- import "./manager-Dh_-GTcG.js";
50
+ import "./memory-BcdI7NSs.js";
51
+ import "./manager-BMA3iRMq.js";
52
52
  import "./sqlite-9jF_eajd.js";
53
53
  import "./chunk-B2lBXhR0.js";
54
54
  import "./markdown-tables-BEdkErjm.js";
@@ -79,7 +79,7 @@ import "./links-B9CbwY46.js";
79
79
  import "./cli-utils-Ca0KE-dW.js";
80
80
  import "./help-format-BTNd5kFC.js";
81
81
  import "./progress-BOQ0hkeM.js";
82
- import "./memory-cli-C3CONZGB.js";
82
+ import "./memory-cli-CQSVrNAK.js";
83
83
  import "./logging-uD67RPtO.js";
84
84
  import "./replies-_DV8VSSj.js";
85
85
  import "./pi-tools.policy-CU8U7--z.js";
@@ -87,10 +87,10 @@ import "./catalog-BaM8d1-T.js";
87
87
  import "./prompt-style-CzRuIYtp.js";
88
88
  import "./note-Cltpxj6i.js";
89
89
  import "./plugin-auto-enable-PBDcVF_-.js";
90
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-B9SUsQmV.js";
90
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-CubHLj0v.js";
91
91
  import { t as assertSupportedRuntime } from "./runtime-guard-ofQGcCUc.js";
92
92
  import { t as ensureSymiCliOnPath } from "./path-env-C1hgM8gP.js";
93
- import { t as emitCliBanner } from "./banner-BDexjPFs.js";
93
+ import { t as emitCliBanner } from "./banner-B91SPus6.js";
94
94
  import "./doctor-config-flow-CKJlpwtv.js";
95
95
  import { n as ensureConfigReady } from "./config-guard-CLfXzB_z.js";
96
96
  import process$1 from "node:process";
@@ -105,7 +105,7 @@ const routeHealth = {
105
105
  const verbose = getVerboseFlag(argv, { includeDebug: true });
106
106
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
107
107
  if (timeoutMs === null) return false;
108
- const { healthCommand } = await import("./health-BaYDaHPT.js").then((n) => n.i);
108
+ const { healthCommand } = await import("./health-D0jGdk53.js").then((n) => n.i);
109
109
  await healthCommand({
110
110
  json,
111
111
  timeoutMs,
@@ -125,7 +125,7 @@ const routeStatus = {
125
125
  const verbose = getVerboseFlag(argv, { includeDebug: true });
126
126
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
127
127
  if (timeoutMs === null) return false;
128
- const { statusCommand } = await import("./status-CYqfS1u_.js").then((n) => n.t);
128
+ const { statusCommand } = await import("./status-1ACP62Xm.js").then((n) => n.t);
129
129
  await statusCommand({
130
130
  json,
131
131
  deep,
@@ -159,7 +159,7 @@ const routeAgentsList = {
159
159
  run: async (argv) => {
160
160
  const json = hasFlag(argv, "--json");
161
161
  const bindings = hasFlag(argv, "--bindings");
162
- const { agentsListCommand } = await import("./agents-BiKiy1SO.js").then((n) => n.t);
162
+ const { agentsListCommand } = await import("./agents-CulBOE6L.js").then((n) => n.t);
163
163
  await agentsListCommand({
164
164
  json,
165
165
  bindings
@@ -176,7 +176,7 @@ const routeMemoryStatus = {
176
176
  const deep = hasFlag(argv, "--deep");
177
177
  const index = hasFlag(argv, "--index");
178
178
  const verbose = hasFlag(argv, "--verbose");
179
- const { runMemoryStatus } = await import("./memory-cli-C3CONZGB.js").then((n) => n.t);
179
+ const { runMemoryStatus } = await import("./memory-cli-CQSVrNAK.js").then((n) => n.t);
180
180
  await runMemoryStatus({
181
181
  agent,
182
182
  json,
@@ -230,7 +230,7 @@ const routes = [
230
230
  const pathArg = getCommandPositionals(argv)[2];
231
231
  if (!pathArg) return false;
232
232
  const json = hasFlag(argv, "--json");
233
- const { runConfigGet } = await import("./config-cli-D12Nouyy.js");
233
+ const { runConfigGet } = await import("./config-cli-Cvylxp-R.js");
234
234
  await runConfigGet({
235
235
  path: pathArg,
236
236
  json
@@ -243,7 +243,7 @@ const routes = [
243
243
  run: async (argv) => {
244
244
  const pathArg = getCommandPositionals(argv)[2];
245
245
  if (!pathArg) return false;
246
- const { runConfigUnset } = await import("./config-cli-D12Nouyy.js");
246
+ const { runConfigUnset } = await import("./config-cli-Cvylxp-R.js");
247
247
  await runConfigUnset({ path: pathArg });
248
248
  return true;
249
249
  }
@@ -257,7 +257,7 @@ const routes = [
257
257
  const local = hasFlag(argv, "--local");
258
258
  const json = hasFlag(argv, "--json");
259
259
  const plain = hasFlag(argv, "--plain");
260
- const { modelsListCommand } = await import("./models-Cbad7KB1.js").then((n) => n.t);
260
+ const { modelsListCommand } = await import("./models-BgZWEpSL.js").then((n) => n.t);
261
261
  await modelsListCommand({
262
262
  all,
263
263
  local,
@@ -288,7 +288,7 @@ const routes = [
288
288
  const plain = hasFlag(argv, "--plain");
289
289
  const check = hasFlag(argv, "--check");
290
290
  const probe = hasFlag(argv, "--probe");
291
- const { modelsStatusCommand } = await import("./models-Cbad7KB1.js").then((n) => n.t);
291
+ const { modelsStatusCommand } = await import("./models-BgZWEpSL.js").then((n) => n.t);
292
292
  await modelsStatusCommand({
293
293
  json,
294
294
  plain,
@@ -366,7 +366,7 @@ async function runCli(argv = process$1.argv) {
366
366
  assertSupportedRuntime();
367
367
  if (await tryRouteCli(normalizedArgv)) return;
368
368
  enableConsoleCapture();
369
- const { buildProgram } = await import("./program-C668x3bd.js");
369
+ const { buildProgram } = await import("./program-Qug3oi2C.js");
370
370
  const program = buildProgram();
371
371
  installUnhandledRejectionHandler();
372
372
  process$1.on("uncaughtException", (error) => {
@@ -398,10 +398,10 @@ async function runCli(argv = process$1.argv) {
398
398
  const { getProgramContext } = await import("./program-context-CGKRxOBU.js").then((n) => n.n);
399
399
  const ctx = getProgramContext(program);
400
400
  if (ctx) {
401
- const { registerCoreCliByName } = await import("./command-registry-CjxdlqkY.js").then((n) => n.t);
401
+ const { registerCoreCliByName } = await import("./command-registry-2hfSOaGL.js").then((n) => n.t);
402
402
  await registerCoreCliByName(program, ctx, primary, parseArgv);
403
403
  }
404
- const { registerSubCliByName } = await import("./register.subclis-DdlLdgzD.js").then((n) => n.a);
404
+ const { registerSubCliByName } = await import("./register.subclis-Dv8bf2ox.js").then((n) => n.a);
405
405
  await registerSubCliByName(program, primary);
406
406
  }
407
407
  const hasBuiltinPrimary = primary !== null && program.commands.some((command) => command.name() === primary);
@@ -410,7 +410,7 @@ async function runCli(argv = process$1.argv) {
410
410
  primary,
411
411
  hasBuiltinPrimary
412
412
  })) {
413
- const { registerPluginCliCommands } = await import("./cli-ay-COtm8.js");
413
+ const { registerPluginCliCommands } = await import("./cli-Bguq-s8o.js");
414
414
  const { loadConfig } = await import("./config-D7TcU4qN.js").then((n) => n.t);
415
415
  registerPluginCliCommands(program, loadConfig());
416
416
  }
@@ -10,8 +10,8 @@ import "./skills-cLBEdkqu.js";
10
10
  import "./manifest-registry-CVLmi8rz.js";
11
11
  import { i as loadConfig, r as createConfigIO } from "./config-D7TcU4qN.js";
12
12
  import "./shell-env-CTYaxUs_.js";
13
- import "./client-BcvL_D-H.js";
14
- import "./call-mzNPQq1S.js";
13
+ import "./client-CdiymIXS.js";
14
+ import "./call-A18kwyah.js";
15
15
  import "./message-channel-DXToSaWK.js";
16
16
  import "./pairing-token-B-OTYROz.js";
17
17
  import "./sessions-Dn6VXn4p.js";
@@ -39,7 +39,7 @@ import { t as formatDocsLink } from "./links-B9CbwY46.js";
39
39
  import { t as formatHelpExamples } from "./help-format-BTNd5kFC.js";
40
40
  import "./pi-tools.policy-CU8U7--z.js";
41
41
  import "./skill-scanner-EhsZUzzk.js";
42
- import { a as collectIncludePathsRecursive, i as formatIcaclsResetCommand, r as createIcaclsResetCommand, t as runSecurityAudit } from "./audit-DJURK8ly.js";
42
+ import { a as collectIncludePathsRecursive, i as formatIcaclsResetCommand, r as createIcaclsResetCommand, t as runSecurityAudit } from "./audit-B1fVD2bA.js";
43
43
  import "./dm-policy-shared-EuuPwRNE.js";
44
44
  import path from "node:path";
45
45
  import fs from "node:fs/promises";
@@ -35,8 +35,8 @@ import "./message-channel-DgjXWzf-.js";
35
35
  import "./plugins-CF5skkHh.js";
36
36
  import "./paths-BtvQ7JvU.js";
37
37
  import "./commands-DUzLGgEZ.js";
38
- import "./client-BfnNfATE.js";
39
- import "./call-BC1HAVqW.js";
38
+ import "./client-DDqXo-cF.js";
39
+ import "./call-PpGwcPn-.js";
40
40
  import "./pairing-token-Dcy37-4s.js";
41
41
  import "./workspace-dirs-jKFQf7of.js";
42
42
  import { i as readChannelAllowFromStore } from "./pairing-store-BNhJOnWn.js";
@@ -44,7 +44,7 @@ import { t as formatDocsLink } from "./links-CQZxjjCO.js";
44
44
  import { t as formatHelpExamples } from "./help-format-8IYCRvx1.js";
45
45
  import "./pi-tools.policy-WaLKhqJQ.js";
46
46
  import "./skill-scanner-D5p8L-xO.js";
47
- import { a as collectIncludePathsRecursive, i as formatIcaclsResetCommand, r as createIcaclsResetCommand, t as runSecurityAudit } from "./audit-BPhWpe_6.js";
47
+ import { a as collectIncludePathsRecursive, i as formatIcaclsResetCommand, r as createIcaclsResetCommand, t as runSecurityAudit } from "./audit-BQnxE5w6.js";
48
48
  import "./dm-policy-shared-BUwZ6Ajx.js";
49
49
  import path from "node:path";
50
50
  import fs from "node:fs/promises";
@@ -7,13 +7,13 @@ import { n as normalizeSecretInput } from "./normalize-secret-input-8lcBtVEy.js"
7
7
  import { i as loadWorkspaceSkillEntries } from "./skills-cLBEdkqu.js";
8
8
  import { t as buildWorkspaceSkillStatus } from "./skills-status-g3ssrjuX.js";
9
9
  import { N as VERSION, P as resolveRuntimeServiceVersion, T as applyLegacyMigrations, a as parseConfigJson5, c as resolveConfigSnapshotHash, d as SymiSchema, i as loadConfig, l as writeConfigFile, m as sensitive, o as readConfigFileSnapshot, s as readConfigFileSnapshotForWrite, u as validateConfigObjectWithPlugins, w as applyMergePatch } from "./config-D7TcU4qN.js";
10
- import { $ as validateNodeListParams, $t as summarizeDeviceTokens, A as validateCronRemoveParams, At as validateUpdateRunParams, B as validateDeviceTokenRotateParams, Bt as errorShape, C as validateConfigGetParams, Ct as validateSkillsBinsParams, Dt as validateTalkConfigParams, E as validateConfigSetParams, Et as validateSkillsUpdateParams, F as validateDevicePairApproveParams, Ft as validateWizardNextParams, G as validateExecApprovalsNodeSetParams, Ht as parseSessionLabel, I as validateDevicePairListParams, It as validateWizardStartParams, J as validateModelsListParams, Jt as rejectDevicePairing, K as validateExecApprovalsSetParams, L as validateDevicePairRejectParams, Lt as validateWizardStatusParams, M as validateCronRunsParams, Mt as validateWebLoginStartParams, N as validateCronStatusParams, Nt as validateWebLoginWaitParams, O as validateCronAddParams, Ot as validateTalkModeParams, P as validateCronUpdateParams, Pt as validateWizardCancelParams, Q as validateNodeInvokeResultParams, Qt as rotateDeviceToken, R as validateDevicePairRemoveParams, S as validateConfigApplyParams, St as validateSessionsUsageParams, T as validateConfigSchemaParams, Tt as validateSkillsStatusParams, U as validateExecApprovalsGetParams, W as validateExecApprovalsNodeGetParams, Wt as approveDevicePairing, X as validateNodeEventParams, Y as validateNodeDescribeParams, Yt as removePairedDevice, Z as validateNodeInvokeParams, Zt as revokeDeviceToken, _ as validateChatHistoryParams, _t as validateSessionsPreviewParams, a as validateAgentWaitParams, at as validateNodeRenameParams, b as validateChatSkillsListParams, bt as validateSessionsRestoreParams, c as validateAgentsFilesGetParams, d as validateAgentsListParams, dt as validateSessionsCompactParams, et as validateNodePairApproveParams, f as validateAgentsUpdateParams, ft as validateSessionsDeleteFileParams, g as validateChatCommandsListParams, gt as validateSessionsPatchParams, h as validateChatAbortParams, ht as validateSessionsListParams, i as validateAgentParams, it as validateNodePairVerifyParams, j as validateCronRunParams, jt as validateWakeParams, k as validateCronListParams, kt as validateTasksListParams, l as validateAgentsFilesListParams, lt as validateSendParams, m as validateChannelsStatusParams, mt as validateSessionsFavoriteFileParams, n as formatValidationErrors, nt as validateNodePairRejectParams, o as validateAgentsCreateParams, ot as validatePollParams, p as validateChannelsLogoutParams, pt as validateSessionsDeleteParams, q as validateLogsTailParams, qt as listDevicePairing, r as validateAgentIdentityParams, rt as validateNodePairRequestParams, s as validateAgentsDeleteParams, st as validatePushTestParams, tt as validateNodePairListParams, u as validateAgentsFilesSetParams, ut as validateSessionsAdoptFileParams, v as validateChatInjectParams, vt as validateSessionsResetParams, w as validateConfigPatchParams, wt as validateSkillsInstallParams, x as validateChatToolsListParams, xt as validateSessionsSearchParams, y as validateChatSendParams, yt as validateSessionsResolveParams, z as validateDeviceTokenRevokeParams, zt as ErrorCodes } from "./client-BcvL_D-H.js";
11
- import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-mzNPQq1S.js";
10
+ import { $ as validateNodeInvokeResultParams, $t as rotateDeviceToken, A as validateCronListParams, At as validateTasksListParams, B as validateDeviceTokenRevokeParams, Bt as ErrorCodes, C as validateConfigApplyParams, Ct as validateSessionsUsageParams, D as validateConfigSetParams, Dt as validateSkillsUpdateParams, E as validateConfigSchemaParams, Et as validateSkillsStatusParams, F as validateCronUpdateParams, Ft as validateWizardCancelParams, G as validateExecApprovalsNodeGetParams, Gt as approveDevicePairing, I as validateDevicePairApproveParams, It as validateWizardNextParams, J as validateLogsTailParams, Jt as listDevicePairing, K as validateExecApprovalsNodeSetParams, L as validateDevicePairListParams, Lt as validateWizardStartParams, M as validateCronRunParams, Mt as validateWakeParams, N as validateCronRunsParams, Nt as validateWebLoginStartParams, Ot as validateTalkConfigParams, P as validateCronStatusParams, Pt as validateWebLoginWaitParams, Q as validateNodeInvokeParams, Qt as revokeDeviceToken, R as validateDevicePairRejectParams, Rt as validateWizardStatusParams, S as validateChatToolsListParams, St as validateSessionsSearchParams, T as validateConfigPatchParams, Tt as validateSkillsInstallParams, Ut as parseSessionLabel, V as validateDeviceTokenRotateParams, Vt as errorShape, W as validateExecApprovalsGetParams, X as validateNodeDescribeParams, Xt as removePairedDevice, Y as validateModelsListParams, Yt as rejectDevicePairing, Z as validateNodeEventParams, _ as validateChatHistoryParams, _t as validateSessionsPatchParams, a as validateAgentWaitParams, at as validateNodePairVerifyParams, b as validateChatSkillsListParams, bt as validateSessionsResolveParams, c as validateAgentsFilesGetParams, ct as validatePushTestParams, d as validateAgentsListParams, dt as validateSessionsAdoptFileParams, en as summarizeDeviceTokens, et as validateNodeListParams, f as validateAgentsUpdateParams, ft as validateSessionsCompactParams, g as validateChatCommandsListParams, gt as validateSessionsListParams, h as validateChatAbortParams, ht as validateSessionsFavoriteFileParams, i as validateAgentParams, it as validateNodePairRequestParams, j as validateCronRemoveParams, jt as validateUpdateRunParams, k as validateCronAddParams, kt as validateTalkModeParams, l as validateAgentsFilesListParams, m as validateChannelsStatusParams, mt as validateSessionsDeleteParams, n as formatValidationErrors, nt as validateNodePairListParams, o as validateAgentsCreateParams, ot as validateNodeRenameParams, p as validateChannelsLogoutParams, pt as validateSessionsDeleteFileParams, q as validateExecApprovalsSetParams, r as validateAgentIdentityParams, rt as validateNodePairRejectParams, s as validateAgentsDeleteParams, st as validatePollParams, tt as validateNodePairApproveParams, u as validateAgentsFilesSetParams, ut as validateSendParams, v as validateChatInjectParams, vt as validateSessionsPreviewParams, w as validateConfigGetParams, wt as validateSkillsBinsParams, x as validateChatSymframePushParams, xt as validateSessionsRestoreParams, y as validateChatSendParams, yt as validateSessionsResetParams, z as validateDevicePairRemoveParams } from "./client-CdiymIXS.js";
11
+ import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-A18kwyah.js";
12
12
  import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, i as isGatewayMessageChannel, l as normalizeMessageChannel, n as isDeliverableMessageChannel, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-DXToSaWK.js";
13
13
  import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-B-OTYROz.js";
14
14
  import { s as pickPrimaryLanIPv4 } from "./net-TZUXtwGR.js";
15
15
  import { i as normalizeInputProvenance } from "./input-provenance-BdV0rbga.js";
16
- import { C as buildGlassUiProfile, Dt as scheduleGatewaySigusr1Restart, E as abortEmbeddedPiRun, En as registerAgentRunContext, Ft as normalizeSendPolicy, G as normalizePollInput, H as resolveOutboundSessionRoute, Ht as applyVerboseOverride, It as resolveSendPolicy, L as listTasksInWorkdir, N as buildAgentTurnParams, O as waitForEmbeddedPiRunEnd, P as prepareReplyTurn, Tn as onAgentEvent, U as resolveOutboundTarget, Ut as parseVerboseOverride, V as ensureOutboundSessionEntry, Vt as applyModelOverrideToSessionEntry, a as listSubagentRunsForRequester, c as clearSessionQueues, cn as stopSubagentsForRequester, et as normalizeCronJobCreate, i as listDescendantRunsForRequester, in as normalizeGroupActivation, m as loadSymiPlugins, nn as prepareAgentRun, on as formatZonedTimestamp, pn as resolveUserTimezone, rn as BARE_SESSION_RESET_PROMPT, sn as isAbortTrigger, tn as resolveAgentTimeoutMs, tt as normalizeCronJobPatch, vt as applyBrowserProxyPaths, w as runUnifiedTurn, x as createReplyDispatcher, y as getChannelActivity, yt as persistBrowserProxyFiles } from "./subagent-registry-4qeNm1OL.js";
16
+ import { C as buildGlassUiProfile, Dt as scheduleGatewaySigusr1Restart, E as abortEmbeddedPiRun, En as registerAgentRunContext, Ft as normalizeSendPolicy, G as normalizePollInput, H as resolveOutboundSessionRoute, Ht as applyVerboseOverride, It as resolveSendPolicy, L as listTasksInWorkdir, N as buildAgentTurnParams, O as waitForEmbeddedPiRunEnd, P as prepareReplyTurn, Tn as onAgentEvent, U as resolveOutboundTarget, Ut as parseVerboseOverride, V as ensureOutboundSessionEntry, Vt as applyModelOverrideToSessionEntry, a as listSubagentRunsForRequester, c as clearSessionQueues, cn as stopSubagentsForRequester, et as normalizeCronJobCreate, i as listDescendantRunsForRequester, in as normalizeGroupActivation, m as loadSymiPlugins, nn as prepareAgentRun, on as formatZonedTimestamp, pn as resolveUserTimezone, rn as BARE_SESSION_RESET_PROMPT, sn as isAbortTrigger, tn as resolveAgentTimeoutMs, tt as normalizeCronJobPatch, vt as applyBrowserProxyPaths, w as runUnifiedTurn, x as createReplyDispatcher, y as getChannelActivity, yt as persistBrowserProxyFiles } from "./subagent-registry-SZbZfkbr.js";
17
17
  import { F as resolveMainSessionKey, I as resolveMainSessionKeyFromConfig, J as normalizeSessionDeliveryFields, N as resolveAgentMainSessionKey, P as resolveExplicitAgentSessionKey, R as snapshotSessionOrigin, S as stripEnvelopeFromMessages, _ as capArrayByJsonBytes, d as updateSessionStore, g as archiveSessionTranscripts, h as archiveFileOnDisk, o as loadSessionStore, t as extractDeliveryInfo, v as readSessionMessages, x as resolveSessionTranscriptCandidates, y as readSessionPreviewItemsFromTranscript } from "./sessions-Dn6VXn4p.js";
18
18
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BsEhWvLn.js";
19
19
  import { n as createBrowserRouteDispatcher } from "./with-timeout-B0ZJa7f2.js";
@@ -22,7 +22,7 @@ import { t as movePathToTrash } from "./trash-Bx4LIudf.js";
22
22
  import { c as resolveStorePath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-DtiEyjsC.js";
23
23
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-BZDIJMl_.js";
24
24
  import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-DV3KhOhL.js";
25
- import { t as getMemorySearchManager } from "./memory-CkJCn1Gg.js";
25
+ import { t as getMemorySearchManager } from "./memory-BcdI7NSs.js";
26
26
  import { c as approveNodePairing, d as renamePairedNode, f as requestNodePairing, l as listNodePairing, m as verifyNodeToken, t as getRemoteSkillEligibility, u as rejectNodePairing } from "./skills-remote-DSGpkPJE.js";
27
27
  import { g as isSystemEventContextChanged, h as enqueueSystemEvent, i as formatDoctorNonInteractiveHint, l as writeRestartSentinel, u as loadProviderUsageSummary } from "./redact-identifier-BOxAUdff.js";
28
28
  import { t as listAgentWorkspaceDirs } from "./workspace-dirs-wlRR65M3.js";
@@ -35,13 +35,13 @@ import { t as buildChannelUiCatalog } from "./catalog-BaM8d1-T.js";
35
35
  import { t as WizardCancelledError } from "./prompts-CqJkfsHC.js";
36
36
  import { t as resolveChannelDefaultAccountId } from "./helpers-CoScWBmD.js";
37
37
  import { t as buildChannelAccountSnapshot } from "./status-DtyqId3v.js";
38
- import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-DahbbzzQ.js";
39
- import { c as resolveNodeCommandAllowlist, s as isNodeCommandAllowed } from "./audit-DJURK8ly.js";
40
- import { r as getStatusSummary } from "./status-CYqfS1u_.js";
38
+ import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-CAAZ0RDq.js";
39
+ import { c as resolveNodeCommandAllowlist, s as isNodeCommandAllowed } from "./audit-B1fVD2bA.js";
40
+ import { r as getStatusSummary } from "./status-1ACP62Xm.js";
41
41
  import { r as createOutboundSendDeps } from "./outbound-send-deps-JQjmNLPx.js";
42
42
  import { m as normalizeUpdateChannel } from "./update-check-A86nJKtZ.js";
43
- import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-Bx0i-bNw.js";
44
- import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-Cq8f1rHB.js";
43
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-BWeNJb15.js";
44
+ import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-RWZSPbLw.js";
45
45
  import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-Cyc_RegL.js";
46
46
  import { t as resolveSystemRunCommand } from "./system-run-command-2oJPKfVr.js";
47
47
  import { t as installSkill } from "./skills-install-QOHQrX6P.js";
@@ -4223,7 +4223,7 @@ const chatHandlers = {
4223
4223
  }
4224
4224
  (async () => {
4225
4225
  try {
4226
- const [{ createSymiTools }, { loadConfig }] = await Promise.all([import("./subagent-registry-4qeNm1OL.js").then((n) => n.I), import("./config-D7TcU4qN.js").then((n) => n.t)]);
4226
+ const [{ createSymiTools }, { loadConfig }] = await Promise.all([import("./subagent-registry-SZbZfkbr.js").then((n) => n.I), import("./config-D7TcU4qN.js").then((n) => n.t)]);
4227
4227
  respond(true, { tools: createSymiTools({ config: loadConfig() }).map((tool) => {
4228
4228
  const name = tool.name;
4229
4229
  const description = tool.description;
@@ -4262,6 +4262,31 @@ const chatHandlers = {
4262
4262
  }
4263
4263
  })();
4264
4264
  },
4265
+ "chat.symframe.push": ({ params, respond, context }) => {
4266
+ if (!validateChatSymframePushParams(params)) {
4267
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, `invalid chat.symframe.push params: ${formatValidationErrors(validateChatSymframePushParams.errors)}`));
4268
+ return;
4269
+ }
4270
+ const typed = params;
4271
+ if (typed.action === "add" && !typed.card) {
4272
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "chat.symframe.push: add requires `card`"));
4273
+ return;
4274
+ }
4275
+ if (typed.action === "update" && (!typed.id || !typed.card)) {
4276
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "chat.symframe.push: update requires `id` and `card`"));
4277
+ return;
4278
+ }
4279
+ if (typed.action === "remove" && !typed.id) {
4280
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "chat.symframe.push: remove requires `id`"));
4281
+ return;
4282
+ }
4283
+ context.broadcast("symframe", {
4284
+ action: typed.action,
4285
+ id: typed.id,
4286
+ card: typed.card
4287
+ });
4288
+ respond(true, { ok: true }, void 0);
4289
+ },
4265
4290
  "chat.abort": ({ params, respond, context }) => {
4266
4291
  if (!validateChatAbortParams(params)) {
4267
4292
  respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, `invalid chat.abort params: ${formatValidationErrors(validateChatAbortParams.errors)}`));
@@ -7510,7 +7535,7 @@ const nodeHandlers = {
7510
7535
  const p = params;
7511
7536
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
7512
7537
  await respondUnavailableOnThrow(respond, async () => {
7513
- const { handleNodeEvent } = await import("./server-node-events-Dp9EiddI.js");
7538
+ const { handleNodeEvent } = await import("./server-node-events-CRYzL3TY.js");
7514
7539
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
7515
7540
  await handleNodeEvent({
7516
7541
  deps: context.deps,
@@ -1,4 +1,4 @@
1
- import { D as ensureOutboundSessionEntry, Ft as normalizeGroupActivation, I as normalizeCronJobCreate, Kt as resolveAgentTimeoutMs, L as normalizeCronJobPatch, Lt as formatZonedTimestamp, Nt as prepareAgentRun, O as resolveOutboundSessionRoute, Pt as BARE_SESSION_RESET_PROMPT, Rt as isAbortTrigger, St as parseVerboseOverride, Ut as listDescendantRunsForRequester, Wt as listSubagentRunsForRequester, Zt as clearSessionQueues, b as prepareReplyTurn, bt as applyModelOverrideToSessionEntry, et as applyBrowserProxyPaths, f as getChannelActivity, g as buildGlassUiProfile, ht as resolveSendPolicy, in as abortEmbeddedPiRun, j as normalizePollInput, k as resolveOutboundTarget, m as createReplyDispatcher, mt as normalizeSendPolicy, nn as registerAgentRunContext, on as waitForEmbeddedPiRunEnd, pn as resolveUserTimezone, s as loadSymiPlugins, st as scheduleGatewaySigusr1Restart, tn as onAgentEvent, tt as persistBrowserProxyFiles, v as runUnifiedTurn, w as listTasksInWorkdir, xt as applyVerboseOverride, y as buildAgentTurnParams, zt as stopSubagentsForRequester } from "./unified-runner-D9LZYzyF.js";
1
+ import { D as ensureOutboundSessionEntry, Ft as normalizeGroupActivation, I as normalizeCronJobCreate, Kt as resolveAgentTimeoutMs, L as normalizeCronJobPatch, Lt as formatZonedTimestamp, Nt as prepareAgentRun, O as resolveOutboundSessionRoute, Pt as BARE_SESSION_RESET_PROMPT, Rt as isAbortTrigger, St as parseVerboseOverride, Ut as listDescendantRunsForRequester, Wt as listSubagentRunsForRequester, Zt as clearSessionQueues, b as prepareReplyTurn, bt as applyModelOverrideToSessionEntry, et as applyBrowserProxyPaths, f as getChannelActivity, g as buildGlassUiProfile, ht as resolveSendPolicy, in as abortEmbeddedPiRun, j as normalizePollInput, k as resolveOutboundTarget, m as createReplyDispatcher, mt as normalizeSendPolicy, nn as registerAgentRunContext, on as waitForEmbeddedPiRunEnd, pn as resolveUserTimezone, s as loadSymiPlugins, st as scheduleGatewaySigusr1Restart, tn as onAgentEvent, tt as persistBrowserProxyFiles, v as runUnifiedTurn, w as listTasksInWorkdir, xt as applyVerboseOverride, y as buildAgentTurnParams, zt as stopSubagentsForRequester } from "./unified-runner-B0cMr4If.js";
2
2
  import { H as createInternalHookEvent, P as getResolvedLoggerSettings, W as triggerInternalHook, d as getActivePluginRegistry, r as DEFAULT_CHAT_CHANNEL } from "./registry-Sbac4a4z.js";
3
3
  import { _ as resolveStateDir, t as CONFIG_PATH } from "./paths-By0XjHBk.js";
4
4
  import { S as isPlainObject, h as resolveUserPath, n as clamp } from "./utils-CTPsqyE_.js";
@@ -23,9 +23,9 @@ import { i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSe
23
23
  import { C as enqueueSystemEvent, _ as loadProviderUsageSummary, a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, d as formatDoctorNonInteractiveHint, g as writeRestartSentinel, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, w as isSystemEventContextChanged } from "./session-utils-Cs1jlD-q.js";
24
24
  import { n as createBrowserRouteDispatcher } from "./with-timeout-GbJ1Yzsh.js";
25
25
  import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-BFNeXT65.js";
26
- import { t as getMemorySearchManager } from "./memory-B2hM774N.js";
27
- import { $ as validateNodeListParams, $t as summarizeDeviceTokens, A as validateCronRemoveParams, At as validateUpdateRunParams, B as validateDeviceTokenRotateParams, Bt as errorShape, C as validateConfigGetParams, Ct as validateSkillsBinsParams, Dt as validateTalkConfigParams, E as validateConfigSetParams, Et as validateSkillsUpdateParams, F as validateDevicePairApproveParams, Ft as validateWizardNextParams, G as validateExecApprovalsNodeSetParams, Ht as parseSessionLabel, I as validateDevicePairListParams, It as validateWizardStartParams, J as validateModelsListParams, Jt as rejectDevicePairing, K as validateExecApprovalsSetParams, L as validateDevicePairRejectParams, Lt as validateWizardStatusParams, M as validateCronRunsParams, Mt as validateWebLoginStartParams, N as validateCronStatusParams, Nt as validateWebLoginWaitParams, O as validateCronAddParams, Ot as validateTalkModeParams, P as validateCronUpdateParams, Pt as validateWizardCancelParams, Q as validateNodeInvokeResultParams, Qt as rotateDeviceToken, R as validateDevicePairRemoveParams, S as validateConfigApplyParams, St as validateSessionsUsageParams, T as validateConfigSchemaParams, Tt as validateSkillsStatusParams, U as validateExecApprovalsGetParams, W as validateExecApprovalsNodeGetParams, Wt as approveDevicePairing, X as validateNodeEventParams, Y as validateNodeDescribeParams, Yt as removePairedDevice, Z as validateNodeInvokeParams, Zt as revokeDeviceToken, _ as validateChatHistoryParams, _t as validateSessionsPreviewParams, a as validateAgentWaitParams, at as validateNodeRenameParams, b as validateChatSkillsListParams, bt as validateSessionsRestoreParams, c as validateAgentsFilesGetParams, d as validateAgentsListParams, dt as validateSessionsCompactParams, et as validateNodePairApproveParams, f as validateAgentsUpdateParams, ft as validateSessionsDeleteFileParams, g as validateChatCommandsListParams, gt as validateSessionsPatchParams, h as validateChatAbortParams, ht as validateSessionsListParams, i as validateAgentParams, it as validateNodePairVerifyParams, j as validateCronRunParams, jt as validateWakeParams, k as validateCronListParams, kt as validateTasksListParams, l as validateAgentsFilesListParams, lt as validateSendParams, m as validateChannelsStatusParams, mt as validateSessionsFavoriteFileParams, n as formatValidationErrors, nt as validateNodePairRejectParams, o as validateAgentsCreateParams, ot as validatePollParams, p as validateChannelsLogoutParams, pt as validateSessionsDeleteParams, q as validateLogsTailParams, qt as listDevicePairing, r as validateAgentIdentityParams, rt as validateNodePairRequestParams, s as validateAgentsDeleteParams, st as validatePushTestParams, tt as validateNodePairListParams, u as validateAgentsFilesSetParams, ut as validateSessionsAdoptFileParams, v as validateChatInjectParams, vt as validateSessionsResetParams, w as validateConfigPatchParams, wt as validateSkillsInstallParams, x as validateChatToolsListParams, xt as validateSessionsSearchParams, y as validateChatSendParams, yt as validateSessionsResolveParams, z as validateDeviceTokenRevokeParams, zt as ErrorCodes } from "./client-BfnNfATE.js";
28
- import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-BC1HAVqW.js";
26
+ import { t as getMemorySearchManager } from "./memory-DBx1wEvf.js";
27
+ import { $ as validateNodeInvokeResultParams, $t as rotateDeviceToken, A as validateCronListParams, At as validateTasksListParams, B as validateDeviceTokenRevokeParams, Bt as ErrorCodes, C as validateConfigApplyParams, Ct as validateSessionsUsageParams, D as validateConfigSetParams, Dt as validateSkillsUpdateParams, E as validateConfigSchemaParams, Et as validateSkillsStatusParams, F as validateCronUpdateParams, Ft as validateWizardCancelParams, G as validateExecApprovalsNodeGetParams, Gt as approveDevicePairing, I as validateDevicePairApproveParams, It as validateWizardNextParams, J as validateLogsTailParams, Jt as listDevicePairing, K as validateExecApprovalsNodeSetParams, L as validateDevicePairListParams, Lt as validateWizardStartParams, M as validateCronRunParams, Mt as validateWakeParams, N as validateCronRunsParams, Nt as validateWebLoginStartParams, Ot as validateTalkConfigParams, P as validateCronStatusParams, Pt as validateWebLoginWaitParams, Q as validateNodeInvokeParams, Qt as revokeDeviceToken, R as validateDevicePairRejectParams, Rt as validateWizardStatusParams, S as validateChatToolsListParams, St as validateSessionsSearchParams, T as validateConfigPatchParams, Tt as validateSkillsInstallParams, Ut as parseSessionLabel, V as validateDeviceTokenRotateParams, Vt as errorShape, W as validateExecApprovalsGetParams, X as validateNodeDescribeParams, Xt as removePairedDevice, Y as validateModelsListParams, Yt as rejectDevicePairing, Z as validateNodeEventParams, _ as validateChatHistoryParams, _t as validateSessionsPatchParams, a as validateAgentWaitParams, at as validateNodePairVerifyParams, b as validateChatSkillsListParams, bt as validateSessionsResolveParams, c as validateAgentsFilesGetParams, ct as validatePushTestParams, d as validateAgentsListParams, dt as validateSessionsAdoptFileParams, en as summarizeDeviceTokens, et as validateNodeListParams, f as validateAgentsUpdateParams, ft as validateSessionsCompactParams, g as validateChatCommandsListParams, gt as validateSessionsListParams, h as validateChatAbortParams, ht as validateSessionsFavoriteFileParams, i as validateAgentParams, it as validateNodePairRequestParams, j as validateCronRemoveParams, jt as validateUpdateRunParams, k as validateCronAddParams, kt as validateTalkModeParams, l as validateAgentsFilesListParams, m as validateChannelsStatusParams, mt as validateSessionsDeleteParams, n as formatValidationErrors, nt as validateNodePairListParams, o as validateAgentsCreateParams, ot as validateNodeRenameParams, p as validateChannelsLogoutParams, pt as validateSessionsDeleteFileParams, q as validateExecApprovalsSetParams, r as validateAgentIdentityParams, rt as validateNodePairRejectParams, s as validateAgentsDeleteParams, st as validatePollParams, tt as validateNodePairApproveParams, u as validateAgentsFilesSetParams, ut as validateSendParams, v as validateChatInjectParams, vt as validateSessionsPreviewParams, w as validateConfigGetParams, wt as validateSkillsBinsParams, x as validateChatSymframePushParams, xt as validateSessionsRestoreParams, y as validateChatSendParams, yt as validateSessionsResetParams, z as validateDevicePairRemoveParams } from "./client-DDqXo-cF.js";
28
+ import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-PpGwcPn-.js";
29
29
  import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-Dcy37-4s.js";
30
30
  import { c as approveNodePairing, d as renamePairedNode, f as requestNodePairing, l as listNodePairing, m as verifyNodeToken, t as getRemoteSkillEligibility, u as rejectNodePairing } from "./skills-remote-bz71Bstn.js";
31
31
  import { t as listAgentWorkspaceDirs } from "./workspace-dirs-jKFQf7of.js";
@@ -38,12 +38,12 @@ import { t as buildWorkspaceSkillStatus } from "./skills-status-6LVKpabC.js";
38
38
  import { t as WizardCancelledError } from "./prompts-B98rp78m.js";
39
39
  import { t as resolveChannelDefaultAccountId } from "./helpers-BnXDQL2q.js";
40
40
  import { t as buildChannelAccountSnapshot } from "./status-dOhj12u0.js";
41
- import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-Bf1LB5fd.js";
42
- import { c as resolveNodeCommandAllowlist, s as isNodeCommandAllowed } from "./audit-BPhWpe_6.js";
43
- import { n as getStatusSummary } from "./status-D3h1mSLx.js";
41
+ import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-Cv6fL8Vq.js";
42
+ import { c as resolveNodeCommandAllowlist, s as isNodeCommandAllowed } from "./audit-BQnxE5w6.js";
43
+ import { n as getStatusSummary } from "./status-DbIBRkrV.js";
44
44
  import { m as normalizeUpdateChannel } from "./update-check-oEbS0voJ.js";
45
- import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns--j8PeFrK.js";
46
- import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-CSOQs4VQ.js";
45
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-CLngpXwL.js";
46
+ import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-Za31LZ2H.js";
47
47
  import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DK6nN-Qh.js";
48
48
  import { t as resolveSystemRunCommand } from "./system-run-command-D_OmCQOL.js";
49
49
  import { t as installSkill } from "./skills-install-X12kifP1.js";
@@ -4225,7 +4225,7 @@ const chatHandlers = {
4225
4225
  }
4226
4226
  (async () => {
4227
4227
  try {
4228
- const [{ createSymiTools }, { loadConfig }] = await Promise.all([import("./unified-runner-D9LZYzyF.js").then((n) => n.C), import("./config-B4jkreCN.js").then((n) => n.t)]);
4228
+ const [{ createSymiTools }, { loadConfig }] = await Promise.all([import("./unified-runner-B0cMr4If.js").then((n) => n.C), import("./config-B4jkreCN.js").then((n) => n.t)]);
4229
4229
  respond(true, { tools: createSymiTools({ config: loadConfig() }).map((tool) => {
4230
4230
  const name = tool.name;
4231
4231
  const description = tool.description;
@@ -4264,6 +4264,31 @@ const chatHandlers = {
4264
4264
  }
4265
4265
  })();
4266
4266
  },
4267
+ "chat.symframe.push": ({ params, respond, context }) => {
4268
+ if (!validateChatSymframePushParams(params)) {
4269
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, `invalid chat.symframe.push params: ${formatValidationErrors(validateChatSymframePushParams.errors)}`));
4270
+ return;
4271
+ }
4272
+ const typed = params;
4273
+ if (typed.action === "add" && !typed.card) {
4274
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "chat.symframe.push: add requires `card`"));
4275
+ return;
4276
+ }
4277
+ if (typed.action === "update" && (!typed.id || !typed.card)) {
4278
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "chat.symframe.push: update requires `id` and `card`"));
4279
+ return;
4280
+ }
4281
+ if (typed.action === "remove" && !typed.id) {
4282
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "chat.symframe.push: remove requires `id`"));
4283
+ return;
4284
+ }
4285
+ context.broadcast("symframe", {
4286
+ action: typed.action,
4287
+ id: typed.id,
4288
+ card: typed.card
4289
+ });
4290
+ respond(true, { ok: true }, void 0);
4291
+ },
4267
4292
  "chat.abort": ({ params, respond, context }) => {
4268
4293
  if (!validateChatAbortParams(params)) {
4269
4294
  respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, `invalid chat.abort params: ${formatValidationErrors(validateChatAbortParams.errors)}`));
@@ -7512,7 +7537,7 @@ const nodeHandlers = {
7512
7537
  const p = params;
7513
7538
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
7514
7539
  await respondUnavailableOnThrow(respond, async () => {
7515
- const { handleNodeEvent } = await import("./server-node-events-k7h7NWLL.js");
7540
+ const { handleNodeEvent } = await import("./server-node-events-CW5ilXPN.js");
7516
7541
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
7517
7542
  await handleNodeEvent({
7518
7543
  deps: context.deps,