@agentskit/cli 0.5.1 → 0.5.3

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.ts","../src/providers.ts","../src/resolve.ts","../src/chat.tsx","../src/init.ts","../src/init-interactive.ts","../src/run.ts","../src/run-ui.tsx","../src/doctor.ts","../src/dev.ts","../src/tunnel.ts","../src/commands.ts"],"names":["path","readFile","join","resolve","openai","anthropic","gemini","ollama","deepseek","grok","kimi","researcher","coder","planner","critic","summarizer","tools","webSearch","filesystem","shell","composeSkills","sqliteChatMemory","fileChatMemory","useMemo","useChat","jsxs","Box","jsx","Text","ChatContainer","Message","ToolCallView","ThinkingIndicator","InputBar","mkdir","writeFile","kleur","input","existsSync","select","checkbox","confirm","runtime","createRuntime","useState","useEffect","providers","pathResolve","spawn","chokidar","basename","Command","render","React"],"mappings":"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","file":"index.cjs","sourcesContent":["import { readFile } from 'node:fs/promises'\nimport { resolve, join } from 'node:path'\n\nexport interface AgentsKitConfig {\n tools?: {\n filesystem?: { basePath?: string }\n shell?: { allowed?: string[]; timeout?: number; maxOutput?: number }\n webSearch?: { provider?: string; maxResults?: number }\n }\n defaults?: {\n provider?: string\n model?: string\n }\n runtime?: {\n maxSteps?: number\n maxDelegationDepth?: number\n }\n observability?: {\n console?: boolean | { format?: 'human' | 'json' }\n langsmith?: { projectName?: string }\n }\n}\n\nasync function loadJsonConfig(path: string): Promise<AgentsKitConfig | undefined> {\n try {\n const raw = await readFile(path, 'utf8')\n return JSON.parse(raw) as AgentsKitConfig\n } catch {\n return undefined\n }\n}\n\nasync function loadTsConfig(path: string): Promise<AgentsKitConfig | undefined> {\n try {\n const mod = await import(path)\n return (mod.default ?? mod) as AgentsKitConfig\n } catch {\n return undefined\n }\n}\n\nasync function loadPackageJsonConfig(dir: string): Promise<AgentsKitConfig | undefined> {\n try {\n const raw = await readFile(join(dir, 'package.json'), 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.agentskit && typeof pkg.agentskit === 'object') {\n return pkg.agentskit as AgentsKitConfig\n }\n return undefined\n } catch {\n return undefined\n }\n}\n\nexport interface LoadConfigOptions {\n cwd?: string\n}\n\n/**\n * Load an AgentsKit config file. Node-only — uses fs/promises.\n *\n * Tries in order:\n * 1. `.agentskit.config.ts` (imported as a module)\n * 2. `.agentskit.config.json`\n * 3. `\"agentskit\"` field in `package.json`\n *\n * Returns `undefined` if none found.\n */\nexport async function loadConfig(options?: LoadConfigOptions): Promise<AgentsKitConfig | undefined> {\n const cwd = resolve(options?.cwd ?? process.cwd())\n\n const tsPath = join(cwd, '.agentskit.config.ts')\n const tsConfig = await loadTsConfig(tsPath)\n if (tsConfig) return tsConfig\n\n const jsonPath = join(cwd, '.agentskit.config.json')\n const jsonConfig = await loadJsonConfig(jsonPath)\n if (jsonConfig) return jsonConfig\n\n return await loadPackageJsonConfig(cwd)\n}\n","import {\n anthropic,\n deepseek,\n gemini,\n grok,\n kimi,\n ollama,\n openai,\n} from '@agentskit/adapters'\nimport type { AdapterFactory } from '@agentskit/core'\n\nexport interface ChatProviderOptions {\n provider: string\n model?: string\n apiKey?: string\n baseUrl?: string\n}\n\nexport interface ResolvedChatProvider {\n adapter: AdapterFactory\n provider: string\n model?: string\n mode: 'demo' | 'live'\n summary: string\n}\n\ninterface ProviderEntry {\n label: string\n envKeys: string[]\n defaultModel?: string\n requiresModel?: boolean\n factory: (config: { apiKey: string; model: string; baseUrl?: string }) => AdapterFactory\n}\n\nconst providers: Record<string, ProviderEntry> = {\n openai: {\n label: 'OpenAI',\n envKeys: ['OPENAI_API_KEY'],\n defaultModel: 'gpt-4o-mini',\n factory: (c) => openai(c),\n },\n anthropic: {\n label: 'Anthropic',\n envKeys: ['ANTHROPIC_API_KEY'],\n defaultModel: 'claude-3-5-sonnet-latest',\n factory: (c) => anthropic(c),\n },\n gemini: {\n label: 'Gemini',\n envKeys: ['GEMINI_API_KEY'],\n defaultModel: 'gemini-2.5-flash',\n factory: (c) => gemini(c),\n },\n ollama: {\n label: 'Ollama',\n envKeys: [],\n defaultModel: 'llama3.1',\n factory: (c) => ollama({ model: c.model, baseUrl: c.baseUrl }),\n },\n deepseek: {\n label: 'DeepSeek',\n envKeys: ['DEEPSEEK_API_KEY'],\n defaultModel: 'deepseek-chat',\n factory: (c) => deepseek(c),\n },\n grok: {\n label: 'xAI Grok',\n envKeys: ['XAI_API_KEY'],\n requiresModel: true,\n factory: (c) => grok(c),\n },\n kimi: {\n label: 'Kimi',\n envKeys: ['KIMI_API_KEY', 'MOONSHOT_API_KEY'],\n requiresModel: true,\n factory: (c) => kimi(c),\n },\n}\n\nfunction createDemoAdapter(provider: string, model?: string): AdapterFactory {\n return {\n createSource: ({ messages }) => {\n let cancelled = false\n\n return {\n stream: async function* () {\n const userMessages = messages.filter(message => message.role === 'user')\n const lastMessage = userMessages[userMessages.length - 1]\n const reply = [\n `Provider: ${provider}${model ? ` (${model})` : ''}.`,\n 'This is the AgentsKit CLI demo adapter.',\n `You said: ${lastMessage?.content ?? ''}`,\n ].join(' ')\n\n for (const chunk of reply.match(/.{1,18}/g) ?? []) {\n if (cancelled) return\n await new Promise(resolve => setTimeout(resolve, 35))\n yield { type: 'text' as const, content: chunk }\n }\n\n yield { type: 'done' as const }\n },\n abort: () => {\n cancelled = true\n },\n }\n },\n }\n}\n\nexport function resolveChatProvider(options: ChatProviderOptions): ResolvedChatProvider {\n const name = options.provider.toLowerCase()\n\n if (name === 'demo') {\n return {\n adapter: createDemoAdapter(name, options.model),\n provider: name,\n model: options.model,\n mode: 'demo',\n summary: 'demo adapter (no network, no API key required)',\n }\n }\n\n const entry = providers[name]\n if (!entry) {\n const supported = ['demo', ...Object.keys(providers)].join(', ')\n throw new Error(`Unsupported provider \"${options.provider}\". Try ${supported}.`)\n }\n\n // Resolve API key: try explicit flag first, then each envKey in order\n let apiKey = options.apiKey\n if (!apiKey) {\n for (const key of entry.envKeys) {\n apiKey = process.env[key]\n if (apiKey) break\n }\n }\n if (!apiKey && entry.envKeys.length > 0) {\n const keyList = entry.envKeys.join(' or ')\n throw new Error(`${entry.label} requires an API key. Pass --api-key or set ${keyList}.`)\n }\n\n // Resolve model\n const model = options.model ?? entry.defaultModel\n if (!model) {\n throw new Error(`${entry.label} requires --model in the current CLI version.`)\n }\n\n return {\n adapter: entry.factory({ apiKey: apiKey ?? '', model, baseUrl: options.baseUrl }),\n provider: name,\n model,\n mode: 'live',\n summary: `${entry.label} live adapter`,\n }\n}\n","import type { ChatMemory, SkillDefinition, ToolDefinition } from '@agentskit/core'\nimport { webSearch, filesystem, shell } from '@agentskit/tools'\nimport { researcher, coder, planner, critic, summarizer, composeSkills } from '@agentskit/skills'\nimport { fileChatMemory, sqliteChatMemory } from '@agentskit/memory'\n\nexport const skillRegistry: Record<string, SkillDefinition> = {\n researcher,\n coder,\n planner,\n critic,\n summarizer,\n}\n\nexport function resolveTools(toolNames: string | undefined): ToolDefinition[] {\n if (!toolNames) return []\n const tools: ToolDefinition[] = []\n for (const name of toolNames.split(',').map(s => s.trim())) {\n switch (name) {\n case 'web_search':\n tools.push(webSearch())\n break\n case 'filesystem':\n tools.push(...filesystem({ basePath: process.cwd() }))\n break\n case 'shell':\n tools.push(shell({ timeout: 30_000 }))\n break\n default:\n process.stderr.write(`Unknown tool: ${name}\\n`)\n }\n }\n return tools\n}\n\nexport function resolveSkill(skillName: string | undefined): SkillDefinition | undefined {\n if (!skillName) return undefined\n const skill = skillRegistry[skillName.trim()]\n if (!skill) {\n process.stderr.write(`Unknown skill: ${skillName}\\n`)\n return undefined\n }\n return skill\n}\n\nexport function resolveSkills(skillNames: string | undefined): SkillDefinition | undefined {\n if (!skillNames) return undefined\n const names = skillNames.split(',').map(s => s.trim())\n const resolved = names.map(n => skillRegistry[n]).filter(Boolean)\n if (resolved.length === 0) {\n process.stderr.write(`No valid skills found in: ${skillNames}\\n`)\n return undefined\n }\n if (resolved.length === 1) return resolved[0]\n return composeSkills(...resolved)\n}\n\nexport function resolveMemory(backend: string | undefined, memoryPath: string): ChatMemory {\n switch (backend) {\n case 'sqlite':\n return sqliteChatMemory({ path: memoryPath.replace(/\\.json$/, '.db') })\n case 'file':\n default:\n return fileChatMemory(memoryPath)\n }\n}\n","import React, { useMemo } from 'react'\nimport { Box, Text } from 'ink'\nimport { ChatContainer, InputBar, Message, ThinkingIndicator, ToolCallView, useChat } from '@agentskit/ink'\nimport { resolveChatProvider } from './providers'\nimport { resolveTools, resolveMemory, skillRegistry } from './resolve'\n\nimport type { AgentsKitConfig } from './config'\n\nexport interface ChatCommandOptions {\n provider: string\n model?: string\n system?: string\n memoryPath?: string\n apiKey?: string\n baseUrl?: string\n tools?: string\n skill?: string\n memoryBackend?: string\n agentsKitConfig?: AgentsKitConfig\n}\n\nexport function ChatApp(options: ChatCommandOptions) {\n const adapter = useMemo(\n () => resolveChatProvider(options).adapter,\n [options.apiKey, options.baseUrl, options.model, options.provider]\n )\n const memory = useMemo(\n () => resolveMemory(options.memoryBackend, options.memoryPath ?? '.agentskit-history.json'),\n [options.memoryPath, options.memoryBackend]\n )\n const tools = useMemo(() => resolveTools(options.tools), [options.tools])\n const skills = useMemo(() => {\n if (!options.skill) return undefined\n const names = options.skill.split(',').map(s => s.trim())\n const resolved = names.map(n => skillRegistry[n]).filter(Boolean)\n if (resolved.length === 0) return undefined\n return resolved\n }, [options.skill])\n\n const chat = useChat({\n adapter,\n memory,\n systemPrompt: options.system,\n tools: tools.length > 0 ? tools : undefined,\n skills,\n })\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Text bold color=\"cyan\">\n AgentsKit CLI\n </Text>\n <Text dimColor>\n Press Enter to send. Live providers use env vars or --api-key, and demo mode stays available for zero-config usage.\n </Text>\n <ChatContainer>\n {chat.messages.map(message => (\n <Box key={message.id} flexDirection=\"column\" marginBottom={1}>\n <Message message={message} />\n {message.toolCalls?.map(toolCall => (\n <ToolCallView key={toolCall.id} toolCall={toolCall} />\n ))}\n </Box>\n ))}\n </ChatContainer>\n <ThinkingIndicator visible={chat.status === 'streaming'} />\n <InputBar chat={chat} placeholder=\"Type a message and press Enter...\" />\n </Box>\n )\n}\n\nexport function renderChatHeader(options: ChatCommandOptions): string {\n const runtime = resolveChatProvider(options)\n const parts = [`provider=${runtime.provider}`]\n if (runtime.model) parts.push(`model=${runtime.model}`)\n parts.push(`mode=${runtime.mode}`)\n if (options.tools) parts.push(`tools=${options.tools}`)\n if (options.skill) parts.push(`skill=${options.skill}`)\n if (options.memoryBackend) parts.push(`memory=${options.memoryBackend}`)\n return parts.join(' ')\n}\n","import { mkdir, writeFile } from 'node:fs/promises'\nimport path from 'node:path'\n\nexport type StarterKind = 'react' | 'ink' | 'runtime' | 'multi-agent'\nexport type Provider = 'openai' | 'anthropic' | 'gemini' | 'ollama' | 'demo'\nexport type ToolKind = 'web_search' | 'filesystem' | 'shell'\nexport type MemoryKind = 'none' | 'file' | 'sqlite'\nexport type PackageManager = 'pnpm' | 'npm' | 'yarn' | 'bun'\n\nexport interface InitCommandOptions {\n targetDir: string\n template: StarterKind\n provider?: Provider\n tools?: ToolKind[]\n memory?: MemoryKind\n packageManager?: PackageManager\n}\n\ninterface RenderContext {\n template: StarterKind\n provider: Provider\n tools: ToolKind[]\n memory: MemoryKind\n pm: PackageManager\n}\n\nconst PROVIDER_IMPORT: Record<Exclude<Provider, 'demo'>, string> = {\n openai: 'openai',\n anthropic: 'anthropic',\n gemini: 'gemini',\n ollama: 'ollama',\n}\n\nconst PROVIDER_DEFAULT_MODEL: Record<Provider, string> = {\n openai: 'gpt-4o-mini',\n anthropic: 'claude-sonnet-4-6',\n gemini: 'gemini-2.5-flash',\n ollama: 'llama3.1',\n demo: 'demo',\n}\n\nconst PROVIDER_ENV_KEY: Record<Provider, string | null> = {\n openai: 'OPENAI_API_KEY',\n anthropic: 'ANTHROPIC_API_KEY',\n gemini: 'GEMINI_API_KEY',\n ollama: null,\n demo: null,\n}\n\nfunction adapterCall(provider: Provider, prefix = 'process.env'): string {\n const model = PROVIDER_DEFAULT_MODEL[provider]\n if (provider === 'demo') return `demoAdapter()`\n if (provider === 'ollama') return `ollama({ model: '${model}' })`\n const envKey = PROVIDER_ENV_KEY[provider]!\n return `${PROVIDER_IMPORT[provider]}({ apiKey: ${prefix}.${envKey} ?? '', model: '${model}' })`\n}\n\nfunction viteAdapterCall(provider: Provider): string {\n if (provider === 'demo') return `demoAdapter()`\n if (provider === 'ollama') return `ollama({ model: '${PROVIDER_DEFAULT_MODEL[provider]}' })`\n const envKey = PROVIDER_ENV_KEY[provider]!\n return `${PROVIDER_IMPORT[provider]}({ apiKey: import.meta.env.VITE_${envKey} ?? '', model: '${PROVIDER_DEFAULT_MODEL[provider]}' })`\n}\n\nfunction adapterImport(provider: Provider): string {\n if (provider === 'demo') return ''\n return `import { ${PROVIDER_IMPORT[provider]} } from '@agentskit/adapters'\\n`\n}\n\nfunction toolImports(tools: ToolKind[]): string {\n if (tools.length === 0) return ''\n return `import { ${tools.map(t => t === 'web_search' ? 'webSearch' : t).join(', ')} } from '@agentskit/tools'\\n`\n}\n\nfunction toolList(tools: ToolKind[]): string {\n if (tools.length === 0) return '[]'\n const calls = tools.map(t => {\n if (t === 'web_search') return 'webSearch()'\n if (t === 'filesystem') return `...filesystem({ basePath: './workspace' })`\n if (t === 'shell') return `shell({ allowedCommands: ['ls', 'cat'] })`\n return ''\n })\n return `[${calls.join(', ')}]`\n}\n\nfunction memoryImport(memory: MemoryKind): string {\n if (memory === 'file') return `import { fileChatMemory } from '@agentskit/memory'\\n`\n if (memory === 'sqlite') return `import { sqliteChatMemory } from '@agentskit/memory'\\n`\n return ''\n}\n\nfunction memoryCall(memory: MemoryKind): string {\n if (memory === 'file') return `fileChatMemory('./.agentskit-history.json')`\n if (memory === 'sqlite') return `sqliteChatMemory({ path: './.agentskit-history.db' })`\n return 'undefined'\n}\n\nfunction demoAdapterSnippet(): string {\n return `function demoAdapter() {\n return {\n createSource: () => ({\n stream: async function* () {\n yield { type: 'text' as const, content: 'Hello from your AgentsKit starter. ' }\n yield { type: 'text' as const, content: 'Configure a real adapter to talk to a model.' }\n yield { type: 'done' as const }\n },\n abort: () => {},\n }),\n }\n}\\n\\n`\n}\n\n// ============================================================================\n// Templates\n// ============================================================================\n\nfunction reactStarter(ctx: RenderContext): Record<string, string> {\n const deps: Record<string, string> = {\n '@agentskit/react': '^0.4.0',\n react: '^19.0.0',\n 'react-dom': '^19.0.0',\n }\n if (ctx.provider !== 'demo') deps['@agentskit/adapters'] = '^0.4.0'\n if (ctx.tools.length > 0) deps['@agentskit/tools'] = '^0.4.0'\n if (ctx.memory !== 'none') deps['@agentskit/memory'] = '^0.4.0'\n\n const includesDemo = ctx.provider === 'demo'\n const adapter = ctx.provider === 'demo' ? viteAdapterCall(ctx.provider) : viteAdapterCall(ctx.provider)\n const envKey = PROVIDER_ENV_KEY[ctx.provider]\n const envContent = envKey ? `VITE_${envKey}=\\n` : '# No API key required for the local provider\\n'\n\n return {\n 'package.json': JSON.stringify(\n {\n name: path.basename(ctx.template === 'react' ? 'agentskit-react-app' : 'agentskit-app'),\n private: true,\n type: 'module',\n scripts: {\n dev: 'vite',\n build: 'vite build',\n preview: 'vite preview',\n },\n dependencies: deps,\n devDependencies: {\n '@types/react': '^19.0.0',\n '@types/react-dom': '^19.0.0',\n '@vitejs/plugin-react': '^5.0.0',\n typescript: '^5.5.0',\n vite: '^7.0.0',\n },\n },\n null,\n 2,\n ) + '\\n',\n\n 'index.html': `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>AgentsKit React Starter</title>\n </head>\n <body>\n <div id=\"root\"></div>\n <script type=\"module\" src=\"/src/main.tsx\"></script>\n </body>\n</html>\n`,\n\n 'vite.config.ts': `import { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\n\nexport default defineConfig({ plugins: [react()] })\n`,\n\n 'tsconfig.json': JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n lib: ['ES2022', 'DOM'],\n module: 'ESNext',\n moduleResolution: 'bundler',\n jsx: 'react-jsx',\n strict: true,\n noEmit: true,\n skipLibCheck: true,\n },\n include: ['src'],\n },\n null,\n 2,\n ) + '\\n',\n\n 'src/main.tsx': `import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport App from './App'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n)\n`,\n\n 'src/App.tsx': `import { ChatContainer, InputBar, Message, useChat } from '@agentskit/react'\n${adapterImport(ctx.provider)}${toolImports(ctx.tools)}${memoryImport(ctx.memory)}import '@agentskit/react/theme'\n\n${includesDemo ? demoAdapterSnippet() : ''}export default function App() {\n const chat = useChat({\n adapter: ${adapter},${ctx.tools.length > 0 ? `\\n tools: ${toolList(ctx.tools)},` : ''}${ctx.memory !== 'none' ? `\\n memory: ${memoryCall(ctx.memory)},` : ''}\n })\n\n return (\n <ChatContainer>\n {chat.messages.map(message => (\n <Message key={message.id} message={message} />\n ))}\n <InputBar chat={chat} />\n </ChatContainer>\n )\n}\n`,\n\n '.env.example': envContent,\n\n '.gitignore': `node_modules\ndist\n.env\n.env.local\n.agentskit-history.*\n`,\n\n 'README.md': readmeFor(ctx),\n }\n}\n\nfunction inkStarter(ctx: RenderContext): Record<string, string> {\n const deps: Record<string, string> = {\n '@agentskit/ink': '^0.4.0',\n ink: '^7.0.0',\n react: '^19.0.0',\n }\n if (ctx.provider !== 'demo') deps['@agentskit/adapters'] = '^0.4.0'\n if (ctx.tools.length > 0) deps['@agentskit/tools'] = '^0.4.0'\n if (ctx.memory !== 'none') deps['@agentskit/memory'] = '^0.4.0'\n\n return {\n 'package.json': JSON.stringify(\n {\n name: 'agentskit-ink-app',\n private: true,\n type: 'module',\n scripts: {\n dev: 'tsx src/index.tsx',\n start: 'tsx src/index.tsx',\n },\n dependencies: deps,\n devDependencies: {\n '@types/react': '^19.0.0',\n '@types/react-dom': '^19.0.0',\n tsx: '^4.20.0',\n typescript: '^5.5.0',\n },\n },\n null,\n 2,\n ) + '\\n',\n\n 'tsconfig.json': JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'ESNext',\n moduleResolution: 'bundler',\n jsx: 'react-jsx',\n strict: true,\n noEmit: true,\n skipLibCheck: true,\n },\n include: ['src'],\n },\n null,\n 2,\n ) + '\\n',\n\n 'src/index.tsx': `import React from 'react'\nimport { render } from 'ink'\nimport { ChatContainer, InputBar, Message, useChat } from '@agentskit/ink'\n${adapterImport(ctx.provider)}${toolImports(ctx.tools)}${memoryImport(ctx.memory)}\n${ctx.provider === 'demo' ? demoAdapterSnippet() : ''}function App() {\n const chat = useChat({\n adapter: ${adapterCall(ctx.provider)},${ctx.tools.length > 0 ? `\\n tools: ${toolList(ctx.tools)},` : ''}${ctx.memory !== 'none' ? `\\n memory: ${memoryCall(ctx.memory)},` : ''}\n })\n\n return (\n <ChatContainer>\n {chat.messages.map(message => (\n <Message key={message.id} message={message} />\n ))}\n <InputBar chat={chat} />\n </ChatContainer>\n )\n}\n\nrender(<App />)\n`,\n\n '.env.example': PROVIDER_ENV_KEY[ctx.provider]\n ? `${PROVIDER_ENV_KEY[ctx.provider]}=\\n`\n : '# No API key required for the local provider\\n',\n\n '.gitignore': `node_modules\n.env\n.env.local\n.agentskit-history.*\n`,\n\n 'README.md': readmeFor(ctx),\n }\n}\n\nfunction runtimeStarter(ctx: RenderContext): Record<string, string> {\n const deps: Record<string, string> = {\n '@agentskit/runtime': '^0.4.0',\n }\n if (ctx.provider !== 'demo') deps['@agentskit/adapters'] = '^0.4.0'\n if (ctx.tools.length > 0) deps['@agentskit/tools'] = '^0.4.0'\n if (ctx.memory !== 'none') deps['@agentskit/memory'] = '^0.4.0'\n\n return {\n 'package.json': JSON.stringify(\n {\n name: 'agentskit-runtime-app',\n private: true,\n type: 'module',\n scripts: {\n start: 'tsx src/index.ts',\n dev: 'tsx src/index.ts',\n },\n dependencies: deps,\n devDependencies: {\n tsx: '^4.20.0',\n typescript: '^5.5.0',\n },\n },\n null,\n 2,\n ) + '\\n',\n\n 'tsconfig.json': JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'ESNext',\n moduleResolution: 'bundler',\n strict: true,\n noEmit: true,\n skipLibCheck: true,\n },\n include: ['src'],\n },\n null,\n 2,\n ) + '\\n',\n\n 'src/index.ts': `import { createRuntime } from '@agentskit/runtime'\n${adapterImport(ctx.provider)}${toolImports(ctx.tools)}${memoryImport(ctx.memory)}\n${ctx.provider === 'demo' ? demoAdapterSnippet() : ''}const runtime = createRuntime({\n adapter: ${adapterCall(ctx.provider)},${ctx.tools.length > 0 ? `\\n tools: ${toolList(ctx.tools)},` : ''}${ctx.memory !== 'none' ? `\\n memory: ${memoryCall(ctx.memory)},` : ''}\n maxSteps: 10,\n})\n\nconst task = process.argv.slice(2).join(' ') || 'Say hello and tell me one fact about TypeScript.'\nconst result = await runtime.run(task)\n\nconsole.log(result.content)\nconsole.log(\\`\\\\n— \\${result.steps} steps · \\${result.toolCalls.length} tool calls · \\${result.durationMs}ms\\`)\n`,\n\n '.env.example': PROVIDER_ENV_KEY[ctx.provider]\n ? `${PROVIDER_ENV_KEY[ctx.provider]}=\\n`\n : '# No API key required for the local provider\\n',\n\n '.gitignore': `node_modules\n.env\n.env.local\n.agentskit-history.*\n`,\n\n 'README.md': readmeFor(ctx),\n }\n}\n\nfunction multiAgentStarter(ctx: RenderContext): Record<string, string> {\n const deps: Record<string, string> = {\n '@agentskit/runtime': '^0.4.0',\n '@agentskit/skills': '^0.4.0',\n }\n if (ctx.provider !== 'demo') deps['@agentskit/adapters'] = '^0.4.0'\n if (ctx.tools.length === 0) ctx.tools = ['web_search']\n deps['@agentskit/tools'] = '^0.4.0'\n\n return {\n 'package.json': JSON.stringify(\n {\n name: 'agentskit-multi-agent',\n private: true,\n type: 'module',\n scripts: {\n start: 'tsx src/index.ts',\n dev: 'tsx src/index.ts',\n },\n dependencies: deps,\n devDependencies: {\n tsx: '^4.20.0',\n typescript: '^5.5.0',\n },\n },\n null,\n 2,\n ) + '\\n',\n\n 'tsconfig.json': JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'ESNext',\n moduleResolution: 'bundler',\n strict: true,\n noEmit: true,\n skipLibCheck: true,\n },\n include: ['src'],\n },\n null,\n 2,\n ) + '\\n',\n\n 'src/index.ts': `import { createRuntime } from '@agentskit/runtime'\nimport { planner, researcher } from '@agentskit/skills'\n${adapterImport(ctx.provider)}${toolImports(ctx.tools)}\n${ctx.provider === 'demo' ? demoAdapterSnippet() : ''}const runtime = createRuntime({\n adapter: ${adapterCall(ctx.provider)},\n maxSteps: 10,\n maxDelegationDepth: 2,\n})\n\nconst task = process.argv.slice(2).join(' ') || 'Research the current state of WebGPU and summarize.'\n\nconst result = await runtime.run(task, {\n skill: planner,\n delegates: {\n researcher: {\n skill: researcher,\n tools: ${toolList(ctx.tools)},\n maxSteps: 5,\n },\n },\n})\n\nconsole.log(result.content)\nconsole.log(\\`\\\\n— \\${result.steps} steps · \\${result.toolCalls.length} tool calls\\`)\n`,\n\n '.env.example': PROVIDER_ENV_KEY[ctx.provider]\n ? `${PROVIDER_ENV_KEY[ctx.provider]}=\\n`\n : '# No API key required for the local provider\\n',\n\n '.gitignore': `node_modules\n.env\n.env.local\n`,\n\n 'README.md': readmeFor(ctx),\n }\n}\n\nfunction readmeFor(ctx: RenderContext): string {\n const installCmd = ctx.pm === 'npm' ? 'npm install' : `${ctx.pm} install`\n const runCmd = ctx.pm === 'npm' ? 'npm run dev' : `${ctx.pm} dev`\n const envKey = PROVIDER_ENV_KEY[ctx.provider]\n\n return `# AgentsKit ${ctx.template} starter\n\nGenerated by \\`agentskit init\\`.\n\n## Stack\n\n- **Template**: \\`${ctx.template}\\`\n- **Provider**: \\`${ctx.provider}\\`${ctx.tools.length ? `\\n- **Tools**: ${ctx.tools.map(t => `\\`${t}\\``).join(', ')}` : ''}${ctx.memory !== 'none' ? `\\n- **Memory**: \\`${ctx.memory}\\`` : ''}\n\n## Run\n\n\\`\\`\\`bash\n${installCmd}\n${envKey ? `cp .env.example .env\\n# add ${envKey}=...` : '# No API key required'}\n${runCmd}\n\\`\\`\\`\n\n## Next steps\n\n- Open the AgentsKit docs at https://www.agentskit.io/docs\n- Add a custom skill: https://www.agentskit.io/docs/concepts/skill\n- Wire up RAG: https://www.agentskit.io/docs/recipes/rag-chat\n\n## License\n\nISC\n`\n}\n\n// ============================================================================\n// Main\n// ============================================================================\n\nconst TEMPLATE_FN: Record<StarterKind, (ctx: RenderContext) => Record<string, string>> = {\n react: reactStarter,\n ink: inkStarter,\n runtime: runtimeStarter,\n 'multi-agent': multiAgentStarter,\n}\n\nexport async function writeStarterProject(options: InitCommandOptions): Promise<void> {\n const ctx: RenderContext = {\n template: options.template,\n provider: options.provider ?? 'demo',\n tools: options.tools ?? [],\n memory: options.memory ?? 'none',\n pm: options.packageManager ?? 'pnpm',\n }\n\n const files = TEMPLATE_FN[ctx.template](ctx)\n await mkdir(options.targetDir, { recursive: true })\n\n await Promise.all(\n Object.entries(files).map(async ([relativePath, content]) => {\n const absolutePath = path.join(options.targetDir, relativePath)\n await mkdir(path.dirname(absolutePath), { recursive: true })\n await writeFile(absolutePath, content, 'utf8')\n }),\n )\n}\n","import { input, select, checkbox, confirm } from '@inquirer/prompts'\nimport kleur from 'kleur'\nimport path from 'node:path'\nimport { existsSync } from 'node:fs'\nimport type {\n InitCommandOptions,\n StarterKind,\n Provider,\n ToolKind,\n MemoryKind,\n PackageManager,\n} from './init'\n\ninterface InteractiveResult {\n options: InitCommandOptions\n cancelled: boolean\n}\n\n/**\n * Run the interactive init flow. Returns the resolved InitCommandOptions\n * to feed into writeStarterProject. If the user cancels (Ctrl+C), returns\n * { cancelled: true }.\n */\nexport async function runInteractiveInit(\n defaults: { dir?: string; template?: StarterKind } = {},\n): Promise<InteractiveResult> {\n process.stdout.write(`\\n${kleur.bold().green('▲')} ${kleur.bold('agentskit init')}\\n`)\n process.stdout.write(kleur.dim(' Generate a starter project — answer five questions.\\n\\n'))\n\n try {\n const targetDir = await input({\n message: 'Project directory:',\n default: defaults.dir ?? 'agentskit-app',\n validate: (value) => {\n if (!value.trim()) return 'A directory name is required.'\n const abs = path.resolve(process.cwd(), value)\n if (existsSync(abs)) return `${value} already exists. Pick a different name.`\n return true\n },\n })\n\n const template = (await select<StarterKind>({\n message: 'Template:',\n default: defaults.template ?? 'react',\n choices: [\n { name: 'React chat (Vite + browser)', value: 'react', description: 'Streaming UI with @agentskit/react' },\n { name: 'Ink chat (terminal UI)', value: 'ink', description: 'Same chat but in your terminal' },\n { name: 'Runtime (headless agent, no UI)', value: 'runtime', description: 'Autonomous task → result' },\n { name: 'Multi-agent (planner + delegates)', value: 'multi-agent', description: 'Supervisor pattern, ready to extend' },\n ],\n })) as StarterKind\n\n const provider = (await select<Provider>({\n message: 'LLM provider:',\n default: 'demo',\n choices: [\n { name: 'Demo (no API key — deterministic stub)', value: 'demo' },\n { name: 'OpenAI', value: 'openai' },\n { name: 'Anthropic', value: 'anthropic' },\n { name: 'Gemini', value: 'gemini' },\n { name: 'Ollama (local, no key)', value: 'ollama' },\n ],\n })) as Provider\n\n let tools: ToolKind[] = []\n if (template !== 'react') {\n // React template focuses on chat; tools are most useful in runtime / multi-agent / ink\n tools = (await checkbox<ToolKind>({\n message: 'Tools (space to toggle, enter to confirm):',\n choices: [\n { name: 'web_search', value: 'web_search' },\n { name: 'filesystem', value: 'filesystem' },\n { name: 'shell', value: 'shell' },\n ],\n })) as ToolKind[]\n }\n\n const memory = (await select<MemoryKind>({\n message: 'Memory backend:',\n default: 'none',\n choices: [\n { name: 'None (stateless)', value: 'none' },\n { name: 'File (JSON on disk)', value: 'file' },\n { name: 'SQLite (better-sqlite3)', value: 'sqlite' },\n ],\n })) as MemoryKind\n\n const packageManager = (await select<PackageManager>({\n message: 'Package manager:',\n default: 'pnpm',\n choices: [\n { name: 'pnpm', value: 'pnpm' },\n { name: 'npm', value: 'npm' },\n { name: 'yarn', value: 'yarn' },\n { name: 'bun', value: 'bun' },\n ],\n })) as PackageManager\n\n process.stdout.write('\\n' + kleur.dim(' Summary:\\n'))\n process.stdout.write(kleur.dim(` dir ${targetDir}\\n`))\n process.stdout.write(kleur.dim(` template ${template}\\n`))\n process.stdout.write(kleur.dim(` provider ${provider}\\n`))\n if (tools.length) process.stdout.write(kleur.dim(` tools ${tools.join(', ')}\\n`))\n process.stdout.write(kleur.dim(` memory ${memory}\\n`))\n process.stdout.write(kleur.dim(` pm ${packageManager}\\n\\n`))\n\n const proceed = await confirm({ message: 'Generate?', default: true })\n if (!proceed) {\n process.stdout.write(kleur.yellow('Cancelled.\\n'))\n return { cancelled: true, options: { targetDir, template, provider, tools, memory, packageManager } }\n }\n\n return {\n cancelled: false,\n options: {\n targetDir: path.resolve(process.cwd(), targetDir),\n template,\n provider,\n tools,\n memory,\n packageManager,\n },\n }\n } catch (err) {\n // ExitPromptError thrown on Ctrl+C\n if ((err as Error).name === 'ExitPromptError') {\n process.stdout.write(kleur.yellow('\\nCancelled.\\n'))\n return { cancelled: true, options: { targetDir: '', template: 'react' } }\n }\n throw err\n }\n}\n\nexport function printNextSteps(options: InitCommandOptions): void {\n const dir = path.relative(process.cwd(), options.targetDir) || '.'\n const pm = options.packageManager ?? 'pnpm'\n const installCmd = pm === 'npm' ? 'npm install' : `${pm} install`\n const runCmd = pm === 'npm' ? 'npm run dev' : `${pm} dev`\n\n process.stdout.write('\\n' + kleur.green('✓ Created starter at ') + kleur.bold(dir) + '\\n\\n')\n process.stdout.write(kleur.bold('Next steps:\\n\\n'))\n process.stdout.write(` ${kleur.cyan('cd')} ${dir}\\n`)\n process.stdout.write(` ${kleur.cyan(installCmd)}\\n`)\n if (options.provider && options.provider !== 'demo' && options.provider !== 'ollama') {\n process.stdout.write(\n ` ${kleur.cyan('cp')} .env.example .env ${kleur.dim('# add your API key')}\\n`,\n )\n }\n process.stdout.write(` ${kleur.cyan(runCmd)}\\n\\n`)\n process.stdout.write(kleur.dim(' Docs: https://www.agentskit.io/docs\\n\\n'))\n}\n","import { createRuntime } from '@agentskit/runtime'\nimport type { AgentEvent, Observer } from '@agentskit/core'\nimport { resolveChatProvider } from './providers'\nimport { resolveTools, resolveSkill, resolveSkills, resolveMemory } from './resolve'\n\nexport interface RunCommandOptions {\n provider: string\n model?: string\n apiKey?: string\n baseUrl?: string\n task?: string\n skill?: string\n skills?: string\n tools?: string\n memory?: string\n memoryBackend?: string\n systemPrompt?: string\n maxSteps?: string\n verbose?: boolean\n pretty?: boolean\n}\n\nfunction formatEvent(event: AgentEvent): string {\n switch (event.type) {\n case 'agent:step':\n return `[step ${event.step}] ${event.action}`\n case 'llm:start':\n return `[llm] start (${event.messageCount} messages)`\n case 'llm:end': {\n const preview = event.content.length > 100 ? event.content.slice(0, 100) + '...' : event.content\n return `[llm] done (${event.durationMs}ms) \"${preview}\"`\n }\n case 'tool:start':\n return `[tool] ${event.name} ${JSON.stringify(event.args)}`\n case 'tool:end':\n return `[tool] ${event.name} done (${event.durationMs}ms)`\n case 'error':\n return `[error] ${event.error.message}`\n default:\n return `[${event.type}]`\n }\n}\n\nexport async function runAgent(task: string, options: RunCommandOptions): Promise<void> {\n if (options.skill && options.skills) {\n process.stderr.write('Error: --skill and --skills are mutually exclusive. Use one or the other.\\n')\n process.exit(1)\n }\n\n const { adapter } = resolveChatProvider({\n provider: options.provider,\n model: options.model,\n apiKey: options.apiKey,\n baseUrl: options.baseUrl,\n })\n\n const tools = resolveTools(options.tools)\n const skill = options.skills\n ? resolveSkills(options.skills)\n : resolveSkill(options.skill)\n const memory = options.memory\n ? resolveMemory(options.memoryBackend, options.memory)\n : undefined\n\n const observers: Observer[] = []\n if (options.verbose) {\n observers.push({\n name: 'cli-verbose',\n on(event: AgentEvent) {\n process.stderr.write(formatEvent(event) + '\\n')\n },\n })\n }\n\n const runtime = createRuntime({\n adapter,\n tools,\n memory,\n systemPrompt: options.systemPrompt,\n maxSteps: options.maxSteps ? parseInt(options.maxSteps, 10) : undefined,\n observers,\n })\n\n const result = await runtime.run(task, {\n skill: skill ?? undefined,\n })\n\n process.stdout.write(result.content + '\\n')\n}\n","import React, { useEffect, useState } from 'react'\nimport { Box, Text } from 'ink'\nimport { createRuntime } from '@agentskit/runtime'\nimport type { AgentEvent, Observer } from '@agentskit/core'\nimport { resolveChatProvider } from './providers'\nimport { resolveTools, resolveSkill, resolveSkills, resolveMemory } from './resolve'\nimport type { RunCommandOptions } from './run'\n\ninterface ToolCallInfo {\n name: string\n status: 'running' | 'done' | 'error'\n durationMs?: number\n}\n\nexport function RunApp({ task, options }: { task: string; options: RunCommandOptions }) {\n const [status, setStatus] = useState<'running' | 'done' | 'error'>('running')\n const [currentStep, setCurrentStep] = useState(0)\n const [toolCalls, setToolCalls] = useState<ToolCallInfo[]>([])\n const [result, setResult] = useState('')\n const [error, setError] = useState('')\n const [durationMs, setDurationMs] = useState(0)\n\n useEffect(() => {\n async function execute() {\n if (options.skill && options.skills) {\n setError('--skill and --skills are mutually exclusive.')\n setStatus('error')\n return\n }\n\n const { adapter } = resolveChatProvider({\n provider: options.provider,\n model: options.model,\n apiKey: options.apiKey,\n baseUrl: options.baseUrl,\n })\n\n const tools = resolveTools(options.tools)\n const skill = options.skills\n ? resolveSkills(options.skills)\n : resolveSkill(options.skill)\n const memory = options.memory\n ? resolveMemory(options.memoryBackend, options.memory)\n : undefined\n\n const observers: Observer[] = [{\n name: 'run-ui',\n on(event: AgentEvent) {\n switch (event.type) {\n case 'agent:step':\n setCurrentStep(event.step)\n break\n case 'tool:start':\n setToolCalls(prev => [...prev, { name: event.name, status: 'running' }])\n break\n case 'tool:end':\n setToolCalls(prev => prev.map(tc =>\n tc.name === event.name && tc.status === 'running'\n ? { ...tc, status: 'done', durationMs: event.durationMs }\n : tc\n ))\n break\n case 'error':\n setToolCalls(prev => prev.map(tc =>\n tc.status === 'running' ? { ...tc, status: 'error' } : tc\n ))\n break\n }\n },\n }]\n\n const runtime = createRuntime({\n adapter,\n tools,\n memory,\n systemPrompt: options.systemPrompt,\n maxSteps: options.maxSteps ? parseInt(options.maxSteps, 10) : undefined,\n observers,\n })\n\n try {\n const runResult = await runtime.run(task, { skill: skill ?? undefined })\n setResult(runResult.content)\n setDurationMs(runResult.durationMs)\n setStatus('done')\n } catch (err) {\n setError(err instanceof Error ? err.message : String(err))\n setStatus('error')\n }\n }\n\n void execute()\n }, [])\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Text bold color=\"cyan\">agentskit run</Text>\n <Text dimColor>Task: {task}</Text>\n\n {status === 'running' && currentStep > 0 && (\n <Text color=\"yellow\">{'⟳'} Step {currentStep}</Text>\n )}\n\n {toolCalls.map((tc, i) => (\n <Box key={i} marginLeft={2}>\n <Text color={tc.status === 'running' ? 'yellow' : tc.status === 'done' ? 'green' : 'red'}>\n {tc.status === 'running' ? '⟳' : tc.status === 'done' ? '✓' : '✗'}{' '}\n {tc.name}\n {tc.durationMs !== undefined ? ` (${tc.durationMs}ms)` : ''}\n </Text>\n </Box>\n ))}\n\n {status === 'running' && (\n <Text color=\"yellow\">Running...</Text>\n )}\n\n {status === 'done' && (\n <Box flexDirection=\"column\">\n <Text color=\"green\" bold>Done ({durationMs}ms)</Text>\n <Text>{result}</Text>\n </Box>\n )}\n\n {status === 'error' && (\n <Text color=\"red\" bold>Error: {error}</Text>\n )}\n </Box>\n )\n}\n","import { readFile } from 'node:fs/promises'\nimport { join } from 'node:path'\nimport { existsSync } from 'node:fs'\nimport { loadConfig } from './config'\n\nexport type CheckStatus = 'pass' | 'warn' | 'fail' | 'skip'\n\nexport interface CheckResult {\n status: CheckStatus\n name: string\n detail?: string\n fix?: string\n}\n\nexport interface DoctorReport {\n results: CheckResult[]\n pass: number\n warn: number\n fail: number\n skip: number\n}\n\nconst PROVIDER_ENV_KEYS: Record<string, string> = {\n openai: 'OPENAI_API_KEY',\n anthropic: 'ANTHROPIC_API_KEY',\n gemini: 'GEMINI_API_KEY',\n deepseek: 'DEEPSEEK_API_KEY',\n grok: 'XAI_API_KEY',\n kimi: 'KIMI_API_KEY',\n}\n\nconst PROVIDER_REACH_URLS: Record<string, string> = {\n openai: 'https://api.openai.com/v1/models',\n anthropic: 'https://api.anthropic.com',\n gemini: 'https://generativelanguage.googleapis.com',\n ollama: 'http://localhost:11434/api/tags',\n}\n\n// ============================================================================\n// Individual checks\n// ============================================================================\n\nexport async function checkNodeVersion(): Promise<CheckResult> {\n const major = Number(process.versions.node.split('.')[0])\n if (Number.isNaN(major)) {\n return { status: 'fail', name: 'Node version', detail: 'Could not parse process.versions.node' }\n }\n if (major < 22) {\n return {\n status: 'fail',\n name: 'Node version',\n detail: `Node ${process.versions.node} (need 22+)`,\n fix: 'Install Node 22 LTS or newer (https://nodejs.org)',\n }\n }\n if (major === 25) {\n return {\n status: 'warn',\n name: 'Node version',\n detail: `Node ${process.versions.node} — Docusaurus apps may break here`,\n fix: 'Use Node 22 LTS for the legacy docs app, or stay on 25 for everything else',\n }\n }\n return { status: 'pass', name: 'Node version', detail: `Node ${process.versions.node}` }\n}\n\nexport async function checkPnpm(): Promise<CheckResult> {\n // We can't run binaries directly, but we can detect the lockfile signal\n const cwd = process.cwd()\n const hasPnpm = existsSync(join(cwd, 'pnpm-lock.yaml')) || existsSync(join(cwd, 'pnpm-workspace.yaml'))\n if (hasPnpm) {\n return { status: 'pass', name: 'Package manager', detail: 'pnpm detected (lockfile)' }\n }\n if (existsSync(join(cwd, 'package-lock.json'))) {\n return { status: 'warn', name: 'Package manager', detail: 'npm detected — pnpm recommended for monorepo workflows' }\n }\n if (existsSync(join(cwd, 'yarn.lock'))) {\n return { status: 'pass', name: 'Package manager', detail: 'yarn detected' }\n }\n if (existsSync(join(cwd, 'bun.lock')) || existsSync(join(cwd, 'bun.lockb'))) {\n return { status: 'pass', name: 'Package manager', detail: 'bun detected' }\n }\n return {\n status: 'skip',\n name: 'Package manager',\n detail: 'No lockfile found in cwd',\n }\n}\n\nexport async function checkPackageJson(): Promise<CheckResult> {\n const path = join(process.cwd(), 'package.json')\n if (!existsSync(path)) {\n return {\n status: 'warn',\n name: 'package.json',\n detail: 'No package.json in cwd',\n fix: 'Run from a project directory (or use `agentskit init` to create one)',\n }\n }\n try {\n const pkg = JSON.parse(await readFile(path, 'utf8')) as Record<string, unknown>\n const deps = {\n ...((pkg.dependencies as Record<string, string>) ?? {}),\n ...((pkg.devDependencies as Record<string, string>) ?? {}),\n }\n const akDeps = Object.entries(deps).filter(([name]) => name.startsWith('@agentskit/'))\n if (akDeps.length === 0) {\n return { status: 'skip', name: 'AgentsKit packages', detail: 'No @agentskit/* deps found in package.json' }\n }\n return {\n status: 'pass',\n name: 'AgentsKit packages',\n detail: `${akDeps.length} installed: ${akDeps.map(([n]) => n.replace('@agentskit/', '')).join(', ')}`,\n }\n } catch (err) {\n return {\n status: 'fail',\n name: 'package.json',\n detail: `Could not parse: ${(err as Error).message}`,\n }\n }\n}\n\nexport async function checkProviderEnv(provider: string): Promise<CheckResult> {\n const envKey = PROVIDER_ENV_KEYS[provider]\n if (!envKey) {\n return { status: 'skip', name: `${provider} API key`, detail: 'No env-key requirement for this provider' }\n }\n const value = process.env[envKey]\n if (!value) {\n return {\n status: 'fail',\n name: `${provider} API key`,\n detail: `${envKey} is not set`,\n fix: `export ${envKey}=...`,\n }\n }\n if (value.length < 16) {\n return {\n status: 'warn',\n name: `${provider} API key`,\n detail: `${envKey} looks too short (${value.length} chars)`,\n fix: 'Verify the key is complete and not truncated',\n }\n }\n return { status: 'pass', name: `${provider} API key`, detail: `${envKey} set (${value.length} chars)` }\n}\n\nexport async function checkProviderReachable(\n provider: string,\n fetchImpl: typeof fetch = fetch,\n timeoutMs = 4000,\n): Promise<CheckResult> {\n const url = PROVIDER_REACH_URLS[provider]\n if (!url) {\n return { status: 'skip', name: `${provider} reachable`, detail: 'No reachability check for this provider' }\n }\n\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), timeoutMs)\n try {\n const res = await fetchImpl(url, {\n method: 'GET',\n signal: controller.signal,\n // No auth — we just want to confirm DNS + network reach.\n })\n // 401/403 means the host is reachable; anything else status-wise also confirms reach.\n return {\n status: 'pass',\n name: `${provider} reachable`,\n detail: `${url} → HTTP ${res.status}`,\n }\n } catch (err) {\n const reason = (err as Error).name === 'AbortError' ? `timeout after ${timeoutMs}ms` : (err as Error).message\n return {\n status: 'fail',\n name: `${provider} reachable`,\n detail: `${url} → ${reason}`,\n fix:\n provider === 'ollama'\n ? 'Start Ollama: `ollama serve` (or install from https://ollama.com)'\n : 'Check network / firewall / VPN settings',\n }\n } finally {\n clearTimeout(timer)\n }\n}\n\nexport async function checkConfig(): Promise<CheckResult> {\n try {\n const config = await loadConfig()\n if (!config) {\n return { status: 'skip', name: 'AgentsKit config', detail: 'No .agentskit.config or package.json#agentskit found' }\n }\n return {\n status: 'pass',\n name: 'AgentsKit config',\n detail: `loaded — defaults: ${JSON.stringify(config.defaults ?? {})}`,\n }\n } catch (err) {\n return {\n status: 'warn',\n name: 'AgentsKit config',\n detail: `Could not load: ${(err as Error).message}`,\n }\n }\n}\n\n// ============================================================================\n// Orchestration\n// ============================================================================\n\nexport interface DoctorOptions {\n /** Provider names to check. Defaults to all known providers. */\n providers?: string[]\n /** Skip the network reachability checks. */\n noNetwork?: boolean\n /** Custom fetch (for tests). */\n fetchImpl?: typeof fetch\n}\n\nexport async function runDoctor(options: DoctorOptions = {}): Promise<DoctorReport> {\n const providers = options.providers ?? ['openai', 'anthropic', 'gemini', 'ollama']\n const fetchImpl = options.fetchImpl ?? fetch\n\n const checks: Array<Promise<CheckResult>> = [\n checkNodeVersion(),\n checkPnpm(),\n checkPackageJson(),\n checkConfig(),\n ]\n\n for (const provider of providers) {\n checks.push(checkProviderEnv(provider))\n if (!options.noNetwork) {\n checks.push(checkProviderReachable(provider, fetchImpl))\n }\n }\n\n const results = await Promise.all(checks)\n\n return {\n results,\n pass: results.filter(r => r.status === 'pass').length,\n warn: results.filter(r => r.status === 'warn').length,\n fail: results.filter(r => r.status === 'fail').length,\n skip: results.filter(r => r.status === 'skip').length,\n }\n}\n\n// ============================================================================\n// Renderer (TTY-friendly)\n// ============================================================================\n\nconst ICON: Record<CheckStatus, string> = {\n pass: '✓',\n warn: '!',\n fail: '✗',\n skip: '·',\n}\n\nexport function renderReport(report: DoctorReport, opts: { color?: boolean } = {}): string {\n const color = opts.color ?? true\n const c = (code: string, text: string) => (color ? `\\x1b[${code}m${text}\\x1b[0m` : text)\n const colorFor: Record<CheckStatus, (t: string) => string> = {\n pass: t => c('32', t),\n warn: t => c('33', t),\n fail: t => c('31', t),\n skip: t => c('90', t),\n }\n\n const lines: string[] = []\n lines.push('')\n lines.push(c('1', 'agentskit doctor'))\n lines.push('')\n for (const r of report.results) {\n const icon = colorFor[r.status](ICON[r.status])\n const name = r.name.padEnd(28)\n const detail = r.detail ? c('90', r.detail) : ''\n lines.push(` ${icon} ${name} ${detail}`)\n if (r.fix && (r.status === 'fail' || r.status === 'warn')) {\n lines.push(` ${c('90', '↳ ' + r.fix)}`)\n }\n }\n lines.push('')\n const summary = [\n `${report.pass} pass`,\n report.warn > 0 ? colorFor.warn(`${report.warn} warn`) : `${report.warn} warn`,\n report.fail > 0 ? colorFor.fail(`${report.fail} fail`) : `${report.fail} fail`,\n `${report.skip} skip`,\n ].join(' · ')\n lines.push(` ${c('1', 'Summary:')} ${summary}`)\n lines.push('')\n return lines.join('\\n')\n}\n","import { spawn, type ChildProcess } from 'node:child_process'\nimport { resolve as pathResolve, basename } from 'node:path'\nimport { existsSync } from 'node:fs'\nimport chokidar from 'chokidar'\nimport kleur from 'kleur'\n\nexport interface DevOptions {\n /** Entry file to run (relative or absolute). */\n entry: string\n /** Globs to watch for changes. Defaults to common project files. */\n watch?: string[]\n /** Globs to ignore. */\n ignore?: string[]\n /** Args to pass through to the entry script. */\n scriptArgs?: string[]\n /** Debounce ms before restart after a change. */\n debounceMs?: number\n /**\n * Spawner override for tests. Defaults to spawning `tsx` (or `node` for\n * .js entries) as a child process.\n */\n spawn?: (cmd: string, args: string[]) => ChildProcess\n /** Watch override for tests. Defaults to chokidar. */\n watcher?: (paths: string[], opts: { ignored?: string[] }) => DevWatcher\n /** Stdout sink for tests. */\n stdout?: NodeJS.WritableStream\n /** Stderr sink for tests. */\n stderr?: NodeJS.WritableStream\n}\n\nexport interface DevWatcher {\n on(event: 'change' | 'add' | 'unlink', listener: (path: string) => void): this\n close(): Promise<void>\n}\n\nconst DEFAULT_WATCH = [\n '**/*.ts',\n '**/*.tsx',\n '**/*.mjs',\n '**/*.json',\n '.agentskit.config.*',\n]\n\nconst DEFAULT_IGNORE = [\n '**/node_modules/**',\n '**/dist/**',\n '**/build/**',\n '**/.next/**',\n '**/.turbo/**',\n '**/.git/**',\n '**/coverage/**',\n '**/*.test.ts',\n '**/*.spec.ts',\n]\n\n/**\n * Run an entry file via tsx, restart it on relevant file changes.\n * Resolves when stop() is called or the watcher closes.\n *\n * Returns a controller so callers (and tests) can stop the loop and\n * inspect activity counters.\n */\nexport interface DevController {\n /** Promise that resolves when the dev session ends. */\n done: Promise<void>\n /** Stop the dev loop and clean up. */\n stop: () => Promise<void>\n /** Number of times the entry has been (re)started. */\n restarts: () => number\n}\n\nexport function startDev(options: DevOptions): DevController {\n const entry = pathResolve(process.cwd(), options.entry)\n if (!existsSync(entry)) {\n throw new Error(`Entry file not found: ${entry}`)\n }\n\n const stdout = options.stdout ?? process.stdout\n const stderr = options.stderr ?? process.stderr\n const debounceMs = options.debounceMs ?? 200\n\n const isTs = entry.endsWith('.ts') || entry.endsWith('.tsx')\n const cmd = isTs ? 'tsx' : 'node'\n const baseArgs = [entry, ...(options.scriptArgs ?? [])]\n\n const spawnFn =\n options.spawn ??\n ((c: string, a: string[]) =>\n spawn(c, a, {\n stdio: ['inherit', 'pipe', 'pipe'],\n env: { ...process.env, FORCE_COLOR: '1' },\n }))\n\n const watchPaths = options.watch ?? DEFAULT_WATCH\n const ignorePaths = [...DEFAULT_IGNORE, ...(options.ignore ?? [])]\n const watcherFactory =\n options.watcher ??\n ((paths, opts) => chokidar.watch(paths, { ignored: opts.ignored, ignoreInitial: true }) as unknown as DevWatcher)\n\n const watcher = watcherFactory(watchPaths, { ignored: ignorePaths })\n\n let child: ChildProcess | undefined\n let restartCount = 0\n let restartTimer: NodeJS.Timeout | undefined\n let stopped = false\n let resolveDone: () => void\n const done = new Promise<void>(r => { resolveDone = r })\n\n const banner = (msg: string, color: 'green' | 'yellow' | 'red' | 'cyan' = 'green') => {\n const time = new Date().toTimeString().slice(0, 8)\n stdout.write(kleur[color](`[agentskit dev ${time}] `) + msg + '\\n')\n }\n\n const startChild = () => {\n restartCount++\n banner(`▸ starting ${kleur.bold(basename(entry))} (restart #${restartCount - 1})`, 'cyan')\n\n const c = spawnFn(cmd, baseArgs)\n child = c\n c.stdout?.on('data', (d: Buffer) => stdout.write(d))\n c.stderr?.on('data', (d: Buffer) => stderr.write(d))\n c.on('exit', (code, signal) => {\n if (stopped) return\n if (signal === 'SIGTERM' || signal === 'SIGINT') return\n if (code === 0) {\n banner(`✓ exited cleanly — waiting for changes`, 'green')\n } else {\n banner(`✗ exited with code ${code} — waiting for changes`, 'red')\n }\n })\n }\n\n const restart = (path: string) => {\n if (restartTimer) clearTimeout(restartTimer)\n restartTimer = setTimeout(() => {\n restartTimer = undefined\n banner(`↻ change detected — ${path}`, 'yellow')\n if (child && !child.killed && child.exitCode === null) {\n child.kill('SIGTERM')\n }\n // Brief pause so the SIGTERM is delivered before we spawn again.\n setTimeout(startChild, 80)\n }, debounceMs)\n }\n\n watcher.on('change', restart)\n watcher.on('add', restart)\n watcher.on('unlink', restart)\n\n startChild()\n\n const stop = async () => {\n if (stopped) return\n stopped = true\n if (restartTimer) clearTimeout(restartTimer)\n if (child && !child.killed && child.exitCode === null) {\n child.kill('SIGTERM')\n }\n await watcher.close()\n banner(`stopped`, 'cyan')\n resolveDone()\n }\n\n // Keyboard handling: 'r' = restart now, 'q' / Ctrl+C = stop\n if (process.stdin.isTTY && process.stdin.setRawMode) {\n process.stdin.setRawMode(true)\n process.stdin.resume()\n process.stdin.on('data', (data: Buffer) => {\n const key = data.toString()\n if (key === 'r') restart('manual')\n if (key === 'q' || key === '\\u0003') void stop()\n })\n }\n\n return {\n done,\n stop,\n restarts: () => restartCount,\n }\n}\n","import kleur from 'kleur'\n\nexport interface TunnelOptions {\n /** Local port to expose. Required. */\n port: number\n /** Optional subdomain hint (best-effort — provider may decline). */\n subdomain?: string\n /** Local hostname (default: 'localhost'). */\n host?: string\n /** Tunnel factory override for tests. Defaults to `localtunnel`. */\n open?: (opts: { port: number; subdomain?: string; local_host?: string }) => Promise<TunnelLike>\n /** Stdout/stderr sinks for tests. */\n stdout?: NodeJS.WritableStream\n /** Called once the tunnel URL is known. */\n onReady?: (url: string) => void\n}\n\nexport interface TunnelLike {\n url: string\n on(event: 'request' | 'error' | 'close', listener: (...args: unknown[]) => void): unknown\n close(): void\n}\n\nexport interface TunnelController {\n /** The public URL once ready. */\n url: string\n /** Resolves when the tunnel closes (or stop() is called). */\n done: Promise<void>\n /** Stop the tunnel and resolve done. */\n stop: () => Promise<void>\n /** Number of requests proxied so far. */\n requests: () => number\n}\n\n/**\n * Open a public tunnel to a local port.\n *\n * Uses `localtunnel` by default — no account required, free, URL is\n * something like `https://word-word-12345.loca.lt`. First-time visitors\n * may see a `loca.lt` interstitial click-through; that's a known\n * provider quirk, not an AgentsKit issue.\n */\nexport async function startTunnel(options: TunnelOptions): Promise<TunnelController> {\n const stdout = options.stdout ?? process.stdout\n const open =\n options.open ??\n (async (opts) => {\n const lt = (await import('localtunnel')).default\n return (await lt(opts)) as TunnelLike\n })\n\n const banner = (msg: string, color: 'green' | 'yellow' | 'red' | 'cyan' = 'green') => {\n const time = new Date().toTimeString().slice(0, 8)\n stdout.write(kleur[color](`[agentskit tunnel ${time}] `) + msg + '\\n')\n }\n\n banner(`opening tunnel to ${options.host ?? 'localhost'}:${options.port}...`, 'cyan')\n\n const tunnel = await open({\n port: options.port,\n subdomain: options.subdomain,\n local_host: options.host,\n })\n\n let requests = 0\n let stopped = false\n let resolveDone: () => void\n const done = new Promise<void>(r => { resolveDone = r })\n\n tunnel.on('request', () => {\n requests++\n })\n\n tunnel.on('close', () => {\n if (stopped) return\n banner(`tunnel closed by remote`, 'yellow')\n resolveDone()\n })\n\n tunnel.on('error', (...args: unknown[]) => {\n const err = args[0] as Error | undefined\n banner(`error: ${err?.message ?? 'unknown'}`, 'red')\n })\n\n banner(`✓ ready`, 'green')\n stdout.write('\\n')\n stdout.write(` ${kleur.bold('Public URL:')} ${kleur.cyan(tunnel.url)}\\n`)\n stdout.write(` ${kleur.bold('Local:')} http://${options.host ?? 'localhost'}:${options.port}\\n`)\n stdout.write('\\n')\n stdout.write(kleur.dim(` Forward webhooks here, then ${kleur.bold('Ctrl+C')} to stop.\\n\\n`))\n\n options.onReady?.(tunnel.url)\n\n const stop = async () => {\n if (stopped) return\n stopped = true\n tunnel.close()\n banner(`stopped — proxied ${requests} request${requests === 1 ? '' : 's'}`, 'cyan')\n resolveDone()\n }\n\n // Hook Ctrl+C — but only if we're attached to a TTY (don't break tests)\n if (process.stdin.isTTY) {\n process.on('SIGINT', () => {\n void stop()\n })\n }\n\n return {\n url: tunnel.url,\n done,\n stop,\n requests: () => requests,\n }\n}\n","import React from 'react'\nimport { render } from 'ink'\nimport { Command } from 'commander'\nimport path from 'node:path'\nimport { loadConfig } from './config'\nimport type { AgentsKitConfig } from './config'\nimport { ChatApp, renderChatHeader } from './chat'\nimport { writeStarterProject } from './init'\nimport type { StarterKind, Provider, ToolKind, MemoryKind, PackageManager } from './init'\nimport { runInteractiveInit, printNextSteps } from './init-interactive'\nimport { runAgent } from './run'\nimport { RunApp } from './run-ui'\nimport { runDoctor, renderReport } from './doctor'\nimport { startDev } from './dev'\nimport { startTunnel } from './tunnel'\n\nfunction mergeWithConfig(options: Record<string, unknown>, config: AgentsKitConfig | undefined): Record<string, unknown> {\n if (!config) return options\n return {\n ...options,\n // Config defaults — only apply if CLI flag wasn't set\n provider: options.provider !== 'demo' ? options.provider : (config.defaults?.provider ?? options.provider),\n model: options.model ?? config.defaults?.model,\n }\n}\n\nexport function createCli() {\n const program = new Command()\n\n program\n .name('agentskit')\n .description('AgentsKit CLI for chat demos and project bootstrapping.')\n\n program\n .command('chat')\n .description('Start a terminal chat session.')\n .option('--provider <provider>', 'Provider to use', 'demo')\n .option('--model <model>', 'Model name')\n .option('--api-key <key>', 'API key for the selected provider')\n .option('--base-url <url>', 'Override provider base URL')\n .option('--system <prompt>', 'System prompt')\n .option('--memory <path>', 'Path for file-based memory', '.agentskit-history.json')\n .option('--tools <tools>', 'Comma-separated tools: web_search,filesystem,shell')\n .option('--skill <skills>', 'Comma-separated skills: researcher,coder,planner,critic,summarizer')\n .option('--memory-backend <backend>', 'Memory backend: file (default), sqlite')\n .option('--no-config', 'Skip loading .agentskit.config.json')\n .action(async (options) => {\n const config = options.config !== false ? await loadConfig() : undefined\n const merged = mergeWithConfig(options, config)\n\n const chatOptions = {\n apiKey: (merged.apiKey ?? options.apiKey) as string | undefined,\n baseUrl: (merged.baseUrl ?? options.baseUrl) as string | undefined,\n provider: merged.provider as string,\n model: merged.model as string | undefined,\n system: options.system as string | undefined,\n memoryPath: options.memory as string | undefined,\n tools: options.tools as string | undefined,\n skill: options.skill as string | undefined,\n memoryBackend: options.memoryBackend as string | undefined,\n agentsKitConfig: config,\n }\n process.stdout.write(`${renderChatHeader(chatOptions)}\\n`)\n render(React.createElement(ChatApp, chatOptions))\n })\n\n program\n .command('run [task]')\n .description('Execute an agent task and output the result.')\n .option('--task <task>', 'Task string (alternative to positional argument)')\n .option('--provider <provider>', 'Provider to use', 'demo')\n .option('--model <model>', 'Model name')\n .option('--api-key <key>', 'API key for the selected provider')\n .option('--base-url <url>', 'Override provider base URL')\n .option('--skill <skill>', 'Single skill to use')\n .option('--skills <skills>', 'Comma-separated skills (composed together)')\n .option('--tools <tools>', 'Comma-separated tools: web_search,filesystem,shell')\n .option('--memory <path>', 'Path for memory persistence')\n .option('--memory-backend <backend>', 'Memory backend: file (default), sqlite')\n .option('--system-prompt <prompt>', 'System prompt')\n .option('--max-steps <steps>', 'Maximum agent steps', '10')\n .option('--verbose', 'Stream agent steps to stderr')\n .option('--pretty', 'Use rich Ink-based output')\n .option('--no-config', 'Skip loading .agentskit.config.json')\n .action(async (positionalTask: string | undefined, options) => {\n const task = options.task ?? positionalTask\n if (!task) {\n process.stderr.write('Error: task is required. Pass as argument or use --task.\\n')\n process.exit(1)\n }\n\n const config = options.config !== false ? await loadConfig() : undefined\n const merged = mergeWithConfig(options, config)\n\n if (options.pretty) {\n render(React.createElement(RunApp, { task, options }))\n } else {\n try {\n await runAgent(task, { ...options, provider: merged.provider, model: merged.model })\n } catch (err) {\n process.stderr.write(`Error: ${err instanceof Error ? err.message : String(err)}\\n`)\n process.exit(1)\n }\n }\n })\n\n program\n .command('init')\n .description('Generate a starter project. Run with no flags for interactive mode.')\n .option('--template <template>', 'Starter template (react|ink|runtime|multi-agent)')\n .option('--dir <directory>', 'Target directory', 'agentskit-app')\n .option('--provider <provider>', 'LLM provider (openai|anthropic|gemini|ollama|demo)')\n .option('--tools <tools>', 'Comma-separated tools (web_search,filesystem,shell)')\n .option('--memory <backend>', 'Memory backend (none|file|sqlite)')\n .option('--pm <packageManager>', 'Package manager (pnpm|npm|yarn|bun)')\n .option('-y, --yes', 'Skip interactive prompts; use flag values + defaults')\n .action(async (rawOptions) => {\n const isCi = !process.stdout.isTTY || rawOptions.yes || rawOptions.template\n let resolved: Parameters<typeof writeStarterProject>[0]\n\n if (isCi) {\n const template = (rawOptions.template ?? 'react') as StarterKind\n resolved = {\n targetDir: path.resolve(process.cwd(), rawOptions.dir),\n template,\n provider: (rawOptions.provider ?? 'demo') as Provider,\n tools: rawOptions.tools\n ? (rawOptions.tools.split(',').map((t: string) => t.trim()) as ToolKind[])\n : [],\n memory: (rawOptions.memory ?? 'none') as MemoryKind,\n packageManager: (rawOptions.pm ?? 'pnpm') as PackageManager,\n }\n } else {\n const result = await runInteractiveInit({\n dir: rawOptions.dir,\n template: rawOptions.template as StarterKind | undefined,\n })\n if (result.cancelled) {\n process.exit(0)\n }\n resolved = result.options\n }\n\n await writeStarterProject(resolved)\n\n if (isCi) {\n process.stdout.write(\n `Created ${resolved.template} starter in ${path.relative(process.cwd(), resolved.targetDir) || '.'}\\n`,\n )\n } else {\n printNextSteps(resolved)\n }\n })\n\n program\n .command('doctor')\n .description('Diagnose your AgentsKit environment.')\n .option('--no-network', 'Skip provider reachability checks')\n .option(\n '--providers <providers>',\n 'Comma-separated providers to check (default: openai,anthropic,gemini,ollama)',\n )\n .option('--json', 'Emit JSON instead of formatted output')\n .action(async (options) => {\n const providers = options.providers\n ? options.providers.split(',').map((p: string) => p.trim()).filter(Boolean)\n : undefined\n\n const report = await runDoctor({\n providers,\n noNetwork: options.network === false,\n })\n\n if (options.json) {\n process.stdout.write(JSON.stringify(report, null, 2) + '\\n')\n } else {\n process.stdout.write(renderReport(report, { color: process.stdout.isTTY }))\n }\n\n // Non-zero exit when any check failed — useful for CI scripts.\n if (report.fail > 0) process.exit(1)\n })\n\n program\n .command('dev [entry]')\n .description('Run an entry file with hot-reload on file changes.')\n .option('--watch <globs>', 'Comma-separated glob patterns to watch')\n .option('--ignore <globs>', 'Comma-separated glob patterns to ignore')\n .option('--debounce <ms>', 'Debounce window before restart', '200')\n .action(async (positional: string | undefined, options) => {\n const entry = positional ?? 'src/index.ts'\n const watch = options.watch\n ? (options.watch as string).split(',').map(s => s.trim()).filter(Boolean)\n : undefined\n const ignore = options.ignore\n ? (options.ignore as string).split(',').map(s => s.trim()).filter(Boolean)\n : undefined\n\n try {\n const controller = startDev({\n entry,\n watch,\n ignore,\n debounceMs: Number(options.debounce) || 200,\n })\n await controller.done\n } catch (err) {\n process.stderr.write(`Error: ${(err as Error).message}\\n`)\n process.exit(1)\n }\n })\n\n program\n .command('tunnel <port>')\n .description('Open a public URL pointing to a local port (great for webhooks).')\n .option('--subdomain <name>', 'Hint for a stable subdomain (provider may decline)')\n .option('--host <host>', 'Local hostname', 'localhost')\n .action(async (port: string, options) => {\n const portNum = Number(port)\n if (Number.isNaN(portNum) || portNum < 1 || portNum > 65535) {\n process.stderr.write(`Error: invalid port: ${port}\\n`)\n process.exit(2)\n }\n try {\n const controller = await startTunnel({\n port: portNum,\n subdomain: options.subdomain,\n host: options.host,\n })\n await controller.done\n } catch (err) {\n process.stderr.write(`Error: ${(err as Error).message}\\n`)\n process.exit(1)\n }\n })\n\n return program\n}\n"]}
1
+ {"version":3,"sources":["../src/config.ts","../src/providers.ts","../src/resolve.ts","../src/chat.tsx","../src/init.ts","../src/init-interactive.ts","../src/run.ts","../src/run-ui.tsx","../src/doctor.ts","../src/dev.ts","../src/tunnel.ts","../src/commands.ts"],"names":["path","readFile","join","resolve","openai","anthropic","gemini","ollama","deepseek","grok","kimi","researcher","coder","planner","critic","summarizer","tools","webSearch","filesystem","shell","composeSkills","sqliteChatMemory","fileChatMemory","useMemo","useChat","jsxs","Box","jsx","StatusHeader","ChatContainer","Text","Message","ToolCallView","ThinkingIndicator","InputBar","mkdir","writeFile","kleur","input","existsSync","select","checkbox","confirm","runtime","createRuntime","useState","useEffect","providers","pathResolve","spawn","chokidar","basename","Command","render","React"],"mappings":"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","file":"index.cjs","sourcesContent":["import { readFile } from 'node:fs/promises'\nimport { resolve, join } from 'node:path'\n\nexport interface AgentsKitConfig {\n tools?: {\n filesystem?: { basePath?: string }\n shell?: { allowed?: string[]; timeout?: number; maxOutput?: number }\n webSearch?: { provider?: string; maxResults?: number }\n }\n defaults?: {\n provider?: string\n model?: string\n }\n runtime?: {\n maxSteps?: number\n maxDelegationDepth?: number\n }\n observability?: {\n console?: boolean | { format?: 'human' | 'json' }\n langsmith?: { projectName?: string }\n }\n}\n\nasync function loadJsonConfig(path: string): Promise<AgentsKitConfig | undefined> {\n try {\n const raw = await readFile(path, 'utf8')\n return JSON.parse(raw) as AgentsKitConfig\n } catch {\n return undefined\n }\n}\n\nasync function loadTsConfig(path: string): Promise<AgentsKitConfig | undefined> {\n try {\n const mod = await import(path)\n return (mod.default ?? mod) as AgentsKitConfig\n } catch {\n return undefined\n }\n}\n\nasync function loadPackageJsonConfig(dir: string): Promise<AgentsKitConfig | undefined> {\n try {\n const raw = await readFile(join(dir, 'package.json'), 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.agentskit && typeof pkg.agentskit === 'object') {\n return pkg.agentskit as AgentsKitConfig\n }\n return undefined\n } catch {\n return undefined\n }\n}\n\nexport interface LoadConfigOptions {\n cwd?: string\n}\n\n/**\n * Load an AgentsKit config file. Node-only — uses fs/promises.\n *\n * Tries in order:\n * 1. `.agentskit.config.ts` (imported as a module)\n * 2. `.agentskit.config.json`\n * 3. `\"agentskit\"` field in `package.json`\n *\n * Returns `undefined` if none found.\n */\nexport async function loadConfig(options?: LoadConfigOptions): Promise<AgentsKitConfig | undefined> {\n const cwd = resolve(options?.cwd ?? process.cwd())\n\n const tsPath = join(cwd, '.agentskit.config.ts')\n const tsConfig = await loadTsConfig(tsPath)\n if (tsConfig) return tsConfig\n\n const jsonPath = join(cwd, '.agentskit.config.json')\n const jsonConfig = await loadJsonConfig(jsonPath)\n if (jsonConfig) return jsonConfig\n\n return await loadPackageJsonConfig(cwd)\n}\n","import {\n anthropic,\n deepseek,\n gemini,\n grok,\n kimi,\n ollama,\n openai,\n} from '@agentskit/adapters'\nimport type { AdapterFactory } from '@agentskit/core'\n\nexport interface ChatProviderOptions {\n provider: string\n model?: string\n apiKey?: string\n baseUrl?: string\n}\n\nexport interface ResolvedChatProvider {\n adapter: AdapterFactory\n provider: string\n model?: string\n mode: 'demo' | 'live'\n summary: string\n}\n\ninterface ProviderEntry {\n label: string\n envKeys: string[]\n defaultModel?: string\n requiresModel?: boolean\n factory: (config: { apiKey: string; model: string; baseUrl?: string }) => AdapterFactory\n}\n\nconst providers: Record<string, ProviderEntry> = {\n openai: {\n label: 'OpenAI',\n envKeys: ['OPENAI_API_KEY'],\n defaultModel: 'gpt-4o-mini',\n factory: (c) => openai(c),\n },\n anthropic: {\n label: 'Anthropic',\n envKeys: ['ANTHROPIC_API_KEY'],\n defaultModel: 'claude-3-5-sonnet-latest',\n factory: (c) => anthropic(c),\n },\n gemini: {\n label: 'Gemini',\n envKeys: ['GEMINI_API_KEY'],\n defaultModel: 'gemini-2.5-flash',\n factory: (c) => gemini(c),\n },\n ollama: {\n label: 'Ollama',\n envKeys: [],\n defaultModel: 'llama3.1',\n factory: (c) => ollama({ model: c.model, baseUrl: c.baseUrl }),\n },\n deepseek: {\n label: 'DeepSeek',\n envKeys: ['DEEPSEEK_API_KEY'],\n defaultModel: 'deepseek-chat',\n factory: (c) => deepseek(c),\n },\n grok: {\n label: 'xAI Grok',\n envKeys: ['XAI_API_KEY'],\n requiresModel: true,\n factory: (c) => grok(c),\n },\n kimi: {\n label: 'Kimi',\n envKeys: ['KIMI_API_KEY', 'MOONSHOT_API_KEY'],\n requiresModel: true,\n factory: (c) => kimi(c),\n },\n}\n\nfunction createDemoAdapter(provider: string, model?: string): AdapterFactory {\n return {\n createSource: ({ messages }) => {\n let cancelled = false\n\n return {\n stream: async function* () {\n const userMessages = messages.filter(message => message.role === 'user')\n const lastMessage = userMessages[userMessages.length - 1]\n const reply = [\n `Provider: ${provider}${model ? ` (${model})` : ''}.`,\n 'This is the AgentsKit CLI demo adapter.',\n `You said: ${lastMessage?.content ?? ''}`,\n ].join(' ')\n\n for (const chunk of reply.match(/.{1,18}/g) ?? []) {\n if (cancelled) return\n await new Promise(resolve => setTimeout(resolve, 35))\n yield { type: 'text' as const, content: chunk }\n }\n\n yield { type: 'done' as const }\n },\n abort: () => {\n cancelled = true\n },\n }\n },\n }\n}\n\nexport function resolveChatProvider(options: ChatProviderOptions): ResolvedChatProvider {\n const name = options.provider.toLowerCase()\n\n if (name === 'demo') {\n return {\n adapter: createDemoAdapter(name, options.model),\n provider: name,\n model: options.model,\n mode: 'demo',\n summary: 'demo adapter (no network, no API key required)',\n }\n }\n\n const entry = providers[name]\n if (!entry) {\n const supported = ['demo', ...Object.keys(providers)].join(', ')\n throw new Error(`Unsupported provider \"${options.provider}\". Try ${supported}.`)\n }\n\n // Resolve API key: try explicit flag first, then each envKey in order\n let apiKey = options.apiKey\n if (!apiKey) {\n for (const key of entry.envKeys) {\n apiKey = process.env[key]\n if (apiKey) break\n }\n }\n if (!apiKey && entry.envKeys.length > 0) {\n const keyList = entry.envKeys.join(' or ')\n throw new Error(`${entry.label} requires an API key. Pass --api-key or set ${keyList}.`)\n }\n\n // Resolve model\n const model = options.model ?? entry.defaultModel\n if (!model) {\n throw new Error(`${entry.label} requires --model in the current CLI version.`)\n }\n\n return {\n adapter: entry.factory({ apiKey: apiKey ?? '', model, baseUrl: options.baseUrl }),\n provider: name,\n model,\n mode: 'live',\n summary: `${entry.label} live adapter`,\n }\n}\n","import type { ChatMemory, SkillDefinition, ToolDefinition } from '@agentskit/core'\nimport { webSearch, filesystem, shell } from '@agentskit/tools'\nimport { researcher, coder, planner, critic, summarizer, composeSkills } from '@agentskit/skills'\nimport { fileChatMemory, sqliteChatMemory } from '@agentskit/memory'\n\nexport const skillRegistry: Record<string, SkillDefinition> = {\n researcher,\n coder,\n planner,\n critic,\n summarizer,\n}\n\nexport function resolveTools(toolNames: string | undefined): ToolDefinition[] {\n if (!toolNames) return []\n const tools: ToolDefinition[] = []\n for (const name of toolNames.split(',').map(s => s.trim())) {\n switch (name) {\n case 'web_search':\n tools.push(webSearch())\n break\n case 'filesystem':\n tools.push(...filesystem({ basePath: process.cwd() }))\n break\n case 'shell':\n tools.push(shell({ timeout: 30_000 }))\n break\n default:\n process.stderr.write(`Unknown tool: ${name}\\n`)\n }\n }\n return tools\n}\n\nexport function resolveSkill(skillName: string | undefined): SkillDefinition | undefined {\n if (!skillName) return undefined\n const skill = skillRegistry[skillName.trim()]\n if (!skill) {\n process.stderr.write(`Unknown skill: ${skillName}\\n`)\n return undefined\n }\n return skill\n}\n\nexport function resolveSkills(skillNames: string | undefined): SkillDefinition | undefined {\n if (!skillNames) return undefined\n const names = skillNames.split(',').map(s => s.trim())\n const resolved = names.map(n => skillRegistry[n]).filter(Boolean)\n if (resolved.length === 0) {\n process.stderr.write(`No valid skills found in: ${skillNames}\\n`)\n return undefined\n }\n if (resolved.length === 1) return resolved[0]\n return composeSkills(...resolved)\n}\n\nexport function resolveMemory(backend: string | undefined, memoryPath: string): ChatMemory {\n switch (backend) {\n case 'sqlite':\n return sqliteChatMemory({ path: memoryPath.replace(/\\.json$/, '.db') })\n case 'file':\n default:\n return fileChatMemory(memoryPath)\n }\n}\n","import React, { useMemo } from 'react'\nimport { Box, Text } from 'ink'\nimport {\n ChatContainer,\n InputBar,\n Message,\n StatusHeader,\n ThinkingIndicator,\n ToolCallView,\n useChat,\n} from '@agentskit/ink'\nimport type { Message as ChatMessage, ToolCall } from '@agentskit/core'\nimport { resolveChatProvider } from './providers'\nimport { resolveTools, resolveMemory, skillRegistry } from './resolve'\n\nimport type { AgentsKitConfig } from './config'\n\nexport interface ChatCommandOptions {\n provider: string\n model?: string\n system?: string\n memoryPath?: string\n apiKey?: string\n baseUrl?: string\n tools?: string\n skill?: string\n memoryBackend?: string\n agentsKitConfig?: AgentsKitConfig\n}\n\n/**\n * Group messages into user turns. A \"turn\" starts at a user message and\n * contains every assistant/tool message that followed until the next user\n * input. Each assistant message inside a turn is one agent-loop iteration,\n * so we can render a `step i/n` badge.\n */\nfunction groupIntoTurns(messages: ChatMessage[]): ChatMessage[][] {\n const turns: ChatMessage[][] = []\n let current: ChatMessage[] = []\n for (const message of messages) {\n if (message.role === 'user') {\n if (current.length > 0) turns.push(current)\n current = [message]\n } else if (message.role === 'system') {\n // System messages live outside turns for display purposes.\n if (current.length > 0) turns.push(current)\n turns.push([message])\n current = []\n } else {\n current.push(message)\n }\n }\n if (current.length > 0) turns.push(current)\n return turns\n}\n\nexport function ChatApp(options: ChatCommandOptions) {\n const runtime = useMemo(() => resolveChatProvider(options), [\n options.apiKey,\n options.baseUrl,\n options.model,\n options.provider,\n ])\n\n const memory = useMemo(\n () => resolveMemory(options.memoryBackend, options.memoryPath ?? '.agentskit-history.json'),\n [options.memoryPath, options.memoryBackend]\n )\n const tools = useMemo(() => resolveTools(options.tools), [options.tools])\n const skills = useMemo(() => {\n if (!options.skill) return undefined\n const names = options.skill.split(',').map(s => s.trim())\n const resolved = names.map(n => skillRegistry[n]).filter(Boolean)\n if (resolved.length === 0) return undefined\n return resolved\n }, [options.skill])\n\n const chat = useChat({\n adapter: runtime.adapter,\n memory,\n systemPrompt: options.system,\n tools: tools.length > 0 ? tools : undefined,\n skills,\n })\n\n const turns = useMemo(() => groupIntoTurns(chat.messages), [chat.messages])\n const toolNames = options.tools ? options.tools.split(',').map(s => s.trim()).filter(Boolean) : []\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <StatusHeader\n provider={runtime.provider}\n model={runtime.model}\n mode={runtime.mode}\n tools={toolNames}\n messageCount={chat.messages.length}\n />\n\n <ChatContainer>\n {turns.map((turn, turnIdx) => {\n const assistantSteps = turn.filter(m => m.role === 'assistant').length\n let stepIndex = 0\n return (\n <Box key={`turn-${turnIdx}`} flexDirection=\"column\" gap={1}>\n {turn.map(message => {\n const showStep = message.role === 'assistant' && assistantSteps > 1\n if (showStep) stepIndex++\n return (\n <Box key={message.id} flexDirection=\"column\">\n {showStep ? (\n <Text dimColor>↻ step {stepIndex}/{assistantSteps}</Text>\n ) : null}\n <Message message={message} />\n {message.toolCalls?.map((toolCall: ToolCall) => (\n <ToolCallView key={toolCall.id} toolCall={toolCall} expanded />\n ))}\n </Box>\n )\n })}\n </Box>\n )\n })}\n </ChatContainer>\n\n <ThinkingIndicator\n visible={chat.status === 'streaming'}\n label={toolNames.length > 0 ? 'agent working' : 'thinking'}\n />\n\n <InputBar chat={chat} placeholder=\"Type a message and press Enter…\" />\n </Box>\n )\n}\n\nexport function renderChatHeader(options: ChatCommandOptions): string {\n const runtime = resolveChatProvider(options)\n const parts = [`provider=${runtime.provider}`]\n if (runtime.model) parts.push(`model=${runtime.model}`)\n parts.push(`mode=${runtime.mode}`)\n if (options.tools) parts.push(`tools=${options.tools}`)\n if (options.skill) parts.push(`skill=${options.skill}`)\n if (options.memoryBackend) parts.push(`memory=${options.memoryBackend}`)\n return parts.join(' ')\n}\n","import { mkdir, writeFile } from 'node:fs/promises'\nimport path from 'node:path'\n\nexport type StarterKind = 'react' | 'ink' | 'runtime' | 'multi-agent'\nexport type Provider = 'openai' | 'anthropic' | 'gemini' | 'ollama' | 'demo'\nexport type ToolKind = 'web_search' | 'filesystem' | 'shell'\nexport type MemoryKind = 'none' | 'file' | 'sqlite'\nexport type PackageManager = 'pnpm' | 'npm' | 'yarn' | 'bun'\n\nexport interface InitCommandOptions {\n targetDir: string\n template: StarterKind\n provider?: Provider\n tools?: ToolKind[]\n memory?: MemoryKind\n packageManager?: PackageManager\n}\n\ninterface RenderContext {\n template: StarterKind\n provider: Provider\n tools: ToolKind[]\n memory: MemoryKind\n pm: PackageManager\n}\n\nconst PROVIDER_IMPORT: Record<Exclude<Provider, 'demo'>, string> = {\n openai: 'openai',\n anthropic: 'anthropic',\n gemini: 'gemini',\n ollama: 'ollama',\n}\n\nconst PROVIDER_DEFAULT_MODEL: Record<Provider, string> = {\n openai: 'gpt-4o-mini',\n anthropic: 'claude-sonnet-4-6',\n gemini: 'gemini-2.5-flash',\n ollama: 'llama3.1',\n demo: 'demo',\n}\n\nconst PROVIDER_ENV_KEY: Record<Provider, string | null> = {\n openai: 'OPENAI_API_KEY',\n anthropic: 'ANTHROPIC_API_KEY',\n gemini: 'GEMINI_API_KEY',\n ollama: null,\n demo: null,\n}\n\nfunction adapterCall(provider: Provider, prefix = 'process.env'): string {\n const model = PROVIDER_DEFAULT_MODEL[provider]\n if (provider === 'demo') return `demoAdapter()`\n if (provider === 'ollama') return `ollama({ model: '${model}' })`\n const envKey = PROVIDER_ENV_KEY[provider]!\n return `${PROVIDER_IMPORT[provider]}({ apiKey: ${prefix}.${envKey} ?? '', model: '${model}' })`\n}\n\nfunction viteAdapterCall(provider: Provider): string {\n if (provider === 'demo') return `demoAdapter()`\n if (provider === 'ollama') return `ollama({ model: '${PROVIDER_DEFAULT_MODEL[provider]}' })`\n const envKey = PROVIDER_ENV_KEY[provider]!\n return `${PROVIDER_IMPORT[provider]}({ apiKey: import.meta.env.VITE_${envKey} ?? '', model: '${PROVIDER_DEFAULT_MODEL[provider]}' })`\n}\n\nfunction adapterImport(provider: Provider): string {\n if (provider === 'demo') return ''\n return `import { ${PROVIDER_IMPORT[provider]} } from '@agentskit/adapters'\\n`\n}\n\nfunction toolImports(tools: ToolKind[]): string {\n if (tools.length === 0) return ''\n return `import { ${tools.map(t => t === 'web_search' ? 'webSearch' : t).join(', ')} } from '@agentskit/tools'\\n`\n}\n\nfunction toolList(tools: ToolKind[]): string {\n if (tools.length === 0) return '[]'\n const calls = tools.map(t => {\n if (t === 'web_search') return 'webSearch()'\n if (t === 'filesystem') return `...filesystem({ basePath: './workspace' })`\n if (t === 'shell') return `shell({ allowedCommands: ['ls', 'cat'] })`\n return ''\n })\n return `[${calls.join(', ')}]`\n}\n\nfunction memoryImport(memory: MemoryKind): string {\n if (memory === 'file') return `import { fileChatMemory } from '@agentskit/memory'\\n`\n if (memory === 'sqlite') return `import { sqliteChatMemory } from '@agentskit/memory'\\n`\n return ''\n}\n\nfunction memoryCall(memory: MemoryKind): string {\n if (memory === 'file') return `fileChatMemory('./.agentskit-history.json')`\n if (memory === 'sqlite') return `sqliteChatMemory({ path: './.agentskit-history.db' })`\n return 'undefined'\n}\n\nfunction demoAdapterSnippet(): string {\n return `function demoAdapter() {\n return {\n createSource: () => ({\n stream: async function* () {\n yield { type: 'text' as const, content: 'Hello from your AgentsKit starter. ' }\n yield { type: 'text' as const, content: 'Configure a real adapter to talk to a model.' }\n yield { type: 'done' as const }\n },\n abort: () => {},\n }),\n }\n}\\n\\n`\n}\n\n// ============================================================================\n// Templates\n// ============================================================================\n\nfunction reactStarter(ctx: RenderContext): Record<string, string> {\n const deps: Record<string, string> = {\n '@agentskit/react': '^0.4.0',\n react: '^19.0.0',\n 'react-dom': '^19.0.0',\n }\n if (ctx.provider !== 'demo') deps['@agentskit/adapters'] = '^0.4.0'\n if (ctx.tools.length > 0) deps['@agentskit/tools'] = '^0.4.0'\n if (ctx.memory !== 'none') deps['@agentskit/memory'] = '^0.4.0'\n\n const includesDemo = ctx.provider === 'demo'\n const adapter = ctx.provider === 'demo' ? viteAdapterCall(ctx.provider) : viteAdapterCall(ctx.provider)\n const envKey = PROVIDER_ENV_KEY[ctx.provider]\n const envContent = envKey ? `VITE_${envKey}=\\n` : '# No API key required for the local provider\\n'\n\n return {\n 'package.json': JSON.stringify(\n {\n name: path.basename(ctx.template === 'react' ? 'agentskit-react-app' : 'agentskit-app'),\n private: true,\n type: 'module',\n scripts: {\n dev: 'vite',\n build: 'vite build',\n preview: 'vite preview',\n },\n dependencies: deps,\n devDependencies: {\n '@types/react': '^19.0.0',\n '@types/react-dom': '^19.0.0',\n '@vitejs/plugin-react': '^5.0.0',\n typescript: '^5.5.0',\n vite: '^7.0.0',\n },\n },\n null,\n 2,\n ) + '\\n',\n\n 'index.html': `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>AgentsKit React Starter</title>\n </head>\n <body>\n <div id=\"root\"></div>\n <script type=\"module\" src=\"/src/main.tsx\"></script>\n </body>\n</html>\n`,\n\n 'vite.config.ts': `import { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\n\nexport default defineConfig({ plugins: [react()] })\n`,\n\n 'tsconfig.json': JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n lib: ['ES2022', 'DOM'],\n module: 'ESNext',\n moduleResolution: 'bundler',\n jsx: 'react-jsx',\n strict: true,\n noEmit: true,\n skipLibCheck: true,\n },\n include: ['src'],\n },\n null,\n 2,\n ) + '\\n',\n\n 'src/main.tsx': `import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport App from './App'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n)\n`,\n\n 'src/App.tsx': `import { ChatContainer, InputBar, Message, useChat } from '@agentskit/react'\n${adapterImport(ctx.provider)}${toolImports(ctx.tools)}${memoryImport(ctx.memory)}import '@agentskit/react/theme'\n\n${includesDemo ? demoAdapterSnippet() : ''}export default function App() {\n const chat = useChat({\n adapter: ${adapter},${ctx.tools.length > 0 ? `\\n tools: ${toolList(ctx.tools)},` : ''}${ctx.memory !== 'none' ? `\\n memory: ${memoryCall(ctx.memory)},` : ''}\n })\n\n return (\n <ChatContainer>\n {chat.messages.map(message => (\n <Message key={message.id} message={message} />\n ))}\n <InputBar chat={chat} />\n </ChatContainer>\n )\n}\n`,\n\n '.env.example': envContent,\n\n '.gitignore': `node_modules\ndist\n.env\n.env.local\n.agentskit-history.*\n`,\n\n 'README.md': readmeFor(ctx),\n }\n}\n\nfunction inkStarter(ctx: RenderContext): Record<string, string> {\n const deps: Record<string, string> = {\n '@agentskit/ink': '^0.4.0',\n ink: '^7.0.0',\n react: '^19.0.0',\n }\n if (ctx.provider !== 'demo') deps['@agentskit/adapters'] = '^0.4.0'\n if (ctx.tools.length > 0) deps['@agentskit/tools'] = '^0.4.0'\n if (ctx.memory !== 'none') deps['@agentskit/memory'] = '^0.4.0'\n\n return {\n 'package.json': JSON.stringify(\n {\n name: 'agentskit-ink-app',\n private: true,\n type: 'module',\n scripts: {\n dev: 'tsx src/index.tsx',\n start: 'tsx src/index.tsx',\n },\n dependencies: deps,\n devDependencies: {\n '@types/react': '^19.0.0',\n '@types/react-dom': '^19.0.0',\n tsx: '^4.20.0',\n typescript: '^5.5.0',\n },\n },\n null,\n 2,\n ) + '\\n',\n\n 'tsconfig.json': JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'ESNext',\n moduleResolution: 'bundler',\n jsx: 'react-jsx',\n strict: true,\n noEmit: true,\n skipLibCheck: true,\n },\n include: ['src'],\n },\n null,\n 2,\n ) + '\\n',\n\n 'src/index.tsx': `import React from 'react'\nimport { render } from 'ink'\nimport { ChatContainer, InputBar, Message, useChat } from '@agentskit/ink'\n${adapterImport(ctx.provider)}${toolImports(ctx.tools)}${memoryImport(ctx.memory)}\n${ctx.provider === 'demo' ? demoAdapterSnippet() : ''}function App() {\n const chat = useChat({\n adapter: ${adapterCall(ctx.provider)},${ctx.tools.length > 0 ? `\\n tools: ${toolList(ctx.tools)},` : ''}${ctx.memory !== 'none' ? `\\n memory: ${memoryCall(ctx.memory)},` : ''}\n })\n\n return (\n <ChatContainer>\n {chat.messages.map(message => (\n <Message key={message.id} message={message} />\n ))}\n <InputBar chat={chat} />\n </ChatContainer>\n )\n}\n\nrender(<App />)\n`,\n\n '.env.example': PROVIDER_ENV_KEY[ctx.provider]\n ? `${PROVIDER_ENV_KEY[ctx.provider]}=\\n`\n : '# No API key required for the local provider\\n',\n\n '.gitignore': `node_modules\n.env\n.env.local\n.agentskit-history.*\n`,\n\n 'README.md': readmeFor(ctx),\n }\n}\n\nfunction runtimeStarter(ctx: RenderContext): Record<string, string> {\n const deps: Record<string, string> = {\n '@agentskit/runtime': '^0.4.0',\n }\n if (ctx.provider !== 'demo') deps['@agentskit/adapters'] = '^0.4.0'\n if (ctx.tools.length > 0) deps['@agentskit/tools'] = '^0.4.0'\n if (ctx.memory !== 'none') deps['@agentskit/memory'] = '^0.4.0'\n\n return {\n 'package.json': JSON.stringify(\n {\n name: 'agentskit-runtime-app',\n private: true,\n type: 'module',\n scripts: {\n start: 'tsx src/index.ts',\n dev: 'tsx src/index.ts',\n },\n dependencies: deps,\n devDependencies: {\n tsx: '^4.20.0',\n typescript: '^5.5.0',\n },\n },\n null,\n 2,\n ) + '\\n',\n\n 'tsconfig.json': JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'ESNext',\n moduleResolution: 'bundler',\n strict: true,\n noEmit: true,\n skipLibCheck: true,\n },\n include: ['src'],\n },\n null,\n 2,\n ) + '\\n',\n\n 'src/index.ts': `import { createRuntime } from '@agentskit/runtime'\n${adapterImport(ctx.provider)}${toolImports(ctx.tools)}${memoryImport(ctx.memory)}\n${ctx.provider === 'demo' ? demoAdapterSnippet() : ''}const runtime = createRuntime({\n adapter: ${adapterCall(ctx.provider)},${ctx.tools.length > 0 ? `\\n tools: ${toolList(ctx.tools)},` : ''}${ctx.memory !== 'none' ? `\\n memory: ${memoryCall(ctx.memory)},` : ''}\n maxSteps: 10,\n})\n\nconst task = process.argv.slice(2).join(' ') || 'Say hello and tell me one fact about TypeScript.'\nconst result = await runtime.run(task)\n\nconsole.log(result.content)\nconsole.log(\\`\\\\n— \\${result.steps} steps · \\${result.toolCalls.length} tool calls · \\${result.durationMs}ms\\`)\n`,\n\n '.env.example': PROVIDER_ENV_KEY[ctx.provider]\n ? `${PROVIDER_ENV_KEY[ctx.provider]}=\\n`\n : '# No API key required for the local provider\\n',\n\n '.gitignore': `node_modules\n.env\n.env.local\n.agentskit-history.*\n`,\n\n 'README.md': readmeFor(ctx),\n }\n}\n\nfunction multiAgentStarter(ctx: RenderContext): Record<string, string> {\n const deps: Record<string, string> = {\n '@agentskit/runtime': '^0.4.0',\n '@agentskit/skills': '^0.4.0',\n }\n if (ctx.provider !== 'demo') deps['@agentskit/adapters'] = '^0.4.0'\n if (ctx.tools.length === 0) ctx.tools = ['web_search']\n deps['@agentskit/tools'] = '^0.4.0'\n\n return {\n 'package.json': JSON.stringify(\n {\n name: 'agentskit-multi-agent',\n private: true,\n type: 'module',\n scripts: {\n start: 'tsx src/index.ts',\n dev: 'tsx src/index.ts',\n },\n dependencies: deps,\n devDependencies: {\n tsx: '^4.20.0',\n typescript: '^5.5.0',\n },\n },\n null,\n 2,\n ) + '\\n',\n\n 'tsconfig.json': JSON.stringify(\n {\n compilerOptions: {\n target: 'ES2022',\n module: 'ESNext',\n moduleResolution: 'bundler',\n strict: true,\n noEmit: true,\n skipLibCheck: true,\n },\n include: ['src'],\n },\n null,\n 2,\n ) + '\\n',\n\n 'src/index.ts': `import { createRuntime } from '@agentskit/runtime'\nimport { planner, researcher } from '@agentskit/skills'\n${adapterImport(ctx.provider)}${toolImports(ctx.tools)}\n${ctx.provider === 'demo' ? demoAdapterSnippet() : ''}const runtime = createRuntime({\n adapter: ${adapterCall(ctx.provider)},\n maxSteps: 10,\n maxDelegationDepth: 2,\n})\n\nconst task = process.argv.slice(2).join(' ') || 'Research the current state of WebGPU and summarize.'\n\nconst result = await runtime.run(task, {\n skill: planner,\n delegates: {\n researcher: {\n skill: researcher,\n tools: ${toolList(ctx.tools)},\n maxSteps: 5,\n },\n },\n})\n\nconsole.log(result.content)\nconsole.log(\\`\\\\n— \\${result.steps} steps · \\${result.toolCalls.length} tool calls\\`)\n`,\n\n '.env.example': PROVIDER_ENV_KEY[ctx.provider]\n ? `${PROVIDER_ENV_KEY[ctx.provider]}=\\n`\n : '# No API key required for the local provider\\n',\n\n '.gitignore': `node_modules\n.env\n.env.local\n`,\n\n 'README.md': readmeFor(ctx),\n }\n}\n\nfunction readmeFor(ctx: RenderContext): string {\n const installCmd = ctx.pm === 'npm' ? 'npm install' : `${ctx.pm} install`\n const runCmd = ctx.pm === 'npm' ? 'npm run dev' : `${ctx.pm} dev`\n const envKey = PROVIDER_ENV_KEY[ctx.provider]\n\n return `# AgentsKit ${ctx.template} starter\n\nGenerated by \\`agentskit init\\`.\n\n## Stack\n\n- **Template**: \\`${ctx.template}\\`\n- **Provider**: \\`${ctx.provider}\\`${ctx.tools.length ? `\\n- **Tools**: ${ctx.tools.map(t => `\\`${t}\\``).join(', ')}` : ''}${ctx.memory !== 'none' ? `\\n- **Memory**: \\`${ctx.memory}\\`` : ''}\n\n## Run\n\n\\`\\`\\`bash\n${installCmd}\n${envKey ? `cp .env.example .env\\n# add ${envKey}=...` : '# No API key required'}\n${runCmd}\n\\`\\`\\`\n\n## Next steps\n\n- Open the AgentsKit docs at https://www.agentskit.io/docs\n- Add a custom skill: https://www.agentskit.io/docs/concepts/skill\n- Wire up RAG: https://www.agentskit.io/docs/recipes/rag-chat\n\n## License\n\nISC\n`\n}\n\n// ============================================================================\n// Main\n// ============================================================================\n\nconst TEMPLATE_FN: Record<StarterKind, (ctx: RenderContext) => Record<string, string>> = {\n react: reactStarter,\n ink: inkStarter,\n runtime: runtimeStarter,\n 'multi-agent': multiAgentStarter,\n}\n\nexport async function writeStarterProject(options: InitCommandOptions): Promise<void> {\n const ctx: RenderContext = {\n template: options.template,\n provider: options.provider ?? 'demo',\n tools: options.tools ?? [],\n memory: options.memory ?? 'none',\n pm: options.packageManager ?? 'pnpm',\n }\n\n const files = TEMPLATE_FN[ctx.template](ctx)\n await mkdir(options.targetDir, { recursive: true })\n\n await Promise.all(\n Object.entries(files).map(async ([relativePath, content]) => {\n const absolutePath = path.join(options.targetDir, relativePath)\n await mkdir(path.dirname(absolutePath), { recursive: true })\n await writeFile(absolutePath, content, 'utf8')\n }),\n )\n}\n","import { input, select, checkbox, confirm } from '@inquirer/prompts'\nimport kleur from 'kleur'\nimport path from 'node:path'\nimport { existsSync } from 'node:fs'\nimport type {\n InitCommandOptions,\n StarterKind,\n Provider,\n ToolKind,\n MemoryKind,\n PackageManager,\n} from './init'\n\ninterface InteractiveResult {\n options: InitCommandOptions\n cancelled: boolean\n}\n\n/**\n * Run the interactive init flow. Returns the resolved InitCommandOptions\n * to feed into writeStarterProject. If the user cancels (Ctrl+C), returns\n * { cancelled: true }.\n */\nexport async function runInteractiveInit(\n defaults: { dir?: string; template?: StarterKind } = {},\n): Promise<InteractiveResult> {\n process.stdout.write(`\\n${kleur.bold().green('▲')} ${kleur.bold('agentskit init')}\\n`)\n process.stdout.write(kleur.dim(' Generate a starter project — answer five questions.\\n\\n'))\n\n try {\n const targetDir = await input({\n message: 'Project directory:',\n default: defaults.dir ?? 'agentskit-app',\n validate: (value) => {\n if (!value.trim()) return 'A directory name is required.'\n const abs = path.resolve(process.cwd(), value)\n if (existsSync(abs)) return `${value} already exists. Pick a different name.`\n return true\n },\n })\n\n const template = (await select<StarterKind>({\n message: 'Template:',\n default: defaults.template ?? 'react',\n choices: [\n { name: 'React chat (Vite + browser)', value: 'react', description: 'Streaming UI with @agentskit/react' },\n { name: 'Ink chat (terminal UI)', value: 'ink', description: 'Same chat but in your terminal' },\n { name: 'Runtime (headless agent, no UI)', value: 'runtime', description: 'Autonomous task → result' },\n { name: 'Multi-agent (planner + delegates)', value: 'multi-agent', description: 'Supervisor pattern, ready to extend' },\n ],\n })) as StarterKind\n\n const provider = (await select<Provider>({\n message: 'LLM provider:',\n default: 'demo',\n choices: [\n { name: 'Demo (no API key — deterministic stub)', value: 'demo' },\n { name: 'OpenAI', value: 'openai' },\n { name: 'Anthropic', value: 'anthropic' },\n { name: 'Gemini', value: 'gemini' },\n { name: 'Ollama (local, no key)', value: 'ollama' },\n ],\n })) as Provider\n\n let tools: ToolKind[] = []\n if (template !== 'react') {\n // React template focuses on chat; tools are most useful in runtime / multi-agent / ink\n tools = (await checkbox<ToolKind>({\n message: 'Tools (space to toggle, enter to confirm):',\n choices: [\n { name: 'web_search', value: 'web_search' },\n { name: 'filesystem', value: 'filesystem' },\n { name: 'shell', value: 'shell' },\n ],\n })) as ToolKind[]\n }\n\n const memory = (await select<MemoryKind>({\n message: 'Memory backend:',\n default: 'none',\n choices: [\n { name: 'None (stateless)', value: 'none' },\n { name: 'File (JSON on disk)', value: 'file' },\n { name: 'SQLite (better-sqlite3)', value: 'sqlite' },\n ],\n })) as MemoryKind\n\n const packageManager = (await select<PackageManager>({\n message: 'Package manager:',\n default: 'pnpm',\n choices: [\n { name: 'pnpm', value: 'pnpm' },\n { name: 'npm', value: 'npm' },\n { name: 'yarn', value: 'yarn' },\n { name: 'bun', value: 'bun' },\n ],\n })) as PackageManager\n\n process.stdout.write('\\n' + kleur.dim(' Summary:\\n'))\n process.stdout.write(kleur.dim(` dir ${targetDir}\\n`))\n process.stdout.write(kleur.dim(` template ${template}\\n`))\n process.stdout.write(kleur.dim(` provider ${provider}\\n`))\n if (tools.length) process.stdout.write(kleur.dim(` tools ${tools.join(', ')}\\n`))\n process.stdout.write(kleur.dim(` memory ${memory}\\n`))\n process.stdout.write(kleur.dim(` pm ${packageManager}\\n\\n`))\n\n const proceed = await confirm({ message: 'Generate?', default: true })\n if (!proceed) {\n process.stdout.write(kleur.yellow('Cancelled.\\n'))\n return { cancelled: true, options: { targetDir, template, provider, tools, memory, packageManager } }\n }\n\n return {\n cancelled: false,\n options: {\n targetDir: path.resolve(process.cwd(), targetDir),\n template,\n provider,\n tools,\n memory,\n packageManager,\n },\n }\n } catch (err) {\n // ExitPromptError thrown on Ctrl+C\n if ((err as Error).name === 'ExitPromptError') {\n process.stdout.write(kleur.yellow('\\nCancelled.\\n'))\n return { cancelled: true, options: { targetDir: '', template: 'react' } }\n }\n throw err\n }\n}\n\nexport function printNextSteps(options: InitCommandOptions): void {\n const dir = path.relative(process.cwd(), options.targetDir) || '.'\n const pm = options.packageManager ?? 'pnpm'\n const installCmd = pm === 'npm' ? 'npm install' : `${pm} install`\n const runCmd = pm === 'npm' ? 'npm run dev' : `${pm} dev`\n\n process.stdout.write('\\n' + kleur.green('✓ Created starter at ') + kleur.bold(dir) + '\\n\\n')\n process.stdout.write(kleur.bold('Next steps:\\n\\n'))\n process.stdout.write(` ${kleur.cyan('cd')} ${dir}\\n`)\n process.stdout.write(` ${kleur.cyan(installCmd)}\\n`)\n if (options.provider && options.provider !== 'demo' && options.provider !== 'ollama') {\n process.stdout.write(\n ` ${kleur.cyan('cp')} .env.example .env ${kleur.dim('# add your API key')}\\n`,\n )\n }\n process.stdout.write(` ${kleur.cyan(runCmd)}\\n\\n`)\n process.stdout.write(kleur.dim(' Docs: https://www.agentskit.io/docs\\n\\n'))\n}\n","import { createRuntime } from '@agentskit/runtime'\nimport type { AgentEvent, Observer } from '@agentskit/core'\nimport { resolveChatProvider } from './providers'\nimport { resolveTools, resolveSkill, resolveSkills, resolveMemory } from './resolve'\n\nexport interface RunCommandOptions {\n provider: string\n model?: string\n apiKey?: string\n baseUrl?: string\n task?: string\n skill?: string\n skills?: string\n tools?: string\n memory?: string\n memoryBackend?: string\n systemPrompt?: string\n maxSteps?: string\n verbose?: boolean\n pretty?: boolean\n}\n\nfunction formatEvent(event: AgentEvent): string {\n switch (event.type) {\n case 'agent:step':\n return `[step ${event.step}] ${event.action}`\n case 'llm:start':\n return `[llm] start (${event.messageCount} messages)`\n case 'llm:end': {\n const preview = event.content.length > 100 ? event.content.slice(0, 100) + '...' : event.content\n return `[llm] done (${event.durationMs}ms) \"${preview}\"`\n }\n case 'tool:start':\n return `[tool] ${event.name} ${JSON.stringify(event.args)}`\n case 'tool:end':\n return `[tool] ${event.name} done (${event.durationMs}ms)`\n case 'error':\n return `[error] ${event.error.message}`\n default:\n return `[${event.type}]`\n }\n}\n\nexport async function runAgent(task: string, options: RunCommandOptions): Promise<void> {\n if (options.skill && options.skills) {\n process.stderr.write('Error: --skill and --skills are mutually exclusive. Use one or the other.\\n')\n process.exit(1)\n }\n\n const { adapter } = resolveChatProvider({\n provider: options.provider,\n model: options.model,\n apiKey: options.apiKey,\n baseUrl: options.baseUrl,\n })\n\n const tools = resolveTools(options.tools)\n const skill = options.skills\n ? resolveSkills(options.skills)\n : resolveSkill(options.skill)\n const memory = options.memory\n ? resolveMemory(options.memoryBackend, options.memory)\n : undefined\n\n const observers: Observer[] = []\n if (options.verbose) {\n observers.push({\n name: 'cli-verbose',\n on(event: AgentEvent) {\n process.stderr.write(formatEvent(event) + '\\n')\n },\n })\n }\n\n const runtime = createRuntime({\n adapter,\n tools,\n memory,\n systemPrompt: options.systemPrompt,\n maxSteps: options.maxSteps ? parseInt(options.maxSteps, 10) : undefined,\n observers,\n })\n\n const result = await runtime.run(task, {\n skill: skill ?? undefined,\n })\n\n process.stdout.write(result.content + '\\n')\n}\n","import React, { useEffect, useState } from 'react'\nimport { Box, Text } from 'ink'\nimport { createRuntime } from '@agentskit/runtime'\nimport type { AgentEvent, Observer } from '@agentskit/core'\nimport { resolveChatProvider } from './providers'\nimport { resolveTools, resolveSkill, resolveSkills, resolveMemory } from './resolve'\nimport type { RunCommandOptions } from './run'\n\ninterface ToolCallInfo {\n name: string\n status: 'running' | 'done' | 'error'\n durationMs?: number\n}\n\nexport function RunApp({ task, options }: { task: string; options: RunCommandOptions }) {\n const [status, setStatus] = useState<'running' | 'done' | 'error'>('running')\n const [currentStep, setCurrentStep] = useState(0)\n const [toolCalls, setToolCalls] = useState<ToolCallInfo[]>([])\n const [result, setResult] = useState('')\n const [error, setError] = useState('')\n const [durationMs, setDurationMs] = useState(0)\n\n useEffect(() => {\n async function execute() {\n if (options.skill && options.skills) {\n setError('--skill and --skills are mutually exclusive.')\n setStatus('error')\n return\n }\n\n const { adapter } = resolveChatProvider({\n provider: options.provider,\n model: options.model,\n apiKey: options.apiKey,\n baseUrl: options.baseUrl,\n })\n\n const tools = resolveTools(options.tools)\n const skill = options.skills\n ? resolveSkills(options.skills)\n : resolveSkill(options.skill)\n const memory = options.memory\n ? resolveMemory(options.memoryBackend, options.memory)\n : undefined\n\n const observers: Observer[] = [{\n name: 'run-ui',\n on(event: AgentEvent) {\n switch (event.type) {\n case 'agent:step':\n setCurrentStep(event.step)\n break\n case 'tool:start':\n setToolCalls(prev => [...prev, { name: event.name, status: 'running' }])\n break\n case 'tool:end':\n setToolCalls(prev => prev.map(tc =>\n tc.name === event.name && tc.status === 'running'\n ? { ...tc, status: 'done', durationMs: event.durationMs }\n : tc\n ))\n break\n case 'error':\n setToolCalls(prev => prev.map(tc =>\n tc.status === 'running' ? { ...tc, status: 'error' } : tc\n ))\n break\n }\n },\n }]\n\n const runtime = createRuntime({\n adapter,\n tools,\n memory,\n systemPrompt: options.systemPrompt,\n maxSteps: options.maxSteps ? parseInt(options.maxSteps, 10) : undefined,\n observers,\n })\n\n try {\n const runResult = await runtime.run(task, { skill: skill ?? undefined })\n setResult(runResult.content)\n setDurationMs(runResult.durationMs)\n setStatus('done')\n } catch (err) {\n setError(err instanceof Error ? err.message : String(err))\n setStatus('error')\n }\n }\n\n void execute()\n }, [])\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Text bold color=\"cyan\">agentskit run</Text>\n <Text dimColor>Task: {task}</Text>\n\n {status === 'running' && currentStep > 0 && (\n <Text color=\"yellow\">{'⟳'} Step {currentStep}</Text>\n )}\n\n {toolCalls.map((tc, i) => (\n <Box key={i} marginLeft={2}>\n <Text color={tc.status === 'running' ? 'yellow' : tc.status === 'done' ? 'green' : 'red'}>\n {tc.status === 'running' ? '⟳' : tc.status === 'done' ? '✓' : '✗'}{' '}\n {tc.name}\n {tc.durationMs !== undefined ? ` (${tc.durationMs}ms)` : ''}\n </Text>\n </Box>\n ))}\n\n {status === 'running' && (\n <Text color=\"yellow\">Running...</Text>\n )}\n\n {status === 'done' && (\n <Box flexDirection=\"column\">\n <Text color=\"green\" bold>Done ({durationMs}ms)</Text>\n <Text>{result}</Text>\n </Box>\n )}\n\n {status === 'error' && (\n <Text color=\"red\" bold>Error: {error}</Text>\n )}\n </Box>\n )\n}\n","import { readFile } from 'node:fs/promises'\nimport { join } from 'node:path'\nimport { existsSync } from 'node:fs'\nimport { loadConfig } from './config'\n\nexport type CheckStatus = 'pass' | 'warn' | 'fail' | 'skip'\n\nexport interface CheckResult {\n status: CheckStatus\n name: string\n detail?: string\n fix?: string\n}\n\nexport interface DoctorReport {\n results: CheckResult[]\n pass: number\n warn: number\n fail: number\n skip: number\n}\n\nconst PROVIDER_ENV_KEYS: Record<string, string> = {\n openai: 'OPENAI_API_KEY',\n anthropic: 'ANTHROPIC_API_KEY',\n gemini: 'GEMINI_API_KEY',\n deepseek: 'DEEPSEEK_API_KEY',\n grok: 'XAI_API_KEY',\n kimi: 'KIMI_API_KEY',\n}\n\nconst PROVIDER_REACH_URLS: Record<string, string> = {\n openai: 'https://api.openai.com/v1/models',\n anthropic: 'https://api.anthropic.com/v1/messages',\n gemini: 'https://generativelanguage.googleapis.com/v1beta/models',\n ollama: 'http://localhost:11434/api/tags',\n}\n\n// ============================================================================\n// Individual checks\n// ============================================================================\n\nexport async function checkNodeVersion(): Promise<CheckResult> {\n const major = Number(process.versions.node.split('.')[0])\n if (Number.isNaN(major)) {\n return { status: 'fail', name: 'Node version', detail: 'Could not parse process.versions.node' }\n }\n if (major < 22) {\n return {\n status: 'fail',\n name: 'Node version',\n detail: `Node ${process.versions.node} (need 22+)`,\n fix: 'Install Node 22 LTS or newer (https://nodejs.org)',\n }\n }\n if (major === 25) {\n return {\n status: 'warn',\n name: 'Node version',\n detail: `Node ${process.versions.node} — Docusaurus apps may break here`,\n fix: 'Use Node 22 LTS for the legacy docs app, or stay on 25 for everything else',\n }\n }\n return { status: 'pass', name: 'Node version', detail: `Node ${process.versions.node}` }\n}\n\nexport async function checkPnpm(): Promise<CheckResult> {\n // We can't run binaries directly, but we can detect the lockfile signal\n const cwd = process.cwd()\n const hasPnpm = existsSync(join(cwd, 'pnpm-lock.yaml')) || existsSync(join(cwd, 'pnpm-workspace.yaml'))\n if (hasPnpm) {\n return { status: 'pass', name: 'Package manager', detail: 'pnpm detected (lockfile)' }\n }\n if (existsSync(join(cwd, 'package-lock.json'))) {\n return { status: 'warn', name: 'Package manager', detail: 'npm detected — pnpm recommended for monorepo workflows' }\n }\n if (existsSync(join(cwd, 'yarn.lock'))) {\n return { status: 'pass', name: 'Package manager', detail: 'yarn detected' }\n }\n if (existsSync(join(cwd, 'bun.lock')) || existsSync(join(cwd, 'bun.lockb'))) {\n return { status: 'pass', name: 'Package manager', detail: 'bun detected' }\n }\n return {\n status: 'skip',\n name: 'Package manager',\n detail: 'No lockfile found in cwd',\n }\n}\n\nexport async function checkPackageJson(): Promise<CheckResult> {\n const path = join(process.cwd(), 'package.json')\n if (!existsSync(path)) {\n return {\n status: 'warn',\n name: 'package.json',\n detail: 'No package.json in cwd',\n fix: 'Run from a project directory (or use `agentskit init` to create one)',\n }\n }\n try {\n const pkg = JSON.parse(await readFile(path, 'utf8')) as Record<string, unknown>\n const deps = {\n ...((pkg.dependencies as Record<string, string>) ?? {}),\n ...((pkg.devDependencies as Record<string, string>) ?? {}),\n }\n const akDeps = Object.entries(deps).filter(([name]) => name.startsWith('@agentskit/'))\n if (akDeps.length === 0) {\n return { status: 'skip', name: 'AgentsKit packages', detail: 'No @agentskit/* deps found in package.json' }\n }\n return {\n status: 'pass',\n name: 'AgentsKit packages',\n detail: `${akDeps.length} installed: ${akDeps.map(([n]) => n.replace('@agentskit/', '')).join(', ')}`,\n }\n } catch (err) {\n return {\n status: 'fail',\n name: 'package.json',\n detail: `Could not parse: ${(err as Error).message}`,\n }\n }\n}\n\nexport async function checkProviderEnv(provider: string): Promise<CheckResult> {\n const envKey = PROVIDER_ENV_KEYS[provider]\n if (!envKey) {\n return { status: 'skip', name: `${provider} API key`, detail: 'No env-key requirement for this provider' }\n }\n const value = process.env[envKey]\n if (!value) {\n return {\n status: 'skip',\n name: `${provider} API key`,\n detail: `${envKey} not set`,\n fix: `export ${envKey}=... (only needed if you use ${provider})`,\n }\n }\n if (value.length < 16) {\n return {\n status: 'warn',\n name: `${provider} API key`,\n detail: `${envKey} looks too short (${value.length} chars)`,\n fix: 'Verify the key is complete and not truncated',\n }\n }\n return { status: 'pass', name: `${provider} API key`, detail: `${envKey} set (${value.length} chars)` }\n}\n\nexport async function checkProviderReachable(\n provider: string,\n fetchImpl: typeof fetch = fetch,\n timeoutMs = 4000,\n): Promise<CheckResult> {\n const url = PROVIDER_REACH_URLS[provider]\n if (!url) {\n return { status: 'skip', name: `${provider} reachable`, detail: 'No reachability check configured' }\n }\n\n // Skip reachability if no API key is set for keyed providers\n const envKey = PROVIDER_ENV_KEYS[provider]\n if (envKey && !process.env[envKey]) {\n return { status: 'skip', name: `${provider} reachable`, detail: 'Skipped — no API key configured' }\n }\n\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), timeoutMs)\n try {\n const res = await fetchImpl(url, {\n method: 'GET',\n signal: controller.signal,\n })\n // 200-299 = healthy; 401/403 = reachable but auth issue (still pass);\n // 404+ = reachable but endpoint may have changed (warn)\n if (res.status >= 200 && res.status < 400) {\n return { status: 'pass', name: `${provider} reachable`, detail: `${url} → ${res.status} OK` }\n }\n if (res.status === 401 || res.status === 403 || res.status === 405) {\n return { status: 'pass', name: `${provider} reachable`, detail: `${url} → ${res.status} (host reachable)` }\n }\n return {\n status: 'warn',\n name: `${provider} reachable`,\n detail: `${url} → HTTP ${res.status}`,\n fix: 'Host reachable but returned unexpected status — check provider docs',\n }\n } catch (err) {\n const reason = (err as Error).name === 'AbortError' ? `timeout after ${timeoutMs}ms` : (err as Error).message\n return {\n status: 'fail',\n name: `${provider} reachable`,\n detail: `${url} → ${reason}`,\n fix:\n provider === 'ollama'\n ? 'Start Ollama: `ollama serve` (or install from https://ollama.com)'\n : 'Check network / firewall / VPN settings',\n }\n } finally {\n clearTimeout(timer)\n }\n}\n\nexport async function checkConfig(): Promise<CheckResult> {\n try {\n const config = await loadConfig()\n if (!config) {\n return { status: 'skip', name: 'AgentsKit config', detail: 'No .agentskit.config or package.json#agentskit found' }\n }\n return {\n status: 'pass',\n name: 'AgentsKit config',\n detail: `loaded — defaults: ${JSON.stringify(config.defaults ?? {})}`,\n }\n } catch (err) {\n return {\n status: 'warn',\n name: 'AgentsKit config',\n detail: `Could not load: ${(err as Error).message}`,\n }\n }\n}\n\n// ============================================================================\n// Orchestration\n// ============================================================================\n\nexport interface DoctorOptions {\n /** Provider names to check. Defaults to all known providers. */\n providers?: string[]\n /** Skip the network reachability checks. */\n noNetwork?: boolean\n /** Custom fetch (for tests). */\n fetchImpl?: typeof fetch\n}\n\nexport async function runDoctor(options: DoctorOptions = {}): Promise<DoctorReport> {\n const providers = options.providers ?? ['openai', 'anthropic', 'gemini', 'ollama']\n const fetchImpl = options.fetchImpl ?? fetch\n\n const checks: Array<Promise<CheckResult>> = [\n checkNodeVersion(),\n checkPnpm(),\n checkPackageJson(),\n checkConfig(),\n ]\n\n for (const provider of providers) {\n checks.push(checkProviderEnv(provider))\n if (!options.noNetwork) {\n checks.push(checkProviderReachable(provider, fetchImpl))\n }\n }\n\n const results = await Promise.all(checks)\n\n return {\n results,\n pass: results.filter(r => r.status === 'pass').length,\n warn: results.filter(r => r.status === 'warn').length,\n fail: results.filter(r => r.status === 'fail').length,\n skip: results.filter(r => r.status === 'skip').length,\n }\n}\n\n// ============================================================================\n// Renderer (TTY-friendly)\n// ============================================================================\n\nconst ICON: Record<CheckStatus, string> = {\n pass: '✔',\n warn: '⚠',\n fail: '✘',\n skip: '○',\n}\n\nexport function renderReport(report: DoctorReport, opts: { color?: boolean } = {}): string {\n const color = opts.color ?? true\n const c = (code: string, text: string) => (color ? `\\x1b[${code}m${text}\\x1b[0m` : text)\n const colorFor: Record<CheckStatus, (t: string) => string> = {\n pass: t => c('32', t), // green\n warn: t => c('33', t), // yellow\n fail: t => c('31', t), // red\n skip: t => c('90', t), // dim\n }\n\n const lines: string[] = []\n\n // Header\n lines.push('')\n lines.push(` ${c('1;36', '⚡ AgentsKit Doctor')}`)\n lines.push(` ${c('90', '─'.repeat(50))}`)\n lines.push('')\n\n // Group results by category\n const groups: Record<string, CheckResult[]> = {\n 'Environment': [],\n 'Providers': [],\n 'Network': [],\n }\n for (const r of report.results) {\n if (r.name.includes('reachable')) {\n groups['Network'].push(r)\n } else if (r.name.includes('API key')) {\n groups['Providers'].push(r)\n } else {\n groups['Environment'].push(r)\n }\n }\n\n for (const [group, results] of Object.entries(groups)) {\n if (results.length === 0) continue\n lines.push(` ${c('1', group)}`)\n for (const r of results) {\n const icon = colorFor[r.status](ICON[r.status])\n const name = r.name.padEnd(28)\n const detail = r.detail ? c('90', r.detail) : ''\n lines.push(` ${icon} ${name} ${detail}`)\n if (r.fix && r.status !== 'pass') {\n lines.push(` ${c('90', '↳ ' + r.fix)}`)\n }\n }\n lines.push('')\n }\n\n // Summary bar\n lines.push(` ${c('90', '─'.repeat(50))}`)\n const parts: string[] = []\n if (report.pass > 0) parts.push(colorFor.pass(`${report.pass} passed`))\n if (report.warn > 0) parts.push(colorFor.warn(`${report.warn} warnings`))\n if (report.fail > 0) parts.push(colorFor.fail(`${report.fail} failed`))\n if (report.skip > 0) parts.push(colorFor.skip(`${report.skip} skipped`))\n lines.push(` ${parts.join(' · ')}`)\n\n // Verdict\n if (report.fail === 0) {\n lines.push(` ${c('32', '✔ Ready to build agents.')}`)\n } else {\n lines.push(` ${c('31', '✘ Fix the issues above before continuing.')}`)\n }\n lines.push('')\n return lines.join('\\n')\n}\n","import { spawn, type ChildProcess } from 'node:child_process'\nimport { resolve as pathResolve, basename } from 'node:path'\nimport { existsSync } from 'node:fs'\nimport chokidar from 'chokidar'\nimport kleur from 'kleur'\n\nexport interface DevOptions {\n /** Entry file to run (relative or absolute). */\n entry: string\n /** Globs to watch for changes. Defaults to common project files. */\n watch?: string[]\n /** Globs to ignore. */\n ignore?: string[]\n /** Args to pass through to the entry script. */\n scriptArgs?: string[]\n /** Debounce ms before restart after a change. */\n debounceMs?: number\n /**\n * Spawner override for tests. Defaults to spawning `tsx` (or `node` for\n * .js entries) as a child process.\n */\n spawn?: (cmd: string, args: string[]) => ChildProcess\n /** Watch override for tests. Defaults to chokidar. */\n watcher?: (paths: string[], opts: { ignored?: string[] }) => DevWatcher\n /** Stdout sink for tests. */\n stdout?: NodeJS.WritableStream\n /** Stderr sink for tests. */\n stderr?: NodeJS.WritableStream\n}\n\nexport interface DevWatcher {\n on(event: 'change' | 'add' | 'unlink', listener: (path: string) => void): this\n close(): Promise<void>\n}\n\nconst DEFAULT_WATCH = [\n '**/*.ts',\n '**/*.tsx',\n '**/*.mjs',\n '**/*.json',\n '.agentskit.config.*',\n]\n\nconst DEFAULT_IGNORE = [\n '**/node_modules/**',\n '**/dist/**',\n '**/build/**',\n '**/.next/**',\n '**/.turbo/**',\n '**/.git/**',\n '**/coverage/**',\n '**/*.test.ts',\n '**/*.spec.ts',\n]\n\n/**\n * Run an entry file via tsx, restart it on relevant file changes.\n * Resolves when stop() is called or the watcher closes.\n *\n * Returns a controller so callers (and tests) can stop the loop and\n * inspect activity counters.\n */\nexport interface DevController {\n /** Promise that resolves when the dev session ends. */\n done: Promise<void>\n /** Stop the dev loop and clean up. */\n stop: () => Promise<void>\n /** Number of times the entry has been (re)started. */\n restarts: () => number\n}\n\nexport function startDev(options: DevOptions): DevController {\n const entry = pathResolve(process.cwd(), options.entry)\n if (!existsSync(entry)) {\n throw new Error(`Entry file not found: ${entry}`)\n }\n\n const stdout = options.stdout ?? process.stdout\n const stderr = options.stderr ?? process.stderr\n const debounceMs = options.debounceMs ?? 200\n\n const isTs = entry.endsWith('.ts') || entry.endsWith('.tsx')\n const cmd = isTs ? 'tsx' : 'node'\n const baseArgs = [entry, ...(options.scriptArgs ?? [])]\n\n const spawnFn =\n options.spawn ??\n ((c: string, a: string[]) =>\n spawn(c, a, {\n stdio: ['inherit', 'pipe', 'pipe'],\n env: { ...process.env, FORCE_COLOR: '1' },\n }))\n\n const watchPaths = options.watch ?? DEFAULT_WATCH\n const ignorePaths = [...DEFAULT_IGNORE, ...(options.ignore ?? [])]\n const watcherFactory =\n options.watcher ??\n ((paths, opts) => chokidar.watch(paths, { ignored: opts.ignored, ignoreInitial: true }) as unknown as DevWatcher)\n\n const watcher = watcherFactory(watchPaths, { ignored: ignorePaths })\n\n let child: ChildProcess | undefined\n let restartCount = 0\n let restartTimer: NodeJS.Timeout | undefined\n let stopped = false\n let resolveDone: () => void\n const done = new Promise<void>(r => { resolveDone = r })\n\n const banner = (msg: string, color: 'green' | 'yellow' | 'red' | 'cyan' = 'green') => {\n const time = new Date().toTimeString().slice(0, 8)\n stdout.write(kleur[color](`[agentskit dev ${time}] `) + msg + '\\n')\n }\n\n const startChild = () => {\n restartCount++\n banner(`▸ starting ${kleur.bold(basename(entry))} (restart #${restartCount - 1})`, 'cyan')\n\n const c = spawnFn(cmd, baseArgs)\n child = c\n c.stdout?.on('data', (d: Buffer) => stdout.write(d))\n c.stderr?.on('data', (d: Buffer) => stderr.write(d))\n c.on('exit', (code, signal) => {\n if (stopped) return\n if (signal === 'SIGTERM' || signal === 'SIGINT') return\n if (code === 0) {\n banner(`✓ exited cleanly — waiting for changes`, 'green')\n } else {\n banner(`✗ exited with code ${code} — waiting for changes`, 'red')\n }\n })\n }\n\n const restart = (path: string) => {\n if (restartTimer) clearTimeout(restartTimer)\n restartTimer = setTimeout(() => {\n restartTimer = undefined\n banner(`↻ change detected — ${path}`, 'yellow')\n if (child && !child.killed && child.exitCode === null) {\n child.kill('SIGTERM')\n }\n // Brief pause so the SIGTERM is delivered before we spawn again.\n setTimeout(startChild, 80)\n }, debounceMs)\n }\n\n watcher.on('change', restart)\n watcher.on('add', restart)\n watcher.on('unlink', restart)\n\n startChild()\n\n const stop = async () => {\n if (stopped) return\n stopped = true\n if (restartTimer) clearTimeout(restartTimer)\n if (child && !child.killed && child.exitCode === null) {\n child.kill('SIGTERM')\n }\n await watcher.close()\n banner(`stopped`, 'cyan')\n resolveDone()\n }\n\n // Keyboard handling: 'r' = restart now, 'q' / Ctrl+C = stop\n if (process.stdin.isTTY && process.stdin.setRawMode) {\n process.stdin.setRawMode(true)\n process.stdin.resume()\n process.stdin.on('data', (data: Buffer) => {\n const key = data.toString()\n if (key === 'r') restart('manual')\n if (key === 'q' || key === '\\u0003') void stop()\n })\n }\n\n return {\n done,\n stop,\n restarts: () => restartCount,\n }\n}\n","import kleur from 'kleur'\n\nexport interface TunnelOptions {\n /** Local port to expose. Required. */\n port: number\n /** Optional subdomain hint (best-effort — provider may decline). */\n subdomain?: string\n /** Local hostname (default: 'localhost'). */\n host?: string\n /** Tunnel factory override for tests. Defaults to `localtunnel`. */\n open?: (opts: { port: number; subdomain?: string; local_host?: string }) => Promise<TunnelLike>\n /** Stdout/stderr sinks for tests. */\n stdout?: NodeJS.WritableStream\n /** Called once the tunnel URL is known. */\n onReady?: (url: string) => void\n}\n\nexport interface TunnelLike {\n url: string\n on(event: 'request' | 'error' | 'close', listener: (...args: unknown[]) => void): unknown\n close(): void\n}\n\nexport interface TunnelController {\n /** The public URL once ready. */\n url: string\n /** Resolves when the tunnel closes (or stop() is called). */\n done: Promise<void>\n /** Stop the tunnel and resolve done. */\n stop: () => Promise<void>\n /** Number of requests proxied so far. */\n requests: () => number\n}\n\n/**\n * Open a public tunnel to a local port.\n *\n * Uses `localtunnel` by default — no account required, free, URL is\n * something like `https://word-word-12345.loca.lt`. First-time visitors\n * may see a `loca.lt` interstitial click-through; that's a known\n * provider quirk, not an AgentsKit issue.\n */\nexport async function startTunnel(options: TunnelOptions): Promise<TunnelController> {\n const stdout = options.stdout ?? process.stdout\n const open =\n options.open ??\n (async (opts) => {\n const lt = (await import('localtunnel')).default\n return (await lt(opts)) as TunnelLike\n })\n\n const banner = (msg: string, color: 'green' | 'yellow' | 'red' | 'cyan' = 'green') => {\n const time = new Date().toTimeString().slice(0, 8)\n stdout.write(kleur[color](`[agentskit tunnel ${time}] `) + msg + '\\n')\n }\n\n banner(`opening tunnel to ${options.host ?? 'localhost'}:${options.port}...`, 'cyan')\n\n const tunnel = await open({\n port: options.port,\n subdomain: options.subdomain,\n local_host: options.host,\n })\n\n let requests = 0\n let stopped = false\n let resolveDone: () => void\n const done = new Promise<void>(r => { resolveDone = r })\n\n tunnel.on('request', () => {\n requests++\n })\n\n tunnel.on('close', () => {\n if (stopped) return\n banner(`tunnel closed by remote`, 'yellow')\n resolveDone()\n })\n\n tunnel.on('error', (...args: unknown[]) => {\n const err = args[0] as Error | undefined\n banner(`error: ${err?.message ?? 'unknown'}`, 'red')\n })\n\n banner(`✓ ready`, 'green')\n stdout.write('\\n')\n stdout.write(` ${kleur.bold('Public URL:')} ${kleur.cyan(tunnel.url)}\\n`)\n stdout.write(` ${kleur.bold('Local:')} http://${options.host ?? 'localhost'}:${options.port}\\n`)\n stdout.write('\\n')\n stdout.write(kleur.dim(` Forward webhooks here, then ${kleur.bold('Ctrl+C')} to stop.\\n\\n`))\n\n options.onReady?.(tunnel.url)\n\n const stop = async () => {\n if (stopped) return\n stopped = true\n tunnel.close()\n banner(`stopped — proxied ${requests} request${requests === 1 ? '' : 's'}`, 'cyan')\n resolveDone()\n }\n\n // Hook Ctrl+C — but only if we're attached to a TTY (don't break tests)\n if (process.stdin.isTTY) {\n process.on('SIGINT', () => {\n void stop()\n })\n }\n\n return {\n url: tunnel.url,\n done,\n stop,\n requests: () => requests,\n }\n}\n","import React from 'react'\nimport { render } from 'ink'\nimport { Command } from 'commander'\nimport path from 'node:path'\nimport { loadConfig } from './config'\nimport type { AgentsKitConfig } from './config'\nimport { ChatApp, renderChatHeader } from './chat'\nimport { writeStarterProject } from './init'\nimport type { StarterKind, Provider, ToolKind, MemoryKind, PackageManager } from './init'\nimport { runInteractiveInit, printNextSteps } from './init-interactive'\nimport { runAgent } from './run'\nimport { RunApp } from './run-ui'\nimport { runDoctor, renderReport } from './doctor'\nimport { startDev } from './dev'\nimport { startTunnel } from './tunnel'\n\nfunction mergeWithConfig(options: Record<string, unknown>, config: AgentsKitConfig | undefined): Record<string, unknown> {\n if (!config) return options\n return {\n ...options,\n // Config defaults — only apply if CLI flag wasn't set\n provider: options.provider !== 'demo' ? options.provider : (config.defaults?.provider ?? options.provider),\n model: options.model ?? config.defaults?.model,\n }\n}\n\nexport function createCli() {\n const program = new Command()\n\n program\n .name('agentskit')\n .description('AgentsKit CLI for chat demos and project bootstrapping.')\n\n program\n .command('chat')\n .description('Start a terminal chat session.')\n .option('--provider <provider>', 'Provider to use', 'demo')\n .option('--model <model>', 'Model name')\n .option('--api-key <key>', 'API key for the selected provider')\n .option('--base-url <url>', 'Override provider base URL')\n .option('--system <prompt>', 'System prompt')\n .option('--memory <path>', 'Path for file-based memory', '.agentskit-history.json')\n .option('--tools <tools>', 'Comma-separated tools: web_search,filesystem,shell')\n .option('--skill <skills>', 'Comma-separated skills: researcher,coder,planner,critic,summarizer')\n .option('--memory-backend <backend>', 'Memory backend: file (default), sqlite')\n .option('--no-config', 'Skip loading .agentskit.config.json')\n .action(async (options) => {\n const config = options.config !== false ? await loadConfig() : undefined\n const merged = mergeWithConfig(options, config)\n\n const chatOptions = {\n apiKey: (merged.apiKey ?? options.apiKey) as string | undefined,\n baseUrl: (merged.baseUrl ?? options.baseUrl) as string | undefined,\n provider: merged.provider as string,\n model: merged.model as string | undefined,\n system: options.system as string | undefined,\n memoryPath: options.memory as string | undefined,\n tools: options.tools as string | undefined,\n skill: options.skill as string | undefined,\n memoryBackend: options.memoryBackend as string | undefined,\n agentsKitConfig: config,\n }\n process.stdout.write(`${renderChatHeader(chatOptions)}\\n`)\n render(React.createElement(ChatApp, chatOptions))\n })\n\n program\n .command('run [task]')\n .description('Execute an agent task and output the result.')\n .option('--task <task>', 'Task string (alternative to positional argument)')\n .option('--provider <provider>', 'Provider to use', 'demo')\n .option('--model <model>', 'Model name')\n .option('--api-key <key>', 'API key for the selected provider')\n .option('--base-url <url>', 'Override provider base URL')\n .option('--skill <skill>', 'Single skill to use')\n .option('--skills <skills>', 'Comma-separated skills (composed together)')\n .option('--tools <tools>', 'Comma-separated tools: web_search,filesystem,shell')\n .option('--memory <path>', 'Path for memory persistence')\n .option('--memory-backend <backend>', 'Memory backend: file (default), sqlite')\n .option('--system-prompt <prompt>', 'System prompt')\n .option('--max-steps <steps>', 'Maximum agent steps', '10')\n .option('--verbose', 'Stream agent steps to stderr')\n .option('--pretty', 'Use rich Ink-based output')\n .option('--no-config', 'Skip loading .agentskit.config.json')\n .action(async (positionalTask: string | undefined, options) => {\n const task = options.task ?? positionalTask\n if (!task) {\n process.stderr.write('Error: task is required. Pass as argument or use --task.\\n')\n process.exit(1)\n }\n\n const config = options.config !== false ? await loadConfig() : undefined\n const merged = mergeWithConfig(options, config)\n\n if (options.pretty) {\n render(React.createElement(RunApp, { task, options }))\n } else {\n try {\n await runAgent(task, { ...options, provider: merged.provider, model: merged.model })\n } catch (err) {\n process.stderr.write(`Error: ${err instanceof Error ? err.message : String(err)}\\n`)\n process.exit(1)\n }\n }\n })\n\n program\n .command('init')\n .description('Generate a starter project. Run with no flags for interactive mode.')\n .option('--template <template>', 'Starter template (react|ink|runtime|multi-agent)')\n .option('--dir <directory>', 'Target directory', 'agentskit-app')\n .option('--provider <provider>', 'LLM provider (openai|anthropic|gemini|ollama|demo)')\n .option('--tools <tools>', 'Comma-separated tools (web_search,filesystem,shell)')\n .option('--memory <backend>', 'Memory backend (none|file|sqlite)')\n .option('--pm <packageManager>', 'Package manager (pnpm|npm|yarn|bun)')\n .option('-y, --yes', 'Skip interactive prompts; use flag values + defaults')\n .action(async (rawOptions) => {\n const isCi = !process.stdout.isTTY || rawOptions.yes || rawOptions.template\n let resolved: Parameters<typeof writeStarterProject>[0]\n\n if (isCi) {\n const template = (rawOptions.template ?? 'react') as StarterKind\n resolved = {\n targetDir: path.resolve(process.cwd(), rawOptions.dir),\n template,\n provider: (rawOptions.provider ?? 'demo') as Provider,\n tools: rawOptions.tools\n ? (rawOptions.tools.split(',').map((t: string) => t.trim()) as ToolKind[])\n : [],\n memory: (rawOptions.memory ?? 'none') as MemoryKind,\n packageManager: (rawOptions.pm ?? 'pnpm') as PackageManager,\n }\n } else {\n const result = await runInteractiveInit({\n dir: rawOptions.dir,\n template: rawOptions.template as StarterKind | undefined,\n })\n if (result.cancelled) {\n process.exit(0)\n }\n resolved = result.options\n }\n\n await writeStarterProject(resolved)\n\n if (isCi) {\n process.stdout.write(\n `Created ${resolved.template} starter in ${path.relative(process.cwd(), resolved.targetDir) || '.'}\\n`,\n )\n } else {\n printNextSteps(resolved)\n }\n })\n\n program\n .command('doctor')\n .description('Diagnose your AgentsKit environment.')\n .option('--no-network', 'Skip provider reachability checks')\n .option(\n '--providers <providers>',\n 'Comma-separated providers to check (default: openai,anthropic,gemini,ollama)',\n )\n .option('--json', 'Emit JSON instead of formatted output')\n .action(async (options) => {\n const providers = options.providers\n ? options.providers.split(',').map((p: string) => p.trim()).filter(Boolean)\n : undefined\n\n const report = await runDoctor({\n providers,\n noNetwork: options.network === false,\n })\n\n if (options.json) {\n process.stdout.write(JSON.stringify(report, null, 2) + '\\n')\n } else {\n process.stdout.write(renderReport(report, { color: process.stdout.isTTY }))\n }\n\n // Non-zero exit when any check failed — useful for CI scripts.\n if (report.fail > 0) process.exit(1)\n })\n\n program\n .command('dev [entry]')\n .description('Run an entry file with hot-reload on file changes.')\n .option('--watch <globs>', 'Comma-separated glob patterns to watch')\n .option('--ignore <globs>', 'Comma-separated glob patterns to ignore')\n .option('--debounce <ms>', 'Debounce window before restart', '200')\n .action(async (positional: string | undefined, options) => {\n const entry = positional ?? 'src/index.ts'\n const watch = options.watch\n ? (options.watch as string).split(',').map(s => s.trim()).filter(Boolean)\n : undefined\n const ignore = options.ignore\n ? (options.ignore as string).split(',').map(s => s.trim()).filter(Boolean)\n : undefined\n\n try {\n const controller = startDev({\n entry,\n watch,\n ignore,\n debounceMs: Number(options.debounce) || 200,\n })\n await controller.done\n } catch (err) {\n process.stderr.write(`Error: ${(err as Error).message}\\n`)\n process.exit(1)\n }\n })\n\n program\n .command('tunnel <port>')\n .description('Open a public URL pointing to a local port (great for webhooks).')\n .option('--subdomain <name>', 'Hint for a stable subdomain (provider may decline)')\n .option('--host <host>', 'Local hostname', 'localhost')\n .action(async (port: string, options) => {\n const portNum = Number(port)\n if (Number.isNaN(portNum) || portNum < 1 || portNum > 65535) {\n process.stderr.write(`Error: invalid port: ${port}\\n`)\n process.exit(2)\n }\n try {\n const controller = await startTunnel({\n port: portNum,\n subdomain: options.subdomain,\n host: options.host,\n })\n await controller.done\n } catch (err) {\n process.stderr.write(`Error: ${(err as Error).message}\\n`)\n process.exit(1)\n }\n })\n\n return program\n}\n"]}