@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.
- package/dist/shared/assistant/api.d.ts +22 -0
- package/dist/shared/assistant/api.d.ts.map +1 -1
- package/dist/shared/assistant/api.js +112 -100
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +4 -1
- package/dist/shared/assistant/ui/useWriteProposals.d.ts +28 -2
- package/dist/shared/assistant/ui/useWriteProposals.d.ts.map +1 -1
- package/dist/shared/assistant/ui/useWriteProposals.js +124 -114
- package/dist/shared/assistant/writeProposalDiscovery.d.ts +66 -2
- package/dist/shared/assistant/writeProposalDiscovery.d.ts.map +1 -1
- package/dist/shared/assistant/writeProposalDiscovery.js +121 -85
- package/dist/shared-assistant.js +155 -155
- package/package.json +1 -1
|
@@ -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 {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
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
|
|
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
|
-
]),
|
|
20
|
-
function
|
|
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
|
|
32
|
+
function w(e) {
|
|
24
33
|
let t = /* @__PURE__ */ new Set();
|
|
25
|
-
for (let n of e.messages) for (let e of
|
|
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
|
|
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
|
|
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 = `${
|
|
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
|
|
52
|
-
let { getAccessToken:
|
|
53
|
-
tr:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
tr:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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 [
|
|
67
|
-
|
|
68
|
-
let 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 = { ...
|
|
81
|
+
let t = { ...N.current };
|
|
71
82
|
for (let n of e) {
|
|
72
83
|
let e = t[n.view.proposalId];
|
|
73
|
-
e &&
|
|
84
|
+
e && b.has(e.view.status) && !b.has(n.view.status) || (t[n.view.proposalId] = n);
|
|
74
85
|
}
|
|
75
|
-
|
|
76
|
-
},
|
|
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 =
|
|
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
|
|
82
|
-
|
|
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
|
-
},
|
|
88
|
-
client:
|
|
89
|
-
getWorkspaceId:
|
|
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
|
-
|
|
99
|
-
|
|
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
|
-
}))),
|
|
110
|
+
}))), i(e, t.proposals, r.turnMessageId);
|
|
104
111
|
},
|
|
105
112
|
onView: (e, t) => {
|
|
106
|
-
|
|
113
|
+
n([{
|
|
107
114
|
view: t,
|
|
108
|
-
serverNow:
|
|
115
|
+
serverNow: P.current.get(x(e)) ?? N.current[t.proposalId]?.serverNow ?? NaN,
|
|
109
116
|
session: e
|
|
110
117
|
}]);
|
|
111
118
|
},
|
|
112
|
-
onError: (e,
|
|
113
|
-
let a = n
|
|
119
|
+
onError: (e, n, i) => {
|
|
120
|
+
let a = r(n, i), { tr: o } = A.current;
|
|
114
121
|
t.getState().addMessage(e.conversationId, {
|
|
115
|
-
id:
|
|
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
|
-
|
|
123
|
-
|
|
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
|
-
|
|
127
|
-
let n =
|
|
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 =
|
|
130
|
-
for (let { session: e, proposalIds: a } of
|
|
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
|
-
},
|
|
135
|
-
return
|
|
136
|
-
|
|
137
|
-
}),
|
|
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(
|
|
140
|
-
r.length > 0 &&
|
|
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:
|
|
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
|
-
|
|
169
|
+
I.current?.discover(e, "turn", { turnMessageId: t });
|
|
147
170
|
},
|
|
148
|
-
openConversation: (
|
|
149
|
-
let
|
|
150
|
-
if (!
|
|
151
|
-
let
|
|
152
|
-
|
|
153
|
-
let
|
|
154
|
-
for (let
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
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 =
|
|
178
|
-
if (!r ||
|
|
179
|
-
let i =
|
|
180
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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) =>
|
|
208
|
+
entry: (e) => N.current[e],
|
|
199
209
|
liveFor: (t) => {
|
|
200
|
-
let n =
|
|
201
|
-
return
|
|
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:
|
|
214
|
+
offersConfirm: o(t.view, e(t.session.sandboxId)).offerConfirm
|
|
205
215
|
})) : []);
|
|
206
216
|
},
|
|
207
217
|
declineForReply: async (e, t, n) => {
|
|
208
|
-
let r =
|
|
218
|
+
let r = I.current;
|
|
209
219
|
if (!r) return;
|
|
210
220
|
let i = n;
|
|
211
|
-
await
|
|
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
|
-
|
|
224
|
+
U.current(Object.values(N.current).filter((t) => t.session.conversationId === e), t);
|
|
215
225
|
},
|
|
216
226
|
retireSandbox: (e) => {
|
|
217
|
-
let t =
|
|
218
|
-
!t || t.isRetired(e) || (
|
|
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:
|
|
226
|
-
retiredSandboxes:
|
|
235
|
+
entries: j,
|
|
236
|
+
retiredSandboxes: B
|
|
227
237
|
};
|
|
228
238
|
}
|
|
229
239
|
//#endregion
|
|
230
|
-
export {
|
|
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
|
-
/**
|
|
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":"AAAA
|
|
1
|
+
{"version":3,"file":"writeProposalDiscovery.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/writeProposalDiscovery.ts"],"names":[],"mappings":"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"}
|