@burdenoff/fe-libs 2026.1009.1 → 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 (60) hide show
  1. package/dist/shared/assistant/appControls/copy.js +1 -0
  2. package/dist/shared/assistant/appControls/grammar.d.ts +2 -0
  3. package/dist/shared/assistant/appControls/grammar.js +43 -41
  4. package/dist/shared/assistant/appControls/languages.d.ts +2 -0
  5. package/dist/shared/assistant/appControls/languages.js +8 -5
  6. package/dist/shared/assistant/appControls/plan.d.ts +4 -0
  7. package/dist/shared/assistant/appControls/plan.js +135 -118
  8. package/dist/shared/assistant/appControls/types.d.ts +23 -1
  9. package/dist/shared/assistant/i18nManifest.d.ts +1 -0
  10. package/dist/shared/assistant/i18nManifest.js +1 -0
  11. package/dist/shared/assistant/index.d.ts +18 -0
  12. package/dist/shared/assistant/localUiCommands.d.ts +33 -0
  13. package/dist/shared/assistant/localUiCommands.js +159 -88
  14. package/dist/shared/assistant/localeCommands/active.d.ts +19 -0
  15. package/dist/shared/assistant/localeCommands/active.js +25 -0
  16. package/dist/shared/assistant/localeCommands/assent.d.ts +25 -0
  17. package/dist/shared/assistant/localeCommands/assent.js +78 -0
  18. package/dist/shared/assistant/localeCommands/engine.d.ts +89 -0
  19. package/dist/shared/assistant/localeCommands/engine.js +351 -0
  20. package/dist/shared/assistant/localeCommands/evaluate.d.ts +77 -0
  21. package/dist/shared/assistant/localeCommands/evaluate.js +180 -0
  22. package/dist/shared/assistant/localeCommands/fold.d.ts +17 -0
  23. package/dist/shared/assistant/localeCommands/fold.js +66 -0
  24. package/dist/shared/assistant/localeCommands/frames.d.ts +23 -0
  25. package/dist/shared/assistant/localeCommands/frames.js +150 -0
  26. package/dist/shared/assistant/localeCommands/gate.d.ts +37 -0
  27. package/dist/shared/assistant/localeCommands/gate.js +137 -0
  28. package/dist/shared/assistant/localeCommands/languageNames.d.ts +11 -0
  29. package/dist/shared/assistant/localeCommands/languageNames.js +53 -0
  30. package/dist/shared/assistant/localeCommands/nameForms.d.ts +21 -0
  31. package/dist/shared/assistant/localeCommands/nameForms.js +44 -0
  32. package/dist/shared/assistant/localeCommands/normalise.d.ts +49 -0
  33. package/dist/shared/assistant/localeCommands/normalise.js +87 -0
  34. package/dist/shared/assistant/localeCommands/symbols.d.ts +8 -0
  35. package/dist/shared/assistant/localeCommands/symbols.js +6 -0
  36. package/dist/shared/assistant/localeCommands/tables/ar.d.ts +10 -0
  37. package/dist/shared/assistant/localeCommands/tables/ar.js +343 -0
  38. package/dist/shared/assistant/localeCommands/tables/en.d.ts +12 -0
  39. package/dist/shared/assistant/localeCommands/tables/en.js +28 -0
  40. package/dist/shared/assistant/localeCommands/tables/es.d.ts +7 -0
  41. package/dist/shared/assistant/localeCommands/tables/es.js +356 -0
  42. package/dist/shared/assistant/localeCommands/tables/hi.d.ts +9 -0
  43. package/dist/shared/assistant/localeCommands/tables/hi.js +495 -0
  44. package/dist/shared/assistant/localeCommands/tables/ta.d.ts +10 -0
  45. package/dist/shared/assistant/localeCommands/tables/ta.js +429 -0
  46. package/dist/shared/assistant/localeCommands/tables/zh.d.ts +9 -0
  47. package/dist/shared/assistant/localeCommands/tables/zh.js +402 -0
  48. package/dist/shared/assistant/localeCommands/types.d.ts +172 -0
  49. package/dist/shared/assistant/localeCommands/types.js +19 -0
  50. package/dist/shared/assistant/ui/AIAssistantPanel.js +5 -1
  51. package/dist/shared/assistant/ui/AssistantChatArea.js +1340 -1330
  52. package/dist/shared/assistant/uiActions/linkContext.d.ts +20 -1
  53. package/dist/shared/assistant/uiActions/linkContext.js +39 -21
  54. package/dist/shared/assistant/uiActions/offerYesOnSurface.d.ts +6 -0
  55. package/dist/shared/assistant/uiActions/offerYesOnSurface.js +1 -1
  56. package/dist/shared/assistant/writeReplyBinder.d.ts +1 -1
  57. package/dist/shared/assistant/writeReplySend.d.ts +16 -0
  58. package/dist/shared/assistant/writeReplySend.js +23 -1
  59. package/dist/shared-assistant.js +55 -37
  60. package/package.json +1 -1
@@ -32,6 +32,7 @@ var i = (e) => e.map(t).join(", "), a = (e, t) => {
32
32
  function s(e, s) {
33
33
  switch (s.code) {
34
34
  case "opened": return r([a(e, s.what)], ([e]) => e ?? "");
35
+ case "closed": return r([[e("appControl.closed.preview", "Closed the AI preview."), "Closed the AI preview."]], ([e]) => e ?? "");
35
36
  case "search-opened": return s.query === null ? r([[e("appControl.searchOpened", "Opened search."), "Opened search."]], ([e]) => e ?? "") : r([[e("appControl.searchOpenedFor", "Opened search for “{{query}}”."), "Opened search for “{{query}}”."]], ([e]) => n(e ?? "", { query: t(s.query ?? "") }));
36
37
  case "sidebar": return r(s.already ? [s.collapsed ? [e("appControl.sidebarAlreadyCollapsed", "The sidebar is already collapsed."), "The sidebar is already collapsed."] : [e("appControl.sidebarAlreadyExpanded", "The sidebar is already expanded."), "The sidebar is already expanded."]] : [s.collapsed ? [e("appControl.sidebarCollapsed", "Collapsed the sidebar."), "Collapsed the sidebar."] : [e("appControl.sidebarExpanded", "Expanded the sidebar."), "Expanded the sidebar."]], ([e]) => e ?? "");
37
38
  case "sidebar-entry": return r([s.already ? s.expanded ? [e("appControl.entryAlreadyExpanded", "{{name}} is already expanded."), "{{name}} is already expanded."] : [e("appControl.entryAlreadyCollapsed", "{{name}} is already collapsed."), "{{name}} is already collapsed."] : s.expanded ? [e("appControl.entryExpanded", "Expanded {{name}}."), "Expanded {{name}}."] : [e("appControl.entryCollapsed", "Collapsed {{name}}."), "Collapsed {{name}}."]], ([e]) => n(e ?? "", { name: t(s.name) }));
@@ -55,6 +55,8 @@ export type AppControlRequest = {
55
55
  control: "assistant.transcript";
56
56
  } | {
57
57
  control: "assistant.preview";
58
+ } | {
59
+ control: "assistant.preview.close";
58
60
  } | {
59
61
  control: "assistant.conversation.new";
60
62
  } | {
@@ -24,29 +24,29 @@ 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
- ], k = RegExp(`^${i} ${r}(?:(?:assistant|ai|conversation|conversations|chat) history|history of (?:my )?(?:conversations|chats)|(?:past|previous|old|earlier) conversations)$`), A = RegExp(`^${i} ${r}history$`), j = RegExp(`^${i} ${r}(?:voice|spoken|speech) transcript$`), M = RegExp(`^${i} ${r}transcript$`), N = RegExp(`^${i} ${r}(?:ai|assistant) preview(?: panel| pane| surface)?$`), P = RegExp(`^${i} ${r}preview(?: panel| pane)?$`), F = /^(?:(?:start|begin|open) (?:a |an |another )?(?:new |fresh |blank )?conversation|new conversation|(?:start|begin) (?:a )?(?:new|fresh) conversation with you)$/, I = [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 (.+)$/], L = "(?:filter|narrow|limit)(?: down)?", R = [RegExp(`^${L}(?: ${r}(?:page|list|table|results|items|rows|view))? (?:by|to|for|on) ${r}(.+)$`)], z = [/^(?:show|display|list|keep) only (.+)$/, /^only (?:show|display|list|keep) (.+)$/], B = [
27
+ ], k = RegExp(`^${i} ${r}(?:(?:assistant|ai|conversation|conversations|chat) history|history of (?:my )?(?:conversations|chats)|(?:past|previous|old|earlier) conversations)$`), A = RegExp(`^${i} ${r}history$`), j = RegExp(`^${i} ${r}(?:voice|spoken|speech) transcript$`), M = RegExp(`^${i} ${r}transcript$`), ee = RegExp(`^${i} ${r}(?:ai|assistant) preview(?: panel| pane| surface)?$`), N = RegExp(`^${i} ${r}preview(?: panel| pane)?$`), P = RegExp(`^(?:close|hide|dismiss) ${r}(?:ai|assistant) preview(?: panel| pane| surface)?$`), F = RegExp(`^(?:close|hide) ${r}preview(?: panel| pane)?$`), I = /^(?:(?:start|begin|open) (?:a |an |another )?(?:new |fresh |blank )?conversation|new conversation|(?:start|begin) (?:a )?(?:new|fresh) conversation with you)$/, L = [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 (.+)$/], R = "(?:filter|narrow|limit)(?: down)?", z = [RegExp(`^${R}(?: ${r}(?:page|list|table|results|items|rows|view))? (?:by|to|for|on) ${r}(.+)$`)], B = [/^(?:show|display|list|keep) only (.+)$/, /^only (?:show|display|list|keep) (.+)$/], V = [
28
28
  RegExp(`^(?:set|change|switch|put|make) ${r}(.+?) filter (?:to|as|on) (.+)$`),
29
- RegExp(`^${L} ${r}(.+?) (?:by|to|for|on) (.+)$`),
29
+ RegExp(`^${R} ${r}(.+?) (?:by|to|for|on) (.+)$`),
30
30
  RegExp(`^(?:use|apply) ${r}(.+?) filter (?:of|with|for|set to) (.+)$`)
31
- ], V = RegExp(`^(?:clear|remove|reset|drop|turn off) ${r}(?:(?:all|every) )?(?:(.+?) )?filters?$`), H = [
31
+ ], H = RegExp(`^(?:clear|remove|reset|drop|turn off) ${r}(?:(?:all|every) )?(?:(.+?) )?filters?$`), U = [
32
32
  [/(?: in)? (?:ascending|asc)(?: order)?$/, "asc"],
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
- ], U = RegExp(`^(?:sort|order|arrange|rank)(?: ${r}(?:page|list|table|results|items|rows|view|it|them))? by (.+)$`), W = /^(?:sort|order)(?: it| them)? (ascending|descending|asc|desc)$/, G = [
36
+ ], W = RegExp(`^(?:sort|order|arrange|rank)(?: ${r}(?:page|list|table|results|items|rows|view|it|them))? by (.+)$`), G = /^(?:sort|order)(?: it| them)? (ascending|descending|asc|desc)$/, K = [
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
- ], K = /^(?: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)$`)], J = RegExp(`^(?:open|show|start|bring up|pull up) ${r}(.+)$`), Y = /\b(?:and then|then|and also|also|after that|afterwards|and open|and show|and go|and sort|and filter)\b/;
41
- function X(e, t) {
40
+ ], q = /^(?:clear|reset|empty|remove|stop) (?:the |my |this )?(?:page )?search(?:ing)?$/, J = [RegExp(`^(?:open|show|start|bring up|pull up) ${r}(.+?) (?:form|dialog|dialogue|modal)$`)], Y = RegExp(`^(?:open|show|start|bring up|pull up) ${r}(.+)$`), X = /\b(?:and then|then|and also|also|after that|afterwards|and open|and show|and go|and sort|and filter)\b/;
41
+ function Z(e, t) {
42
42
  for (let n of e) {
43
43
  let e = n.exec(t);
44
44
  if (e) return e;
45
45
  }
46
46
  return null;
47
47
  }
48
- function Z(e) {
49
- for (let [t, n] of H) {
48
+ function Q(e) {
49
+ for (let [t, n] of U) {
50
50
  let r = t.exec(e);
51
51
  if (r) return {
52
52
  field: e.slice(0, r.index).trim(),
@@ -58,13 +58,13 @@ function Z(e) {
58
58
  direction: null
59
59
  };
60
60
  }
61
- function Q(e) {
61
+ function $(e) {
62
62
  let t = e.replace(/\b(?:please|pls)$/, "").trim();
63
63
  return !t || t.length > l ? null : t;
64
64
  }
65
- function $(s, l, S) {
65
+ function te(s, l, S) {
66
66
  let T = S.registered;
67
- if (Y.test(s)) return null;
67
+ if (X.test(s)) return null;
68
68
  if (T["account.logout"] && u.test(s)) return a({ control: "account.logout" });
69
69
  if (T["header.workspace"] || T["header.context"]) {
70
70
  let e = RegExp(`^(?:switch|change|move|go|jump|hop)(?: over)? to ${r}(.+?) ${d}$`).exec(s) ?? RegExp(`^(?:switch|change|move) ${r}${d} (?:to|over to) ${r}(.+)$`).exec(s);
@@ -88,7 +88,7 @@ function $(s, l, S) {
88
88
  }
89
89
  if (T["header.search"]) {
90
90
  for (let e of x) {
91
- let t = e.exec(s), n = t ? Q(t[1] ?? "") : null;
91
+ let t = e.exec(s), n = t ? $(t[1] ?? "") : null;
92
92
  if (n) return a({
93
93
  control: "header.search",
94
94
  query: c(l, n)
@@ -143,16 +143,18 @@ function $(s, l, S) {
143
143
  if (M.test(s)) return o({ control: "assistant.transcript" });
144
144
  }
145
145
  if (T["assistant.preview"]) {
146
- if (N.test(s)) return a({ control: "assistant.preview" });
147
- if (P.test(s)) return o({ control: "assistant.preview" });
148
- }
149
- if (T["assistant.conversation.new"] && F.test(s)) return a({ control: "assistant.conversation.new" });
150
- let L = S.page;
151
- if (!L) return null;
152
- if (L.tabs.length > 0) {
153
- let e = X(I, s), t = e ? (e[1] ?? "").trim() : "";
146
+ if (ee.test(s)) return a({ control: "assistant.preview" });
147
+ if (N.test(s)) return o({ control: "assistant.preview" });
148
+ if (P.test(s)) return a({ control: "assistant.preview.close" });
149
+ if (F.test(s)) return o({ control: "assistant.preview.close" });
150
+ }
151
+ if (T["assistant.conversation.new"] && I.test(s)) return a({ control: "assistant.conversation.new" });
152
+ let R = S.page;
153
+ if (!R) return null;
154
+ if (R.tabs.length > 0) {
155
+ let e = Z(L, s), t = e ? (e[1] ?? "").trim() : "";
154
156
  if (t) {
155
- let e = n(t, L.tabs).kind !== "none";
157
+ let e = n(t, R.tabs).kind !== "none";
156
158
  return {
157
159
  request: {
158
160
  control: "page.tab",
@@ -162,30 +164,30 @@ function $(s, l, S) {
162
164
  };
163
165
  }
164
166
  }
165
- if (L.filters.length > 0) {
166
- let e = V.exec(s);
167
+ if (R.filters.length > 0) {
168
+ let e = H.exec(s);
167
169
  if (e) return a({
168
170
  control: "page.filter.clear",
169
171
  filter: (e[1] ?? "").trim() || null
170
172
  });
171
- let t = X(B, s);
173
+ let t = Z(V, s);
172
174
  if (t) {
173
175
  let e = (t[1] ?? "").trim(), r = (t[2] ?? "").trim();
174
- if (e && r && n(e, L.filters).kind !== "none") return a({
176
+ if (e && r && n(e, R.filters).kind !== "none") return a({
175
177
  control: "page.filter",
176
178
  filter: e,
177
179
  option: r
178
180
  });
179
181
  }
180
- let r = X(R, s);
182
+ let r = Z(z, s);
181
183
  if (r && (r[1] ?? "").trim()) return a({
182
184
  control: "page.filter",
183
185
  filter: null,
184
186
  option: (r[1] ?? "").trim()
185
187
  });
186
- let i = X(z, s);
188
+ let i = Z(B, s);
187
189
  if (i) {
188
- let e = (i[1] ?? "").trim(), t = L.filters.some((t) => n(e, t.options).kind !== "none");
190
+ let e = (i[1] ?? "").trim(), t = R.filters.some((t) => n(e, t.options).kind !== "none");
189
191
  if (e && t) return a({
190
192
  control: "page.filter",
191
193
  filter: null,
@@ -193,16 +195,16 @@ function $(s, l, S) {
193
195
  });
194
196
  }
195
197
  }
196
- if (L.sorts.length > 0) {
197
- let e = W.exec(s);
198
+ if (R.sorts.length > 0) {
199
+ let e = G.exec(s);
198
200
  if (e) return a({
199
201
  control: "page.sort",
200
202
  field: null,
201
203
  direction: /^asc/.test(e[1] ?? "") ? "asc" : "desc"
202
204
  });
203
- let t = U.exec(s);
205
+ let t = W.exec(s);
204
206
  if (t) {
205
- let { field: e, direction: n } = Z((t[1] ?? "").trim());
207
+ let { field: e, direction: n } = Q((t[1] ?? "").trim());
206
208
  if (e) return a({
207
209
  control: "page.sort",
208
210
  field: e,
@@ -210,22 +212,22 @@ function $(s, l, S) {
210
212
  });
211
213
  }
212
214
  }
213
- if (L.searchable) {
214
- if (K.test(s)) return a({ control: "page.search.clear" });
215
- let e = X(G, s), t = e ? Q(e[1] ?? "") : null;
215
+ if (R.searchable) {
216
+ if (q.test(s)) return a({ control: "page.search.clear" });
217
+ let e = Z(K, s), t = e ? $(e[1] ?? "") : null;
216
218
  if (t) return a({
217
219
  control: "page.search",
218
220
  query: c(l, t)
219
221
  });
220
222
  }
221
- if (L.openers.length > 0) {
222
- let t = X(q, s), r = t ? (t[1] ?? "").trim() : "";
223
- if (r && n(r, L.openers).kind !== "none") return a({
223
+ if (R.openers.length > 0) {
224
+ let t = Z(J, s), r = t ? (t[1] ?? "").trim() : "";
225
+ if (r && n(r, R.openers).kind !== "none") return a({
224
226
  control: "page.open",
225
227
  name: r
226
228
  });
227
- let i = J.exec(s), c = i ? (i[1] ?? "").trim() : "";
228
- if (c && L.openers.filter((t) => e(t.label) === c).length > 0) return o({
229
+ let i = Y.exec(s), c = i ? (i[1] ?? "").trim() : "";
230
+ if (c && R.openers.filter((t) => e(t.label) === c).length > 0) return o({
229
231
  control: "page.open",
230
232
  name: c
231
233
  });
@@ -233,4 +235,4 @@ function $(s, l, S) {
233
235
  return null;
234
236
  }
235
237
  //#endregion
236
- export { $ as matchAppControl, c as queryAsSaid };
238
+ export { te as matchAppControl, c as queryAsSaid };
@@ -1,4 +1,6 @@
1
1
  import { UiLanguageCode } from './types';
2
+ /** The words the table gives for one UI language (the English name, its own name). */
3
+ export declare function uiLanguageWords(code: UiLanguageCode): readonly string[];
2
4
  /** The UI language a phrase names ("Hindi", "the Tamil language"), or null. */
3
5
  export declare function uiLanguageFromWords(said: string): UiLanguageCode | null;
4
6
  /** The English name of a UI language, for saying that an app does not offer it. */
@@ -33,11 +33,14 @@ var t = {
33
33
  ]
34
34
  }, n = /* @__PURE__ */ new Map();
35
35
  for (let [r, i] of Object.entries(t)) for (let t of i) n.set(e(t), r);
36
- function r(t) {
36
+ function r(e) {
37
+ return t[e];
38
+ }
39
+ function i(t) {
37
40
  let r = e(t).replace(/^(?:the|a) /, "").replace(/ language$/, "").trim();
38
41
  return n.get(r) ?? null;
39
42
  }
40
- var i = {
43
+ var a = {
41
44
  en: "English",
42
45
  ar: "Arabic",
43
46
  es: "Spanish",
@@ -45,8 +48,8 @@ var i = {
45
48
  ta: "Tamil",
46
49
  zh: "Chinese"
47
50
  };
48
- function a(e) {
49
- return i[e];
51
+ function o(e) {
52
+ return a[e];
50
53
  }
51
54
  //#endregion
52
- export { a as uiLanguageEnglishName, r as uiLanguageFromWords };
55
+ export { o as uiLanguageEnglishName, i as uiLanguageFromWords, r as uiLanguageWords };
@@ -9,6 +9,9 @@ import { ControlBlock, ControlKey, SortDirection } from './types';
9
9
  export type ControlReply = {
10
10
  code: "opened";
11
11
  what: OpenedWhat;
12
+ } | {
13
+ code: "closed";
14
+ what: ClosedWhat;
12
15
  } | {
13
16
  code: "search-opened";
14
17
  query: string | null;
@@ -95,6 +98,7 @@ export type ControlReply = {
95
98
  reason: ControlBlock;
96
99
  };
97
100
  export type OpenedWhat = "notifications" | "help" | "context" | "history" | "transcript" | "preview" | "conversation";
101
+ export type ClosedWhat = "preview";
98
102
  export type NotFoundKind = "tab" | "filter" | "filter-option" | "sort" | "form" | "workspace";
99
103
  export type AmbiguousKind = "tab" | "filter" | "menu" | "workspace" | "column" | "form";
100
104
  /** What is recorded on the exchange (`AssistantLocalAction`). */