{"version":3,"sources":["../../src/cli/index.ts","../../src/cli/init.ts"],"sourcesContent":["export { init } from \"./init.js\";\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { execSync } from \"node:child_process\";\n\nexport interface InitOptions {\n  projectName?: string;\n  cwd?: string;\n  skipInstall?: boolean;\n}\n\nconst PACKAGE_JSON = JSON.stringify(\n  {\n    name: \"my-agent\",\n    version: \"1.0.0\",\n    type: \"module\",\n    scripts: {\n      start: \"npx tsx src/index.ts\",\n      test: \"npx vitest run\",\n      typecheck: \"tsc --noEmit\",\n    },\n    dependencies: {\n      \"@avasis-ai/synthcode\": \"^1.0.0\",\n      zod: \"^3.24.0\",\n    },\n    devDependencies: {\n      typescript: \"^5.7.0\",\n      tsx: \"^4.19.0\",\n      vitest: \"^2.1.0\",\n    },\n  },\n  null,\n  2,\n);\n\nconst TSCONFIG_JSON = JSON.stringify(\n  {\n    compilerOptions: {\n      target: \"ES2022\",\n      module: \"ESNext\",\n      moduleResolution: \"bundler\",\n      strict: true,\n      esModuleInterop: true,\n      skipLibCheck: true,\n      outDir: \"./dist\",\n      rootDir: \"./src\",\n      declaration: true,\n    },\n    include: [\"src\"],\n  },\n  null,\n  2,\n);\n\nconst ENV_EXAMPLE = `# Pick one provider and set its key:\n# ANTHROPIC_API_KEY=your-key-here\n# OPENAI_API_KEY=your-key-here\n# For Ollama (local, zero API costs): no key needed\n`;\n\nconst INDEX_TS = `import { Agent, BashTool, FileReadTool, FileWriteTool, FileEditTool, GlobTool, GrepTool, WebFetchTool } from \"@avasis-ai/synthcode\";\nimport { defineTool } from \"@avasis-ai/synthcode/tools\";\nimport { z } from \"zod\";\n\nconst agent = new Agent({\n  model: process.env.OLLAMA_MODEL\n    ? await import(\"@avasis-ai/synthcode/llm\").then(m => new m.OllamaProvider({ model: process.env.OLLAMA_MODEL }))\n    : process.env.OPENAI_API_KEY\n      ? await import(\"@avasis-ai/synthcode/llm\").then(m => new m.OpenAIProvider({ apiKey: process.env.OPENAI_API_KEY }))\n      : await import(\"@avasis-ai/synthcode/llm\").then(m => new m.AnthropicProvider({ apiKey: process.env.ANTHROPIC_API_KEY! })),\n  tools: [\n    BashTool,\n    FileReadTool,\n    FileWriteTool,\n    FileEditTool,\n    GlobTool,\n    GrepTool,\n    WebFetchTool,\n  ],\n  systemPrompt: \"You are a helpful AI coding assistant with shell and file access.\",\n});\n\nconst prompt = process.argv[2] || \"Hello! What can I help you with?\";\n\nfor await (const event of agent.run(prompt)) {\n  if (event.type === \"text\") process.stdout.write(event.text);\n  if (event.type === \"tool_use\") console.log(\\`\\\\n  [\\${event.name}]\\`);\n  if (event.type === \"tool_result\") {\n    if (event.isError) console.log(\\`\\\\n  [\\${event.name}] FAILED\\`);\n  }\n  if (event.type === \"thinking\") process.stderr.write(\\`\\\\x1b[90m\\${event.thinking}\\\\x1b[0m\\`);\n  if (event.type === \"done\") console.log(\\`\\\\n\\\\nTokens: \\${event.usage.inputTokens} in, \\${event.usage.outputTokens} out\\`);\n  if (event.type === \"error\") {\n    console.error(\\`\\\\nError: \\${event.error.message}\\`);\n    process.exit(1);\n  }\n}\n`;\n\nexport async function init(opts?: InitOptions): Promise<void> {\n  const name = opts?.projectName ?? \"my-agent\";\n  const cwd = opts?.cwd ?? process.cwd();\n  const dir = path.join(cwd, name);\n\n  fs.mkdirSync(path.join(dir, \"src\", \"tools\"), { recursive: true });\n  fs.mkdirSync(path.join(dir, \"tests\"), { recursive: true });\n\n  fs.writeFileSync(path.join(dir, \"package.json\"), PACKAGE_JSON, \"utf-8\");\n  fs.writeFileSync(path.join(dir, \"tsconfig.json\"), TSCONFIG_JSON, \"utf-8\");\n  fs.writeFileSync(path.join(dir, \".env.example\"), ENV_EXAMPLE, \"utf-8\");\n  fs.writeFileSync(path.join(dir, \"src\", \"index.ts\"), INDEX_TS, \"utf-8\");\n  fs.writeFileSync(path.join(dir, \"tests\", \"agent.test.ts\"), `import { describe, it, expect } from \"vitest\";\\ndescribe(\"Agent\", () => { it(\"should have tools registered\", () => { expect(true).toBe(true); }); });\\n`, \"utf-8\");\n\n  if (!opts?.skipInstall) {\n    console.log(\"Installing dependencies...\");\n    execSync(\"npm install\", { cwd: dir, stdio: \"inherit\" });\n  }\n\n  console.log(`\\n  Created ${name}/`);\n  console.log(`  cd ${name} && npm start \"your prompt here\"\\n`);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,SAAoB;AACpB,WAAsB;AACtB,gCAAyB;AAQzB,IAAM,eAAe,KAAK;AAAA,EACxB;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,IACA,cAAc;AAAA,MACZ,wBAAwB;AAAA,MACxB,KAAK;AAAA,IACP;AAAA,IACA,iBAAiB;AAAA,MACf,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,gBAAgB,KAAK;AAAA,EACzB;AAAA,IACE,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,kBAAkB;AAAA,MAClB,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA,SAAS,CAAC,KAAK;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAMpB,IAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuCjB,eAAsB,KAAK,MAAmC;AAC5D,QAAM,OAAO,MAAM,eAAe;AAClC,QAAM,MAAM,MAAM,OAAO,QAAQ,IAAI;AACrC,QAAM,MAAW,UAAK,KAAK,IAAI;AAE/B,EAAG,aAAe,UAAK,KAAK,OAAO,OAAO,GAAG,EAAE,WAAW,KAAK,CAAC;AAChE,EAAG,aAAe,UAAK,KAAK,OAAO,GAAG,EAAE,WAAW,KAAK,CAAC;AAEzD,EAAG,iBAAmB,UAAK,KAAK,cAAc,GAAG,cAAc,OAAO;AACtE,EAAG,iBAAmB,UAAK,KAAK,eAAe,GAAG,eAAe,OAAO;AACxE,EAAG,iBAAmB,UAAK,KAAK,cAAc,GAAG,aAAa,OAAO;AACrE,EAAG,iBAAmB,UAAK,KAAK,OAAO,UAAU,GAAG,UAAU,OAAO;AACrE,EAAG,iBAAmB,UAAK,KAAK,SAAS,eAAe,GAAG;AAAA;AAAA,GAA2J,OAAO;AAE7N,MAAI,CAAC,MAAM,aAAa;AACtB,YAAQ,IAAI,4BAA4B;AACxC,4CAAS,eAAe,EAAE,KAAK,KAAK,OAAO,UAAU,CAAC;AAAA,EACxD;AAEA,UAAQ,IAAI;AAAA,YAAe,IAAI,GAAG;AAClC,UAAQ,IAAI,QAAQ,IAAI;AAAA,CAAoC;AAC9D;","names":[]}