{"_id":"c-ai-agent","name":"c-ai-agent","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"c-ai-agent","version":"0.1.0","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"c-ai-agent":"dist/index.js","canvas-agent":"dist/index.js"},"scripts":{"dev":"tsx src/index.ts","build":"tsc -p tsconfig.json","start":"node dist/index.js","prepack":"npm run build"},"dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","@openai/codex":"^0.139.0","express":"^5.1.0","zod":"^3.25.0"},"devDependencies":{"@types/express":"^5.0.0","@types/node":"^22.0.0","tsx":"^4.19.0","typescript":"^5.8.0"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"_id":"c-ai-agent@0.1.0","gitHead":"b2d5924d29728aee284a731b113343136bd9bd3c","description":"C-ai Agent 用来连接线上画布网页和用户电脑上的 Codex / Claude Code。","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-mV1YRQ5a8cv4Ho3jLjinO7VnrvXwGh7G99dqs1G/q0PFpx608x9AIrooCFGM7JMzwiWNycGUGJYdd28XwCOtkw==","shasum":"eb065dd958a28f987a5aad299c78369e11dd60e7","tarball":"https://registry.npmjs.org/c-ai-agent/-/c-ai-agent-0.1.0.tgz","fileCount":20,"unpackedSize":103504,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIG5JLgOqQ17n1AeQL2kuX7z9pl+QOoHjmVyom9YtUuPsAiBs9HjV8l92c4ug0EHwg6FOzNUefV0JrmWgvtvTiejKfw=="}]},"_npmUser":{"name":"cangerx","email":"dingwxs@gmail.com"},"directories":{},"maintainers":[{"name":"cangerx","email":"dingwxs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/c-ai-agent_0.1.0_1781870188772_0.31911853790399247"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-19T11:56:28.583Z","0.1.0":"2026-06-19T11:56:28.925Z","modified":"2026-06-19T11:56:29.152Z"},"maintainers":[{"name":"cangerx","email":"dingwxs@gmail.com"}],"description":"C-ai Agent 用来连接线上画布网页和用户电脑上的 Codex / Claude Code。","readme":"# C-ai Agent\n\nC-ai Agent 用来连接线上画布网页和用户电脑上的 Codex / Claude Code。\n\n## 启动\n\n```bash\nnpx -y c-ai-agent\n```\n\n本仓库开发时也可以直接运行：\n\n```bash\ncd canvas-agent\nnpm install\nnpm run build\nnode dist/index.js\n```\n\n启动后会输出本机地址和 token：\n\n```txt\nLocal URL: http://127.0.0.1:17371\nConnect token: xxxxxx\n```\n\n在画布右上角点击 `Agent`，填入地址和 token 后连接。\n\nC-ai Agent 默认只监听 `127.0.0.1`。网页第一次带正确 token 连接后，C-ai Agent 会记录该网页 Origin；之后其他 Origin 不能复用这个 C-ai Agent，除非用户清理 `~/.infinite-canvas/canvas-agent.json` 里的 `origins`。\n\n## 发布\n\n`c-ai-agent` 使用自己的 `package.json` 版本号，不跟仓库根目录 `VERSION` 绑定。推送到 `main` 后，GitHub Actions 会检查 npm 上是否已经存在当前包版本；不存在时才发布 `c-ai-agent`。\n\n发布前需要在 GitHub 仓库 Secrets 中配置 `NPM_TOKEN`。\n\n## Codex MCP\n\n如果希望 Codex 终端能直接操作画布，需要先把 C-ai Agent 注册成 Codex MCP。\n\nC-ai Agent 启动后，给 Codex 添加 MCP：\n\n```bash\ncodex mcp add infinite-canvas -- npx -y c-ai-agent mcp\n```\n\n本仓库开发时可以改成，实际使用建议替换为本机绝对路径：\n\n```bash\ncodex mcp add infinite-canvas -- node /path/to/infinite-canvas/canvas-agent/dist/index.js mcp\n```\n\nC-ai Agent 源码使用 TypeScript 编写，MCP 协议层使用官方 `@modelcontextprotocol/sdk`，工具入参使用 `zod` 描述。\n\n如果希望终端里的 Codex 不被 MCP 审批卡住，可以在 `~/.codex/config.toml` 里给这个 MCP 设置自动放行：\n\n```toml\n[mcp_servers.infinite-canvas]\ncommand = \"npx\"\nargs = [\"-y\", \"c-ai-agent\", \"mcp\"]\ndefault_tools_approval_mode = \"approve\"\n```\n\n可用工具：\n\n- `canvas_get_state`\n- `canvas_get_selection`\n- `canvas_export_snapshot`\n- `canvas_apply_ops`\n- `canvas_create_text_node`\n- `canvas_create_image_prompt_flow`\n\n`canvas_apply_ops` 示例：\n\n```json\n{\n  \"ops\": [\n    {\n      \"type\": \"add_node\",\n      \"nodeType\": \"text\",\n      \"title\": \"标题\",\n      \"position\": { \"x\": 0, \"y\": 0 },\n      \"metadata\": { \"content\": \"文本内容\" }\n    }\n  ]\n}\n```\n\n## 侧边栏 Codex\n\n本地面板会把提示词发送给 C-ai Agent。C-ai Agent 使用官方 `@openai/codex` CLI 的 `codex app-server --stdio` 启动并复用同一个 Codex thread，启动时会注入 `infinite-canvas` MCP 配置并自动放行 MCP 审批，真正执行画布修改前仍由网页侧边栏二次确认。\n\n侧边栏会展示 Codex 返回的 `thread.started`、`turn.started`、`item.*`、`turn.completed` 等结构化事件；收到 app-server 的 `item/agentMessage/delta` 时，C-ai Agent 会转成 `item.updated`，网页会用同一条消息做真实流式更新，并把工具细节收进运行日志。\n\n侧边栏上传或粘贴的图片会先发到本机 C-ai Agent，再由 C-ai Agent 临时写入本机文件并作为 app-server `localImage` 输入传给 Codex；前端会提示附件体积，单次请求体限制为 30MB。\n\n## Claude Code\n\nClaude Code Adapter 代码暂时保留，但当前网页侧边栏只开放 Codex。后续开放 Claude 入口时，C-ai Agent 会调用本机 `claude -p --output-format stream-json` 并把流式 JSON 事件转发到侧边栏。\n\n如果希望 Claude Code 也能操作画布，需要给 Claude Code 添加同一个 MCP。建议用 user scope，避免 C-ai Agent 从不同目录启动时找不到配置：\n\n```bash\nclaude mcp add --scope user --transport stdio infinite-canvas -- npx -y c-ai-agent mcp\n```\n\n本仓库开发时可以改成：\n\n```bash\nclaude mcp add --scope user --transport stdio infinite-canvas -- node /path/to/infinite-canvas/canvas-agent/dist/index.js mcp\n```\n\nC-ai Agent 调用 Claude Code 时会默认带上 `--allowedTools mcp__infinite-canvas__*`，画布写操作仍由网页侧边栏确认。\n","readmeFilename":"README.md","_rev":"1-ba116a60528aa5437e0339a559deb12f"}