@symerian/symi 3.4.30 → 3.4.31
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-O3PihJOY.js → agent-ZFfYdexc.js} +10 -10
- package/dist/{agents-C2MpIr16.js → agents-C8naPegc.js} +5 -5
- package/dist/{audit-yf3H4Y1h.js → audit-DOfexJi4.js} +8 -8
- package/dist/{auth-choice-CyBcsQ9T.js → auth-choice-DxH-c3vK.js} +4 -4
- package/dist/{banner-D7__HlM-.js → banner-D7zYLyA8.js} +1 -1
- package/dist/{browser-cli-B_6WWHm_.js → browser-cli-MYIql1Ic.js} +3 -3
- package/dist/build-info.json +1 -1
- package/dist/bundled/boot-md/handler.js +4 -4
- package/dist/bundled/session-memory/handler.js +4 -4
- package/dist/{call-IfleM0ap.js → call-D9U2Sfhp.js} +1 -1
- package/dist/{channel-options-B5974x-7.js → channel-options-9PzSNQLG.js} +1 -1
- package/dist/{channels-cli-C6Nv9mzy.js → channels-cli-C3XnNkE5.js} +30 -30
- package/dist/{chrome-DT1fIVG1.js → chrome-B4P7ycw5.js} +7 -7
- package/dist/{chrome-DJCkCRLf.js → chrome-ClVIwINy.js} +1 -1
- package/dist/{cli-DZoms4qg.js → cli-DhTdzhjk.js} +26 -26
- package/dist/{command-registry--D98SJ6k.js → command-registry-BOwku-e8.js} +11 -11
- package/dist/{completion-cli-CHYvpIPw.js → completion-cli-KZYbGY4H.js} +2 -2
- package/dist/{config-BTSBEAnk.js → config-Byd2Y9rr.js} +5 -5
- package/dist/{config-cli-DstpcB33.js → config-cli-CJ1CRfG8.js} +5 -5
- package/dist/{config-guard-CCJrDmON.js → config-guard-zt0zhFHl.js} +2 -2
- package/dist/{config-validation-YCrMlM9Z.js → config-validation-CRazk6Kd.js} +1 -1
- package/dist/{configure-B-UvSZZ7.js → configure-CFY_XEps.js} +10 -10
- package/dist/{control-service-CwRG4M_O.js → control-service-DN6-IdFk.js} +4 -4
- package/dist/{cron-cli-DUETe3Of.js → cron-cli-fmiz43Pz.js} +3 -3
- package/dist/{daemon-cli-Dy5eY4M7.js → daemon-cli-BilAL40g.js} +6 -6
- package/dist/{daemon-runtime-ChztAKDA.js → daemon-runtime-D4KHzQq2.js} +1 -1
- package/dist/{deliver-59sRVaYQ.js → deliver-BkCYBlzi.js} +4 -4
- package/dist/{deliver-BHmK4isn.js → deliver-CnsfN7km.js} +1 -1
- package/dist/{devices-cli-BCZ2HHjT.js → devices-cli-D7HdOwRI.js} +2 -2
- package/dist/{directory-cli-BVGd0l0T.js → directory-cli-ed6QacBC.js} +1 -1
- package/dist/{dns-cli-DH-ksmiI.js → dns-cli-RPa1dGTQ.js} +1 -1
- package/dist/{docs-cli-BuX8FDdh.js → docs-cli-ZTdS_Gak.js} +2 -2
- package/dist/{doctor-completion-C4Sf8CFV.js → doctor-completion-DpGX8dau.js} +1 -1
- package/dist/{doctor-config-flow-BhmF6EAq.js → doctor-config-flow-CIrG_yW_.js} +4 -4
- package/dist/entry.js +3 -3
- package/dist/{exec-approvals-cli-CyXTXgft.js → exec-approvals-cli-65pcsa1y.js} +6 -6
- package/dist/{frontmatter-BH3ExkUY.js → frontmatter-B4levtVg.js} +2 -2
- package/dist/{gateway-cli-fT43bqlv.js → gateway-cli-CTi7Wl2k.js} +50 -50
- package/dist/{gateway-rpc-BEqCo2JK.js → gateway-rpc-2VPLhMhx.js} +1 -1
- package/dist/{glass-ui-ws-BfMKuf9v.js → glass-ui-ws-Bah_A-jn.js} +38 -38
- package/dist/{gmail-setup-utils-Cz9Tb30q.js → gmail-setup-utils-C9WBC6Cd.js} +1 -1
- package/dist/{health-DDxrkioj.js → health-B5rRzhyV.js} +3 -3
- package/dist/{hooks-cli-Btgk__9z.js → hooks-cli-CSDCGO-W.js} +29 -29
- package/dist/{hooks-status-BaV4_YaJ.js → hooks-status-OorbLcc2.js} +2 -2
- package/dist/index.js +0 -0
- package/dist/{lifecycle-core-B0tG8ERp.js → lifecycle-core-BRc-XqTk.js} +2 -2
- package/dist/llm-slug-generator.js +4 -4
- package/dist/{logs-cli-CUhZrDw7.js → logs-cli-D5phVUOT.js} +3 -3
- package/dist/{manager-BeNnzSJv.js → manager-BfhHvsI9.js} +1 -1
- package/dist/{manager-Di9qtuZF.js → manager-DzBH9uQG.js} +1 -1
- package/dist/{memory-BDeydRz3.js → memory-BCj0cj5v.js} +3 -3
- package/dist/{memory-cli-D4hZiGr5.js → memory-cli-9WUMBHol.js} +3 -3
- package/dist/{model-catalog-DPnCNs5N.js → model-catalog-CD2kTz4V.js} +2 -2
- package/dist/{model-picker-DuPommMc.js → model-picker-CVd5UuXV.js} +2 -2
- package/dist/{models-cli-CL5K06Wu.js → models-cli-rd4eX_6P.js} +30 -30
- package/dist/{models-config-CPlvO1b0.js → models-config-oxaGiRUT.js} +1 -1
- package/dist/{models-B0wNKA18.js → models-sbKIrJBG.js} +9 -9
- package/dist/{node-cli-CWWMajKF.js → node-cli-ClLXSdFL.js} +9 -9
- package/dist/{nodes-cli-YmE7S-JB.js → nodes-cli-DY38p5In.js} +3 -3
- package/dist/{onboard-HqUZVKyD.js → onboard-BAyp_UFm.js} +7 -7
- package/dist/{onboard-channels-BbF5-N3g.js → onboard-channels-CUpkV_IJ.js} +1 -1
- package/dist/{onboard-custom-63SI3jrk.js → onboard-custom-BMgLK-vo.js} +2 -2
- package/dist/{onboard-helpers-Cb3WFLl9.js → onboard-helpers-DIQjpQ-s.js} +2 -2
- package/dist/{onboard-hooks-DXXg3YH9.js → onboard-hooks-KZKmj5Dk.js} +3 -3
- package/dist/{onboard-remote-CqtCrqtm.js → onboard-remote-C-_NUgBl.js} +1 -1
- package/dist/{onboard-skills-CS3l5fhH.js → onboard-skills-CwvicFTi.js} +3 -3
- package/dist/{onboarding-Be_HJIFA.js → onboarding-BxCNNo75.js} +11 -11
- package/dist/{onboarding.finalize-dsCUTKCQ.js → onboarding.finalize-DgMPXTtO.js} +18 -18
- package/dist/{onboarding.gateway-config-Ctd1_QW4.js → onboarding.gateway-config-BAaWvPSX.js} +4 -4
- package/dist/{outbound-send-deps-DPsU_Xdy.js → outbound-send-deps-qhFaNYAY.js} +1 -1
- package/dist/{pairing-cli-PtlNv7Gr.js → pairing-cli-CFkiSx8t.js} +1 -1
- package/dist/{pi-embedded-helpers-CVKIHnFv.js → pi-embedded-helpers-CRG5LMS7.js} +1 -1
- package/dist/{pi-tools.policy-8_wTu7v2.js → pi-tools.policy-De6xHjVL.js} +2 -2
- package/dist/{plugin-registry-BG51uZOA.js → plugin-registry-BNe5jtPK.js} +2 -2
- package/dist/plugin-sdk/index.js +6 -6
- package/dist/{plugins-cli-B-zVOiQN.js → plugins-cli-CWj33_Hj.js} +27 -27
- package/dist/{program-BOh0XGsA.js → program-Z2OLlhsB.js} +33 -33
- package/dist/{prompt-select-styled-Bj-hrPCx.js → prompt-select-styled-BNwbBBcH.js} +16 -16
- package/dist/{provider-auth-helpers-BK6NFk2Q.js → provider-auth-helpers-5qb15Hje.js} +2 -2
- package/dist/{push-apns-CMxk3Hxf.js → push-apns-D6qV5P4h.js} +1 -1
- package/dist/{pw-ai-C5MJKzUM.js → pw-ai-BsEf8C15.js} +1 -1
- package/dist/{pw-ai-CE2TBGif.js → pw-ai-C7mvVllB.js} +2 -2
- package/dist/{qr-cli-BeHlC33g.js → qr-cli-oENcXq8d.js} +1 -1
- package/dist/{redact-identifier-B1VHIbnd.js → redact-identifier-ZE8OIUof.js} +1 -1
- package/dist/{register.agent-COv5OPLQ.js → register.agent-DpiHPMca.js} +36 -36
- package/dist/{register.configure-RhKVlfWH.js → register.configure-DRFaroYF.js} +40 -40
- package/dist/{register.maintenance-BAK-DiQY.js → register.maintenance-BGNNTt_1.js} +38 -38
- package/dist/{register.message-CCBmn5ja.js → register.message-R4AIHhlU.js} +28 -28
- package/dist/{register.onboard-B3jO_Goy.js → register.onboard-Cl-_Suyv.js} +13 -13
- package/dist/{register.setup-CYSISTDO.js → register.setup-Dt98v2V3.js} +15 -15
- package/dist/{register.status-health-sessions-CGbg9k6d.js → register.status-health-sessions-DiX5lVyr.js} +23 -23
- package/dist/{register.subclis-loifbhVx.js → register.subclis-DVObuR_P.js} +28 -28
- package/dist/{replies-Dj640LxQ.js → replies-VTJu1jUK.js} +1 -1
- package/dist/{routes-B5y-oAKp.js → routes-DOFg6X5M.js} +3 -3
- package/dist/{rpc-qWm1bRo5.js → rpc-BIHKXdlN.js} +1 -1
- package/dist/{run-main-B7Ria3zD.js → run-main-NAgYKzSu.js} +44 -44
- package/dist/{sandbox-BJgHc4Vu.js → sandbox-EB7cFSML.js} +6 -6
- package/dist/{sandbox-cli-CSudrHYL.js → sandbox-cli-D4dy6sUK.js} +8 -8
- package/dist/{security-cli-B2lCR2xX.js → security-cli-DwCKOrFm.js} +11 -11
- package/dist/{send-CY9na-Jw.js → send-CkRtuQbr.js} +1 -1
- package/dist/{server-context-DdWWaDf6.js → server-context-ww1jytet.js} +5 -5
- package/dist/{server-methods-Dk_EnINI.js → server-methods-BDiZyPvS.js} +23 -23
- package/dist/{server-node-events-BHegSgG9.js → server-node-events-9cY40B4m.js} +29 -29
- package/dist/{session-utils-CAVPV2Hh.js → session-utils-CStjqGE6.js} +3 -3
- package/dist/{sessions-BDM9kNY0.js → sessions-BSRHJH8T.js} +3 -3
- package/dist/{sessions-CqLQkkWg.js → sessions-CInbrqsF.js} +1 -1
- package/dist/{shared-CpwtQRJB.js → shared-DEAo94kI.js} +1 -1
- package/dist/{skill-commands-CRQniaHy.js → skill-commands-BkKfrbHt.js} +2 -2
- package/dist/{skills-CTcjFd_F.js → skills-CFLijAZ-.js} +1 -1
- package/dist/{skills-cli-9Mlb7VRg.js → skills-cli-BbagnO6p.js} +5 -5
- package/dist/{skills-install-D5ikt72d.js → skills-install-dLRO1KGp.js} +2 -2
- package/dist/{skills-remote-BASG1Doo.js → skills-remote-DQVB-3Pj.js} +1 -1
- package/dist/{skills-status-1iVfuVIG.js → skills-status-HWybfj0K.js} +2 -2
- package/dist/{status-Bci6O3aA.js → status-BSrVEUoJ.js} +2 -2
- package/dist/{status-D5RhVO0A.js → status-FIp7UKru.js} +12 -12
- package/dist/{status.update-D5CachQ_.js → status.update-Cm8Fm8QD.js} +1 -1
- package/dist/{subagent-registry-CsXaK_sy.js → subagent-registry-DqryocLT.js} +31 -31
- package/dist/{synthesis-dplLmFIP.js → synthesis-CS-lrEGy.js} +4 -4
- package/dist/{synthesis-BoZf8BeO.js → synthesis-DKhH0YwU.js} +26 -26
- package/dist/{system-cli-D5FffFX5.js → system-cli-DYSI6cIB.js} +3 -3
- package/dist/{systemd-hints-CufcSfMk.js → systemd-hints-EIfW5y8K.js} +1 -1
- package/dist/{tui-DZ8gksSZ.js → tui-C20rHOeB.js} +4 -4
- package/dist/{tui-cli-CyBJYh9u.js → tui-cli-JwlzHCza.js} +11 -11
- package/dist/{unified-runner-BFLLzEHE.js → unified-runner-AM9tFC5q.js} +10 -10
- package/dist/{update-cli-yW6Xl6fs.js → update-cli-BYfA3RPc.js} +41 -41
- package/dist/{update-runner-CIgLduhH.js → update-runner-CBG8p9iG.js} +1 -1
- package/dist/{webhooks-cli-4bmyKzwb.js → webhooks-cli-MuG_QGLp.js} +4 -4
- package/dist/{with-timeout-bWr6yBeX.js → with-timeout-BvxaeAo6.js} +1 -1
- package/dist/{workspace-DxscDsm6.js → workspace-D0d7Gi4-.js} +1 -1
- package/extensions/memory-core/node_modules/.bin/symi +0 -0
- package/extensions/msteams/node_modules/.bin/symi +0 -0
- package/extensions/outlook/node_modules/.bin/symi +0 -0
- package/extensions/slack/node_modules/.bin/symi +0 -0
- package/package.json +108 -79
- package/dist/control-ui/css/revert-red-theme.md +0 -141
- package/dist/control-ui/css/style.css +0 -5843
- package/dist/control-ui/css/style.css.backup-2026-03-03-162525 +0 -3546
- package/dist/control-ui/css/style.css.backup-before-red-2026-03-03-162525 +0 -3546
- package/dist/control-ui/css/style.css.backup-before-red-theme-2026-03-03-162530 +0 -3546
- package/dist/control-ui/css/style.css.pre-2row +0 -2165
- package/dist/control-ui/css/style.css.pre-brand +0 -1776
- package/dist/control-ui/css/style.css.pre-history +0 -1974
- package/dist/control-ui/css/style.css.pre-nav +0 -2264
- package/dist/control-ui/css/style.css.pre-newsession +0 -1898
- package/dist/control-ui/css/style.css.pre-queue +0 -2195
- package/dist/control-ui/css/style.css.pre-red-prompt +0 -2524
- package/dist/control-ui/css/style.css.pre-stop +0 -2239
- package/dist/control-ui/css/style.css.pre-textarea +0 -2184
- package/dist/control-ui/css/style.css.pre-watchdog +0 -1848
- package/dist/control-ui/css/style.css.red-theme +0 -2999
- package/dist/control-ui/index.html +0 -1042
- package/dist/control-ui/js/app.js +0 -1304
- package/dist/control-ui/js/app.js.pre-2row +0 -463
- package/dist/control-ui/js/app.js.pre-heartbeat-filter +0 -595
- package/dist/control-ui/js/app.js.pre-newsession +0 -408
- package/dist/control-ui/js/app.js.pre-queue +0 -476
- package/dist/control-ui/js/app.js.pre-stop +0 -564
- package/dist/control-ui/js/app.js.pre-textarea +0 -467
- package/dist/control-ui/js/app.js.pre-watchdog +0 -293
- package/dist/control-ui/js/connections.js +0 -438
- package/dist/control-ui/js/gateway.js +0 -233
- package/dist/control-ui/js/gateway.js.pre-stop +0 -110
- package/dist/control-ui/js/history.js +0 -732
- package/dist/control-ui/js/logs.js +0 -238
- package/dist/control-ui/js/menu.js +0 -230
- package/dist/control-ui/js/menu.js.pre-nav +0 -66
- package/dist/control-ui/js/metrics.js +0 -53
- package/dist/control-ui/js/models.js +0 -138
- package/dist/control-ui/js/render.js +0 -882
- package/dist/control-ui/js/render.test.js +0 -112
- package/dist/control-ui/js/scheduling.js +0 -461
- package/dist/control-ui/js/settings.js +0 -909
- package/dist/control-ui/js/slash-autocomplete.js +0 -168
- package/dist/control-ui/js/subagents.js +0 -560
- package/dist/control-ui/js/utils.js +0 -29
- package/dist/control-ui/vendor/highlight.min.js +0 -2518
- package/dist/control-ui/vendor/marked.min.js +0 -69
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
// ── Slash command autocomplete for the prompt input ─────────────────────
|
|
2
|
-
// Fetches the chat command registry from the gateway via `chat.commands.list`
|
|
3
|
-
// and surfaces it as a dropdown when the user types `/` at the start of the
|
|
4
|
-
// prompt. Replaces the prior "you have to memorize the slash commands" UX.
|
|
5
|
-
|
|
6
|
-
(function () {
|
|
7
|
-
const promptInput = document.getElementById("prompt-input");
|
|
8
|
-
const promptRowMain = document.querySelector(".prompt-row-main");
|
|
9
|
-
if (!promptInput || !promptRowMain) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
// Build the dropdown element once; show/hide via .open class.
|
|
14
|
-
const dropdown = document.createElement("div");
|
|
15
|
-
dropdown.className = "slash-autocomplete";
|
|
16
|
-
dropdown.id = "slash-autocomplete";
|
|
17
|
-
promptRowMain.parentElement.insertBefore(dropdown, promptRowMain);
|
|
18
|
-
|
|
19
|
-
let commands = [];
|
|
20
|
-
let filtered = [];
|
|
21
|
-
let selectedIndex = 0;
|
|
22
|
-
let isOpen = false;
|
|
23
|
-
|
|
24
|
-
// Fetch the command registry. The WebSocket handshake completes async, so
|
|
25
|
-
// we must wait for `gateway:connected` (dispatched by app.js after the
|
|
26
|
-
// gateway's connect event) before calling rpc — otherwise the rpc helper
|
|
27
|
-
// rejects with "gateway not connected" and we silently end up with an
|
|
28
|
-
// empty command list.
|
|
29
|
-
let loaded = false;
|
|
30
|
-
async function loadCommands() {
|
|
31
|
-
if (loaded) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
if (!window.gateway?.rpc) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
if (!window.gateway.ws || window.gateway.ws.readyState !== WebSocket.OPEN) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
try {
|
|
41
|
-
const result = await window.gateway.rpc("chat.commands.list", {});
|
|
42
|
-
commands = Array.isArray(result?.commands) ? result.commands : [];
|
|
43
|
-
loaded = true;
|
|
44
|
-
console.log("[slash-autocomplete] loaded", commands.length, "commands");
|
|
45
|
-
} catch (err) {
|
|
46
|
-
console.warn("[slash-autocomplete] failed to load commands:", err);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
// Try once now in case we attached after the event already fired.
|
|
50
|
-
void loadCommands();
|
|
51
|
-
// And on every connect event (covers initial connect + reconnects).
|
|
52
|
-
window.addEventListener("gateway:connected", () => {
|
|
53
|
-
void loadCommands();
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
function render() {
|
|
57
|
-
if (!isOpen || filtered.length === 0) {
|
|
58
|
-
dropdown.classList.remove("open");
|
|
59
|
-
dropdown.innerHTML = "";
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
dropdown.innerHTML = filtered
|
|
63
|
-
.slice(0, 8)
|
|
64
|
-
.map((cmd, i) => {
|
|
65
|
-
const name = cmd.nativeName ?? cmd.key;
|
|
66
|
-
const sel = i === selectedIndex ? " selected" : "";
|
|
67
|
-
const aliasText =
|
|
68
|
-
Array.isArray(cmd.textAliases) && cmd.textAliases.length > 0
|
|
69
|
-
? `<span class="slash-ac-alias">${escapeHtml(cmd.textAliases[0])}</span>`
|
|
70
|
-
: "";
|
|
71
|
-
return `<div class="slash-ac-item${sel}" data-index="${i}">
|
|
72
|
-
<span class="slash-ac-name">/${escapeHtml(name)}</span>
|
|
73
|
-
${aliasText}
|
|
74
|
-
<span class="slash-ac-desc">${escapeHtml(cmd.description ?? "")}</span>
|
|
75
|
-
</div>`;
|
|
76
|
-
})
|
|
77
|
-
.join("");
|
|
78
|
-
dropdown.classList.add("open");
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
function escapeHtml(str) {
|
|
82
|
-
return String(str)
|
|
83
|
-
.replace(/&/g, "&")
|
|
84
|
-
.replace(/</g, "<")
|
|
85
|
-
.replace(/>/g, ">")
|
|
86
|
-
.replace(/"/g, """);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
function refilter() {
|
|
90
|
-
const value = promptInput.value;
|
|
91
|
-
if (!value.startsWith("/")) {
|
|
92
|
-
isOpen = false;
|
|
93
|
-
render();
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
// Only the first token (no spaces) is the command query.
|
|
97
|
-
const query = value.slice(1).split(/\s/, 1)[0].toLowerCase();
|
|
98
|
-
filtered = commands.filter((cmd) => {
|
|
99
|
-
const name = (cmd.nativeName ?? cmd.key).toLowerCase();
|
|
100
|
-
if (name.startsWith(query)) {
|
|
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();
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
function applySelection() {
|
|
114
|
-
const cmd = filtered[selectedIndex];
|
|
115
|
-
if (!cmd) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const name = cmd.nativeName ?? cmd.key;
|
|
119
|
-
// Preserve any existing args after the first space.
|
|
120
|
-
const rest = promptInput.value.slice(1).split(/\s/).slice(1).join(" ");
|
|
121
|
-
promptInput.value =
|
|
122
|
-
cmd.acceptsArgs && !rest ? `/${name} ` : `/${name}${rest ? " " + rest : ""}`;
|
|
123
|
-
isOpen = false;
|
|
124
|
-
render();
|
|
125
|
-
promptInput.focus();
|
|
126
|
-
// Move caret to end.
|
|
127
|
-
promptInput.selectionStart = promptInput.selectionEnd = promptInput.value.length;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
promptInput.addEventListener("input", refilter);
|
|
131
|
-
|
|
132
|
-
promptInput.addEventListener("keydown", (e) => {
|
|
133
|
-
if (!isOpen) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
if (e.key === "ArrowDown") {
|
|
137
|
-
e.preventDefault();
|
|
138
|
-
selectedIndex = Math.min(selectedIndex + 1, Math.min(filtered.length, 8) - 1);
|
|
139
|
-
render();
|
|
140
|
-
} else if (e.key === "ArrowUp") {
|
|
141
|
-
e.preventDefault();
|
|
142
|
-
selectedIndex = Math.max(selectedIndex - 1, 0);
|
|
143
|
-
render();
|
|
144
|
-
} else if (e.key === "Enter" || e.key === "Tab") {
|
|
145
|
-
e.preventDefault();
|
|
146
|
-
applySelection();
|
|
147
|
-
} else if (e.key === "Escape") {
|
|
148
|
-
isOpen = false;
|
|
149
|
-
render();
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
dropdown.addEventListener("mousedown", (e) => {
|
|
154
|
-
const target = e.target.closest(".slash-ac-item");
|
|
155
|
-
if (target) {
|
|
156
|
-
e.preventDefault();
|
|
157
|
-
selectedIndex = parseInt(target.getAttribute("data-index"), 10) || 0;
|
|
158
|
-
applySelection();
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
document.addEventListener("click", (e) => {
|
|
163
|
-
if (!dropdown.contains(e.target) && e.target !== promptInput) {
|
|
164
|
-
isOpen = false;
|
|
165
|
-
render();
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
})();
|