@burdenoff/fe-libs 2026.1009.2 → 2026.1010.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/shared/assistant/appControls/languages.d.ts +2 -0
  2. package/dist/shared/assistant/appControls/languages.js +8 -5
  3. package/dist/shared/assistant/index.d.ts +18 -0
  4. package/dist/shared/assistant/localUiCommands.d.ts +33 -0
  5. package/dist/shared/assistant/localUiCommands.js +159 -88
  6. package/dist/shared/assistant/localeCommands/active.d.ts +19 -0
  7. package/dist/shared/assistant/localeCommands/active.js +25 -0
  8. package/dist/shared/assistant/localeCommands/assent.d.ts +25 -0
  9. package/dist/shared/assistant/localeCommands/assent.js +78 -0
  10. package/dist/shared/assistant/localeCommands/engine.d.ts +89 -0
  11. package/dist/shared/assistant/localeCommands/engine.js +351 -0
  12. package/dist/shared/assistant/localeCommands/evaluate.d.ts +77 -0
  13. package/dist/shared/assistant/localeCommands/evaluate.js +180 -0
  14. package/dist/shared/assistant/localeCommands/fold.d.ts +17 -0
  15. package/dist/shared/assistant/localeCommands/fold.js +66 -0
  16. package/dist/shared/assistant/localeCommands/frames.d.ts +23 -0
  17. package/dist/shared/assistant/localeCommands/frames.js +150 -0
  18. package/dist/shared/assistant/localeCommands/gate.d.ts +37 -0
  19. package/dist/shared/assistant/localeCommands/gate.js +137 -0
  20. package/dist/shared/assistant/localeCommands/languageNames.d.ts +11 -0
  21. package/dist/shared/assistant/localeCommands/languageNames.js +53 -0
  22. package/dist/shared/assistant/localeCommands/nameForms.d.ts +21 -0
  23. package/dist/shared/assistant/localeCommands/nameForms.js +44 -0
  24. package/dist/shared/assistant/localeCommands/normalise.d.ts +49 -0
  25. package/dist/shared/assistant/localeCommands/normalise.js +87 -0
  26. package/dist/shared/assistant/localeCommands/symbols.d.ts +8 -0
  27. package/dist/shared/assistant/localeCommands/symbols.js +6 -0
  28. package/dist/shared/assistant/localeCommands/tables/ar.d.ts +10 -0
  29. package/dist/shared/assistant/localeCommands/tables/ar.js +343 -0
  30. package/dist/shared/assistant/localeCommands/tables/en.d.ts +12 -0
  31. package/dist/shared/assistant/localeCommands/tables/en.js +28 -0
  32. package/dist/shared/assistant/localeCommands/tables/es.d.ts +7 -0
  33. package/dist/shared/assistant/localeCommands/tables/es.js +356 -0
  34. package/dist/shared/assistant/localeCommands/tables/hi.d.ts +9 -0
  35. package/dist/shared/assistant/localeCommands/tables/hi.js +495 -0
  36. package/dist/shared/assistant/localeCommands/tables/ta.d.ts +10 -0
  37. package/dist/shared/assistant/localeCommands/tables/ta.js +429 -0
  38. package/dist/shared/assistant/localeCommands/tables/zh.d.ts +9 -0
  39. package/dist/shared/assistant/localeCommands/tables/zh.js +402 -0
  40. package/dist/shared/assistant/localeCommands/types.d.ts +172 -0
  41. package/dist/shared/assistant/localeCommands/types.js +19 -0
  42. package/dist/shared/assistant/ui/AssistantChatArea.js +1340 -1330
  43. package/dist/shared/assistant/uiActions/linkContext.d.ts +20 -1
  44. package/dist/shared/assistant/uiActions/linkContext.js +39 -21
  45. package/dist/shared/assistant/uiActions/offerYesOnSurface.d.ts +6 -0
  46. package/dist/shared/assistant/uiActions/offerYesOnSurface.js +1 -1
  47. package/dist/shared/assistant/writeReplyBinder.d.ts +1 -1
  48. package/dist/shared/assistant/writeReplySend.d.ts +16 -0
  49. package/dist/shared/assistant/writeReplySend.js +23 -1
  50. package/dist/shared-assistant.js +55 -37
  51. package/package.json +1 -1
@@ -0,0 +1,21 @@
1
+ /**
2
+ * ★ BOFF-8867 (multilingual commands): the closed case forms of a page name.
3
+ *
4
+ * Tamil glues its case to the noun ("வானிலைக்கு போ", "பயிர்களை திற") and Hindi
5
+ * puts the feminine plural into the oblique before a postposition ("फसलों को
6
+ * खोलो"). The page is still found by EXACT equality: the engine adds these
7
+ * forms of each label the app shows to the same index entry, and a name that is
8
+ * not the label or one of these forms is not a page. Nothing here guesses a
9
+ * stem from the sentence; the stem is always the app's own label.
10
+ *
11
+ * The list is closed on purpose. A label whose last letters match no rule has
12
+ * no extra form (it is matched bare, as before), and a collision with another
13
+ * page's own label makes the sentence a clarification, never a pick.
14
+ */
15
+ /**
16
+ * Accusative (-ஐ), dative (-க்கு / -உக்கு) and locative (-இல்) forms of a
17
+ * Tamil label, plus each with the doubled consonant of the next word.
18
+ */
19
+ export declare function tamilNameForms(label: string): readonly string[];
20
+ /** The oblique plural of a Hindi feminine-plural label (फसलें → फसलों, सब्जियाँ → सब्जियों), for "फसलों को खोलो". */
21
+ export declare function hindiNameForms(label: string): readonly string[];
@@ -0,0 +1,44 @@
1
+ //#region src/shared/assistant/localeCommands/nameForms.ts
2
+ var e = "்", t = [
3
+ "",
4
+ "க்",
5
+ "ச்",
6
+ "த்",
7
+ "ப்"
8
+ ], n = new Set([
9
+ "ள",
10
+ "ல",
11
+ "ர",
12
+ "ன",
13
+ "ண",
14
+ "ஸ",
15
+ "ட",
16
+ "ழ"
17
+ ]);
18
+ function r(r) {
19
+ let i = r.normalize("NFKC").trim();
20
+ if (!i || /\s/.test(i.slice(-1))) return [];
21
+ let a = [...i].slice(-2), o = [], s = a[a.length - 1] ?? "", c = a.length === 2 ? a[0] : "";
22
+ if (s === e && c && n.has(c)) {
23
+ let e = i.slice(0, -1);
24
+ o.push(`${e}ை`, `${e}ுக்கு`, `${e}ில்`);
25
+ } else if (s === e && c === "ம") {
26
+ let e = i.slice(0, -2);
27
+ o.push(`${e}த்தை`, `${e}த்துக்கு`, `${e}த்தில்`);
28
+ } else if (s === "ை") o.push(`${i}யை`, `${i}க்கு`, `${i}யில்`);
29
+ else if (s === "ு") {
30
+ let e = i.slice(0, -1);
31
+ o.push(`${e}ை`, `${i}க்கு`, `${e}ில்`);
32
+ } else s === "ி" && o.push(`${i}யை`, `${i}க்கு`, `${i}யில்`);
33
+ return o.flatMap((e) => t.map((t) => `${e}${t}`));
34
+ }
35
+ function i(e) {
36
+ let t = e.normalize("NFKC").trim();
37
+ if (!t) return [];
38
+ let n = [], r = (e, r) => {
39
+ e.test(t) && n.push(t.replace(e, r));
40
+ };
41
+ return r(/ें$/u, "ों"), r(/ेँ$/u, "ों"), r(/ियाँ$/u, "ियों"), r(/ियां$/u, "ियों"), r(/ाएँ$/u, "ाओं"), r(/ाएं$/u, "ाओं"), n;
42
+ }
43
+ //#endregion
44
+ export { i as hindiNameForms, r as tamilNameForms };
@@ -0,0 +1,49 @@
1
+ import { CommandLocale } from './types';
2
+ export type FoldLocale = CommandLocale | "en";
3
+ /** The normalisation words a table (or the English additions) brings. */
4
+ export interface PrepSource {
5
+ maxLength: number;
6
+ courtesy: {
7
+ prefix: readonly string[];
8
+ suffix: readonly string[];
9
+ };
10
+ fillers: readonly string[];
11
+ compound: readonly string[];
12
+ polite?: PoliteSource | undefined;
13
+ }
14
+ /**
15
+ * A question is a command only as a polite request. A request opens with one of
16
+ * `prefix` ("can you…") or ends with one of `suffix` ("…can you?"); either is
17
+ * enough. `particle` words ("吗") are dropped after one of those, never alone.
18
+ */
19
+ export interface PoliteSource {
20
+ prefix: readonly string[];
21
+ suffix: readonly string[];
22
+ particle?: readonly string[];
23
+ }
24
+ /** `PrepSource` folded and ready: longest phrase first, so the longest courtesy wins. */
25
+ export interface PrepData {
26
+ fold: FoldLocale;
27
+ zh: boolean;
28
+ maxLength: number;
29
+ prefix: string[];
30
+ suffix: string[];
31
+ fillers: Set<string>;
32
+ compound: string[];
33
+ /** null: this table has no polite request, and every question is the model's. */
34
+ polite: {
35
+ prefix: string[];
36
+ suffix: string[];
37
+ particle: string[];
38
+ } | null;
39
+ }
40
+ export declare function foldedList(list: readonly string[], fold: FoldLocale): string[];
41
+ export declare function buildPrep(source: PrepSource, fold: FoldLocale): PrepData;
42
+ export declare function removeFillers(value: string, prep: PrepData): string;
43
+ /** A whole utterance said twice in a row ("go to X go to X") is said once. */
44
+ export declare function collapseRepeat(value: string, zh: boolean): string;
45
+ export declare function stripEdges(value: string, prefixes: readonly string[], suffixes: readonly string[], zh: boolean, mustStrip?: boolean): string | null;
46
+ /** The folded utterance a run reads: fillers, a repeat and courtesy removed; null when it cannot be a command. */
47
+ export declare function normaliseSaid(said: string, prep: PrepData, question: boolean): string | null;
48
+ /** A question mark at the end, or an opening `¿`. */
49
+ export declare function isQuestionText(said: string): boolean;
@@ -0,0 +1,87 @@
1
+ import { foldText as e } from "./fold.js";
2
+ //#region src/shared/assistant/localeCommands/normalise.ts
3
+ function t(t, n) {
4
+ return t.map((t) => e(t, n)).filter(Boolean).sort((e, t) => t.length - e.length);
5
+ }
6
+ function n(e, n) {
7
+ return {
8
+ fold: n,
9
+ zh: n === "zh",
10
+ maxLength: e.maxLength,
11
+ prefix: t(e.courtesy.prefix, n),
12
+ suffix: t(e.courtesy.suffix, n),
13
+ fillers: new Set(t(e.fillers, n)),
14
+ compound: t(e.compound, n),
15
+ polite: e.polite ? {
16
+ prefix: t(e.polite.prefix, n),
17
+ suffix: t(e.polite.suffix, n),
18
+ particle: t(e.polite.particle ?? [], n)
19
+ } : null
20
+ };
21
+ }
22
+ function r(e, t) {
23
+ let { fillers: n } = t;
24
+ if (n.size === 0) return e;
25
+ if (t.zh) {
26
+ let t = e;
27
+ for (;;) {
28
+ let e = [...n].reduce((e, t) => e.length > t.length && (e.startsWith(t) || e.endsWith(t)) ? e.startsWith(t) ? e.slice(t.length) : e.slice(0, e.length - t.length) : e, t);
29
+ if (e === t) return t;
30
+ t = e;
31
+ }
32
+ }
33
+ return e.split(" ").filter((e) => !n.has(e)).join(" ");
34
+ }
35
+ function i(e, t) {
36
+ if (t) {
37
+ let t = e.length / 2;
38
+ return e.length >= 4 && Number.isInteger(t) && e.slice(0, t) === e.slice(t) ? e.slice(0, t) : e;
39
+ }
40
+ let n = e.split(" "), r = n.length / 2;
41
+ if (n.length >= 2 && Number.isInteger(r)) {
42
+ let e = n.slice(0, r).join(" ");
43
+ if (e === n.slice(r).join(" ")) return e;
44
+ }
45
+ return e;
46
+ }
47
+ function a(e, t, n, r, i = !1) {
48
+ let a = (e) => {
49
+ for (let n of t) {
50
+ let t = r ? e.startsWith(n) ? e.slice(n.length) : null : e.startsWith(`${n} `) ? e.slice(n.length + 1) : null;
51
+ if (t !== null && t.length > 0) return t;
52
+ }
53
+ return null;
54
+ }, o = (e) => {
55
+ for (let t of n) {
56
+ let n = r ? e.endsWith(t) ? e.slice(0, e.length - t.length) : null : e.endsWith(` ${t}`) ? e.slice(0, e.length - t.length - 1) : null;
57
+ if (n !== null && n.length > 0) return n;
58
+ }
59
+ return null;
60
+ }, s = e, c = !1;
61
+ for (;;) {
62
+ let e = a(s) ?? o(s);
63
+ if (e === null) break;
64
+ s = e, c = !0;
65
+ }
66
+ return i && !c ? null : s;
67
+ }
68
+ function o(t, n, o) {
69
+ let s = e(t, n.fold);
70
+ if (!s) return null;
71
+ if (o) {
72
+ let { polite: e } = n;
73
+ if (e === null) return null;
74
+ let t = a(s, e.prefix, [], n.zh, !0), r = a(t ?? s, [], e.suffix, n.zh, !0);
75
+ if (t === null && r === null) return null;
76
+ let i = r ?? t ?? s;
77
+ s = a(i, [], e.particle, n.zh) ?? i;
78
+ }
79
+ s = r(s, n), s = i(s, n.zh);
80
+ let c = a(s, n.prefix, n.suffix, n.zh);
81
+ return c === null || !c || c.length > n.maxLength ? null : c;
82
+ }
83
+ function s(e) {
84
+ return /[?¿؟?][^\p{L}\p{N}]*$/u.test(e) || /^\s*¿/u.test(e);
85
+ }
86
+ //#endregion
87
+ export { n as buildPrep, i as collapseRepeat, t as foldedList, s as isQuestionText, o as normaliseSaid, r as removeFillers, a as stripEdges };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ★ BOFF-8867: an emoji or symbol can carry the meaning — "🚫 dark mode", "dark
3
+ * mode 👎", "हाँ 🙄" — and the grammar cannot read it, so it must not strip it and
4
+ * act; nor can an ASCII emoticon ("dark mode :(", ">:(", "xD", "-_-"). Whitespace
5
+ * before the eyes, so "http://" and "10:30" are not faces. Shared by the
6
+ * English matcher, the per-language engine and the offer "yes".
7
+ */
8
+ export declare function carriesSymbolOrEmoticon(said: string): boolean;
@@ -0,0 +1,6 @@
1
+ //#region src/shared/assistant/localeCommands/symbols.ts
2
+ function e(e) {
3
+ return /[\p{Extended_Pictographic}\p{So}]/u.test(e) ? !0 : /(?:^|\s)>?[:;=][-'^]?[()[\]/\\|pPdDoO3*@$]+(?=\s|$)/.test(e) || /(?:^|\s)(?:xD|XD|-_-|T_T|<\/?3)(?=\s|$)/.test(e);
4
+ }
5
+ //#endregion
6
+ export { e as carriesSymbolOrEmoticon };
@@ -0,0 +1,10 @@
1
+ import { LocaleTable } from '../types';
2
+ /**
3
+ * Arabic (Modern Standard with the common colloquial imperatives). Arabic stays
4
+ * left-to-right in layout (operator decision 2026-10-07); matching is on the
5
+ * logical string. AI-written, no native review; every phrase is a seed the
6
+ * blind set measures. The fold removes tashkeel and unifies the alef, ya, ta
7
+ * marbuta and hamza forms on both sides, and a leading definite article is
8
+ * optional on the name (`lookup`, design §2.3).
9
+ */
10
+ export declare const ARABIC_COMMANDS: LocaleTable;
@@ -0,0 +1,343 @@
1
+ //#region src/shared/assistant/localeCommands/tables/ar.ts
2
+ var e = {
3
+ locale: "ar",
4
+ maxLength: 80,
5
+ courtesy: {
6
+ prefix: [
7
+ "من فضلك",
8
+ "لو سمحت",
9
+ "رجاء",
10
+ "ارجوك",
11
+ "please",
12
+ "pls"
13
+ ],
14
+ suffix: [
15
+ "من فضلك",
16
+ "لو سمحت",
17
+ "رجاء",
18
+ "ارجوك",
19
+ "شكرا",
20
+ "لي",
21
+ "الان",
22
+ "please",
23
+ "pls",
24
+ "thanks"
25
+ ]
26
+ },
27
+ fillers: [
28
+ "امم",
29
+ "اممم",
30
+ "إمم",
31
+ "ايه",
32
+ "um",
33
+ "uh"
34
+ ],
35
+ compound: [
36
+ "ثم",
37
+ "بعد ذلك",
38
+ "وبعدها",
39
+ "و بعدها",
40
+ "وايضا",
41
+ "وأيضا",
42
+ "ماذا",
43
+ "اين",
44
+ "أين",
45
+ "كيف",
46
+ "لماذا",
47
+ "متى",
48
+ "هل",
49
+ "كم"
50
+ ],
51
+ polite: {
52
+ prefix: [
53
+ "هل يمكنك",
54
+ "هل تستطيع",
55
+ "هل بامكانك",
56
+ "ممكن"
57
+ ],
58
+ suffix: []
59
+ },
60
+ goto: {
61
+ go: [
62
+ "(اذهب|انتقل|اتجه|روح) الى {x}",
63
+ "(اذهب|انتقل|اتجه|روح) (الى) {p} {x}",
64
+ "(خذني|وصلني|خدني) (الى) {x}",
65
+ "(خذني|وصلني|خدني) (الى) {p} {x}",
66
+ "{p} {x}",
67
+ "(الذهاب|الانتقال) الى {x}",
68
+ "(الذهاب|الانتقال) الى {p} {x}"
69
+ ],
70
+ open: [
71
+ "فتح {x}",
72
+ "فتح {p} {x}",
73
+ "افتح {x}",
74
+ "افتح لي {x}",
75
+ "افتح {p} {x}",
76
+ "افتح لي {p} {x}"
77
+ ],
78
+ show: ["(ارني|اعرض|اعرض لي|وريني) {p} {x}"],
79
+ places: [
80
+ "صفحة",
81
+ "الصفحة",
82
+ "شاشة",
83
+ "الشاشة",
84
+ "قسم",
85
+ "القسم"
86
+ ],
87
+ ambiguous: /* @__PURE__ */ "المهام.مهام.المهمات.مهمات.التذاكر.تذاكر.الطلبات.طلبات.الفواتير.فواتير.التنبيهات.تنبيهات.المشاكل.مشاكل.الحالات.حالات.الصفقات.صفقات.العناصر.عناصر.الوظائف.وظائف.الاخطاء.اخطاء.الاستفسارات.الاسئلة.الجلسات.جلسات".split(".")
88
+ },
89
+ there: [
90
+ "(خذني|وصلني) (الى) هناك",
91
+ "(اذهب|انتقل) (الى) هناك",
92
+ "(اذهب|انتقل|روح) هناك",
93
+ "افتحها",
94
+ "افتحه",
95
+ "افتح (تلك|هذه|ذلك|هذا) {p}",
96
+ "افتح (ذلك|هذا) الرابط",
97
+ "افتح الرابط",
98
+ "(خذني|وصلني) (الى) (تلك|هذه) {p}",
99
+ "(اذهب|انتقل) (الى) (تلك|هذه) {p}"
100
+ ],
101
+ back: [
102
+ "(ارجع|عد|رجوع|ارجعني|رجعني)",
103
+ "ارجع (للخلف|الى الوراء)",
104
+ "{p} السابقة",
105
+ "(اذهب|ارجع|عد|انتقل) (الى) {p} السابقة"
106
+ ],
107
+ pick: {
108
+ frames: [
109
+ "[الخيار] {o}",
110
+ "(افتح|اختر) [الخيار] {o}",
111
+ "(الخيار|خيار|رقم) {n}",
112
+ "(افتح|اختر) (الخيار|خيار|رقم) {n}"
113
+ ],
114
+ ordinals: [
115
+ [
116
+ "الاول",
117
+ "الاولى",
118
+ "اول"
119
+ ],
120
+ [
121
+ "الثاني",
122
+ "الثانية",
123
+ "ثاني"
124
+ ],
125
+ [
126
+ "الثالث",
127
+ "الثالثة",
128
+ "ثالث"
129
+ ],
130
+ [
131
+ "الرابع",
132
+ "الرابعة",
133
+ "رابع"
134
+ ]
135
+ ],
136
+ last: [
137
+ "الاخير",
138
+ "الاخيرة",
139
+ "اخر"
140
+ ],
141
+ numbers: [
142
+ ["واحد", "1"],
143
+ [
144
+ "اثنين",
145
+ "اثنان",
146
+ "اتنين",
147
+ "2"
148
+ ],
149
+ ["ثلاثة", "3"],
150
+ ["اربعة", "4"]
151
+ ]
152
+ },
153
+ language: [
154
+ "(غير|بدل|حول) (اللغة|لغة) [(التطبيق|الواجهة)] (الى) {lang}",
155
+ "(غير|بدل|حول) (لغة) (التطبيق|الواجهة) (الى) {lang}",
156
+ "(اجعل|خلي) (اللغة|لغة) [(التطبيق|الواجهة)] {lang}",
157
+ "(غير|بدل|حول) (التطبيق|الواجهة) (الى) {lang}"
158
+ ],
159
+ languageNames: {
160
+ en: [
161
+ "الانجليزية",
162
+ "الإنجليزية",
163
+ "انجليزي",
164
+ "إنجليزي",
165
+ "الانكليزية",
166
+ "انكليزي"
167
+ ],
168
+ hi: ["الهندية", "هندي"],
169
+ ta: [
170
+ "التاميلية",
171
+ "تاميل",
172
+ "تاميلي"
173
+ ],
174
+ ar: [
175
+ "العربية",
176
+ "عربي",
177
+ "عربى"
178
+ ],
179
+ es: [
180
+ "الاسبانية",
181
+ "الإسبانية",
182
+ "اسباني",
183
+ "إسباني",
184
+ "الاسبانيه"
185
+ ],
186
+ zh: [
187
+ "الصينية",
188
+ "صيني",
189
+ "الصينيه",
190
+ "الماندرين"
191
+ ]
192
+ },
193
+ theme: [
194
+ {
195
+ template: "الوضع الداكن",
196
+ family: "dark"
197
+ },
198
+ {
199
+ template: "وضع داكن",
200
+ family: "dark"
201
+ },
202
+ {
203
+ template: "(فعل|شغل|فعّل|شغّل) (الوضع|وضع) (الداكن|داكن)",
204
+ family: "dark"
205
+ },
206
+ {
207
+ template: "(غير|بدل|حول) (الى) الوضع الداكن",
208
+ family: "dark"
209
+ },
210
+ {
211
+ template: "(اوقف|اطفئ|الغ|ألغ|عطل) (الوضع|وضع) (الداكن|داكن)",
212
+ family: "dark",
213
+ invert: !0
214
+ },
215
+ {
216
+ template: "(السمة|الثيم|ثيم) (الداكنة|الداكن)",
217
+ family: "dark",
218
+ saysTheme: !0
219
+ },
220
+ {
221
+ template: "الوضع الفاتح",
222
+ family: "light"
223
+ },
224
+ {
225
+ template: "وضع فاتح",
226
+ family: "light"
227
+ },
228
+ {
229
+ template: "(فعل|شغل|فعّل|شغّل) (الوضع|وضع) (الفاتح|فاتح)",
230
+ family: "light"
231
+ },
232
+ {
233
+ template: "(غير|بدل|حول) (الى) الوضع الفاتح",
234
+ family: "light"
235
+ },
236
+ {
237
+ template: "(اوقف|اطفئ|الغ|ألغ|عطل) (الوضع|وضع) (الفاتح|فاتح)",
238
+ family: "light",
239
+ invert: !0
240
+ },
241
+ {
242
+ template: "(السمة|الثيم|ثيم) (الفاتحة|الفاتح)",
243
+ family: "light",
244
+ saysTheme: !0
245
+ }
246
+ ],
247
+ controls: {
248
+ history: [{ template: "(افتح|اعرض) (سجل|تاريخ) (المحادثات|المحادثة|الدردشات)" }, {
249
+ template: "(افتح|اعرض) (السجل|التاريخ)",
250
+ weak: !0
251
+ }],
252
+ transcript: [{ template: "(افتح|اعرض) (نص|تفريغ) (الصوت|المحادثة الصوتية)" }, {
253
+ template: "(افتح|اعرض) (التفريغ|النسخ|النص المكتوب)",
254
+ weak: !0
255
+ }],
256
+ previewOpen: [{ template: "(افتح|اعرض) معاينة (الذكاء الاصطناعي|المساعد)" }, {
257
+ template: "(افتح|اعرض) المعاينة",
258
+ weak: !0
259
+ }],
260
+ previewClose: [{ template: "(اغلق|اخف|اقفل) معاينة (الذكاء الاصطناعي|المساعد)" }, {
261
+ template: "(اغلق|اخف|اقفل) المعاينة",
262
+ weak: !0
263
+ }],
264
+ newConversation: [{ template: "(ابدا|ابدأ) محادثة جديدة" }, { template: "محادثة جديدة" }],
265
+ notifications: [{ template: "(افتح|اعرض) (لوحة|جرس) الاشعارات" }, {
266
+ template: "(افتح|اعرض) الاشعارات",
267
+ weak: !0
268
+ }],
269
+ help: [{ template: "(افتح|اعرض) (قائمة|لوحة) المساعدة" }, {
270
+ template: "(افتح|اعرض) المساعدة",
271
+ weak: !0
272
+ }],
273
+ sidebarCollapse: [{ template: "(اغلق|اخف|اطو|صغر|اقفل) (الشريط|القائمة) (الجانبي|الجانبية)" }],
274
+ sidebarExpand: [{ template: "(افتح|اعرض|وسع) (الشريط|القائمة) (الجانبي|الجانبية)" }],
275
+ tab: ["(افتح|اعرض|انتقل الى|اذهب الى) (تبويب|علامة التبويب) {x}", "(تبويب|علامة التبويب) {x}"],
276
+ filter: ["(اعرض|اظهر|ارني) فقط {x}", "(صفي|صف|فلتر|رشح) حسب {x}"],
277
+ filterClear: ["(امسح|ازل|الغ) (الفلتر|الفلاتر|عوامل التصفية|التصفية)"],
278
+ sort: ["(رتب) حسب {x} [{d}]", "(رتب) [الصفحة] حسب {x} [{d}]"],
279
+ sortDirection: ["رتب {d}"],
280
+ search: ["(ابحث|دور|فتش) عن {q}", "(ابحث) في (هذه الصفحة|الصفحة) عن {q}"],
281
+ searchClear: ["(امسح|الغ|ازل) البحث"],
282
+ directions: {
283
+ asc: [
284
+ "تصاعديا",
285
+ "تصاعدي",
286
+ "بشكل تصاعدي",
287
+ "من الاصغر الى الاكبر"
288
+ ],
289
+ desc: [
290
+ "تنازليا",
291
+ "تنازلي",
292
+ "بشكل تنازلي",
293
+ "من الاكبر الى الاصغر"
294
+ ]
295
+ }
296
+ },
297
+ yes: {
298
+ tierA: [
299
+ "نعم",
300
+ "اجل",
301
+ "ايوه",
302
+ "ايوا",
303
+ "بالتاكيد",
304
+ "اكيد",
305
+ "تمام",
306
+ "طيب",
307
+ "حسنا",
308
+ "موافق",
309
+ "اوكي",
310
+ "اوكيه",
311
+ "ok",
312
+ "okay",
313
+ "yes",
314
+ "yeah"
315
+ ],
316
+ tierB: [
317
+ "اها",
318
+ "اه",
319
+ "همم",
320
+ "ممم"
321
+ ],
322
+ negation: [
323
+ "لا",
324
+ "لن",
325
+ "ليس",
326
+ "لست",
327
+ "مش",
328
+ "ما",
329
+ "لكن",
330
+ "ولكن",
331
+ "لكنني",
332
+ "بس",
333
+ "غير",
334
+ "ابدا"
335
+ ]
336
+ },
337
+ hints: {
338
+ there: "خذني إلى هناك",
339
+ yes: "نعم"
340
+ }
341
+ };
342
+ //#endregion
343
+ export { e as ARABIC_COMMANDS };
@@ -0,0 +1,12 @@
1
+ import { EnglishAdditions } from '../types';
2
+ /**
3
+ * What the commands engine adds to the English grammar (design §2.4, §2.9). The
4
+ * English grammar itself is untouched and always runs first; this is only
5
+ *
6
+ * - `language`: "switch to Hindi" and "change to Hindi" (not rules before, in
7
+ * any language of the app), which a visible sidebar label of that name beats;
8
+ * - `goto`: the English go-to verbs, read through the fold of the app's own
9
+ * language, so `go to फसलें` finds a sidebar entry spelled `फ़सलें`. Used only
10
+ * in an app whose table is active.
11
+ */
12
+ export declare const ENGLISH_COMMAND_ADDITIONS: EnglishAdditions;
@@ -0,0 +1,28 @@
1
+ //#region src/shared/assistant/localeCommands/tables/en.ts
2
+ var e = {
3
+ language: ["(switch|change) to [the] {lang} [language]", "(switch|change) over to [the] {lang} [language]"],
4
+ goto: {
5
+ go: [
6
+ "(go|navigate|head|jump|move) to [(the|my|our)] {x}",
7
+ "(go|navigate|head|jump|move) to [(the|my|our)] {x} {p}",
8
+ "(take|bring|get) me to [(the|my|our)] {x}",
9
+ "(take|bring|get) me to [(the|my|our)] {x} {p}",
10
+ "[the] {x} {p}"
11
+ ],
12
+ open: [
13
+ "open [up] [(the|my|our)] {x}",
14
+ "open [up] [(the|my|our)] {x} {p}",
15
+ "(pull|bring) up [(the|my|our)] {x}",
16
+ "visit [(the|my|our)] {x}"
17
+ ],
18
+ show: ["show me [(the|my|our)] {x} {p}"],
19
+ places: [
20
+ "page",
21
+ "screen",
22
+ "section"
23
+ ],
24
+ ambiguous: /* @__PURE__ */ "task.tasks.issue.issues.ticket.tickets.order.orders.invoice.invoices.alert.alerts.request.requests.job.jobs.incident.incidents.bug.bugs.case.cases.deal.deals.item.items.question.questions.session.sessions.position.positions.approval.approvals.action.actions.application.applications".split(".")
25
+ }
26
+ };
27
+ //#endregion
28
+ export { e as ENGLISH_COMMAND_ADDITIONS };
@@ -0,0 +1,7 @@
1
+ import { LocaleTable } from '../types';
2
+ /**
3
+ * Spanish. AI-written, no native review (operator decision 2026-10-07); every
4
+ * phrase is a seed the blind set measures. Accents are folded away on both
5
+ * sides (except the ñ), and a leading article on the name is optional.
6
+ */
7
+ export declare const SPANISH_COMMANDS: LocaleTable;