create-cogitator-app 0.1.1 → 0.2.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Cogitator Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -17,33 +17,33 @@ npx create-cogitator-app my-project -t swarm -p ollama --pm pnpm --docker --no-g
17
17
 
18
18
  ## Templates
19
19
 
20
- | Template | Description |
21
- |----------|-------------|
22
- | `basic` | Single agent with tools |
23
- | `memory` | Agent with Redis-backed persistent memory |
24
- | `swarm` | Multi-agent hierarchical swarm |
25
- | `workflow` | DAG workflow with sequential agent nodes |
26
- | `api-server` | Express REST API with Cogitator backend |
27
- | `nextjs` | Next.js chat app with streaming UI |
20
+ | Template | Description |
21
+ | ------------ | ----------------------------------------- |
22
+ | `basic` | Single agent with tools |
23
+ | `memory` | Agent with Redis-backed persistent memory |
24
+ | `swarm` | Multi-agent hierarchical swarm |
25
+ | `workflow` | DAG workflow with sequential agent nodes |
26
+ | `api-server` | Express REST API with Cogitator backend |
27
+ | `nextjs` | Next.js chat app with streaming UI |
28
28
 
29
29
  ## CLI Flags
30
30
 
31
- | Flag | Shorthand | Description |
32
- |------|-----------|-------------|
33
- | `--template <name>` | `-t` | Template to use |
34
- | `--provider <name>` | `-p` | LLM provider (`ollama`, `openai`, `anthropic`, `google`) |
35
- | `--pm <name>` | | Package manager (`pnpm`, `npm`, `yarn`, `bun`) |
36
- | `--docker` / `--no-docker` | | Include Docker Compose |
37
- | `--git` / `--no-git` | | Initialize git repository |
31
+ | Flag | Shorthand | Description |
32
+ | -------------------------- | --------- | -------------------------------------------------------- |
33
+ | `--template <name>` | `-t` | Template to use |
34
+ | `--provider <name>` | `-p` | LLM provider (`ollama`, `openai`, `anthropic`, `google`) |
35
+ | `--pm <name>` | | Package manager (`pnpm`, `npm`, `yarn`, `bun`) |
36
+ | `--docker` / `--no-docker` | | Include Docker Compose |
37
+ | `--git` / `--no-git` | | Initialize git repository |
38
38
 
39
39
  ## Providers
40
40
 
41
- | Provider | Default Model | Requires |
42
- |----------|---------------|---------|
43
- | `ollama` | `qwen2.5:7b` | [Ollama](https://ollama.com) installed locally |
44
- | `openai` | `gpt-4o` | `OPENAI_API_KEY` |
45
- | `anthropic` | `claude-sonnet-4-20250514` | `ANTHROPIC_API_KEY` |
46
- | `google` | `gemini-2.5-flash` | `GOOGLE_API_KEY` |
41
+ | Provider | Default Model | Requires |
42
+ | ----------- | ------------------- | ---------------------------------------------- |
43
+ | `ollama` | `qwen3:8b` | [Ollama](https://ollama.com) installed locally |
44
+ | `openai` | `gpt-6.1-sol` | `OPENAI_API_KEY` |
45
+ | `anthropic` | `claude-sonnet-5-5` | `ANTHROPIC_API_KEY` |
46
+ | `google` | `gemini-3.8-flash` | `GOOGLE_API_KEY` |
47
47
 
48
48
  ## Programmatic API
49
49
 
package/dist/index.js CHANGED
@@ -24,10 +24,10 @@ import path from "path";
24
24
 
25
25
  // src/utils/providers.ts
26
26
  var defaultModels = {
27
- ollama: "qwen2.5:7b",
28
- openai: "gpt-4o",
29
- anthropic: "claude-sonnet-4-20250514",
30
- google: "gemini-2.5-flash"
27
+ ollama: "qwen3:8b",
28
+ openai: "gpt-6.1-sol",
29
+ anthropic: "claude-sonnet-5-5",
30
+ google: "gemini-3.8-flash"
31
31
  };
32
32
  function providerConfig(provider) {
33
33
  switch (provider) {
@@ -980,7 +980,7 @@ async function collectOptions(args) {
980
980
  placeholder: "./my-agents",
981
981
  defaultValue: "my-agents",
982
982
  validate: (value) => {
983
- if (!value.trim()) return "Project name is required";
983
+ if (value && !value.trim()) return "Project name is required";
984
984
  return void 0;
985
985
  }
986
986
  });
@@ -1228,6 +1228,17 @@ function generateReadme(options) {
1228
1228
  return { path: "README.md", content: content.join("\n") };
1229
1229
  }
1230
1230
 
1231
+ // src/templates/base/pnpm-workspace.ts
1232
+ var PNPM_ALLOWED_BUILDS = ["better-sqlite3", "esbuild", "sharp"];
1233
+ function generatePnpmWorkspace() {
1234
+ return {
1235
+ path: "pnpm-workspace.yaml",
1236
+ content: ["allowBuilds:", ...PNPM_ALLOWED_BUILDS.map((name) => ` ${name}: true`), ""].join(
1237
+ "\n"
1238
+ )
1239
+ };
1240
+ }
1241
+
1231
1242
  // src/utils/git.ts
1232
1243
  import { execSync as execSync2 } from "child_process";
1233
1244
  function isGitInstalled() {
@@ -1279,6 +1290,9 @@ function collectFiles(options) {
1279
1290
  if (options.template !== "nextjs") {
1280
1291
  files.push(generateTsconfig());
1281
1292
  }
1293
+ if (options.packageManager === "pnpm") {
1294
+ files.push(generatePnpmWorkspace());
1295
+ }
1282
1296
  if (options.docker) {
1283
1297
  files.push(generateDockerCompose(options.provider));
1284
1298
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/utils/logger.ts","../src/prompts.ts","../src/utils/providers.ts","../src/templates/basic.ts","../src/templates/memory.ts","../src/templates/swarm.ts","../src/templates/workflow.ts","../src/templates/api-server.ts","../src/templates/nextjs.ts","../src/templates/index.ts","../src/utils/package-manager.ts","../src/scaffold.ts","../src/templates/base/tsconfig.ts","../src/templates/base/gitignore.ts","../src/templates/base/env-example.ts","../src/templates/base/docker-compose.ts","../src/templates/base/cogitator-yml.ts","../src/templates/base/readme.ts","../src/utils/git.ts"],"sourcesContent":["import * as p from '@clack/prompts';\nimport pc from 'picocolors';\nimport { banner } from './utils/logger.js';\nimport { parseArgs, collectOptions } from './prompts.js';\nimport { scaffold } from './scaffold.js';\nimport { devCommand } from './utils/package-manager.js';\n\nasync function main() {\n banner();\n\n p.intro(pc.cyan(\"Let's build something with AI agents\"));\n\n const args = parseArgs(process.argv.slice(2));\n const options = await collectOptions(args);\n\n await scaffold(options);\n\n const dev = devCommand(options.packageManager);\n\n p.outro(\n [\n pc.green('Done! ') + 'Next steps:',\n '',\n ` ${pc.cyan('cd')} ${options.name}`,\n ` ${pc.cyan(dev)}`,\n '',\n pc.dim('Docs: https://cogitator.dev/docs'),\n ].join('\\n')\n );\n}\n\nmain().catch((err) => {\n p.log.error(err instanceof Error ? err.message : String(err));\n process.exit(1);\n});\n","import pc from 'picocolors';\n\nexport function banner() {\n const art = [\n '',\n ` ${pc.cyan('╔═══════════════════════════════════════╗')}`,\n ` ${pc.cyan('║')} ${pc.bold(pc.white('create-cogitator-app'))} ${pc.dim('v0.1.0')} ${pc.cyan('║')}`,\n ` ${pc.cyan('║')} ${pc.dim('Build AI agents in minutes')} ${pc.cyan('║')}`,\n ` ${pc.cyan('╚═══════════════════════════════════════╝')}`,\n '',\n ];\n console.log(art.join('\\n'));\n}\n","import * as p from '@clack/prompts';\nimport path from 'node:path';\nimport type { LLMProvider, PackageManager, ProjectOptions, Template } from './types.js';\nimport { templateChoices } from './templates/index.js';\nimport { detectPackageManager } from './utils/package-manager.js';\n\ninterface ParsedArgs {\n name?: string;\n template?: Template;\n provider?: LLMProvider;\n packageManager?: PackageManager;\n docker?: boolean;\n git?: boolean;\n yes?: boolean;\n}\n\nconst validTemplates: Template[] = ['basic', 'memory', 'swarm', 'workflow', 'api-server', 'nextjs'];\nconst validProviders: LLMProvider[] = ['ollama', 'openai', 'anthropic', 'google'];\nconst validPMs: PackageManager[] = ['pnpm', 'npm', 'yarn', 'bun'];\n\nexport function parseArgs(args: string[]): ParsedArgs {\n const parsed: ParsedArgs = {};\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n if (arg === '--template' || arg === '-t') {\n if (i + 1 < args.length) {\n const val = args[++i] as Template;\n if (validTemplates.includes(val)) parsed.template = val;\n }\n } else if (arg === '--provider' || arg === '-p') {\n if (i + 1 < args.length) {\n const val = args[++i] as LLMProvider;\n if (validProviders.includes(val)) parsed.provider = val;\n }\n } else if (arg === '--pm') {\n if (i + 1 < args.length) {\n const val = args[++i] as PackageManager;\n if (validPMs.includes(val)) parsed.packageManager = val;\n }\n } else if (arg === '--docker') {\n parsed.docker = true;\n } else if (arg === '--no-docker') {\n parsed.docker = false;\n } else if (arg === '--git') {\n parsed.git = true;\n } else if (arg === '--no-git') {\n parsed.git = false;\n } else if (arg === '-y' || arg === '--yes') {\n parsed.yes = true;\n } else if (!arg.startsWith('-') && !parsed.name) {\n parsed.name = arg;\n }\n }\n\n return parsed;\n}\n\nexport async function collectOptions(args: ParsedArgs): Promise<ProjectOptions> {\n const rawName =\n args.name ||\n ((await p.text({\n message: 'Where should we create your project?',\n placeholder: './my-agents',\n defaultValue: 'my-agents',\n validate: (value) => {\n if (!value.trim()) return 'Project name is required';\n return undefined;\n },\n })) as string);\n\n if (p.isCancel(rawName)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const name = rawName.trim();\n const projectName = path.basename(path.normalize(name).replace(/^\\.\\//, '').replace(/^\\.\\\\/, ''));\n const projectPath = path.resolve(process.cwd(), name);\n\n const template =\n args.template ||\n ((await p.select({\n message: 'Which template would you like?',\n options: templateChoices,\n })) as Template);\n\n if (p.isCancel(template)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const provider =\n args.provider ||\n ((await p.select({\n message: 'Which LLM provider?',\n options: [\n {\n value: 'ollama' as const,\n label: 'Ollama',\n hint: 'local, free — requires Ollama installed',\n },\n { value: 'openai' as const, label: 'OpenAI', hint: 'GPT-4o' },\n { value: 'anthropic' as const, label: 'Anthropic', hint: 'Claude Sonnet' },\n { value: 'google' as const, label: 'Google Gemini', hint: 'Gemini 2.5 Flash' },\n ],\n })) as LLMProvider);\n\n if (p.isCancel(provider)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const packageManager =\n args.packageManager ||\n ((await p.select({\n message: 'Package manager?',\n options: [\n { value: 'pnpm' as const, label: 'pnpm' },\n { value: 'npm' as const, label: 'npm' },\n { value: 'yarn' as const, label: 'yarn' },\n { value: 'bun' as const, label: 'bun' },\n ],\n initialValue: detectPackageManager(),\n })) as PackageManager);\n\n if (p.isCancel(packageManager)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const docker =\n args.docker ??\n ((await p.confirm({\n message:\n 'Include Docker Compose? (Redis + Postgres' + (provider === 'ollama' ? ' + Ollama)' : ')'),\n initialValue: true,\n })) as boolean);\n\n if (p.isCancel(docker)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const git =\n args.git ??\n ((await p.confirm({\n message: 'Initialize git repository?',\n initialValue: true,\n })) as boolean);\n\n if (p.isCancel(git)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n return {\n name: projectName,\n path: projectPath,\n template,\n provider,\n packageManager,\n docker,\n git,\n };\n}\n","import type { LLMProvider } from '../types.js';\n\nexport const defaultModels: Record<LLMProvider, string> = {\n ollama: 'qwen2.5:7b',\n openai: 'gpt-4o',\n anthropic: 'claude-sonnet-4-20250514',\n google: 'gemini-2.5-flash',\n};\n\nexport function providerEnvKey(provider: LLMProvider): string {\n const map: Record<LLMProvider, string> = {\n ollama: 'OLLAMA_BASE_URL',\n openai: 'OPENAI_API_KEY',\n anthropic: 'ANTHROPIC_API_KEY',\n google: 'GOOGLE_API_KEY',\n };\n return map[provider];\n}\n\nexport function providerConfig(provider: LLMProvider): string {\n switch (provider) {\n case 'ollama':\n return [\n ` llm: {`,\n ` defaultProvider: 'ollama',`,\n ` providers: {`,\n ` ollama: { baseUrl: process.env.OLLAMA_BASE_URL || 'http://localhost:11434' },`,\n ` },`,\n ` },`,\n ].join('\\n');\n\n case 'openai':\n return [\n ` llm: {`,\n ` defaultProvider: 'openai',`,\n ` providers: {`,\n ` openai: { apiKey: process.env.OPENAI_API_KEY! },`,\n ` },`,\n ` },`,\n ].join('\\n');\n\n case 'anthropic':\n return [\n ` llm: {`,\n ` defaultProvider: 'anthropic',`,\n ` providers: {`,\n ` anthropic: { apiKey: process.env.ANTHROPIC_API_KEY! },`,\n ` },`,\n ` },`,\n ].join('\\n');\n\n case 'google':\n return [\n ` llm: {`,\n ` defaultProvider: 'google',`,\n ` providers: {`,\n ` google: { apiKey: process.env.GOOGLE_API_KEY! },`,\n ` },`,\n ` },`,\n ].join('\\n');\n }\n}\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const basicTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const indexTs = [\n `import { Cogitator, Agent } from '@cogitator-ai/core'`,\n `import { searchTool, summarizeTool } from './tools.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `const agent = new Agent({`,\n ` name: '${options.name}-agent',`,\n ` model: '${model}',`,\n ` instructions: 'You are a helpful AI assistant. Use your tools to help the user.',`,\n ` tools: [searchTool, summarizeTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n `async function main() {`,\n ` const result = await cogitator.run(agent, {`,\n ` input: 'What is Cogitator and how does it work?',`,\n ` })`,\n ``,\n ` console.log(result.output)`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n const toolsTs = [\n `import { tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `export const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information on a topic',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('The search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Search results for: \\${query}\\\\n\\\\nCogitator is a self-hosted AI agent runtime for TypeScript.\\``,\n ` },`,\n `})`,\n ``,\n `export const summarizeTool = tool({`,\n ` name: 'summarize',`,\n ` description: 'Summarize a piece of text',`,\n ` parameters: z.object({`,\n ` text: z.string().describe('The text to summarize'),`,\n ` maxLength: z.number().optional().describe('Maximum summary length'),`,\n ` }),`,\n ` execute: async ({ text, maxLength }) => {`,\n ` const limit = maxLength || 200`,\n ` return text.length > limit ? text.slice(0, limit) + '...' : text`,\n ` },`,\n `})`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/tools.ts', content: toolsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const memoryTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const indexTs = [\n `import { Cogitator, Agent } from '@cogitator-ai/core'`,\n `import { searchTool, noteTool } from './tools.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n ` memory: {`,\n ` adapter: 'redis',`,\n ` redis: { url: process.env.REDIS_URL || 'redis://localhost:6379' },`,\n ` },`,\n `})`,\n ``,\n `const agent = new Agent({`,\n ` name: '${options.name}-agent',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are an AI assistant with persistent memory.',`,\n ` 'You remember past conversations and user preferences.',`,\n ` 'Use the note tool to save important information.',`,\n ` ].join(' '),`,\n ` tools: [searchTool, noteTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n `async function main() {`,\n ` const threadId = 'demo-thread'`,\n ``,\n ` const result1 = await cogitator.run(agent, {`,\n ` input: 'My name is Alex and I prefer TypeScript.',`,\n ` threadId,`,\n ` useMemory: true,`,\n ` })`,\n ` console.log('Response 1:', result1.output)`,\n ``,\n ` const result2 = await cogitator.run(agent, {`,\n ` input: 'What is my name and preferred language?',`,\n ` threadId,`,\n ` useMemory: true,`,\n ` })`,\n ` console.log('Response 2:', result2.output)`,\n ``,\n ` await cogitator.close()`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n const toolsTs = [\n `import { tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `export const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Results for: \\${query}\\``,\n ` },`,\n `})`,\n ``,\n `export const noteTool = tool({`,\n ` name: 'note',`,\n ` description: 'Save a note for later reference',`,\n ` parameters: z.object({`,\n ` title: z.string().describe('Note title'),`,\n ` content: z.string().describe('Note content'),`,\n ` }),`,\n ` execute: async ({ title, content }) => {`,\n ` return \\`Saved note \"\\${title}\": \\${content}\\``,\n ` },`,\n `})`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/tools.ts', content: toolsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/memory': 'latest',\n '@cogitator-ai/redis': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const swarmTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const researcherTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n `import { searchTool } from '../tools.js'`,\n ``,\n `export const researcher = new Agent({`,\n ` name: 'researcher',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are a research specialist.',`,\n ` 'Use the search tool to find information.',`,\n ` 'Provide detailed, factual findings.',`,\n ` ].join(' '),`,\n ` tools: [searchTool],`,\n ` temperature: 0.3,`,\n `})`,\n ``,\n ].join('\\n');\n\n const writerTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n ``,\n `export const writer = new Agent({`,\n ` name: 'writer',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are a skilled content writer.',`,\n ` 'Take research findings and craft well-structured, engaging content.',`,\n ` 'Focus on clarity and readability.',`,\n ` ].join(' '),`,\n ` temperature: 0.8,`,\n `})`,\n ``,\n ].join('\\n');\n\n const reviewerTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n ``,\n `export const reviewer = new Agent({`,\n ` name: 'reviewer',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are a meticulous content reviewer.',`,\n ` 'Check for accuracy, grammar, and overall quality.',`,\n ` 'Provide constructive feedback.',`,\n ` ].join(' '),`,\n ` temperature: 0.2,`,\n `})`,\n ``,\n ].join('\\n');\n\n const toolsTs = [\n `import { tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `export const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information on a topic',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Research findings for \"\\${query}\": Cogitator is a production-grade AI agent runtime for TypeScript that supports swarms, workflows, and tool execution.\\``,\n ` },`,\n `})`,\n ``,\n ].join('\\n');\n\n const indexTs = [\n `import { Cogitator } from '@cogitator-ai/core'`,\n `import { Swarm } from '@cogitator-ai/swarms'`,\n `import { researcher } from './agents/researcher.js'`,\n `import { writer } from './agents/writer.js'`,\n `import { reviewer } from './agents/reviewer.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `const team = new Swarm(cogitator, {`,\n ` name: '${options.name}-team',`,\n ` strategy: 'hierarchical',`,\n ` supervisor: reviewer,`,\n ` workers: [researcher, writer],`,\n ` hierarchical: {`,\n ` visibility: 'full',`,\n ` workerCommunication: true,`,\n ` },`,\n ` resources: {`,\n ` maxConcurrency: 3,`,\n ` timeout: 120000,`,\n ` },`,\n `})`,\n ``,\n `async function main() {`,\n ` console.log('Starting swarm...')`,\n ``,\n ` const result = await team.run({`,\n ` input: 'Write a comprehensive article about AI agent orchestration.',`,\n ` })`,\n ``,\n ` console.log('Result:', result.output)`,\n ` console.log('Strategy:', result.strategy)`,\n ``,\n ` await team.close()`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/tools.ts', content: toolsTs },\n { path: 'src/agents/researcher.ts', content: researcherTs },\n { path: 'src/agents/writer.ts', content: writerTs },\n { path: 'src/agents/reviewer.ts', content: reviewerTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/swarms': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const workflowTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const agentsTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n ``,\n `export const analyzer = new Agent({`,\n ` name: 'analyzer',`,\n ` model: '${model}',`,\n ` instructions: 'You analyze input data and extract key information. Be thorough and structured.',`,\n ` temperature: 0.3,`,\n `})`,\n ``,\n `export const processor = new Agent({`,\n ` name: 'processor',`,\n ` model: '${model}',`,\n ` instructions: 'You process analyzed data and transform it into actionable insights.',`,\n ` temperature: 0.5,`,\n `})`,\n ``,\n `export const formatter = new Agent({`,\n ` name: 'formatter',`,\n ` model: '${model}',`,\n ` instructions: 'You format processed data into a clean, readable report.',`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n ].join('\\n');\n\n const indexTs = [\n `import { Cogitator } from '@cogitator-ai/core'`,\n `import {`,\n ` WorkflowBuilder,`,\n ` WorkflowExecutor,`,\n ` agentNode,`,\n ` functionNode,`,\n `} from '@cogitator-ai/workflows'`,\n `import { analyzer, processor, formatter } from './agents.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `interface WorkflowState {`,\n ` input: string`,\n ` analysis?: string`,\n ` processed?: string`,\n ` report?: string`,\n `}`,\n ``,\n `const analyzeNode = agentNode<WorkflowState>(analyzer, {`,\n ` inputMapper: (state) => \\`Analyze the following: \\${state.input}\\`,`,\n ` stateMapper: (result) => ({ analysis: result.output }),`,\n `})`,\n ``,\n `const processNode = agentNode<WorkflowState>(processor, {`,\n ` inputMapper: (state) => \\`Process this analysis: \\${state.analysis ?? ''}\\`,`,\n ` stateMapper: (result) => ({ processed: result.output }),`,\n `})`,\n ``,\n `const formatNode = agentNode<WorkflowState>(formatter, {`,\n ` inputMapper: (state) => \\`Format this into a report: \\${state.processed ?? ''}\\`,`,\n ` stateMapper: (result) => ({ report: result.output }),`,\n `})`,\n ``,\n `const outputNode = functionNode<WorkflowState>(`,\n ` 'output',`,\n ` async (state) => state.report,`,\n `)`,\n ``,\n `const workflow = new WorkflowBuilder<WorkflowState>('${options.name}-workflow')`,\n ` .initialState({ input: '' })`,\n ` .entryPoint(analyzeNode.name)`,\n ` .addNode(analyzeNode.name, analyzeNode.fn)`,\n ` .addNode(processNode.name, processNode.fn, { after: [analyzeNode.name] })`,\n ` .addNode(formatNode.name, formatNode.fn, { after: [processNode.name] })`,\n ` .addNode(outputNode.name, outputNode.fn, { after: [formatNode.name] })`,\n ` .build()`,\n ``,\n `async function main() {`,\n ` const executor = new WorkflowExecutor(cogitator)`,\n ``,\n ` console.log('Starting workflow...')`,\n ``,\n ` const result = await executor.execute(workflow, {`,\n ` input: 'Analyze the current state of AI agent frameworks and their adoption in enterprise.',`,\n ` })`,\n ``,\n ` console.log('Workflow completed!')`,\n ` console.log('Result:', JSON.stringify(result, null, 2))`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/agents.ts', content: agentsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/workflows': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const apiServerTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const agentsTs = [\n `import { Agent, tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Results for: \\${query}\\``,\n ` },`,\n `})`,\n ``,\n `export const assistant = new Agent({`,\n ` name: 'assistant',`,\n ` model: '${model}',`,\n ` instructions: 'You are a helpful API assistant. Answer questions clearly and concisely.',`,\n ` tools: [searchTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n `export const coder = new Agent({`,\n ` name: 'coder',`,\n ` model: '${model}',`,\n ` instructions: 'You are an expert programmer. Write clean, well-structured code.',`,\n ` temperature: 0.3,`,\n `})`,\n ``,\n ].join('\\n');\n\n const indexTs = [\n `import express from 'express'`,\n `import { Cogitator } from '@cogitator-ai/core'`,\n `import { CogitatorServer } from '@cogitator-ai/express'`,\n `import { assistant, coder } from './agents.js'`,\n ``,\n `const app = express()`,\n `const port = process.env.PORT || 3000`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `const server = new CogitatorServer({`,\n ` app,`,\n ` cogitator,`,\n ` agents: { assistant, coder },`,\n ` config: {`,\n ` basePath: '/api',`,\n ` enableSwagger: true,`,\n ` cors: { origin: '*' },`,\n ` swagger: {`,\n ` title: '${options.name} API',`,\n ` version: '1.0.0',`,\n ` },`,\n ` },`,\n `})`,\n ``,\n `async function main() {`,\n ` await server.init()`,\n ``,\n ` app.listen(port, () => {`,\n ` console.log(\\`Server running at http://localhost:\\${port}\\`)`,\n ` console.log(\\`Swagger docs at http://localhost:\\${port}/api/docs\\`)`,\n ` })`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/agents.ts', content: agentsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/express': 'latest',\n express: '^4.21.0',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n '@types/express': '^5.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const nextjsTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const agentTs = [\n `import { Cogitator, Agent, tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Results for: \\${query}\\``,\n ` },`,\n `})`,\n ``,\n `export const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `export const agent = new Agent({`,\n ` name: '${options.name}-chat',`,\n ` model: '${model}',`,\n ` instructions: 'You are a helpful AI chat assistant. Be conversational and helpful.',`,\n ` tools: [searchTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n ].join('\\n');\n\n const routeTs = [\n `import { createChatHandler } from '@cogitator-ai/next'`,\n `import { cogitator, agent } from '@/lib/agent'`,\n ``,\n `export const POST = createChatHandler(cogitator, agent)`,\n ``,\n ].join('\\n');\n\n const pageTsx = [\n `'use client'`,\n ``,\n `import { useCogitatorChat } from '@cogitator-ai/next/client'`,\n `import { useState, useRef, useEffect } from 'react'`,\n ``,\n `export default function Home() {`,\n ` const { messages, input, setInput, send, isLoading } = useCogitatorChat({`,\n ` api: '/api/chat',`,\n ` })`,\n ` const messagesEndRef = useRef<HTMLDivElement>(null)`,\n ``,\n ` useEffect(() => {`,\n ` messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' })`,\n ` }, [messages])`,\n ``,\n ` const handleSubmit = (e: React.FormEvent) => {`,\n ` e.preventDefault()`,\n ` if (!input.trim() || isLoading) return`,\n ` send(input)`,\n ` setInput('')`,\n ` }`,\n ``,\n ` return (`,\n ` <main className=\"flex min-h-screen flex-col items-center p-4 bg-gray-950 text-white\">`,\n ` <div className=\"w-full max-w-2xl flex flex-col h-screen\">`,\n ` <header className=\"py-6 text-center\">`,\n ` <h1 className=\"text-2xl font-bold\">${options.name}</h1>`,\n ` <p className=\"text-gray-400 text-sm mt-1\">Powered by Cogitator</p>`,\n ` </header>`,\n ``,\n ` <div className=\"flex-1 overflow-y-auto space-y-4 pb-4\">`,\n ` {messages.map((msg, i) => (`,\n ` <div`,\n ` key={i}`,\n ` className={\\`flex \\${msg.role === 'user' ? 'justify-end' : 'justify-start'}\\`}`,\n ` >`,\n ` <div`,\n ` className={\\`max-w-[80%] rounded-2xl px-4 py-2 \\${`,\n ` msg.role === 'user'`,\n ` ? 'bg-blue-600 text-white'`,\n ` : 'bg-gray-800 text-gray-100'`,\n ` }\\`}`,\n ` >`,\n ` {msg.content}`,\n ` </div>`,\n ` </div>`,\n ` ))}`,\n ` {isLoading && (`,\n ` <div className=\"flex justify-start\">`,\n ` <div className=\"bg-gray-800 rounded-2xl px-4 py-2 text-gray-400\">`,\n ` Thinking...`,\n ` </div>`,\n ` </div>`,\n ` )}`,\n ` <div ref={messagesEndRef} />`,\n ` </div>`,\n ``,\n ` <form onSubmit={handleSubmit} className=\"flex gap-2 py-4\">`,\n ` <input`,\n ` value={input}`,\n ` onChange={(e) => setInput(e.target.value)}`,\n ` placeholder=\"Type a message...\"`,\n ` className=\"flex-1 bg-gray-800 border border-gray-700 rounded-xl px-4 py-3 text-white placeholder-gray-500 focus:outline-none focus:border-blue-500\"`,\n ` />`,\n ` <button`,\n ` type=\"submit\"`,\n ` disabled={isLoading || !input.trim()}`,\n ` className=\"bg-blue-600 hover:bg-blue-500 disabled:opacity-50 disabled:cursor-not-allowed text-white rounded-xl px-6 py-3 font-medium transition-colors\"`,\n ` >`,\n ` Send`,\n ` </button>`,\n ` </form>`,\n ` </div>`,\n ` </main>`,\n ` )`,\n `}`,\n ``,\n ].join('\\n');\n\n const layoutTsx = [\n `import type { Metadata } from 'next'`,\n `import './globals.css'`,\n ``,\n `export const metadata: Metadata = {`,\n ` title: '${options.name}',`,\n ` description: 'AI chat app powered by Cogitator',`,\n `}`,\n ``,\n `export default function RootLayout({`,\n ` children,`,\n `}: {`,\n ` children: React.ReactNode`,\n `}) {`,\n ` return (`,\n ` <html lang=\"en\">`,\n ` <body>{children}</body>`,\n ` </html>`,\n ` )`,\n `}`,\n ``,\n ].join('\\n');\n\n const globalsCss = [\n `@tailwind base;`,\n `@tailwind components;`,\n `@tailwind utilities;`,\n ``,\n ].join('\\n');\n\n const nextConfig = [\n `import type { NextConfig } from 'next'`,\n ``,\n `const config: NextConfig = {}`,\n ``,\n `export default config`,\n ``,\n ].join('\\n');\n\n const tsconfigJson = JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2017',\n lib: ['dom', 'dom.iterable', 'esnext'],\n allowJs: true,\n skipLibCheck: true,\n strict: true,\n noEmit: true,\n esModuleInterop: true,\n module: 'esnext',\n moduleResolution: 'bundler',\n resolveJsonModule: true,\n isolatedModules: true,\n jsx: 'preserve',\n incremental: true,\n plugins: [{ name: 'next' }],\n paths: { '@/*': ['./src/*'] },\n },\n include: ['next-env.d.ts', '**/*.ts', '**/*.tsx', '.next/types/**/*.ts'],\n exclude: ['node_modules'],\n },\n null,\n 2\n );\n\n const tailwindConfig = [\n `import type { Config } from 'tailwindcss'`,\n ``,\n `const config: Config = {`,\n ` content: ['./src/**/*.{ts,tsx}'],`,\n ` theme: { extend: {} },`,\n ` plugins: [],`,\n `}`,\n ``,\n `export default config`,\n ``,\n ].join('\\n');\n\n const postcssConfig = [\n `const config = {`,\n ` plugins: {`,\n ` tailwindcss: {},`,\n ` autoprefixer: {},`,\n ` },`,\n `}`,\n ``,\n `export default config`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/lib/agent.ts', content: agentTs },\n { path: 'src/app/api/chat/route.ts', content: routeTs },\n { path: 'src/app/page.tsx', content: pageTsx },\n { path: 'src/app/layout.tsx', content: layoutTsx },\n { path: 'src/app/globals.css', content: globalsCss },\n { path: 'next.config.ts', content: nextConfig },\n { path: 'tsconfig.json', content: tsconfigJson },\n { path: 'tailwind.config.ts', content: tailwindConfig },\n { path: 'postcss.config.mjs', content: postcssConfig },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/next': 'latest',\n next: '^15.0.0',\n react: '^19.0.0',\n 'react-dom': '^19.0.0',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n '@types/node': '^22.0.0',\n '@types/react': '^19.0.0',\n '@types/react-dom': '^19.0.0',\n tailwindcss: '^3.4.0',\n autoprefixer: '^10.4.0',\n postcss: '^8.4.0',\n };\n },\n\n scripts() {\n return {\n dev: 'next dev',\n build: 'next build',\n start: 'next start',\n lint: 'next lint',\n };\n },\n};\n","import type { Template, TemplateGenerator } from '../types.js';\nimport { basicTemplate } from './basic.js';\nimport { memoryTemplate } from './memory.js';\nimport { swarmTemplate } from './swarm.js';\nimport { workflowTemplate } from './workflow.js';\nimport { apiServerTemplate } from './api-server.js';\nimport { nextjsTemplate } from './nextjs.js';\n\nconst templates: Record<Template, TemplateGenerator> = {\n basic: basicTemplate,\n memory: memoryTemplate,\n swarm: swarmTemplate,\n workflow: workflowTemplate,\n 'api-server': apiServerTemplate,\n nextjs: nextjsTemplate,\n};\n\nexport function getTemplate(name: Template): TemplateGenerator {\n return templates[name];\n}\n\nexport const templateChoices: Array<{\n value: Template;\n label: string;\n hint: string;\n}> = [\n {\n value: 'basic',\n label: 'Basic agent',\n hint: 'Single agent with tools — best for getting started',\n },\n { value: 'memory', label: 'Agent with memory', hint: 'Persistent memory with Redis' },\n {\n value: 'swarm',\n label: 'Multi-agent swarm',\n hint: 'Team of agents with hierarchical coordination',\n },\n { value: 'workflow', label: 'DAG workflow', hint: 'Multi-step pipeline with checkpoints' },\n {\n value: 'api-server',\n label: 'REST API server',\n hint: 'Express server exposing agents via HTTP',\n },\n { value: 'nextjs', label: 'Next.js chat app', hint: 'Full-stack chat app with streaming' },\n];\n","import { execSync } from 'node:child_process';\nimport type { PackageManager } from '../types.js';\n\nexport function detectPackageManager(): PackageManager {\n const ua = process.env.npm_config_user_agent;\n if (ua) {\n if (ua.startsWith('pnpm')) return 'pnpm';\n if (ua.startsWith('yarn')) return 'yarn';\n if (ua.startsWith('bun')) return 'bun';\n }\n return 'pnpm';\n}\n\nexport function installDependencies(cwd: string, pm: PackageManager) {\n execSync(`${pm} install`, { cwd, stdio: 'inherit' });\n}\n\nexport function devCommand(pm: PackageManager): string {\n if (pm === 'npm') return 'npm run dev';\n return `${pm} dev`;\n}\n\nexport function runCommand(pm: PackageManager): string {\n if (pm === 'npm') return 'npx';\n if (pm === 'pnpm') return 'pnpm dlx';\n if (pm === 'yarn') return 'yarn dlx';\n return 'bunx';\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport * as p from '@clack/prompts';\nimport type { ProjectOptions, TemplateFile } from './types.js';\nimport { getTemplate } from './templates/index.js';\nimport { generateTsconfig } from './templates/base/tsconfig.js';\nimport { generateGitignore } from './templates/base/gitignore.js';\nimport { generateEnvExample } from './templates/base/env-example.js';\nimport { generateDockerCompose } from './templates/base/docker-compose.js';\nimport { generateCogitatorYml } from './templates/base/cogitator-yml.js';\nimport { generateReadme } from './templates/base/readme.js';\nimport { installDependencies } from './utils/package-manager.js';\nimport { initGitRepo, isGitInstalled } from './utils/git.js';\n\nfunction writeFile(basePath: string, file: TemplateFile) {\n const fullPath = path.join(basePath, file.path);\n fs.mkdirSync(path.dirname(fullPath), { recursive: true });\n fs.writeFileSync(fullPath, file.content, 'utf-8');\n}\n\nfunction buildPackageJson(options: ProjectOptions): string {\n const template = getTemplate(options.template);\n const isNextjs = options.template === 'nextjs';\n\n const pkg: Record<string, unknown> = {\n name: options.name,\n version: '0.1.0',\n private: true,\n ...(isNextjs ? {} : { type: 'module' }),\n scripts: template.scripts(),\n dependencies: template.dependencies(),\n devDependencies: template.devDependencies(),\n };\n\n return JSON.stringify(pkg, null, 2) + '\\n';\n}\n\nfunction collectFiles(options: ProjectOptions): TemplateFile[] {\n const template = getTemplate(options.template);\n const files: TemplateFile[] = [];\n\n files.push({ path: 'package.json', content: buildPackageJson(options) });\n files.push(...template.files(options));\n files.push(generateGitignore());\n files.push(generateEnvExample(options.provider, options.template));\n files.push(generateCogitatorYml(options.provider));\n files.push(generateReadme(options));\n\n if (options.template !== 'nextjs') {\n files.push(generateTsconfig());\n }\n\n if (options.docker) {\n files.push(generateDockerCompose(options.provider));\n }\n\n return files;\n}\n\nexport async function scaffold(options: ProjectOptions) {\n if (fs.existsSync(options.path) && fs.readdirSync(options.path).length > 0) {\n throw new Error(`Directory \"${options.path}\" already exists and is not empty`);\n }\n\n const s = p.spinner();\n\n s.start('Generating project files');\n const files = collectFiles(options);\n\n fs.mkdirSync(options.path, { recursive: true });\n for (const file of files) {\n writeFile(options.path, file);\n }\n s.stop('Generated project files');\n\n s.start('Installing dependencies');\n try {\n installDependencies(options.path, options.packageManager);\n s.stop('Installed dependencies');\n } catch {\n s.stop('Failed to install dependencies — run manually');\n }\n\n if (options.git && isGitInstalled()) {\n s.start('Initializing git repository');\n try {\n initGitRepo(options.path);\n s.stop('Initialized git repository');\n } catch {\n s.stop('Failed to initialize git — run manually');\n }\n }\n}\n","import type { TemplateFile } from '../../types.js';\n\nexport function generateTsconfig(): TemplateFile {\n return {\n path: 'tsconfig.json',\n content: JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'NodeNext',\n moduleResolution: 'NodeNext',\n esModuleInterop: true,\n strict: true,\n skipLibCheck: true,\n outDir: 'dist',\n rootDir: 'src',\n declaration: true,\n resolveJsonModule: true,\n isolatedModules: true,\n },\n include: ['src'],\n },\n null,\n 2\n ),\n };\n}\n","import type { TemplateFile } from '../../types.js';\n\nexport function generateGitignore(): TemplateFile {\n return {\n path: '.gitignore',\n content: [\n 'node_modules/',\n 'dist/',\n '.env',\n '.env.local',\n '*.log',\n '.DS_Store',\n 'coverage/',\n '.turbo/',\n '',\n ].join('\\n'),\n };\n}\n","import type { LLMProvider, Template, TemplateFile } from '../../types.js';\n\nexport function generateEnvExample(provider: LLMProvider, template?: Template): TemplateFile {\n const lines: string[] = ['# Cogitator Environment Variables', ''];\n\n switch (provider) {\n case 'ollama':\n lines.push('# Ollama (default: http://localhost:11434)');\n lines.push('# OLLAMA_BASE_URL=http://localhost:11434');\n break;\n case 'openai':\n lines.push('# OpenAI');\n lines.push('OPENAI_API_KEY=sk-...');\n break;\n case 'anthropic':\n lines.push('# Anthropic');\n lines.push('ANTHROPIC_API_KEY=sk-ant-...');\n break;\n case 'google':\n lines.push('# Google AI');\n lines.push('GOOGLE_API_KEY=...');\n break;\n }\n\n if (template === 'memory') {\n lines.push('');\n lines.push('# Redis');\n lines.push('REDIS_URL=redis://localhost:6379');\n }\n\n lines.push('');\n\n return { path: '.env.example', content: lines.join('\\n') };\n}\n","import type { LLMProvider, TemplateFile } from '../../types.js';\n\nexport function generateDockerCompose(provider: LLMProvider): TemplateFile {\n const services: string[] = [];\n\n if (provider === 'ollama') {\n services.push(\n ...[\n ' ollama:',\n ' image: ollama/ollama:latest',\n ' ports:',\n ' - \"11434:11434\"',\n ' volumes:',\n ' - ollama_data:/root/.ollama',\n '',\n ]\n );\n }\n\n services.push(\n ...[\n ' redis:',\n ' image: redis:7-alpine',\n ' ports:',\n ' - \"6379:6379\"',\n ' volumes:',\n ' - redis_data:/data',\n '',\n ' postgres:',\n ' image: postgres:16-alpine',\n ' ports:',\n ' - \"5432:5432\"',\n ' environment:',\n ' POSTGRES_USER: ${POSTGRES_USER:-cogitator}',\n ' POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-cogitator}',\n ' POSTGRES_DB: ${POSTGRES_DB:-cogitator}',\n ' volumes:',\n ' - postgres_data:/var/lib/postgresql/data',\n ]\n );\n\n const volumes = ['volumes:'];\n if (provider === 'ollama') volumes.push(' ollama_data:');\n volumes.push(' redis_data:', ' postgres_data:');\n\n const content = ['services:', ...services, '', ...volumes, ''].join('\\n');\n\n return { path: 'docker-compose.yml', content };\n}\n","import type { LLMProvider, TemplateFile } from '../../types.js';\nimport { defaultModels } from '../../utils/providers.js';\n\nexport function generateCogitatorYml(provider: LLMProvider): TemplateFile {\n const model = defaultModels[provider];\n\n const lines = [`provider: ${provider}`, `model: ${model}`, ''];\n\n if (provider === 'ollama') {\n lines.push('ollama:', ' baseUrl: http://localhost:11434', '');\n }\n\n return { path: 'cogitator.yml', content: lines.join('\\n') };\n}\n","import type { ProjectOptions, TemplateFile } from '../../types.js';\nimport { devCommand } from '../../utils/package-manager.js';\n\nconst templateNames: Record<string, string> = {\n basic: 'Basic Agent',\n memory: 'Agent with Memory',\n swarm: 'Multi-Agent Swarm',\n workflow: 'DAG Workflow',\n 'api-server': 'REST API Server',\n nextjs: 'Next.js Chat App',\n};\n\nexport function generateReadme(options: ProjectOptions): TemplateFile {\n const dev = devCommand(options.packageManager);\n const templateName = templateNames[options.template] || options.template;\n\n const content = [\n `# ${options.name}`,\n '',\n `> Created with [create-cogitator-app](https://github.com/cogitator-ai/cogitator) — ${templateName} template`,\n '',\n '## Getting Started',\n '',\n '```bash',\n `# Install dependencies`,\n `${options.packageManager} install`,\n '',\n `# Run the project`,\n dev,\n '```',\n '',\n ...(options.docker\n ? ['## Docker Services', '', '```bash', 'docker compose up -d', '```', '']\n : []),\n '## Learn More',\n '',\n '- [Cogitator Documentation](https://cogitator.dev/docs)',\n '- [GitHub Repository](https://github.com/cogitator-ai/cogitator)',\n '',\n ];\n\n return { path: 'README.md', content: content.join('\\n') };\n}\n","import { execSync } from 'node:child_process';\n\nexport function isGitInstalled(): boolean {\n try {\n execSync('git --version', { stdio: 'ignore' });\n return true;\n } catch {\n return false;\n }\n}\n\nexport function initGitRepo(cwd: string) {\n execSync('git init', { cwd, stdio: 'ignore' });\n execSync('git add -A', { cwd, stdio: 'ignore' });\n execSync(\n 'git -c user.name=\"Cogitator\" -c user.email=\"init@cogitator.dev\" commit -m \"feat: initial project scaffold\"',\n { cwd, stdio: 'ignore' }\n );\n}\n"],"mappings":"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","names":["p","pc","path","p","execSync","path","pc"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/utils/logger.ts","../src/prompts.ts","../src/utils/providers.ts","../src/templates/basic.ts","../src/templates/memory.ts","../src/templates/swarm.ts","../src/templates/workflow.ts","../src/templates/api-server.ts","../src/templates/nextjs.ts","../src/templates/index.ts","../src/utils/package-manager.ts","../src/scaffold.ts","../src/templates/base/tsconfig.ts","../src/templates/base/gitignore.ts","../src/templates/base/env-example.ts","../src/templates/base/docker-compose.ts","../src/templates/base/cogitator-yml.ts","../src/templates/base/readme.ts","../src/templates/base/pnpm-workspace.ts","../src/utils/git.ts"],"sourcesContent":["import * as p from '@clack/prompts';\nimport pc from 'picocolors';\nimport { banner } from './utils/logger.js';\nimport { parseArgs, collectOptions } from './prompts.js';\nimport { scaffold } from './scaffold.js';\nimport { devCommand } from './utils/package-manager.js';\n\nasync function main() {\n banner();\n\n p.intro(pc.cyan(\"Let's build something with AI agents\"));\n\n const args = parseArgs(process.argv.slice(2));\n const options = await collectOptions(args);\n\n await scaffold(options);\n\n const dev = devCommand(options.packageManager);\n\n p.outro(\n [\n pc.green('Done! ') + 'Next steps:',\n '',\n ` ${pc.cyan('cd')} ${options.name}`,\n ` ${pc.cyan(dev)}`,\n '',\n pc.dim('Docs: https://cogitator.dev/docs'),\n ].join('\\n')\n );\n}\n\nmain().catch((err) => {\n p.log.error(err instanceof Error ? err.message : String(err));\n process.exit(1);\n});\n","import pc from 'picocolors';\n\nexport function banner() {\n const art = [\n '',\n ` ${pc.cyan('╔═══════════════════════════════════════╗')}`,\n ` ${pc.cyan('║')} ${pc.bold(pc.white('create-cogitator-app'))} ${pc.dim('v0.1.0')} ${pc.cyan('║')}`,\n ` ${pc.cyan('║')} ${pc.dim('Build AI agents in minutes')} ${pc.cyan('║')}`,\n ` ${pc.cyan('╚═══════════════════════════════════════╝')}`,\n '',\n ];\n console.log(art.join('\\n'));\n}\n","import * as p from '@clack/prompts';\nimport path from 'node:path';\nimport type { LLMProvider, PackageManager, ProjectOptions, Template } from './types.js';\nimport { templateChoices } from './templates/index.js';\nimport { detectPackageManager } from './utils/package-manager.js';\n\ninterface ParsedArgs {\n name?: string;\n template?: Template;\n provider?: LLMProvider;\n packageManager?: PackageManager;\n docker?: boolean;\n git?: boolean;\n yes?: boolean;\n}\n\nconst validTemplates: Template[] = ['basic', 'memory', 'swarm', 'workflow', 'api-server', 'nextjs'];\nconst validProviders: LLMProvider[] = ['ollama', 'openai', 'anthropic', 'google'];\nconst validPMs: PackageManager[] = ['pnpm', 'npm', 'yarn', 'bun'];\n\nexport function parseArgs(args: string[]): ParsedArgs {\n const parsed: ParsedArgs = {};\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n if (arg === '--template' || arg === '-t') {\n if (i + 1 < args.length) {\n const val = args[++i] as Template;\n if (validTemplates.includes(val)) parsed.template = val;\n }\n } else if (arg === '--provider' || arg === '-p') {\n if (i + 1 < args.length) {\n const val = args[++i] as LLMProvider;\n if (validProviders.includes(val)) parsed.provider = val;\n }\n } else if (arg === '--pm') {\n if (i + 1 < args.length) {\n const val = args[++i] as PackageManager;\n if (validPMs.includes(val)) parsed.packageManager = val;\n }\n } else if (arg === '--docker') {\n parsed.docker = true;\n } else if (arg === '--no-docker') {\n parsed.docker = false;\n } else if (arg === '--git') {\n parsed.git = true;\n } else if (arg === '--no-git') {\n parsed.git = false;\n } else if (arg === '-y' || arg === '--yes') {\n parsed.yes = true;\n } else if (!arg.startsWith('-') && !parsed.name) {\n parsed.name = arg;\n }\n }\n\n return parsed;\n}\n\nexport async function collectOptions(args: ParsedArgs): Promise<ProjectOptions> {\n const rawName =\n args.name ||\n ((await p.text({\n message: 'Where should we create your project?',\n placeholder: './my-agents',\n defaultValue: 'my-agents',\n validate: (value) => {\n if (value && !value.trim()) return 'Project name is required';\n return undefined;\n },\n })) as string);\n\n if (p.isCancel(rawName)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const name = rawName.trim();\n const projectName = path.basename(path.normalize(name).replace(/^\\.\\//, '').replace(/^\\.\\\\/, ''));\n const projectPath = path.resolve(process.cwd(), name);\n\n const template =\n args.template ||\n ((await p.select({\n message: 'Which template would you like?',\n options: templateChoices,\n })) as Template);\n\n if (p.isCancel(template)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const provider =\n args.provider ||\n ((await p.select({\n message: 'Which LLM provider?',\n options: [\n {\n value: 'ollama' as const,\n label: 'Ollama',\n hint: 'local, free — requires Ollama installed',\n },\n { value: 'openai' as const, label: 'OpenAI', hint: 'GPT-4o' },\n { value: 'anthropic' as const, label: 'Anthropic', hint: 'Claude Sonnet' },\n { value: 'google' as const, label: 'Google Gemini', hint: 'Gemini 2.5 Flash' },\n ],\n })) as LLMProvider);\n\n if (p.isCancel(provider)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const packageManager =\n args.packageManager ||\n ((await p.select({\n message: 'Package manager?',\n options: [\n { value: 'pnpm' as const, label: 'pnpm' },\n { value: 'npm' as const, label: 'npm' },\n { value: 'yarn' as const, label: 'yarn' },\n { value: 'bun' as const, label: 'bun' },\n ],\n initialValue: detectPackageManager(),\n })) as PackageManager);\n\n if (p.isCancel(packageManager)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const docker =\n args.docker ??\n ((await p.confirm({\n message:\n 'Include Docker Compose? (Redis + Postgres' + (provider === 'ollama' ? ' + Ollama)' : ')'),\n initialValue: true,\n })) as boolean);\n\n if (p.isCancel(docker)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const git =\n args.git ??\n ((await p.confirm({\n message: 'Initialize git repository?',\n initialValue: true,\n })) as boolean);\n\n if (p.isCancel(git)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n return {\n name: projectName,\n path: projectPath,\n template,\n provider,\n packageManager,\n docker,\n git,\n };\n}\n","import type { LLMProvider } from '../types.js';\n\nexport const defaultModels: Record<LLMProvider, string> = {\n ollama: 'qwen3:8b',\n openai: 'gpt-6.1-sol',\n anthropic: 'claude-sonnet-5-5',\n google: 'gemini-3.8-flash',\n};\n\nexport function providerEnvKey(provider: LLMProvider): string {\n const map: Record<LLMProvider, string> = {\n ollama: 'OLLAMA_BASE_URL',\n openai: 'OPENAI_API_KEY',\n anthropic: 'ANTHROPIC_API_KEY',\n google: 'GOOGLE_API_KEY',\n };\n return map[provider];\n}\n\nexport function providerConfig(provider: LLMProvider): string {\n switch (provider) {\n case 'ollama':\n return [\n ` llm: {`,\n ` defaultProvider: 'ollama',`,\n ` providers: {`,\n ` ollama: { baseUrl: process.env.OLLAMA_BASE_URL || 'http://localhost:11434' },`,\n ` },`,\n ` },`,\n ].join('\\n');\n\n case 'openai':\n return [\n ` llm: {`,\n ` defaultProvider: 'openai',`,\n ` providers: {`,\n ` openai: { apiKey: process.env.OPENAI_API_KEY! },`,\n ` },`,\n ` },`,\n ].join('\\n');\n\n case 'anthropic':\n return [\n ` llm: {`,\n ` defaultProvider: 'anthropic',`,\n ` providers: {`,\n ` anthropic: { apiKey: process.env.ANTHROPIC_API_KEY! },`,\n ` },`,\n ` },`,\n ].join('\\n');\n\n case 'google':\n return [\n ` llm: {`,\n ` defaultProvider: 'google',`,\n ` providers: {`,\n ` google: { apiKey: process.env.GOOGLE_API_KEY! },`,\n ` },`,\n ` },`,\n ].join('\\n');\n }\n}\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const basicTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const indexTs = [\n `import { Cogitator, Agent } from '@cogitator-ai/core'`,\n `import { searchTool, summarizeTool } from './tools.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `const agent = new Agent({`,\n ` name: '${options.name}-agent',`,\n ` model: '${model}',`,\n ` instructions: 'You are a helpful AI assistant. Use your tools to help the user.',`,\n ` tools: [searchTool, summarizeTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n `async function main() {`,\n ` const result = await cogitator.run(agent, {`,\n ` input: 'What is Cogitator and how does it work?',`,\n ` })`,\n ``,\n ` console.log(result.output)`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n const toolsTs = [\n `import { tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `export const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information on a topic',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('The search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Search results for: \\${query}\\\\n\\\\nCogitator is a self-hosted AI agent runtime for TypeScript.\\``,\n ` },`,\n `})`,\n ``,\n `export const summarizeTool = tool({`,\n ` name: 'summarize',`,\n ` description: 'Summarize a piece of text',`,\n ` parameters: z.object({`,\n ` text: z.string().describe('The text to summarize'),`,\n ` maxLength: z.number().optional().describe('Maximum summary length'),`,\n ` }),`,\n ` execute: async ({ text, maxLength }) => {`,\n ` const limit = maxLength || 200`,\n ` return text.length > limit ? text.slice(0, limit) + '...' : text`,\n ` },`,\n `})`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/tools.ts', content: toolsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const memoryTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const indexTs = [\n `import { Cogitator, Agent } from '@cogitator-ai/core'`,\n `import { searchTool, noteTool } from './tools.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n ` memory: {`,\n ` adapter: 'redis',`,\n ` redis: { url: process.env.REDIS_URL || 'redis://localhost:6379' },`,\n ` },`,\n `})`,\n ``,\n `const agent = new Agent({`,\n ` name: '${options.name}-agent',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are an AI assistant with persistent memory.',`,\n ` 'You remember past conversations and user preferences.',`,\n ` 'Use the note tool to save important information.',`,\n ` ].join(' '),`,\n ` tools: [searchTool, noteTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n `async function main() {`,\n ` const threadId = 'demo-thread'`,\n ``,\n ` const result1 = await cogitator.run(agent, {`,\n ` input: 'My name is Alex and I prefer TypeScript.',`,\n ` threadId,`,\n ` useMemory: true,`,\n ` })`,\n ` console.log('Response 1:', result1.output)`,\n ``,\n ` const result2 = await cogitator.run(agent, {`,\n ` input: 'What is my name and preferred language?',`,\n ` threadId,`,\n ` useMemory: true,`,\n ` })`,\n ` console.log('Response 2:', result2.output)`,\n ``,\n ` await cogitator.close()`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n const toolsTs = [\n `import { tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `export const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Results for: \\${query}\\``,\n ` },`,\n `})`,\n ``,\n `export const noteTool = tool({`,\n ` name: 'note',`,\n ` description: 'Save a note for later reference',`,\n ` parameters: z.object({`,\n ` title: z.string().describe('Note title'),`,\n ` content: z.string().describe('Note content'),`,\n ` }),`,\n ` execute: async ({ title, content }) => {`,\n ` return \\`Saved note \"\\${title}\": \\${content}\\``,\n ` },`,\n `})`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/tools.ts', content: toolsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/memory': 'latest',\n '@cogitator-ai/redis': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const swarmTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const researcherTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n `import { searchTool } from '../tools.js'`,\n ``,\n `export const researcher = new Agent({`,\n ` name: 'researcher',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are a research specialist.',`,\n ` 'Use the search tool to find information.',`,\n ` 'Provide detailed, factual findings.',`,\n ` ].join(' '),`,\n ` tools: [searchTool],`,\n ` temperature: 0.3,`,\n `})`,\n ``,\n ].join('\\n');\n\n const writerTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n ``,\n `export const writer = new Agent({`,\n ` name: 'writer',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are a skilled content writer.',`,\n ` 'Take research findings and craft well-structured, engaging content.',`,\n ` 'Focus on clarity and readability.',`,\n ` ].join(' '),`,\n ` temperature: 0.8,`,\n `})`,\n ``,\n ].join('\\n');\n\n const reviewerTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n ``,\n `export const reviewer = new Agent({`,\n ` name: 'reviewer',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are a meticulous content reviewer.',`,\n ` 'Check for accuracy, grammar, and overall quality.',`,\n ` 'Provide constructive feedback.',`,\n ` ].join(' '),`,\n ` temperature: 0.2,`,\n `})`,\n ``,\n ].join('\\n');\n\n const toolsTs = [\n `import { tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `export const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information on a topic',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Research findings for \"\\${query}\": Cogitator is a production-grade AI agent runtime for TypeScript that supports swarms, workflows, and tool execution.\\``,\n ` },`,\n `})`,\n ``,\n ].join('\\n');\n\n const indexTs = [\n `import { Cogitator } from '@cogitator-ai/core'`,\n `import { Swarm } from '@cogitator-ai/swarms'`,\n `import { researcher } from './agents/researcher.js'`,\n `import { writer } from './agents/writer.js'`,\n `import { reviewer } from './agents/reviewer.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `const team = new Swarm(cogitator, {`,\n ` name: '${options.name}-team',`,\n ` strategy: 'hierarchical',`,\n ` supervisor: reviewer,`,\n ` workers: [researcher, writer],`,\n ` hierarchical: {`,\n ` visibility: 'full',`,\n ` workerCommunication: true,`,\n ` },`,\n ` resources: {`,\n ` maxConcurrency: 3,`,\n ` timeout: 120000,`,\n ` },`,\n `})`,\n ``,\n `async function main() {`,\n ` console.log('Starting swarm...')`,\n ``,\n ` const result = await team.run({`,\n ` input: 'Write a comprehensive article about AI agent orchestration.',`,\n ` })`,\n ``,\n ` console.log('Result:', result.output)`,\n ` console.log('Strategy:', result.strategy)`,\n ``,\n ` await team.close()`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/tools.ts', content: toolsTs },\n { path: 'src/agents/researcher.ts', content: researcherTs },\n { path: 'src/agents/writer.ts', content: writerTs },\n { path: 'src/agents/reviewer.ts', content: reviewerTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/swarms': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const workflowTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const agentsTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n ``,\n `export const analyzer = new Agent({`,\n ` name: 'analyzer',`,\n ` model: '${model}',`,\n ` instructions: 'You analyze input data and extract key information. Be thorough and structured.',`,\n ` temperature: 0.3,`,\n `})`,\n ``,\n `export const processor = new Agent({`,\n ` name: 'processor',`,\n ` model: '${model}',`,\n ` instructions: 'You process analyzed data and transform it into actionable insights.',`,\n ` temperature: 0.5,`,\n `})`,\n ``,\n `export const formatter = new Agent({`,\n ` name: 'formatter',`,\n ` model: '${model}',`,\n ` instructions: 'You format processed data into a clean, readable report.',`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n ].join('\\n');\n\n const indexTs = [\n `import { Cogitator } from '@cogitator-ai/core'`,\n `import {`,\n ` WorkflowBuilder,`,\n ` WorkflowExecutor,`,\n ` agentNode,`,\n ` functionNode,`,\n `} from '@cogitator-ai/workflows'`,\n `import { analyzer, processor, formatter } from './agents.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `interface WorkflowState {`,\n ` input: string`,\n ` analysis?: string`,\n ` processed?: string`,\n ` report?: string`,\n `}`,\n ``,\n `const analyzeNode = agentNode<WorkflowState>(analyzer, {`,\n ` inputMapper: (state) => \\`Analyze the following: \\${state.input}\\`,`,\n ` stateMapper: (result) => ({ analysis: result.output }),`,\n `})`,\n ``,\n `const processNode = agentNode<WorkflowState>(processor, {`,\n ` inputMapper: (state) => \\`Process this analysis: \\${state.analysis ?? ''}\\`,`,\n ` stateMapper: (result) => ({ processed: result.output }),`,\n `})`,\n ``,\n `const formatNode = agentNode<WorkflowState>(formatter, {`,\n ` inputMapper: (state) => \\`Format this into a report: \\${state.processed ?? ''}\\`,`,\n ` stateMapper: (result) => ({ report: result.output }),`,\n `})`,\n ``,\n `const outputNode = functionNode<WorkflowState>(`,\n ` 'output',`,\n ` async (state) => state.report,`,\n `)`,\n ``,\n `const workflow = new WorkflowBuilder<WorkflowState>('${options.name}-workflow')`,\n ` .initialState({ input: '' })`,\n ` .entryPoint(analyzeNode.name)`,\n ` .addNode(analyzeNode.name, analyzeNode.fn)`,\n ` .addNode(processNode.name, processNode.fn, { after: [analyzeNode.name] })`,\n ` .addNode(formatNode.name, formatNode.fn, { after: [processNode.name] })`,\n ` .addNode(outputNode.name, outputNode.fn, { after: [formatNode.name] })`,\n ` .build()`,\n ``,\n `async function main() {`,\n ` const executor = new WorkflowExecutor(cogitator)`,\n ``,\n ` console.log('Starting workflow...')`,\n ``,\n ` const result = await executor.execute(workflow, {`,\n ` input: 'Analyze the current state of AI agent frameworks and their adoption in enterprise.',`,\n ` })`,\n ``,\n ` console.log('Workflow completed!')`,\n ` console.log('Result:', JSON.stringify(result, null, 2))`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/agents.ts', content: agentsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/workflows': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const apiServerTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const agentsTs = [\n `import { Agent, tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Results for: \\${query}\\``,\n ` },`,\n `})`,\n ``,\n `export const assistant = new Agent({`,\n ` name: 'assistant',`,\n ` model: '${model}',`,\n ` instructions: 'You are a helpful API assistant. Answer questions clearly and concisely.',`,\n ` tools: [searchTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n `export const coder = new Agent({`,\n ` name: 'coder',`,\n ` model: '${model}',`,\n ` instructions: 'You are an expert programmer. Write clean, well-structured code.',`,\n ` temperature: 0.3,`,\n `})`,\n ``,\n ].join('\\n');\n\n const indexTs = [\n `import express from 'express'`,\n `import { Cogitator } from '@cogitator-ai/core'`,\n `import { CogitatorServer } from '@cogitator-ai/express'`,\n `import { assistant, coder } from './agents.js'`,\n ``,\n `const app = express()`,\n `const port = process.env.PORT || 3000`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `const server = new CogitatorServer({`,\n ` app,`,\n ` cogitator,`,\n ` agents: { assistant, coder },`,\n ` config: {`,\n ` basePath: '/api',`,\n ` enableSwagger: true,`,\n ` cors: { origin: '*' },`,\n ` swagger: {`,\n ` title: '${options.name} API',`,\n ` version: '1.0.0',`,\n ` },`,\n ` },`,\n `})`,\n ``,\n `async function main() {`,\n ` await server.init()`,\n ``,\n ` app.listen(port, () => {`,\n ` console.log(\\`Server running at http://localhost:\\${port}\\`)`,\n ` console.log(\\`Swagger docs at http://localhost:\\${port}/api/docs\\`)`,\n ` })`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/agents.ts', content: agentsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/express': 'latest',\n express: '^4.21.0',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n '@types/express': '^5.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const nextjsTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const agentTs = [\n `import { Cogitator, Agent, tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Results for: \\${query}\\``,\n ` },`,\n `})`,\n ``,\n `export const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `export const agent = new Agent({`,\n ` name: '${options.name}-chat',`,\n ` model: '${model}',`,\n ` instructions: 'You are a helpful AI chat assistant. Be conversational and helpful.',`,\n ` tools: [searchTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n ].join('\\n');\n\n const routeTs = [\n `import { createChatHandler } from '@cogitator-ai/next'`,\n `import { cogitator, agent } from '@/lib/agent'`,\n ``,\n `export const POST = createChatHandler(cogitator, agent)`,\n ``,\n ].join('\\n');\n\n const pageTsx = [\n `'use client'`,\n ``,\n `import { useCogitatorChat } from '@cogitator-ai/next/client'`,\n `import { useState, useRef, useEffect } from 'react'`,\n ``,\n `export default function Home() {`,\n ` const { messages, input, setInput, send, isLoading } = useCogitatorChat({`,\n ` api: '/api/chat',`,\n ` })`,\n ` const messagesEndRef = useRef<HTMLDivElement>(null)`,\n ``,\n ` useEffect(() => {`,\n ` messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' })`,\n ` }, [messages])`,\n ``,\n ` const handleSubmit = (e: React.FormEvent) => {`,\n ` e.preventDefault()`,\n ` if (!input.trim() || isLoading) return`,\n ` send(input)`,\n ` setInput('')`,\n ` }`,\n ``,\n ` return (`,\n ` <main className=\"flex min-h-screen flex-col items-center p-4 bg-gray-950 text-white\">`,\n ` <div className=\"w-full max-w-2xl flex flex-col h-screen\">`,\n ` <header className=\"py-6 text-center\">`,\n ` <h1 className=\"text-2xl font-bold\">${options.name}</h1>`,\n ` <p className=\"text-gray-400 text-sm mt-1\">Powered by Cogitator</p>`,\n ` </header>`,\n ``,\n ` <div className=\"flex-1 overflow-y-auto space-y-4 pb-4\">`,\n ` {messages.map((msg, i) => (`,\n ` <div`,\n ` key={i}`,\n ` className={\\`flex \\${msg.role === 'user' ? 'justify-end' : 'justify-start'}\\`}`,\n ` >`,\n ` <div`,\n ` className={\\`max-w-[80%] rounded-2xl px-4 py-2 \\${`,\n ` msg.role === 'user'`,\n ` ? 'bg-blue-600 text-white'`,\n ` : 'bg-gray-800 text-gray-100'`,\n ` }\\`}`,\n ` >`,\n ` {msg.content}`,\n ` </div>`,\n ` </div>`,\n ` ))}`,\n ` {isLoading && (`,\n ` <div className=\"flex justify-start\">`,\n ` <div className=\"bg-gray-800 rounded-2xl px-4 py-2 text-gray-400\">`,\n ` Thinking...`,\n ` </div>`,\n ` </div>`,\n ` )}`,\n ` <div ref={messagesEndRef} />`,\n ` </div>`,\n ``,\n ` <form onSubmit={handleSubmit} className=\"flex gap-2 py-4\">`,\n ` <input`,\n ` value={input}`,\n ` onChange={(e) => setInput(e.target.value)}`,\n ` placeholder=\"Type a message...\"`,\n ` className=\"flex-1 bg-gray-800 border border-gray-700 rounded-xl px-4 py-3 text-white placeholder-gray-500 focus:outline-none focus:border-blue-500\"`,\n ` />`,\n ` <button`,\n ` type=\"submit\"`,\n ` disabled={isLoading || !input.trim()}`,\n ` className=\"bg-blue-600 hover:bg-blue-500 disabled:opacity-50 disabled:cursor-not-allowed text-white rounded-xl px-6 py-3 font-medium transition-colors\"`,\n ` >`,\n ` Send`,\n ` </button>`,\n ` </form>`,\n ` </div>`,\n ` </main>`,\n ` )`,\n `}`,\n ``,\n ].join('\\n');\n\n const layoutTsx = [\n `import type { Metadata } from 'next'`,\n `import './globals.css'`,\n ``,\n `export const metadata: Metadata = {`,\n ` title: '${options.name}',`,\n ` description: 'AI chat app powered by Cogitator',`,\n `}`,\n ``,\n `export default function RootLayout({`,\n ` children,`,\n `}: {`,\n ` children: React.ReactNode`,\n `}) {`,\n ` return (`,\n ` <html lang=\"en\">`,\n ` <body>{children}</body>`,\n ` </html>`,\n ` )`,\n `}`,\n ``,\n ].join('\\n');\n\n const globalsCss = [\n `@tailwind base;`,\n `@tailwind components;`,\n `@tailwind utilities;`,\n ``,\n ].join('\\n');\n\n const nextConfig = [\n `import type { NextConfig } from 'next'`,\n ``,\n `const config: NextConfig = {}`,\n ``,\n `export default config`,\n ``,\n ].join('\\n');\n\n const tsconfigJson = JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2017',\n lib: ['dom', 'dom.iterable', 'esnext'],\n allowJs: true,\n skipLibCheck: true,\n strict: true,\n noEmit: true,\n esModuleInterop: true,\n module: 'esnext',\n moduleResolution: 'bundler',\n resolveJsonModule: true,\n isolatedModules: true,\n jsx: 'preserve',\n incremental: true,\n plugins: [{ name: 'next' }],\n paths: { '@/*': ['./src/*'] },\n },\n include: ['next-env.d.ts', '**/*.ts', '**/*.tsx', '.next/types/**/*.ts'],\n exclude: ['node_modules'],\n },\n null,\n 2\n );\n\n const tailwindConfig = [\n `import type { Config } from 'tailwindcss'`,\n ``,\n `const config: Config = {`,\n ` content: ['./src/**/*.{ts,tsx}'],`,\n ` theme: { extend: {} },`,\n ` plugins: [],`,\n `}`,\n ``,\n `export default config`,\n ``,\n ].join('\\n');\n\n const postcssConfig = [\n `const config = {`,\n ` plugins: {`,\n ` tailwindcss: {},`,\n ` autoprefixer: {},`,\n ` },`,\n `}`,\n ``,\n `export default config`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/lib/agent.ts', content: agentTs },\n { path: 'src/app/api/chat/route.ts', content: routeTs },\n { path: 'src/app/page.tsx', content: pageTsx },\n { path: 'src/app/layout.tsx', content: layoutTsx },\n { path: 'src/app/globals.css', content: globalsCss },\n { path: 'next.config.ts', content: nextConfig },\n { path: 'tsconfig.json', content: tsconfigJson },\n { path: 'tailwind.config.ts', content: tailwindConfig },\n { path: 'postcss.config.mjs', content: postcssConfig },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/next': 'latest',\n next: '^15.0.0',\n react: '^19.0.0',\n 'react-dom': '^19.0.0',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n '@types/node': '^22.0.0',\n '@types/react': '^19.0.0',\n '@types/react-dom': '^19.0.0',\n tailwindcss: '^3.4.0',\n autoprefixer: '^10.4.0',\n postcss: '^8.4.0',\n };\n },\n\n scripts() {\n return {\n dev: 'next dev',\n build: 'next build',\n start: 'next start',\n lint: 'next lint',\n };\n },\n};\n","import type { Template, TemplateGenerator } from '../types.js';\nimport { basicTemplate } from './basic.js';\nimport { memoryTemplate } from './memory.js';\nimport { swarmTemplate } from './swarm.js';\nimport { workflowTemplate } from './workflow.js';\nimport { apiServerTemplate } from './api-server.js';\nimport { nextjsTemplate } from './nextjs.js';\n\nconst templates: Record<Template, TemplateGenerator> = {\n basic: basicTemplate,\n memory: memoryTemplate,\n swarm: swarmTemplate,\n workflow: workflowTemplate,\n 'api-server': apiServerTemplate,\n nextjs: nextjsTemplate,\n};\n\nexport function getTemplate(name: Template): TemplateGenerator {\n return templates[name];\n}\n\nexport const templateChoices: Array<{\n value: Template;\n label: string;\n hint: string;\n}> = [\n {\n value: 'basic',\n label: 'Basic agent',\n hint: 'Single agent with tools — best for getting started',\n },\n { value: 'memory', label: 'Agent with memory', hint: 'Persistent memory with Redis' },\n {\n value: 'swarm',\n label: 'Multi-agent swarm',\n hint: 'Team of agents with hierarchical coordination',\n },\n { value: 'workflow', label: 'DAG workflow', hint: 'Multi-step pipeline with checkpoints' },\n {\n value: 'api-server',\n label: 'REST API server',\n hint: 'Express server exposing agents via HTTP',\n },\n { value: 'nextjs', label: 'Next.js chat app', hint: 'Full-stack chat app with streaming' },\n];\n","import { execSync } from 'node:child_process';\nimport type { PackageManager } from '../types.js';\n\nexport function detectPackageManager(): PackageManager {\n const ua = process.env.npm_config_user_agent;\n if (ua) {\n if (ua.startsWith('pnpm')) return 'pnpm';\n if (ua.startsWith('yarn')) return 'yarn';\n if (ua.startsWith('bun')) return 'bun';\n }\n return 'pnpm';\n}\n\nexport function installDependencies(cwd: string, pm: PackageManager) {\n execSync(`${pm} install`, { cwd, stdio: 'inherit' });\n}\n\nexport function devCommand(pm: PackageManager): string {\n if (pm === 'npm') return 'npm run dev';\n return `${pm} dev`;\n}\n\nexport function runCommand(pm: PackageManager): string {\n if (pm === 'npm') return 'npx';\n if (pm === 'pnpm') return 'pnpm dlx';\n if (pm === 'yarn') return 'yarn dlx';\n return 'bunx';\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport * as p from '@clack/prompts';\nimport type { ProjectOptions, TemplateFile } from './types.js';\nimport { getTemplate } from './templates/index.js';\nimport { generateTsconfig } from './templates/base/tsconfig.js';\nimport { generateGitignore } from './templates/base/gitignore.js';\nimport { generateEnvExample } from './templates/base/env-example.js';\nimport { generateDockerCompose } from './templates/base/docker-compose.js';\nimport { generateCogitatorYml } from './templates/base/cogitator-yml.js';\nimport { generateReadme } from './templates/base/readme.js';\nimport { generatePnpmWorkspace } from './templates/base/pnpm-workspace.js';\nimport { installDependencies } from './utils/package-manager.js';\nimport { initGitRepo, isGitInstalled } from './utils/git.js';\n\nfunction writeFile(basePath: string, file: TemplateFile) {\n const fullPath = path.join(basePath, file.path);\n fs.mkdirSync(path.dirname(fullPath), { recursive: true });\n fs.writeFileSync(fullPath, file.content, 'utf-8');\n}\n\nfunction buildPackageJson(options: ProjectOptions): string {\n const template = getTemplate(options.template);\n const isNextjs = options.template === 'nextjs';\n\n const pkg: Record<string, unknown> = {\n name: options.name,\n version: '0.1.0',\n private: true,\n ...(isNextjs ? {} : { type: 'module' }),\n scripts: template.scripts(),\n dependencies: template.dependencies(),\n devDependencies: template.devDependencies(),\n };\n\n return JSON.stringify(pkg, null, 2) + '\\n';\n}\n\nfunction collectFiles(options: ProjectOptions): TemplateFile[] {\n const template = getTemplate(options.template);\n const files: TemplateFile[] = [];\n\n files.push({ path: 'package.json', content: buildPackageJson(options) });\n files.push(...template.files(options));\n files.push(generateGitignore());\n files.push(generateEnvExample(options.provider, options.template));\n files.push(generateCogitatorYml(options.provider));\n files.push(generateReadme(options));\n\n if (options.template !== 'nextjs') {\n files.push(generateTsconfig());\n }\n\n if (options.packageManager === 'pnpm') {\n files.push(generatePnpmWorkspace());\n }\n\n if (options.docker) {\n files.push(generateDockerCompose(options.provider));\n }\n\n return files;\n}\n\nexport async function scaffold(options: ProjectOptions) {\n if (fs.existsSync(options.path) && fs.readdirSync(options.path).length > 0) {\n throw new Error(`Directory \"${options.path}\" already exists and is not empty`);\n }\n\n const s = p.spinner();\n\n s.start('Generating project files');\n const files = collectFiles(options);\n\n fs.mkdirSync(options.path, { recursive: true });\n for (const file of files) {\n writeFile(options.path, file);\n }\n s.stop('Generated project files');\n\n s.start('Installing dependencies');\n try {\n installDependencies(options.path, options.packageManager);\n s.stop('Installed dependencies');\n } catch {\n s.stop('Failed to install dependencies — run manually');\n }\n\n if (options.git && isGitInstalled()) {\n s.start('Initializing git repository');\n try {\n initGitRepo(options.path);\n s.stop('Initialized git repository');\n } catch {\n s.stop('Failed to initialize git — run manually');\n }\n }\n}\n","import type { TemplateFile } from '../../types.js';\n\nexport function generateTsconfig(): TemplateFile {\n return {\n path: 'tsconfig.json',\n content: JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'NodeNext',\n moduleResolution: 'NodeNext',\n esModuleInterop: true,\n strict: true,\n skipLibCheck: true,\n outDir: 'dist',\n rootDir: 'src',\n declaration: true,\n resolveJsonModule: true,\n isolatedModules: true,\n },\n include: ['src'],\n },\n null,\n 2\n ),\n };\n}\n","import type { TemplateFile } from '../../types.js';\n\nexport function generateGitignore(): TemplateFile {\n return {\n path: '.gitignore',\n content: [\n 'node_modules/',\n 'dist/',\n '.env',\n '.env.local',\n '*.log',\n '.DS_Store',\n 'coverage/',\n '.turbo/',\n '',\n ].join('\\n'),\n };\n}\n","import type { LLMProvider, Template, TemplateFile } from '../../types.js';\n\nexport function generateEnvExample(provider: LLMProvider, template?: Template): TemplateFile {\n const lines: string[] = ['# Cogitator Environment Variables', ''];\n\n switch (provider) {\n case 'ollama':\n lines.push('# Ollama (default: http://localhost:11434)');\n lines.push('# OLLAMA_BASE_URL=http://localhost:11434');\n break;\n case 'openai':\n lines.push('# OpenAI');\n lines.push('OPENAI_API_KEY=sk-...');\n break;\n case 'anthropic':\n lines.push('# Anthropic');\n lines.push('ANTHROPIC_API_KEY=sk-ant-...');\n break;\n case 'google':\n lines.push('# Google AI');\n lines.push('GOOGLE_API_KEY=...');\n break;\n }\n\n if (template === 'memory') {\n lines.push('');\n lines.push('# Redis');\n lines.push('REDIS_URL=redis://localhost:6379');\n }\n\n lines.push('');\n\n return { path: '.env.example', content: lines.join('\\n') };\n}\n","import type { LLMProvider, TemplateFile } from '../../types.js';\n\nexport function generateDockerCompose(provider: LLMProvider): TemplateFile {\n const services: string[] = [];\n\n if (provider === 'ollama') {\n services.push(\n ...[\n ' ollama:',\n ' image: ollama/ollama:latest',\n ' ports:',\n ' - \"11434:11434\"',\n ' volumes:',\n ' - ollama_data:/root/.ollama',\n '',\n ]\n );\n }\n\n services.push(\n ...[\n ' redis:',\n ' image: redis:7-alpine',\n ' ports:',\n ' - \"6379:6379\"',\n ' volumes:',\n ' - redis_data:/data',\n '',\n ' postgres:',\n ' image: postgres:16-alpine',\n ' ports:',\n ' - \"5432:5432\"',\n ' environment:',\n ' POSTGRES_USER: ${POSTGRES_USER:-cogitator}',\n ' POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-cogitator}',\n ' POSTGRES_DB: ${POSTGRES_DB:-cogitator}',\n ' volumes:',\n ' - postgres_data:/var/lib/postgresql/data',\n ]\n );\n\n const volumes = ['volumes:'];\n if (provider === 'ollama') volumes.push(' ollama_data:');\n volumes.push(' redis_data:', ' postgres_data:');\n\n const content = ['services:', ...services, '', ...volumes, ''].join('\\n');\n\n return { path: 'docker-compose.yml', content };\n}\n","import type { LLMProvider, TemplateFile } from '../../types.js';\nimport { defaultModels } from '../../utils/providers.js';\n\nexport function generateCogitatorYml(provider: LLMProvider): TemplateFile {\n const model = defaultModels[provider];\n\n const lines = [`provider: ${provider}`, `model: ${model}`, ''];\n\n if (provider === 'ollama') {\n lines.push('ollama:', ' baseUrl: http://localhost:11434', '');\n }\n\n return { path: 'cogitator.yml', content: lines.join('\\n') };\n}\n","import type { ProjectOptions, TemplateFile } from '../../types.js';\nimport { devCommand } from '../../utils/package-manager.js';\n\nconst templateNames: Record<string, string> = {\n basic: 'Basic Agent',\n memory: 'Agent with Memory',\n swarm: 'Multi-Agent Swarm',\n workflow: 'DAG Workflow',\n 'api-server': 'REST API Server',\n nextjs: 'Next.js Chat App',\n};\n\nexport function generateReadme(options: ProjectOptions): TemplateFile {\n const dev = devCommand(options.packageManager);\n const templateName = templateNames[options.template] || options.template;\n\n const content = [\n `# ${options.name}`,\n '',\n `> Created with [create-cogitator-app](https://github.com/cogitator-ai/cogitator) — ${templateName} template`,\n '',\n '## Getting Started',\n '',\n '```bash',\n `# Install dependencies`,\n `${options.packageManager} install`,\n '',\n `# Run the project`,\n dev,\n '```',\n '',\n ...(options.docker\n ? ['## Docker Services', '', '```bash', 'docker compose up -d', '```', '']\n : []),\n '## Learn More',\n '',\n '- [Cogitator Documentation](https://cogitator.dev/docs)',\n '- [GitHub Repository](https://github.com/cogitator-ai/cogitator)',\n '',\n ];\n\n return { path: 'README.md', content: content.join('\\n') };\n}\n","import type { TemplateFile } from '../../types.js';\n\n/**\n * pnpm 10.26+ skips dependency build scripts unless they are allowed, and pnpm 11 fails the\n * install instead. These are the native/binary packages a Cogitator project pulls in.\n */\nexport const PNPM_ALLOWED_BUILDS = ['better-sqlite3', 'esbuild', 'sharp'] as const;\n\nexport function generatePnpmWorkspace(): TemplateFile {\n return {\n path: 'pnpm-workspace.yaml',\n content: ['allowBuilds:', ...PNPM_ALLOWED_BUILDS.map((name) => ` ${name}: true`), ''].join(\n '\\n'\n ),\n };\n}\n","import { execSync } from 'node:child_process';\n\nexport function isGitInstalled(): boolean {\n try {\n execSync('git --version', { stdio: 'ignore' });\n return true;\n } catch {\n return false;\n }\n}\n\nexport function initGitRepo(cwd: string) {\n execSync('git init', { cwd, stdio: 'ignore' });\n execSync('git add -A', { cwd, stdio: 'ignore' });\n execSync(\n 'git -c user.name=\"Cogitator\" -c user.email=\"init@cogitator.dev\" commit -m \"feat: initial project scaffold\"',\n { cwd, stdio: 'ignore' }\n );\n}\n"],"mappings":"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","names":["p","pc","path","p","execSync","path","pc"]}
package/dist/lib.js CHANGED
@@ -5,10 +5,10 @@ import * as p from "@clack/prompts";
5
5
 
6
6
  // src/utils/providers.ts
7
7
  var defaultModels = {
8
- ollama: "qwen2.5:7b",
9
- openai: "gpt-4o",
10
- anthropic: "claude-sonnet-4-20250514",
11
- google: "gemini-2.5-flash"
8
+ ollama: "qwen3:8b",
9
+ openai: "gpt-6.1-sol",
10
+ anthropic: "claude-sonnet-5-5",
11
+ google: "gemini-3.8-flash"
12
12
  };
13
13
  function providerEnvKey(provider) {
14
14
  const map = {
@@ -1091,6 +1091,17 @@ function generateReadme(options) {
1091
1091
  return { path: "README.md", content: content.join("\n") };
1092
1092
  }
1093
1093
 
1094
+ // src/templates/base/pnpm-workspace.ts
1095
+ var PNPM_ALLOWED_BUILDS = ["better-sqlite3", "esbuild", "sharp"];
1096
+ function generatePnpmWorkspace() {
1097
+ return {
1098
+ path: "pnpm-workspace.yaml",
1099
+ content: ["allowBuilds:", ...PNPM_ALLOWED_BUILDS.map((name) => ` ${name}: true`), ""].join(
1100
+ "\n"
1101
+ )
1102
+ };
1103
+ }
1104
+
1094
1105
  // src/utils/git.ts
1095
1106
  import { execSync as execSync2 } from "child_process";
1096
1107
  function isGitInstalled() {
@@ -1142,6 +1153,9 @@ function collectFiles(options) {
1142
1153
  if (options.template !== "nextjs") {
1143
1154
  files.push(generateTsconfig());
1144
1155
  }
1156
+ if (options.packageManager === "pnpm") {
1157
+ files.push(generatePnpmWorkspace());
1158
+ }
1145
1159
  if (options.docker) {
1146
1160
  files.push(generateDockerCompose(options.provider));
1147
1161
  }
@@ -1224,7 +1238,7 @@ async function collectOptions(args) {
1224
1238
  placeholder: "./my-agents",
1225
1239
  defaultValue: "my-agents",
1226
1240
  validate: (value) => {
1227
- if (!value.trim()) return "Project name is required";
1241
+ if (value && !value.trim()) return "Project name is required";
1228
1242
  return void 0;
1229
1243
  }
1230
1244
  });
package/dist/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scaffold.ts","../src/utils/providers.ts","../src/templates/basic.ts","../src/templates/memory.ts","../src/templates/swarm.ts","../src/templates/workflow.ts","../src/templates/api-server.ts","../src/templates/nextjs.ts","../src/templates/index.ts","../src/templates/base/tsconfig.ts","../src/templates/base/gitignore.ts","../src/templates/base/env-example.ts","../src/templates/base/docker-compose.ts","../src/templates/base/cogitator-yml.ts","../src/utils/package-manager.ts","../src/templates/base/readme.ts","../src/utils/git.ts","../src/prompts.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport * as p from '@clack/prompts';\nimport type { ProjectOptions, TemplateFile } from './types.js';\nimport { getTemplate } from './templates/index.js';\nimport { generateTsconfig } from './templates/base/tsconfig.js';\nimport { generateGitignore } from './templates/base/gitignore.js';\nimport { generateEnvExample } from './templates/base/env-example.js';\nimport { generateDockerCompose } from './templates/base/docker-compose.js';\nimport { generateCogitatorYml } from './templates/base/cogitator-yml.js';\nimport { generateReadme } from './templates/base/readme.js';\nimport { installDependencies } from './utils/package-manager.js';\nimport { initGitRepo, isGitInstalled } from './utils/git.js';\n\nfunction writeFile(basePath: string, file: TemplateFile) {\n const fullPath = path.join(basePath, file.path);\n fs.mkdirSync(path.dirname(fullPath), { recursive: true });\n fs.writeFileSync(fullPath, file.content, 'utf-8');\n}\n\nfunction buildPackageJson(options: ProjectOptions): string {\n const template = getTemplate(options.template);\n const isNextjs = options.template === 'nextjs';\n\n const pkg: Record<string, unknown> = {\n name: options.name,\n version: '0.1.0',\n private: true,\n ...(isNextjs ? {} : { type: 'module' }),\n scripts: template.scripts(),\n dependencies: template.dependencies(),\n devDependencies: template.devDependencies(),\n };\n\n return JSON.stringify(pkg, null, 2) + '\\n';\n}\n\nfunction collectFiles(options: ProjectOptions): TemplateFile[] {\n const template = getTemplate(options.template);\n const files: TemplateFile[] = [];\n\n files.push({ path: 'package.json', content: buildPackageJson(options) });\n files.push(...template.files(options));\n files.push(generateGitignore());\n files.push(generateEnvExample(options.provider, options.template));\n files.push(generateCogitatorYml(options.provider));\n files.push(generateReadme(options));\n\n if (options.template !== 'nextjs') {\n files.push(generateTsconfig());\n }\n\n if (options.docker) {\n files.push(generateDockerCompose(options.provider));\n }\n\n return files;\n}\n\nexport async function scaffold(options: ProjectOptions) {\n if (fs.existsSync(options.path) && fs.readdirSync(options.path).length > 0) {\n throw new Error(`Directory \"${options.path}\" already exists and is not empty`);\n }\n\n const s = p.spinner();\n\n s.start('Generating project files');\n const files = collectFiles(options);\n\n fs.mkdirSync(options.path, { recursive: true });\n for (const file of files) {\n writeFile(options.path, file);\n }\n s.stop('Generated project files');\n\n s.start('Installing dependencies');\n try {\n installDependencies(options.path, options.packageManager);\n s.stop('Installed dependencies');\n } catch {\n s.stop('Failed to install dependencies — run manually');\n }\n\n if (options.git && isGitInstalled()) {\n s.start('Initializing git repository');\n try {\n initGitRepo(options.path);\n s.stop('Initialized git repository');\n } catch {\n s.stop('Failed to initialize git — run manually');\n }\n }\n}\n","import type { LLMProvider } from '../types.js';\n\nexport const defaultModels: Record<LLMProvider, string> = {\n ollama: 'qwen2.5:7b',\n openai: 'gpt-4o',\n anthropic: 'claude-sonnet-4-20250514',\n google: 'gemini-2.5-flash',\n};\n\nexport function providerEnvKey(provider: LLMProvider): string {\n const map: Record<LLMProvider, string> = {\n ollama: 'OLLAMA_BASE_URL',\n openai: 'OPENAI_API_KEY',\n anthropic: 'ANTHROPIC_API_KEY',\n google: 'GOOGLE_API_KEY',\n };\n return map[provider];\n}\n\nexport function providerConfig(provider: LLMProvider): string {\n switch (provider) {\n case 'ollama':\n return [\n ` llm: {`,\n ` defaultProvider: 'ollama',`,\n ` providers: {`,\n ` ollama: { baseUrl: process.env.OLLAMA_BASE_URL || 'http://localhost:11434' },`,\n ` },`,\n ` },`,\n ].join('\\n');\n\n case 'openai':\n return [\n ` llm: {`,\n ` defaultProvider: 'openai',`,\n ` providers: {`,\n ` openai: { apiKey: process.env.OPENAI_API_KEY! },`,\n ` },`,\n ` },`,\n ].join('\\n');\n\n case 'anthropic':\n return [\n ` llm: {`,\n ` defaultProvider: 'anthropic',`,\n ` providers: {`,\n ` anthropic: { apiKey: process.env.ANTHROPIC_API_KEY! },`,\n ` },`,\n ` },`,\n ].join('\\n');\n\n case 'google':\n return [\n ` llm: {`,\n ` defaultProvider: 'google',`,\n ` providers: {`,\n ` google: { apiKey: process.env.GOOGLE_API_KEY! },`,\n ` },`,\n ` },`,\n ].join('\\n');\n }\n}\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const basicTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const indexTs = [\n `import { Cogitator, Agent } from '@cogitator-ai/core'`,\n `import { searchTool, summarizeTool } from './tools.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `const agent = new Agent({`,\n ` name: '${options.name}-agent',`,\n ` model: '${model}',`,\n ` instructions: 'You are a helpful AI assistant. Use your tools to help the user.',`,\n ` tools: [searchTool, summarizeTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n `async function main() {`,\n ` const result = await cogitator.run(agent, {`,\n ` input: 'What is Cogitator and how does it work?',`,\n ` })`,\n ``,\n ` console.log(result.output)`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n const toolsTs = [\n `import { tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `export const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information on a topic',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('The search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Search results for: \\${query}\\\\n\\\\nCogitator is a self-hosted AI agent runtime for TypeScript.\\``,\n ` },`,\n `})`,\n ``,\n `export const summarizeTool = tool({`,\n ` name: 'summarize',`,\n ` description: 'Summarize a piece of text',`,\n ` parameters: z.object({`,\n ` text: z.string().describe('The text to summarize'),`,\n ` maxLength: z.number().optional().describe('Maximum summary length'),`,\n ` }),`,\n ` execute: async ({ text, maxLength }) => {`,\n ` const limit = maxLength || 200`,\n ` return text.length > limit ? text.slice(0, limit) + '...' : text`,\n ` },`,\n `})`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/tools.ts', content: toolsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const memoryTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const indexTs = [\n `import { Cogitator, Agent } from '@cogitator-ai/core'`,\n `import { searchTool, noteTool } from './tools.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n ` memory: {`,\n ` adapter: 'redis',`,\n ` redis: { url: process.env.REDIS_URL || 'redis://localhost:6379' },`,\n ` },`,\n `})`,\n ``,\n `const agent = new Agent({`,\n ` name: '${options.name}-agent',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are an AI assistant with persistent memory.',`,\n ` 'You remember past conversations and user preferences.',`,\n ` 'Use the note tool to save important information.',`,\n ` ].join(' '),`,\n ` tools: [searchTool, noteTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n `async function main() {`,\n ` const threadId = 'demo-thread'`,\n ``,\n ` const result1 = await cogitator.run(agent, {`,\n ` input: 'My name is Alex and I prefer TypeScript.',`,\n ` threadId,`,\n ` useMemory: true,`,\n ` })`,\n ` console.log('Response 1:', result1.output)`,\n ``,\n ` const result2 = await cogitator.run(agent, {`,\n ` input: 'What is my name and preferred language?',`,\n ` threadId,`,\n ` useMemory: true,`,\n ` })`,\n ` console.log('Response 2:', result2.output)`,\n ``,\n ` await cogitator.close()`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n const toolsTs = [\n `import { tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `export const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Results for: \\${query}\\``,\n ` },`,\n `})`,\n ``,\n `export const noteTool = tool({`,\n ` name: 'note',`,\n ` description: 'Save a note for later reference',`,\n ` parameters: z.object({`,\n ` title: z.string().describe('Note title'),`,\n ` content: z.string().describe('Note content'),`,\n ` }),`,\n ` execute: async ({ title, content }) => {`,\n ` return \\`Saved note \"\\${title}\": \\${content}\\``,\n ` },`,\n `})`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/tools.ts', content: toolsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/memory': 'latest',\n '@cogitator-ai/redis': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const swarmTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const researcherTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n `import { searchTool } from '../tools.js'`,\n ``,\n `export const researcher = new Agent({`,\n ` name: 'researcher',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are a research specialist.',`,\n ` 'Use the search tool to find information.',`,\n ` 'Provide detailed, factual findings.',`,\n ` ].join(' '),`,\n ` tools: [searchTool],`,\n ` temperature: 0.3,`,\n `})`,\n ``,\n ].join('\\n');\n\n const writerTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n ``,\n `export const writer = new Agent({`,\n ` name: 'writer',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are a skilled content writer.',`,\n ` 'Take research findings and craft well-structured, engaging content.',`,\n ` 'Focus on clarity and readability.',`,\n ` ].join(' '),`,\n ` temperature: 0.8,`,\n `})`,\n ``,\n ].join('\\n');\n\n const reviewerTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n ``,\n `export const reviewer = new Agent({`,\n ` name: 'reviewer',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are a meticulous content reviewer.',`,\n ` 'Check for accuracy, grammar, and overall quality.',`,\n ` 'Provide constructive feedback.',`,\n ` ].join(' '),`,\n ` temperature: 0.2,`,\n `})`,\n ``,\n ].join('\\n');\n\n const toolsTs = [\n `import { tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `export const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information on a topic',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Research findings for \"\\${query}\": Cogitator is a production-grade AI agent runtime for TypeScript that supports swarms, workflows, and tool execution.\\``,\n ` },`,\n `})`,\n ``,\n ].join('\\n');\n\n const indexTs = [\n `import { Cogitator } from '@cogitator-ai/core'`,\n `import { Swarm } from '@cogitator-ai/swarms'`,\n `import { researcher } from './agents/researcher.js'`,\n `import { writer } from './agents/writer.js'`,\n `import { reviewer } from './agents/reviewer.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `const team = new Swarm(cogitator, {`,\n ` name: '${options.name}-team',`,\n ` strategy: 'hierarchical',`,\n ` supervisor: reviewer,`,\n ` workers: [researcher, writer],`,\n ` hierarchical: {`,\n ` visibility: 'full',`,\n ` workerCommunication: true,`,\n ` },`,\n ` resources: {`,\n ` maxConcurrency: 3,`,\n ` timeout: 120000,`,\n ` },`,\n `})`,\n ``,\n `async function main() {`,\n ` console.log('Starting swarm...')`,\n ``,\n ` const result = await team.run({`,\n ` input: 'Write a comprehensive article about AI agent orchestration.',`,\n ` })`,\n ``,\n ` console.log('Result:', result.output)`,\n ` console.log('Strategy:', result.strategy)`,\n ``,\n ` await team.close()`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/tools.ts', content: toolsTs },\n { path: 'src/agents/researcher.ts', content: researcherTs },\n { path: 'src/agents/writer.ts', content: writerTs },\n { path: 'src/agents/reviewer.ts', content: reviewerTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/swarms': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const workflowTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const agentsTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n ``,\n `export const analyzer = new Agent({`,\n ` name: 'analyzer',`,\n ` model: '${model}',`,\n ` instructions: 'You analyze input data and extract key information. Be thorough and structured.',`,\n ` temperature: 0.3,`,\n `})`,\n ``,\n `export const processor = new Agent({`,\n ` name: 'processor',`,\n ` model: '${model}',`,\n ` instructions: 'You process analyzed data and transform it into actionable insights.',`,\n ` temperature: 0.5,`,\n `})`,\n ``,\n `export const formatter = new Agent({`,\n ` name: 'formatter',`,\n ` model: '${model}',`,\n ` instructions: 'You format processed data into a clean, readable report.',`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n ].join('\\n');\n\n const indexTs = [\n `import { Cogitator } from '@cogitator-ai/core'`,\n `import {`,\n ` WorkflowBuilder,`,\n ` WorkflowExecutor,`,\n ` agentNode,`,\n ` functionNode,`,\n `} from '@cogitator-ai/workflows'`,\n `import { analyzer, processor, formatter } from './agents.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `interface WorkflowState {`,\n ` input: string`,\n ` analysis?: string`,\n ` processed?: string`,\n ` report?: string`,\n `}`,\n ``,\n `const analyzeNode = agentNode<WorkflowState>(analyzer, {`,\n ` inputMapper: (state) => \\`Analyze the following: \\${state.input}\\`,`,\n ` stateMapper: (result) => ({ analysis: result.output }),`,\n `})`,\n ``,\n `const processNode = agentNode<WorkflowState>(processor, {`,\n ` inputMapper: (state) => \\`Process this analysis: \\${state.analysis ?? ''}\\`,`,\n ` stateMapper: (result) => ({ processed: result.output }),`,\n `})`,\n ``,\n `const formatNode = agentNode<WorkflowState>(formatter, {`,\n ` inputMapper: (state) => \\`Format this into a report: \\${state.processed ?? ''}\\`,`,\n ` stateMapper: (result) => ({ report: result.output }),`,\n `})`,\n ``,\n `const outputNode = functionNode<WorkflowState>(`,\n ` 'output',`,\n ` async (state) => state.report,`,\n `)`,\n ``,\n `const workflow = new WorkflowBuilder<WorkflowState>('${options.name}-workflow')`,\n ` .initialState({ input: '' })`,\n ` .entryPoint(analyzeNode.name)`,\n ` .addNode(analyzeNode.name, analyzeNode.fn)`,\n ` .addNode(processNode.name, processNode.fn, { after: [analyzeNode.name] })`,\n ` .addNode(formatNode.name, formatNode.fn, { after: [processNode.name] })`,\n ` .addNode(outputNode.name, outputNode.fn, { after: [formatNode.name] })`,\n ` .build()`,\n ``,\n `async function main() {`,\n ` const executor = new WorkflowExecutor(cogitator)`,\n ``,\n ` console.log('Starting workflow...')`,\n ``,\n ` const result = await executor.execute(workflow, {`,\n ` input: 'Analyze the current state of AI agent frameworks and their adoption in enterprise.',`,\n ` })`,\n ``,\n ` console.log('Workflow completed!')`,\n ` console.log('Result:', JSON.stringify(result, null, 2))`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/agents.ts', content: agentsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/workflows': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const apiServerTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const agentsTs = [\n `import { Agent, tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Results for: \\${query}\\``,\n ` },`,\n `})`,\n ``,\n `export const assistant = new Agent({`,\n ` name: 'assistant',`,\n ` model: '${model}',`,\n ` instructions: 'You are a helpful API assistant. Answer questions clearly and concisely.',`,\n ` tools: [searchTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n `export const coder = new Agent({`,\n ` name: 'coder',`,\n ` model: '${model}',`,\n ` instructions: 'You are an expert programmer. Write clean, well-structured code.',`,\n ` temperature: 0.3,`,\n `})`,\n ``,\n ].join('\\n');\n\n const indexTs = [\n `import express from 'express'`,\n `import { Cogitator } from '@cogitator-ai/core'`,\n `import { CogitatorServer } from '@cogitator-ai/express'`,\n `import { assistant, coder } from './agents.js'`,\n ``,\n `const app = express()`,\n `const port = process.env.PORT || 3000`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `const server = new CogitatorServer({`,\n ` app,`,\n ` cogitator,`,\n ` agents: { assistant, coder },`,\n ` config: {`,\n ` basePath: '/api',`,\n ` enableSwagger: true,`,\n ` cors: { origin: '*' },`,\n ` swagger: {`,\n ` title: '${options.name} API',`,\n ` version: '1.0.0',`,\n ` },`,\n ` },`,\n `})`,\n ``,\n `async function main() {`,\n ` await server.init()`,\n ``,\n ` app.listen(port, () => {`,\n ` console.log(\\`Server running at http://localhost:\\${port}\\`)`,\n ` console.log(\\`Swagger docs at http://localhost:\\${port}/api/docs\\`)`,\n ` })`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/agents.ts', content: agentsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/express': 'latest',\n express: '^4.21.0',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n '@types/express': '^5.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const nextjsTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const agentTs = [\n `import { Cogitator, Agent, tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Results for: \\${query}\\``,\n ` },`,\n `})`,\n ``,\n `export const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `export const agent = new Agent({`,\n ` name: '${options.name}-chat',`,\n ` model: '${model}',`,\n ` instructions: 'You are a helpful AI chat assistant. Be conversational and helpful.',`,\n ` tools: [searchTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n ].join('\\n');\n\n const routeTs = [\n `import { createChatHandler } from '@cogitator-ai/next'`,\n `import { cogitator, agent } from '@/lib/agent'`,\n ``,\n `export const POST = createChatHandler(cogitator, agent)`,\n ``,\n ].join('\\n');\n\n const pageTsx = [\n `'use client'`,\n ``,\n `import { useCogitatorChat } from '@cogitator-ai/next/client'`,\n `import { useState, useRef, useEffect } from 'react'`,\n ``,\n `export default function Home() {`,\n ` const { messages, input, setInput, send, isLoading } = useCogitatorChat({`,\n ` api: '/api/chat',`,\n ` })`,\n ` const messagesEndRef = useRef<HTMLDivElement>(null)`,\n ``,\n ` useEffect(() => {`,\n ` messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' })`,\n ` }, [messages])`,\n ``,\n ` const handleSubmit = (e: React.FormEvent) => {`,\n ` e.preventDefault()`,\n ` if (!input.trim() || isLoading) return`,\n ` send(input)`,\n ` setInput('')`,\n ` }`,\n ``,\n ` return (`,\n ` <main className=\"flex min-h-screen flex-col items-center p-4 bg-gray-950 text-white\">`,\n ` <div className=\"w-full max-w-2xl flex flex-col h-screen\">`,\n ` <header className=\"py-6 text-center\">`,\n ` <h1 className=\"text-2xl font-bold\">${options.name}</h1>`,\n ` <p className=\"text-gray-400 text-sm mt-1\">Powered by Cogitator</p>`,\n ` </header>`,\n ``,\n ` <div className=\"flex-1 overflow-y-auto space-y-4 pb-4\">`,\n ` {messages.map((msg, i) => (`,\n ` <div`,\n ` key={i}`,\n ` className={\\`flex \\${msg.role === 'user' ? 'justify-end' : 'justify-start'}\\`}`,\n ` >`,\n ` <div`,\n ` className={\\`max-w-[80%] rounded-2xl px-4 py-2 \\${`,\n ` msg.role === 'user'`,\n ` ? 'bg-blue-600 text-white'`,\n ` : 'bg-gray-800 text-gray-100'`,\n ` }\\`}`,\n ` >`,\n ` {msg.content}`,\n ` </div>`,\n ` </div>`,\n ` ))}`,\n ` {isLoading && (`,\n ` <div className=\"flex justify-start\">`,\n ` <div className=\"bg-gray-800 rounded-2xl px-4 py-2 text-gray-400\">`,\n ` Thinking...`,\n ` </div>`,\n ` </div>`,\n ` )}`,\n ` <div ref={messagesEndRef} />`,\n ` </div>`,\n ``,\n ` <form onSubmit={handleSubmit} className=\"flex gap-2 py-4\">`,\n ` <input`,\n ` value={input}`,\n ` onChange={(e) => setInput(e.target.value)}`,\n ` placeholder=\"Type a message...\"`,\n ` className=\"flex-1 bg-gray-800 border border-gray-700 rounded-xl px-4 py-3 text-white placeholder-gray-500 focus:outline-none focus:border-blue-500\"`,\n ` />`,\n ` <button`,\n ` type=\"submit\"`,\n ` disabled={isLoading || !input.trim()}`,\n ` className=\"bg-blue-600 hover:bg-blue-500 disabled:opacity-50 disabled:cursor-not-allowed text-white rounded-xl px-6 py-3 font-medium transition-colors\"`,\n ` >`,\n ` Send`,\n ` </button>`,\n ` </form>`,\n ` </div>`,\n ` </main>`,\n ` )`,\n `}`,\n ``,\n ].join('\\n');\n\n const layoutTsx = [\n `import type { Metadata } from 'next'`,\n `import './globals.css'`,\n ``,\n `export const metadata: Metadata = {`,\n ` title: '${options.name}',`,\n ` description: 'AI chat app powered by Cogitator',`,\n `}`,\n ``,\n `export default function RootLayout({`,\n ` children,`,\n `}: {`,\n ` children: React.ReactNode`,\n `}) {`,\n ` return (`,\n ` <html lang=\"en\">`,\n ` <body>{children}</body>`,\n ` </html>`,\n ` )`,\n `}`,\n ``,\n ].join('\\n');\n\n const globalsCss = [\n `@tailwind base;`,\n `@tailwind components;`,\n `@tailwind utilities;`,\n ``,\n ].join('\\n');\n\n const nextConfig = [\n `import type { NextConfig } from 'next'`,\n ``,\n `const config: NextConfig = {}`,\n ``,\n `export default config`,\n ``,\n ].join('\\n');\n\n const tsconfigJson = JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2017',\n lib: ['dom', 'dom.iterable', 'esnext'],\n allowJs: true,\n skipLibCheck: true,\n strict: true,\n noEmit: true,\n esModuleInterop: true,\n module: 'esnext',\n moduleResolution: 'bundler',\n resolveJsonModule: true,\n isolatedModules: true,\n jsx: 'preserve',\n incremental: true,\n plugins: [{ name: 'next' }],\n paths: { '@/*': ['./src/*'] },\n },\n include: ['next-env.d.ts', '**/*.ts', '**/*.tsx', '.next/types/**/*.ts'],\n exclude: ['node_modules'],\n },\n null,\n 2\n );\n\n const tailwindConfig = [\n `import type { Config } from 'tailwindcss'`,\n ``,\n `const config: Config = {`,\n ` content: ['./src/**/*.{ts,tsx}'],`,\n ` theme: { extend: {} },`,\n ` plugins: [],`,\n `}`,\n ``,\n `export default config`,\n ``,\n ].join('\\n');\n\n const postcssConfig = [\n `const config = {`,\n ` plugins: {`,\n ` tailwindcss: {},`,\n ` autoprefixer: {},`,\n ` },`,\n `}`,\n ``,\n `export default config`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/lib/agent.ts', content: agentTs },\n { path: 'src/app/api/chat/route.ts', content: routeTs },\n { path: 'src/app/page.tsx', content: pageTsx },\n { path: 'src/app/layout.tsx', content: layoutTsx },\n { path: 'src/app/globals.css', content: globalsCss },\n { path: 'next.config.ts', content: nextConfig },\n { path: 'tsconfig.json', content: tsconfigJson },\n { path: 'tailwind.config.ts', content: tailwindConfig },\n { path: 'postcss.config.mjs', content: postcssConfig },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/next': 'latest',\n next: '^15.0.0',\n react: '^19.0.0',\n 'react-dom': '^19.0.0',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n '@types/node': '^22.0.0',\n '@types/react': '^19.0.0',\n '@types/react-dom': '^19.0.0',\n tailwindcss: '^3.4.0',\n autoprefixer: '^10.4.0',\n postcss: '^8.4.0',\n };\n },\n\n scripts() {\n return {\n dev: 'next dev',\n build: 'next build',\n start: 'next start',\n lint: 'next lint',\n };\n },\n};\n","import type { Template, TemplateGenerator } from '../types.js';\nimport { basicTemplate } from './basic.js';\nimport { memoryTemplate } from './memory.js';\nimport { swarmTemplate } from './swarm.js';\nimport { workflowTemplate } from './workflow.js';\nimport { apiServerTemplate } from './api-server.js';\nimport { nextjsTemplate } from './nextjs.js';\n\nconst templates: Record<Template, TemplateGenerator> = {\n basic: basicTemplate,\n memory: memoryTemplate,\n swarm: swarmTemplate,\n workflow: workflowTemplate,\n 'api-server': apiServerTemplate,\n nextjs: nextjsTemplate,\n};\n\nexport function getTemplate(name: Template): TemplateGenerator {\n return templates[name];\n}\n\nexport const templateChoices: Array<{\n value: Template;\n label: string;\n hint: string;\n}> = [\n {\n value: 'basic',\n label: 'Basic agent',\n hint: 'Single agent with tools — best for getting started',\n },\n { value: 'memory', label: 'Agent with memory', hint: 'Persistent memory with Redis' },\n {\n value: 'swarm',\n label: 'Multi-agent swarm',\n hint: 'Team of agents with hierarchical coordination',\n },\n { value: 'workflow', label: 'DAG workflow', hint: 'Multi-step pipeline with checkpoints' },\n {\n value: 'api-server',\n label: 'REST API server',\n hint: 'Express server exposing agents via HTTP',\n },\n { value: 'nextjs', label: 'Next.js chat app', hint: 'Full-stack chat app with streaming' },\n];\n","import type { TemplateFile } from '../../types.js';\n\nexport function generateTsconfig(): TemplateFile {\n return {\n path: 'tsconfig.json',\n content: JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'NodeNext',\n moduleResolution: 'NodeNext',\n esModuleInterop: true,\n strict: true,\n skipLibCheck: true,\n outDir: 'dist',\n rootDir: 'src',\n declaration: true,\n resolveJsonModule: true,\n isolatedModules: true,\n },\n include: ['src'],\n },\n null,\n 2\n ),\n };\n}\n","import type { TemplateFile } from '../../types.js';\n\nexport function generateGitignore(): TemplateFile {\n return {\n path: '.gitignore',\n content: [\n 'node_modules/',\n 'dist/',\n '.env',\n '.env.local',\n '*.log',\n '.DS_Store',\n 'coverage/',\n '.turbo/',\n '',\n ].join('\\n'),\n };\n}\n","import type { LLMProvider, Template, TemplateFile } from '../../types.js';\n\nexport function generateEnvExample(provider: LLMProvider, template?: Template): TemplateFile {\n const lines: string[] = ['# Cogitator Environment Variables', ''];\n\n switch (provider) {\n case 'ollama':\n lines.push('# Ollama (default: http://localhost:11434)');\n lines.push('# OLLAMA_BASE_URL=http://localhost:11434');\n break;\n case 'openai':\n lines.push('# OpenAI');\n lines.push('OPENAI_API_KEY=sk-...');\n break;\n case 'anthropic':\n lines.push('# Anthropic');\n lines.push('ANTHROPIC_API_KEY=sk-ant-...');\n break;\n case 'google':\n lines.push('# Google AI');\n lines.push('GOOGLE_API_KEY=...');\n break;\n }\n\n if (template === 'memory') {\n lines.push('');\n lines.push('# Redis');\n lines.push('REDIS_URL=redis://localhost:6379');\n }\n\n lines.push('');\n\n return { path: '.env.example', content: lines.join('\\n') };\n}\n","import type { LLMProvider, TemplateFile } from '../../types.js';\n\nexport function generateDockerCompose(provider: LLMProvider): TemplateFile {\n const services: string[] = [];\n\n if (provider === 'ollama') {\n services.push(\n ...[\n ' ollama:',\n ' image: ollama/ollama:latest',\n ' ports:',\n ' - \"11434:11434\"',\n ' volumes:',\n ' - ollama_data:/root/.ollama',\n '',\n ]\n );\n }\n\n services.push(\n ...[\n ' redis:',\n ' image: redis:7-alpine',\n ' ports:',\n ' - \"6379:6379\"',\n ' volumes:',\n ' - redis_data:/data',\n '',\n ' postgres:',\n ' image: postgres:16-alpine',\n ' ports:',\n ' - \"5432:5432\"',\n ' environment:',\n ' POSTGRES_USER: ${POSTGRES_USER:-cogitator}',\n ' POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-cogitator}',\n ' POSTGRES_DB: ${POSTGRES_DB:-cogitator}',\n ' volumes:',\n ' - postgres_data:/var/lib/postgresql/data',\n ]\n );\n\n const volumes = ['volumes:'];\n if (provider === 'ollama') volumes.push(' ollama_data:');\n volumes.push(' redis_data:', ' postgres_data:');\n\n const content = ['services:', ...services, '', ...volumes, ''].join('\\n');\n\n return { path: 'docker-compose.yml', content };\n}\n","import type { LLMProvider, TemplateFile } from '../../types.js';\nimport { defaultModels } from '../../utils/providers.js';\n\nexport function generateCogitatorYml(provider: LLMProvider): TemplateFile {\n const model = defaultModels[provider];\n\n const lines = [`provider: ${provider}`, `model: ${model}`, ''];\n\n if (provider === 'ollama') {\n lines.push('ollama:', ' baseUrl: http://localhost:11434', '');\n }\n\n return { path: 'cogitator.yml', content: lines.join('\\n') };\n}\n","import { execSync } from 'node:child_process';\nimport type { PackageManager } from '../types.js';\n\nexport function detectPackageManager(): PackageManager {\n const ua = process.env.npm_config_user_agent;\n if (ua) {\n if (ua.startsWith('pnpm')) return 'pnpm';\n if (ua.startsWith('yarn')) return 'yarn';\n if (ua.startsWith('bun')) return 'bun';\n }\n return 'pnpm';\n}\n\nexport function installDependencies(cwd: string, pm: PackageManager) {\n execSync(`${pm} install`, { cwd, stdio: 'inherit' });\n}\n\nexport function devCommand(pm: PackageManager): string {\n if (pm === 'npm') return 'npm run dev';\n return `${pm} dev`;\n}\n\nexport function runCommand(pm: PackageManager): string {\n if (pm === 'npm') return 'npx';\n if (pm === 'pnpm') return 'pnpm dlx';\n if (pm === 'yarn') return 'yarn dlx';\n return 'bunx';\n}\n","import type { ProjectOptions, TemplateFile } from '../../types.js';\nimport { devCommand } from '../../utils/package-manager.js';\n\nconst templateNames: Record<string, string> = {\n basic: 'Basic Agent',\n memory: 'Agent with Memory',\n swarm: 'Multi-Agent Swarm',\n workflow: 'DAG Workflow',\n 'api-server': 'REST API Server',\n nextjs: 'Next.js Chat App',\n};\n\nexport function generateReadme(options: ProjectOptions): TemplateFile {\n const dev = devCommand(options.packageManager);\n const templateName = templateNames[options.template] || options.template;\n\n const content = [\n `# ${options.name}`,\n '',\n `> Created with [create-cogitator-app](https://github.com/cogitator-ai/cogitator) — ${templateName} template`,\n '',\n '## Getting Started',\n '',\n '```bash',\n `# Install dependencies`,\n `${options.packageManager} install`,\n '',\n `# Run the project`,\n dev,\n '```',\n '',\n ...(options.docker\n ? ['## Docker Services', '', '```bash', 'docker compose up -d', '```', '']\n : []),\n '## Learn More',\n '',\n '- [Cogitator Documentation](https://cogitator.dev/docs)',\n '- [GitHub Repository](https://github.com/cogitator-ai/cogitator)',\n '',\n ];\n\n return { path: 'README.md', content: content.join('\\n') };\n}\n","import { execSync } from 'node:child_process';\n\nexport function isGitInstalled(): boolean {\n try {\n execSync('git --version', { stdio: 'ignore' });\n return true;\n } catch {\n return false;\n }\n}\n\nexport function initGitRepo(cwd: string) {\n execSync('git init', { cwd, stdio: 'ignore' });\n execSync('git add -A', { cwd, stdio: 'ignore' });\n execSync(\n 'git -c user.name=\"Cogitator\" -c user.email=\"init@cogitator.dev\" commit -m \"feat: initial project scaffold\"',\n { cwd, stdio: 'ignore' }\n );\n}\n","import * as p from '@clack/prompts';\nimport path from 'node:path';\nimport type { LLMProvider, PackageManager, ProjectOptions, Template } from './types.js';\nimport { templateChoices } from './templates/index.js';\nimport { detectPackageManager } from './utils/package-manager.js';\n\ninterface ParsedArgs {\n name?: string;\n template?: Template;\n provider?: LLMProvider;\n packageManager?: PackageManager;\n docker?: boolean;\n git?: boolean;\n yes?: boolean;\n}\n\nconst validTemplates: Template[] = ['basic', 'memory', 'swarm', 'workflow', 'api-server', 'nextjs'];\nconst validProviders: LLMProvider[] = ['ollama', 'openai', 'anthropic', 'google'];\nconst validPMs: PackageManager[] = ['pnpm', 'npm', 'yarn', 'bun'];\n\nexport function parseArgs(args: string[]): ParsedArgs {\n const parsed: ParsedArgs = {};\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n if (arg === '--template' || arg === '-t') {\n if (i + 1 < args.length) {\n const val = args[++i] as Template;\n if (validTemplates.includes(val)) parsed.template = val;\n }\n } else if (arg === '--provider' || arg === '-p') {\n if (i + 1 < args.length) {\n const val = args[++i] as LLMProvider;\n if (validProviders.includes(val)) parsed.provider = val;\n }\n } else if (arg === '--pm') {\n if (i + 1 < args.length) {\n const val = args[++i] as PackageManager;\n if (validPMs.includes(val)) parsed.packageManager = val;\n }\n } else if (arg === '--docker') {\n parsed.docker = true;\n } else if (arg === '--no-docker') {\n parsed.docker = false;\n } else if (arg === '--git') {\n parsed.git = true;\n } else if (arg === '--no-git') {\n parsed.git = false;\n } else if (arg === '-y' || arg === '--yes') {\n parsed.yes = true;\n } else if (!arg.startsWith('-') && !parsed.name) {\n parsed.name = arg;\n }\n }\n\n return parsed;\n}\n\nexport async function collectOptions(args: ParsedArgs): Promise<ProjectOptions> {\n const rawName =\n args.name ||\n ((await p.text({\n message: 'Where should we create your project?',\n placeholder: './my-agents',\n defaultValue: 'my-agents',\n validate: (value) => {\n if (!value.trim()) return 'Project name is required';\n return undefined;\n },\n })) as string);\n\n if (p.isCancel(rawName)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const name = rawName.trim();\n const projectName = path.basename(path.normalize(name).replace(/^\\.\\//, '').replace(/^\\.\\\\/, ''));\n const projectPath = path.resolve(process.cwd(), name);\n\n const template =\n args.template ||\n ((await p.select({\n message: 'Which template would you like?',\n options: templateChoices,\n })) as Template);\n\n if (p.isCancel(template)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const provider =\n args.provider ||\n ((await p.select({\n message: 'Which LLM provider?',\n options: [\n {\n value: 'ollama' as const,\n label: 'Ollama',\n hint: 'local, free — requires Ollama installed',\n },\n { value: 'openai' as const, label: 'OpenAI', hint: 'GPT-4o' },\n { value: 'anthropic' as const, label: 'Anthropic', hint: 'Claude Sonnet' },\n { value: 'google' as const, label: 'Google Gemini', hint: 'Gemini 2.5 Flash' },\n ],\n })) as LLMProvider);\n\n if (p.isCancel(provider)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const packageManager =\n args.packageManager ||\n ((await p.select({\n message: 'Package manager?',\n options: [\n { value: 'pnpm' as const, label: 'pnpm' },\n { value: 'npm' as const, label: 'npm' },\n { value: 'yarn' as const, label: 'yarn' },\n { value: 'bun' as const, label: 'bun' },\n ],\n initialValue: detectPackageManager(),\n })) as PackageManager);\n\n if (p.isCancel(packageManager)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const docker =\n args.docker ??\n ((await p.confirm({\n message:\n 'Include Docker Compose? (Redis + Postgres' + (provider === 'ollama' ? ' + Ollama)' : ')'),\n initialValue: true,\n })) as boolean);\n\n if (p.isCancel(docker)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const git =\n args.git ??\n ((await p.confirm({\n message: 'Initialize git repository?',\n initialValue: true,\n })) as boolean);\n\n if (p.isCancel(git)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n return {\n name: projectName,\n path: projectPath,\n template,\n provider,\n packageManager,\n docker,\n git,\n };\n}\n"],"mappings":";AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,YAAY,OAAO;;;ACAZ,IAAM,gBAA6C;AAAA,EACxD,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AACV;AAEO,SAAS,eAAe,UAA+B;AAC5D,QAAM,MAAmC;AAAA,IACvC,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ;AAAA,EACV;AACA,SAAO,IAAI,QAAQ;AACrB;AAEO,SAAS,eAAe,UAA+B;AAC5D,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,IAAI;AAAA,IAEb,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,IAAI;AAAA,IAEb,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,IAAI;AAAA,IAEb,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,IAAI;AAAA,EACf;AACF;;;AC1DO,IAAM,gBAAmC;AAAA,EAC9C,MAAM,SAAyB;AAC7B,UAAM,QAAQ,cAAc,QAAQ,QAAQ;AAE5C,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe,QAAQ,QAAQ;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,QAAQ,IAAI;AAAA,MACxB,aAAa,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,WAAO;AAAA,MACL,EAAE,MAAM,gBAAgB,SAAS,QAAQ;AAAA,MACzC,EAAE,MAAM,gBAAgB,SAAS,QAAQ;AAAA,IAC3C;AAAA,EACF;AAAA,EAEA,eAAe;AACb,WAAO;AAAA,MACL,sBAAsB;AAAA,MACtB,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,kBAAkB;AAChB,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,eAAe;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,UAAU;AACR,WAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,WAAW;AAAA,IACb;AAAA,EACF;AACF;;;AC3FO,IAAM,iBAAoC;AAAA,EAC/C,MAAM,SAAyB;AAC7B,UAAM,QAAQ,cAAc,QAAQ,QAAQ;AAE5C,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe,QAAQ,QAAQ;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,QAAQ,IAAI;AAAA,MACxB,aAAa,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,WAAO;AAAA,MACL,EAAE,MAAM,gBAAgB,SAAS,QAAQ;AAAA,MACzC,EAAE,MAAM,gBAAgB,SAAS,QAAQ;AAAA,IAC3C;AAAA,EACF;AAAA,EAEA,eAAe;AACb,WAAO;AAAA,MACL,sBAAsB;AAAA,MACtB,wBAAwB;AAAA,MACxB,uBAAuB;AAAA,MACvB,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,kBAAkB;AAChB,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,eAAe;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,UAAU;AACR,WAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,WAAW;AAAA,IACb;AAAA,EACF;AACF;;;AChHO,IAAM,gBAAmC;AAAA,EAC9C,MAAM,SAAyB;AAC7B,UAAM,QAAQ,cAAc,QAAQ,QAAQ;AAE5C,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,WAAW;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe,QAAQ,QAAQ;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,QAAQ,IAAI;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,WAAO;AAAA,MACL,EAAE,MAAM,gBAAgB,SAAS,QAAQ;AAAA,MACzC,EAAE,MAAM,gBAAgB,SAAS,QAAQ;AAAA,MACzC,EAAE,MAAM,4BAA4B,SAAS,aAAa;AAAA,MAC1D,EAAE,MAAM,wBAAwB,SAAS,SAAS;AAAA,MAClD,EAAE,MAAM,0BAA0B,SAAS,WAAW;AAAA,IACxD;AAAA,EACF;AAAA,EAEA,eAAe;AACb,WAAO;AAAA,MACL,sBAAsB;AAAA,MACtB,wBAAwB;AAAA,MACxB,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,kBAAkB;AAChB,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,eAAe;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,UAAU;AACR,WAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,WAAW;AAAA,IACb;AAAA,EACF;AACF;;;ACnJO,IAAM,mBAAsC;AAAA,EACjD,MAAM,SAAyB;AAC7B,UAAM,QAAQ,cAAc,QAAQ,QAAQ;AAE5C,UAAM,WAAW;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe,QAAQ,QAAQ;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,wDAAwD,QAAQ,IAAI;AAAA,MACpE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,WAAO;AAAA,MACL,EAAE,MAAM,gBAAgB,SAAS,QAAQ;AAAA,MACzC,EAAE,MAAM,iBAAiB,SAAS,SAAS;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,eAAe;AACb,WAAO;AAAA,MACL,sBAAsB;AAAA,MACtB,2BAA2B;AAAA,MAC3B,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,kBAAkB;AAChB,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,eAAe;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,UAAU;AACR,WAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,WAAW;AAAA,IACb;AAAA,EACF;AACF;;;AC/HO,IAAM,oBAAuC;AAAA,EAClD,MAAM,SAAyB;AAC7B,UAAM,QAAQ,cAAc,QAAQ,QAAQ;AAE5C,UAAM,WAAW;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe,QAAQ,QAAQ;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,iBAAiB,QAAQ,IAAI;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,WAAO;AAAA,MACL,EAAE,MAAM,gBAAgB,SAAS,QAAQ;AAAA,MACzC,EAAE,MAAM,iBAAiB,SAAS,SAAS;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,eAAe;AACb,WAAO;AAAA,MACL,sBAAsB;AAAA,MACtB,yBAAyB;AAAA,MACzB,SAAS;AAAA,MACT,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,kBAAkB;AAChB,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,eAAe;AAAA,MACf,kBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EAEA,UAAU;AACR,WAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,WAAW;AAAA,IACb;AAAA,EACF;AACF;;;AC7GO,IAAM,iBAAoC;AAAA,EAC/C,MAAM,SAAyB;AAC7B,UAAM,QAAQ,cAAc,QAAQ,QAAQ;AAE5C,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe,QAAQ,QAAQ;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,QAAQ,IAAI;AAAA,MACxB,aAAa,KAAK;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,gDAAgD,QAAQ,IAAI;AAAA,MAC5D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,YAAY;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,QAAQ,IAAI;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,eAAe,KAAK;AAAA,MACxB;AAAA,QACE,iBAAiB;AAAA,UACf,QAAQ;AAAA,UACR,KAAK,CAAC,OAAO,gBAAgB,QAAQ;AAAA,UACrC,SAAS;AAAA,UACT,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,iBAAiB;AAAA,UACjB,QAAQ;AAAA,UACR,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,UACnB,iBAAiB;AAAA,UACjB,KAAK;AAAA,UACL,aAAa;AAAA,UACb,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;AAAA,UAC1B,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE;AAAA,QAC9B;AAAA,QACA,SAAS,CAAC,iBAAiB,WAAW,YAAY,qBAAqB;AAAA,QACvE,SAAS,CAAC,cAAc;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,gBAAgB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,WAAO;AAAA,MACL,EAAE,MAAM,oBAAoB,SAAS,QAAQ;AAAA,MAC7C,EAAE,MAAM,6BAA6B,SAAS,QAAQ;AAAA,MACtD,EAAE,MAAM,oBAAoB,SAAS,QAAQ;AAAA,MAC7C,EAAE,MAAM,sBAAsB,SAAS,UAAU;AAAA,MACjD,EAAE,MAAM,uBAAuB,SAAS,WAAW;AAAA,MACnD,EAAE,MAAM,kBAAkB,SAAS,WAAW;AAAA,MAC9C,EAAE,MAAM,iBAAiB,SAAS,aAAa;AAAA,MAC/C,EAAE,MAAM,sBAAsB,SAAS,eAAe;AAAA,MACtD,EAAE,MAAM,sBAAsB,SAAS,cAAc;AAAA,IACvD;AAAA,EACF;AAAA,EAEA,eAAe;AACb,WAAO;AAAA,MACL,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,kBAAkB;AAChB,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,MACpB,aAAa;AAAA,MACb,cAAc;AAAA,MACd,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,UAAU;AACR,WAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF;AACF;;;AC1PA,IAAM,YAAiD;AAAA,EACrD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAAA,EACd,QAAQ;AACV;AAEO,SAAS,YAAY,MAAmC;AAC7D,SAAO,UAAU,IAAI;AACvB;AAEO,IAAM,kBAIR;AAAA,EACH;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA,EAAE,OAAO,UAAU,OAAO,qBAAqB,MAAM,+BAA+B;AAAA,EACpF;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA,EAAE,OAAO,YAAY,OAAO,gBAAgB,MAAM,uCAAuC;AAAA,EACzF;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA,EAAE,OAAO,UAAU,OAAO,oBAAoB,MAAM,qCAAqC;AAC3F;;;AC1CO,SAAS,mBAAiC;AAC/C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,KAAK;AAAA,MACZ;AAAA,QACE,iBAAiB;AAAA,UACf,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,UACjB,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,aAAa;AAAA,UACb,mBAAmB;AAAA,UACnB,iBAAiB;AAAA,QACnB;AAAA,QACA,SAAS,CAAC,KAAK;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;ACxBO,SAAS,oBAAkC;AAChD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AACF;;;ACfO,SAAS,mBAAmB,UAAuB,UAAmC;AAC3F,QAAM,QAAkB,CAAC,qCAAqC,EAAE;AAEhE,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,YAAM,KAAK,4CAA4C;AACvD,YAAM,KAAK,0CAA0C;AACrD;AAAA,IACF,KAAK;AACH,YAAM,KAAK,UAAU;AACrB,YAAM,KAAK,uBAAuB;AAClC;AAAA,IACF,KAAK;AACH,YAAM,KAAK,aAAa;AACxB,YAAM,KAAK,8BAA8B;AACzC;AAAA,IACF,KAAK;AACH,YAAM,KAAK,aAAa;AACxB,YAAM,KAAK,oBAAoB;AAC/B;AAAA,EACJ;AAEA,MAAI,aAAa,UAAU;AACzB,UAAM,KAAK,EAAE;AACb,UAAM,KAAK,SAAS;AACpB,UAAM,KAAK,kCAAkC;AAAA,EAC/C;AAEA,QAAM,KAAK,EAAE;AAEb,SAAO,EAAE,MAAM,gBAAgB,SAAS,MAAM,KAAK,IAAI,EAAE;AAC3D;;;AC/BO,SAAS,sBAAsB,UAAqC;AACzE,QAAM,WAAqB,CAAC;AAE5B,MAAI,aAAa,UAAU;AACzB,aAAS;AAAA,MACP,GAAG;AAAA,QACD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS;AAAA,IACP,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAU,CAAC,UAAU;AAC3B,MAAI,aAAa,SAAU,SAAQ,KAAK,gBAAgB;AACxD,UAAQ,KAAK,iBAAiB,kBAAkB;AAEhD,QAAM,UAAU,CAAC,aAAa,GAAG,UAAU,IAAI,GAAG,SAAS,EAAE,EAAE,KAAK,IAAI;AAExE,SAAO,EAAE,MAAM,sBAAsB,QAAQ;AAC/C;;;AC7CO,SAAS,qBAAqB,UAAqC;AACxE,QAAM,QAAQ,cAAc,QAAQ;AAEpC,QAAM,QAAQ,CAAC,aAAa,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE;AAE7D,MAAI,aAAa,UAAU;AACzB,UAAM,KAAK,WAAW,qCAAqC,EAAE;AAAA,EAC/D;AAEA,SAAO,EAAE,MAAM,iBAAiB,SAAS,MAAM,KAAK,IAAI,EAAE;AAC5D;;;ACbA,SAAS,gBAAgB;AAGlB,SAAS,uBAAuC;AACrD,QAAM,KAAK,QAAQ,IAAI;AACvB,MAAI,IAAI;AACN,QAAI,GAAG,WAAW,MAAM,EAAG,QAAO;AAClC,QAAI,GAAG,WAAW,MAAM,EAAG,QAAO;AAClC,QAAI,GAAG,WAAW,KAAK,EAAG,QAAO;AAAA,EACnC;AACA,SAAO;AACT;AAEO,SAAS,oBAAoB,KAAa,IAAoB;AACnE,WAAS,GAAG,EAAE,YAAY,EAAE,KAAK,OAAO,UAAU,CAAC;AACrD;AAEO,SAAS,WAAW,IAA4B;AACrD,MAAI,OAAO,MAAO,QAAO;AACzB,SAAO,GAAG,EAAE;AACd;;;ACjBA,IAAM,gBAAwC;AAAA,EAC5C,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAAA,EACd,QAAQ;AACV;AAEO,SAAS,eAAe,SAAuC;AACpE,QAAM,MAAM,WAAW,QAAQ,cAAc;AAC7C,QAAM,eAAe,cAAc,QAAQ,QAAQ,KAAK,QAAQ;AAEhE,QAAM,UAAU;AAAA,IACd,KAAK,QAAQ,IAAI;AAAA,IACjB;AAAA,IACA,2FAAsF,YAAY;AAAA,IAClG;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG,QAAQ,cAAc;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,QAAQ,SACR,CAAC,sBAAsB,IAAI,WAAW,wBAAwB,OAAO,EAAE,IACvE,CAAC;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,EAAE,MAAM,aAAa,SAAS,QAAQ,KAAK,IAAI,EAAE;AAC1D;;;AC1CA,SAAS,YAAAA,iBAAgB;AAElB,SAAS,iBAA0B;AACxC,MAAI;AACF,IAAAA,UAAS,iBAAiB,EAAE,OAAO,SAAS,CAAC;AAC7C,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,SAAS,YAAY,KAAa;AACvC,EAAAA,UAAS,YAAY,EAAE,KAAK,OAAO,SAAS,CAAC;AAC7C,EAAAA,UAAS,cAAc,EAAE,KAAK,OAAO,SAAS,CAAC;AAC/C,EAAAA;AAAA,IACE;AAAA,IACA,EAAE,KAAK,OAAO,SAAS;AAAA,EACzB;AACF;;;AhBJA,SAAS,UAAU,UAAkB,MAAoB;AACvD,QAAM,WAAW,KAAK,KAAK,UAAU,KAAK,IAAI;AAC9C,KAAG,UAAU,KAAK,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AACxD,KAAG,cAAc,UAAU,KAAK,SAAS,OAAO;AAClD;AAEA,SAAS,iBAAiB,SAAiC;AACzD,QAAM,WAAW,YAAY,QAAQ,QAAQ;AAC7C,QAAM,WAAW,QAAQ,aAAa;AAEtC,QAAM,MAA+B;AAAA,IACnC,MAAM,QAAQ;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,IACT,GAAI,WAAW,CAAC,IAAI,EAAE,MAAM,SAAS;AAAA,IACrC,SAAS,SAAS,QAAQ;AAAA,IAC1B,cAAc,SAAS,aAAa;AAAA,IACpC,iBAAiB,SAAS,gBAAgB;AAAA,EAC5C;AAEA,SAAO,KAAK,UAAU,KAAK,MAAM,CAAC,IAAI;AACxC;AAEA,SAAS,aAAa,SAAyC;AAC7D,QAAM,WAAW,YAAY,QAAQ,QAAQ;AAC7C,QAAM,QAAwB,CAAC;AAE/B,QAAM,KAAK,EAAE,MAAM,gBAAgB,SAAS,iBAAiB,OAAO,EAAE,CAAC;AACvE,QAAM,KAAK,GAAG,SAAS,MAAM,OAAO,CAAC;AACrC,QAAM,KAAK,kBAAkB,CAAC;AAC9B,QAAM,KAAK,mBAAmB,QAAQ,UAAU,QAAQ,QAAQ,CAAC;AACjE,QAAM,KAAK,qBAAqB,QAAQ,QAAQ,CAAC;AACjD,QAAM,KAAK,eAAe,OAAO,CAAC;AAElC,MAAI,QAAQ,aAAa,UAAU;AACjC,UAAM,KAAK,iBAAiB,CAAC;AAAA,EAC/B;AAEA,MAAI,QAAQ,QAAQ;AAClB,UAAM,KAAK,sBAAsB,QAAQ,QAAQ,CAAC;AAAA,EACpD;AAEA,SAAO;AACT;AAEA,eAAsB,SAAS,SAAyB;AACtD,MAAI,GAAG,WAAW,QAAQ,IAAI,KAAK,GAAG,YAAY,QAAQ,IAAI,EAAE,SAAS,GAAG;AAC1E,UAAM,IAAI,MAAM,cAAc,QAAQ,IAAI,mCAAmC;AAAA,EAC/E;AAEA,QAAM,IAAM,UAAQ;AAEpB,IAAE,MAAM,0BAA0B;AAClC,QAAM,QAAQ,aAAa,OAAO;AAElC,KAAG,UAAU,QAAQ,MAAM,EAAE,WAAW,KAAK,CAAC;AAC9C,aAAW,QAAQ,OAAO;AACxB,cAAU,QAAQ,MAAM,IAAI;AAAA,EAC9B;AACA,IAAE,KAAK,yBAAyB;AAEhC,IAAE,MAAM,yBAAyB;AACjC,MAAI;AACF,wBAAoB,QAAQ,MAAM,QAAQ,cAAc;AACxD,MAAE,KAAK,wBAAwB;AAAA,EACjC,QAAQ;AACN,MAAE,KAAK,oDAA+C;AAAA,EACxD;AAEA,MAAI,QAAQ,OAAO,eAAe,GAAG;AACnC,MAAE,MAAM,6BAA6B;AACrC,QAAI;AACF,kBAAY,QAAQ,IAAI;AACxB,QAAE,KAAK,4BAA4B;AAAA,IACrC,QAAQ;AACN,QAAE,KAAK,8CAAyC;AAAA,IAClD;AAAA,EACF;AACF;;;AiB5FA,YAAYC,QAAO;AACnB,OAAOC,WAAU;AAejB,IAAM,iBAA6B,CAAC,SAAS,UAAU,SAAS,YAAY,cAAc,QAAQ;AAClG,IAAM,iBAAgC,CAAC,UAAU,UAAU,aAAa,QAAQ;AAChF,IAAM,WAA6B,CAAC,QAAQ,OAAO,QAAQ,KAAK;AAEzD,SAAS,UAAU,MAA4B;AACpD,QAAM,SAAqB,CAAC;AAE5B,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,MAAM,KAAK,CAAC;AAElB,QAAI,QAAQ,gBAAgB,QAAQ,MAAM;AACxC,UAAI,IAAI,IAAI,KAAK,QAAQ;AACvB,cAAM,MAAM,KAAK,EAAE,CAAC;AACpB,YAAI,eAAe,SAAS,GAAG,EAAG,QAAO,WAAW;AAAA,MACtD;AAAA,IACF,WAAW,QAAQ,gBAAgB,QAAQ,MAAM;AAC/C,UAAI,IAAI,IAAI,KAAK,QAAQ;AACvB,cAAM,MAAM,KAAK,EAAE,CAAC;AACpB,YAAI,eAAe,SAAS,GAAG,EAAG,QAAO,WAAW;AAAA,MACtD;AAAA,IACF,WAAW,QAAQ,QAAQ;AACzB,UAAI,IAAI,IAAI,KAAK,QAAQ;AACvB,cAAM,MAAM,KAAK,EAAE,CAAC;AACpB,YAAI,SAAS,SAAS,GAAG,EAAG,QAAO,iBAAiB;AAAA,MACtD;AAAA,IACF,WAAW,QAAQ,YAAY;AAC7B,aAAO,SAAS;AAAA,IAClB,WAAW,QAAQ,eAAe;AAChC,aAAO,SAAS;AAAA,IAClB,WAAW,QAAQ,SAAS;AAC1B,aAAO,MAAM;AAAA,IACf,WAAW,QAAQ,YAAY;AAC7B,aAAO,MAAM;AAAA,IACf,WAAW,QAAQ,QAAQ,QAAQ,SAAS;AAC1C,aAAO,MAAM;AAAA,IACf,WAAW,CAAC,IAAI,WAAW,GAAG,KAAK,CAAC,OAAO,MAAM;AAC/C,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAsB,eAAe,MAA2C;AAC9E,QAAM,UACJ,KAAK,QACH,MAAQ,QAAK;AAAA,IACb,SAAS;AAAA,IACT,aAAa;AAAA,IACb,cAAc;AAAA,IACd,UAAU,CAAC,UAAU;AACnB,UAAI,CAAC,MAAM,KAAK,EAAG,QAAO;AAC1B,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AAEH,MAAM,YAAS,OAAO,GAAG;AACvB,IAAE,UAAO,sBAAsB;AAC/B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,OAAO,QAAQ,KAAK;AAC1B,QAAM,cAAcC,MAAK,SAASA,MAAK,UAAU,IAAI,EAAE,QAAQ,SAAS,EAAE,EAAE,QAAQ,SAAS,EAAE,CAAC;AAChG,QAAM,cAAcA,MAAK,QAAQ,QAAQ,IAAI,GAAG,IAAI;AAEpD,QAAM,WACJ,KAAK,YACH,MAAQ,UAAO;AAAA,IACf,SAAS;AAAA,IACT,SAAS;AAAA,EACX,CAAC;AAEH,MAAM,YAAS,QAAQ,GAAG;AACxB,IAAE,UAAO,sBAAsB;AAC/B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,WACJ,KAAK,YACH,MAAQ,UAAO;AAAA,IACf,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,EAAE,OAAO,UAAmB,OAAO,UAAU,MAAM,SAAS;AAAA,MAC5D,EAAE,OAAO,aAAsB,OAAO,aAAa,MAAM,gBAAgB;AAAA,MACzE,EAAE,OAAO,UAAmB,OAAO,iBAAiB,MAAM,mBAAmB;AAAA,IAC/E;AAAA,EACF,CAAC;AAEH,MAAM,YAAS,QAAQ,GAAG;AACxB,IAAE,UAAO,sBAAsB;AAC/B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,iBACJ,KAAK,kBACH,MAAQ,UAAO;AAAA,IACf,SAAS;AAAA,IACT,SAAS;AAAA,MACP,EAAE,OAAO,QAAiB,OAAO,OAAO;AAAA,MACxC,EAAE,OAAO,OAAgB,OAAO,MAAM;AAAA,MACtC,EAAE,OAAO,QAAiB,OAAO,OAAO;AAAA,MACxC,EAAE,OAAO,OAAgB,OAAO,MAAM;AAAA,IACxC;AAAA,IACA,cAAc,qBAAqB;AAAA,EACrC,CAAC;AAEH,MAAM,YAAS,cAAc,GAAG;AAC9B,IAAE,UAAO,sBAAsB;AAC/B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,SACJ,KAAK,UACH,MAAQ,WAAQ;AAAA,IAChB,SACE,+CAA+C,aAAa,WAAW,eAAe;AAAA,IACxF,cAAc;AAAA,EAChB,CAAC;AAEH,MAAM,YAAS,MAAM,GAAG;AACtB,IAAE,UAAO,sBAAsB;AAC/B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,MACJ,KAAK,OACH,MAAQ,WAAQ;AAAA,IAChB,SAAS;AAAA,IACT,cAAc;AAAA,EAChB,CAAC;AAEH,MAAM,YAAS,GAAG,GAAG;AACnB,IAAE,UAAO,sBAAsB;AAC/B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":["execSync","p","path","path"]}
1
+ {"version":3,"sources":["../src/scaffold.ts","../src/utils/providers.ts","../src/templates/basic.ts","../src/templates/memory.ts","../src/templates/swarm.ts","../src/templates/workflow.ts","../src/templates/api-server.ts","../src/templates/nextjs.ts","../src/templates/index.ts","../src/templates/base/tsconfig.ts","../src/templates/base/gitignore.ts","../src/templates/base/env-example.ts","../src/templates/base/docker-compose.ts","../src/templates/base/cogitator-yml.ts","../src/utils/package-manager.ts","../src/templates/base/readme.ts","../src/templates/base/pnpm-workspace.ts","../src/utils/git.ts","../src/prompts.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport * as p from '@clack/prompts';\nimport type { ProjectOptions, TemplateFile } from './types.js';\nimport { getTemplate } from './templates/index.js';\nimport { generateTsconfig } from './templates/base/tsconfig.js';\nimport { generateGitignore } from './templates/base/gitignore.js';\nimport { generateEnvExample } from './templates/base/env-example.js';\nimport { generateDockerCompose } from './templates/base/docker-compose.js';\nimport { generateCogitatorYml } from './templates/base/cogitator-yml.js';\nimport { generateReadme } from './templates/base/readme.js';\nimport { generatePnpmWorkspace } from './templates/base/pnpm-workspace.js';\nimport { installDependencies } from './utils/package-manager.js';\nimport { initGitRepo, isGitInstalled } from './utils/git.js';\n\nfunction writeFile(basePath: string, file: TemplateFile) {\n const fullPath = path.join(basePath, file.path);\n fs.mkdirSync(path.dirname(fullPath), { recursive: true });\n fs.writeFileSync(fullPath, file.content, 'utf-8');\n}\n\nfunction buildPackageJson(options: ProjectOptions): string {\n const template = getTemplate(options.template);\n const isNextjs = options.template === 'nextjs';\n\n const pkg: Record<string, unknown> = {\n name: options.name,\n version: '0.1.0',\n private: true,\n ...(isNextjs ? {} : { type: 'module' }),\n scripts: template.scripts(),\n dependencies: template.dependencies(),\n devDependencies: template.devDependencies(),\n };\n\n return JSON.stringify(pkg, null, 2) + '\\n';\n}\n\nfunction collectFiles(options: ProjectOptions): TemplateFile[] {\n const template = getTemplate(options.template);\n const files: TemplateFile[] = [];\n\n files.push({ path: 'package.json', content: buildPackageJson(options) });\n files.push(...template.files(options));\n files.push(generateGitignore());\n files.push(generateEnvExample(options.provider, options.template));\n files.push(generateCogitatorYml(options.provider));\n files.push(generateReadme(options));\n\n if (options.template !== 'nextjs') {\n files.push(generateTsconfig());\n }\n\n if (options.packageManager === 'pnpm') {\n files.push(generatePnpmWorkspace());\n }\n\n if (options.docker) {\n files.push(generateDockerCompose(options.provider));\n }\n\n return files;\n}\n\nexport async function scaffold(options: ProjectOptions) {\n if (fs.existsSync(options.path) && fs.readdirSync(options.path).length > 0) {\n throw new Error(`Directory \"${options.path}\" already exists and is not empty`);\n }\n\n const s = p.spinner();\n\n s.start('Generating project files');\n const files = collectFiles(options);\n\n fs.mkdirSync(options.path, { recursive: true });\n for (const file of files) {\n writeFile(options.path, file);\n }\n s.stop('Generated project files');\n\n s.start('Installing dependencies');\n try {\n installDependencies(options.path, options.packageManager);\n s.stop('Installed dependencies');\n } catch {\n s.stop('Failed to install dependencies — run manually');\n }\n\n if (options.git && isGitInstalled()) {\n s.start('Initializing git repository');\n try {\n initGitRepo(options.path);\n s.stop('Initialized git repository');\n } catch {\n s.stop('Failed to initialize git — run manually');\n }\n }\n}\n","import type { LLMProvider } from '../types.js';\n\nexport const defaultModels: Record<LLMProvider, string> = {\n ollama: 'qwen3:8b',\n openai: 'gpt-6.1-sol',\n anthropic: 'claude-sonnet-5-5',\n google: 'gemini-3.8-flash',\n};\n\nexport function providerEnvKey(provider: LLMProvider): string {\n const map: Record<LLMProvider, string> = {\n ollama: 'OLLAMA_BASE_URL',\n openai: 'OPENAI_API_KEY',\n anthropic: 'ANTHROPIC_API_KEY',\n google: 'GOOGLE_API_KEY',\n };\n return map[provider];\n}\n\nexport function providerConfig(provider: LLMProvider): string {\n switch (provider) {\n case 'ollama':\n return [\n ` llm: {`,\n ` defaultProvider: 'ollama',`,\n ` providers: {`,\n ` ollama: { baseUrl: process.env.OLLAMA_BASE_URL || 'http://localhost:11434' },`,\n ` },`,\n ` },`,\n ].join('\\n');\n\n case 'openai':\n return [\n ` llm: {`,\n ` defaultProvider: 'openai',`,\n ` providers: {`,\n ` openai: { apiKey: process.env.OPENAI_API_KEY! },`,\n ` },`,\n ` },`,\n ].join('\\n');\n\n case 'anthropic':\n return [\n ` llm: {`,\n ` defaultProvider: 'anthropic',`,\n ` providers: {`,\n ` anthropic: { apiKey: process.env.ANTHROPIC_API_KEY! },`,\n ` },`,\n ` },`,\n ].join('\\n');\n\n case 'google':\n return [\n ` llm: {`,\n ` defaultProvider: 'google',`,\n ` providers: {`,\n ` google: { apiKey: process.env.GOOGLE_API_KEY! },`,\n ` },`,\n ` },`,\n ].join('\\n');\n }\n}\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const basicTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const indexTs = [\n `import { Cogitator, Agent } from '@cogitator-ai/core'`,\n `import { searchTool, summarizeTool } from './tools.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `const agent = new Agent({`,\n ` name: '${options.name}-agent',`,\n ` model: '${model}',`,\n ` instructions: 'You are a helpful AI assistant. Use your tools to help the user.',`,\n ` tools: [searchTool, summarizeTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n `async function main() {`,\n ` const result = await cogitator.run(agent, {`,\n ` input: 'What is Cogitator and how does it work?',`,\n ` })`,\n ``,\n ` console.log(result.output)`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n const toolsTs = [\n `import { tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `export const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information on a topic',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('The search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Search results for: \\${query}\\\\n\\\\nCogitator is a self-hosted AI agent runtime for TypeScript.\\``,\n ` },`,\n `})`,\n ``,\n `export const summarizeTool = tool({`,\n ` name: 'summarize',`,\n ` description: 'Summarize a piece of text',`,\n ` parameters: z.object({`,\n ` text: z.string().describe('The text to summarize'),`,\n ` maxLength: z.number().optional().describe('Maximum summary length'),`,\n ` }),`,\n ` execute: async ({ text, maxLength }) => {`,\n ` const limit = maxLength || 200`,\n ` return text.length > limit ? text.slice(0, limit) + '...' : text`,\n ` },`,\n `})`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/tools.ts', content: toolsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const memoryTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const indexTs = [\n `import { Cogitator, Agent } from '@cogitator-ai/core'`,\n `import { searchTool, noteTool } from './tools.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n ` memory: {`,\n ` adapter: 'redis',`,\n ` redis: { url: process.env.REDIS_URL || 'redis://localhost:6379' },`,\n ` },`,\n `})`,\n ``,\n `const agent = new Agent({`,\n ` name: '${options.name}-agent',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are an AI assistant with persistent memory.',`,\n ` 'You remember past conversations and user preferences.',`,\n ` 'Use the note tool to save important information.',`,\n ` ].join(' '),`,\n ` tools: [searchTool, noteTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n `async function main() {`,\n ` const threadId = 'demo-thread'`,\n ``,\n ` const result1 = await cogitator.run(agent, {`,\n ` input: 'My name is Alex and I prefer TypeScript.',`,\n ` threadId,`,\n ` useMemory: true,`,\n ` })`,\n ` console.log('Response 1:', result1.output)`,\n ``,\n ` const result2 = await cogitator.run(agent, {`,\n ` input: 'What is my name and preferred language?',`,\n ` threadId,`,\n ` useMemory: true,`,\n ` })`,\n ` console.log('Response 2:', result2.output)`,\n ``,\n ` await cogitator.close()`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n const toolsTs = [\n `import { tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `export const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Results for: \\${query}\\``,\n ` },`,\n `})`,\n ``,\n `export const noteTool = tool({`,\n ` name: 'note',`,\n ` description: 'Save a note for later reference',`,\n ` parameters: z.object({`,\n ` title: z.string().describe('Note title'),`,\n ` content: z.string().describe('Note content'),`,\n ` }),`,\n ` execute: async ({ title, content }) => {`,\n ` return \\`Saved note \"\\${title}\": \\${content}\\``,\n ` },`,\n `})`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/tools.ts', content: toolsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/memory': 'latest',\n '@cogitator-ai/redis': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const swarmTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const researcherTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n `import { searchTool } from '../tools.js'`,\n ``,\n `export const researcher = new Agent({`,\n ` name: 'researcher',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are a research specialist.',`,\n ` 'Use the search tool to find information.',`,\n ` 'Provide detailed, factual findings.',`,\n ` ].join(' '),`,\n ` tools: [searchTool],`,\n ` temperature: 0.3,`,\n `})`,\n ``,\n ].join('\\n');\n\n const writerTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n ``,\n `export const writer = new Agent({`,\n ` name: 'writer',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are a skilled content writer.',`,\n ` 'Take research findings and craft well-structured, engaging content.',`,\n ` 'Focus on clarity and readability.',`,\n ` ].join(' '),`,\n ` temperature: 0.8,`,\n `})`,\n ``,\n ].join('\\n');\n\n const reviewerTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n ``,\n `export const reviewer = new Agent({`,\n ` name: 'reviewer',`,\n ` model: '${model}',`,\n ` instructions: [`,\n ` 'You are a meticulous content reviewer.',`,\n ` 'Check for accuracy, grammar, and overall quality.',`,\n ` 'Provide constructive feedback.',`,\n ` ].join(' '),`,\n ` temperature: 0.2,`,\n `})`,\n ``,\n ].join('\\n');\n\n const toolsTs = [\n `import { tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `export const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information on a topic',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Research findings for \"\\${query}\": Cogitator is a production-grade AI agent runtime for TypeScript that supports swarms, workflows, and tool execution.\\``,\n ` },`,\n `})`,\n ``,\n ].join('\\n');\n\n const indexTs = [\n `import { Cogitator } from '@cogitator-ai/core'`,\n `import { Swarm } from '@cogitator-ai/swarms'`,\n `import { researcher } from './agents/researcher.js'`,\n `import { writer } from './agents/writer.js'`,\n `import { reviewer } from './agents/reviewer.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `const team = new Swarm(cogitator, {`,\n ` name: '${options.name}-team',`,\n ` strategy: 'hierarchical',`,\n ` supervisor: reviewer,`,\n ` workers: [researcher, writer],`,\n ` hierarchical: {`,\n ` visibility: 'full',`,\n ` workerCommunication: true,`,\n ` },`,\n ` resources: {`,\n ` maxConcurrency: 3,`,\n ` timeout: 120000,`,\n ` },`,\n `})`,\n ``,\n `async function main() {`,\n ` console.log('Starting swarm...')`,\n ``,\n ` const result = await team.run({`,\n ` input: 'Write a comprehensive article about AI agent orchestration.',`,\n ` })`,\n ``,\n ` console.log('Result:', result.output)`,\n ` console.log('Strategy:', result.strategy)`,\n ``,\n ` await team.close()`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/tools.ts', content: toolsTs },\n { path: 'src/agents/researcher.ts', content: researcherTs },\n { path: 'src/agents/writer.ts', content: writerTs },\n { path: 'src/agents/reviewer.ts', content: reviewerTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/swarms': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const workflowTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const agentsTs = [\n `import { Agent } from '@cogitator-ai/core'`,\n ``,\n `export const analyzer = new Agent({`,\n ` name: 'analyzer',`,\n ` model: '${model}',`,\n ` instructions: 'You analyze input data and extract key information. Be thorough and structured.',`,\n ` temperature: 0.3,`,\n `})`,\n ``,\n `export const processor = new Agent({`,\n ` name: 'processor',`,\n ` model: '${model}',`,\n ` instructions: 'You process analyzed data and transform it into actionable insights.',`,\n ` temperature: 0.5,`,\n `})`,\n ``,\n `export const formatter = new Agent({`,\n ` name: 'formatter',`,\n ` model: '${model}',`,\n ` instructions: 'You format processed data into a clean, readable report.',`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n ].join('\\n');\n\n const indexTs = [\n `import { Cogitator } from '@cogitator-ai/core'`,\n `import {`,\n ` WorkflowBuilder,`,\n ` WorkflowExecutor,`,\n ` agentNode,`,\n ` functionNode,`,\n `} from '@cogitator-ai/workflows'`,\n `import { analyzer, processor, formatter } from './agents.js'`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `interface WorkflowState {`,\n ` input: string`,\n ` analysis?: string`,\n ` processed?: string`,\n ` report?: string`,\n `}`,\n ``,\n `const analyzeNode = agentNode<WorkflowState>(analyzer, {`,\n ` inputMapper: (state) => \\`Analyze the following: \\${state.input}\\`,`,\n ` stateMapper: (result) => ({ analysis: result.output }),`,\n `})`,\n ``,\n `const processNode = agentNode<WorkflowState>(processor, {`,\n ` inputMapper: (state) => \\`Process this analysis: \\${state.analysis ?? ''}\\`,`,\n ` stateMapper: (result) => ({ processed: result.output }),`,\n `})`,\n ``,\n `const formatNode = agentNode<WorkflowState>(formatter, {`,\n ` inputMapper: (state) => \\`Format this into a report: \\${state.processed ?? ''}\\`,`,\n ` stateMapper: (result) => ({ report: result.output }),`,\n `})`,\n ``,\n `const outputNode = functionNode<WorkflowState>(`,\n ` 'output',`,\n ` async (state) => state.report,`,\n `)`,\n ``,\n `const workflow = new WorkflowBuilder<WorkflowState>('${options.name}-workflow')`,\n ` .initialState({ input: '' })`,\n ` .entryPoint(analyzeNode.name)`,\n ` .addNode(analyzeNode.name, analyzeNode.fn)`,\n ` .addNode(processNode.name, processNode.fn, { after: [analyzeNode.name] })`,\n ` .addNode(formatNode.name, formatNode.fn, { after: [processNode.name] })`,\n ` .addNode(outputNode.name, outputNode.fn, { after: [formatNode.name] })`,\n ` .build()`,\n ``,\n `async function main() {`,\n ` const executor = new WorkflowExecutor(cogitator)`,\n ``,\n ` console.log('Starting workflow...')`,\n ``,\n ` const result = await executor.execute(workflow, {`,\n ` input: 'Analyze the current state of AI agent frameworks and their adoption in enterprise.',`,\n ` })`,\n ``,\n ` console.log('Workflow completed!')`,\n ` console.log('Result:', JSON.stringify(result, null, 2))`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/agents.ts', content: agentsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/workflows': 'latest',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const apiServerTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const agentsTs = [\n `import { Agent, tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Results for: \\${query}\\``,\n ` },`,\n `})`,\n ``,\n `export const assistant = new Agent({`,\n ` name: 'assistant',`,\n ` model: '${model}',`,\n ` instructions: 'You are a helpful API assistant. Answer questions clearly and concisely.',`,\n ` tools: [searchTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n `export const coder = new Agent({`,\n ` name: 'coder',`,\n ` model: '${model}',`,\n ` instructions: 'You are an expert programmer. Write clean, well-structured code.',`,\n ` temperature: 0.3,`,\n `})`,\n ``,\n ].join('\\n');\n\n const indexTs = [\n `import express from 'express'`,\n `import { Cogitator } from '@cogitator-ai/core'`,\n `import { CogitatorServer } from '@cogitator-ai/express'`,\n `import { assistant, coder } from './agents.js'`,\n ``,\n `const app = express()`,\n `const port = process.env.PORT || 3000`,\n ``,\n `const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `const server = new CogitatorServer({`,\n ` app,`,\n ` cogitator,`,\n ` agents: { assistant, coder },`,\n ` config: {`,\n ` basePath: '/api',`,\n ` enableSwagger: true,`,\n ` cors: { origin: '*' },`,\n ` swagger: {`,\n ` title: '${options.name} API',`,\n ` version: '1.0.0',`,\n ` },`,\n ` },`,\n `})`,\n ``,\n `async function main() {`,\n ` await server.init()`,\n ``,\n ` app.listen(port, () => {`,\n ` console.log(\\`Server running at http://localhost:\\${port}\\`)`,\n ` console.log(\\`Swagger docs at http://localhost:\\${port}/api/docs\\`)`,\n ` })`,\n `}`,\n ``,\n `main().catch(console.error)`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/index.ts', content: indexTs },\n { path: 'src/agents.ts', content: agentsTs },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/express': 'latest',\n express: '^4.21.0',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n tsx: '^4.19.0',\n '@types/node': '^22.0.0',\n '@types/express': '^5.0.0',\n };\n },\n\n scripts() {\n return {\n dev: 'tsx watch src/index.ts',\n start: 'tsx src/index.ts',\n build: 'tsc',\n typecheck: 'tsc --noEmit',\n };\n },\n};\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\n\nexport const nextjsTemplate: TemplateGenerator = {\n files(options: ProjectOptions) {\n const model = defaultModels[options.provider];\n\n const agentTs = [\n `import { Cogitator, Agent, tool } from '@cogitator-ai/core'`,\n `import { z } from 'zod'`,\n ``,\n `const searchTool = tool({`,\n ` name: 'search',`,\n ` description: 'Search for information',`,\n ` parameters: z.object({`,\n ` query: z.string().describe('Search query'),`,\n ` }),`,\n ` execute: async ({ query }) => {`,\n ` return \\`Results for: \\${query}\\``,\n ` },`,\n `})`,\n ``,\n `export const cogitator = new Cogitator({`,\n providerConfig(options.provider),\n `})`,\n ``,\n `export const agent = new Agent({`,\n ` name: '${options.name}-chat',`,\n ` model: '${model}',`,\n ` instructions: 'You are a helpful AI chat assistant. Be conversational and helpful.',`,\n ` tools: [searchTool],`,\n ` temperature: 0.7,`,\n `})`,\n ``,\n ].join('\\n');\n\n const routeTs = [\n `import { createChatHandler } from '@cogitator-ai/next'`,\n `import { cogitator, agent } from '@/lib/agent'`,\n ``,\n `export const POST = createChatHandler(cogitator, agent)`,\n ``,\n ].join('\\n');\n\n const pageTsx = [\n `'use client'`,\n ``,\n `import { useCogitatorChat } from '@cogitator-ai/next/client'`,\n `import { useState, useRef, useEffect } from 'react'`,\n ``,\n `export default function Home() {`,\n ` const { messages, input, setInput, send, isLoading } = useCogitatorChat({`,\n ` api: '/api/chat',`,\n ` })`,\n ` const messagesEndRef = useRef<HTMLDivElement>(null)`,\n ``,\n ` useEffect(() => {`,\n ` messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' })`,\n ` }, [messages])`,\n ``,\n ` const handleSubmit = (e: React.FormEvent) => {`,\n ` e.preventDefault()`,\n ` if (!input.trim() || isLoading) return`,\n ` send(input)`,\n ` setInput('')`,\n ` }`,\n ``,\n ` return (`,\n ` <main className=\"flex min-h-screen flex-col items-center p-4 bg-gray-950 text-white\">`,\n ` <div className=\"w-full max-w-2xl flex flex-col h-screen\">`,\n ` <header className=\"py-6 text-center\">`,\n ` <h1 className=\"text-2xl font-bold\">${options.name}</h1>`,\n ` <p className=\"text-gray-400 text-sm mt-1\">Powered by Cogitator</p>`,\n ` </header>`,\n ``,\n ` <div className=\"flex-1 overflow-y-auto space-y-4 pb-4\">`,\n ` {messages.map((msg, i) => (`,\n ` <div`,\n ` key={i}`,\n ` className={\\`flex \\${msg.role === 'user' ? 'justify-end' : 'justify-start'}\\`}`,\n ` >`,\n ` <div`,\n ` className={\\`max-w-[80%] rounded-2xl px-4 py-2 \\${`,\n ` msg.role === 'user'`,\n ` ? 'bg-blue-600 text-white'`,\n ` : 'bg-gray-800 text-gray-100'`,\n ` }\\`}`,\n ` >`,\n ` {msg.content}`,\n ` </div>`,\n ` </div>`,\n ` ))}`,\n ` {isLoading && (`,\n ` <div className=\"flex justify-start\">`,\n ` <div className=\"bg-gray-800 rounded-2xl px-4 py-2 text-gray-400\">`,\n ` Thinking...`,\n ` </div>`,\n ` </div>`,\n ` )}`,\n ` <div ref={messagesEndRef} />`,\n ` </div>`,\n ``,\n ` <form onSubmit={handleSubmit} className=\"flex gap-2 py-4\">`,\n ` <input`,\n ` value={input}`,\n ` onChange={(e) => setInput(e.target.value)}`,\n ` placeholder=\"Type a message...\"`,\n ` className=\"flex-1 bg-gray-800 border border-gray-700 rounded-xl px-4 py-3 text-white placeholder-gray-500 focus:outline-none focus:border-blue-500\"`,\n ` />`,\n ` <button`,\n ` type=\"submit\"`,\n ` disabled={isLoading || !input.trim()}`,\n ` className=\"bg-blue-600 hover:bg-blue-500 disabled:opacity-50 disabled:cursor-not-allowed text-white rounded-xl px-6 py-3 font-medium transition-colors\"`,\n ` >`,\n ` Send`,\n ` </button>`,\n ` </form>`,\n ` </div>`,\n ` </main>`,\n ` )`,\n `}`,\n ``,\n ].join('\\n');\n\n const layoutTsx = [\n `import type { Metadata } from 'next'`,\n `import './globals.css'`,\n ``,\n `export const metadata: Metadata = {`,\n ` title: '${options.name}',`,\n ` description: 'AI chat app powered by Cogitator',`,\n `}`,\n ``,\n `export default function RootLayout({`,\n ` children,`,\n `}: {`,\n ` children: React.ReactNode`,\n `}) {`,\n ` return (`,\n ` <html lang=\"en\">`,\n ` <body>{children}</body>`,\n ` </html>`,\n ` )`,\n `}`,\n ``,\n ].join('\\n');\n\n const globalsCss = [\n `@tailwind base;`,\n `@tailwind components;`,\n `@tailwind utilities;`,\n ``,\n ].join('\\n');\n\n const nextConfig = [\n `import type { NextConfig } from 'next'`,\n ``,\n `const config: NextConfig = {}`,\n ``,\n `export default config`,\n ``,\n ].join('\\n');\n\n const tsconfigJson = JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2017',\n lib: ['dom', 'dom.iterable', 'esnext'],\n allowJs: true,\n skipLibCheck: true,\n strict: true,\n noEmit: true,\n esModuleInterop: true,\n module: 'esnext',\n moduleResolution: 'bundler',\n resolveJsonModule: true,\n isolatedModules: true,\n jsx: 'preserve',\n incremental: true,\n plugins: [{ name: 'next' }],\n paths: { '@/*': ['./src/*'] },\n },\n include: ['next-env.d.ts', '**/*.ts', '**/*.tsx', '.next/types/**/*.ts'],\n exclude: ['node_modules'],\n },\n null,\n 2\n );\n\n const tailwindConfig = [\n `import type { Config } from 'tailwindcss'`,\n ``,\n `const config: Config = {`,\n ` content: ['./src/**/*.{ts,tsx}'],`,\n ` theme: { extend: {} },`,\n ` plugins: [],`,\n `}`,\n ``,\n `export default config`,\n ``,\n ].join('\\n');\n\n const postcssConfig = [\n `const config = {`,\n ` plugins: {`,\n ` tailwindcss: {},`,\n ` autoprefixer: {},`,\n ` },`,\n `}`,\n ``,\n `export default config`,\n ``,\n ].join('\\n');\n\n return [\n { path: 'src/lib/agent.ts', content: agentTs },\n { path: 'src/app/api/chat/route.ts', content: routeTs },\n { path: 'src/app/page.tsx', content: pageTsx },\n { path: 'src/app/layout.tsx', content: layoutTsx },\n { path: 'src/app/globals.css', content: globalsCss },\n { path: 'next.config.ts', content: nextConfig },\n { path: 'tsconfig.json', content: tsconfigJson },\n { path: 'tailwind.config.ts', content: tailwindConfig },\n { path: 'postcss.config.mjs', content: postcssConfig },\n ];\n },\n\n dependencies() {\n return {\n '@cogitator-ai/core': 'latest',\n '@cogitator-ai/next': 'latest',\n next: '^15.0.0',\n react: '^19.0.0',\n 'react-dom': '^19.0.0',\n zod: '^3.23.0',\n };\n },\n\n devDependencies() {\n return {\n typescript: '^5.8.0',\n '@types/node': '^22.0.0',\n '@types/react': '^19.0.0',\n '@types/react-dom': '^19.0.0',\n tailwindcss: '^3.4.0',\n autoprefixer: '^10.4.0',\n postcss: '^8.4.0',\n };\n },\n\n scripts() {\n return {\n dev: 'next dev',\n build: 'next build',\n start: 'next start',\n lint: 'next lint',\n };\n },\n};\n","import type { Template, TemplateGenerator } from '../types.js';\nimport { basicTemplate } from './basic.js';\nimport { memoryTemplate } from './memory.js';\nimport { swarmTemplate } from './swarm.js';\nimport { workflowTemplate } from './workflow.js';\nimport { apiServerTemplate } from './api-server.js';\nimport { nextjsTemplate } from './nextjs.js';\n\nconst templates: Record<Template, TemplateGenerator> = {\n basic: basicTemplate,\n memory: memoryTemplate,\n swarm: swarmTemplate,\n workflow: workflowTemplate,\n 'api-server': apiServerTemplate,\n nextjs: nextjsTemplate,\n};\n\nexport function getTemplate(name: Template): TemplateGenerator {\n return templates[name];\n}\n\nexport const templateChoices: Array<{\n value: Template;\n label: string;\n hint: string;\n}> = [\n {\n value: 'basic',\n label: 'Basic agent',\n hint: 'Single agent with tools — best for getting started',\n },\n { value: 'memory', label: 'Agent with memory', hint: 'Persistent memory with Redis' },\n {\n value: 'swarm',\n label: 'Multi-agent swarm',\n hint: 'Team of agents with hierarchical coordination',\n },\n { value: 'workflow', label: 'DAG workflow', hint: 'Multi-step pipeline with checkpoints' },\n {\n value: 'api-server',\n label: 'REST API server',\n hint: 'Express server exposing agents via HTTP',\n },\n { value: 'nextjs', label: 'Next.js chat app', hint: 'Full-stack chat app with streaming' },\n];\n","import type { TemplateFile } from '../../types.js';\n\nexport function generateTsconfig(): TemplateFile {\n return {\n path: 'tsconfig.json',\n content: JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'NodeNext',\n moduleResolution: 'NodeNext',\n esModuleInterop: true,\n strict: true,\n skipLibCheck: true,\n outDir: 'dist',\n rootDir: 'src',\n declaration: true,\n resolveJsonModule: true,\n isolatedModules: true,\n },\n include: ['src'],\n },\n null,\n 2\n ),\n };\n}\n","import type { TemplateFile } from '../../types.js';\n\nexport function generateGitignore(): TemplateFile {\n return {\n path: '.gitignore',\n content: [\n 'node_modules/',\n 'dist/',\n '.env',\n '.env.local',\n '*.log',\n '.DS_Store',\n 'coverage/',\n '.turbo/',\n '',\n ].join('\\n'),\n };\n}\n","import type { LLMProvider, Template, TemplateFile } from '../../types.js';\n\nexport function generateEnvExample(provider: LLMProvider, template?: Template): TemplateFile {\n const lines: string[] = ['# Cogitator Environment Variables', ''];\n\n switch (provider) {\n case 'ollama':\n lines.push('# Ollama (default: http://localhost:11434)');\n lines.push('# OLLAMA_BASE_URL=http://localhost:11434');\n break;\n case 'openai':\n lines.push('# OpenAI');\n lines.push('OPENAI_API_KEY=sk-...');\n break;\n case 'anthropic':\n lines.push('# Anthropic');\n lines.push('ANTHROPIC_API_KEY=sk-ant-...');\n break;\n case 'google':\n lines.push('# Google AI');\n lines.push('GOOGLE_API_KEY=...');\n break;\n }\n\n if (template === 'memory') {\n lines.push('');\n lines.push('# Redis');\n lines.push('REDIS_URL=redis://localhost:6379');\n }\n\n lines.push('');\n\n return { path: '.env.example', content: lines.join('\\n') };\n}\n","import type { LLMProvider, TemplateFile } from '../../types.js';\n\nexport function generateDockerCompose(provider: LLMProvider): TemplateFile {\n const services: string[] = [];\n\n if (provider === 'ollama') {\n services.push(\n ...[\n ' ollama:',\n ' image: ollama/ollama:latest',\n ' ports:',\n ' - \"11434:11434\"',\n ' volumes:',\n ' - ollama_data:/root/.ollama',\n '',\n ]\n );\n }\n\n services.push(\n ...[\n ' redis:',\n ' image: redis:7-alpine',\n ' ports:',\n ' - \"6379:6379\"',\n ' volumes:',\n ' - redis_data:/data',\n '',\n ' postgres:',\n ' image: postgres:16-alpine',\n ' ports:',\n ' - \"5432:5432\"',\n ' environment:',\n ' POSTGRES_USER: ${POSTGRES_USER:-cogitator}',\n ' POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-cogitator}',\n ' POSTGRES_DB: ${POSTGRES_DB:-cogitator}',\n ' volumes:',\n ' - postgres_data:/var/lib/postgresql/data',\n ]\n );\n\n const volumes = ['volumes:'];\n if (provider === 'ollama') volumes.push(' ollama_data:');\n volumes.push(' redis_data:', ' postgres_data:');\n\n const content = ['services:', ...services, '', ...volumes, ''].join('\\n');\n\n return { path: 'docker-compose.yml', content };\n}\n","import type { LLMProvider, TemplateFile } from '../../types.js';\nimport { defaultModels } from '../../utils/providers.js';\n\nexport function generateCogitatorYml(provider: LLMProvider): TemplateFile {\n const model = defaultModels[provider];\n\n const lines = [`provider: ${provider}`, `model: ${model}`, ''];\n\n if (provider === 'ollama') {\n lines.push('ollama:', ' baseUrl: http://localhost:11434', '');\n }\n\n return { path: 'cogitator.yml', content: lines.join('\\n') };\n}\n","import { execSync } from 'node:child_process';\nimport type { PackageManager } from '../types.js';\n\nexport function detectPackageManager(): PackageManager {\n const ua = process.env.npm_config_user_agent;\n if (ua) {\n if (ua.startsWith('pnpm')) return 'pnpm';\n if (ua.startsWith('yarn')) return 'yarn';\n if (ua.startsWith('bun')) return 'bun';\n }\n return 'pnpm';\n}\n\nexport function installDependencies(cwd: string, pm: PackageManager) {\n execSync(`${pm} install`, { cwd, stdio: 'inherit' });\n}\n\nexport function devCommand(pm: PackageManager): string {\n if (pm === 'npm') return 'npm run dev';\n return `${pm} dev`;\n}\n\nexport function runCommand(pm: PackageManager): string {\n if (pm === 'npm') return 'npx';\n if (pm === 'pnpm') return 'pnpm dlx';\n if (pm === 'yarn') return 'yarn dlx';\n return 'bunx';\n}\n","import type { ProjectOptions, TemplateFile } from '../../types.js';\nimport { devCommand } from '../../utils/package-manager.js';\n\nconst templateNames: Record<string, string> = {\n basic: 'Basic Agent',\n memory: 'Agent with Memory',\n swarm: 'Multi-Agent Swarm',\n workflow: 'DAG Workflow',\n 'api-server': 'REST API Server',\n nextjs: 'Next.js Chat App',\n};\n\nexport function generateReadme(options: ProjectOptions): TemplateFile {\n const dev = devCommand(options.packageManager);\n const templateName = templateNames[options.template] || options.template;\n\n const content = [\n `# ${options.name}`,\n '',\n `> Created with [create-cogitator-app](https://github.com/cogitator-ai/cogitator) — ${templateName} template`,\n '',\n '## Getting Started',\n '',\n '```bash',\n `# Install dependencies`,\n `${options.packageManager} install`,\n '',\n `# Run the project`,\n dev,\n '```',\n '',\n ...(options.docker\n ? ['## Docker Services', '', '```bash', 'docker compose up -d', '```', '']\n : []),\n '## Learn More',\n '',\n '- [Cogitator Documentation](https://cogitator.dev/docs)',\n '- [GitHub Repository](https://github.com/cogitator-ai/cogitator)',\n '',\n ];\n\n return { path: 'README.md', content: content.join('\\n') };\n}\n","import type { TemplateFile } from '../../types.js';\n\n/**\n * pnpm 10.26+ skips dependency build scripts unless they are allowed, and pnpm 11 fails the\n * install instead. These are the native/binary packages a Cogitator project pulls in.\n */\nexport const PNPM_ALLOWED_BUILDS = ['better-sqlite3', 'esbuild', 'sharp'] as const;\n\nexport function generatePnpmWorkspace(): TemplateFile {\n return {\n path: 'pnpm-workspace.yaml',\n content: ['allowBuilds:', ...PNPM_ALLOWED_BUILDS.map((name) => ` ${name}: true`), ''].join(\n '\\n'\n ),\n };\n}\n","import { execSync } from 'node:child_process';\n\nexport function isGitInstalled(): boolean {\n try {\n execSync('git --version', { stdio: 'ignore' });\n return true;\n } catch {\n return false;\n }\n}\n\nexport function initGitRepo(cwd: string) {\n execSync('git init', { cwd, stdio: 'ignore' });\n execSync('git add -A', { cwd, stdio: 'ignore' });\n execSync(\n 'git -c user.name=\"Cogitator\" -c user.email=\"init@cogitator.dev\" commit -m \"feat: initial project scaffold\"',\n { cwd, stdio: 'ignore' }\n );\n}\n","import * as p from '@clack/prompts';\nimport path from 'node:path';\nimport type { LLMProvider, PackageManager, ProjectOptions, Template } from './types.js';\nimport { templateChoices } from './templates/index.js';\nimport { detectPackageManager } from './utils/package-manager.js';\n\ninterface ParsedArgs {\n name?: string;\n template?: Template;\n provider?: LLMProvider;\n packageManager?: PackageManager;\n docker?: boolean;\n git?: boolean;\n yes?: boolean;\n}\n\nconst validTemplates: Template[] = ['basic', 'memory', 'swarm', 'workflow', 'api-server', 'nextjs'];\nconst validProviders: LLMProvider[] = ['ollama', 'openai', 'anthropic', 'google'];\nconst validPMs: PackageManager[] = ['pnpm', 'npm', 'yarn', 'bun'];\n\nexport function parseArgs(args: string[]): ParsedArgs {\n const parsed: ParsedArgs = {};\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n if (arg === '--template' || arg === '-t') {\n if (i + 1 < args.length) {\n const val = args[++i] as Template;\n if (validTemplates.includes(val)) parsed.template = val;\n }\n } else if (arg === '--provider' || arg === '-p') {\n if (i + 1 < args.length) {\n const val = args[++i] as LLMProvider;\n if (validProviders.includes(val)) parsed.provider = val;\n }\n } else if (arg === '--pm') {\n if (i + 1 < args.length) {\n const val = args[++i] as PackageManager;\n if (validPMs.includes(val)) parsed.packageManager = val;\n }\n } else if (arg === '--docker') {\n parsed.docker = true;\n } else if (arg === '--no-docker') {\n parsed.docker = false;\n } else if (arg === '--git') {\n parsed.git = true;\n } else if (arg === '--no-git') {\n parsed.git = false;\n } else if (arg === '-y' || arg === '--yes') {\n parsed.yes = true;\n } else if (!arg.startsWith('-') && !parsed.name) {\n parsed.name = arg;\n }\n }\n\n return parsed;\n}\n\nexport async function collectOptions(args: ParsedArgs): Promise<ProjectOptions> {\n const rawName =\n args.name ||\n ((await p.text({\n message: 'Where should we create your project?',\n placeholder: './my-agents',\n defaultValue: 'my-agents',\n validate: (value) => {\n if (value && !value.trim()) return 'Project name is required';\n return undefined;\n },\n })) as string);\n\n if (p.isCancel(rawName)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const name = rawName.trim();\n const projectName = path.basename(path.normalize(name).replace(/^\\.\\//, '').replace(/^\\.\\\\/, ''));\n const projectPath = path.resolve(process.cwd(), name);\n\n const template =\n args.template ||\n ((await p.select({\n message: 'Which template would you like?',\n options: templateChoices,\n })) as Template);\n\n if (p.isCancel(template)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const provider =\n args.provider ||\n ((await p.select({\n message: 'Which LLM provider?',\n options: [\n {\n value: 'ollama' as const,\n label: 'Ollama',\n hint: 'local, free — requires Ollama installed',\n },\n { value: 'openai' as const, label: 'OpenAI', hint: 'GPT-4o' },\n { value: 'anthropic' as const, label: 'Anthropic', hint: 'Claude Sonnet' },\n { value: 'google' as const, label: 'Google Gemini', hint: 'Gemini 2.5 Flash' },\n ],\n })) as LLMProvider);\n\n if (p.isCancel(provider)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const packageManager =\n args.packageManager ||\n ((await p.select({\n message: 'Package manager?',\n options: [\n { value: 'pnpm' as const, label: 'pnpm' },\n { value: 'npm' as const, label: 'npm' },\n { value: 'yarn' as const, label: 'yarn' },\n { value: 'bun' as const, label: 'bun' },\n ],\n initialValue: detectPackageManager(),\n })) as PackageManager);\n\n if (p.isCancel(packageManager)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const docker =\n args.docker ??\n ((await p.confirm({\n message:\n 'Include Docker Compose? (Redis + Postgres' + (provider === 'ollama' ? ' + Ollama)' : ')'),\n initialValue: true,\n })) as boolean);\n\n if (p.isCancel(docker)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const git =\n args.git ??\n ((await p.confirm({\n message: 'Initialize git repository?',\n initialValue: true,\n })) as boolean);\n\n if (p.isCancel(git)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n\n return {\n name: projectName,\n path: projectPath,\n template,\n provider,\n packageManager,\n docker,\n git,\n };\n}\n"],"mappings":"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","names":["execSync","p","path","path"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-cogitator-app",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Create a new Cogitator AI agent project",
5
5
  "type": "module",
6
6
  "bin": {
@@ -12,25 +12,28 @@
12
12
  "files": [
13
13
  "dist"
14
14
  ],
15
- "scripts": {
16
- "build": "tsup",
17
- "dev": "tsup --watch",
18
- "typecheck": "tsc --noEmit",
19
- "test": "vitest run",
20
- "test:watch": "vitest"
15
+ "engines": {
16
+ "node": ">=22.12.0"
21
17
  },
22
18
  "dependencies": {
23
- "@clack/prompts": "^0.10.0",
19
+ "@clack/prompts": "^1.8.1",
24
20
  "picocolors": "^1.1.0"
25
21
  },
26
22
  "devDependencies": {
27
- "@types/node": "^22.0.0",
23
+ "@types/node": "^22.20.4",
28
24
  "tsup": "^8.4.0",
29
- "typescript": "^5.8.0",
30
- "vitest": "^4.0.18"
25
+ "typescript": "^6.0.3",
26
+ "vitest": "^5.0.3"
31
27
  },
32
28
  "publishConfig": {
33
29
  "access": "public"
34
30
  },
35
- "license": "MIT"
36
- }
31
+ "license": "MIT",
32
+ "scripts": {
33
+ "build": "tsup",
34
+ "dev": "tsup --watch",
35
+ "typecheck": "tsc --noEmit",
36
+ "test": "vitest run",
37
+ "test:watch": "vitest"
38
+ }
39
+ }