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,379 @@
1
+ /**
2
+ * Intent DNA — Schema Validation
3
+ *
4
+ * Validates an IntentDNA document for structural correctness:
5
+ * - Required fields present
6
+ * - Gene references in contexts point to existing genes
7
+ * - Codon values in valid ranges
8
+ * - No circular inheritance
9
+ */
10
+ function validateCodon(codon, path) {
11
+ const errors = [];
12
+ switch (codon.type) {
13
+ case "weight":
14
+ if (codon.ratio < 0 || codon.ratio > 1) {
15
+ errors.push({ path: `${path}.ratio`, message: `weight ratio must be 0.0-1.0, got ${codon.ratio}` });
16
+ }
17
+ if (!codon.a || !codon.b) {
18
+ errors.push({ path, message: "weight codon requires both 'a' and 'b'" });
19
+ }
20
+ break;
21
+ case "attract":
22
+ case "repel":
23
+ if (!codon.target) {
24
+ errors.push({ path: `${path}.target`, message: `${codon.type} codon requires 'target'` });
25
+ }
26
+ break;
27
+ case "threshold":
28
+ if (!codon.condition) {
29
+ errors.push({ path: `${path}.condition`, message: "threshold codon requires 'condition'" });
30
+ }
31
+ break;
32
+ case "sense":
33
+ if (!codon.signal || !codon.response) {
34
+ errors.push({ path, message: "sense codon requires 'signal' and 'response'" });
35
+ }
36
+ break;
37
+ }
38
+ return errors;
39
+ }
40
+ function validateGene(name, gene) {
41
+ const errors = [];
42
+ const path = `genes.${name}`;
43
+ if (!gene.description) {
44
+ errors.push({ path: `${path}.description`, message: "gene requires 'description'" });
45
+ }
46
+ if (!gene.codons || gene.codons.length === 0) {
47
+ errors.push({ path: `${path}.codons`, message: "gene requires at least one codon" });
48
+ }
49
+ for (let i = 0; i < (gene.codons?.length ?? 0); i++) {
50
+ errors.push(...validateCodon(gene.codons[i], `${path}.codons[${i}]`));
51
+ }
52
+ return errors;
53
+ }
54
+ function validateContext(name, ctx, geneNames) {
55
+ const errors = [];
56
+ const path = `contexts.${name}`;
57
+ for (const mod of ctx.modifiers) {
58
+ if (!geneNames.has(mod.gene)) {
59
+ errors.push({
60
+ path: `${path}.modifiers`,
61
+ message: `modifier references unknown gene '${mod.gene}'`,
62
+ });
63
+ }
64
+ if ((mod.action === "amplify" || mod.action === "suppress") && mod.factor !== undefined) {
65
+ if (mod.factor <= 0) {
66
+ errors.push({
67
+ path: `${path}.modifiers`,
68
+ message: `modifier factor must be positive, got ${mod.factor}`,
69
+ });
70
+ }
71
+ }
72
+ }
73
+ for (const g of ctx.activate_genes ?? []) {
74
+ if (!geneNames.has(g)) {
75
+ errors.push({ path: `${path}.activate_genes`, message: `unknown gene '${g}'` });
76
+ }
77
+ }
78
+ for (const g of ctx.deactivate_genes ?? []) {
79
+ if (!geneNames.has(g)) {
80
+ errors.push({ path: `${path}.deactivate_genes`, message: `unknown gene '${g}'` });
81
+ }
82
+ }
83
+ return errors;
84
+ }
85
+ function validateRole(name, role, geneNames) {
86
+ const errors = [];
87
+ const path = `roles.${name}`;
88
+ // description required
89
+ if (!role.description) {
90
+ errors.push({ path: `${path}.description`, message: "role requires 'description'" });
91
+ }
92
+ // tool_permissions: allow and deny entries cannot be empty strings
93
+ if (role.tool_permissions) {
94
+ for (const tool of role.tool_permissions.allow ?? []) {
95
+ if (!tool) {
96
+ errors.push({ path: `${path}.tool_permissions.allow`, message: "tool name cannot be empty" });
97
+ }
98
+ }
99
+ for (const tool of role.tool_permissions.deny ?? []) {
100
+ if (!tool) {
101
+ errors.push({ path: `${path}.tool_permissions.deny`, message: "tool name cannot be empty" });
102
+ }
103
+ }
104
+ }
105
+ // scope: glob patterns cannot be empty strings
106
+ if (role.scope) {
107
+ for (const p of role.scope.read ?? []) {
108
+ if (!p) {
109
+ errors.push({ path: `${path}.scope.read`, message: "scope path cannot be empty" });
110
+ }
111
+ }
112
+ for (const p of role.scope.write ?? []) {
113
+ if (!p) {
114
+ errors.push({ path: `${path}.scope.write`, message: "scope path cannot be empty" });
115
+ }
116
+ }
117
+ }
118
+ // activates_genes: must reference defined genes
119
+ for (const g of role.activates_genes ?? []) {
120
+ if (!geneNames.has(g)) {
121
+ errors.push({ path: `${path}.activates_genes`, message: `unknown gene '${g}'` });
122
+ }
123
+ }
124
+ // suppresses_genes: must reference defined genes
125
+ for (const g of role.suppresses_genes ?? []) {
126
+ if (!geneNames.has(g)) {
127
+ errors.push({ path: `${path}.suppresses_genes`, message: `unknown gene '${g}'` });
128
+ }
129
+ }
130
+ // activates and suppresses must not overlap
131
+ if (role.activates_genes && role.suppresses_genes) {
132
+ const activateSet = new Set(role.activates_genes);
133
+ for (const g of role.suppresses_genes) {
134
+ if (activateSet.has(g)) {
135
+ errors.push({
136
+ path: `${path}`,
137
+ message: `gene '${g}' cannot be both activated and suppressed`,
138
+ });
139
+ }
140
+ }
141
+ }
142
+ // instructions: if present, must be an array of non-empty strings
143
+ if (role.instructions !== undefined) {
144
+ if (!Array.isArray(role.instructions)) {
145
+ errors.push({ path: `${path}.instructions`, message: "instructions must be an array" });
146
+ }
147
+ else {
148
+ for (let i = 0; i < role.instructions.length; i++) {
149
+ if (typeof role.instructions[i] !== "string" || !role.instructions[i]) {
150
+ errors.push({
151
+ path: `${path}.instructions[${i}]`,
152
+ message: "instruction must be a non-empty string",
153
+ });
154
+ }
155
+ }
156
+ }
157
+ }
158
+ // output_schema: validate structured form
159
+ if (role.output_schema !== undefined && typeof role.output_schema !== "string") {
160
+ const os = role.output_schema;
161
+ const osPath = `${path}.output_schema`;
162
+ if (os.required_sections !== undefined) {
163
+ if (!Array.isArray(os.required_sections)) {
164
+ errors.push({ path: `${osPath}.required_sections`, message: "must be an array" });
165
+ }
166
+ else {
167
+ for (let i = 0; i < os.required_sections.length; i++) {
168
+ if (typeof os.required_sections[i] !== "string" || !os.required_sections[i]) {
169
+ errors.push({ path: `${osPath}.required_sections[${i}]`, message: "must be a non-empty string" });
170
+ }
171
+ }
172
+ }
173
+ }
174
+ if (os.format !== undefined) {
175
+ const validFormats = ["markdown", "pdf", "docx", "xlsx", "json", "csv"];
176
+ if (!validFormats.includes(os.format)) {
177
+ errors.push({ path: `${osPath}.format`, message: `must be one of: ${validFormats.join(", ")}` });
178
+ }
179
+ }
180
+ if (os.converter !== undefined && (typeof os.converter !== "string" || !os.converter)) {
181
+ errors.push({ path: `${osPath}.converter`, message: "must be a non-empty string" });
182
+ }
183
+ if (os.path !== undefined && (typeof os.path !== "string" || !os.path)) {
184
+ errors.push({ path: `${osPath}.path`, message: "must be a non-empty string" });
185
+ }
186
+ }
187
+ return errors;
188
+ }
189
+ function validateWorkflow(workflow, roleNames, pathPrefix) {
190
+ const errors = [];
191
+ const path = pathPrefix ?? "workflow";
192
+ // name required
193
+ if (!workflow.name) {
194
+ errors.push({ path: `${path}.name`, message: "workflow requires 'name'" });
195
+ }
196
+ // steps required and non-empty
197
+ if (!workflow.steps || workflow.steps.length === 0) {
198
+ errors.push({ path: `${path}.steps`, message: "workflow requires at least one step" });
199
+ return errors; // early return, downstream checks need steps
200
+ }
201
+ // Collect step ids for reference checking
202
+ const stepIds = new Set();
203
+ const seenStepIds = new Set();
204
+ for (let i = 0; i < workflow.steps.length; i++) {
205
+ const step = workflow.steps[i];
206
+ const stepPath = `${path}.steps[${i}]`;
207
+ // step.id required and unique
208
+ if (!step.id) {
209
+ errors.push({ path: `${stepPath}.id`, message: "step requires 'id'" });
210
+ }
211
+ else if (seenStepIds.has(step.id)) {
212
+ errors.push({ path: `${stepPath}.id`, message: `duplicate step id '${step.id}'` });
213
+ }
214
+ else {
215
+ seenStepIds.add(step.id);
216
+ stepIds.add(step.id);
217
+ }
218
+ // step.role required and must exist in roles
219
+ if (!step.role) {
220
+ errors.push({ path: `${stepPath}.role`, message: "step requires 'role'" });
221
+ }
222
+ else if (roleNames.size > 0 && !roleNames.has(step.role)) {
223
+ errors.push({
224
+ path: `${stepPath}.role`,
225
+ message: `step references unknown role '${step.role}'`,
226
+ });
227
+ }
228
+ // depends_on: check for empty strings in first pass
229
+ for (const dep of step.depends_on ?? []) {
230
+ if (!dep) {
231
+ errors.push({ path: `${stepPath}.depends_on`, message: "dependency step id cannot be empty" });
232
+ }
233
+ }
234
+ // prompt: if present, must be a non-empty string
235
+ if (step.prompt !== undefined && (typeof step.prompt !== "string" || !step.prompt)) {
236
+ errors.push({ path: `${stepPath}.prompt`, message: "prompt must be a non-empty string" });
237
+ }
238
+ }
239
+ // Second pass: validate depends_on references against all step ids
240
+ for (let i = 0; i < workflow.steps.length; i++) {
241
+ const step = workflow.steps[i];
242
+ const stepPath = `${path}.steps[${i}]`;
243
+ for (const dep of step.depends_on ?? []) {
244
+ if (dep && !stepIds.has(dep)) {
245
+ errors.push({
246
+ path: `${stepPath}.depends_on`,
247
+ message: `depends_on references unknown step '${dep}'`,
248
+ });
249
+ }
250
+ if (dep && dep === step.id) {
251
+ errors.push({
252
+ path: `${stepPath}.depends_on`,
253
+ message: `step '${step.id}' cannot depend on itself`,
254
+ });
255
+ }
256
+ }
257
+ }
258
+ // Validate transitions
259
+ const validConditions = ["pass", "fail", "always", "error"];
260
+ for (let i = 0; i < (workflow.transitions?.length ?? 0); i++) {
261
+ const t = workflow.transitions[i];
262
+ const tPath = `${path}.transitions[${i}]`;
263
+ if (!t.from) {
264
+ errors.push({ path: `${tPath}.from`, message: "transition requires 'from'" });
265
+ }
266
+ else if (!stepIds.has(t.from)) {
267
+ errors.push({ path: `${tPath}.from`, message: `transition references unknown step '${t.from}'` });
268
+ }
269
+ if (!t.to) {
270
+ errors.push({ path: `${tPath}.to`, message: "transition requires 'to'" });
271
+ }
272
+ else if (!stepIds.has(t.to)) {
273
+ errors.push({ path: `${tPath}.to`, message: `transition references unknown step '${t.to}'` });
274
+ }
275
+ if (!t.condition || !validConditions.includes(t.condition)) {
276
+ errors.push({
277
+ path: `${tPath}.condition`,
278
+ message: `transition condition must be one of: ${validConditions.join(", ")}`,
279
+ });
280
+ }
281
+ }
282
+ // Validate retry_policy
283
+ if (workflow.retry_policy) {
284
+ const rp = workflow.retry_policy;
285
+ const rpPath = `${path}.retry_policy`;
286
+ if (rp.max_retries === undefined || rp.max_retries === null) {
287
+ errors.push({ path: `${rpPath}.max_retries`, message: "retry_policy requires 'max_retries'" });
288
+ }
289
+ else if (rp.max_retries < 0) {
290
+ errors.push({ path: `${rpPath}.max_retries`, message: "max_retries must be non-negative" });
291
+ }
292
+ if (rp.retry_from && !stepIds.has(rp.retry_from)) {
293
+ errors.push({
294
+ path: `${rpPath}.retry_from`,
295
+ message: `retry_from references unknown step '${rp.retry_from}'`,
296
+ });
297
+ }
298
+ const validBackoff = ["none", "linear", "exponential"];
299
+ if (rp.backoff && !validBackoff.includes(rp.backoff)) {
300
+ errors.push({
301
+ path: `${rpPath}.backoff`,
302
+ message: `backoff must be one of: ${validBackoff.join(", ")}`,
303
+ });
304
+ }
305
+ }
306
+ // Validate max_rounds
307
+ if (workflow.max_rounds !== undefined) {
308
+ if (workflow.max_rounds < 1) {
309
+ errors.push({ path: `${path}.max_rounds`, message: "max_rounds must be at least 1" });
310
+ }
311
+ }
312
+ return errors;
313
+ }
314
+ export function validateDNA(dna) {
315
+ const errors = [];
316
+ // Required top-level fields
317
+ if (!dna.version)
318
+ errors.push({ path: "version", message: "required" });
319
+ if (!dna.id)
320
+ errors.push({ path: "id", message: "required" });
321
+ if (!dna.name)
322
+ errors.push({ path: "name", message: "required" });
323
+ if (!dna.type)
324
+ errors.push({ path: "type", message: "required" });
325
+ const validTypes = ["species", "enterprise", "project", "personal", "context", "task"];
326
+ if (dna.type && !validTypes.includes(dna.type)) {
327
+ errors.push({ path: "type", message: `must be one of: ${validTypes.join(", ")}` });
328
+ }
329
+ // Validate genes
330
+ const geneNames = new Set(Object.keys(dna.genes ?? {}));
331
+ for (const [name, gene] of Object.entries(dna.genes ?? {})) {
332
+ errors.push(...validateGene(name, gene));
333
+ }
334
+ // Validate contexts
335
+ for (const [name, ctx] of Object.entries(dna.contexts ?? {})) {
336
+ errors.push(...validateContext(name, ctx, geneNames));
337
+ }
338
+ // Validate roles
339
+ for (const [name, role] of Object.entries(dna.roles ?? {})) {
340
+ errors.push(...validateRole(name, role, geneNames));
341
+ }
342
+ // Validate workflow / workflows (mutually exclusive)
343
+ if (dna.workflow !== undefined && dna.workflows !== undefined) {
344
+ errors.push({
345
+ path: "workflow/workflows",
346
+ message: "'workflow' and 'workflows' are mutually exclusive; use one or the other",
347
+ });
348
+ }
349
+ const roleNamesSet = new Set(Object.keys(dna.roles ?? {}));
350
+ if (dna.workflow && !dna.workflows) {
351
+ errors.push(...validateWorkflow(dna.workflow, roleNamesSet, "workflow"));
352
+ }
353
+ if (dna.workflows && !dna.workflow) {
354
+ for (const [wfName, wfDef] of Object.entries(dna.workflows)) {
355
+ errors.push(...validateWorkflow(wfDef, roleNamesSet, `workflows.${wfName}`));
356
+ }
357
+ }
358
+ // Validate epigenetic markers
359
+ for (let i = 0; i < (dna.epigenetic?.markers?.length ?? 0); i++) {
360
+ const marker = dna.epigenetic.markers[i];
361
+ if (marker.decay < 0 || marker.decay > 1) {
362
+ errors.push({
363
+ path: `epigenetic.markers[${i}].decay`,
364
+ message: `decay must be 0.0-1.0, got ${marker.decay}`,
365
+ });
366
+ }
367
+ }
368
+ // Validate cascade
369
+ if (!dna.cascade) {
370
+ errors.push({ path: "cascade", message: "required" });
371
+ }
372
+ else {
373
+ if (dna.cascade.priority < 0) {
374
+ errors.push({ path: "cascade.priority", message: "priority must be non-negative" });
375
+ }
376
+ }
377
+ return { valid: errors.length === 0, errors };
378
+ }
379
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/schema/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Intent DNA — Minimal YAML Parser
3
+ *
4
+ * Parses the YAML subset used by DNA templates and dna import output.
5
+ * Supports: scalars, arrays (inline and block), objects (indentation),
6
+ * comments, quoted strings. Does NOT support: anchors, aliases, tags,
7
+ * multi-line scalars (|, >), complex keys, merge keys.
8
+ *
9
+ * Zero external dependencies.
10
+ */
11
+ export declare function parseYAML(input: string): unknown;
12
+ //# sourceMappingURL=yaml-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-parser.d.ts","sourceRoot":"","sources":["../../src/schema/yaml-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAIhD"}