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.
- package/LICENSE +69 -0
- package/README.md +251 -0
- package/dist/audit/index.d.ts +109 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +144 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/cli/commands/compile.d.ts +14 -0
- package/dist/cli/commands/compile.d.ts.map +1 -0
- package/dist/cli/commands/compile.js +89 -0
- package/dist/cli/commands/compile.js.map +1 -0
- package/dist/cli/commands/epigenetic.d.ts +20 -0
- package/dist/cli/commands/epigenetic.d.ts.map +1 -0
- package/dist/cli/commands/epigenetic.js +112 -0
- package/dist/cli/commands/epigenetic.js.map +1 -0
- package/dist/cli/commands/evolve.d.ts +12 -0
- package/dist/cli/commands/evolve.d.ts.map +1 -0
- package/dist/cli/commands/evolve.js +52 -0
- package/dist/cli/commands/evolve.js.map +1 -0
- package/dist/cli/commands/guard.d.ts +22 -0
- package/dist/cli/commands/guard.d.ts.map +1 -0
- package/dist/cli/commands/guard.js +257 -0
- package/dist/cli/commands/guard.js.map +1 -0
- package/dist/cli/commands/import.d.ts +71 -0
- package/dist/cli/commands/import.d.ts.map +1 -0
- package/dist/cli/commands/import.js +428 -0
- package/dist/cli/commands/import.js.map +1 -0
- package/dist/cli/commands/init.d.ts +13 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +171 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/run.d.ts +59 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +350 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/show.d.ts +12 -0
- package/dist/cli/commands/show.d.ts.map +1 -0
- package/dist/cli/commands/show.js +78 -0
- package/dist/cli/commands/show.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +31 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +307 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +11 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +30 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/commands/verify.d.ts +33 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +102 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +358 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/util/format.d.ts +24 -0
- package/dist/cli/util/format.d.ts.map +1 -0
- package/dist/cli/util/format.js +67 -0
- package/dist/cli/util/format.js.map +1 -0
- package/dist/cli/util/prompt.d.ts +11 -0
- package/dist/cli/util/prompt.d.ts.map +1 -0
- package/dist/cli/util/prompt.js +51 -0
- package/dist/cli/util/prompt.js.map +1 -0
- package/dist/compiler/activate.d.ts +29 -0
- package/dist/compiler/activate.d.ts.map +1 -0
- package/dist/compiler/activate.js +141 -0
- package/dist/compiler/activate.js.map +1 -0
- package/dist/compiler/cascade.d.ts +27 -0
- package/dist/compiler/cascade.d.ts.map +1 -0
- package/dist/compiler/cascade.js +124 -0
- package/dist/compiler/cascade.js.map +1 -0
- package/dist/compiler/compile.d.ts +17 -0
- package/dist/compiler/compile.d.ts.map +1 -0
- package/dist/compiler/compile.js +219 -0
- package/dist/compiler/compile.js.map +1 -0
- package/dist/compiler/index.d.ts +28 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +51 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/workflow.d.ts +37 -0
- package/dist/compiler/workflow.d.ts.map +1 -0
- package/dist/compiler/workflow.js +274 -0
- package/dist/compiler/workflow.js.map +1 -0
- package/dist/evolution/collector.d.ts +52 -0
- package/dist/evolution/collector.d.ts.map +1 -0
- package/dist/evolution/collector.js +72 -0
- package/dist/evolution/collector.js.map +1 -0
- package/dist/evolution/fitness.d.ts +33 -0
- package/dist/evolution/fitness.d.ts.map +1 -0
- package/dist/evolution/fitness.js +96 -0
- package/dist/evolution/fitness.js.map +1 -0
- package/dist/evolution/index.d.ts +53 -0
- package/dist/evolution/index.d.ts.map +1 -0
- package/dist/evolution/index.js +69 -0
- package/dist/evolution/index.js.map +1 -0
- package/dist/evolution/marker-gen.d.ts +31 -0
- package/dist/evolution/marker-gen.d.ts.map +1 -0
- package/dist/evolution/marker-gen.js +141 -0
- package/dist/evolution/marker-gen.js.map +1 -0
- package/dist/evolution/store.d.ts +24 -0
- package/dist/evolution/store.d.ts.map +1 -0
- package/dist/evolution/store.js +78 -0
- package/dist/evolution/store.js.map +1 -0
- package/dist/evolution/types.d.ts +73 -0
- package/dist/evolution/types.d.ts.map +1 -0
- package/dist/evolution/types.js +14 -0
- package/dist/evolution/types.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/log/logger.d.ts +15 -0
- package/dist/log/logger.d.ts.map +1 -0
- package/dist/log/logger.js +36 -0
- package/dist/log/logger.js.map +1 -0
- package/dist/runtime/agent-md.d.ts +56 -0
- package/dist/runtime/agent-md.d.ts.map +1 -0
- package/dist/runtime/agent-md.js +257 -0
- package/dist/runtime/agent-md.js.map +1 -0
- package/dist/runtime/claude-sdk.d.ts +51 -0
- package/dist/runtime/claude-sdk.d.ts.map +1 -0
- package/dist/runtime/claude-sdk.js +78 -0
- package/dist/runtime/claude-sdk.js.map +1 -0
- package/dist/runtime/hooks.d.ts +67 -0
- package/dist/runtime/hooks.d.ts.map +1 -0
- package/dist/runtime/hooks.js +645 -0
- package/dist/runtime/hooks.js.map +1 -0
- package/dist/runtime/index.d.ts +9 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +5 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/markdown.d.ts +36 -0
- package/dist/runtime/markdown.d.ts.map +1 -0
- package/dist/runtime/markdown.js +214 -0
- package/dist/runtime/markdown.js.map +1 -0
- package/dist/runtime/settings-adapter.d.ts +33 -0
- package/dist/runtime/settings-adapter.d.ts.map +1 -0
- package/dist/runtime/settings-adapter.js +78 -0
- package/dist/runtime/settings-adapter.js.map +1 -0
- package/dist/runtime/skill-adapter.d.ts +22 -0
- package/dist/runtime/skill-adapter.d.ts.map +1 -0
- package/dist/runtime/skill-adapter.js +170 -0
- package/dist/runtime/skill-adapter.js.map +1 -0
- package/dist/runtime/workflow-runner.d.ts +53 -0
- package/dist/runtime/workflow-runner.d.ts.map +1 -0
- package/dist/runtime/workflow-runner.js +420 -0
- package/dist/runtime/workflow-runner.js.map +1 -0
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +2 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/types.d.ts +275 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +11 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/schema/validate.d.ts +20 -0
- package/dist/schema/validate.d.ts.map +1 -0
- package/dist/schema/validate.js +379 -0
- package/dist/schema/validate.js.map +1 -0
- package/dist/schema/yaml-parser.d.ts +12 -0
- package/dist/schema/yaml-parser.d.ts.map +1 -0
- package/dist/schema/yaml-parser.js +298 -0
- package/dist/schema/yaml-parser.js.map +1 -0
- package/dist/species/default.dna.json +62 -0
- package/dist/templates/api-backend.dna.yaml +77 -0
- package/dist/templates/brainstorming-first.dna.yaml +71 -0
- package/dist/templates/branch-finishing.dna.yaml +54 -0
- package/dist/templates/code-review-pipeline.dna.yaml +91 -0
- package/dist/templates/devops-cicd.dna.yaml +67 -0
- package/dist/templates/documentation-writer.dna.yaml +71 -0
- package/dist/templates/enterprise-baseline.dna.yaml +66 -0
- package/dist/templates/frontend-quality.dna.yaml +88 -0
- package/dist/templates/full-pipeline.dna.yaml +129 -0
- package/dist/templates/mobile-dev.dna.yaml +68 -0
- package/dist/templates/monorepo-governance.dna.yaml +60 -0
- package/dist/templates/multi-perspective-review.dna.yaml +109 -0
- package/dist/templates/pr-submitter.dna.yaml +55 -0
- package/dist/templates/safe-refactoring.dna.yaml +65 -0
- package/dist/templates/secure-dev.dna.yaml +90 -0
- package/dist/templates/subagent-parallel.dna.yaml +98 -0
- package/dist/templates/systematic-debugging.dna.yaml +55 -0
- package/dist/templates/tdd-strict.dna.yaml +69 -0
- package/dist/templates/verification-loop.dna.yaml +53 -0
- package/dist/templates/yolo-with-guardrails.dna.yaml +56 -0
- 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":"AAAA;;;;;;;;GAQG;AA0BH;;GAEG;AACH,SAAS,aAAa,CAAC,KAAa,EAAE,GAAiB;IACrD,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;QACrC,KAAK,UAAU;YACb,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;QACrC,KAAK,YAAY;YACf,OAAO,CAAC,CAAC;QACX,KAAK,UAAU;YACb,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QACnC;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,KAAoC,EACpC,OAA2B;IAE3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,wCAAwC;QACxC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS;YAChC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO;YAC9E,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,oBAAoB;QAEpF,IAAI,eAAe,GAAG,IAAI;YAAE,SAAS,CAAC,uBAAuB;QAE7D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACxE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC;gBAElE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAChC,IAAI,CAAC,gBAAgB,IAAI,eAAe,CAAC;gBAC3C,CAAC;qBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACxC,IAAI,CAAC,gBAAgB,IAAI,eAAe,CAAC;gBAC3C,CAAC;YACH,CAAC;YAED,wDAAwD;YACxD,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;oBAC5C,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAC5D,CAAC;gBACF,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,QAAqB,EACrB,cAA6B,IAAI,EACjC,aAA4B,IAAI;IAEhC,+CAA+C;IAC/C,MAAM,SAAS,GAAkC,EAAE,CAAC;IAEpD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,SAAS,CAAC,IAAI,CAAC,GAAG;YAChB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAC5B,gBAAgB,EAAE,GAAG;SACtB,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,IAAI,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE3C,uBAAuB;QACvB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YACtC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,gBAAgB,GAAG,aAAa,CAClD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,gBAAgB,EACpC,GAAG,CACJ,CAAC;YACJ,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC;YAC3C,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjB,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;YACzC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,EAAE,CAAC;gBACxD,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,GAAG,CAAC;YACtC,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,mBAAmB,IAAI,EAAE,EAAE,CAAC;YACrD,2DAA2D;YAC3D,oEAAoE;YACpE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;oBACrB,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,QAAQ,CAAC,SAAS;iBAC9B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,IAAI,UAAU,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAExC,iBAAiB;QACjB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;YAClD,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,QAAQ,CAAC,CAAC,gBAAgB;oBAClC,SAAS,CAAC,QAAQ,CAAC,CAAC,gBAAgB,KAAK,CAAC;wBACxC,CAAC,CAAC,GAAG;wBACL,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC;YACnD,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,QAAQ,CAAC,CAAC,gBAAgB,IAAI,GAAG,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,sBAAsB,CAAC,SAAS,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAE/D,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,cAAc,EAAE,WAAW;QAC3B,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -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"}
|