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,257 @@
1
+ /**
2
+ * Intent DNA — Agent MD Adapter
3
+ *
4
+ * Compiles RoleDef definitions into Claude Code agent markdown files.
5
+ * Each role produces a .md file with YAML frontmatter (name, tools,
6
+ * disallowedTools, model) and a markdown body containing role description,
7
+ * scope rules, and DNA behavioral guidelines.
8
+ *
9
+ * Output directory: .claude/agents/<name>.md
10
+ */
11
+ import { mkdir, writeFile, readFile, readdir, rm } from "node:fs/promises";
12
+ import { join } from "node:path";
13
+ const SENTINEL_COMMENT = "<!-- intentdna:managed — do not edit manually -->";
14
+ // ── Helpers ────────────────────────────────────────────────
15
+ /**
16
+ * Convert camelCase or snake_case to kebab-case.
17
+ */
18
+ export function toKebabCase(name) {
19
+ return name
20
+ // Insert hyphen before uppercase letters (camelCase → camel-Case)
21
+ .replace(/([a-z0-9])([A-Z])/g, "$1-$2")
22
+ // Replace underscores with hyphens (snake_case → snake-case)
23
+ .replace(/_/g, "-")
24
+ .toLowerCase();
25
+ }
26
+ /**
27
+ * Render YAML frontmatter string (without --- delimiters).
28
+ */
29
+ function renderFrontmatter(name, role, options) {
30
+ const prefix = options?.namePrefix ?? "dna-";
31
+ const fullName = `${prefix}${toKebabCase(name)}`;
32
+ const lines = [];
33
+ lines.push(`name: ${fullName}`);
34
+ lines.push(`description: "${escapeYamlString(role.description)}"`);
35
+ if (role.tool_permissions?.allow && role.tool_permissions.allow.length > 0) {
36
+ lines.push(`tools: ${role.tool_permissions.allow.join(", ")}`);
37
+ }
38
+ if (role.tool_permissions?.deny && role.tool_permissions.deny.length > 0) {
39
+ lines.push(`disallowedTools: ${role.tool_permissions.deny.join(", ")}`);
40
+ }
41
+ if (role.model) {
42
+ lines.push(`model: ${role.model}`);
43
+ }
44
+ return lines.join("\n");
45
+ }
46
+ /**
47
+ * Escape special characters in YAML string values.
48
+ */
49
+ function escapeYamlString(s) {
50
+ return s.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
51
+ }
52
+ /**
53
+ * Render scope section if scope is defined.
54
+ */
55
+ function renderScope(scope) {
56
+ const lines = [];
57
+ lines.push("## Scope\n");
58
+ if (scope.read && scope.read.length > 0) {
59
+ lines.push(`- Read: ${scope.read.join(", ")}`);
60
+ }
61
+ if (scope.write && scope.write.length > 0) {
62
+ lines.push(`- Write: ${scope.write.join(", ")}`);
63
+ }
64
+ return lines.join("\n");
65
+ }
66
+ /**
67
+ * Render behavioral guidelines from ConstraintIR prompt_directives.
68
+ */
69
+ function renderGuidelines(ir) {
70
+ if (ir.prompt_directives.length === 0)
71
+ return "";
72
+ const lines = [];
73
+ lines.push("## Behavioral Guidelines\n");
74
+ // Group by priority
75
+ const high = ir.prompt_directives.filter((d) => d.priority === "high");
76
+ const medium = ir.prompt_directives.filter((d) => d.priority === "medium");
77
+ const low = ir.prompt_directives.filter((d) => d.priority === "low");
78
+ if (high.length > 0) {
79
+ lines.push("### Critical");
80
+ for (const d of high) {
81
+ lines.push(`- **${d.text}**`);
82
+ }
83
+ lines.push("");
84
+ }
85
+ if (medium.length > 0) {
86
+ lines.push("### Standard");
87
+ for (const d of medium) {
88
+ lines.push(`- ${d.text}`);
89
+ }
90
+ lines.push("");
91
+ }
92
+ if (low.length > 0) {
93
+ lines.push("### Preferences");
94
+ for (const d of low) {
95
+ lines.push(`- ${d.text}`);
96
+ }
97
+ lines.push("");
98
+ }
99
+ return lines.join("\n").trimEnd();
100
+ }
101
+ /**
102
+ * Render instructions section as a numbered list.
103
+ */
104
+ function renderInstructions(instructions) {
105
+ const lines = [];
106
+ lines.push("## Instructions\n");
107
+ for (let i = 0; i < instructions.length; i++) {
108
+ lines.push(`${i + 1}. ${instructions[i]}`);
109
+ }
110
+ return lines.join("\n");
111
+ }
112
+ /**
113
+ * Render output schema section.
114
+ */
115
+ function renderOutputSchema(schema) {
116
+ const lines = [];
117
+ lines.push("## Output Format\n");
118
+ if (schema.path) {
119
+ lines.push(`- Output path: \`${schema.path}\``);
120
+ }
121
+ if (schema.format && schema.format !== "markdown") {
122
+ lines.push(`- Final format: ${schema.format}`);
123
+ }
124
+ if (schema.required_sections && schema.required_sections.length > 0) {
125
+ lines.push("");
126
+ lines.push("Required sections:");
127
+ for (const section of schema.required_sections) {
128
+ lines.push(`- \`## ${section}\``);
129
+ }
130
+ }
131
+ return lines.join("\n");
132
+ }
133
+ /**
134
+ * Render post checks section.
135
+ */
136
+ function renderPostChecks(checks) {
137
+ const lines = [];
138
+ lines.push("## Post Checks\n");
139
+ for (const check of checks) {
140
+ lines.push(`- ${check}`);
141
+ }
142
+ return lines.join("\n");
143
+ }
144
+ /**
145
+ * Render the full markdown body.
146
+ */
147
+ function renderBody(name, role, ir, options) {
148
+ const prefix = options?.namePrefix ?? "dna-";
149
+ const fullName = `${prefix}${toKebabCase(name)}`;
150
+ const compiledAt = new Date().toISOString();
151
+ const includeDNA = options?.includeDNAGuidelines ?? true;
152
+ const sections = [];
153
+ // Sentinel + metadata
154
+ sections.push(SENTINEL_COMMENT);
155
+ sections.push(`<!-- Compiled: ${compiledAt} -->`);
156
+ sections.push("");
157
+ // Title + description
158
+ sections.push(`# ${fullName}`);
159
+ sections.push("");
160
+ sections.push(role.description);
161
+ // Instructions
162
+ if (role.instructions && role.instructions.length > 0) {
163
+ sections.push("");
164
+ sections.push(renderInstructions(role.instructions));
165
+ }
166
+ // Scope
167
+ if (role.scope) {
168
+ sections.push("");
169
+ sections.push(renderScope(role.scope));
170
+ }
171
+ // Behavioral guidelines from IR
172
+ if (includeDNA && ir && ir.prompt_directives.length > 0) {
173
+ sections.push("");
174
+ sections.push(renderGuidelines(ir));
175
+ }
176
+ // Output format
177
+ if (role.output_schema && typeof role.output_schema !== "string") {
178
+ sections.push("");
179
+ sections.push(renderOutputSchema(role.output_schema));
180
+ }
181
+ // Post checks
182
+ if (role.post_checks && role.post_checks.length > 0) {
183
+ sections.push("");
184
+ sections.push(renderPostChecks(role.post_checks));
185
+ }
186
+ return sections.join("\n") + "\n";
187
+ }
188
+ // ── Core Functions ─────────────────────────────────────────
189
+ /**
190
+ * Compile a single RoleDef into an agent MD file.
191
+ * Pure function, no side effects.
192
+ */
193
+ export function compileRoleToAgentMD(roleName, role, ir, options) {
194
+ const prefix = options?.namePrefix ?? "dna-";
195
+ const kebabName = toKebabCase(roleName);
196
+ const fileName = `${prefix}${kebabName}.md`;
197
+ const frontmatter = renderFrontmatter(roleName, role, options);
198
+ const body = renderBody(roleName, role, ir, options);
199
+ const content = `---\n${frontmatter}\n---\n\n${body}`;
200
+ return { roleName, fileName, content };
201
+ }
202
+ /**
203
+ * Compile all roles from IntentDNA into agent MD files.
204
+ * Returns compilation results for each role.
205
+ */
206
+ export function compileAllRolesToAgentMD(roles, ir, options) {
207
+ return Object.entries(roles).map(([name, role]) => compileRoleToAgentMD(name, role, ir, options));
208
+ }
209
+ // ── File Operations ────────────────────────────────────────
210
+ /**
211
+ * Write agent MD results to the file system.
212
+ * Creates the output directory if it doesn't exist.
213
+ * Returns list of written file paths.
214
+ */
215
+ export async function writeAgentMDFiles(results, outputDir) {
216
+ await mkdir(outputDir, { recursive: true });
217
+ const written = [];
218
+ for (const result of results) {
219
+ const path = join(outputDir, result.fileName);
220
+ await writeFile(path, result.content, "utf-8");
221
+ written.push(path);
222
+ }
223
+ return written;
224
+ }
225
+ /**
226
+ * Remove Intent DNA generated agent MD files from a directory.
227
+ * Only removes files that contain the sentinel comment.
228
+ * Returns number of files removed.
229
+ */
230
+ export async function removeAgentMDFiles(outputDir) {
231
+ let entries;
232
+ try {
233
+ entries = await readdir(outputDir);
234
+ }
235
+ catch {
236
+ // Directory doesn't exist
237
+ return 0;
238
+ }
239
+ let removed = 0;
240
+ for (const entry of entries) {
241
+ if (!entry.endsWith(".md"))
242
+ continue;
243
+ const path = join(outputDir, entry);
244
+ try {
245
+ const content = await readFile(path, "utf-8");
246
+ if (content.includes(SENTINEL_COMMENT)) {
247
+ await rm(path);
248
+ removed++;
249
+ }
250
+ }
251
+ catch {
252
+ // Skip files that can't be read
253
+ }
254
+ }
255
+ return removed;
256
+ }
257
+ //# sourceMappingURL=agent-md.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-md.js","sourceRoot":"","sources":["../../src/runtime/agent-md.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Intent DNA — Claude Agent SDK Adapter
3
+ *
4
+ * Compiles Constraint IR into ClaudeAgentOptions-compatible configuration:
5
+ * prompt_directives → system_prompt
6
+ * tool_filters → allowed_tools filtering
7
+ * pre_execution_gates → PreToolUse hooks
8
+ * post_execution_validators → PostToolUse hooks
9
+ * context_injections → UserPromptSubmit hook
10
+ */
11
+ import type { ConstraintIR } from "../schema/types.js";
12
+ export interface DNAHookOutput {
13
+ hookSpecificOutput?: {
14
+ hookEventName: string;
15
+ permissionDecision?: "allow" | "deny" | "ask";
16
+ permissionDecisionReason?: string;
17
+ };
18
+ systemMessage?: string;
19
+ }
20
+ export interface ClaudeDNAConfig {
21
+ /** DNA-generated system prompt addition */
22
+ system_prompt_addition: string;
23
+ /** PreToolUse hook function source (serializable logic) */
24
+ pre_tool_rules: PreToolRule[];
25
+ /** PostToolUse hook function source (serializable logic) */
26
+ post_tool_rules: PostToolRule[];
27
+ /** Context to inject via UserPromptSubmit */
28
+ context_additions: string[];
29
+ /** Tool names/patterns to deprioritize in descriptions */
30
+ deprioritized_tools: string[];
31
+ /** Source DNA IDs for tracing */
32
+ source_dna_ids: string[];
33
+ /** Compilation timestamp */
34
+ compiled_at: string;
35
+ }
36
+ export interface PreToolRule {
37
+ condition: string;
38
+ action: "block" | "escalate" | "warn";
39
+ message: string;
40
+ source_gene: string;
41
+ }
42
+ export interface PostToolRule {
43
+ check: string;
44
+ threshold?: number;
45
+ source_gene: string;
46
+ }
47
+ /**
48
+ * Compile Constraint IR to Claude Agent SDK configuration.
49
+ */
50
+ export declare function compileForClaude(ir: ConstraintIR): ClaudeDNAConfig;
51
+ //# sourceMappingURL=claude-sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-sdk.d.ts","sourceRoot":"","sources":["../../src/runtime/claude-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,MAAM,WAAW,aAAa;IAC5B,kBAAkB,CAAC,EAAE;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,kBAAkB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;QAC9C,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACnC,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,sBAAsB,EAAE,MAAM,CAAC;IAE/B,2DAA2D;IAC3D,cAAc,EAAE,WAAW,EAAE,CAAC;IAE9B,4DAA4D;IAC5D,eAAe,EAAE,YAAY,EAAE,CAAC;IAEhC,6CAA6C;IAC7C,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAE5B,0DAA0D;IAC1D,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAE9B,iCAAiC;IACjC,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,eAAe,CAsElE"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Intent DNA — Claude Agent SDK Adapter
3
+ *
4
+ * Compiles Constraint IR into ClaudeAgentOptions-compatible configuration:
5
+ * prompt_directives → system_prompt
6
+ * tool_filters → allowed_tools filtering
7
+ * pre_execution_gates → PreToolUse hooks
8
+ * post_execution_validators → PostToolUse hooks
9
+ * context_injections → UserPromptSubmit hook
10
+ */
11
+ // ── Compiler ────────────────────────────────────────────────
12
+ /**
13
+ * Compile Constraint IR to Claude Agent SDK configuration.
14
+ */
15
+ export function compileForClaude(ir) {
16
+ // Build system prompt addition from directives
17
+ const promptLines = [];
18
+ promptLines.push("# Intent DNA — Active Behavioral Guidelines");
19
+ promptLines.push("");
20
+ if (ir.active_context) {
21
+ promptLines.push(`Active context: ${ir.active_context}`);
22
+ promptLines.push("");
23
+ }
24
+ // Group by priority
25
+ const highPriority = ir.prompt_directives.filter((d) => d.priority === "high");
26
+ const medPriority = ir.prompt_directives.filter((d) => d.priority === "medium");
27
+ const lowPriority = ir.prompt_directives.filter((d) => d.priority === "low");
28
+ if (highPriority.length > 0) {
29
+ promptLines.push("## Critical Guidelines");
30
+ for (const d of highPriority) {
31
+ promptLines.push(`- ${d.text}`);
32
+ }
33
+ promptLines.push("");
34
+ }
35
+ if (medPriority.length > 0) {
36
+ promptLines.push("## Standard Guidelines");
37
+ for (const d of medPriority) {
38
+ promptLines.push(`- ${d.text}`);
39
+ }
40
+ promptLines.push("");
41
+ }
42
+ if (lowPriority.length > 0) {
43
+ promptLines.push("## Soft Preferences");
44
+ for (const d of lowPriority) {
45
+ promptLines.push(`- ${d.text}`);
46
+ }
47
+ promptLines.push("");
48
+ }
49
+ // Add gate descriptions to prompt (so LLM is aware of constraints)
50
+ if (ir.pre_execution_gates.length > 0) {
51
+ promptLines.push("## Hard Constraints (will be enforced by system)");
52
+ for (const gate of ir.pre_execution_gates) {
53
+ promptLines.push(`- ${gate.message}`);
54
+ }
55
+ promptLines.push("");
56
+ }
57
+ return {
58
+ system_prompt_addition: promptLines.join("\n"),
59
+ pre_tool_rules: ir.pre_execution_gates.map((g) => ({
60
+ condition: g.condition,
61
+ action: g.action,
62
+ message: g.message,
63
+ source_gene: g.source_gene,
64
+ })),
65
+ post_tool_rules: ir.post_execution_validators.map((v) => ({
66
+ check: v.check,
67
+ threshold: v.threshold,
68
+ source_gene: v.source_gene,
69
+ })),
70
+ context_additions: ir.context_injections.map((c) => c.text),
71
+ deprioritized_tools: ir.tool_filters
72
+ .filter((f) => f.action === "deprioritize" && f.target)
73
+ .map((f) => f.target),
74
+ source_dna_ids: ir.source_dna_ids,
75
+ compiled_at: ir.compiled_at,
76
+ };
77
+ }
78
+ //# sourceMappingURL=claude-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-sdk.js","sourceRoot":"","sources":["../../src/runtime/claude-sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Intent DNA — Hook Adapter
3
+ *
4
+ * Compiles Constraint IR into shell scripts for Claude Code hooks.
5
+ * These scripts enforce DNA constraints at the harness level (deterministic),
6
+ * not the prompt level (probabilistic).
7
+ *
8
+ * Output:
9
+ * - PreToolUse hook: blocks/escalates tool calls based on pre_execution_gates + tool_filters
10
+ * - PostToolUse hook: validates tool outputs based on post_execution_validators
11
+ * - UserPromptSubmit hook: injects DNA policy reminders on each user prompt
12
+ * - SubagentStop hook: audits role scope compliance when subagents finish
13
+ * - PreCompact hook: preserves critical DNA directives before context compaction
14
+ * - Notification hook: fires on DNA policy violations
15
+ *
16
+ * See docs/references/cc-source-analysis.md for the full Claude Code hook event catalog (27 events).
17
+ *
18
+ * Hook scripts read JSON from stdin (tool_name, tool_input, agent_type)
19
+ * and exit with code 2 to block, or 0 to allow.
20
+ */
21
+ import type { ConstraintIR } from "../schema/types.js";
22
+ export interface HookScripts {
23
+ preToolUse: string | null;
24
+ postToolUse: string | null;
25
+ userPromptSubmit: string | null;
26
+ subagentStop: string | null;
27
+ preCompact: string | null;
28
+ notification: string | null;
29
+ }
30
+ /** Options for hook compilation */
31
+ export interface HookCompileOptions {
32
+ /** Agent name prefix for role scope case matching (default "dna-") */
33
+ agentPrefix?: string;
34
+ /** Role definitions for output_schema enforcement */
35
+ roles?: Record<string, import("../schema/types.js").RoleDef>;
36
+ }
37
+ /**
38
+ * Compile Constraint IR into hook shell scripts.
39
+ * Returns null for a hook type if there are no relevant constraints.
40
+ */
41
+ export declare function compileToHooks(ir: ConstraintIR, options?: HookCompileOptions): HookScripts;
42
+ /**
43
+ * Write hook scripts to the .claude/hooks/ directory.
44
+ * Creates the directory if it doesn't exist.
45
+ * Returns list of files written.
46
+ */
47
+ export declare function writeHookScripts(hooksDir: string, scripts: HookScripts): Promise<string[]>;
48
+ /**
49
+ * Remove hook scripts previously written by Intent DNA.
50
+ * Only removes files that contain the sentinel comment.
51
+ * Returns number of files removed.
52
+ */
53
+ export declare function removeHookScripts(hooksDir: string): Promise<number>;
54
+ /**
55
+ * Generate settings.json hook configuration snippet.
56
+ * This can be merged into the project's .claude/settings.json.
57
+ */
58
+ export declare function generateSettingsSnippet(hooksDir: string): object;
59
+ /**
60
+ * Extract directory prefix from a glob pattern.
61
+ * "src/**\/*.ts" → "src/"
62
+ * "test/**" → "test/"
63
+ * "*.md" → "" (root)
64
+ * "package.json" → "package.json" (exact path)
65
+ */
66
+ export declare function globToPrefix(glob: string): string;
67
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/runtime/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAgD,MAAM,oBAAoB,CAAC;AAKrG,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,mCAAmC;AACnC,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAAC;CAC9D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAU1F;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBnB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBzE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmChE;AAkTD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjD"}