intentdna 1.0.0

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 (184) hide show
  1. package/LICENSE +69 -0
  2. package/README.md +251 -0
  3. package/dist/audit/index.d.ts +109 -0
  4. package/dist/audit/index.d.ts.map +1 -0
  5. package/dist/audit/index.js +144 -0
  6. package/dist/audit/index.js.map +1 -0
  7. package/dist/cli/commands/compile.d.ts +14 -0
  8. package/dist/cli/commands/compile.d.ts.map +1 -0
  9. package/dist/cli/commands/compile.js +89 -0
  10. package/dist/cli/commands/compile.js.map +1 -0
  11. package/dist/cli/commands/epigenetic.d.ts +20 -0
  12. package/dist/cli/commands/epigenetic.d.ts.map +1 -0
  13. package/dist/cli/commands/epigenetic.js +112 -0
  14. package/dist/cli/commands/epigenetic.js.map +1 -0
  15. package/dist/cli/commands/evolve.d.ts +12 -0
  16. package/dist/cli/commands/evolve.d.ts.map +1 -0
  17. package/dist/cli/commands/evolve.js +52 -0
  18. package/dist/cli/commands/evolve.js.map +1 -0
  19. package/dist/cli/commands/guard.d.ts +22 -0
  20. package/dist/cli/commands/guard.d.ts.map +1 -0
  21. package/dist/cli/commands/guard.js +257 -0
  22. package/dist/cli/commands/guard.js.map +1 -0
  23. package/dist/cli/commands/import.d.ts +71 -0
  24. package/dist/cli/commands/import.d.ts.map +1 -0
  25. package/dist/cli/commands/import.js +428 -0
  26. package/dist/cli/commands/import.js.map +1 -0
  27. package/dist/cli/commands/init.d.ts +13 -0
  28. package/dist/cli/commands/init.d.ts.map +1 -0
  29. package/dist/cli/commands/init.js +171 -0
  30. package/dist/cli/commands/init.js.map +1 -0
  31. package/dist/cli/commands/run.d.ts +59 -0
  32. package/dist/cli/commands/run.d.ts.map +1 -0
  33. package/dist/cli/commands/run.js +350 -0
  34. package/dist/cli/commands/run.js.map +1 -0
  35. package/dist/cli/commands/show.d.ts +12 -0
  36. package/dist/cli/commands/show.d.ts.map +1 -0
  37. package/dist/cli/commands/show.js +78 -0
  38. package/dist/cli/commands/show.js.map +1 -0
  39. package/dist/cli/commands/sync.d.ts +31 -0
  40. package/dist/cli/commands/sync.d.ts.map +1 -0
  41. package/dist/cli/commands/sync.js +307 -0
  42. package/dist/cli/commands/sync.js.map +1 -0
  43. package/dist/cli/commands/validate.d.ts +11 -0
  44. package/dist/cli/commands/validate.d.ts.map +1 -0
  45. package/dist/cli/commands/validate.js +30 -0
  46. package/dist/cli/commands/validate.js.map +1 -0
  47. package/dist/cli/commands/verify.d.ts +33 -0
  48. package/dist/cli/commands/verify.d.ts.map +1 -0
  49. package/dist/cli/commands/verify.js +102 -0
  50. package/dist/cli/commands/verify.js.map +1 -0
  51. package/dist/cli/index.d.ts +15 -0
  52. package/dist/cli/index.d.ts.map +1 -0
  53. package/dist/cli/index.js +358 -0
  54. package/dist/cli/index.js.map +1 -0
  55. package/dist/cli/util/format.d.ts +24 -0
  56. package/dist/cli/util/format.d.ts.map +1 -0
  57. package/dist/cli/util/format.js +67 -0
  58. package/dist/cli/util/format.js.map +1 -0
  59. package/dist/cli/util/prompt.d.ts +11 -0
  60. package/dist/cli/util/prompt.d.ts.map +1 -0
  61. package/dist/cli/util/prompt.js +51 -0
  62. package/dist/cli/util/prompt.js.map +1 -0
  63. package/dist/compiler/activate.d.ts +29 -0
  64. package/dist/compiler/activate.d.ts.map +1 -0
  65. package/dist/compiler/activate.js +141 -0
  66. package/dist/compiler/activate.js.map +1 -0
  67. package/dist/compiler/cascade.d.ts +27 -0
  68. package/dist/compiler/cascade.d.ts.map +1 -0
  69. package/dist/compiler/cascade.js +124 -0
  70. package/dist/compiler/cascade.js.map +1 -0
  71. package/dist/compiler/compile.d.ts +17 -0
  72. package/dist/compiler/compile.d.ts.map +1 -0
  73. package/dist/compiler/compile.js +219 -0
  74. package/dist/compiler/compile.js.map +1 -0
  75. package/dist/compiler/index.d.ts +28 -0
  76. package/dist/compiler/index.d.ts.map +1 -0
  77. package/dist/compiler/index.js +51 -0
  78. package/dist/compiler/index.js.map +1 -0
  79. package/dist/compiler/workflow.d.ts +37 -0
  80. package/dist/compiler/workflow.d.ts.map +1 -0
  81. package/dist/compiler/workflow.js +274 -0
  82. package/dist/compiler/workflow.js.map +1 -0
  83. package/dist/evolution/collector.d.ts +52 -0
  84. package/dist/evolution/collector.d.ts.map +1 -0
  85. package/dist/evolution/collector.js +72 -0
  86. package/dist/evolution/collector.js.map +1 -0
  87. package/dist/evolution/fitness.d.ts +33 -0
  88. package/dist/evolution/fitness.d.ts.map +1 -0
  89. package/dist/evolution/fitness.js +96 -0
  90. package/dist/evolution/fitness.js.map +1 -0
  91. package/dist/evolution/index.d.ts +53 -0
  92. package/dist/evolution/index.d.ts.map +1 -0
  93. package/dist/evolution/index.js +69 -0
  94. package/dist/evolution/index.js.map +1 -0
  95. package/dist/evolution/marker-gen.d.ts +31 -0
  96. package/dist/evolution/marker-gen.d.ts.map +1 -0
  97. package/dist/evolution/marker-gen.js +141 -0
  98. package/dist/evolution/marker-gen.js.map +1 -0
  99. package/dist/evolution/store.d.ts +24 -0
  100. package/dist/evolution/store.d.ts.map +1 -0
  101. package/dist/evolution/store.js +78 -0
  102. package/dist/evolution/store.js.map +1 -0
  103. package/dist/evolution/types.d.ts +73 -0
  104. package/dist/evolution/types.d.ts.map +1 -0
  105. package/dist/evolution/types.js +14 -0
  106. package/dist/evolution/types.js.map +1 -0
  107. package/dist/index.d.ts +4 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +4 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/log/logger.d.ts +15 -0
  112. package/dist/log/logger.d.ts.map +1 -0
  113. package/dist/log/logger.js +36 -0
  114. package/dist/log/logger.js.map +1 -0
  115. package/dist/runtime/agent-md.d.ts +56 -0
  116. package/dist/runtime/agent-md.d.ts.map +1 -0
  117. package/dist/runtime/agent-md.js +257 -0
  118. package/dist/runtime/agent-md.js.map +1 -0
  119. package/dist/runtime/claude-sdk.d.ts +51 -0
  120. package/dist/runtime/claude-sdk.d.ts.map +1 -0
  121. package/dist/runtime/claude-sdk.js +78 -0
  122. package/dist/runtime/claude-sdk.js.map +1 -0
  123. package/dist/runtime/hooks.d.ts +67 -0
  124. package/dist/runtime/hooks.d.ts.map +1 -0
  125. package/dist/runtime/hooks.js +645 -0
  126. package/dist/runtime/hooks.js.map +1 -0
  127. package/dist/runtime/index.d.ts +9 -0
  128. package/dist/runtime/index.d.ts.map +1 -0
  129. package/dist/runtime/index.js +5 -0
  130. package/dist/runtime/index.js.map +1 -0
  131. package/dist/runtime/markdown.d.ts +36 -0
  132. package/dist/runtime/markdown.d.ts.map +1 -0
  133. package/dist/runtime/markdown.js +214 -0
  134. package/dist/runtime/markdown.js.map +1 -0
  135. package/dist/runtime/settings-adapter.d.ts +33 -0
  136. package/dist/runtime/settings-adapter.d.ts.map +1 -0
  137. package/dist/runtime/settings-adapter.js +78 -0
  138. package/dist/runtime/settings-adapter.js.map +1 -0
  139. package/dist/runtime/skill-adapter.d.ts +22 -0
  140. package/dist/runtime/skill-adapter.d.ts.map +1 -0
  141. package/dist/runtime/skill-adapter.js +170 -0
  142. package/dist/runtime/skill-adapter.js.map +1 -0
  143. package/dist/runtime/workflow-runner.d.ts +53 -0
  144. package/dist/runtime/workflow-runner.d.ts.map +1 -0
  145. package/dist/runtime/workflow-runner.js +420 -0
  146. package/dist/runtime/workflow-runner.js.map +1 -0
  147. package/dist/schema/index.d.ts +2 -0
  148. package/dist/schema/index.d.ts.map +1 -0
  149. package/dist/schema/index.js +2 -0
  150. package/dist/schema/index.js.map +1 -0
  151. package/dist/schema/types.d.ts +275 -0
  152. package/dist/schema/types.d.ts.map +1 -0
  153. package/dist/schema/types.js +11 -0
  154. package/dist/schema/types.js.map +1 -0
  155. package/dist/schema/validate.d.ts +20 -0
  156. package/dist/schema/validate.d.ts.map +1 -0
  157. package/dist/schema/validate.js +379 -0
  158. package/dist/schema/validate.js.map +1 -0
  159. package/dist/schema/yaml-parser.d.ts +12 -0
  160. package/dist/schema/yaml-parser.d.ts.map +1 -0
  161. package/dist/schema/yaml-parser.js +298 -0
  162. package/dist/schema/yaml-parser.js.map +1 -0
  163. package/dist/species/default.dna.json +62 -0
  164. package/dist/templates/api-backend.dna.yaml +77 -0
  165. package/dist/templates/brainstorming-first.dna.yaml +71 -0
  166. package/dist/templates/branch-finishing.dna.yaml +54 -0
  167. package/dist/templates/code-review-pipeline.dna.yaml +91 -0
  168. package/dist/templates/devops-cicd.dna.yaml +67 -0
  169. package/dist/templates/documentation-writer.dna.yaml +71 -0
  170. package/dist/templates/enterprise-baseline.dna.yaml +66 -0
  171. package/dist/templates/frontend-quality.dna.yaml +88 -0
  172. package/dist/templates/full-pipeline.dna.yaml +129 -0
  173. package/dist/templates/mobile-dev.dna.yaml +68 -0
  174. package/dist/templates/monorepo-governance.dna.yaml +60 -0
  175. package/dist/templates/multi-perspective-review.dna.yaml +109 -0
  176. package/dist/templates/pr-submitter.dna.yaml +55 -0
  177. package/dist/templates/safe-refactoring.dna.yaml +65 -0
  178. package/dist/templates/secure-dev.dna.yaml +90 -0
  179. package/dist/templates/subagent-parallel.dna.yaml +98 -0
  180. package/dist/templates/systematic-debugging.dna.yaml +55 -0
  181. package/dist/templates/tdd-strict.dna.yaml +69 -0
  182. package/dist/templates/verification-loop.dna.yaml +53 -0
  183. package/dist/templates/yolo-with-guardrails.dna.yaml +56 -0
  184. package/package.json +43 -0
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Intent DNA -- Workflow Compiler
3
+ *
4
+ * Compiles a WorkflowDef into an executable WorkflowPlan.
5
+ * Performs topological sort, parallel group detection, transition compilation,
6
+ * retry config resolution, cycle detection, and optional Mermaid diagram generation.
7
+ */
8
+ import type { WorkflowDef, WorkflowPlan } from "../schema/types.js";
9
+ export interface CompileWorkflowOptions {
10
+ /** Generate Mermaid diagram (default: false) */
11
+ mermaid?: boolean;
12
+ }
13
+ export interface CompileWorkflowError {
14
+ path: string;
15
+ message: string;
16
+ }
17
+ export interface CompileWorkflowResult {
18
+ ok: boolean;
19
+ plan?: WorkflowPlan;
20
+ errors: CompileWorkflowError[];
21
+ }
22
+ /**
23
+ * Compile a WorkflowDef into an executable WorkflowPlan.
24
+ *
25
+ * Performs:
26
+ * - Topological sort of steps based on depends_on
27
+ * - Parallel group detection
28
+ * - Dependency graph construction
29
+ * - Transition compilation
30
+ * - Retry config resolution
31
+ * - Cycle detection
32
+ * - Optional Mermaid diagram generation
33
+ *
34
+ * Returns a result object with either a plan or errors.
35
+ */
36
+ export declare function compileWorkflow(workflow: WorkflowDef, options?: CompileWorkflowOptions): CompileWorkflowResult;
37
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/compiler/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,WAAW,EAEX,YAAY,EAMb,MAAM,oBAAoB,CAAC;AAI5B,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC;AA0PD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,qBAAqB,CA0DvB"}
@@ -0,0 +1,274 @@
1
+ /**
2
+ * Intent DNA -- Workflow Compiler
3
+ *
4
+ * Compiles a WorkflowDef into an executable WorkflowPlan.
5
+ * Performs topological sort, parallel group detection, transition compilation,
6
+ * retry config resolution, cycle detection, and optional Mermaid diagram generation.
7
+ */
8
+ // ── Internal helpers ─────────────────────────────────────────
9
+ /**
10
+ * If no step in the workflow has depends_on, inject implicit sequential
11
+ * dependencies based on array order (step[i] depends_on step[i-1]).
12
+ * Returns a new array of steps with injected deps (never mutates input).
13
+ */
14
+ function inferImplicitDeps(steps) {
15
+ const anyExplicit = steps.some((s) => s.depends_on !== undefined && s.depends_on.length > 0);
16
+ if (anyExplicit) {
17
+ return steps;
18
+ }
19
+ return steps.map((s, i) => {
20
+ if (i === 0)
21
+ return s;
22
+ return { ...s, depends_on: [steps[i - 1].id] };
23
+ });
24
+ }
25
+ /**
26
+ * Build forward + reverse adjacency lists from step dependencies.
27
+ */
28
+ function buildDependencyGraph(steps) {
29
+ const dependencies = {};
30
+ const dependents = {};
31
+ for (const step of steps) {
32
+ dependencies[step.id] = step.depends_on ? [...step.depends_on] : [];
33
+ if (!dependents[step.id]) {
34
+ dependents[step.id] = [];
35
+ }
36
+ }
37
+ // Build reverse map
38
+ for (const step of steps) {
39
+ if (step.depends_on) {
40
+ for (const dep of step.depends_on) {
41
+ if (!dependents[dep]) {
42
+ dependents[dep] = [];
43
+ }
44
+ dependents[dep].push(step.id);
45
+ }
46
+ }
47
+ }
48
+ return { dependencies, dependents };
49
+ }
50
+ /**
51
+ * Kahn's algorithm for topological sort with parallel group detection.
52
+ *
53
+ * Returns sorted steps and parallel groups, or null if a cycle is detected.
54
+ * When a cycle is detected, returns the ids of steps involved in the cycle.
55
+ */
56
+ function topologicalSort(steps, graph) {
57
+ const stepMap = new Map();
58
+ for (const s of steps) {
59
+ stepMap.set(s.id, s);
60
+ }
61
+ // Compute in-degrees
62
+ const inDegree = new Map();
63
+ for (const s of steps) {
64
+ inDegree.set(s.id, (graph.dependencies[s.id] ?? []).length);
65
+ }
66
+ // Seed queue with in-degree 0
67
+ let queue = [];
68
+ for (const s of steps) {
69
+ if (inDegree.get(s.id) === 0) {
70
+ queue.push(s.id);
71
+ }
72
+ }
73
+ const sorted = [];
74
+ const groups = [];
75
+ let groupIndex = 0;
76
+ while (queue.length > 0) {
77
+ // All items in current queue form one parallel group
78
+ groups.push({
79
+ group_index: groupIndex,
80
+ step_ids: [...queue],
81
+ });
82
+ groupIndex++;
83
+ const nextQueue = [];
84
+ for (const id of queue) {
85
+ sorted.push(stepMap.get(id));
86
+ for (const dependent of graph.dependents[id] ?? []) {
87
+ const newDeg = (inDegree.get(dependent) ?? 1) - 1;
88
+ inDegree.set(dependent, newDeg);
89
+ if (newDeg === 0) {
90
+ nextQueue.push(dependent);
91
+ }
92
+ }
93
+ }
94
+ queue = nextQueue;
95
+ }
96
+ if (sorted.length < steps.length) {
97
+ // Cycle detected -- find which step ids are in the cycle
98
+ const sortedSet = new Set(sorted.map((s) => s.id));
99
+ const cycleIds = steps.filter((s) => !sortedSet.has(s.id)).map((s) => s.id);
100
+ return { sorted: [], groups: [], cycleIds };
101
+ }
102
+ return { sorted, groups, cycleIds: null };
103
+ }
104
+ /**
105
+ * Compile transition rules: generate default sequential transitions
106
+ * and preserve explicit transitions.
107
+ */
108
+ function compileTransitions(workflow, groups) {
109
+ const defaults = [];
110
+ // Generate default transitions between adjacent groups
111
+ for (let i = 0; i < groups.length - 1; i++) {
112
+ const fromGroup = groups[i];
113
+ const toGroup = groups[i + 1];
114
+ for (const fromId of fromGroup.step_ids) {
115
+ for (const toId of toGroup.step_ids) {
116
+ defaults.push({ from: fromId, to: toId, condition: "always" });
117
+ }
118
+ }
119
+ }
120
+ // Preserve explicit transitions
121
+ const explicit = (workflow.transitions ?? []).map((t) => ({
122
+ from: t.from,
123
+ to: t.to,
124
+ condition: t.condition,
125
+ }));
126
+ return { defaults, explicit };
127
+ }
128
+ /**
129
+ * Merge retry_policy and max_rounds into a unified WorkflowRetryConfig.
130
+ */
131
+ function resolveRetryConfig(workflow) {
132
+ const { retry_policy, max_rounds } = workflow;
133
+ if (retry_policy) {
134
+ return {
135
+ max_retries: retry_policy.max_retries,
136
+ retry_from: retry_policy.retry_from ?? null,
137
+ backoff: retry_policy.backoff ?? "none",
138
+ };
139
+ }
140
+ if (max_rounds !== undefined && max_rounds > 1) {
141
+ return {
142
+ max_retries: max_rounds - 1,
143
+ retry_from: null,
144
+ backoff: "none",
145
+ };
146
+ }
147
+ return {
148
+ max_retries: 0,
149
+ retry_from: null,
150
+ backoff: "none",
151
+ };
152
+ }
153
+ /**
154
+ * Normalize run_if: undefined and "always" become null; everything else preserved.
155
+ */
156
+ function resolveRunIf(runIf) {
157
+ if (runIf === undefined || runIf === "always") {
158
+ return null;
159
+ }
160
+ return runIf;
161
+ }
162
+ /**
163
+ * Map WorkflowStepDef to compiled WorkflowStep.
164
+ */
165
+ function toWorkflowStep(def) {
166
+ return {
167
+ id: def.id,
168
+ role: def.role,
169
+ description: def.description ?? def.id,
170
+ optional: def.optional ?? false,
171
+ run_if: resolveRunIf(def.run_if),
172
+ depends_on: def.depends_on ? [...def.depends_on] : [],
173
+ prompt: def.prompt ?? null,
174
+ completion: def.completion && def.completion.length > 0 ? [...def.completion] : null,
175
+ };
176
+ }
177
+ /**
178
+ * Generate a Mermaid flowchart diagram from a WorkflowPlan.
179
+ */
180
+ function generateMermaid(plan) {
181
+ const lines = ["graph TD"];
182
+ // Generate node definitions
183
+ for (const step of plan.steps) {
184
+ let label = `${step.id} (${step.role})`;
185
+ if (step.run_if) {
186
+ label += `\\nrun_if: ${step.run_if}`;
187
+ }
188
+ // Escape double quotes in label
189
+ const safeLabel = label.replace(/"/g, "&quot;");
190
+ lines.push(` ${step.id}["${safeLabel}"]`);
191
+ }
192
+ lines.push("");
193
+ // Generate dependency edges
194
+ const depEdgeSet = new Set();
195
+ for (const step of plan.steps) {
196
+ for (const dep of step.depends_on) {
197
+ const key = `${dep} --> ${step.id}`;
198
+ if (!depEdgeSet.has(key)) {
199
+ depEdgeSet.add(key);
200
+ lines.push(` ${key}`);
201
+ }
202
+ }
203
+ }
204
+ // Generate explicit transition edges (with labels)
205
+ for (const t of plan.transitions) {
206
+ const edge = ` ${t.from} -->|${t.condition}| ${t.to}`;
207
+ lines.push(edge);
208
+ }
209
+ return lines.join("\n");
210
+ }
211
+ // ── Public API ───────────────────────────────────────────────
212
+ /**
213
+ * Compile a WorkflowDef into an executable WorkflowPlan.
214
+ *
215
+ * Performs:
216
+ * - Topological sort of steps based on depends_on
217
+ * - Parallel group detection
218
+ * - Dependency graph construction
219
+ * - Transition compilation
220
+ * - Retry config resolution
221
+ * - Cycle detection
222
+ * - Optional Mermaid diagram generation
223
+ *
224
+ * Returns a result object with either a plan or errors.
225
+ */
226
+ export function compileWorkflow(workflow, options) {
227
+ const errors = [];
228
+ // 1. Validate steps exist
229
+ if (!workflow.steps || workflow.steps.length === 0) {
230
+ errors.push({
231
+ path: "workflow.steps",
232
+ message: "Workflow must have at least one step",
233
+ });
234
+ return { ok: false, errors };
235
+ }
236
+ // 2. Infer implicit deps if no step has depends_on
237
+ const resolvedSteps = inferImplicitDeps(workflow.steps);
238
+ // 3. Build dependency graph
239
+ const graph = buildDependencyGraph(resolvedSteps);
240
+ // 4. Topological sort + cycle detection
241
+ const { sorted, groups, cycleIds } = topologicalSort(resolvedSteps, graph);
242
+ if (cycleIds) {
243
+ errors.push({
244
+ path: "workflow.steps",
245
+ message: `Cycle detected involving steps: ${cycleIds.join(", ")}`,
246
+ });
247
+ return { ok: false, errors };
248
+ }
249
+ // 5. Compile transitions
250
+ const { defaults, explicit } = compileTransitions(workflow, groups);
251
+ // 6. Resolve retry config
252
+ const retry = resolveRetryConfig(workflow);
253
+ // 7. Build WorkflowStep[] from sorted steps
254
+ const compiledSteps = sorted.map(toWorkflowStep);
255
+ // 8. Construct the plan
256
+ const plan = {
257
+ name: workflow.name,
258
+ description: workflow.description ?? "",
259
+ steps: compiledSteps,
260
+ parallel_groups: groups,
261
+ dependency_graph: graph,
262
+ transitions: explicit,
263
+ default_transitions: defaults,
264
+ retry,
265
+ compiled_at: new Date().toISOString(),
266
+ source_workflow: workflow.name,
267
+ };
268
+ // 9. Optional Mermaid diagram
269
+ if (options?.mermaid) {
270
+ plan.mermaid = generateMermaid(plan);
271
+ }
272
+ return { ok: true, plan, errors: [] };
273
+ }
274
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/compiler/workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Intent DNA — Outcome Collector
3
+ *
4
+ * Records execution outcomes from agent actions.
5
+ * Each outcome captures what happened, which constraints were active,
6
+ * and per-constraint feedback.
7
+ */
8
+ import type { ExecutionOutcome, ConstraintFeedback, OutcomeMetrics } from "./types.js";
9
+ import type { EvolutionStore } from "./store.js";
10
+ export interface RecordOutcomeInput {
11
+ dna_id: string;
12
+ context?: string;
13
+ action: string;
14
+ active_genes: string[];
15
+ constraints_applied: string[];
16
+ success: boolean;
17
+ constraint_feedback: ConstraintFeedback[];
18
+ metrics?: OutcomeMetrics;
19
+ }
20
+ /**
21
+ * Outcome Collector: records agent execution results for later marker generation.
22
+ */
23
+ export declare class OutcomeCollector {
24
+ private store;
25
+ constructor(store: EvolutionStore);
26
+ /**
27
+ * Record a new execution outcome.
28
+ * Returns the generated outcome ID.
29
+ */
30
+ record(input: RecordOutcomeInput): Promise<string>;
31
+ /**
32
+ * Get all outcomes for a DNA, optionally filtered by context.
33
+ */
34
+ getOutcomes(dnaId: string, context?: string): Promise<ExecutionOutcome[]>;
35
+ /**
36
+ * Get summary statistics for a DNA's outcomes.
37
+ */
38
+ getSummary(dnaId: string): Promise<OutcomeSummary>;
39
+ }
40
+ export interface OutcomeSummary {
41
+ total_outcomes: number;
42
+ success_count: number;
43
+ failure_count: number;
44
+ gene_feedback: Record<string, {
45
+ helped: number;
46
+ hindered: number;
47
+ neutral: number;
48
+ }>;
49
+ oldest: string | null;
50
+ newest: string | null;
51
+ }
52
+ //# sourceMappingURL=collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/evolution/collector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,cAAc;IAEzC;;;OAGG;IACG,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBxD;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQ/E;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAuBzD;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Intent DNA — Outcome Collector
3
+ *
4
+ * Records execution outcomes from agent actions.
5
+ * Each outcome captures what happened, which constraints were active,
6
+ * and per-constraint feedback.
7
+ */
8
+ import { randomBytes } from "node:crypto";
9
+ /**
10
+ * Outcome Collector: records agent execution results for later marker generation.
11
+ */
12
+ export class OutcomeCollector {
13
+ store;
14
+ constructor(store) {
15
+ this.store = store;
16
+ }
17
+ /**
18
+ * Record a new execution outcome.
19
+ * Returns the generated outcome ID.
20
+ */
21
+ async record(input) {
22
+ const id = `outcome_${Date.now()}_${randomBytes(4).toString("hex")}`;
23
+ const outcome = {
24
+ id,
25
+ timestamp: new Date().toISOString(),
26
+ dna_id: input.dna_id,
27
+ context: input.context,
28
+ action: input.action,
29
+ active_genes: input.active_genes,
30
+ constraints_applied: input.constraints_applied,
31
+ success: input.success,
32
+ constraint_feedback: input.constraint_feedback,
33
+ metrics: input.metrics,
34
+ };
35
+ await this.store.saveOutcome(outcome);
36
+ return id;
37
+ }
38
+ /**
39
+ * Get all outcomes for a DNA, optionally filtered by context.
40
+ */
41
+ async getOutcomes(dnaId, context) {
42
+ const outcomes = await this.store.listOutcomes(dnaId);
43
+ if (context) {
44
+ return outcomes.filter(o => o.context === context);
45
+ }
46
+ return outcomes;
47
+ }
48
+ /**
49
+ * Get summary statistics for a DNA's outcomes.
50
+ */
51
+ async getSummary(dnaId) {
52
+ const outcomes = await this.store.listOutcomes(dnaId);
53
+ const geneStats = {};
54
+ for (const outcome of outcomes) {
55
+ for (const fb of outcome.constraint_feedback) {
56
+ if (!geneStats[fb.gene]) {
57
+ geneStats[fb.gene] = { helped: 0, hindered: 0, neutral: 0 };
58
+ }
59
+ geneStats[fb.gene][fb.effect]++;
60
+ }
61
+ }
62
+ return {
63
+ total_outcomes: outcomes.length,
64
+ success_count: outcomes.filter(o => o.success).length,
65
+ failure_count: outcomes.filter(o => !o.success).length,
66
+ gene_feedback: geneStats,
67
+ oldest: outcomes.length > 0 ? outcomes[outcomes.length - 1].timestamp : null,
68
+ newest: outcomes.length > 0 ? outcomes[0].timestamp : null,
69
+ };
70
+ }
71
+ }
72
+ //# sourceMappingURL=collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/evolution/collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Intent DNA — Fitness Calculator
3
+ *
4
+ * Adapted from Mycelium's fitness formula for epigenetic markers.
5
+ * Determines how strongly a marker should influence gene expression
6
+ * based on outcome history.
7
+ *
8
+ * Score = success_impact * 0.4 + consistency * 0.3 + recency * 0.3
9
+ */
10
+ import type { ExecutionOutcome } from "./types.js";
11
+ import type { EpigeneticMarker } from "../schema/types.js";
12
+ /**
13
+ * Compute fitness score for a gene based on recent outcomes.
14
+ * Returns 0-1 normalized score.
15
+ *
16
+ * Components:
17
+ * success_impact (0.4) — how often outcomes were successful when gene was active
18
+ * consistency (0.3) — how consistent the feedback was (helped vs hindered)
19
+ * recency (0.3) — how recent the outcomes are
20
+ */
21
+ export declare function computeGeneFitness(geneName: string, outcomes: ExecutionOutcome[]): number;
22
+ /**
23
+ * Determine the recommended modulation direction for a gene.
24
+ * Returns amplify factor > 1 if gene consistently helps,
25
+ * suppress factor < 1 if gene consistently hinders.
26
+ */
27
+ export declare function computeModulationFactor(geneName: string, outcomes: ExecutionOutcome[]): number;
28
+ /**
29
+ * Compute the effective strength of a marker considering decay over time.
30
+ * Returns 0-1 where 0 means fully decayed.
31
+ */
32
+ export declare function computeMarkerStrength(marker: EpigeneticMarker): number;
33
+ //# sourceMappingURL=fitness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fitness.d.ts","sourceRoot":"","sources":["../../src/evolution/fitness.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,MAAM,CAiCR;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,MAAM,CA8BR;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAQtE"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Intent DNA — Fitness Calculator
3
+ *
4
+ * Adapted from Mycelium's fitness formula for epigenetic markers.
5
+ * Determines how strongly a marker should influence gene expression
6
+ * based on outcome history.
7
+ *
8
+ * Score = success_impact * 0.4 + consistency * 0.3 + recency * 0.3
9
+ */
10
+ /**
11
+ * Compute fitness score for a gene based on recent outcomes.
12
+ * Returns 0-1 normalized score.
13
+ *
14
+ * Components:
15
+ * success_impact (0.4) — how often outcomes were successful when gene was active
16
+ * consistency (0.3) — how consistent the feedback was (helped vs hindered)
17
+ * recency (0.3) — how recent the outcomes are
18
+ */
19
+ export function computeGeneFitness(geneName, outcomes) {
20
+ // Filter outcomes where this gene was active
21
+ const relevant = outcomes.filter(o => o.active_genes.includes(geneName));
22
+ if (relevant.length === 0)
23
+ return 0;
24
+ // Success impact: ratio of successful outcomes
25
+ const successCount = relevant.filter(o => o.success).length;
26
+ const successImpact = successCount / relevant.length;
27
+ // Consistency: how consistently the gene helped
28
+ let helpedCount = 0;
29
+ let hinderedCount = 0;
30
+ for (const outcome of relevant) {
31
+ for (const fb of outcome.constraint_feedback) {
32
+ if (fb.gene === geneName) {
33
+ if (fb.effect === "helped")
34
+ helpedCount++;
35
+ if (fb.effect === "hindered")
36
+ hinderedCount++;
37
+ }
38
+ }
39
+ }
40
+ const totalFeedback = helpedCount + hinderedCount;
41
+ const consistency = totalFeedback > 0
42
+ ? Math.abs(helpedCount - hinderedCount) / totalFeedback
43
+ : 0.5; // neutral if no feedback
44
+ // Recency: decay over 30 days from most recent outcome
45
+ const now = Date.now();
46
+ const mostRecent = relevant.reduce((latest, o) => Math.max(latest, new Date(o.timestamp).getTime()), 0);
47
+ const daysSince = (now - mostRecent) / (1000 * 60 * 60 * 24);
48
+ const recency = Math.max(0, 1 - daysSince / 30);
49
+ return successImpact * 0.4 + consistency * 0.3 + recency * 0.3;
50
+ }
51
+ /**
52
+ * Determine the recommended modulation direction for a gene.
53
+ * Returns amplify factor > 1 if gene consistently helps,
54
+ * suppress factor < 1 if gene consistently hinders.
55
+ */
56
+ export function computeModulationFactor(geneName, outcomes) {
57
+ const relevant = outcomes.filter(o => o.active_genes.includes(geneName));
58
+ if (relevant.length === 0)
59
+ return 1.0;
60
+ let helpScore = 0;
61
+ let hinderScore = 0;
62
+ for (const outcome of relevant) {
63
+ for (const fb of outcome.constraint_feedback) {
64
+ if (fb.gene !== geneName)
65
+ continue;
66
+ // Weight by outcome success/failure
67
+ const weight = outcome.success ? 1.0 : 0.7;
68
+ if (fb.effect === "helped") {
69
+ helpScore += weight;
70
+ }
71
+ else if (fb.effect === "hindered") {
72
+ hinderScore += weight;
73
+ }
74
+ }
75
+ }
76
+ const total = helpScore + hinderScore;
77
+ if (total === 0)
78
+ return 1.0;
79
+ // Net direction: positive = amplify, negative = suppress
80
+ const netRatio = (helpScore - hinderScore) / total;
81
+ // Map to factor: -1 → 0.5 (suppress), 0 → 1.0 (neutral), +1 → 1.5 (amplify)
82
+ return 1.0 + netRatio * 0.5;
83
+ }
84
+ /**
85
+ * Compute the effective strength of a marker considering decay over time.
86
+ * Returns 0-1 where 0 means fully decayed.
87
+ */
88
+ export function computeMarkerStrength(marker) {
89
+ const now = Date.now();
90
+ const markerAge = marker.timestamp
91
+ ? (now - new Date(marker.timestamp).getTime()) / (1000 * 60 * 60 * 24)
92
+ : 0;
93
+ // Decay per 30-day period
94
+ return Math.pow(marker.decay, markerAge / 30);
95
+ }
96
+ //# sourceMappingURL=fitness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fitness.js","sourceRoot":"","sources":["../../src/evolution/fitness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Intent DNA — Evolution Engine
3
+ *
4
+ * Orchestrates the epigenetic learning loop:
5
+ * 1. Record outcome (via collector)
6
+ * 2. Generate/update markers (via marker-gen)
7
+ * 3. Store markers (via store)
8
+ * 4. Compilation pipeline reads markers on next run
9
+ */
10
+ import type { EpigeneticMarker } from "../schema/types.js";
11
+ import type { EvolutionConfig } from "./types.js";
12
+ import { EvolutionStore } from "./store.js";
13
+ import { OutcomeCollector, type RecordOutcomeInput, type OutcomeSummary } from "./collector.js";
14
+ import { type MarkerChange } from "./marker-gen.js";
15
+ export { EvolutionStore } from "./store.js";
16
+ export { OutcomeCollector } from "./collector.js";
17
+ export { generateMarkers, describeMarkerChanges } from "./marker-gen.js";
18
+ export { computeGeneFitness, computeModulationFactor, computeMarkerStrength } from "./fitness.js";
19
+ export type { ExecutionOutcome, ConstraintFeedback, OutcomeMetrics, EvolutionConfig, MarkerFitness } from "./types.js";
20
+ export type { RecordOutcomeInput, OutcomeSummary } from "./collector.js";
21
+ export type { MarkerChange } from "./marker-gen.js";
22
+ /**
23
+ * The Evolution Engine: ties together collection, marker generation, and storage.
24
+ */
25
+ export declare class EvolutionEngine {
26
+ readonly store: EvolutionStore;
27
+ readonly collector: OutcomeCollector;
28
+ private config;
29
+ constructor(config?: Partial<EvolutionConfig>);
30
+ /**
31
+ * Record an execution outcome.
32
+ */
33
+ recordOutcome(input: RecordOutcomeInput): Promise<string>;
34
+ /**
35
+ * Evolve: generate/update epigenetic markers based on accumulated outcomes.
36
+ * Returns the new marker set.
37
+ */
38
+ evolve(dnaId: string): Promise<EpigeneticMarker[]>;
39
+ /**
40
+ * Preview what markers would be generated without persisting.
41
+ */
42
+ preview(dnaId: string): Promise<MarkerChange[]>;
43
+ /**
44
+ * Load stored markers for use in compilation.
45
+ * This is the integration point with the compiler pipeline.
46
+ */
47
+ loadMarkers(dnaId: string): Promise<EpigeneticMarker[]>;
48
+ /**
49
+ * Get outcome summary for a DNA.
50
+ */
51
+ summary(dnaId: string): Promise<OutcomeSummary>;
52
+ }
53
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/evolution/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAoB,eAAe,EAAsC,MAAM,YAAY,CAAC;AAExG,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAA0C,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE5F,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAClG,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACvH,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;GAEG;AACH,qBAAa,eAAe;IAC1B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAM7C;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/D;;;OAGG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQxD;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAMrD;;;OAGG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAI7D;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAGtD"}