@symerian/symi 3.5.8 → 3.5.10

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 (190) hide show
  1. package/dist/{agent-BCszhl_7.js → agent-CSOQs4VQ.js} +1 -1
  2. package/dist/{agent-Cmx-1Tfs.js → agent-Cq8f1rHB.js} +1 -1
  3. package/dist/{agent-scope-DnJEvgMH.js → agent-scope-B1Ina6jV.js} +2 -2
  4. package/dist/{agents-BkTzJJ83.js → agents-BiKiy1SO.js} +3 -3
  5. package/dist/{audit-Bk6kay2Z.js → audit-BPhWpe_6.js} +2 -2
  6. package/dist/{audit-CtrXFZb5.js → audit-DJURK8ly.js} +2 -2
  7. package/dist/{auth-choice-D-iIJjJY.js → auth-choice-9XyVfAyH.js} +2 -2
  8. package/dist/{auth-choice-CucG4Wor.js → auth-choice-BYOypIGE.js} +2 -2
  9. package/dist/{auth-profiles-DVc0P8H7.js → auth-profiles-BSw0aQND.js} +3 -3
  10. package/dist/{banner-CApT91CY.js → banner-BDexjPFs.js} +1 -1
  11. package/dist/{browser-cli-rZb2WjFF.js → browser-cli-BT0akXlr.js} +3 -3
  12. package/dist/{browser-cli-DGjYBquX.js → browser-cli-BxDx4t2-.js} +3 -3
  13. package/dist/build-info.json +3 -3
  14. package/dist/bundled/boot-md/handler.js +31 -31
  15. package/dist/bundled/bootstrap-extra-files/handler.js +4 -4
  16. package/dist/bundled/session-memory/handler.js +30 -30
  17. package/dist/{call-DKQC0JT1.js → call-BC1HAVqW.js} +2 -1
  18. package/dist/{call-ogggp9QZ.js → call-mzNPQq1S.js} +2 -1
  19. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  20. package/dist/{channel-options-CdIEyHya.js → channel-options-BjgoCETm.js} +1 -1
  21. package/dist/{channel-options-DYh8mLMN.js → channel-options-Cy9aQzx9.js} +1 -1
  22. package/dist/{channels-cli-Bb18aE2b.js → channels-cli-DokpJOeN.js} +11 -11
  23. package/dist/{channels-cli-sG9Wf2LH.js → channels-cli-R0UMOKTA.js} +11 -11
  24. package/dist/{chrome-Bu0sk8jc.js → chrome-OTJg3QKn.js} +3 -3
  25. package/dist/{chunk-DBVjqPm2.js → chunk-BkYIP_hB.js} +1 -1
  26. package/dist/{cli-DtdTf-ZQ.js → cli-BnLVnWOZ.js} +8 -8
  27. package/dist/{cli-DEGt0Tp0.js → cli-ay-COtm8.js} +8 -8
  28. package/dist/{client-DhdWcgZP.js → client-BcvL_D-H.js} +3 -1
  29. package/dist/{client-B9E9fdCA.js → client-BfnNfATE.js} +3 -1
  30. package/dist/{command-registry-O155hUhR.js → command-registry-CjxdlqkY.js} +11 -11
  31. package/dist/{commands-registry-yWbIOOoD.js → commands-registry-7vX6rnw_.js} +6 -5
  32. package/dist/{commands-registry-DG2kGyg5.js → commands-registry-CX-kLuQz.js} +2 -1
  33. package/dist/{commands-registry-C2Hvwjym.js → commands-registry-Ca5hh7nh.js} +2 -1
  34. package/dist/{commands-registry-CJPBJPlh.js → commands-registry-D8LQ9fss.js} +2 -1
  35. package/dist/{completion-cli-BaOjuoPX.js → completion-cli-D2pLg5yF.js} +2 -2
  36. package/dist/{completion-cli-DLUKoSIx.js → completion-cli-kGAGMr-I.js} +1 -1
  37. package/dist/{config-cli-BxWavRxN.js → config-cli-BAognmPE.js} +1 -1
  38. package/dist/{config-cli-BuZ-L1Iw.js → config-cli-D12Nouyy.js} +1 -1
  39. package/dist/{configure-gxAEhC9E.js → configure-B8-2sqW3.js} +6 -6
  40. package/dist/{configure-BSKWgEhS.js → configure-CJp0NIbm.js} +6 -6
  41. package/dist/{consolidate-JptFSFxz.js → consolidate-Dyh_aESo.js} +2 -2
  42. package/dist/control-ui/index.html +74 -74
  43. package/dist/control-ui/js/slash-autocomplete.js +109 -29
  44. package/dist/{cron-cli-L4iwVTNV.js → cron-cli-BJzi2QtY.js} +3 -3
  45. package/dist/{cron-cli-DtDqHIZn.js → cron-cli-DoXlzwQ0.js} +3 -3
  46. package/dist/{daemon-cli-B5TdtWCQ.js → daemon-cli-CRGNFCN7.js} +2 -2
  47. package/dist/{daemon-cli-39fFIU2G.js → daemon-cli-DXHRewv8.js} +2 -2
  48. package/dist/daemon-cli.js +3 -0
  49. package/dist/{deliver-BZ-5d1Pv.js → deliver-BiWlR84Y.js} +15 -15
  50. package/dist/{devices-cli-Ec6d58OB.js → devices-cli-DAG-TaOo.js} +2 -2
  51. package/dist/{devices-cli-DuVhACtW.js → devices-cli-YdVaVQkF.js} +2 -2
  52. package/dist/{diagnostic-BlK1QQVx.js → diagnostic-BALvP9wI.js} +1 -1
  53. package/dist/{doctor-completion-wlBp8bv7.js → doctor-completion-Ca692KiP.js} +1 -1
  54. package/dist/{doctor-completion-BzfgfpBH.js → doctor-completion-CmKOsLDy.js} +1 -1
  55. package/dist/entry.js +1 -1
  56. package/dist/{exec-approvals-cli-1K1PMf0f.js → exec-approvals-cli-BuHNELGd.js} +4 -4
  57. package/dist/{exec-approvals-cli-N45JsIvc.js → exec-approvals-cli-Cnie7kMb.js} +4 -4
  58. package/dist/extensionAPI.js +4 -4
  59. package/dist/{frontmatter-Dm9ehpNF.js → frontmatter-CJEX1BrH.js} +2 -2
  60. package/dist/{gateway-cli-Bz5fqsnE.js → gateway-cli-CvzoUDQs.js} +18 -18
  61. package/dist/{gateway-cli-_xNZ2L_e.js → gateway-cli-zh8P3vbG.js} +18 -18
  62. package/dist/{gateway-rpc-c2_A2rwu.js → gateway-rpc-CIHuIeji.js} +1 -1
  63. package/dist/{gateway-rpc-gDrdC_J6.js → gateway-rpc-st8ffJBC.js} +1 -1
  64. package/dist/{glass-ui-ws-CbKVlQRh.js → glass-ui-ws-DCXg7AbP.js} +15 -15
  65. package/dist/{glass-ui-ws-DO8WKPIK.js → glass-ui-ws-QqYp-Uof.js} +15 -15
  66. package/dist/{health-B5BrlZ8G.js → health-BIwN5H6b.js} +1 -1
  67. package/dist/{health-B7yvi1O9.js → health-BaYDaHPT.js} +1 -1
  68. package/dist/{hooks-cli-CrgD2ZqP.js → hooks-cli-CJ0OoLFk.js} +9 -9
  69. package/dist/{hooks-cli-mwiHuRfO.js → hooks-cli-ClMPrbD7.js} +9 -9
  70. package/dist/index.js +12 -12
  71. package/dist/llm-slug-generator.js +30 -30
  72. package/dist/{local-roots-Ab2ch8iw.js → local-roots-C7fBKoOI.js} +3 -3
  73. package/dist/{logs-cli-DvbMaSKU.js → logs-cli-CK9YhKnf.js} +3 -3
  74. package/dist/{logs-cli-T5v8efuM.js → logs-cli-D8A5dpnm.js} +3 -3
  75. package/dist/{manager-CvqH_tah.js → manager-807ZlqEf.js} +1 -1
  76. package/dist/{manager-_ZfCrpDq.js → manager-B4U7ahZq.js} +8 -8
  77. package/dist/{manager-CnBU0aOR.js → manager-Ct4kRT7n.js} +1 -1
  78. package/dist/{manager-BVPXSK-I.js → manager-Dh_-GTcG.js} +1 -1
  79. package/dist/{manifest-registry-B1g2QOPw.js → manifest-registry-BGJu2aC-.js} +1 -1
  80. package/dist/{markdown-tables-CVcd6XRG.js → markdown-tables-CGqX2WvO.js} +1 -1
  81. package/dist/{memory-BsGfHO_F.js → memory-B2hM774N.js} +2 -2
  82. package/dist/{memory-CbwmxmxW.js → memory-CkJCn1Gg.js} +2 -2
  83. package/dist/{memory-cli-B1dFPZw-.js → memory-cli-C3CONZGB.js} +2 -2
  84. package/dist/{memory-cli-BwQsPEFk.js → memory-cli-CPebu_bx.js} +2 -2
  85. package/dist/{model-selection-C_XFh0kf.js → model-selection-BqshlIZc.js} +1 -1
  86. package/dist/{models-Dm6dSSSx.js → models-Cbad7KB1.js} +3 -3
  87. package/dist/{models-cli-BA6ufqLd.js → models-cli-B_U9E8SV.js} +10 -10
  88. package/dist/{models-cli-BPSrz6tf.js → models-cli-C1yhTK5G.js} +11 -11
  89. package/dist/{node-cli-2HDdeLgi.js → node-cli-CFIBFPOd.js} +1 -1
  90. package/dist/{node-cli-CH1yLZuO.js → node-cli-Cmfs9las.js} +1 -1
  91. package/dist/{nodes-cli-DIm6cMS_.js → nodes-cli-BH1TUf3n.js} +3 -3
  92. package/dist/{nodes-cli-ARs9ZPma.js → nodes-cli-DlkO0Hyw.js} +3 -3
  93. package/dist/{onboard-CjnPughY.js → onboard-8eYravsD.js} +3 -3
  94. package/dist/{onboard-Cmz6Rtm-.js → onboard-CWNtW-LS.js} +3 -3
  95. package/dist/{onboard-channels-Cozz3CQv.js → onboard-channels-BRi2UP_-.js} +1 -1
  96. package/dist/{onboard-channels-D00NAtQt.js → onboard-channels-DPzbq3iB.js} +1 -1
  97. package/dist/{onboard-helpers-BKfeJ1xj.js → onboard-helpers-Bf1LB5fd.js} +1 -1
  98. package/dist/{onboard-helpers-CCI7SimM.js → onboard-helpers-DahbbzzQ.js} +1 -1
  99. package/dist/{onboard-remote-DKXBH_lQ.js → onboard-remote-B6Ox0wMi.js} +1 -1
  100. package/dist/{onboard-remote-D4R-Yq2Q.js → onboard-remote-BgDE1b8f.js} +1 -1
  101. package/dist/{onboard-skills-jVyIFojF.js → onboard-skills-D-ppyTcQ.js} +1 -1
  102. package/dist/{onboard-skills-BPmu8XLA.js → onboard-skills-V1IT5l9E.js} +1 -1
  103. package/dist/{onboarding-BPZb40BJ.js → onboarding-Cw8abFVd.js} +7 -7
  104. package/dist/{onboarding-BrTMOcPF.js → onboarding-D35WPHUd.js} +7 -7
  105. package/dist/{onboarding.finalize-BiL_LXrR.js → onboarding.finalize-BStHm3Q-.js} +10 -10
  106. package/dist/{onboarding.finalize-Bd2rGMjo.js → onboarding.finalize-C50T8L4e.js} +9 -9
  107. package/dist/{onboarding.gateway-config-B301LxTx.js → onboarding.gateway-config-D6xPpItN.js} +3 -3
  108. package/dist/{onboarding.gateway-config-ChCxv8dy.js → onboarding.gateway-config-DJ1YAlBD.js} +3 -3
  109. package/dist/{pi-auth-json-BxGRaPJK.js → pi-auth-json-DCGR3yfh.js} +2 -2
  110. package/dist/{pi-embedded-C9wLrFjj.js → pi-embedded-BxKs-STI.js} +10 -7
  111. package/dist/{plugin-registry-BLoSesyj.js → plugin-registry-B9SUsQmV.js} +1 -1
  112. package/dist/{plugin-registry-CZDG8fjK.js → plugin-registry-BFyeIJdT.js} +1 -1
  113. package/dist/plugin-sdk/auto-reply/commands-registry.types.d.ts +8 -0
  114. package/dist/plugin-sdk/gateway/protocol/index.d.ts +5 -2
  115. package/dist/plugin-sdk/gateway/protocol/schema/logs-chat.d.ts +1 -0
  116. package/dist/{plugins-BcGFMr_d.js → plugins-B06cTFHC.js} +1 -1
  117. package/dist/{plugins-cli-2yraoR6V.js → plugins-cli-BTdd7aE9.js} +9 -9
  118. package/dist/{plugins-cli-CGs9-UtO.js → plugins-cli-DKEgD6T2.js} +9 -9
  119. package/dist/{program-BnKEJpZF.js → program-C668x3bd.js} +14 -14
  120. package/dist/{program-context-BvP9L_1W.js → program-context-CV_ibEw9.js} +29 -29
  121. package/dist/{prompt-select-styled-Brx330O3.js → prompt-select-styled-BlpvaJVg.js} +7 -7
  122. package/dist/{prompt-select-styled-BTF5vvv8.js → prompt-select-styled-G6u6Q8v9.js} +7 -7
  123. package/dist/{provider-auth-helpers-hjy3e-oS.js → provider-auth-helpers-DAtMFGrU.js} +1 -1
  124. package/dist/{provider-auth-helpers-CppzYZM9.js → provider-auth-helpers-R-cnIeud.js} +1 -1
  125. package/dist/{push-apns-DJ55TFPT.js → push-apns--j8PeFrK.js} +1 -1
  126. package/dist/{push-apns-BD2iO09c.js → push-apns-Bx0i-bNw.js} +1 -1
  127. package/dist/{pw-ai-B5v5n5ol.js → pw-ai-DY_6l11g.js} +9 -9
  128. package/dist/{qmd-manager-CM1Zb2vR.js → qmd-manager-Bc7yrt9d.js} +5 -5
  129. package/dist/{register.agent-DTGvQGla.js → register.agent-CYRt1iiv.js} +14 -14
  130. package/dist/{register.agent-Dz_P7PxO.js → register.agent-muhvyTMD.js} +13 -13
  131. package/dist/{register.configure-CrgU3FzU.js → register.configure-CsvtHB87.js} +16 -16
  132. package/dist/{register.configure-D9w7Tm9e.js → register.configure-DUaVY9dt.js} +16 -16
  133. package/dist/{register.maintenance-d5xHdDgu.js → register.maintenance-BrNuk6hl.js} +14 -14
  134. package/dist/{register.maintenance-CqvrXPF7.js → register.maintenance-DMLKAqqc.js} +15 -15
  135. package/dist/{register.message-C0tqgEor.js → register.message-9WxgUBSA.js} +9 -9
  136. package/dist/{register.message-DNMCxaAD.js → register.message-DZG9UElS.js} +9 -9
  137. package/dist/{register.onboard--eJVfJGa.js → register.onboard-Bpo5ofDH.js} +6 -6
  138. package/dist/{register.onboard-dkAvGraV.js → register.onboard-C-5RaI3-.js} +6 -6
  139. package/dist/{register.setup-Dwh0ylCS.js → register.setup-D87mlpLA.js} +6 -6
  140. package/dist/{register.setup-CgufX-6c.js → register.setup-DQXuZsGD.js} +6 -6
  141. package/dist/{register.status-health-sessions-BeAm7HAq.js → register.status-health-sessions-B600sqsd.js} +8 -8
  142. package/dist/{register.status-health-sessions-D6BRCFg_.js → register.status-health-sessions-ZYT6lFhO.js} +8 -8
  143. package/dist/{register.subclis-Hb2xSHBy.js → register.subclis-DdlLdgzD.js} +19 -19
  144. package/dist/{registry-9AaJQms1.js → registry-C-JddWwo.js} +2 -2
  145. package/dist/{replies-Rf4NZFNR.js → replies-D0FYSIJg.js} +3 -3
  146. package/dist/{reply-prefix-kh8vLHcr.js → reply-prefix-D0NzzC4I.js} +1 -1
  147. package/dist/{resolve-route-Cah2oBoB.js → resolve-route-CDsQda0z.js} +3 -3
  148. package/dist/{rpc-B2BLRS45.js → rpc-Co5Ci69t.js} +1 -1
  149. package/dist/{rpc-gUsL9Mqf.js → rpc-DZpJ-mGE.js} +1 -1
  150. package/dist/{run-main-B_NTFmz1.js → run-main-C1YGbNWb.js} +22 -22
  151. package/dist/{security-cli-J9J0qvDy.js → security-cli-Bkcil7sD.js} +3 -3
  152. package/dist/{security-cli-CZix5cXq.js → security-cli-CAdCbDUS.js} +3 -3
  153. package/dist/{send-BNMro1go.js → send-C75uSv6p.js} +7 -7
  154. package/dist/{server-methods-Cz_-FX5B.js → server-methods-DMPwNvoz.js} +29 -12
  155. package/dist/{server-methods-CFWjtx32.js → server-methods-FxoNbY02.js} +29 -12
  156. package/dist/{server-node-events-UJ4Hwcsf.js → server-node-events-Dp9EiddI.js} +10 -10
  157. package/dist/{server-node-events-BiMD-Sik.js → server-node-events-k7h7NWLL.js} +10 -10
  158. package/dist/{shell-env-DUnzZNS9.js → shell-env-B1lDWz4t.js} +1 -1
  159. package/dist/{skill-commands-DKkiQJxU.js → skill-commands-BXP2zJNy.js} +1 -1
  160. package/dist/{skill-commands-D0xAWG0l.js → skill-commands-BbMYpaLS.js} +1 -1
  161. package/dist/{skill-commands-KnANH5Qm.js → skill-commands-DDGGlq68.js} +1 -1
  162. package/dist/{skill-commands-DG2orCQ1.js → skill-commands-lyuYvLis.js} +5 -5
  163. package/dist/{skills-BfqpCx1S.js → skills-Dm4gX4Tl.js} +6 -6
  164. package/dist/{sqlite-B-yVqz_U.js → sqlite-CmMv0ans.js} +1 -1
  165. package/dist/{ssrf-CD6rSfmA.js → ssrf-DNhyFMRW.js} +10 -10
  166. package/dist/{status-CObdh7-H.js → status-BU-hn3iH.js} +1 -1
  167. package/dist/{status-BGUaaSHe.js → status-CHEd1LqO.js} +1 -1
  168. package/dist/{status-Bp48-ySL.js → status-CYqfS1u_.js} +5 -5
  169. package/dist/{status-FX0BMcCb.js → status-D3h1mSLx.js} +5 -5
  170. package/dist/{subagent-registry-ChDWDl_p.js → subagent-registry-4qeNm1OL.js} +9 -9
  171. package/dist/{subsystem-DhOo2FZn.js → subsystem-DzRUKS9f.js} +1 -1
  172. package/dist/{synthesis-C8CALFUp.js → synthesis-BfiHweOO.js} +30 -30
  173. package/dist/{synthesis-DIkOQnhF.js → synthesis-CxR-cX-4.js} +4 -4
  174. package/dist/{synthesis-DdP6tbyk.js → synthesis-DFNyev83.js} +8 -8
  175. package/dist/{synthesis-m6WCyI41.js → synthesis-DceZPirI.js} +8 -8
  176. package/dist/{system-cli-DB9etQxq.js → system-cli-BCAd92UF.js} +3 -3
  177. package/dist/{system-cli-szRqg1_v.js → system-cli-GwzCZpdT.js} +3 -3
  178. package/dist/{thinking-Dc4USx6E.js → thinking-h_Lv1OKF.js} +2 -2
  179. package/dist/{tokens-BHHkQK-k.js → tokens-D_vCJSzF.js} +1 -1
  180. package/dist/{tool-loop-detection-B2hNHeN_.js → tool-loop-detection-DGaNCZG0.js} +2 -2
  181. package/dist/{tui-Dp58oYvX.js → tui-9lZLkRZm.js} +3 -3
  182. package/dist/{tui-CEhOf9fk.js → tui-ROL_b9BF.js} +3 -3
  183. package/dist/{tui-cli-wxh3YpaV.js → tui-cli-C6Q0KKvj.js} +4 -4
  184. package/dist/{tui-cli-DFaOwBwg.js → tui-cli-C7NUBeQi.js} +4 -4
  185. package/dist/{unified-runner-DL-sfvGT.js → unified-runner-D9LZYzyF.js} +9 -9
  186. package/dist/{unified-runner-DR-adeyL.js → unified-runner-DaGiGHel.js} +50 -47
  187. package/dist/{update-cli-gEBRNrm2.js → update-cli-CWYfdfuU.js} +16 -16
  188. package/dist/{update-cli-DAKoU0Wn.js → update-cli-Du-NLjgh.js} +15 -15
  189. package/dist/{workspace-OBnI5mKu.js → workspace-CsaDUuDn.js} +2 -2
  190. package/package.json +1 -1
@@ -81,11 +81,70 @@
81
81
  .replace(/"/g, """);
82
82
  }
83
83
 
84
- // Normalise the registry's args[i].choices into {value,label} pairs and
85
- // suppress completion for captureRemaining args (free-form text). This is
86
- // also the seam for Phase 2's dynamic completions: when arg.argsRpc is
87
- // present we'll await an rpc here instead of returning a static list.
88
- function getArgChoices(cmd, argIndex) {
84
+ // 30s cache per RPC method name. Skill/session lists change rarely; this
85
+ // keeps the dropdown snappy after the first hit and avoids hammering the
86
+ // gateway on every keystroke.
87
+ const rpcChoiceCache = new Map(); // method { items, expiresAt }
88
+ const RPC_CHOICE_TTL_MS = 30_000;
89
+ // De-dupe in-flight requests per method so a fast typer doesn't issue
90
+ // 5 parallel chat.skills.list calls.
91
+ const rpcChoiceInflight = new Map(); // method → Promise
92
+
93
+ function normalizeChoice(choice) {
94
+ if (typeof choice === "string") {
95
+ return { value: choice, label: choice };
96
+ }
97
+ if (choice && typeof choice === "object") {
98
+ const value = String(choice.value ?? "");
99
+ const label = String(choice.label ?? choice.value ?? "");
100
+ return { value, label };
101
+ }
102
+ return null;
103
+ }
104
+
105
+ async function fetchRpcChoices(method) {
106
+ if (!method) {
107
+ return [];
108
+ }
109
+ const now = Date.now();
110
+ const cached = rpcChoiceCache.get(method);
111
+ if (cached && cached.expiresAt > now) {
112
+ return cached.items;
113
+ }
114
+ const inflight = rpcChoiceInflight.get(method);
115
+ if (inflight) {
116
+ return inflight;
117
+ }
118
+ if (
119
+ !window.gateway?.rpc ||
120
+ !window.gateway.ws ||
121
+ window.gateway.ws.readyState !== WebSocket.OPEN
122
+ ) {
123
+ return [];
124
+ }
125
+ const promise = (async () => {
126
+ try {
127
+ const result = await window.gateway.rpc(method, {});
128
+ const raw = Array.isArray(result?.items) ? result.items : [];
129
+ const items = raw.map(normalizeChoice).filter(Boolean);
130
+ rpcChoiceCache.set(method, { items, expiresAt: Date.now() + RPC_CHOICE_TTL_MS });
131
+ return items;
132
+ } catch (err) {
133
+ console.warn("[slash-autocomplete] rpc choices failed:", method, err);
134
+ return [];
135
+ } finally {
136
+ rpcChoiceInflight.delete(method);
137
+ }
138
+ })();
139
+ rpcChoiceInflight.set(method, promise);
140
+ return promise;
141
+ }
142
+
143
+ // Resolve the autocomplete choices for a command's argIndex. Static
144
+ // `arg.choices` always wins; if absent and `arg.argsRpc` is set, falls
145
+ // back to the RPC (cached). Returns a Promise<{value,label}[]>.
146
+ // captureRemaining args explicitly disable completion (free-form text).
147
+ async function getArgChoices(cmd, argIndex) {
89
148
  const arg = cmd?.args?.[argIndex];
90
149
  if (!arg) {
91
150
  return [];
@@ -93,15 +152,13 @@
93
152
  if (arg.captureRemaining) {
94
153
  return [];
95
154
  }
96
- const raw = Array.isArray(arg.choices) ? arg.choices : [];
97
- return raw.map((choice) => {
98
- if (typeof choice === "string") {
99
- return { value: choice, label: choice };
100
- }
101
- const value = String(choice.value ?? "");
102
- const label = String(choice.label ?? choice.value ?? "");
103
- return { value, label };
104
- });
155
+ if (Array.isArray(arg.choices) && arg.choices.length > 0) {
156
+ return arg.choices.map(normalizeChoice).filter(Boolean);
157
+ }
158
+ if (typeof arg.argsRpc === "string" && arg.argsRpc) {
159
+ return fetchRpcChoices(arg.argsRpc);
160
+ }
161
+ return [];
105
162
  }
106
163
 
107
164
  function findCommandByName(name) {
@@ -142,7 +199,13 @@
142
199
  return { mode: "args", command: cmd, argIndex, argPartial };
143
200
  }
144
201
 
145
- function refilter() {
202
+ // Monotonic token so a slow async refilter can't overwrite a faster one
203
+ // that ran later. Common when an RPC fetch fires while the user is still
204
+ // typing — we need the latest input's result, not the first one back.
205
+ let refilterToken = 0;
206
+
207
+ async function refilter() {
208
+ const myToken = ++refilterToken;
146
209
  const parsed = parseInput();
147
210
  if (!parsed) {
148
211
  isOpen = false;
@@ -166,19 +229,34 @@
166
229
  }
167
230
  return false;
168
231
  });
169
- } else {
170
- activeCommand = parsed.command;
171
- activeArgIndex = parsed.argIndex;
172
- const choices = getArgChoices(parsed.command, parsed.argIndex);
173
- const partial = parsed.argPartial.toLowerCase();
174
- filtered = choices.filter((choice) => {
175
- if (choice.value.toLowerCase().startsWith(partial)) {
176
- return true;
177
- }
178
- return choice.label.toLowerCase().startsWith(partial);
179
- });
232
+ selectedIndex = 0;
233
+ isOpen = filtered.length > 0;
234
+ render();
235
+ return;
180
236
  }
181
237
 
238
+ // args mode
239
+ activeCommand = parsed.command;
240
+ activeArgIndex = parsed.argIndex;
241
+ const choicesPromise = getArgChoices(parsed.command, parsed.argIndex);
242
+ // If choices come back synchronously (static), avoid a render flicker.
243
+ let choices;
244
+ if (typeof choicesPromise?.then === "function") {
245
+ choices = await choicesPromise;
246
+ } else {
247
+ choices = choicesPromise;
248
+ }
249
+ if (myToken !== refilterToken) {
250
+ // A later refilter superseded us; drop this result.
251
+ return;
252
+ }
253
+ const partial = parsed.argPartial.toLowerCase();
254
+ filtered = choices.filter((choice) => {
255
+ if (choice.value.toLowerCase().startsWith(partial)) {
256
+ return true;
257
+ }
258
+ return choice.label.toLowerCase().startsWith(partial);
259
+ });
182
260
  selectedIndex = 0;
183
261
  isOpen = filtered.length > 0;
184
262
  render();
@@ -255,7 +333,7 @@
255
333
  promptInput.selectionStart = promptInput.selectionEnd = promptInput.value.length;
256
334
  // refilter() reparses: if cmd.args[0] has choices the dropdown chains
257
335
  // into args mode; otherwise it closes.
258
- refilter();
336
+ void refilter();
259
337
  }
260
338
 
261
339
  function applyArgSelection(choice) {
@@ -272,10 +350,12 @@
272
350
  promptInput.selectionStart = promptInput.selectionEnd = promptInput.value.length;
273
351
  // refilter() reparses: if the next arg has choices, chain to it;
274
352
  // otherwise close.
275
- refilter();
353
+ void refilter();
276
354
  }
277
355
 
278
- promptInput.addEventListener("input", refilter);
356
+ promptInput.addEventListener("input", () => {
357
+ void refilter();
358
+ });
279
359
 
280
360
  promptInput.addEventListener("keydown", (e) => {
281
361
  if (!isOpen) {
@@ -6,8 +6,8 @@ import "./model-selection-CMx1evaF.js";
6
6
  import "./manifest-registry-CVLmi8rz.js";
7
7
  import "./config-D7TcU4qN.js";
8
8
  import "./shell-env-CTYaxUs_.js";
9
- import "./client-DhdWcgZP.js";
10
- import "./call-ogggp9QZ.js";
9
+ import "./client-BcvL_D-H.js";
10
+ import "./call-mzNPQq1S.js";
11
11
  import "./message-channel-DXToSaWK.js";
12
12
  import "./pairing-token-B-OTYROz.js";
13
13
  import { n as listChannelPlugins } from "./plugins-BsEhWvLn.js";
@@ -15,7 +15,7 @@ import { n as formatDurationHuman } from "./format-duration-CIjmjQST.js";
15
15
  import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs } from "./stagger-DUVGiPYV.js";
16
16
  import { t as formatDocsLink } from "./links-B9CbwY46.js";
17
17
  import "./progress-BOQ0hkeM.js";
18
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-c2_A2rwu.js";
18
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-CIHuIeji.js";
19
19
  import { n as parsePositiveIntOrUndefined } from "./helpers-lLtg0Hgi.js";
20
20
 
21
21
  //#region src/cli/cron-cli/shared.ts
@@ -13,15 +13,15 @@ import "./shell-env-Dc3iU7HK.js";
13
13
  import "./manifest-registry-D1MLZEjS.js";
14
14
  import "./message-channel-DgjXWzf-.js";
15
15
  import { n as listChannelPlugins } from "./plugins-CF5skkHh.js";
16
- import "./client-B9E9fdCA.js";
17
- import "./call-DKQC0JT1.js";
16
+ import "./client-BfnNfATE.js";
17
+ import "./call-BC1HAVqW.js";
18
18
  import "./pairing-token-Dcy37-4s.js";
19
19
  import { n as formatDurationHuman } from "./format-duration-CIjmjQST.js";
20
20
  import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs } from "./stagger-DQs772BN.js";
21
21
  import { t as formatDocsLink } from "./links-CQZxjjCO.js";
22
22
  import "./progress-DQTvTiEg.js";
23
23
  import { n as parsePositiveIntOrUndefined } from "./helpers-DGBa5iKd.js";
24
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-gDrdC_J6.js";
24
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-st8ffJBC.js";
25
25
 
26
26
  //#region src/cli/cron-cli/shared.ts
27
27
  const getCronChannelOptions = () => ["last", ...listChannelPlugins().map((plugin) => plugin.id)].join("|");
@@ -10,13 +10,13 @@ import { u as resolveGatewayBindHost } from "./ws-C7Ktmt-R.js";
10
10
  import { a as resolveGatewayAuth } from "./auth-Bkx-QuRN.js";
11
11
  import { a as inspectPortUsage, s as formatPortDiagnostics } from "./ports-gxLM5ahL.js";
12
12
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DgjXWzf-.js";
13
- import { n as callGateway } from "./call-DKQC0JT1.js";
13
+ import { n as callGateway } from "./call-BC1HAVqW.js";
14
14
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-BLIhifCJ.js";
15
15
  import { t as formatDocsLink } from "./links-CQZxjjCO.js";
16
16
  import { n as withProgress } from "./progress-DQTvTiEg.js";
17
17
  import { n as inheritOptionFromParent } from "./command-options-DgcCGXMQ.js";
18
18
  import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-7YBz5otm.js";
19
- import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-BKfeJ1xj.js";
19
+ import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-Bf1LB5fd.js";
20
20
  import { n as isWSLEnv } from "./wsl-Ci3VOaSK.js";
21
21
  import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-BF50XyKr.js";
22
22
  import { a as createCliStatusTextStyles, c as parsePortFromArgs, d as renderRuntimeHints, f as resolveRuntimeStatusColor, g as installDaemonServiceAndEmit, h as createDaemonActionContext, i as runServiceUninstall, l as pickProbeHostForBind, m as buildDaemonServiceSnapshot, n as runServiceStart, o as filterDaemonEnv, p as safeDaemonEnv, r as runServiceStop, s as normalizeListenerAddress, t as runServiceRestart, u as renderGatewayServiceStartHints } from "./lifecycle-core-DdbL6ELJ.js";
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { Q as theme, Rt as shortenHomePath, X as colorize, Z as isRich, _ as defaultRuntime, ct as resolveConfigPath, ft as resolveGatewayPort, pt as resolveIsNixMode, tt as getResolvedLoggerSettings, yt as resolveStateDir } from "./entry.js";
3
3
  import { t as formatCliCommand } from "./command-format-B3nkKRhC.js";
4
4
  import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, r as createConfigIO } from "./config-D7TcU4qN.js";
5
- import { n as callGateway } from "./call-ogggp9QZ.js";
5
+ import { n as callGateway } from "./call-mzNPQq1S.js";
6
6
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DXToSaWK.js";
7
7
  import { l as resolveGatewayBindHost } from "./net-TZUXtwGR.js";
8
8
  import { n as pickPrimaryTailnetIPv4 } from "./tailnet-B2SPYrh4.js";
@@ -13,7 +13,7 @@ import { t as formatDocsLink } from "./links-B9CbwY46.js";
13
13
  import { n as withProgress } from "./progress-BOQ0hkeM.js";
14
14
  import { n as inheritOptionFromParent } from "./command-options-Vxb4M7Aj.js";
15
15
  import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DaJ4Tf2a.js";
16
- import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-CCI7SimM.js";
16
+ import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-DahbbzzQ.js";
17
17
  import { n as isWSLEnv } from "./wsl-S50RbgL8.js";
18
18
  import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-Ccv3Zi5_.js";
19
19
  import { a as createCliStatusTextStyles, c as parsePortFromArgs, d as renderRuntimeHints, f as resolveRuntimeStatusColor, g as installDaemonServiceAndEmit, h as createDaemonActionContext, i as runServiceUninstall, l as pickProbeHostForBind, m as buildDaemonServiceSnapshot, n as runServiceStart, o as filterDaemonEnv, p as safeDaemonEnv, r as runServiceStop, s as normalizeListenerAddress, t as runServiceRestart, u as renderGatewayServiceStartHints } from "./lifecycle-core-O50xtu5c.js";
@@ -9606,6 +9606,7 @@ const ChatHistoryParamsSchema = Type.Object({
9606
9606
  }, { additionalProperties: false });
9607
9607
  const ChatCommandsListParamsSchema = Type.Object({}, { additionalProperties: false });
9608
9608
  const ChatToolsListParamsSchema = Type.Object({}, { additionalProperties: false });
9609
+ const ChatSkillsListParamsSchema = Type.Object({}, { additionalProperties: false });
9609
9610
  const ChatSendParamsSchema = Type.Object({
9610
9611
  sessionKey: NonEmptyString,
9611
9612
  message: Type.String(),
@@ -10037,6 +10038,7 @@ const validateLogsTailParams = ajv.compile(LogsTailParamsSchema);
10037
10038
  const validateChatHistoryParams = ajv.compile(ChatHistoryParamsSchema);
10038
10039
  const validateChatCommandsListParams = ajv.compile(ChatCommandsListParamsSchema);
10039
10040
  const validateChatToolsListParams = ajv.compile(ChatToolsListParamsSchema);
10041
+ const validateChatSkillsListParams = ajv.compile(ChatSkillsListParamsSchema);
10040
10042
  const validateChatSendParams = ajv.compile(ChatSendParamsSchema);
10041
10043
  const validateChatAbortParams = ajv.compile(ChatAbortParamsSchema);
10042
10044
  const validateChatInjectParams = ajv.compile(ChatInjectParamsSchema);
@@ -10398,6 +10400,7 @@ const METHOD_SCOPE_GROUPS = {
10398
10400
  "chat.history",
10399
10401
  "chat.commands.list",
10400
10402
  "chat.tools.list",
10403
+ "chat.skills.list",
10401
10404
  "config.get",
10402
10405
  "talk.config",
10403
10406
  "agents.files.list",
@@ -1,26 +1,26 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { i as resolveGatewayPort, s as resolveStateDir, t as STATE_DIR, u as resolveRequiredHomeDir } from "./paths-CE7eVGHg.js";
3
3
  import { c as resolveAgentIdFromSessionKey, o as normalizeAgentId, p as normalizeOptionalAccountId, r as buildAgentMainSessionKey, s as normalizeMainKey, t as DEFAULT_AGENT_ID } from "./session-key-BmQ2R1ev.js";
4
- import { J as resolveConfigDir, K as normalizeE164, R as resolvePreferredSymiTmpDir, Y as resolveUserPath, c as getActivePluginRegistry, g as createInternalHookEvent, t as CHANNEL_IDS, tt as truncateUtf16Safe, y as triggerInternalHook } from "./registry-9AaJQms1.js";
5
- import { l as resolveSessionAgentId, n as resolveAgentConfig } from "./agent-scope-DnJEvgMH.js";
6
- import { r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-DhOo2FZn.js";
7
- import { _ as runExec, a as DEFAULT_SYMICORE_FILENAME, c as DEFAULT_USER_FILENAME, i as DEFAULT_IDENTITY_FILENAME, l as ensureAgentWorkspace, n as DEFAULT_AGENT_WORKSPACE_DIR, o as DEFAULT_SYMIPULSE_FILENAME, r as DEFAULT_BOOTSTRAP_FILENAME, s as DEFAULT_TOOLS_FILENAME, t as DEFAULT_AGENTS_FILENAME } from "./workspace-OBnI5mKu.js";
4
+ import { J as resolveConfigDir, K as normalizeE164, R as resolvePreferredSymiTmpDir, Y as resolveUserPath, c as getActivePluginRegistry, g as createInternalHookEvent, t as CHANNEL_IDS, tt as truncateUtf16Safe, y as triggerInternalHook } from "./registry-C-JddWwo.js";
5
+ import { l as resolveSessionAgentId, n as resolveAgentConfig } from "./agent-scope-B1Ina6jV.js";
6
+ import { r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-DzRUKS9f.js";
7
+ import { _ as runExec, a as DEFAULT_SYMICORE_FILENAME, c as DEFAULT_USER_FILENAME, i as DEFAULT_IDENTITY_FILENAME, l as ensureAgentWorkspace, n as DEFAULT_AGENT_WORKSPACE_DIR, o as DEFAULT_SYMIPULSE_FILENAME, r as DEFAULT_BOOTSTRAP_FILENAME, s as DEFAULT_TOOLS_FILENAME, t as DEFAULT_AGENTS_FILENAME } from "./workspace-CsaDUuDn.js";
8
8
  import { t as formatCliCommand } from "./command-format-BrrHNE8r.js";
9
9
  import { n as isPidAlive, t as resolveProcessScopedMap } from "./process-scoped-map-B-dHc_9I.js";
10
- import { c as loadConfig, d as writeConfigFile, m as parseByteSize, p as parseDurationMs, s as createConfigIO, t as SsrFBlockedError } from "./ssrf-CD6rSfmA.js";
10
+ import { c as loadConfig, d as writeConfigFile, m as parseByteSize, p as parseDurationMs, s as createConfigIO, t as SsrFBlockedError } from "./ssrf-DNhyFMRW.js";
11
11
  import { t as parseBooleanValue } from "./boolean-BsqeuxE6.js";
12
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-Bu0sk8jc.js";
13
- import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-BfqpCx1S.js";
12
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-OTJg3QKn.js";
13
+ import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-Dm4gX4Tl.js";
14
14
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-C89ppfp9.js";
15
- import { b as SafeOpenError, d as extensionForMime, i as buildImageResizeSideGrid, l as resizeToJpeg, o as getImageMetadata, r as IMAGE_REDUCE_QUALITY_STEPS, t as getAgentScopedMediaLocalRoots, u as detectMime, x as openFileWithinRoot } from "./local-roots-Ab2ch8iw.js";
16
- import { _ as normalizeHyphenSlug, d as getChannelDock, o as normalizeThinkLevel } from "./thinking-Dc4USx6E.js";
17
- import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph, v as listDeliverableMessageChannels, y as normalizeMessageChannel } from "./chunk-DBVjqPm2.js";
15
+ import { b as SafeOpenError, d as extensionForMime, i as buildImageResizeSideGrid, l as resizeToJpeg, o as getImageMetadata, r as IMAGE_REDUCE_QUALITY_STEPS, t as getAgentScopedMediaLocalRoots, u as detectMime, x as openFileWithinRoot } from "./local-roots-C7fBKoOI.js";
16
+ import { _ as normalizeHyphenSlug, d as getChannelDock, o as normalizeThinkLevel } from "./thinking-h_Lv1OKF.js";
17
+ import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph, v as listDeliverableMessageChannels, y as normalizeMessageChannel } from "./chunk-BkYIP_hB.js";
18
18
  import { t as normalizeChatType } from "./chat-type-CE6cJOyt.js";
19
19
  import { n as resolveConversationLabel } from "./conversation-label-BVa8JTl2.js";
20
- import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BcGFMr_d.js";
20
+ import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-B06cTFHC.js";
21
21
  import { a as resolveSessionTranscriptPathInDir, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-BsT3BvfH.js";
22
22
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-ChU6IQwp.js";
23
- import { n as isSilentReplyText, t as SILENT_REPLY_TOKEN } from "./tokens-BHHkQK-k.js";
23
+ import { n as isSilentReplyText, t as SILENT_REPLY_TOKEN } from "./tokens-D_vCJSzF.js";
24
24
  import path, { posix } from "node:path";
25
25
  import fs, { existsSync, realpathSync } from "node:fs";
26
26
  import os from "node:os";
@@ -939,7 +939,7 @@ function isModuleNotFoundError(err) {
939
939
  }
940
940
  async function loadPwAiModule(mode) {
941
941
  try {
942
- return await import("./pw-ai-B5v5n5ol.js");
942
+ return await import("./pw-ai-DY_6l11g.js");
943
943
  } catch (err) {
944
944
  if (mode === "soft") return null;
945
945
  if (isModuleNotFoundError(err)) return null;
@@ -3536,11 +3536,11 @@ function createProfileContext(opts, profile) {
3536
3536
  const userDataDir = resolveSymiUserDataDir(profile.name);
3537
3537
  const profileState = getProfileState();
3538
3538
  if (await isHttpReachable(300) && !profileState.running) try {
3539
- await (await import("./pw-ai-B5v5n5ol.js")).closePlaywrightBrowserConnection();
3539
+ await (await import("./pw-ai-DY_6l11g.js")).closePlaywrightBrowserConnection();
3540
3540
  } catch {}
3541
3541
  if (profileState.running) await stopRunningBrowser();
3542
3542
  try {
3543
- await (await import("./pw-ai-B5v5n5ol.js")).closePlaywrightBrowserConnection();
3543
+ await (await import("./pw-ai-DY_6l11g.js")).closePlaywrightBrowserConnection();
3544
3544
  } catch {}
3545
3545
  if (!fs.existsSync(userDataDir)) return {
3546
3546
  moved: false,
@@ -12,8 +12,8 @@ import "./shell-env-Dc3iU7HK.js";
12
12
  import "./manifest-registry-D1MLZEjS.js";
13
13
  import { r as isLoopbackHost } from "./ws-C7Ktmt-R.js";
14
14
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DgjXWzf-.js";
15
- import { Kt as listDevicePairing, Qt as summarizeDeviceTokens, Ut as approveDevicePairing } from "./client-B9E9fdCA.js";
16
- import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-DKQC0JT1.js";
15
+ import { $t as summarizeDeviceTokens, Wt as approveDevicePairing, qt as listDevicePairing } from "./client-BfnNfATE.js";
16
+ import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BC1HAVqW.js";
17
17
  import "./pairing-token-Dcy37-4s.js";
18
18
  import { n as formatTimeAgo } from "./format-relative-D4GQsWlP.js";
19
19
  import { n as withProgress } from "./progress-DQTvTiEg.js";
@@ -5,8 +5,8 @@ import "./model-selection-CMx1evaF.js";
5
5
  import "./manifest-registry-CVLmi8rz.js";
6
6
  import "./config-D7TcU4qN.js";
7
7
  import "./shell-env-CTYaxUs_.js";
8
- import { Kt as listDevicePairing, Qt as summarizeDeviceTokens, Ut as approveDevicePairing } from "./client-DhdWcgZP.js";
9
- import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-ogggp9QZ.js";
8
+ import { $t as summarizeDeviceTokens, Wt as approveDevicePairing, qt as listDevicePairing } from "./client-BcvL_D-H.js";
9
+ import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-mzNPQq1S.js";
10
10
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DXToSaWK.js";
11
11
  import "./pairing-token-B-OTYROz.js";
12
12
  import { n as isLoopbackHost } from "./net-TZUXtwGR.js";
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { t as createSubsystemLogger } from "./subsystem-DhOo2FZn.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-DzRUKS9f.js";
3
3
  import { n as getDiagnosticSessionState } from "./diagnostic-session-state-BDfanaOY.js";
4
4
 
5
5
  //#region src/infra/diagnostic-events.ts
@@ -1,7 +1,7 @@
1
1
  import { n as resolveCliName } from "./cli-name-DY75UA5M.js";
2
2
  import { t as resolveSymiPackageRoot } from "./symi-root-Ctw1Rb_n.js";
3
3
  import { t as note } from "./note-Cltpxj6i.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BaOjuoPX.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-D2pLg5yF.js";
5
5
  import { spawnSync } from "node:child_process";
6
6
  import path from "node:path";
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { n as resolveCliName } from "./cli-name-CzMV-gJF.js";
2
2
  import { t as resolveSymiPackageRoot } from "./symi-root-BQ0IpoW2.js";
3
3
  import { t as note } from "./note-ytwb4wwn.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DLUKoSIx.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-kGAGMr-I.js";
5
5
  import path from "node:path";
6
6
  import { spawnSync } from "node:child_process";
7
7
 
package/dist/entry.js CHANGED
@@ -2315,7 +2315,7 @@ if (!ensureExperimentalWarningSuppressed()) {
2315
2315
  applyCliProfileEnv({ profile: parsed.profile });
2316
2316
  process$1.argv = parsed.argv;
2317
2317
  }
2318
- import("./run-main-B_NTFmz1.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
2318
+ import("./run-main-C1YGbNWb.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
2319
2319
  console.error("[symi] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
2320
2320
  process$1.exitCode = 1;
2321
2321
  });
@@ -11,19 +11,19 @@ import "./env-BRnPI9sO.js";
11
11
  import "./shell-env-Dc3iU7HK.js";
12
12
  import "./manifest-registry-D1MLZEjS.js";
13
13
  import "./message-channel-DgjXWzf-.js";
14
- import "./client-B9E9fdCA.js";
15
- import "./call-DKQC0JT1.js";
14
+ import "./client-BfnNfATE.js";
15
+ import "./call-BC1HAVqW.js";
16
16
  import "./pairing-token-Dcy37-4s.js";
17
17
  import { n as formatTimeAgo } from "./format-relative-D4GQsWlP.js";
18
18
  import { c as readExecApprovalsSnapshot, p as saveExecApprovals } from "./exec-approvals-DioSaIeH.js";
19
19
  import { t as formatDocsLink } from "./links-CQZxjjCO.js";
20
20
  import "./progress-DQTvTiEg.js";
21
- import { n as callGatewayFromCli } from "./gateway-rpc-gDrdC_J6.js";
21
+ import { n as callGatewayFromCli } from "./gateway-rpc-st8ffJBC.js";
22
22
  import "./systemd-Dic80Qni.js";
23
23
  import "./service-BF50XyKr.js";
24
24
  import { t as renderTable } from "./table-Ds5CZCyv.js";
25
25
  import { t as describeUnknownError } from "./shared-BmjlTHYU.js";
26
- import { i as resolveNodeId, r as nodesCallOpts } from "./rpc-gUsL9Mqf.js";
26
+ import { i as resolveNodeId, r as nodesCallOpts } from "./rpc-DZpJ-mGE.js";
27
27
  import JSON5 from "json5";
28
28
  import fs from "node:fs/promises";
29
29
 
@@ -5,20 +5,20 @@ import "./model-selection-CMx1evaF.js";
5
5
  import "./manifest-registry-CVLmi8rz.js";
6
6
  import "./config-D7TcU4qN.js";
7
7
  import "./shell-env-CTYaxUs_.js";
8
- import "./client-DhdWcgZP.js";
9
- import "./call-ogggp9QZ.js";
8
+ import "./client-BcvL_D-H.js";
9
+ import "./call-mzNPQq1S.js";
10
10
  import "./message-channel-DXToSaWK.js";
11
11
  import "./pairing-token-B-OTYROz.js";
12
12
  import { n as formatTimeAgo } from "./format-relative-CxLpEQOX.js";
13
13
  import { c as readExecApprovalsSnapshot, p as saveExecApprovals } from "./exec-approvals-DEjIocmZ.js";
14
14
  import { t as formatDocsLink } from "./links-B9CbwY46.js";
15
15
  import "./progress-BOQ0hkeM.js";
16
- import { n as callGatewayFromCli } from "./gateway-rpc-c2_A2rwu.js";
16
+ import { n as callGatewayFromCli } from "./gateway-rpc-CIHuIeji.js";
17
17
  import "./systemd-Dtydk5-z.js";
18
18
  import "./service-Ccv3Zi5_.js";
19
19
  import { t as renderTable } from "./table-Dm8jYqmW.js";
20
20
  import { t as describeUnknownError } from "./shared-BJRsBGGr.js";
21
- import { i as resolveNodeId, r as nodesCallOpts } from "./rpc-B2BLRS45.js";
21
+ import { i as resolveNodeId, r as nodesCallOpts } from "./rpc-Co5Ci69t.js";
22
22
  import JSON5 from "json5";
23
23
  import fs from "node:fs/promises";
24
24
 
@@ -6,7 +6,7 @@ import { _ as DEFAULT_PROVIDER, g as DEFAULT_MODEL, p as resolveThinkingDefault
6
6
  import { a as resolveAgentIdentity } from "./reply-prefix-i-FPYcoQ.js";
7
7
  import "./plugins-CZ_mYwXq.js";
8
8
  import "./replies-0nzkXt6o.js";
9
- import { a as resolveAgentTimeoutMs, r as runEmbeddedPiAgent } from "./pi-embedded-C9wLrFjj.js";
9
+ import { a as resolveAgentTimeoutMs, r as runEmbeddedPiAgent } from "./pi-embedded-BxKs-STI.js";
10
10
  import { $ as loadSessionStore, nt as saveSessionStore } from "./deliver-f3cIWxXT.js";
11
11
  import "./diagnostic-BdRnGknC.js";
12
12
  import "./diagnostic-session-state-DpxCUzoM.js";
@@ -23,12 +23,12 @@ import "./errors-BEU7IHU6.js";
23
23
  import "./tokens-yWO1wD7Z.js";
24
24
  import "./thinking-DgjGxdSP.js";
25
25
  import { n as resolveSessionFilePath, s as resolveStorePath } from "./paths-BsT3BvfH.js";
26
- import "./manager-CnBU0aOR.js";
26
+ import "./manager-Ct4kRT7n.js";
27
27
  import "./github-copilot-token-dYUr1mDQ.js";
28
28
  import "./sqlite-D8iYC_CU.js";
29
29
  import "./markdown-tables-jQzXAsf3.js";
30
- import "./commands-registry-DG2kGyg5.js";
31
- import "./skill-commands-D0xAWG0l.js";
30
+ import "./commands-registry-CX-kLuQz.js";
31
+ import "./skill-commands-BbMYpaLS.js";
32
32
  import "./pi-model-discovery-CuZX_Q4t.js";
33
33
  import "./resolve-route-0kL4oMLp.js";
34
34
  import "./pi-auth-json-BBE9vt1g.js";
@@ -2,7 +2,7 @@ import { t as parseBooleanValue } from "./boolean-BsqeuxE6.js";
2
2
  import { n as MANIFEST_KEY, t as LEGACY_MANIFEST_KEYS } from "./legacy-names-B7Aqv95X.js";
3
3
  import path from "node:path";
4
4
  import fs from "node:fs";
5
- import json5 from "json5";
5
+ import JSON5 from "json5";
6
6
  import YAML from "yaml";
7
7
 
8
8
  //#region src/shared/config-eval.ts
@@ -210,7 +210,7 @@ function resolveSymiManifestBlock(params) {
210
210
  const raw = getFrontmatterString(params.frontmatter, params.key ?? "metadata");
211
211
  if (!raw) return;
212
212
  try {
213
- const parsed = json5.parse(raw);
213
+ const parsed = JSON5.parse(raw);
214
214
  if (!parsed || typeof parsed !== "object") return;
215
215
  const manifestKeys = [MANIFEST_KEY, ...LEGACY_MANIFEST_KEYS];
216
216
  for (const key of manifestKeys) {