@burdenoff/fe-libs 2026.924.2 → 2026.924.4

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 (42) hide show
  1. package/dist/shared/assistant/adminModeSendGate.d.ts.map +1 -1
  2. package/dist/shared/assistant/adminModeSendGate.js +23 -20
  3. package/dist/shared/assistant/autoRouting.d.ts +197 -0
  4. package/dist/shared/assistant/autoRouting.d.ts.map +1 -0
  5. package/dist/shared/assistant/autoRouting.js +854 -0
  6. package/dist/shared/assistant/conversation.d.ts +13 -0
  7. package/dist/shared/assistant/conversation.d.ts.map +1 -1
  8. package/dist/shared/assistant/i18nManifest.d.ts +2 -0
  9. package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
  10. package/dist/shared/assistant/i18nManifest.js +23 -19
  11. package/dist/shared/assistant/index.d.ts +3 -0
  12. package/dist/shared/assistant/index.d.ts.map +1 -1
  13. package/dist/shared/assistant/modeCapabilities.d.ts +1 -1
  14. package/dist/shared/assistant/modeCapabilities.d.ts.map +1 -1
  15. package/dist/shared/assistant/modeCapabilities.js +29 -28
  16. package/dist/shared/assistant/permissionError.d.ts.map +1 -1
  17. package/dist/shared/assistant/permissionError.js +11 -10
  18. package/dist/shared/assistant/store.d.ts +32 -2
  19. package/dist/shared/assistant/store.d.ts.map +1 -1
  20. package/dist/shared/assistant/store.js +69 -29
  21. package/dist/shared/assistant/turnOutcome.d.ts +58 -0
  22. package/dist/shared/assistant/turnOutcome.d.ts.map +1 -0
  23. package/dist/shared/assistant/turnOutcome.js +79 -0
  24. package/dist/shared/assistant/turnOutcomeCopy.d.ts +62 -0
  25. package/dist/shared/assistant/turnOutcomeCopy.d.ts.map +1 -0
  26. package/dist/shared/assistant/turnOutcomeCopy.js +49 -0
  27. package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
  28. package/dist/shared/assistant/ui/AssistantChatArea.js +475 -399
  29. package/dist/shared/assistant/ui/AssistantEmptyState.d.ts +17 -1
  30. package/dist/shared/assistant/ui/AssistantEmptyState.d.ts.map +1 -1
  31. package/dist/shared/assistant/ui/AssistantEmptyState.js +14 -9
  32. package/dist/shared/assistant/ui/composer/AssistantComposer.d.ts +3 -0
  33. package/dist/shared/assistant/ui/composer/AssistantComposer.d.ts.map +1 -1
  34. package/dist/shared/assistant/ui/composer/AssistantComposer.js +110 -109
  35. package/dist/shared/assistant/ui/composer/AssistantModeSelector.d.ts +20 -0
  36. package/dist/shared/assistant/ui/composer/AssistantModeSelector.d.ts.map +1 -1
  37. package/dist/shared/assistant/ui/composer/AssistantModeSelector.js +89 -45
  38. package/dist/shared/assistant/writeModeConsent.d.ts +15 -2
  39. package/dist/shared/assistant/writeModeConsent.d.ts.map +1 -1
  40. package/dist/shared/assistant/writeModeConsent.js +24 -19
  41. package/dist/shared-assistant.js +116 -113
  42. package/package.json +1 -1
@@ -141,7 +141,20 @@ export interface Conversation {
141
141
  updatedAt: string;
142
142
  /** Backend session ID for this conversation */
143
143
  backendSessionId?: string | null;
144
+ /**
145
+ * `"auto"` when Auto chose this conversation's mode rather than the person
146
+ * (BOFF-7800). Absent means the person chose it — or the conversation
147
+ * predates Auto — and a chosen mode is never converted.
148
+ *
149
+ * ★ `mode` stays the transport value either way: Auto never sends as itself.
150
+ */
151
+ routedBy?: ConversationRouting;
144
152
  }
153
+ /**
154
+ * How a conversation came by its mode. See `Conversation.routedBy` and
155
+ * `autoRouting.ts`.
156
+ */
157
+ export type ConversationRouting = "auto";
145
158
  export interface AssistantSandboxRuntime {
146
159
  sandboxId: string;
147
160
  status: AssistantSandboxStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/conversation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/conversation.ts"],"names":[],"mappings":"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"}
@@ -205,6 +205,8 @@ export declare const ASSISTANT_I18N_LITERAL_COPY: {
205
205
  readonly "message.stopSpeakingShort": "Stop";
206
206
  readonly "messageList.ariaLabel": "Conversation messages";
207
207
  readonly "modeSelector.ariaLabel": "Select assistant mode";
208
+ readonly "modeSelector.auto": "Auto";
209
+ readonly "modeSelector.autoHint": "Answers your questions, and proposes changes for you to approve";
208
210
  readonly "overlay.launcher": "AI Assistant";
209
211
  readonly "overlay.launcherTitle": "AI Assistant ({{shortcut}})";
210
212
  readonly "panel.ariaLabel": "AI Assistant";
@@ -1 +1 @@
1
- {"version":3,"file":"i18nManifest.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/i18nManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAS1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0GG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkNG,CAAC;AAE5C,mDAAmD;AACnD,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,2BAA2B,CAAC;AAW/E;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBtE,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIjE,CAAC;AAEL,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,mBAAmB,EACnB,IAAI,GAAG,OAAO,GAAG,mBAAmB,CACrC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC9C,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiCzB"}
1
+ {"version":3,"file":"i18nManifest.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/i18nManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAU1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0GG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuNG,CAAC;AAE5C,mDAAmD;AACnD,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,2BAA2B,CAAC;AAW/E;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBtE,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIjE,CAAC;AAEL,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,mBAAmB,EACnB,IAAI,GAAG,OAAO,GAAG,mBAAmB,CACrC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC9C,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiCzB"}
@@ -1,12 +1,13 @@
1
1
  import { assistantTranslationKey as e } from "./i18n.js";
2
2
  import { assistantModeFallbackLabel as t } from "./modeCopy.js";
3
3
  import { isAssistantModeId as n } from "./modeIds.js";
4
- import { INCOMPLETE_TURN_NOTICES as r } from "./streamBudget.js";
5
- import { STAGE_COPY as i, THINKING_PHRASES as a } from "./stageCopy.js";
6
- import { VOICE_MUTED_LABEL as o, VOICE_THINKING_LABEL as s } from "./voice/voiceStatus.js";
7
- import { ATTACHMENT_SOURCES as c } from "./attachmentSources.js";
4
+ import { TURN_OUTCOME_COPY as r } from "./turnOutcomeCopy.js";
5
+ import { INCOMPLETE_TURN_NOTICES as i } from "./streamBudget.js";
6
+ import { STAGE_COPY as a, THINKING_PHRASES as o } from "./stageCopy.js";
7
+ import { VOICE_MUTED_LABEL as s, VOICE_THINKING_LABEL as c } from "./voice/voiceStatus.js";
8
+ import { ATTACHMENT_SOURCES as l } from "./attachmentSources.js";
8
9
  //#region src/shared/assistant/i18nManifest.ts
9
- var l = {
10
+ var u = {
10
11
  "apiCalls.consentBody": "In Take action mode the assistant can read AND change your data — creating records, logging activity, updating details, and more, on your behalf.",
11
12
  "apiCalls.consentBody2": "It will describe what it is about to do and ask you to confirm before making a change. Only continue if you want the assistant to take actions for you.",
12
13
  "apiCalls.consentCancel": "Stay in Ask",
@@ -99,6 +100,8 @@ var l = {
99
100
  "message.stopSpeakingShort": "Stop",
100
101
  "messageList.ariaLabel": "Conversation messages",
101
102
  "modeSelector.ariaLabel": "Select assistant mode",
103
+ "modeSelector.auto": "Auto",
104
+ "modeSelector.autoHint": "Answers your questions, and proposes changes for you to approve",
102
105
  "overlay.launcher": "AI Assistant",
103
106
  "overlay.launcherTitle": "AI Assistant ({{shortcut}})",
104
107
  "panel.ariaLabel": "AI Assistant",
@@ -189,25 +192,26 @@ var l = {
189
192
  "writeConsent.confirm": "Enable {{mode}}",
190
193
  "writeConsent.title": "Switch to {{mode}} mode?",
191
194
  "writeConsent.unconfirmed": "It does not stop to ask before each change — it makes changes as soon as it decides to. Only continue if you want the assistant to change your data without asking first."
192
- }, u = (e) => Object.fromEntries(e.map((e) => [e.key, e.fallback])), d = Object.freeze({
193
- ...u(Object.values(i)),
194
- ...u(a),
195
- ...u([s, o]),
196
- ...u(r),
197
- ...Object.fromEntries(c.map((e) => [e.labelKey, e.labelFallback]))
198
- }), f = Object.freeze({
199
- ...l,
200
- ...d
195
+ }, d = (e) => Object.fromEntries(e.map((e) => [e.key, e.fallback])), f = Object.freeze({
196
+ ...d(Object.values(a)),
197
+ ...d(o),
198
+ ...d([c, s]),
199
+ ...d(i),
200
+ ...d(Object.values(r)),
201
+ ...Object.fromEntries(l.map((e) => [e.labelKey, e.labelFallback]))
202
+ }), p = Object.freeze({
203
+ ...u,
204
+ ...f
201
205
  });
202
- function p(e) {
206
+ function m(e) {
203
207
  let r = e.map((e) => e.id).filter((e) => !n(e));
204
208
  if (r.length > 0) throw Error(`assistantModeI18nCopy: malformed mode id ${r.map((e) => JSON.stringify(e)).join(", ")}. Declare product modes with declareAssistantMode().`);
205
209
  return Object.fromEntries(e.map((e) => [`mode.${e.id}`, e.label || t(e)]));
206
210
  }
207
- function m(t) {
211
+ function h(t) {
208
212
  let n = {
209
- ...f,
210
- ...p(t.modes)
213
+ ...p,
214
+ ...m(t.modes)
211
215
  }, r = Object.entries(t.overrides ?? {}), i = r.filter(([e]) => !Object.hasOwn(n, e)).map(([e]) => e);
212
216
  if (i.length > 0) throw Error(`assistantI18nSeedCopy: no shared assistant key ${i.join(", ")} to override. Check the spelling, or that the key is a mode this product offers; a key fe-libs no longer requests belongs with the product's own keys.`);
213
217
  let a = r.filter(([, e]) => e.trim() === "").map(([e]) => e);
@@ -219,4 +223,4 @@ function m(t) {
219
223
  return Object.fromEntries(Object.entries(o).map(([n, r]) => [e(t.namespace, n), r]));
220
224
  }
221
225
  //#endregion
222
- export { d as ASSISTANT_I18N_COMPUTED_COPY, l as ASSISTANT_I18N_LITERAL_COPY, f as ASSISTANT_I18N_MANIFEST, m as assistantI18nSeedCopy, p as assistantModeI18nCopy };
226
+ export { f as ASSISTANT_I18N_COMPUTED_COPY, u as ASSISTANT_I18N_LITERAL_COPY, p as ASSISTANT_I18N_MANIFEST, h as assistantI18nSeedCopy, m as assistantModeI18nCopy };
@@ -151,6 +151,9 @@ export * from './useConversationTurns';
151
151
  export * from './transportErrors';
152
152
  export * from './quota';
153
153
  export * from './permissionError';
154
+ export * from './autoRouting';
155
+ export * from './turnOutcome';
156
+ export * from './turnOutcomeCopy';
154
157
  export * from './aiCredits';
155
158
  export * from './useWorkspaceWriteAccess';
156
159
  export * from './documentExtract';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
@@ -134,7 +134,7 @@ export declare function adminOnlyModeSendRefusal(config: {
134
134
  * mounted with no product modes at all; refusing it would leave such a panel
135
135
  * with no mode that can send.
136
136
  */
137
- export declare const UNAVAILABLE_MODE_REFUSAL = "This assistant mode is not available here. Switch to another mode and send again.";
137
+ export declare const UNAVAILABLE_MODE_REFUSAL: string;
138
138
  export declare function unofferedModeSendRefusal(mode: AssistantMode, config: {
139
139
  readonly id: AssistantMode;
140
140
  } | null | undefined): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"modeCapabilities.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/modeCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEnE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,yBAAyB;IACxC,sEAAsE;IACtE,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,yFAAyF;IACzF,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC;;;;;;;;;OASG;IACH,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,2EAA2E;AAC3E,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,mBAAmB,EACjB,IAAI,GACJ,mBAAmB,GACnB,gBAAgB,GAChB,uBAAuB,GACvB,sBAAsB,CACzB,CAAC;AAKF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,UAAY,CAAC;AAUxD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAC/C,MAAM,CAAC,oBAAoB,EAAE,yBAAyB,CAAC,CAkBvD,CAAC;AAEH,qDAAqD;AACrD,eAAO,MAAM,4BAA4B,EAAE,yBAOvC,CAAC;AAeL;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,EACtC,MAAM,CAAC,EAAE,6BAA6B,GAAG,IAAI,GAC5C,yBAAyB,CAyB3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,EAC/D,MAAM,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;CAAE,GACxE,MAAM,GAAG,IAAI,CASf;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,wBAAwB,sFACgD,CAAC;AAEtF,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GACxD,MAAM,GAAG,IAAI,CAIf;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,aAAa,CAAA;CAAE,EACrE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,EACtC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GACrC,CAAC,GAAG,SAAS,CAGf"}
1
+ {"version":3,"file":"modeCapabilities.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/modeCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAGnE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,yBAAyB;IACxC,sEAAsE;IACtE,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,yFAAyF;IACzF,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC;;;;;;;;;OASG;IACH,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,2EAA2E;AAC3E,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,mBAAmB,EACjB,IAAI,GACJ,mBAAmB,GACnB,gBAAgB,GAChB,uBAAuB,GACvB,sBAAsB,CACzB,CAAC;AAKF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,UAAY,CAAC;AAUxD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAC/C,MAAM,CAAC,oBAAoB,EAAE,yBAAyB,CAAC,CAkBvD,CAAC;AAEH,qDAAqD;AACrD,eAAO,MAAM,4BAA4B,EAAE,yBAOvC,CAAC;AAeL;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,EACtC,MAAM,CAAC,EAAE,6BAA6B,GAAG,IAAI,GAC5C,yBAAyB,CAyB3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,EAC/D,MAAM,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;CAAE,GACxE,MAAM,GAAG,IAAI,CASf;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,wBAAwB,EAAE,MACK,CAAC;AAE7C,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GACxD,MAAM,GAAG,IAAI,CAIf;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,aAAa,CAAA;CAAE,EACrE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,EACtC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GACrC,CAAC,GAAG,SAAS,CAGf"}
@@ -1,54 +1,55 @@
1
1
  import { isBuiltInAssistantMode as e } from "./modeCopy.js";
2
2
  import { isProductAssistantModeId as t } from "./modeIds.js";
3
+ import { TURN_OUTCOME_COPY as n } from "./turnOutcomeCopy.js";
3
4
  //#region src/shared/assistant/modeCapabilities.ts
4
- var n = 18e4, r = 6e5, i = 36e5, a = Object.freeze({
5
+ var r = 18e4, i = 6e5, a = 36e5, o = Object.freeze({
5
6
  producesArtifacts: !1,
6
- streamBudgetMs: n,
7
+ streamBudgetMs: r,
7
8
  continuesInBackground: !1,
8
9
  accumulatesNarration: !1,
9
10
  provisionable: !0
10
- }), o = Object.freeze({
11
- general: a,
12
- assistant: a,
13
- "api-calls": a,
11
+ }), s = Object.freeze({
12
+ general: o,
13
+ assistant: o,
14
+ "api-calls": o,
14
15
  "vibe-plugins": Object.freeze({
15
16
  producesArtifacts: !0,
16
- streamBudgetMs: r,
17
+ streamBudgetMs: i,
17
18
  continuesInBackground: !0,
18
19
  accumulatesNarration: !1,
19
20
  provisionable: !0
20
21
  })
21
- }), s = Object.freeze({
22
+ }), c = Object.freeze({
22
23
  producesArtifacts: !1,
23
- streamBudgetMs: n,
24
+ streamBudgetMs: r,
24
25
  continuesInBackground: !1,
25
26
  accumulatesNarration: !1,
26
27
  provisionable: !1
27
- }), c = (e) => typeof e == "boolean" ? e : void 0, l = (e) => typeof e == "number" && Number.isFinite(e) && e > 0 && e <= 36e5 ? e : void 0;
28
- function u(n, r) {
29
- let i = r && r.id === n ? r : void 0, u;
30
- if (e(n)) u = o[n];
31
- else if (i && t(n)) u = a;
32
- else return s;
33
- if (!i) return u;
34
- let d = c(i.producesArtifacts);
28
+ }), l = (e) => typeof e == "boolean" ? e : void 0, u = (e) => typeof e == "number" && Number.isFinite(e) && e > 0 && e <= 36e5 ? e : void 0;
29
+ function d(n, r) {
30
+ let i = r && r.id === n ? r : void 0, a;
31
+ if (e(n)) a = s[n];
32
+ else if (i && t(n)) a = o;
33
+ else return c;
34
+ if (!i) return a;
35
+ let d = l(i.producesArtifacts);
35
36
  return {
36
- producesArtifacts: d ?? u.producesArtifacts,
37
- streamBudgetMs: l(i.streamBudgetMs) ?? u.streamBudgetMs,
38
- continuesInBackground: c(i.continuesInBackground) ?? d ?? u.continuesInBackground,
39
- accumulatesNarration: c(i.accumulatesNarration) ?? u.accumulatesNarration,
37
+ producesArtifacts: d ?? a.producesArtifacts,
38
+ streamBudgetMs: u(i.streamBudgetMs) ?? a.streamBudgetMs,
39
+ continuesInBackground: l(i.continuesInBackground) ?? d ?? a.continuesInBackground,
40
+ accumulatesNarration: l(i.accumulatesNarration) ?? a.accumulatesNarration,
40
41
  provisionable: !0
41
42
  };
42
43
  }
43
- function d(e, t) {
44
- return e?.requiresAdmin ? t.loading ? "Still checking whether you can use this assistant mode. Wait a moment, then send again." : t.canUseAdminModes ? null : "This assistant mode is only available to organization admins. Switch to another mode and send again." : null;
45
- }
46
- var f = "This assistant mode is not available here. Switch to another mode and send again.";
47
- function p(e, t) {
48
- return t?.id === e || e === "assistant" ? null : f;
44
+ function f(e, t) {
45
+ return e?.requiresAdmin ? t.loading ? n.modeAccessPending.fallback : t.canUseAdminModes ? null : n.modeAdminOnly.fallback : null;
49
46
  }
47
+ var p = n.modeUnavailable.fallback;
50
48
  function m(e, t) {
49
+ return t?.id === e || e === "assistant" ? null : p;
50
+ }
51
+ function h(e, t) {
51
52
  if (t) return e?.find((e) => e.id === t);
52
53
  }
53
54
  //#endregion
54
- export { o as BUILT_IN_MODE_CAPABILITIES, i as MAX_ASSISTANT_STREAM_BUDGET_MS, f as UNAVAILABLE_MODE_REFUSAL, s as UNDECLARED_MODE_CAPABILITIES, d as adminOnlyModeSendRefusal, m as findAssistantModeConfig, u as resolveAssistantModeCapabilities, p as unofferedModeSendRefusal };
55
+ export { s as BUILT_IN_MODE_CAPABILITIES, a as MAX_ASSISTANT_STREAM_BUDGET_MS, p as UNAVAILABLE_MODE_REFUSAL, c as UNDECLARED_MODE_CAPABILITIES, f as adminOnlyModeSendRefusal, h as findAssistantModeConfig, d as resolveAssistantModeCapabilities, m as unofferedModeSendRefusal };
@@ -1 +1 @@
1
- {"version":3,"file":"permissionError.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/permissionError.ts"],"names":[],"mappings":"AAmCA,gFAAgF;AAChF,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AASD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,uBAAuB,GAAG,IAAI,CAwBhC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,uBAAuB,GAC9B,MAAM,CAIR"}
1
+ {"version":3,"file":"permissionError.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/permissionError.ts"],"names":[],"mappings":"AAoCA,gFAAgF;AAChF,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AASD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,uBAAuB,GAAG,IAAI,CAwBhC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,uBAAuB,GAC9B,MAAM,CAIR"}
@@ -1,25 +1,26 @@
1
1
  import { extensionObjectsIn as e } from "./quota.js";
2
+ import { TURN_OUTCOME_COPY as t } from "./turnOutcomeCopy.js";
2
3
  //#region src/shared/assistant/permissionError.ts
3
- var t = new Set([
4
+ var n = new Set([
4
5
  "UNAUTHENTICATED_ACTOR",
5
6
  "WORKSPACE_SESSION_UNRESOLVED",
6
7
  "WORKSPACE_CONTEXT_MISSING"
7
8
  ]);
8
- function n(n) {
9
+ function r(t) {
9
10
  let r = !1, i = null;
10
- for (let t of e(n)) {
11
- let e = t.code;
11
+ for (let n of e(t)) {
12
+ let e = n.code;
12
13
  (e === "FORBIDDEN" || e === "PERMISSION_DENIED") && (r = !0);
13
- let n = t.authFailure;
14
- typeof n == "string" && n.length > 0 && !i && (i = n);
14
+ let t = n.authFailure;
15
+ typeof t == "string" && t.length > 0 && !i && (i = t);
15
16
  }
16
17
  return !r && !i ? null : {
17
- refusal: i && t.has(i) ? "session" : "denied",
18
+ refusal: i && n.has(i) ? "session" : "denied",
18
19
  authFailure: i
19
20
  };
20
21
  }
21
- function r(e) {
22
- return e.refusal === "session" ? "Your session could not be verified for this workspace. Reopen the page, then send again." : "You do not have permission to do that in this workspace. Ask someone who administers it for access.";
22
+ function i(e) {
23
+ return e.refusal === "session" ? t.sessionUnverified.fallback : t.permissionDenied.fallback;
23
24
  }
24
25
  //#endregion
25
- export { n as describePermissionError, r as permissionRefusalMessage };
26
+ export { r as describePermissionError, i as permissionRefusalMessage };
@@ -1,9 +1,21 @@
1
- import { AssistantConversationProcessing, AssistantConversationStatus, AssistantMessageMetadata, AssistantSandboxRuntime, AssistantSandboxStatus, AssistantTurnStage, Conversation, Message } from './conversation';
1
+ import { AssistantConversationProcessing, AssistantConversationStatus, AssistantMessageMetadata, AssistantSandboxRuntime, AssistantSandboxStatus, AssistantTurnStage, Conversation, ConversationRouting, Message } from './conversation';
2
2
  import { AssistantMode } from './types';
3
3
  interface AssistantState {
4
4
  conversations: Conversation[];
5
5
  activeConversationId: string | null;
6
6
  mode: AssistantMode;
7
+ /**
8
+ * Auto is selected: the assistant routes each conversation by what it is
9
+ * asked (BOFF-7800). `mode` still holds the transport mode in play — Auto is
10
+ * never sent — and the chat area honours this only where Auto is offered
11
+ * (`isAutoRoutingOffered`), so it is inert in a product with nothing to route
12
+ * between.
13
+ *
14
+ * ★ Mirrors the open conversation: `routedBy === "auto"` there. It is stored
15
+ * separately only for the moment no conversation is open, when it is the
16
+ * choice the next one will be started with.
17
+ */
18
+ autoRouting: boolean;
7
19
  processingByConversationId: Record<string, AssistantConversationProcessing>;
8
20
  conversationListOpen: boolean;
9
21
  /** Active sandboxes keyed by assistant mode */
@@ -60,12 +72,30 @@ interface AssistantState {
60
72
  * falling back to the ranking rather than by trying to sync it.
61
73
  */
62
74
  preferredVoices: Record<string, string>;
63
- createConversation: (title?: string, mode?: AssistantMode) => string;
75
+ /**
76
+ * With no `mode`, a new conversation in whatever is SELECTED: Auto's while
77
+ * Auto is (BOFF-7800), otherwise the mode the person picked — never
78
+ * overriding their choice. With a `mode`, the person chose it, unless
79
+ * `routedBy` says Auto did.
80
+ */
81
+ createConversation: (title?: string, mode?: AssistantMode, options?: {
82
+ routedBy?: ConversationRouting;
83
+ }) => string;
64
84
  deleteConversation: (id: string) => void;
65
85
  renameConversation: (id: string, title: string) => void;
66
86
  setActiveConversation: (id: string | null) => void;
67
87
  setMode: (mode: AssistantMode) => void;
88
+ /** The person chose `mode` for this conversation; it is no longer Auto's. */
68
89
  setConversationMode: (conversationId: string, mode: AssistantMode) => void;
90
+ /** Select or leave Auto for the conversation to come. */
91
+ setAutoRouting: (autoRouting: boolean) => void;
92
+ /**
93
+ * Auto routed this conversation to `mode`. Moving it to a DIFFERENT mode
94
+ * drops its backend session, which belongs to the old mode's sandbox; the
95
+ * send that follows starts one in the new mode (and carries the person's
96
+ * earlier messages over — `autoCarryOverFor`).
97
+ */
98
+ routeConversation: (conversationId: string, mode: AssistantMode) => void;
69
99
  addMessage: (conversationId: string, message: Message) => void;
70
100
  updateMessage: (conversationId: string, messageId: string, content: string) => void;
71
101
  patchMessage: (conversationId: string, messageId: string, patch: Partial<Message>) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/store.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,34 @@
1
1
  import { createProfileScopedStorage as e } from "../utils/profileScopedStorage.js";
2
2
  import "../../shared-utils.js";
3
3
  import { LEGACY_WRITE_CONSENT_KEY as t, restoreAcknowledgedWriteModes as n, withWriteModeAcknowledged as r } from "./writeModeConsent.js";
4
- import { create as i } from "zustand";
5
- import { persist as a } from "zustand/middleware";
4
+ import { restoreAutoRouting as i } from "./autoRouting.js";
5
+ import { create as a } from "zustand";
6
+ import { persist as o } from "zustand/middleware";
6
7
  //#region src/shared/assistant/store.ts
7
- function o() {
8
+ function s() {
8
9
  return `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
9
10
  }
10
- function s(e) {
11
+ function c(e) {
11
12
  let t = e.sandboxesByMode[e.mode]?.sandboxId;
12
13
  return t ? {
13
14
  sandboxId: t,
14
15
  mode: e.mode
15
16
  } : null;
16
17
  }
17
- function c(e, r) {
18
- let i = typeof e == "object" && e ? Object.fromEntries(Object.entries(e).filter(([e]) => e !== t)) : {};
18
+ function l(e, r) {
19
+ let a = typeof e == "object" && e ? Object.fromEntries(Object.entries(e).filter(([e]) => e !== t)) : {};
19
20
  return {
20
21
  ...r,
21
- ...i,
22
- acknowledgedWriteModes: n(e)
22
+ ...a,
23
+ acknowledgedWriteModes: n(e),
24
+ autoRouting: i(e)
23
25
  };
24
26
  }
25
- var l = i()(a((e, t) => ({
27
+ var u = a()(o((e, t) => ({
26
28
  conversations: [],
27
29
  activeConversationId: null,
28
30
  mode: "assistant",
31
+ autoRouting: !0,
29
32
  processingByConversationId: {},
30
33
  conversationListOpen: !1,
31
34
  sandboxesByMode: {},
@@ -35,28 +38,40 @@ var l = i()(a((e, t) => ({
35
38
  assistantLanguage: null,
36
39
  replyLanguage: null,
37
40
  preferredVoices: {},
38
- createConversation: (n, r) => {
39
- let i = o(), a = (/* @__PURE__ */ new Date()).toISOString(), s = r ?? t().mode, c = {
40
- id: i,
41
+ createConversation: (n, r, i) => {
42
+ let a = s(), o = (/* @__PURE__ */ new Date()).toISOString(), c = r === void 0 && t().autoRouting, l = i?.routedBy ?? (c ? "auto" : void 0), u = r ?? (c ? "assistant" : t().mode), d = {
43
+ id: a,
41
44
  title: n || "New conversation",
42
- mode: s,
45
+ mode: u,
43
46
  messages: [],
44
47
  backendSessionId: null,
45
- createdAt: a,
46
- updatedAt: a
48
+ createdAt: o,
49
+ updatedAt: o,
50
+ ...l ? { routedBy: l } : {}
47
51
  };
48
52
  return e((e) => ({
49
- conversations: [c, ...e.conversations],
50
- activeConversationId: i,
51
- conversationListOpen: !1
52
- })), i;
53
+ conversations: [d, ...e.conversations],
54
+ activeConversationId: a,
55
+ conversationListOpen: !1,
56
+ mode: u,
57
+ autoRouting: l === "auto"
58
+ })), a;
53
59
  },
54
60
  deleteConversation: (t) => e((e) => {
55
61
  let n = e.conversations.filter((e) => e.id !== t), r = { ...e.processingByConversationId };
56
- return delete r[t], {
62
+ if (delete r[t], e.activeConversationId !== t) return {
63
+ conversations: n,
64
+ processingByConversationId: r
65
+ };
66
+ let i = n[0];
67
+ return {
57
68
  conversations: n,
58
69
  processingByConversationId: r,
59
- activeConversationId: e.activeConversationId === t ? n[0]?.id ?? null : e.activeConversationId
70
+ activeConversationId: i?.id ?? null,
71
+ ...i ? {
72
+ mode: i.mode,
73
+ autoRouting: i.routedBy === "auto"
74
+ } : {}
60
75
  };
61
76
  }),
62
77
  renameConversation: (t, n) => e((e) => ({ conversations: e.conversations.map((e) => e.id === t ? {
@@ -64,19 +79,42 @@ var l = i()(a((e, t) => ({
64
79
  title: n,
65
80
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
66
81
  } : e) })),
67
- setActiveConversation: (t) => e((e) => ({
68
- activeConversationId: t,
69
- mode: e.conversations.find((e) => e.id === t)?.mode ?? e.mode,
70
- conversationListOpen: !1
71
- })),
82
+ setActiveConversation: (t) => e((e) => {
83
+ let n = e.conversations.find((e) => e.id === t);
84
+ return {
85
+ activeConversationId: t,
86
+ mode: n?.mode ?? e.mode,
87
+ autoRouting: n ? n.routedBy === "auto" : e.autoRouting,
88
+ conversationListOpen: !1
89
+ };
90
+ }),
72
91
  setMode: (t) => e({ mode: t }),
73
92
  setConversationMode: (t, n) => e((e) => ({
93
+ conversations: e.conversations.map((e) => {
94
+ if (e.id !== t) return e;
95
+ let r = {
96
+ ...e,
97
+ mode: n,
98
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
99
+ };
100
+ return delete r.routedBy, r;
101
+ }),
102
+ mode: e.activeConversationId === t ? n : e.mode,
103
+ autoRouting: e.activeConversationId === t ? !1 : e.autoRouting
104
+ })),
105
+ setAutoRouting: (t) => e({ autoRouting: t }),
106
+ routeConversation: (t, n) => e((e) => ({
74
107
  conversations: e.conversations.map((e) => e.id === t ? {
75
108
  ...e,
76
109
  mode: n,
110
+ routedBy: "auto",
111
+ ...e.mode === n ? {} : { backendSessionId: null },
77
112
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
78
113
  } : e),
79
- mode: e.activeConversationId === t ? n : e.mode
114
+ ...e.activeConversationId === t ? {
115
+ mode: n,
116
+ autoRouting: !0
117
+ } : {}
80
118
  })),
81
119
  addMessage: (t, n) => e((e) => ({ conversations: e.conversations.map((e) => e.id === t ? {
82
120
  ...e,
@@ -179,6 +217,7 @@ var l = i()(a((e, t) => ({
179
217
  conversations: [],
180
218
  activeConversationId: null,
181
219
  mode: "assistant",
220
+ autoRouting: !0,
182
221
  processingByConversationId: {},
183
222
  conversationListOpen: !1,
184
223
  sandboxesByMode: {},
@@ -209,6 +248,7 @@ var l = i()(a((e, t) => ({
209
248
  conversations: e.conversations.map(({ ...e }) => e),
210
249
  activeConversationId: e.activeConversationId,
211
250
  mode: e.mode,
251
+ autoRouting: e.autoRouting,
212
252
  conversationListOpen: e.conversationListOpen,
213
253
  acknowledgedWriteModes: e.acknowledgedWriteModes,
214
254
  autoSpeakEnabled: e.autoSpeakEnabled,
@@ -216,7 +256,7 @@ var l = i()(a((e, t) => ({
216
256
  replyLanguage: e.replyLanguage,
217
257
  preferredVoices: e.preferredVoices
218
258
  }),
219
- merge: c
259
+ merge: l
220
260
  }));
221
261
  //#endregion
222
- export { c as mergePersistedAssistantState, s as resolveActiveModeSandbox, l as useAssistantStore };
262
+ export { l as mergePersistedAssistantState, c as resolveActiveModeSandbox, u as useAssistantStore };
@@ -0,0 +1,58 @@
1
+ import { AssistantTr } from './i18n';
2
+ import { TurnOutcomeCopyId } from './turnOutcomeCopy';
3
+ /** Why a send was refused before it reached the backend. */
4
+ export type SendRefusalReason = "confirm-write-mode" | "voice-in-write-mode" | "mode-unavailable" | "mode-admin-only" | "mode-access-pending";
5
+ /**
6
+ * A send refused on the client, before it reached the backend: something must
7
+ * be confirmed, chosen or waited for first. Thrown instead of a bare `Error` so
8
+ * the outcome is decided by what it IS, never by matching its words.
9
+ */
10
+ export declare class AssistantSendRefusal extends Error {
11
+ readonly reason: SendRefusalReason;
12
+ constructor(reason: SendRefusalReason, message: string);
13
+ }
14
+ export type TurnOutcomeKind = "usage" | "permission" | "confirmation" | "temporary";
15
+ export interface TurnOutcome {
16
+ kind: TurnOutcomeKind;
17
+ /** The copy that says it. */
18
+ copy: TurnOutcomeCopyId;
19
+ /** Only for a usage wall that more allowance would fix: open the upgrade dialog. */
20
+ offersUpgrade: boolean;
21
+ /** Which quota was hit, when the server named one. */
22
+ quotaName: string | null;
23
+ /** The server's trace id, for support — shown as a reference, never as the message. */
24
+ traceId: string | null;
25
+ }
26
+ /**
27
+ * The outcome of a failed turn.
28
+ *
29
+ * ★★ Order matters: a client refusal first (it never reached a server); then
30
+ * the usage wall, BEFORE permission — a sandbox quota refusal can also carry a
31
+ * denial-shaped code, and permission checked first would swallow it and the
32
+ * upgrade dialog would never open; then permission; and only what is left is
33
+ * temporary. "Temporary" is the honest default for the rest: a network drop, a
34
+ * timeout, a 5xx, a sandbox that did not come up — retrying can succeed, and
35
+ * nothing about the person's plan or access is implied.
36
+ */
37
+ export declare function classifyTurnFailure(error: unknown): TurnOutcome;
38
+ /**
39
+ * What the outcome says: `text` for the conversation, `headline` alone for
40
+ * compact surfaces (a preview's end state), and whether it is `translated`.
41
+ *
42
+ * ★★ ONE LANGUAGE PER MESSAGE. The headline and the reference line are
43
+ * separate keys, and a product can seed one before the other. A message half
44
+ * translated would be stamped with ONE language and read aloud in that voice,
45
+ * English words included — so unless every part is translated, every part is
46
+ * English, stamped `en`.
47
+ *
48
+ * ★ The panel's own copy follows the INTERFACE language (`tr` resolves in the
49
+ * active locale), not the reply language a person may have set apart from it:
50
+ * a Tamil reply under an English interface gets an English outcome, correctly
51
+ * stamped `en`. The translator has no way to ask for another language.
52
+ */
53
+ export declare function turnOutcomeCopy(outcome: TurnOutcome, tr: AssistantTr): {
54
+ text: string;
55
+ headline: string;
56
+ translated: boolean;
57
+ };
58
+ //# sourceMappingURL=turnOutcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turnOutcome.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/turnOutcome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG1C,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE9E,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GACzB,oBAAoB,GACpB,qBAAqB,GACrB,kBAAkB,GAClB,iBAAiB,GACjB,qBAAqB,CAAC;AAE1B;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;gBAEvB,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM;CAKvD;AAED,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,YAAY,GACZ,cAAc,GACd,WAAW,CAAC;AAEhB,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,6BAA6B;IAC7B,IAAI,EAAE,iBAAiB,CAAC;IACxB,oFAAoF;IACpF,aAAa,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uFAAuF;IACvF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAsBD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAsC/D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,EAAE,EAAE,WAAW,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAuBzD"}