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,171 @@
1
+ /**
2
+ * dna init [--type personal|enterprise] [--name <name>] [--output <path>]
3
+ *
4
+ * Interactive wizard to generate a new DNA file.
5
+ */
6
+ import { writeFile, readFile, readdir } from "node:fs/promises";
7
+ import { resolve, dirname } from "node:path";
8
+ import { fileURLToPath } from "node:url";
9
+ import { validateDNA } from "../../schema/validate.js";
10
+ import { askString, askChoice, askNumber, askYesNo, closePrompt } from "../util/prompt.js";
11
+ const TEMPLATES_DIR = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..", "templates");
12
+ async function listTemplates() {
13
+ try {
14
+ const files = await readdir(TEMPLATES_DIR);
15
+ return files
16
+ .filter((f) => f.endsWith(".dna.yaml"))
17
+ .map((f) => f.replace(".dna.yaml", ""));
18
+ }
19
+ catch {
20
+ return [];
21
+ }
22
+ }
23
+ export async function runInit(opts) {
24
+ // Template mode: copy a pre-built template
25
+ if (opts.template) {
26
+ const templates = await listTemplates();
27
+ if (opts.template === "list") {
28
+ process.stderr.write("Available templates:\n");
29
+ for (const t of templates) {
30
+ process.stderr.write(` ${t}\n`);
31
+ }
32
+ return 0;
33
+ }
34
+ if (!templates.includes(opts.template)) {
35
+ process.stderr.write(`Unknown template: ${opts.template}\n`);
36
+ process.stderr.write(`Available: ${templates.join(", ")}\n`);
37
+ return 2;
38
+ }
39
+ const srcPath = resolve(TEMPLATES_DIR, `${opts.template}.dna.yaml`);
40
+ const content = await readFile(srcPath, "utf-8");
41
+ const outPath = opts.output || ".dna.yaml";
42
+ await writeFile(outPath, content, "utf-8");
43
+ process.stderr.write(`Created ${outPath} from template '${opts.template}'\n`);
44
+ return 0;
45
+ }
46
+ try {
47
+ const name = opts.name || await askString("DNA name", "My DNA");
48
+ const type = (opts.type || await askChoice("DNA type", ["personal", "enterprise"], "personal"));
49
+ // Privacy preference
50
+ const privacyLevel = await askChoice("Privacy preference", ["high", "medium", "low"], "high");
51
+ // Quality vs speed
52
+ const qualityRatio = await askNumber("Quality vs speed (0-100, higher = more quality)", 70);
53
+ // Cost consciousness
54
+ const costConscious = await askYesNo("Are you cost-conscious?", true);
55
+ // Tools to avoid
56
+ const avoidToolsRaw = await askString("Tools/patterns to avoid (comma-separated, or empty)");
57
+ const avoidTools = avoidToolsRaw ? avoidToolsRaw.split(",").map(s => s.trim()).filter(Boolean) : [];
58
+ // Primary use case
59
+ const useCase = await askChoice("Primary use case", [
60
+ "software-development",
61
+ "research",
62
+ "writing",
63
+ "data-analysis",
64
+ "general",
65
+ ], "general");
66
+ closePrompt();
67
+ // Build DNA
68
+ const genes = {};
69
+ // Privacy gene
70
+ const privacyCodons = [
71
+ { type: "repel", target: "data_sharing_external" },
72
+ { type: "attract", target: "local_processing" },
73
+ ];
74
+ if (privacyLevel === "high") {
75
+ privacyCodons.push({ type: "threshold", condition: "personal_data_exposure == false" });
76
+ privacyCodons.push({ type: "weight", a: "privacy", b: "convenience", ratio: 0.85 });
77
+ privacyCodons.push({ type: "sense", signal: "data_request", response: "verify_before_share" });
78
+ }
79
+ else if (privacyLevel === "medium") {
80
+ privacyCodons.push({ type: "weight", a: "privacy", b: "convenience", ratio: 0.6 });
81
+ privacyCodons.push({ type: "sense", signal: "data_request", response: "warn" });
82
+ }
83
+ else {
84
+ privacyCodons.push({ type: "weight", a: "privacy", b: "convenience", ratio: 0.3 });
85
+ }
86
+ genes.privacy = { description: "Protect personal data and control sharing", codons: privacyCodons, tags: ["security", "data"] };
87
+ // Quality gene
88
+ const ratio = Math.max(0, Math.min(100, qualityRatio)) / 100;
89
+ genes.quality_preference = {
90
+ description: ratio >= 0.6 ? "Prefer thoroughness over speed" : "Prefer speed over thoroughness",
91
+ codons: [
92
+ { type: "attract", target: ratio >= 0.6 ? "comprehensive_analysis" : "quick_results" },
93
+ { type: "weight", a: "quality", b: "speed", ratio },
94
+ { type: "sense", signal: "incomplete_result", response: ratio >= 0.7 ? "retry_with_more_depth" : "warn" },
95
+ ],
96
+ tags: ["work-style"],
97
+ };
98
+ // Cost gene
99
+ if (costConscious) {
100
+ genes.frugality = {
101
+ description: "Control costs, prefer free or cheap options when quality is comparable",
102
+ codons: [
103
+ { type: "attract", target: "cost_efficiency" },
104
+ { type: "repel", target: "premium_when_free_exists" },
105
+ { type: "sense", signal: "payment_required", response: "compare_alternatives" },
106
+ ],
107
+ tags: ["budget"],
108
+ };
109
+ }
110
+ // Tool avoidance
111
+ for (const tool of avoidTools) {
112
+ const geneName = `avoid_${tool.replace(/[^a-zA-Z0-9_]/g, "_")}`;
113
+ genes[geneName] = {
114
+ description: `Avoid using ${tool}`,
115
+ codons: [{ type: "repel", target: tool }],
116
+ tags: ["tools"],
117
+ };
118
+ }
119
+ // Use-case gene
120
+ if (useCase !== "general") {
121
+ genes.use_case = {
122
+ description: `Optimized for ${useCase.replace(/-/g, " ")}`,
123
+ codons: [
124
+ { type: "attract", target: `${useCase}_patterns` },
125
+ { type: "attract", target: `${useCase}_best_practices` },
126
+ ],
127
+ tags: ["use-case"],
128
+ };
129
+ }
130
+ const id = `dna_${name.toLowerCase().replace(/[^a-z0-9]+/g, "_")}_${type}`;
131
+ const now = new Date().toISOString();
132
+ const dna = {
133
+ $schema: "https://intentdna.dev/schema/v0.1.json",
134
+ version: "0.1.0",
135
+ id,
136
+ name,
137
+ type,
138
+ genes,
139
+ contexts: {},
140
+ epigenetic: { markers: [] },
141
+ cascade: {
142
+ inherits: ["species:default"],
143
+ priority: type === "enterprise" ? 50 : 100,
144
+ },
145
+ metadata: {
146
+ created: now,
147
+ updated: now,
148
+ experience_hours: 0,
149
+ gene_count: Object.keys(genes).length,
150
+ epigenetic_marker_count: 0,
151
+ },
152
+ };
153
+ const result = validateDNA(dna);
154
+ if (!result.valid) {
155
+ const msgs = result.errors.map(e => ` ${e.path}: ${e.message}`).join("\n");
156
+ process.stderr.write(`Generated DNA failed validation:\n${msgs}\n`);
157
+ return 1;
158
+ }
159
+ const output = JSON.stringify(dna, null, 2) + "\n";
160
+ const outPath = opts.output || `${id}.json`;
161
+ await writeFile(outPath, output, "utf-8");
162
+ process.stderr.write(`Created ${outPath}\n`);
163
+ return 0;
164
+ }
165
+ catch (err) {
166
+ closePrompt();
167
+ process.stderr.write(`Error: ${err instanceof Error ? err.message : String(err)}\n`);
168
+ return 1;
169
+ }
170
+ }
171
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Intent DNA — dna run command
3
+ *
4
+ * TypeScript runtime execution of workflows.
5
+ * Loads DNA → compiles → auto-syncs agents/hooks → executes steps
6
+ * via `claude -p --agent` child processes.
7
+ */
8
+ import type { WorkflowStep, ParallelGroup, TransitionRule } from "../../schema/types.js";
9
+ export interface RunOptions {
10
+ dnaFiles: string[];
11
+ workflowName: string;
12
+ taskId: string;
13
+ context?: string;
14
+ vars?: Record<string, string>;
15
+ dryRun?: boolean;
16
+ maxBudget?: number;
17
+ logDir?: string;
18
+ permissionMode?: string;
19
+ agentsDir?: string;
20
+ hooksDir?: string;
21
+ }
22
+ export interface StepResult {
23
+ stepId: string;
24
+ status: "pass" | "fail" | "skipped";
25
+ durationMs: number;
26
+ resultFile?: string;
27
+ }
28
+ interface StepExecOptions {
29
+ agentPrefix: string;
30
+ maxBudget: number;
31
+ permissionMode: string;
32
+ logDir: string;
33
+ }
34
+ /**
35
+ * Replace {{var}} placeholders in a template string.
36
+ * Unmatched placeholders are preserved as-is.
37
+ */
38
+ export declare function substituteTemplate(template: string, vars: Record<string, string>): string;
39
+ /**
40
+ * Evaluate a run_if condition against the current round.
41
+ * Returns true if the step should execute.
42
+ */
43
+ export declare function evaluateRunIf(condition: string | null, round: number): boolean;
44
+ /**
45
+ * Execute a single workflow step via `claude -p --agent`.
46
+ * Returns StepResult with pass/fail status.
47
+ */
48
+ export declare function executeStep(step: WorkflowStep, vars: Record<string, string>, opts: StepExecOptions): Promise<StepResult>;
49
+ /**
50
+ * Execute a parallel group of steps.
51
+ */
52
+ export declare function executeGroup(group: ParallelGroup, allSteps: WorkflowStep[], round: number, vars: Record<string, string>, opts: StepExecOptions): Promise<StepResult[]>;
53
+ /**
54
+ * Check if any transition requires retry.
55
+ */
56
+ export declare function checkRetryNeeded(stepResults: Map<string, StepResult>, transitions: TransitionRule[]): boolean;
57
+ export declare function runRun(opts: RunOptions): Promise<number>;
58
+ export {};
59
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EACV,YAAY,EAEZ,aAAa,EACb,cAAc,EACf,MAAM,uBAAuB,CAAC;AAa/B,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,MAAM,CAIR;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,EAAE,MAAM,GACZ,OAAO,CAoBT;AAID;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,UAAU,CAAC,CA6CrB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,UAAU,EAAE,CAAC,CAuCvB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,WAAW,EAAE,cAAc,EAAE,GAC5B,OAAO,CAUT;AAmDD,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAsJ9D"}
@@ -0,0 +1,350 @@
1
+ /**
2
+ * Intent DNA — dna run command
3
+ *
4
+ * TypeScript runtime execution of workflows.
5
+ * Loads DNA → compiles → auto-syncs agents/hooks → executes steps
6
+ * via `claude -p --agent` child processes.
7
+ */
8
+ import { spawn } from "node:child_process";
9
+ import { mkdir, writeFile } from "node:fs/promises";
10
+ import { join } from "node:path";
11
+ import { randomUUID } from "node:crypto";
12
+ import { loadDNA, compileFromFiles } from "../../compiler/index.js";
13
+ import { cascadeDNA } from "../../compiler/cascade.js";
14
+ import { compileWorkflow } from "../../compiler/workflow.js";
15
+ import { compileAllRolesToAgentMD, writeAgentMDFiles, toKebabCase, } from "../../runtime/agent-md.js";
16
+ import { compileToHooks, writeHookScripts } from "../../runtime/hooks.js";
17
+ // ── Template & Condition Helpers ───────────────────────────
18
+ /**
19
+ * Replace {{var}} placeholders in a template string.
20
+ * Unmatched placeholders are preserved as-is.
21
+ */
22
+ export function substituteTemplate(template, vars) {
23
+ return template.replace(/\{\{(\w+)\}\}/g, (match, key) => {
24
+ return key in vars ? vars[key] : match;
25
+ });
26
+ }
27
+ /**
28
+ * Evaluate a run_if condition against the current round.
29
+ * Returns true if the step should execute.
30
+ */
31
+ export function evaluateRunIf(condition, round) {
32
+ if (condition === null)
33
+ return true;
34
+ // "round == N"
35
+ const eqMatch = condition.match(/^round\s*==\s*(\d+)$/);
36
+ if (eqMatch)
37
+ return round === parseInt(eqMatch[1], 10);
38
+ // "round > N"
39
+ const gtMatch = condition.match(/^round\s*>\s*(\d+)$/);
40
+ if (gtMatch)
41
+ return round > parseInt(gtMatch[1], 10);
42
+ // "round >= N"
43
+ const geMatch = condition.match(/^round\s*>=\s*(\d+)$/);
44
+ if (geMatch)
45
+ return round >= parseInt(geMatch[1], 10);
46
+ // "retry" = round > 1
47
+ if (condition === "retry")
48
+ return round > 1;
49
+ // "always" or unknown → run
50
+ return true;
51
+ }
52
+ // ── Step Execution ─────────────────────────────────────────
53
+ /**
54
+ * Execute a single workflow step via `claude -p --agent`.
55
+ * Returns StepResult with pass/fail status.
56
+ */
57
+ export async function executeStep(step, vars, opts) {
58
+ const start = Date.now();
59
+ const prompt = substituteTemplate(step.prompt ?? step.description, vars);
60
+ const agentName = `${opts.agentPrefix}${toKebabCase(step.role)}`;
61
+ const sessionId = randomUUID();
62
+ const resultFile = join(opts.logDir, `${step.id}-result.json`);
63
+ const args = [
64
+ "-p",
65
+ "--agent",
66
+ agentName,
67
+ "--output-format",
68
+ "json",
69
+ "--max-budget-usd",
70
+ String(opts.maxBudget),
71
+ "--permission-mode",
72
+ opts.permissionMode,
73
+ "--session-id",
74
+ sessionId,
75
+ "--no-session-persistence",
76
+ ];
77
+ log(`Running step: ${step.id} (agent: ${agentName})`);
78
+ try {
79
+ const output = await spawnAsync("claude", args, prompt);
80
+ await writeFile(resultFile, output, "utf-8");
81
+ // Check for error in JSON output
82
+ let isError = false;
83
+ try {
84
+ const parsed = JSON.parse(output);
85
+ isError = parsed.is_error === true;
86
+ }
87
+ catch {
88
+ // Non-JSON output → treat as success
89
+ }
90
+ const status = isError ? "fail" : "pass";
91
+ log(`Step ${step.id} ${status.toUpperCase()} (${Date.now() - start}ms)`);
92
+ return { stepId: step.id, status, durationMs: Date.now() - start, resultFile };
93
+ }
94
+ catch {
95
+ log(`Step ${step.id} FAIL (process error, ${Date.now() - start}ms)`);
96
+ return { stepId: step.id, status: "fail", durationMs: Date.now() - start };
97
+ }
98
+ }
99
+ /**
100
+ * Execute a parallel group of steps.
101
+ */
102
+ export async function executeGroup(group, allSteps, round, vars, opts) {
103
+ const steps = group.step_ids
104
+ .map((id) => allSteps.find((s) => s.id === id))
105
+ .filter(Boolean);
106
+ const results = [];
107
+ for (const step of steps) {
108
+ // Evaluate run_if condition
109
+ if (!evaluateRunIf(step.run_if, round)) {
110
+ log(`Skipping step: ${step.id} (run_if: ${step.run_if}, round: ${round})`);
111
+ results.push({ stepId: step.id, status: "skipped", durationMs: 0 });
112
+ continue;
113
+ }
114
+ // Collect for execution
115
+ results.push(step); // placeholder, replaced below
116
+ }
117
+ // Filter executable steps
118
+ const executable = steps.filter((s) => evaluateRunIf(s.run_if, round));
119
+ if (executable.length === 0)
120
+ return results.filter((r) => r.status === "skipped");
121
+ // Single step: sequential
122
+ if (executable.length === 1) {
123
+ const result = await executeStep(executable[0], vars, opts);
124
+ const skipped = results.filter((r) => r.status === "skipped");
125
+ return [...skipped, result];
126
+ }
127
+ // Multiple steps: parallel
128
+ log(`Running ${executable.length} steps in parallel`);
129
+ const parallelResults = await Promise.all(executable.map((step) => executeStep(step, vars, opts)));
130
+ const skipped = results.filter((r) => r.status === "skipped");
131
+ return [...skipped, ...parallelResults];
132
+ }
133
+ /**
134
+ * Check if any transition requires retry.
135
+ */
136
+ export function checkRetryNeeded(stepResults, transitions) {
137
+ for (const t of transitions) {
138
+ if (t.condition === "fail") {
139
+ const result = stepResults.get(t.from);
140
+ if (result && result.status === "fail") {
141
+ return true;
142
+ }
143
+ }
144
+ }
145
+ return false;
146
+ }
147
+ // ── Spawn Helper ───────────────────────────────────────────
148
+ function spawnAsync(command, args, stdinData) {
149
+ return new Promise((resolve, reject) => {
150
+ const child = spawn(command, args, {
151
+ stdio: ["pipe", "pipe", "pipe"],
152
+ });
153
+ let stdout = "";
154
+ let stderr = "";
155
+ child.stdout.on("data", (data) => {
156
+ stdout += data.toString();
157
+ });
158
+ child.stderr.on("data", (data) => {
159
+ stderr += data.toString();
160
+ // Stream stderr in real-time
161
+ process.stderr.write(data);
162
+ });
163
+ child.on("error", reject);
164
+ child.on("close", (code) => {
165
+ if (code !== 0 && stdout === "") {
166
+ reject(new Error(`claude exited with code ${code}: ${stderr}`));
167
+ }
168
+ else {
169
+ resolve(stdout);
170
+ }
171
+ });
172
+ child.stdin.write(stdinData);
173
+ child.stdin.end();
174
+ });
175
+ }
176
+ // ── Logging ────────────────────────────────────────────────
177
+ function log(msg) {
178
+ const ts = new Date().toLocaleTimeString("en-US", { hour12: false });
179
+ process.stderr.write(`[${ts}] ${msg}\n`);
180
+ }
181
+ // ── Main Entry ─────────────────────────────────────────────
182
+ export async function runRun(opts) {
183
+ // Validate required inputs
184
+ if (opts.dnaFiles.length === 0) {
185
+ process.stderr.write("Error: --dna requires at least one DNA file\n");
186
+ return 2;
187
+ }
188
+ if (!opts.workflowName) {
189
+ process.stderr.write("Error: --workflow is required\n");
190
+ return 2;
191
+ }
192
+ if (!opts.taskId) {
193
+ process.stderr.write("Error: --task is required\n");
194
+ return 2;
195
+ }
196
+ const maxBudget = opts.maxBudget ?? 5;
197
+ const permissionMode = opts.permissionMode ?? "bypassPermissions";
198
+ const agentsDir = opts.agentsDir ?? ".claude/agents";
199
+ const hooksDir = opts.hooksDir ?? ".claude/hooks";
200
+ try {
201
+ // ── Step 1: Load & compile DNA ───────────────────────
202
+ log("Loading DNA files...");
203
+ const dnas = await Promise.all(opts.dnaFiles.map(loadDNA));
204
+ const cascaded = cascadeDNA(dnas);
205
+ const ir = await compileFromFiles(opts.dnaFiles, {
206
+ context: opts.context,
207
+ });
208
+ // ── Step 2: Find & compile workflow ──────────────────
209
+ const wfDef = cascaded.workflows[opts.workflowName];
210
+ if (!wfDef) {
211
+ process.stderr.write(`Error: Workflow '${opts.workflowName}' not found. Available: ${Object.keys(cascaded.workflows).join(", ") || "(none)"}\n`);
212
+ return 1;
213
+ }
214
+ const wfResult = compileWorkflow(wfDef);
215
+ if (!wfResult.ok) {
216
+ process.stderr.write(`Error: Workflow compilation failed:\n`);
217
+ for (const err of wfResult.errors) {
218
+ process.stderr.write(` ${err.path}: ${err.message}\n`);
219
+ }
220
+ return 1;
221
+ }
222
+ const plan = wfResult.plan;
223
+ log(`Compiled workflow: ${plan.name} (${plan.steps.length} steps, ${plan.parallel_groups.length} groups)`);
224
+ // ── Step 3: Build template variables ─────────────────
225
+ const vars = {
226
+ task_id: opts.taskId,
227
+ workflow: opts.workflowName,
228
+ ...(opts.vars ?? {}),
229
+ };
230
+ // ── Dry-run mode ─────────────────────────────────────
231
+ if (opts.dryRun) {
232
+ return printDryRun(plan, vars);
233
+ }
234
+ // ── Step 4: Auto-sync agents & hooks ─────────────────
235
+ log("Syncing agents and hooks...");
236
+ const agentResults = compileAllRolesToAgentMD(cascaded.roles, ir);
237
+ await writeAgentMDFiles(agentResults, agentsDir);
238
+ log(`Generated ${agentResults.length} agent file(s) in ${agentsDir}`);
239
+ const hookScripts = compileToHooks(ir);
240
+ await writeHookScripts(hooksDir, hookScripts);
241
+ log(`Generated hook scripts in ${hooksDir}`);
242
+ // ── Step 5: Prepare log directory ────────────────────
243
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
244
+ const logDir = opts.logDir ?? join(".intentdna", "runs", `${opts.workflowName}-${timestamp}`);
245
+ await mkdir(logDir, { recursive: true });
246
+ const execOpts = {
247
+ agentPrefix: "dna-",
248
+ maxBudget,
249
+ permissionMode,
250
+ logDir,
251
+ };
252
+ // ── Step 6: Execute workflow ──────────────────────────
253
+ const maxRetries = plan.retry.max_retries;
254
+ const allTransitions = [...plan.transitions, ...plan.default_transitions];
255
+ const stepResults = new Map();
256
+ let round = 1;
257
+ while (round <= maxRetries + 1) {
258
+ log(`\n=== Round ${round}/${maxRetries + 1} ===`);
259
+ // Update round variable for templates
260
+ const roundVars = { ...vars, round: String(round) };
261
+ for (const group of plan.parallel_groups) {
262
+ const groupResults = await executeGroup(group, plan.steps, round, roundVars, execOpts);
263
+ // Store results
264
+ for (const result of groupResults) {
265
+ stepResults.set(result.stepId, result);
266
+ }
267
+ // Check for non-optional step failure (abort group execution)
268
+ for (const result of groupResults) {
269
+ if (result.status === "fail") {
270
+ const step = plan.steps.find((s) => s.id === result.stepId);
271
+ if (step && !step.optional) {
272
+ // Check if there's a fail transition for this step
273
+ const hasFailTransition = allTransitions.some((t) => t.from === result.stepId && t.condition === "fail");
274
+ if (!hasFailTransition) {
275
+ log(`Non-optional step '${result.stepId}' failed with no fail transition — aborting`);
276
+ return printSummary(stepResults, round, logDir, 1);
277
+ }
278
+ }
279
+ }
280
+ }
281
+ }
282
+ // Check if retry needed
283
+ if (checkRetryNeeded(stepResults, allTransitions)) {
284
+ if (round >= maxRetries + 1) {
285
+ log(`Max retries (${maxRetries}) exhausted`);
286
+ return printSummary(stepResults, round, logDir, 1);
287
+ }
288
+ log("Retry triggered by fail transition");
289
+ round++;
290
+ continue;
291
+ }
292
+ // All passed
293
+ break;
294
+ }
295
+ return printSummary(stepResults, round, logDir, 0);
296
+ }
297
+ catch (err) {
298
+ process.stderr.write(`Fatal: ${err instanceof Error ? err.message : String(err)}\n`);
299
+ return 1;
300
+ }
301
+ }
302
+ // ── Output Helpers ─────────────────────────────────────────
303
+ function printDryRun(plan, vars) {
304
+ process.stderr.write("\n=== DRY RUN — Execution Plan ===\n\n");
305
+ process.stderr.write(`Workflow: ${plan.name}\n`);
306
+ process.stderr.write(`Steps: ${plan.steps.length}\n`);
307
+ process.stderr.write(`Groups: ${plan.parallel_groups.length}\n`);
308
+ process.stderr.write(`Max retries: ${plan.retry.max_retries}\n`);
309
+ if (plan.retry.retry_from) {
310
+ process.stderr.write(`Retry from: ${plan.retry.retry_from}\n`);
311
+ }
312
+ process.stderr.write(`Variables: ${JSON.stringify(vars)}\n`);
313
+ process.stderr.write("\nExecution order:\n");
314
+ for (const group of plan.parallel_groups) {
315
+ const parallel = group.step_ids.length > 1 ? " (parallel)" : "";
316
+ process.stderr.write(`\n Group ${group.group_index + 1}${parallel}:\n`);
317
+ for (const stepId of group.step_ids) {
318
+ const step = plan.steps.find((s) => s.id === stepId);
319
+ const prompt = substituteTemplate(step.prompt ?? step.description, vars);
320
+ const runIf = step.run_if ? ` [run_if: ${step.run_if}]` : "";
321
+ const optional = step.optional ? " (optional)" : "";
322
+ process.stderr.write(` - ${step.id} → agent: dna-${toKebabCase(step.role)}${runIf}${optional}\n`);
323
+ process.stderr.write(` prompt: ${prompt.slice(0, 120)}${prompt.length > 120 ? "..." : ""}\n`);
324
+ }
325
+ }
326
+ if (plan.transitions.length > 0) {
327
+ process.stderr.write("\nTransitions:\n");
328
+ for (const t of plan.transitions) {
329
+ process.stderr.write(` ${t.from} → ${t.to} (on ${t.condition})\n`);
330
+ }
331
+ }
332
+ process.stderr.write("\n");
333
+ return 0;
334
+ }
335
+ function printSummary(results, rounds, logDir, exitCode) {
336
+ process.stderr.write("\n=== Workflow Summary ===\n");
337
+ process.stderr.write(`Rounds executed: ${rounds}\n`);
338
+ process.stderr.write(`Log directory: ${logDir}\n\n`);
339
+ for (const [stepId, result] of results) {
340
+ const icon = result.status === "pass" ? "PASS" : result.status === "fail" ? "FAIL" : "SKIP";
341
+ const duration = result.durationMs > 0 ? ` (${(result.durationMs / 1000).toFixed(1)}s)` : "";
342
+ process.stderr.write(` [${icon}] ${stepId}${duration}\n`);
343
+ }
344
+ const passed = [...results.values()].filter((r) => r.status === "pass").length;
345
+ const failed = [...results.values()].filter((r) => r.status === "fail").length;
346
+ const skipped = [...results.values()].filter((r) => r.status === "skipped").length;
347
+ process.stderr.write(`\nTotal: ${passed} passed, ${failed} failed, ${skipped} skipped\n`);
348
+ return exitCode;
349
+ }
350
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * dna show <files...> [--context <name>] [--json]
3
+ *
4
+ * Show DNA gene expression state in human-readable format.
5
+ */
6
+ export interface ShowOptions {
7
+ files: string[];
8
+ context?: string;
9
+ json: boolean;
10
+ }
11
+ export declare function runShow(opts: ShowOptions): Promise<number>;
12
+ //# sourceMappingURL=show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/show.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAqCD,wBAAsB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAqChE"}