@burdenoff/fe-libs 2026.928.3 → 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/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 +313 -28
- package/dist/shared/assistant/api.d.ts.map +1 -1
- package/dist/shared/assistant/api.js +351 -135
- 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 +992 -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 +128 -0
- package/dist/shared/assistant/ui/useWriteProposals.d.ts.map +1 -0
- package/dist/shared/assistant/ui/useWriteProposals.js +240 -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 +187 -0
- package/dist/shared/assistant/writeProposalDiscovery.d.ts.map +1 -0
- package/dist/shared/assistant/writeProposalDiscovery.js +246 -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-assistant.js +168 -153
- 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 +1 -1
|
@@ -33,11 +33,12 @@ export declare const ADMIN_MODE_ACCESS_WAIT_MS = 10000;
|
|
|
33
33
|
* A gate is read LIVE through a ref, so it does not keep a "yes" that a later
|
|
34
34
|
* render has already replaced, the way a value captured by `useCallback` would.
|
|
35
35
|
*
|
|
36
|
-
* ★
|
|
37
|
-
*
|
|
38
|
-
* for
|
|
39
|
-
*
|
|
40
|
-
*
|
|
36
|
+
* ★ Workspace switches are the HOOK's job, not this gate's. The gate only ever
|
|
37
|
+
* knows what the check last told it. `useAssistantApiAccess` reports `loading`
|
|
38
|
+
* for any render whose workspace or user its answer is not about (BOFF-7803,
|
|
39
|
+
* OD-2), so the values fed in here — and the mode list — never carry another
|
|
40
|
+
* workspace's yes. The gate still learns them in an effect, one commit after
|
|
41
|
+
* that render.
|
|
41
42
|
*/
|
|
42
43
|
export interface AdminModeAccessGate {
|
|
43
44
|
/** The latest answer, for the final synchronous validation after a wait. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adminModeSendGate.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/adminModeSendGate.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,yBAAyB,EAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"adminModeSendGate.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/adminModeSendGate.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,yBAAyB,EAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,mBAAmB;IAClC,4EAA4E;IAC5E,IAAI,IAAI,eAAe,CAAC;IACxB,iFAAiF;IACjF,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IACtC;;;OAGG;IACH,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACnD;;;;;;;;;;;;;OAaG;IACH,OAAO,IAAI,IAAI,CAAC;IAChB,gFAAgF;IAChF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAOD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,eAAe,GACvB,mBAAmB,CAwDrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mCAAmC,CACvD,MAAM,EAAE;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,EAC/D,IAAI,EAAE,mBAAmB,EACzB,SAAS,GAAE,MAAkC,GAC5C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mCAAmC,CACvD,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,MAAM;IAAE,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,EACnE,IAAI,EAAE,mBAAmB,EACzB,SAAS,GAAE,MAAkC,GAC5C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIxB;AAED,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC;CAClD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mCAAmC,CACvD,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,MAAM,mBAAmB,GAAG,SAAS,EACjD,IAAI,EAAE,mBAAmB,EACzB,SAAS,GAAE,MAAkC,GAC5C,OAAO,CAAC,iBAAiB,CAAC,CAoC5B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { AssistantSendRefusal as e } from "./turnOutcome.js";
|
|
2
|
+
import { UNAVAILABLE_MODE_REFUSAL as t, adminOnlyModeSendRefusal as n, resolveAssistantModeCapabilities as r, unofferedModeSendRefusal as i } from "./modeCapabilities.js";
|
|
3
3
|
//#region src/shared/assistant/adminModeSendGate.ts
|
|
4
4
|
var a = 1e4;
|
|
5
5
|
function o(e) {
|
|
@@ -32,20 +32,20 @@ function o(e) {
|
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
|
-
async function s(e,
|
|
36
|
-
return e?.requiresAdmin ?
|
|
35
|
+
async function s(e, t, r = a) {
|
|
36
|
+
return e?.requiresAdmin ? n(e, await t.wait(r)) : null;
|
|
37
37
|
}
|
|
38
|
-
async function c(e, t, n,
|
|
39
|
-
return
|
|
38
|
+
async function c(e, t, n, r = a) {
|
|
39
|
+
return i(e, t()) === null ? null : (await n.wait(r), i(e, t()));
|
|
40
40
|
}
|
|
41
41
|
async function l(o, s, l, u = a) {
|
|
42
42
|
let d = Date.now() + u, f = await c(o, s, l, u);
|
|
43
|
-
if (f) throw new
|
|
43
|
+
if (f) throw new e("mode-unavailable", f);
|
|
44
44
|
s()?.requiresAdmin && await l.wait(Math.max(0, d - Date.now()));
|
|
45
|
-
let p = s(), m =
|
|
46
|
-
if (h) throw new
|
|
47
|
-
let g = l.read(), _ =
|
|
48
|
-
if (_) throw new
|
|
45
|
+
let p = s(), m = r(o, p), h = i(o, p) ?? (m.provisionable ? null : t);
|
|
46
|
+
if (h) throw new e("mode-unavailable", h);
|
|
47
|
+
let g = l.read(), _ = n(p, g);
|
|
48
|
+
if (_) throw new e(g.loading ? "mode-access-pending" : "mode-admin-only", _);
|
|
49
49
|
return {
|
|
50
50
|
config: p,
|
|
51
51
|
capabilities: m
|
|
@@ -1,35 +1,81 @@
|
|
|
1
1
|
import { AssistantMode, AssistantPromptPart, AssistantRawMessage, AssistantSandboxAuthContext, AssistantArtifact, AssistantSessionInfo, DownloadedAssistantArtifact, StreamAccess } from './types';
|
|
2
|
+
import { SandboxWriteCapabilities, WriteApprovalMode, WriteExecutionState } from './writeProposals';
|
|
3
|
+
import { WriteReplyKind, WriteReplyOrigin } from './writeReplyBinder';
|
|
2
4
|
/**
|
|
3
|
-
* Does a proxied request
|
|
4
|
-
* own tokens (`forwardedAuthToken` /
|
|
5
|
+
* Does a proxied request addressed to a sandbox of this mode carry the
|
|
6
|
+
* signed-in user's own tokens (`forwardedAuthToken` /
|
|
7
|
+
* `forwardedWorkspaceToken`) in the `proxySandboxRequest` input?
|
|
5
8
|
*
|
|
6
|
-
* ★★
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* ★★ The recipient is wspace-sandbox-svc, not the sandbox. The two fields are
|
|
10
|
+
* input to the svc's proxy mutation; what reaches the sandbox is the svc's
|
|
11
|
+
* decision, made from the sandbox's RECORDED mode, not from anything sent here:
|
|
12
|
+
* - relay credential mode (BOFF-8072): the svc keeps the tokens server-side,
|
|
13
|
+
* sealed and TTL-bound, and forwards NEITHER into any sandbox. The session
|
|
14
|
+
* gets only an opaque capability that the svc's session relay accepts, and
|
|
15
|
+
* the relay runs each business request as the user through the public
|
|
16
|
+
* gateway, so `@rbac` applies.
|
|
17
|
+
* - legacy credential mode: the svc delivers them to an Ask sandbox only, and
|
|
18
|
+
* already withholds them from `api-calls` (wspace-sandbox-svc
|
|
19
|
+
* `forwardsUserTokens`, SandboxProvider.ts:3051-3054).
|
|
20
|
+
*
|
|
21
|
+
* ★★ Ask (`assistant`) and Take action (`api-calls`), and nothing else. Both
|
|
22
|
+
* reach the platform gateway, and in relay mode both run their reads (and an
|
|
23
|
+
* admin's Take-action execution) as the user's OWN token held by the relay. For
|
|
24
|
+
* `api-calls` that is what lets an admin's Take action run on the admin's own
|
|
25
|
+
* human token rather than the svc's admin-bridge `app_as_user` mint.
|
|
26
|
+
*
|
|
27
|
+
* Every other mode must never send them:
|
|
13
28
|
* - `vibe-plugins`, `general` and every PRODUCT-declared mode (see
|
|
14
29
|
* `declareAssistantMode`) make no platform GraphQL calls at all. Their agent
|
|
15
|
-
* has bash, so a user token
|
|
16
|
-
* read and replay as the user (BOFF-7304). A product cannot opt a mode
|
|
17
|
-
* tokens: the test below is equality with the built-in
|
|
30
|
+
* has bash, so a user token that reached one is a token a prompt injection
|
|
31
|
+
* can read and replay as the user (BOFF-7304). A product cannot opt a mode
|
|
32
|
+
* into tokens: the test below is equality with the built-in ids, not a
|
|
33
|
+
* capability.
|
|
18
34
|
*
|
|
19
|
-
* ★ Fails closed: an unknown, empty or absent mode forwards nothing
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
35
|
+
* ★ Fails closed: an unknown, empty or absent mode forwards nothing, so the
|
|
36
|
+
* tokens never leave the browser for a sandbox that has no use for them.
|
|
37
|
+
*
|
|
38
|
+
* ★ This is proxy-request forwarding only. No create-time token env is added
|
|
39
|
+
* for `api-calls`: `buildAssistantSandboxEnv` still puts `AUTH_TOKEN` /
|
|
40
|
+
* `WORKSPACE_AUTH_TOKEN` in the env of an Ask sandbox alone (on the
|
|
41
|
+
* createSandbox path an older svc needs), and a relay-mode svc strips even that.
|
|
23
42
|
*/
|
|
24
43
|
export declare function forwardsUserTokensToSandbox(mode: AssistantMode | null | undefined): boolean;
|
|
25
|
-
|
|
44
|
+
/** What a sandbox (or wspace-sandbox-svc, in front of it) answered. */
|
|
45
|
+
export interface SandboxProxyRawResult {
|
|
46
|
+
status: number;
|
|
47
|
+
body: unknown;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* `proxyToSandbox` without the throw: the answer's status and body come back
|
|
51
|
+
* whatever the status is, so a caller can read a 4xx's `code` and `reason`
|
|
52
|
+
* (BOFF-7803 5a: the write-proposal endpoints answer refusals that way).
|
|
53
|
+
*
|
|
54
|
+
* ★ ONE attempt, never retried here (`executeAssistantGraphQLOnce`). The
|
|
55
|
+
* caller owns retry: an approve must never be re-sent behind its back, since
|
|
56
|
+
* a resend after a lost answer reads as a second press.
|
|
57
|
+
*
|
|
58
|
+
* ★ It still throws when there is no answer to return: a transport failure, a
|
|
59
|
+
* GraphQL error from the gateway or the svc, or a `proxySandboxRequest` with no
|
|
60
|
+
* status. Those carry no sandbox status, and inventing one would lie about
|
|
61
|
+
* what happened.
|
|
62
|
+
*
|
|
63
|
+
* `mode` is the mode of the SANDBOX being addressed, exactly as for every
|
|
64
|
+
* other proxied call (see `buildSandboxProxyRequest`).
|
|
65
|
+
*/
|
|
66
|
+
export declare function proxySandboxRaw(sandboxId: string, workspaceId: string, path: string, method: string, body: unknown, mode: AssistantMode | undefined, authContext: AssistantSandboxAuthContext | undefined): Promise<SandboxProxyRawResult>;
|
|
67
|
+
export declare function findExistingSandbox(workspaceId: string, product: string, mode: AssistantMode, isProd: boolean, authContext: AssistantSandboxAuthContext, excludedSandboxIds?: ReadonlySet<string>,
|
|
68
|
+
/** The product's `writeApproval` flag (`AssistantProductCapabilities`). */
|
|
69
|
+
writeApproval?: WriteApprovalMode): Promise<string | null>;
|
|
26
70
|
/**
|
|
27
71
|
* `findExistingSandbox`, and the status the server reported for the one it
|
|
28
72
|
* chose. Reuse accepts a sandbox still PROVISIONING or PENDING — joining a boot
|
|
29
73
|
* someone else started (a reload mid-cold-start, a second tab) — and a latency
|
|
30
74
|
* report must not call waiting out that boot a probe (BOFF-7801).
|
|
31
75
|
*/
|
|
32
|
-
export declare function findExistingSandboxWithStatus(workspaceId: string, product: string, mode: AssistantMode, isProd: boolean, authContext: AssistantSandboxAuthContext, excludedSandboxIds?: ReadonlySet<string
|
|
76
|
+
export declare function findExistingSandboxWithStatus(workspaceId: string, product: string, mode: AssistantMode, isProd: boolean, authContext: AssistantSandboxAuthContext, excludedSandboxIds?: ReadonlySet<string>,
|
|
77
|
+
/** The product's `writeApproval` flag (`AssistantProductCapabilities`). */
|
|
78
|
+
writeApproval?: WriteApprovalMode): Promise<{
|
|
33
79
|
id: string;
|
|
34
80
|
status: string;
|
|
35
81
|
} | null>;
|
|
@@ -44,7 +90,71 @@ export interface ExistingAssistantSandbox {
|
|
|
44
90
|
createdBy: string;
|
|
45
91
|
}
|
|
46
92
|
/** Pure reuse selector, kept separate so quarantine behavior is regression-testable. */
|
|
47
|
-
export declare function selectExistingAssistantSandbox(sandboxes: ExistingAssistantSandbox[], product: string, mode: AssistantMode, _isProd: boolean, authContext: Pick<AssistantSandboxAuthContext, "userId">, excludedSandboxIds?: ReadonlySet<string
|
|
93
|
+
export declare function selectExistingAssistantSandbox(sandboxes: ExistingAssistantSandbox[], product: string, mode: AssistantMode, _isProd: boolean, authContext: Pick<AssistantSandboxAuthContext, "userId">, excludedSandboxIds?: ReadonlySet<string>,
|
|
94
|
+
/**
|
|
95
|
+
* The write-approval flow the panel can get (BOFF-7803 5a): the flow a
|
|
96
|
+
* Take-action sandbox must run, and — at `proposal-v1` — the provisioning
|
|
97
|
+
* path an Ask sandbox must have come from (`askReuseMatchesProvisioning`).
|
|
98
|
+
* Ignored for every other mode. Last, and defaulted to `legacy`, so every
|
|
99
|
+
* positional caller is unchanged.
|
|
100
|
+
*/
|
|
101
|
+
wantedWriteApproval?: WriteApprovalMode): string | null;
|
|
102
|
+
/**
|
|
103
|
+
* May this sandbox serve an Ask panel that wants `wanted`? (BOFF-7803 5a, the
|
|
104
|
+
* Ask fence.)
|
|
105
|
+
*
|
|
106
|
+
* ★★★ At `proposal-v1` an Ask sandbox is reusable only if the dedicated path
|
|
107
|
+
* provisioned it (`assistantAuth.provisionedVia ===
|
|
108
|
+
* 'provisionAssistantSandbox'`, stamped by the service, which drops any
|
|
109
|
+
* client-supplied `assistantAuth`). An Ask sandbox from `createSandbox` was
|
|
110
|
+
* built by `buildAssistantSandboxEnv`, which puts the user's `AUTH_TOKEN` and
|
|
111
|
+
* `WORKSPACE_AUTH_TOKEN` in its env. There the model's bash can read them and
|
|
112
|
+
* send a mutation to the public gateway as the user — an Editor's or an
|
|
113
|
+
* admin's write, from Ask. The heartbeat can keep such a sandbox alive for
|
|
114
|
+
* hours, so a panel that has just turned the flag on must not adopt one: it is
|
|
115
|
+
* released (the superseded selector holds this same predicate) and a
|
|
116
|
+
* dedicated one is provisioned.
|
|
117
|
+
*
|
|
118
|
+
* Only Ask, and only at `proposal-v1`. Callers pass the flow the panel can
|
|
119
|
+
* actually GET (`requestedWriteApproval`): when the page has learned that the
|
|
120
|
+
* dedicated path does not exist, Ask itself comes from `createSandbox`, the
|
|
121
|
+
* wanted flow reads `legacy`, and reuse is exactly as before. A Take-action
|
|
122
|
+
* sandbox is decided by `writeApprovalReuseMatches`; every other mode is
|
|
123
|
+
* unaffected.
|
|
124
|
+
*
|
|
125
|
+
* Pure, and the SAME predicate sits inside the superseded selector's negation,
|
|
126
|
+
* so "superseded" stays the exact complement of "reusable".
|
|
127
|
+
*/
|
|
128
|
+
export declare function askReuseMatchesProvisioning(sandbox: {
|
|
129
|
+
metadata: Record<string, unknown> | null;
|
|
130
|
+
}, mode: AssistantMode, wanted: WriteApprovalMode): boolean;
|
|
131
|
+
/**
|
|
132
|
+
* May a Take-action sandbox with this metadata serve a panel that wants the
|
|
133
|
+
* `wanted` write-approval flow? (BOFF-7803 5a / BOFF-7800 Phase 1.)
|
|
134
|
+
*
|
|
135
|
+
* ★★ A sandbox's flow is fixed in its environment when it is created, so a
|
|
136
|
+
* sandbox running the other flow must never be adopted: a proposal-v1
|
|
137
|
+
* sandbox driven by a legacy panel, or the reverse, is a write gate nobody is
|
|
138
|
+
* operating. The service stamps the flow it actually provisioned at the top
|
|
139
|
+
* level of `metadata` (wspace-sandbox-svc `assistantClientCompatStamps`):
|
|
140
|
+
* - `confirmWrites: true` — the legacy gate. A pre-5a sandbox carries only
|
|
141
|
+
* this, and no `writeApproval`, which reads as `legacy`;
|
|
142
|
+
* - `confirmWrites: 'proposal-v1'` + `writeApproval: 'proposal-v1'` — the
|
|
143
|
+
* proposal flow. The STRING, so a pre-5a panel, which reuses only
|
|
144
|
+
* `=== true`, never adopts one.
|
|
145
|
+
* Both must agree with `wanted`; an absent `confirmWrites` (a pre-gate
|
|
146
|
+
* sandbox) matches nothing, as before.
|
|
147
|
+
*
|
|
148
|
+
* ★★ Except a MEMBER sandbox (`assistantAuth.accessProfile === 'member'`),
|
|
149
|
+
* which is always reusable: it is the only Take-action sandbox a non-admin can
|
|
150
|
+
* be provisioned (proposal-v1, fenced, whatever was requested), so superseding
|
|
151
|
+
* it over the approval flow would only stop it and provision the same thing
|
|
152
|
+
* again against a one-environment quota.
|
|
153
|
+
*
|
|
154
|
+
* Pure, and the SAME predicate sits inside the superseded selector's negation,
|
|
155
|
+
* so "superseded" stays the exact complement of "reusable".
|
|
156
|
+
*/
|
|
157
|
+
export declare function writeApprovalReuseMatches(metadata: Record<string, unknown> | null | undefined, wanted: WriteApprovalMode): boolean;
|
|
48
158
|
/**
|
|
49
159
|
* Does this mode write through the gateway, and therefore need the
|
|
50
160
|
* confirm-before-write gate?
|
|
@@ -65,7 +175,71 @@ export declare function buildAssistantSandboxEnv(product: string, mode: Assistan
|
|
|
65
175
|
name: string;
|
|
66
176
|
value: string;
|
|
67
177
|
}>;
|
|
68
|
-
|
|
178
|
+
/** Did this sandbox come from the dedicated provisioning path, by its stamp? */
|
|
179
|
+
export declare function isDedicatedAssistantSandboxRow(sandbox: {
|
|
180
|
+
metadata: Record<string, unknown> | null;
|
|
181
|
+
}): boolean;
|
|
182
|
+
/** Does this page know `sandboxId` came from the dedicated provisioning path? */
|
|
183
|
+
export declare function isDedicatedAssistantSandbox(sandboxId: string): boolean;
|
|
184
|
+
/**
|
|
185
|
+
* Does a panel whose product flag is `writeApproval` provision `mode` through
|
|
186
|
+
* the dedicated path? (BOFF-7800 Phase 1, BOFF-7803 5a.)
|
|
187
|
+
*
|
|
188
|
+
* ★★ Only at exactly `'proposal-v1'`, only for Ask and Take action, and only
|
|
189
|
+
* while this page has not seen the gateway say the path does not exist. A
|
|
190
|
+
* product at `legacy` keeps `createSandbox` for every mode, so it changes in
|
|
191
|
+
* nothing — in particular no non-admin can open Take action, and Ask stays as
|
|
192
|
+
* it was, until the product turns the flag on.
|
|
193
|
+
*/
|
|
194
|
+
export declare function usesDedicatedAssistantProvisioning(mode: AssistantMode, writeApproval: WriteApprovalMode | null | undefined): boolean;
|
|
195
|
+
/**
|
|
196
|
+
* Is this the service's "the dedicated provisioning path is closed" refusal
|
|
197
|
+
* (503 `assistant.errors.assistantProvisioningUnavailable`)? The service raises
|
|
198
|
+
* it until it runs the session relay (BOFF-8072), whatever the caller's role.
|
|
199
|
+
* Any `SERVICE_UNAVAILABLE` counts: on this path every one of them is a
|
|
200
|
+
* "not now", and none may be retried another way.
|
|
201
|
+
*
|
|
202
|
+
* ★★ It must never lead to a retry through `createSandbox`: that path hands a
|
|
203
|
+
* session the credentials BOFF-8072 withdraws. It surfaces as the temporary
|
|
204
|
+
* outcome instead (`classifyTurnFailure`), which is what it is.
|
|
205
|
+
*/
|
|
206
|
+
export declare function isAssistantProvisioningUnavailable(error: unknown): boolean;
|
|
207
|
+
/**
|
|
208
|
+
* The `provisionAssistantSandbox` input. Pure and exported so what leaves the
|
|
209
|
+
* browser on this path is checkable without a network.
|
|
210
|
+
*
|
|
211
|
+
* ★★ No containers, command, resources, image pull settings or storage — the
|
|
212
|
+
* service builds the sandbox — and NO token env for any mode: the only env is
|
|
213
|
+
* `AI_ASSISTANT_PRODUCT`, `HOSTNAME` and `WORKSPACE_ID`, the service's own
|
|
214
|
+
* allowlist. A session on this path never holds the user's token (BOFF-8072);
|
|
215
|
+
* the proxy forwards it to the service, which keeps it server-side.
|
|
216
|
+
*
|
|
217
|
+
* ★ `writeApproval` is sent for Take action only. Ask requests nothing about
|
|
218
|
+
* writes (the service gives it the read-only Ask plan whatever is sent), and
|
|
219
|
+
* leaving it out keeps the field at its schema default.
|
|
220
|
+
*/
|
|
221
|
+
export declare function buildProvisionAssistantSandboxInput(product: string, mode: AssistantMode, workspaceId: string, isProd: boolean, ttlSeconds: number, authContext: Pick<AssistantSandboxAuthContext, "organizationId">): Record<string, unknown>;
|
|
222
|
+
/**
|
|
223
|
+
* Create an assistant sandbox, and return its id.
|
|
224
|
+
*
|
|
225
|
+
* ★★ Two paths (BOFF-7800 Phase 1, BOFF-7803 5a), chosen by the product's
|
|
226
|
+
* `writeApproval` flag and nothing else:
|
|
227
|
+
* - `'proposal-v1'`, Ask or Take action → `provisionAssistantSandbox`, gated on
|
|
228
|
+
* `assistant:use` (every workspace role), under the same quota. The service
|
|
229
|
+
* decides the access profile — an admin's Take action can execute, a
|
|
230
|
+
* member's is fenced — so the panel cannot widen it.
|
|
231
|
+
* - The service's missing-field answer (an older supergraph) falls back to
|
|
232
|
+
* `createSandbox`, and the page stops asking.
|
|
233
|
+
* - Every other failure is final. Above all the provisioning-closed 503
|
|
234
|
+
* (`isAssistantProvisioningUnavailable`): a retry through `createSandbox`
|
|
235
|
+
* would hand a non-admin's session the old credential path.
|
|
236
|
+
* - anything else → `createSandbox`, exactly as before.
|
|
237
|
+
*/
|
|
238
|
+
export declare function createAssistantSandbox(product: string, mode: AssistantMode, workspaceId: string, isProd: boolean, ttlSeconds: number, authContext: AssistantSandboxAuthContext,
|
|
239
|
+
/** `writeApproval`: the product's flag (`AssistantProductCapabilities`). */
|
|
240
|
+
options?: {
|
|
241
|
+
writeApproval?: WriteApprovalMode;
|
|
242
|
+
}): Promise<string>;
|
|
69
243
|
/**
|
|
70
244
|
* Wait for RUNNING. Prefers the svc long-poll (waitForSandboxRunning); on an
|
|
71
245
|
* older gateway that field errors → falls back to 2s getSandbox polling. Keeps
|
|
@@ -78,7 +252,52 @@ export declare function waitForAssistantServiceReady(sandboxId: string, workspac
|
|
|
78
252
|
* retry. A caller that REUSES a sandbox learns from it that it joined a boot
|
|
79
253
|
* in progress rather than a service already serving (BOFF-7801).
|
|
80
254
|
*/
|
|
81
|
-
onNotReady?: () => void): Promise<
|
|
255
|
+
onNotReady?: () => void): Promise<Record<string, unknown>>;
|
|
256
|
+
/** `proposal-v1` for exactly that string; anything else is `legacy`. */
|
|
257
|
+
export declare function writeApprovalModeOf(value: unknown): WriteApprovalMode;
|
|
258
|
+
/**
|
|
259
|
+
* `enabled` for exactly that string. An ABSENT value is `enabled` only when
|
|
260
|
+
* the caller says absence means an image that predates 5a
|
|
261
|
+
* (`absentMeansFenced: false`); any other value, and absence otherwise, is
|
|
262
|
+
* `fenced`.
|
|
263
|
+
*/
|
|
264
|
+
export declare function writeExecutionOf(value: unknown, absentMeansFenced: boolean): WriteExecutionState;
|
|
265
|
+
/**
|
|
266
|
+
* What a sandbox's own `/health` body says about writes (BOFF-7803 5a).
|
|
267
|
+
*
|
|
268
|
+
* ★★ Every doubt resolves to the side that runs nothing:
|
|
269
|
+
* - no write capabilities at all (an image that predates 5a) → the legacy
|
|
270
|
+
* flow, unchanged: `{proposals: false, legacy, enabled}`;
|
|
271
|
+
* - a mode other than exactly `proposal-v1` → `legacy`;
|
|
272
|
+
* - a `writeExecution` other than exactly `enabled` → `fenced`, and so is a
|
|
273
|
+
* missing one on an image that does report write capabilities.
|
|
274
|
+
*
|
|
275
|
+
* `replyApproval` is always `off`: in 5a no reply approves, whatever a sandbox
|
|
276
|
+
* reports. Nothing here is a secret; `sessionCredentials` is a path name.
|
|
277
|
+
*/
|
|
278
|
+
export declare function readSandboxWriteCapabilities(health: unknown): SandboxWriteCapabilities;
|
|
279
|
+
/**
|
|
280
|
+
* ONE `/health` read of a sandbox this page has not read yet, recorded exactly
|
|
281
|
+
* as `waitForAssistantServiceReady` records it (BOFF-8128).
|
|
282
|
+
*
|
|
283
|
+
* Why: the write capabilities are never persisted (see the store's
|
|
284
|
+
* `sandboxWriteCapabilities`), so after a reload the sandbox that ISSUED a
|
|
285
|
+
* reopened conversation's proposals is unknown, and no proposal call may be
|
|
286
|
+
* made to it until its own `/health` has been read. This is that read, made
|
|
287
|
+
* when the conversation reopens instead of waiting for the next turn.
|
|
288
|
+
*
|
|
289
|
+
* ★★ A read, nothing more. It does not wait for a boot, does not retry
|
|
290
|
+
* (`proxySandboxRaw` makes a single attempt), does not prove the sandbox ready
|
|
291
|
+
* for a turn and does not adopt it: the turn's own acquisition does those.
|
|
292
|
+
* wspace-sandbox-svc answers only for a sandbox of this workspace that this
|
|
293
|
+
* person owns and that is running, so a sandbox that is gone, stopped or not
|
|
294
|
+
* theirs answers with an error, and nothing is recorded.
|
|
295
|
+
*
|
|
296
|
+
* `mode` is the mode of the sandbox being addressed, as for every proxied call.
|
|
297
|
+
* Resolves the capabilities read, or `null` when there was no readable answer.
|
|
298
|
+
* Never rejects.
|
|
299
|
+
*/
|
|
300
|
+
export declare function readSandboxWriteCapabilitiesOnce(sandboxId: string, workspaceId: string, mode: AssistantMode, authContext: AssistantSandboxAuthContext): Promise<SandboxWriteCapabilities | null>;
|
|
82
301
|
export declare function createAssistantSession(sandboxId: string, workspaceId: string, mode: AssistantMode, authContext: AssistantSandboxAuthContext): Promise<{
|
|
83
302
|
sessionId: string;
|
|
84
303
|
}>;
|
|
@@ -114,7 +333,9 @@ export declare function selectSupersededAssistantSandboxes(sandboxes: readonly E
|
|
|
114
333
|
* the two keep identical shapes — which is what makes "superseded is the
|
|
115
334
|
* complement of reusable" checkable by reading them side by side.
|
|
116
335
|
*/
|
|
117
|
-
excludedSandboxIds?: ReadonlySet<string
|
|
336
|
+
excludedSandboxIds?: ReadonlySet<string>,
|
|
337
|
+
/** Same parameter, position and default as the reuse selector's. */
|
|
338
|
+
wantedWriteApproval?: WriteApprovalMode): string[];
|
|
118
339
|
/**
|
|
119
340
|
* Free the workspace's sandbox slot before provisioning a different mode.
|
|
120
341
|
*
|
|
@@ -143,13 +364,52 @@ excludedSandboxIds?: ReadonlySet<string>): string[];
|
|
|
143
364
|
*/
|
|
144
365
|
export declare function releaseSupersededAssistantSandboxes(workspaceId: string, product: string, mode: AssistantMode, isProd: boolean, authContext: AssistantSandboxAuthContext,
|
|
145
366
|
/** Sandboxes proven dead this session — released even if they still match. */
|
|
146
|
-
excludedSandboxIds?: ReadonlySet<string
|
|
367
|
+
excludedSandboxIds?: ReadonlySet<string>,
|
|
368
|
+
/** The product's `writeApproval` flag (`AssistantProductCapabilities`). */
|
|
369
|
+
writeApproval?: WriteApprovalMode): Promise<string[]>;
|
|
147
370
|
/**
|
|
148
371
|
* Terminalize a sandbox whose Cloudflare data plane was reaped while its DB
|
|
149
372
|
* record remained RUNNING. Invoked only for Cloudflare's exact connection-
|
|
150
|
-
* refused signature before provisioning the replacement
|
|
373
|
+
* refused signature before provisioning the replacement — and by
|
|
374
|
+
* `releaseSupersededAssistantSandboxes` for our own superseded sandboxes.
|
|
375
|
+
*
|
|
376
|
+
* ★★ A sandbox from the dedicated path (BOFF-7800 Phase 1) is stopped through
|
|
377
|
+
* the owner-scoped `stopMyAssistantSandbox`: its owner may be a Viewer, who
|
|
378
|
+
* holds no permission `stopSandbox` accepts, and without it the superseded
|
|
379
|
+
* sandbox would hold a one-environment quota until its TTL ran out. It falls
|
|
380
|
+
* back to `stopSandbox` only on the gateway's missing-field answer; any other
|
|
381
|
+
* refusal (NOT_FOUND for a row that is not the caller's) is final.
|
|
382
|
+
*
|
|
383
|
+
* `ownerScoped` routes a sandbox this page does not know as dedicated the same
|
|
384
|
+
* way: the release on the dedicated path passes it for its owner's Ask and
|
|
385
|
+
* Take-action sandboxes from `createSandbox` (`releaseSupersededAssistantSandboxes`).
|
|
151
386
|
*/
|
|
152
|
-
export declare function stopReapedAssistantSandbox(sandboxId: string, workspaceId: string, authContext: AssistantSandboxAuthContext
|
|
387
|
+
export declare function stopReapedAssistantSandbox(sandboxId: string, workspaceId: string, authContext: AssistantSandboxAuthContext, options?: {
|
|
388
|
+
ownerScoped?: boolean;
|
|
389
|
+
}): Promise<void>;
|
|
390
|
+
/**
|
|
391
|
+
* How the panel's write-reply binder classified a prompt (BOFF-7803 5a,
|
|
392
|
+
* design §5.8): the sandbox's `writeReply`. `proposalId` only on a
|
|
393
|
+
* `proposal_result` continuation.
|
|
394
|
+
*
|
|
395
|
+
* ★★ 5a is a safety floor, not the final security boundary. Nothing in a
|
|
396
|
+
* prompt approves a write: the sandbox supersedes every pending proposal of
|
|
397
|
+
* the session on ANY prompt (the strict sweep), and only the card's button
|
|
398
|
+
* confirms one. The tag only tells the sandbox what the reply was, so a bare
|
|
399
|
+
* "yes" with nothing waiting can be bridged (the model is told to prepare the
|
|
400
|
+
* change it described).
|
|
401
|
+
*/
|
|
402
|
+
export interface AssistantPromptWriteReply {
|
|
403
|
+
kind: WriteReplyKind;
|
|
404
|
+
origin: WriteReplyOrigin;
|
|
405
|
+
proposalId?: string;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* The conversation ids the sandbox's prompt admission accepts
|
|
409
|
+
* (`[A-Za-z0-9_-]{1,128}`). It refuses the WHOLE prompt (400) over anything
|
|
410
|
+
* else, so a conversation id outside this is never sent.
|
|
411
|
+
*/
|
|
412
|
+
export declare const PROMPT_CONVERSATION_ID_PATTERN: RegExp;
|
|
153
413
|
/**
|
|
154
414
|
* Assemble the `/sessions/:id/prompt-async` request body. Pure + exported so the
|
|
155
415
|
* backward-compatibility contract is unit-testable without touching the network.
|
|
@@ -157,16 +417,23 @@ export declare function stopReapedAssistantSandbox(sandboxId: string, workspaceI
|
|
|
157
417
|
* The contract, deliberately additive:
|
|
158
418
|
* - `prompt` is ALWAYS present. A bridge that predates multimodal ignores the
|
|
159
419
|
* unknown `parts` key and answers from `prompt` — degradation, not failure.
|
|
160
|
-
* - `parts` appears ONLY when there is at least one. A text-only turn
|
|
161
|
-
* produces a byte-identical body to the
|
|
420
|
+
* - `parts` appears ONLY when there is at least one. A text-only turn with no
|
|
421
|
+
* write fields therefore produces a byte-identical body to the
|
|
422
|
+
* pre-multimodal client.
|
|
162
423
|
* - When a bridge does understand `parts`, `parts` wins and `prompt` is the
|
|
163
424
|
* text-only fallback.
|
|
425
|
+
* - BOFF-7803 5a: `conversationId` (the panel's stable conversation id) when it
|
|
426
|
+
* is one the sandbox accepts — a proposal-v1 sandbox binds the session's
|
|
427
|
+
* proposals to it; any other ignores it — and `writeReply` only when set.
|
|
428
|
+
* A sandbox that predates them ignores both unknown keys.
|
|
164
429
|
*/
|
|
165
430
|
export declare function buildPromptRequestBody(args: {
|
|
166
431
|
mode: AssistantMode;
|
|
167
432
|
prompt: string;
|
|
168
433
|
pageContext: Record<string, unknown> | undefined;
|
|
169
434
|
parts?: AssistantPromptPart[];
|
|
435
|
+
conversationId?: string | null;
|
|
436
|
+
writeReply?: AssistantPromptWriteReply | null;
|
|
170
437
|
}): Record<string, unknown>;
|
|
171
438
|
export interface AssistantPromptGatewayRequest {
|
|
172
439
|
sandboxId: string;
|
|
@@ -177,6 +444,10 @@ export interface AssistantPromptGatewayRequest {
|
|
|
177
444
|
pageContext: Record<string, unknown> | undefined;
|
|
178
445
|
authContext: AssistantSandboxAuthContext;
|
|
179
446
|
parts?: AssistantPromptPart[];
|
|
447
|
+
/** The panel's conversation (BOFF-7803 5a). */
|
|
448
|
+
conversationId?: string | null;
|
|
449
|
+
/** How the binder classified this prompt (BOFF-7803 5a). */
|
|
450
|
+
writeReply?: AssistantPromptWriteReply | null;
|
|
180
451
|
}
|
|
181
452
|
/** The actual unbatched GraphQL body, including context and forwarded-token overhead. */
|
|
182
453
|
export declare function buildPromptGatewayRequest(args: AssistantPromptGatewayRequest): {
|
|
@@ -186,9 +457,14 @@ export declare function buildPromptGatewayRequest(args: AssistantPromptGatewayRe
|
|
|
186
457
|
};
|
|
187
458
|
export declare function promptGatewayRequestBytes(args: AssistantPromptGatewayRequest): number;
|
|
188
459
|
export declare function sendAssistantPromptAsync(sandboxId: string, workspaceId: string, sessionId: string, prompt: string, mode: AssistantMode, pageContext: Record<string, unknown> | undefined, authContext: AssistantSandboxAuthContext,
|
|
189
|
-
/**
|
|
460
|
+
/**
|
|
461
|
+
* Multimodal extras, and the write-lifecycle fields (BOFF-7803 5a). Optional
|
|
462
|
+
* + trailing, so every existing call site is unaffected.
|
|
463
|
+
*/
|
|
190
464
|
options?: {
|
|
191
465
|
parts?: AssistantPromptPart[];
|
|
466
|
+
conversationId?: string | null;
|
|
467
|
+
writeReply?: AssistantPromptWriteReply | null;
|
|
192
468
|
}): Promise<{
|
|
193
469
|
messageID?: string;
|
|
194
470
|
}>;
|
|
@@ -201,6 +477,15 @@ export declare function getAssistantMessages(sandboxId: string, workspaceId: str
|
|
|
201
477
|
* (older backend / preview data plane off) → caller falls back to polling.
|
|
202
478
|
*/
|
|
203
479
|
export declare function getAssistantStreamAccess(sandboxId: string, workspaceId: string, sessionId: string, mode: AssistantMode, authContext: AssistantSandboxAuthContext): Promise<StreamAccess | null>;
|
|
480
|
+
/**
|
|
481
|
+
* Extend a sandbox's TTL — the keep-warm call.
|
|
482
|
+
*
|
|
483
|
+
* ★★ Routed like `stopReapedAssistantSandbox`: a sandbox from the dedicated
|
|
484
|
+
* path through the owner-scoped `extendMyAssistantSandboxTTL` (a Viewer cannot
|
|
485
|
+
* call `extendSandboxTTL`), falling back only on the gateway's missing-field
|
|
486
|
+
* answer. Extending grants the session nothing: it holds no credential, and
|
|
487
|
+
* execution re-checks admin rights live (BOFF-8072).
|
|
488
|
+
*/
|
|
204
489
|
export declare function extendAssistantSandboxTTL(sandboxId: string, workspaceId: string, additionalSeconds: number, authContext: AssistantSandboxAuthContext): Promise<void>;
|
|
205
490
|
export declare function sendHeartbeat(sandboxId: string, workspaceId: string, sessionId: string, mode: AssistantMode, authContext: AssistantSandboxAuthContext): Promise<void>;
|
|
206
491
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/api.ts"],"names":[],"mappings":"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"}
|