@burdenoff/fe-libs 2026.1024.2 → 2026.1024.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.
- package/dist/chrome/FooterBar.d.ts +1 -1
- package/dist/chrome/NativePageTransition.d.ts +1 -1
- package/dist/chrome/ProductPickerSheet.js +42 -42
- package/dist/chrome/ProductSwitcher.d.ts +8 -0
- package/dist/chrome/ProductSwitcher.js +83 -72
- package/dist/chrome/index.d.ts +9 -9
- package/dist/chrome/swipe/swipeMath.d.ts +1 -1
- package/dist/shared/assistant/api.d.ts +3 -3
- package/dist/shared/assistant/appControls/grammar.d.ts +21 -21
- package/dist/shared/assistant/appControls/languageReply.d.ts +1 -1
- package/dist/shared/assistant/appControls/names.d.ts +3 -3
- package/dist/shared/assistant/appControls/pageAdapters.d.ts +5 -5
- package/dist/shared/assistant/appControls/plan.d.ts +38 -38
- package/dist/shared/assistant/appControls/types.d.ts +15 -15
- package/dist/shared/assistant/appControls/useAssistantControl.d.ts +1 -1
- package/dist/shared/assistant/attachmentSources.d.ts +2 -2
- package/dist/shared/assistant/attachments.d.ts +5 -5
- package/dist/shared/assistant/autoRouting.d.ts +6 -6
- package/dist/shared/assistant/avatar/live/LiveAvatarMinutes.d.ts +24 -0
- package/dist/shared/assistant/avatar/live/LiveAvatarMinutes.js +161 -0
- package/dist/shared/assistant/avatar/live/LiveAvatarStage.js +95 -73
- package/dist/shared/assistant/avatar/live/LiveAvatarTabView.d.ts +6 -0
- package/dist/shared/assistant/avatar/live/LiveAvatarTabView.js +195 -171
- package/dist/shared/assistant/avatar/live/avatarSessionClient.d.ts +77 -1
- package/dist/shared/assistant/avatar/live/avatarSessionClient.js +193 -72
- package/dist/shared/assistant/avatar/live/createLiveAvatarSeam.d.ts +14 -1
- package/dist/shared/assistant/avatar/live/createLiveAvatarSeam.js +65 -40
- package/dist/shared/assistant/avatar/live/liveAvatarController.d.ts +64 -2
- package/dist/shared/assistant/avatar/live/liveAvatarController.js +403 -242
- package/dist/shared/assistant/avatar/live/liveAvatarMinutesView.d.ts +127 -0
- package/dist/shared/assistant/avatar/live/liveAvatarMinutesView.js +168 -0
- package/dist/shared/assistant/avatar/live/liveAvatarStatus.d.ts +3 -0
- package/dist/shared/assistant/avatar/live/liveAvatarStatus.js +11 -7
- package/dist/shared/assistant/avatar/useAvatarCopy.d.ts +127 -2
- package/dist/shared/assistant/avatar/useAvatarCopy.js +116 -7
- package/dist/shared/assistant/conversation.d.ts +20 -20
- package/dist/shared/assistant/displayContent.d.ts +4 -4
- package/dist/shared/assistant/documentText.d.ts +3 -3
- package/dist/shared/assistant/exportConversation.d.ts +1 -1
- package/dist/shared/assistant/history/historyControls.d.ts +4 -4
- package/dist/shared/assistant/history/historyErrors.d.ts +3 -3
- package/dist/shared/assistant/history/historyList.d.ts +5 -5
- package/dist/shared/assistant/history/historyMerge.d.ts +4 -4
- package/dist/shared/assistant/history/historyOperations.d.ts +1 -1
- package/dist/shared/assistant/history/historySearch.d.ts +5 -5
- package/dist/shared/assistant/history/historyStatus.d.ts +1 -1
- package/dist/shared/assistant/history/historyTypes.d.ts +12 -12
- package/dist/shared/assistant/history/profileBoundStorage.d.ts +2 -2
- package/dist/shared/assistant/i18n.d.ts +1 -1
- package/dist/shared/assistant/i18nManifest.d.ts +566 -535
- package/dist/shared/assistant/i18nManifest.js +55 -24
- package/dist/shared/assistant/index.d.ts +2 -0
- package/dist/shared/assistant/liveDeltas.d.ts +1 -1
- package/dist/shared/assistant/liveOverlay.d.ts +1 -1
- package/dist/shared/assistant/localUiCommandCopy.d.ts +1 -1
- package/dist/shared/assistant/localUiCommands.d.ts +22 -22
- package/dist/shared/assistant/localeCommands/engine.d.ts +5 -5
- package/dist/shared/assistant/localeCommands/evaluate.d.ts +8 -8
- package/dist/shared/assistant/localeCommands/fold.d.ts +2 -2
- package/dist/shared/assistant/localeCommands/frames.d.ts +3 -3
- package/dist/shared/assistant/localeCommands/gate.d.ts +3 -3
- package/dist/shared/assistant/localeCommands/languageNames.d.ts +1 -1
- package/dist/shared/assistant/localeCommands/normalise.d.ts +1 -1
- package/dist/shared/assistant/localeCommands/types.d.ts +4 -4
- package/dist/shared/assistant/modeCapabilities.d.ts +1 -1
- package/dist/shared/assistant/modeCopy.d.ts +2 -2
- package/dist/shared/assistant/permissionError.d.ts +2 -2
- package/dist/shared/assistant/preview/surfaceState.d.ts +1 -1
- package/dist/shared/assistant/preview/types.d.ts +5 -5
- package/dist/shared/assistant/preview/writeActionResults.d.ts +1 -1
- package/dist/shared/assistant/prewarm.d.ts +5 -5
- package/dist/shared/assistant/quota.d.ts +2 -2
- package/dist/shared/assistant/sandboxReadiness.d.ts +2 -2
- package/dist/shared/assistant/speech/speechFeed.d.ts +3 -3
- package/dist/shared/assistant/turnOutcome.d.ts +2 -2
- package/dist/shared/assistant/turnProgress.d.ts +1 -1
- package/dist/shared/assistant/turnState.d.ts +1 -1
- package/dist/shared/assistant/turnStream.d.ts +3 -3
- package/dist/shared/assistant/turnTimeline.d.ts +13 -13
- package/dist/shared/assistant/turnTimingReport.d.ts +1 -1
- package/dist/shared/assistant/turnTimingReporter.d.ts +3 -3
- package/dist/shared/assistant/ui/AssistantAvatarTabs.d.ts +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +17 -17
- package/dist/shared/assistant/ui/AssistantHistoryNotices.d.ts +1 -1
- package/dist/shared/assistant/ui/AssistantMarkdownRenderer.d.ts +5 -2
- package/dist/shared/assistant/ui/AssistantToolActivity.d.ts +1 -1
- package/dist/shared/assistant/ui/AssistantUiOfferLink.d.ts +2 -2
- package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.d.ts +3 -3
- package/dist/shared/assistant/ui/assistantLiveAvatarSeam.d.ts +10 -2
- package/dist/shared/assistant/ui/avatar/AssistantAvatarTab.js +78 -76
- package/dist/shared/assistant/ui/avatar/avatarAskGate.d.ts +2 -0
- package/dist/shared/assistant/ui/avatar/avatarAskGate.js +1 -0
- package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.d.ts +1 -1
- package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.d.ts +1 -1
- package/dist/shared/assistant/ui/leaveConfirmFocus.d.ts +1 -1
- package/dist/shared/assistant/ui/leaveConfirmNavigate.d.ts +3 -3
- package/dist/shared/assistant/ui/panelOverlays.d.ts +5 -5
- package/dist/shared/assistant/ui/useVoiceSession.d.ts +5 -5
- package/dist/shared/assistant/ui/useWriteProposalConfirm.d.ts +4 -4
- package/dist/shared/assistant/ui/useWriteProposals.d.ts +2 -2
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts +1 -1
- package/dist/shared/assistant/ui/voice/VoiceCaption.d.ts +1 -1
- package/dist/shared/assistant/ui/voice/VoiceWaveform.d.ts +1 -1
- package/dist/shared/assistant/ui/voice/voiceSessionEscape.d.ts +2 -2
- package/dist/shared/assistant/ui/voice/voiceStartGate.d.ts +6 -6
- package/dist/shared/assistant/ui/writeProposalPresentation.d.ts +1 -1
- package/dist/shared/assistant/uiActions/actOnResolve.d.ts +5 -5
- package/dist/shared/assistant/uiActions/assistantHref.d.ts +2 -2
- package/dist/shared/assistant/uiActions/backStack.d.ts +1 -1
- package/dist/shared/assistant/uiActions/deixis.d.ts +3 -3
- package/dist/shared/assistant/uiActions/entityRoutes.d.ts +1 -1
- package/dist/shared/assistant/uiActions/navigationOutcome.d.ts +8 -8
- package/dist/shared/assistant/uiActions/offerYesOnSurface.d.ts +1 -1
- package/dist/shared/assistant/uiActions/resolveTarget.d.ts +2 -2
- package/dist/shared/assistant/uiActions/uiOffers.d.ts +5 -5
- package/dist/shared/assistant/usageReporting.d.ts +2 -2
- package/dist/shared/assistant/useWorkspaceWriteAccess.d.ts +1 -1
- package/dist/shared/assistant/voice/affirmations.d.ts +1 -1
- package/dist/shared/assistant/voice/handsFree.d.ts +3 -3
- package/dist/shared/assistant/voice/handsfree/bargeIn.d.ts +5 -5
- package/dist/shared/assistant/voice/handsfree/echoGate.d.ts +6 -6
- package/dist/shared/assistant/voice/handsfree/handsFreeController.d.ts +7 -7
- package/dist/shared/assistant/voice/handsfree/handsFreeSetting.d.ts +2 -2
- package/dist/shared/assistant/voice/handsfree/micCapture.d.ts +1 -1
- package/dist/shared/assistant/voice/handsfree/playbackReference.d.ts +1 -1
- package/dist/shared/assistant/voice/handsfree/sttTransport.d.ts +3 -3
- package/dist/shared/assistant/voice/handsfree/useHandsFreeInterrupt.d.ts +4 -4
- package/dist/shared/assistant/voice/handsfree/vad.d.ts +1 -1
- package/dist/shared/assistant/voice/speechPlayback.d.ts +7 -7
- package/dist/shared/assistant/voice/useVoiceInput.d.ts +1 -1
- package/dist/shared/assistant/voice/voiceReopen.d.ts +8 -8
- package/dist/shared/assistant/writeConfirmSeam.d.ts +1 -1
- package/dist/shared/assistant/writeModeConsent.d.ts +7 -7
- package/dist/shared/assistant/writeProposalDiscovery.d.ts +3 -3
- package/dist/shared/assistant/writeProposalErrorCopy.d.ts +1 -1
- package/dist/shared/assistant/writeProposals.d.ts +23 -23
- package/dist/shared/assistant/writeReplyBinder.d.ts +11 -11
- package/dist/shared/assistant/writeReplySend.d.ts +7 -7
- package/dist/shared/components/LandingOrDashboardRedirect.d.ts +18 -3
- package/dist/shared/components/LandingOrDashboardRedirect.js +58 -28
- package/dist/shared/components/index.d.ts +2 -1
- package/dist/shared/events/index.d.ts +2 -1
- package/dist/shared/hooks/shell/globalSearchError.d.ts +2 -2
- package/dist/shared/navigation/productSwitchHandoff.d.ts +45 -0
- package/dist/shared/navigation/productSwitchHandoff.js +27 -0
- package/dist/shared/navigation/unsavedChanges.d.ts +1 -1
- package/dist/shared/utils/index.d.ts +3 -3
- package/dist/shared-assistant.js +227 -225
- package/dist/shared-components.js +7 -6
- package/dist/shared.js +71 -70
- package/package.json +3 -2
|
@@ -4,23 +4,121 @@ import { VOICE_THINKING_LABEL as n } from "../voice/voiceStatus.js";
|
|
|
4
4
|
import { useMemo as r } from "react";
|
|
5
5
|
//#region src/shared/assistant/avatar/useAvatarCopy.ts
|
|
6
6
|
var i = {
|
|
7
|
+
title: {
|
|
8
|
+
key: "avatar.minutes.howCounted.title",
|
|
9
|
+
fallback: "How avatar credits are counted"
|
|
10
|
+
},
|
|
11
|
+
unit: {
|
|
12
|
+
key: "avatar.minutes.howCounted.unit",
|
|
13
|
+
fallback: "1 credit = 1 minute of avatar time."
|
|
14
|
+
},
|
|
15
|
+
start: {
|
|
16
|
+
key: "avatar.minutes.howCounted.start",
|
|
17
|
+
fallback: "Counting starts once you and the avatar are both connected. Waiting for the avatar and starts that fail are free."
|
|
18
|
+
},
|
|
19
|
+
rounding: {
|
|
20
|
+
key: "avatar.minutes.howCounted.rounding",
|
|
21
|
+
fallback: "Each started minute uses one avatar credit. For example, a 2-minute-10-second session uses 3 credits."
|
|
22
|
+
},
|
|
23
|
+
drops: {
|
|
24
|
+
key: "avatar.minutes.howCounted.drops",
|
|
25
|
+
fallback: "Short connection drops that don't end the session count as part of it, like a phone call."
|
|
26
|
+
},
|
|
27
|
+
lost: {
|
|
28
|
+
key: "avatar.minutes.howCounted.lost",
|
|
29
|
+
fallback: "If the connection is lost, counting stops at the last moment we saw you both connected, minus a {{seconds}}-second safety margin."
|
|
30
|
+
},
|
|
31
|
+
lostNoFigure: {
|
|
32
|
+
key: "avatar.minutes.howCounted.lostNoFigure",
|
|
33
|
+
fallback: "If the connection is lost, counting stops at the last moment we saw you both connected, minus a safety margin."
|
|
34
|
+
},
|
|
35
|
+
ourEnd: {
|
|
36
|
+
key: "avatar.minutes.howCounted.ourEnd",
|
|
37
|
+
fallback: "If we stop the session because of a problem or maintenance on our side, or the avatar fails, the unfinished minute is free."
|
|
38
|
+
},
|
|
39
|
+
support: {
|
|
40
|
+
key: "avatar.minutes.howCounted.support",
|
|
41
|
+
fallback: "If something looks wrong, contact support: we credit the whole session back."
|
|
42
|
+
}
|
|
43
|
+
}, a = {
|
|
7
44
|
hour: "numeric",
|
|
8
45
|
minute: "2-digit"
|
|
9
|
-
},
|
|
46
|
+
}, o = {
|
|
10
47
|
month: "short",
|
|
11
48
|
day: "numeric",
|
|
12
49
|
hour: "numeric",
|
|
13
50
|
minute: "2-digit"
|
|
14
51
|
};
|
|
15
|
-
function
|
|
16
|
-
let r = new Date(e).toDateString() === new Date(t).toDateString() ?
|
|
52
|
+
function s(e, t, n) {
|
|
53
|
+
let r = new Date(e).toDateString() === new Date(t).toDateString() ? a : o;
|
|
17
54
|
try {
|
|
18
55
|
return new Intl.DateTimeFormat(n, r).format(e);
|
|
19
56
|
} catch {
|
|
20
57
|
return new Intl.DateTimeFormat("en", r).format(e);
|
|
21
58
|
}
|
|
22
59
|
}
|
|
23
|
-
|
|
60
|
+
var c = {
|
|
61
|
+
timeZone: "UTC",
|
|
62
|
+
day: "numeric",
|
|
63
|
+
month: "short"
|
|
64
|
+
}, l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map();
|
|
65
|
+
function d(e, t) {
|
|
66
|
+
let n = t ?? "", r = l.get(n);
|
|
67
|
+
if (r === void 0) {
|
|
68
|
+
try {
|
|
69
|
+
r = new Intl.DateTimeFormat(t, c);
|
|
70
|
+
} catch {
|
|
71
|
+
r = new Intl.DateTimeFormat("en", c);
|
|
72
|
+
}
|
|
73
|
+
l.set(n, r);
|
|
74
|
+
}
|
|
75
|
+
return r.format(e);
|
|
76
|
+
}
|
|
77
|
+
function f(e, t) {
|
|
78
|
+
let n = t ?? "", r = u.get(n);
|
|
79
|
+
if (r === void 0) {
|
|
80
|
+
try {
|
|
81
|
+
r = new Intl.NumberFormat(t, { maximumFractionDigits: 0 });
|
|
82
|
+
} catch {
|
|
83
|
+
r = new Intl.NumberFormat("en", { maximumFractionDigits: 0 });
|
|
84
|
+
}
|
|
85
|
+
u.set(n, r);
|
|
86
|
+
}
|
|
87
|
+
return r.format(e);
|
|
88
|
+
}
|
|
89
|
+
function p(e, t) {
|
|
90
|
+
let n = (e) => f(e, t), r = (e) => d(e, t), a = (t, n) => e(t.key, t.fallback, n), o = i;
|
|
91
|
+
return {
|
|
92
|
+
left: (t) => e("avatar.minutes.left", "Avatar credits left: {{count}}", { count: n(t) }),
|
|
93
|
+
shared: e("avatar.minutes.shared", "Everyone in this workspace shares these credits."),
|
|
94
|
+
freePerMonth: (t) => e("avatar.minutes.freePerMonth", "Free avatar credits each month: {{count}}", { count: n(t) }),
|
|
95
|
+
noFree: e("avatar.minutes.noFree", "No free avatar credits are included."),
|
|
96
|
+
planPerMonth: (t) => e("avatar.minutes.planPerMonth", "Avatar credits from paid plans each month: {{count}}", { count: n(t) }),
|
|
97
|
+
resetsOn: (t) => e("avatar.minutes.resetsOn", "Avatar credits reset on {{date}} (UTC).", { date: r(t) }),
|
|
98
|
+
freePerPerson: (t) => e("avatar.minutes.freePerPerson", "Free avatar credits per person each month: {{count}}", { count: n(t) }),
|
|
99
|
+
low: e("avatar.minutes.low", "Avatar credits are running low. The avatar stops when they run out."),
|
|
100
|
+
sessionLeft: (t) => e("avatar.minutes.sessionLeft", "Minutes left in this session: about {{count}}", { count: n(t) }),
|
|
101
|
+
seePlans: e("avatar.minutes.seePlans", "See plans"),
|
|
102
|
+
askAdmin: e("avatar.minutes.askAdmin", "Ask your billing administrator about a plan with more avatar credits."),
|
|
103
|
+
checkAgain: e("avatar.minutes.checkAgain", "Check again"),
|
|
104
|
+
checking: e("avatar.minutes.checking", "Checking…"),
|
|
105
|
+
checkingPlan: e("avatar.minutes.checkingPlan", "Checking your plan…"),
|
|
106
|
+
assignPlan: e("avatar.minutes.assignPlan", "Assign your new plan to this workspace in Billing to use its credits."),
|
|
107
|
+
ended: e("avatar.minutes.ended", "The avatar stopped because this workspace’s avatar credits ran out. Continuing with voice only."),
|
|
108
|
+
endedNoVoice: e("avatar.minutes.endedNoVoice", "The avatar stopped because this workspace’s avatar credits ran out."),
|
|
109
|
+
howCountedTitle: a(o.title),
|
|
110
|
+
howCounted: (e) => [
|
|
111
|
+
a(o.unit),
|
|
112
|
+
a(o.start),
|
|
113
|
+
a(o.rounding),
|
|
114
|
+
a(o.drops),
|
|
115
|
+
e === null ? a(o.lostNoFigure) : a(o.lost, { seconds: n(e) }),
|
|
116
|
+
a(o.ourEnd),
|
|
117
|
+
a(o.support)
|
|
118
|
+
]
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function m() {
|
|
24
122
|
let i = t(), { locale: a } = e();
|
|
25
123
|
return r(() => ({
|
|
26
124
|
toggle: i("avatar.toggle", "Live avatar"),
|
|
@@ -58,7 +156,7 @@ function s() {
|
|
|
58
156
|
chooserLocked: i("avatar.chooserLocked", "Turn off the avatar to change it."),
|
|
59
157
|
tabLeaveHint: i("avatar.tabLeaveHint", "Leaving the Avatar tab turns the avatar off."),
|
|
60
158
|
availableAgain: (e) => i("avatar.availableAgain", "You can start it again at {{time}}.", { time: e }),
|
|
61
|
-
retryTime: (e, t) =>
|
|
159
|
+
retryTime: (e, t) => s(e, t, a),
|
|
62
160
|
stateTimeLimitNoVoice: i("avatar.stateTimeLimitNoVoice", "The avatar reached its time limit."),
|
|
63
161
|
stateVoiceOnlyNoVoice: i("avatar.stateVoiceOnlyNoVoice", "The avatar is unavailable right now."),
|
|
64
162
|
turnOnStarting: i("avatar.turnOnStarting", "Starting the avatar…"),
|
|
@@ -89,6 +187,7 @@ function s() {
|
|
|
89
187
|
case "mode-escalated": return i("avatar.askMode", "This conversation can make changes, so typed questions to the avatar aren't available here. Start a new conversation to ask one.");
|
|
90
188
|
case "avatar-off": return i("avatar.askNeedsAvatar", "Turn on the avatar to send your question. You can type it now.");
|
|
91
189
|
case "avatar-again": return i("avatar.askAgain", "You can send your question when the avatar is on again.");
|
|
190
|
+
case "avatar-minutes": return i("avatar.askNoMinutes", "You can send your question when avatar credits are available.");
|
|
92
191
|
case "sound": return i("avatar.askSound", "Turn on the avatar's sound first.");
|
|
93
192
|
case "starting": return i("avatar.askStarting", "You can send your question when the avatar is ready.");
|
|
94
193
|
case "busy": return i("avatar.askBusy", "You can send your question when the assistant is ready.");
|
|
@@ -135,9 +234,19 @@ function s() {
|
|
|
135
234
|
case "needs-hosted-voice": return i("avatar.problemNeedsHostedVoice", "The avatar needs one of the assistant’s own voices. Choose one in the voice settings.");
|
|
136
235
|
case "unsupported-browser": return i("avatar.problemUnsupportedBrowser", "This browser can’t show the avatar.");
|
|
137
236
|
case "playback-blocked": return i("avatar.problemPlaybackBlocked", "The browser blocked the avatar’s sound. Tap the avatar to turn it on.");
|
|
237
|
+
case "minutes-exhausted": switch (t.minutesReason) {
|
|
238
|
+
case "FREE_CEILING": return i("avatar.problemMinutesFreeCeiling", "You’ve used your free avatar credits for this month.");
|
|
239
|
+
case "NOT_INCLUDED": return i("avatar.problemMinutesNotIncluded", "Avatar credits aren’t included for this workspace.");
|
|
240
|
+
case "ZERO_SESSION_LIMIT": return i("avatar.problemMinutesZeroSessionLimit", "You’ve started too many short avatar sessions today.");
|
|
241
|
+
default: return t.minutesResetsAt === void 0 || t.minutesResetsAt === null ? i("avatar.problemMinutesExhausted", "No avatar credits left in this workspace.") : i("avatar.problemMinutesExhaustedUntil", "No avatar credits left in this workspace. They come back on {{date}} (UTC).", { date: d(t.minutesResetsAt, a) });
|
|
242
|
+
}
|
|
243
|
+
case "minutes-in-use": return r ? i("avatar.problemMinutesInUseTimed", "Avatar credits are in use in another session.") : i("avatar.problemMinutesInUse", "Avatar credits are in use in another session. Try again when it ends.");
|
|
244
|
+
case "minutes-in-use-self": return r ? i("avatar.problemMinutesInUseSelfTimed", "Your avatar is still running on another device. End it there.") : i("avatar.problemMinutesInUseSelf", "Your avatar is still running on another device. End it there, or try again when it ends.");
|
|
245
|
+
case "minutes-unavailable": return r ? i("avatar.problemMinutesUnavailableTimed", "Avatar credits can’t be checked right now.") : i("avatar.problemMinutesUnavailable", "Avatar credits can’t be checked right now. Try again in a moment.");
|
|
138
246
|
}
|
|
139
|
-
}
|
|
247
|
+
},
|
|
248
|
+
minutes: p(i, a)
|
|
140
249
|
}), [i, a]);
|
|
141
250
|
}
|
|
142
251
|
//#endregion
|
|
143
|
-
export {
|
|
252
|
+
export { i as AVATAR_MINUTES_HOW_COUNTED, f as formatAvatarCount, d as formatAvatarMinutesDate, s as formatAvatarRetryTime, m as useAvatarCopy };
|
|
@@ -2,8 +2,8 @@ import { PendingWrite } from './pendingWrite';
|
|
|
2
2
|
import { WriteProposalMessageRef } from './writeProposalDiscovery';
|
|
3
3
|
import { AssistantMessageAttachment } from './attachments';
|
|
4
4
|
import { AssistantMode, AssistantTokenUsage } from './types';
|
|
5
|
-
export type AssistantSandboxStatus =
|
|
6
|
-
export type AssistantConversationStatus =
|
|
5
|
+
export type AssistantSandboxStatus = 'none' | 'provisioning' | 'running' | 'stopping' | 'error';
|
|
6
|
+
export type AssistantConversationStatus = 'idle' | 'provisioning' | 'connecting' | 'streaming' | 'complete' | 'error';
|
|
7
7
|
/**
|
|
8
8
|
* ★ `AssistantPanelArtifact`, not `AssistantArtifact`. The transport already
|
|
9
9
|
* exports an `AssistantArtifact` in `./types` and the two genuinely differ —
|
|
@@ -17,7 +17,7 @@ export type AssistantConversationStatus = "idle" | "provisioning" | "connecting"
|
|
|
17
17
|
export interface AssistantPanelArtifact {
|
|
18
18
|
name: string;
|
|
19
19
|
path: string;
|
|
20
|
-
type:
|
|
20
|
+
type: 'file' | 'directory';
|
|
21
21
|
size: number;
|
|
22
22
|
downloadPath?: string;
|
|
23
23
|
}
|
|
@@ -35,7 +35,7 @@ export interface AssistantPanelArtifact {
|
|
|
35
35
|
* history). Each string is at most 256 characters.
|
|
36
36
|
*/
|
|
37
37
|
export interface AssistantNavigateAction {
|
|
38
|
-
kind:
|
|
38
|
+
kind: 'navigate';
|
|
39
39
|
destinationId: string;
|
|
40
40
|
path: string;
|
|
41
41
|
alreadyHere: boolean;
|
|
@@ -51,36 +51,36 @@ export interface AssistantNavigateAction {
|
|
|
51
51
|
/** ★ N3: the sandbox's offer id (`uo_` + 32 hex) — only with `via: "offer"`. */
|
|
52
52
|
offerId?: string;
|
|
53
53
|
}
|
|
54
|
-
export type AssistantNavigateVia =
|
|
54
|
+
export type AssistantNavigateVia = 'named' | 'link' | 'choice' | 'back' | 'offer';
|
|
55
55
|
/**
|
|
56
56
|
* ★ BOFF-8060 (N3): `tap` — the "Open {page}" link; `deixis` — "take me there";
|
|
57
57
|
* `yes` — a bare "yes" the binder accepted (§6); `resolve` — act-on-resolve
|
|
58
58
|
* (§8), the person's own explicit request answered by exactly one offer.
|
|
59
59
|
*/
|
|
60
|
-
export type AssistantNavigateOfferTrigger =
|
|
61
|
-
export type AssistantNavigateOutcome =
|
|
60
|
+
export type AssistantNavigateOfferTrigger = 'tap' | 'deixis' | 'yes' | 'resolve';
|
|
61
|
+
export type AssistantNavigateOutcome = 'arrived' | 'redirected' | 'new-tab' | 'refused' | 'unconfirmed';
|
|
62
62
|
/**
|
|
63
63
|
* ★ BOFF-8060: an app control the panel operated (header, sidebar, language,
|
|
64
64
|
* assistant panel, page). `control` names the registry key; `outcome` is what
|
|
65
65
|
* happened — `confirm` is a workspace switch or logout waiting for its button.
|
|
66
66
|
*/
|
|
67
67
|
export interface AssistantAppControlAction {
|
|
68
|
-
kind:
|
|
68
|
+
kind: 'app-control';
|
|
69
69
|
control: string;
|
|
70
70
|
outcome: AssistantAppControlOutcome;
|
|
71
71
|
/** Optional display parameter for a language confirmation; never an instruction. */
|
|
72
72
|
languageLabel?: string;
|
|
73
73
|
}
|
|
74
|
-
export type AssistantAppControlOutcome =
|
|
74
|
+
export type AssistantAppControlOutcome = 'done' | 'already' | 'failed' | 'blocked' | 'not-found' | 'ambiguous' | 'confirm';
|
|
75
75
|
export type AssistantLocalAction = {
|
|
76
|
-
kind:
|
|
76
|
+
kind: 'theme';
|
|
77
77
|
mode: string;
|
|
78
78
|
alreadyApplied: boolean;
|
|
79
79
|
} | AssistantAppControlAction | AssistantNavigateAction | {
|
|
80
|
-
kind:
|
|
80
|
+
kind: 'choose-destination';
|
|
81
81
|
candidateIds: string[];
|
|
82
82
|
} | {
|
|
83
|
-
kind:
|
|
83
|
+
kind: 'write-reply';
|
|
84
84
|
line: string;
|
|
85
85
|
};
|
|
86
86
|
export interface AssistantMessageMetadata {
|
|
@@ -185,7 +185,7 @@ export interface AssistantMessageMetadata {
|
|
|
185
185
|
* contains a payload or approval capability, and never leaves for history.
|
|
186
186
|
*/
|
|
187
187
|
writeProposalTransportNote?: WriteProposalMessageRef & {
|
|
188
|
-
status:
|
|
188
|
+
status: 'uncertain' | 'succeeded' | 'failed' | 'declined' | 'superseded' | 'expired';
|
|
189
189
|
};
|
|
190
190
|
/**
|
|
191
191
|
* ★ BOFF-7802: this reply is a UI command the panel carried out ITSELF — a
|
|
@@ -238,7 +238,7 @@ export interface AssistantMessageMetadata {
|
|
|
238
238
|
[key: string]: unknown;
|
|
239
239
|
}
|
|
240
240
|
/** Where a recorded action stands. `proposed` never survives a reload (it reads back as `expired`). */
|
|
241
|
-
export type AssistantHistoryRecordStatus =
|
|
241
|
+
export type AssistantHistoryRecordStatus = 'proposed' | 'applied' | 'failed' | 'expired' | 'cancelled';
|
|
242
242
|
/**
|
|
243
243
|
* One structured record on a message (BOFF-7335). `kind` is namespaced by the
|
|
244
244
|
* feature that writes it (`[a-z][a-z0-9._-]*`) and `version` versions its
|
|
@@ -256,7 +256,7 @@ export interface AssistantHistoryRecord {
|
|
|
256
256
|
}
|
|
257
257
|
export interface Message {
|
|
258
258
|
id: string;
|
|
259
|
-
role:
|
|
259
|
+
role: 'user' | 'assistant' | 'system';
|
|
260
260
|
content: string;
|
|
261
261
|
timestamp: string;
|
|
262
262
|
tokens?: AssistantTokenUsage;
|
|
@@ -274,7 +274,7 @@ export interface Message {
|
|
|
274
274
|
historySeq?: number;
|
|
275
275
|
}
|
|
276
276
|
/** See `Message.historyState`. */
|
|
277
|
-
export type MessageHistoryState =
|
|
277
|
+
export type MessageHistoryState = 'pending' | 'saved';
|
|
278
278
|
export interface Conversation {
|
|
279
279
|
id: string;
|
|
280
280
|
title: string;
|
|
@@ -337,7 +337,7 @@ export interface ConversationSyncStamp {
|
|
|
337
337
|
workspaceId: string;
|
|
338
338
|
actorId: string;
|
|
339
339
|
/** `created` on this device · `remote` read from the server · `legacy` saved before v2 (read-only). */
|
|
340
|
-
origin:
|
|
340
|
+
origin: 'created' | 'remote' | 'legacy';
|
|
341
341
|
/** The server's own id, once known. */
|
|
342
342
|
serverId?: string;
|
|
343
343
|
/** The server revision of the conversation last applied here. */
|
|
@@ -355,7 +355,7 @@ export interface ConversationSyncStamp {
|
|
|
355
355
|
*/
|
|
356
356
|
titleLocked?: true;
|
|
357
357
|
/** Why the latest turns are not being saved. */
|
|
358
|
-
blocked?:
|
|
358
|
+
blocked?: 'quota' | 'invalid' | 'scope';
|
|
359
359
|
/** When it was last opened here (ISO), for cache eviction. */
|
|
360
360
|
openedAt?: string;
|
|
361
361
|
}
|
|
@@ -363,7 +363,7 @@ export interface ConversationSyncStamp {
|
|
|
363
363
|
* How a conversation came by its mode. See `Conversation.routedBy` and
|
|
364
364
|
* `autoRouting.ts`.
|
|
365
365
|
*/
|
|
366
|
-
export type ConversationRouting =
|
|
366
|
+
export type ConversationRouting = 'auto';
|
|
367
367
|
export interface AssistantSandboxRuntime {
|
|
368
368
|
sandboxId: string;
|
|
369
369
|
status: AssistantSandboxStatus;
|
|
@@ -382,7 +382,7 @@ export interface AssistantSandboxRuntime {
|
|
|
382
382
|
* environment steps, and `connecting` is only ever shown as "Preparing
|
|
383
383
|
* session...". The names are `STAGE_COPY`'s keys, which `stageCopy.ts` enforces.
|
|
384
384
|
*/
|
|
385
|
-
export type AssistantTurnStage =
|
|
385
|
+
export type AssistantTurnStage = 'reusingEnvironment' | 'lookingForEnvironment' | 'startingEnvironment' | 'preparingSession' | 'connecting' | 'thinking';
|
|
386
386
|
export interface AssistantConversationProcessing {
|
|
387
387
|
status: AssistantConversationStatus;
|
|
388
388
|
messageId: string | null;
|
|
@@ -16,13 +16,13 @@ import { AssistantTr } from './i18n';
|
|
|
16
16
|
* session never advances on anything else.
|
|
17
17
|
*/
|
|
18
18
|
export type AssistantDisplayContent = {
|
|
19
|
-
readonly kind:
|
|
19
|
+
readonly kind: 'output';
|
|
20
20
|
readonly text: string;
|
|
21
21
|
} | {
|
|
22
|
-
readonly kind:
|
|
23
|
-
readonly text:
|
|
22
|
+
readonly kind: 'working';
|
|
23
|
+
readonly text: '';
|
|
24
24
|
} | {
|
|
25
|
-
readonly kind:
|
|
25
|
+
readonly kind: 'stopped';
|
|
26
26
|
readonly text: string;
|
|
27
27
|
};
|
|
28
28
|
/**
|
|
@@ -65,11 +65,11 @@ export declare const MIN_TEXT_PAGE_SHARE = 0.5;
|
|
|
65
65
|
* both have to look different from one we never tried. Silence here is what
|
|
66
66
|
* makes an assistant answer confidently about a file it never saw.
|
|
67
67
|
*/
|
|
68
|
-
export type DocumentExtractionStatus =
|
|
68
|
+
export type DocumentExtractionStatus = 'ok' | 'no-text' | 'encrypted' | 'corrupt'
|
|
69
69
|
/** No extractor for this type — we did not even try. */
|
|
70
|
-
|
|
|
70
|
+
| 'unsupported';
|
|
71
71
|
/** Document formats we can turn into text in the browser. */
|
|
72
|
-
export type DocumentFormat =
|
|
72
|
+
export type DocumentFormat = 'pdf' | 'docx' | 'xlsx';
|
|
73
73
|
export interface DocumentExtraction {
|
|
74
74
|
status: DocumentExtractionStatus;
|
|
75
75
|
/**
|
|
@@ -9,7 +9,7 @@ export interface ExportConversationOptions {
|
|
|
9
9
|
/** The product's translator, for "Stopped". English when omitted. */
|
|
10
10
|
tr?: AssistantTr;
|
|
11
11
|
}
|
|
12
|
-
export declare function exportConversation(conversation: Conversation, format:
|
|
12
|
+
export declare function exportConversation(conversation: Conversation, format: 'json' | 'markdown', options?: ExportConversationOptions): {
|
|
13
13
|
content: string;
|
|
14
14
|
filename: string;
|
|
15
15
|
mimeType: string;
|
|
@@ -41,7 +41,7 @@ export declare function isValidUpdatePatch(patch: AssistantHistoryUpdatePatch):
|
|
|
41
41
|
* voice marker on its USER messages (notes and replies do not count; a local
|
|
42
42
|
* command counts as the person's turn, as on the server). Null with none.
|
|
43
43
|
*/
|
|
44
|
-
export declare function localChannelOf(conversation: Pick<Conversation,
|
|
44
|
+
export declare function localChannelOf(conversation: Pick<Conversation, 'messages'>): AssistantHistoryChannel | null;
|
|
45
45
|
/** A queued control change, as the row reads it. */
|
|
46
46
|
export interface AssistantHistoryPendingUpdate {
|
|
47
47
|
patch: AssistantHistoryUpdatePatch;
|
|
@@ -75,7 +75,7 @@ export interface AssistantHistoryRowControls {
|
|
|
75
75
|
* held conversation's title in step with the server, and a title renamed on
|
|
76
76
|
* this device before renames were synced — `titleLocked` — stays here).
|
|
77
77
|
*/
|
|
78
|
-
export declare function resolveRowControls(conversation: Pick<Conversation,
|
|
78
|
+
export declare function resolveRowControls(conversation: Pick<Conversation, 'messages'> | null, header: AssistantHistoryHeader | null, pending?: readonly AssistantHistoryPendingUpdate[]): AssistantHistoryRowControls;
|
|
79
79
|
/** The list's default: every conversation that is not archived. */
|
|
80
80
|
export declare const DEFAULT_HISTORY_LIST_FILTER: Readonly<AssistantHistoryConversationFilter>;
|
|
81
81
|
/**
|
|
@@ -84,7 +84,7 @@ export declare const DEFAULT_HISTORY_LIST_FILTER: Readonly<AssistantHistoryConve
|
|
|
84
84
|
* and a MIXED row matches both. A row whose channel is unknown matches only
|
|
85
85
|
* ANY. Archived rows are left out unless asked for.
|
|
86
86
|
*/
|
|
87
|
-
export declare function matchesHistoryFilter(row: Pick<AssistantHistoryRowControls,
|
|
87
|
+
export declare function matchesHistoryFilter(row: Pick<AssistantHistoryRowControls, 'pinnedAt' | 'archivedAt' | 'channel'>, filter?: Readonly<AssistantHistoryConversationFilter>): boolean;
|
|
88
88
|
/**
|
|
89
89
|
* A filter as a stable key ("" for none): the list's "Show older" listing is
|
|
90
90
|
* paged per filter, and its `hasMore` answers for one key only.
|
|
@@ -97,5 +97,5 @@ export declare function isDefaultHistoryFilter(filter: Readonly<AssistantHistory
|
|
|
97
97
|
* them — Archived, then Pinned, then the channel. Null for the default
|
|
98
98
|
* filter, whose empty list is "No conversations yet".
|
|
99
99
|
*/
|
|
100
|
-
export type HistoryFilterEmptyKind =
|
|
100
|
+
export type HistoryFilterEmptyKind = 'archived' | 'pinned' | 'voice' | 'chat';
|
|
101
101
|
export declare function historyFilterEmptyKind(filter: Readonly<AssistantHistoryConversationFilter>): HistoryFilterEmptyKind | null;
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
* carries on and nothing pauses. Only a call that has no such document (a
|
|
33
33
|
* control change, a filtered list) is refused this way, and it waits.
|
|
34
34
|
*/
|
|
35
|
-
export type AssistantHistoryErrorClass =
|
|
35
|
+
export type AssistantHistoryErrorClass = 'schema-unavailable' | 'rejected' | 'quota' | 'auth' | 'not-found' | 'scope-inactive' | 'controls-unavailable' | 'transient';
|
|
36
36
|
export interface AssistantHistoryErrorVerdict {
|
|
37
37
|
class: AssistantHistoryErrorClass;
|
|
38
38
|
/** The first `extensions.code` found, for logs. */
|
|
@@ -67,7 +67,7 @@ export declare const ASSISTANT_HISTORY_BACKOFF_MAX_MS: number;
|
|
|
67
67
|
* changes, or (a control change) until the server has the controls again;
|
|
68
68
|
* `retry` — this item after `delayMs`.
|
|
69
69
|
*/
|
|
70
|
-
export type AssistantHistoryRetryAction =
|
|
70
|
+
export type AssistantHistoryRetryAction = 'drop' | 'pause' | 'park' | 'hold' | 'retry';
|
|
71
71
|
export interface AssistantHistoryRetryPlan {
|
|
72
72
|
action: AssistantHistoryRetryAction;
|
|
73
73
|
delayMs: number;
|
|
@@ -86,6 +86,6 @@ export declare function assistantHistoryBackoffMs(attempts: number, random?: ()
|
|
|
86
86
|
* be stored, and the list then shows what the server holds.
|
|
87
87
|
*/
|
|
88
88
|
export declare function planAssistantHistoryRetry(verdict: AssistantHistoryErrorVerdict, item: {
|
|
89
|
-
type:
|
|
89
|
+
type: 'save' | 'delete' | 'update';
|
|
90
90
|
attempts: number;
|
|
91
91
|
}, random?: () => number): AssistantHistoryRetryPlan;
|
|
@@ -5,7 +5,7 @@ import { AssistantHistoryChannel, AssistantHistoryConvKey, AssistantHistoryConve
|
|
|
5
5
|
/** The scope a stamped conversation belongs to. */
|
|
6
6
|
export declare function historyScopeKeyOfStamp(sync: ConversationSyncStamp): AssistantHistoryScopeKey;
|
|
7
7
|
/** A server conversation's key here: its client id, or `legacy:<id>` for a pre-v2 row. */
|
|
8
|
-
export declare function historyConvKeyOf(conversation: Pick<AssistantHistoryServerConversation,
|
|
8
|
+
export declare function historyConvKeyOf(conversation: Pick<AssistantHistoryServerConversation, 'id' | 'clientConversationId'>): AssistantHistoryConvKey;
|
|
9
9
|
/**
|
|
10
10
|
* The header the list keeps for a live server conversation. The history
|
|
11
11
|
* controls are copied only when the server's answer carried them: a header
|
|
@@ -23,7 +23,7 @@ export declare function conversationHasHistory(conversation: Conversation): bool
|
|
|
23
23
|
* never used as context — the composer is disabled while it is open, and a
|
|
24
24
|
* send that arrives anyway starts a new conversation.
|
|
25
25
|
*/
|
|
26
|
-
export declare function isReadOnlyHistoryConversation(conversation: Pick<Conversation,
|
|
26
|
+
export declare function isReadOnlyHistoryConversation(conversation: Pick<Conversation, 'sync'> | undefined): boolean;
|
|
27
27
|
/**
|
|
28
28
|
* Stamped for another owner than a conversation created now would get
|
|
29
29
|
* (`stamp`): another account, workspace or product. Such a conversation is
|
|
@@ -33,7 +33,7 @@ export declare function isReadOnlyHistoryConversation(conversation: Pick<Convers
|
|
|
33
33
|
* (history off, or the owner unknown) there is nothing to compare with, and
|
|
34
34
|
* nothing is "other".
|
|
35
35
|
*/
|
|
36
|
-
export declare function isOtherScopeHistoryConversation(conversation: Pick<Conversation,
|
|
36
|
+
export declare function isOtherScopeHistoryConversation(conversation: Pick<Conversation, 'sync'> | undefined, stamp: AssistantHistoryScope | null): boolean;
|
|
37
37
|
/**
|
|
38
38
|
* May `conversation` be reused as a fresh draft by a mode switch? Only an
|
|
39
39
|
* empty one with nothing to lose (`conversationHasHistory`) — and only one
|
|
@@ -75,7 +75,7 @@ export interface AssistantHistoryListRow {
|
|
|
75
75
|
/** Saved before v2: opens read-only. */
|
|
76
76
|
legacy: boolean;
|
|
77
77
|
/** Why its latest turns are not being saved. */
|
|
78
|
-
blocked?: ConversationSyncStamp[
|
|
78
|
+
blocked?: ConversationSyncStamp['blocked'];
|
|
79
79
|
loading: boolean;
|
|
80
80
|
/** When it was pinned (a queued pin: when the person pinned it). Null: not pinned. */
|
|
81
81
|
pinnedAt: string | null;
|
|
@@ -138,7 +138,7 @@ export declare function selectAssistantHistoryList(input: AssistantHistoryListIn
|
|
|
138
138
|
* here with nothing saved or queued to save (an empty draft) keeps only
|
|
139
139
|
* Rename (this device's) and Delete.
|
|
140
140
|
*/
|
|
141
|
-
export declare function historyRowAcceptsControls(row: Pick<AssistantHistoryListRow,
|
|
141
|
+
export declare function historyRowAcceptsControls(row: Pick<AssistantHistoryListRow, 'key' | 'legacy' | 'header' | 'conversation'>, outbox: readonly AssistantHistoryOutboxItem[], scopeKey: AssistantHistoryScopeKey | null): boolean;
|
|
142
142
|
/** Server-backed conversations kept on this device at most (the least recently opened go first). */
|
|
143
143
|
export declare const ASSISTANT_HISTORY_MAX_CACHED_CONVERSATIONS = 25;
|
|
144
144
|
export interface HistoryEvictionInput {
|
|
@@ -24,17 +24,17 @@ export declare function highestContiguousHistorySeq(messages: readonly Message[]
|
|
|
24
24
|
export type HistoryLoadPlan =
|
|
25
25
|
/** The newest window (nothing held yet, or too far behind to catch up). */
|
|
26
26
|
{
|
|
27
|
-
kind:
|
|
27
|
+
kind: 'latest';
|
|
28
28
|
paging: AssistantHistoryEntryPaging;
|
|
29
29
|
}
|
|
30
30
|
/** Everything after the last contiguous message held. */
|
|
31
31
|
| {
|
|
32
|
-
kind:
|
|
32
|
+
kind: 'catch-up';
|
|
33
33
|
paging: AssistantHistoryEntryPaging;
|
|
34
34
|
}
|
|
35
35
|
/** The window before the oldest held ("Show earlier messages"). */
|
|
36
36
|
| {
|
|
37
|
-
kind:
|
|
37
|
+
kind: 'earlier';
|
|
38
38
|
paging: AssistantHistoryEntryPaging;
|
|
39
39
|
};
|
|
40
40
|
/**
|
|
@@ -58,7 +58,7 @@ export declare function planHistoryEarlierLoad(sync: ConversationSyncStamp): His
|
|
|
58
58
|
* - `hasOlder`/`olderCursor` follow a BACKWARD page only; a catch-up page says
|
|
59
59
|
* nothing about what lies before the window.
|
|
60
60
|
*/
|
|
61
|
-
export declare function applyHistoryPage(sync: ConversationSyncStamp, local: readonly Message[], loaded: readonly Message[], page: Pick<AssistantHistoryEntryPage,
|
|
61
|
+
export declare function applyHistoryPage(sync: ConversationSyncStamp, local: readonly Message[], loaded: readonly Message[], page: Pick<AssistantHistoryEntryPage, 'conversation' | 'pageInfo'>, plan: HistoryLoadPlan): {
|
|
62
62
|
messages: Message[];
|
|
63
63
|
syncPatch: Partial<ConversationSyncStamp>;
|
|
64
64
|
};
|
|
@@ -46,7 +46,7 @@ export declare const ASSISTANT_HISTORY_UPDATE_MUTATION = "\n mutation UpdateAss
|
|
|
46
46
|
export declare const ASSISTANT_HISTORY_OPERATIONS: ReadonlyArray<{
|
|
47
47
|
operationName: string;
|
|
48
48
|
document: string;
|
|
49
|
-
set:
|
|
49
|
+
set: 'full' | 'base' | 'search';
|
|
50
50
|
}>;
|
|
51
51
|
export declare function buildHistoryPageVariables(scope: AssistantHistoryScope, page: {
|
|
52
52
|
first: number;
|
|
@@ -51,13 +51,13 @@ export interface AssistantHistorySearchInput {
|
|
|
51
51
|
export type AssistantHistorySearchServerState =
|
|
52
52
|
/** Nothing asked of it: no query, a query under 2 characters, or no server to ask. */
|
|
53
53
|
{
|
|
54
|
-
status:
|
|
54
|
+
status: 'idle';
|
|
55
55
|
}
|
|
56
56
|
/** The first page is on its way. */
|
|
57
57
|
| {
|
|
58
|
-
status:
|
|
58
|
+
status: 'searching';
|
|
59
59
|
} | {
|
|
60
|
-
status:
|
|
60
|
+
status: 'results';
|
|
61
61
|
hits: readonly AssistantHistorySearchHit[];
|
|
62
62
|
/** "Show more results". */
|
|
63
63
|
hasMore: boolean;
|
|
@@ -68,8 +68,8 @@ export type AssistantHistorySearchServerState =
|
|
|
68
68
|
}
|
|
69
69
|
/** No server matches: this device's matches only, and a notice says why. */
|
|
70
70
|
| {
|
|
71
|
-
status:
|
|
72
|
-
reason:
|
|
71
|
+
status: 'fallback';
|
|
72
|
+
reason: 'busy' | 'failed';
|
|
73
73
|
};
|
|
74
74
|
export interface AssistantHistorySearchSnapshot {
|
|
75
75
|
/** The query every result answers: the box's text, normalised, once typing paused. "" = no search. */
|
|
@@ -89,7 +89,7 @@ export interface AssistantHistoryGeneration {
|
|
|
89
89
|
export declare const createAssistantHistoryStatusStore: () => import('zustand').UseBoundStore<import('zustand').StoreApi<AssistantHistoryStatusState>>;
|
|
90
90
|
export type AssistantHistoryStatusStore = ReturnType<typeof createAssistantHistoryStatusStore>;
|
|
91
91
|
export declare const useAssistantHistoryStatus: AssistantHistoryStatusStore;
|
|
92
|
-
type GenerationState = Pick<AssistantHistoryStatusState,
|
|
92
|
+
type GenerationState = Pick<AssistantHistoryStatusState, 'scopeKey' | 'epoch'>;
|
|
93
93
|
/** The generation a request starting now belongs to, or null when no scope is active. */
|
|
94
94
|
export declare function assistantHistoryGenerationOf(state: GenerationState, boundKey: string | null): AssistantHistoryGeneration | null;
|
|
95
95
|
/**
|
|
@@ -38,15 +38,15 @@ export type AssistantHistoryConvRef = {
|
|
|
38
38
|
} | {
|
|
39
39
|
conversationId: string;
|
|
40
40
|
};
|
|
41
|
-
export type AssistantHistoryEntryKind =
|
|
42
|
-
export type AssistantHistoryRole =
|
|
43
|
-
export type AssistantHistorySaveOutcome =
|
|
44
|
-
export type AssistantHistoryDeleteOutcome =
|
|
41
|
+
export type AssistantHistoryEntryKind = 'TURN' | 'LOCAL_COMMAND' | 'NOTE';
|
|
42
|
+
export type AssistantHistoryRole = 'USER' | 'ASSISTANT' | 'NOTE';
|
|
43
|
+
export type AssistantHistorySaveOutcome = 'APPLIED' | 'ALREADY_APPLIED' | 'CONVERSATION_DELETED';
|
|
44
|
+
export type AssistantHistoryDeleteOutcome = 'DELETED' | 'ALREADY_DELETED' | 'TOMBSTONED_UNSEEN' | 'NOT_PRESENT';
|
|
45
45
|
/** The kinds of person turns a conversation holds (notes do not count). */
|
|
46
|
-
export type AssistantHistoryChannel =
|
|
47
|
-
export type AssistantHistoryUpdateOutcome =
|
|
48
|
-
export type AssistantHistoryArchivedFilter =
|
|
49
|
-
export type AssistantHistoryChannelFilter =
|
|
46
|
+
export type AssistantHistoryChannel = 'CHAT' | 'VOICE' | 'MIXED';
|
|
47
|
+
export type AssistantHistoryUpdateOutcome = 'APPLIED' | 'ALREADY_APPLIED' | 'CONVERSATION_DELETED' | 'PIN_LIMIT_REACHED';
|
|
48
|
+
export type AssistantHistoryArchivedFilter = 'EXCLUDE' | 'ONLY' | 'INCLUDE';
|
|
49
|
+
export type AssistantHistoryChannelFilter = 'ANY' | 'CHAT' | 'VOICE';
|
|
50
50
|
/**
|
|
51
51
|
* `AssistantHistoryConversationFilter`. Every field optional, as on the
|
|
52
52
|
* server: `channel` defaults to ANY, `archived` to EXCLUDE, and an absent
|
|
@@ -279,18 +279,18 @@ export interface AssistantHistoryTombstone {
|
|
|
279
279
|
*/
|
|
280
280
|
export interface AssistantHistorySaveItem {
|
|
281
281
|
id: string;
|
|
282
|
-
type:
|
|
282
|
+
type: 'save';
|
|
283
283
|
scopeKey: AssistantHistoryScopeKey;
|
|
284
284
|
convKey: AssistantHistoryConvKey;
|
|
285
285
|
kind: AssistantHistoryEntryKind;
|
|
286
286
|
entries: AssistantHistoryEntryInput[];
|
|
287
287
|
attempts: number;
|
|
288
288
|
nextAttemptAt?: number;
|
|
289
|
-
parked?:
|
|
289
|
+
parked?: 'quota';
|
|
290
290
|
}
|
|
291
291
|
export interface AssistantHistoryDeleteItem {
|
|
292
292
|
id: string;
|
|
293
|
-
type:
|
|
293
|
+
type: 'delete';
|
|
294
294
|
scopeKey: AssistantHistoryScopeKey;
|
|
295
295
|
convKey: AssistantHistoryConvKey;
|
|
296
296
|
serverId?: string;
|
|
@@ -308,7 +308,7 @@ export interface AssistantHistoryDeleteItem {
|
|
|
308
308
|
*/
|
|
309
309
|
export interface AssistantHistoryUpdateItem {
|
|
310
310
|
id: string;
|
|
311
|
-
type:
|
|
311
|
+
type: 'update';
|
|
312
312
|
scopeKey: AssistantHistoryScopeKey;
|
|
313
313
|
convKey: AssistantHistoryConvKey;
|
|
314
314
|
serverId?: string;
|
|
@@ -28,8 +28,8 @@ export interface ProfileBoundStorageOptions {
|
|
|
28
28
|
/** Resolve the profile-scoped key for a base name (default: the app's active profile). */
|
|
29
29
|
resolveKey?: (name: string) => string;
|
|
30
30
|
/** The storage to use (default: `window.localStorage`, when there is one). */
|
|
31
|
-
storage?: () => Pick<Storage,
|
|
31
|
+
storage?: () => Pick<Storage, 'getItem' | 'setItem' | 'removeItem'> | null;
|
|
32
32
|
/** Told once per refusal streak, and about every failed write. */
|
|
33
|
-
onRefused?: (reason:
|
|
33
|
+
onRefused?: (reason: 'unbound' | 'profile-changed' | 'write-failed', error?: unknown) => void;
|
|
34
34
|
}
|
|
35
35
|
export declare function createProfileBoundStorage(options?: ProfileBoundStorageOptions): ProfileBoundStorage;
|
|
@@ -50,7 +50,7 @@ export interface AssistantI18nProviderProps {
|
|
|
50
50
|
* transport already needs for `AI_ASSISTANT_PRODUCT`, so there is one answer to
|
|
51
51
|
* "which product is this?" rather than two that can disagree.
|
|
52
52
|
*/
|
|
53
|
-
export declare function AssistantI18nProvider({ namespace, children
|
|
53
|
+
export declare function AssistantI18nProvider({ namespace, children }: AssistantI18nProviderProps): import('react/jsx-runtime').JSX.Element;
|
|
54
54
|
/** The namespace in force, or null when no provider is mounted. */
|
|
55
55
|
export declare function useAssistantI18nNamespace(): string | null;
|
|
56
56
|
export type AssistantTr = (key: string, fallback: string, params?: Record<string, string | number>) => string;
|