@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.
Files changed (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +211 -0
  3. package/cordis.patch.yml +3 -0
  4. package/lib/capture-expansion.d.ts +18 -0
  5. package/lib/capture-expansion.d.ts.map +1 -0
  6. package/lib/capture-expansion.js +187 -0
  7. package/lib/capture-expansion.js.map +1 -0
  8. package/lib/comparison.d.ts +69 -0
  9. package/lib/comparison.d.ts.map +1 -0
  10. package/lib/comparison.js +173 -0
  11. package/lib/comparison.js.map +1 -0
  12. package/lib/definition.d.ts +163 -0
  13. package/lib/definition.d.ts.map +1 -0
  14. package/lib/definition.js +450 -0
  15. package/lib/definition.js.map +1 -0
  16. package/lib/external-holdout.d.ts +34 -0
  17. package/lib/external-holdout.d.ts.map +1 -0
  18. package/lib/external-holdout.js +212 -0
  19. package/lib/external-holdout.js.map +1 -0
  20. package/lib/holdout-authority.d.ts +123 -0
  21. package/lib/holdout-authority.d.ts.map +1 -0
  22. package/lib/holdout-authority.js +263 -0
  23. package/lib/holdout-authority.js.map +1 -0
  24. package/lib/holdout-cli.d.ts +4 -0
  25. package/lib/holdout-cli.d.ts.map +1 -0
  26. package/lib/holdout-cli.js +221 -0
  27. package/lib/holdout-cli.js.map +1 -0
  28. package/lib/holdout-qualification.d.ts +83 -0
  29. package/lib/holdout-qualification.d.ts.map +1 -0
  30. package/lib/holdout-qualification.js +306 -0
  31. package/lib/holdout-qualification.js.map +1 -0
  32. package/lib/index.d.ts +22 -0
  33. package/lib/index.d.ts.map +1 -0
  34. package/lib/index.js +9 -0
  35. package/lib/index.js.map +1 -0
  36. package/lib/prospective-holdout.d.ts +35 -0
  37. package/lib/prospective-holdout.d.ts.map +1 -0
  38. package/lib/prospective-holdout.js +254 -0
  39. package/lib/prospective-holdout.js.map +1 -0
  40. package/lib/repair-admission.d.ts +11 -0
  41. package/lib/repair-admission.d.ts.map +1 -0
  42. package/lib/repair-admission.js +25 -0
  43. package/lib/repair-admission.js.map +1 -0
  44. package/lib/repair-agent.d.ts +44 -0
  45. package/lib/repair-agent.d.ts.map +1 -0
  46. package/lib/repair-agent.js +241 -0
  47. package/lib/repair-agent.js.map +1 -0
  48. package/lib/repair-feedback.d.ts +70 -0
  49. package/lib/repair-feedback.d.ts.map +1 -0
  50. package/lib/repair-feedback.js +79 -0
  51. package/lib/repair-feedback.js.map +1 -0
  52. package/lib/repair-profile.d.ts +27 -0
  53. package/lib/repair-profile.d.ts.map +1 -0
  54. package/lib/repair-profile.js +51 -0
  55. package/lib/repair-profile.js.map +1 -0
  56. package/lib/repair-runtime.d.ts +35 -0
  57. package/lib/repair-runtime.d.ts.map +1 -0
  58. package/lib/repair-runtime.js +181 -0
  59. package/lib/repair-runtime.js.map +1 -0
  60. package/lib/replay.d.ts +38 -0
  61. package/lib/replay.d.ts.map +1 -0
  62. package/lib/replay.js +240 -0
  63. package/lib/replay.js.map +1 -0
  64. package/lib/sealed-holdout.d.ts +20 -0
  65. package/lib/sealed-holdout.d.ts.map +1 -0
  66. package/lib/sealed-holdout.js +12 -0
  67. package/lib/sealed-holdout.js.map +1 -0
  68. package/lib/service.d.ts +968 -0
  69. package/lib/service.d.ts.map +1 -0
  70. package/lib/service.js +1929 -0
  71. package/lib/service.js.map +1 -0
  72. package/lib/store.d.ts +366 -0
  73. package/lib/store.d.ts.map +1 -0
  74. package/lib/store.js +1517 -0
  75. package/lib/store.js.map +1 -0
  76. package/lib/version.d.ts +2 -0
  77. package/lib/version.d.ts.map +1 -0
  78. package/lib/version.js +2 -0
  79. package/lib/version.js.map +1 -0
  80. package/lib/watch-proof.d.ts +30 -0
  81. package/lib/watch-proof.d.ts.map +1 -0
  82. package/lib/watch-proof.js +209 -0
  83. package/lib/watch-proof.js.map +1 -0
  84. 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
@@ -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"}