@yadsh/dsh-qa-surface 0.1.1 → 0.3.0
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/CHANGELOG.md +151 -0
- package/README.md +239 -16
- package/SPEC-dsh-qa-surface.md +600 -96
- package/capability-policy.json +5 -0
- package/compatibility.json +18 -4
- package/cordis.patch.yml +11 -0
- package/docs/ARCHITECTURE.md +50 -8
- package/docs/COMPATIBILITY.md +5 -4
- package/docs/CONFIGURATION.md +184 -3
- package/docs/SOURCES-MIGRATION.md +28 -0
- package/docs/SOURCES-PROVENANCE-AUDIT.md +88 -0
- package/docs/SPEC-dsh-qa-surface-accounts.md +219 -0
- package/docs/SPEC-dsh-qa-surface-sources-provenance.md +1692 -0
- package/lib/accounts/index.js +2 -0
- package/lib/accounts/index.js.map +1 -0
- package/lib/accounts/store.js +478 -0
- package/lib/accounts/store.js.map +1 -0
- package/lib/attestation.js +10 -0
- package/lib/attestation.js.map +1 -0
- package/lib/cli.js +143 -0
- package/lib/cli.js.map +1 -0
- package/lib/client/QaAccountsController.js +329 -0
- package/lib/client/QaAccountsController.js.map +1 -0
- package/lib/client/QaConfigController.js +111 -4
- package/lib/client/QaConfigController.js.map +1 -1
- package/lib/client/QaSessionController.js +621 -163
- package/lib/client/QaSessionController.js.map +1 -1
- package/lib/client/QaSurface.js +303 -24
- package/lib/client/QaSurface.js.map +1 -1
- package/lib/client/QaTranscriptAdapter.js +324 -49
- package/lib/client/QaTranscriptAdapter.js.map +1 -1
- package/lib/client/attestation.js +66 -0
- package/lib/client/attestation.js.map +1 -0
- package/lib/client/chat-index.js +86 -0
- package/lib/client/chat-index.js.map +1 -0
- package/lib/client/components/Markdown.js +124 -13
- package/lib/client/components/Markdown.js.map +1 -1
- package/lib/client/components/QaAgentsDrawer.js +40 -0
- package/lib/client/components/QaAgentsDrawer.js.map +1 -0
- package/lib/client/components/QaAuthGate.js +40 -0
- package/lib/client/components/QaAuthGate.js.map +1 -0
- package/lib/client/components/QaChangelog.js +112 -0
- package/lib/client/components/QaChangelog.js.map +1 -0
- package/lib/client/components/QaComposer.js +132 -15
- package/lib/client/components/QaComposer.js.map +1 -1
- package/lib/client/components/QaMessage.js +214 -10
- package/lib/client/components/QaMessage.js.map +1 -1
- package/lib/client/components/QaSidebar.js +167 -0
- package/lib/client/components/QaSidebar.js.map +1 -0
- package/lib/client/components/QaSourcesDrawer.js +127 -0
- package/lib/client/components/QaSourcesDrawer.js.map +1 -0
- package/lib/client/components/QaTurnRail.js +281 -0
- package/lib/client/components/QaTurnRail.js.map +1 -0
- package/lib/client/components/QaWelcomeNotice.js +125 -0
- package/lib/client/components/QaWelcomeNotice.js.map +1 -0
- package/lib/client/components/QaWidthHandle.js +142 -0
- package/lib/client/components/QaWidthHandle.js.map +1 -0
- package/lib/client/components/QaWorkGroup.js +135 -0
- package/lib/client/components/QaWorkGroup.js.map +1 -0
- package/lib/client/components/VariantSwitcher.js +29 -0
- package/lib/client/components/VariantSwitcher.js.map +1 -0
- package/lib/client/components/format.js +48 -0
- package/lib/client/components/format.js.map +1 -0
- package/lib/client/components/source-refs.js +78 -0
- package/lib/client/components/source-refs.js.map +1 -0
- package/lib/client/create-session.js +51 -0
- package/lib/client/create-session.js.map +1 -0
- package/lib/client/index.js +166 -35
- package/lib/client/index.js.map +1 -1
- package/lib/client/project-session-state.js +78 -0
- package/lib/client/project-session-state.js.map +1 -0
- package/lib/client/session-admission.js +38 -0
- package/lib/client/session-admission.js.map +1 -0
- package/lib/client/session-assets.js +52 -0
- package/lib/client/session-assets.js.map +1 -0
- package/lib/client/session-sources.js +61 -0
- package/lib/client/session-sources.js.map +1 -0
- package/lib/client/settlement.js +24 -0
- package/lib/client/settlement.js.map +1 -0
- package/lib/client/styles.js +450 -43
- package/lib/client/styles.js.map +1 -1
- package/lib/client/tool-presentation.js +102 -0
- package/lib/client/tool-presentation.js.map +1 -0
- package/lib/client/turn-sources.js +98 -0
- package/lib/client/turn-sources.js.map +1 -0
- package/lib/client/types.js +15 -0
- package/lib/client/types.js.map +1 -0
- package/lib/client/use-session-ui-state.js +68 -0
- package/lib/client/use-session-ui-state.js.map +1 -0
- package/lib/client/use-transcript-view.js +44 -0
- package/lib/client/use-transcript-view.js.map +1 -0
- package/lib/client/wait-for.js +49 -0
- package/lib/client/wait-for.js.map +1 -0
- package/lib/client.js +12551 -918
- package/lib/client.js.map +1 -1
- package/lib/config.js +226 -58
- package/lib/config.js.map +1 -1
- package/lib/entry-redirect.js +44 -0
- package/lib/entry-redirect.js.map +1 -0
- package/lib/host-route.js +25 -1
- package/lib/host-route.js.map +1 -1
- package/lib/index.js +354 -72
- package/lib/index.js.map +1 -1
- package/lib/launch-token.js +42 -0
- package/lib/launch-token.js.map +1 -0
- package/lib/lockdown-policy.js +20 -0
- package/lib/lockdown-policy.js.map +1 -0
- package/lib/provenance/collector.js +40 -0
- package/lib/provenance/collector.js.map +1 -0
- package/lib/provenance/connectors.js +147 -0
- package/lib/provenance/connectors.js.map +1 -0
- package/lib/provenance/dedupe.js +89 -0
- package/lib/provenance/dedupe.js.map +1 -0
- package/lib/provenance/extractors.js +340 -0
- package/lib/provenance/extractors.js.map +1 -0
- package/lib/provenance/file-preview.js +39 -0
- package/lib/provenance/file-preview.js.map +1 -0
- package/lib/provenance/host-store.js +387 -0
- package/lib/provenance/host-store.js.map +1 -0
- package/lib/provenance/index.js +9 -0
- package/lib/provenance/index.js.map +1 -0
- package/lib/provenance/normalize.js +128 -0
- package/lib/provenance/normalize.js.map +1 -0
- package/lib/provenance/reported.js +53 -0
- package/lib/provenance/reported.js.map +1 -0
- package/lib/provenance/types.js +2 -0
- package/lib/provenance/types.js.map +1 -0
- package/lib/resolve-config.js +283 -10
- package/lib/resolve-config.js.map +1 -1
- package/lib/secure-session.js +212 -0
- package/lib/secure-session.js.map +1 -0
- package/lib/typert.host.d.ts +3 -0
- package/lib/typert.host.js +784 -0
- package/lib/typert.remote-client.d.ts +40 -0
- package/lib/typert.remote-client.js +597 -0
- package/lib/types/accounts/index.d.ts +2 -0
- package/lib/types/accounts/store.d.ts +121 -0
- package/lib/types/attestation.d.ts +17 -0
- package/lib/types/cli.d.ts +9 -0
- package/lib/types/client/QaAccountsController.d.ts +95 -0
- package/lib/types/client/QaConfigController.d.ts +35 -3
- package/lib/types/client/QaSessionController.d.ts +146 -20
- package/lib/types/client/QaSurface.d.ts +11 -5
- package/lib/types/client/QaTranscriptAdapter.d.ts +13 -3
- package/lib/types/client/attestation.d.ts +25 -0
- package/lib/types/client/chat-index.d.ts +28 -0
- package/lib/types/client/components/Markdown.d.ts +17 -3
- package/lib/types/client/components/QaAgentsDrawer.d.ts +25 -0
- package/lib/types/client/components/QaAuthGate.d.ts +15 -0
- package/lib/types/client/components/QaChangelog.d.ts +21 -0
- package/lib/types/client/components/QaComposer.d.ts +12 -2
- package/lib/types/client/components/QaMessage.d.ts +22 -2
- package/lib/types/client/components/QaSidebar.d.ts +69 -0
- package/lib/types/client/components/QaSourcesDrawer.d.ts +20 -0
- package/lib/types/client/components/QaTurnRail.d.ts +59 -0
- package/lib/types/client/components/QaWelcomeNotice.d.ts +27 -0
- package/lib/types/client/components/QaWidthHandle.d.ts +36 -0
- package/lib/types/client/components/QaWorkGroup.d.ts +19 -0
- package/lib/types/client/components/VariantSwitcher.d.ts +19 -0
- package/lib/types/client/components/format.d.ts +9 -0
- package/lib/types/client/components/source-refs.d.ts +16 -0
- package/lib/types/client/create-session.d.ts +16 -0
- package/lib/types/client/index.d.ts +2 -5
- package/lib/types/client/project-session-state.d.ts +30 -0
- package/lib/types/client/session-admission.d.ts +23 -0
- package/lib/types/client/session-assets.d.ts +20 -0
- package/lib/types/client/session-sources.d.ts +28 -0
- package/lib/types/client/settlement.d.ts +6 -0
- package/lib/types/client/tool-presentation.d.ts +6 -0
- package/lib/types/client/turn-sources.d.ts +14 -0
- package/lib/types/client/types.d.ts +93 -0
- package/lib/types/client/use-session-ui-state.d.ts +35 -0
- package/lib/types/client/use-transcript-view.d.ts +20 -0
- package/lib/types/client/wait-for.d.ts +11 -0
- package/lib/types/entry-redirect.d.ts +20 -0
- package/lib/types/host-route.d.ts +14 -1
- package/lib/types/index.d.ts +67 -7
- package/lib/types/launch-token.d.ts +21 -0
- package/lib/types/lockdown-policy.d.ts +18 -0
- package/lib/types/provenance/collector.d.ts +26 -0
- package/lib/types/provenance/connectors.d.ts +11 -0
- package/lib/types/provenance/dedupe.d.ts +6 -0
- package/lib/types/provenance/extractors.d.ts +14 -0
- package/lib/types/provenance/file-preview.d.ts +10 -0
- package/lib/types/provenance/host-store.d.ts +54 -0
- package/lib/types/provenance/index.d.ts +10 -0
- package/lib/types/provenance/normalize.d.ts +13 -0
- package/lib/types/provenance/reported.d.ts +5 -0
- package/lib/types/provenance/types.d.ts +78 -0
- package/lib/types/secure-session.d.ts +31 -0
- package/lib/types/types.d.ts +304 -1
- package/package.json +70 -27
package/lib/resolve-config.js
CHANGED
|
@@ -2,15 +2,17 @@ export const DEFAULT_QA_SURFACE_CONFIG = Object.freeze({
|
|
|
2
2
|
enabled: true,
|
|
3
3
|
route: Object.freeze({ path: "/qa", matchChildren: true }),
|
|
4
4
|
branding: Object.freeze({
|
|
5
|
-
title: "
|
|
5
|
+
title: "Помощник",
|
|
6
6
|
subtitle: "",
|
|
7
|
-
welcomeMessage: "
|
|
8
|
-
placeholder: "
|
|
7
|
+
welcomeMessage: "Чем могу помочь?",
|
|
8
|
+
placeholder: "Задайте вопрос…",
|
|
9
9
|
logoUrl: null,
|
|
10
|
+
disclaimer: "Диалоги могут быть видны другим пользователям сервера и используются для улучшения качества ответов.",
|
|
10
11
|
}),
|
|
11
12
|
session: Object.freeze({
|
|
12
13
|
policy: "browser-persistent",
|
|
13
|
-
storageKey: "dsh-qa-surface",
|
|
14
|
+
storageKey: "dsh-qa-surface.session",
|
|
15
|
+
cwd: null,
|
|
14
16
|
workspaceId: null,
|
|
15
17
|
fixedSessionId: null,
|
|
16
18
|
agentPreset: null,
|
|
@@ -20,20 +22,93 @@ export const DEFAULT_QA_SURFACE_CONFIG = Object.freeze({
|
|
|
20
22
|
}),
|
|
21
23
|
ui: Object.freeze({
|
|
22
24
|
showHeader: true,
|
|
23
|
-
showReset:
|
|
25
|
+
showReset: false,
|
|
24
26
|
showStop: true,
|
|
25
27
|
showTimestamps: false,
|
|
26
28
|
showToolActivity: false,
|
|
27
29
|
showReasoning: false,
|
|
28
30
|
renderMarkdown: true,
|
|
29
31
|
maxContentWidth: 900,
|
|
32
|
+
showSessionList: false,
|
|
30
33
|
}),
|
|
31
|
-
suggestedQuestions: Object.freeze([
|
|
34
|
+
suggestedQuestions: Object.freeze([
|
|
35
|
+
"Что ты умеешь?",
|
|
36
|
+
"С чего начать?",
|
|
37
|
+
"Помоги разобраться с ошибкой",
|
|
38
|
+
]),
|
|
32
39
|
interaction: Object.freeze({
|
|
33
40
|
approvals: "blocked",
|
|
34
41
|
questions: "unsupported",
|
|
35
42
|
}),
|
|
43
|
+
lockdown: Object.freeze({
|
|
44
|
+
enabled: true,
|
|
45
|
+
enforceFixedAgentPreset: true,
|
|
46
|
+
enforceFixedWorkspace: true,
|
|
47
|
+
enforceFixedModel: true,
|
|
48
|
+
sandboxMode: "read-only",
|
|
49
|
+
approvalPolicy: "never",
|
|
50
|
+
permissionPreset: "qa-read-only",
|
|
51
|
+
allowPermissionChanges: false,
|
|
52
|
+
allowSlashCommands: false,
|
|
53
|
+
allowSettingsMutation: false,
|
|
54
|
+
allowSessionReset: false,
|
|
55
|
+
allowSessionRename: false,
|
|
56
|
+
allowSessionDelete: false,
|
|
57
|
+
allowArbitrarySessionOpen: false,
|
|
58
|
+
toolPolicy: Object.freeze({
|
|
59
|
+
mode: "allow-list",
|
|
60
|
+
allow: Object.freeze([]),
|
|
61
|
+
}),
|
|
62
|
+
}),
|
|
36
63
|
embedding: Object.freeze({ frameAncestors: null }),
|
|
64
|
+
accounts: Object.freeze({
|
|
65
|
+
enabled: false,
|
|
66
|
+
allowRegistration: true,
|
|
67
|
+
sessionTtlDays: 30,
|
|
68
|
+
showOtherUsersChats: false,
|
|
69
|
+
}),
|
|
70
|
+
entry: Object.freeze({
|
|
71
|
+
redirectNonLoopback: true,
|
|
72
|
+
cookieBootstrap: true,
|
|
73
|
+
}),
|
|
74
|
+
sources: Object.freeze({
|
|
75
|
+
enabled: true,
|
|
76
|
+
collect: Object.freeze({
|
|
77
|
+
parentAgent: true,
|
|
78
|
+
subagents: true,
|
|
79
|
+
persistTurnEvent: true,
|
|
80
|
+
}),
|
|
81
|
+
display: Object.freeze({
|
|
82
|
+
sidebar: true,
|
|
83
|
+
footer: true,
|
|
84
|
+
groupByKind: true,
|
|
85
|
+
showDiscovered: false,
|
|
86
|
+
showOriginBadges: false,
|
|
87
|
+
maxInitiallyVisiblePerGroup: 8,
|
|
88
|
+
}),
|
|
89
|
+
webSearch: Object.freeze({
|
|
90
|
+
promoteSearchResultsWithoutFetch: true,
|
|
91
|
+
maxPromotedPerSearch: 5,
|
|
92
|
+
}),
|
|
93
|
+
dedupe: Object.freeze({
|
|
94
|
+
normalizeUrls: true,
|
|
95
|
+
stripTrackingParams: true,
|
|
96
|
+
mergeFileRanges: true,
|
|
97
|
+
}),
|
|
98
|
+
filePreview: Object.freeze({
|
|
99
|
+
enabled: true,
|
|
100
|
+
markdownRenderedByDefault: true,
|
|
101
|
+
allowRawToggle: true,
|
|
102
|
+
maxBytes: 2_000_000,
|
|
103
|
+
maxMarkdownRenderBytes: 1_000_000,
|
|
104
|
+
}),
|
|
105
|
+
subagents: Object.freeze({
|
|
106
|
+
inheritSources: true,
|
|
107
|
+
enableReportToolFallback: true,
|
|
108
|
+
markIncompleteOpaqueRuns: true,
|
|
109
|
+
}),
|
|
110
|
+
legacy: Object.freeze({ parseAssistantSourcesBlock: false }),
|
|
111
|
+
}),
|
|
37
112
|
});
|
|
38
113
|
function optionalText(value) {
|
|
39
114
|
const trimmed = value?.trim() ?? "";
|
|
@@ -65,6 +140,15 @@ function uniqueQuestions(values) {
|
|
|
65
140
|
}
|
|
66
141
|
return Object.freeze(questions);
|
|
67
142
|
}
|
|
143
|
+
function uniqueToolNames(values) {
|
|
144
|
+
const names = [
|
|
145
|
+
...new Set(values.map((value) => value.trim()).filter(Boolean)),
|
|
146
|
+
];
|
|
147
|
+
if (names.some((value) => value.length > 200)) {
|
|
148
|
+
throw new TypeError("dsh-qa-surface: lockdown.toolPolicy.allow names must be at most 200 characters");
|
|
149
|
+
}
|
|
150
|
+
return Object.freeze(names);
|
|
151
|
+
}
|
|
68
152
|
/** Materialize defaults and enforce route/session/model safety constraints. */
|
|
69
153
|
export function resolveConfig(input = {}) {
|
|
70
154
|
const routePath = normalizeRoutePath(input.route?.path ?? DEFAULT_QA_SURFACE_CONFIG.route.path);
|
|
@@ -73,6 +157,16 @@ export function resolveConfig(input = {}) {
|
|
|
73
157
|
if (policy === "fixed" && fixedSessionId === null) {
|
|
74
158
|
throw new TypeError("dsh-qa-surface: session.fixedSessionId is required for fixed policy");
|
|
75
159
|
}
|
|
160
|
+
// The cwd pin is the no-registry alternative to workspaceId; both pin the
|
|
161
|
+
// session to one directory, so together they are a configuration error.
|
|
162
|
+
const cwd = optionalText(input.session?.cwd);
|
|
163
|
+
if (cwd !== null && !/^([a-zA-Z]:[/\\]|\/)/u.test(cwd)) {
|
|
164
|
+
throw new TypeError("dsh-qa-surface: session.cwd must be an absolute directory path");
|
|
165
|
+
}
|
|
166
|
+
const workspaceId = optionalText(input.session?.workspaceId);
|
|
167
|
+
if (workspaceId !== null && cwd !== null) {
|
|
168
|
+
throw new TypeError("dsh-qa-surface: session.workspaceId and session.cwd are mutually exclusive");
|
|
169
|
+
}
|
|
76
170
|
const provider = optionalText(input.session?.provider);
|
|
77
171
|
const model = optionalText(input.session?.model);
|
|
78
172
|
if ((provider === null) !== (model === null)) {
|
|
@@ -89,8 +183,81 @@ export function resolveConfig(input = {}) {
|
|
|
89
183
|
maxContentWidth > 1600) {
|
|
90
184
|
throw new TypeError("dsh-qa-surface: ui.maxContentWidth must be an integer from 480 to 1600");
|
|
91
185
|
}
|
|
92
|
-
|
|
93
|
-
|
|
186
|
+
const lockdownEnabled = input.lockdown?.enabled ?? DEFAULT_QA_SURFACE_CONFIG.lockdown.enabled;
|
|
187
|
+
const rawLockdown = input.lockdown;
|
|
188
|
+
const forbiddenCapabilityFlags = [
|
|
189
|
+
["allowPermissionChanges", rawLockdown?.allowPermissionChanges],
|
|
190
|
+
["allowSlashCommands", rawLockdown?.allowSlashCommands],
|
|
191
|
+
["allowSettingsMutation", rawLockdown?.allowSettingsMutation],
|
|
192
|
+
["allowSessionRename", rawLockdown?.allowSessionRename],
|
|
193
|
+
["allowSessionDelete", rawLockdown?.allowSessionDelete],
|
|
194
|
+
["allowArbitrarySessionOpen", rawLockdown?.allowArbitrarySessionOpen],
|
|
195
|
+
];
|
|
196
|
+
const weakenedFlag = forbiddenCapabilityFlags.find(([, value]) => value === true);
|
|
197
|
+
if (weakenedFlag !== undefined) {
|
|
198
|
+
throw new TypeError(`dsh-qa-surface: lockdown.${weakenedFlag[0]} cannot be enabled`);
|
|
199
|
+
}
|
|
200
|
+
if (input.lockdown?.sandboxMode !== undefined &&
|
|
201
|
+
input.lockdown.sandboxMode !== "read-only") {
|
|
202
|
+
throw new TypeError("dsh-qa-surface: lockdown.sandboxMode must be read-only");
|
|
203
|
+
}
|
|
204
|
+
if (input.lockdown?.approvalPolicy !== undefined &&
|
|
205
|
+
input.lockdown.approvalPolicy !== "never") {
|
|
206
|
+
throw new TypeError("dsh-qa-surface: lockdown.approvalPolicy must be never");
|
|
207
|
+
}
|
|
208
|
+
if (input.lockdown?.toolPolicy?.mode !== undefined &&
|
|
209
|
+
input.lockdown.toolPolicy.mode !== "allow-list") {
|
|
210
|
+
throw new TypeError("dsh-qa-surface: lockdown.toolPolicy.mode must be allow-list");
|
|
211
|
+
}
|
|
212
|
+
const permissionPreset = input.lockdown?.permissionPreset?.trim() ??
|
|
213
|
+
DEFAULT_QA_SURFACE_CONFIG.lockdown.permissionPreset;
|
|
214
|
+
if (lockdownEnabled && permissionPreset === "") {
|
|
215
|
+
throw new TypeError("dsh-qa-surface: lockdown.permissionPreset is required when lockdown is enabled");
|
|
216
|
+
}
|
|
217
|
+
const allowSessionReset = input.lockdown?.allowSessionReset ??
|
|
218
|
+
DEFAULT_QA_SURFACE_CONFIG.lockdown.allowSessionReset;
|
|
219
|
+
if (lockdownEnabled &&
|
|
220
|
+
(input.ui?.showReset ?? DEFAULT_QA_SURFACE_CONFIG.ui.showReset) &&
|
|
221
|
+
!allowSessionReset) {
|
|
222
|
+
throw new TypeError("dsh-qa-surface: ui.showReset requires lockdown.allowSessionReset");
|
|
223
|
+
}
|
|
224
|
+
const maxInitiallyVisiblePerGroup = input.sources?.display?.maxInitiallyVisiblePerGroup ??
|
|
225
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.display.maxInitiallyVisiblePerGroup;
|
|
226
|
+
const maxPromotedPerSearch = input.sources?.webSearch?.maxPromotedPerSearch ??
|
|
227
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.webSearch.maxPromotedPerSearch;
|
|
228
|
+
const maxBytes = input.sources?.filePreview?.maxBytes ??
|
|
229
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.filePreview.maxBytes;
|
|
230
|
+
const maxMarkdownRenderBytes = input.sources?.filePreview?.maxMarkdownRenderBytes ??
|
|
231
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.filePreview.maxMarkdownRenderBytes;
|
|
232
|
+
for (const [name, value, min, max] of [
|
|
233
|
+
[
|
|
234
|
+
"sources.display.maxInitiallyVisiblePerGroup",
|
|
235
|
+
maxInitiallyVisiblePerGroup,
|
|
236
|
+
1,
|
|
237
|
+
100,
|
|
238
|
+
],
|
|
239
|
+
["sources.webSearch.maxPromotedPerSearch", maxPromotedPerSearch, 0, 50],
|
|
240
|
+
["sources.filePreview.maxBytes", maxBytes, 1_024, 20_000_000],
|
|
241
|
+
[
|
|
242
|
+
"sources.filePreview.maxMarkdownRenderBytes",
|
|
243
|
+
maxMarkdownRenderBytes,
|
|
244
|
+
1_024,
|
|
245
|
+
10_000_000,
|
|
246
|
+
],
|
|
247
|
+
]) {
|
|
248
|
+
if (!Number.isSafeInteger(value) || value < min || value > max) {
|
|
249
|
+
throw new TypeError(`dsh-qa-surface: ${name} must be an integer from ${min} to ${max}`);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (maxMarkdownRenderBytes > maxBytes) {
|
|
253
|
+
throw new TypeError("dsh-qa-surface: sources.filePreview.maxMarkdownRenderBytes cannot exceed maxBytes");
|
|
254
|
+
}
|
|
255
|
+
const sessionTtlDays = input.accounts?.sessionTtlDays ??
|
|
256
|
+
DEFAULT_QA_SURFACE_CONFIG.accounts.sessionTtlDays;
|
|
257
|
+
if (!Number.isSafeInteger(sessionTtlDays) ||
|
|
258
|
+
sessionTtlDays < 1 ||
|
|
259
|
+
sessionTtlDays > 365) {
|
|
260
|
+
throw new TypeError("dsh-qa-surface: accounts.sessionTtlDays must be an integer from 1 to 365");
|
|
94
261
|
}
|
|
95
262
|
return Object.freeze({
|
|
96
263
|
enabled: input.enabled ?? DEFAULT_QA_SURFACE_CONFIG.enabled,
|
|
@@ -108,10 +275,16 @@ export function resolveConfig(input = {}) {
|
|
|
108
275
|
placeholder: input.branding?.placeholder?.trim() ||
|
|
109
276
|
DEFAULT_QA_SURFACE_CONFIG.branding.placeholder,
|
|
110
277
|
logoUrl: optionalText(input.branding?.logoUrl),
|
|
278
|
+
// Undefined falls back to the default notice; an explicit null or
|
|
279
|
+
// empty string hides the plate entirely.
|
|
280
|
+
disclaimer: input.branding?.disclaimer === undefined
|
|
281
|
+
? DEFAULT_QA_SURFACE_CONFIG.branding.disclaimer
|
|
282
|
+
: (optionalText(input.branding.disclaimer) ?? ""),
|
|
111
283
|
}),
|
|
112
284
|
session: Object.freeze({
|
|
113
285
|
policy,
|
|
114
286
|
storageKey,
|
|
287
|
+
cwd,
|
|
115
288
|
workspaceId: optionalText(input.session?.workspaceId),
|
|
116
289
|
fixedSessionId,
|
|
117
290
|
agentPreset: optionalText(input.session?.agentPreset),
|
|
@@ -126,18 +299,118 @@ export function resolveConfig(input = {}) {
|
|
|
126
299
|
showTimestamps: input.ui?.showTimestamps ?? DEFAULT_QA_SURFACE_CONFIG.ui.showTimestamps,
|
|
127
300
|
showToolActivity: input.ui?.showToolActivity ??
|
|
128
301
|
DEFAULT_QA_SURFACE_CONFIG.ui.showToolActivity,
|
|
129
|
-
showReasoning:
|
|
302
|
+
showReasoning: input.ui?.showReasoning ?? DEFAULT_QA_SURFACE_CONFIG.ui.showReasoning,
|
|
130
303
|
renderMarkdown: input.ui?.renderMarkdown ?? DEFAULT_QA_SURFACE_CONFIG.ui.renderMarkdown,
|
|
131
304
|
maxContentWidth,
|
|
305
|
+
showSessionList: input.ui?.showSessionList ??
|
|
306
|
+
DEFAULT_QA_SURFACE_CONFIG.ui.showSessionList,
|
|
132
307
|
}),
|
|
133
|
-
suggestedQuestions: uniqueQuestions(input.suggestedQuestions ??
|
|
308
|
+
suggestedQuestions: uniqueQuestions(input.suggestedQuestions ?? DEFAULT_QA_SURFACE_CONFIG.suggestedQuestions),
|
|
134
309
|
interaction: Object.freeze({
|
|
135
310
|
approvals: "blocked",
|
|
136
311
|
questions: "unsupported",
|
|
137
312
|
}),
|
|
313
|
+
lockdown: Object.freeze({
|
|
314
|
+
enabled: lockdownEnabled,
|
|
315
|
+
enforceFixedAgentPreset: input.lockdown?.enforceFixedAgentPreset ??
|
|
316
|
+
DEFAULT_QA_SURFACE_CONFIG.lockdown.enforceFixedAgentPreset,
|
|
317
|
+
enforceFixedWorkspace: input.lockdown?.enforceFixedWorkspace ??
|
|
318
|
+
DEFAULT_QA_SURFACE_CONFIG.lockdown.enforceFixedWorkspace,
|
|
319
|
+
enforceFixedModel: input.lockdown?.enforceFixedModel ??
|
|
320
|
+
DEFAULT_QA_SURFACE_CONFIG.lockdown.enforceFixedModel,
|
|
321
|
+
sandboxMode: "read-only",
|
|
322
|
+
approvalPolicy: "never",
|
|
323
|
+
permissionPreset,
|
|
324
|
+
allowPermissionChanges: false,
|
|
325
|
+
allowSlashCommands: false,
|
|
326
|
+
allowSettingsMutation: false,
|
|
327
|
+
allowSessionReset,
|
|
328
|
+
allowSessionRename: false,
|
|
329
|
+
allowSessionDelete: false,
|
|
330
|
+
allowArbitrarySessionOpen: false,
|
|
331
|
+
toolPolicy: Object.freeze({
|
|
332
|
+
mode: "allow-list",
|
|
333
|
+
allow: uniqueToolNames(input.lockdown?.toolPolicy?.allow ?? []),
|
|
334
|
+
}),
|
|
335
|
+
}),
|
|
138
336
|
embedding: Object.freeze({
|
|
139
337
|
frameAncestors: optionalText(input.embedding?.frameAncestors),
|
|
140
338
|
}),
|
|
339
|
+
accounts: Object.freeze({
|
|
340
|
+
enabled: input.accounts?.enabled ?? DEFAULT_QA_SURFACE_CONFIG.accounts.enabled,
|
|
341
|
+
allowRegistration: input.accounts?.allowRegistration ??
|
|
342
|
+
DEFAULT_QA_SURFACE_CONFIG.accounts.allowRegistration,
|
|
343
|
+
sessionTtlDays,
|
|
344
|
+
showOtherUsersChats: input.accounts?.showOtherUsersChats ??
|
|
345
|
+
DEFAULT_QA_SURFACE_CONFIG.accounts.showOtherUsersChats,
|
|
346
|
+
}),
|
|
347
|
+
entry: Object.freeze({
|
|
348
|
+
redirectNonLoopback: input.entry?.redirectNonLoopback ??
|
|
349
|
+
DEFAULT_QA_SURFACE_CONFIG.entry.redirectNonLoopback,
|
|
350
|
+
cookieBootstrap: input.entry?.cookieBootstrap ??
|
|
351
|
+
DEFAULT_QA_SURFACE_CONFIG.entry.cookieBootstrap,
|
|
352
|
+
}),
|
|
353
|
+
sources: Object.freeze({
|
|
354
|
+
enabled: input.sources?.enabled ?? DEFAULT_QA_SURFACE_CONFIG.sources.enabled,
|
|
355
|
+
collect: Object.freeze({
|
|
356
|
+
parentAgent: input.sources?.collect?.parentAgent ??
|
|
357
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.collect.parentAgent,
|
|
358
|
+
subagents: input.sources?.collect?.subagents ??
|
|
359
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.collect.subagents,
|
|
360
|
+
persistTurnEvent: input.sources?.collect?.persistTurnEvent ??
|
|
361
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.collect.persistTurnEvent,
|
|
362
|
+
}),
|
|
363
|
+
display: Object.freeze({
|
|
364
|
+
sidebar: input.sources?.display?.sidebar ??
|
|
365
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.display.sidebar,
|
|
366
|
+
footer: input.sources?.display?.footer ??
|
|
367
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.display.footer,
|
|
368
|
+
groupByKind: input.sources?.display?.groupByKind ??
|
|
369
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.display.groupByKind,
|
|
370
|
+
showDiscovered: input.sources?.display?.showDiscovered ??
|
|
371
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.display.showDiscovered,
|
|
372
|
+
showOriginBadges: input.sources?.display?.showOriginBadges ??
|
|
373
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.display.showOriginBadges,
|
|
374
|
+
maxInitiallyVisiblePerGroup,
|
|
375
|
+
}),
|
|
376
|
+
webSearch: Object.freeze({
|
|
377
|
+
promoteSearchResultsWithoutFetch: input.sources?.webSearch?.promoteSearchResultsWithoutFetch ??
|
|
378
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.webSearch
|
|
379
|
+
.promoteSearchResultsWithoutFetch,
|
|
380
|
+
maxPromotedPerSearch,
|
|
381
|
+
}),
|
|
382
|
+
dedupe: Object.freeze({
|
|
383
|
+
normalizeUrls: input.sources?.dedupe?.normalizeUrls ??
|
|
384
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.dedupe.normalizeUrls,
|
|
385
|
+
stripTrackingParams: input.sources?.dedupe?.stripTrackingParams ??
|
|
386
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.dedupe.stripTrackingParams,
|
|
387
|
+
mergeFileRanges: input.sources?.dedupe?.mergeFileRanges ??
|
|
388
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.dedupe.mergeFileRanges,
|
|
389
|
+
}),
|
|
390
|
+
filePreview: Object.freeze({
|
|
391
|
+
enabled: input.sources?.filePreview?.enabled ??
|
|
392
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.filePreview.enabled,
|
|
393
|
+
markdownRenderedByDefault: input.sources?.filePreview?.markdownRenderedByDefault ??
|
|
394
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.filePreview
|
|
395
|
+
.markdownRenderedByDefault,
|
|
396
|
+
allowRawToggle: input.sources?.filePreview?.allowRawToggle ??
|
|
397
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.filePreview.allowRawToggle,
|
|
398
|
+
maxBytes,
|
|
399
|
+
maxMarkdownRenderBytes,
|
|
400
|
+
}),
|
|
401
|
+
subagents: Object.freeze({
|
|
402
|
+
inheritSources: input.sources?.subagents?.inheritSources ??
|
|
403
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.subagents.inheritSources,
|
|
404
|
+
enableReportToolFallback: input.sources?.subagents?.enableReportToolFallback ??
|
|
405
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.subagents.enableReportToolFallback,
|
|
406
|
+
markIncompleteOpaqueRuns: input.sources?.subagents?.markIncompleteOpaqueRuns ??
|
|
407
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.subagents.markIncompleteOpaqueRuns,
|
|
408
|
+
}),
|
|
409
|
+
legacy: Object.freeze({
|
|
410
|
+
parseAssistantSourcesBlock: input.sources?.legacy?.parseAssistantSourcesBlock ??
|
|
411
|
+
DEFAULT_QA_SURFACE_CONFIG.sources.legacy.parseAssistantSourcesBlock,
|
|
412
|
+
}),
|
|
413
|
+
}),
|
|
141
414
|
});
|
|
142
415
|
}
|
|
143
416
|
//# sourceMappingURL=resolve-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-config.js","sourceRoot":"","sources":["../src/resolve-config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resolve-config.js","sourceRoot":"","sources":["../src/resolve-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
// The `types` subpath keeps the client ISessions Context merge authoritative;
|
|
2
|
+
// the package root merges a conflicting host `sessions` service type.
|
|
3
|
+
import { SessionId } from "@deepseek-ai/dsh-session/types";
|
|
4
|
+
import { WorkspaceId } from "@deepseek-ai/dsh-workspace";
|
|
5
|
+
import { QaAccountsError } from "./accounts/store.js";
|
|
6
|
+
import { QaAttestationError } from "./attestation.js";
|
|
7
|
+
import { qaToolDenial, qaToolPolicyPlan } from "./lockdown-policy.js";
|
|
8
|
+
import { QA_REPORT_SOURCES_TOOL } from "./provenance/host-store.js";
|
|
9
|
+
/** Grace period in which a fresh session may still be pinned to the QA preset. */
|
|
10
|
+
const FRESH_SESSION_BOOTSTRAP_WINDOW_MS = 120_000;
|
|
11
|
+
/**
|
|
12
|
+
* Compare session cwds the way the host records them: separator- and
|
|
13
|
+
* case-normalized on Windows, so a deployment path written with either
|
|
14
|
+
* separator or case still matches the session header cwd.
|
|
15
|
+
*/
|
|
16
|
+
function cwdMatches(headerCwd, pinned) {
|
|
17
|
+
if (headerCwd === undefined)
|
|
18
|
+
return false;
|
|
19
|
+
const normalize = (value) => value.replaceAll("\\", "/").replace(/\/+$/u, "");
|
|
20
|
+
const left = normalize(headerCwd);
|
|
21
|
+
const right = normalize(pinned);
|
|
22
|
+
return process.platform === "win32"
|
|
23
|
+
? left.toLowerCase() === right.toLowerCase()
|
|
24
|
+
: left === right;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Host-side QA policy admission boundary — the only browser-callable operation
|
|
28
|
+
* that turns a session into a locked QA session. It verifies the immutable
|
|
29
|
+
* session composition against the effective deployment config, refuses to
|
|
30
|
+
* adopt a non-QA session with user history, validates the named permission
|
|
31
|
+
* preset, pins the scoped tool restriction plus the monotonic execution guard,
|
|
32
|
+
* and returns a sanitized proof. Every refusal carries only a coarse reason.
|
|
33
|
+
*/
|
|
34
|
+
export class QaPolicyAdmission {
|
|
35
|
+
ctx;
|
|
36
|
+
config;
|
|
37
|
+
logger;
|
|
38
|
+
accounts;
|
|
39
|
+
appliedPolicies = new Map();
|
|
40
|
+
constructor(ctx, config, logger, accounts) {
|
|
41
|
+
this.ctx = ctx;
|
|
42
|
+
this.config = config;
|
|
43
|
+
this.logger = logger;
|
|
44
|
+
this.accounts = accounts;
|
|
45
|
+
ctx.on("agent/disposed", ({ agent }) => {
|
|
46
|
+
this.appliedPolicies.delete(agent);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
secureSession(token, sessionId) {
|
|
50
|
+
const config = this.config();
|
|
51
|
+
const lockdown = config.lockdown;
|
|
52
|
+
// Account identity is checked before any policy work: an invalid token
|
|
53
|
+
// must not learn whether a session exists or how the deployment composes.
|
|
54
|
+
// Independent of lockdown — a deployment may gate users without pinning
|
|
55
|
+
// the policy, and the gate itself no-ops while accounts are disabled.
|
|
56
|
+
if (this.accounts !== undefined) {
|
|
57
|
+
try {
|
|
58
|
+
this.accounts.enforceSessionAccess(token, sessionId);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
if (error instanceof QaAccountsError) {
|
|
62
|
+
throw new QaAttestationError(error.reason === "session-owned-elsewhere"
|
|
63
|
+
? "session-owned-elsewhere"
|
|
64
|
+
: "auth-required", error.message);
|
|
65
|
+
}
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const agent = this.ctx.agents.get(SessionId(sessionId));
|
|
70
|
+
if (agent === undefined) {
|
|
71
|
+
throw new QaAttestationError("agent-unavailable", "agent is unavailable");
|
|
72
|
+
}
|
|
73
|
+
if (!lockdown.enabled) {
|
|
74
|
+
return {
|
|
75
|
+
sessionId,
|
|
76
|
+
enabled: false,
|
|
77
|
+
agentPresetMatches: true,
|
|
78
|
+
workspaceMatches: true,
|
|
79
|
+
modelMatches: true,
|
|
80
|
+
sandboxIsReadOnly: false,
|
|
81
|
+
approvalIsNever: false,
|
|
82
|
+
permissionPreset: "",
|
|
83
|
+
toolPolicyLoaded: false,
|
|
84
|
+
toolAllowList: [],
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const expectedWorkspace = config.session.workspaceId;
|
|
88
|
+
const pinnedWorkspace = expectedWorkspace === null
|
|
89
|
+
? undefined
|
|
90
|
+
: this.ctx.workspaceRegistry.get(WorkspaceId(expectedWorkspace));
|
|
91
|
+
// A pin that resolves to nothing would refuse the cwd comparison anyway,
|
|
92
|
+
// but the precise reason saves an operator a round trip: the surface
|
|
93
|
+
// stays closed until the workspace exists or the id is fixed.
|
|
94
|
+
if (expectedWorkspace !== null && pinnedWorkspace === undefined) {
|
|
95
|
+
throw new QaAttestationError("workspace-unavailable", `workspace ${expectedWorkspace} is not registered`);
|
|
96
|
+
}
|
|
97
|
+
const expectedPreset = config.session.agentPreset;
|
|
98
|
+
const agentPresetMatches = !lockdown.enforceFixedAgentPreset ||
|
|
99
|
+
expectedPreset === null ||
|
|
100
|
+
this.ctx.agentPresets.composedPreset(agent.ctx) === expectedPreset;
|
|
101
|
+
const workspaceMatches = !lockdown.enforceFixedWorkspace ||
|
|
102
|
+
(expectedWorkspace === null && config.session.cwd === null) ||
|
|
103
|
+
(pinnedWorkspace !== undefined &&
|
|
104
|
+
cwdMatches(agent.session.header.cwd, pinnedWorkspace.path)) ||
|
|
105
|
+
(expectedWorkspace === null &&
|
|
106
|
+
config.session.cwd !== null &&
|
|
107
|
+
cwdMatches(agent.session.header.cwd, config.session.cwd));
|
|
108
|
+
const options = agent.options;
|
|
109
|
+
const modelMatches = !lockdown.enforceFixedModel ||
|
|
110
|
+
config.session.provider === null ||
|
|
111
|
+
(options.provider === config.session.provider &&
|
|
112
|
+
options.model === config.session.model &&
|
|
113
|
+
(config.session.reasoningEffort === null ||
|
|
114
|
+
options.reasoningEffort === config.session.reasoningEffort));
|
|
115
|
+
if (!agentPresetMatches || !workspaceMatches || !modelMatches) {
|
|
116
|
+
throw new QaAttestationError("composition-mismatch", `composition mismatch: agent=${agentPresetMatches} workspace=${workspaceMatches} model=${modelMatches}`);
|
|
117
|
+
}
|
|
118
|
+
const permission = this.ctx.permissionPresets.resolve(lockdown.permissionPreset);
|
|
119
|
+
if (permission.sandbox !== lockdown.sandboxMode ||
|
|
120
|
+
permission.approval !== lockdown.approvalPolicy) {
|
|
121
|
+
throw new QaAttestationError("permission-preset", `permission preset ${lockdown.permissionPreset} does not resolve to read-only/never`);
|
|
122
|
+
}
|
|
123
|
+
const currentPermission = this.ctx.permissionPresets.current(agent.session);
|
|
124
|
+
// History check over the model-visible surface: `user/message` is a
|
|
125
|
+
// surface event, so any adopted conversation shows up here regardless of
|
|
126
|
+
// window pagination.
|
|
127
|
+
const hasUserHistory = agent.session.surface.nodes.some((seq) => agent.session.eventAt(seq)?.type === "user/message");
|
|
128
|
+
if (currentPermission !== lockdown.permissionPreset &&
|
|
129
|
+
(hasUserHistory ||
|
|
130
|
+
Date.now() - agent.session.header.createdAt >
|
|
131
|
+
FRESH_SESSION_BOOTSTRAP_WINDOW_MS)) {
|
|
132
|
+
throw new QaAttestationError("adoption-refused", "existing non-QA session cannot be adopted");
|
|
133
|
+
}
|
|
134
|
+
const policyAllow = config.sources.enabled &&
|
|
135
|
+
config.sources.subagents.enableReportToolFallback &&
|
|
136
|
+
!lockdown.toolPolicy.allow.includes(QA_REPORT_SOURCES_TOOL)
|
|
137
|
+
? [...lockdown.toolPolicy.allow, QA_REPORT_SOURCES_TOOL]
|
|
138
|
+
: lockdown.toolPolicy.allow;
|
|
139
|
+
const policy = qaToolPolicyPlan(policyAllow, (toolName) => this.ctx.tools.get(toolName, agent) !== undefined);
|
|
140
|
+
if (policy.unknown.length > 0) {
|
|
141
|
+
throw new QaAttestationError("unknown-tools", `unknown QA tool(s): ${policy.unknown.join(", ")}`);
|
|
142
|
+
}
|
|
143
|
+
const fingerprint = JSON.stringify(policy.allow);
|
|
144
|
+
const prior = this.appliedPolicies.get(agent);
|
|
145
|
+
if (prior?.fingerprint !== fingerprint) {
|
|
146
|
+
const allowed = new Set(policy.allow);
|
|
147
|
+
const disposeGuard = agent.ctx.tools.guard((execution) => qaToolDenial(allowed, execution.name));
|
|
148
|
+
const disposeGuidance = agent.ctx.systemPrompt.section({
|
|
149
|
+
name: "dsh-qa-surface:structured-sources",
|
|
150
|
+
order: 950,
|
|
151
|
+
text: "Source provenance is collected automatically from tools. Do not append a manual Sources/Источники bibliography to the answer. Delegated providers that cannot expose tool events should call qa_report_sources before finishing.",
|
|
152
|
+
});
|
|
153
|
+
try {
|
|
154
|
+
const disposeRestriction = agent.ctx.tools.restrict({
|
|
155
|
+
allow: policy.allow,
|
|
156
|
+
});
|
|
157
|
+
this.appliedPolicies.set(agent, {
|
|
158
|
+
fingerprint,
|
|
159
|
+
disposeGuard,
|
|
160
|
+
disposeRestriction,
|
|
161
|
+
disposeGuidance,
|
|
162
|
+
});
|
|
163
|
+
prior?.disposeRestriction();
|
|
164
|
+
prior?.disposeGuard();
|
|
165
|
+
prior?.disposeGuidance();
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
disposeGuard();
|
|
169
|
+
disposeGuidance();
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
this.ctx.permissionPresets.set(agent.session, lockdown.permissionPreset);
|
|
174
|
+
const effectivePermission = this.ctx.permissionPresets.current(agent.session);
|
|
175
|
+
const sandboxIsReadOnly = permission.sandbox === "read-only";
|
|
176
|
+
const approvalIsNever = permission.approval === "never";
|
|
177
|
+
if (effectivePermission !== lockdown.permissionPreset ||
|
|
178
|
+
!sandboxIsReadOnly ||
|
|
179
|
+
!approvalIsNever) {
|
|
180
|
+
throw new QaAttestationError("attestation-failed", "permission attestation failed");
|
|
181
|
+
}
|
|
182
|
+
this.logger.debug("lockdown.attested", {
|
|
183
|
+
sessionId,
|
|
184
|
+
permissionPreset: lockdown.permissionPreset,
|
|
185
|
+
toolAllowList: policy.allow,
|
|
186
|
+
});
|
|
187
|
+
return {
|
|
188
|
+
sessionId,
|
|
189
|
+
enabled: true,
|
|
190
|
+
agentPresetMatches,
|
|
191
|
+
workspaceMatches,
|
|
192
|
+
modelMatches,
|
|
193
|
+
sandboxIsReadOnly,
|
|
194
|
+
approvalIsNever,
|
|
195
|
+
permissionPreset: lockdown.permissionPreset,
|
|
196
|
+
toolPolicyLoaded: true,
|
|
197
|
+
// The fallback reporter is an internal read-only provenance capability,
|
|
198
|
+
// not an operator-configured QA tool grant.
|
|
199
|
+
toolAllowList: lockdown.toolPolicy.allow,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/** Detach every pinned tool policy; wired as a disposal effect by the entry. */
|
|
203
|
+
dispose() {
|
|
204
|
+
for (const policy of this.appliedPolicies.values()) {
|
|
205
|
+
policy.disposeRestriction();
|
|
206
|
+
policy.disposeGuard();
|
|
207
|
+
policy.disposeGuidance();
|
|
208
|
+
}
|
|
209
|
+
this.appliedPolicies.clear();
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=secure-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secure-session.js","sourceRoot":"","sources":["../src/secure-session.ts"],"names":[],"mappings":"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"}
|