@symerian/symi 3.5.7 → 3.5.9
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.
- package/dist/{agent-BCszhl_7.js → agent-7Xrh1XVG.js} +2 -2
- package/dist/{agent-Cmx-1Tfs.js → agent-Cq8f1rHB.js} +1 -1
- package/dist/{agents-BkTzJJ83.js → agents-BiKiy1SO.js} +3 -3
- package/dist/{audit-CtrXFZb5.js → audit-DJURK8ly.js} +2 -2
- package/dist/{audit-Bk6kay2Z.js → audit-DlO49y-U.js} +5 -5
- package/dist/{auth-choice-D-iIJjJY.js → auth-choice-BPN4vEBk.js} +2 -2
- package/dist/{auth-choice-CucG4Wor.js → auth-choice-BYOypIGE.js} +2 -2
- package/dist/{banner-CApT91CY.js → banner-BDexjPFs.js} +1 -1
- package/dist/{browser-cli-rZb2WjFF.js → browser-cli-BT0akXlr.js} +3 -3
- package/dist/{browser-cli-DGjYBquX.js → browser-cli-D_DjThgn.js} +3 -3
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +4 -4
- package/dist/bundled/session-memory/handler.js +4 -4
- package/dist/{call-DKQC0JT1.js → call-C386w5E5.js} +2 -1
- package/dist/{call-ogggp9QZ.js → call-mzNPQq1S.js} +2 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-CdIEyHya.js → channel-options-BjgoCETm.js} +1 -1
- package/dist/{channel-options-DYh8mLMN.js → channel-options-VQMByP4c.js} +1 -1
- package/dist/{channels-cli-sG9Wf2LH.js → channels-cli-BzwYp-BP.js} +19 -19
- package/dist/{channels-cli-Bb18aE2b.js → channels-cli-DokpJOeN.js} +11 -11
- package/dist/{chrome-DNssqQJs.js → chrome-3jl2ulOE.js} +7 -7
- package/dist/{chrome-DJChpTwP.js → chrome-suE09Iax.js} +7 -7
- package/dist/{cli-DEGt0Tp0.js → cli-ay-COtm8.js} +8 -8
- package/dist/{cli-DtdTf-ZQ.js → cli-mZdo-h84.js} +16 -16
- package/dist/{client-DhdWcgZP.js → client-BcvL_D-H.js} +3 -1
- package/dist/{client-B9E9fdCA.js → client-CJeYdM6G.js} +6 -4
- package/dist/{command-registry-O155hUhR.js → command-registry-CjxdlqkY.js} +11 -11
- package/dist/{commands-registry-BuOUfpmg.js → commands-registry-7vX6rnw_.js} +2 -1
- package/dist/{commands-registry-DG2kGyg5.js → commands-registry-CX-kLuQz.js} +2 -1
- package/dist/{commands-registry-C2Hvwjym.js → commands-registry-Ca5hh7nh.js} +2 -1
- package/dist/{commands-registry-CJPBJPlh.js → commands-registry-D8LQ9fss.js} +2 -1
- package/dist/{completion-cli-BaOjuoPX.js → completion-cli-D2pLg5yF.js} +2 -2
- package/dist/{completion-cli-DLUKoSIx.js → completion-cli-Dz6vTqBm.js} +1 -1
- package/dist/{config-cli-BxWavRxN.js → config-cli-BdPn_06D.js} +1 -1
- package/dist/{config-cli-BuZ-L1Iw.js → config-cli-D12Nouyy.js} +1 -1
- package/dist/{configure-gxAEhC9E.js → configure-B8-2sqW3.js} +6 -6
- package/dist/{configure-BSKWgEhS.js → configure-CxjXughP.js} +6 -6
- package/dist/{control-service-DOGU9T2P.js → control-service-CCto6i0v.js} +3 -3
- package/dist/control-ui/css/style.css +14 -0
- package/dist/control-ui/js/slash-autocomplete.js +276 -44
- package/dist/{cron-cli-L4iwVTNV.js → cron-cli-BJzi2QtY.js} +3 -3
- package/dist/{cron-cli-DtDqHIZn.js → cron-cli-CDUzTSlx.js} +3 -3
- package/dist/{daemon-cli-B5TdtWCQ.js → daemon-cli-D93uCvD0.js} +2 -2
- package/dist/{daemon-cli-39fFIU2G.js → daemon-cli-DXHRewv8.js} +2 -2
- package/dist/daemon-cli.js +3 -0
- package/dist/{deliver-q23ar_Pm.js → deliver-f3cIWxXT.js} +4 -4
- package/dist/{devices-cli-Ec6d58OB.js → devices-cli-18molb2z.js} +2 -2
- package/dist/{devices-cli-DuVhACtW.js → devices-cli-YdVaVQkF.js} +2 -2
- package/dist/{doctor-completion-BzfgfpBH.js → doctor-completion-C9sFv9qq.js} +1 -1
- package/dist/{doctor-completion-wlBp8bv7.js → doctor-completion-Ca692KiP.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-N45JsIvc.js → exec-approvals-cli-Cnie7kMb.js} +4 -4
- package/dist/{exec-approvals-cli-1K1PMf0f.js → exec-approvals-cli-De0WMHXi.js} +4 -4
- package/dist/extensionAPI.js +6 -6
- package/dist/{gateway-cli-Bz5fqsnE.js → gateway-cli-CvzoUDQs.js} +18 -18
- package/dist/{gateway-cli-_xNZ2L_e.js → gateway-cli-D-Rztk2z.js} +27 -27
- package/dist/{gateway-rpc-c2_A2rwu.js → gateway-rpc-CIHuIeji.js} +1 -1
- package/dist/{gateway-rpc-gDrdC_J6.js → gateway-rpc-Cwi5kJzl.js} +1 -1
- package/dist/{glass-ui-ws-CbKVlQRh.js → glass-ui-ws-DCXg7AbP.js} +15 -15
- package/dist/{glass-ui-ws-DO8WKPIK.js → glass-ui-ws-gmSoTQpl.js} +23 -23
- package/dist/{health-B7yvi1O9.js → health-BaYDaHPT.js} +1 -1
- package/dist/{health-B5BrlZ8G.js → health-ksdFZpDU.js} +1 -1
- package/dist/{hooks-cli-CrgD2ZqP.js → hooks-cli-B_eznWUl.js} +17 -17
- package/dist/{hooks-cli-mwiHuRfO.js → hooks-cli-ClMPrbD7.js} +9 -9
- package/dist/index.js +20 -20
- package/dist/llm-slug-generator.js +4 -4
- package/dist/{logs-cli-DvbMaSKU.js → logs-cli-CK9YhKnf.js} +3 -3
- package/dist/{logs-cli-T5v8efuM.js → logs-cli-DVvGi5J7.js} +3 -3
- package/dist/{manager-CvqH_tah.js → manager-5k1CRLn-.js} +1 -1
- package/dist/{manager-CpBJ1BE6.js → manager-B4U7ahZq.js} +1 -1
- package/dist/{manager-D9m8F3HR.js → manager-Ct4kRT7n.js} +1 -1
- package/dist/{manager-BVPXSK-I.js → manager-Dh_-GTcG.js} +1 -1
- package/dist/{memory-CbwmxmxW.js → memory-CkJCn1Gg.js} +2 -2
- package/dist/{memory-BsGfHO_F.js → memory-DTDeG3u8.js} +2 -2
- package/dist/{memory-cli-BwQsPEFk.js → memory-cli-Bv8Rcg5s.js} +2 -2
- package/dist/{memory-cli-B1dFPZw-.js → memory-cli-C3CONZGB.js} +2 -2
- package/dist/{models-Dm6dSSSx.js → models-Cbad7KB1.js} +3 -3
- package/dist/{models-cli-BA6ufqLd.js → models-cli-BXzUBQYo.js} +18 -18
- package/dist/{models-cli-BPSrz6tf.js → models-cli-C1yhTK5G.js} +11 -11
- package/dist/{node-cli-CH1yLZuO.js → node-cli-Cmfs9las.js} +1 -1
- package/dist/{node-cli-2HDdeLgi.js → node-cli-CtliTCQh.js} +6 -6
- package/dist/{nodes-cli-DIm6cMS_.js → nodes-cli-BH1TUf3n.js} +3 -3
- package/dist/{nodes-cli-ARs9ZPma.js → nodes-cli-C92vI9eX.js} +3 -3
- package/dist/{onboard-CjnPughY.js → onboard-8eYravsD.js} +3 -3
- package/dist/{onboard-Cmz6Rtm-.js → onboard-DeJaaNHV.js} +3 -3
- package/dist/{onboard-channels-D00NAtQt.js → onboard-channels-3AkHwrP_.js} +1 -1
- package/dist/{onboard-channels-Cozz3CQv.js → onboard-channels-BRi2UP_-.js} +1 -1
- package/dist/{onboard-helpers-CCI7SimM.js → onboard-helpers-DahbbzzQ.js} +1 -1
- package/dist/{onboard-helpers-BKfeJ1xj.js → onboard-helpers-mW55B30K.js} +1 -1
- package/dist/{onboard-remote-D4R-Yq2Q.js → onboard-remote-BgDE1b8f.js} +1 -1
- package/dist/{onboard-remote-DKXBH_lQ.js → onboard-remote-BxtpQ74l.js} +1 -1
- package/dist/{onboard-skills-jVyIFojF.js → onboard-skills-BaRS2GUY.js} +1 -1
- package/dist/{onboard-skills-BPmu8XLA.js → onboard-skills-V1IT5l9E.js} +1 -1
- package/dist/{onboarding-BPZb40BJ.js → onboarding-Bm0DgGhb.js} +7 -7
- package/dist/{onboarding-BrTMOcPF.js → onboarding-D35WPHUd.js} +7 -7
- package/dist/{onboarding.finalize-BiL_LXrR.js → onboarding.finalize-BStHm3Q-.js} +10 -10
- package/dist/{onboarding.finalize-Bd2rGMjo.js → onboarding.finalize-DQmEXf6p.js} +14 -14
- package/dist/{onboarding.gateway-config-B301LxTx.js → onboarding.gateway-config-D6xPpItN.js} +3 -3
- package/dist/{onboarding.gateway-config-ChCxv8dy.js → onboarding.gateway-config-DNGUJthU.js} +3 -3
- package/dist/{pi-embedded-C2-v_4OT.js → pi-embedded-BxKs-STI.js} +17 -14
- package/dist/{pi-embedded-helpers-CDzBxa-P.js → pi-embedded-helpers-B0Vz7hRL.js} +1 -1
- package/dist/{pi-tools.policy-WaLKhqJQ.js → pi-tools.policy-CYlUAnkU.js} +1 -1
- package/dist/{plugin-registry-BLoSesyj.js → plugin-registry-B9SUsQmV.js} +1 -1
- package/dist/{plugin-registry-CZDG8fjK.js → plugin-registry-CP_RBN-f.js} +1 -1
- package/dist/plugin-sdk/auto-reply/commands-registry.types.d.ts +8 -0
- package/dist/plugin-sdk/gateway/protocol/index.d.ts +5 -2
- package/dist/plugin-sdk/gateway/protocol/schema/logs-chat.d.ts +1 -0
- package/dist/plugin-sdk/index.js +6 -6
- package/dist/{plugins-cli-CGs9-UtO.js → plugins-cli-DKEgD6T2.js} +9 -9
- package/dist/{plugins-cli-2yraoR6V.js → plugins-cli-tYEFfttj.js} +17 -17
- package/dist/{program-BnKEJpZF.js → program-C668x3bd.js} +14 -14
- package/dist/{program-context-BvP9L_1W.js → program-context-BiDn7yCz.js} +30 -30
- package/dist/{prompt-select-styled-BTF5vvv8.js → prompt-select-styled-BhjycLZw.js} +8 -8
- package/dist/{prompt-select-styled-Brx330O3.js → prompt-select-styled-BlpvaJVg.js} +7 -7
- package/dist/{provider-auth-helpers-hjy3e-oS.js → provider-auth-helpers-Dhd06_t2.js} +1 -1
- package/dist/{provider-auth-helpers-CppzYZM9.js → provider-auth-helpers-R-cnIeud.js} +1 -1
- package/dist/{push-apns-DJ55TFPT.js → push-apns-BZWInkPg.js} +1 -1
- package/dist/{push-apns-BD2iO09c.js → push-apns-Bx0i-bNw.js} +1 -1
- package/dist/{pw-ai-DQZa9DUQ.js → pw-ai-DMvtunBE.js} +1 -1
- package/dist/{pw-ai-v__CyAlM.js → pw-ai-DOAsQ5NX.js} +1 -1
- package/dist/{register.agent-DTGvQGla.js → register.agent-CYRt1iiv.js} +14 -14
- package/dist/{register.agent-Dz_P7PxO.js → register.agent-D2CwHq-q.js} +21 -21
- package/dist/{register.configure-CrgU3FzU.js → register.configure-CsvtHB87.js} +16 -16
- package/dist/{register.configure-D9w7Tm9e.js → register.configure-DxT5PQFo.js} +24 -24
- package/dist/{register.maintenance-d5xHdDgu.js → register.maintenance-6vebxogW.js} +22 -22
- package/dist/{register.maintenance-CqvrXPF7.js → register.maintenance-DMLKAqqc.js} +15 -15
- package/dist/{register.message-C0tqgEor.js → register.message-9WxgUBSA.js} +9 -9
- package/dist/{register.message-DNMCxaAD.js → register.message-DxqvQsSN.js} +17 -17
- package/dist/{register.onboard--eJVfJGa.js → register.onboard-Bpo5ofDH.js} +6 -6
- package/dist/{register.onboard-dkAvGraV.js → register.onboard-CuHwcxsE.js} +6 -6
- package/dist/{register.setup-CgufX-6c.js → register.setup-DQXuZsGD.js} +6 -6
- package/dist/{register.setup-Dwh0ylCS.js → register.setup-b8h71HJ7.js} +6 -6
- package/dist/{register.status-health-sessions-BeAm7HAq.js → register.status-health-sessions-B600sqsd.js} +8 -8
- package/dist/{register.status-health-sessions-D6BRCFg_.js → register.status-health-sessions-Sn1WS-fC.js} +13 -13
- package/dist/{register.subclis-Hb2xSHBy.js → register.subclis-DdlLdgzD.js} +19 -19
- package/dist/{routes-DIyAmLYR.js → routes-DmyY3P7a.js} +2 -2
- package/dist/{rpc-gUsL9Mqf.js → rpc-Batd5KYw.js} +1 -1
- package/dist/{rpc-B2BLRS45.js → rpc-Co5Ci69t.js} +1 -1
- package/dist/{run-main-B_NTFmz1.js → run-main-C1YGbNWb.js} +22 -22
- package/dist/{sandbox-61-kshSF.js → sandbox-H5Lewbd2.js} +3 -3
- package/dist/{sandbox-cli-D9v0jhBb.js → sandbox-cli-BUrDdb-H.js} +4 -4
- package/dist/{security-cli-J9J0qvDy.js → security-cli-Bkcil7sD.js} +3 -3
- package/dist/{security-cli-CZix5cXq.js → security-cli-CTTidNLu.js} +8 -8
- package/dist/{server-context-SbbjNkPL.js → server-context-DVX-C1f0.js} +4 -4
- package/dist/{server-methods-Cz_-FX5B.js → server-methods-DKW7md4I.js} +31 -14
- package/dist/{server-methods-CFWjtx32.js → server-methods-FxoNbY02.js} +29 -12
- package/dist/{server-node-events-UJ4Hwcsf.js → server-node-events-Dp9EiddI.js} +10 -10
- package/dist/{server-node-events-BiMD-Sik.js → server-node-events-phrERc91.js} +18 -18
- package/dist/{skill-commands-DKkiQJxU.js → skill-commands-BXP2zJNy.js} +1 -1
- package/dist/{skill-commands-D0xAWG0l.js → skill-commands-BbMYpaLS.js} +1 -1
- package/dist/{skill-commands-KnANH5Qm.js → skill-commands-DDGGlq68.js} +1 -1
- package/dist/{skill-commands-JIccKWkf.js → skill-commands-lyuYvLis.js} +1 -1
- package/dist/{status-FX0BMcCb.js → status-B2VahFlJ.js} +5 -5
- package/dist/{status-BGUaaSHe.js → status-CHEd1LqO.js} +1 -1
- package/dist/{status-Bp48-ySL.js → status-CYqfS1u_.js} +5 -5
- package/dist/{status-CObdh7-H.js → status-XrKWGanJ.js} +1 -1
- package/dist/{subagent-registry-ChDWDl_p.js → subagent-registry-4qeNm1OL.js} +9 -9
- package/dist/{synthesis-CmQvOHg6.js → synthesis-BfiHweOO.js} +4 -4
- package/dist/{synthesis-Dq-zHW08.js → synthesis-CxR-cX-4.js} +6 -6
- package/dist/{synthesis-DdP6tbyk.js → synthesis-D9Lu46sl.js} +16 -16
- package/dist/{synthesis-m6WCyI41.js → synthesis-DceZPirI.js} +8 -8
- package/dist/{system-cli-DB9etQxq.js → system-cli-CPEHtbdA.js} +3 -3
- package/dist/{system-cli-szRqg1_v.js → system-cli-GwzCZpdT.js} +3 -3
- package/dist/{tui-Dp58oYvX.js → tui-9lZLkRZm.js} +3 -3
- package/dist/{tui-CEhOf9fk.js → tui-D4Al5sge.js} +4 -4
- package/dist/{tui-cli-DFaOwBwg.js → tui-cli-C7NUBeQi.js} +4 -4
- package/dist/{tui-cli-wxh3YpaV.js → tui-cli-Z50zaJvB.js} +9 -9
- package/dist/{unified-runner-Cu3lGa3A.js → unified-runner-DaGiGHel.js} +10 -7
- package/dist/{unified-runner-DL-sfvGT.js → unified-runner-DpZ49TWj.js} +17 -17
- package/dist/{update-cli-gEBRNrm2.js → update-cli-CWYfdfuU.js} +16 -16
- package/dist/{update-cli-DAKoU0Wn.js → update-cli-DP18R4I_.js} +23 -23
- package/dist/{with-timeout-GbJ1Yzsh.js → with-timeout-GyVVFtnd.js} +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
// ── Slash command autocomplete for the prompt input ─────────────────────
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
2
|
+
// Layer 1: type "/" → dropdown lists matching commands.
|
|
3
|
+
// Layer 2: pick a command → if its args[0] has `choices`, the dropdown
|
|
4
|
+
// immediately re-opens showing those choices. Picking a value
|
|
5
|
+
// inserts it and (if args[1] also has choices) chains to the
|
|
6
|
+
// next arg. When all arg-choices are consumed (or an arg has
|
|
7
|
+
// no choices), the dropdown closes and the user submits with
|
|
8
|
+
// Enter (gated by app.js so Enter-while-open never submits).
|
|
9
|
+
//
|
|
10
|
+
// The arg metadata is the `args[i].choices` field already exposed by
|
|
11
|
+
// `chat.commands.list` — no server-side change needed for static enums.
|
|
12
|
+
// Dynamic completions (skill names, session ids) are a Phase 2 follow-up
|
|
13
|
+
// that will extend `getArgChoices` to call a per-arg RPC.
|
|
14
|
+
//
|
|
15
|
+
// Choices in the registry come in two shapes; both are normalised to
|
|
16
|
+
// `{ value, label }` here so the renderer doesn't care:
|
|
17
|
+
// - "today" → { value: "today", label: "today" }
|
|
18
|
+
// - { value: "today", label: "Today" } → { value: "today", label: "Today" }
|
|
5
19
|
|
|
6
20
|
(function () {
|
|
7
21
|
const promptInput = document.getElementById("prompt-input");
|
|
@@ -20,6 +34,12 @@
|
|
|
20
34
|
let filtered = [];
|
|
21
35
|
let selectedIndex = 0;
|
|
22
36
|
let isOpen = false;
|
|
37
|
+
// When non-null we're filling an arg for this command at activeArgIndex;
|
|
38
|
+
// when null we're picking a command. Set/cleared by `refilter()` based
|
|
39
|
+
// on the parsed input, never by hand — keeps the state machine from
|
|
40
|
+
// drifting from what the user actually typed.
|
|
41
|
+
let activeCommand = null;
|
|
42
|
+
let activeArgIndex = -1;
|
|
23
43
|
|
|
24
44
|
// Fetch the command registry. The WebSocket handshake completes async, so
|
|
25
45
|
// we must wait for `gateway:connected` (dispatched by app.js after the
|
|
@@ -53,17 +73,227 @@
|
|
|
53
73
|
void loadCommands();
|
|
54
74
|
});
|
|
55
75
|
|
|
76
|
+
function escapeHtml(str) {
|
|
77
|
+
return String(str)
|
|
78
|
+
.replace(/&/g, "&")
|
|
79
|
+
.replace(/</g, "<")
|
|
80
|
+
.replace(/>/g, ">")
|
|
81
|
+
.replace(/"/g, """);
|
|
82
|
+
}
|
|
83
|
+
|
|
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) {
|
|
148
|
+
const arg = cmd?.args?.[argIndex];
|
|
149
|
+
if (!arg) {
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
if (arg.captureRemaining) {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
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 [];
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function findCommandByName(name) {
|
|
165
|
+
const lower = String(name).toLowerCase();
|
|
166
|
+
return commands.find((cmd) => (cmd.nativeName ?? cmd.key).toLowerCase() === lower);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Parse the current input into either {mode:"command", commandQuery} or
|
|
170
|
+
// {mode:"args", command, argIndex, argPartial}. Returns null if the input
|
|
171
|
+
// doesn't start with "/" — caller closes the dropdown.
|
|
172
|
+
function parseInput() {
|
|
173
|
+
const value = promptInput.value;
|
|
174
|
+
if (!value.startsWith("/")) {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
const afterSlash = value.slice(1);
|
|
178
|
+
const endsWithSpace = afterSlash.length > 0 && /\s$/.test(value);
|
|
179
|
+
const tokens = afterSlash.split(/\s+/).filter(Boolean);
|
|
180
|
+
|
|
181
|
+
if (tokens.length === 0) {
|
|
182
|
+
return { mode: "command", commandQuery: "" };
|
|
183
|
+
}
|
|
184
|
+
if (tokens.length === 1 && !endsWithSpace) {
|
|
185
|
+
return { mode: "command", commandQuery: tokens[0] };
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
const cmd = findCommandByName(tokens[0]);
|
|
189
|
+
if (!cmd) {
|
|
190
|
+
// Typed a "/foo " prefix that doesn't match any registered command.
|
|
191
|
+
// Nothing useful to complete — fall back to command-mode filter so
|
|
192
|
+
// the dropdown shows close matches if any.
|
|
193
|
+
return { mode: "command", commandQuery: tokens[0] };
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
const completedArgs = tokens.length - 1;
|
|
197
|
+
const argIndex = endsWithSpace ? completedArgs : completedArgs - 1;
|
|
198
|
+
const argPartial = endsWithSpace ? "" : (tokens[tokens.length - 1] ?? "");
|
|
199
|
+
return { mode: "args", command: cmd, argIndex, argPartial };
|
|
200
|
+
}
|
|
201
|
+
|
|
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;
|
|
209
|
+
const parsed = parseInput();
|
|
210
|
+
if (!parsed) {
|
|
211
|
+
isOpen = false;
|
|
212
|
+
activeCommand = null;
|
|
213
|
+
activeArgIndex = -1;
|
|
214
|
+
render();
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
if (parsed.mode === "command") {
|
|
219
|
+
activeCommand = null;
|
|
220
|
+
activeArgIndex = -1;
|
|
221
|
+
const query = parsed.commandQuery.toLowerCase();
|
|
222
|
+
filtered = commands.filter((cmd) => {
|
|
223
|
+
const name = (cmd.nativeName ?? cmd.key).toLowerCase();
|
|
224
|
+
if (name.startsWith(query)) {
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
if (Array.isArray(cmd.textAliases)) {
|
|
228
|
+
return cmd.textAliases.some((a) => a.toLowerCase().slice(1).startsWith(query));
|
|
229
|
+
}
|
|
230
|
+
return false;
|
|
231
|
+
});
|
|
232
|
+
selectedIndex = 0;
|
|
233
|
+
isOpen = filtered.length > 0;
|
|
234
|
+
render();
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
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
|
+
});
|
|
260
|
+
selectedIndex = 0;
|
|
261
|
+
isOpen = filtered.length > 0;
|
|
262
|
+
render();
|
|
263
|
+
}
|
|
264
|
+
|
|
56
265
|
function render() {
|
|
57
266
|
if (!isOpen || filtered.length === 0) {
|
|
58
267
|
dropdown.classList.remove("open");
|
|
59
268
|
dropdown.innerHTML = "";
|
|
60
269
|
return;
|
|
61
270
|
}
|
|
62
|
-
|
|
271
|
+
|
|
272
|
+
const isArgsMode = activeCommand !== null && activeArgIndex >= 0;
|
|
273
|
+
let html = "";
|
|
274
|
+
|
|
275
|
+
if (isArgsMode) {
|
|
276
|
+
const cmdName = activeCommand.nativeName ?? activeCommand.key;
|
|
277
|
+
const arg = activeCommand.args?.[activeArgIndex];
|
|
278
|
+
const argName = arg?.name ?? "value";
|
|
279
|
+
html += `<div class="slash-ac-header">/${escapeHtml(cmdName)} · choose ${escapeHtml(argName)}</div>`;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
html += filtered
|
|
63
283
|
.slice(0, 8)
|
|
64
|
-
.map((
|
|
65
|
-
const name = cmd.nativeName ?? cmd.key;
|
|
284
|
+
.map((entry, i) => {
|
|
66
285
|
const sel = i === selectedIndex ? " selected" : "";
|
|
286
|
+
if (isArgsMode) {
|
|
287
|
+
const value = entry.value;
|
|
288
|
+
const label = entry.label;
|
|
289
|
+
const showLabel = label && label !== value;
|
|
290
|
+
return `<div class="slash-ac-item slash-ac-arg${sel}" data-index="${i}">
|
|
291
|
+
<span class="slash-ac-name">${escapeHtml(value)}</span>
|
|
292
|
+
${showLabel ? `<span class="slash-ac-desc">${escapeHtml(label)}</span>` : ""}
|
|
293
|
+
</div>`;
|
|
294
|
+
}
|
|
295
|
+
const cmd = entry;
|
|
296
|
+
const name = cmd.nativeName ?? cmd.key;
|
|
67
297
|
const aliasText =
|
|
68
298
|
Array.isArray(cmd.textAliases) && cmd.textAliases.length > 0
|
|
69
299
|
? `<span class="slash-ac-alias">${escapeHtml(cmd.textAliases[0])}</span>`
|
|
@@ -75,59 +305,57 @@
|
|
|
75
305
|
</div>`;
|
|
76
306
|
})
|
|
77
307
|
.join("");
|
|
78
|
-
dropdown.classList.add("open");
|
|
79
|
-
}
|
|
80
308
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
.replace(/&/g, "&")
|
|
84
|
-
.replace(/</g, "<")
|
|
85
|
-
.replace(/>/g, ">")
|
|
86
|
-
.replace(/"/g, """);
|
|
309
|
+
dropdown.innerHTML = html;
|
|
310
|
+
dropdown.classList.add("open");
|
|
87
311
|
}
|
|
88
312
|
|
|
89
|
-
function
|
|
90
|
-
const
|
|
91
|
-
if (!
|
|
92
|
-
isOpen = false;
|
|
93
|
-
render();
|
|
313
|
+
function applySelection() {
|
|
314
|
+
const entry = filtered[selectedIndex];
|
|
315
|
+
if (!entry) {
|
|
94
316
|
return;
|
|
95
317
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
if (Array.isArray(cmd.textAliases)) {
|
|
104
|
-
return cmd.textAliases.some((a) => a.toLowerCase().slice(1).startsWith(query));
|
|
105
|
-
}
|
|
106
|
-
return false;
|
|
107
|
-
});
|
|
108
|
-
selectedIndex = 0;
|
|
109
|
-
isOpen = filtered.length > 0;
|
|
110
|
-
render();
|
|
318
|
+
if (activeCommand !== null && activeArgIndex >= 0) {
|
|
319
|
+
applyArgSelection(entry);
|
|
320
|
+
} else {
|
|
321
|
+
applyCommandSelection(entry);
|
|
322
|
+
}
|
|
111
323
|
}
|
|
112
324
|
|
|
113
|
-
function
|
|
114
|
-
const cmd = filtered[selectedIndex];
|
|
115
|
-
if (!cmd) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
325
|
+
function applyCommandSelection(cmd) {
|
|
118
326
|
const name = cmd.nativeName ?? cmd.key;
|
|
119
|
-
// Preserve any existing args after the first space.
|
|
327
|
+
// Preserve any existing args after the first space (e.g. user pressed
|
|
328
|
+
// / late in a partially-typed command).
|
|
120
329
|
const rest = promptInput.value.slice(1).split(/\s/).slice(1).join(" ");
|
|
121
330
|
promptInput.value =
|
|
122
331
|
cmd.acceptsArgs && !rest ? `/${name} ` : `/${name}${rest ? " " + rest : ""}`;
|
|
123
|
-
isOpen = false;
|
|
124
|
-
render();
|
|
125
332
|
promptInput.focus();
|
|
126
|
-
// Move caret to end.
|
|
127
333
|
promptInput.selectionStart = promptInput.selectionEnd = promptInput.value.length;
|
|
334
|
+
// refilter() reparses: if cmd.args[0] has choices the dropdown chains
|
|
335
|
+
// into args mode; otherwise it closes.
|
|
336
|
+
void refilter();
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
function applyArgSelection(choice) {
|
|
340
|
+
const value = promptInput.value;
|
|
341
|
+
const endsWithSpace = /\s$/.test(value);
|
|
342
|
+
if (endsWithSpace) {
|
|
343
|
+
promptInput.value = value + choice.value + " ";
|
|
344
|
+
} else {
|
|
345
|
+
// Replace the partial at the end with the chosen value.
|
|
346
|
+
const lastSpaceIdx = value.lastIndexOf(" ");
|
|
347
|
+
promptInput.value = value.slice(0, lastSpaceIdx + 1) + choice.value + " ";
|
|
348
|
+
}
|
|
349
|
+
promptInput.focus();
|
|
350
|
+
promptInput.selectionStart = promptInput.selectionEnd = promptInput.value.length;
|
|
351
|
+
// refilter() reparses: if the next arg has choices, chain to it;
|
|
352
|
+
// otherwise close.
|
|
353
|
+
void refilter();
|
|
128
354
|
}
|
|
129
355
|
|
|
130
|
-
promptInput.addEventListener("input",
|
|
356
|
+
promptInput.addEventListener("input", () => {
|
|
357
|
+
void refilter();
|
|
358
|
+
});
|
|
131
359
|
|
|
132
360
|
promptInput.addEventListener("keydown", (e) => {
|
|
133
361
|
if (!isOpen) {
|
|
@@ -146,6 +374,8 @@
|
|
|
146
374
|
applySelection();
|
|
147
375
|
} else if (e.key === "Escape") {
|
|
148
376
|
isOpen = false;
|
|
377
|
+
activeCommand = null;
|
|
378
|
+
activeArgIndex = -1;
|
|
149
379
|
render();
|
|
150
380
|
}
|
|
151
381
|
});
|
|
@@ -162,6 +392,8 @@
|
|
|
162
392
|
document.addEventListener("click", (e) => {
|
|
163
393
|
if (!dropdown.contains(e.target) && e.target !== promptInput) {
|
|
164
394
|
isOpen = false;
|
|
395
|
+
activeCommand = null;
|
|
396
|
+
activeArgIndex = -1;
|
|
165
397
|
render();
|
|
166
398
|
}
|
|
167
399
|
});
|
|
@@ -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-
|
|
10
|
-
import "./call-
|
|
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-
|
|
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-
|
|
17
|
-
import "./call-
|
|
16
|
+
import "./client-CJeYdM6G.js";
|
|
17
|
+
import "./call-C386w5E5.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-
|
|
24
|
+
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-Cwi5kJzl.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-
|
|
13
|
+
import { n as callGateway } from "./call-C386w5E5.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-
|
|
19
|
+
import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-mW55B30K.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-
|
|
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-
|
|
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";
|
package/dist/daemon-cli.js
CHANGED
|
@@ -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",
|
|
@@ -9,7 +9,7 @@ import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CZ_mYw
|
|
|
9
9
|
import { _ as listDeliverableMessageChannels, c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph, v as normalizeMessageChannel } from "./chunk-CAZujdOi.js";
|
|
10
10
|
import { c as loadConfig, d as writeConfigFile, m as parseByteSize, p as parseDurationMs, s as createConfigIO, t as SsrFBlockedError } from "./ssrf-BCSnhba8.js";
|
|
11
11
|
import { t as parseBooleanValue } from "./boolean-BW6OTjPi.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-
|
|
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-3jl2ulOE.js";
|
|
13
13
|
import { t as formatCliCommand } from "./command-format-DPd9RN2g.js";
|
|
14
14
|
import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-DO7WNsVJ.js";
|
|
15
15
|
import { n as formatErrorMessage, t as extractErrorCode } from "./errors-BEU7IHU6.js";
|
|
@@ -1331,7 +1331,7 @@ function isModuleNotFoundError(err) {
|
|
|
1331
1331
|
}
|
|
1332
1332
|
async function loadPwAiModule(mode) {
|
|
1333
1333
|
try {
|
|
1334
|
-
return await import("./pw-ai-
|
|
1334
|
+
return await import("./pw-ai-DOAsQ5NX.js");
|
|
1335
1335
|
} catch (err) {
|
|
1336
1336
|
if (mode === "soft") return null;
|
|
1337
1337
|
if (isModuleNotFoundError(err)) return null;
|
|
@@ -3928,11 +3928,11 @@ function createProfileContext(opts, profile) {
|
|
|
3928
3928
|
const userDataDir = resolveSymiUserDataDir(profile.name);
|
|
3929
3929
|
const profileState = getProfileState();
|
|
3930
3930
|
if (await isHttpReachable(300) && !profileState.running) try {
|
|
3931
|
-
await (await import("./pw-ai-
|
|
3931
|
+
await (await import("./pw-ai-DOAsQ5NX.js")).closePlaywrightBrowserConnection();
|
|
3932
3932
|
} catch {}
|
|
3933
3933
|
if (profileState.running) await stopRunningBrowser();
|
|
3934
3934
|
try {
|
|
3935
|
-
await (await import("./pw-ai-
|
|
3935
|
+
await (await import("./pw-ai-DOAsQ5NX.js")).closePlaywrightBrowserConnection();
|
|
3936
3936
|
} catch {}
|
|
3937
3937
|
if (!fs.existsSync(userDataDir)) return {
|
|
3938
3938
|
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 {
|
|
16
|
-
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-
|
|
15
|
+
import { $t as summarizeDeviceTokens, Wt as approveDevicePairing, qt as listDevicePairing } from "./client-CJeYdM6G.js";
|
|
16
|
+
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-C386w5E5.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 {
|
|
9
|
-
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-
|
|
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,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-
|
|
4
|
+
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-Dz6vTqBm.js";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { spawnSync } from "node:child_process";
|
|
7
7
|
|
|
@@ -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-
|
|
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
|
|
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-
|
|
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
|
});
|
|
@@ -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-
|
|
9
|
-
import "./call-
|
|
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-
|
|
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-
|
|
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
|
|
|
@@ -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-
|
|
15
|
-
import "./call-
|
|
14
|
+
import "./client-CJeYdM6G.js";
|
|
15
|
+
import "./call-C386w5E5.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-
|
|
21
|
+
import { n as callGatewayFromCli } from "./gateway-rpc-Cwi5kJzl.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-
|
|
26
|
+
import { i as resolveNodeId, r as nodesCallOpts } from "./rpc-Batd5KYw.js";
|
|
27
27
|
import JSON5 from "json5";
|
|
28
28
|
import fs from "node:fs/promises";
|
|
29
29
|
|