@dsh-enhanced/assistant-skills 0.1.30
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/LICENSE +21 -0
- package/README.md +211 -0
- package/cordis.patch.yml +3 -0
- package/lib/capture-expansion.d.ts +18 -0
- package/lib/capture-expansion.d.ts.map +1 -0
- package/lib/capture-expansion.js +187 -0
- package/lib/capture-expansion.js.map +1 -0
- package/lib/comparison.d.ts +69 -0
- package/lib/comparison.d.ts.map +1 -0
- package/lib/comparison.js +173 -0
- package/lib/comparison.js.map +1 -0
- package/lib/definition.d.ts +163 -0
- package/lib/definition.d.ts.map +1 -0
- package/lib/definition.js +450 -0
- package/lib/definition.js.map +1 -0
- package/lib/external-holdout.d.ts +34 -0
- package/lib/external-holdout.d.ts.map +1 -0
- package/lib/external-holdout.js +212 -0
- package/lib/external-holdout.js.map +1 -0
- package/lib/holdout-authority.d.ts +123 -0
- package/lib/holdout-authority.d.ts.map +1 -0
- package/lib/holdout-authority.js +263 -0
- package/lib/holdout-authority.js.map +1 -0
- package/lib/holdout-cli.d.ts +4 -0
- package/lib/holdout-cli.d.ts.map +1 -0
- package/lib/holdout-cli.js +221 -0
- package/lib/holdout-cli.js.map +1 -0
- package/lib/holdout-qualification.d.ts +83 -0
- package/lib/holdout-qualification.d.ts.map +1 -0
- package/lib/holdout-qualification.js +306 -0
- package/lib/holdout-qualification.js.map +1 -0
- package/lib/index.d.ts +22 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +9 -0
- package/lib/index.js.map +1 -0
- package/lib/prospective-holdout.d.ts +35 -0
- package/lib/prospective-holdout.d.ts.map +1 -0
- package/lib/prospective-holdout.js +254 -0
- package/lib/prospective-holdout.js.map +1 -0
- package/lib/repair-admission.d.ts +11 -0
- package/lib/repair-admission.d.ts.map +1 -0
- package/lib/repair-admission.js +25 -0
- package/lib/repair-admission.js.map +1 -0
- package/lib/repair-agent.d.ts +44 -0
- package/lib/repair-agent.d.ts.map +1 -0
- package/lib/repair-agent.js +241 -0
- package/lib/repair-agent.js.map +1 -0
- package/lib/repair-feedback.d.ts +70 -0
- package/lib/repair-feedback.d.ts.map +1 -0
- package/lib/repair-feedback.js +79 -0
- package/lib/repair-feedback.js.map +1 -0
- package/lib/repair-profile.d.ts +27 -0
- package/lib/repair-profile.d.ts.map +1 -0
- package/lib/repair-profile.js +51 -0
- package/lib/repair-profile.js.map +1 -0
- package/lib/repair-runtime.d.ts +35 -0
- package/lib/repair-runtime.d.ts.map +1 -0
- package/lib/repair-runtime.js +181 -0
- package/lib/repair-runtime.js.map +1 -0
- package/lib/replay.d.ts +38 -0
- package/lib/replay.d.ts.map +1 -0
- package/lib/replay.js +240 -0
- package/lib/replay.js.map +1 -0
- package/lib/sealed-holdout.d.ts +20 -0
- package/lib/sealed-holdout.d.ts.map +1 -0
- package/lib/sealed-holdout.js +12 -0
- package/lib/sealed-holdout.js.map +1 -0
- package/lib/service.d.ts +968 -0
- package/lib/service.d.ts.map +1 -0
- package/lib/service.js +1929 -0
- package/lib/service.js.map +1 -0
- package/lib/store.d.ts +366 -0
- package/lib/store.d.ts.map +1 -0
- package/lib/store.js +1517 -0
- package/lib/store.js.map +1 -0
- package/lib/version.d.ts +2 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +2 -0
- package/lib/version.js.map +1 -0
- package/lib/watch-proof.d.ts +30 -0
- package/lib/watch-proof.d.ts.map +1 -0
- package/lib/watch-proof.js +209 -0
- package/lib/watch-proof.js.map +1 -0
- package/package.json +141 -0
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
import { fileObservationSteps } from './definition.js';
|
|
2
|
+
import { lstatSync, mkdirSync, realpathSync } from 'node:fs';
|
|
3
|
+
import { basename, dirname, isAbsolute, join, relative, resolve } from 'node:path';
|
|
4
|
+
import { acceptanceDigest } from '@dsh-enhanced/task-acceptance-contract';
|
|
5
|
+
import { instantiate } from './definition.js';
|
|
6
|
+
import { replaySkill, validateReplayTrace } from './replay.js';
|
|
7
|
+
import { verifyHoldoutSignature } from './holdout-authority.js';
|
|
8
|
+
import { verifyProspectiveCertificate } from './prospective-holdout.js';
|
|
9
|
+
const digest = (value) => acceptanceDigest(value);
|
|
10
|
+
const fail = (message) => { throw new Error(`assistant-skills: holdout qualification ${message}`); };
|
|
11
|
+
const hex = (value) => typeof value === 'string' && /^[a-f0-9]{64}$/u.test(value);
|
|
12
|
+
const cellId = (value) => typeof value === 'string' && /^cell-[1-9][0-9]*$/u.test(value);
|
|
13
|
+
const plain = (value) => value !== null && typeof value === 'object' && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype
|
|
14
|
+
&& Object.getOwnPropertySymbols(value).length === 0 && Object.values(Object.getOwnPropertyDescriptors(value)).every(item => item.enumerable && 'value' in item);
|
|
15
|
+
function same(left, right) { return digest(left) === digest(right); }
|
|
16
|
+
function exact(value, keys) {
|
|
17
|
+
return plain(value) && Object.keys(value).length === keys.length && keys.every(key => Object.hasOwn(value, key));
|
|
18
|
+
}
|
|
19
|
+
/** Resolve every existing component while preserving a normalized suffix that does not exist yet. */
|
|
20
|
+
export function canonicalHoldoutPath(path) {
|
|
21
|
+
if (typeof path !== 'string' || !isAbsolute(path) || path.includes('\0'))
|
|
22
|
+
fail('absolute canonical path required');
|
|
23
|
+
let existing = resolve(path);
|
|
24
|
+
const suffix = [];
|
|
25
|
+
while (true) {
|
|
26
|
+
let present = false;
|
|
27
|
+
try {
|
|
28
|
+
lstatSync(existing);
|
|
29
|
+
present = true;
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
const code = error && typeof error === 'object' && 'code' in error ? error.code : undefined;
|
|
33
|
+
if (code !== 'ENOENT')
|
|
34
|
+
fail('canonical path is unavailable');
|
|
35
|
+
}
|
|
36
|
+
if (present) {
|
|
37
|
+
try {
|
|
38
|
+
return join(realpathSync(existing), ...suffix);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
fail('canonical path is unavailable');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const parent = dirname(existing);
|
|
45
|
+
if (parent === existing)
|
|
46
|
+
fail('canonical path is unavailable');
|
|
47
|
+
suffix.unshift(basename(existing));
|
|
48
|
+
existing = parent;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function separated(workspace, stateRoot) {
|
|
52
|
+
const canonicalWorkspace = canonicalHoldoutPath(workspace), canonicalStateRoot = canonicalHoldoutPath(stateRoot);
|
|
53
|
+
if (inside(canonicalWorkspace, canonicalStateRoot) || inside(canonicalStateRoot, canonicalWorkspace))
|
|
54
|
+
fail('state root overlaps qualification workspace');
|
|
55
|
+
}
|
|
56
|
+
export function holdoutPathsOverlap(left, right) {
|
|
57
|
+
const canonicalLeft = canonicalHoldoutPath(left), canonicalRight = canonicalHoldoutPath(right);
|
|
58
|
+
return inside(canonicalLeft, canonicalRight) || inside(canonicalRight, canonicalLeft);
|
|
59
|
+
}
|
|
60
|
+
function assertPrivateRoot(path) {
|
|
61
|
+
mkdirSync(path, { recursive: true, mode: 0o700 });
|
|
62
|
+
const stat = lstatSync(path);
|
|
63
|
+
if (!stat.isDirectory() || stat.isSymbolicLink() || (stat.mode & 0o077) !== 0 || stat.uid !== process.getuid?.())
|
|
64
|
+
fail('private owned state root required');
|
|
65
|
+
canonicalHoldoutPath(path);
|
|
66
|
+
}
|
|
67
|
+
function inside(parent, child) { const value = relative(parent, child); return !value || !value.startsWith('..') && !isAbsolute(value); }
|
|
68
|
+
function clone(value) { return JSON.parse(JSON.stringify(value)); }
|
|
69
|
+
async function request(transport, operation, value, signal, expiresAt, durationMs) {
|
|
70
|
+
const remaining = expiresAt - Date.now();
|
|
71
|
+
if (remaining <= 0)
|
|
72
|
+
fail('qualification expired');
|
|
73
|
+
const local = new AbortController(), bounded = AbortSignal.any([signal, local.signal, AbortSignal.timeout(Math.min(remaining, durationMs))]);
|
|
74
|
+
bounded.throwIfAborted();
|
|
75
|
+
const aborted = new Promise((_resolve, reject) => bounded.addEventListener('abort', () => reject(new Error('assistant-skills: holdout qualification IPC deadline exceeded')), { once: true }));
|
|
76
|
+
try {
|
|
77
|
+
return await Promise.race([transport.request(operation, value, bounded), aborted]);
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
local.abort();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export function validateHoldoutExecution(value) {
|
|
84
|
+
if (!plain(value) || typeof value.image !== 'string' || !/^sha256:[a-f0-9]{64}$/u.test(value.image) || typeof value.dockerPath !== 'string' || !isAbsolute(value.dockerPath)
|
|
85
|
+
|| typeof value.stateRoot !== 'string' || !isAbsolute(value.stateRoot) || typeof value.command !== 'string' || value.command.length === 0 || value.command.length > 16384
|
|
86
|
+
|| typeof value.artifactPath !== 'string' || !/^[a-zA-Z0-9_.-]+(?:\/[a-zA-Z0-9_.-]+)*$/u.test(value.artifactPath) || value.artifactPath.split('/').some(part => part === '.' || part === '..')
|
|
87
|
+
|| !Number.isSafeInteger(value.expiresAt) || value.expiresAt <= 0 || !Number.isSafeInteger(value.repeats) || value.repeats < 2 || value.repeats > 4
|
|
88
|
+
|| !Number.isSafeInteger(value.maxToolCalls) || value.maxToolCalls < 1 || value.maxToolCalls > 32 || !Number.isSafeInteger(value.maxBytes) || value.maxBytes < 1 || value.maxBytes > 262144
|
|
89
|
+
|| !Number.isSafeInteger(value.maxOutputBytes) || value.maxOutputBytes < 1 || value.maxOutputBytes > 262144 || !Number.isSafeInteger(value.cellDurationMs) || value.cellDurationMs < 1000 || value.cellDurationMs > 300000
|
|
90
|
+
|| !Number.isSafeInteger(value.verificationDurationMs) || value.verificationDurationMs < 1 || value.verificationDurationMs >= value.cellDurationMs)
|
|
91
|
+
fail('invalid execution config');
|
|
92
|
+
}
|
|
93
|
+
export function validateCanaryAdmission(value) {
|
|
94
|
+
if (!exact(value, ['protocol', 'skillName', 'parentDefinitionDigest', 'candidateDefinitionDigest', 'taskFamily']) || value.protocol !== 'assistant-skills/canary-admission/v1'
|
|
95
|
+
|| typeof value.skillName !== 'string' || !/^[a-z](?:[a-z0-9-]{0,62}[a-z0-9])?$/u.test(value.skillName)
|
|
96
|
+
|| !hex(value.parentDefinitionDigest) || !hex(value.candidateDefinitionDigest) || !exact(value.taskFamily, ['goalDefinitionDigest', 'outcomeProfile'])
|
|
97
|
+
|| !hex(value.taskFamily.goalDefinitionDigest) || !exact(value.taskFamily.outcomeProfile, ['id', 'version', 'digest'])
|
|
98
|
+
|| typeof value.taskFamily.outcomeProfile.id !== 'string' || !/^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,127}$/u.test(value.taskFamily.outcomeProfile.id)
|
|
99
|
+
|| typeof value.taskFamily.outcomeProfile.version !== 'number' || !Number.isSafeInteger(value.taskFamily.outcomeProfile.version) || value.taskFamily.outcomeProfile.version < 1 || !hex(value.taskFamily.outcomeProfile.digest))
|
|
100
|
+
fail('invalid canary admission');
|
|
101
|
+
}
|
|
102
|
+
export function canaryAdmissionMatches(value, baseline, candidate) {
|
|
103
|
+
try {
|
|
104
|
+
validateCanaryAdmission(value);
|
|
105
|
+
return value.skillName === baseline.name && value.skillName === candidate.name
|
|
106
|
+
&& value.parentDefinitionDigest === digest(baseline) && value.candidateDefinitionDigest === digest(candidate)
|
|
107
|
+
&& value.taskFamily.goalDefinitionDigest === candidate.source.goal.definition.digest;
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function binding(scope, baseline, candidate, execution, inputs, files, canaryAdmission) {
|
|
114
|
+
const limits = { maxToolCalls: execution.maxToolCalls, maxOutputBytes: execution.maxOutputBytes };
|
|
115
|
+
return { scopeDigest: digest(scope), baselineDigest: digest(baseline), candidateDigest: digest(candidate),
|
|
116
|
+
budgetDigest: digest({ inputsDigest: digest(inputs), filesDigest: digest(files), image: execution.image, dockerPath: execution.dockerPath, command: execution.command, artifactPath: execution.artifactPath, expiresAt: execution.expiresAt,
|
|
117
|
+
repeats: execution.repeats, maxToolCalls: execution.maxToolCalls, maxBytes: execution.maxBytes, maxOutputBytes: execution.maxOutputBytes, cellDurationMs: execution.cellDurationMs, verificationDurationMs: execution.verificationDurationMs }),
|
|
118
|
+
expiresAt: execution.expiresAt, repeats: execution.repeats, ...(canaryAdmission === undefined ? {} : { admissionDigest: digest(canaryAdmission) }), limits };
|
|
119
|
+
}
|
|
120
|
+
function validBegin(value, expected, pinnedPublicKey) {
|
|
121
|
+
if (!plain(value))
|
|
122
|
+
return false;
|
|
123
|
+
const data = value;
|
|
124
|
+
const hasAdmission = Object.hasOwn(data, 'admissionDigest');
|
|
125
|
+
if (typeof data.sessionId !== 'string' || data.sessionId.length === 0 || !hex(data.planDigest) || !hex(data.datasetDigest) || data.publicKey !== pinnedPublicKey || data.scopeDigest !== expected.scopeDigest
|
|
126
|
+
|| hasAdmission !== (expected.admissionDigest !== undefined) || data.baselineDigest !== expected.baselineDigest || data.candidateDigest !== expected.candidateDigest || data.budgetDigest !== expected.budgetDigest || data.admissionDigest !== expected.admissionDigest || data.expiresAt !== expected.expiresAt || data.repeats !== expected.repeats
|
|
127
|
+
|| !same(data.limits, expected.limits) || !Number.isSafeInteger(data.cellCount) || data.cellCount < 6 || data.cellCount > 96)
|
|
128
|
+
return false;
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
function validCell(value, begin, seen, lastCell, maxBytes) {
|
|
132
|
+
if (!plain(value) || value.sessionId !== begin.sessionId || value.planDigest !== begin.planDigest || !cellId(value.cellId) || seen.has(value.cellId) || (value.armDigest !== begin.baselineDigest && value.armDigest !== begin.candidateDigest)
|
|
133
|
+
|| Number(value.cellId.slice(5)) !== lastCell + 1 || Number(value.cellId.slice(5)) > begin.cellCount || typeof value.stdin !== 'string' || Buffer.byteLength(value.stdin, 'utf8') > maxBytes || typeof value.signature !== 'string')
|
|
134
|
+
return false;
|
|
135
|
+
return verifyHoldoutSignature(value, begin.publicKey);
|
|
136
|
+
}
|
|
137
|
+
function toolCalls(replay, definition) {
|
|
138
|
+
const observations = fileObservationSteps(definition).map(value => ({ id: value.id, toolName: 'read', arguments: { file_path: value.filePath, limit: 1 } }));
|
|
139
|
+
return replay.steps.map(step => {
|
|
140
|
+
const source = [...definition.steps, ...observations].find(value => value.id === step.id);
|
|
141
|
+
if (source === undefined)
|
|
142
|
+
return fail('replay step is not in immutable trace');
|
|
143
|
+
const inputDigest = digest({ id: source.id, toolName: source.toolName, arguments: source.arguments });
|
|
144
|
+
return step.outcome === 'executed' ? { name: step.toolName, inputDigest, outputDigest: step.resultDigest } : { name: step.toolName, inputDigest };
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
function validReceipt(value, begin, seen) {
|
|
148
|
+
if (!plain(value))
|
|
149
|
+
return false;
|
|
150
|
+
const data = value;
|
|
151
|
+
const hasAdmission = Object.hasOwn(data, 'admissionDigest');
|
|
152
|
+
if (!verifyHoldoutSignature(data, begin.publicKey) || data.sessionId !== begin.sessionId || data.planDigest !== begin.planDigest || data.datasetDigest !== begin.datasetDigest || data.publicKey !== begin.publicKey
|
|
153
|
+
|| hasAdmission !== Object.hasOwn(begin, 'admissionDigest') || data.scopeDigest !== begin.scopeDigest || data.baselineDigest !== begin.baselineDigest || data.candidateDigest !== begin.candidateDigest || data.budgetDigest !== begin.budgetDigest || data.admissionDigest !== begin.admissionDigest
|
|
154
|
+
|| data.expiresAt !== begin.expiresAt || data.repeats !== begin.repeats || !same(data.limits, begin.limits) || data.cellCount !== begin.cellCount || typeof data.complete !== 'boolean'
|
|
155
|
+
|| !same(data.prospective ?? null, begin.prospective ?? null)
|
|
156
|
+
|| !Array.isArray(data.cellVerdicts) || data.cellVerdicts.length !== begin.cellCount || !hex(data.observationDigest) || typeof data.signature !== 'string')
|
|
157
|
+
return false;
|
|
158
|
+
const ids = new Set(), pairs = new Map(), kinds = new Set();
|
|
159
|
+
return data.cellVerdicts.every(cell => {
|
|
160
|
+
if (!plain(cell))
|
|
161
|
+
return false;
|
|
162
|
+
const item = cell;
|
|
163
|
+
const repeat = item.repeat;
|
|
164
|
+
const issued = typeof item.cellId === 'string' ? seen.get(item.cellId) : undefined;
|
|
165
|
+
const pair = `${item.caseId}\u0000${repeat}`;
|
|
166
|
+
const arms = pairs.get(pair) ?? new Set();
|
|
167
|
+
arms.add(String(item.armDigest));
|
|
168
|
+
pairs.set(pair, arms);
|
|
169
|
+
kinds.add(String(item.kind));
|
|
170
|
+
return cellId(item.cellId) && !ids.has(item.cellId) && (issued === item.armDigest || issued === undefined && item.verdict === 'unknown' && item.observationDigest === undefined)
|
|
171
|
+
&& (item.armDigest === begin.baselineDigest || item.armDigest === begin.candidateDigest) && typeof item.caseId === 'string' && ['replay', 'evaluation', 'regression'].includes(String(item.kind))
|
|
172
|
+
&& typeof repeat === 'number' && Number.isSafeInteger(repeat) && repeat >= 1 && repeat <= begin.repeats && ['achieved', 'not-achieved', 'unknown'].includes(String(item.verdict))
|
|
173
|
+
&& (item.observationDigest === undefined || hex(item.observationDigest)) && (ids.add(item.cellId), true);
|
|
174
|
+
}) && ids.size === begin.cellCount && pairs.size * 2 === begin.cellCount && kinds.size === 3 && [...pairs.values()].every(arms => arms.size === 2 && arms.has(begin.baselineDigest) && arms.has(begin.candidateDigest));
|
|
175
|
+
}
|
|
176
|
+
function quality(receipt) {
|
|
177
|
+
const rate = (kind, arm) => { const cells = receipt.cellVerdicts.filter(cell => cell.kind === kind && cell.armDigest === arm); return cells.length ? cells.filter(cell => cell.verdict === 'achieved').length / cells.length : 0; };
|
|
178
|
+
const complete = receipt.complete && receipt.cellVerdicts.every(cell => cell.verdict !== 'unknown');
|
|
179
|
+
const evaluationGain = complete ? rate('evaluation', receipt.candidateDigest) - rate('evaluation', receipt.baselineDigest) : null;
|
|
180
|
+
return { candidateChecksPassed: complete && receipt.cellVerdicts.filter(cell => cell.armDigest === receipt.candidateDigest).every(cell => cell.verdict === 'achieved'), evaluationGain,
|
|
181
|
+
evaluationGainObserved: evaluationGain !== null && evaluationGain > 0, criticalRegressionsPassed: complete && receipt.cellVerdicts.filter(cell => cell.kind === 'regression' && cell.armDigest === receipt.candidateDigest).every(cell => cell.verdict === 'achieved'), heldoutIndependence: 'unproven' };
|
|
182
|
+
}
|
|
183
|
+
function prospectiveBinding(begin, frozen, key, generator) {
|
|
184
|
+
const { limits: _limits, ...expected } = frozen;
|
|
185
|
+
return verifyProspectiveCertificate(begin.prospective, expected, key, generator) && begin.prospective.datasetDigest === begin.datasetDigest;
|
|
186
|
+
}
|
|
187
|
+
/** Reinspect a privately persisted qualification against the current exact profile and definitions.
|
|
188
|
+
* The caller must obtain the result from its trusted comparison store, never model arguments.
|
|
189
|
+
* Quality is recomputed from signed verdicts; the certificate attests generation order, not training history.
|
|
190
|
+
*/
|
|
191
|
+
export function inspectProspectiveQualification(value, input) {
|
|
192
|
+
try {
|
|
193
|
+
if (!plain(value) || value.modelCalls !== 0 || value.promotionAuthorized !== false || value.execution !== 'native-file-tools-and-isolated-artifact'
|
|
194
|
+
|| !hex(input.expectedGeneratorDigest))
|
|
195
|
+
return undefined;
|
|
196
|
+
const admissionDigest = input.canaryAdmission === undefined ? undefined : digest(input.canaryAdmission);
|
|
197
|
+
if (input.canaryAdmission === undefined ? Object.hasOwn(value, 'admissionDigest')
|
|
198
|
+
: !canaryAdmissionMatches(input.canaryAdmission, input.baseline, input.candidate) || !Object.hasOwn(value, 'admissionDigest') || value.admissionDigest !== admissionDigest)
|
|
199
|
+
return undefined;
|
|
200
|
+
validateHoldoutExecution(input.execution);
|
|
201
|
+
if (input.execution.expiresAt <= Date.now() || digest(input.baseline.source.scope) !== digest(input.scope) || digest(input.candidate.source.scope) !== digest(input.scope))
|
|
202
|
+
return undefined;
|
|
203
|
+
const frozen = binding(input.scope, input.baseline, input.candidate, input.execution, input.inputs ?? {}, input.files ?? [], input.canaryAdmission);
|
|
204
|
+
const receipt = value.receipt;
|
|
205
|
+
if (!validBegin(receipt, frozen, input.pinnedPublicKey) || !prospectiveBinding(receipt, frozen, input.pinnedPublicKey, input.expectedGeneratorDigest)
|
|
206
|
+
|| !Array.isArray(receipt.cellVerdicts))
|
|
207
|
+
return undefined;
|
|
208
|
+
const saved = receipt;
|
|
209
|
+
const seen = new Map(saved.cellVerdicts.map(cell => [cell.cellId, cell.armDigest]));
|
|
210
|
+
if (!validReceipt(saved, receipt, seen))
|
|
211
|
+
return undefined;
|
|
212
|
+
return { receipt: clone(saved), quality: quality(saved), modelCalls: 0, promotionAuthorized: false, execution: 'native-file-tools-and-isolated-artifact', prospectiveHoldout: 'authority-attested-after-freeze',
|
|
213
|
+
...(admissionDigest === undefined ? {} : { admissionDigest }) };
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
return undefined;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/** Host-only coordinator: the authority supplies signed private inputs and judges every submitted observation. */
|
|
220
|
+
export async function qualifyHoldout(input) {
|
|
221
|
+
if (!input || !input.signal || typeof input.authorize !== 'function' || !input.transport || typeof input.transport.request !== 'function' || typeof input.pinnedPublicKey !== 'string' || input.pinnedPublicKey.length === 0
|
|
222
|
+
|| (input.expectedDatasetDigest === undefined) === (input.expectedGeneratorDigest === undefined) || !hex(input.expectedDatasetDigest ?? input.expectedGeneratorDigest))
|
|
223
|
+
fail('invalid input');
|
|
224
|
+
const pinnedPublicKey = input.pinnedPublicKey;
|
|
225
|
+
const expectedDatasetDigest = input.expectedDatasetDigest;
|
|
226
|
+
const expectedGeneratorDigest = input.expectedGeneratorDigest;
|
|
227
|
+
const canaryAdmission = input.canaryAdmission === undefined ? undefined : clone(input.canaryAdmission);
|
|
228
|
+
const execution = clone(input.execution);
|
|
229
|
+
const scope = clone(input.scope);
|
|
230
|
+
const inputs = clone(input.inputs ?? {});
|
|
231
|
+
const files = clone(input.files ?? []);
|
|
232
|
+
if (!plain(scope) || typeof scope.principalId !== 'string' || typeof scope.principalRecordId !== 'string' || !Number.isSafeInteger(scope.principalVersion) || scope.principalVersion < 1 || typeof scope.workspace !== 'string' || !isAbsolute(scope.workspace) || typeof scope.preset !== 'string')
|
|
233
|
+
fail('invalid qualification scope');
|
|
234
|
+
validateHoldoutExecution(execution);
|
|
235
|
+
if (execution.expiresAt <= Date.now())
|
|
236
|
+
fail('qualification expired');
|
|
237
|
+
separated(scope.workspace, execution.stateRoot);
|
|
238
|
+
assertPrivateRoot(execution.stateRoot);
|
|
239
|
+
separated(scope.workspace, execution.stateRoot);
|
|
240
|
+
const arms = clone({ baseline: input.baseline, candidate: input.candidate });
|
|
241
|
+
const scopeDigest = digest(scope);
|
|
242
|
+
if (digest(arms.baseline.source.scope) !== scopeDigest || digest(arms.candidate.source.scope) !== scopeDigest)
|
|
243
|
+
fail('definition scope does not exactly match qualification scope');
|
|
244
|
+
if (canaryAdmission !== undefined && (expectedGeneratorDigest === undefined || !canaryAdmissionMatches(canaryAdmission, arms.baseline, arms.candidate)))
|
|
245
|
+
fail('canary admission does not match exact definitions');
|
|
246
|
+
const materialized = { baseline: instantiate(arms.baseline, inputs), candidate: instantiate(arms.candidate, inputs) };
|
|
247
|
+
for (const definition of Object.values(materialized))
|
|
248
|
+
validateReplayTrace(definition, execution.maxToolCalls, execution.maxBytes);
|
|
249
|
+
const frozen = binding(scope, arms.baseline, arms.candidate, execution, inputs, files, canaryAdmission);
|
|
250
|
+
const revalidate = () => { input.signal.throwIfAborted(); if (Date.now() >= execution.expiresAt)
|
|
251
|
+
fail('qualification expired'); separated(scope.workspace, execution.stateRoot); assertPrivateRoot(execution.stateRoot); separated(scope.workspace, execution.stateRoot); input.authorize(); };
|
|
252
|
+
revalidate();
|
|
253
|
+
const { limits: _limits, ...authorityBinding } = frozen;
|
|
254
|
+
const beginValue = await request(input.transport, 'begin', authorityBinding, input.signal, execution.expiresAt, execution.cellDurationMs);
|
|
255
|
+
if (!validBegin(beginValue, frozen, pinnedPublicKey))
|
|
256
|
+
fail('begin binding or pinned key is invalid');
|
|
257
|
+
const begin = beginValue;
|
|
258
|
+
if (expectedDatasetDigest !== undefined && begin.datasetDigest !== expectedDatasetDigest)
|
|
259
|
+
fail('dataset does not match the pinned plan');
|
|
260
|
+
if (expectedGeneratorDigest !== undefined && !prospectiveBinding(begin, frozen, pinnedPublicKey, expectedGeneratorDigest))
|
|
261
|
+
fail('prospective certificate does not match the frozen plan');
|
|
262
|
+
revalidate();
|
|
263
|
+
const { IsolatedVerifierRunner } = await import('@dsh-enhanced/assistant-isolation');
|
|
264
|
+
const runner = new IsolatedVerifierRunner({ stateRoot: join(execution.stateRoot, 'verification'), image: execution.image, dockerPath: execution.dockerPath,
|
|
265
|
+
authorityDigest: digest({ protocol: 'assistant-skills/holdout-qualification/v1', binding: frozen }), command: execution.command, expiresAt: execution.expiresAt,
|
|
266
|
+
maxRuns: begin.cellCount, maxTotalDurationMs: begin.cellCount * execution.verificationDurationMs, maxDurationMs: execution.verificationDurationMs, maxOutputBytes: execution.maxOutputBytes });
|
|
267
|
+
const seen = new Map();
|
|
268
|
+
try {
|
|
269
|
+
while (true) {
|
|
270
|
+
revalidate();
|
|
271
|
+
const next = await request(input.transport, 'next', undefined, input.signal, execution.expiresAt, execution.cellDurationMs);
|
|
272
|
+
if (next === null || next === undefined)
|
|
273
|
+
break;
|
|
274
|
+
if (!validCell(next, begin, seen, seen.size, execution.maxBytes))
|
|
275
|
+
fail('next cell signature or binding is invalid');
|
|
276
|
+
const signed = next;
|
|
277
|
+
seen.set(signed.cellId, signed.armDigest);
|
|
278
|
+
const originalArm = signed.armDigest === begin.baselineDigest ? arms.baseline : arms.candidate;
|
|
279
|
+
const executedArm = signed.armDigest === begin.baselineDigest ? materialized.baseline : materialized.candidate;
|
|
280
|
+
const cellSignal = AbortSignal.any([input.signal, AbortSignal.timeout(execution.cellDurationMs)]);
|
|
281
|
+
const replay = await replaySkill({ definition: originalArm, inputs, files, artifactPath: execution.artifactPath, stateRoot: execution.stateRoot,
|
|
282
|
+
maxToolCalls: execution.maxToolCalls, maxBytes: execution.maxBytes, signal: cellSignal, authorize: revalidate });
|
|
283
|
+
revalidate();
|
|
284
|
+
const observed = await runner.run(`${begin.sessionId}:${signed.cellId}`, replay.artifact, signed.stdin, cellSignal);
|
|
285
|
+
revalidate();
|
|
286
|
+
const recorded = await request(input.transport, 'record', { cellId: signed.cellId, armDigest: signed.armDigest, stdout: observed.stdout, exitCode: observed.exitCode ?? null, quiescent: observed.quiescent,
|
|
287
|
+
status: observed.status === 'succeeded' ? 'completed' : observed.status === 'failed' ? 'failed' : 'unknown', artifactDigest: digest(replay.artifact), toolCalls: toolCalls(replay, executedArm) }, input.signal, execution.expiresAt, execution.cellDurationMs);
|
|
288
|
+
if (!['achieved', 'not-achieved', 'unknown'].includes(String(recorded)))
|
|
289
|
+
fail('authority record verdict is invalid');
|
|
290
|
+
if (recorded === 'unknown' || !observed.quiescent || observed.status === 'unknown' || observed.status === 'cancelled' || observed.status === 'timed-out')
|
|
291
|
+
break;
|
|
292
|
+
}
|
|
293
|
+
revalidate();
|
|
294
|
+
const receiptValue = await request(input.transport, 'finish', undefined, input.signal, execution.expiresAt, execution.cellDurationMs);
|
|
295
|
+
if (!validReceipt(receiptValue, begin, seen))
|
|
296
|
+
fail('receipt signature or binding is invalid');
|
|
297
|
+
const receipt = receiptValue;
|
|
298
|
+
return { receipt, quality: quality(receipt), modelCalls: 0, promotionAuthorized: false, execution: 'native-file-tools-and-isolated-artifact',
|
|
299
|
+
...(expectedGeneratorDigest === undefined ? {} : { prospectiveHoldout: 'authority-attested-after-freeze' }),
|
|
300
|
+
...(canaryAdmission === undefined ? {} : { admissionDigest: digest(canaryAdmission) }) };
|
|
301
|
+
}
|
|
302
|
+
finally {
|
|
303
|
+
await runner.close();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
//# sourceMappingURL=holdout-qualification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"holdout-qualification.js","sourceRoot":"","sources":["../src/holdout-qualification.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import { AssistantSkillsService, Config } from './service.js';
|
|
3
|
+
import { version } from './version.js';
|
|
4
|
+
export declare const name = "dsh-enhanced-assistant-skills";
|
|
5
|
+
export { version, AssistantSkillsService, Config };
|
|
6
|
+
export type * from './definition.js';
|
|
7
|
+
export type { SkillComparisonProfile } from './comparison.js';
|
|
8
|
+
export type { SealedSkillHoldoutProvider } from './sealed-holdout.js';
|
|
9
|
+
export type { ExternalHoldoutProfile } from './external-holdout.js';
|
|
10
|
+
export type { SkillComparison, SkillComparisonIdentity, SkillCandidate, SkillDeployment, SkillRun, SkillWatch, SkillWatchCanonicalRevision, SkillWatchCanonicalState, SkillWatchObservation, SkillWatchObservationBinding, SkillWatchObservationResult, StoredSkillDefinition } from './store.js';
|
|
11
|
+
export declare function apply(ctx: Context, config?: Config): void;
|
|
12
|
+
declare const _default: {
|
|
13
|
+
name: string;
|
|
14
|
+
Config: import("@deepseek-ai/schemastery").default<Config>;
|
|
15
|
+
apply: typeof apply;
|
|
16
|
+
};
|
|
17
|
+
export default _default;
|
|
18
|
+
export type { RepairContinuationProfile } from './repair-profile.js';
|
|
19
|
+
export type { RepairExecutionAuthority, RepairExecutionContext, StageFailureCandidateInput } from './service.js';
|
|
20
|
+
export { validateRepairProfiles } from './repair-profile.js';
|
|
21
|
+
export { validateExternalHoldoutProfiles } from './external-holdout.js';
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,eAAO,MAAM,IAAI,kCAAkC,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAA;AAClD,mBAAmB,iBAAiB,CAAA;AACpC,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAC7D,YAAY,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AACrE,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AACnE,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,cAAc,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACjS,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,MAAW,GAAG,IAAI,CAA4C;;;;;;AAC1G,wBAAsC;AAEtC,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AACpE,YAAY,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAEhH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAA"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AssistantSkillsService, Config } from './service.js';
|
|
2
|
+
import { version } from './version.js';
|
|
3
|
+
export const name = 'dsh-enhanced-assistant-skills';
|
|
4
|
+
export { version, AssistantSkillsService, Config };
|
|
5
|
+
export function apply(ctx, config = {}) { new AssistantSkillsService(ctx, config); }
|
|
6
|
+
export default { name, Config, apply };
|
|
7
|
+
export { validateRepairProfiles } from './repair-profile.js';
|
|
8
|
+
export { validateExternalHoldoutProfiles } from './external-holdout.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,MAAM,CAAC,MAAM,IAAI,GAAG,+BAA+B,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAA;AAMlD,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,SAAiB,EAAE,IAAU,IAAI,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC;AAC1G,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAKtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { KeyObject } from 'node:crypto';
|
|
2
|
+
import type { HoldoutDataset, QualificationBinding } from './holdout-authority.js';
|
|
3
|
+
declare const protocol: "assistant-skills/prospective-holdout/v1";
|
|
4
|
+
export type ProspectiveGeneratorName = 'order-summary/v1' | 'order-summary/v2' | 'template-render/v1' | 'template-render-jsonl/v1' | 'dependency-topological-order/v1';
|
|
5
|
+
export declare const prospectiveGeneratorNames: readonly ProspectiveGeneratorName[];
|
|
6
|
+
export declare const generatorDigest: string;
|
|
7
|
+
export declare function isProspectiveGeneratorName(value: unknown): value is ProspectiveGeneratorName;
|
|
8
|
+
export declare function prospectiveGeneratorDigest(name: ProspectiveGeneratorName): string;
|
|
9
|
+
export declare function prospectiveGeneratorProfile(name: ProspectiveGeneratorName): Readonly<{
|
|
10
|
+
version: ProspectiveGeneratorName;
|
|
11
|
+
digest: string;
|
|
12
|
+
}>;
|
|
13
|
+
export interface ProspectiveHoldoutCertificate {
|
|
14
|
+
readonly protocol: typeof protocol;
|
|
15
|
+
readonly freezeId: string;
|
|
16
|
+
readonly binding: QualificationBinding;
|
|
17
|
+
readonly generatorDigest: string;
|
|
18
|
+
/** Added after v1/v2 shipped; omitted only by certificates restored from those legacy versions. */
|
|
19
|
+
readonly profileVersion?: ProspectiveGeneratorName;
|
|
20
|
+
/** Equal to the digest of the exact profileVersion semantics. */
|
|
21
|
+
readonly profileDigest?: string;
|
|
22
|
+
readonly datasetDigest: string;
|
|
23
|
+
readonly publicKey: string;
|
|
24
|
+
readonly frozenSequence: 1;
|
|
25
|
+
readonly generatedSequence: 2;
|
|
26
|
+
readonly signature: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function prospectiveDatasetDigest(dataset: HoldoutDataset): string;
|
|
29
|
+
/** Creates private random cases after an immutable qualification binding has been frozen. */
|
|
30
|
+
export declare function generateProspectiveDataset(name?: ProspectiveGeneratorName): HoldoutDataset;
|
|
31
|
+
export declare function createProspectiveCertificate(binding: QualificationBinding, dataset: HoldoutDataset, privateKey: KeyObject | string | Buffer, freezeId: string): ProspectiveHoldoutCertificate;
|
|
32
|
+
/** Strictly checks a prospective certificate and its binding to the pinned authority key. */
|
|
33
|
+
export declare function verifyProspectiveCertificate(value: unknown, expectedBinding: QualificationBinding, pinnedKey: string, expectedGeneratorDigest: string): value is ProspectiveHoldoutCertificate;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=prospective-holdout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prospective-holdout.d.ts","sourceRoot":"","sources":["../src/prospective-holdout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiD,SAAS,EAAwC,MAAM,aAAa,CAAA;AAC5H,OAAO,KAAK,EAAe,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAG/F,QAAA,MAAM,QAAQ,EAAG,yCAAkD,CAAA;AACnE,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,0BAA0B,GAAG,iCAAiC,CAAA;AACtK,eAAO,MAAM,yBAAyB,EAAE,SAAS,wBAAwB,EAAiJ,CAAA;AAG1N,eAAO,MAAM,eAAe,QAA2Q,CAAA;AAKvS,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,wBAAwB,CAE5F;AACD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM,CAOjF;AACD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,wBAAwB,GAAG,QAAQ,CAAC;IAAE,OAAO,EAAE,wBAAwB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAE3I;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,OAAO,QAAQ,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,mGAAmG;IACnG,QAAQ,CAAC,cAAc,CAAC,EAAE,wBAAwB,CAAA;IAClD,iEAAiE;IACjE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAA;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAQD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAAyE;AA4HlJ,6FAA6F;AAC7F,wBAAgB,0BAA0B,CAAC,IAAI,GAAE,wBAAwC,GAAG,cAAc,CAmCzG;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,6BAA6B,CAS7L;AAED,6FAA6F;AAC7F,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,GAAG,KAAK,IAAI,6BAA6B,CAiB9L"}
|