{"_id":"@anastaha/codeforge","_rev":"6-e0890f518c138bc0909457ead20d8f30","name":"@anastaha/codeforge","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@anastaha/codeforge","version":"1.0.0","keywords":["ai","agent","coding","cli","llm","openrouter","terminal","code-assistant"],"license":"MIT","_id":"@anastaha/codeforge@1.0.0","maintainers":[{"name":"anastaha","email":"anastaha.tech@gmail.com"}],"bin":{"codeforge":"dist/index.js"},"dist":{"shasum":"a3a75743989aca9292c4c4121940ccdea108cba0","tarball":"https://registry.npmjs.org/@anastaha/codeforge/-/codeforge-1.0.0.tgz","fileCount":14,"integrity":"sha512-0mG8rS3n5/relpq653fOW1ae39B3m4Cah/rvq1n3Jux4X1tOGzAkMxDYG0YBK5Voi/xuJynpLpXX6AIG7G3UBw==","signatures":[{"sig":"MEUCID5RdTdgIpHB7FyXMh377ydDiPcKOzv2THr3UA+a67e+AiEA7PMdmmHz3PIYfQP5WCygzMMaYqoJo33/aFgqBJVvXzY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38266},"type":"module","engines":{"node":">=18"},"gitHead":"ae01656b24e6148cdad83dd946bf70594b388386","scripts":{"dev":"npx tsx src/index.tsx","test":"vitest run","build":"tsc","start":"npx tsx src/index.tsx","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"anastaha","email":"anastaha.tech@gmail.com"},"_npmVersion":"11.3.0","description":"AI coding agent CLI — reads, edits, and runs commands in your repo via LLM","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ink":"^5.1.0","chalk":"^5.3.0","react":"^18.3.1","dotenv":"^16.6.1","openai":"^4.77.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","typescript":"^5.7.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/codeforge_1.0.0_1773017922999_0.624643744988266","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@anastaha/codeforge","version":"1.0.1","keywords":["ai","agent","coding","cli","llm","openrouter","terminal","code-assistant"],"license":"MIT","_id":"@anastaha/codeforge@1.0.1","maintainers":[{"name":"anastaha","email":"anastaha.tech@gmail.com"}],"bin":{"codeforge":"dist/index.js"},"dist":{"shasum":"5e06ccc401f6529cdeebc51f21cca2eb16a2b2c5","tarball":"https://registry.npmjs.org/@anastaha/codeforge/-/codeforge-1.0.1.tgz","fileCount":14,"integrity":"sha512-BZLT6Uqb3yXczJ7SJuykcCgMfzDRpUXXl7SOtBuAqZoNhF/e8olMRrlwIp6Qv1uJPL3o7KvbGtey62pc9Jia6A==","signatures":[{"sig":"MEUCIQC0Y1CiV9FNnKCse71d7ghNVpZ3ybJ099Duqz/rpMh+BAIgHtVrUXKRA15FYs7jv5/+PQmaeyGwPFacO+OU8fdPYvI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38266},"type":"module","engines":{"node":">=18"},"gitHead":"ae01656b24e6148cdad83dd946bf70594b388386","scripts":{"dev":"npx tsx src/index.tsx","test":"vitest run","build":"tsc","start":"npx tsx src/index.tsx","test:watch":"vitest","prepublishOnly":"tsc"},"_npmUser":{"name":"anastaha","email":"anastaha.tech@gmail.com"},"_npmVersion":"11.3.0","description":"AI coding agent CLI — reads, edits, and runs commands in your repo via LLM","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ink":"^5.1.0","chalk":"^5.3.0","react":"^18.3.1","dotenv":"^16.6.1","openai":"^4.77.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","typescript":"^5.7.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/codeforge_1.0.1_1773018106558_0.28589479435618337","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@anastaha/codeforge","version":"1.0.2","keywords":["ai","agent","coding","cli","llm","openrouter","terminal","code-assistant"],"license":"MIT","_id":"@anastaha/codeforge@1.0.2","maintainers":[{"name":"anastaha","email":"anastaha.tech@gmail.com"}],"bin":{"codeforge":"dist/index.js"},"dist":{"shasum":"019a5318892914793b4b016856b91a3f5a72f7ff","tarball":"https://registry.npmjs.org/@anastaha/codeforge/-/codeforge-1.0.2.tgz","fileCount":3,"integrity":"sha512-VWuTg8FfZbNlhOWbTZ5udoZixLlOD+GUPCeVmYVIksBXaPtR0DthBg/mIP0iOoARI518Zk9dFAuWBA2BiQ2+xg==","signatures":[{"sig":"MEQCIGKR6i1jRx/dg8k+0pwPov9hj+a/xz2R0JJh219jv68uAiAywvpqIAFozcVJJZXNS+LtdMecNb9ZQzLSRkFqVWTkGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19565},"type":"module","engines":{"node":">=18"},"gitHead":"ae01656b24e6148cdad83dd946bf70594b388386","scripts":{"dev":"npx tsx src/index.tsx","test":"vitest run","build":"tsc && node esbuild.config.js","start":"npx tsx src/index.tsx","test:watch":"vitest","prepublishOnly":"tsc && node esbuild.config.js"},"_npmUser":{"name":"anastaha","email":"anastaha.tech@gmail.com"},"_npmVersion":"11.3.0","description":"AI coding agent CLI — reads, edits, and runs commands in your repo via LLM","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ink":"^5.1.0","chalk":"^5.3.0","react":"^18.3.1","dotenv":"^16.6.1","openai":"^4.77.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","esbuild":"^0.27.3","typescript":"^5.7.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/codeforge_1.0.2_1773018375344_0.9402020290853099","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@anastaha/codeforge","version":"1.0.3","keywords":["ai","agent","coding","cli","llm","openrouter","terminal","code-assistant"],"license":"MIT","_id":"@anastaha/codeforge@1.0.3","maintainers":[{"name":"anastaha","email":"anastaha.tech@gmail.com"}],"bin":{"codeforge":"dist/index.js"},"dist":{"shasum":"046407a32bf341c11eec2a8a0b1d681a04dc7c68","tarball":"https://registry.npmjs.org/@anastaha/codeforge/-/codeforge-1.0.3.tgz","fileCount":3,"integrity":"sha512-Q6543cUvqoU5192NyqCUbgiAgzSZ0u7CpoC775W8HoivE0ESwASA2R2TZanqrTLSqhPPo4EzXl8sASeBxtB7WQ==","signatures":[{"sig":"MEUCIQCMrXpzu0h8yfczOV1si7WW6B42MyKy2FGTHzItIqkhtwIgCAJPS2E9CClyMyDaAlGlwAsUfDp+QrLcwDRQs6R/pAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19525},"type":"module","engines":{"node":">=18"},"gitHead":"ae01656b24e6148cdad83dd946bf70594b388386","scripts":{"dev":"npx tsx src/index.tsx","test":"vitest run","build":"tsc && node esbuild.config.js","start":"npx tsx src/index.tsx","test:watch":"vitest","prepublishOnly":"tsc && node esbuild.config.js"},"_npmUser":{"name":"anastaha","email":"anastaha.tech@gmail.com"},"_npmVersion":"11.3.0","description":"AI coding agent CLI — reads, edits, and runs commands in your repo via LLM","directories":{},"_nodeVersion":"22.15.0","dependencies":{"ink":"^5.1.0","chalk":"^5.3.0","react":"^18.3.1","dotenv":"^16.6.1","openai":"^4.77.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","esbuild":"^0.27.3","typescript":"^5.7.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/codeforge_1.0.3_1773018568358_0.03064725765664278","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@anastaha/codeforge","version":"1.0.4","keywords":["ai","agent","coding","cli","llm","openrouter","terminal","code-assistant"],"license":"MIT","_id":"@anastaha/codeforge@1.0.4","maintainers":[{"name":"anastaha","email":"anastaha.tech@gmail.com"}],"bin":{"codeforge":"dist/index.js"},"dist":{"shasum":"c35118234a328ded4b005b28a546e54cd73c26e9","tarball":"https://registry.npmjs.org/@anastaha/codeforge/-/codeforge-1.0.4.tgz","fileCount":3,"integrity":"sha512-COZJOhplxRQDGiXJsdS5DdYtk60Mu9mvf0w555edLc9Zzt/0cgsQ7j2YCNQhToHRMg6lXOFNFKe4cvT10EphpQ==","signatures":[{"sig":"MEQCIDwo+VXVIW7qwD/Dtj/riVmVGl4x3x8YePqvaysqKT7HAiA/H9YrRBTzJpDQBjggpgh7M932mqsPY4YvmJTxd2yWQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19533},"type":"module","engines":{"node":">=20"},"gitHead":"5394b42b61caa85cae4b54d36a681d725530577d","scripts":{"dev":"npx tsx src/index.tsx","test":"vitest run","build":"tsc && node esbuild.config.js","start":"npx tsx src/index.tsx","test:watch":"vitest","prepublishOnly":"tsc && node esbuild.config.js"},"_npmUser":{"name":"anastaha","email":"anastaha.tech@gmail.com"},"_npmVersion":"10.8.2","description":"AI coding agent CLI — reads, edits, patches and runs commands in your repo via LLM","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ink":"^5.1.0","chalk":"^5.3.0","react":"^18.3.1","dotenv":"^16.6.1","openai":"^4.77.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","esbuild":"^0.27.3","typescript":"^5.7.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/codeforge_1.0.4_1773020537108_0.6484891985731078","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@anastaha/codeforge","version":"1.1.0","description":"AI coding agent CLI — reads, edits, patches and runs commands in your repo via LLM","type":"module","bin":{"codeforge":"dist/index.js"},"scripts":{"start":"npx tsx src/index.tsx","build":"tsc && node esbuild.config.js","dev":"npx tsx src/index.tsx","prepublishOnly":"tsc && node esbuild.config.js","test":"vitest run","test:watch":"vitest"},"keywords":["ai","agent","coding","cli","llm","openrouter","terminal","code-assistant"],"license":"MIT","engines":{"node":">=20"},"dependencies":{"chalk":"^5.3.0","dotenv":"^16.6.1","ink":"^5.1.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","openai":"^4.77.0","react":"^18.3.1"},"devDependencies":{"@types/react":"^18.3.0","esbuild":"^0.27.3","tsx":"^4.19.0","typescript":"^5.7.0","vitest":"^4.0.18"},"_id":"@anastaha/codeforge@1.1.0","gitHead":"b487da41a99540078d17b175cc0e7b7f0389a14a","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-01wrsKq6TLr+1zE+o6wskvuw5I3tkVBPIo2XaJ8ScZhM5DO6taJcQhGcR69PPUELEM0qnNMXC3MqLpYYCC+xGw==","shasum":"f90305aa325e164f665e7877095cff8f48318606","tarball":"https://registry.npmjs.org/@anastaha/codeforge/-/codeforge-1.1.0.tgz","fileCount":5,"unpackedSize":26866,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIB4GpDJS/XmnqoTXsWat+TLt8G42k/t1U0xr2GS+qN4LAiBUslxC2UiUp4nhsy6tiZ2xOOFVzyczvLrjubuR5tsG8w=="}]},"_npmUser":{"name":"anastaha","email":"anastaha.tech@gmail.com"},"directories":{},"maintainers":[{"name":"anastaha","email":"anastaha.tech@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/codeforge_1.1.0_1773057952538_0.6966976187918432"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-09T00:58:42.886Z","modified":"2026-03-09T12:05:52.821Z","1.0.0":"2026-03-09T00:58:43.129Z","1.0.1":"2026-03-09T01:01:46.718Z","1.0.2":"2026-03-09T01:06:15.478Z","1.0.3":"2026-03-09T01:09:28.507Z","1.0.4":"2026-03-09T01:42:17.247Z","1.1.0":"2026-03-09T12:05:52.695Z"},"license":"MIT","keywords":["ai","agent","coding","cli","llm","openrouter","terminal","code-assistant"],"description":"AI coding agent CLI — reads, edits, patches and runs commands in your repo via LLM","maintainers":[{"name":"anastaha","email":"anastaha.tech@gmail.com"}],"readme":"# @anastaha/codeforge\n\nAI coding agent that runs in your terminal. It reads, edits, and runs commands in your repo using LLMs.\n\n## Install\n\n```bash\nnpm install -g @anastaha/codeforge\n```\n\n## Setup\n\n1. Get a free API key from [OpenRouter](https://openrouter.ai/keys)\n2. Set the key:\n\n```bash\nexport LLM_API_KEY=your-key-here\n```\n\n3. Run in any git repo:\n\n```bash\ncodeforge\n```\n\n## What it can do\n\n- **Read & Edit** files with surgical precision\n- **Search** your codebase (glob patterns, regex grep)\n- **Run** shell commands (git, npm, tests, builds)\n- **Search the web** for docs and solutions\n- **Delegate** tasks to sub-agents that work in parallel\n- **Stream** responses in real-time\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| `Read` | Read file contents |\n| `Edit` | Find & replace exact strings in files |\n| `Write` | Create or overwrite files |\n| `Glob` | Find files by pattern |\n| `Grep` | Search file contents by regex |\n| `ListDirectory` | List directory contents |\n| `Bash` | Run shell commands |\n| `WebSearch` | Search the web |\n| `Delegate` | Spawn a sub-agent for parallel tasks |\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `/help` | Show commands |\n| `/model <name>` | Switch LLM model |\n| `/reset` | Reset conversation |\n| `/compact` | Compact message history |\n| `/clear` | Clear screen |\n| `/quit` | Exit |\n\n## Configuration\n\nSet via environment variables or `.env` file:\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `LLM_API_KEY` | — | **Required.** OpenRouter API key |\n| `CODEFORGE_MODEL` | `nvidia/nemotron-3-nano-30b-a3b:free` | LLM model to use |\n| `CODEFORGE_TIMEOUT` | `120` | API timeout (seconds) |\n| `CODEFORGE_BASH_TIMEOUT` | `120` | Shell command timeout (seconds) |\n| `CODEFORGE_MAX_ROUNDS` | `25` | Max tool call rounds per query |\n| `LANGSEARCH_API_KEY` | — | Optional. For web search |\n\n## License\n\nMIT\n","readmeFilename":"README.md"}