create-cogitator-app 0.2.0 → 0.2.1
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/README.md +76 -37
- package/dist/index.js +159 -99
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +4 -0
- package/dist/lib.js +135 -90
- package/dist/lib.js.map +1 -1
- package/package.json +2 -2
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/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"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/utils/logger.ts","../src/prompts.ts","../src/utils/providers.ts","../src/templates/versions.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/utils/links.ts","../src/templates/base/readme.ts","../src/templates/base/pnpm-workspace.ts","../src/utils/git.ts"],"sourcesContent":["import * as p from '@clack/prompts';\nimport { readFileSync } from 'node:fs';\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';\nimport { DOCS_URL } from './utils/links.js';\n\nconst pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf-8')) as {\n version: string;\n};\n\nasync function main() {\n banner(pkg.version);\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: ${DOCS_URL}`),\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\nconst MIN_INNER_WIDTH = 39;\n\ninterface BannerLine {\n text: string;\n width: number;\n}\n\nexport function banner(version: string) {\n const title = 'create-cogitator-app';\n const tagline = 'Build AI agents in minutes';\n const versionLabel = `v${version}`;\n const lines: BannerLine[] = [\n {\n text: `${pc.bold(pc.white(title))} ${pc.dim(versionLabel)}`,\n width: title.length + 2 + versionLabel.length,\n },\n { text: pc.dim(tagline), width: tagline.length },\n ];\n const inner = Math.max(MIN_INNER_WIDTH, ...lines.map((line) => line.width + 4));\n\n const art = [\n '',\n ` ${pc.cyan(`╔${'═'.repeat(inner)}╗`)}`,\n ...lines.map(\n (line) =>\n ` ${pc.cyan('║')} ${line.text}${' '.repeat(inner - 2 - line.width)}${pc.cyan('║')}`\n ),\n ` ${pc.cyan(`╚${'═'.repeat(inner)}╝`)}`,\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';\nimport { defaultModels } from './utils/providers.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\n/** What `--yes` answers, and what each prompt suggests. */\nexport const defaultAnswers = {\n name: 'my-agents',\n template: 'basic',\n provider: 'ollama',\n docker: true,\n git: true,\n} as const satisfies Partial<ProjectOptions>;\n\nfunction unlessCancelled<T>(answer: T | typeof p.CANCEL_SYMBOL): T {\n if (p.isCancel(answer)) {\n p.cancel('Operation cancelled.');\n process.exit(0);\n }\n return answer;\n}\n\n/**\n * Turn the parsed arguments into project options, asking for whatever they leave\n * out; with `--yes` nothing is asked and the defaults fill the gaps.\n */\nexport async function collectOptions(args: ParsedArgs): Promise<ProjectOptions> {\n const interactive = !args.yes;\n\n const rawName =\n args.name ||\n (interactive\n ? unlessCancelled(\n await p.text({\n message: 'Where should we create your project?',\n placeholder: `./${defaultAnswers.name}`,\n defaultValue: defaultAnswers.name,\n validate: (value) => {\n if (value && !value.trim()) return 'Project name is required';\n return undefined;\n },\n })\n )\n : defaultAnswers.name);\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 (interactive\n ? unlessCancelled(\n await p.select<Template>({\n message: 'Which template would you like?',\n options: templateChoices,\n initialValue: defaultAnswers.template,\n })\n )\n : defaultAnswers.template);\n\n const provider =\n args.provider ??\n (interactive\n ? unlessCancelled(\n await p.select<LLMProvider>({\n message: 'Which LLM provider?',\n options: [\n {\n value: 'ollama',\n label: 'Ollama',\n hint: `${defaultModels.ollama} — local, free, requires Ollama installed`,\n },\n { value: 'openai', label: 'OpenAI', hint: defaultModels.openai },\n { value: 'anthropic', label: 'Anthropic', hint: defaultModels.anthropic },\n { value: 'google', label: 'Google Gemini', hint: defaultModels.google },\n ],\n initialValue: defaultAnswers.provider,\n })\n )\n : defaultAnswers.provider);\n\n const packageManager =\n args.packageManager ??\n (interactive\n ? unlessCancelled(\n await p.select<PackageManager>({\n message: 'Package manager?',\n options: [\n { value: 'pnpm', label: 'pnpm' },\n { value: 'npm', label: 'npm' },\n { value: 'yarn', label: 'yarn' },\n { value: 'bun', label: 'bun' },\n ],\n initialValue: detectPackageManager(),\n })\n )\n : detectPackageManager());\n\n const docker =\n args.docker ??\n (interactive\n ? unlessCancelled(\n await p.confirm({\n message:\n 'Include Docker Compose? (Redis + Postgres' +\n (provider === 'ollama' ? ' + Ollama)' : ')'),\n initialValue: defaultAnswers.docker,\n })\n )\n : defaultAnswers.docker);\n\n const git =\n args.git ??\n (interactive\n ? unlessCancelled(\n await p.confirm({\n message: 'Initialize git repository?',\n initialValue: defaultAnswers.git,\n })\n )\n : defaultAnswers.git);\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","/** The zod range generated projects depend on: the one `@cogitator-ai/core` depends on, so tool schemas and core share one zod. */\nexport const ZOD_VERSION = '^4.6.5';\n","import type { ProjectOptions, TemplateGenerator } from '../types.js';\nimport { defaultModels, providerConfig } from '../utils/providers.js';\nimport { ZOD_VERSION } from './versions.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: ZOD_VERSION,\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';\nimport { ZOD_VERSION } from './versions.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: ZOD_VERSION,\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';\nimport { ZOD_VERSION } from './versions.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:', team.strategyType)`,\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: ZOD_VERSION,\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';\nimport { ZOD_VERSION } from './versions.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 `type 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: ZOD_VERSION,\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';\nimport { ZOD_VERSION } from './versions.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: ZOD_VERSION,\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';\nimport { ZOD_VERSION } from './versions.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: ZOD_VERSION,\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, options.template));\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, Template, TemplateFile } from '../../types.js';\nimport { defaultModels } from '../../utils/providers.js';\n\n/**\n * `cogitator.yml` in the shape `@cogitator-ai/config` loads: the provider and model\n * the generated code uses, and the memory it connects to. API keys stay in the\n * environment, where the config loader picks them up.\n */\nexport function generateCogitatorYml(provider: LLMProvider, template?: Template): TemplateFile {\n const lines = [\n 'llm:',\n ` defaultProvider: ${provider}`,\n ` defaultModel: ${defaultModels[provider]}`,\n ];\n\n if (provider === 'ollama') {\n lines.push(\n ' providers:',\n ' ollama:',\n ' baseUrl: ${OLLAMA_BASE_URL:-http://localhost:11434}'\n );\n }\n\n if (template === 'memory') {\n lines.push(\n '',\n 'memory:',\n ' adapter: redis',\n ' redis:',\n ' url: ${REDIS_URL:-redis://localhost:6379}'\n );\n }\n\n lines.push('');\n return { path: 'cogitator.yml', content: lines.join('\\n') };\n}\n","export const DOCS_URL = 'https://cogitator.app/docs';\nexport const REPO_URL = 'https://github.com/cogitator-ai/Cogitator-AI';\n","import type { ProjectOptions, TemplateFile } from '../../types.js';\nimport { devCommand } from '../../utils/package-manager.js';\nimport { DOCS_URL, REPO_URL } from '../../utils/links.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](${REPO_URL}) — ${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](${DOCS_URL})`,\n `- [GitHub Repository](${REPO_URL})`,\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 { execFileSync } from 'node:child_process';\n\n/** Used only when the user has no git identity, so the first commit can still be made. */\nconst FALLBACK_IDENTITY = [\n '-c',\n 'user.name=create-cogitator-app',\n '-c',\n 'user.email=create-cogitator-app@localhost',\n];\n\nexport function isGitInstalled(): boolean {\n try {\n execFileSync('git', ['--version'], { stdio: 'ignore' });\n return true;\n } catch {\n return false;\n }\n}\n\nfunction hasIdentity(cwd: string): boolean {\n try {\n const name = execFileSync('git', ['config', 'user.name'], { cwd, encoding: 'utf8' }).trim();\n const email = execFileSync('git', ['config', 'user.email'], { cwd, encoding: 'utf8' }).trim();\n return name.length > 0 && email.length > 0;\n } catch {\n return false;\n }\n}\n\n/**\n * Initialises a repository and commits the scaffold, authored by the user's own git identity;\n * a neutral local identity is used only when none is configured.\n */\nexport function initGitRepo(cwd: string) {\n execFileSync('git', ['init'], { cwd, stdio: 'ignore' });\n execFileSync('git', ['add', '-A'], { cwd, stdio: 'ignore' });\n const identity = hasIdentity(cwd) ? [] : FALLBACK_IDENTITY;\n execFileSync('git', [...identity, 'commit', '-m', 'feat: initial project scaffold'], {\n cwd,\n stdio: 'ignore',\n });\n}\n"],"mappings":";;;AAAA,YAAYA,QAAO;AACnB,SAAS,oBAAoB;AAC7B,OAAOC,SAAQ;;;ACFf,OAAO,QAAQ;AAEf,IAAM,kBAAkB;AAOjB,SAAS,OAAO,SAAiB;AACtC,QAAM,QAAQ;AACd,QAAM,UAAU;AAChB,QAAM,eAAe,IAAI,OAAO;AAChC,QAAM,QAAsB;AAAA,IAC1B;AAAA,MACE,MAAM,GAAG,GAAG,KAAK,GAAG,MAAM,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC;AAAA,MAC1D,OAAO,MAAM,SAAS,IAAI,aAAa;AAAA,IACzC;AAAA,IACA,EAAE,MAAM,GAAG,IAAI,OAAO,GAAG,OAAO,QAAQ,OAAO;AAAA,EACjD;AACA,QAAM,QAAQ,KAAK,IAAI,iBAAiB,GAAG,MAAM,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC;AAE9E,QAAM,MAAM;AAAA,IACV;AAAA,IACA,KAAK,GAAG,KAAK,SAAI,SAAI,OAAO,KAAK,CAAC,QAAG,CAAC;AAAA,IACtC,GAAG,MAAM;AAAA,MACP,CAAC,SACC,KAAK,GAAG,KAAK,QAAG,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,KAAK,KAAK,CAAC,GAAG,GAAG,KAAK,QAAG,CAAC;AAAA,IACvF;AAAA,IACA,KAAK,GAAG,KAAK,SAAI,SAAI,OAAO,KAAK,CAAC,QAAG,CAAC;AAAA,IACtC;AAAA,EACF;AACA,UAAQ,IAAI,IAAI,KAAK,IAAI,CAAC;AAC5B;;;ACjCA,YAAY,OAAO;AACnB,OAAO,UAAU;;;ACCV,IAAM,gBAA6C;AAAA,EACxD,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AACV;AAYO,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;;;AC5DO,IAAM,cAAc;;;ACGpB,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;;;AC3PA,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;;;AC5CA,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;;;AVHA,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;AAGO,IAAM,iBAAiB;AAAA,EAC5B,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,KAAK;AACP;AAEA,SAAS,gBAAmB,QAAuC;AACjE,MAAM,WAAS,MAAM,GAAG;AACtB,IAAE,SAAO,sBAAsB;AAC/B,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,SAAO;AACT;AAMA,eAAsB,eAAe,MAA2C;AAC9E,QAAM,cAAc,CAAC,KAAK;AAE1B,QAAM,UACJ,KAAK,SACJ,cACG;AAAA,IACE,MAAQ,OAAK;AAAA,MACX,SAAS;AAAA,MACT,aAAa,KAAK,eAAe,IAAI;AAAA,MACrC,cAAc,eAAe;AAAA,MAC7B,UAAU,CAAC,UAAU;AACnB,YAAI,SAAS,CAAC,MAAM,KAAK,EAAG,QAAO;AACnC,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH,IACA,eAAe;AAErB,QAAM,OAAO,QAAQ,KAAK;AAC1B,QAAM,cAAc,KAAK,SAAS,KAAK,UAAU,IAAI,EAAE,QAAQ,SAAS,EAAE,EAAE,QAAQ,SAAS,EAAE,CAAC;AAChG,QAAM,cAAc,KAAK,QAAQ,QAAQ,IAAI,GAAG,IAAI;AAEpD,QAAM,WACJ,KAAK,aACJ,cACG;AAAA,IACE,MAAQ,SAAiB;AAAA,MACvB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,cAAc,eAAe;AAAA,IAC/B,CAAC;AAAA,EACH,IACA,eAAe;AAErB,QAAM,WACJ,KAAK,aACJ,cACG;AAAA,IACE,MAAQ,SAAoB;AAAA,MAC1B,SAAS;AAAA,MACT,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM,GAAG,cAAc,MAAM;AAAA,QAC/B;AAAA,QACA,EAAE,OAAO,UAAU,OAAO,UAAU,MAAM,cAAc,OAAO;AAAA,QAC/D,EAAE,OAAO,aAAa,OAAO,aAAa,MAAM,cAAc,UAAU;AAAA,QACxE,EAAE,OAAO,UAAU,OAAO,iBAAiB,MAAM,cAAc,OAAO;AAAA,MACxE;AAAA,MACA,cAAc,eAAe;AAAA,IAC/B,CAAC;AAAA,EACH,IACA,eAAe;AAErB,QAAM,iBACJ,KAAK,mBACJ,cACG;AAAA,IACE,MAAQ,SAAuB;AAAA,MAC7B,SAAS;AAAA,MACT,SAAS;AAAA,QACP,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,QAC/B,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,QAC7B,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,QAC/B,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,MAC/B;AAAA,MACA,cAAc,qBAAqB;AAAA,IACrC,CAAC;AAAA,EACH,IACA,qBAAqB;AAE3B,QAAM,SACJ,KAAK,WACJ,cACG;AAAA,IACE,MAAQ,UAAQ;AAAA,MACd,SACE,+CACC,aAAa,WAAW,eAAe;AAAA,MAC1C,cAAc,eAAe;AAAA,IAC/B,CAAC;AAAA,EACH,IACA,eAAe;AAErB,QAAM,MACJ,KAAK,QACJ,cACG;AAAA,IACE,MAAQ,UAAQ;AAAA,MACd,SAAS;AAAA,MACT,cAAc,eAAe;AAAA,IAC/B,CAAC;AAAA,EACH,IACA,eAAe;AAErB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AW3LA,OAAO,QAAQ;AACf,OAAOC,WAAU;AACjB,YAAYC,QAAO;;;ACAZ,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;;;ACxCO,SAAS,qBAAqB,UAAuB,UAAmC;AAC7F,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA,sBAAsB,QAAQ;AAAA,IAC9B,mBAAmB,cAAc,QAAQ,CAAC;AAAA,EAC5C;AAEA,MAAI,aAAa,UAAU;AACzB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,aAAa,UAAU;AACzB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,KAAK,EAAE;AACb,SAAO,EAAE,MAAM,iBAAiB,SAAS,MAAM,KAAK,IAAI,EAAE;AAC5D;;;ACnCO,IAAM,WAAW;AACjB,IAAM,WAAW;;;ACGxB,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,yCAAyC,QAAQ,YAAO,YAAY;AAAA,IACpE;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,+BAA+B,QAAQ;AAAA,IACvC,yBAAyB,QAAQ;AAAA,IACjC;AAAA,EACF;AAEA,SAAO,EAAE,MAAM,aAAa,SAAS,QAAQ,KAAK,IAAI,EAAE;AAC1D;;;ACrCO,IAAM,sBAAsB,CAAC,kBAAkB,WAAW,OAAO;AAEjE,SAAS,wBAAsC;AACpD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,CAAC,gBAAgB,GAAG,oBAAoB,IAAI,CAAC,SAAS,KAAK,IAAI,QAAQ,GAAG,EAAE,EAAE;AAAA,MACrF;AAAA,IACF;AAAA,EACF;AACF;;;ACfA,SAAS,oBAAoB;AAG7B,IAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,iBAA0B;AACxC,MAAI;AACF,iBAAa,OAAO,CAAC,WAAW,GAAG,EAAE,OAAO,SAAS,CAAC;AACtD,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,YAAY,KAAsB;AACzC,MAAI;AACF,UAAM,OAAO,aAAa,OAAO,CAAC,UAAU,WAAW,GAAG,EAAE,KAAK,UAAU,OAAO,CAAC,EAAE,KAAK;AAC1F,UAAM,QAAQ,aAAa,OAAO,CAAC,UAAU,YAAY,GAAG,EAAE,KAAK,UAAU,OAAO,CAAC,EAAE,KAAK;AAC5F,WAAO,KAAK,SAAS,KAAK,MAAM,SAAS;AAAA,EAC3C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAMO,SAAS,YAAY,KAAa;AACvC,eAAa,OAAO,CAAC,MAAM,GAAG,EAAE,KAAK,OAAO,SAAS,CAAC;AACtD,eAAa,OAAO,CAAC,OAAO,IAAI,GAAG,EAAE,KAAK,OAAO,SAAS,CAAC;AAC3D,QAAM,WAAW,YAAY,GAAG,IAAI,CAAC,IAAI;AACzC,eAAa,OAAO,CAAC,GAAG,UAAU,UAAU,MAAM,gCAAgC,GAAG;AAAA,IACnF;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AACH;;;AT1BA,SAAS,UAAU,UAAkB,MAAoB;AACvD,QAAM,WAAWC,MAAK,KAAK,UAAU,KAAK,IAAI;AAC9C,KAAG,UAAUA,MAAK,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,QAAMC,OAA+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,UAAUA,MAAK,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,UAAU,QAAQ,QAAQ,CAAC;AACnE,QAAM,KAAK,eAAe,OAAO,CAAC;AAElC,MAAI,QAAQ,aAAa,UAAU;AACjC,UAAM,KAAK,iBAAiB,CAAC;AAAA,EAC/B;AAEA,MAAI,QAAQ,mBAAmB,QAAQ;AACrC,UAAM,KAAK,sBAAsB,CAAC;AAAA,EACpC;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,WAAQ;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;;;AbxFA,IAAM,MAAM,KAAK,MAAM,aAAa,IAAI,IAAI,mBAAmB,YAAY,GAAG,GAAG,OAAO,CAAC;AAIzF,eAAe,OAAO;AACpB,SAAO,IAAI,OAAO;AAElB,EAAE,SAAMC,IAAG,KAAK,sCAAsC,CAAC;AAEvD,QAAM,OAAO,UAAU,QAAQ,KAAK,MAAM,CAAC,CAAC;AAC5C,QAAM,UAAU,MAAM,eAAe,IAAI;AAEzC,QAAM,SAAS,OAAO;AAEtB,QAAM,MAAM,WAAW,QAAQ,cAAc;AAE7C,EAAE;AAAA,IACA;AAAA,MACEA,IAAG,MAAM,QAAQ,IAAI;AAAA,MACrB;AAAA,MACA,KAAKA,IAAG,KAAK,IAAI,CAAC,IAAI,QAAQ,IAAI;AAAA,MAClC,KAAKA,IAAG,KAAK,GAAG,CAAC;AAAA,MACjB;AAAA,MACAA,IAAG,IAAI,SAAS,QAAQ,EAAE;AAAA,IAC5B,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAEA,KAAK,EAAE,MAAM,CAAC,QAAQ;AACpB,EAAE,OAAI,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAC5D,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":["p","pc","path","p","path","pkg","pc"]}
|
package/dist/lib.d.ts
CHANGED
|
@@ -33,6 +33,10 @@ interface ParsedArgs {
|
|
|
33
33
|
yes?: boolean;
|
|
34
34
|
}
|
|
35
35
|
declare function parseArgs(args: string[]): ParsedArgs;
|
|
36
|
+
/**
|
|
37
|
+
* Turn the parsed arguments into project options, asking for whatever they leave
|
|
38
|
+
* out; with `--yes` nothing is asked and the defaults fill the gaps.
|
|
39
|
+
*/
|
|
36
40
|
declare function collectOptions(args: ParsedArgs): Promise<ProjectOptions>;
|
|
37
41
|
|
|
38
42
|
declare function getTemplate(name: Template): TemplateGenerator;
|