{"_id":"@boltdoggy/boli","_rev":"5-9458d7e580a1afdf6bca9a54c3d3caea","name":"@boltdoggy/boli","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@boltdoggy/boli","version":"0.1.0","keywords":[],"author":"","license":"ISC","_id":"@boltdoggy/boli@0.1.0","maintainers":[{"name":"lc60005457","email":"lc60005457@163.com"}],"bin":{"boli":"bin/boli.js"},"dist":{"shasum":"d1a932c60e756a92bec174c1c9c03121feb0fc2e","tarball":"https://registry.npmjs.org/@boltdoggy/boli/-/boli-0.1.0.tgz","fileCount":8,"integrity":"sha512-5ssdXtunGSu81wIpgMgXx5CtTijYpIByl+Kz9lHlwY1GxPQwAluIYXICr9WIg0YmdvY+PVBqZeJyJyngtSOvQg==","signatures":[{"sig":"MEYCIQDE2fI2zpxXKDPJEr1eeho9iCLSlXgzV2xoCxuLJXptaAIhAJ2oIVEloPUdIpI9s3D8nGxLNtH9q2JvE4kBZ8ylCSuP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3432805},"main":"dist/index.js","type":"module","gitHead":"92bae1d6a203ea5c8abf76844f6dc22245030f75","scripts":{"dev":"bun run src/cmd/cli.ts","test":"echo \"Error: no test specified\" && exit 1","build":"bun build src/cmd/cli.ts --outfile dist/index.js --target bun --external ink --external react"},"_npmUser":{"name":"lc60005457","email":"lc60005457@163.com"},"_npmVersion":"11.9.0","description":"AI coding assistant in your terminal","directories":{},"_nodeVersion":"24.14.0","dependencies":{"bun":"^1.3.12","ink":"^7.0.0","react":"^19.2.5"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.2","devDependencies":{"js-yaml":"^4.1.1","commander":"^14.0.3","fast-glob":"^3.3.3","@types/bun":"^1.3.12","typescript":"^6.0.2","@types/node":"^25.6.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","@anthropic-ai/sdk":"^0.89.0"},"_npmOperationalInternal":{"tmp":"tmp/boli_0.1.0_1776338632158_0.8632034774794064","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@boltdoggy/boli","version":"0.1.1","keywords":[],"author":"","license":"ISC","_id":"@boltdoggy/boli@0.1.1","maintainers":[{"name":"lc60005457","email":"lc60005457@163.com"}],"bin":{"boli":"bin/boli.js"},"dist":{"shasum":"9990ff85af08356be7638aa6f2ee51554118e187","tarball":"https://registry.npmjs.org/@boltdoggy/boli/-/boli-0.1.1.tgz","fileCount":4,"integrity":"sha512-5zyAM2LIi2hnfEnfWJ1lFIfkiCow58FAiuJ/wnWxDJhNP8JYL1EbwatyJOHJzos1sVu2z7L2jpXkDKRhW73XyA==","signatures":[{"sig":"MEQCIHMt9i6d8IUzJP7MZ6BZ1jckB9OGa/LNFe38tJ57b/OMAiBAKQL8MslSAXq1dCGmNqg9JZjhdEr8iZe1JgHJDfrShg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8710},"main":"dist/index.js","type":"module","gitHead":"0805c5903145ec6532ff9cb2c0aa23abe24b65cf","scripts":{"dev":"bun run src/cmd/cli.ts","test":"echo \"Error: no test specified\" && exit 1","build":"bun build src/cmd/cli.ts --outfile dist/index.js --target bun --external ink --external react"},"_npmUser":{"name":"lc60005457","email":"lc60005457@163.com"},"_npmVersion":"11.9.0","description":"AI coding assistant in your terminal","directories":{},"_nodeVersion":"24.14.0","dependencies":{"bun":"^1.3.12","ink":"^7.0.0","react":"^19.2.5"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.2","devDependencies":{"js-yaml":"^4.1.1","commander":"^14.0.3","fast-glob":"^3.3.3","@types/bun":"^1.3.12","typescript":"^6.0.2","@types/node":"^25.6.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","@anthropic-ai/sdk":"^0.89.0"},"_npmOperationalInternal":{"tmp":"tmp/boli_0.1.1_1776339246157_0.5297757876775828","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@boltdoggy/boli","version":"0.1.2","keywords":[],"author":"","license":"ISC","_id":"@boltdoggy/boli@0.1.2","maintainers":[{"name":"lc60005457","email":"lc60005457@163.com"}],"bin":{"boli":"bin/boli.js"},"dist":{"shasum":"b1e8c8d49dc089267cb1de62f9d90dd12b12233f","tarball":"https://registry.npmjs.org/@boltdoggy/boli/-/boli-0.1.2.tgz","fileCount":5,"integrity":"sha512-MUxP884r2Db5zsrDjpBP43dESCN711uU52vdjFZzfualNKh1K0cf4+k0kQyUI64uyufmk0p/VEK5TIX2JnJBHg==","signatures":[{"sig":"MEUCIBwno6yJp6j2quBclDJRYQn5bXpMvRrmlNZYuimEcCj/AiEArJDRtxwvyRf7qCS95A9IC+fGb+30Fy8/jnmfPEKJ2QU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":575503},"main":"dist/index.js","type":"module","gitHead":"35e13b7530fc0ed180fd872434046404b7539357","scripts":{"dev":"bun run src/cmd/cli.ts","test":"echo \"Error: no test specified\" && exit 1","build":"bun build src/cmd/cli.ts --outfile dist/index.js --target bun --external ink --external react","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"lc60005457","email":"lc60005457@163.com"},"_npmVersion":"11.9.0","description":"AI coding assistant in your terminal","directories":{},"_nodeVersion":"24.14.0","dependencies":{"bun":"^1.3.12","ink":"^7.0.0","react":"^19.2.5"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.2","devDependencies":{"js-yaml":"^4.1.1","commander":"^14.0.3","fast-glob":"^3.3.3","@types/bun":"^1.3.12","typescript":"^6.0.2","@types/node":"^25.6.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","@anthropic-ai/sdk":"^0.89.0"},"_npmOperationalInternal":{"tmp":"tmp/boli_0.1.2_1776339326729_0.19728557071710529","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@boltdoggy/boli","version":"0.1.3","keywords":[],"author":"","license":"ISC","_id":"@boltdoggy/boli@0.1.3","maintainers":[{"name":"lc60005457","email":"lc60005457@163.com"}],"bin":{"boli":"bin/boli.js"},"dist":{"shasum":"759986583254fa8805cbb50c384fc44c88c2f2ba","tarball":"https://registry.npmjs.org/@boltdoggy/boli/-/boli-0.1.3.tgz","fileCount":5,"integrity":"sha512-ZJiEPwBplFW9a1l+6lo1ORjrNe186+Z6QuhtXZpry9qzhL+s+OL3/WOAQn8xzmQ9GmxcpTEw5woq/MGWjRDR2g==","signatures":[{"sig":"MEQCIDTWgTCLaJZR91EzOwvtmBQMuEWia8Fd1nUXWcpPydY2AiB2VcAAqENKPG43wUXqRyRr8o7snVnErPGWMhfZXaei3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":576548},"main":"dist/index.js","type":"module","gitHead":"f8520aefdeb7755fbf0f275b5a9feddcf3f3f86e","scripts":{"dev":"bun run src/cmd/cli.ts","test":"echo \"Error: no test specified\" && exit 1","build":"bun build src/cmd/cli.ts --outfile dist/index.js --target bun --external ink --external react","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"lc60005457","email":"lc60005457@163.com"},"_npmVersion":"11.9.0","description":"AI coding assistant in your terminal","directories":{},"_nodeVersion":"24.14.0","dependencies":{"bun":"^1.3.12","ink":"^7.0.0","react":"^19.2.5"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.2","devDependencies":{"js-yaml":"^4.1.1","commander":"^14.0.3","fast-glob":"^3.3.3","@types/bun":"^1.3.12","typescript":"^6.0.2","@types/node":"^25.6.0","@types/react":"^19.2.14","@types/js-yaml":"^4.0.9","@anthropic-ai/sdk":"^0.89.0"},"_npmOperationalInternal":{"tmp":"tmp/boli_0.1.3_1776339730782_0.7306808206561086","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@boltdoggy/boli","version":"0.1.4","description":"AI coding assistant in your terminal","type":"module","main":"dist/index.js","bin":{"boli":"bin/boli.js"},"scripts":{"dev":"bun run src/cmd/cli.ts","build":"bun build src/cmd/cli.ts --outfile dist/index.js --target bun --external ink --external react","prepublishOnly":"pnpm run build","test":"echo \"Error: no test specified\" && exit 1"},"keywords":[],"author":"","license":"ISC","packageManager":"pnpm@10.30.2","dependencies":{"bun":"^1.3.12","ink":"^7.0.0","react":"^19.2.5"},"devDependencies":{"@anthropic-ai/sdk":"^0.89.0","@types/bun":"^1.3.12","@types/js-yaml":"^4.0.9","@types/node":"^25.6.0","@types/react":"^19.2.14","commander":"^14.0.3","fast-glob":"^3.3.3","js-yaml":"^4.1.1","typescript":"^6.0.2"},"gitHead":"0b6a67c81454ce3faa01744afeb507cbce3d68bb","_id":"@boltdoggy/boli@0.1.4","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-Ik9NMeC+kR3nRVMKNDbBRvDqzZD/Vg636t564IBmpiysmrYekJd7qa7mChh99Oi5F/hH93VeE642Ui7ti5h6/A==","shasum":"46dd8e2f51d5e86552176b36a70a5734e9dfd6cb","tarball":"https://registry.npmjs.org/@boltdoggy/boli/-/boli-0.1.4.tgz","fileCount":5,"unpackedSize":576541,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDNVQjQhX6sFaBL7JcfPOSd7d8ikP1572ClsO46Xi1saQIgExtCjKu09KiXXR3vYWp22WOiK3kM7PPsCyMp6FY+tGA="}]},"_npmUser":{"name":"lc60005457","email":"lc60005457@163.com"},"directories":{},"maintainers":[{"name":"lc60005457","email":"lc60005457@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/boli_0.1.4_1776339938371_0.8627561949344817"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-16T11:23:52.019Z","modified":"2026-04-16T11:45:38.651Z","0.1.0":"2026-04-16T11:23:52.398Z","0.1.1":"2026-04-16T11:34:06.292Z","0.1.2":"2026-04-16T11:35:26.924Z","0.1.3":"2026-04-16T11:42:10.953Z","0.1.4":"2026-04-16T11:45:38.534Z"},"license":"ISC","keywords":[],"description":"AI coding assistant in your terminal","maintainers":[{"name":"lc60005457","email":"lc60005457@163.com"}],"readme":"# boli\n\n一个受 Claude Code 启发的智能命令行助手。\n\n> 想了解更多背景？参见 [产品介绍](docs/guides/product.md)。<br>\n> 想了解文档驱动开发在本项目中的实践？参见 [Showcase 说明](docs/guides/showcase.md)。\n\n## 功能特性\n\n- **单次模式**：直接执行单次任务，无上下文保留\n- **REPL 模式**：持续对话，支持上下文和输入历史（上下键切换）\n- **工具调用**：读文件、写文件、编辑、搜索、执行 Shell、向用户提问\n- **内置 Skills**：`/init`、`/loop`、`/commit` 等快捷命令\n- **流式 TUI**：基于 Ink 的终端交互界面\n\n## 环境要求\n\n- [Bun](https://bun.sh/)\n- [pnpm](https://pnpm.io/)\n- `ANTHROPIC_API_KEY` 环境变量（或放在 `.env` 文件中）\n\n## 安装与使用\n\n### 从 npm 安装\n\n```bash\n# 全局安装\nnpm install -g @boltdoggy/boli\n\n# 单次模式\nboli \"帮我写一个快速排序\"\n\n# 单次模式，不注入项目上下文\nboli --no-context \"帮我写一个快速排序\"\n\n# REPL 模式\nboli\n```\n\n不想全局安装时，也可以用 `npx`：\n\n```bash\nnpx @boltdoggy/boli \"帮我写一个快速排序\"\n```\n\n### 从源码开发\n\n```bash\n# 安装依赖\npnpm install\n\n# 从源码直接运行（无需构建）\nbun run src/cmd/cli.ts \"帮我写一个快速排序\"\n\n# 构建产物\npnpm run build\n\n# 用 pnpm 链接本地包进行测试\npnpm link --global\nboli \"帮我写一个快速排序\"\n```\n\n## 项目架构\n\n```\nsrc/\n├── cmd/           # CLI 入口与参数解析\n├── domain/        # 核心领域模型（message、session、skill、tool）\n├── infra/         # 基础设施（LLM、文件系统、Shell、配置、持久化）\n├── interactive/   # Ink 交互界面（REPL、用户输入、流式渲染）\n└── skills/        # 内置 skill 实现\n```\n\n- **domain 层**：纯业务逻辑，无框架依赖\n- **infra 层**：对接外部系统，隔离实现细节\n- **interactive 层**：负责所有终端交互\n\n## 开发指引\n\n```bash\n# 从源码直接运行（无需构建）\nbun run src/cmd/cli.ts \"帮我写一个快速排序\"\n\n# 开发运行 REPL 模式\npnpm run dev\n\n# 类型检查\npnpm exec tsc --noEmit\n\n# 构建\npnpm run build\n```\n\n### 添加新 Skill\n\n1. 在 `src/domain/skill.ts` 中定义 Skill 接口与元数据\n2. 在 `src/skills/` 下实现具体逻辑\n3. 在 `src/agent/skill-registry.ts` 中注册\n\n## 相关文档\n\n| 文档 | 说明 |\n|------|------|\n| [docs/guides/product.md](docs/guides/product.md) | 产品定位与核心能力介绍 |\n| [docs/guides/showcase.md](docs/guides/showcase.md) | 文档驱动开发实践说明 |\n| [docs/requirements/cli-tool-requirements.md](docs/requirements/cli-tool-requirements.md) | CLI 工具需求文档 |\n| [docs/design/cli-tool-design.md](docs/design/cli-tool-design.md) | CLI 工具架构设计 |\n| [docs/adr/](docs/adr/) | 架构决策记录 |\n\n## 当前状态\n\n| 功能/变更 | 状态 |\n|-----------|------|\n| CLI 工具 MVP（单次/REPL 模式、基础工具调用） | ✅ 已完成 |\n| P1 增强（`/init`、`/loop`、输入历史） | ✅ 已完成 |\n| 测试框架引入 | ⬜ 待进行 |\n| 打包分发 | ⬜ 待进行 |\n\n---\n\n*本仓库遵循严格的文档驱动开发流程，详见 [CLAUDE.md](CLAUDE.md) 与 [docs/guides/showcase.md](docs/guides/showcase.md)。*\n","readmeFilename":"README.md"}