{"_id":"@anygen/cli","_rev":"2-4217fd863780e5f370396510de8a5090","name":"@anygen/cli","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@anygen/cli","version":"0.1.0","keywords":["cli","anygen","ppt","doc","image","diagram","ai-agent","agent-skills"],"license":"MIT","_id":"@anygen/cli@0.1.0","maintainers":[{"name":"anygen.io","email":"anygen.ai@gmail.com"}],"homepage":"https://www.anygen.io/","bugs":{"url":"https://github.com/AnyGenIO/anygen-cli/issues"},"bin":{"anygen":"bin/anygen.js"},"dist":{"shasum":"39a17445d557a8fc77b5aba713a876e3c4bab020","tarball":"https://registry.npmjs.org/@anygen/cli/-/cli-0.1.0.tgz","fileCount":51,"integrity":"sha512-QU+lFfEAd94OXEKyfKuh/zqXtjutUuVy6R0si5E1JC0Xud6W+6lMFIH4Np3f4k37Bc36YGtJHbnh3o6TrFoTyw==","signatures":[{"sig":"MEUCIHT7Vq5Y2NjJsLYDSikgnHgg7m4GNUYcSK/uPWUuZ9BDAiEA/qxE8w9/ZYU9E00Qh08HylfFnWl3hTNyv63gLFQYpI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":152065},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"0a668b781f62b75f0bcdc2b4f9d8804eb96250b5","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"tsc","start":"node dist/index.js","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"rm -rf dist && npm run build && npm test"},"_npmUser":{"name":"anygen.io","email":"anygen.ai@gmail.com"},"repository":{"url":"git+https://github.com/AnyGenIO/anygen-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"AnyGen CLI - AI-powered content generation platform","directories":{},"_nodeVersion":"24.13.0","dependencies":{"yaml":"^2.7.0","commander":"^13.1.0","playwright-core":"^1.50.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^4.1.0","typescript":"^5.7.0","@types/node":"^22.13.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.0_1774358930747_0.026768959051451935","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@anygen/cli","version":"0.1.1","description":"AnyGen CLI - AI-powered content generation platform","type":"module","bin":{"anygen":"bin/anygen.js"},"scripts":{"dev":"tsx src/index.ts","build":"tsc","prepublishOnly":"rm -rf dist && npm run build && npm test","start":"node dist/index.js","lint":"eslint src/","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest"},"keywords":["cli","anygen","ppt","doc","image","diagram","ai-agent","agent-skills"],"repository":{"type":"git","url":"git+https://github.com/AnyGenIO/anygen-cli.git"},"homepage":"https://www.anygen.io/","license":"MIT","publishConfig":{"access":"public"},"engines":{"node":">=18.0.0"},"dependencies":{"commander":"^13.1.0","playwright-core":"^1.50.0","yaml":"^2.7.0"},"devDependencies":{"@types/node":"^22.13.0","tsx":"^4.19.0","typescript":"^5.7.0","vitest":"^4.1.0"},"gitHead":"5e2ee3a94e642649befc8e45ec5b3a031c3932df","_id":"@anygen/cli@0.1.1","bugs":{"url":"https://github.com/AnyGenIO/anygen-cli/issues"},"_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-cJO4qDOw4VTnNv9HaEENZ/Cfd9Fkzr85Oj3Hz6F46tmG+NXduq7PQmk9cDkULM3M6+Sz74R8PK0zxyEhaZzj2Q==","shasum":"af62607424928e5eb37d0462a5cc0dd25c6d45ac","tarball":"https://registry.npmjs.org/@anygen/cli/-/cli-0.1.1.tgz","fileCount":55,"unpackedSize":158035,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCID/6GeYghFdYYin7+hF3+ryvSatDvMF0pFr4oQkG0QV7AiAizD/HuPd+TZlw+TOKigN7eK3WoSrApWjhCigYPa9kYg=="}]},"_npmUser":{"name":"anygen.io","email":"anygen.ai@gmail.com"},"directories":{},"maintainers":[{"name":"anygen.io","email":"anygen.ai@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_0.1.1_1777458519857_0.12036504409073334"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-24T13:28:50.611Z","modified":"2026-04-29T10:28:40.093Z","0.1.0":"2026-03-24T13:28:50.917Z","0.1.1":"2026-04-29T10:28:39.986Z"},"bugs":{"url":"https://github.com/AnyGenIO/anygen-cli/issues"},"license":"MIT","homepage":"https://www.anygen.io/","keywords":["cli","anygen","ppt","doc","image","diagram","ai-agent","agent-skills"],"repository":{"type":"git","url":"git+https://github.com/AnyGenIO/anygen-cli.git"},"description":"AnyGen CLI - AI-powered content generation platform","maintainers":[{"name":"anygen.io","email":"anygen.ai@gmail.com"}],"readme":"# AnyGen CLI\n\n[AnyGen](https://www.anygen.io) AI 驱动的内容生成平台命令行工具。\n\n从 Discovery Document 自动生成命令，结构化 JSON 输出，适合 AI Agent 集成。\n\n### 支持的内容类型\n\n| 类型 | 操作 | 说明 |\n|------|------|------|\n| 幻灯片 / PPT | `slide` | 路演、汇报、培训材料、产品发布 |\n| 文档 | `doc` | 技术设计文档、PRD、白皮书、SOP |\n| 图表 | `smart_draw` | 架构图、流程图、思维导图、ER 图、UML |\n| 研究报告 | `deep_research` | 行业分析、市场规模、竞争格局 |\n| 数据分析 | `data_analysis` | CSV 分析、图表、仪表盘、KPI 追踪 |\n| 财务研究 | `finance` | 财报分析、股票研究、公司估值 |\n| 绘本 | `storybook` | 插图故事、漫画、儿童绘本 |\n| 网站 | `website` | 落地页、产品页、个人作品集 |\n| 图片设计 | `ai_designer` | 海报、Banner、社交媒体图、营销素材 |\n\n运行 `anygen task operations` 查看完整列表。\n\n## 安装\n\n```bash\nnpm install -g @anygen/cli\n```\n\n需要 Node.js >= 18。\n\n## 快速开始\n\n```bash\n# 1. 认证\nanygen auth login\n\n# 2. 创建任务\nanygen task create --data '{\"operation\":\"slide\",\"prompt\":\"Q4 季度汇报\"}'\n\n# 3. 等待完成\nanygen task get --params '{\"task_id\":\"xxx\"}' --wait\n\n# 4. 下载产物\nanygen task +download --task-id xxx\n```\n\n## 认证\n\n```bash\nanygen auth login                  # Web 登录（交互式，等待浏览器授权）\nanygen auth login --no-wait        # Web 登录（非阻塞，返回授权 URL）\nanygen auth login --api-key sk-xxx # 直接设置 API Key\nexport ANYGEN_API_KEY=sk-xxx       # 环境变量\n\nanygen auth status                 # 查看当前认证状态\nanygen auth logout                 # 移除已存储的 Key\n```\n\n优先级：`--api-key` flag > `ANYGEN_API_KEY` 环境变量 > 配置文件 (`~/.config/anygen/config.json`)。\n\n## 命令\n\n### 动态命令（从 API 自动生成）\n\n```bash\n# 创建任务（POST → --data）\nanygen task create --data '{\"operation\":\"slide\",\"prompt\":\"Q4 deck\"}'\n\n# 查询任务（URL 参数 → --params）\nanygen task get --params '{\"task_id\":\"xxx\"}'\n\n# 发送修改（URL 参数 + 请求体 → --params + --data）\nanygen task message send --params '{\"task_id\":\"xxx\"}' --data '{\"content\":\"修改标题\"}'\n\n# 上传文件\nanygen file upload --data '{\"file\":\"./data.csv\"}'\n\n# 轮询等待完成\nanygen task get --params '{\"task_id\":\"xxx\"}' --wait\n```\n\n### Helper 命令\n\n```bash\n# 下载已完成任务的产物\nanygen task +download --task-id xxx --output-dir ./output\n\n# 下载缩略图预览\nanygen task +download --task-id xxx --thumbnail\n```\n\n### Schema 内省\n\n```bash\n# JSON 输出\nanygen schema task.create\n\n# 带颜色的可读格式（必填标记、枚举值）\nanygen schema task.create --pretty\n\n# Dry run —— 预览请求但不发送\nanygen task create --data '{\"operation\":\"slide\",\"prompt\":\"测试\"}' --dry-run\n```\n\n### Skill 安装\n\n```bash\n# 交互式 —— 箭头键选择平台\nanygen skill install\n\n# 非交互式 —— 所有平台\nanygen skill install -y\n\n# 指定平台\nanygen skill install --platform claude-code -y\n\n# 列出可用 Skill\nanygen skill list\n```\n\n## 选项\n\n| 选项 | 说明 |\n|------|------|\n| `--params <json>` | URL/路径参数（JSON 格式） |\n| `--data <json>` | 请求体（JSON 格式，用于 POST/PUT） |\n| `--dry-run` | 预览请求但不发送 |\n| `--wait` | 轮询直到终态（task.get / message.list） |\n| `--timeout <ms>` | 轮询超时时间（毫秒） |\n\n## 错误处理\n\n所有错误输出结构化 JSON 到 stdout：\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"type\": \"validation\",\n    \"message\": \"Missing --data (required fields: operation, prompt)\",\n    \"hint\": \"Run: anygen schema task.create\"\n  }\n}\n```\n\n错误类型：`validation`、`auth`、`permission`、`rate_limit`、`api_error`、`network`、`internal`。\n\n详见 [docs/error-handling.md](docs/error-handling.md)。\n\n## 架构\n\n```\n┌──────────────────────────────────────────────────┐\n│                  CLI 入口 (commander)              │\n│  index.ts — auth | schema | skill                │\n├──────────┬───────────────────────────────────────┤\n│ Dynamic  │         Helper (+)                     │\n│ 命令     │         task +download                 │\n│(dynamic) │        (task-download)                  │\n├──────────┴───────────────────────────────────────┤\n│               execute.ts                          │\n│  认证 → 校验 → dry-run → callApi → 轮询 → 输出   │\n├──────────────────────────────────────────────────┤\n│               api/client + utils/download         │\n│  HTTP 客户端 · 路径参数 · 文件下载                  │\n├──────────────────────────────────────────────────┤\n│               基础设施                              │\n│  配置管理 · Auth · Discovery Doc 缓存              │\n└──────────────────────────────────────────────────┘\n```\n\n## 项目结构\n\n```\n├── src/\n│   ├── index.ts              # 入口，两阶段启动\n│   ├── version.ts            # CLI 版本（唯一来源）\n│   ├── errors.ts             # 错误类型、分类、JSON 输出\n│   ├── api/\n│   │   ├── client.ts         # HTTP 客户端（callApi）\n│   │   └── auth.ts           # 认证流程（不自动登录，接收 baseUrl）\n│   ├── commands/\n│   │   ├── auth-cmd.ts       # auth login/status/logout\n│   │   ├── dynamic.ts        # Discovery Document 驱动的命令注册\n│   │   ├── execute.ts        # 命令执行引擎（认证 → 校验 → 调用 → 输出）\n│   │   ├── schema-cmd.ts     # schema 命令（JSON + --pretty）\n│   │   ├── task-download.ts  # Helper: task +download\n│   │   ├── poll.ts           # 轮询工具（--wait）\n│   │   └── skill-cmd.ts      # skill install/list\n│   ├── config/\n│   │   ├── config.ts         # 配置加载（flag > env > file）\n│   │   └── internal-fields.ts # 隐藏字段配置\n│   ├── discovery/\n│   │   ├── client.ts         # Discovery Document 获取 + 缓存\n│   │   └── types.ts          # Discovery Document 类型定义\n│   ├── render/\n│   │   └── diagram.ts        # drawio/excalidraw → PNG 渲染\n│   ├── security/\n│   │   └── validate.ts       # URL/路径/文件名安全校验\n│   ├── skills/\n│   │   └── generator.ts      # SKILL.md 文件生成器\n│   └── utils/\n│       ├── download.ts       # 文件下载 + 安全校验\n│       └── prompt.ts         # 交互式提示（选择、多选、确认）\n├── skills/                   # 生成的 Skill 文件（随 npm 包发布）\n├── docs/\n│   ├── design-spec.md        # 设计规范\n│   ├── error-handling.md     # 错误处理架构\n│   └── testcase.md           # 测试用例\n└── package.json\n```\n\n## 环境变量\n\n| 变量 | 说明 |\n|------|------|\n| `ANYGEN_API_KEY` | 认证用的 API Key |\n\n## 开发\n\n```bash\nnpm install          # 安装依赖\nnpm run build        # 编译 TypeScript\nnpm test             # 运行测试\nnpx tsc --noEmit     # 仅类型检查\n\n# 开发模式（无需编译）\nnpx tsx src/index.ts task create --help\n```\n\n## License\n\nMIT\n","readmeFilename":"README.zh-CN.md"}