@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,450 @@
1
+ import { acceptanceDigest } from '@dsh-enhanced/task-acceptance-contract';
2
+ const forbidden = new Set(['__proto__', 'prototype', 'constructor']);
3
+ const maximumArgumentsBytes = 256 * 1024;
4
+ const digestPattern = /^[a-f0-9]{64}$/u;
5
+ function fail(message = 'assistant-skills: invalid definition') { throw new Error(message); }
6
+ function text(value, maximum) {
7
+ return typeof value === 'string' && value.length > 0 && value.length <= maximum && !/[\p{Cc}]/u.test(value);
8
+ }
9
+ function scalar(value) {
10
+ return typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number' && Number.isFinite(value);
11
+ }
12
+ function clone(value) {
13
+ if (!json(value))
14
+ fail();
15
+ return JSON.parse(JSON.stringify(value));
16
+ }
17
+ function json(value) {
18
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
19
+ return true;
20
+ if (typeof value === 'number')
21
+ return Number.isFinite(value);
22
+ if (Array.isArray(value)) {
23
+ for (let index = 0; index < value.length; index++) {
24
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
25
+ if (descriptor === undefined || !('value' in descriptor) || !json(descriptor.value))
26
+ return false;
27
+ }
28
+ return true;
29
+ }
30
+ if (!value || typeof value !== 'object' || Object.getPrototypeOf(value) !== Object.prototype || Object.getOwnPropertySymbols(value).length !== 0)
31
+ return false;
32
+ return Object.keys(value).every(key => {
33
+ if (forbidden.has(key))
34
+ return false;
35
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
36
+ return descriptor !== undefined && 'value' in descriptor && json(descriptor.value);
37
+ });
38
+ }
39
+ function exact(value, keys) {
40
+ return json(value) && value !== null && typeof value === 'object' && !Array.isArray(value)
41
+ && Object.keys(value).length === keys.length && keys.every(key => Object.hasOwn(value, key));
42
+ }
43
+ function boundedArray(value, maximum) {
44
+ return Array.isArray(value) && value.length <= maximum && Object.getOwnPropertySymbols(value).length === 0
45
+ && Reflect.ownKeys(value).length === value.length + 1;
46
+ }
47
+ function integer(value, minimum = 0) { return Number.isSafeInteger(value) && value >= minimum; }
48
+ function digestValue(value) { return typeof value === 'string' && digestPattern.test(value); }
49
+ function goalScope(value) {
50
+ return exact(value, ['principalId', 'principalRecordId', 'principalVersion', 'workspace', 'preset'])
51
+ && text(value.principalId, 256) && text(value.principalRecordId, 256) && integer(value.principalVersion, 1)
52
+ && typeof value.workspace === 'string' && value.workspace.startsWith('/') && value.workspace.length <= 4096 && text(value.preset, 256);
53
+ }
54
+ function failureGoal(value) {
55
+ if (!exact(value, ['id', 'definition', 'sessionId', 'nativeGoalId']) || !text(value.id, 256) || !text(value.sessionId, 256) || !text(value.nativeGoalId, 256)
56
+ || !exact(value.definition, ['version', 'digest', 'objective']) || !integer(value.definition.version, 1) || !digestValue(value.definition.digest) || !text(value.definition.objective, 16_384))
57
+ return false;
58
+ return value.definition.digest === acceptanceDigest({ objective: value.definition.objective });
59
+ }
60
+ function failureAcceptance(value) {
61
+ return exact(value, ['contractId', 'contractDigest', 'receiptDigest', 'verifiedAt', 'validUntil']) && text(value.contractId, 256)
62
+ && digestValue(value.contractDigest) && digestValue(value.receiptDigest) && integer(value.verifiedAt, 0) && integer(value.validUntil, 1)
63
+ && value.validUntil > value.verifiedAt;
64
+ }
65
+ /**
66
+ * Canonical integrity digest for a failure summary. This public SHA-256 does
67
+ * not authenticate its producer; trust exists only while the value is obtained
68
+ * directly from the current AssistantGoalsService capability.
69
+ */
70
+ export function failureSummaryEvidenceDigest(value, generation) {
71
+ if (!text(generation, 256) || !json(value))
72
+ fail('assistant-skills: invalid failure evidence');
73
+ return acceptanceDigest({ ...clone(value), evidence: { producer: 'assistant-goals', generation } });
74
+ }
75
+ /**
76
+ * Validate the structure and integrity linkage of Host failure evidence. This
77
+ * never establishes provenance: callers must receive the value directly from
78
+ * the current AssistantGoalsService capability, not from model or stored input.
79
+ */
80
+ export function validateHostFailureEvidenceSummary(value) {
81
+ if (!exact(value, ['protocol', 'scope', 'taskFamily', 'failureCategory', 'triggerCondition', 'failures', 'repairGoal', 'attestedAt', 'evidence'])
82
+ || value.protocol !== 'assistant-skills/host-failure-evidence/v1' || !goalScope(value.scope)
83
+ || !exact(value.taskFamily, ['id', 'definitionDigest', 'objective']) || !/^[a-z](?:[a-z0-9-]{0,62}[a-z0-9])?$/u.test(String(value.taskFamily.id))
84
+ || !digestValue(value.taskFamily.definitionDigest) || !text(value.taskFamily.objective, 16_384)
85
+ || value.taskFamily.definitionDigest !== acceptanceDigest({ objective: value.taskFamily.objective })
86
+ || value.failureCategory !== 'objective-not-achieved' && value.failureCategory !== 'repeated-not-achieved'
87
+ || !exact(value.triggerCondition, ['kind', 'minimumOccurrences', 'windowStartedAt', 'windowEndedAt']) || value.triggerCondition.kind !== 'not-achieved-count'
88
+ || !integer(value.triggerCondition.minimumOccurrences, 1) || value.triggerCondition.minimumOccurrences > 32
89
+ || !integer(value.triggerCondition.windowStartedAt, 0) || !integer(value.triggerCondition.windowEndedAt, 0) || value.triggerCondition.windowEndedAt < value.triggerCondition.windowStartedAt
90
+ || !boundedArray(value.failures, 32) || value.failures.length < value.triggerCondition.minimumOccurrences || !failureGoal(value.repairGoal)
91
+ || !integer(value.attestedAt, 0) || !exact(value.evidence, ['producer', 'generation', 'digest']) || value.evidence.producer !== 'assistant-goals'
92
+ || !text(value.evidence.generation, 256) || !digestValue(value.evidence.digest))
93
+ fail('assistant-skills: invalid Host failure summary');
94
+ const input = value;
95
+ if (input.failureCategory === 'objective-not-achieved' && (input.triggerCondition.minimumOccurrences !== 1 || input.failures.length !== 1)
96
+ || input.failureCategory === 'repeated-not-achieved' && input.triggerCondition.minimumOccurrences < 2)
97
+ fail('assistant-skills: invalid failure trigger condition');
98
+ const ids = new Set();
99
+ const sessions = new Set();
100
+ const runs = new Set();
101
+ const nativeGoals = new Set();
102
+ for (const failure of input.failures) {
103
+ if (!exact(failure, ['goal', 'runId', 'execution', 'outcome', 'acceptance', 'traceDigest']) || !failureGoal(failure.goal) || !text(failure.runId, 256)
104
+ || !exact(failure.execution, ['status', 'quiescent']) || failure.execution.status !== 'succeeded' || failure.execution.quiescent !== true
105
+ || failure.outcome !== 'not-achieved' || !failureAcceptance(failure.acceptance) || !digestValue(failure.traceDigest)
106
+ || failure.goal.definition.digest !== input.taskFamily.definitionDigest || failure.goal.definition.objective !== input.taskFamily.objective
107
+ || failure.acceptance.verifiedAt < input.triggerCondition.windowStartedAt || failure.acceptance.verifiedAt > input.triggerCondition.windowEndedAt
108
+ || failure.acceptance.verifiedAt > input.attestedAt || failure.acceptance.validUntil <= input.attestedAt
109
+ || ids.has(failure.goal.id) || sessions.has(failure.goal.sessionId) || runs.has(failure.runId) || nativeGoals.has(failure.goal.nativeGoalId)) {
110
+ fail('assistant-skills: invalid Host failure observation');
111
+ }
112
+ ids.add(failure.goal.id);
113
+ sessions.add(failure.goal.sessionId);
114
+ runs.add(failure.runId);
115
+ nativeGoals.add(failure.goal.nativeGoalId);
116
+ }
117
+ if (input.repairGoal.definition.digest !== input.taskFamily.definitionDigest || input.repairGoal.definition.objective !== input.taskFamily.objective
118
+ || ids.has(input.repairGoal.id) || sessions.has(input.repairGoal.sessionId) || nativeGoals.has(input.repairGoal.nativeGoalId))
119
+ fail('assistant-skills: failure repair Goal is not independent');
120
+ const { evidence, ...summary } = input;
121
+ if (evidence.digest !== failureSummaryEvidenceDigest(summary, evidence.generation))
122
+ fail('assistant-skills: failure evidence digest changed');
123
+ return freeze(input);
124
+ }
125
+ /** Validate a self-contained candidate provenance envelope before persistence or comparison. */
126
+ export function validateFailureCaptureProvenance(value) {
127
+ if (!exact(value, ['protocol', 'trigger', 'repair', 'parent', 'candidate', 'permissionDelta', 'rollbackTarget'])
128
+ || value.protocol !== 'assistant-skills/failure-capture-provenance/v1')
129
+ fail('assistant-skills: invalid failure capture provenance');
130
+ const input = value;
131
+ validateHostFailureEvidenceSummary(input.trigger);
132
+ if (!exact(input.repair, ['goal', 'runId', 'sourceDigest', 'acceptanceDigest']) || !failureGoal(input.repair.goal) || !text(input.repair.runId, 256)
133
+ || !digestValue(input.repair.sourceDigest) || !digestValue(input.repair.acceptanceDigest)
134
+ || acceptanceDigest(input.repair.goal) !== acceptanceDigest(input.trigger.repairGoal)
135
+ || input.trigger.failures.some(failure => failure.runId === input.repair.runId))
136
+ fail('assistant-skills: invalid achieved repair provenance');
137
+ const versioned = (item) => exact(item, ['name', 'version', 'digest'])
138
+ && /^[a-z](?:[a-z0-9-]{0,62}[a-z0-9])?$/u.test(String(item.name)) && integer(item.version, 1) && digestValue(item.digest);
139
+ if (!versioned(input.parent) || !exact(input.candidate, ['name', 'definitionDigest']) || input.candidate.name !== input.parent.name || !digestValue(input.candidate.definitionDigest)
140
+ || !versioned(input.rollbackTarget) || acceptanceDigest(input.rollbackTarget) !== acceptanceDigest(input.parent))
141
+ fail('assistant-skills: invalid parent or rollback provenance');
142
+ // This proves only that the reported tool-name delta matches the two
143
+ // definitions. Policy must independently authorize every future execution.
144
+ if (!exact(input.permissionDelta, ['parent', 'candidate', 'added', 'removed', 'expandsAuthority']))
145
+ fail('assistant-skills: invalid permission delta');
146
+ const lists = ['parent', 'candidate', 'added', 'removed'];
147
+ for (const key of lists)
148
+ if (!boundedArray(input.permissionDelta[key], 256) || input.permissionDelta[key].some(item => !text(item, 256))
149
+ || new Set(input.permissionDelta[key]).size !== input.permissionDelta[key].length
150
+ || [...input.permissionDelta[key]].sort().some((item, index) => item !== input.permissionDelta[key][index]))
151
+ fail('assistant-skills: invalid permission delta');
152
+ const parent = new Set(input.permissionDelta.parent), candidate = new Set(input.permissionDelta.candidate);
153
+ if (acceptanceDigest(input.permissionDelta.added) !== acceptanceDigest([...candidate].filter(item => !parent.has(item)).sort())
154
+ || acceptanceDigest(input.permissionDelta.removed) !== acceptanceDigest([...parent].filter(item => !candidate.has(item)).sort())
155
+ || input.permissionDelta.expandsAuthority !== (input.permissionDelta.added.length > 0))
156
+ fail('assistant-skills: permission delta changed');
157
+ return freeze(input);
158
+ }
159
+ function freeze(value) { return Object.freeze(clone(value)); }
160
+ function pointer(path) {
161
+ if (path === '' || !path.startsWith('/'))
162
+ fail('assistant-skills: binding path is invalid');
163
+ return path.slice(1).split('/').map(part => {
164
+ const decoded = part.replace(/~1/g, '/').replace(/~0/g, '~');
165
+ if (decoded === '' || forbidden.has(decoded))
166
+ fail('assistant-skills: binding path is invalid');
167
+ return decoded;
168
+ });
169
+ }
170
+ function at(root, path) {
171
+ let current = root;
172
+ for (const part of pointer(path)) {
173
+ if (Array.isArray(current)) {
174
+ if (!/^(0|[1-9][0-9]*)$/u.test(part) || Number(part) >= current.length)
175
+ fail('assistant-skills: binding path is missing');
176
+ current = current[Number(part)];
177
+ }
178
+ else if (current && typeof current === 'object' && Object.getPrototypeOf(current) === Object.prototype && Object.hasOwn(current, part)) {
179
+ current = current[part];
180
+ }
181
+ else
182
+ fail('assistant-skills: binding path is missing');
183
+ }
184
+ if (!scalar(current))
185
+ fail('assistant-skills: binding value must be scalar');
186
+ return current;
187
+ }
188
+ function replace(root, path, value) {
189
+ const parts = pointer(path);
190
+ let current = root;
191
+ for (const part of parts.slice(0, -1)) {
192
+ if (Array.isArray(current))
193
+ current = current[Number(part)];
194
+ else
195
+ current = current[part];
196
+ }
197
+ const final = parts.at(-1);
198
+ if (Array.isArray(current))
199
+ current[Number(final)] = value;
200
+ else
201
+ current[final] = value;
202
+ }
203
+ function inputType(value) {
204
+ if (typeof value === 'string')
205
+ return 'string';
206
+ if (typeof value === 'number')
207
+ return 'number';
208
+ return 'boolean';
209
+ }
210
+ function controlTool(name, arguments_) {
211
+ const normalized = name.toLowerCase();
212
+ // Native get_goal is a parameterless read of the current Goal. It is only
213
+ // reusable when the Host explicitly allowlists it; all other goal controls
214
+ // remain excluded from captured tool compositions.
215
+ if (normalized === 'get_goal')
216
+ return !arguments_ || typeof arguments_ !== 'object' || Array.isArray(arguments_)
217
+ || Object.getPrototypeOf(arguments_) !== Object.prototype || Object.getOwnPropertySymbols(arguments_).length !== 0 || Object.keys(arguments_).length !== 0;
218
+ return normalized.startsWith('goal_') || normalized.startsWith('skill') || normalized.includes('workflow') || normalized.includes('subagent')
219
+ || ['create_goal', 'update_goal', 'run_code', 'javascript'].includes(normalized);
220
+ }
221
+ function failedProbe(value) {
222
+ if (!value || typeof value !== 'object' || Array.isArray(value) || Object.getPrototypeOf(value) !== Object.prototype)
223
+ return false;
224
+ const observation = value;
225
+ if (!text(observation.id, 256) || !text(observation.toolName, 256) || observation.outcome !== 'failed' || !json(observation.arguments))
226
+ return false;
227
+ if (observation.toolName === 'read' || observation.toolName === 'glob' || observation.toolName === 'grep')
228
+ return true;
229
+ return observation.toolName === 'get_goal' && !controlTool('get_goal', observation.arguments);
230
+ }
231
+ /** The session-owned todo list is planning provenance, never a reusable action. */
232
+ function todoWrite(value) {
233
+ if (!value || typeof value !== 'object' || Array.isArray(value) || Object.getPrototypeOf(value) !== Object.prototype || Object.getOwnPropertySymbols(value).length !== 0)
234
+ return false;
235
+ if (!Object.hasOwn(value, 'todos') || Object.keys(value).length !== 1 || !Array.isArray(value.todos))
236
+ return false;
237
+ const contents = new Set();
238
+ for (const todo of value.todos) {
239
+ if (!todo || typeof todo !== 'object' || Array.isArray(todo) || Object.getPrototypeOf(todo) !== Object.prototype || Object.getOwnPropertySymbols(todo).length !== 0
240
+ || Object.keys(todo).length !== 2 || !Object.hasOwn(todo, 'content') || !Object.hasOwn(todo, 'status') || typeof todo.content !== 'string'
241
+ || !['pending', 'in_progress', 'completed'].includes(todo.status))
242
+ return false;
243
+ const content = todo.content.trim();
244
+ if (!content || contents.has(content))
245
+ return false;
246
+ contents.add(content);
247
+ }
248
+ return true;
249
+ }
250
+ function digest(value) { return typeof value === 'string' && /^[a-f0-9]{64}$/u.test(value); }
251
+ function validExpansion(value) {
252
+ if (!json(value) || !value || typeof value !== 'object' || Array.isArray(value) || Object.keys(value).length !== 7)
253
+ return false;
254
+ const expansion = value;
255
+ if (expansion.protocol !== 'assistant-skills/run-expansion/v1' || !text(expansion.callId, 256) || !text(expansion.runId, 256)
256
+ || !digest(expansion.runDigest) || !digest(expansion.definitionDigest) || !digest(expansion.inputsDigest) || !Array.isArray(expansion.steps) || expansion.steps.length === 0 || expansion.steps.length > 32)
257
+ return false;
258
+ const ids = new Set();
259
+ return expansion.steps.every(step => json(step) && step && typeof step === 'object' && !Array.isArray(step) && Object.keys(step).length === 3
260
+ && text(step.id, 256) && text(step.toolName, 256) && json(step.arguments) && !ids.has(step.id) && (ids.add(step.id), true));
261
+ }
262
+ function expandSkillRuns(sourceSteps, observations, expansions) {
263
+ if (!Array.isArray(expansions) || expansions.length > 32 || expansions.some(value => !validExpansion(value)))
264
+ fail('assistant-skills: invalid run expansion');
265
+ const calls = new Map();
266
+ const runs = new Set();
267
+ for (const expansion of expansions) {
268
+ if (calls.has(expansion.callId) || runs.has(expansion.runId))
269
+ fail('assistant-skills: invalid run expansion');
270
+ calls.set(expansion.callId, expansion);
271
+ // Stored step IDs belong to a definition and repeat across distinct runs.
272
+ // An idempotent response for the same run is not another execution.
273
+ runs.add(expansion.runId);
274
+ }
275
+ const sourceCalls = new Set(sourceSteps.filter(step => step?.toolName === 'skill_run' && typeof step.id === 'string').map(step => step.id));
276
+ if ([...calls.keys()].some(callId => !sourceCalls.has(callId)))
277
+ fail('assistant-skills: invalid run expansion');
278
+ const proofBytes = expansions.length === 0 ? [] : [expansions];
279
+ if (Buffer.byteLength(JSON.stringify([...sourceSteps.map(step => step.arguments), ...observations.map(value => value.arguments), ...proofBytes]), 'utf8') > maximumArgumentsBytes)
280
+ fail('assistant-skills: bounded run expansion is required');
281
+ return sourceSteps.flatMap(step => {
282
+ const expansion = step.toolName === 'skill_run' ? calls.get(step.id) : undefined;
283
+ return expansion === undefined ? [step] : expansion.steps.map(expanded => ({ id: `expanded:${acceptanceDigest([expansion.callId, expanded.id])}`, toolName: expanded.toolName, arguments: expanded.arguments }));
284
+ });
285
+ }
286
+ function standardFileMutators(steps) {
287
+ const output = [];
288
+ for (const step of steps) {
289
+ if (step.toolName !== 'write' && step.toolName !== 'edit' || !step.arguments || typeof step.arguments !== 'object' || Array.isArray(step.arguments)
290
+ || Object.getPrototypeOf(step.arguments) !== Object.prototype || Object.getOwnPropertySymbols(step.arguments).length !== 0)
291
+ continue;
292
+ const args = step.arguments;
293
+ const allowed = step.toolName === 'write' ? ['file_path', 'content'] : ['file_path', 'old_string', 'new_string', 'replace_all'];
294
+ if (Object.keys(args).some(key => !allowed.includes(key)) || !text(args.file_path, 4096)
295
+ || step.toolName === 'write' && typeof args.content !== 'string'
296
+ || step.toolName === 'edit' && (typeof args.old_string !== 'string' || typeof args.new_string !== 'string' || args.replace_all !== undefined && typeof args.replace_all !== 'boolean'))
297
+ continue;
298
+ output.push({ id: step.id, toolName: step.toolName, arguments: args });
299
+ }
300
+ return output;
301
+ }
302
+ function fileObservations(definition) {
303
+ const value = definition.fileObservations;
304
+ if (value === undefined)
305
+ return [];
306
+ if (!value || typeof value !== 'object' || Array.isArray(value) || Object.getPrototypeOf(value) !== Object.prototype || Object.getOwnPropertySymbols(value).length !== 0
307
+ || Object.keys(value).length !== 2 || value.protocol !== 'assistant-skills/file-observations/v1' || !Array.isArray(value.beforeSteps)
308
+ || value.beforeSteps.some(id => !text(id, 256)))
309
+ fail('assistant-skills: invalid file observations');
310
+ const mutators = standardFileMutators(definition.steps);
311
+ if (definition.steps.length + value.beforeSteps.length > 32 || value.beforeSteps.length !== mutators.length
312
+ || value.beforeSteps.some((id, index) => id !== mutators[index]?.id) || new Set(value.beforeSteps).size !== value.beforeSteps.length)
313
+ fail('assistant-skills: invalid file observations');
314
+ if (Buffer.byteLength(JSON.stringify([...definition.steps.map(step => step.arguments), ...mutators.map(step => ({ file_path: step.arguments.file_path, limit: 1 }))]), 'utf8') > maximumArgumentsBytes)
315
+ fail('assistant-skills: file observations exceed argument limit');
316
+ const observationIds = mutators.map((_step, index) => `file-observation:${index + 1}`);
317
+ if (new Set(definition.steps.map(step => step.id)).size !== definition.steps.length || observationIds.some(id => definition.steps.some(step => step.id === id)))
318
+ fail('assistant-skills: invalid file observations');
319
+ return mutators;
320
+ }
321
+ /** Derive the native reads which establish file-observation policy state for an instantiated definition. */
322
+ export function fileObservationSteps(definition) {
323
+ return Object.freeze(fileObservations(definition).map((step, index) => Object.freeze({ id: `file-observation:${index + 1}`, beforeStepId: step.id,
324
+ filePath: step.arguments.file_path, allowAbsent: step.toolName === 'write' })));
325
+ }
326
+ /** Successful source-Goal planning notes are provenance, never reusable authority. */
327
+ function sourceCheckpoint(value, goalId) {
328
+ if (!json(value) || !value || typeof value !== 'object' || Array.isArray(value))
329
+ return false;
330
+ const args = value;
331
+ const keys = ['goal_id', 'expected_version', 'next_step', 'blockers', 'assumptions', 'evidence_refs', 'dependencies'];
332
+ const strings = (items) => Array.isArray(items) && items.every(item => typeof item === 'string');
333
+ return Object.keys(args).length === keys.length && Object.keys(args).every(key => keys.includes(key))
334
+ && args.goal_id === goalId && Number.isSafeInteger(args.expected_version) && args.expected_version > 0
335
+ && typeof args.next_step === 'string' && strings(args.blockers) && strings(args.evidence_refs) && strings(args.dependencies)
336
+ && Array.isArray(args.assumptions) && args.assumptions.every(item => item && typeof item === 'object' && !Array.isArray(item)
337
+ && Object.keys(item).length === 2 && Object.keys(item).every(key => ['statement', 'expires_at'].includes(key))
338
+ && typeof item.statement === 'string' && Number.isSafeInteger(item.expires_at) && item.expires_at > 0);
339
+ }
340
+ /** Multi-round provenance is explicit; the v1 top-level still names the final accepted run. */
341
+ function sourceProjection(source) {
342
+ if (source.segments === undefined)
343
+ return { steps: source.steps, observations: source.failedObservations ?? [] };
344
+ const segments = source.segments;
345
+ if (!Array.isArray(segments) || segments.length < 2 || segments.length > 32)
346
+ fail('assistant-skills: invalid source segments');
347
+ const runs = new Set();
348
+ for (const [index, segment] of segments.entries()) {
349
+ if (!segment || !text(segment.runId, 256) || runs.has(segment.runId) || segment.round !== index + 1
350
+ || !Number.isSafeInteger(segment.turn) || segment.turn < 1 || index > 0 && segment.turn <= segments[index - 1].turn
351
+ || !Number.isSafeInteger(segment.nativeRevision) || segment.nativeRevision < 0 || !Array.isArray(segment.steps)
352
+ || segment.failedObservations !== undefined && !Array.isArray(segment.failedObservations))
353
+ fail('assistant-skills: invalid source segment');
354
+ runs.add(segment.runId);
355
+ }
356
+ const final = segments.at(-1);
357
+ if (final.runId !== source.runId || final.turn !== source.turn || acceptanceDigest(final.steps) !== acceptanceDigest(source.steps)
358
+ || acceptanceDigest(final.failedObservations ?? []) !== acceptanceDigest(source.failedObservations ?? []))
359
+ fail('assistant-skills: final source segment mismatch');
360
+ return { steps: segments.flatMap(segment => segment.steps), observations: segments.flatMap(segment => segment.failedObservations ?? []) };
361
+ }
362
+ /** Derive a bounded, parameterizable skill only from an independently verified tool trace. */
363
+ export function createDefinition(source, options, allowedTools, expansions = []) {
364
+ if (!json(source) || !json(options) || !source || source.protocol !== 'assistant-goals/verified-workflow-source/v1' || !Array.isArray(source.steps) || source.steps.length === 0 || source.steps.length > 32
365
+ || !options || !/^[a-z](?:[a-z0-9-]{0,62}[a-z0-9])?$/u.test(options.name) || !text(options.description, 512)
366
+ || !Array.isArray(allowedTools) || allowedTools.some(tool => !text(tool, 256)))
367
+ fail();
368
+ const allow = new Set(allowedTools);
369
+ if (allow.size !== allowedTools.length)
370
+ fail('assistant-skills: duplicate allowed tool');
371
+ const { steps: sourceSteps, observations } = sourceProjection(source);
372
+ if (!Array.isArray(observations) || sourceSteps.length + observations.length > 32 || observations.some(value => !failedProbe(value)))
373
+ fail('assistant-skills: invalid failed observation');
374
+ const expandedSteps = expandSkillRuns(sourceSteps, observations, expansions);
375
+ const executable = expandedSteps.filter(step => {
376
+ if (!step || !text(step.id, 256) || !text(step.toolName, 256) || !json(step.arguments))
377
+ fail('assistant-skills: untrusted tool trace');
378
+ if (step.toolName === 'goal_checkpoint' && sourceCheckpoint(step.arguments, source.goal.id))
379
+ return false;
380
+ // The current owner's parameterless catalog inspection informs the source
381
+ // task but is not executable workflow authority. Retain it in provenance.
382
+ if (step.toolName === 'skill_status' && step.arguments !== null && typeof step.arguments === 'object'
383
+ && !Array.isArray(step.arguments) && Object.keys(step.arguments).length === 0)
384
+ return false;
385
+ if (step.toolName === 'todo_write') {
386
+ if (!todoWrite(step.arguments))
387
+ fail('assistant-skills: invalid todo provenance');
388
+ return false;
389
+ }
390
+ if (!allow.has(step.toolName) || controlTool(step.toolName, step.arguments))
391
+ fail('assistant-skills: untrusted tool trace');
392
+ return true;
393
+ });
394
+ if (executable.length === 0)
395
+ fail('assistant-skills: executable tool trace required');
396
+ const steps = executable.map((step, index) => ({ id: step.id, toolName: step.toolName, arguments: clone(step.arguments), dependsOn: index === 0 ? [] : [executable[index - 1].id] }));
397
+ if (new Set([...expandedSteps.map(step => step.id), ...observations.map(value => value.id)]).size !== expandedSteps.length + observations.length
398
+ || expandedSteps.length + observations.length > 32)
399
+ fail('assistant-skills: bounded tool trace is required');
400
+ const bindings = options.bindings ?? [];
401
+ if (!Array.isArray(bindings) || bindings.length > 8)
402
+ fail('assistant-skills: too many bindings');
403
+ const names = new Set();
404
+ const locations = new Set();
405
+ const inputs = bindings.map(binding => {
406
+ if (!json(binding) || !binding || !/^[a-z][a-z0-9_]{0,63}$/u.test(binding.name) || !text(binding.stepId, 256) || typeof binding.path !== 'string' || names.has(binding.name) || locations.has(`${binding.stepId}\u0000${binding.path}`))
407
+ fail('assistant-skills: invalid binding');
408
+ names.add(binding.name);
409
+ locations.add(`${binding.stepId}\u0000${binding.path}`);
410
+ const step = steps.find(candidate => candidate.id === binding.stepId);
411
+ if (!step)
412
+ fail('assistant-skills: binding step is missing');
413
+ const value = at(step.arguments, binding.path);
414
+ return { ...binding, type: inputType(value), default: value };
415
+ });
416
+ const observedMutators = standardFileMutators(steps);
417
+ if (steps.length + observedMutators.length > 32)
418
+ fail('assistant-skills: bounded tool trace is required');
419
+ const definition = { protocol: 'assistant-skills/definition/v1', name: options.name, description: options.description, source: clone(source), inputs, steps,
420
+ ...(observedMutators.length === 0 ? {} : { fileObservations: { protocol: 'assistant-skills/file-observations/v1', beforeSteps: observedMutators.map(step => step.id) } }),
421
+ ...(expansions.length === 0 ? {} : { runExpansions: clone(expansions) }),
422
+ preconditions: 'current-owner-policy-and-fresh-goal', compensation: 'stop-and-report' };
423
+ fileObservations(definition);
424
+ return freeze(definition);
425
+ }
426
+ /** Materialize saved defaults and only declared scalar inputs into an immutable trace projection. */
427
+ export function instantiate(definition, values = {}) {
428
+ if (!definition || definition.protocol !== 'assistant-skills/definition/v1' || !values || typeof values !== 'object' || Array.isArray(values) || Object.getPrototypeOf(values) !== Object.prototype || Object.getOwnPropertySymbols(values).length !== 0 || !json(values))
429
+ fail('assistant-skills: invalid invocation inputs');
430
+ const expected = new Map(definition.inputs.map(input => [input.name, input]));
431
+ if (Object.keys(values).some(name => !expected.has(name) || forbidden.has(name)))
432
+ fail('assistant-skills: unknown invocation input');
433
+ const output = clone(definition);
434
+ for (const input of output.inputs) {
435
+ const value = Object.hasOwn(values, input.name) ? values[input.name] : input.default;
436
+ if (typeof value !== input.type || !scalar(value))
437
+ fail('assistant-skills: invocation input type mismatch');
438
+ const step = output.steps.find(candidate => candidate.id === input.stepId);
439
+ if (!step)
440
+ fail('assistant-skills: invalid definition');
441
+ replace(step.arguments, input.path, value);
442
+ }
443
+ if (output.runExpansions !== undefined)
444
+ expandSkillRuns(sourceProjection(output.source).steps, sourceProjection(output.source).observations, output.runExpansions);
445
+ fileObservations(output);
446
+ if (Buffer.byteLength(JSON.stringify(output.steps.map(step => step.arguments)), 'utf8') > maximumArgumentsBytes)
447
+ fail('assistant-skills: invocation arguments too large');
448
+ return freeze(output);
449
+ }
450
+ //# sourceMappingURL=definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.js","sourceRoot":"","sources":["../src/definition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { GoalScope } from '@dsh-enhanced/assistant-goals';
2
+ import { type CanaryAdmission, type HoldoutExecutionConfig, type HoldoutQualificationInput } from './holdout-qualification.js';
3
+ import { type CanaryAdmissionTemplate } from './repair-admission.js';
4
+ /** Public Host configuration. The authority owns its private dataset/key/state elsewhere. */
5
+ export interface ExternalHoldoutProfile {
6
+ readonly id: string;
7
+ readonly version: number;
8
+ readonly scope: GoalScope;
9
+ readonly execution: HoldoutExecutionConfig;
10
+ readonly authority: {
11
+ readonly executable: string;
12
+ readonly args: readonly string[];
13
+ readonly publicKey: string;
14
+ readonly datasetDigest?: string;
15
+ readonly generatorDigest?: string;
16
+ };
17
+ readonly inputs?: Readonly<Record<string, unknown>>;
18
+ readonly files?: readonly {
19
+ path: string;
20
+ content: string;
21
+ }[];
22
+ /** Required for canary admission. Legacy prospective profiles remain qualification-only. */
23
+ readonly canaryAdmission?: CanaryAdmission;
24
+ /** Host-only repair admission, materialized only after an exact parent/candidate read. */
25
+ readonly canaryAdmissionTemplate?: CanaryAdmissionTemplate;
26
+ readonly maxComparisons: 1;
27
+ }
28
+ export declare function validateExternalHoldoutProfiles(values: readonly ExternalHoldoutProfile[]): readonly ExternalHoldoutProfile[];
29
+ /** One bounded NDJSON pipe per qualification; malformed/uncertain responses poison the channel. */
30
+ export declare function openHoldoutProcess(authority: ExternalHoldoutProfile['authority'], signal: AbortSignal): Promise<{
31
+ transport: HoldoutQualificationInput['transport'];
32
+ close(): Promise<void>;
33
+ }>;
34
+ //# sourceMappingURL=external-holdout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-holdout.d.ts","sourceRoot":"","sources":["../src/external-holdout.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAA0E,KAAK,eAAe,EAAE,KAAK,sBAAsB,EAAE,KAAK,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AACtM,OAAO,EAAmC,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAErG,6FAA6F;AAC7F,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAA;IAC1C,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACrL,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC7D,4FAA4F;IAC5F,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAA;IAC1C,0FAA0F;IAC1F,QAAQ,CAAC,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;IAC1D,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAA;CAC3B;AAoBD,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,GAAG,SAAS,sBAAsB,EAAE,CAoB5H;AAED,mGAAmG;AACnG,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAkEpM"}