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,15 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Intent DNA — CLI Entry Point
4
+ *
5
+ * Usage: dna <command> [options]
6
+ *
7
+ * Commands:
8
+ * init Create a new DNA file interactively
9
+ * compile Compile DNA files to framework configuration
10
+ * validate Validate DNA files
11
+ * show Show gene expression state
12
+ * help Show this help message
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG"}
@@ -0,0 +1,358 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Intent DNA — CLI Entry Point
4
+ *
5
+ * Usage: dna <command> [options]
6
+ *
7
+ * Commands:
8
+ * init Create a new DNA file interactively
9
+ * compile Compile DNA files to framework configuration
10
+ * validate Validate DNA files
11
+ * show Show gene expression state
12
+ * help Show this help message
13
+ */
14
+ import { parseArgs } from "node:util";
15
+ const HELP = `Intent DNA CLI v0.3.0
16
+
17
+ Usage: dna <command> [options]
18
+
19
+ Commands:
20
+ guard Zero-config guardrails — detect environment, apply safety rules
21
+ sync Compile + inject DNA into target file (CLAUDE.md, SOUL.md, etc.)
22
+ verify Verify synced files match .dna.lock checksums (drift detection)
23
+ run Execute a workflow directly (TypeScript runtime)
24
+ init Create a new DNA file interactively
25
+ compile Compile DNA files to framework configuration
26
+ validate Validate DNA files for correctness
27
+ show Show gene expression state
28
+ evolve Generate epigenetic markers from outcomes
29
+ epigenetic Record outcomes, view markers and summaries
30
+
31
+ Options:
32
+ --help, -h Show help for a command
33
+
34
+ Examples:
35
+ dna guard Apply standard guardrails (auto-detect environment)
36
+ dna guard --level yolo YOLO mode with safety net
37
+ dna guard --level strict Enterprise-grade guardrails
38
+ dna guard --audit Show last 7 days of violation logs
39
+ dna guard --remove Remove all guardrails
40
+ dna sync my.dna.json --target claude-md --inject CLAUDE.md --context work
41
+ dna sync my.dna.json --target claude-md --inject CLAUDE.md --hooks .claude/hooks
42
+ dna sync my.dna.json --hooks .claude/hooks --context work
43
+ dna sync my.dna.json --hooks .claude/hooks --role reviewer
44
+ dna sync my.dna.json --agents .claude/agents
45
+ dna sync my.dna.json --workflow ./scripts
46
+ dna sync my.dna.json --target claude-md --inject CLAUDE.md --hooks .claude/hooks --agents .claude/agents --workflow ./scripts
47
+ dna sync my.dna.json --target soul-md --inject SOUL.md --evolve
48
+ dna sync --remove --inject CLAUDE.md --hooks .claude/hooks --agents .claude/agents
49
+ dna verify Verify synced files against .dna.lock
50
+ dna verify --lock /path/to/.dna.lock
51
+ dna import . Import existing harness configs into DNA format
52
+ dna run --dna my.dna.json --workflow dev-pipeline --task P5.8
53
+ dna run --dna my.dna.json --workflow dev-pipeline --task P5.8 --dry-run
54
+ dna compile my.dna.json --context work
55
+ dna show my.dna.json --context work
56
+ dna evolve my_dna_id --preview
57
+ `;
58
+ async function main() {
59
+ const args = process.argv.slice(2);
60
+ const command = args[0];
61
+ if (!command || command === "help" || command === "--help" || command === "-h") {
62
+ process.stderr.write(HELP);
63
+ process.exit(0);
64
+ }
65
+ // Parse remaining args (after command)
66
+ const rest = args.slice(1);
67
+ switch (command) {
68
+ case "sync": {
69
+ const { values, positionals } = parseArgs({
70
+ args: rest,
71
+ options: {
72
+ target: { type: "string", short: "t", default: "claude-md" },
73
+ inject: { type: "string", short: "i" },
74
+ context: { type: "string", short: "c" },
75
+ role: { type: "string", short: "r" },
76
+ evolve: { type: "boolean", default: false },
77
+ "store-dir": { type: "string" },
78
+ hooks: { type: "string" },
79
+ agents: { type: "string" },
80
+ workflow: { type: "string" },
81
+ "workflow-name": { type: "string" },
82
+ skills: { type: "string" },
83
+ settings: { type: "string" },
84
+ lock: { type: "string", default: ".dna.lock" },
85
+ remove: { type: "boolean", default: false },
86
+ },
87
+ allowPositionals: true,
88
+ strict: false,
89
+ });
90
+ const { runSync } = await import("./commands/sync.js");
91
+ const code = await runSync({
92
+ files: positionals,
93
+ target: values.target,
94
+ inject: values.inject,
95
+ context: values.context,
96
+ role: values.role,
97
+ evolve: values.evolve,
98
+ storeDir: values["store-dir"],
99
+ hooksDir: values.hooks,
100
+ agentsDir: values.agents,
101
+ workflowDir: values.workflow,
102
+ workflowName: values["workflow-name"],
103
+ skillsDir: values.skills,
104
+ settingsPath: values.settings,
105
+ lockFile: values.lock,
106
+ remove: values.remove,
107
+ });
108
+ process.exit(code);
109
+ break;
110
+ }
111
+ case "verify": {
112
+ const { values: verifyValues } = parseArgs({
113
+ args: rest,
114
+ options: {
115
+ lock: { type: "string", default: ".dna.lock" },
116
+ },
117
+ allowPositionals: true,
118
+ strict: false,
119
+ });
120
+ const { runVerify } = await import("./commands/verify.js");
121
+ const code = await runVerify({
122
+ lockFile: verifyValues.lock,
123
+ });
124
+ process.exit(code);
125
+ break;
126
+ }
127
+ case "run": {
128
+ const { values: runValues, positionals: runPositionals } = parseArgs({
129
+ args: rest,
130
+ options: {
131
+ dna: { type: "string", multiple: true },
132
+ workflow: { type: "string", short: "w" },
133
+ task: { type: "string", short: "t" },
134
+ context: { type: "string", short: "c" },
135
+ var: { type: "string", multiple: true },
136
+ "dry-run": { type: "boolean", default: false },
137
+ "max-budget": { type: "string" },
138
+ "log-dir": { type: "string" },
139
+ "permission-mode": { type: "string" },
140
+ agents: { type: "string" },
141
+ hooks: { type: "string" },
142
+ },
143
+ allowPositionals: true,
144
+ strict: false,
145
+ });
146
+ // Parse --var key=value pairs
147
+ const varEntries = runValues.var ?? [];
148
+ const vars = {};
149
+ for (const v of varEntries) {
150
+ const eqIdx = v.indexOf("=");
151
+ if (eqIdx > 0) {
152
+ vars[v.slice(0, eqIdx)] = v.slice(eqIdx + 1);
153
+ }
154
+ }
155
+ const { runRun } = await import("./commands/run.js");
156
+ const code = await runRun({
157
+ dnaFiles: runValues.dna ?? runPositionals,
158
+ workflowName: runValues.workflow,
159
+ taskId: runValues.task,
160
+ context: runValues.context,
161
+ vars: Object.keys(vars).length > 0 ? vars : undefined,
162
+ dryRun: runValues["dry-run"],
163
+ maxBudget: runValues["max-budget"]
164
+ ? parseFloat(runValues["max-budget"])
165
+ : undefined,
166
+ logDir: runValues["log-dir"],
167
+ permissionMode: runValues["permission-mode"],
168
+ agentsDir: runValues.agents,
169
+ hooksDir: runValues.hooks,
170
+ });
171
+ process.exit(code);
172
+ break;
173
+ }
174
+ case "import": {
175
+ const { values: importValues, positionals: importPositionals } = parseArgs({
176
+ args: rest,
177
+ options: {
178
+ output: { type: "string", short: "o" },
179
+ format: { type: "string", short: "f", default: "yaml" },
180
+ },
181
+ allowPositionals: true,
182
+ strict: false,
183
+ });
184
+ const { runImport } = await import("./commands/import.js");
185
+ const code = await runImport({
186
+ dir: importPositionals[0] ?? ".",
187
+ output: importValues.output,
188
+ format: importValues.format ?? "yaml",
189
+ });
190
+ process.exit(code);
191
+ break;
192
+ }
193
+ case "validate": {
194
+ const { values, positionals } = parseArgs({
195
+ args: rest,
196
+ options: {
197
+ quiet: { type: "boolean", short: "q", default: false },
198
+ },
199
+ allowPositionals: true,
200
+ strict: false,
201
+ });
202
+ const { runValidate } = await import("./commands/validate.js");
203
+ const code = await runValidate({
204
+ files: positionals,
205
+ quiet: values.quiet,
206
+ });
207
+ process.exit(code);
208
+ break;
209
+ }
210
+ case "compile": {
211
+ const { values, positionals } = parseArgs({
212
+ args: rest,
213
+ options: {
214
+ target: { type: "string", short: "t", default: "claude-sdk" },
215
+ context: { type: "string", short: "c" },
216
+ output: { type: "string", short: "o" },
217
+ ir: { type: "boolean", default: false },
218
+ },
219
+ allowPositionals: true,
220
+ strict: false,
221
+ });
222
+ const { runCompile } = await import("./commands/compile.js");
223
+ const code = await runCompile({
224
+ files: positionals,
225
+ target: values.target,
226
+ context: values.context,
227
+ output: values.output,
228
+ ir: values.ir,
229
+ });
230
+ process.exit(code);
231
+ break;
232
+ }
233
+ case "show": {
234
+ const { values, positionals } = parseArgs({
235
+ args: rest,
236
+ options: {
237
+ context: { type: "string", short: "c" },
238
+ json: { type: "boolean", default: false },
239
+ },
240
+ allowPositionals: true,
241
+ strict: false,
242
+ });
243
+ const { runShow } = await import("./commands/show.js");
244
+ const code = await runShow({
245
+ files: positionals,
246
+ context: values.context,
247
+ json: values.json,
248
+ });
249
+ process.exit(code);
250
+ break;
251
+ }
252
+ case "init": {
253
+ const { values } = parseArgs({
254
+ args: rest,
255
+ options: {
256
+ type: { type: "string", short: "t" },
257
+ name: { type: "string", short: "n" },
258
+ output: { type: "string", short: "o" },
259
+ template: { type: "string" },
260
+ },
261
+ allowPositionals: true,
262
+ strict: false,
263
+ });
264
+ const { runInit } = await import("./commands/init.js");
265
+ const code = await runInit({
266
+ type: values.type,
267
+ name: values.name,
268
+ output: values.output,
269
+ template: values.template,
270
+ });
271
+ process.exit(code);
272
+ break;
273
+ }
274
+ case "evolve": {
275
+ const { values, positionals } = parseArgs({
276
+ args: rest,
277
+ options: {
278
+ preview: { type: "boolean", default: false },
279
+ "store-dir": { type: "string" },
280
+ },
281
+ allowPositionals: true,
282
+ strict: false,
283
+ });
284
+ const { runEvolve } = await import("./commands/evolve.js");
285
+ const code = await runEvolve({
286
+ dnaId: positionals[0] ?? "",
287
+ preview: values.preview,
288
+ storeDir: values["store-dir"],
289
+ });
290
+ process.exit(code);
291
+ break;
292
+ }
293
+ case "epigenetic": {
294
+ const subcommand = rest[0] ?? "";
295
+ const epiRest = rest.slice(1);
296
+ const { values: epiValues, positionals: epiPositionals } = parseArgs({
297
+ args: epiRest,
298
+ options: {
299
+ "store-dir": { type: "string" },
300
+ action: { type: "string" },
301
+ success: { type: "boolean", default: true },
302
+ genes: { type: "string" },
303
+ feedback: { type: "string" },
304
+ json: { type: "boolean", default: false },
305
+ },
306
+ allowPositionals: true,
307
+ strict: false,
308
+ });
309
+ const { runEpigenetic } = await import("./commands/epigenetic.js");
310
+ const genesStr = epiValues.genes;
311
+ const code = await runEpigenetic({
312
+ subcommand,
313
+ dnaId: epiPositionals[0] ?? "",
314
+ storeDir: epiValues["store-dir"],
315
+ action: epiValues.action,
316
+ success: epiValues.success,
317
+ genes: genesStr ? genesStr.split(",") : undefined,
318
+ feedback: epiValues.feedback,
319
+ json: epiValues.json,
320
+ });
321
+ process.exit(code);
322
+ break;
323
+ }
324
+ case "guard": {
325
+ const { values: guardValues } = parseArgs({
326
+ args: rest,
327
+ options: {
328
+ level: { type: "string", short: "l", default: "standard" },
329
+ audit: { type: "boolean", default: false },
330
+ remove: { type: "boolean", default: false },
331
+ },
332
+ strict: false,
333
+ });
334
+ const { runGuard } = await import("./commands/guard.js");
335
+ const guardLevel = guardValues.level;
336
+ if (!["standard", "yolo", "strict"].includes(guardLevel)) {
337
+ process.stderr.write(`Error: unknown level '${guardLevel}'. Available: standard, yolo, strict\n`);
338
+ process.exit(2);
339
+ }
340
+ const code = await runGuard({
341
+ level: guardLevel,
342
+ audit: guardValues.audit,
343
+ remove: guardValues.remove,
344
+ });
345
+ process.exit(code);
346
+ break;
347
+ }
348
+ default:
349
+ process.stderr.write(`Unknown command: ${command}\n\n`);
350
+ process.stderr.write(HELP);
351
+ process.exit(2);
352
+ }
353
+ }
354
+ main().catch((err) => {
355
+ process.stderr.write(`Fatal: ${err instanceof Error ? err.message : String(err)}\n`);
356
+ process.exit(1);
357
+ });
358
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CZ,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC/E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,uCAAuC;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE;oBAC5D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBACtC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBACvC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBACpC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;oBAC3C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC5B,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACnC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE;oBAC9C,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;iBAC5C;gBACD,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;gBACzB,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,MAAM,CAAC,MAAgB;gBAC/B,MAAM,EAAE,MAAM,CAAC,MAAgB;gBAC/B,OAAO,EAAE,MAAM,CAAC,OAA6B;gBAC7C,IAAI,EAAE,MAAM,CAAC,IAA0B;gBACvC,MAAM,EAAE,MAAM,CAAC,MAAiB;gBAChC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAuB;gBACnD,QAAQ,EAAE,MAAM,CAAC,KAA2B;gBAC5C,SAAS,EAAE,MAAM,CAAC,MAA4B;gBAC9C,WAAW,EAAE,MAAM,CAAC,QAA8B;gBAClD,YAAY,EAAE,MAAM,CAAC,eAAe,CAAuB;gBAC3D,SAAS,EAAE,MAAM,CAAC,MAA4B;gBAC9C,YAAY,EAAE,MAAM,CAAC,QAA8B;gBACnD,QAAQ,EAAE,MAAM,CAAC,IAA0B;gBAC3C,MAAM,EAAE,MAAM,CAAC,MAAiB;aACjC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;gBACzC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE;iBAC/C;gBACD,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC;gBAC3B,QAAQ,EAAE,YAAY,CAAC,IAAc;aACtC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;gBACnE,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACvC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBACxC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBACpC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBACvC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACvC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;oBAC9C,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAChC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC7B,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACrC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;gBACD,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,8BAA8B;YAC9B,MAAM,UAAU,GAAI,SAAS,CAAC,GAA4B,IAAI,EAAE,CAAC;YACjE,MAAM,IAAI,GAA2B,EAAE,CAAC;YACxC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACd,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;YAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC;gBACxB,QAAQ,EAAG,SAAS,CAAC,GAA4B,IAAI,cAAc;gBACnE,YAAY,EAAE,SAAS,CAAC,QAAkB;gBAC1C,MAAM,EAAE,SAAS,CAAC,IAAc;gBAChC,OAAO,EAAE,SAAS,CAAC,OAA6B;gBAChD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBACrD,MAAM,EAAE,SAAS,CAAC,SAAS,CAAY;gBACvC,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC;oBAChC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,CAAW,CAAC;oBAC/C,CAAC,CAAC,SAAS;gBACb,MAAM,EAAE,SAAS,CAAC,SAAS,CAAuB;gBAClD,cAAc,EAAE,SAAS,CAAC,iBAAiB,CAAuB;gBAClE,SAAS,EAAE,SAAS,CAAC,MAA4B;gBACjD,QAAQ,EAAE,SAAS,CAAC,KAA2B;aAChD,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;gBACzE,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBACtC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;iBACxD;gBACD,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC;gBAC3B,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,GAAG;gBAChC,MAAM,EAAE,YAAY,CAAC,MAA4B;gBACjD,MAAM,EAAG,YAAY,CAAC,MAA0B,IAAI,MAAM;aAC3D,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;iBACvD;gBACD,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;gBAC7B,KAAK,EAAE,WAAW;gBAClB,KAAK,EAAE,MAAM,CAAC,KAAgB;aAC/B,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE;oBAC7D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBACvC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBACtC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;iBACxC;gBACD,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC;gBAC5B,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,MAAM,CAAC,MAAgB;gBAC/B,OAAO,EAAE,MAAM,CAAC,OAA6B;gBAC7C,MAAM,EAAE,MAAM,CAAC,MAA4B;gBAC3C,EAAE,EAAE,MAAM,CAAC,EAAa;aACzB,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBACvC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;iBAC1C;gBACD,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;gBACzB,KAAK,EAAE,WAAW;gBAClB,OAAO,EAAE,MAAM,CAAC,OAA6B;gBAC7C,IAAI,EAAE,MAAM,CAAC,IAAe;aAC7B,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;gBAC3B,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBACpC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBACpC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBACtC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC7B;gBACD,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;gBACzB,IAAI,EAAE,MAAM,CAAC,IAA0B;gBACvC,IAAI,EAAE,MAAM,CAAC,IAA0B;gBACvC,MAAM,EAAE,MAAM,CAAC,MAA4B;gBAC3C,QAAQ,EAAE,MAAM,CAAC,QAA8B;aAChD,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;oBAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;gBACD,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC;gBAC3B,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAkB;gBAClC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAuB;aACpD,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;gBACnE,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE;oBACP,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;oBAC3C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;iBAC1C;gBACD,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACnE,MAAM,QAAQ,GAAG,SAAS,CAAC,KAA2B,CAAC;YACvD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC;gBAC/B,UAAU;gBACV,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE;gBAC9B,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAuB;gBACtD,MAAM,EAAE,SAAS,CAAC,MAA4B;gBAC9C,OAAO,EAAE,SAAS,CAAC,OAAkB;gBACrC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;gBACjD,QAAQ,EAAE,SAAS,CAAC,QAA8B;gBAClD,IAAI,EAAE,SAAS,CAAC,IAAe;aAChC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE;oBAC1D,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;oBAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;iBAC5C;gBACD,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAe,CAAC;YAC/C,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,UAAU,wCAAwC,CAAC,CAAC;gBAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC;gBAC1B,KAAK,EAAE,UAAsD;gBAC7D,KAAK,EAAE,WAAW,CAAC,KAAgB;gBACnC,MAAM,EAAE,WAAW,CAAC,MAAiB;aACtC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QAED;YACE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,OAAO,MAAM,CAAC,CAAC;YACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Intent DNA — CLI Terminal Formatting Utilities
3
+ */
4
+ import type { ActivatedGene } from "../../compiler/activate.js";
5
+ import type { Codon } from "../../schema/types.js";
6
+ export declare function bold(s: string): string;
7
+ export declare function dim(s: string): string;
8
+ export declare function green(s: string): string;
9
+ export declare function yellow(s: string): string;
10
+ export declare function red(s: string): string;
11
+ export declare function cyan(s: string): string;
12
+ /**
13
+ * Map expression level to a human-readable label with color.
14
+ */
15
+ export declare function expressionLabel(level: number): string;
16
+ /**
17
+ * Format a single codon for display.
18
+ */
19
+ export declare function formatCodon(codon: Codon): string;
20
+ /**
21
+ * Format a gene with its expression state for display.
22
+ */
23
+ export declare function formatGene(name: string, gene: ActivatedGene): string;
24
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/cli/util/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAUnD,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAkC;AACzE,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAiC;AACvE,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAmC;AAC3E,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAoC;AAC7E,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAiC;AACvE,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAkC;AAEzE;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAahD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAiBpE"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Intent DNA — CLI Terminal Formatting Utilities
3
+ */
4
+ const BOLD = "\x1b[1m";
5
+ const DIM = "\x1b[2m";
6
+ const RESET = "\x1b[0m";
7
+ const GREEN = "\x1b[32m";
8
+ const YELLOW = "\x1b[33m";
9
+ const RED = "\x1b[31m";
10
+ const CYAN = "\x1b[36m";
11
+ export function bold(s) { return `${BOLD}${s}${RESET}`; }
12
+ export function dim(s) { return `${DIM}${s}${RESET}`; }
13
+ export function green(s) { return `${GREEN}${s}${RESET}`; }
14
+ export function yellow(s) { return `${YELLOW}${s}${RESET}`; }
15
+ export function red(s) { return `${RED}${s}${RESET}`; }
16
+ export function cyan(s) { return `${CYAN}${s}${RESET}`; }
17
+ /**
18
+ * Map expression level to a human-readable label with color.
19
+ */
20
+ export function expressionLabel(level) {
21
+ if (level === 0)
22
+ return dim("OFF");
23
+ if (level >= 2.0)
24
+ return red("VERY HIGH");
25
+ if (level >= 1.5)
26
+ return yellow("HIGH");
27
+ if (level >= 1.0)
28
+ return green("NORMAL");
29
+ if (level >= 0.5)
30
+ return dim("LOW");
31
+ return dim("VERY LOW");
32
+ }
33
+ /**
34
+ * Format a single codon for display.
35
+ */
36
+ export function formatCodon(codon) {
37
+ switch (codon.type) {
38
+ case "attract":
39
+ return ` + attract ${cyan(codon.target)}`;
40
+ case "repel":
41
+ return ` - repel ${cyan(codon.target)}`;
42
+ case "threshold":
43
+ return ` ! threshold ${cyan(codon.condition)}`;
44
+ case "weight":
45
+ return ` ~ weight ${cyan(codon.a)}(${Math.round(codon.ratio * 100)}%) vs ${cyan(codon.b)}(${Math.round((1 - codon.ratio) * 100)}%)`;
46
+ case "sense":
47
+ return ` ? sense ${cyan(codon.signal)} -> ${codon.response}`;
48
+ }
49
+ }
50
+ /**
51
+ * Format a gene with its expression state for display.
52
+ */
53
+ export function formatGene(name, gene) {
54
+ const lines = [];
55
+ const label = expressionLabel(gene.expression_level);
56
+ const levelStr = gene.expression_level.toFixed(2);
57
+ lines.push(`${bold(name)} ${dim(`(${levelStr})`)} ${label}`);
58
+ lines.push(` ${dim(gene.description)}`);
59
+ for (const codon of gene.codons) {
60
+ lines.push(formatCodon(codon));
61
+ }
62
+ if (gene.tags.length > 0) {
63
+ lines.push(` ${dim(`tags: ${gene.tags.join(", ")}`)}`);
64
+ }
65
+ return lines.join("\n");
66
+ }
67
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cli/util/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Intent DNA — CLI Interactive Prompt Utilities
3
+ *
4
+ * Wraps node:readline/promises for simple interactive input.
5
+ */
6
+ export declare function closePrompt(): void;
7
+ export declare function askString(question: string, defaultVal?: string): Promise<string>;
8
+ export declare function askNumber(question: string, defaultVal: number): Promise<number>;
9
+ export declare function askChoice(question: string, choices: string[], defaultVal?: string): Promise<string>;
10
+ export declare function askYesNo(question: string, defaultVal: boolean): Promise<boolean>;
11
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/cli/util/prompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,wBAAgB,WAAW,IAAI,IAAI,CAKlC;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAItF;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIrF;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUzG;AAED,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAKtF"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Intent DNA — CLI Interactive Prompt Utilities
3
+ *
4
+ * Wraps node:readline/promises for simple interactive input.
5
+ */
6
+ import { createInterface } from "node:readline/promises";
7
+ import { stdin, stderr } from "node:process";
8
+ let rl = null;
9
+ function getRL() {
10
+ if (!rl) {
11
+ rl = createInterface({ input: stdin, output: stderr });
12
+ }
13
+ return rl;
14
+ }
15
+ export function closePrompt() {
16
+ if (rl) {
17
+ rl.close();
18
+ rl = null;
19
+ }
20
+ }
21
+ export async function askString(question, defaultVal) {
22
+ const suffix = defaultVal ? ` [${defaultVal}]` : "";
23
+ const answer = await getRL().question(`${question}${suffix}: `);
24
+ return answer.trim() || defaultVal || "";
25
+ }
26
+ export async function askNumber(question, defaultVal) {
27
+ const answer = await askString(question, String(defaultVal));
28
+ const num = Number(answer);
29
+ return isNaN(num) ? defaultVal : num;
30
+ }
31
+ export async function askChoice(question, choices, defaultVal) {
32
+ const choiceStr = choices
33
+ .map((c, i) => ` ${i + 1}) ${c}${c === defaultVal ? " (default)" : ""}`)
34
+ .join("\n");
35
+ stderr.write(`${question}\n${choiceStr}\n`);
36
+ const answer = await askString("Choose");
37
+ const num = Number(answer);
38
+ if (num >= 1 && num <= choices.length)
39
+ return choices[num - 1];
40
+ if (choices.includes(answer))
41
+ return answer;
42
+ return defaultVal || choices[0];
43
+ }
44
+ export async function askYesNo(question, defaultVal) {
45
+ const suffix = defaultVal ? "[Y/n]" : "[y/N]";
46
+ const answer = await askString(`${question} ${suffix}`);
47
+ if (!answer)
48
+ return defaultVal;
49
+ return answer.toLowerCase().startsWith("y");
50
+ }
51
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/cli/util/prompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAU,MAAM,EAAE,MAAM,cAAc,CAAC;AAErD,IAAI,EAAE,GAA8C,IAAI,CAAC;AAEzD,SAAS,KAAK;IACZ,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,EAAE,GAAG,IAAI,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,UAAmB;IACnE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,MAAM,IAAI,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,UAAU,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,UAAkB;IAClE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,OAAiB,EAAE,UAAmB;IACtF,MAAM,SAAS,GAAG,OAAO;SACtB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACxE,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC5C,OAAO,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB,EAAE,UAAmB;IAClE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;IAC/B,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,29 @@
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
+ import type { Codon } from "../schema/types.js";
11
+ import type { CascadedDNA } from "./cascade.js";
12
+ export interface ActivatedDNA {
13
+ genes: Record<string, ActivatedGene>;
14
+ active_context: string | null;
15
+ active_role: string | null;
16
+ source_ids: string[];
17
+ }
18
+ export interface ActivatedGene {
19
+ description: string;
20
+ codons: Codon[];
21
+ tags: string[];
22
+ expression_level: number;
23
+ }
24
+ /**
25
+ * Activate a cascaded DNA for a given context and role.
26
+ * Returns the final gene expression state ready for compilation to IR.
27
+ */
28
+ export declare function activateDNA(cascaded: CascadedDNA, contextName?: string | null, activeRole?: string | null): ActivatedDNA;
29
+ //# sourceMappingURL=activate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activate.d.ts","sourceRoot":"","sources":["../../src/compiler/activate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAEV,KAAK,EAKN,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAkED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,WAAW,EACrB,WAAW,GAAE,MAAM,GAAG,IAAW,EACjC,UAAU,GAAE,MAAM,GAAG,IAAW,GAC/B,YAAY,CAsFd"}