@burdenoff/fe-libs 2026.1001.4 → 2026.1001.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 +12 -0
- package/dist/shared/assistant/api.d.ts.map +1 -1
- package/dist/shared/assistant/api.js +159 -154
- package/dist/shared/assistant/createSandboxAssistantTransport.d.ts.map +1 -1
- package/dist/shared/assistant/createSandboxAssistantTransport.js +4 -1
- package/dist/shared/assistant/index.d.ts +2 -0
- package/dist/shared/assistant/index.d.ts.map +1 -1
- package/dist/shared/assistant/permissionError.d.ts +15 -2
- package/dist/shared/assistant/permissionError.d.ts.map +1 -1
- package/dist/shared/assistant/permissionError.js +24 -14
- package/dist/shared/assistant/preview/AssistantPreviewOverlay.js +4 -4
- package/dist/shared/assistant/preview/types.d.ts +13 -0
- package/dist/shared/assistant/preview/types.d.ts.map +1 -1
- package/dist/shared/assistant/preview/useAssistantPreviewBridge.d.ts +21 -1
- package/dist/shared/assistant/preview/useAssistantPreviewBridge.d.ts.map +1 -1
- package/dist/shared/assistant/preview/useAssistantPreviewBridge.js +1 -1
- package/dist/shared/assistant/preview/writeActionResults.d.ts +10 -0
- package/dist/shared/assistant/preview/writeActionResults.d.ts.map +1 -0
- package/dist/shared/assistant/preview/writeActionResults.js +26 -0
- package/dist/shared/assistant/progress.d.ts +9 -1
- package/dist/shared/assistant/progress.d.ts.map +1 -1
- package/dist/shared/assistant/progress.js +49 -46
- package/dist/shared/assistant/quota.d.ts +18 -2
- package/dist/shared/assistant/quota.d.ts.map +1 -1
- package/dist/shared/assistant/quota.js +46 -42
- package/dist/shared/assistant/sandboxProxyError.d.ts +91 -0
- package/dist/shared/assistant/sandboxProxyError.d.ts.map +1 -0
- package/dist/shared/assistant/sandboxProxyError.js +43 -0
- package/dist/shared/assistant/transportErrors.d.ts +14 -1
- package/dist/shared/assistant/transportErrors.d.ts.map +1 -1
- package/dist/shared/assistant/transportErrors.js +20 -14
- package/dist/shared/assistant/turnOutcome.d.ts +27 -3
- package/dist/shared/assistant/turnOutcome.d.ts.map +1 -1
- package/dist/shared/assistant/turnOutcome.js +82 -31
- package/dist/shared/assistant/turnOutcomeCopy.d.ts +24 -0
- package/dist/shared/assistant/turnOutcomeCopy.d.ts.map +1 -1
- package/dist/shared/assistant/turnOutcomeCopy.js +24 -0
- package/dist/shared/assistant/ui/AIAssistantPanel.js +14 -14
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +3 -2
- package/dist/shared/assistant/ui/AssistantHeader.js +4 -4
- package/dist/shared/assistant/ui/useWriteProposals.d.ts.map +1 -1
- package/dist/shared/assistant/ui/useWriteProposals.js +126 -99
- package/dist/shared-assistant.js +181 -179
- package/package.json +1 -1
|
@@ -16,6 +16,22 @@ var e = {
|
|
|
16
16
|
key: "outcome.usageNotRecorded",
|
|
17
17
|
fallback: "We couldn't record usage for your last reply, so the assistant is paused for a moment. Try again shortly."
|
|
18
18
|
},
|
|
19
|
+
usageDailyLimitReached: {
|
|
20
|
+
key: "outcome.usageDailyLimitReached",
|
|
21
|
+
fallback: "You've reached your daily AI assistant limit. It resets at {{time}}."
|
|
22
|
+
},
|
|
23
|
+
usageDailyLimitReachedWorkspace: {
|
|
24
|
+
key: "outcome.usageDailyLimitReachedWorkspace",
|
|
25
|
+
fallback: "This workspace has reached its daily AI assistant limit. It resets at {{time}}."
|
|
26
|
+
},
|
|
27
|
+
usageDailyLimitReachedPlatform: {
|
|
28
|
+
key: "outcome.usageDailyLimitReachedPlatform",
|
|
29
|
+
fallback: "The AI assistant has reached today's usage limit. It resets at {{time}}."
|
|
30
|
+
},
|
|
31
|
+
usageDailyLimitReachedNoTime: {
|
|
32
|
+
key: "outcome.usageDailyLimitReachedNoTime",
|
|
33
|
+
fallback: "You've reached today's AI assistant limit. Try again tomorrow."
|
|
34
|
+
},
|
|
19
35
|
permissionDenied: {
|
|
20
36
|
key: "outcome.permissionDenied",
|
|
21
37
|
fallback: "You do not have permission to do that in this workspace. Ask someone who administers it for access."
|
|
@@ -24,6 +40,10 @@ var e = {
|
|
|
24
40
|
key: "outcome.sessionUnverified",
|
|
25
41
|
fallback: "Your session could not be verified for this workspace. Reopen the page, then send again."
|
|
26
42
|
},
|
|
43
|
+
provisioningNotPermitted: {
|
|
44
|
+
key: "outcome.provisioningNotPermitted",
|
|
45
|
+
fallback: "The AI assistant isn't available for your role in this workspace yet."
|
|
46
|
+
},
|
|
27
47
|
modeWorkspaceAdminOnly: {
|
|
28
48
|
key: "outcome.modeWorkspaceAdminOnly",
|
|
29
49
|
fallback: "This assistant mode is only available to workspace admins. Switch to another mode and send again."
|
|
@@ -52,6 +72,10 @@ var e = {
|
|
|
52
72
|
key: "outcome.temporaryNotConfirmed",
|
|
53
73
|
fallback: "The assistant couldn't finish this just now, and no action was confirmed. It's a temporary problem on our side — not your plan or your access. Try again in a moment."
|
|
54
74
|
},
|
|
75
|
+
conversationTooLong: {
|
|
76
|
+
key: "outcome.conversationTooLong",
|
|
77
|
+
fallback: "This conversation is too long for the assistant. Start a new conversation to continue."
|
|
78
|
+
},
|
|
55
79
|
reference: {
|
|
56
80
|
key: "outcome.reference",
|
|
57
81
|
fallback: "Reference: {{id}}"
|
|
@@ -4,11 +4,11 @@ import { useAssistantTr as n } from "../i18n.js";
|
|
|
4
4
|
import { AssistantNavigateProvider as r } from "./AssistantMarkdownRenderer.js";
|
|
5
5
|
import { useAssistantStore as i } from "../store.js";
|
|
6
6
|
import { AssistantSpeechProvider as a } from "./AssistantSpeechProvider.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
7
|
+
import { AssistantPreviewProvider as o } from "../preview/context.js";
|
|
8
|
+
import { useAssistantPreviewBridge as s } from "../preview/useAssistantPreviewBridge.js";
|
|
9
|
+
import { AssistantConnectSourceProvider as c } from "./composer/connectSource.js";
|
|
10
|
+
import { ASSISTANT_OVERLAY_ATTR as l, ASSISTANT_PANEL_ATTR as u, activePanelOverlay as d, escapeDismisses as f, nextPanelOverlays as p } from "./panelOverlays.js";
|
|
11
|
+
import { hasAssistantPreviewSurface as m } from "../preview/types.js";
|
|
12
12
|
import { panelOwnedPreviewBridge as h, useHostedAssistantPreviewBridge as g } from "../preview/bridgeHostContext.js";
|
|
13
13
|
import { AssistantPreviewOverlay as _ } from "../preview/AssistantPreviewOverlay.js";
|
|
14
14
|
import { AssistantHeader as v } from "./AssistantHeader.js";
|
|
@@ -25,17 +25,17 @@ import { jsx as O, jsxs as k } from "react/jsx-runtime";
|
|
|
25
25
|
var A = ({ onClose: A, visible: j, docked: M, onToggleDock: N, writeAccess: ee, onNavigate: P, connectSourceHref: F, onConnectSource: I, preview: L, serverHistory: R = !1 }) => {
|
|
26
26
|
let z = n();
|
|
27
27
|
x(R);
|
|
28
|
-
let [B, V] = D(!1), H =
|
|
28
|
+
let [B, V] = D(!1), H = m(L);
|
|
29
29
|
B && !H && V(!1);
|
|
30
30
|
let U = B && H;
|
|
31
|
-
|
|
31
|
+
s(h(L, g()));
|
|
32
32
|
let W = E(null);
|
|
33
33
|
e(W);
|
|
34
|
-
let { conversations: G, activeConversationId: K, conversationListOpen: q, setConversationListOpen: J, createConversation: Y } = i(), X = q || U, Z =
|
|
34
|
+
let { conversations: G, activeConversationId: K, conversationListOpen: q, setConversationListOpen: J, createConversation: Y } = i(), X = q || U, Z = d({
|
|
35
35
|
historyOpen: q,
|
|
36
36
|
previewOpen: U
|
|
37
37
|
}), Q = (e) => {
|
|
38
|
-
let t =
|
|
38
|
+
let t = p({
|
|
39
39
|
historyOpen: q,
|
|
40
40
|
previewOpen: U
|
|
41
41
|
}, e);
|
|
@@ -46,7 +46,7 @@ var A = ({ onClose: A, visible: j, docked: M, onToggleDock: N, writeAccess: ee,
|
|
|
46
46
|
return w({
|
|
47
47
|
panelRef: W,
|
|
48
48
|
onClose: () => {
|
|
49
|
-
if (
|
|
49
|
+
if (f({
|
|
50
50
|
historyOpen: q,
|
|
51
51
|
previewOpen: U
|
|
52
52
|
}) === "overlay") {
|
|
@@ -57,11 +57,11 @@ var A = ({ onClose: A, visible: j, docked: M, onToggleDock: N, writeAccess: ee,
|
|
|
57
57
|
}
|
|
58
58
|
}), /* @__PURE__ */ O(a, {
|
|
59
59
|
visible: j ?? !0,
|
|
60
|
-
children: /* @__PURE__ */ O(
|
|
60
|
+
children: /* @__PURE__ */ O(o, {
|
|
61
61
|
value: L,
|
|
62
62
|
children: /* @__PURE__ */ O(r, {
|
|
63
63
|
value: P,
|
|
64
|
-
children: /* @__PURE__ */ O(
|
|
64
|
+
children: /* @__PURE__ */ O(c, {
|
|
65
65
|
value: F,
|
|
66
66
|
onOpen: I,
|
|
67
67
|
children: /* @__PURE__ */ O(b, { children: /* @__PURE__ */ k("div", {
|
|
@@ -70,8 +70,8 @@ var A = ({ onClose: A, visible: j, docked: M, onToggleDock: N, writeAccess: ee,
|
|
|
70
70
|
role: "complementary",
|
|
71
71
|
"aria-label": z("panel.ariaLabel", "AI Assistant"),
|
|
72
72
|
"data-testid": "ai-assistant-panel",
|
|
73
|
-
[
|
|
74
|
-
...Z ? { [
|
|
73
|
+
[u]: "",
|
|
74
|
+
...Z ? { [l]: Z } : {},
|
|
75
75
|
tabIndex: -1,
|
|
76
76
|
children: [
|
|
77
77
|
/* @__PURE__ */ O("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantChatArea.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantChatArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AA8Nf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AA8HvE;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"AssistantChatArea.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantChatArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AA8Nf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AA8HvE;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAm2JxD,CAAC"}
|
|
@@ -841,7 +841,8 @@ var Jn = ({ visible: Jn = !0, writeAccess: Yn = "unknown" }) => {
|
|
|
841
841
|
}
|
|
842
842
|
if (w = mt(await fe(i, S, c, v, C, {
|
|
843
843
|
limit: 50,
|
|
844
|
-
sinceMs: h
|
|
844
|
+
sinceMs: h,
|
|
845
|
+
surfaceTurnTerminal: !0
|
|
845
846
|
}), h, { accumulateNarration: se.accumulatesNarration }), hr(x, T, { content: ye(w.content) }), w.hasRenderableOutput ? Se || (Se = !0, xe !== null && k(T, "lastQuietPoll", xe), k(T, "firstOutput")) : xe = Et(), se.accumulatesNarration) w.hasText && k(T, "firstText");
|
|
846
847
|
else {
|
|
847
848
|
let e = vt(Ce, w, Et());
|
|
@@ -934,7 +935,7 @@ var Jn = ({ visible: Jn = !0, writeAccess: Yn = "unknown" }) => {
|
|
|
934
935
|
capabilities: t ? b.getState().sandboxWriteCapabilities[t] : null
|
|
935
936
|
}) });
|
|
936
937
|
O(T, { outcome: r.kind === "temporary" ? "failed" : "refused" }), r.offersUpgrade && Mn(I, "sandbox");
|
|
937
|
-
let i = Ce(r, F);
|
|
938
|
+
let i = Ce(r, F, { locale: V });
|
|
938
939
|
_r(x, "error", T, i.headline), hr(x, T, { content: i.text }), gr(x, T, {
|
|
939
940
|
lang: i.translated ? V : "en",
|
|
940
941
|
...E(n.voiceSessionId)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { useAssistantTr as e } from "../i18n.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { useAssistantPreview as t } from "../preview/context.js";
|
|
3
|
+
import { hasAssistantPreviewSurface as n } from "../preview/types.js";
|
|
4
4
|
import { AssistantMoreMenu as r } from "./AssistantMoreMenu.js";
|
|
5
5
|
import { Eye as i, History as a, PanelBottom as o, PanelRight as s, Plus as c, Sparkles as l, X as u } from "lucide-react";
|
|
6
6
|
import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
7
7
|
//#region src/shared/assistant/ui/AssistantHeader.tsx
|
|
8
8
|
var m = ({ contextLabel: m, onNewConversation: h, onOpenHistory: g, historyOpen: _, onTogglePreview: v, previewOpen: y, onClose: b, docked: x, onToggleDock: S }) => {
|
|
9
|
-
let C = e(), w =
|
|
9
|
+
let C = e(), w = t();
|
|
10
10
|
return /* @__PURE__ */ p("div", {
|
|
11
11
|
className: "flex items-center gap-2 border-b border-border-default bg-bg-elevated px-3 py-2.5",
|
|
12
12
|
children: [/* @__PURE__ */ p("div", {
|
|
@@ -47,7 +47,7 @@ var m = ({ contextLabel: m, onNewConversation: h, onOpenHistory: g, historyOpen:
|
|
|
47
47
|
"data-testid": "assistant-open-history",
|
|
48
48
|
children: /* @__PURE__ */ f(a, { className: "size-4" })
|
|
49
49
|
}),
|
|
50
|
-
|
|
50
|
+
n(w) && v && /* @__PURE__ */ f("button", {
|
|
51
51
|
type: "button",
|
|
52
52
|
onClick: v,
|
|
53
53
|
className: `rounded-lg p-1.5 transition-colors ${y ? "bg-action-primary-bg/15 text-action-primary-bg" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary"}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWriteProposals.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/useWriteProposals.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"useWriteProposals.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/useWriteProposals.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,21 +4,25 @@ import { useAssistantStore as t } from "../store.js";
|
|
|
4
4
|
import { readSandboxWriteCapabilitiesOnce as n } from "../api.js";
|
|
5
5
|
import { writeProposalErrorLine as r } from "../writeProposalErrorCopy.js";
|
|
6
6
|
import { getOrganizationId as i, getWorkspaceId as a } from "../context.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
7
|
+
import { redactWriteProposalText as o, writeProposalConfirmState as s, writeProposalSensitiveTexts as c } from "./writeProposalPresentation.js";
|
|
8
|
+
import { useAssistantPreview as l } from "../preview/context.js";
|
|
9
|
+
import { currentPreviewOwner as u, sameOwner as d } from "../preview/surfaceState.js";
|
|
10
|
+
import { deliverPreviewEvent as f } from "../preview/useAssistantPreviewBridge.js";
|
|
11
|
+
import { writeActionResultEvents as p } from "../preview/writeActionResults.js";
|
|
12
|
+
import { WRITE_PROPOSAL_SANDBOX_MODE as m, createSandboxWriteProposalClient as h } from "../writeProposals.js";
|
|
13
|
+
import { createWriteProposalDiscovery as g, readWriteProposalRefs as _, writeProposalSessionsToReopen as v, writeProposalsEnabledFor as y } from "../writeProposalDiscovery.js";
|
|
14
|
+
import { WRITE_REPLY_DECLINE_WAIT_MS as b, settleWithin as x, writeReplyLiveState as S } from "../writeReplySend.js";
|
|
15
|
+
import { useEffect as C, useMemo as w, useRef as T, useState as E } from "react";
|
|
12
16
|
//#region src/shared/assistant/ui/useWriteProposals.ts
|
|
13
|
-
var
|
|
17
|
+
var D = new Set([
|
|
14
18
|
"succeeded",
|
|
15
19
|
"failed",
|
|
16
20
|
"outcome_unknown",
|
|
17
21
|
"declined",
|
|
18
22
|
"superseded",
|
|
19
23
|
"expired"
|
|
20
|
-
]),
|
|
21
|
-
function
|
|
24
|
+
]), O = (e) => `${e.sandboxId}\u0000${e.sessionId}`;
|
|
25
|
+
function k(e) {
|
|
22
26
|
return {
|
|
23
27
|
accessToken: e.getAccessToken(),
|
|
24
28
|
workspaceToken: e.getWorkspaceToken(),
|
|
@@ -26,15 +30,15 @@ function S(e) {
|
|
|
26
30
|
organizationId: i()
|
|
27
31
|
};
|
|
28
32
|
}
|
|
29
|
-
function
|
|
33
|
+
function A() {
|
|
30
34
|
return `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
|
|
31
35
|
}
|
|
32
|
-
function
|
|
36
|
+
function j(e) {
|
|
33
37
|
let t = /* @__PURE__ */ new Set();
|
|
34
|
-
for (let n of e.messages) for (let e of
|
|
38
|
+
for (let n of e.messages) for (let e of _(n.metadata)) t.add(e.proposalId);
|
|
35
39
|
return t;
|
|
36
40
|
}
|
|
37
|
-
function
|
|
41
|
+
function M(e, t, n) {
|
|
38
42
|
if (n) {
|
|
39
43
|
let t = e.messages.find((e) => e.id === n);
|
|
40
44
|
if (t?.role === "assistant") return t;
|
|
@@ -45,11 +49,11 @@ function T(e, t, n) {
|
|
|
45
49
|
}
|
|
46
50
|
return null;
|
|
47
51
|
}
|
|
48
|
-
function
|
|
52
|
+
function N(e) {
|
|
49
53
|
let t = /* @__PURE__ */ new Map();
|
|
50
54
|
for (let n of e) {
|
|
51
55
|
if (n.view.status !== "pending") continue;
|
|
52
|
-
let e = `${
|
|
56
|
+
let e = `${O(n.session)}\u0000${n.session.conversationId}`, r = t.get(e) ?? {
|
|
53
57
|
session: n.session,
|
|
54
58
|
proposalIds: []
|
|
55
59
|
};
|
|
@@ -57,192 +61,215 @@ function E(e) {
|
|
|
57
61
|
}
|
|
58
62
|
return t;
|
|
59
63
|
}
|
|
60
|
-
function
|
|
61
|
-
let { getAccessToken:
|
|
64
|
+
function P(i) {
|
|
65
|
+
let { getAccessToken: P, getWorkspaceToken: F, userId: I } = e(), L = l(), R = T({
|
|
62
66
|
tr: i.tr,
|
|
63
67
|
productWriteApproval: i.productWriteApproval ?? "legacy",
|
|
64
|
-
getAccessToken:
|
|
65
|
-
getWorkspaceToken:
|
|
66
|
-
userId:
|
|
68
|
+
getAccessToken: P,
|
|
69
|
+
getWorkspaceToken: F,
|
|
70
|
+
userId: I,
|
|
71
|
+
preview: L
|
|
67
72
|
});
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
C(() => {
|
|
74
|
+
R.current = {
|
|
70
75
|
tr: i.tr,
|
|
71
76
|
productWriteApproval: i.productWriteApproval ?? "legacy",
|
|
72
|
-
getAccessToken:
|
|
73
|
-
getWorkspaceToken:
|
|
74
|
-
userId:
|
|
77
|
+
getAccessToken: P,
|
|
78
|
+
getWorkspaceToken: F,
|
|
79
|
+
userId: I,
|
|
80
|
+
preview: L
|
|
75
81
|
};
|
|
76
82
|
});
|
|
77
|
-
let [
|
|
78
|
-
|
|
79
|
-
let e =
|
|
83
|
+
let [z, B] = E({}), V = T({}), H = T(/* @__PURE__ */ new Map()), U = T(/* @__PURE__ */ new Map()), W = T(/* @__PURE__ */ new Set()), G = T(/* @__PURE__ */ new Map()), K = T(/* @__PURE__ */ new Set()), q = T(null), J = T(/* @__PURE__ */ new Set()), Y = T(/* @__PURE__ */ new Map()), X = T(/* @__PURE__ */ new Set()), [Z, ee] = E(() => /* @__PURE__ */ new Set());
|
|
84
|
+
C(() => {
|
|
85
|
+
let e = K.current, n = t.subscribe((e, t) => {
|
|
86
|
+
e.activeConversationId !== t.activeConversationId && W.current.clear();
|
|
87
|
+
}), i = (e) => {
|
|
80
88
|
if (e.length === 0) return;
|
|
81
|
-
let
|
|
82
|
-
for (let
|
|
83
|
-
let e =
|
|
84
|
-
e &&
|
|
89
|
+
let n = { ...V.current };
|
|
90
|
+
for (let r of [...e].sort((e, t) => e.view.createdAt - t.view.createdAt)) {
|
|
91
|
+
let e = n[r.view.proposalId];
|
|
92
|
+
if (!(e && D.has(e.view.status) && !D.has(r.view.status)) && (n[r.view.proposalId] = r, H.current.has(r.view.proposalId) || H.current.set(r.view.proposalId, U.current.get(`${O(r.session)}\u0000${r.session.conversationId}`) ?? u()), r.view.status === "succeeded" && !r.view.result?.errors?.length)) {
|
|
93
|
+
let n = H.current.get(r.view.proposalId);
|
|
94
|
+
if (!n || !d(n, u())) continue;
|
|
95
|
+
let i = t.getState(), a = i.conversations.find((e) => e.id === r.session.conversationId), s = a && (a.messages.find((e) => _(e.metadata).some((e) => e.proposalId === r.view.proposalId)) ?? M(a, r.session, null));
|
|
96
|
+
if (!s) continue;
|
|
97
|
+
if (i.activeConversationId === r.session.conversationId && R.current.preview?.onEvent) for (let e of p(r.view, r.session.conversationId, s.id, n)) W.current.has(e.action.id) || (W.current.add(e.action.id), f(R.current.preview, e));
|
|
98
|
+
if (!e || D.has(e.view.status)) continue;
|
|
99
|
+
i.addMessage(r.session.conversationId, {
|
|
100
|
+
id: A(),
|
|
101
|
+
role: "system",
|
|
102
|
+
content: R.current.tr("writeProposal.status.succeeded", "Done — {{summary}}", { summary: o(r.view.result?.summary || r.view.description.readbackPast, c(r.view)) }),
|
|
103
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
104
|
+
});
|
|
105
|
+
}
|
|
85
106
|
}
|
|
86
|
-
|
|
87
|
-
},
|
|
107
|
+
V.current = n, B(n);
|
|
108
|
+
}, s = (e, n, r) => {
|
|
88
109
|
let i = t.getState(), a = i.conversations.find((t) => t.id === e.conversationId);
|
|
89
110
|
if (!a) return;
|
|
90
|
-
let o =
|
|
111
|
+
let o = j(a), s = n.filter((e) => !o.has(e.proposalId) && (e.status === "pending" || e.status === "executing"));
|
|
91
112
|
if (s.length === 0) return;
|
|
92
|
-
let c =
|
|
93
|
-
c && i.mergeMessageMetadata(a.id, c.id, { writeProposalRefs: [...
|
|
113
|
+
let c = M(a, e, r);
|
|
114
|
+
c && i.mergeMessageMetadata(a.id, c.id, { writeProposalRefs: [..._(c.metadata), ...s.map((t) => ({
|
|
94
115
|
proposalId: t.proposalId,
|
|
95
116
|
sandboxId: e.sandboxId,
|
|
96
117
|
sessionId: e.sessionId
|
|
97
118
|
}))] });
|
|
98
|
-
},
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
119
|
+
}, l = h({
|
|
120
|
+
getWorkspaceId: a,
|
|
121
|
+
getAuthContext: () => k(R.current)
|
|
122
|
+
}), m = g({
|
|
123
|
+
client: {
|
|
124
|
+
...l,
|
|
125
|
+
list: (e, t) => {
|
|
126
|
+
let n = `${O(e)}\u0000${e.conversationId}`;
|
|
127
|
+
return U.current.has(n) || U.current.set(n, u()), l.list(e, t);
|
|
128
|
+
}
|
|
129
|
+
},
|
|
103
130
|
capabilitiesOf: (e) => t.getState().sandboxWriteCapabilities[e],
|
|
104
|
-
actorOf: () =>
|
|
105
|
-
onList: (e, t,
|
|
106
|
-
let
|
|
131
|
+
actorOf: () => R.current.userId,
|
|
132
|
+
onList: (e, t, n) => {
|
|
133
|
+
let r = {
|
|
107
134
|
serverNow: t.serverNow,
|
|
108
135
|
arrivedAt: Date.now()
|
|
109
136
|
};
|
|
110
|
-
|
|
137
|
+
G.current.set(O(e), r), i(t.proposals.map((t) => ({
|
|
111
138
|
view: t,
|
|
112
|
-
...
|
|
139
|
+
...r,
|
|
113
140
|
session: e
|
|
114
|
-
}))),
|
|
141
|
+
}))), s(e, t.proposals, n.turnMessageId);
|
|
115
142
|
},
|
|
116
143
|
onView: (e, t) => {
|
|
117
|
-
let
|
|
118
|
-
|
|
144
|
+
let n = V.current[t.proposalId];
|
|
145
|
+
i([{
|
|
119
146
|
view: t,
|
|
120
|
-
...
|
|
121
|
-
serverNow:
|
|
122
|
-
arrivedAt:
|
|
147
|
+
...G.current.get(O(e)) ?? {
|
|
148
|
+
serverNow: n?.serverNow ?? NaN,
|
|
149
|
+
arrivedAt: n?.arrivedAt ?? NaN
|
|
123
150
|
},
|
|
124
151
|
session: e
|
|
125
152
|
}]);
|
|
126
153
|
},
|
|
127
154
|
onError: (e, n, i) => {
|
|
128
|
-
let a = r(n, i), { tr: o } =
|
|
155
|
+
let a = r(n, i), { tr: o } = R.current;
|
|
129
156
|
t.getState().addMessage(e.conversationId, {
|
|
130
|
-
id:
|
|
157
|
+
id: A(),
|
|
131
158
|
role: "system",
|
|
132
159
|
content: o(a.key, a.fallback),
|
|
133
160
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
134
161
|
});
|
|
135
162
|
}
|
|
136
163
|
});
|
|
137
|
-
|
|
138
|
-
let
|
|
164
|
+
q.current = m;
|
|
165
|
+
let v = Y.current;
|
|
139
166
|
return () => {
|
|
140
|
-
|
|
167
|
+
m.dispose(), n(), q.current === m && (q.current = null), e.clear(), v.clear();
|
|
141
168
|
};
|
|
142
|
-
}, []),
|
|
169
|
+
}, []), C(() => t.subscribe((e, t) => {
|
|
143
170
|
if (e.sandboxWriteCapabilities === t.sandboxWriteCapabilities) return;
|
|
144
|
-
let n =
|
|
171
|
+
let n = Y.current;
|
|
145
172
|
for (let [t, r] of [...n]) {
|
|
146
173
|
let i = e.sandboxWriteCapabilities[r.sandboxId];
|
|
147
|
-
i && (n.delete(t),
|
|
174
|
+
i && (n.delete(t), y(i) && (K.current.add(O(r)), q.current?.discover(r, "open")));
|
|
148
175
|
}
|
|
149
176
|
}), []);
|
|
150
|
-
let
|
|
151
|
-
let n =
|
|
177
|
+
let Q = (e, t) => {
|
|
178
|
+
let n = q.current;
|
|
152
179
|
if (!n) return;
|
|
153
|
-
let r =
|
|
154
|
-
for (let { session: e, proposalIds: a } of
|
|
180
|
+
let r = J.current, i = e.filter((e) => !r.has(e.view.proposalId));
|
|
181
|
+
for (let { session: e, proposalIds: a } of N(i).values()) {
|
|
155
182
|
for (let e of a) r.add(e);
|
|
156
183
|
n.declineAll(e, t, "system");
|
|
157
184
|
}
|
|
158
|
-
},
|
|
159
|
-
return
|
|
160
|
-
|
|
161
|
-
}),
|
|
185
|
+
}, $ = T(Q);
|
|
186
|
+
return C(() => {
|
|
187
|
+
$.current = Q;
|
|
188
|
+
}), C(() => t.subscribe((e, t) => {
|
|
162
189
|
if (e.conversations === t.conversations) return;
|
|
163
|
-
let n = new Set(e.conversations.map((e) => e.id)), r = Object.values(
|
|
164
|
-
r.length > 0 &&
|
|
190
|
+
let n = new Set(e.conversations.map((e) => e.id)), r = Object.values(V.current).filter((e) => !n.has(e.session.conversationId));
|
|
191
|
+
r.length > 0 && $.current(r, "conversation_closed");
|
|
165
192
|
}), []), {
|
|
166
|
-
panel:
|
|
193
|
+
panel: w(() => {
|
|
167
194
|
let e = (e) => t.getState().sandboxWriteCapabilities[e], r = (e) => {
|
|
168
|
-
let t =
|
|
195
|
+
let t = R.current;
|
|
169
196
|
if (t.productWriteApproval !== "proposal-v1") return;
|
|
170
|
-
let r =
|
|
197
|
+
let r = X.current;
|
|
171
198
|
if (r.has(e)) return;
|
|
172
199
|
let i = a();
|
|
173
|
-
i && (r.add(e), n(e, i,
|
|
200
|
+
i && (r.add(e), n(e, i, m, k(t)).finally(() => r.delete(e)));
|
|
174
201
|
};
|
|
175
202
|
return {
|
|
176
203
|
afterTurn: (e, t) => {
|
|
177
|
-
|
|
204
|
+
q.current?.discover(e, "turn", { turnMessageId: t });
|
|
178
205
|
},
|
|
179
206
|
openConversation: (n) => {
|
|
180
|
-
let i =
|
|
207
|
+
let i = q.current;
|
|
181
208
|
if (!i) return;
|
|
182
|
-
let a =
|
|
209
|
+
let a = Y.current;
|
|
183
210
|
for (let [e, t] of [...a]) t.conversationId !== n && a.delete(e);
|
|
184
211
|
let o = t.getState().conversations.find((e) => e.id === n);
|
|
185
|
-
if (o) for (let { session: t, issuing: n } of
|
|
212
|
+
if (o) for (let { session: t, issuing: n } of v(o)) {
|
|
186
213
|
let o = e(t.sandboxId);
|
|
187
|
-
if (
|
|
214
|
+
if (y(o)) {
|
|
188
215
|
i.discover(t, "open");
|
|
189
216
|
continue;
|
|
190
217
|
}
|
|
191
|
-
o || (a.set(`${
|
|
218
|
+
o || (a.set(`${O(t)}\u0000${t.conversationId}`, t), n && r(t.sandboxId));
|
|
192
219
|
}
|
|
193
220
|
},
|
|
194
221
|
ensureKnown: (t, n) => {
|
|
195
|
-
let r =
|
|
196
|
-
if (!r ||
|
|
197
|
-
let i =
|
|
198
|
-
|
|
222
|
+
let r = q.current;
|
|
223
|
+
if (!r || V.current[t.proposalId] || !y(e(t.sandboxId))) return;
|
|
224
|
+
let i = O(t);
|
|
225
|
+
K.current.has(i) || (K.current.add(i), r.discover({
|
|
199
226
|
sandboxId: t.sandboxId,
|
|
200
227
|
sessionId: t.sessionId,
|
|
201
228
|
conversationId: n
|
|
202
229
|
}, "mount"));
|
|
203
230
|
},
|
|
204
231
|
approve: async (e, t) => {
|
|
205
|
-
let n =
|
|
232
|
+
let n = V.current[e.proposalId], r = q.current;
|
|
206
233
|
!n || !r || await r.approve(n.session, e, t);
|
|
207
234
|
},
|
|
208
235
|
decline: async (e, t, n) => {
|
|
209
|
-
let r =
|
|
236
|
+
let r = V.current[e.proposalId], i = q.current;
|
|
210
237
|
!r || !i || await i.decline(r.session, e, t, "button", n);
|
|
211
238
|
},
|
|
212
239
|
presented: async (e, t) => {
|
|
213
|
-
let n =
|
|
240
|
+
let n = V.current[e.proposalId], r = q.current;
|
|
214
241
|
!n || !r || await r.presented(n.session, e, t);
|
|
215
242
|
},
|
|
216
|
-
entry: (e) =>
|
|
243
|
+
entry: (e) => V.current[e],
|
|
217
244
|
liveFor: (t) => {
|
|
218
|
-
let n =
|
|
219
|
-
return
|
|
245
|
+
let n = q.current;
|
|
246
|
+
return S(t ? Object.values(V.current).filter((e) => e.session.conversationId === t && !n?.isRetired(e.session.sandboxId)).map((t) => ({
|
|
220
247
|
status: t.view.status,
|
|
221
248
|
sandboxId: t.session.sandboxId,
|
|
222
|
-
offersConfirm:
|
|
249
|
+
offersConfirm: s(t.view, e(t.session.sandboxId)).offerConfirm
|
|
223
250
|
})) : []);
|
|
224
251
|
},
|
|
225
252
|
declineForReply: async (e, t, n) => {
|
|
226
|
-
let r =
|
|
253
|
+
let r = q.current;
|
|
227
254
|
if (!r) return;
|
|
228
255
|
let i = n;
|
|
229
|
-
await
|
|
256
|
+
await x([...N(Object.values(V.current).filter((t) => t.session.conversationId === e && !r.isRetired(t.session.sandboxId))).values()].map(({ session: e }) => r.declineAll(e, t, i, { report: !0 })), b);
|
|
230
257
|
},
|
|
231
258
|
withdraw: (e, t) => {
|
|
232
|
-
|
|
259
|
+
$.current(Object.values(V.current).filter((t) => t.session.conversationId === e), t);
|
|
233
260
|
},
|
|
234
261
|
retireSandbox: (e) => {
|
|
235
|
-
let t =
|
|
236
|
-
!t || t.isRetired(e) || (
|
|
262
|
+
let t = q.current;
|
|
263
|
+
!t || t.isRetired(e) || ($.current(Object.values(V.current).filter((t) => t.session.sandboxId === e), "sandbox_replaced"), t.retire(e), ee((t) => {
|
|
237
264
|
let n = new Set(t);
|
|
238
265
|
return n.add(e), n;
|
|
239
266
|
}));
|
|
240
267
|
}
|
|
241
268
|
};
|
|
242
269
|
}, []),
|
|
243
|
-
entries:
|
|
244
|
-
retiredSandboxes:
|
|
270
|
+
entries: z,
|
|
271
|
+
retiredSandboxes: Z
|
|
245
272
|
};
|
|
246
273
|
}
|
|
247
274
|
//#endregion
|
|
248
|
-
export {
|
|
275
|
+
export { P as useWriteProposals };
|