@adhamalkhaja/seyola-runtime 0.11.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +56 -0
- package/README.md +87 -0
- package/dist/adapters/claude-code-local/index.d.ts +60 -0
- package/dist/adapters/claude-code-local/index.d.ts.map +1 -0
- package/dist/adapters/claude-code-local/index.js +270 -0
- package/dist/adapters/claude-code-local/index.js.map +1 -0
- package/dist/bundle/index.d.ts +60 -0
- package/dist/bundle/index.d.ts.map +1 -0
- package/dist/bundle/index.js +989 -0
- package/dist/bundle/index.js.map +1 -0
- package/dist/cli/index.d.ts +12 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +207 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/compile-plan/budgets.d.ts +23 -0
- package/dist/compile-plan/budgets.d.ts.map +1 -0
- package/dist/compile-plan/budgets.js +55 -0
- package/dist/compile-plan/budgets.js.map +1 -0
- package/dist/compile-plan/graph.d.ts +40 -0
- package/dist/compile-plan/graph.d.ts.map +1 -0
- package/dist/compile-plan/graph.js +114 -0
- package/dist/compile-plan/graph.js.map +1 -0
- package/dist/compile-plan/index.d.ts +28 -0
- package/dist/compile-plan/index.d.ts.map +1 -0
- package/dist/compile-plan/index.js +423 -0
- package/dist/compile-plan/index.js.map +1 -0
- package/dist/compile-plan/registries.d.ts +35 -0
- package/dist/compile-plan/registries.d.ts.map +1 -0
- package/dist/compile-plan/registries.js +81 -0
- package/dist/compile-plan/registries.js.map +1 -0
- package/dist/compile-plan/resolver.d.ts +24 -0
- package/dist/compile-plan/resolver.d.ts.map +1 -0
- package/dist/compile-plan/resolver.js +57 -0
- package/dist/compile-plan/resolver.js.map +1 -0
- package/dist/compile-plan/types.d.ts +192 -0
- package/dist/compile-plan/types.d.ts.map +1 -0
- package/dist/compile-plan/types.js +7 -0
- package/dist/compile-plan/types.js.map +1 -0
- package/dist/doctor/index.d.ts +43 -0
- package/dist/doctor/index.d.ts.map +1 -0
- package/dist/doctor/index.js +224 -0
- package/dist/doctor/index.js.map +1 -0
- package/dist/init/index.d.ts +53 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/index.js +414 -0
- package/dist/init/index.js.map +1 -0
- package/dist/lib/ajvSetup.d.ts +30 -0
- package/dist/lib/ajvSetup.d.ts.map +1 -0
- package/dist/lib/ajvSetup.js +44 -0
- package/dist/lib/ajvSetup.js.map +1 -0
- package/dist/lib/loadJson.d.ts +21 -0
- package/dist/lib/loadJson.d.ts.map +1 -0
- package/dist/lib/loadJson.js +43 -0
- package/dist/lib/loadJson.js.map +1 -0
- package/dist/lib/loadYaml.d.ts +18 -0
- package/dist/lib/loadYaml.d.ts.map +1 -0
- package/dist/lib/loadYaml.js +41 -0
- package/dist/lib/loadYaml.js.map +1 -0
- package/dist/lib/paths.d.ts +22 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +61 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/run-plan/index.d.ts +17 -0
- package/dist/run-plan/index.d.ts.map +1 -0
- package/dist/run-plan/index.js +235 -0
- package/dist/run-plan/index.js.map +1 -0
- package/dist/run-plan/types.d.ts +53 -0
- package/dist/run-plan/types.d.ts.map +1 -0
- package/dist/run-plan/types.js +6 -0
- package/dist/run-plan/types.js.map +1 -0
- package/dist/run-step/contextPacket.d.ts +39 -0
- package/dist/run-step/contextPacket.d.ts.map +1 -0
- package/dist/run-step/contextPacket.js +213 -0
- package/dist/run-step/contextPacket.js.map +1 -0
- package/dist/run-step/derivation.d.ts +41 -0
- package/dist/run-step/derivation.d.ts.map +1 -0
- package/dist/run-step/derivation.js +61 -0
- package/dist/run-step/derivation.js.map +1 -0
- package/dist/run-step/effectExecutor.d.ts +42 -0
- package/dist/run-step/effectExecutor.d.ts.map +1 -0
- package/dist/run-step/effectExecutor.js +297 -0
- package/dist/run-step/effectExecutor.js.map +1 -0
- package/dist/run-step/formatExecutor.d.ts +34 -0
- package/dist/run-step/formatExecutor.d.ts.map +1 -0
- package/dist/run-step/formatExecutor.js +329 -0
- package/dist/run-step/formatExecutor.js.map +1 -0
- package/dist/run-step/index.d.ts +23 -0
- package/dist/run-step/index.d.ts.map +1 -0
- package/dist/run-step/index.js +627 -0
- package/dist/run-step/index.js.map +1 -0
- package/dist/run-step/inputResolver.d.ts +48 -0
- package/dist/run-step/inputResolver.d.ts.map +1 -0
- package/dist/run-step/inputResolver.js +268 -0
- package/dist/run-step/inputResolver.js.map +1 -0
- package/dist/run-step/types.d.ts +123 -0
- package/dist/run-step/types.d.ts.map +1 -0
- package/dist/run-step/types.js +6 -0
- package/dist/run-step/types.js.map +1 -0
- package/dist/validate-pack/checks/capabilitiesRegistry.d.ts +3 -0
- package/dist/validate-pack/checks/capabilitiesRegistry.d.ts.map +1 -0
- package/dist/validate-pack/checks/capabilitiesRegistry.js +83 -0
- package/dist/validate-pack/checks/capabilitiesRegistry.js.map +1 -0
- package/dist/validate-pack/checks/contextPolicies.d.ts +3 -0
- package/dist/validate-pack/checks/contextPolicies.d.ts.map +1 -0
- package/dist/validate-pack/checks/contextPolicies.js +40 -0
- package/dist/validate-pack/checks/contextPolicies.js.map +1 -0
- package/dist/validate-pack/checks/mvkExamples.d.ts +10 -0
- package/dist/validate-pack/checks/mvkExamples.d.ts.map +1 -0
- package/dist/validate-pack/checks/mvkExamples.js +77 -0
- package/dist/validate-pack/checks/mvkExamples.js.map +1 -0
- package/dist/validate-pack/checks/requiredFiles.d.ts +3 -0
- package/dist/validate-pack/checks/requiredFiles.d.ts.map +1 -0
- package/dist/validate-pack/checks/requiredFiles.js +35 -0
- package/dist/validate-pack/checks/requiredFiles.js.map +1 -0
- package/dist/validate-pack/checks/resolutionPolicy.d.ts +3 -0
- package/dist/validate-pack/checks/resolutionPolicy.d.ts.map +1 -0
- package/dist/validate-pack/checks/resolutionPolicy.js +88 -0
- package/dist/validate-pack/checks/resolutionPolicy.js.map +1 -0
- package/dist/validate-pack/checks/schemas.d.ts +16 -0
- package/dist/validate-pack/checks/schemas.d.ts.map +1 -0
- package/dist/validate-pack/checks/schemas.js +70 -0
- package/dist/validate-pack/checks/schemas.js.map +1 -0
- package/dist/validate-pack/index.d.ts +25 -0
- package/dist/validate-pack/index.d.ts.map +1 -0
- package/dist/validate-pack/index.js +95 -0
- package/dist/validate-pack/index.js.map +1 -0
- package/dist/validate-pack/reporting.d.ts +6 -0
- package/dist/validate-pack/reporting.d.ts.map +1 -0
- package/dist/validate-pack/reporting.js +40 -0
- package/dist/validate-pack/reporting.js.map +1 -0
- package/dist/validate-pack/types.d.ts +34 -0
- package/dist/validate-pack/types.d.ts.map +1 -0
- package/dist/validate-pack/types.js +8 -0
- package/dist/validate-pack/types.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compiles a ContextPacket for a single WorkPlan step. Reads the SKILL.md
|
|
3
|
+
* body, the references the body explicitly invokes, and walks step.inputs
|
|
4
|
+
* via the generic input resolver to load every input the step declares.
|
|
5
|
+
*
|
|
6
|
+
* Returns the packet plus the prompt that would be sent to the runtime
|
|
7
|
+
* backend.
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
10
|
+
import { dirname, join } from "node:path";
|
|
11
|
+
import { resolvePackPath } from "../lib/paths.js";
|
|
12
|
+
import { loadJson } from "../lib/loadJson.js";
|
|
13
|
+
import { resolveStepInputs } from "./inputResolver.js";
|
|
14
|
+
const DEFAULT_BUDGET = {
|
|
15
|
+
max_total: 60000,
|
|
16
|
+
skill_instructions: 9000,
|
|
17
|
+
retrieved_evidence: 33000,
|
|
18
|
+
working_state: 6000,
|
|
19
|
+
headroom: 12000,
|
|
20
|
+
};
|
|
21
|
+
export function assembleContextPacket(args) {
|
|
22
|
+
const { packPath, selected } = args;
|
|
23
|
+
const skillAbs = resolvePackPath(packPath, selected.skillRef);
|
|
24
|
+
if (!existsSync(skillAbs)) {
|
|
25
|
+
return { ok: false, code: "skill_file_not_found", message: `Skill body not found at ${skillAbs}`, path: skillAbs };
|
|
26
|
+
}
|
|
27
|
+
const skillBody = readFileSync(skillAbs, "utf8");
|
|
28
|
+
// Discover references the skill body explicitly invokes.
|
|
29
|
+
const skillDir = dirname(skillAbs);
|
|
30
|
+
const referencePaths = [];
|
|
31
|
+
const referenceContents = [];
|
|
32
|
+
const referenceMatches = skillBody.matchAll(/`(references\/[^`]+\.md)`/g);
|
|
33
|
+
const seenRefs = new Set();
|
|
34
|
+
for (const match of referenceMatches) {
|
|
35
|
+
const refRel = match[1];
|
|
36
|
+
if (seenRefs.has(refRel))
|
|
37
|
+
continue;
|
|
38
|
+
seenRefs.add(refRel);
|
|
39
|
+
const refAbs = join(skillDir, refRel);
|
|
40
|
+
if (existsSync(refAbs)) {
|
|
41
|
+
referencePaths.push(refAbs);
|
|
42
|
+
referenceContents.push({ name: refRel, content: readFileSync(refAbs, "utf8") });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Load output schema.
|
|
46
|
+
const schemaJson = loadJson(selected.outputSchemaPath);
|
|
47
|
+
if (!schemaJson.ok) {
|
|
48
|
+
return { ok: false, code: "output_schema_load_failed", message: schemaJson.message, path: selected.outputSchemaPath };
|
|
49
|
+
}
|
|
50
|
+
// Walk step.inputs through the generic resolver. Apply --input-transcript
|
|
51
|
+
// override if provided AND the step has an input named `transcript`.
|
|
52
|
+
const stepInputs = selected.step.inputs ?? {};
|
|
53
|
+
const resolvedInputs = resolveStepInputs({
|
|
54
|
+
inputs: stepInputs,
|
|
55
|
+
inputArtifacts: args.inputArtifacts,
|
|
56
|
+
packPath,
|
|
57
|
+
memberRoot: args.memberRoot,
|
|
58
|
+
taskSpecDir: args.taskSpecDir,
|
|
59
|
+
outputDir: args.outputDir,
|
|
60
|
+
configs: args.configs,
|
|
61
|
+
capabilityById: args.capabilityById,
|
|
62
|
+
stepIdToCapabilityId: args.stepIdToCapabilityId,
|
|
63
|
+
});
|
|
64
|
+
// Apply transcript override if provided.
|
|
65
|
+
if (args.inputTranscriptPath) {
|
|
66
|
+
for (const input of resolvedInputs) {
|
|
67
|
+
if (input.paramName === "transcript") {
|
|
68
|
+
const abs = args.inputTranscriptPath;
|
|
69
|
+
if (existsSync(abs)) {
|
|
70
|
+
input.kind = "substrate-path";
|
|
71
|
+
input.resolvedPath = abs;
|
|
72
|
+
input.contentText = readFileSync(abs, "utf8");
|
|
73
|
+
input.error = undefined;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Hard-fail if any required input has an unresolved error.
|
|
79
|
+
// For substrate-path soft-fails (e.g., audience profile not yet built),
|
|
80
|
+
// the skill must degrade gracefully — we surface the error in the packet
|
|
81
|
+
// metadata but do not block dispatch.
|
|
82
|
+
// In dry-run mode, artifact-upstream missing-file errors are demoted to
|
|
83
|
+
// soft errors so the planner can walk the full plan even when downstream
|
|
84
|
+
// artifacts haven't been produced yet.
|
|
85
|
+
const hardErrors = resolvedInputs.filter((i) => {
|
|
86
|
+
if (!i.error)
|
|
87
|
+
return false;
|
|
88
|
+
if (i.kind === "typed-config" || i.kind === "unresolved")
|
|
89
|
+
return true;
|
|
90
|
+
if (i.kind === "artifact-upstream") {
|
|
91
|
+
// In dry-run, tolerate missing predicted upstream artifacts.
|
|
92
|
+
if (args.dryRun && i.error.code === "input_artifact_file_missing")
|
|
93
|
+
return false;
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
return false;
|
|
97
|
+
});
|
|
98
|
+
if (hardErrors.length > 0) {
|
|
99
|
+
const first = hardErrors[0];
|
|
100
|
+
return {
|
|
101
|
+
ok: false,
|
|
102
|
+
code: first.error.code,
|
|
103
|
+
message: first.error.message,
|
|
104
|
+
path: first.resolvedPath,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
// Assemble the prompt.
|
|
108
|
+
const prompt = assemblePrompt({
|
|
109
|
+
selected,
|
|
110
|
+
skillBody,
|
|
111
|
+
references: referenceContents,
|
|
112
|
+
resolvedInputs,
|
|
113
|
+
outputSchema: schemaJson.data,
|
|
114
|
+
});
|
|
115
|
+
// Surface what got loaded into the packet metadata.
|
|
116
|
+
const loaded_configs = resolvedInputs
|
|
117
|
+
.filter((i) => i.kind === "typed-config")
|
|
118
|
+
.map((i) => i.resolvedAddress ?? i.rawValue);
|
|
119
|
+
const loaded_resources = [
|
|
120
|
+
...resolvedInputs
|
|
121
|
+
.filter((i) => i.resolvedPath && (i.kind === "artifact-upstream" || i.kind === "substrate-path" || i.kind === "typed-config"))
|
|
122
|
+
.map((i) => i.resolvedPath),
|
|
123
|
+
...referencePaths,
|
|
124
|
+
];
|
|
125
|
+
const packet = {
|
|
126
|
+
step_id: selected.stepId,
|
|
127
|
+
task_summary: extractTaskSummary(selected.task),
|
|
128
|
+
current_step: {
|
|
129
|
+
kind: "skill",
|
|
130
|
+
skill: selected.skillRef,
|
|
131
|
+
capability: selected.capability,
|
|
132
|
+
},
|
|
133
|
+
loaded_skills: [selected.skillRef],
|
|
134
|
+
loaded_configs,
|
|
135
|
+
loaded_resources,
|
|
136
|
+
excluded: ["other_skill_bodies", "non_referenced_assets", "all_other_capabilities"],
|
|
137
|
+
token_budget: DEFAULT_BUDGET,
|
|
138
|
+
prompt,
|
|
139
|
+
output_schema: schemaJson.data,
|
|
140
|
+
resolved_inputs: resolvedInputs.map((i) => ({
|
|
141
|
+
param: i.paramName,
|
|
142
|
+
kind: i.kind,
|
|
143
|
+
source: i.resolvedPath ?? i.resolvedAddress ?? i.rawValue,
|
|
144
|
+
validated: i.validated,
|
|
145
|
+
error: i.error?.message,
|
|
146
|
+
})),
|
|
147
|
+
};
|
|
148
|
+
return { ok: true, packet, resolved_inputs: resolvedInputs };
|
|
149
|
+
}
|
|
150
|
+
function extractTaskSummary(task) {
|
|
151
|
+
const t = task;
|
|
152
|
+
return t.raw_intent ?? "";
|
|
153
|
+
}
|
|
154
|
+
function assemblePrompt(args) {
|
|
155
|
+
const { selected, skillBody, references, resolvedInputs, outputSchema } = args;
|
|
156
|
+
const lines = [];
|
|
157
|
+
lines.push("=== seyola-runtime: skill execution ===");
|
|
158
|
+
lines.push(`You are executing the Seyola skill at ${selected.skillRef}. ` +
|
|
159
|
+
`Follow the SKILL.md instructions exactly. ` +
|
|
160
|
+
`Output a single JSON object that validates against the output schema. ` +
|
|
161
|
+
`No prose around the JSON. No markdown fences. JSON only.`);
|
|
162
|
+
lines.push("");
|
|
163
|
+
lines.push("=== Step Contract ===");
|
|
164
|
+
lines.push(`step_id: ${selected.stepId}`);
|
|
165
|
+
lines.push(`capability: ${selected.capability}`);
|
|
166
|
+
lines.push(`output_artifact_type: ${selected.outputArtifactType}`);
|
|
167
|
+
lines.push("");
|
|
168
|
+
lines.push("=== Output Schema (JSON Schema draft 2020-12) ===");
|
|
169
|
+
lines.push("```json");
|
|
170
|
+
lines.push(JSON.stringify(outputSchema, null, 2));
|
|
171
|
+
lines.push("```");
|
|
172
|
+
lines.push("");
|
|
173
|
+
lines.push("=== Skill Instructions (SKILL.md) ===");
|
|
174
|
+
lines.push(skillBody);
|
|
175
|
+
lines.push("");
|
|
176
|
+
for (const ref of references) {
|
|
177
|
+
lines.push(`=== Reference: ${ref.name} ===`);
|
|
178
|
+
lines.push(ref.content);
|
|
179
|
+
lines.push("");
|
|
180
|
+
}
|
|
181
|
+
for (const input of resolvedInputs) {
|
|
182
|
+
// Header shape is intentionally simple. The kind + source go to a
|
|
183
|
+
// metadata line so the model sees the labeled content cleanly.
|
|
184
|
+
lines.push(`=== Input: ${input.paramName} ===`);
|
|
185
|
+
const sourceLabel = input.kind === "inline-content"
|
|
186
|
+
? "(supplied inline)"
|
|
187
|
+
: input.kind === "artifact-upstream"
|
|
188
|
+
? `(upstream artifact, kind=${input.kind}${input.expectedArtifactType ? `, type=${input.expectedArtifactType}` : ""})`
|
|
189
|
+
: `(kind=${input.kind}, source=${input.resolvedAddress ?? input.resolvedPath ?? input.rawValue})`;
|
|
190
|
+
lines.push(sourceLabel);
|
|
191
|
+
lines.push("");
|
|
192
|
+
if (input.error && !input.contentText) {
|
|
193
|
+
lines.push(`(Input could not be resolved: ${input.error.message})`);
|
|
194
|
+
}
|
|
195
|
+
else if (input.kind === "artifact-upstream" && input.parsedJson !== undefined) {
|
|
196
|
+
lines.push("```json");
|
|
197
|
+
lines.push(JSON.stringify(input.parsedJson, null, 2));
|
|
198
|
+
lines.push("```");
|
|
199
|
+
}
|
|
200
|
+
else if (input.contentText !== undefined && input.contentText.length > 0) {
|
|
201
|
+
lines.push(input.contentText);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
lines.push(`(${input.rawValue})`);
|
|
205
|
+
}
|
|
206
|
+
lines.push("");
|
|
207
|
+
}
|
|
208
|
+
lines.push("=== Now emit the JSON output ===");
|
|
209
|
+
lines.push("Respond with ONLY a single JSON object matching the output schema above.");
|
|
210
|
+
lines.push("No prose before or after. No markdown wrapping. No code fences. JSON only.");
|
|
211
|
+
return lines.join("\n");
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=contextPacket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextPacket.js","sourceRoot":"","sources":["../../src/run-step/contextPacket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derivation record writer. Per V2.1 §19, every step execution produces a
|
|
3
|
+
* derivation record at .derivations/[hash].json. For the v0.4.x runtime we
|
|
4
|
+
* write under {outputDir}/derivations/ since substrate root layout for
|
|
5
|
+
* derivations is still a Phase 6 concern.
|
|
6
|
+
*/
|
|
7
|
+
import type { SelectedStepContext, StructuredResult, ContextPacketAssembled } from "./types.js";
|
|
8
|
+
export interface DerivationRecord {
|
|
9
|
+
$type: "derivation-record";
|
|
10
|
+
$schema_version: "1.0.0";
|
|
11
|
+
execution_id: string;
|
|
12
|
+
step_id: string;
|
|
13
|
+
capability: string;
|
|
14
|
+
skill_ref: string;
|
|
15
|
+
task_id: string | null;
|
|
16
|
+
plan_id: string | null;
|
|
17
|
+
backend: string;
|
|
18
|
+
context_packet_hash: string;
|
|
19
|
+
prompt_hash: string;
|
|
20
|
+
output_hash: string | null;
|
|
21
|
+
result_status: StructuredResult["status"];
|
|
22
|
+
produced_at: string;
|
|
23
|
+
outputs: StructuredResult["outputs"];
|
|
24
|
+
evaluations: StructuredResult["evaluations"];
|
|
25
|
+
cost: StructuredResult["cost"];
|
|
26
|
+
errors: StructuredResult["errors"];
|
|
27
|
+
}
|
|
28
|
+
export interface WriteDerivationArgs {
|
|
29
|
+
outputDir: string;
|
|
30
|
+
selected: SelectedStepContext;
|
|
31
|
+
packet: ContextPacketAssembled;
|
|
32
|
+
result: StructuredResult;
|
|
33
|
+
backend: string;
|
|
34
|
+
}
|
|
35
|
+
export declare function writeDerivation(args: WriteDerivationArgs): {
|
|
36
|
+
ok: true;
|
|
37
|
+
path: string;
|
|
38
|
+
record: DerivationRecord;
|
|
39
|
+
};
|
|
40
|
+
export declare function ensureDir(path: string): void;
|
|
41
|
+
//# sourceMappingURL=derivation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derivation.d.ts","sourceRoot":"","sources":["../../src/run-step/derivation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEhG,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACrC,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CA8C/G;AAMD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAK5C"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derivation record writer. Per V2.1 §19, every step execution produces a
|
|
3
|
+
* derivation record at .derivations/[hash].json. For the v0.4.x runtime we
|
|
4
|
+
* write under {outputDir}/derivations/ since substrate root layout for
|
|
5
|
+
* derivations is still a Phase 6 concern.
|
|
6
|
+
*/
|
|
7
|
+
import { mkdirSync, writeFileSync, existsSync } from "node:fs";
|
|
8
|
+
import { dirname, join } from "node:path";
|
|
9
|
+
import { createHash } from "node:crypto";
|
|
10
|
+
export function writeDerivation(args) {
|
|
11
|
+
const promptHash = sha256(args.packet.prompt);
|
|
12
|
+
const packetHash = sha256(JSON.stringify({
|
|
13
|
+
step_id: args.packet.step_id,
|
|
14
|
+
loaded_skills: args.packet.loaded_skills,
|
|
15
|
+
loaded_configs: args.packet.loaded_configs,
|
|
16
|
+
loaded_resources: args.packet.loaded_resources,
|
|
17
|
+
}));
|
|
18
|
+
const outputHash = args.result.outputs && args.result.outputs.length > 0
|
|
19
|
+
? sha256(JSON.stringify(args.result.outputs))
|
|
20
|
+
: null;
|
|
21
|
+
const executionId = `exec-${new Date().toISOString().replace(/[:.]/g, "-")}-${promptHash.slice(0, 8)}`;
|
|
22
|
+
const task = args.selected.task;
|
|
23
|
+
const plan = args.selected.plan;
|
|
24
|
+
const record = {
|
|
25
|
+
$type: "derivation-record",
|
|
26
|
+
$schema_version: "1.0.0",
|
|
27
|
+
execution_id: executionId,
|
|
28
|
+
step_id: args.selected.stepId,
|
|
29
|
+
capability: args.selected.capability,
|
|
30
|
+
skill_ref: args.selected.skillRef,
|
|
31
|
+
task_id: task.id ?? null,
|
|
32
|
+
plan_id: plan.id ?? null,
|
|
33
|
+
backend: args.backend,
|
|
34
|
+
context_packet_hash: packetHash,
|
|
35
|
+
prompt_hash: promptHash,
|
|
36
|
+
output_hash: outputHash,
|
|
37
|
+
result_status: args.result.status,
|
|
38
|
+
produced_at: args.result.produced_at,
|
|
39
|
+
outputs: args.result.outputs,
|
|
40
|
+
evaluations: args.result.evaluations,
|
|
41
|
+
cost: args.result.cost,
|
|
42
|
+
errors: args.result.errors,
|
|
43
|
+
};
|
|
44
|
+
const derivationsDir = join(args.outputDir, "derivations");
|
|
45
|
+
if (!existsSync(derivationsDir)) {
|
|
46
|
+
mkdirSync(derivationsDir, { recursive: true });
|
|
47
|
+
}
|
|
48
|
+
const recordPath = join(derivationsDir, `${executionId}.json`);
|
|
49
|
+
writeFileSync(recordPath, JSON.stringify(record, null, 2));
|
|
50
|
+
return { ok: true, path: recordPath, record };
|
|
51
|
+
}
|
|
52
|
+
function sha256(input) {
|
|
53
|
+
return createHash("sha256").update(input).digest("hex");
|
|
54
|
+
}
|
|
55
|
+
export function ensureDir(path) {
|
|
56
|
+
const dir = dirname(path);
|
|
57
|
+
if (!existsSync(dir)) {
|
|
58
|
+
mkdirSync(dir, { recursive: true });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=derivation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derivation.js","sourceRoot":"","sources":["../../src/run-step/derivation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect step executor. v0.8.0 supports a single effect:
|
|
3
|
+
*
|
|
4
|
+
* file.export — copy upstream step outputs into a final export directory.
|
|
5
|
+
*
|
|
6
|
+
* Local-only. Idempotent. Low-risk. No approval gate. The runtime validates
|
|
7
|
+
* the effect against .effects/registry.json + the effect's policy file
|
|
8
|
+
* before executing. Refuses any target outside the configured outputDir.
|
|
9
|
+
*
|
|
10
|
+
* External effects (email.draft, slack.post, vercel.deploy, payment.send)
|
|
11
|
+
* are NOT in scope for v0.8.0. They require approval gating + tool registry
|
|
12
|
+
* plumbing.
|
|
13
|
+
*/
|
|
14
|
+
import type { ResolvedInput } from "./inputResolver.js";
|
|
15
|
+
import type { SelectedStepContext, StructuredResult } from "./types.js";
|
|
16
|
+
export interface EffectExecuteArgs {
|
|
17
|
+
packPath: string;
|
|
18
|
+
selected: SelectedStepContext;
|
|
19
|
+
resolvedInputs: ResolvedInput[];
|
|
20
|
+
outputDir: string;
|
|
21
|
+
upstreamOutputPaths?: string[];
|
|
22
|
+
}
|
|
23
|
+
export interface EffectExecuteResult {
|
|
24
|
+
ok: boolean;
|
|
25
|
+
outputs: Array<{
|
|
26
|
+
format: string;
|
|
27
|
+
path: string;
|
|
28
|
+
ready: boolean;
|
|
29
|
+
}>;
|
|
30
|
+
exportDirectory?: string;
|
|
31
|
+
manifestPath?: string;
|
|
32
|
+
effectRecordPath?: string;
|
|
33
|
+
errors: Array<{
|
|
34
|
+
code: string;
|
|
35
|
+
message: string;
|
|
36
|
+
}>;
|
|
37
|
+
effect_id?: string;
|
|
38
|
+
}
|
|
39
|
+
export declare function executeEffectStep(args: EffectExecuteArgs): Promise<EffectExecuteResult>;
|
|
40
|
+
/** Builds a StructuredResult for an effect step execution. */
|
|
41
|
+
export declare function effectStepResult(selected: SelectedStepContext, exec: EffectExecuteResult, backend: string, durationMs: number): StructuredResult;
|
|
42
|
+
//# sourceMappingURL=effectExecutor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effectExecutor.d.ts","sourceRoot":"","sources":["../../src/run-step/effectExecutor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAwDxE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAsO7F;AAiCD,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,gBAAgB,CA6BlB"}
|