@burdenoff/fe-libs 2026.1007.5 → 2026.1007.6
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/api.d.ts +11 -0
- package/dist/shared/assistant/api.d.ts.map +1 -1
- package/dist/shared/assistant/api.js +6 -2
- package/dist/shared/assistant/conversation.d.ts +14 -0
- package/dist/shared/assistant/conversation.d.ts.map +1 -1
- package/dist/shared/assistant/createSandboxAssistantTransport.d.ts +8 -1
- package/dist/shared/assistant/createSandboxAssistantTransport.d.ts.map +1 -1
- package/dist/shared/assistant/createSandboxAssistantTransport.js +70 -51
- package/dist/shared/assistant/history/historyMapping.d.ts.map +1 -1
- package/dist/shared/assistant/history/historyMapping.js +19 -12
- package/dist/shared/assistant/i18nManifest.d.ts +9 -0
- package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
- package/dist/shared/assistant/i18nManifest.js +9 -0
- package/dist/shared/assistant/index.d.ts +6 -0
- package/dist/shared/assistant/index.d.ts.map +1 -1
- package/dist/shared/assistant/localUiCommandCopy.d.ts +23 -0
- package/dist/shared/assistant/localUiCommandCopy.d.ts.map +1 -1
- package/dist/shared/assistant/localUiCommandCopy.js +60 -23
- package/dist/shared/assistant/localUiCommands.d.ts +29 -0
- package/dist/shared/assistant/localUiCommands.d.ts.map +1 -1
- package/dist/shared/assistant/localUiCommands.js +18 -7
- package/dist/shared/assistant/types.d.ts +19 -8
- package/dist/shared/assistant/types.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +1479 -1140
- package/dist/shared/assistant/ui/AssistantMarkdownRenderer.d.ts +18 -3
- package/dist/shared/assistant/ui/AssistantMarkdownRenderer.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMarkdownRenderer.js +1 -1
- package/dist/shared/assistant/ui/AssistantMessageItem.d.ts +5 -0
- package/dist/shared/assistant/ui/AssistantMessageItem.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMessageItem.js +89 -84
- package/dist/shared/assistant/ui/AssistantMessageList.d.ts +5 -0
- package/dist/shared/assistant/ui/AssistantMessageList.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMessageList.js +26 -25
- package/dist/shared/assistant/ui/AssistantUiOfferLink.d.ts +45 -0
- package/dist/shared/assistant/ui/AssistantUiOfferLink.d.ts.map +1 -0
- package/dist/shared/assistant/ui/AssistantUiOfferLink.js +56 -0
- package/dist/shared/assistant/ui/assistantOverlayState.d.ts +9 -0
- package/dist/shared/assistant/ui/assistantOverlayState.d.ts.map +1 -1
- package/dist/shared/assistant/ui/assistantOverlayState.js +37 -28
- package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.d.ts.map +1 -1
- package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.js +1 -1
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts +5 -0
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +12 -11
- package/dist/shared/assistant/ui/voice/VoiceConversationView.d.ts +6 -1
- package/dist/shared/assistant/ui/voice/VoiceConversationView.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/VoiceConversationView.js +7 -7
- package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.d.ts +6 -1
- package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.js +15 -12
- package/dist/shared/assistant/uiActions/actOnResolve.d.ts +108 -0
- package/dist/shared/assistant/uiActions/actOnResolve.d.ts.map +1 -0
- package/dist/shared/assistant/uiActions/actOnResolve.js +51 -0
- package/dist/shared/assistant/uiActions/linkContext.d.ts +29 -0
- package/dist/shared/assistant/uiActions/linkContext.d.ts.map +1 -1
- package/dist/shared/assistant/uiActions/linkContext.js +37 -10
- package/dist/shared/assistant/uiActions/navIntent.d.ts +58 -0
- package/dist/shared/assistant/uiActions/navIntent.d.ts.map +1 -0
- package/dist/shared/assistant/uiActions/navIntent.js +79 -0
- package/dist/shared/assistant/uiActions/navigateAction.d.ts +6 -1
- package/dist/shared/assistant/uiActions/navigateAction.d.ts.map +1 -1
- package/dist/shared/assistant/uiActions/navigateAction.js +18 -14
- package/dist/shared/assistant/uiActions/navigationOutcome.d.ts +16 -2
- package/dist/shared/assistant/uiActions/navigationOutcome.d.ts.map +1 -1
- package/dist/shared/assistant/uiActions/navigationOutcome.js +6 -2
- package/dist/shared/assistant/uiActions/offerYesOnSurface.d.ts +39 -0
- package/dist/shared/assistant/uiActions/offerYesOnSurface.d.ts.map +1 -0
- package/dist/shared/assistant/uiActions/offerYesOnSurface.js +34 -0
- package/dist/shared/assistant/uiActions/uiCatalogue.d.ts +14 -0
- package/dist/shared/assistant/uiActions/uiCatalogue.d.ts.map +1 -1
- package/dist/shared/assistant/uiActions/uiCatalogue.js +23 -3
- package/dist/shared/assistant/uiActions/uiOffers.d.ts +249 -0
- package/dist/shared/assistant/uiActions/uiOffers.d.ts.map +1 -0
- package/dist/shared/assistant/uiActions/uiOffers.js +195 -0
- package/dist/shared/assistant/writeProposals.d.ts +6 -0
- package/dist/shared/assistant/writeProposals.d.ts.map +1 -1
- package/dist/shared/assistant/writeReplyBinder.d.ts +40 -0
- package/dist/shared/assistant/writeReplyBinder.d.ts.map +1 -1
- package/dist/shared/assistant/writeReplyBinder.js +100 -83
- package/dist/shared/assistant/writeReplySend.d.ts +14 -0
- package/dist/shared/assistant/writeReplySend.d.ts.map +1 -1
- package/dist/shared/assistant/writeReplySend.js +32 -29
- package/dist/shared/hooks/index.d.ts +2 -0
- package/dist/shared/hooks/index.d.ts.map +1 -1
- package/dist/shared/navigation/unsavedChanges.d.ts +83 -0
- package/dist/shared/navigation/unsavedChanges.d.ts.map +1 -0
- package/dist/shared/navigation/unsavedChanges.js +46 -0
- package/dist/shared-assistant.js +244 -238
- package/dist/shared-hooks.js +10 -9
- package/dist/shared.js +20 -19
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistantOverlayState.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/assistantOverlayState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"assistantOverlayState.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/assistantOverlayState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,72 +1,81 @@
|
|
|
1
|
+
import { unsavedChangesBlocking as e } from "../../navigation/unsavedChanges.js";
|
|
1
2
|
//#region src/shared/assistant/ui/assistantOverlayState.ts
|
|
2
|
-
function
|
|
3
|
+
function t(e) {
|
|
3
4
|
return {
|
|
4
5
|
toggleEvent: `${e}:toggle-ai-assistant`,
|
|
5
6
|
openStorageKey: `${e}:ai-panel:isOpen`,
|
|
6
7
|
dockStorageKey: `${e}:ai-panel:docked`
|
|
7
8
|
};
|
|
8
9
|
}
|
|
9
|
-
function
|
|
10
|
+
function n(e) {
|
|
10
11
|
if (typeof CustomEvent > "u" || !(e instanceof CustomEvent)) return null;
|
|
11
12
|
let t = e.detail;
|
|
12
13
|
return typeof t != "object" || !t || !("open" in t) ? null : typeof t.open == "boolean" ? t.open : null;
|
|
13
14
|
}
|
|
14
|
-
function
|
|
15
|
+
function r(e, t) {
|
|
15
16
|
return t ?? !e;
|
|
16
17
|
}
|
|
17
|
-
var
|
|
18
|
-
function
|
|
18
|
+
var i = "Ctrl+Shift+A";
|
|
19
|
+
function a(e) {
|
|
19
20
|
return (e.ctrlKey || e.metaKey) && e.shiftKey && typeof e.key == "string" && e.key.toLowerCase() === "a";
|
|
20
21
|
}
|
|
21
|
-
var
|
|
22
|
-
function
|
|
23
|
-
return
|
|
22
|
+
var o = "[role=\"dialog\"],[role=\"alertdialog\"],dialog[open]";
|
|
23
|
+
function s(e, t) {
|
|
24
|
+
return c(e) ? e.closest(t) : null;
|
|
24
25
|
}
|
|
25
|
-
function
|
|
26
|
+
function c(e) {
|
|
26
27
|
return typeof e == "object" && !!e && "closest" in e && typeof e.closest == "function";
|
|
27
28
|
}
|
|
28
|
-
function
|
|
29
|
+
function l(e) {
|
|
29
30
|
return e.key !== "Escape" || !e.isOpen || e.alreadyHandled || e.dialogOpen || e.pressedInsideDialog || e.panelOwnsEscape ? "ignore" : "close";
|
|
30
31
|
}
|
|
31
|
-
var
|
|
32
|
-
function
|
|
33
|
-
return `calc(${e} + ${
|
|
32
|
+
var u = "max(var(--mobile-tabbar-height, 0px), var(--safe-bottom, 0px), env(safe-area-inset-bottom, 0px))";
|
|
33
|
+
function d(e) {
|
|
34
|
+
return `calc(${e} + ${u})`;
|
|
34
35
|
}
|
|
35
|
-
var
|
|
36
|
-
function
|
|
36
|
+
var f = 440, p = "--assistant-dock-width", m = "--assistant-overlay-top", h = 56, g = "(min-width: 640px)";
|
|
37
|
+
function _(e) {
|
|
37
38
|
return e.isOpen && e.docked && e.isDesktop ? 440 : 0;
|
|
38
39
|
}
|
|
39
|
-
var
|
|
40
|
-
function
|
|
40
|
+
var v = 520, y = 24, b = "--assistant-panel-inset";
|
|
41
|
+
function x(e) {
|
|
41
42
|
return !e.isOpen || !e.isDesktop ? 0 : e.docked ? 440 : 544;
|
|
42
43
|
}
|
|
43
|
-
var
|
|
44
|
-
function
|
|
44
|
+
var S = "fixed z-50 flex flex-col overflow-hidden border border-border-default bg-bg-surface shadow-2xl inset-x-0 bottom-0 top-auto rounded-t-2xl animate-in slide-in-from-bottom-4 fade-in duration-200", C = "h-[60vh] max-h-[60vh]", w = "h-[88vh] max-h-[88vh]", T = "sm:inset-auto sm:top-auto sm:bottom-24 sm:right-6 sm:rounded-2xl sm:h-[680px] sm:max-h-[calc(100vh-8rem)] sm:w-[520px] sm:max-w-[calc(100vw-2rem)]", E = "sm:left-auto sm:right-0 sm:top-[var(--assistant-overlay-top)] sm:bottom-0 sm:rounded-none sm:h-auto sm:max-h-none sm:w-[440px] sm:max-w-[calc(100vw-2rem)]";
|
|
45
|
+
function D(e) {
|
|
45
46
|
return [
|
|
46
|
-
|
|
47
|
-
e.expanded ?
|
|
48
|
-
e.docked ?
|
|
47
|
+
S,
|
|
48
|
+
e.expanded ? w : C,
|
|
49
|
+
e.docked ? E : T
|
|
49
50
|
].join(" ");
|
|
50
51
|
}
|
|
51
|
-
function
|
|
52
|
-
return (
|
|
52
|
+
function O(t) {
|
|
53
|
+
return (n, r) => {
|
|
54
|
+
if (t.isShellLessTarget?.(n)) return t.openInNewTab(n), { kind: "new-tab" };
|
|
55
|
+
let i = e(r);
|
|
56
|
+
return i ? {
|
|
57
|
+
kind: "refused",
|
|
58
|
+
reason: "unsaved-changes",
|
|
59
|
+
unsaved: i
|
|
60
|
+
} : (t.navigate(n), t.isDesktop() || t.collapseSheet(), { kind: "routed" });
|
|
61
|
+
};
|
|
53
62
|
}
|
|
54
|
-
function
|
|
63
|
+
function k(e) {
|
|
55
64
|
if (typeof CustomEvent > "u" || !(e instanceof CustomEvent)) return "generic";
|
|
56
65
|
let t = e.detail;
|
|
57
66
|
return typeof t != "object" || !t || !("kind" in t) ? "generic" : t.kind === "sandbox" || t.kind === "ai-credits" ? t.kind : "generic";
|
|
58
67
|
}
|
|
59
|
-
function
|
|
68
|
+
function A(e, t) {
|
|
60
69
|
try {
|
|
61
70
|
return e()?.getItem(t) === "1";
|
|
62
71
|
} catch {
|
|
63
72
|
return !1;
|
|
64
73
|
}
|
|
65
74
|
}
|
|
66
|
-
function
|
|
75
|
+
function j(e, t, n) {
|
|
67
76
|
try {
|
|
68
77
|
e()?.setItem(t, n ? "1" : "0");
|
|
69
78
|
} catch {}
|
|
70
79
|
}
|
|
71
80
|
//#endregion
|
|
72
|
-
export {
|
|
81
|
+
export { u as ASSISTANT_BOTTOM_CHROME_CLEARANCE, o as ASSISTANT_DIALOG_SELECTOR, E as ASSISTANT_DOCKED_DESKTOP_CLASS, f as ASSISTANT_DOCK_WIDTH_PX, p as ASSISTANT_DOCK_WIDTH_VAR, T as ASSISTANT_FLOATING_DESKTOP_CLASS, y as ASSISTANT_FLOATING_RIGHT_PX, v as ASSISTANT_FLOATING_WIDTH_PX, h as ASSISTANT_OVERLAY_DEFAULT_TOP_PX, g as ASSISTANT_OVERLAY_DESKTOP_QUERY, m as ASSISTANT_OVERLAY_TOP_VAR, b as ASSISTANT_PANEL_INSET_VAR, S as ASSISTANT_SHEET_BASE_CLASS, C as ASSISTANT_SHEET_COMPACT_CLASS, w as ASSISTANT_SHEET_EXPANDED_CLASS, i as ASSISTANT_TOGGLE_SHORTCUT_LABEL, d as aboveAssistantBottomChrome, D as assistantOverlayClassName, l as assistantOverlayEscapeAction, t as assistantOverlayKeys, k as assistantQuotaKindOf, s as closestAround, O as createAssistantNavigate, a as isAssistantToggleShortcut, r as nextAssistantOpenState, _ as publishedAssistantDockWidth, x as publishedAssistantPanelInset, A as readAssistantOverlayFlag, n as requestedAssistantOpenState, j as writeAssistantOverlayFlag };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantConnectSourceItem.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/AssistantConnectSourceItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAe,KAAK,EAAE,EAAmB,MAAM,OAAO,CAAC;AAc9D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,IAAI,EAChB,UAAU,CAAC,EAAE,MAAM,IAAI,GACtB,MAAM,IAAI,CAKZ;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,kCAAkC,GAAG,UAAU,GAAG,QAAQ,CAAC;AAoBvE,MAAM,WAAW,+BAA+B;IAC9C,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,kCAAkC,CAAC;CACnD;AAED,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,+BAA+B,
|
|
1
|
+
{"version":3,"file":"AssistantConnectSourceItem.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/AssistantConnectSourceItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAe,KAAK,EAAE,EAAmB,MAAM,OAAO,CAAC;AAc9D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,IAAI,EAChB,UAAU,CAAC,EAAE,MAAM,IAAI,GACtB,MAAM,IAAI,CAKZ;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,kCAAkC,GAAG,UAAU,GAAG,QAAQ,CAAC;AAoBvE,MAAM,WAAW,+BAA+B;IAC9C,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,kCAAkC,CAAC;CACnD;AAED,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,+BAA+B,CA8F1E,CAAC"}
|
|
@@ -16,7 +16,7 @@ var d = "flex w-full items-center gap-2.5 border-t border-border-subtle px-3 py-
|
|
|
16
16
|
action: "assistant-connect-source-action"
|
|
17
17
|
}, m = ({ onActivate: m, presentation: h = "menuitem" }) => {
|
|
18
18
|
let g = e(), { href: _, open: v } = a(), y = r(), b = n(_), x = b === "internal" ? t(_) : null, S = o((e) => {
|
|
19
|
-
e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || (m?.(), !(!y || !x) && (e.preventDefault(), y(x)));
|
|
19
|
+
e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || (m?.(), !(!y || !x) && (e.preventDefault(), y(x, "person")));
|
|
20
20
|
}, [
|
|
21
21
|
y,
|
|
22
22
|
x,
|
|
@@ -83,6 +83,11 @@ interface Props {
|
|
|
83
83
|
closeLabel: string;
|
|
84
84
|
onClose: () => void;
|
|
85
85
|
} | null;
|
|
86
|
+
/**
|
|
87
|
+
* ★ BOFF-8060 (N3): drawn under one assistant turn in the transcript drawer
|
|
88
|
+
* — the page the model offered in that voice turn.
|
|
89
|
+
*/
|
|
90
|
+
renderAfterTurn?: (turnId: string) => ReactNode;
|
|
86
91
|
}
|
|
87
92
|
/**
|
|
88
93
|
* Full-screen voice conversation (BOFF-7120).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantVoiceSession.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/AssistantVoiceSession.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,EAAE,EACP,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAS7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAqBjG,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,gFAAgF;AAChF,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAElD,UAAU,KAAK;IACb,OAAO,EAAE,oBAAoB,CAAC;IAC9B,iEAAiE;IACjE,KAAK,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3C,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACrD,gEAAgE;IAChE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,4DAA4D;IAC5D,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1D,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,mFAAmF;IACnF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5D,6EAA6E;IAC7E,YAAY,CAAC,EAAE;QACb,OAAO,EAAE,SAAS,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"AssistantVoiceSession.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/AssistantVoiceSession.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,EAAE,EACP,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAS7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAqBjG,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,gFAAgF;AAChF,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAElD,UAAU,KAAK;IACb,OAAO,EAAE,oBAAoB,CAAC;IAC9B,iEAAiE;IACjE,KAAK,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3C,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACrD,gEAAgE;IAChE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,4DAA4D;IAC5D,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1D,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,mFAAmF;IACnF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5D,6EAA6E;IAC7E,YAAY,CAAC,EAAE;QACb,OAAO,EAAE,SAAS,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,GAAG,IAAI,CAAC;IACT;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,KAAK,CA81B3C,CAAC"}
|
|
@@ -17,7 +17,7 @@ import { useCallback as s, useEffect as c, useMemo as me, useRef as l, useState
|
|
|
17
17
|
import { Maximize2 as he, Minimize2 as ge, ScrollText as _e, X as d } from "lucide-react";
|
|
18
18
|
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
19
19
|
//#region src/shared/assistant/ui/voice/AssistantVoiceSession.tsx
|
|
20
|
-
var m = ({ session: m, turns: be = [], onSaveTranscript: xe, onContinueInChat: Se, notice: h = null, privacyNotice: g = null, spoken: _, onInterrupt: Ce, onToggleMute: v, attachments: y = [], onAttachFiles: b, onRemoveAttachment: we, onRetryAttachment: Te, canAttachMore: Ee = !0, preparingAttachments: x = 0, spokenChunks: S = null, onEnd: C, capturing: De = !0, interrupting: Oe = !1, awaitingEndpoint: ke = !1, holding: w = !1, correcting: Ae = !1, onLetMeFinish: T, onImDone: E, proposalChip: D = null, proposalTray: O = null }) => {
|
|
20
|
+
var m = ({ session: m, turns: be = [], onSaveTranscript: xe, onContinueInChat: Se, notice: h = null, privacyNotice: g = null, spoken: _, onInterrupt: Ce, onToggleMute: v, attachments: y = [], onAttachFiles: b, onRemoveAttachment: we, onRetryAttachment: Te, canAttachMore: Ee = !0, preparingAttachments: x = 0, spokenChunks: S = null, onEnd: C, capturing: De = !0, interrupting: Oe = !1, awaitingEndpoint: ke = !1, holding: w = !1, correcting: Ae = !1, onLetMeFinish: T, onImDone: E, proposalChip: D = null, proposalTray: O = null, renderAfterTurn: je }) => {
|
|
21
21
|
let k = n(), { muted: A, error: j } = m, M = l(null), N = l(null), [P, F] = u("mini"), I = P === "full", L = P === "mini", R = P === "mini" ? "panel" : P === "panel" ? "full" : "mini", [z, B] = u(!1);
|
|
22
22
|
t("assistant.transcript", me(() => ({ run: () => z ? { status: "already" } : (B(!0), { status: "done" }) }), [z]));
|
|
23
23
|
let V = O !== null && !L, H = l(!1), U = l(v);
|
|
@@ -26,7 +26,7 @@ var m = ({ session: m, turns: be = [], onSaveTranscript: xe, onContinueInChat: S
|
|
|
26
26
|
m.phase !== "listening" && m.phase !== "thinking" || A || H.current || o(m) || (H.current = !0, U.current());
|
|
27
27
|
}, [A, m]), G = s(() => {
|
|
28
28
|
H.current && (H.current = !1, U.current());
|
|
29
|
-
}, []),
|
|
29
|
+
}, []), Me = W;
|
|
30
30
|
c(() => {
|
|
31
31
|
let e = () => {
|
|
32
32
|
document.visibilityState === "hidden" ? W() : G();
|
|
@@ -84,7 +84,7 @@ var m = ({ session: m, turns: be = [], onSaveTranscript: xe, onContinueInChat: S
|
|
|
84
84
|
capturing: De,
|
|
85
85
|
interrupting: Oe,
|
|
86
86
|
awaitingEndpoint: ke
|
|
87
|
-
}),
|
|
87
|
+
}), Ne = (() => {
|
|
88
88
|
switch (X) {
|
|
89
89
|
case "connecting": return k("voiceSession.connecting", "Starting the microphone…");
|
|
90
90
|
case "endpoint-grace": return k("voiceSession.endpointGrace", "Still listening — take your time");
|
|
@@ -96,12 +96,12 @@ var m = ({ session: m, turns: be = [], onSaveTranscript: xe, onContinueInChat: S
|
|
|
96
96
|
case "listening": return A ? k("voiceSession.muted", "Microphone off") : k("voiceSession.listening", "Listening…");
|
|
97
97
|
default: return X;
|
|
98
98
|
}
|
|
99
|
-
})(), Z = !A && (X === "listening" || X === "endpoint-grace"), Q = Z && w ? k("voiceSession.holding", "Take your time — tap “I’m done” when you finish") : Z && Ae ? k("voiceSession.correcting", "Stopped that answer — listening to your correction") :
|
|
99
|
+
})(), Z = !A && (X === "listening" || X === "endpoint-grace"), Q = Z && w ? k("voiceSession.holding", "Take your time — tap “I’m done” when you finish") : Z && Ae ? k("voiceSession.correcting", "Stopped that answer — listening to your correction") : Ne, $ = ne({
|
|
100
100
|
tr: k,
|
|
101
101
|
stage: X,
|
|
102
102
|
muted: A,
|
|
103
103
|
label: Q
|
|
104
|
-
}),
|
|
104
|
+
}), Pe = te(Q, $), Fe = X === "thinking";
|
|
105
105
|
return /* @__PURE__ */ p("div", {
|
|
106
106
|
ref: N,
|
|
107
107
|
className: `flex flex-col items-center justify-between bg-bg-sunken ${P === "full" ? "fixed inset-x-0 bottom-0 top-14 z-[60] px-6 py-8" : P === "panel" ? "absolute inset-0 z-20 px-4 py-6" : "absolute inset-x-0 bottom-0 z-20 h-[11.25rem] border-t border-border-subtle px-3 py-3 shadow-lg"}`,
|
|
@@ -157,9 +157,9 @@ var m = ({ session: m, turns: be = [], onSaveTranscript: xe, onContinueInChat: S
|
|
|
157
157
|
spokenChunks: S,
|
|
158
158
|
state: X,
|
|
159
159
|
caption: i,
|
|
160
|
-
statusText:
|
|
160
|
+
statusText: Pe,
|
|
161
161
|
statusSuffix: $,
|
|
162
|
-
rotateStatus:
|
|
162
|
+
rotateStatus: Fe,
|
|
163
163
|
errorText: a,
|
|
164
164
|
control: n
|
|
165
165
|
}) : /* @__PURE__ */ f(le, {
|
|
@@ -168,9 +168,9 @@ var m = ({ session: m, turns: be = [], onSaveTranscript: xe, onContinueInChat: S
|
|
|
168
168
|
spokenChunks: S,
|
|
169
169
|
assistantCaption: _,
|
|
170
170
|
expanded: I,
|
|
171
|
-
statusText:
|
|
171
|
+
statusText: Pe,
|
|
172
172
|
statusSuffix: $,
|
|
173
|
-
rotateStatus:
|
|
173
|
+
rotateStatus: Fe,
|
|
174
174
|
errorText: a,
|
|
175
175
|
control: n
|
|
176
176
|
});
|
|
@@ -214,7 +214,8 @@ var m = ({ session: m, turns: be = [], onSaveTranscript: xe, onContinueInChat: S
|
|
|
214
214
|
turns: be,
|
|
215
215
|
onClose: () => B(!1),
|
|
216
216
|
onSave: xe,
|
|
217
|
-
onContinueInChat: Se
|
|
217
|
+
onContinueInChat: Se,
|
|
218
|
+
renderAfterTurn: je
|
|
218
219
|
}) : null,
|
|
219
220
|
b ? /* @__PURE__ */ f("div", {
|
|
220
221
|
className: `absolute ${I ? "left-6 top-6" : L ? "left-11 top-2" : "left-3 top-3"}`,
|
|
@@ -222,7 +223,7 @@ var m = ({ session: m, turns: be = [], onSaveTranscript: xe, onContinueInChat: S
|
|
|
222
223
|
onFiles: (e) => {
|
|
223
224
|
b(e), F((e) => e === "mini" ? "panel" : e);
|
|
224
225
|
},
|
|
225
|
-
onPickerOpen:
|
|
226
|
+
onPickerOpen: Me,
|
|
226
227
|
direction: "down",
|
|
227
228
|
canAddMore: Ee
|
|
228
229
|
})
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
2
|
import { VoiceTranscriptTurn } from '../../voice/turnVisibility';
|
|
3
3
|
/**
|
|
4
4
|
* The voice conversation, as a normal chat.
|
|
@@ -32,6 +32,11 @@ interface Props {
|
|
|
32
32
|
* leading group rather than being scattered one divider apart.
|
|
33
33
|
*/
|
|
34
34
|
turns: ReadonlyArray<VoiceTranscriptTurn>;
|
|
35
|
+
/**
|
|
36
|
+
* ★ BOFF-8060 (N3): drawn under one ASSISTANT turn's text — the page the
|
|
37
|
+
* model offered in that voice turn. Absent, or null for a turn, nothing is.
|
|
38
|
+
*/
|
|
39
|
+
renderAfterTurn?: (turnId: string) => ReactNode;
|
|
35
40
|
}
|
|
36
41
|
export declare const VoiceConversationView: FC<Props>;
|
|
37
42
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoiceConversationView.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/VoiceConversationView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"VoiceConversationView.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/VoiceConversationView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AAGpC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,UAAU,KAAK;IACb;;;;;;OAMG;IACH,KAAK,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC1C;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC;CACjD;AAED,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,KAAK,CA4E3C,CAAC"}
|
|
@@ -4,18 +4,18 @@ import { groupConsecutiveBySession as n } from "../../voice/turnVisibility.js";
|
|
|
4
4
|
import { useMemo as r } from "react";
|
|
5
5
|
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
6
6
|
//#region src/shared/assistant/ui/voice/VoiceConversationView.tsx
|
|
7
|
-
var o = ({ turns: o }) => {
|
|
8
|
-
let
|
|
7
|
+
var o = ({ turns: o, renderAfterTurn: s }) => {
|
|
8
|
+
let c = e(), l = r(() => n(o, (e) => e.sessionId), [o]);
|
|
9
9
|
return o.length === 0 ? /* @__PURE__ */ i("div", {
|
|
10
10
|
className: "flex flex-1 items-center justify-center px-6",
|
|
11
11
|
children: /* @__PURE__ */ i("p", {
|
|
12
12
|
className: "text-center text-sm text-text-muted",
|
|
13
|
-
children:
|
|
13
|
+
children: c("voiceSession.transcriptEmpty", "Nothing spoken yet in this session.")
|
|
14
14
|
})
|
|
15
15
|
}) : /* @__PURE__ */ i("div", {
|
|
16
16
|
className: "scrollbar-slim flex-1 overflow-y-auto px-4 py-4",
|
|
17
17
|
"data-testid": "assistant-voice-conversation",
|
|
18
|
-
children:
|
|
18
|
+
children: l.map((e, n) => /* @__PURE__ */ a("section", {
|
|
19
19
|
className: "space-y-4 pb-4",
|
|
20
20
|
children: [n > 0 ? /* @__PURE__ */ a("div", {
|
|
21
21
|
className: "flex items-center gap-2 pt-2",
|
|
@@ -24,7 +24,7 @@ var o = ({ turns: o }) => {
|
|
|
24
24
|
/* @__PURE__ */ i("span", { className: "h-px flex-1 bg-border-subtle" }),
|
|
25
25
|
/* @__PURE__ */ i("span", {
|
|
26
26
|
className: "text-[11px] uppercase tracking-wide text-text-muted",
|
|
27
|
-
children:
|
|
27
|
+
children: c("voiceSession.newSession", "New voice session")
|
|
28
28
|
}),
|
|
29
29
|
/* @__PURE__ */ i("span", { className: "h-px flex-1 bg-border-subtle" })
|
|
30
30
|
]
|
|
@@ -34,9 +34,9 @@ var o = ({ turns: o }) => {
|
|
|
34
34
|
className: "max-w-[85%] whitespace-pre-wrap break-words rounded-2xl bg-bg-elevated px-3 py-2 text-sm leading-relaxed text-text-primary",
|
|
35
35
|
children: e.text
|
|
36
36
|
})
|
|
37
|
-
}, e.id) : /* @__PURE__ */
|
|
37
|
+
}, e.id) : /* @__PURE__ */ a("div", {
|
|
38
38
|
className: "text-sm leading-relaxed text-text-secondary",
|
|
39
|
-
children: /* @__PURE__ */ i(t, { content: e.text })
|
|
39
|
+
children: [/* @__PURE__ */ i(t, { content: e.text }), s?.(e.id)]
|
|
40
40
|
}, e.id))]
|
|
41
41
|
}, `${e.sessionId ?? "earlier"}-${n}`))
|
|
42
42
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
2
|
import { VoiceTranscriptTurn } from '../../voice/turnVisibility';
|
|
3
3
|
/**
|
|
4
4
|
* This session's spoken turns, on demand.
|
|
@@ -56,6 +56,11 @@ interface Props {
|
|
|
56
56
|
onShowEarlier?: () => void;
|
|
57
57
|
/** A page is being read: the control waits. */
|
|
58
58
|
showEarlierDisabled?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* ★ BOFF-8060 (N3): what goes under one assistant turn — the page the model
|
|
61
|
+
* offered in that VOICE turn. Never the chat thread's offers (rule 4).
|
|
62
|
+
*/
|
|
63
|
+
renderAfterTurn?: (turnId: string) => ReactNode;
|
|
59
64
|
}
|
|
60
65
|
export declare const VoiceTranscriptDrawer: FC<Props>;
|
|
61
66
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoiceTranscriptDrawer.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/VoiceTranscriptDrawer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"VoiceTranscriptDrawer.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/VoiceTranscriptDrawer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAOnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE;;;;;;;;;;;;;;;;;;GAkBG;AAEH,UAAU,KAAK;IACb,KAAK,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,+CAA+C;IAC/C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC;CACjD;AAED,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,KAAK,CAqJ3C,CAAC"}
|
|
@@ -7,21 +7,21 @@ import { useEffect as o, useRef as s } from "react";
|
|
|
7
7
|
import { ArrowRight as c, Download as l, X as u } from "lucide-react";
|
|
8
8
|
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
9
9
|
//#region src/shared/assistant/ui/voice/VoiceTranscriptDrawer.tsx
|
|
10
|
-
var p = ({ turns: p, onClose: m, onSave: h, onContinueInChat: g, closeOnEscape: _ = !1, onShowEarlier: v, showEarlierDisabled: y = !1 }) => {
|
|
11
|
-
let
|
|
12
|
-
return e(
|
|
10
|
+
var p = ({ turns: p, onClose: m, onSave: h, onContinueInChat: g, closeOnEscape: _ = !1, onShowEarlier: v, showEarlierDisabled: y = !1, renderAfterTurn: b }) => {
|
|
11
|
+
let x = t(), S = s(null);
|
|
12
|
+
return e(S, { fallbackSelector: `[${n}]` }), o(() => {
|
|
13
13
|
if (!_) return;
|
|
14
14
|
let e = (e) => {
|
|
15
15
|
if (e.key !== "Escape" || document.querySelector("[role=\"alertdialog\"]")) return;
|
|
16
|
-
let t =
|
|
16
|
+
let t = S.current?.closest(`[${n}]`), i = document.activeElement;
|
|
17
17
|
r(t ?? null, i) && (e.preventDefault(), e.stopPropagation(), m());
|
|
18
18
|
};
|
|
19
19
|
return document.addEventListener("keydown", e, !0), () => document.removeEventListener("keydown", e, !0);
|
|
20
20
|
}, [_, m]), /* @__PURE__ */ f("div", {
|
|
21
|
-
ref:
|
|
21
|
+
ref: S,
|
|
22
22
|
className: "absolute inset-0 z-30 flex flex-col bg-bg-sunken/95 backdrop-blur-sm",
|
|
23
23
|
role: "dialog",
|
|
24
|
-
"aria-label":
|
|
24
|
+
"aria-label": x("voiceSession.transcriptTitle", "Voice transcript"),
|
|
25
25
|
"data-testid": "assistant-voice-transcript",
|
|
26
26
|
children: [
|
|
27
27
|
/* @__PURE__ */ f("div", {
|
|
@@ -30,16 +30,16 @@ var p = ({ turns: p, onClose: m, onSave: h, onContinueInChat: g, closeOnEscape:
|
|
|
30
30
|
className: "min-w-0",
|
|
31
31
|
children: [/* @__PURE__ */ d("h2", {
|
|
32
32
|
className: "text-sm font-semibold text-text-primary",
|
|
33
|
-
children:
|
|
33
|
+
children: x("voiceSession.transcript", "Voice conversation")
|
|
34
34
|
}), /* @__PURE__ */ d("p", {
|
|
35
35
|
className: "truncate text-xs text-text-muted",
|
|
36
|
-
children:
|
|
36
|
+
children: x("voiceSession.transcriptHint", "Spoken turns in this conversation — kept out of your typed chat.")
|
|
37
37
|
})]
|
|
38
38
|
}), /* @__PURE__ */ d("button", {
|
|
39
39
|
type: "button",
|
|
40
40
|
onClick: m,
|
|
41
41
|
className: "flex size-8 items-center justify-center rounded-full text-text-secondary transition-colors hover:bg-bg-raised hover:text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong",
|
|
42
|
-
"aria-label":
|
|
42
|
+
"aria-label": x("voiceSession.transcriptClose", "Close the transcript"),
|
|
43
43
|
"data-testid": "assistant-voice-transcript-close",
|
|
44
44
|
children: /* @__PURE__ */ d(u, { className: "size-4" })
|
|
45
45
|
})]
|
|
@@ -48,7 +48,10 @@ var p = ({ turns: p, onClose: m, onSave: h, onContinueInChat: g, closeOnEscape:
|
|
|
48
48
|
onShowEarlier: v,
|
|
49
49
|
disabled: y
|
|
50
50
|
}) : null,
|
|
51
|
-
/* @__PURE__ */ d(i, {
|
|
51
|
+
/* @__PURE__ */ d(i, {
|
|
52
|
+
turns: p,
|
|
53
|
+
renderAfterTurn: b
|
|
54
|
+
}),
|
|
52
55
|
(h || g) && p.length > 0 ? /* @__PURE__ */ f("div", {
|
|
53
56
|
className: "flex items-center justify-end gap-2 border-t border-border-subtle px-4 py-3",
|
|
54
57
|
children: [h ? /* @__PURE__ */ f("button", {
|
|
@@ -59,13 +62,13 @@ var p = ({ turns: p, onClose: m, onSave: h, onContinueInChat: g, closeOnEscape:
|
|
|
59
62
|
children: [/* @__PURE__ */ d(l, {
|
|
60
63
|
className: "size-3.5",
|
|
61
64
|
"aria-hidden": "true"
|
|
62
|
-
}),
|
|
65
|
+
}), x("voiceSession.save", "Save transcript")]
|
|
63
66
|
}) : null, g ? /* @__PURE__ */ f("button", {
|
|
64
67
|
type: "button",
|
|
65
68
|
onClick: g,
|
|
66
69
|
className: "flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-fg transition-opacity hover:opacity-90 focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong",
|
|
67
70
|
"data-testid": "assistant-voice-continue-in-chat",
|
|
68
|
-
children: [
|
|
71
|
+
children: [x("voiceSession.continueInChat", "Continue in chat"), /* @__PURE__ */ d(c, {
|
|
69
72
|
className: "size-3.5",
|
|
70
73
|
"aria-hidden": "true"
|
|
71
74
|
})]
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { UnsavedChange } from '../../navigation/unsavedChanges';
|
|
2
|
+
import { LocalUiCommandOptions } from '../localUiCommands';
|
|
3
|
+
import { NavIntent } from './navIntent';
|
|
4
|
+
import { LiveUiOffer } from './uiOffers';
|
|
5
|
+
/**
|
|
6
|
+
* ★ BOFF-8060 (N3, design §8): act-on-resolve — the person asked explicitly to
|
|
7
|
+
* be taken somewhere, the model answered with exactly one offered page, and
|
|
8
|
+
* the panel opens it without asking a second time.
|
|
9
|
+
*
|
|
10
|
+
* Decided ONCE, when the turn poller has seen the turn complete and made its
|
|
11
|
+
* final read; never on a later poll, a reopen or a resume. ALL guards must
|
|
12
|
+
* hold; any one failing keeps the page an ordinary OFFER ("Open {page}"), so a
|
|
13
|
+
* wrong "no" costs one tap and a wrong "yes" is what the guards exist to stop.
|
|
14
|
+
*
|
|
15
|
+
* - R1 explicit intent: the person's own sentence THIS turn matched the frozen
|
|
16
|
+
* grammar (`parseNavIntent`) — never a chip, host-queued prompt, retry or
|
|
17
|
+
* redirect remainder (the caller passes null for those).
|
|
18
|
+
* - R2 exactly one offer bound to the turn, live and resolvable now.
|
|
19
|
+
* - R2b relevance: a content word the person named is among the page's own
|
|
20
|
+
* registry words — an offer steered elsewhere stays an offer.
|
|
21
|
+
* - R3 nothing pending: no write proposal waits in the conversation, AND the
|
|
22
|
+
* turn could not have raised one (sent in a read mode, served by a read
|
|
23
|
+
* sandbox). Proposal discovery runs AFTER a turn settles, so at
|
|
24
|
+
* completion only a read transport proves "this turn raised none".
|
|
25
|
+
* - R4 nothing moved: the location, the open conversation, the workspace and
|
|
26
|
+
* the signed-in actor are what they were at send; the panel is mounted
|
|
27
|
+
* and the tab visible.
|
|
28
|
+
* - R5 nothing unsaved: the N4 leave-page guard (`listUnsavedChanges`)
|
|
29
|
+
* reports an empty list. ★★ It FAILS CLOSED: without a guard (null —
|
|
30
|
+
* which is also what a product WITHOUT the `leaveGuard` attestation
|
|
31
|
+
* gets, see `n4LeaveGuard`), or
|
|
32
|
+
* when the guard throws or answers anything but a well-formed list, the
|
|
33
|
+
* panel never acts — and nothing may call such a turn act-on-resolve.
|
|
34
|
+
* A non-empty list keeps the offer and names what is unsaved.
|
|
35
|
+
* - R6 not already there: then the panel says so (N1a copy) and stays.
|
|
36
|
+
*
|
|
37
|
+
* Pure: the caller reads every live value at the decision point.
|
|
38
|
+
*/
|
|
39
|
+
/** N4's `listUnsavedChanges()`: the unsaved changes on the page right now. */
|
|
40
|
+
export type UnsavedChangesProbe = () => readonly UnsavedChange[];
|
|
41
|
+
/**
|
|
42
|
+
* ★★ The N4 leave-page guard R5 reads (design §8 R5; `ui-navigation.md` §7):
|
|
43
|
+
* `listUnsavedChanges`, the page's live registry (`useUnsavedChanges`) — but
|
|
44
|
+
* ONLY when the product attests that its editors register there
|
|
45
|
+
* (`LocalUiCommandOptions.leaveGuard === true`).
|
|
46
|
+
*
|
|
47
|
+
* The registry cannot tell "nothing is unsaved" from "this product's editors
|
|
48
|
+
* never call `useUnsavedChanges`": both read `[]`. Without the attestation an
|
|
49
|
+
* empty list proves nothing, so the guard is ABSENT (null) and R5 fails closed
|
|
50
|
+
* (`R5-absent`) — the panel never acts on its own, and the page stays an
|
|
51
|
+
* offer. A product sets `leaveGuard: true` only in the same release as its
|
|
52
|
+
* editors' `useUnsavedChanges` adoption, with a seam test that pins both.
|
|
53
|
+
*/
|
|
54
|
+
export declare function n4LeaveGuard(options: Pick<LocalUiCommandOptions, "leaveGuard"> | null | undefined): UnsavedChangesProbe | null;
|
|
55
|
+
/** Where the person was, and as whom, at one moment (R4). */
|
|
56
|
+
export interface ActOnResolveSnapshot {
|
|
57
|
+
/** `pathname + search`. */
|
|
58
|
+
location: string;
|
|
59
|
+
conversationId: string | null;
|
|
60
|
+
workspaceId: string | null;
|
|
61
|
+
actorId: string | null;
|
|
62
|
+
}
|
|
63
|
+
export interface ActOnResolveInput {
|
|
64
|
+
/** R1: the turn's explicit request, captured at send; null when there was none. */
|
|
65
|
+
intent: NavIntent | null;
|
|
66
|
+
/** R2: the turn's live, resolvable offers (`liveOffersFor`). */
|
|
67
|
+
live: readonly LiveUiOffer[];
|
|
68
|
+
/** R2: the turn's offers not used yet, live or not. */
|
|
69
|
+
unusedCount: number;
|
|
70
|
+
/** R3: write proposals pending in the conversation now. */
|
|
71
|
+
pendingProposals: number;
|
|
72
|
+
/** R3: the mode the turn was SENT in could write. */
|
|
73
|
+
turnWriteCapable: boolean;
|
|
74
|
+
/** R4. */
|
|
75
|
+
atSend: ActOnResolveSnapshot;
|
|
76
|
+
now: ActOnResolveSnapshot;
|
|
77
|
+
mounted: boolean;
|
|
78
|
+
visible: boolean;
|
|
79
|
+
/** R5: N4's guard (`n4LeaveGuard(options)`); null fails closed. */
|
|
80
|
+
unsavedChanges: UnsavedChangesProbe | null;
|
|
81
|
+
/** R6: the person is already on the offered page (or one of its aliases). */
|
|
82
|
+
alreadyThere: (offer: LiveUiOffer) => boolean;
|
|
83
|
+
}
|
|
84
|
+
/** Which guard kept the page an offer. */
|
|
85
|
+
export type ActOnResolveHold = "R1" | "R2" | "R2b" | "R3" | "R4" | "R5-absent" | "R5-unsaved";
|
|
86
|
+
export type ActOnResolveDecision =
|
|
87
|
+
/** Open it (`runNavigation`, `via: 'offer'`, `trigger: 'resolve'`). */
|
|
88
|
+
{
|
|
89
|
+
act: "navigate";
|
|
90
|
+
offer: LiveUiOffer;
|
|
91
|
+
}
|
|
92
|
+
/** R6: say "You're already on {page}", record it, and stay. */
|
|
93
|
+
| {
|
|
94
|
+
act: "already-here";
|
|
95
|
+
offer: LiveUiOffer;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The page stays an offer. `unsaved` is set for `R5-unsaved` only: the
|
|
99
|
+
* changes N4 named, for the "you have unsaved changes" line.
|
|
100
|
+
*/
|
|
101
|
+
| {
|
|
102
|
+
act: "keep-offer";
|
|
103
|
+
hold: ActOnResolveHold;
|
|
104
|
+
unsaved?: readonly UnsavedChange[];
|
|
105
|
+
};
|
|
106
|
+
/** The act-on-resolve decision (design §8). Every guard, in order; the first that fails holds. */
|
|
107
|
+
export declare function decideActOnResolve(input: ActOnResolveInput): ActOnResolveDecision;
|
|
108
|
+
//# sourceMappingURL=actOnResolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actOnResolve.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/uiActions/actOnResolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,8EAA8E;AAC9E,MAAM,MAAM,mBAAmB,GAAG,MAAM,SAAS,aAAa,EAAE,CAAC;AAEjE;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,YAAY,CAAC,GAAG,IAAI,GAAG,SAAS,GACpE,mBAAmB,GAAG,IAAI,CAE5B;AAED,6DAA6D;AAC7D,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,gEAAgE;IAChE,IAAI,EAAE,SAAS,WAAW,EAAE,CAAC;IAC7B,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU;IACV,MAAM,EAAE,oBAAoB,CAAC;IAC7B,GAAG,EAAE,oBAAoB,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,mEAAmE;IACnE,cAAc,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,6EAA6E;IAC7E,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC;CAC/C;AAED,0CAA0C;AAC1C,MAAM,MAAM,gBAAgB,GACxB,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,MAAM,oBAAoB;AAC9B,uEAAuE;AACrE;IAAE,GAAG,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE;AACzC,+DAA+D;GAC7D;IAAE,GAAG,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE;AAC7C;;;GAGG;GACD;IACE,GAAG,EAAE,YAAY,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CACpC,CAAC;AAkCN,kGAAkG;AAClG,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,oBAAoB,CA2BjF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { listUnsavedChanges as e } from "../../navigation/unsavedChanges.js";
|
|
2
|
+
import { navIntentRelevant as t } from "./navIntent.js";
|
|
3
|
+
//#region src/shared/assistant/uiActions/actOnResolve.ts
|
|
4
|
+
function n(t) {
|
|
5
|
+
return t?.leaveGuard === !0 ? e : null;
|
|
6
|
+
}
|
|
7
|
+
var r = (e) => ({
|
|
8
|
+
act: "keep-offer",
|
|
9
|
+
hold: e
|
|
10
|
+
}), i = (e, t) => e.location === t.location && e.conversationId !== null && e.conversationId === t.conversationId && e.workspaceId === t.workspaceId && e.actorId !== null && e.actorId === t.actorId;
|
|
11
|
+
function a(e) {
|
|
12
|
+
try {
|
|
13
|
+
let t = e();
|
|
14
|
+
if (!Array.isArray(t)) return null;
|
|
15
|
+
let n = [];
|
|
16
|
+
for (let e of t) {
|
|
17
|
+
if (typeof e != "object" || !e || !("id" in e) || !("label" in e) || typeof e.id != "string" || typeof e.label != "string") return null;
|
|
18
|
+
n.push({
|
|
19
|
+
id: e.id,
|
|
20
|
+
label: e.label
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return n;
|
|
24
|
+
} catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function o(e) {
|
|
29
|
+
let { intent: n } = e;
|
|
30
|
+
if (!n) return r("R1");
|
|
31
|
+
let [o] = e.live;
|
|
32
|
+
if (!o || e.live.length !== 1 || e.unusedCount !== 1) return r("R2");
|
|
33
|
+
if (!t(n, o.target)) return r("R2b");
|
|
34
|
+
if (e.pendingProposals !== 0 || e.turnWriteCapable || o.offer.transport !== "read") return r("R3");
|
|
35
|
+
if (!e.mounted || !e.visible || !i(e.atSend, e.now)) return r("R4");
|
|
36
|
+
if (!e.unsavedChanges) return r("R5-absent");
|
|
37
|
+
let s = a(e.unsavedChanges);
|
|
38
|
+
return s === null ? r("R5-absent") : s.length > 0 ? {
|
|
39
|
+
act: "keep-offer",
|
|
40
|
+
hold: "R5-unsaved",
|
|
41
|
+
unsaved: s
|
|
42
|
+
} : e.alreadyThere(o) ? {
|
|
43
|
+
act: "already-here",
|
|
44
|
+
offer: o
|
|
45
|
+
} : {
|
|
46
|
+
act: "navigate",
|
|
47
|
+
offer: o
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//#endregion
|
|
51
|
+
export { o as decideActOnResolve, n as n4LeaveGuard };
|