@burdenoff/fe-libs 2026.1029.7 → 2026.1029.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/shared/assistant/appControls/grammar.js +21 -21
- package/dist/shared/assistant/appControls/registry.js +1 -1
- package/dist/shared/assistant/commandCompletions.js +87 -86
- package/dist/shared/assistant/i18nManifest.d.ts +27 -0
- package/dist/shared/assistant/i18nManifest.js +27 -0
- package/dist/shared/assistant/index.d.ts +9 -0
- package/dist/shared/assistant/localUiCommands.js +106 -112
- package/dist/shared/assistant/localeCommands/languageNames.js +13 -13
- package/dist/shared/assistant/ui/AIAssistantPanel.d.ts +11 -0
- package/dist/shared/assistant/ui/AIAssistantPanel.js +233 -127
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts +13 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +1632 -1605
- package/dist/shared/assistant/ui/AssistantConversationList.d.ts +17 -1
- package/dist/shared/assistant/ui/AssistantConversationList.js +304 -274
- package/dist/shared/assistant/ui/AssistantOverlay.d.ts +11 -0
- package/dist/shared/assistant/ui/AssistantOverlay.js +106 -90
- package/dist/shared/assistant/ui/closeGuard.d.ts +21 -0
- package/dist/shared/assistant/ui/closeGuard.js +8 -0
- package/dist/shared/assistant/ui/compact/AssistantCompactHeader.d.ts +38 -0
- package/dist/shared/assistant/ui/compact/AssistantCompactHeader.js +89 -0
- package/dist/shared/assistant/ui/compact/AssistantConversationMenu.d.ts +29 -0
- package/dist/shared/assistant/ui/compact/AssistantConversationMenu.js +87 -0
- package/dist/shared/assistant/ui/compact/AssistantDiscardDraftDialog.d.ts +19 -0
- package/dist/shared/assistant/ui/compact/AssistantDiscardDraftDialog.js +38 -0
- package/dist/shared/assistant/ui/compact/AssistantMenuView.d.ts +42 -0
- package/dist/shared/assistant/ui/compact/AssistantMenuView.js +285 -0
- package/dist/shared/assistant/ui/compact/AssistantVoiceLanguageSettings.d.ts +24 -0
- package/dist/shared/assistant/ui/compact/AssistantVoiceLanguageSettings.js +68 -0
- package/dist/shared/assistant/ui/compact/AssistantWaitingChangeRow.d.ts +21 -0
- package/dist/shared/assistant/ui/compact/AssistantWaitingChangeRow.js +34 -0
- package/dist/shared/assistant/ui/compact/compactChrome.d.ts +75 -0
- package/dist/shared/assistant/ui/compact/compactChrome.js +39 -0
- package/dist/shared/assistant/ui/compact/waitingChange.d.ts +49 -0
- package/dist/shared/assistant/ui/compact/waitingChange.js +12 -0
- package/dist/shared/assistant/ui/composer/AssistantComposer.d.ts +19 -18
- package/dist/shared/assistant/ui/composer/AssistantComposer.js +261 -224
- package/dist/shared/assistant/useAssistantKeyboardShortcuts.d.ts +16 -2
- package/dist/shared/assistant/useAssistantKeyboardShortcuts.js +28 -16
- package/dist/shared-assistant.js +51 -42
- package/package.json +1 -1
|
@@ -24,7 +24,7 @@ var l = 60, u = /^(?:log ?out|sign ?out|(?:log|sign) (?:me )?out(?: of (?:the |m
|
|
|
24
24
|
RegExp(`^(?:change|switch|set|update|turn|put|make)(?: over)? ${r}(?:(?:app|ui|user interface|interface|screen|display|site|system|menu|application) )?language (?:to|into|as|over to) (.+)$`),
|
|
25
25
|
RegExp(`^(?:switch|change|set|put|turn) ${r}(?:app|ui|user interface|interface|screen|display|site|application|menus?) (?:language )?(?:to|into) (.+)$`),
|
|
26
26
|
RegExp(`^(?:show|display|use|run) ${r}(?:app|ui|user interface|interface|screen|display|site|application)(?: menus?)? in (.+)$`)
|
|
27
|
-
], j = RegExp(`^(?:switch|change)(?: over)? to ${r}(.+)$`), M = RegExp(`^${i} ${r}(?:(?:assistant|ai|conversation|conversations|chat) history|history of (?:my )?(?:conversations|chats)|(?:past|previous|old|earlier) conversations)$`), N = RegExp(`^${i} ${r}history$`), P = RegExp(`^${i} ${r}(?:voice|spoken|speech) transcript$`),
|
|
27
|
+
], j = RegExp(`^(?:switch|change)(?: over)? to ${r}(.+)$`), M = RegExp(`^${i} ${r}(?:(?:assistant|ai|conversation|conversations|chat) history|history of (?:my )?(?:conversations|chats)|(?:past|previous|old|earlier) conversations)$`), N = RegExp(`^${i} ${r}history$`), P = RegExp(`^${i} ${r}(?:voice|spoken|speech) transcript$`), ne = RegExp(`^${i} ${r}transcript$`), F = RegExp(`^${i} ${r}(?:ai|assistant) preview(?: panel| pane| surface)?$`), I = RegExp(`^${i} ${r}preview(?: panel| pane)?$`), L = RegExp(`^(?:close|hide|dismiss) ${r}(?:ai|assistant) preview(?: panel| pane| surface)?$`), R = RegExp(`^(?:close|hide) ${r}preview(?: panel| pane)?$`), z = /^(?:(?:start|begin|open) (?:a |an |another )?(?:new |fresh |blank )?conversation|new conversation|(?:start|begin) (?:a )?(?:new|fresh) conversation with you)$/, B = [RegExp(`^(?:go to|open|show|show me|switch to|select|view|change to|move to|take me to|bring up) ${r}(.+) tab$`), /^(?:switch|change|move) tabs? to (.+)$/], V = "(?:filter|narrow|limit)(?: down)?", H = [RegExp(`^${V}(?: ${r}(?:page|list|table|results|items|rows|view))? (?:by|to|for|on) ${r}(.+)$`)], U = [/^(?:show|display|list|keep) only (.+)$/, /^only (?:show|display|list|keep) (.+)$/], W = [
|
|
28
28
|
RegExp(`^(?:set|change|switch|put|make) ${r}(.+?) filter (?:to|as|on) (.+)$`),
|
|
29
29
|
RegExp(`^${V} ${r}(.+?) (?:by|to|for|on) (.+)$`),
|
|
30
30
|
RegExp(`^(?:use|apply) ${r}(.+?) filter (?:of|with|for|set to) (.+)$`)
|
|
@@ -33,11 +33,11 @@ var l = 60, u = /^(?:log ?out|sign ?out|(?:log|sign) (?:me )?out(?: of (?:the |m
|
|
|
33
33
|
[/(?: in)? (?:descending|desc)(?: order)?$/, "desc"],
|
|
34
34
|
[/ (?:a to z|low to high|lowest first|smallest first|oldest first)$/, "asc"],
|
|
35
35
|
[/ (?:z to a|high to low|highest first|largest first|biggest first|newest first|latest first)$/, "desc"]
|
|
36
|
-
], q =
|
|
36
|
+
], q = `^(?:sort|order|arrange|rank)(?: ${r}(?:page|list|table|results|items|rows|view|it|them))? by (.+)`, J = RegExp(`${q}$`), re = K.map(([e]) => new RegExp(q + e.source)), Y = /^(?:sort|order)(?: it| them)? (ascending|descending|asc|desc)$/, X = [
|
|
37
37
|
/^(?:search|find|look)(?: (?:this page|the page|the list|the table|this list|this table|here|these|them))? for (.+)$/,
|
|
38
38
|
/^(?:find|search for) (.+?) (?:on|in) (?:this|the) (?:page|list|table)$/,
|
|
39
39
|
/^search (?:this page|the page|the list|the table|here) (?:for )?(.+)$/
|
|
40
|
-
],
|
|
40
|
+
], Z = /^(?:clear|reset|empty|remove|stop) (?:the |my |this )?(?:page )?search(?:ing)?$/, Q = [RegExp(`^(?:open|show|start|bring up|pull up) ${r}(.+?) (?:form|dialog|dialogue|modal)$`)], ie = RegExp(`^(?:open|show|start|bring up|pull up) ${r}(.+)$`), ae = /\b(?:and then|then|and also|also|after that|afterwards|and open|and show|and go|and sort|and filter)\b/;
|
|
41
41
|
function $(e, t) {
|
|
42
42
|
for (let n of e) {
|
|
43
43
|
let e = n.exec(t);
|
|
@@ -45,7 +45,7 @@ function $(e, t) {
|
|
|
45
45
|
}
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
|
-
function
|
|
48
|
+
function oe(e) {
|
|
49
49
|
for (let [t, n] of K) {
|
|
50
50
|
let r = t.exec(e);
|
|
51
51
|
if (r) return {
|
|
@@ -58,13 +58,13 @@ function ae(e) {
|
|
|
58
58
|
direction: null
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
|
-
function
|
|
61
|
+
function se(e) {
|
|
62
62
|
let t = e.replace(/\b(?:please|pls)$/, "").trim();
|
|
63
63
|
return !t || t.length > l ? null : t;
|
|
64
64
|
}
|
|
65
|
-
function
|
|
65
|
+
function ce(r, i, s) {
|
|
66
66
|
let l = s.registered;
|
|
67
|
-
if (
|
|
67
|
+
if (ae.test(r)) return null;
|
|
68
68
|
if (l["account.logout"] && u.test(r)) return a({ control: "account.logout" });
|
|
69
69
|
if (l["header.workspace"] || l["header.context"]) {
|
|
70
70
|
let e = f.exec(r) ?? p.exec(r);
|
|
@@ -88,7 +88,7 @@ function se(r, i, s) {
|
|
|
88
88
|
}
|
|
89
89
|
if (l["header.search"]) {
|
|
90
90
|
for (let e of C) {
|
|
91
|
-
let t = e.exec(r), n = t ?
|
|
91
|
+
let t = e.exec(r), n = t ? se(t[1] ?? "") : null;
|
|
92
92
|
if (n) return a({
|
|
93
93
|
control: "header.search",
|
|
94
94
|
query: c(i, n)
|
|
@@ -147,10 +147,10 @@ function se(r, i, s) {
|
|
|
147
147
|
}
|
|
148
148
|
if (l["assistant.transcript"]) {
|
|
149
149
|
if (P.test(r)) return a({ control: "assistant.transcript" });
|
|
150
|
-
if (
|
|
150
|
+
if (ne.test(r)) return o({ control: "assistant.transcript" });
|
|
151
151
|
}
|
|
152
152
|
if (l["assistant.preview"]) {
|
|
153
|
-
if (
|
|
153
|
+
if (F.test(r)) return a({ control: "assistant.preview" });
|
|
154
154
|
if (I.test(r)) return o({ control: "assistant.preview" });
|
|
155
155
|
if (L.test(r)) return a({ control: "assistant.preview.close" });
|
|
156
156
|
if (R.test(r)) return o({ control: "assistant.preview.close" });
|
|
@@ -203,15 +203,15 @@ function se(r, i, s) {
|
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
205
|
if (d.sorts.length > 0) {
|
|
206
|
-
let e =
|
|
206
|
+
let e = Y.exec(r);
|
|
207
207
|
if (e) return a({
|
|
208
208
|
control: "page.sort",
|
|
209
209
|
field: null,
|
|
210
210
|
direction: /^asc/.test(e[1] ?? "") ? "asc" : "desc"
|
|
211
211
|
});
|
|
212
|
-
let t =
|
|
212
|
+
let t = J.exec(r);
|
|
213
213
|
if (t) {
|
|
214
|
-
let { field: e, direction: n } =
|
|
214
|
+
let { field: e, direction: n } = oe((t[1] ?? "").trim());
|
|
215
215
|
if (e) return a({
|
|
216
216
|
control: "page.sort",
|
|
217
217
|
field: e,
|
|
@@ -220,20 +220,20 @@ function se(r, i, s) {
|
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
222
|
if (d.searchable) {
|
|
223
|
-
if (
|
|
224
|
-
let e = $(
|
|
223
|
+
if (Z.test(r)) return a({ control: "page.search.clear" });
|
|
224
|
+
let e = $(X, r), t = e ? se(e[1] ?? "") : null;
|
|
225
225
|
if (t) return a({
|
|
226
226
|
control: "page.search",
|
|
227
227
|
query: c(i, t)
|
|
228
228
|
});
|
|
229
229
|
}
|
|
230
230
|
if (d.openers.length > 0) {
|
|
231
|
-
let t = $(
|
|
231
|
+
let t = $(Q, r), i = t ? (t[1] ?? "").trim() : "";
|
|
232
232
|
if (i && n(i, d.openers).kind !== "none") return a({
|
|
233
233
|
control: "page.open",
|
|
234
234
|
name: i
|
|
235
235
|
});
|
|
236
|
-
let s =
|
|
236
|
+
let s = ie.exec(r), c = s ? (s[1] ?? "").trim() : "";
|
|
237
237
|
if (c && d.openers.filter((t) => e(t.label) === c).length > 0) return o({
|
|
238
238
|
control: "page.open",
|
|
239
239
|
name: c
|
|
@@ -241,13 +241,13 @@ function se(r, i, s) {
|
|
|
241
241
|
}
|
|
242
242
|
return null;
|
|
243
243
|
}
|
|
244
|
-
function
|
|
244
|
+
function le(e) {
|
|
245
245
|
let t = e.registered, n = [], r = (e, ...t) => {
|
|
246
246
|
e && n.push(...t);
|
|
247
247
|
};
|
|
248
|
-
r(t["account.logout"], u), r(t["header.workspace"], f, p), r(t["header.context"], m, h), r(t["header.notifications"], g, _, v), r(t["header.help"], y, b), r(t["header.search"], x, S, ...C), r(t.sidebar, T, E, O, k), r(t.language, ...A, j), r(t["assistant.history"], M, N), r(t["assistant.transcript"], P,
|
|
248
|
+
r(t["account.logout"], u), r(t["header.workspace"], f, p), r(t["header.context"], m, h), r(t["header.notifications"], g, _, v), r(t["header.help"], y, b), r(t["header.search"], x, S, ...C), r(t.sidebar, T, E, O, k), r(t.language, ...A, j), r(t["assistant.history"], M, N), r(t["assistant.transcript"], P, ne), r(t["assistant.preview"], F, I, L, R), r(t["assistant.conversation.new"], z);
|
|
249
249
|
let i = e.page;
|
|
250
|
-
return i && (r(i.tabs.length > 0, ...B), r(i.filters.length > 0, ...H, ...U, ...W, G), r(i.sorts.length > 0,
|
|
250
|
+
return i && (r(i.tabs.length > 0, ...B), r(i.filters.length > 0, ...H, ...U, ...W, G), r(i.sorts.length > 0, J, ...re, Y), r(i.searchable, Z, ...X), r(i.openers.length > 0, ...Q, ie)), n;
|
|
251
251
|
}
|
|
252
252
|
//#endregion
|
|
253
|
-
export {
|
|
253
|
+
export { le as appControlPrefixPatterns, ce as matchAppControl, c as queryAsSaid };
|
|
@@ -1,161 +1,162 @@
|
|
|
1
1
|
//#region src/shared/assistant/commandCompletions.ts
|
|
2
|
-
var e = /* @__PURE__ */ new WeakMap(), t = " abcdefghijklmnopqrstuvwxyz0123456789";
|
|
3
|
-
function
|
|
4
|
-
let
|
|
5
|
-
if (
|
|
6
|
-
let
|
|
7
|
-
let e = [],
|
|
8
|
-
for (;
|
|
9
|
-
let
|
|
10
|
-
if (
|
|
2
|
+
var e = /* @__PURE__ */ new WeakMap(), t = " abcdefghijklmnopqrstuvwxyz0123456789", n = class extends Error {};
|
|
3
|
+
function r(r) {
|
|
4
|
+
let i = e.get(r);
|
|
5
|
+
if (i) return i;
|
|
6
|
+
let a = r.source, o = 0, s = () => {
|
|
7
|
+
let e = [], r = [];
|
|
8
|
+
for (; o < a.length && a[o] !== ")";) {
|
|
9
|
+
let i = a[o++];
|
|
10
|
+
if (i === "|") {
|
|
11
11
|
e.push({
|
|
12
12
|
kind: "seq",
|
|
13
|
-
nodes:
|
|
14
|
-
}),
|
|
13
|
+
nodes: r
|
|
14
|
+
}), r = [];
|
|
15
15
|
continue;
|
|
16
16
|
}
|
|
17
|
-
let
|
|
18
|
-
if (
|
|
19
|
-
if (
|
|
17
|
+
let c;
|
|
18
|
+
if (i === "^" || i === "$") continue;
|
|
19
|
+
if (i === "(") {
|
|
20
20
|
let e;
|
|
21
|
-
if (
|
|
22
|
-
else if (
|
|
23
|
-
let t =
|
|
24
|
-
if (t < 0) throw
|
|
25
|
-
e =
|
|
26
|
-
} else if (
|
|
27
|
-
if (
|
|
28
|
-
e && (
|
|
21
|
+
if (a.startsWith("?:", o)) o += 2;
|
|
22
|
+
else if (a.startsWith("?<", o)) {
|
|
23
|
+
let t = a.indexOf(">", o);
|
|
24
|
+
if (t < 0) throw new n("Invalid command capture");
|
|
25
|
+
e = a.slice(o + 2, t), o = t + 1;
|
|
26
|
+
} else if (a[o] === "?") throw new n("Unsupported command assertion");
|
|
27
|
+
if (c = s(), a[o++] !== ")") throw new n("Unclosed command group");
|
|
28
|
+
e && (c = {
|
|
29
29
|
kind: "slot",
|
|
30
30
|
name: e,
|
|
31
|
-
node:
|
|
31
|
+
node: c
|
|
32
32
|
});
|
|
33
|
-
} else if (
|
|
33
|
+
} else if (i === ".") c = {
|
|
34
34
|
kind: "free",
|
|
35
35
|
min: 1,
|
|
36
36
|
max: 1
|
|
37
37
|
};
|
|
38
|
-
else if (
|
|
39
|
-
let e =
|
|
40
|
-
for (;
|
|
41
|
-
let n = RegExp(`^${
|
|
42
|
-
|
|
38
|
+
else if (i === "[") {
|
|
39
|
+
let e = o - 1;
|
|
40
|
+
for (; o < a.length && a[o] !== "]";) a[o] === "\\" && (o += 1), o += 1;
|
|
41
|
+
let n = RegExp(`^${a.slice(e, ++o)}$`, "u");
|
|
42
|
+
c = {
|
|
43
43
|
kind: "choice",
|
|
44
44
|
nodes: [...t].filter((e) => n.test(e)).map((e) => ({
|
|
45
45
|
kind: "text",
|
|
46
46
|
text: e
|
|
47
47
|
}))
|
|
48
48
|
};
|
|
49
|
-
} else if (
|
|
50
|
-
let e =
|
|
49
|
+
} else if (i === "\\") {
|
|
50
|
+
let e = a[o++];
|
|
51
51
|
if (e === "b") continue;
|
|
52
|
-
if (e === "s")
|
|
52
|
+
if (e === "s") c = {
|
|
53
53
|
kind: "text",
|
|
54
54
|
text: " "
|
|
55
55
|
};
|
|
56
|
-
else if (e === "S")
|
|
56
|
+
else if (e === "S") c = {
|
|
57
57
|
kind: "free",
|
|
58
58
|
min: 1,
|
|
59
59
|
max: 1
|
|
60
60
|
};
|
|
61
|
-
else if (e === "d")
|
|
61
|
+
else if (e === "d") c = {
|
|
62
62
|
kind: "choice",
|
|
63
63
|
nodes: [..."0123456789"].map((e) => ({
|
|
64
64
|
kind: "text",
|
|
65
65
|
text: e
|
|
66
66
|
}))
|
|
67
67
|
};
|
|
68
|
-
else if (e && !/[a-zA-Z0-9]/.test(e))
|
|
68
|
+
else if (e && !/[a-zA-Z0-9]/.test(e)) c = {
|
|
69
69
|
kind: "text",
|
|
70
70
|
text: e
|
|
71
71
|
};
|
|
72
|
-
else throw
|
|
73
|
-
} else
|
|
72
|
+
else throw new n("Unsupported command escape");
|
|
73
|
+
} else c = {
|
|
74
74
|
kind: "text",
|
|
75
|
-
text:
|
|
75
|
+
text: i ?? ""
|
|
76
76
|
};
|
|
77
|
-
let
|
|
78
|
-
if (
|
|
79
|
-
else if (
|
|
80
|
-
let e = /^\{(\d+)(?:,(\d*))?\}/.exec(
|
|
81
|
-
if (!e) throw
|
|
82
|
-
|
|
77
|
+
let l = 1, u = 1, d = a[o];
|
|
78
|
+
if (d === "?" || d === "*" || d === "+") o += 1, l = +(d === "+"), u = d === "?" ? 1 : Infinity;
|
|
79
|
+
else if (d === "{") {
|
|
80
|
+
let e = /^\{(\d+)(?:,(\d*))?\}/.exec(a.slice(o));
|
|
81
|
+
if (!e) throw new n("Unsupported command repetition");
|
|
82
|
+
o += e[0].length, l = Number(e[1]), u = e[2] === void 0 ? l : e[2] === "" ? Infinity : Number(e[2]);
|
|
83
83
|
}
|
|
84
|
-
|
|
84
|
+
a[o] === "?" && (l !== 1 || u !== 1) && (o += 1), (l !== 1 || u !== 1) && (c = c.kind === "free" ? {
|
|
85
85
|
kind: "free",
|
|
86
|
-
min:
|
|
87
|
-
max:
|
|
86
|
+
min: l,
|
|
87
|
+
max: u
|
|
88
88
|
} : {
|
|
89
89
|
kind: "repeat",
|
|
90
|
-
node:
|
|
91
|
-
min:
|
|
92
|
-
max:
|
|
93
|
-
}),
|
|
90
|
+
node: c,
|
|
91
|
+
min: l,
|
|
92
|
+
max: u
|
|
93
|
+
}), r.push(c);
|
|
94
94
|
}
|
|
95
95
|
return e.push({
|
|
96
96
|
kind: "seq",
|
|
97
|
-
nodes:
|
|
97
|
+
nodes: r
|
|
98
98
|
}), e.length === 1 ? e[0] : {
|
|
99
99
|
kind: "choice",
|
|
100
100
|
nodes: e
|
|
101
101
|
};
|
|
102
|
-
},
|
|
103
|
-
if (
|
|
104
|
-
return e.set(
|
|
102
|
+
}, c = s();
|
|
103
|
+
if (o !== a.length) throw new n("Unexpected command pattern suffix");
|
|
104
|
+
return e.set(r, c), c;
|
|
105
105
|
}
|
|
106
|
-
function
|
|
107
|
-
if (t.length >
|
|
108
|
-
let
|
|
109
|
-
function*
|
|
110
|
-
if (++
|
|
106
|
+
function i(e, t, i, a) {
|
|
107
|
+
if (t.length > i.maxLength) return !1;
|
|
108
|
+
let o = 0, s = (e) => e.length <= i.maxLength && (t.startsWith(e) || e.startsWith(t));
|
|
109
|
+
function* c(e, r) {
|
|
110
|
+
if (++o > 2e4) throw new n("Command completion budget");
|
|
111
111
|
if (e.kind === "text") {
|
|
112
|
-
let t =
|
|
113
|
-
|
|
114
|
-
} else if (e.kind === "choice") for (let t of e.nodes) yield*
|
|
112
|
+
let t = r + e.text;
|
|
113
|
+
s(t) && (yield t);
|
|
114
|
+
} else if (e.kind === "choice") for (let t of e.nodes) yield* c(t, r);
|
|
115
115
|
else if (e.kind === "seq") {
|
|
116
116
|
let { nodes: t } = e;
|
|
117
|
-
function*
|
|
117
|
+
function* n(e, r) {
|
|
118
118
|
let i = t[e];
|
|
119
119
|
if (!i) {
|
|
120
|
-
yield
|
|
120
|
+
yield r;
|
|
121
121
|
return;
|
|
122
122
|
}
|
|
123
|
-
for (let t of
|
|
123
|
+
for (let t of c(i, r)) yield* n(e + 1, t);
|
|
124
124
|
}
|
|
125
|
-
yield*
|
|
126
|
-
} else if (e.kind === "slot" &&
|
|
125
|
+
yield* n(0, r);
|
|
126
|
+
} else if (e.kind === "slot" && i.slots?.[e.name] !== void 0) for (let t of i.slots[e.name] ?? []) yield* c({
|
|
127
127
|
kind: "text",
|
|
128
128
|
text: t
|
|
129
|
-
},
|
|
130
|
-
else if (e.kind === "slot") yield*
|
|
129
|
+
}, r);
|
|
130
|
+
else if (e.kind === "slot") yield* c(e.node, r);
|
|
131
131
|
else if (e.kind === "repeat") {
|
|
132
|
-
let { min: t, max:
|
|
133
|
-
function* o(e,
|
|
134
|
-
if (e >= t && (yield
|
|
132
|
+
let { min: t, max: n, node: a } = e;
|
|
133
|
+
function* o(e, r) {
|
|
134
|
+
if (e >= t && (yield r), !(e >= Math.min(n, i.maxLength + 1))) for (let t of c(a, r)) t !== r && (yield* o(e + 1, t));
|
|
135
135
|
}
|
|
136
|
-
yield* o(0,
|
|
136
|
+
yield* o(0, r);
|
|
137
137
|
} else {
|
|
138
|
-
let
|
|
139
|
-
|
|
140
|
-
|
|
138
|
+
let n = t.slice(Math.min(r.length, t.length)), a = new Set([
|
|
139
|
+
n,
|
|
140
|
+
n + "item",
|
|
141
141
|
"item",
|
|
142
142
|
"x",
|
|
143
|
-
...
|
|
144
|
-
]),
|
|
145
|
-
for (let e of
|
|
143
|
+
...i.names ?? []
|
|
144
|
+
]), o = n.replace(/ /g, "");
|
|
145
|
+
for (let e of i.names ?? []) {
|
|
146
146
|
let t = e.replace(/ /g, "");
|
|
147
|
-
t.startsWith(
|
|
147
|
+
t.startsWith(o) && a.add(n + t.slice(o.length));
|
|
148
148
|
}
|
|
149
|
-
for (let e =
|
|
150
|
-
for (let t of a) t.length < e.min || t.length > e.max ||
|
|
149
|
+
for (let e = n.length; e >= 0; --e) a.add(n.slice(0, e));
|
|
150
|
+
for (let t of a) t.length < e.min || t.length > e.max || s(r + t) && (yield r + t);
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
try {
|
|
154
|
-
for (let
|
|
154
|
+
for (let n of c(r(e), "")) if (n.startsWith(t) && e.test(n) && a(n)) return !0;
|
|
155
155
|
return !1;
|
|
156
|
-
} catch {
|
|
156
|
+
} catch (e) {
|
|
157
|
+
if (!(e instanceof n)) throw e;
|
|
157
158
|
return !0;
|
|
158
159
|
}
|
|
159
160
|
}
|
|
160
161
|
//#endregion
|
|
161
|
-
export {
|
|
162
|
+
export { i as hasCommandCompletion };
|
|
@@ -346,6 +346,10 @@ export declare const ASSISTANT_I18N_LITERAL_COPY: {
|
|
|
346
346
|
readonly 'chatArea.placeholderGeneral': "Ask me anything…";
|
|
347
347
|
readonly 'chatInput.ariaLabel': "Message input";
|
|
348
348
|
readonly 'chatInput.send': "Send message";
|
|
349
|
+
readonly 'closeConfirm.body': "What you typed or attached has not been sent. If you close the assistant now, it is discarded.";
|
|
350
|
+
readonly 'closeConfirm.discard': "Discard and close";
|
|
351
|
+
readonly 'closeConfirm.keep': "Keep writing";
|
|
352
|
+
readonly 'closeConfirm.title': "Discard your unsent message?";
|
|
349
353
|
readonly 'composer.attach': "Attach files or photos";
|
|
350
354
|
readonly 'composer.attachFull': "Attachment limit reached ({{max}})";
|
|
351
355
|
readonly 'composer.attachSource': "Attach from";
|
|
@@ -355,6 +359,7 @@ export declare const ASSISTANT_I18N_LITERAL_COPY: {
|
|
|
355
359
|
readonly 'composer.placeholder': "Ask me anything…";
|
|
356
360
|
readonly 'composer.stop': "Stop the reply";
|
|
357
361
|
readonly 'composer.stopped': "Reply stopped.";
|
|
362
|
+
readonly 'composer.stopping': "Stopping the reply…";
|
|
358
363
|
readonly 'composer.voiceStart': "Dictate a message";
|
|
359
364
|
readonly 'composer.voiceStarting': "Starting the microphone — tap to cancel";
|
|
360
365
|
readonly 'composer.voiceStop': "Stop dictation";
|
|
@@ -381,6 +386,8 @@ export declare const ASSISTANT_I18N_LITERAL_COPY: {
|
|
|
381
386
|
readonly 'conversationList.spokenCount': "{{count}} spoken";
|
|
382
387
|
readonly 'conversationList.spokenCountOne': "1 spoken";
|
|
383
388
|
readonly 'conversationList.voiceOnly': "Spoken conversation";
|
|
389
|
+
readonly 'conversationMenu.empty': "Nothing to export yet";
|
|
390
|
+
readonly 'conversationMenu.voiceTranscript': "Voice transcript";
|
|
384
391
|
readonly 'conversations.archive': "Archive conversation";
|
|
385
392
|
readonly 'conversations.collapse': "Collapse history";
|
|
386
393
|
readonly 'conversations.collapseLabel': "Collapse";
|
|
@@ -413,13 +420,18 @@ export declare const ASSISTANT_I18N_LITERAL_COPY: {
|
|
|
413
420
|
readonly 'header.autoSpeakOn': "Read replies aloud automatically";
|
|
414
421
|
readonly 'header.close': "Close assistant";
|
|
415
422
|
readonly 'header.context': "Context: {{page}}";
|
|
423
|
+
readonly 'header.conversationOptions': "Conversation options";
|
|
416
424
|
readonly 'header.dock': "Dock to side panel";
|
|
425
|
+
readonly 'header.expand': "Expand assistant";
|
|
426
|
+
readonly 'header.expandTip': "Expand";
|
|
417
427
|
readonly 'header.float': "Float chat window";
|
|
418
428
|
readonly 'header.history': "Conversation history";
|
|
429
|
+
readonly 'header.menu': "Assistant menu";
|
|
419
430
|
readonly 'header.more': "More options";
|
|
420
431
|
readonly 'header.newConversation': "New conversation";
|
|
421
432
|
readonly 'header.preview': "Preview";
|
|
422
433
|
readonly 'header.ready': "Ready";
|
|
434
|
+
readonly 'header.restoreSize': "Restore size";
|
|
423
435
|
readonly 'header.title': "AI Assistant";
|
|
424
436
|
readonly 'history.archivedNotice': "Archived. It stays out of your list until you unarchive it.";
|
|
425
437
|
readonly 'history.badgeLoading': "Loading…";
|
|
@@ -493,6 +505,18 @@ export declare const ASSISTANT_I18N_LITERAL_COPY: {
|
|
|
493
505
|
readonly 'markdown.imageUnavailable': "Image unavailable";
|
|
494
506
|
readonly 'markdown.showRemoteImage': "Show remote image";
|
|
495
507
|
readonly 'markdown.showRemoteImageNamed': "Show image from {{host}}";
|
|
508
|
+
readonly 'menuView.avatar': "Avatar";
|
|
509
|
+
readonly 'menuView.back': "Back";
|
|
510
|
+
readonly 'menuView.backToConversation': "Back to conversation";
|
|
511
|
+
readonly 'menuView.layoutDocked': "Docked side panel";
|
|
512
|
+
readonly 'menuView.layoutFloating': "Floating window";
|
|
513
|
+
readonly 'menuView.panelLayout': "Panel layout";
|
|
514
|
+
readonly 'menuView.readAloud': "Read replies aloud";
|
|
515
|
+
readonly 'menuView.recent': "Recent";
|
|
516
|
+
readonly 'menuView.settings': "Settings";
|
|
517
|
+
readonly 'menuView.title': "Assistant menu";
|
|
518
|
+
readonly 'menuView.viewAllHistory': "View all history";
|
|
519
|
+
readonly 'menuView.voiceLanguage': "Voice & language";
|
|
496
520
|
readonly 'message.copied': "Copied";
|
|
497
521
|
readonly 'message.copy': "Copy message";
|
|
498
522
|
readonly 'message.copyShort': "Copy";
|
|
@@ -634,6 +658,9 @@ export declare const ASSISTANT_I18N_LITERAL_COPY: {
|
|
|
634
658
|
readonly 'voiceSession.transcriptHint': "Spoken turns in this conversation — kept out of your typed chat.";
|
|
635
659
|
readonly 'voiceSession.transcriptTitle': "Voice transcript";
|
|
636
660
|
readonly 'voiceSession.unmute': "Turn the microphone on";
|
|
661
|
+
readonly 'waitingChange.review': "Review";
|
|
662
|
+
readonly 'waitingChange.reviewLabel': "Review the change waiting for your approval";
|
|
663
|
+
readonly 'waitingChange.status': "{{count}} change(s) waiting for your approval";
|
|
637
664
|
readonly 'writeConsent.body': "In {{mode}} mode the assistant can read AND change your data — creating records, logging activity, updating details, and more, on your behalf.";
|
|
638
665
|
readonly 'writeConsent.cancel': "Stay in {{mode}}";
|
|
639
666
|
readonly 'writeConsent.confirm': "Enable {{mode}}";
|
|
@@ -239,6 +239,10 @@ var g = {
|
|
|
239
239
|
"chatArea.placeholderGeneral": "Ask me anything…",
|
|
240
240
|
"chatInput.ariaLabel": "Message input",
|
|
241
241
|
"chatInput.send": "Send message",
|
|
242
|
+
"closeConfirm.body": "What you typed or attached has not been sent. If you close the assistant now, it is discarded.",
|
|
243
|
+
"closeConfirm.discard": "Discard and close",
|
|
244
|
+
"closeConfirm.keep": "Keep writing",
|
|
245
|
+
"closeConfirm.title": "Discard your unsent message?",
|
|
242
246
|
"composer.attach": "Attach files or photos",
|
|
243
247
|
"composer.attachFull": "Attachment limit reached ({{max}})",
|
|
244
248
|
"composer.attachSource": "Attach from",
|
|
@@ -248,6 +252,7 @@ var g = {
|
|
|
248
252
|
"composer.placeholder": "Ask me anything…",
|
|
249
253
|
"composer.stop": "Stop the reply",
|
|
250
254
|
"composer.stopped": "Reply stopped.",
|
|
255
|
+
"composer.stopping": "Stopping the reply…",
|
|
251
256
|
"composer.voiceStart": "Dictate a message",
|
|
252
257
|
"composer.voiceStarting": "Starting the microphone — tap to cancel",
|
|
253
258
|
"composer.voiceStop": "Stop dictation",
|
|
@@ -274,6 +279,8 @@ var g = {
|
|
|
274
279
|
"conversationList.spokenCount": "{{count}} spoken",
|
|
275
280
|
"conversationList.spokenCountOne": "1 spoken",
|
|
276
281
|
"conversationList.voiceOnly": "Spoken conversation",
|
|
282
|
+
"conversationMenu.empty": "Nothing to export yet",
|
|
283
|
+
"conversationMenu.voiceTranscript": "Voice transcript",
|
|
277
284
|
"conversations.archive": "Archive conversation",
|
|
278
285
|
"conversations.collapse": "Collapse history",
|
|
279
286
|
"conversations.collapseLabel": "Collapse",
|
|
@@ -306,13 +313,18 @@ var g = {
|
|
|
306
313
|
"header.autoSpeakOn": "Read replies aloud automatically",
|
|
307
314
|
"header.close": "Close assistant",
|
|
308
315
|
"header.context": "Context: {{page}}",
|
|
316
|
+
"header.conversationOptions": "Conversation options",
|
|
309
317
|
"header.dock": "Dock to side panel",
|
|
318
|
+
"header.expand": "Expand assistant",
|
|
319
|
+
"header.expandTip": "Expand",
|
|
310
320
|
"header.float": "Float chat window",
|
|
311
321
|
"header.history": "Conversation history",
|
|
322
|
+
"header.menu": "Assistant menu",
|
|
312
323
|
"header.more": "More options",
|
|
313
324
|
"header.newConversation": "New conversation",
|
|
314
325
|
"header.preview": "Preview",
|
|
315
326
|
"header.ready": "Ready",
|
|
327
|
+
"header.restoreSize": "Restore size",
|
|
316
328
|
"header.title": "AI Assistant",
|
|
317
329
|
"history.archivedNotice": "Archived. It stays out of your list until you unarchive it.",
|
|
318
330
|
"history.badgeLoading": "Loading…",
|
|
@@ -386,6 +398,18 @@ var g = {
|
|
|
386
398
|
"markdown.imageUnavailable": "Image unavailable",
|
|
387
399
|
"markdown.showRemoteImage": "Show remote image",
|
|
388
400
|
"markdown.showRemoteImageNamed": "Show image from {{host}}",
|
|
401
|
+
"menuView.avatar": "Avatar",
|
|
402
|
+
"menuView.back": "Back",
|
|
403
|
+
"menuView.backToConversation": "Back to conversation",
|
|
404
|
+
"menuView.layoutDocked": "Docked side panel",
|
|
405
|
+
"menuView.layoutFloating": "Floating window",
|
|
406
|
+
"menuView.panelLayout": "Panel layout",
|
|
407
|
+
"menuView.readAloud": "Read replies aloud",
|
|
408
|
+
"menuView.recent": "Recent",
|
|
409
|
+
"menuView.settings": "Settings",
|
|
410
|
+
"menuView.title": "Assistant menu",
|
|
411
|
+
"menuView.viewAllHistory": "View all history",
|
|
412
|
+
"menuView.voiceLanguage": "Voice & language",
|
|
389
413
|
"message.copied": "Copied",
|
|
390
414
|
"message.copy": "Copy message",
|
|
391
415
|
"message.copyShort": "Copy",
|
|
@@ -527,6 +551,9 @@ var g = {
|
|
|
527
551
|
"voiceSession.transcriptHint": "Spoken turns in this conversation — kept out of your typed chat.",
|
|
528
552
|
"voiceSession.transcriptTitle": "Voice transcript",
|
|
529
553
|
"voiceSession.unmute": "Turn the microphone on",
|
|
554
|
+
"waitingChange.review": "Review",
|
|
555
|
+
"waitingChange.reviewLabel": "Review the change waiting for your approval",
|
|
556
|
+
"waitingChange.status": "{{count}} change(s) waiting for your approval",
|
|
530
557
|
"writeConsent.body": "In {{mode}} mode the assistant can read AND change your data — creating records, logging activity, updating details, and more, on your behalf.",
|
|
531
558
|
"writeConsent.cancel": "Stay in {{mode}}",
|
|
532
559
|
"writeConsent.confirm": "Enable {{mode}}",
|
|
@@ -372,3 +372,12 @@ export * from './voice/livePhraseSpeech';
|
|
|
372
372
|
export * from './voice/phrasePlayback';
|
|
373
373
|
export * from './attachmentAccess';
|
|
374
374
|
export * from './attachmentAccessCopy';
|
|
375
|
+
export * from './ui/closeGuard';
|
|
376
|
+
export * from './ui/compact/compactChrome';
|
|
377
|
+
export * from './ui/compact/AssistantCompactHeader';
|
|
378
|
+
export * from './ui/compact/AssistantConversationMenu';
|
|
379
|
+
export * from './ui/compact/AssistantDiscardDraftDialog';
|
|
380
|
+
export * from './ui/compact/AssistantMenuView';
|
|
381
|
+
export * from './ui/compact/AssistantVoiceLanguageSettings';
|
|
382
|
+
export * from './ui/compact/AssistantWaitingChangeRow';
|
|
383
|
+
export * from './ui/compact/waitingChange';
|