@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,173 @@
1
+ import { mkdirSync, lstatSync, realpathSync, readFileSync } from 'node:fs';
2
+ import { isAbsolute, join, relative } from 'node:path';
3
+ import { createRequire } from 'node:module';
4
+ import { acceptanceDigest } from '@dsh-enhanced/task-acceptance-contract';
5
+ import { instantiate } from './definition.js';
6
+ import { replaySkill, validateReplayTrace } from './replay.js';
7
+ function integer(value, min, max) { return Number.isSafeInteger(value) && value >= min && value <= max; }
8
+ function safeId(value) { return typeof value === 'string' && /^[a-z][a-z0-9-]{0,63}$/u.test(value); }
9
+ function inside(parent, child) { const path = relative(parent, child); return !path || !path.startsWith('..') && !isAbsolute(path); }
10
+ function plain(value) { return value !== null && typeof value === 'object' && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype; }
11
+ export function validateComparisonProfiles(value) {
12
+ if (!Array.isArray(value) || value.length > 8)
13
+ throw new Error('assistant-skills: invalid comparison profiles');
14
+ const ids = new Set();
15
+ const result = value.map(raw => {
16
+ if (!plain(raw))
17
+ throw new Error('assistant-skills: invalid comparison profile');
18
+ const p = JSON.parse(JSON.stringify(raw));
19
+ if (!safeId(p.id) || ids.has(p.id) || !integer(p.version, 1, 1000000) || !plain(p.scope)
20
+ || !['principalId', 'principalRecordId', 'workspace', 'preset'].every(key => typeof p.scope[key] === 'string' && String(p.scope[key]).length > 0)
21
+ || !integer(p.scope.principalVersion, 1, 1000000000) || !isAbsolute(p.scope.workspace)
22
+ || typeof p.stateRoot !== 'string' || !isAbsolute(p.stateRoot) || inside(p.scope.workspace, p.stateRoot) || inside(p.stateRoot, p.scope.workspace)
23
+ || typeof p.image !== 'string' || !/^sha256:[0-9a-f]{64}$/u.test(p.image) || typeof p.dockerPath !== 'string' || !isAbsolute(p.dockerPath)
24
+ || typeof p.command !== 'string' || !p.command || p.command.length > 16384
25
+ || typeof p.artifactPath !== 'string' || !/^[a-zA-Z0-9_.-]+(?:\/[a-zA-Z0-9_.-]+)*$/u.test(p.artifactPath) || p.artifactPath.split('/').some(part => part === '.' || part === '..')
26
+ || !integer(p.expiresAt, 1, Number.MAX_SAFE_INTEGER) || !integer(p.maxComparisons, 1, 100) || !integer(p.repeats, 2, 4)
27
+ || !integer(p.cellDurationMs, 1000, 300000) || !integer(p.verificationDurationMs, 1, 300000) || p.verificationDurationMs >= p.cellDurationMs
28
+ || !integer(p.maxToolCalls, 1, 32) || !integer(p.maxBytes, 1, 262144) || !integer(p.maxOutputBytes, 1, 262144)
29
+ || typeof p.minimumEvaluationGain !== 'number' || !Number.isFinite(p.minimumEvaluationGain) || p.minimumEvaluationGain <= 0 || p.minimumEvaluationGain > 1
30
+ || !Array.isArray(p.cases) || p.cases.length < 3 || p.cases.length > 12)
31
+ throw new Error('assistant-skills: invalid comparison profile');
32
+ const caseIds = new Set();
33
+ for (const entry of p.cases) {
34
+ if (!plain(entry) || !safeId(entry.id) || caseIds.has(entry.id) || typeof entry.kind !== 'string' || !['replay', 'evaluation', 'regression'].includes(entry.kind)
35
+ || !plain(entry.inputs) || !Array.isArray(entry.files) || entry.files.length > 64
36
+ || entry.files.some(file => !plain(file) || typeof file.path !== 'string' || typeof file.content !== 'string')
37
+ || typeof entry.stdin !== 'string' || typeof entry.expectedStdout !== 'string' || !integer(entry.expectedExitCode, 0, 255)
38
+ || Buffer.byteLength(JSON.stringify(entry)) > p.maxBytes)
39
+ throw new Error('assistant-skills: invalid comparison case');
40
+ caseIds.add(entry.id);
41
+ }
42
+ if (!['replay', 'evaluation', 'regression'].every(kind => p.cases.some(entry => entry.kind === kind))
43
+ || p.maxComparisons * p.cases.length * p.repeats * 2 * p.verificationDurationMs > 86400000)
44
+ throw new Error('assistant-skills: incomplete or unbounded comparison suite');
45
+ ids.add(p.id);
46
+ return p;
47
+ });
48
+ return result;
49
+ }
50
+ function privateRoot(path) {
51
+ mkdirSync(path, { recursive: true, mode: 0o700 });
52
+ const stat = lstatSync(path);
53
+ if (!stat.isDirectory() || stat.isSymbolicLink() || realpathSync(path) !== path || (stat.mode & 0o077) !== 0 || stat.uid !== process.getuid?.())
54
+ throw new Error('assistant-skills: comparison requires a private owned root');
55
+ }
56
+ const require = createRequire(import.meta.url);
57
+ const codeDigest = acceptanceDigest([readFileSync(new URL(import.meta.url), 'utf8'), readFileSync(new URL(import.meta.url.endsWith('.ts') ? './replay.ts' : './replay.js', import.meta.url), 'utf8')]);
58
+ function runtimeDigest() {
59
+ const packages = ['@deepseek-ai/cordis', '@deepseek-ai/dsh-tools', '@deepseek-ai/dsh-fs-local', '@deepseek-ai/dsh-tool-fs', '@dsh-enhanced/assistant-isolation', '@dsh-enhanced/assistant-evaluation'];
60
+ return acceptanceDigest({ protocol: 'assistant-skills/comparison/v1', codeDigest, packages: Object.fromEntries(packages.map(name => [name, require(`${name}/package.json`).version])) });
61
+ }
62
+ /** Host coordinator: fixed native file-tool replay, separate isolated artifact execution, Host-side judge. */
63
+ export class SkillComparator {
64
+ #profile;
65
+ #runner;
66
+ #pending = new Set();
67
+ #abort = new AbortController();
68
+ #runtime;
69
+ constructor(profile) {
70
+ this.#profile = validateComparisonProfiles([profile])[0];
71
+ privateRoot(this.#profile.stateRoot);
72
+ this.#runtime = runtimeDigest();
73
+ const p = this.#profile, count = p.maxComparisons * p.cases.length * p.repeats * 2;
74
+ this.#runner = import('@dsh-enhanced/assistant-isolation').then(({ IsolatedVerifierRunner }) => new IsolatedVerifierRunner({ stateRoot: join(p.stateRoot, 'verification'), image: p.image, dockerPath: p.dockerPath,
75
+ authorityDigest: acceptanceDigest(p), command: p.command, expiresAt: p.expiresAt, maxRuns: count,
76
+ maxTotalDurationMs: count * p.verificationDurationMs, maxDurationMs: p.verificationDurationMs, maxOutputBytes: p.maxOutputBytes }));
77
+ void this.#runner.catch(() => { });
78
+ }
79
+ async compare(id, baseline, candidate, signal, authorize) {
80
+ const p = this.#profile;
81
+ const { BenchmarkStore, benchmarkReport, parseBenchmarkPlan, runBenchmark } = await import('@dsh-enhanced/assistant-evaluation/benchmark');
82
+ const runner = await this.#runner;
83
+ // Clone definitions and materialize every parameter set before any execution.
84
+ const arms = JSON.parse(JSON.stringify({ baseline, candidate }));
85
+ for (const arm of Object.values(arms))
86
+ for (const entry of p.cases) {
87
+ const definition = instantiate(arm, entry.inputs);
88
+ try {
89
+ validateReplayTrace(definition, p.maxToolCalls, p.maxBytes);
90
+ }
91
+ catch {
92
+ throw new Error('assistant-skills: incomparable tool trace');
93
+ }
94
+ }
95
+ const local = new AbortController(), combined = AbortSignal.any([signal, this.#abort.signal, local.signal]);
96
+ const revalidate = () => { combined.throwIfAborted(); if (Date.now() >= p.expiresAt)
97
+ throw new Error('assistant-skills: comparison expired'); authorize(); };
98
+ const root = join(p.stateRoot, id);
99
+ privateRoot(root);
100
+ const common = { model: acceptanceDigest('no-model-fixed-tool-replay'), prompt: acceptanceDigest('no-prompt'), tools: acceptanceDigest(['read', 'write', 'edit']), policy: acceptanceDigest({ maxBytes: p.maxBytes, maxToolCalls: p.maxToolCalls, offline: true }), runtime: this.#runtime };
101
+ const plan = parseBenchmarkPlan({ schemaVersion: 1, id,
102
+ dataset: { id: p.id, version: String(p.version), digest: acceptanceDigest(p), split: 'development' }, comparison: 'capability',
103
+ cases: p.cases.map(entry => ({ id: entry.id, domain: 'code', inputDigest: acceptanceDigest({ inputs: entry.inputs, files: entry.files, stdin: entry.stdin }), acceptanceDigest: acceptanceDigest({ command: p.command, artifactPath: p.artifactPath, expectedStdout: entry.expectedStdout, expectedExitCode: entry.expectedExitCode }) })),
104
+ variants: ['baseline', 'candidate'].map(role => ({ id: role, role, versions: { ...common, skills: acceptanceDigest(arms[role]) }, features: { memory: false, planning: false, review: false, growth: false } })),
105
+ budget: { durationMs: p.cellDurationMs, toolCalls: p.maxToolCalls, inputTokens: 0, outputTokens: 0, costUsdMicros: 0 }, repeats: p.repeats, seed: 0 });
106
+ const store = new BenchmarkStore(join(root, 'benchmark.sqlite'));
107
+ const cells = [];
108
+ const active = new Set();
109
+ const timer = setInterval(() => { try {
110
+ revalidate();
111
+ }
112
+ catch {
113
+ local.abort();
114
+ } }, 100);
115
+ timer.unref();
116
+ const operation = (async () => {
117
+ try {
118
+ const results = await runBenchmark(store, plan, { execute: request => {
119
+ const execute = (async () => {
120
+ revalidate();
121
+ const entry = p.cases.find(value => value.id === request.cell.caseId);
122
+ const arm = arms[request.variant.id];
123
+ const cellSignal = AbortSignal.any([combined, request.signal]);
124
+ const replay = await replaySkill({ definition: arm, inputs: entry.inputs, files: entry.files, artifactPath: p.artifactPath, stateRoot: root,
125
+ maxToolCalls: p.maxToolCalls, maxBytes: p.maxBytes, signal: cellSignal, authorize: revalidate });
126
+ revalidate();
127
+ const observed = await runner.run(`${id}:${request.cell.id}`, replay.artifact, entry.stdin, cellSignal);
128
+ revalidate();
129
+ const verdict = !observed.quiescent || observed.status === 'unknown' || observed.status === 'cancelled' || observed.status === 'timed-out' ? 'unknown'
130
+ : observed.exitCode !== undefined && observed.exitCode === entry.expectedExitCode && observed.stdout === entry.expectedStdout ? 'achieved' : 'not-achieved';
131
+ const evidence = { id: request.cell.id, artifactDigest: acceptanceDigest(replay.artifact), jobId: observed.jobId, verdict, quiescent: observed.quiescent,
132
+ toolCalls: replay.toolCalls, executedToolCalls: replay.executedToolCalls, omittedObservations: replay.omittedObservations };
133
+ cells.push(evidence);
134
+ return { versions: { ...common, skills: acceptanceDigest(arm) }, inputDigest: request.task.inputDigest, acceptanceDigest: request.task.acceptanceDigest,
135
+ verdict, metrics: { inputTokens: 0, outputTokens: 0, costUsdMicros: 0, toolCalls: replay.toolCalls, rework: 0, interventions: 0, latencyMs: null },
136
+ evidenceDigest: acceptanceDigest({ evidence, steps: replay.steps, observed }), quiescent: observed.quiescent };
137
+ })();
138
+ active.add(execute);
139
+ void execute.finally(() => active.delete(execute)).catch(() => { });
140
+ return execute;
141
+ } }, combined);
142
+ // Benchmark timeout does not establish teardown. Retain ownership until every worker settles.
143
+ local.abort();
144
+ await Promise.allSettled(active);
145
+ const report = benchmarkReport(plan, results);
146
+ const complete = report.complete && results.every(result => result.status === 'completed' && result.verdict !== 'unknown');
147
+ const selected = (kind, role) => results.filter(result => result.cell.variantId === role && p.cases.some(entry => entry.id === result.cell.caseId && entry.kind === kind));
148
+ const rate = (kind, role) => { const values = selected(kind, role); return values.length ? values.filter(value => value.verdict === 'achieved').length / values.length : 0; };
149
+ const evaluationGain = complete ? rate('evaluation', 'candidate') - rate('evaluation', 'baseline') : null;
150
+ return { protocol: 'assistant-skills/comparison/v1', profileId: p.id, profileDigest: acceptanceDigest(p), baselineDigest: acceptanceDigest(baseline), candidateDigest: acceptanceDigest(candidate),
151
+ report, cells, quality: { candidateChecksPassed: complete && results.filter(result => result.cell.variantId === 'candidate').every(result => result.verdict === 'achieved'),
152
+ evaluationGain, evaluationGainObserved: evaluationGain !== null && evaluationGain >= p.minimumEvaluationGain,
153
+ criticalRegressionsPassed: complete && selected('regression', 'candidate').every(result => result.verdict === 'achieved'), heldoutIndependence: 'unproven' },
154
+ promotionAuthorized: false, execution: 'native-file-tools-and-isolated-artifact', modelCalls: 0 };
155
+ }
156
+ finally {
157
+ clearInterval(timer);
158
+ local.abort();
159
+ await Promise.allSettled(active);
160
+ store.close();
161
+ }
162
+ })();
163
+ this.#pending.add(operation);
164
+ try {
165
+ return await operation;
166
+ }
167
+ finally {
168
+ this.#pending.delete(operation);
169
+ }
170
+ }
171
+ async close() { this.#abort.abort(); await Promise.allSettled(this.#pending); await (await this.#runner).close(); }
172
+ }
173
+ //# sourceMappingURL=comparison.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison.js","sourceRoot":"","sources":["../src/comparison.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,163 @@
1
+ import type { GoalScope, VerifiedWorkflowSource } from '@dsh-enhanced/assistant-goals';
2
+ export type { VerifiedWorkflowSource } from '@dsh-enhanced/assistant-goals';
3
+ export type SkillScalar = string | number | boolean;
4
+ export type SkillInputType = 'string' | 'number' | 'boolean';
5
+ export interface SkillBinding {
6
+ name: string;
7
+ stepId: string;
8
+ path: string;
9
+ }
10
+ export interface SkillInput extends SkillBinding {
11
+ type: SkillInputType;
12
+ default: SkillScalar;
13
+ }
14
+ export interface SkillStep {
15
+ id: string;
16
+ toolName: string;
17
+ arguments: unknown;
18
+ dependsOn: readonly string[];
19
+ }
20
+ export interface SkillFileObservations {
21
+ protocol: 'assistant-skills/file-observations/v1';
22
+ beforeSteps: readonly string[];
23
+ }
24
+ export interface SkillRunExpansion {
25
+ protocol: 'assistant-skills/run-expansion/v1';
26
+ callId: string;
27
+ runId: string;
28
+ runDigest: string;
29
+ definitionDigest: string;
30
+ inputsDigest: string;
31
+ steps: readonly {
32
+ id: string;
33
+ toolName: string;
34
+ arguments: unknown;
35
+ }[];
36
+ }
37
+ export interface SkillDefinition {
38
+ protocol: 'assistant-skills/definition/v1';
39
+ name: string;
40
+ description: string;
41
+ source: VerifiedWorkflowSource;
42
+ inputs: readonly SkillInput[];
43
+ steps: readonly SkillStep[];
44
+ fileObservations?: SkillFileObservations;
45
+ runExpansions?: readonly SkillRunExpansion[];
46
+ preconditions: 'current-owner-policy-and-fresh-goal';
47
+ compensation: 'stop-and-report';
48
+ }
49
+ export type FailureCaptureCategory = 'objective-not-achieved' | 'repeated-not-achieved';
50
+ export interface FailureCaptureGoalIdentity {
51
+ id: string;
52
+ definition: {
53
+ version: number;
54
+ digest: string;
55
+ objective: string;
56
+ };
57
+ sessionId: string;
58
+ nativeGoalId: string;
59
+ }
60
+ export interface HostFailureEvidenceObservation {
61
+ goal: FailureCaptureGoalIdentity;
62
+ runId: string;
63
+ execution: {
64
+ status: 'succeeded';
65
+ quiescent: true;
66
+ };
67
+ outcome: 'not-achieved';
68
+ acceptance: {
69
+ contractId: string;
70
+ contractDigest: string;
71
+ receiptDigest: string;
72
+ verifiedAt: number;
73
+ validUntil: number;
74
+ };
75
+ traceDigest: string;
76
+ }
77
+ export interface HostFailureEvidenceSummary {
78
+ protocol: 'assistant-skills/host-failure-evidence/v1';
79
+ scope: GoalScope;
80
+ taskFamily: {
81
+ id: string;
82
+ definitionDigest: string;
83
+ objective: string;
84
+ };
85
+ failureCategory: FailureCaptureCategory;
86
+ triggerCondition: {
87
+ kind: 'not-achieved-count';
88
+ minimumOccurrences: number;
89
+ windowStartedAt: number;
90
+ windowEndedAt: number;
91
+ };
92
+ failures: readonly HostFailureEvidenceObservation[];
93
+ repairGoal: FailureCaptureGoalIdentity;
94
+ attestedAt: number;
95
+ evidence: {
96
+ producer: 'assistant-goals';
97
+ generation: string;
98
+ digest: string;
99
+ };
100
+ }
101
+ export interface FailureCaptureProvenance {
102
+ protocol: 'assistant-skills/failure-capture-provenance/v1';
103
+ trigger: HostFailureEvidenceSummary;
104
+ repair: {
105
+ goal: FailureCaptureGoalIdentity;
106
+ runId: string;
107
+ sourceDigest: string;
108
+ acceptanceDigest: string;
109
+ };
110
+ parent: {
111
+ name: string;
112
+ version: number;
113
+ digest: string;
114
+ };
115
+ candidate: {
116
+ name: string;
117
+ definitionDigest: string;
118
+ };
119
+ /** Diagnostic structural delta only. It is not an admission or authorization decision. */
120
+ permissionDelta: {
121
+ parent: readonly string[];
122
+ candidate: readonly string[];
123
+ added: readonly string[];
124
+ removed: readonly string[];
125
+ expandsAuthority: boolean;
126
+ };
127
+ rollbackTarget: {
128
+ name: string;
129
+ version: number;
130
+ digest: string;
131
+ };
132
+ }
133
+ export interface CreateDefinitionOptions {
134
+ name: string;
135
+ description: string;
136
+ bindings?: readonly SkillBinding[];
137
+ }
138
+ /**
139
+ * Canonical integrity digest for a failure summary. This public SHA-256 does
140
+ * not authenticate its producer; trust exists only while the value is obtained
141
+ * directly from the current AssistantGoalsService capability.
142
+ */
143
+ export declare function failureSummaryEvidenceDigest(value: Omit<HostFailureEvidenceSummary, 'evidence'>, generation: string): string;
144
+ /**
145
+ * Validate the structure and integrity linkage of Host failure evidence. This
146
+ * never establishes provenance: callers must receive the value directly from
147
+ * the current AssistantGoalsService capability, not from model or stored input.
148
+ */
149
+ export declare function validateHostFailureEvidenceSummary(value: unknown): Readonly<HostFailureEvidenceSummary>;
150
+ /** Validate a self-contained candidate provenance envelope before persistence or comparison. */
151
+ export declare function validateFailureCaptureProvenance(value: unknown): Readonly<FailureCaptureProvenance>;
152
+ /** Derive the native reads which establish file-observation policy state for an instantiated definition. */
153
+ export declare function fileObservationSteps(definition: SkillDefinition): readonly {
154
+ id: string;
155
+ beforeStepId: string;
156
+ filePath: string;
157
+ allowAbsent: boolean;
158
+ }[];
159
+ /** Derive a bounded, parameterizable skill only from an independently verified tool trace. */
160
+ export declare function createDefinition(source: VerifiedWorkflowSource, options: CreateDefinitionOptions, allowedTools: readonly string[], expansions?: readonly SkillRunExpansion[]): Readonly<SkillDefinition>;
161
+ /** Materialize saved defaults and only declared scalar inputs into an immutable trace projection. */
162
+ export declare function instantiate(definition: SkillDefinition, values?: Readonly<Record<string, unknown>>): Readonly<SkillDefinition>;
163
+ //# sourceMappingURL=definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../src/definition.ts"],"names":[],"mappings":"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"}