@burdenoff/fe-libs 2026.928.3 → 2026.929.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/shared/assistant/adminModeSendGate.d.ts +6 -5
- package/dist/shared/assistant/adminModeSendGate.d.ts.map +1 -1
- package/dist/shared/assistant/adminModeSendGate.js +11 -11
- package/dist/shared/assistant/api.d.ts +291 -28
- package/dist/shared/assistant/api.d.ts.map +1 -1
- package/dist/shared/assistant/api.js +351 -147
- package/dist/shared/assistant/autoRouting.d.ts +11 -3
- package/dist/shared/assistant/autoRouting.d.ts.map +1 -1
- package/dist/shared/assistant/autoRouting.js +7 -7
- package/dist/shared/assistant/capabilities.d.ts +28 -0
- package/dist/shared/assistant/capabilities.d.ts.map +1 -1
- package/dist/shared/assistant/capabilities.js +19 -10
- package/dist/shared/assistant/conversation.d.ts +24 -2
- package/dist/shared/assistant/conversation.d.ts.map +1 -1
- package/dist/shared/assistant/createSandboxAssistantTransport.d.ts.map +1 -1
- package/dist/shared/assistant/createSandboxAssistantTransport.js +67 -54
- package/dist/shared/assistant/history/historyList.js +1 -1
- package/dist/shared/assistant/history/historyMapping.d.ts.map +1 -1
- package/dist/shared/assistant/history/historyMapping.js +5 -1
- package/dist/shared/assistant/history/historyResume.js +7 -7
- package/dist/shared/assistant/i18nManifest.d.ts +53 -0
- package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
- package/dist/shared/assistant/i18nManifest.js +75 -16
- package/dist/shared/assistant/index.d.ts +15 -0
- package/dist/shared/assistant/index.d.ts.map +1 -1
- package/dist/shared/assistant/modeCapabilities.js +1 -1
- package/dist/shared/assistant/operations.d.ts +22 -0
- package/dist/shared/assistant/operations.d.ts.map +1 -1
- package/dist/shared/assistant/operations.js +2 -2
- package/dist/shared/assistant/prewarm.d.ts +7 -0
- package/dist/shared/assistant/prewarm.d.ts.map +1 -1
- package/dist/shared/assistant/prewarm.js +1 -1
- package/dist/shared/assistant/product.d.ts +80 -2
- package/dist/shared/assistant/product.d.ts.map +1 -1
- package/dist/shared/assistant/product.js +10 -6
- package/dist/shared/assistant/proposalWriteRules.d.ts +40 -0
- package/dist/shared/assistant/proposalWriteRules.d.ts.map +1 -0
- package/dist/shared/assistant/proposalWriteRules.js +14 -0
- package/dist/shared/assistant/store.d.ts +17 -0
- package/dist/shared/assistant/store.d.ts.map +1 -1
- package/dist/shared/assistant/store.js +50 -43
- package/dist/shared/assistant/turnOutcome.d.ts +34 -2
- package/dist/shared/assistant/turnOutcome.d.ts.map +1 -1
- package/dist/shared/assistant/turnOutcome.js +28 -17
- package/dist/shared/assistant/turnOutcomeCopy.d.ts +29 -7
- package/dist/shared/assistant/turnOutcomeCopy.d.ts.map +1 -1
- package/dist/shared/assistant/turnOutcomeCopy.js +18 -6
- package/dist/shared/assistant/types.d.ts +5 -1
- package/dist/shared/assistant/types.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantApiCallsConsentDialog.js +4 -4
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +989 -718
- package/dist/shared/assistant/ui/AssistantConversationList.js +6 -6
- package/dist/shared/assistant/ui/AssistantLanguageMenu.js +6 -6
- package/dist/shared/assistant/ui/AssistantMessageItem.d.ts +8 -1
- package/dist/shared/assistant/ui/AssistantMessageItem.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMessageItem.js +77 -76
- package/dist/shared/assistant/ui/AssistantMessageList.d.ts +13 -1
- package/dist/shared/assistant/ui/AssistantMessageList.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMessageList.js +15 -13
- package/dist/shared/assistant/ui/AssistantReplyLanguageSelector.js +5 -5
- package/dist/shared/assistant/ui/AssistantSpeechProvider.js +209 -209
- package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.d.ts +62 -0
- package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.d.ts.map +1 -0
- package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.js +253 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalCard.d.ts +72 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalCard.d.ts.map +1 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalCard.js +439 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalSlot.d.ts +40 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalSlot.d.ts.map +1 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalSlot.js +35 -0
- package/dist/shared/assistant/ui/composer/AssistantComposer.js +8 -8
- package/dist/shared/assistant/ui/useVoiceSession.d.ts +28 -0
- package/dist/shared/assistant/ui/useVoiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/ui/useVoiceSession.js +159 -110
- package/dist/shared/assistant/ui/useWriteProposalConfirm.d.ts +61 -0
- package/dist/shared/assistant/ui/useWriteProposalConfirm.d.ts.map +1 -0
- package/dist/shared/assistant/ui/useWriteProposalConfirm.js +109 -0
- package/dist/shared/assistant/ui/useWriteProposals.d.ts +102 -0
- package/dist/shared/assistant/ui/useWriteProposals.d.ts.map +1 -0
- package/dist/shared/assistant/ui/useWriteProposals.js +230 -0
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts +17 -1
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +141 -109
- package/dist/shared/assistant/ui/writeProposalPresentation.d.ts +76 -0
- package/dist/shared/assistant/ui/writeProposalPresentation.d.ts.map +1 -0
- package/dist/shared/assistant/ui/writeProposalPresentation.js +110 -0
- package/dist/shared/assistant/usageReporting.d.ts +108 -0
- package/dist/shared/assistant/usageReporting.d.ts.map +1 -0
- package/dist/shared/assistant/usageReporting.js +155 -0
- package/dist/shared/assistant/useAssistantApiAccess.d.ts +49 -14
- package/dist/shared/assistant/useAssistantApiAccess.d.ts.map +1 -1
- package/dist/shared/assistant/useAssistantApiAccess.js +43 -25
- package/dist/shared/assistant/useAssistantHeartbeat.d.ts.map +1 -1
- package/dist/shared/assistant/useAssistantHeartbeat.js +5 -5
- package/dist/shared/assistant/useWorkspaceWriteAccess.d.ts +5 -6
- package/dist/shared/assistant/useWorkspaceWriteAccess.d.ts.map +1 -1
- package/dist/shared/assistant/voice/voiceSession.d.ts +46 -0
- package/dist/shared/assistant/voice/voiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/voice/voiceSession.js +35 -2
- package/dist/shared/assistant/writeConfirmSeam.d.ts +32 -0
- package/dist/shared/assistant/writeConfirmSeam.d.ts.map +1 -0
- package/dist/shared/assistant/writeConfirmSeam.js +23 -0
- package/dist/shared/assistant/writeModeConsent.d.ts +16 -8
- package/dist/shared/assistant/writeModeConsent.d.ts.map +1 -1
- package/dist/shared/assistant/writeModeConsent.js +2 -2
- package/dist/shared/assistant/writeProposalDiscovery.d.ts +123 -0
- package/dist/shared/assistant/writeProposalDiscovery.d.ts.map +1 -0
- package/dist/shared/assistant/writeProposalDiscovery.js +210 -0
- package/dist/shared/assistant/writeProposalErrorCopy.d.ts +135 -0
- package/dist/shared/assistant/writeProposalErrorCopy.d.ts.map +1 -0
- package/dist/shared/assistant/writeProposalErrorCopy.js +135 -0
- package/dist/shared/assistant/writeProposalVoice.d.ts +133 -0
- package/dist/shared/assistant/writeProposalVoice.d.ts.map +1 -0
- package/dist/shared/assistant/writeProposalVoice.js +66 -0
- package/dist/shared/assistant/writeProposals.d.ts +268 -0
- package/dist/shared/assistant/writeProposals.d.ts.map +1 -0
- package/dist/shared/assistant/writeProposals.js +445 -0
- package/dist/shared/assistant/writeReplyBinder.d.ts +166 -0
- package/dist/shared/assistant/writeReplyBinder.d.ts.map +1 -0
- package/dist/shared/assistant/writeReplyBinder.js +233 -0
- package/dist/shared/assistant/writeReplySend.d.ts +110 -0
- package/dist/shared/assistant/writeReplySend.d.ts.map +1 -0
- package/dist/shared/assistant/writeReplySend.js +93 -0
- package/dist/shared-assistant.js +167 -152
- package/dist/ui/modal-shell.d.ts +14 -1
- package/dist/ui/modal-shell.d.ts.map +1 -1
- package/dist/ui/modal-shell.js +8 -6
- package/package.json +1 -1
|
@@ -6,8 +6,11 @@ import { INCOMPLETE_TURN_NOTICES as i } from "./streamBudget.js";
|
|
|
6
6
|
import { STAGE_COPY as a, THINKING_PHRASES as o } from "./stageCopy.js";
|
|
7
7
|
import { VOICE_MUTED_LABEL as s, VOICE_THINKING_LABEL as c } from "./voice/voiceStatus.js";
|
|
8
8
|
import { ATTACHMENT_SOURCES as l } from "./attachmentSources.js";
|
|
9
|
+
import { WRITE_REPLY_COPY as u } from "./writeReplyBinder.js";
|
|
10
|
+
import { WRITE_PROPOSAL_ERROR_COPY as d } from "./writeProposalErrorCopy.js";
|
|
11
|
+
import { WRITE_PROPOSAL_VOICE_COPY as f } from "./writeProposalVoice.js";
|
|
9
12
|
//#region src/shared/assistant/i18nManifest.ts
|
|
10
|
-
var
|
|
13
|
+
var p = {
|
|
11
14
|
"apiCalls.consentBody": "In Take action mode the assistant can read AND change your data — creating records, logging activity, updating details, and more, on your behalf.",
|
|
12
15
|
"apiCalls.consentBody2": "It will describe what it is about to do and ask you to confirm before making a change. Only continue if you want the assistant to take actions for you.",
|
|
13
16
|
"apiCalls.consentCancel": "Stay in Ask",
|
|
@@ -227,27 +230,83 @@ var u = {
|
|
|
227
230
|
"writeConsent.cancel": "Stay in {{mode}}",
|
|
228
231
|
"writeConsent.confirm": "Enable {{mode}}",
|
|
229
232
|
"writeConsent.title": "Switch to {{mode}} mode?",
|
|
230
|
-
"writeConsent.unconfirmed": "It does not stop to ask before each change — it makes changes as soon as it decides to. Only continue if you want the assistant to change your data without asking first."
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
233
|
+
"writeConsent.unconfirmed": "It does not stop to ask before each change — it makes changes as soon as it decides to. Only continue if you want the assistant to change your data without asking first.",
|
|
234
|
+
"writeProposal.aria": "Proposed change: {{label}}",
|
|
235
|
+
"writeProposal.cancel": "Cancel",
|
|
236
|
+
"writeProposal.confirmFallback": "Confirm this change",
|
|
237
|
+
"writeProposal.confirming": "Confirming…",
|
|
238
|
+
"writeProposal.consequences": "What this will do",
|
|
239
|
+
"writeProposal.dialog.close": "Close",
|
|
240
|
+
"writeProposal.dialog.exactly": "Exactly what will happen",
|
|
241
|
+
"writeProposal.dialog.noLongerPending": "This change can no longer be confirmed here.",
|
|
242
|
+
"writeProposal.dialog.title": "Confirm this change",
|
|
243
|
+
"writeProposal.diff.absent": "(not set)",
|
|
244
|
+
"writeProposal.diff.after": "After",
|
|
245
|
+
"writeProposal.diff.before": "Before",
|
|
246
|
+
"writeProposal.diff.change": "Change",
|
|
247
|
+
"writeProposal.diff.gateway": "Data",
|
|
248
|
+
"writeProposal.diff.none": "No values changed",
|
|
249
|
+
"writeProposal.diff.value": "Value",
|
|
250
|
+
"writeProposal.executionFenced": "You can review or cancel this change. Running it from the assistant becomes available once secure confirmation is enabled.",
|
|
251
|
+
"writeProposal.expiresIn": "Expires in {{time}}",
|
|
252
|
+
"writeProposal.expiresInAbout": "Expires in about {{minutes}} min",
|
|
253
|
+
"writeProposal.expiresSoon": "Expires in under a minute",
|
|
254
|
+
"writeProposal.gateway.global": "Account and organization data",
|
|
255
|
+
"writeProposal.gateway.workspace": "Workspace data",
|
|
256
|
+
"writeProposal.hiddenValue": "Hidden value",
|
|
257
|
+
"writeProposal.hideValue": "Hide",
|
|
258
|
+
"writeProposal.inert": "This change can no longer be confirmed here. Nothing was done; ask the assistant to prepare it again if you still want it.",
|
|
259
|
+
"writeProposal.kind.bulk": "Changes several items",
|
|
260
|
+
"writeProposal.kind.credential": "Touches credentials",
|
|
261
|
+
"writeProposal.kind.destructive": "Deletes data",
|
|
262
|
+
"writeProposal.kind.financial": "Involves money",
|
|
263
|
+
"writeProposal.kind.irreversible": "Can't be undone",
|
|
264
|
+
"writeProposal.kind.permission": "Changes access",
|
|
265
|
+
"writeProposal.notApprovable": "This change isn't ready to confirm. If it stays this way, ask the assistant to prepare it again.",
|
|
266
|
+
"writeProposal.notAvailableYet": "Confirming changes from the assistant isn't available in this session yet.",
|
|
267
|
+
"writeProposal.repeat": "You made this same change recently. Confirming makes it again.",
|
|
268
|
+
"writeProposal.review": "Review & confirm…",
|
|
269
|
+
"writeProposal.revision": "Revised — version {{revision}}",
|
|
270
|
+
"writeProposal.showValue": "Show",
|
|
271
|
+
"writeProposal.status.declined": "Cancelled",
|
|
272
|
+
"writeProposal.status.executing": "Working…",
|
|
273
|
+
"writeProposal.status.expired": "Expired — nothing was done",
|
|
274
|
+
"writeProposal.status.failed": "Didn't go through: {{error}}",
|
|
275
|
+
"writeProposal.status.failedNoDetail": "Didn't go through",
|
|
276
|
+
"writeProposal.status.outcomeUnknown": "Couldn't confirm — check before trying again",
|
|
277
|
+
"writeProposal.status.pending": "Waiting for you",
|
|
278
|
+
"writeProposal.status.succeeded": "Done — {{summary}}",
|
|
279
|
+
"writeProposal.status.succeededNoDetail": "Done",
|
|
280
|
+
"writeProposal.status.superseded": "Replaced — the conversation moved on",
|
|
281
|
+
"writeProposal.targetCount": "Items affected: {{count}}",
|
|
282
|
+
"writeProposal.timeUp": "Time's up — this can no longer be confirmed",
|
|
283
|
+
"writeProposal.title": "Review and approve this change.",
|
|
284
|
+
"writeProposal.values": "Values",
|
|
285
|
+
"writeProposal.variablesOmitted": "{{count}} more values not shown",
|
|
286
|
+
"writeProposal.waitForTurn": "You can confirm once the assistant finishes replying."
|
|
287
|
+
}, m = (e) => Object.fromEntries(e.map((e) => [e.key, e.fallback])), h = Object.freeze({
|
|
288
|
+
...m(Object.values(a)),
|
|
289
|
+
...m(o),
|
|
290
|
+
...m([c, s]),
|
|
291
|
+
...m(i),
|
|
292
|
+
...m(Object.values(r)),
|
|
293
|
+
...m(Object.values(u)),
|
|
294
|
+
...m(Object.values(d)),
|
|
295
|
+
...m(Object.values(f)),
|
|
237
296
|
...Object.fromEntries(l.map((e) => [e.labelKey, e.labelFallback]))
|
|
238
|
-
}),
|
|
239
|
-
...
|
|
240
|
-
...
|
|
297
|
+
}), g = Object.freeze({
|
|
298
|
+
...p,
|
|
299
|
+
...h
|
|
241
300
|
});
|
|
242
|
-
function
|
|
301
|
+
function _(e) {
|
|
243
302
|
let r = e.map((e) => e.id).filter((e) => !n(e));
|
|
244
303
|
if (r.length > 0) throw Error(`assistantModeI18nCopy: malformed mode id ${r.map((e) => JSON.stringify(e)).join(", ")}. Declare product modes with declareAssistantMode().`);
|
|
245
304
|
return Object.fromEntries(e.map((e) => [`mode.${e.id}`, e.label || t(e)]));
|
|
246
305
|
}
|
|
247
|
-
function
|
|
306
|
+
function v(t) {
|
|
248
307
|
let n = {
|
|
249
|
-
...
|
|
250
|
-
...
|
|
308
|
+
...g,
|
|
309
|
+
..._(t.modes)
|
|
251
310
|
}, r = Object.entries(t.overrides ?? {}), i = r.filter(([e]) => !Object.hasOwn(n, e)).map(([e]) => e);
|
|
252
311
|
if (i.length > 0) throw Error(`assistantI18nSeedCopy: no shared assistant key ${i.join(", ")} to override. Check the spelling, or that the key is a mode this product offers; a key fe-libs no longer requests belongs with the product's own keys.`);
|
|
253
312
|
let a = r.filter(([, e]) => e.trim() === "").map(([e]) => e);
|
|
@@ -259,4 +318,4 @@ function h(t) {
|
|
|
259
318
|
return Object.fromEntries(Object.entries(o).map(([n, r]) => [e(t.namespace, n), r]));
|
|
260
319
|
}
|
|
261
320
|
//#endregion
|
|
262
|
-
export {
|
|
321
|
+
export { h as ASSISTANT_I18N_COMPUTED_COPY, p as ASSISTANT_I18N_LITERAL_COPY, g as ASSISTANT_I18N_MANIFEST, v as assistantI18nSeedCopy, _ as assistantModeI18nCopy };
|
|
@@ -102,6 +102,13 @@ export * from './ui/AssistantMarkdownImage';
|
|
|
102
102
|
export * from './ui/AssistantMarkdownRenderer';
|
|
103
103
|
export * from './ui/AssistantMessageAttachments';
|
|
104
104
|
export * from './ui/AssistantPendingWriteCard';
|
|
105
|
+
export * from './ui/AssistantWriteProposalCard';
|
|
106
|
+
export * from './ui/AssistantWriteConfirmDialog';
|
|
107
|
+
export * from './ui/useWriteProposalConfirm';
|
|
108
|
+
export * from './ui/writeProposalPresentation';
|
|
109
|
+
export * from './writeConfirmSeam';
|
|
110
|
+
export * from './ui/AssistantWriteProposalSlot';
|
|
111
|
+
export * from './ui/useWriteProposals';
|
|
105
112
|
export * from './ui/AssistantLanguageMenu';
|
|
106
113
|
export * from './ui/AssistantReplyLanguageSelector';
|
|
107
114
|
export * from './ui/AssistantSpeakButton';
|
|
@@ -181,6 +188,14 @@ export * from './localUiCommands';
|
|
|
181
188
|
export * from './localUiCommandCopy';
|
|
182
189
|
export * from './turnOutcomeCopy';
|
|
183
190
|
export * from './aiCredits';
|
|
191
|
+
export * from './usageReporting';
|
|
192
|
+
export * from './writeProposals';
|
|
193
|
+
export * from './writeReplyBinder';
|
|
194
|
+
export * from './writeProposalDiscovery';
|
|
195
|
+
export * from './writeProposalErrorCopy';
|
|
196
|
+
export * from './writeReplySend';
|
|
197
|
+
export * from './proposalWriteRules';
|
|
198
|
+
export * from './writeProposalVoice';
|
|
184
199
|
export * from './useWorkspaceWriteAccess';
|
|
185
200
|
export * from './documentExtract';
|
|
186
201
|
export * from './useAssistantAttachments';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,7 @@ function d(n, r) {
|
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
function f(e, t) {
|
|
45
|
-
return e?.requiresAdmin ? t.loading ? n.modeAccessPending.fallback : t.canUseAdminModes ? null : n.
|
|
45
|
+
return e?.requiresAdmin ? t.loading ? n.modeAccessPending.fallback : t.canUseAdminModes ? null : n.modeWorkspaceAdminOnly.fallback : null;
|
|
46
46
|
}
|
|
47
47
|
var p = n.modeUnavailable.fallback;
|
|
48
48
|
function m(e, t) {
|
|
@@ -15,6 +15,28 @@ export declare const GET_ACTIVE_SANDBOXES = "\n query GetActiveSandboxes($conte
|
|
|
15
15
|
export declare const PROXY_SANDBOX_REQUEST = "\n mutation ProxySandboxRequest($input: ProxySandboxRequestInput!) {\n proxySandboxRequest(input: $input) {\n status\n body\n }\n }\n";
|
|
16
16
|
export declare const STOP_ASSISTANT_SANDBOX = "\n mutation StopAssistantSandbox($id: ID!, $context: ContextInput!) {\n stopSandbox(id: $id, context: $context) {\n id\n status\n }\n }\n";
|
|
17
17
|
export declare const EXTEND_SANDBOX_TTL = "\n mutation ExtendSandboxTtl($id: ID!, $additionalSeconds: Int!, $context: ContextInput!) {\n extendSandboxTTL(id: $id, additionalSeconds: $additionalSeconds, context: $context) {\n id\n expiresAt\n }\n }\n";
|
|
18
|
+
/**
|
|
19
|
+
* BOFF-7800 Phase 1 / BOFF-7803 5a — the dedicated assistant provisioning
|
|
20
|
+
* path, gated on `assistant:use` (every workspace role) rather than
|
|
21
|
+
* `createSandbox`'s permissions, under the same sandbox quota.
|
|
22
|
+
*
|
|
23
|
+
* ★★ The input carries no containers, command, resources or token env: the
|
|
24
|
+
* service builds the sandbox itself and accepts only `AI_ASSISTANT_PRODUCT`,
|
|
25
|
+
* `HOSTNAME` and `WORKSPACE_ID` (wspace-sandbox-svc `assistant-sandbox.gql`).
|
|
26
|
+
* Used only behind a product's `writeApproval: 'proposal-v1'`, and
|
|
27
|
+
* feature-detected: a supergraph without it falls back to `createSandbox`.
|
|
28
|
+
*/
|
|
29
|
+
export declare const PROVISION_ASSISTANT_SANDBOX = "\n mutation ProvisionAssistantSandbox($input: ProvisionAssistantSandboxInput!) {\n provisionAssistantSandbox(input: $input) {\n id\n name\n status\n }\n }\n";
|
|
30
|
+
/**
|
|
31
|
+
* Owner-scoped stop for a sandbox from the dedicated path: `assistant:use`,
|
|
32
|
+
* and the service answers NOT_FOUND for anything that is not the caller's own
|
|
33
|
+
* assistant sandbox. It exists because a Viewer holds no `sandbox` permission
|
|
34
|
+
* that `stopSandbox` accepts, so without it a superseded sandbox could never be
|
|
35
|
+
* released against a one-environment quota.
|
|
36
|
+
*/
|
|
37
|
+
export declare const STOP_MY_ASSISTANT_SANDBOX = "\n mutation StopMyAssistantSandbox($id: ID!, $context: ContextInput!) {\n stopMyAssistantSandbox(id: $id, context: $context) {\n id\n status\n }\n }\n";
|
|
38
|
+
/** Owner-scoped TTL extension, for the same reason as `STOP_MY_ASSISTANT_SANDBOX`. */
|
|
39
|
+
export declare const EXTEND_MY_ASSISTANT_SANDBOX_TTL = "\n mutation ExtendMyAssistantSandboxTtl(\n $id: ID!\n $additionalSeconds: Int!\n $context: ContextInput!\n ) {\n extendMyAssistantSandboxTTL(id: $id, additionalSeconds: $additionalSeconds, context: $context) {\n id\n expiresAt\n }\n }\n";
|
|
18
40
|
export declare const CHECK_AI_CREDITS = "\n mutation CheckAiCredits {\n checkAiCredits\n }\n";
|
|
19
41
|
export declare const REPORT_AI_TOKEN_USAGE = "\n mutation ReportAiTokenUsage($input: ReportAiTokenUsageInput!) {\n reportAiTokenUsage(input: $input)\n }\n";
|
|
20
42
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/operations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,cAAc,mMAW1B,CAAC;AAEF,eAAO,MAAM,WAAW,qNAWvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,mPAQpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,4MAWhC,CAAC;AAEF,eAAO,MAAM,qBAAqB,4JAOjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,gKAOlC,CAAC;AAEF,eAAO,MAAM,kBAAkB,qOAO9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,6DAI5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,sHAIjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,8OAU5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/operations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,cAAc,mMAW1B,CAAC;AAEF,eAAO,MAAM,WAAW,qNAWvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,mPAQpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,4MAWhC,CAAC;AAEF,eAAO,MAAM,qBAAqB,4JAOjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,gKAOlC,CAAC;AAEF,eAAO,MAAM,kBAAkB,qOAO9B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,wLAQvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,6KAOrC,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,+BAA+B,6QAW3C,CAAC;AAEF,eAAO,MAAM,gBAAgB,6DAI5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,sHAIjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,8OAU5C,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/shared/assistant/operations.ts
|
|
2
|
-
var e = "\n mutation CreateSandbox($input: CreateSandboxInput!) {\n createSandbox(input: $input) {\n id\n name\n status\n network {\n internalUrl\n }\n }\n }\n", t = "\n query GetSandbox($id: ID!, $context: ContextInput!) {\n getSandbox(id: $id, context: $context) {\n id\n status\n errorMessage\n network {\n internalUrl\n }\n }\n }\n", n = "\n query WaitForSandboxRunning($id: ID!, $timeoutSeconds: Int, $context: ContextInput!) {\n waitForSandboxRunning(id: $id, timeoutSeconds: $timeoutSeconds, context: $context) {\n id\n status\n errorMessage\n }\n }\n", r = "\n query GetActiveSandboxes($context: ContextInput!) {\n getActiveSandboxes(context: $context) {\n id\n name\n status\n metadata\n template\n createdBy\n }\n }\n", i = "\n mutation ProxySandboxRequest($input: ProxySandboxRequestInput!) {\n proxySandboxRequest(input: $input) {\n status\n body\n }\n }\n", a = "\n mutation StopAssistantSandbox($id: ID!, $context: ContextInput!) {\n stopSandbox(id: $id, context: $context) {\n id\n status\n }\n }\n", o = "\n mutation ExtendSandboxTtl($id: ID!, $additionalSeconds: Int!, $context: ContextInput!) {\n extendSandboxTTL(id: $id, additionalSeconds: $additionalSeconds, context: $context) {\n id\n expiresAt\n }\n }\n", s = "\n mutation CheckAiCredits {\n checkAiCredits\n }\n",
|
|
2
|
+
var e = "\n mutation CreateSandbox($input: CreateSandboxInput!) {\n createSandbox(input: $input) {\n id\n name\n status\n network {\n internalUrl\n }\n }\n }\n", t = "\n query GetSandbox($id: ID!, $context: ContextInput!) {\n getSandbox(id: $id, context: $context) {\n id\n status\n errorMessage\n network {\n internalUrl\n }\n }\n }\n", n = "\n query WaitForSandboxRunning($id: ID!, $timeoutSeconds: Int, $context: ContextInput!) {\n waitForSandboxRunning(id: $id, timeoutSeconds: $timeoutSeconds, context: $context) {\n id\n status\n errorMessage\n }\n }\n", r = "\n query GetActiveSandboxes($context: ContextInput!) {\n getActiveSandboxes(context: $context) {\n id\n name\n status\n metadata\n template\n createdBy\n }\n }\n", i = "\n mutation ProxySandboxRequest($input: ProxySandboxRequestInput!) {\n proxySandboxRequest(input: $input) {\n status\n body\n }\n }\n", a = "\n mutation StopAssistantSandbox($id: ID!, $context: ContextInput!) {\n stopSandbox(id: $id, context: $context) {\n id\n status\n }\n }\n", o = "\n mutation ExtendSandboxTtl($id: ID!, $additionalSeconds: Int!, $context: ContextInput!) {\n extendSandboxTTL(id: $id, additionalSeconds: $additionalSeconds, context: $context) {\n id\n expiresAt\n }\n }\n", s = "\n mutation ProvisionAssistantSandbox($input: ProvisionAssistantSandboxInput!) {\n provisionAssistantSandbox(input: $input) {\n id\n name\n status\n }\n }\n", c = "\n mutation StopMyAssistantSandbox($id: ID!, $context: ContextInput!) {\n stopMyAssistantSandbox(id: $id, context: $context) {\n id\n status\n }\n }\n", l = "\n mutation ExtendMyAssistantSandboxTtl(\n $id: ID!\n $additionalSeconds: Int!\n $context: ContextInput!\n ) {\n extendMyAssistantSandboxTTL(id: $id, additionalSeconds: $additionalSeconds, context: $context) {\n id\n expiresAt\n }\n }\n", u = "\n mutation CheckAiCredits {\n checkAiCredits\n }\n", d = "\n mutation ReportAiTokenUsage($input: ReportAiTokenUsageInput!) {\n reportAiTokenUsage(input: $input)\n }\n", f = "\n mutation ReportMyAssistantTurnTimings($input: ReportAssistantTurnTimingsInput!) {\n reportMyAssistantTurnTimings(input: $input) {\n enabled\n accepted\n rejected\n duplicate\n rateLimited\n }\n }\n";
|
|
3
3
|
//#endregion
|
|
4
|
-
export {
|
|
4
|
+
export { u as CHECK_AI_CREDITS, e as CREATE_SANDBOX, l as EXTEND_MY_ASSISTANT_SANDBOX_TTL, o as EXTEND_SANDBOX_TTL, r as GET_ACTIVE_SANDBOXES, t as GET_SANDBOX, s as PROVISION_ASSISTANT_SANDBOX, i as PROXY_SANDBOX_REQUEST, d as REPORT_AI_TOKEN_USAGE, f as REPORT_MY_ASSISTANT_TURN_TIMINGS, a as STOP_ASSISTANT_SANDBOX, c as STOP_MY_ASSISTANT_SANDBOX, n as WAIT_FOR_SANDBOX_RUNNING };
|
|
@@ -41,6 +41,13 @@ export interface PrewarmInput {
|
|
|
41
41
|
};
|
|
42
42
|
/** The message will be SPOKEN — a mic tap, not a keystroke. */
|
|
43
43
|
dictated: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* ★★ BOFF-7803 5a (FE9): does `mode` hold every change as a proposal only a
|
|
46
|
+
* button confirms (`isVoiceProposalBound`)? The send then takes a spoken
|
|
47
|
+
* turn there, so a warm may prepare for one. Absent: never — the voice ban
|
|
48
|
+
* stands, exactly as before.
|
|
49
|
+
*/
|
|
50
|
+
voiceProposalBound?: (mode: AssistantMode) => boolean;
|
|
44
51
|
/** Any turn in any conversation, read from the store (it outlives a remount). */
|
|
45
52
|
turnInFlight: boolean;
|
|
46
53
|
/** A warm is already running in this workspace. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prewarm.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/prewarm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAChE,YAAY,EAAE,aAAa,CAAC;IAC5B,YAAY,EAAE,aAAa,CAAC;IAC5B,KAAK,EAAE,SAAS,IAAI,CAClB,mBAAmB,EACnB,IAAI,GAAG,cAAc,GAAG,eAAe,CACxC,EAAE,CAAC;IACJ,sBAAsB,EAAE,SAAS,aAAa,EAAE,CAAC;IACjD,4EAA4E;IAC5E,WAAW,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,gBAAgB,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7D,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;IAClB,iFAAiF;IACjF,YAAY,EAAE,OAAO,CAAC;IACtB,mDAAmD;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAClD,oEAAoE;IACpE,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,aAAa,CAAC;IACpB;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"prewarm.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/prewarm.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ function r(n) {
|
|
|
7
7
|
let r = n.autoRouting && n.autoOffered ? n.active?.routedBy === "auto" ? n.active.mode : n.autoReadMode : n.selectedMode, i = n.modes.find((e) => e.id === r);
|
|
8
8
|
if (!i) return null;
|
|
9
9
|
let a = i.writeCapable === !0 || e(r);
|
|
10
|
-
if (a && !n.acknowledgedWriteModes.includes(r) || a && n.dictated || t(i, n.adminAccess)) return null;
|
|
10
|
+
if (a && !n.acknowledgedWriteModes.includes(r) || a && n.dictated && n.voiceProposalBound?.(r) !== !0 || t(i, n.adminAccess)) return null;
|
|
11
11
|
let o = n.lastPrewarmAt.get(r);
|
|
12
12
|
return o !== void 0 && n.now - o < 3e4 ? null : {
|
|
13
13
|
mode: r,
|
|
@@ -2,6 +2,24 @@ import { LocalUiCommandOptions } from './localUiCommands';
|
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { AssistantModeConfig } from './conversation';
|
|
4
4
|
import { AssistantMode, PageContext } from './types';
|
|
5
|
+
import { WriteApprovalMode, WriteProposalView } from './writeProposals';
|
|
6
|
+
/**
|
|
7
|
+
* The sixth argument of `buildPrompt` (BOFF-7803 5a, design §3.5): which write
|
|
8
|
+
* flow the sandbox the turn goes to enforces, from THAT sandbox's own `/health`
|
|
9
|
+
* (`legacy` when it said nothing, or has not been read).
|
|
10
|
+
*/
|
|
11
|
+
export interface AssistantPromptOptions {
|
|
12
|
+
writeApproval: WriteApprovalMode;
|
|
13
|
+
}
|
|
14
|
+
/** What a product's own confirmation dialog answered (BOFF-7803 5a). */
|
|
15
|
+
export type AssistantConfirmWriteResult = 'confirmed' | 'cancelled' | 'unhandled';
|
|
16
|
+
/**
|
|
17
|
+
* A product's own dialog for confirming a HIGH-risk write proposal. See
|
|
18
|
+
* `AssistantProductCapabilities.confirmWrite`.
|
|
19
|
+
*/
|
|
20
|
+
export type AssistantConfirmWrite = (proposal: WriteProposalView, context: {
|
|
21
|
+
signal: AbortSignal;
|
|
22
|
+
}) => Promise<AssistantConfirmWriteResult>;
|
|
5
23
|
/**
|
|
6
24
|
* What a product tells the shared assistant about ITSELF.
|
|
7
25
|
*
|
|
@@ -58,7 +76,17 @@ export interface AssistantProductCapabilities {
|
|
|
58
76
|
* one product's voice imposed on the rest, so when absent the user's text is
|
|
59
77
|
* sent unwrapped.
|
|
60
78
|
*/
|
|
61
|
-
buildPrompt?: (mode: AssistantMode, content: string, languageName?: string, isExplicitChoice?: boolean, dictated?: boolean
|
|
79
|
+
buildPrompt?: (mode: AssistantMode, content: string, languageName?: string, isExplicitChoice?: boolean, dictated?: boolean,
|
|
80
|
+
/**
|
|
81
|
+
* ★ BOFF-7803 5a: `{ writeApproval }` of the sandbox this turn goes to.
|
|
82
|
+
* At `legacy` a product returns exactly what it returns today; at
|
|
83
|
+
* `proposal-v1` its write preamble becomes `PROPOSAL_WRITE_RULES(name)`,
|
|
84
|
+
* because asking for a typed "yes" there would contradict the sandbox,
|
|
85
|
+
* where only the card's button confirms a change. A product that ignores
|
|
86
|
+
* it keeps its legacy text: the sandbox's own policy still holds, and a
|
|
87
|
+
* bare "yes" is bridged rather than stranded.
|
|
88
|
+
*/
|
|
89
|
+
options?: AssistantPromptOptions) => string;
|
|
62
90
|
/**
|
|
63
91
|
* Record what a turn cost, against the product's own billing.
|
|
64
92
|
*
|
|
@@ -118,6 +146,56 @@ export interface AssistantProductCapabilities {
|
|
|
118
146
|
* product with its own reason not to send even those says so here.
|
|
119
147
|
*/
|
|
120
148
|
reportTurnTimings?: boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Which write-approval flow this product's assistant REQUESTS, and with it
|
|
151
|
+
* which provisioning path the panel uses (BOFF-7803 5a + BOFF-7800 Phase 1).
|
|
152
|
+
* `legacy` unless exactly `'proposal-v1'`.
|
|
153
|
+
*
|
|
154
|
+
* ★★ ONE flag stages both, per product (BigConsole first). At
|
|
155
|
+
* `'proposal-v1'`, Ask and Take action sandboxes are provisioned through the
|
|
156
|
+
* dedicated, `assistant:use`-gated `provisionAssistantSandbox` — which is
|
|
157
|
+
* what opens Take action to non-admins, fenced (they can prepare, revise and
|
|
158
|
+
* cancel; they cannot execute) — and a Take-action sandbox is requested with
|
|
159
|
+
* the proposal flow. At `legacy` the panel uses `createSandbox` exactly as
|
|
160
|
+
* before, so a product that has not turned it on changes in nothing.
|
|
161
|
+
*
|
|
162
|
+
* ★★ It decides what the panel ASKS FOR, never which UI it shows: the card,
|
|
163
|
+
* the dialog and the confirm button follow what the issuing sandbox's own
|
|
164
|
+
* `/health` reports (`readSandboxWriteCapabilities`), and every authority —
|
|
165
|
+
* who may execute, what RBAC allows — is the server's.
|
|
166
|
+
*
|
|
167
|
+
* ★ Irreducible: whether a product is ready for the proposal flow, and for
|
|
168
|
+
* its members to open Take action, is that product's rollout decision.
|
|
169
|
+
*/
|
|
170
|
+
writeApproval?: WriteApprovalMode;
|
|
171
|
+
/**
|
|
172
|
+
* The product's own dialog for confirming a HIGH-risk write proposal: one of
|
|
173
|
+
* the OD-12 dialog kinds (destructive, financial, bulk, permission,
|
|
174
|
+
* credential, irreversible). Absent, the shared `AssistantWriteConfirmDialog`
|
|
175
|
+
* is used (BOFF-7803 5a).
|
|
176
|
+
*
|
|
177
|
+
* ★★ It ASKS, and never approves. It receives a copy of the proposal and an
|
|
178
|
+
* abort signal — never the proposal client, never an approve function — and
|
|
179
|
+
* answers with what the person chose. fe-libs itself then approves
|
|
180
|
+
* (`method: 'button'`, surface `host_modal`) on `'confirmed'`, declines on
|
|
181
|
+
* `'cancelled'`, and shows the default dialog on `'unhandled'`, on a throw or
|
|
182
|
+
* on any other answer. An answer that arrives after `signal` aborted (the
|
|
183
|
+
* proposal was replaced, the conversation closed, the panel unmounted) is
|
|
184
|
+
* ignored.
|
|
185
|
+
*
|
|
186
|
+
* ★ Called only for a proposal whose confirmation is a dialog; every other
|
|
187
|
+
* proposal confirms on the card and never reaches this. The dialog must show
|
|
188
|
+
* the proposal's readback, `targetCount` and consequences, label its confirm
|
|
189
|
+
* with exactly `description.confirmLabel`, keep any option that would change
|
|
190
|
+
* the payload read-only, never show a value flagged `sensitive` unmasked (the
|
|
191
|
+
* copy carries it as the record does), and never use `window.confirm`. It may
|
|
192
|
+
* pick its dialog by `description.confirmSurface.key`.
|
|
193
|
+
*
|
|
194
|
+
* ★ Irreducible: only the product knows its own dialogs. 5a is a safety
|
|
195
|
+
* floor, not the final security boundary; the issuing sandbox and
|
|
196
|
+
* wspace-sandbox-svc decide whether anything runs.
|
|
197
|
+
*/
|
|
198
|
+
confirmWrite?: AssistantConfirmWrite;
|
|
121
199
|
}
|
|
122
200
|
export interface AssistantProductValue extends AssistantProductCapabilities {
|
|
123
201
|
/**
|
|
@@ -135,7 +213,7 @@ export interface AssistantProductProviderProps extends AssistantProductCapabilit
|
|
|
135
213
|
* Mount once, above the assistant. Everything below can ask what product it is
|
|
136
214
|
* running inside and what that product offers.
|
|
137
215
|
*/
|
|
138
|
-
export declare function AssistantProductProvider({ product, modes, describeCurrentPage, gatherPageContext, buildPrompt, reportTokenUsage, storageFolders, localUiCommands, reportTurnTimings, children, }: AssistantProductProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
216
|
+
export declare function AssistantProductProvider({ product, modes, describeCurrentPage, gatherPageContext, buildPrompt, reportTokenUsage, storageFolders, localUiCommands, reportTurnTimings, writeApproval, confirmWrite, children, }: AssistantProductProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
139
217
|
/** The product in force, or null when no provider is mounted. */
|
|
140
218
|
export declare function useAssistantProductOrNull(): AssistantProductValue | null;
|
|
141
219
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/product.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAA2D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"product.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/product.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@ import { createContext as e, useContext as t, useEffect as n, useMemo as r, useS
|
|
|
2
2
|
import { jsx as a } from "react/jsx-runtime";
|
|
3
3
|
//#region src/shared/assistant/product.tsx
|
|
4
4
|
var o = e(null);
|
|
5
|
-
function s({ product: e, modes: t, describeCurrentPage: n, gatherPageContext: i, buildPrompt: s, reportTokenUsage: c, storageFolders: l, localUiCommands: u, reportTurnTimings: d,
|
|
6
|
-
let
|
|
5
|
+
function s({ product: e, modes: t, describeCurrentPage: n, gatherPageContext: i, buildPrompt: s, reportTokenUsage: c, storageFolders: l, localUiCommands: u, reportTurnTimings: d, writeApproval: f, confirmWrite: p, children: m }) {
|
|
6
|
+
let h = r(() => ({
|
|
7
7
|
product: e,
|
|
8
8
|
modes: t,
|
|
9
9
|
describeCurrentPage: n,
|
|
@@ -12,7 +12,9 @@ function s({ product: e, modes: t, describeCurrentPage: n, gatherPageContext: i,
|
|
|
12
12
|
reportTokenUsage: c,
|
|
13
13
|
storageFolders: l,
|
|
14
14
|
localUiCommands: u,
|
|
15
|
-
reportTurnTimings: d
|
|
15
|
+
reportTurnTimings: d,
|
|
16
|
+
writeApproval: f,
|
|
17
|
+
confirmWrite: p
|
|
16
18
|
}), [
|
|
17
19
|
e,
|
|
18
20
|
t,
|
|
@@ -22,11 +24,13 @@ function s({ product: e, modes: t, describeCurrentPage: n, gatherPageContext: i,
|
|
|
22
24
|
c,
|
|
23
25
|
l,
|
|
24
26
|
u,
|
|
25
|
-
d
|
|
27
|
+
d,
|
|
28
|
+
f,
|
|
29
|
+
p
|
|
26
30
|
]);
|
|
27
31
|
return /* @__PURE__ */ a(o.Provider, {
|
|
28
|
-
value:
|
|
29
|
-
children:
|
|
32
|
+
value: h,
|
|
33
|
+
children: m
|
|
30
34
|
});
|
|
31
35
|
}
|
|
32
36
|
function c() {
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The per-turn write rules a product puts in front of a Take-action turn when
|
|
3
|
+
* the sandbox the turn goes to enforces the proposal flow (BOFF-7803 5a,
|
|
4
|
+
* design §3.5).
|
|
5
|
+
*
|
|
6
|
+
* ★★ 5a is a safety floor, not the final security boundary. This text grants
|
|
7
|
+
* nothing and enforces nothing: in a proposal-v1 sandbox the helper never
|
|
8
|
+
* sends a mutation, only the card's button confirms one, and
|
|
9
|
+
* wspace-sandbox-svc decides whether it may run (route policy, a live admin
|
|
10
|
+
* re-check, the session relay running it as the user under `@rbac`). The rules
|
|
11
|
+
* only stop the per-turn preamble from contradicting that: the legacy preamble
|
|
12
|
+
* tells the model to wait for a typed "yes", which in a proposal-v1 sandbox
|
|
13
|
+
* never confirms anything.
|
|
14
|
+
*
|
|
15
|
+
* HOW A PRODUCT USES IT. `buildPrompt` receives `{ writeApproval }` as its sixth
|
|
16
|
+
* argument, from the issuing sandbox's own `/health`:
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* const preamble =
|
|
20
|
+
* options?.writeApproval === "proposal-v1"
|
|
21
|
+
* ? `${PROPOSAL_WRITE_RULES("BigConsole")}\n\n${USER_REQUEST_DELIMITER}`
|
|
22
|
+
* : API_CALLS_CONFIRM_PREAMBLE; // today's text, byte-for-byte
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* ★ It carries NO user-request delimiter. The product appends its own, exactly
|
|
26
|
+
* once, as it does after its legacy preamble: a second delimiter would leave
|
|
27
|
+
* instructions sitting after a "user request" marker, presented to the model as
|
|
28
|
+
* if the user had written them.
|
|
29
|
+
*
|
|
30
|
+
* ★ Kept short and consistent with the sandbox's own policy
|
|
31
|
+
* (`WRITE_POLICY_PROPOSAL_V1`, appended to the system prompt in proposal mode,
|
|
32
|
+
* and its fenced addendum). Where they differ, the system prompt's rules win:
|
|
33
|
+
* this text says so.
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* The write rules for a proposal-v1 Take-action turn of `productName`. Pure:
|
|
37
|
+
* the same name always gives the same text.
|
|
38
|
+
*/
|
|
39
|
+
export declare function PROPOSAL_WRITE_RULES(productName: string): string;
|
|
40
|
+
//# sourceMappingURL=proposalWriteRules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposalWriteRules.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/proposalWriteRules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAKH;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAahE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/shared/assistant/proposalWriteRules.ts
|
|
2
|
+
var e = "this product";
|
|
3
|
+
function t(t) {
|
|
4
|
+
return [
|
|
5
|
+
`You are in api-calls mode for ${typeof t == "string" && t.trim() ? t.trim() : e} and can run GraphQL queries on the user's behalf.`,
|
|
6
|
+
"Every change (create, update, delete: any mutation) waits for the user to confirm it in the interface:",
|
|
7
|
+
"1. To make a change, run the helper with the mutation. It holds the change as a proposal, which the user sees as a card. Then say in one or two sentences exactly what will change (entity, fields and values) and end your turn.",
|
|
8
|
+
"2. Do not ask the user to reply \"yes\" or \"confirm\". A typed or spoken reply never confirms a change; only the button on its card does, when this session allows it.",
|
|
9
|
+
"3. Say a change was made only after its WRITE_RESULT reports succeeded.",
|
|
10
|
+
"Read-only queries need no confirmation. Where this session's own write rules say more, follow them."
|
|
11
|
+
].join("\n");
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { t as PROPOSAL_WRITE_RULES };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AssistantConversationProcessing, AssistantConversationStatus, AssistantMessageMetadata, AssistantSandboxRuntime, AssistantSandboxStatus, AssistantTurnStage, Conversation, ConversationRouting, ConversationSyncStamp, Message, MessageHistoryState } from './conversation';
|
|
2
2
|
import { AssistantMode } from './types';
|
|
3
|
+
import { SandboxWriteCapabilities } from './writeProposals';
|
|
3
4
|
interface AssistantState {
|
|
4
5
|
conversations: Conversation[];
|
|
5
6
|
activeConversationId: string | null;
|
|
@@ -20,6 +21,20 @@ interface AssistantState {
|
|
|
20
21
|
conversationListOpen: boolean;
|
|
21
22
|
/** Active sandboxes keyed by assistant mode */
|
|
22
23
|
sandboxesByMode: Partial<Record<AssistantMode, AssistantSandboxRuntime>>;
|
|
24
|
+
/**
|
|
25
|
+
* What each sandbox's OWN `/health` said about writes, keyed by sandbox id
|
|
26
|
+
* (BOFF-7803 5a; `readSandboxWriteCapabilities`).
|
|
27
|
+
*
|
|
28
|
+
* ★★ Keyed by SANDBOX, not by mode: a proposal is answered by the sandbox
|
|
29
|
+
* that issued it, which after a mode switch is no longer the active one, and
|
|
30
|
+
* its card follows what THAT sandbox enforces.
|
|
31
|
+
*
|
|
32
|
+
* ★★ Never persisted, and never read back from storage (see
|
|
33
|
+
* `mergePersistedAssistantState`): it is only ever what a live `/health`
|
|
34
|
+
* answered in this page. A sandbox with no entry has not been read yet and
|
|
35
|
+
* counts as legacy.
|
|
36
|
+
*/
|
|
37
|
+
sandboxWriteCapabilities: Record<string, SandboxWriteCapabilities>;
|
|
23
38
|
/**
|
|
24
39
|
* A prompt queued up for auto-submit by the chat area. Used by the
|
|
25
40
|
* `GetHelpButton` / `useOpenAssistantHelp` hook so pages can prompt the
|
|
@@ -126,6 +141,8 @@ interface AssistantState {
|
|
|
126
141
|
clearBackendSessionId: (conversationId: string) => void;
|
|
127
142
|
setSandbox: (mode: AssistantMode, sandboxId: string | null, status: AssistantSandboxStatus) => void;
|
|
128
143
|
clearSandbox: (mode: AssistantMode) => void;
|
|
144
|
+
/** Record a sandbox's `/health` write capabilities; `null` forgets them. */
|
|
145
|
+
setSandboxWriteCapabilities: (sandboxId: string, capabilities: SandboxWriteCapabilities | null) => void;
|
|
129
146
|
resetStore: () => void;
|
|
130
147
|
/** Queue a prompt for the chat area to auto-send on next render. */
|
|
131
148
|
submitPrompt: (text: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EACV,+BAA+B,EAC/B,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAWxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/store.ts"],"names":[],"mappings":"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"}
|