@burdenoff/fe-libs 2026.928.2 → 2026.929.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/shared/assistant/adminModeSendGate.d.ts +6 -5
- package/dist/shared/assistant/adminModeSendGate.d.ts.map +1 -1
- package/dist/shared/assistant/adminModeSendGate.js +11 -11
- package/dist/shared/assistant/api.d.ts +291 -28
- package/dist/shared/assistant/api.d.ts.map +1 -1
- package/dist/shared/assistant/api.js +351 -147
- package/dist/shared/assistant/autoRouting.d.ts +11 -3
- package/dist/shared/assistant/autoRouting.d.ts.map +1 -1
- package/dist/shared/assistant/autoRouting.js +7 -7
- package/dist/shared/assistant/capabilities.d.ts +28 -0
- package/dist/shared/assistant/capabilities.d.ts.map +1 -1
- package/dist/shared/assistant/capabilities.js +19 -10
- package/dist/shared/assistant/conversation.d.ts +24 -2
- package/dist/shared/assistant/conversation.d.ts.map +1 -1
- package/dist/shared/assistant/createSandboxAssistantTransport.d.ts.map +1 -1
- package/dist/shared/assistant/createSandboxAssistantTransport.js +67 -54
- package/dist/shared/assistant/history/historyList.js +1 -1
- package/dist/shared/assistant/history/historyMapping.d.ts.map +1 -1
- package/dist/shared/assistant/history/historyMapping.js +5 -1
- package/dist/shared/assistant/history/historyResume.js +7 -7
- package/dist/shared/assistant/i18nManifest.d.ts +53 -0
- package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
- package/dist/shared/assistant/i18nManifest.js +75 -16
- package/dist/shared/assistant/index.d.ts +15 -0
- package/dist/shared/assistant/index.d.ts.map +1 -1
- package/dist/shared/assistant/modeCapabilities.js +1 -1
- package/dist/shared/assistant/operations.d.ts +22 -0
- package/dist/shared/assistant/operations.d.ts.map +1 -1
- package/dist/shared/assistant/operations.js +2 -2
- package/dist/shared/assistant/prewarm.d.ts +7 -0
- package/dist/shared/assistant/prewarm.d.ts.map +1 -1
- package/dist/shared/assistant/prewarm.js +1 -1
- package/dist/shared/assistant/product.d.ts +80 -2
- package/dist/shared/assistant/product.d.ts.map +1 -1
- package/dist/shared/assistant/product.js +10 -6
- package/dist/shared/assistant/proposalWriteRules.d.ts +40 -0
- package/dist/shared/assistant/proposalWriteRules.d.ts.map +1 -0
- package/dist/shared/assistant/proposalWriteRules.js +14 -0
- package/dist/shared/assistant/store.d.ts +17 -0
- package/dist/shared/assistant/store.d.ts.map +1 -1
- package/dist/shared/assistant/store.js +50 -43
- package/dist/shared/assistant/turnOutcome.d.ts +34 -2
- package/dist/shared/assistant/turnOutcome.d.ts.map +1 -1
- package/dist/shared/assistant/turnOutcome.js +28 -17
- package/dist/shared/assistant/turnOutcomeCopy.d.ts +29 -7
- package/dist/shared/assistant/turnOutcomeCopy.d.ts.map +1 -1
- package/dist/shared/assistant/turnOutcomeCopy.js +18 -6
- package/dist/shared/assistant/types.d.ts +5 -1
- package/dist/shared/assistant/types.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantApiCallsConsentDialog.js +4 -4
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +989 -718
- package/dist/shared/assistant/ui/AssistantConversationList.js +6 -6
- package/dist/shared/assistant/ui/AssistantLanguageMenu.js +6 -6
- package/dist/shared/assistant/ui/AssistantMessageItem.d.ts +8 -1
- package/dist/shared/assistant/ui/AssistantMessageItem.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMessageItem.js +77 -76
- package/dist/shared/assistant/ui/AssistantMessageList.d.ts +13 -1
- package/dist/shared/assistant/ui/AssistantMessageList.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMessageList.js +15 -13
- package/dist/shared/assistant/ui/AssistantReplyLanguageSelector.js +5 -5
- package/dist/shared/assistant/ui/AssistantSpeechProvider.js +209 -209
- package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.d.ts +62 -0
- package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.d.ts.map +1 -0
- package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.js +253 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalCard.d.ts +72 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalCard.d.ts.map +1 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalCard.js +439 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalSlot.d.ts +40 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalSlot.d.ts.map +1 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalSlot.js +35 -0
- package/dist/shared/assistant/ui/composer/AssistantComposer.js +8 -8
- package/dist/shared/assistant/ui/useVoiceSession.d.ts +28 -0
- package/dist/shared/assistant/ui/useVoiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/ui/useVoiceSession.js +159 -110
- package/dist/shared/assistant/ui/useWriteProposalConfirm.d.ts +61 -0
- package/dist/shared/assistant/ui/useWriteProposalConfirm.d.ts.map +1 -0
- package/dist/shared/assistant/ui/useWriteProposalConfirm.js +109 -0
- package/dist/shared/assistant/ui/useWriteProposals.d.ts +102 -0
- package/dist/shared/assistant/ui/useWriteProposals.d.ts.map +1 -0
- package/dist/shared/assistant/ui/useWriteProposals.js +230 -0
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts +17 -1
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +141 -109
- package/dist/shared/assistant/ui/writeProposalPresentation.d.ts +76 -0
- package/dist/shared/assistant/ui/writeProposalPresentation.d.ts.map +1 -0
- package/dist/shared/assistant/ui/writeProposalPresentation.js +110 -0
- package/dist/shared/assistant/usageReporting.d.ts +108 -0
- package/dist/shared/assistant/usageReporting.d.ts.map +1 -0
- package/dist/shared/assistant/usageReporting.js +155 -0
- package/dist/shared/assistant/useAssistantApiAccess.d.ts +49 -14
- package/dist/shared/assistant/useAssistantApiAccess.d.ts.map +1 -1
- package/dist/shared/assistant/useAssistantApiAccess.js +43 -25
- package/dist/shared/assistant/useAssistantHeartbeat.d.ts.map +1 -1
- package/dist/shared/assistant/useAssistantHeartbeat.js +5 -5
- package/dist/shared/assistant/useWorkspaceWriteAccess.d.ts +5 -6
- package/dist/shared/assistant/useWorkspaceWriteAccess.d.ts.map +1 -1
- package/dist/shared/assistant/voice/voiceSession.d.ts +46 -0
- package/dist/shared/assistant/voice/voiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/voice/voiceSession.js +35 -2
- package/dist/shared/assistant/writeConfirmSeam.d.ts +32 -0
- package/dist/shared/assistant/writeConfirmSeam.d.ts.map +1 -0
- package/dist/shared/assistant/writeConfirmSeam.js +23 -0
- package/dist/shared/assistant/writeModeConsent.d.ts +16 -8
- package/dist/shared/assistant/writeModeConsent.d.ts.map +1 -1
- package/dist/shared/assistant/writeModeConsent.js +2 -2
- package/dist/shared/assistant/writeProposalDiscovery.d.ts +123 -0
- package/dist/shared/assistant/writeProposalDiscovery.d.ts.map +1 -0
- package/dist/shared/assistant/writeProposalDiscovery.js +210 -0
- package/dist/shared/assistant/writeProposalErrorCopy.d.ts +135 -0
- package/dist/shared/assistant/writeProposalErrorCopy.d.ts.map +1 -0
- package/dist/shared/assistant/writeProposalErrorCopy.js +135 -0
- package/dist/shared/assistant/writeProposalVoice.d.ts +133 -0
- package/dist/shared/assistant/writeProposalVoice.d.ts.map +1 -0
- package/dist/shared/assistant/writeProposalVoice.js +66 -0
- package/dist/shared/assistant/writeProposals.d.ts +268 -0
- package/dist/shared/assistant/writeProposals.d.ts.map +1 -0
- package/dist/shared/assistant/writeProposals.js +445 -0
- package/dist/shared/assistant/writeReplyBinder.d.ts +166 -0
- package/dist/shared/assistant/writeReplyBinder.d.ts.map +1 -0
- package/dist/shared/assistant/writeReplyBinder.js +233 -0
- package/dist/shared/assistant/writeReplySend.d.ts +110 -0
- package/dist/shared/assistant/writeReplySend.d.ts.map +1 -0
- package/dist/shared/assistant/writeReplySend.js +93 -0
- package/dist/shared/graphql/fetch.d.ts +12 -1
- package/dist/shared/graphql/fetch.d.ts.map +1 -1
- package/dist/shared/graphql/fetch.js +101 -80
- package/dist/shared/providers/shell/ActiveContextProvider.d.ts.map +1 -1
- package/dist/shared/providers/shell/ActiveContextProvider.js +28 -26
- package/dist/shared/providers/shell/PersonaSurfaceProvider.d.ts.map +1 -1
- package/dist/shared/providers/shell/PersonaSurfaceProvider.js +165 -193
- package/dist/shared/providers/shell/personaSurfaceRemote.d.ts +8 -2
- package/dist/shared/providers/shell/personaSurfaceRemote.d.ts.map +1 -1
- package/dist/shared/providers/shell/personaSurfaceRemote.js +37 -15
- package/dist/shared/providers/shell/useRemoteNavPreferences.d.ts +30 -0
- package/dist/shared/providers/shell/useRemoteNavPreferences.d.ts.map +1 -0
- package/dist/shared/providers/shell/useRemoteNavPreferences.js +43 -0
- package/dist/shared-assistant.js +167 -152
- package/dist/ui/modal-shell.d.ts +14 -1
- package/dist/ui/modal-shell.d.ts.map +1 -1
- package/dist/ui/modal-shell.js +8 -6
- package/package.json +2 -2
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
//#region src/shared/assistant/writeReplyBinder.ts
|
|
2
|
+
var e = Object.freeze({
|
|
3
|
+
useButton: Object.freeze({
|
|
4
|
+
key: "writeProposal.useButton",
|
|
5
|
+
fallback: "To make this change, press its confirm button. A reply on its own doesn't confirm it."
|
|
6
|
+
}),
|
|
7
|
+
whichOne: Object.freeze({
|
|
8
|
+
key: "writeProposal.whichOne",
|
|
9
|
+
fallback: "I have {{count}} changes ready. Press the confirm button on the one you want. A reply on its own doesn't confirm any of them."
|
|
10
|
+
}),
|
|
11
|
+
replyCannotRun: Object.freeze({
|
|
12
|
+
key: "writeProposal.replyCannotRun",
|
|
13
|
+
fallback: "A reply can't run a change from this session. You can review or cancel it on its card; running changes from the assistant becomes available once secure confirmation is enabled."
|
|
14
|
+
}),
|
|
15
|
+
cancelled: Object.freeze({
|
|
16
|
+
key: "writeProposal.cancelled",
|
|
17
|
+
fallback: "Cancelled."
|
|
18
|
+
})
|
|
19
|
+
}), t = [
|
|
20
|
+
"yes",
|
|
21
|
+
"yeah",
|
|
22
|
+
"yep",
|
|
23
|
+
"yup",
|
|
24
|
+
"ok",
|
|
25
|
+
"okay",
|
|
26
|
+
"sure",
|
|
27
|
+
"confirm",
|
|
28
|
+
"approve",
|
|
29
|
+
"do it",
|
|
30
|
+
"go ahead",
|
|
31
|
+
"please do",
|
|
32
|
+
"yes please",
|
|
33
|
+
"sounds good",
|
|
34
|
+
"thats right"
|
|
35
|
+
], n = [
|
|
36
|
+
"no",
|
|
37
|
+
"nope",
|
|
38
|
+
"nah",
|
|
39
|
+
"dont",
|
|
40
|
+
"do not",
|
|
41
|
+
"cancel",
|
|
42
|
+
"stop",
|
|
43
|
+
"never mind",
|
|
44
|
+
"nevermind",
|
|
45
|
+
"not now",
|
|
46
|
+
"forget it",
|
|
47
|
+
"wait",
|
|
48
|
+
"hold on"
|
|
49
|
+
], r = [
|
|
50
|
+
"please",
|
|
51
|
+
"thanks",
|
|
52
|
+
"thank you"
|
|
53
|
+
], i = 4, a = Object.freeze({
|
|
54
|
+
affirm: Object.freeze([...t]),
|
|
55
|
+
negative: Object.freeze([...n]),
|
|
56
|
+
courtesy: Object.freeze([...r]),
|
|
57
|
+
maxAffirmTokens: i
|
|
58
|
+
}), o = new Set(t), s = new Set(n), c = new Set(r), l = new Set([...n, ...r]), u = Math.max(...[
|
|
59
|
+
...t,
|
|
60
|
+
...n,
|
|
61
|
+
...r
|
|
62
|
+
].map((e) => e.split(" ").length)), d = /[\p{L}\p{N}]+(?:['‘’ʼ`][\p{L}\p{N}]+)*/gu, f = /['‘’ʼ`]/g, p = /[,;:.!?…–—\n]|(?:^|\s)-+(?:\s|$)/u, m = /^[\s,;:.!?…–—-]+/u;
|
|
63
|
+
function h(e) {
|
|
64
|
+
let t = [...e.matchAll(d)].map((e) => {
|
|
65
|
+
let t = e.index ?? 0;
|
|
66
|
+
return {
|
|
67
|
+
word: e[0].toLowerCase().replace(f, ""),
|
|
68
|
+
start: t,
|
|
69
|
+
end: t + e[0].length
|
|
70
|
+
};
|
|
71
|
+
});
|
|
72
|
+
return t.map((n, r) => {
|
|
73
|
+
let i = t[r + 1];
|
|
74
|
+
return {
|
|
75
|
+
...n,
|
|
76
|
+
closesClause: i === void 0 || p.test(e.slice(n.end, i.start))
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
function g(e, t, n, r) {
|
|
81
|
+
for (let i = Math.min(u, n - t); i > 0; i--) if (r.has(e.slice(t, t + i).join(" "))) return i;
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
function _(e, t, n, r) {
|
|
85
|
+
for (let i = Math.min(u, n - t); i > 0; i--) if (r.has(e.slice(n - i, n).join(" "))) return i;
|
|
86
|
+
return 0;
|
|
87
|
+
}
|
|
88
|
+
function v(e, t, n) {
|
|
89
|
+
if (n <= t || n - t > i) return !1;
|
|
90
|
+
for (let r = t; r < n;) {
|
|
91
|
+
let t = g(e, r, n, o);
|
|
92
|
+
if (t === 0) return !1;
|
|
93
|
+
r += t;
|
|
94
|
+
}
|
|
95
|
+
return !0;
|
|
96
|
+
}
|
|
97
|
+
function y(e) {
|
|
98
|
+
return typeof e == "string" && /^en(?:[-_][A-Za-z0-9]{1,8})*$/i.test(e.trim());
|
|
99
|
+
}
|
|
100
|
+
var b = (e, t = null) => ({
|
|
101
|
+
cls: e,
|
|
102
|
+
remainder: t
|
|
103
|
+
});
|
|
104
|
+
function x(e, t) {
|
|
105
|
+
if (typeof e != "string" || !y(t)) return b("other");
|
|
106
|
+
let n = e.normalize("NFKC"), r = h(n), i = r.map((e) => e.word), a = i.length;
|
|
107
|
+
for (;;) {
|
|
108
|
+
let e = _(i, 0, a, c);
|
|
109
|
+
if (e === 0 || e >= a) break;
|
|
110
|
+
a -= e;
|
|
111
|
+
}
|
|
112
|
+
let u = +(i[0] === "please" && a > 1);
|
|
113
|
+
if (v(i, 0, a) || v(i, u, a)) return b("affirm");
|
|
114
|
+
let d = g(i, u, a, s);
|
|
115
|
+
if (d > 0) {
|
|
116
|
+
let e = u + d - 1, t = u + d;
|
|
117
|
+
for (; t < a;) {
|
|
118
|
+
let n = g(i, t, a, l);
|
|
119
|
+
if (n === 0) break;
|
|
120
|
+
let o = r[t + n - 1];
|
|
121
|
+
if (t + n < a && !o.closesClause) break;
|
|
122
|
+
e = t + n - 1, t += n;
|
|
123
|
+
}
|
|
124
|
+
if (t >= a || !r[e].closesClause || v(i, t, a)) return b("decline");
|
|
125
|
+
let o = n.slice(r[e].end).replace(m, "").trim();
|
|
126
|
+
return o ? b("decline_redirect", o) : b("decline");
|
|
127
|
+
}
|
|
128
|
+
return g(i, u, a, o) > 0 || g(i, 0, a, o) > 0 ? b("affirm_with_change") : b("other");
|
|
129
|
+
}
|
|
130
|
+
function S(e, t) {
|
|
131
|
+
return x(e, t).cls;
|
|
132
|
+
}
|
|
133
|
+
var C = new Set(["typed", "spoken"]);
|
|
134
|
+
function w(e) {
|
|
135
|
+
return C.has(e);
|
|
136
|
+
}
|
|
137
|
+
function T(e) {
|
|
138
|
+
return e === "affirm" ? "affirm" : e === "decline" || e === "decline_redirect" ? "decline" : "other";
|
|
139
|
+
}
|
|
140
|
+
var E = () => ({ from: "utterance" });
|
|
141
|
+
function D(t) {
|
|
142
|
+
let { cls: n, origin: r, localUiMatch: i } = t;
|
|
143
|
+
if (!w(r)) return {
|
|
144
|
+
action: "forward",
|
|
145
|
+
text: E(),
|
|
146
|
+
declineAll: null,
|
|
147
|
+
writeReply: null,
|
|
148
|
+
voiceLine: null
|
|
149
|
+
};
|
|
150
|
+
let a = Number.isFinite(t.liveCount) && t.liveCount > 0 ? Math.floor(t.liveCount) : 0, o = {
|
|
151
|
+
kind: T(n),
|
|
152
|
+
origin: r
|
|
153
|
+
};
|
|
154
|
+
if (a === 0) return n === "affirm" ? {
|
|
155
|
+
action: "forward",
|
|
156
|
+
text: E(),
|
|
157
|
+
declineAll: null,
|
|
158
|
+
writeReply: o,
|
|
159
|
+
voiceLine: null
|
|
160
|
+
} : {
|
|
161
|
+
action: "normal",
|
|
162
|
+
writeReply: o
|
|
163
|
+
};
|
|
164
|
+
switch (n) {
|
|
165
|
+
case "affirm": return {
|
|
166
|
+
action: "local_reply",
|
|
167
|
+
line: t.execution === "enabled" ? a === 1 ? e.useButton : e.whichOne : e.replyCannotRun,
|
|
168
|
+
values: { count: a }
|
|
169
|
+
};
|
|
170
|
+
case "affirm_with_change": return {
|
|
171
|
+
action: "forward",
|
|
172
|
+
text: E(),
|
|
173
|
+
declineAll: "corrected",
|
|
174
|
+
writeReply: o,
|
|
175
|
+
voiceLine: null
|
|
176
|
+
};
|
|
177
|
+
case "decline": return {
|
|
178
|
+
action: "forward",
|
|
179
|
+
text: E(),
|
|
180
|
+
declineAll: "user_declined",
|
|
181
|
+
writeReply: o,
|
|
182
|
+
voiceLine: e.cancelled
|
|
183
|
+
};
|
|
184
|
+
case "decline_redirect": {
|
|
185
|
+
let n = t.remainder?.trim() ?? "";
|
|
186
|
+
if (!n) return {
|
|
187
|
+
action: "forward",
|
|
188
|
+
text: E(),
|
|
189
|
+
declineAll: "user_declined",
|
|
190
|
+
writeReply: o,
|
|
191
|
+
voiceLine: e.cancelled
|
|
192
|
+
};
|
|
193
|
+
let r = {
|
|
194
|
+
from: "remainder",
|
|
195
|
+
value: n
|
|
196
|
+
};
|
|
197
|
+
return i ? {
|
|
198
|
+
action: "local",
|
|
199
|
+
text: r,
|
|
200
|
+
declineAll: "redirected"
|
|
201
|
+
} : {
|
|
202
|
+
action: "forward",
|
|
203
|
+
text: r,
|
|
204
|
+
declineAll: "redirected",
|
|
205
|
+
writeReply: o,
|
|
206
|
+
voiceLine: null
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
case "other": return i ? {
|
|
210
|
+
action: "local",
|
|
211
|
+
text: E(),
|
|
212
|
+
declineAll: null
|
|
213
|
+
} : {
|
|
214
|
+
action: "forward",
|
|
215
|
+
text: E(),
|
|
216
|
+
declineAll: null,
|
|
217
|
+
writeReply: o,
|
|
218
|
+
voiceLine: null
|
|
219
|
+
};
|
|
220
|
+
default: return {
|
|
221
|
+
action: "forward",
|
|
222
|
+
text: E(),
|
|
223
|
+
declineAll: null,
|
|
224
|
+
writeReply: {
|
|
225
|
+
kind: "other",
|
|
226
|
+
origin: r
|
|
227
|
+
},
|
|
228
|
+
voiceLine: null
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
//#endregion
|
|
233
|
+
export { e as WRITE_REPLY_COPY, a as WRITE_REPLY_LEXICON, x as analyseWriteReply, S as classifyWriteReply, D as decideWriteReply, w as isUserOriginatedWriteReply };
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { WriteReplyDeclineReason, WriteReplyLine, WriteReplyTag } from './writeReplyBinder';
|
|
2
|
+
import { SandboxWriteCapabilities, WriteExecutionState } from './writeProposals';
|
|
3
|
+
/** Where a person's own reply came from. */
|
|
4
|
+
export type WriteReplyPersonOrigin = "typed" | "spoken";
|
|
5
|
+
/**
|
|
6
|
+
* What a bound send carries on its way to the model, once the binder has run.
|
|
7
|
+
* The send path re-enters with it and never binds the same send twice.
|
|
8
|
+
*/
|
|
9
|
+
export interface WriteReplyBound {
|
|
10
|
+
/** The prompt's `writeReply` (sent only to a proposal-v1 sandbox). */
|
|
11
|
+
writeReply: WriteReplyTag | null;
|
|
12
|
+
/**
|
|
13
|
+
* What the MODEL is sent: the whole reply, or — after a redirecting decline
|
|
14
|
+
* — the request that followed it ("No, open billing" → "open billing"). The
|
|
15
|
+
* thread shows what the person said either way.
|
|
16
|
+
*/
|
|
17
|
+
promptText: string;
|
|
18
|
+
/** Whether the ordinary local UI commands may still claim it. */
|
|
19
|
+
localCommands: boolean;
|
|
20
|
+
}
|
|
21
|
+
/** The conversation's waiting changes, as the panel last read them. */
|
|
22
|
+
export interface WriteReplyLiveState {
|
|
23
|
+
/** PENDING proposals: waiting for a decision. */
|
|
24
|
+
count: number;
|
|
25
|
+
/**
|
|
26
|
+
* `enabled` when at least one of them offers its confirm button; otherwise
|
|
27
|
+
* `fenced`, so a "yes" is never pointed at a button that is not there.
|
|
28
|
+
*/
|
|
29
|
+
execution: WriteExecutionState;
|
|
30
|
+
}
|
|
31
|
+
export type WriteReplyPlan =
|
|
32
|
+
/** Answer in the panel. Nothing is sent, nothing is declined. */
|
|
33
|
+
{
|
|
34
|
+
kind: "local_reply";
|
|
35
|
+
line: WriteReplyLine;
|
|
36
|
+
values: {
|
|
37
|
+
count: number;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Await `declineAll` when set, then run the UI command matched on
|
|
42
|
+
* `commandText`. When it cannot run here, `fallback` is sent instead.
|
|
43
|
+
*/
|
|
44
|
+
| {
|
|
45
|
+
kind: "local";
|
|
46
|
+
commandText: string;
|
|
47
|
+
declineAll: WriteReplyDeclineReason | null;
|
|
48
|
+
fallback: WriteReplyBound;
|
|
49
|
+
}
|
|
50
|
+
/** Await `declineAll` when set, then send `bound`. */
|
|
51
|
+
| {
|
|
52
|
+
kind: "send";
|
|
53
|
+
declineAll: WriteReplyDeclineReason | null;
|
|
54
|
+
bound: WriteReplyBound;
|
|
55
|
+
};
|
|
56
|
+
export interface WriteReplyPlanInput {
|
|
57
|
+
/** What the person typed or said, as they said it. */
|
|
58
|
+
text: string;
|
|
59
|
+
/** The language it was typed or said in. Only English binds. */
|
|
60
|
+
locale: string | null | undefined;
|
|
61
|
+
origin: WriteReplyPersonOrigin;
|
|
62
|
+
hasAttachments: boolean;
|
|
63
|
+
live: WriteReplyLiveState;
|
|
64
|
+
/** Does a local UI command match this text? (`matchLocalUiCommand`) */
|
|
65
|
+
matchesLocalCommand: (text: string) => boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The plan for a person's reply. Pure: every effect is the caller's, and the
|
|
69
|
+
* caller awaits `declineAll` before it sends or runs anything.
|
|
70
|
+
*/
|
|
71
|
+
export declare function planWriteReply(input: WriteReplyPlanInput): WriteReplyPlan;
|
|
72
|
+
/** One proposal the panel holds, as far as the binder needs it. */
|
|
73
|
+
export interface WriteReplyHeldProposal {
|
|
74
|
+
status: string;
|
|
75
|
+
/** The issuing sandbox. */
|
|
76
|
+
sandboxId: string;
|
|
77
|
+
/** Whether its card offers the confirm button now. */
|
|
78
|
+
offersConfirm: boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The live state of a conversation's proposals: how many are pending, and
|
|
82
|
+
* whether any of their cards offers its confirm button.
|
|
83
|
+
*/
|
|
84
|
+
export declare function writeReplyLiveState(held: readonly WriteReplyHeldProposal[]): WriteReplyLiveState;
|
|
85
|
+
/**
|
|
86
|
+
* How long the send path waits for a reply's declines before the reply goes
|
|
87
|
+
* on anyway. A decline is one proxied call; a sandbox that does not answer
|
|
88
|
+
* must not freeze the panel with the person's words unsent. What is sent after
|
|
89
|
+
* the wait is still safe: the sandbox's sweep supersedes whatever waited on
|
|
90
|
+
* any prompt, and a decline landing late is a no-op on a proposal already
|
|
91
|
+
* superseded.
|
|
92
|
+
*/
|
|
93
|
+
export declare const WRITE_REPLY_DECLINE_WAIT_MS = 8000;
|
|
94
|
+
export interface WriteReplyTimers {
|
|
95
|
+
set: (run: () => void, ms: number) => unknown;
|
|
96
|
+
clear: (handle: unknown) => void;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Resolves `settled` once every promise has settled (fulfilled or rejected),
|
|
100
|
+
* or `timed_out` after `ms`, whichever comes first. Never rejects.
|
|
101
|
+
*/
|
|
102
|
+
export declare function settleWithin(work: readonly Promise<unknown>[], ms: number, timers?: WriteReplyTimers): Promise<"settled" | "timed_out">;
|
|
103
|
+
/**
|
|
104
|
+
* The sandbox's write mode for a prompt, from its own `/health`. Proposal
|
|
105
|
+
* instructions need the v1 protocol as well as the mode, the same test as
|
|
106
|
+
* `writeProposalsEnabledFor`: a sandbox with only one of them keeps the legacy
|
|
107
|
+
* card, so its prompt must stay legacy too.
|
|
108
|
+
*/
|
|
109
|
+
export declare function promptWriteApproval(capabilities: SandboxWriteCapabilities | null | undefined): "legacy" | "proposal-v1";
|
|
110
|
+
//# sourceMappingURL=writeReplySend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeReplySend.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/writeReplySend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAGL,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,4CAA4C;AAC5C,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,UAAU,EAAE,aAAa,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,SAAS,EAAE,mBAAmB,CAAC;CAChC;AAED,MAAM,MAAM,cAAc;AACxB,iEAAiE;AAC/D;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AACH;;;GAGG;GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC3C,QAAQ,EAAE,eAAe,CAAC;CAC3B;AACH,sDAAsD;GACpD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC3C,KAAK,EAAE,eAAe,CAAC;CACxB,CAAC;AAEN,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,uEAAuE;IACvE,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAChD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CA8EzE;AAED,mEAAmE;AACnE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,sBAAsB,EAAE,GACtC,mBAAmB,CAQrB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC;AAOD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,OAAO,CAAC,OAAO,CAAC,EAAE,EACjC,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,gBAAiC,GACxC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,CAelC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,wBAAwB,GAAG,IAAI,GAAG,SAAS,GACxD,QAAQ,GAAG,aAAa,CAK1B"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { analyseWriteReply as e, decideWriteReply as t } from "./writeReplyBinder.js";
|
|
2
|
+
//#region src/shared/assistant/writeReplySend.ts
|
|
3
|
+
function n(n) {
|
|
4
|
+
let { text: r, origin: i } = n, a = n.hasAttachments ? {
|
|
5
|
+
cls: "other",
|
|
6
|
+
remainder: null
|
|
7
|
+
} : e(r, n.locale), o = a.cls === "decline_redirect" && a.remainder ? a.remainder : r, s = !n.hasAttachments && n.matchesLocalCommand(o), c = t({
|
|
8
|
+
cls: a.cls,
|
|
9
|
+
liveCount: n.live.count,
|
|
10
|
+
origin: i,
|
|
11
|
+
localUiMatch: s,
|
|
12
|
+
remainder: a.remainder,
|
|
13
|
+
execution: n.live.execution
|
|
14
|
+
});
|
|
15
|
+
switch (c.action) {
|
|
16
|
+
case "local_reply": return {
|
|
17
|
+
kind: "local_reply",
|
|
18
|
+
line: c.line,
|
|
19
|
+
values: c.values
|
|
20
|
+
};
|
|
21
|
+
case "normal": return {
|
|
22
|
+
kind: "send",
|
|
23
|
+
declineAll: null,
|
|
24
|
+
bound: {
|
|
25
|
+
writeReply: c.writeReply,
|
|
26
|
+
promptText: r,
|
|
27
|
+
localCommands: !0
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
case "local": {
|
|
31
|
+
let e = c.text.from === "remainder" ? c.text.value : r;
|
|
32
|
+
return c.declineAll === null ? {
|
|
33
|
+
kind: "send",
|
|
34
|
+
declineAll: null,
|
|
35
|
+
bound: {
|
|
36
|
+
writeReply: {
|
|
37
|
+
kind: "other",
|
|
38
|
+
origin: i
|
|
39
|
+
},
|
|
40
|
+
promptText: r,
|
|
41
|
+
localCommands: !0
|
|
42
|
+
}
|
|
43
|
+
} : {
|
|
44
|
+
kind: "local",
|
|
45
|
+
commandText: e,
|
|
46
|
+
declineAll: c.declineAll,
|
|
47
|
+
fallback: {
|
|
48
|
+
writeReply: {
|
|
49
|
+
kind: "decline",
|
|
50
|
+
origin: i
|
|
51
|
+
},
|
|
52
|
+
promptText: e,
|
|
53
|
+
localCommands: !1
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
case "forward": return {
|
|
58
|
+
kind: "send",
|
|
59
|
+
declineAll: c.declineAll,
|
|
60
|
+
bound: {
|
|
61
|
+
writeReply: c.writeReply,
|
|
62
|
+
promptText: c.text.from === "remainder" ? c.text.value : r,
|
|
63
|
+
localCommands: !1
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function r(e) {
|
|
69
|
+
let t = e.filter((e) => e.status === "pending");
|
|
70
|
+
return {
|
|
71
|
+
count: t.length,
|
|
72
|
+
execution: t.some((e) => e.offersConfirm) ? "enabled" : "fenced"
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
var i = 8e3, a = {
|
|
76
|
+
set: (e, t) => setTimeout(e, t),
|
|
77
|
+
clear: (e) => clearTimeout(e)
|
|
78
|
+
};
|
|
79
|
+
function o(e, t, n = a) {
|
|
80
|
+
return new Promise((r) => {
|
|
81
|
+
let i = !1, a = n.set(() => {
|
|
82
|
+
i || (i = !0, r("timed_out"));
|
|
83
|
+
}, t);
|
|
84
|
+
Promise.allSettled(e).then(() => {
|
|
85
|
+
i || (i = !0, n.clear(a), r("settled"));
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function s(e) {
|
|
90
|
+
return e?.proposals === !0 && e.writeApprovalMode === "proposal-v1" ? "proposal-v1" : "legacy";
|
|
91
|
+
}
|
|
92
|
+
//#endregion
|
|
93
|
+
export { i as WRITE_REPLY_DECLINE_WAIT_MS, n as planWriteReply, s as promptWriteApproval, o as settleWithin, r as writeReplyLiveState };
|
|
@@ -44,7 +44,13 @@ export interface GraphQLFetchOptions {
|
|
|
44
44
|
baseUrl?: string;
|
|
45
45
|
/** Additional headers to merge (overrides auto-detected values) */
|
|
46
46
|
extraHeaders?: Record<string, string>;
|
|
47
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* AbortSignal for cancellation. An aborted request is never sent: it is
|
|
49
|
+
* refused before a workspace token is minted, and dropped from the batching
|
|
50
|
+
* queue if it is still waiting there (BOFF-8094). React Query passes one to
|
|
51
|
+
* every `queryFn` and aborts it when the query key changes, so a request
|
|
52
|
+
* built for the previous workspace cannot leave after a workspace switch.
|
|
53
|
+
*/
|
|
48
54
|
signal?: AbortSignal;
|
|
49
55
|
/**
|
|
50
56
|
* Send with fetch `keepalive`, so the request outlives the page — for a
|
|
@@ -135,6 +141,11 @@ export declare function ensureWorkspaceToken(options: {
|
|
|
135
141
|
organizationId?: string;
|
|
136
142
|
projectId?: string;
|
|
137
143
|
locale?: string;
|
|
144
|
+
/**
|
|
145
|
+
* Stops THIS caller waiting (it gets `null`). The mint itself is shared by
|
|
146
|
+
* every caller asking for the same context, so one caller's abort never
|
|
147
|
+
* cancels it for the others (BOFF-8094).
|
|
148
|
+
*/
|
|
138
149
|
signal?: AbortSignal;
|
|
139
150
|
currentQuery: string;
|
|
140
151
|
}): Promise<string | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/shared/graphql/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAY,KAAK,OAAO,EAAsB,MAAM,WAAW,CAAC;AAuBvE,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/shared/graphql/fetch.ts"],"names":[],"mappings":"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"}
|