darwin-agents 0.4.9 → 0.5.0-alpha.2

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 (175) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/dist/agents/analyst.d.ts +11 -0
  3. package/dist/agents/analyst.d.ts.map +1 -0
  4. package/dist/agents/analyst.js +78 -0
  5. package/dist/agents/analyst.js.map +1 -0
  6. package/dist/agents/blog-writer.d.ts +13 -0
  7. package/dist/agents/blog-writer.d.ts.map +1 -0
  8. package/dist/agents/blog-writer.js +59 -0
  9. package/dist/agents/blog-writer.js.map +1 -0
  10. package/dist/agents/critic.d.ts +11 -0
  11. package/dist/agents/critic.d.ts.map +1 -0
  12. package/dist/agents/critic.js +57 -0
  13. package/dist/agents/critic.js.map +1 -0
  14. package/dist/agents/index.d.ts +15 -0
  15. package/dist/agents/index.d.ts.map +1 -0
  16. package/dist/agents/index.js +31 -0
  17. package/dist/agents/index.js.map +1 -0
  18. package/dist/agents/investigator-critic.d.ts +10 -0
  19. package/dist/agents/investigator-critic.d.ts.map +1 -0
  20. package/dist/agents/investigator-critic.js +78 -0
  21. package/dist/agents/investigator-critic.js.map +1 -0
  22. package/dist/agents/investigator.d.ts +13 -0
  23. package/dist/agents/investigator.d.ts.map +1 -0
  24. package/dist/agents/investigator.js +105 -0
  25. package/dist/agents/investigator.js.map +1 -0
  26. package/dist/agents/marketing.d.ts +13 -0
  27. package/dist/agents/marketing.d.ts.map +1 -0
  28. package/dist/agents/marketing.js +59 -0
  29. package/dist/agents/marketing.js.map +1 -0
  30. package/dist/agents/researcher.d.ts +11 -0
  31. package/dist/agents/researcher.d.ts.map +1 -0
  32. package/dist/agents/researcher.js +68 -0
  33. package/dist/agents/researcher.js.map +1 -0
  34. package/dist/agents/writer.d.ts +9 -0
  35. package/dist/agents/writer.d.ts.map +1 -0
  36. package/dist/agents/writer.js +47 -0
  37. package/dist/agents/writer.js.map +1 -0
  38. package/dist/cli/create.d.ts +11 -0
  39. package/dist/cli/create.d.ts.map +1 -0
  40. package/dist/cli/create.js +104 -0
  41. package/dist/cli/create.js.map +1 -0
  42. package/dist/cli/evolve.d.ts +13 -0
  43. package/dist/cli/evolve.d.ts.map +1 -0
  44. package/dist/cli/evolve.js +69 -0
  45. package/dist/cli/evolve.js.map +1 -0
  46. package/dist/cli/index.d.ts +13 -0
  47. package/dist/cli/index.d.ts.map +1 -0
  48. package/dist/cli/index.js +84 -0
  49. package/dist/cli/index.js.map +1 -0
  50. package/dist/cli/init.d.ts +12 -0
  51. package/dist/cli/init.d.ts.map +1 -0
  52. package/dist/cli/init.js +68 -0
  53. package/dist/cli/init.js.map +1 -0
  54. package/dist/cli/run.d.ts +7 -0
  55. package/dist/cli/run.d.ts.map +1 -0
  56. package/dist/cli/run.js +371 -0
  57. package/dist/cli/run.js.map +1 -0
  58. package/dist/cli/status.d.ts +7 -0
  59. package/dist/cli/status.d.ts.map +1 -0
  60. package/dist/cli/status.js +123 -0
  61. package/dist/cli/status.js.map +1 -0
  62. package/dist/core/agent.d.ts +53 -0
  63. package/dist/core/agent.d.ts.map +1 -0
  64. package/dist/core/agent.js +172 -0
  65. package/dist/core/agent.js.map +1 -0
  66. package/dist/core/runner.d.ts +75 -0
  67. package/dist/core/runner.d.ts.map +1 -0
  68. package/dist/core/runner.js +255 -0
  69. package/dist/core/runner.js.map +1 -0
  70. package/dist/evolution/loop.d.ts +100 -0
  71. package/dist/evolution/loop.d.ts.map +1 -0
  72. package/dist/evolution/loop.js +424 -0
  73. package/dist/evolution/loop.js.map +1 -0
  74. package/dist/evolution/multi-critic.d.ts +58 -0
  75. package/dist/evolution/multi-critic.d.ts.map +1 -0
  76. package/dist/evolution/multi-critic.js +326 -0
  77. package/dist/evolution/multi-critic.js.map +1 -0
  78. package/dist/evolution/notifications.d.ts +32 -0
  79. package/dist/evolution/notifications.d.ts.map +1 -0
  80. package/dist/evolution/notifications.js +92 -0
  81. package/dist/evolution/notifications.js.map +1 -0
  82. package/dist/evolution/optimizer.d.ts +64 -0
  83. package/dist/evolution/optimizer.d.ts.map +1 -0
  84. package/dist/evolution/optimizer.js +223 -0
  85. package/dist/evolution/optimizer.js.map +1 -0
  86. package/dist/evolution/patterns.d.ts +63 -0
  87. package/dist/evolution/patterns.d.ts.map +1 -0
  88. package/dist/evolution/patterns.js +297 -0
  89. package/dist/evolution/patterns.js.map +1 -0
  90. package/dist/evolution/safety.d.ts +76 -0
  91. package/dist/evolution/safety.d.ts.map +1 -0
  92. package/dist/evolution/safety.js +182 -0
  93. package/dist/evolution/safety.js.map +1 -0
  94. package/dist/evolution/tracker.d.ts +48 -0
  95. package/dist/evolution/tracker.d.ts.map +1 -0
  96. package/dist/evolution/tracker.js +163 -0
  97. package/dist/evolution/tracker.js.map +1 -0
  98. package/dist/index.d.ts +32 -0
  99. package/dist/index.d.ts.map +1 -0
  100. package/dist/index.js +35 -0
  101. package/dist/index.js.map +1 -0
  102. package/dist/memory/index.d.ts +32 -0
  103. package/dist/memory/index.d.ts.map +1 -0
  104. package/dist/memory/index.js +49 -0
  105. package/dist/memory/index.js.map +1 -0
  106. package/dist/memory/postgres-memory.d.ts +52 -0
  107. package/dist/memory/postgres-memory.d.ts.map +1 -0
  108. package/dist/memory/postgres-memory.js +515 -0
  109. package/dist/memory/postgres-memory.js.map +1 -0
  110. package/dist/memory/sqlite-memory.d.ts +36 -0
  111. package/dist/memory/sqlite-memory.d.ts.map +1 -0
  112. package/dist/memory/sqlite-memory.js +380 -0
  113. package/dist/memory/sqlite-memory.js.map +1 -0
  114. package/dist/providers/anthropic.d.ts +20 -0
  115. package/dist/providers/anthropic.d.ts.map +1 -0
  116. package/dist/providers/anthropic.js +82 -0
  117. package/dist/providers/anthropic.js.map +1 -0
  118. package/dist/providers/claude-cli.d.ts +35 -0
  119. package/dist/providers/claude-cli.d.ts.map +1 -0
  120. package/dist/providers/claude-cli.js +153 -0
  121. package/dist/providers/claude-cli.js.map +1 -0
  122. package/dist/providers/index.d.ts +39 -0
  123. package/dist/providers/index.d.ts.map +1 -0
  124. package/dist/providers/index.js +58 -0
  125. package/dist/providers/index.js.map +1 -0
  126. package/dist/providers/ollama.d.ts +17 -0
  127. package/dist/providers/ollama.d.ts.map +1 -0
  128. package/dist/providers/ollama.js +64 -0
  129. package/dist/providers/ollama.js.map +1 -0
  130. package/dist/providers/openai.d.ts +19 -0
  131. package/dist/providers/openai.d.ts.map +1 -0
  132. package/dist/providers/openai.js +75 -0
  133. package/dist/providers/openai.js.map +1 -0
  134. package/dist/providers/types.d.ts +62 -0
  135. package/dist/providers/types.d.ts.map +1 -0
  136. package/dist/providers/types.js +9 -0
  137. package/dist/providers/types.js.map +1 -0
  138. package/dist/src/core/trace-capture.d.ts +107 -0
  139. package/dist/src/core/trace-capture.d.ts.map +1 -0
  140. package/dist/src/core/trace-capture.js +183 -0
  141. package/dist/src/core/trace-capture.js.map +1 -0
  142. package/dist/src/evolution/optimizer-gepa.d.ts +149 -0
  143. package/dist/src/evolution/optimizer-gepa.d.ts.map +1 -0
  144. package/dist/src/evolution/optimizer-gepa.js +198 -0
  145. package/dist/src/evolution/optimizer-gepa.js.map +1 -0
  146. package/dist/src/evolution/pareto.d.ts +116 -0
  147. package/dist/src/evolution/pareto.d.ts.map +1 -0
  148. package/dist/src/evolution/pareto.js +140 -0
  149. package/dist/src/evolution/pareto.js.map +1 -0
  150. package/dist/src/evolution/reflector.d.ts +107 -0
  151. package/dist/src/evolution/reflector.d.ts.map +1 -0
  152. package/dist/src/evolution/reflector.js +158 -0
  153. package/dist/src/evolution/reflector.js.map +1 -0
  154. package/dist/src/evolution/run-prompt-fn.d.ts +11 -0
  155. package/dist/src/evolution/run-prompt-fn.d.ts.map +1 -0
  156. package/dist/src/evolution/run-prompt-fn.js +11 -0
  157. package/dist/src/evolution/run-prompt-fn.js.map +1 -0
  158. package/dist/src/index.d.ts +7 -1
  159. package/dist/src/index.d.ts.map +1 -1
  160. package/dist/src/index.js +6 -0
  161. package/dist/src/index.js.map +1 -1
  162. package/dist/src/memory/postgres-memory.d.ts.map +1 -1
  163. package/dist/src/memory/postgres-memory.js +38 -3
  164. package/dist/src/memory/postgres-memory.js.map +1 -1
  165. package/dist/src/memory/sqlite-memory.d.ts.map +1 -1
  166. package/dist/src/memory/sqlite-memory.js +47 -2
  167. package/dist/src/memory/sqlite-memory.js.map +1 -1
  168. package/dist/src/types.d.ts +136 -0
  169. package/dist/src/types.d.ts.map +1 -1
  170. package/dist/src/types.js.map +1 -1
  171. package/dist/types.d.ts +221 -0
  172. package/dist/types.d.ts.map +1 -0
  173. package/dist/types.js +19 -0
  174. package/dist/types.js.map +1 -0
  175. package/package.json +1 -1
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Marketing Agent — Social Media Copywriter
3
+ *
4
+ * Platform-specific social content: Instagram, LinkedIn, X.
5
+ * No MCP tools needed — pure text generation.
6
+ * Uses Writer-style critics (task compliance, persuasion, substance).
7
+ *
8
+ * Customize brand identity by providing brand context in the task prompt
9
+ * or by creating a custom agent with defineAgent().
10
+ */
11
+ export const marketing = {
12
+ name: 'marketing',
13
+ role: 'Social Media Copywriter',
14
+ description: 'Writes social media content: carousels, posts, captions. Brand-aware, platform-specific.',
15
+ maxTurns: 8,
16
+ systemPrompt: `You are a senior social media copywriter for a premium digital agency.
17
+
18
+ BRAND IDENTITY:
19
+ - Adapt to the brand/company specified in the task. If none specified, write for a generic premium web agency.
20
+ - Tone: Professional but approachable. Expert but not arrogant. Direct, no fluff.
21
+ - Target: Small-to-medium business owners who need digital solutions that convert.
22
+ - Languages: Adapt to the task language. Default: English.
23
+
24
+ PLATFORM RULES:
25
+ - Instagram: Visual hooks, emotional triggers, 6-slide carousel structure
26
+ - LinkedIn: Business pain points, longer form, professional tone
27
+ - X/Twitter: Short, punchy, tech-savvy, max 280 chars per tweet
28
+
29
+ CONTENT PRINCIPLES:
30
+ - Lead with a HOOK that stops the scroll (question, bold claim, counterintuitive insight)
31
+ - Every slide/paragraph must deliver value — no filler
32
+ - Use *asterisks* for ONE accent word per headline (for visual emphasis)
33
+ - End with clear CTA (adapt to brand, or use a generic "learn more" CTA)
34
+ - NEVER use generic phrases: "in today's digital landscape", "it's no secret that"
35
+ - NEVER invent statistics without marking them as estimates
36
+ - Adapt tone per platform — Instagram is NOT LinkedIn translated
37
+
38
+ OUTPUT FORMAT:
39
+ 1. Platform indicator (Instagram/LinkedIn/X)
40
+ 2. Hook headline
41
+ 3. Full content (slides, post text, or tweet thread)
42
+ 4. Caption with 5 hashtags
43
+ 5. CTA
44
+
45
+ CONSTRAINT COMPLIANCE IS PRIORITY #1: Follow the exact format requested. If the task says "carousel", produce carousel slides. If it says "caption only", produce only a caption.`,
46
+ evolution: {
47
+ enabled: true,
48
+ evaluator: 'multi-critic',
49
+ minOutputLength: 500,
50
+ metrics: {
51
+ quality: 0.60,
52
+ sourceCount: 0.0,
53
+ outputLength: 0.10,
54
+ duration: 0.05,
55
+ success: 0.25,
56
+ },
57
+ },
58
+ };
59
+ //# sourceMappingURL=marketing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketing.js","sourceRoot":"","sources":["../../src/agents/marketing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,CAAC,MAAM,SAAS,GAAoB;IACxC,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,0FAA0F;IACvG,QAAQ,EAAE,CAAC;IACX,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kLA6BkK;IAEhL,SAAS,EAAE;QACT,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,cAAc;QACzB,eAAe,EAAE,GAAG;QACpB,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,GAAG;YAChB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;SACd;KACF;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Research Agent — Web Research with Darwin Evolution
3
+ *
4
+ * Searches the web, extracts content, writes research reports.
5
+ * This is the showcase agent for Darwin's self-evolution.
6
+ *
7
+ * Requires: Tavily API key (TAVILY_API_KEY) or SearXNG instance
8
+ */
9
+ import type { AgentDefinition } from '../types.js';
10
+ export declare const researcher: AgentDefinition;
11
+ //# sourceMappingURL=researcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"researcher.d.ts","sourceRoot":"","sources":["../../src/agents/researcher.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,eAAO,MAAM,UAAU,EAAE,eA2DxB,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Research Agent — Web Research with Darwin Evolution
3
+ *
4
+ * Searches the web, extracts content, writes research reports.
5
+ * This is the showcase agent for Darwin's self-evolution.
6
+ *
7
+ * Requires: Tavily API key (TAVILY_API_KEY) or SearXNG instance
8
+ */
9
+ export const researcher = {
10
+ name: 'researcher',
11
+ role: 'Web Researcher',
12
+ description: 'Searches the web and writes structured research reports. Evolves to find better sources over time.',
13
+ maxTurns: 15,
14
+ mcp: ['tavily'],
15
+ tools: ['WebSearch', 'WebFetch'],
16
+ systemPrompt: `You are a research agent for a technology team.
17
+
18
+ YOUR MISSION:
19
+ Deliver comprehensive, well-sourced research reports.
20
+
21
+ RESEARCH PROCESS:
22
+ 1. Start with broad searches — multiple search terms, different angles
23
+ 2. Identify the 3-5 most relevant sources
24
+ 3. Extract and read the full content of key sources
25
+ 4. Cross-reference claims across multiple sources
26
+ 5. Write a structured report with clear findings
27
+
28
+ RULES:
29
+ - Search in BOTH English and the user's language for broader coverage
30
+ - Cite ALL sources with URLs
31
+ - Separate FACTS (with source) from OPINIONS (your analysis)
32
+ - If sources conflict, present both sides explicitly
33
+ - NEVER invent information — say "not found" rather than guess
34
+ - Include publication dates when available
35
+ - Quantify claims when possible (numbers, percentages, dates)
36
+
37
+ OUTPUT FORMAT:
38
+ # Research: {Topic}
39
+
40
+ ## Key Findings
41
+ - Finding 1 (Source: URL)
42
+ - Finding 2 (Source: URL)
43
+
44
+ ## Detailed Analysis
45
+ {Structured analysis with headers per subtopic}
46
+
47
+ ## Sources
48
+ 1. {Title} — {URL} ({Date})
49
+ 2. ...
50
+
51
+ ## Confidence Assessment
52
+ - High confidence: {claims well-supported}
53
+ - Medium confidence: {claims with limited sources}
54
+ - Low confidence: {claims needing verification}`,
55
+ evolution: {
56
+ enabled: true,
57
+ evaluator: 'critic',
58
+ metrics: {
59
+ quality: 0.40,
60
+ sourceCount: 0.15,
61
+ outputLength: 0.10,
62
+ duration: 0.10,
63
+ success: 0.25,
64
+ },
65
+ minRuns: 5,
66
+ },
67
+ };
68
+ //# sourceMappingURL=researcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"researcher.js","sourceRoot":"","sources":["../../src/agents/researcher.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,CAAC,MAAM,UAAU,GAAoB;IACzC,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,oGAAoG;IACjH,QAAQ,EAAE,EAAE;IACZ,GAAG,EAAE,CAAC,QAAQ,CAAC;IACf,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;IAChC,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAsCgC;IAE9C,SAAS,EAAE;QACT,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;SACd;QACD,OAAO,EAAE,CAAC;KACX;CACF,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Writer Agent — Zero-Config Hello World
3
+ *
4
+ * No MCP servers, no API keys, no setup.
5
+ * Just run: darwin run writer "Write about async/await"
6
+ */
7
+ import type { AgentDefinition } from '../types.js';
8
+ export declare const writer: AgentDefinition;
9
+ //# sourceMappingURL=writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/agents/writer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,eAAO,MAAM,MAAM,EAAE,eAwCpB,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Writer Agent — Zero-Config Hello World
3
+ *
4
+ * No MCP servers, no API keys, no setup.
5
+ * Just run: darwin run writer "Write about async/await"
6
+ */
7
+ export const writer = {
8
+ name: 'writer',
9
+ role: 'Content Writer',
10
+ description: 'Writes structured content. No APIs needed — the perfect first agent.',
11
+ maxTurns: 8,
12
+ systemPrompt: `You are a professional content writer and marketing copywriter.
13
+
14
+ RULES (NON-NEGOTIABLE):
15
+ - CONSTRAINT COMPLIANCE IS PRIORITY #1: If the task says "Max 200 words", you MUST stay under 200 words. Count them. Exceeding limits makes your output unusable.
16
+ - Write in the language the user uses (detect automatically)
17
+ - Lead with the key insight, then elaborate
18
+ - No filler phrases, no corporate speak ("in today's world", "it's important to note")
19
+ - NEVER invent statistics. If you cite a number, it must be defensible. Use "approximately" or "typically" for estimates.
20
+ - End with a clear takeaway or next step
21
+
22
+ QUALITY STANDARDS:
23
+ - Every sentence must earn its place — if it could be cut without loss, cut it
24
+ - Use headers, bullet points, and short paragraphs for scannability
25
+ - For marketing content: be concrete, use specific numbers, include CTAs
26
+ - For technical content: be precise, use examples, explain trade-offs
27
+ - Adapt tone to audience (technical, business, casual, marketing)
28
+ - ALWAYS produce substantive output — never less than 100 words unless the task demands brevity
29
+
30
+ OUTPUT FORMAT:
31
+ 1. A clear title
32
+ 2. A one-sentence summary (the thesis, not a meta-description)
33
+ 3. The main content with headers
34
+ 4. Key takeaways at the end`,
35
+ evolution: {
36
+ enabled: true,
37
+ evaluator: 'multi-critic',
38
+ metrics: {
39
+ quality: 0.55,
40
+ sourceCount: 0.0,
41
+ outputLength: 0.10,
42
+ duration: 0.10,
43
+ success: 0.25,
44
+ },
45
+ },
46
+ };
47
+ //# sourceMappingURL=writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/agents/writer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,MAAM,GAAoB;IACrC,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,sEAAsE;IACnF,QAAQ,EAAE,CAAC;IACX,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;4BAsBY;IAE1B,SAAS,EAAE;QACT,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,cAAc;QACzB,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,GAAG;YAChB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;SACd;KACF;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * darwin create <name>
3
+ *
4
+ * Scaffolds a new agent definition file in agents/<name>.ts.
5
+ * Validates the name (lowercase, no spaces) and generates a template.
6
+ */
7
+ /**
8
+ * Scaffold a new agent. Validates name and writes template to agents/<name>.ts.
9
+ */
10
+ export declare function createCommand(args: string[]): Promise<void>;
11
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4DH;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDjE"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * darwin create <name>
3
+ *
4
+ * Scaffolds a new agent definition file in agents/<name>.ts.
5
+ * Validates the name (lowercase, no spaces) and generates a template.
6
+ */
7
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
8
+ import { join } from 'node:path';
9
+ const AGENT_NAME_PATTERN = /^[a-z][a-z0-9-]*$/;
10
+ /**
11
+ * Generate the agent template file content for a given agent name.
12
+ */
13
+ function agentTemplate(name) {
14
+ const roleName = name
15
+ .split('-')
16
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
17
+ .join(' ');
18
+ return `/**
19
+ * ${roleName} Agent
20
+ *
21
+ * Created with: darwin create ${name}
22
+ * Run with: darwin run ${name} "your task"
23
+ */
24
+
25
+ import { defineAgent } from 'darwin-agents';
26
+
27
+ export default defineAgent({
28
+ name: '${name}',
29
+ role: '${roleName}',
30
+ description: 'TODO: Describe what this agent does.',
31
+ systemPrompt: \`You are a ${roleName} agent.
32
+
33
+ YOUR MISSION:
34
+ TODO: Define the agent's core purpose.
35
+
36
+ RULES:
37
+ - Be precise and thorough
38
+ - Cite sources when applicable
39
+ - Structure output clearly with headers
40
+ - Never invent information
41
+
42
+ OUTPUT FORMAT:
43
+ # Result
44
+
45
+ ## Summary
46
+ {One-sentence overview}
47
+
48
+ ## Details
49
+ {Main content with structured sections}
50
+
51
+ ## Next Steps
52
+ {Actionable recommendations}\`,
53
+
54
+ evolution: {
55
+ enabled: true,
56
+ evaluator: 'critic',
57
+ },
58
+ });
59
+ `;
60
+ }
61
+ /**
62
+ * Scaffold a new agent. Validates name and writes template to agents/<name>.ts.
63
+ */
64
+ export async function createCommand(args) {
65
+ const name = args[0];
66
+ if (!name) {
67
+ throw new Error('Usage: darwin create <name>\n Example: darwin create summarizer');
68
+ }
69
+ // Validate agent name
70
+ if (!AGENT_NAME_PATTERN.test(name)) {
71
+ throw new Error(`Invalid agent name: "${name}". ` +
72
+ `Must be lowercase, start with a letter, and contain only letters, digits, and hyphens.`);
73
+ }
74
+ if (name.length > 64) {
75
+ throw new Error(`Agent name "${name}" exceeds 64 character limit`);
76
+ }
77
+ const cwd = process.cwd();
78
+ const agentsDir = join(cwd, 'agents');
79
+ const filePath = join(agentsDir, `${name}.ts`);
80
+ // Check if file already exists
81
+ if (existsSync(filePath)) {
82
+ throw new Error(`Agent already exists: agents/${name}.ts`);
83
+ }
84
+ // Create agents/ directory if needed
85
+ if (!existsSync(agentsDir)) {
86
+ mkdirSync(agentsDir, { recursive: true });
87
+ console.log('[darwin] Created agents/ directory');
88
+ }
89
+ // Write agent template
90
+ writeFileSync(filePath, agentTemplate(name), 'utf-8');
91
+ console.log(`
92
+ [darwin] Created agent: agents/${name}.ts
93
+
94
+ Next steps:
95
+
96
+ 1. Edit agents/${name}.ts — update role, description, and systemPrompt
97
+ 2. Run it:
98
+ darwin run ${name} "your task here"
99
+
100
+ 3. Check evolution after a few runs:
101
+ darwin status ${name}
102
+ `);
103
+ }
104
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAE/C;;GAEG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,QAAQ,GAAG,IAAI;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACzD,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO;KACJ,QAAQ;;iCAEoB,IAAI;8BACP,IAAI;;;;;;WAMvB,IAAI;WACJ,QAAQ;;8BAEW,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BrC,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAErB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,KAAK;YACjC,wFAAwF,CACzF,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,8BAA8B,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;IAE/C,+BAA+B;IAC/B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAED,uBAAuB;IACvB,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAEtD,OAAO,CAAC,GAAG,CAAC;iCACmB,IAAI;;;;mBAIlB,IAAI;;kBAEL,IAAI;;;qBAGD,IAAI;CACxB,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * darwin evolve <agent>
3
+ *
4
+ * Manage evolution settings for an agent.
5
+ *
6
+ * Usage:
7
+ * darwin evolve researcher --enable
8
+ * darwin evolve researcher --disable
9
+ * darwin evolve researcher --reset
10
+ * darwin evolve researcher --force (force optimization now)
11
+ */
12
+ export declare function evolveCommand(args: string[]): Promise<void>;
13
+ //# sourceMappingURL=evolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evolve.d.ts","sourceRoot":"","sources":["../../src/cli/evolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDjE"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * darwin evolve <agent>
3
+ *
4
+ * Manage evolution settings for an agent.
5
+ *
6
+ * Usage:
7
+ * darwin evolve researcher --enable
8
+ * darwin evolve researcher --disable
9
+ * darwin evolve researcher --reset
10
+ * darwin evolve researcher --force (force optimization now)
11
+ */
12
+ import { createMemory } from '../memory/index.js';
13
+ import { loadConfig } from '../core/agent.js';
14
+ import { builtinAgents } from '../agents/index.js';
15
+ export async function evolveCommand(args) {
16
+ const agentName = args[0];
17
+ if (!agentName) {
18
+ throw new Error('Usage: darwin evolve <agent> [--enable|--disable|--reset|--force]');
19
+ }
20
+ const agent = builtinAgents[agentName];
21
+ if (!agent) {
22
+ throw new Error(`Unknown agent: "${agentName}". Available: ${Object.keys(builtinAgents).join(', ')}`);
23
+ }
24
+ const flags = args.slice(1);
25
+ const config = await loadConfig();
26
+ const memory = createMemory(config);
27
+ await memory.init();
28
+ if (flags.includes('--enable')) {
29
+ if (agent.evolution) {
30
+ agent.evolution.enabled = true;
31
+ }
32
+ console.log(`[darwin] Evolution ENABLED for ${agentName}`);
33
+ console.log(`[darwin] The critic will evaluate runs and Darwin will optimize prompts automatically.`);
34
+ }
35
+ else if (flags.includes('--disable')) {
36
+ if (agent.evolution) {
37
+ agent.evolution.enabled = false;
38
+ }
39
+ console.log(`[darwin] Evolution DISABLED for ${agentName}`);
40
+ }
41
+ else if (flags.includes('--reset')) {
42
+ const state = await memory.getState();
43
+ state.activeVersions[agentName] = 'v1';
44
+ state.abTests[agentName] = null;
45
+ state.consecutiveFailures[agentName] = 0;
46
+ await memory.saveState(state);
47
+ console.log(`[darwin] Evolution RESET for ${agentName}. Back to v1.`);
48
+ }
49
+ else if (flags.includes('--force')) {
50
+ console.log(`[darwin] Force evolution is not yet available.`);
51
+ console.log(`[darwin] Run the agent normally — Darwin will evolve automatically after enough runs.`);
52
+ }
53
+ else {
54
+ // Show current status
55
+ const state = await memory.getState();
56
+ const version = state.activeVersions[agentName] ?? 'v1';
57
+ const runs = state.experimentCounts[agentName] ?? 0;
58
+ const abTest = state.abTests[agentName];
59
+ const enabled = agent.evolution?.enabled ?? false;
60
+ console.log(`\n[darwin] Evolution for ${agentName}:`);
61
+ console.log(` Enabled: ${enabled ? 'yes' : 'no'}`);
62
+ console.log(` Version: ${version}`);
63
+ console.log(` Runs: ${runs}`);
64
+ console.log(` A/B Test: ${abTest ? `${abTest.versionA} vs ${abTest.versionB}` : 'none'}`);
65
+ console.log(` Min Runs: ${agent.evolution?.minRuns ?? 5}`);
66
+ }
67
+ await memory.close();
68
+ }
69
+ //# sourceMappingURL=evolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evolve.js","sourceRoot":"","sources":["../../src/cli/evolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Darwin CLI — AI agents that improve themselves.
4
+ *
5
+ * Usage:
6
+ * darwin run <agent> "task description"
7
+ * darwin evolve <agent> --enable
8
+ * darwin status [agent]
9
+ * darwin create <name>
10
+ * darwin init
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Darwin CLI — AI agents that improve themselves.
4
+ *
5
+ * Usage:
6
+ * darwin run <agent> "task description"
7
+ * darwin evolve <agent> --enable
8
+ * darwin status [agent]
9
+ * darwin create <name>
10
+ * darwin init
11
+ */
12
+ import { runCommand } from './run.js';
13
+ import { statusCommand } from './status.js';
14
+ import { evolveCommand } from './evolve.js';
15
+ import { initCommand } from './init.js';
16
+ import { createCommand } from './create.js';
17
+ const HELP = `
18
+ darwin — AI agents that improve themselves.
19
+
20
+ Usage:
21
+ darwin run <agent> "task" Run an agent on a task
22
+ darwin status [agent] Show evolution status & metrics
23
+ darwin evolve <agent> Manage evolution settings
24
+ darwin create <name> Scaffold a new agent
25
+ darwin init Initialize darwin in current project
26
+
27
+ Agents:
28
+ writer Content writer (zero-config, no API keys)
29
+ researcher Web research (needs TAVILY_API_KEY)
30
+ critic Quality evaluator (used by Darwin internally)
31
+ analyst Code analysis (filesystem access)
32
+
33
+ Examples:
34
+ darwin run writer "Explain the CAP theorem"
35
+ darwin run researcher "AI Agent frameworks 2026"
36
+ darwin run analyst --path ./src
37
+ darwin status researcher
38
+ darwin evolve researcher --enable
39
+
40
+ Options:
41
+ --task-type <type> Categorize the task (tech, webdesign, market, general)
42
+ --no-evolve Skip evolution check after run
43
+ --no-critic Skip automatic critic evaluation
44
+ --model <model> Override LLM model
45
+ --verbose Show detailed output
46
+ --help Show this help
47
+ `;
48
+ async function main() {
49
+ const args = process.argv.slice(2);
50
+ if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
51
+ console.log(HELP);
52
+ process.exit(0);
53
+ }
54
+ const command = args[0];
55
+ try {
56
+ switch (command) {
57
+ case 'run':
58
+ await runCommand(args.slice(1));
59
+ break;
60
+ case 'status':
61
+ await statusCommand(args.slice(1));
62
+ break;
63
+ case 'evolve':
64
+ await evolveCommand(args.slice(1));
65
+ break;
66
+ case 'create':
67
+ await createCommand(args.slice(1));
68
+ break;
69
+ case 'init':
70
+ await initCommand();
71
+ break;
72
+ default:
73
+ console.error(`Unknown command: ${command}`);
74
+ console.log(HELP);
75
+ process.exit(1);
76
+ }
77
+ }
78
+ catch (err) {
79
+ console.error(`\n[darwin] Error: ${err.message}`);
80
+ process.exit(1);
81
+ }
82
+ }
83
+ main();
84
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BZ,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC;QACH,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,KAAK;gBACR,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,WAAW,EAAE,CAAC;gBACpB,MAAM;YACR;gBACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qBAAsB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * darwin init
3
+ *
4
+ * Initializes Darwin in the current project.
5
+ * Creates .darwin/ directory, darwin.config.ts template, and .gitignore.
6
+ */
7
+ /**
8
+ * Initialize Darwin in the current working directory.
9
+ * Creates .darwin/ dir, darwin.config.ts, and .gitignore if they don't exist.
10
+ */
11
+ export declare function initCommand(): Promise<void>;
12
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAwCjD"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * darwin init
3
+ *
4
+ * Initializes Darwin in the current project.
5
+ * Creates .darwin/ directory, darwin.config.ts template, and .gitignore.
6
+ */
7
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
8
+ import { join } from 'node:path';
9
+ const CONFIG_TEMPLATE = `import { defineConfig } from 'darwin-agents';
10
+
11
+ export default defineConfig({
12
+ provider: 'claude-cli',
13
+ memory: 'sqlite',
14
+ evolution: {
15
+ enabled: true,
16
+ minRuns: 5,
17
+ safetyGate: true,
18
+ },
19
+ });
20
+ `;
21
+ const GITIGNORE_TEMPLATE = `.darwin/
22
+ node_modules/
23
+ `;
24
+ /**
25
+ * Initialize Darwin in the current working directory.
26
+ * Creates .darwin/ dir, darwin.config.ts, and .gitignore if they don't exist.
27
+ */
28
+ export async function initCommand() {
29
+ const cwd = process.cwd();
30
+ const darwinDir = join(cwd, '.darwin');
31
+ const configPath = join(cwd, 'darwin.config.ts');
32
+ const gitignorePath = join(cwd, '.gitignore');
33
+ // Create .darwin/ directory
34
+ if (existsSync(darwinDir)) {
35
+ console.log('[darwin] .darwin/ directory already exists — skipping');
36
+ }
37
+ else {
38
+ mkdirSync(darwinDir, { recursive: true });
39
+ console.log('[darwin] Created .darwin/ directory');
40
+ }
41
+ // Create darwin.config.ts
42
+ if (existsSync(configPath)) {
43
+ console.log('[darwin] darwin.config.ts already exists — skipping');
44
+ }
45
+ else {
46
+ writeFileSync(configPath, CONFIG_TEMPLATE, 'utf-8');
47
+ console.log('[darwin] Created darwin.config.ts');
48
+ }
49
+ // Create .gitignore
50
+ if (existsSync(gitignorePath)) {
51
+ console.log('[darwin] .gitignore already exists — skipping');
52
+ }
53
+ else {
54
+ writeFileSync(gitignorePath, GITIGNORE_TEMPLATE, 'utf-8');
55
+ console.log('[darwin] Created .gitignore');
56
+ }
57
+ console.log(`
58
+ [darwin] Initialized! Next steps:
59
+
60
+ 1. Edit darwin.config.ts to configure your setup
61
+ 2. Create your first agent:
62
+ darwin create my-agent
63
+
64
+ 3. Run it:
65
+ darwin run my-agent "your task here"
66
+ `);
67
+ }
68
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,eAAe,GAAG;;;;;;;;;;;CAWvB,CAAC;AAEF,MAAM,kBAAkB,GAAG;;CAE1B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAE9C,4BAA4B;IAC5B,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IAED,0BAA0B;IAC1B,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAED,oBAAoB;IACpB,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,aAAa,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;;;;;;;;CASb,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * darwin run <agent> "task"
3
+ *
4
+ * Runs an agent, optionally evaluates with critic, triggers Darwin evolution.
5
+ */
6
+ export declare function runCommand(args: string[]): Promise<void>;
7
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuJH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB9D"}