{"_id":"@avasis-ai/synth","_rev":"10-a81a8ebbe6f5b09c9602a24a39269c17","name":"@avasis-ai/synth","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"@avasis-ai/synth","version":"0.1.0","keywords":["ai","agent","llm","agentic","claude","gpt","tool-use","mcp","context-management","typescript"],"license":"MIT","_id":"@avasis-ai/synth@0.1.0","maintainers":[{"name":"avasis","email":"abhay@avasis.ai"}],"homepage":"https://github.com/avasis-ai/synth#readme","bugs":{"url":"https://github.com/avasis-ai/synth/issues"},"dist":{"shasum":"3c6b8d0caf324ba021a2c1060c506a7399444417","tarball":"https://registry.npmjs.org/@avasis-ai/synth/-/synth-0.1.0.tgz","fileCount":33,"integrity":"sha512-YGK+jHput4JZ7YVfJsl7gzRYUdE1vC8NVlTMvp4R0E8EY4SL3oyF7M4vDu1meE9VC2buGzf8J+zxf4LPMhzkUQ==","signatures":[{"sig":"MEUCIQCepYl50u/C9dROlKSXLPf/bSoBwQjK+YR0MqWua3mZxQIgeZVlHdnjjJI4VW6GwvwlZfc5fyMpVDQOeUXfRrYm0bg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421660},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./llm":{"import":{"types":"./dist/llm/index.d.ts","default":"./dist/llm/index.js"},"require":{"types":"./dist/llm/index.d.cts","default":"./dist/llm/index.cjs"}},"./tools":{"import":{"types":"./dist/tools/index.d.ts","default":"./dist/tools/index.js"},"require":{"types":"./dist/tools/index.d.cts","default":"./dist/tools/index.cjs"}}},"gitHead":"95718a2654eb96a3435cfb2bfe56cbd4efae9c88","scripts":{"dev":"tsup --watch","lint":"biome check src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"avasis","email":"abhay@avasis.ai"},"repository":{"url":"git+https://github.com/avasis-ai/synth.git","type":"git"},"_npmVersion":"11.7.0","description":"Synthesize any LLM into a production-grade AI agent. Battle-tested agentic patterns, model-agnostic, TypeScript-first.","directories":{},"_nodeVersion":"25.4.0","dependencies":{"sharp":"^0.34.5"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","tsup":"^8.3.0","openai":"^4.78.0","vitest":"^2.1.0","typescript":"^5.9.3","@types/node":"^22.0.0","@biomejs/biome":"^1.9.0","@anthropic-ai/sdk":"^0.39.0"},"peerDependencies":{"zod":"^3.23.0","openai":"^4.70.0","@anthropic-ai/sdk":"^0.30.0"},"peerDependenciesMeta":{"zod":{"optional":true},"openai":{"optional":true},"@anthropic-ai/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/synth_0.1.0_1775164297463_0.027746937491404333","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@avasis-ai/synth","version":"0.2.0","keywords":["ai","agent","llm","agentic","claude","gpt","tool-use","mcp","context-management","typescript"],"license":"MIT","_id":"@avasis-ai/synth@0.2.0","maintainers":[{"name":"avasis","email":"abhay@avasis.ai"}],"homepage":"https://github.com/avasis-ai/synth#readme","bugs":{"url":"https://github.com/avasis-ai/synth/issues"},"bin":{"synth":"dist/cli/run.js"},"dist":{"shasum":"4027d83d078699e746517149fac9af973bd1cc0d","tarball":"https://registry.npmjs.org/@avasis-ai/synth/-/synth-0.2.0.tgz","fileCount":71,"integrity":"sha512-DZ5TJFRn0N7QVRoakrUzoArHo1JIvutIH1dXTKhmhsvZsd/SVIXiVz/t/LI+Iin5NNKEghn1A4/Q5Kw3phTEHA==","signatures":[{"sig":"MEUCIQD+pD5w8uNm7tFS/LLsqvM0wEm8WpHGJLV7+akWUNhdNgIgWwYySVK6+d7VPHWxSJU/sLqqwU1s7naQIk7rEwMXm9k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":656741},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./llm":{"import":{"types":"./dist/llm/index.d.ts","default":"./dist/llm/index.js"},"require":{"types":"./dist/llm/index.d.cts","default":"./dist/llm/index.cjs"}},"./mcp":{"import":{"types":"./dist/mcp/index.d.ts","default":"./dist/mcp/index.js"},"require":{"types":"./dist/mcp/index.d.cts","default":"./dist/mcp/index.cjs"}},"./tools":{"import":{"types":"./dist/tools/index.d.ts","default":"./dist/tools/index.js"},"require":{"types":"./dist/tools/index.d.cts","default":"./dist/tools/index.cjs"}},"./memory":{"import":{"types":"./dist/memory/index.d.ts","default":"./dist/memory/index.js"},"require":{"types":"./dist/memory/index.d.cts","default":"./dist/memory/index.cjs"}}},"gitHead":"95718a2654eb96a3435cfb2bfe56cbd4efae9c88","scripts":{"dev":"tsup --watch","lint":"biome check src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"avasis","email":"abhay@avasis.ai"},"repository":{"url":"git+https://github.com/avasis-ai/synth.git","type":"git"},"_npmVersion":"11.7.0","description":"Synthesize any LLM into a production-grade AI agent. Battle-tested agentic patterns, model-agnostic, TypeScript-first.","directories":{},"_nodeVersion":"25.4.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","tsup":"^8.3.0","openai":"^4.78.0","vitest":"^2.1.0","typescript":"^5.9.3","@types/node":"^22.0.0","@biomejs/biome":"^1.9.0","@anthropic-ai/sdk":"^0.39.0"},"peerDependencies":{"zod":"^3.23.0","openai":"^4.70.0","@anthropic-ai/sdk":"^0.30.0"},"peerDependenciesMeta":{"zod":{"optional":true},"openai":{"optional":true},"@anthropic-ai/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/synth_0.2.0_1775165340591_0.08951337129574521","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@avasis-ai/synth","version":"0.2.1","keywords":["ai","agent","llm","agentic","claude","gpt","tool-use","mcp","context-management","typescript"],"license":"MIT","_id":"@avasis-ai/synth@0.2.1","maintainers":[{"name":"avasis","email":"abhay@avasis.ai"}],"homepage":"https://github.com/avasis-ai/synth#readme","bugs":{"url":"https://github.com/avasis-ai/synth/issues"},"bin":{"synth":"dist/cli/run.js"},"dist":{"shasum":"f015d3d13725e0ebab2d1498c014008ad4276bd7","tarball":"https://registry.npmjs.org/@avasis-ai/synth/-/synth-0.2.1.tgz","fileCount":71,"integrity":"sha512-XW9lLcmlQnmWN2LsvGZ3LwPJk4w+0EdhOQJhMYzZOqJpgDG49wN76CRXCqYqDJhIY2QGsT6mQPjUKliVOdpGGA==","signatures":[{"sig":"MEQCIHjqucT+PbXwvjpOSy+g4F39+Fbm5YuLJJSnD15fYrO5AiB0qDAeuxW6vxK3gyAd9PLVcRzRH500P8KiMuINJPhiZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":656747},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./llm":{"import":{"types":"./dist/llm/index.d.ts","default":"./dist/llm/index.js"},"require":{"types":"./dist/llm/index.d.cts","default":"./dist/llm/index.cjs"}},"./mcp":{"import":{"types":"./dist/mcp/index.d.ts","default":"./dist/mcp/index.js"},"require":{"types":"./dist/mcp/index.d.cts","default":"./dist/mcp/index.cjs"}},"./tools":{"import":{"types":"./dist/tools/index.d.ts","default":"./dist/tools/index.js"},"require":{"types":"./dist/tools/index.d.cts","default":"./dist/tools/index.cjs"}},"./memory":{"import":{"types":"./dist/memory/index.d.ts","default":"./dist/memory/index.js"},"require":{"types":"./dist/memory/index.d.cts","default":"./dist/memory/index.cjs"}}},"gitHead":"95718a2654eb96a3435cfb2bfe56cbd4efae9c88","scripts":{"dev":"tsup --watch","lint":"biome check src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"avasis","email":"abhay@avasis.ai"},"repository":{"url":"git+https://github.com/avasis-ai/synth.git","type":"git"},"_npmVersion":"11.7.0","description":"Synthesize any LLM into a production-grade AI agent. Battle-tested agentic patterns, model-agnostic, TypeScript-first.","directories":{},"_nodeVersion":"25.4.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","tsup":"^8.3.0","openai":"^4.78.0","vitest":"^2.1.0","typescript":"^5.9.3","@types/node":"^22.0.0","@biomejs/biome":"^1.9.0","@anthropic-ai/sdk":"^0.39.0"},"peerDependencies":{"zod":"^3.23.0","openai":"^4.70.0","@anthropic-ai/sdk":"^0.30.0"},"peerDependenciesMeta":{"zod":{"optional":true},"openai":{"optional":true},"@anthropic-ai/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/synth_0.2.1_1775165361622_0.467279386670036","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@avasis-ai/synth","version":"0.2.2","keywords":["ai","agent","llm","agentic","claude","gpt","tool-use","mcp","context-management","typescript"],"license":"MIT","_id":"@avasis-ai/synth@0.2.2","maintainers":[{"name":"avasis","email":"abhay@avasis.ai"}],"homepage":"https://github.com/avasis-ai/synth#readme","bugs":{"url":"https://github.com/avasis-ai/synth/issues"},"bin":{"synth":"dist/cli/run.js"},"dist":{"shasum":"29326240fba843ce93053448a8e2e06c92dff284","tarball":"https://registry.npmjs.org/@avasis-ai/synth/-/synth-0.2.2.tgz","fileCount":71,"integrity":"sha512-WlPtt11Pn+2qD1rwAXsa/xlFxSxWAum0tCS8+lLMTpG/iykDa+WqZr3RZWRB1f4cGdOGFrZtc2pVDGaTJhIKiw==","signatures":[{"sig":"MEQCIB5fudguOAySVBm3GODSYh5BVpoFtICBEcKDY4Onj6JlAiBOLrPoMAy7XMwZDhUKnsub6OcyeanTTvijCpsAeejYtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":656748},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./llm":{"import":{"types":"./dist/llm/index.d.ts","default":"./dist/llm/index.js"},"require":{"types":"./dist/llm/index.d.cts","default":"./dist/llm/index.cjs"}},"./mcp":{"import":{"types":"./dist/mcp/index.d.ts","default":"./dist/mcp/index.js"},"require":{"types":"./dist/mcp/index.d.cts","default":"./dist/mcp/index.cjs"}},"./tools":{"import":{"types":"./dist/tools/index.d.ts","default":"./dist/tools/index.js"},"require":{"types":"./dist/tools/index.d.cts","default":"./dist/tools/index.cjs"}},"./memory":{"import":{"types":"./dist/memory/index.d.ts","default":"./dist/memory/index.js"},"require":{"types":"./dist/memory/index.d.cts","default":"./dist/memory/index.cjs"}}},"gitHead":"f3ff3f28f4d967b3206fb8ba2047a25a2082c98f","scripts":{"dev":"tsup --watch","lint":"biome check src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"avasis","email":"abhay@avasis.ai"},"repository":{"url":"git+https://github.com/avasis-ai/synth.git","type":"git"},"_npmVersion":"11.7.0","description":"Synthesize any LLM into a production-grade AI agent. Battle-tested agentic patterns, model-agnostic, TypeScript-first.","directories":{},"_nodeVersion":"25.4.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","tsup":"^8.3.0","openai":"^4.78.0","vitest":"^2.1.0","typescript":"^5.9.3","@types/node":"^22.0.0","@biomejs/biome":"^1.9.0","@anthropic-ai/sdk":"^0.39.0"},"peerDependencies":{"zod":"^3.23.0","openai":"^4.70.0","@anthropic-ai/sdk":">=0.30.0"},"peerDependenciesMeta":{"zod":{"optional":true},"openai":{"optional":true},"@anthropic-ai/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/synth_0.2.2_1775201141968_0.8818170450495055","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@avasis-ai/synth","version":"0.3.0","keywords":["ai","agent","llm","agentic","claude","gpt","tool-use","mcp","context-management","typescript"],"license":"MIT","_id":"@avasis-ai/synth@0.3.0","maintainers":[{"name":"avasis","email":"abhay@avasis.ai"}],"homepage":"https://github.com/avasis-ai/synth#readme","bugs":{"url":"https://github.com/avasis-ai/synth/issues"},"bin":{"synth":"dist/cli/run.js"},"dist":{"shasum":"ac16834a0bf2a1e17c5b40f14f1a0bf0575dd77d","tarball":"https://registry.npmjs.org/@avasis-ai/synth/-/synth-0.3.0.tgz","fileCount":71,"integrity":"sha512-G8QeR68KLJkE7DbxX7At2sOYycjhFVagUjsXLWmul/IVYhGKdGKVmcdR/UkFvJglwTNtZEJw+cY1d8f//WxqPg==","signatures":[{"sig":"MEYCIQDFg1WL6+fpYzm/zMZsjRNp5l35EWAjrLj+lV8v25SoLwIhANV6qIzfY6e42up0voXE2QAkEtmbMhzYrw3u7Vxpb9JK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":734058},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./llm":{"import":{"types":"./dist/llm/index.d.ts","default":"./dist/llm/index.js"},"require":{"types":"./dist/llm/index.d.cts","default":"./dist/llm/index.cjs"}},"./mcp":{"import":{"types":"./dist/mcp/index.d.ts","default":"./dist/mcp/index.js"},"require":{"types":"./dist/mcp/index.d.cts","default":"./dist/mcp/index.cjs"}},"./tools":{"import":{"types":"./dist/tools/index.d.ts","default":"./dist/tools/index.js"},"require":{"types":"./dist/tools/index.d.cts","default":"./dist/tools/index.cjs"}},"./memory":{"import":{"types":"./dist/memory/index.d.ts","default":"./dist/memory/index.js"},"require":{"types":"./dist/memory/index.d.cts","default":"./dist/memory/index.cjs"}}},"gitHead":"90d8ac811d1247a35d328d37e895b879556b0ca2","scripts":{"dev":"tsup --watch","lint":"biome check src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"avasis","email":"abhay@avasis.ai"},"repository":{"url":"git+https://github.com/avasis-ai/synth.git","type":"git"},"_npmVersion":"11.7.0","description":"Synthesize any LLM into a production-grade AI agent. Battle-tested agentic patterns, model-agnostic, TypeScript-first.","directories":{},"_nodeVersion":"25.4.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","tsup":"^8.3.0","openai":"^4.78.0","vitest":"^2.1.0","typescript":"^5.9.3","@types/node":"^22.0.0","@biomejs/biome":"^1.9.0","@anthropic-ai/sdk":"^0.39.0"},"peerDependencies":{"zod":"^3.23.0","openai":"^4.70.0","@anthropic-ai/sdk":">=0.30.0"},"peerDependenciesMeta":{"zod":{"optional":true},"openai":{"optional":true},"@anthropic-ai/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/synth_0.3.0_1775209198596_0.769792662100909","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@avasis-ai/synth","version":"0.3.1","keywords":["ai","agent","llm","agentic","claude","gpt","tool-use","mcp","context-management","typescript"],"license":"MIT","_id":"@avasis-ai/synth@0.3.1","maintainers":[{"name":"avasis","email":"abhay@avasis.ai"}],"homepage":"https://github.com/avasis-ai/synth#readme","bugs":{"url":"https://github.com/avasis-ai/synth/issues"},"bin":{"synth":"dist/cli/run.js"},"dist":{"shasum":"7caa5beeb2e31ce64cfb17442522a4f697d10fcd","tarball":"https://registry.npmjs.org/@avasis-ai/synth/-/synth-0.3.1.tgz","fileCount":71,"integrity":"sha512-sIq3pC6GEP2MRqABVAkiWDBzl6NiqW6EgqpD9x3eDRe2riTP/2ElV9ZTBY/QKSABiJv1kSYUifOp/QS9wehZzA==","signatures":[{"sig":"MEUCIQC3VGV2NwD9nH7kNPygchLIZmCN49exTx0vvIyYFWhR7wIgFOTdCVqrZqwww56rWlgBdx1Z/0N303Tuz89ACMuDnVo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":735400},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./llm":{"import":{"types":"./dist/llm/index.d.ts","default":"./dist/llm/index.js"},"require":{"types":"./dist/llm/index.d.cts","default":"./dist/llm/index.cjs"}},"./mcp":{"import":{"types":"./dist/mcp/index.d.ts","default":"./dist/mcp/index.js"},"require":{"types":"./dist/mcp/index.d.cts","default":"./dist/mcp/index.cjs"}},"./tools":{"import":{"types":"./dist/tools/index.d.ts","default":"./dist/tools/index.js"},"require":{"types":"./dist/tools/index.d.cts","default":"./dist/tools/index.cjs"}},"./memory":{"import":{"types":"./dist/memory/index.d.ts","default":"./dist/memory/index.js"},"require":{"types":"./dist/memory/index.d.cts","default":"./dist/memory/index.cjs"}}},"gitHead":"90d8ac811d1247a35d328d37e895b879556b0ca2","scripts":{"dev":"tsup --watch","lint":"biome check src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"avasis","email":"abhay@avasis.ai"},"repository":{"url":"git+https://github.com/avasis-ai/synth.git","type":"git"},"_npmVersion":"11.7.0","description":"Synthesize any LLM into a production-grade AI agent. Battle-tested agentic patterns, model-agnostic, TypeScript-first.","directories":{},"_nodeVersion":"25.4.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","tsup":"^8.3.0","openai":"^4.78.0","vitest":"^2.1.0","typescript":"^5.9.3","@types/node":"^22.0.0","@biomejs/biome":"^1.9.0","@anthropic-ai/sdk":"^0.39.0"},"peerDependencies":{"zod":"^3.23.0","openai":"^4.70.0","@anthropic-ai/sdk":">=0.30.0"},"peerDependenciesMeta":{"zod":{"optional":true},"openai":{"optional":true},"@anthropic-ai/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/synth_0.3.1_1775209607347_0.36331649886811346","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@avasis-ai/synth","version":"0.3.2","keywords":["ai","agent","llm","agentic","claude","gpt","tool-use","mcp","context-management","typescript"],"license":"MIT","_id":"@avasis-ai/synth@0.3.2","maintainers":[{"name":"avasis","email":"abhay@avasis.ai"}],"homepage":"https://github.com/avasis-ai/synth#readme","bugs":{"url":"https://github.com/avasis-ai/synth/issues"},"bin":{"synth":"dist/cli/run.js"},"dist":{"shasum":"8646d6f95c7bd34c7f1f0a76aace4002bed53756","tarball":"https://registry.npmjs.org/@avasis-ai/synth/-/synth-0.3.2.tgz","fileCount":71,"integrity":"sha512-QLSY9AfeaAIxQBiG2YmWTWSSig/9Y96k+CmjhkIOgHVd1OAAwAtv1okEHKXIg1IKG42Bjg5XyRt75Nt1+zQmbQ==","signatures":[{"sig":"MEUCICGI9Nk7Ub9QPK5FNktZXt32DImWEVfAKKcnjkwPgRIiAiEAsaFng05ypYTkrYHnBwPH/fohsrJBh6SnsYK38igxQQs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":736106},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./llm":{"import":{"types":"./dist/llm/index.d.ts","default":"./dist/llm/index.js"},"require":{"types":"./dist/llm/index.d.cts","default":"./dist/llm/index.cjs"}},"./mcp":{"import":{"types":"./dist/mcp/index.d.ts","default":"./dist/mcp/index.js"},"require":{"types":"./dist/mcp/index.d.cts","default":"./dist/mcp/index.cjs"}},"./tools":{"import":{"types":"./dist/tools/index.d.ts","default":"./dist/tools/index.js"},"require":{"types":"./dist/tools/index.d.cts","default":"./dist/tools/index.cjs"}},"./memory":{"import":{"types":"./dist/memory/index.d.ts","default":"./dist/memory/index.js"},"require":{"types":"./dist/memory/index.d.cts","default":"./dist/memory/index.cjs"}}},"gitHead":"90d8ac811d1247a35d328d37e895b879556b0ca2","scripts":{"dev":"tsup --watch","lint":"biome check src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"avasis","email":"abhay@avasis.ai"},"repository":{"url":"git+https://github.com/avasis-ai/synth.git","type":"git"},"_npmVersion":"11.7.0","description":"Synthesize any LLM into a production-grade AI agent. Battle-tested agentic patterns, model-agnostic, TypeScript-first.","directories":{},"_nodeVersion":"25.4.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","tsup":"^8.3.0","openai":"^4.78.0","vitest":"^2.1.0","typescript":"^5.9.3","@types/node":"^22.0.0","@biomejs/biome":"^1.9.0","@anthropic-ai/sdk":"^0.39.0"},"peerDependencies":{"zod":"^3.23.0","openai":"^4.70.0","@anthropic-ai/sdk":">=0.30.0"},"peerDependenciesMeta":{"zod":{"optional":true},"openai":{"optional":true},"@anthropic-ai/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/synth_0.3.2_1775210600949_0.11466974960114529","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@avasis-ai/synth","version":"0.4.0","keywords":["ai","agent","llm","agentic","claude","gpt","tool-use","mcp","context-management","typescript"],"license":"MIT","_id":"@avasis-ai/synth@0.4.0","maintainers":[{"name":"avasis","email":"abhay@avasis.ai"}],"homepage":"https://github.com/avasis-ai/synth#readme","bugs":{"url":"https://github.com/avasis-ai/synth/issues"},"bin":{"synth":"dist/cli/run.js"},"dist":{"shasum":"ff4f4d0039d1d2370c510021831cff2db584b78b","tarball":"https://registry.npmjs.org/@avasis-ai/synth/-/synth-0.4.0.tgz","fileCount":79,"integrity":"sha512-TFZQqbH6ed3rgx4BYLIPA7JB/2z2zdOYifQuo7XVX0FvV2jxzSOpmHlIBPw5v8BhnqYU2pLPZUGuVX05Ptcahg==","signatures":[{"sig":"MEUCIFuPnO8o6E121MKA/iOQQwQr+xADekFK0d62Py4dP6jVAiEA5vTiROocoeyhGURXI9L1JNGm2KFGqAYwg9Ma0pUG6TI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":828629},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./llm":{"import":{"types":"./dist/llm/index.d.ts","default":"./dist/llm/index.js"},"require":{"types":"./dist/llm/index.d.cts","default":"./dist/llm/index.cjs"}},"./mcp":{"import":{"types":"./dist/mcp/index.d.ts","default":"./dist/mcp/index.js"},"require":{"types":"./dist/mcp/index.d.cts","default":"./dist/mcp/index.cjs"}},"./tools":{"import":{"types":"./dist/tools/index.d.ts","default":"./dist/tools/index.js"},"require":{"types":"./dist/tools/index.d.cts","default":"./dist/tools/index.cjs"}},"./memory":{"import":{"types":"./dist/memory/index.d.ts","default":"./dist/memory/index.js"},"require":{"types":"./dist/memory/index.d.cts","default":"./dist/memory/index.cjs"}},"./tools/fuzzy-edit":{"import":{"types":"./dist/tools/fuzzy-edit.d.ts","default":"./dist/tools/fuzzy-edit.js"},"require":{"types":"./dist/tools/fuzzy-edit.d.cts","default":"./dist/tools/fuzzy-edit.cjs"}}},"gitHead":"90d8ac811d1247a35d328d37e895b879556b0ca2","scripts":{"dev":"tsup --watch","lint":"biome check src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"avasis","email":"abhay@avasis.ai"},"repository":{"url":"git+https://github.com/avasis-ai/synth.git","type":"git"},"_npmVersion":"11.7.0","description":"Synthesize any LLM into a production-grade AI agent. Battle-tested agentic patterns, model-agnostic, TypeScript-first.","directories":{},"_nodeVersion":"25.4.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","tsup":"^8.3.0","openai":"^4.78.0","vitest":"^2.1.0","typescript":"^5.9.3","@types/node":"^22.0.0","@biomejs/biome":"^1.9.0","@anthropic-ai/sdk":"^0.39.0"},"peerDependencies":{"zod":"^3.23.0","openai":"^4.70.0","@anthropic-ai/sdk":">=0.30.0"},"peerDependenciesMeta":{"zod":{"optional":true},"openai":{"optional":true},"@anthropic-ai/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/synth_0.4.0_1775214263116_0.8778122823674075","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@avasis-ai/synth","version":"0.5.0","keywords":["ai","agent","llm","agentic","claude","gpt","tool-use","mcp","context-management","typescript"],"license":"MIT","_id":"@avasis-ai/synth@0.5.0","maintainers":[{"name":"avasis","email":"abhay@avasis.ai"}],"homepage":"https://github.com/avasis-ai/synth#readme","bugs":{"url":"https://github.com/avasis-ai/synth/issues"},"bin":{"synth":"dist/cli/run.js"},"dist":{"shasum":"8efbc8266b51a4d05fcadb3a5cf6f300e11813eb","tarball":"https://registry.npmjs.org/@avasis-ai/synth/-/synth-0.5.0.tgz","fileCount":79,"integrity":"sha512-Ma8kRNZPO5KW79vtjUp2cnR6dZFG2q2FAnqbqriNO9m07zYDMSHupdY1c/NUh1notByWqyA1dATofUx3pn2qfA==","signatures":[{"sig":"MEQCIB+cMwcxmoHSwqS7t5yap9+MAxWOSPrTUEByA9rZ+bA1AiArLWmHfxjvFyemiYZioI2cl0Q9ziPaPSVxA1kWFoF9bA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":823943},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./llm":{"import":{"types":"./dist/llm/index.d.ts","default":"./dist/llm/index.js"},"require":{"types":"./dist/llm/index.d.cts","default":"./dist/llm/index.cjs"}},"./mcp":{"import":{"types":"./dist/mcp/index.d.ts","default":"./dist/mcp/index.js"},"require":{"types":"./dist/mcp/index.d.cts","default":"./dist/mcp/index.cjs"}},"./tools":{"import":{"types":"./dist/tools/index.d.ts","default":"./dist/tools/index.js"},"require":{"types":"./dist/tools/index.d.cts","default":"./dist/tools/index.cjs"}},"./memory":{"import":{"types":"./dist/memory/index.d.ts","default":"./dist/memory/index.js"},"require":{"types":"./dist/memory/index.d.cts","default":"./dist/memory/index.cjs"}},"./tools/fuzzy-edit":{"import":{"types":"./dist/tools/fuzzy-edit.d.ts","default":"./dist/tools/fuzzy-edit.js"},"require":{"types":"./dist/tools/fuzzy-edit.d.cts","default":"./dist/tools/fuzzy-edit.cjs"}}},"gitHead":"77fc4d36a294a1cf674fc42570ec984d10ac5393","scripts":{"dev":"tsup --watch","lint":"biome check src/","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"avasis","email":"abhay@avasis.ai"},"repository":{"url":"git+https://github.com/avasis-ai/synth.git","type":"git"},"_npmVersion":"11.7.0","description":"Synthesize any LLM into a production-grade AI agent. Battle-tested agentic patterns, model-agnostic, TypeScript-first.","directories":{},"_nodeVersion":"25.4.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.24.0","tsup":"^8.3.0","openai":"^4.78.0","vitest":"^2.1.0","typescript":"^5.9.3","@types/node":"^22.0.0","@biomejs/biome":"^1.9.0","@anthropic-ai/sdk":"^0.39.0"},"peerDependencies":{"zod":"^3.23.0","openai":"^4.70.0","@anthropic-ai/sdk":">=0.30.0"},"peerDependenciesMeta":{"zod":{"optional":true},"openai":{"optional":true},"@anthropic-ai/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/synth_0.5.0_1775221429381_0.7072200854122759","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@avasis-ai/synth","version":"0.6.0","description":"Synthesize any LLM into a production-grade AI agent. Battle-tested agentic patterns, model-agnostic, TypeScript-first.","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./llm":{"import":{"types":"./dist/llm/index.d.ts","default":"./dist/llm/index.js"},"require":{"types":"./dist/llm/index.d.cts","default":"./dist/llm/index.cjs"}},"./tools":{"import":{"types":"./dist/tools/index.d.ts","default":"./dist/tools/index.js"},"require":{"types":"./dist/tools/index.d.cts","default":"./dist/tools/index.cjs"}},"./memory":{"import":{"types":"./dist/memory/index.d.ts","default":"./dist/memory/index.js"},"require":{"types":"./dist/memory/index.d.cts","default":"./dist/memory/index.cjs"}},"./mcp":{"import":{"types":"./dist/mcp/index.d.ts","default":"./dist/mcp/index.js"},"require":{"types":"./dist/mcp/index.d.cts","default":"./dist/mcp/index.cjs"}},"./tools/fuzzy-edit":{"import":{"types":"./dist/tools/fuzzy-edit.d.ts","default":"./dist/tools/fuzzy-edit.js"},"require":{"types":"./dist/tools/fuzzy-edit.d.cts","default":"./dist/tools/fuzzy-edit.cjs"}}},"bin":{"synth":"dist/cli/run.js"},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","test":"vitest run","lint":"biome check src/","prepublishOnly":"npm run build"},"peerDependencies":{"@anthropic-ai/sdk":">=0.30.0","openai":"^4.70.0","zod":"^3.23.0"},"peerDependenciesMeta":{"@anthropic-ai/sdk":{"optional":true},"openai":{"optional":true},"zod":{"optional":true}},"devDependencies":{"@anthropic-ai/sdk":"^0.39.0","@biomejs/biome":"^1.9.0","@types/node":"^22.0.0","openai":"^4.78.0","tsup":"^8.3.0","typescript":"^5.9.3","vitest":"^2.1.0","zod":"^3.24.0"},"keywords":["ai","agent","llm","agentic","claude","gpt","tool-use","mcp","context-management","typescript"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/avasis-ai/synth.git"},"homepage":"https://github.com/avasis-ai/synth#readme","dependencies":{},"gitHead":"72e7b2180f1ff3e76fa73463834a404d967969a8","_id":"@avasis-ai/synth@0.6.0","bugs":{"url":"https://github.com/avasis-ai/synth/issues"},"_nodeVersion":"25.4.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-O+ARM8g+eUjca2stVC8iposqS+Or/65FvnK0vP3Ho+r7UK+NhkcehFJuFA4NM8cExmVARvneZz/jsXxkthJWWQ==","shasum":"8efe7a0943060d566362e631b8aa14ebeb4b7c3d","tarball":"https://registry.npmjs.org/@avasis-ai/synth/-/synth-0.6.0.tgz","fileCount":77,"unpackedSize":883450,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDrxqYjHtKwKTNfkIQKb22lfLnYjFsZwucdXV3vU28O0AiEA8Sks40lfJFM9oZUyK6p8J6Mc1W2VnWGn3kDEJhrAqv4="}]},"_npmUser":{"name":"avasis","email":"abhay@avasis.ai"},"directories":{},"maintainers":[{"name":"avasis","email":"abhay@avasis.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/synth_0.6.0_1775222689401_0.8745021004273503"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-02T21:11:37.312Z","modified":"2026-04-03T13:24:49.730Z","0.1.0":"2026-04-02T21:11:37.634Z","0.2.0":"2026-04-02T21:29:00.776Z","0.2.1":"2026-04-02T21:29:21.823Z","0.2.2":"2026-04-03T07:25:42.158Z","0.3.0":"2026-04-03T09:39:58.824Z","0.3.1":"2026-04-03T09:46:47.513Z","0.3.2":"2026-04-03T10:03:21.123Z","0.4.0":"2026-04-03T11:04:23.329Z","0.5.0":"2026-04-03T13:03:49.568Z","0.6.0":"2026-04-03T13:24:49.599Z"},"bugs":{"url":"https://github.com/avasis-ai/synth/issues"},"license":"MIT","homepage":"https://github.com/avasis-ai/synth#readme","keywords":["ai","agent","llm","agentic","claude","gpt","tool-use","mcp","context-management","typescript"],"repository":{"type":"git","url":"git+https://github.com/avasis-ai/synth.git"},"description":"Synthesize any LLM into a production-grade AI agent. Battle-tested agentic patterns, model-agnostic, TypeScript-first.","maintainers":[{"name":"avasis","email":"abhay@avasis.ai"}],"readme":"<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/avasis-ai/synth/main/docs/images/hero.png?v=6\" alt=\"Synth - Open Source AI Agent Framework\" width=\"1200\">\n</p>\n\n<p align=\"center\">\n  <img src=\"https://img.shields.io/npm/v/@avasis-ai/synth?style=flat-square&color=black&logo=osi\" alt=\"npm\">\n  <img src=\"https://img.shields.io/npm/l/@avasis-ai/synth?style=flat-square&color=black&logo=osi\" alt=\"MIT\">\n  <img src=\"https://img.shields.io/badge/TypeScript-5.9+-3178C6?style=flat-square\" alt=\"TypeScript\">\n  <img src=\"https://img.shields.io/badge/95_tests-4CAF50?style=flat-square\" alt=\"tests\">\n  <img src=\"https://img.shields.io/badge/zero_deps-6C6C6C?style=flat-square\" alt=\"zero deps\">\n  <img src=\"https://img.shields.io/badge/~34KB_ESM-2E7D32?style=flat-square\" alt=\"size\">\n  <img src=\"https://img.shields.io/badge/PRs_Welcome-00BCD4?style=flat-square&logo=osi\" alt=\"PRs Welcome\">\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/sponsors/avasis-ai\"><img src=\"https://raw.githubusercontent.com/avasis-ai/synth/main/docs/images/sponsor.png?v=1\" alt=\"Sponsor Synth\" width=\"800\"></a>\n</p>\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/avasis-ai/synth/main/docs/demo.gif?v=3\" alt=\"Synth building a REST API with Express\" width=\"700\">\n</p>\n\n---\n\n<p align=\"center\">\n  <b>Battle-tested agentic patterns from Claude Code, OpenAI Codex, and more.</b><br>\n  <b>Any LLM. Zero runtime deps. 34KB. 10 lines to start.</b>\n</p>\n\n```typescript\nimport { Agent, BashTool, FileReadTool } from \"@avasis-ai/synth\";\nimport { AnthropicProvider } from \"@avasis-ai/synth/llm\";\n\nconst agent = new Agent({\n  model: new AnthropicProvider({ apiKey: process.env.ANTHROPIC_API_KEY! }),\n  tools: [BashTool, FileReadTool],\n});\n\nfor await (const event of agent.run(\"Create a Python todo app with tests\")) {\n  if (event.type === \"text\") process.stdout.write(event.text);\n  if (event.type === \"tool_use\") console.log(`\\n  [${event.name}]`);\n}\n```\n\n---\n\n## Why Synth\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/avasis-ai/synth/main/docs/images/features.png?v=1\" alt=\"Feature Comparison\" width=\"1000\">\n</p>\n\n## Bundle Size\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/avasis-ai/synth/main/docs/images/bundle-chart.png?v=1\" alt=\"Bundle Size Comparison\" width=\"900\">\n</p>\n\n## Performance\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/avasis-ai/synth/main/docs/images/benchmarks.png?v=1\" alt=\"Performance Benchmarks\" width=\"900\">\n</p>\n\nMeasured on Apple M4 Pro, Node 22. Run `npx tsx tests/benchmarks.ts` to reproduce.\n\n## Quick Start\n\n```bash\nnpm install @avasis-ai/synth @anthropic-ai/sdk zod\n```\n\n```typescript\nimport { Agent, BashTool, FileReadTool } from \"@avasis-ai/synth\";\nimport { AnthropicProvider } from \"@avasis-ai/synth/llm\";\n\nconst agent = new Agent({\n  model: new AnthropicProvider({ apiKey: process.env.ANTHROPIC_API_KEY! }),\n  tools: [BashTool, FileReadTool],\n});\n\nfor await (const event of agent.run(\"Create a Python todo app with tests\")) {\n  if (event.type === \"text\") process.stdout.write(event.text);\n  if (event.type === \"tool_use\") console.log(`\\n  [${event.name}]`);\n}\n```\n\n### Ollama (zero API costs)\n\n```bash\nnpm install @avasis-ai/synth zod\n```\n\n```typescript\nimport { Agent, BashTool } from \"@avasis-ai/synth\";\nimport { OllamaProvider } from \"@avasis-ai/synth/llm\";\n\nconst agent = new Agent({\n  model: new OllamaProvider({ model: \"qwen3:32b\" }),\n  tools: [BashTool],\n  disableTitle: true,\n});\n\nconst result = await agent.chat(\"List all TypeScript files in this project\");\nconsole.log(result.text);\n```\n\n## Architecture\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/avasis-ai/synth/main/docs/images/architecture.png?v=7\" alt=\"Synth Architecture\" width=\"900\">\n</p>\n\n```\n@avasis-ai/synth/\n|-- Agent                      High-level API (run, chat, structured)\n|   |-- agentLoop()            Core: think -> act -> observe -> repeat\n|   |   |-- Provider           Any LLM (Anthropic, OpenAI, Ollama, custom)\n|   |   |-- ToolRegistry       Lookup, dedup, case-insensitive search\n|   |   |-- Orchestrator       Concurrent reads, serial writes\n|   |   |-- ContextManager     Compaction + token-weighted pruning\n|   |   |-- PermissionEngine   Allow/deny/ask with pattern matching\n|   |-- structured<T>()        JSON extraction with Zod + retry\n|   |-- structuredViaTool<T>() Structured output via tool injection\n|   |-- asTool()               Sub-agent delegation\n|   |-- fork()                 Session forking\n|   |-- hooks / memory / cost  Lifecycle hooks, persistence, tracking\n|\n|-- Tools                      Bash, FileRead, FileWrite, FileEdit, Glob, Grep, WebFetch\n|-- Fuzzy Edit                 9-strategy find-and-replace engine\n|-- LLM Providers              Anthropic, OpenAI, Ollama (raw fetch), custom\n|-- CLI                        synth init / synth run\n```\n\n## Core Concepts\n\n### Structured Output\n\n```typescript\nimport { z } from \"zod\";\n\nconst schema = z.object({ name: z.string(), age: z.number() });\n\n// JSON extraction with retry\nconst data = await agent.structured(\"Extract the person's info\", schema);\n\n// Tool injection (higher reliability)\nconst data = await agent.structuredViaTool(\"Extract the person's info\", schema);\n```\n\n### Sub-Agent Delegation\n\n```typescript\nconst researchTool = await researchAgent.asTool({\n  name: \"research\",\n  description: \"Research a topic and return a summary\",\n  allowSubAgents: false,\n});\n\nconst coderAgent = new Agent({\n  model: provider,\n  tools: [BashTool, FileWriteTool, researchTool],\n});\n```\n\n### Custom Tools\n\n```typescript\nimport { defineTool } from \"@avasis-ai/synth\";\nimport { z } from \"zod\";\n\nconst WeatherTool = defineTool({\n  name: \"get_weather\",\n  description: \"Get current weather for a city\",\n  inputSchema: z.object({\n    city: z.string().describe(\"City name\"),\n    units: z.enum([\"celsius\", \"fahrenheit\"]).optional(),\n  }),\n  isReadOnly: true,\n  isConcurrencySafe: true,\n  execute: async ({ city, units = \"celsius\" }) => {\n    const res = await fetch(`https://wttr.in/${city}?format=j1`);\n    const data = await res.json();\n    return `${city}: ${data.current_condition[0].weatherDesc[0].value}`;\n  },\n});\n```\n\n### Context Management\n\n```typescript\nconst agent = new Agent({\n  model: provider,\n  tools: [BashTool],\n  context: {\n    maxTokens: 200_000,\n    compactThreshold: 0.85,\n    maxOutputTokens: 16_384,\n  },\n});\n```\n\nMulti-layer compaction: snip old messages, summarize with compact, compress large tool outputs with token-weighted pruning. Automatic -- the loop never crashes from overflow.\n\n### Tool Orchestration\n\nRead-only tools run concurrently (up to 10 parallel). Write tools run serial. The orchestrator partitions automatically.\n\n### Permissions\n\n```typescript\nconst agent = new Agent({\n  model: provider,\n  tools: [BashTool, FileReadTool, FileWriteTool],\n  permissions: {\n    allowedTools: [\"file_read\", \"glob\", \"grep\"],\n    deniedTools: [\"bash\"],\n    defaultAction: \"deny\",\n  },\n});\n```\n\n## Model Portability\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/avasis-ai/synth/main/docs/images/models.png?v=6\" alt=\"Model Portability\" width=\"900\">\n</p>\n\n```typescript\nimport { AnthropicProvider, OpenAIProvider, OllamaProvider } from \"@avasis-ai/synth/llm\";\n\n// Claude / GPT / Ollama -- swap freely\nconst agent = new Agent({ model: claude, tools: [...] });\nconst agent = new Agent({ model: gpt, tools: [...] });\nconst agent = new Agent({ model: ollama, tools: [...] });\n```\n\n## Built-in Tools\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/avasis-ai/synth/main/docs/images/tools.png?v=6\" alt=\"Built-in Tools\" width=\"1000\">\n</p>\n\n| Tool | Description | Read-Only | Concurrent |\n|------|-------------|:---------:|:----------:|\n| `BashTool` | Shell commands with timeout + truncation | | |\n| `FileReadTool` | File reading with line numbers + pagination | Yes | Yes |\n| `FileWriteTool` | File creation with recursive mkdir | | |\n| `FileEditTool` | Fuzzy search-and-replace (9 strategies) | | |\n| `GlobTool` | File pattern matching, sorted by mtime | Yes | Yes |\n| `GrepTool` | Regex content search | Yes | Yes |\n| `WebFetchTool` | URL fetch with response truncation | Yes | Yes |\n\n## Origins\n\nSynth is a **clean-room reimplementation**. In early 2026, Claude Code's complete source (~2,200 files, 49MB TypeScript) was published on GitHub. Dozens of raw copies appeared. Synth is different -- every line written from scratch after analyzing the patterns from Claude Code, OpenAI Codex (678K LOC Rust), claw-code-parity (71K LOC Rust), and MiroFish (85K LOC Python).\n\n| | Raw Reuploads | Synth |\n|---|:---:|:---:|\n| Files | 2,200 | 40 |\n| Lines of code | ~150,000 | ~3,700 |\n| Usable as npm package | No | Yes |\n| Works with any LLM | No | Yes |\n| Legal to use | No | Yes (MIT) |\n| Zero runtime deps | No | Yes |\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/avasis-ai/synth/main/docs/images/comparison.png?v=6\" alt=\"Synth vs Claude Code raw reuploads\" width=\"1100\">\n</p>\n\n## Installation\n\n```bash\nnpm install @avasis-ai/synth zod                    # Core + Ollama\nnpm install @avasis-ai/synth @anthropic-ai/sdk zod  # + Claude\nnpm install @avasis-ai/synth openai zod              # + GPT\n```\n\n## API\n\n### Agent\n\n```typescript\nconst agent = new Agent({\n  model: Provider,\n  tools?: Tool[],\n  systemPrompt?: string,\n  maxTurns?: number,           // default: 100\n  disableTitle?: boolean,\n  context?: {\n    maxTokens?: number,        // default: 200,000\n    compactThreshold?: number, // default: 0.85\n    maxOutputTokens?: number,  // default: 16,384\n  },\n  permissions?: {\n    allowedTools?: string[],\n    deniedTools?: string[],\n    defaultAction?: \"allow\" | \"deny\" | \"ask\",\n  },\n});\n```\n\n- `agent.run(prompt)` -- async generator yielding events\n- `agent.chat(prompt)` -- returns `{ text, usage, cost }`\n- `agent.structured(prompt, schema)` -- typed JSON extraction\n- `agent.structuredViaTool(prompt, schema)` -- via tool injection\n- `agent.asTool()` -- wrap as callable tool for delegation\n- `agent.fork()` -- session forking\n- `agent.addTool(tool)` -- runtime tool addition\n\n## Tests\n\n```\nnpm test\n```\n\n95 tests, 8 suites, <2 seconds, zero API calls (fully mocked).\n\n## Contributing\n\n1. Fork\n2. Branch (`git checkout -b feature/my-feature`)\n3. Commit (`git commit -am 'feat: add my feature'`)\n4. Push (`git push origin feature/my-feature`)\n5. PR\n\n## License\n\n[MIT](LICENSE) -- AVASIS AI\n","readmeFilename":"README.md"}