@burdenoff/fe-libs 2026.929.1 → 2026.930.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.
@@ -1,31 +1,40 @@
1
1
  import { useAuthToken as e } from "../../providers/shell/AuthTokenProvider.js";
2
2
  import "../../../shared-providers-shell.js";
3
3
  import { useAssistantStore as t } from "../store.js";
4
- import { writeProposalErrorLine as n } from "../writeProposalErrorCopy.js";
5
- import { getOrganizationId as r, getWorkspaceId as i } from "../context.js";
6
- import { writeProposalConfirmState as a } from "./writeProposalPresentation.js";
7
- import { createSandboxWriteProposalClient as o } from "../writeProposals.js";
8
- import { createWriteProposalDiscovery as s, readWriteProposalRefs as c, writeProposalsEnabledFor as l } from "../writeProposalDiscovery.js";
9
- import { WRITE_REPLY_DECLINE_WAIT_MS as u, settleWithin as d, writeReplyLiveState as f } from "../writeReplySend.js";
10
- import { useEffect as p, useMemo as m, useRef as h, useState as g } from "react";
4
+ import { readSandboxWriteCapabilitiesOnce as n } from "../api.js";
5
+ import { writeProposalErrorLine as r } from "../writeProposalErrorCopy.js";
6
+ import { getOrganizationId as i, getWorkspaceId as a } from "../context.js";
7
+ import { writeProposalConfirmState as o } from "./writeProposalPresentation.js";
8
+ import { WRITE_PROPOSAL_SANDBOX_MODE as s, createSandboxWriteProposalClient as c } from "../writeProposals.js";
9
+ import { createWriteProposalDiscovery as l, readWriteProposalRefs as u, writeProposalSessionsToReopen as d, writeProposalsEnabledFor as f } from "../writeProposalDiscovery.js";
10
+ import { WRITE_REPLY_DECLINE_WAIT_MS as p, settleWithin as m, writeReplyLiveState as h } from "../writeReplySend.js";
11
+ import { useEffect as g, useMemo as _, useRef as v, useState as y } from "react";
11
12
  //#region src/shared/assistant/ui/useWriteProposals.ts
12
- var _ = new Set([
13
+ var b = new Set([
13
14
  "succeeded",
14
15
  "failed",
15
16
  "outcome_unknown",
16
17
  "declined",
17
18
  "superseded",
18
19
  "expired"
19
- ]), v = (e) => `${e.sandboxId}\u0000${e.sessionId}`;
20
- function y() {
20
+ ]), x = (e) => `${e.sandboxId}\u0000${e.sessionId}`;
21
+ function S(e) {
22
+ return {
23
+ accessToken: e.getAccessToken(),
24
+ workspaceToken: e.getWorkspaceToken(),
25
+ userId: e.userId,
26
+ organizationId: i()
27
+ };
28
+ }
29
+ function C() {
21
30
  return `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
22
31
  }
23
- function b(e) {
32
+ function w(e) {
24
33
  let t = /* @__PURE__ */ new Set();
25
- for (let n of e.messages) for (let e of c(n.metadata)) t.add(e.proposalId);
34
+ for (let n of e.messages) for (let e of u(n.metadata)) t.add(e.proposalId);
26
35
  return t;
27
36
  }
28
- function x(e, t, n) {
37
+ function T(e, t, n) {
29
38
  if (n) {
30
39
  let t = e.messages.find((e) => e.id === n);
31
40
  if (t?.role === "assistant") return t;
@@ -36,11 +45,11 @@ function x(e, t, n) {
36
45
  }
37
46
  return null;
38
47
  }
39
- function S(e) {
48
+ function E(e) {
40
49
  let t = /* @__PURE__ */ new Map();
41
50
  for (let n of e) {
42
51
  if (n.view.status !== "pending") continue;
43
- let e = `${v(n.session)}\u0000${n.session.conversationId}`, r = t.get(e) ?? {
52
+ let e = `${x(n.session)}\u0000${n.session.conversationId}`, r = t.get(e) ?? {
44
53
  session: n.session,
45
54
  proposalIds: []
46
55
  };
@@ -48,183 +57,184 @@ function S(e) {
48
57
  }
49
58
  return t;
50
59
  }
51
- function C(C) {
52
- let { getAccessToken: w, getWorkspaceToken: T, userId: E } = e(), D = h({
53
- tr: C.tr,
54
- getAccessToken: w,
55
- getWorkspaceToken: T,
56
- userId: E
60
+ function D(i) {
61
+ let { getAccessToken: D, getWorkspaceToken: O, userId: k } = e(), A = v({
62
+ tr: i.tr,
63
+ productWriteApproval: i.productWriteApproval ?? "legacy",
64
+ getAccessToken: D,
65
+ getWorkspaceToken: O,
66
+ userId: k
57
67
  });
58
- p(() => {
59
- D.current = {
60
- tr: C.tr,
61
- getAccessToken: w,
62
- getWorkspaceToken: T,
63
- userId: E
68
+ g(() => {
69
+ A.current = {
70
+ tr: i.tr,
71
+ productWriteApproval: i.productWriteApproval ?? "legacy",
72
+ getAccessToken: D,
73
+ getWorkspaceToken: O,
74
+ userId: k
64
75
  };
65
76
  });
66
- let [O, k] = g({}), A = h({}), j = h(/* @__PURE__ */ new Map()), M = h(/* @__PURE__ */ new Set()), N = h(null), P = h(/* @__PURE__ */ new Set()), [F, I] = g(() => /* @__PURE__ */ new Set());
67
- p(() => {
68
- let e = M.current, a = (e) => {
77
+ let [j, M] = y({}), N = v({}), P = v(/* @__PURE__ */ new Map()), F = v(/* @__PURE__ */ new Set()), I = v(null), L = v(/* @__PURE__ */ new Set()), R = v(/* @__PURE__ */ new Map()), z = v(/* @__PURE__ */ new Set()), [B, V] = y(() => /* @__PURE__ */ new Set());
78
+ g(() => {
79
+ let e = F.current, n = (e) => {
69
80
  if (e.length === 0) return;
70
- let t = { ...A.current };
81
+ let t = { ...N.current };
71
82
  for (let n of e) {
72
83
  let e = t[n.view.proposalId];
73
- e && _.has(e.view.status) && !_.has(n.view.status) || (t[n.view.proposalId] = n);
84
+ e && b.has(e.view.status) && !b.has(n.view.status) || (t[n.view.proposalId] = n);
74
85
  }
75
- A.current = t, k(t);
76
- }, l = (e, n, r) => {
86
+ N.current = t, M(t);
87
+ }, i = (e, n, r) => {
77
88
  let i = t.getState(), a = i.conversations.find((t) => t.id === e.conversationId);
78
89
  if (!a) return;
79
- let o = b(a), s = n.filter((e) => !o.has(e.proposalId) && (e.status === "pending" || e.status === "executing"));
90
+ let o = w(a), s = n.filter((e) => !o.has(e.proposalId) && (e.status === "pending" || e.status === "executing"));
80
91
  if (s.length === 0) return;
81
- let l = x(a, e, r);
82
- l && i.mergeMessageMetadata(a.id, l.id, { writeProposalRefs: [...c(l.metadata), ...s.map((t) => ({
92
+ let c = T(a, e, r);
93
+ c && i.mergeMessageMetadata(a.id, c.id, { writeProposalRefs: [...u(c.metadata), ...s.map((t) => ({
83
94
  proposalId: t.proposalId,
84
95
  sandboxId: e.sandboxId,
85
96
  sessionId: e.sessionId
86
97
  }))] });
87
- }, u = s({
88
- client: o({
89
- getWorkspaceId: i,
90
- getAuthContext: () => ({
91
- accessToken: D.current.getAccessToken(),
92
- workspaceToken: D.current.getWorkspaceToken(),
93
- userId: D.current.userId,
94
- organizationId: r()
95
- })
98
+ }, o = l({
99
+ client: c({
100
+ getWorkspaceId: a,
101
+ getAuthContext: () => S(A.current)
96
102
  }),
97
103
  capabilitiesOf: (e) => t.getState().sandboxWriteCapabilities[e],
98
- onList: (e, t, n) => {
99
- j.current.set(v(e), t.serverNow), a(t.proposals.map((n) => ({
104
+ actorOf: () => A.current.userId,
105
+ onList: (e, t, r) => {
106
+ P.current.set(x(e), t.serverNow), n(t.proposals.map((n) => ({
100
107
  view: n,
101
108
  serverNow: t.serverNow,
102
109
  session: e
103
- }))), l(e, t.proposals, n.turnMessageId);
110
+ }))), i(e, t.proposals, r.turnMessageId);
104
111
  },
105
112
  onView: (e, t) => {
106
- a([{
113
+ n([{
107
114
  view: t,
108
- serverNow: j.current.get(v(e)) ?? A.current[t.proposalId]?.serverNow ?? NaN,
115
+ serverNow: P.current.get(x(e)) ?? N.current[t.proposalId]?.serverNow ?? NaN,
109
116
  session: e
110
117
  }]);
111
118
  },
112
- onError: (e, r, i) => {
113
- let a = n(r, i), { tr: o } = D.current;
119
+ onError: (e, n, i) => {
120
+ let a = r(n, i), { tr: o } = A.current;
114
121
  t.getState().addMessage(e.conversationId, {
115
- id: y(),
122
+ id: C(),
116
123
  role: "system",
117
124
  content: o(a.key, a.fallback),
118
125
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
119
126
  });
120
127
  }
121
128
  });
122
- return N.current = u, () => {
123
- u.dispose(), N.current === u && (N.current = null), e.clear();
129
+ I.current = o;
130
+ let s = R.current;
131
+ return () => {
132
+ o.dispose(), I.current === o && (I.current = null), e.clear(), s.clear();
124
133
  };
125
- }, []);
126
- let L = (e, t) => {
127
- let n = N.current;
134
+ }, []), g(() => t.subscribe((e, t) => {
135
+ if (e.sandboxWriteCapabilities === t.sandboxWriteCapabilities) return;
136
+ let n = R.current;
137
+ for (let [t, r] of [...n]) {
138
+ let i = e.sandboxWriteCapabilities[r.sandboxId];
139
+ i && (n.delete(t), f(i) && (F.current.add(x(r)), I.current?.discover(r, "open")));
140
+ }
141
+ }), []);
142
+ let H = (e, t) => {
143
+ let n = I.current;
128
144
  if (!n) return;
129
- let r = P.current, i = e.filter((e) => !r.has(e.view.proposalId));
130
- for (let { session: e, proposalIds: a } of S(i).values()) {
145
+ let r = L.current, i = e.filter((e) => !r.has(e.view.proposalId));
146
+ for (let { session: e, proposalIds: a } of E(i).values()) {
131
147
  for (let e of a) r.add(e);
132
148
  n.declineAll(e, t, "system");
133
149
  }
134
- }, R = h(L);
135
- return p(() => {
136
- R.current = L;
137
- }), p(() => t.subscribe((e, t) => {
150
+ }, U = v(H);
151
+ return g(() => {
152
+ U.current = H;
153
+ }), g(() => t.subscribe((e, t) => {
138
154
  if (e.conversations === t.conversations) return;
139
- let n = new Set(e.conversations.map((e) => e.id)), r = Object.values(A.current).filter((e) => !n.has(e.session.conversationId));
140
- r.length > 0 && R.current(r, "conversation_closed");
155
+ let n = new Set(e.conversations.map((e) => e.id)), r = Object.values(N.current).filter((e) => !n.has(e.session.conversationId));
156
+ r.length > 0 && U.current(r, "conversation_closed");
141
157
  }), []), {
142
- panel: m(() => {
143
- let e = (e) => t.getState().sandboxWriteCapabilities[e];
158
+ panel: _(() => {
159
+ let e = (e) => t.getState().sandboxWriteCapabilities[e], r = (e) => {
160
+ let t = A.current;
161
+ if (t.productWriteApproval !== "proposal-v1") return;
162
+ let r = z.current;
163
+ if (r.has(e)) return;
164
+ let i = a();
165
+ i && (r.add(e), n(e, i, s, S(t)).finally(() => r.delete(e)));
166
+ };
144
167
  return {
145
168
  afterTurn: (e, t) => {
146
- N.current?.discover(e, "turn", { turnMessageId: t });
169
+ I.current?.discover(e, "turn", { turnMessageId: t });
147
170
  },
148
- openConversation: (e) => {
149
- let n = N.current;
150
- if (!n) return;
151
- let r = t.getState().conversations.find((t) => t.id === e);
152
- if (!r) return;
153
- let i = /* @__PURE__ */ new Map();
154
- for (let t of r.messages) for (let n of c(t.metadata)) i.set(v(n), {
155
- sandboxId: n.sandboxId,
156
- sessionId: n.sessionId,
157
- conversationId: e
158
- });
159
- let a = r.backendSessionId;
160
- if (a) for (let t = r.messages.length - 1; t >= 0; --t) {
161
- let n = r.messages[t]?.metadata;
162
- if (n?.sessionId === a && n.sandboxId) {
163
- i.set(v({
164
- sandboxId: n.sandboxId,
165
- sessionId: a
166
- }), {
167
- sandboxId: n.sandboxId,
168
- sessionId: a,
169
- conversationId: e
170
- });
171
- break;
171
+ openConversation: (n) => {
172
+ let i = I.current;
173
+ if (!i) return;
174
+ let a = R.current;
175
+ for (let [e, t] of [...a]) t.conversationId !== n && a.delete(e);
176
+ let o = t.getState().conversations.find((e) => e.id === n);
177
+ if (o) for (let { session: t, issuing: n } of d(o)) {
178
+ let o = e(t.sandboxId);
179
+ if (f(o)) {
180
+ i.discover(t, "open");
181
+ continue;
172
182
  }
183
+ o || (a.set(`${x(t)}\u0000${t.conversationId}`, t), n && r(t.sandboxId));
173
184
  }
174
- for (let e of i.values()) n.discover(e, "open");
175
185
  },
176
186
  ensureKnown: (t, n) => {
177
- let r = N.current;
178
- if (!r || A.current[t.proposalId] || !l(e(t.sandboxId))) return;
179
- let i = v(t);
180
- M.current.has(i) || (M.current.add(i), r.discover({
187
+ let r = I.current;
188
+ if (!r || N.current[t.proposalId] || !f(e(t.sandboxId))) return;
189
+ let i = x(t);
190
+ F.current.has(i) || (F.current.add(i), r.discover({
181
191
  sandboxId: t.sandboxId,
182
192
  sessionId: t.sessionId,
183
193
  conversationId: n
184
194
  }, "mount"));
185
195
  },
186
196
  approve: async (e, t) => {
187
- let n = A.current[e.proposalId], r = N.current;
197
+ let n = N.current[e.proposalId], r = I.current;
188
198
  !n || !r || await r.approve(n.session, e, t);
189
199
  },
190
200
  decline: async (e, t, n) => {
191
- let r = A.current[e.proposalId], i = N.current;
201
+ let r = N.current[e.proposalId], i = I.current;
192
202
  !r || !i || await i.decline(r.session, e, t, "button", n);
193
203
  },
194
204
  presented: async (e, t) => {
195
- let n = A.current[e.proposalId], r = N.current;
205
+ let n = N.current[e.proposalId], r = I.current;
196
206
  !n || !r || await r.presented(n.session, e, t);
197
207
  },
198
- entry: (e) => A.current[e],
208
+ entry: (e) => N.current[e],
199
209
  liveFor: (t) => {
200
- let n = N.current;
201
- return f(t ? Object.values(A.current).filter((e) => e.session.conversationId === t && !n?.isRetired(e.session.sandboxId)).map((t) => ({
210
+ let n = I.current;
211
+ return h(t ? Object.values(N.current).filter((e) => e.session.conversationId === t && !n?.isRetired(e.session.sandboxId)).map((t) => ({
202
212
  status: t.view.status,
203
213
  sandboxId: t.session.sandboxId,
204
- offersConfirm: a(t.view, e(t.session.sandboxId)).offerConfirm
214
+ offersConfirm: o(t.view, e(t.session.sandboxId)).offerConfirm
205
215
  })) : []);
206
216
  },
207
217
  declineForReply: async (e, t, n) => {
208
- let r = N.current;
218
+ let r = I.current;
209
219
  if (!r) return;
210
220
  let i = n;
211
- await d([...S(Object.values(A.current).filter((t) => t.session.conversationId === e && !r.isRetired(t.session.sandboxId))).values()].map(({ session: e }) => r.declineAll(e, t, i, { report: !0 })), u);
221
+ await m([...E(Object.values(N.current).filter((t) => t.session.conversationId === e && !r.isRetired(t.session.sandboxId))).values()].map(({ session: e }) => r.declineAll(e, t, i, { report: !0 })), p);
212
222
  },
213
223
  withdraw: (e, t) => {
214
- R.current(Object.values(A.current).filter((t) => t.session.conversationId === e), t);
224
+ U.current(Object.values(N.current).filter((t) => t.session.conversationId === e), t);
215
225
  },
216
226
  retireSandbox: (e) => {
217
- let t = N.current;
218
- !t || t.isRetired(e) || (R.current(Object.values(A.current).filter((t) => t.session.sandboxId === e), "sandbox_replaced"), t.retire(e), I((t) => {
227
+ let t = I.current;
228
+ !t || t.isRetired(e) || (U.current(Object.values(N.current).filter((t) => t.session.sandboxId === e), "sandbox_replaced"), t.retire(e), V((t) => {
219
229
  let n = new Set(t);
220
230
  return n.add(e), n;
221
231
  }));
222
232
  }
223
233
  };
224
234
  }, []),
225
- entries: O,
226
- retiredSandboxes: F
235
+ entries: j,
236
+ retiredSandboxes: B
227
237
  };
228
238
  }
229
239
  //#endregion
230
- export { C as useWriteProposals };
240
+ export { D as useWriteProposals };
@@ -23,10 +23,62 @@ export interface WriteProposalSession {
23
23
  sessionId: string;
24
24
  conversationId: string;
25
25
  }
26
+ /**
27
+ * Whether a listed record may be drawn for `session` (BOFF-8128).
28
+ *
29
+ * The sandbox answers a session's list with the records bound to that session
30
+ * and to the actor asking, plus the ones its helper printed there that it
31
+ * could not bind yet. This is the panel's own check on the answer: a record
32
+ * bound to ANOTHER session or ANOTHER conversation is never this one's, so it
33
+ * is not drawn here and nothing is decided on it from here. A record not bound
34
+ * yet (`null`) is kept: its view says `approvable: false`, so its card offers
35
+ * no confirm.
36
+ */
37
+ export declare function writeProposalBelongsTo(view: Pick<WriteProposalView, "sessionId" | "conversationId">, session: Pick<WriteProposalSession, "sessionId" | "conversationId">): boolean;
38
+ /** A session a reopened conversation may hold proposals in. */
39
+ export interface WriteProposalReopenTarget {
40
+ session: WriteProposalSession;
41
+ /**
42
+ * The session ran in a Take-action sandbox, the only kind that issues
43
+ * proposals (`WRITE_PROPOSAL_SANDBOX_MODE`): a reference names it, or the
44
+ * reply that ran there says so. Only such a sandbox's `/health` is read
45
+ * when this page has not read it yet (after a reload).
46
+ */
47
+ issuing: boolean;
48
+ }
49
+ /** What `writeProposalSessionsToReopen` reads of a message. */
50
+ interface ReopenMessage {
51
+ metadata?: {
52
+ readonly sandboxId?: unknown;
53
+ readonly sessionId?: unknown;
54
+ readonly mode?: unknown;
55
+ readonly writeProposalRefs?: unknown;
56
+ } | null;
57
+ }
58
+ /**
59
+ * The sessions to read when a conversation is opened, each once:
60
+ * - every session its replies' references name (this device's own record of
61
+ * the proposals the thread showed);
62
+ * - the session the conversation is in now (`backendSessionId`), in the
63
+ * sandbox its newest reply there ran in: a proposal whose turn could not be
64
+ * read at the time is found here.
65
+ *
66
+ * ★ Nothing else. A conversation read back from server history has no
67
+ * references (they never leave the device) and no current session, so it has
68
+ * nothing to read: a proposal lives in the sandbox that issued it, and only
69
+ * this device's own thread points at it.
70
+ */
71
+ export declare function writeProposalSessionsToReopen(conversation: {
72
+ id: string;
73
+ backendSessionId?: string | null;
74
+ messages: readonly ReopenMessage[];
75
+ }): WriteProposalReopenTarget[];
26
76
  /**
27
77
  * Why the panel asked:
28
78
  * - `turn`: a turn in this session just settled;
29
- * - `open`: a conversation was opened;
79
+ * - `open`: a conversation was opened, or (BOFF-8128) the `/health` of a
80
+ * sandbox it was waiting on arrived — after a reload, nothing may be asked
81
+ * before it;
30
82
  * - `mount`: a card mounted whose record this panel does not hold;
31
83
  * - `poll`: a proposal of the session is executing;
32
84
  * - `refresh`: after a press, so the card shows the record.
@@ -47,7 +99,10 @@ export interface WriteProposalDiscoveryDeps {
47
99
  client: WriteProposalClient;
48
100
  /** The ISSUING sandbox's `/health` write capabilities, read live. */
49
101
  capabilitiesOf: (sandboxId: string) => SandboxWriteCapabilities | null | undefined;
50
- /** A list arrived for `session`. */
102
+ /**
103
+ * A list arrived for `session`: only the records that belong to it
104
+ * (`writeProposalBelongsTo`).
105
+ */
51
106
  onList: (session: WriteProposalSession, list: WriteProposalList, context: WriteProposalListContext) => void;
52
107
  /** One proposal as the sandbox now reports it. */
53
108
  onView: (session: WriteProposalSession, view: WriteProposalView) => void;
@@ -60,6 +115,14 @@ export interface WriteProposalDiscoveryDeps {
60
115
  maxPollFailures?: number;
61
116
  /** A `clientRequestId` for each call. */
62
117
  requestId?: () => string;
118
+ /**
119
+ * Who is signed in now (BOFF-8128). Read when a list is asked for and again
120
+ * when it answers: an answer read for a person who is no longer the one
121
+ * signed in (someone else, or no one) is dropped, unseen. Absent, or no one
122
+ * known when it was asked: the answer is kept — the gateway identified the
123
+ * caller from the credentials the request carried.
124
+ */
125
+ actorOf?: () => string | null | undefined;
63
126
  }
64
127
  export interface WriteProposalDiscovery {
65
128
  /** Ask the issuing sandbox what the session holds. */
@@ -120,4 +183,5 @@ export declare function newWriteProposalRequestId(): string;
120
183
  /** Any thrown value, as a proposal error (a plain `Error` is `UNKNOWN`). */
121
184
  export declare function asWriteProposalError(error: unknown): WriteProposalError;
122
185
  export declare function createWriteProposalDiscovery(deps: WriteProposalDiscoveryDeps): WriteProposalDiscovery;
186
+ export {};
123
187
  //# sourceMappingURL=writeProposalDiscovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writeProposalDiscovery.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/writeProposalDiscovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writeProposalDiscovery.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/writeProposalDiscovery.ts"],"names":[],"mappings":"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"}