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,141 @@
1
+ /**
2
+ * Intent DNA — Context Activator
3
+ *
4
+ * Given a cascaded DNA and an active context name, applies Regulatory Regions:
5
+ * - amplify/suppress gene codons by factor
6
+ * - activate/deactivate genes
7
+ * - apply threshold overrides
8
+ * - apply epigenetic markers with decay
9
+ */
10
+ /**
11
+ * Apply a modifier to a gene's expression level.
12
+ */
13
+ function applyModifier(level, mod) {
14
+ switch (mod.action) {
15
+ case "amplify":
16
+ return level * (mod.factor ?? 2.0);
17
+ case "suppress":
18
+ return level * (mod.factor ?? 0.5);
19
+ case "deactivate":
20
+ return 0;
21
+ case "activate":
22
+ return level === 0 ? 1.0 : level;
23
+ default:
24
+ return level;
25
+ }
26
+ }
27
+ /**
28
+ * Apply epigenetic markers to gene expression levels.
29
+ * Markers decay over time based on their decay factor and age.
30
+ */
31
+ function applyEpigeneticMarkers(genes, markers) {
32
+ const now = Date.now();
33
+ for (const marker of markers) {
34
+ // Calculate decay based on time elapsed
35
+ const markerAge = marker.timestamp
36
+ ? (now - new Date(marker.timestamp).getTime()) / (1000 * 60 * 60 * 24) // days
37
+ : 0;
38
+ const decayedStrength = Math.pow(marker.decay, markerAge / 30); // decay per 30 days
39
+ if (decayedStrength < 0.01)
40
+ continue; // marker too old, skip
41
+ for (const effect of marker.effects) {
42
+ if (effect.gene && genes[effect.gene] && effect.action && effect.factor) {
43
+ const gene = genes[effect.gene];
44
+ const effectiveFactor = 1 + (effect.factor - 1) * decayedStrength;
45
+ if (effect.action === "amplify") {
46
+ gene.expression_level *= effectiveFactor;
47
+ }
48
+ else if (effect.action === "suppress") {
49
+ gene.expression_level *= effectiveFactor;
50
+ }
51
+ }
52
+ // Epigenetic attract/repel: inject codons into the gene
53
+ if (effect.type && effect.target && effect.gene && genes[effect.gene]) {
54
+ const gene = genes[effect.gene];
55
+ const exists = gene.codons.some((c) => (c.type === "attract" || c.type === "repel") &&
56
+ c.type === effect.type && c.target === effect.target);
57
+ if (!exists) {
58
+ gene.codons.push({ type: effect.type, target: effect.target });
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
64
+ /**
65
+ * Activate a cascaded DNA for a given context and role.
66
+ * Returns the final gene expression state ready for compilation to IR.
67
+ */
68
+ export function activateDNA(cascaded, contextName = null, activeRole = null) {
69
+ // Initialize all genes at expression level 1.0
70
+ const activated = {};
71
+ for (const [name, gene] of Object.entries(cascaded.genes)) {
72
+ activated[name] = {
73
+ description: gene.description,
74
+ codons: [...gene.codons],
75
+ tags: [...(gene.tags ?? [])],
76
+ expression_level: 1.0,
77
+ };
78
+ }
79
+ // Apply context modifiers if a context is active
80
+ if (contextName && cascaded.contexts[contextName]) {
81
+ const ctx = cascaded.contexts[contextName];
82
+ // Apply gene modifiers
83
+ for (const mod of ctx.modifiers ?? []) {
84
+ if (activated[mod.gene]) {
85
+ activated[mod.gene].expression_level = applyModifier(activated[mod.gene].expression_level, mod);
86
+ }
87
+ }
88
+ // Deactivate genes
89
+ for (const g of ctx.deactivate_genes ?? []) {
90
+ if (activated[g]) {
91
+ activated[g].expression_level = 0;
92
+ }
93
+ }
94
+ // Activate genes (set to 1.0 if they were deactivated)
95
+ for (const g of ctx.activate_genes ?? []) {
96
+ if (activated[g] && activated[g].expression_level === 0) {
97
+ activated[g].expression_level = 1.0;
98
+ }
99
+ }
100
+ // Apply threshold overrides as new threshold codons
101
+ for (const override of ctx.threshold_overrides ?? []) {
102
+ // Find a gene to attach this to, or create a synthetic one
103
+ // For now, attach to the first gene that has a relevant sense codon
104
+ const targetGene = Object.values(activated)[0];
105
+ if (targetGene) {
106
+ targetGene.codons.push({
107
+ type: "threshold",
108
+ condition: override.condition,
109
+ });
110
+ }
111
+ }
112
+ }
113
+ // Apply role gene modifiers (after context, before epigenetic)
114
+ if (activeRole && cascaded.roles[activeRole]) {
115
+ const role = cascaded.roles[activeRole];
116
+ // Activate genes
117
+ for (const geneName of role.activates_genes ?? []) {
118
+ if (activated[geneName]) {
119
+ activated[geneName].expression_level =
120
+ activated[geneName].expression_level === 0
121
+ ? 1.0
122
+ : activated[geneName].expression_level;
123
+ }
124
+ }
125
+ // Suppress genes
126
+ for (const geneName of role.suppresses_genes ?? []) {
127
+ if (activated[geneName]) {
128
+ activated[geneName].expression_level *= 0.1;
129
+ }
130
+ }
131
+ }
132
+ // Apply epigenetic markers
133
+ applyEpigeneticMarkers(activated, cascaded.epigenetic_markers);
134
+ return {
135
+ genes: activated,
136
+ active_context: contextName,
137
+ active_role: activeRole,
138
+ source_ids: cascaded.source_ids,
139
+ };
140
+ }
141
+ //# sourceMappingURL=activate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activate.js","sourceRoot":"","sources":["../../src/compiler/activate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Intent DNA — Cascade Engine
3
+ *
4
+ * Merges multiple DNA layers following CSS-like cascade rules:
5
+ * Species (0) → Enterprise (50) → Personal (100) → Context (150) → Task (200)
6
+ *
7
+ * Conflict resolution:
8
+ * - threshold: never overridden by lower priority (like CSS !important)
9
+ * - weight: higher priority overrides lower
10
+ * - attract/repel: same target accumulates, different targets independent
11
+ * - amplify/suppress: factors multiply (1.5x × 2.0x = 3.0x)
12
+ */
13
+ import type { IntentDNA, Gene, ContextRegion, EpigeneticMarker, RoleDef, WorkflowDef } from "../schema/types.js";
14
+ export interface CascadedDNA {
15
+ genes: Record<string, Gene>;
16
+ contexts: Record<string, ContextRegion>;
17
+ roles: Record<string, RoleDef>;
18
+ workflows: Record<string, WorkflowDef>;
19
+ epigenetic_markers: EpigeneticMarker[];
20
+ source_ids: string[];
21
+ }
22
+ /**
23
+ * Cascade multiple DNA layers into a single merged DNA.
24
+ * Input must be sorted by priority (lowest first).
25
+ */
26
+ export declare function cascadeDNA(layers: IntentDNA[]): CascadedDNA;
27
+ //# sourceMappingURL=cascade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cascade.d.ts","sourceRoot":"","sources":["../../src/compiler/cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAS,aAAa,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAExH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;IACvC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAqED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAqD3D"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Intent DNA — Cascade Engine
3
+ *
4
+ * Merges multiple DNA layers following CSS-like cascade rules:
5
+ * Species (0) → Enterprise (50) → Personal (100) → Context (150) → Task (200)
6
+ *
7
+ * Conflict resolution:
8
+ * - threshold: never overridden by lower priority (like CSS !important)
9
+ * - weight: higher priority overrides lower
10
+ * - attract/repel: same target accumulates, different targets independent
11
+ * - amplify/suppress: factors multiply (1.5x × 2.0x = 3.0x)
12
+ */
13
+ /**
14
+ * Normalize workflow/workflows from an IntentDNA into a unified Record.
15
+ * Validation ensures workflow and workflows are mutually exclusive.
16
+ */
17
+ function normalizeWorkflowsFromDNA(dna) {
18
+ if (dna.workflows)
19
+ return dna.workflows;
20
+ if (dna.workflow)
21
+ return { [dna.workflow.name]: dna.workflow };
22
+ return {};
23
+ }
24
+ /**
25
+ * Merge two genes with the same name. Higher priority gene wins for weights,
26
+ * thresholds are union-merged (both apply).
27
+ */
28
+ function mergeGenes(base, override) {
29
+ const mergedCodons = [];
30
+ const baseThresholds = base.codons.filter((c) => c.type === "threshold");
31
+ const overrideThresholds = override.codons.filter((c) => c.type === "threshold");
32
+ // Thresholds: union (both layers' thresholds apply — never dropped)
33
+ const allThresholds = [...baseThresholds, ...overrideThresholds];
34
+ const seenConditions = new Set();
35
+ for (const t of allThresholds) {
36
+ if (t.type === "threshold" && !seenConditions.has(t.condition)) {
37
+ seenConditions.add(t.condition);
38
+ mergedCodons.push(t);
39
+ }
40
+ }
41
+ // Non-threshold codons: override replaces base for same type+target
42
+ const overrideNonThreshold = override.codons.filter((c) => c.type !== "threshold");
43
+ const baseNonThreshold = base.codons.filter((c) => c.type !== "threshold");
44
+ // Build a key for dedup
45
+ function codonKey(c) {
46
+ switch (c.type) {
47
+ case "attract":
48
+ case "repel":
49
+ return `${c.type}:${c.target}`;
50
+ case "weight":
51
+ return `weight:${c.a}:${c.b}`;
52
+ case "sense":
53
+ return `sense:${c.signal}`;
54
+ default:
55
+ return `${c.type}:unknown`;
56
+ }
57
+ }
58
+ const overrideKeys = new Set(overrideNonThreshold.map(codonKey));
59
+ // Keep base codons that aren't overridden
60
+ for (const c of baseNonThreshold) {
61
+ if (!overrideKeys.has(codonKey(c))) {
62
+ mergedCodons.push(c);
63
+ }
64
+ }
65
+ // Add all override codons
66
+ mergedCodons.push(...overrideNonThreshold);
67
+ return {
68
+ description: override.description || base.description,
69
+ codons: mergedCodons,
70
+ tags: [...new Set([...(base.tags ?? []), ...(override.tags ?? [])])],
71
+ };
72
+ }
73
+ /**
74
+ * Cascade multiple DNA layers into a single merged DNA.
75
+ * Input must be sorted by priority (lowest first).
76
+ */
77
+ export function cascadeDNA(layers) {
78
+ // Sort by priority ascending (species first, task last)
79
+ const sorted = [...layers].sort((a, b) => a.cascade.priority - b.cascade.priority);
80
+ const mergedGenes = {};
81
+ const mergedContexts = {};
82
+ const mergedRoles = {};
83
+ const mergedWorkflows = {};
84
+ const allMarkers = [];
85
+ const sourceIds = [];
86
+ for (const dna of sorted) {
87
+ sourceIds.push(dna.id);
88
+ // Merge genes
89
+ for (const [name, gene] of Object.entries(dna.genes)) {
90
+ if (mergedGenes[name]) {
91
+ mergedGenes[name] = mergeGenes(mergedGenes[name], gene);
92
+ }
93
+ else {
94
+ mergedGenes[name] = { ...gene, codons: [...gene.codons] };
95
+ }
96
+ }
97
+ // Merge contexts (higher priority replaces entirely)
98
+ for (const [name, ctx] of Object.entries(dna.contexts ?? {})) {
99
+ mergedContexts[name] = ctx;
100
+ }
101
+ // Merge roles (higher priority replaces entirely)
102
+ for (const [name, role] of Object.entries(dna.roles ?? {})) {
103
+ mergedRoles[name] = role;
104
+ }
105
+ // Merge workflows: normalize then merge by name (higher priority replaces)
106
+ const normalized = normalizeWorkflowsFromDNA(dna);
107
+ for (const [name, wf] of Object.entries(normalized)) {
108
+ mergedWorkflows[name] = wf;
109
+ }
110
+ // Collect epigenetic markers
111
+ if (dna.epigenetic?.markers) {
112
+ allMarkers.push(...dna.epigenetic.markers);
113
+ }
114
+ }
115
+ return {
116
+ genes: mergedGenes,
117
+ contexts: mergedContexts,
118
+ roles: mergedRoles,
119
+ workflows: mergedWorkflows,
120
+ epigenetic_markers: allMarkers,
121
+ source_ids: sourceIds,
122
+ };
123
+ }
124
+ //# sourceMappingURL=cascade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cascade.js","sourceRoot":"","sources":["../../src/compiler/cascade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Intent DNA — IR Compiler
3
+ *
4
+ * Compiles activated DNA into framework-agnostic Constraint IR.
5
+ * The IR is then consumed by framework-specific Runtime adapters.
6
+ *
7
+ * Compilation pipeline:
8
+ * DNA files → cascade → activate → compile (this) → IR → runtime adapter
9
+ */
10
+ import type { ConstraintIR } from "../schema/types.js";
11
+ import type { ActivatedDNA } from "./activate.js";
12
+ import type { CascadedDNA } from "./cascade.js";
13
+ /**
14
+ * Compile activated DNA into a Constraint IR.
15
+ */
16
+ export declare function compileDNA(activated: ActivatedDNA, cascaded?: CascadedDNA): ConstraintIR;
17
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/compiler/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,YAAY,EAUb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA6JhD;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,YAAY,CA8ExF"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Intent DNA — IR Compiler
3
+ *
4
+ * Compiles activated DNA into framework-agnostic Constraint IR.
5
+ * The IR is then consumed by framework-specific Runtime adapters.
6
+ *
7
+ * Compilation pipeline:
8
+ * DNA files → cascade → activate → compile (this) → IR → runtime adapter
9
+ */
10
+ /**
11
+ * Map expression level to directive priority.
12
+ */
13
+ function expressionToPriority(level) {
14
+ if (level >= 1.5)
15
+ return "high";
16
+ if (level >= 1.0)
17
+ return "medium";
18
+ return "low";
19
+ }
20
+ /**
21
+ * Generate prompt directives from a gene's codons.
22
+ * These become part of the system prompt.
23
+ */
24
+ function geneToDirectives(name, gene) {
25
+ if (gene.expression_level === 0)
26
+ return [];
27
+ const directives = [];
28
+ const priority = expressionToPriority(gene.expression_level);
29
+ // Collect attract/repel into a coherent directive
30
+ const attracts = [];
31
+ const repels = [];
32
+ const weights = [];
33
+ for (const codon of gene.codons) {
34
+ switch (codon.type) {
35
+ case "attract":
36
+ attracts.push(codon.target);
37
+ break;
38
+ case "repel":
39
+ repels.push(codon.target);
40
+ break;
41
+ case "weight":
42
+ weights.push(`${codon.a}(${Math.round(codon.ratio * 100)}%) vs ${codon.b}(${Math.round((1 - codon.ratio) * 100)}%)`);
43
+ break;
44
+ }
45
+ }
46
+ // Build a natural language directive
47
+ const parts = [];
48
+ parts.push(`[${name}] ${gene.description}.`);
49
+ if (attracts.length > 0) {
50
+ parts.push(`Prefer: ${attracts.join(", ")}.`);
51
+ }
52
+ if (repels.length > 0) {
53
+ parts.push(`Avoid: ${repels.join(", ")}.`);
54
+ }
55
+ if (weights.length > 0) {
56
+ parts.push(`Trade-offs: ${weights.join("; ")}.`);
57
+ }
58
+ if (parts.length > 1) {
59
+ directives.push({
60
+ priority,
61
+ text: parts.join(" "),
62
+ source_gene: name,
63
+ });
64
+ }
65
+ return directives;
66
+ }
67
+ /**
68
+ * Extract tool filters from threshold and repel codons.
69
+ */
70
+ function geneToToolFilters(name, gene) {
71
+ if (gene.expression_level === 0)
72
+ return [];
73
+ const filters = [];
74
+ for (const codon of gene.codons) {
75
+ if (codon.type === "repel") {
76
+ filters.push({
77
+ action: "deprioritize",
78
+ target: codon.target,
79
+ reason: `DNA gene '${name}' repels '${codon.target}'`,
80
+ source_gene: name,
81
+ });
82
+ }
83
+ }
84
+ return filters;
85
+ }
86
+ /**
87
+ * Extract pre-execution gates from threshold and sense codons.
88
+ */
89
+ function geneToGates(name, gene) {
90
+ if (gene.expression_level === 0)
91
+ return [];
92
+ const gates = [];
93
+ for (const codon of gene.codons) {
94
+ if (codon.type === "threshold") {
95
+ gates.push({
96
+ condition: codon.condition,
97
+ action: "block",
98
+ message: `DNA threshold violation: ${codon.condition} (gene: ${name})`,
99
+ source_gene: name,
100
+ });
101
+ }
102
+ if (codon.type === "sense" && codon.response === "escalate_to_human") {
103
+ gates.push({
104
+ condition: codon.signal,
105
+ action: "escalate",
106
+ message: `DNA requires human approval for: ${codon.signal} (gene: ${name})`,
107
+ source_gene: name,
108
+ });
109
+ }
110
+ if (codon.type === "sense" && codon.response === "block") {
111
+ gates.push({
112
+ condition: codon.signal,
113
+ action: "block",
114
+ message: `DNA blocks action on signal: ${codon.signal} (gene: ${name})`,
115
+ source_gene: name,
116
+ });
117
+ }
118
+ }
119
+ return gates;
120
+ }
121
+ /**
122
+ * Extract post-execution validators from sense codons.
123
+ */
124
+ function geneToValidators(name, gene) {
125
+ if (gene.expression_level === 0)
126
+ return [];
127
+ const validators = [];
128
+ for (const codon of gene.codons) {
129
+ if (codon.type === "sense" && codon.response === "verify_before_share") {
130
+ validators.push({
131
+ check: `verify_data_sharing_${codon.signal}`,
132
+ source_gene: name,
133
+ });
134
+ }
135
+ if (codon.type === "sense" && codon.response === "retry_with_more_depth") {
136
+ validators.push({
137
+ check: "output_completeness",
138
+ threshold: gene.expression_level >= 2.0 ? 0.9 : 0.7,
139
+ source_gene: name,
140
+ });
141
+ }
142
+ }
143
+ return validators;
144
+ }
145
+ /**
146
+ * Compile activated DNA into a Constraint IR.
147
+ */
148
+ export function compileDNA(activated, cascaded) {
149
+ const directives = [];
150
+ const toolFilters = [];
151
+ const gates = [];
152
+ const validators = [];
153
+ const injections = [];
154
+ for (const [name, gene] of Object.entries(activated.genes)) {
155
+ directives.push(...geneToDirectives(name, gene));
156
+ toolFilters.push(...geneToToolFilters(name, gene));
157
+ gates.push(...geneToGates(name, gene));
158
+ validators.push(...geneToValidators(name, gene));
159
+ }
160
+ // Compile role constraints
161
+ let roleToolPermissions;
162
+ let roleScope;
163
+ if (activated.active_role && cascaded?.roles[activated.active_role]) {
164
+ const role = cascaded.roles[activated.active_role];
165
+ roleToolPermissions = role.tool_permissions;
166
+ roleScope = role.scope;
167
+ // Generate tool filters from role permissions
168
+ if (role.tool_permissions?.deny) {
169
+ for (const tool of role.tool_permissions.deny) {
170
+ toolFilters.push({
171
+ action: "remove",
172
+ target: tool,
173
+ reason: `Role '${activated.active_role}' denies tool '${tool}'`,
174
+ source_gene: "",
175
+ source_role: activated.active_role,
176
+ });
177
+ }
178
+ }
179
+ if (role.tool_permissions?.allow) {
180
+ toolFilters.push({
181
+ action: "warn",
182
+ reason: `Role '${activated.active_role}' restricts tools to allow list`,
183
+ source_gene: "",
184
+ source_role: activated.active_role,
185
+ });
186
+ }
187
+ }
188
+ // Build roles_scope_map from all cascaded roles
189
+ const rolesScopeMap = [];
190
+ if (cascaded?.roles) {
191
+ for (const [name, role] of Object.entries(cascaded.roles)) {
192
+ if (role.scope || role.tool_permissions) {
193
+ rolesScopeMap.push({
194
+ role_name: name,
195
+ scope: role.scope ?? {},
196
+ tool_permissions: role.tool_permissions,
197
+ });
198
+ }
199
+ }
200
+ }
201
+ // Sort directives by priority
202
+ const priorityOrder = { high: 0, medium: 1, low: 2 };
203
+ directives.sort((a, b) => priorityOrder[a.priority] - priorityOrder[b.priority]);
204
+ return {
205
+ prompt_directives: directives,
206
+ tool_filters: toolFilters,
207
+ pre_execution_gates: gates,
208
+ post_execution_validators: validators,
209
+ context_injections: injections,
210
+ source_dna_ids: activated.source_ids,
211
+ compiled_at: new Date().toISOString(),
212
+ active_context: activated.active_context ?? undefined,
213
+ active_role: activated.active_role ?? undefined,
214
+ role_tool_permissions: roleToolPermissions,
215
+ role_scope: roleScope,
216
+ roles_scope_map: rolesScopeMap.length > 0 ? rolesScopeMap : undefined,
217
+ };
218
+ }
219
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/compiler/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Intent DNA — Compiler
3
+ *
4
+ * Full compilation pipeline:
5
+ * DNA files → parse → cascade → activate (+ epigenetic) → compile → IR
6
+ */
7
+ import type { IntentDNA, ConstraintIR, EpigeneticMarker } from "../schema/types.js";
8
+ export { cascadeDNA } from "./cascade.js";
9
+ export { activateDNA } from "./activate.js";
10
+ export { compileDNA } from "./compile.js";
11
+ export { compileWorkflow } from "./workflow.js";
12
+ export type { CompileWorkflowOptions, CompileWorkflowResult, CompileWorkflowError, } from "./workflow.js";
13
+ /**
14
+ * Load and parse a DNA file from disk.
15
+ */
16
+ export declare function loadDNA(filePath: string): Promise<IntentDNA>;
17
+ export interface CompileOptions {
18
+ context?: string;
19
+ role?: string;
20
+ /** Additional epigenetic markers from evolution store */
21
+ epigenetic_markers?: EpigeneticMarker[];
22
+ }
23
+ /**
24
+ * Full compilation pipeline: load DNA files, cascade, activate context, compile to IR.
25
+ * Optionally injects stored epigenetic markers from the evolution engine.
26
+ */
27
+ export declare function compileFromFiles(filePaths: string[], contextOrOptions?: string | CompileOptions): Promise<ConstraintIR>;
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAOpF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAYlE;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EAAE,EACnB,gBAAgB,CAAC,EAAE,MAAM,GAAG,cAAc,GACzC,OAAO,CAAC,YAAY,CAAC,CAoBvB"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Intent DNA — Compiler
3
+ *
4
+ * Full compilation pipeline:
5
+ * DNA files → parse → cascade → activate (+ epigenetic) → compile → IR
6
+ */
7
+ import { readFile } from "node:fs/promises";
8
+ import { validateDNA } from "../schema/validate.js";
9
+ import { parseYAML } from "../schema/yaml-parser.js";
10
+ import { cascadeDNA } from "./cascade.js";
11
+ import { activateDNA } from "./activate.js";
12
+ import { compileDNA } from "./compile.js";
13
+ export { cascadeDNA } from "./cascade.js";
14
+ export { activateDNA } from "./activate.js";
15
+ export { compileDNA } from "./compile.js";
16
+ export { compileWorkflow } from "./workflow.js";
17
+ /**
18
+ * Load and parse a DNA file from disk.
19
+ */
20
+ export async function loadDNA(filePath) {
21
+ const raw = await readFile(filePath, "utf-8");
22
+ const isYAML = filePath.endsWith(".yaml") || filePath.endsWith(".yml");
23
+ const dna = (isYAML ? parseYAML(raw) : JSON.parse(raw));
24
+ const result = validateDNA(dna);
25
+ if (!result.valid) {
26
+ const messages = result.errors.map((e) => ` ${e.path}: ${e.message}`).join("\n");
27
+ throw new Error(`Invalid DNA file ${filePath}:\n${messages}`);
28
+ }
29
+ return dna;
30
+ }
31
+ /**
32
+ * Full compilation pipeline: load DNA files, cascade, activate context, compile to IR.
33
+ * Optionally injects stored epigenetic markers from the evolution engine.
34
+ */
35
+ export async function compileFromFiles(filePaths, contextOrOptions) {
36
+ const opts = typeof contextOrOptions === "string"
37
+ ? { context: contextOrOptions }
38
+ : contextOrOptions ?? {};
39
+ const dnas = [];
40
+ for (const path of filePaths) {
41
+ dnas.push(await loadDNA(path));
42
+ }
43
+ const cascaded = cascadeDNA(dnas);
44
+ // Inject stored epigenetic markers if provided
45
+ if (opts.epigenetic_markers && opts.epigenetic_markers.length > 0) {
46
+ cascaded.epigenetic_markers.push(...opts.epigenetic_markers);
47
+ }
48
+ const activated = activateDNA(cascaded, opts.context ?? null, opts.role ?? null);
49
+ return compileDNA(activated, cascaded);
50
+ }
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAOhD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,QAAgB;IAC5C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAc,CAAC;IAErE,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,MAAM,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AASD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAmB,EACnB,gBAA0C;IAE1C,MAAM,IAAI,GAAmB,OAAO,gBAAgB,KAAK,QAAQ;QAC/D,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE;QAC/B,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC;IAE3B,MAAM,IAAI,GAAgB,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAElC,+CAA+C;IAC/C,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IACjF,OAAO,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC"}