{"_id":"loopal-cli","_rev":"27-62c7b77b4ede8357e50deeac5e72b890","name":"loopal-cli","dist-tags":{"latest":"3.3.3"},"versions":{"3.1.1":{"name":"loopal-cli","version":"3.1.1","license":"UNLICENSED","_id":"loopal-cli@3.1.1","maintainers":[{"name":"svipc","email":"1803854237@qq.com"}],"bin":{"loopal":"dist/bin.js"},"dist":{"shasum":"13d38241152ddca8df9dee296844277e88c3c2f8","tarball":"https://registry.npmjs.org/loopal-cli/-/loopal-cli-3.1.1.tgz","fileCount":182,"integrity":"sha512-yXvuXaH6REgVhgEk9VX4VODsimaAd59nkpxlaEXvoeJeDklxw1ZtqzUu/R5gCRLNrKzG9Hq4pKbQWYNpg7FDjQ==","signatures":[{"sig":"MEUCIFpLjwBIYUHhaLOPjwQvRt6OiALSxQK+IsxMnoxIV7D+AiEAiK7YQVCpceJO4velTYXo5ZnpGTaVxHGAszb+W7aFvM8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":301701},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"ddae53faee7b7e40ca61596367209574e362a7cf","scripts":{"test":"pnpm build && node --test test/*.test.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/minify-build.mjs && node scripts/finalize-build.mjs","release":"node scripts/release.mjs --publish","pack:check":"pnpm build && npm pack --dry-run --cache /tmp/loopal-npm-cache","release:check":"node scripts/release.mjs --dry-run","prepublishOnly":"pnpm test"},"_npmUser":{"name":"svipc","email":"1803854237@qq.com"},"_npmVersion":"11.4.2","description":"Loopal command-line interface","directories":{},"_nodeVersion":"24.4.1","dependencies":{"jszip":"^3.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.12","typescript":"^5.9.3","@types/node":"^25.2.3"},"_npmOperationalInternal":{"tmp":"tmp/loopal-cli_3.1.1_1784888594339_0.02025211669965521","host":"s3://npm-registry-packages-npm-production"}},"3.1.2":{"name":"loopal-cli","version":"3.1.2","license":"UNLICENSED","_id":"loopal-cli@3.1.2","maintainers":[{"name":"svipc","email":"1803854237@qq.com"}],"bin":{"loopal":"dist/bin.js"},"dist":{"shasum":"c3b765357ba2f5f4ae2b283d48728cd9fefbb84b","tarball":"https://registry.npmjs.org/loopal-cli/-/loopal-cli-3.1.2.tgz","fileCount":189,"integrity":"sha512-DQieG15oAx8BV3xb7Rme2/LQhez5Ewa5CtV4X/0UsZ73oF/tXrw43SIksk0GqimiYIk4tnXTLn9UVFTbJVxTLA==","signatures":[{"sig":"MEUCIQDsJ6XuA0v4LChC8aMtIIL5ZNU6ZtN9Wz2txMSoBd4TDAIgAh7jP3TFu/4JlOdibiZxTurNpeiaTXbP8tU/vhUV18g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":315058},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"0cc72410b202a8b56fbc512d5cb8f70ac45eac01","scripts":{"test":"pnpm build && node --test test/*.test.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/minify-build.mjs && node scripts/finalize-build.mjs","release":"node scripts/release.mjs --publish","pack:check":"pnpm build && npm pack --dry-run --cache /tmp/loopal-npm-cache","release:check":"node scripts/release.mjs --dry-run","prepublishOnly":"pnpm test"},"_npmUser":{"name":"svipc","email":"1803854237@qq.com"},"_npmVersion":"11.4.2","description":"Loopal command-line interface","directories":{},"_nodeVersion":"24.4.1","dependencies":{"jszip":"^3.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.12","typescript":"^5.9.3","@types/node":"^25.2.3"},"_npmOperationalInternal":{"tmp":"tmp/loopal-cli_3.1.2_1784896982580_0.2631463853213103","host":"s3://npm-registry-packages-npm-production"}},"3.1.3":{"name":"loopal-cli","version":"3.1.3","license":"UNLICENSED","_id":"loopal-cli@3.1.3","maintainers":[{"name":"svipc","email":"1803854237@qq.com"}],"bin":{"loopal":"dist/bin.js"},"dist":{"shasum":"86268471ba67cc484f92557fcc0a2ae6ee8a2783","tarball":"https://registry.npmjs.org/loopal-cli/-/loopal-cli-3.1.3.tgz","fileCount":191,"integrity":"sha512-9L5BvqQUrl56Tok75n6o+dtK6Wo9FOraqnU4BV8VnBpbyLDi9+lQSPXhm/0YVrulNgQCFy3KlcgDOUgdOL/d8g==","signatures":[{"sig":"MEQCIClKl0gaMWfrsW+qFLoJjZOlN9uubE+1lLJjoBdbKP75AiBw996YX4Y+DWtXft4aoHETD/dX+vxKD2AQ8ekDMP9rkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317717},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"bec469ad60220e13c22a2157d374b4aff9bcba88","scripts":{"test":"pnpm build && node --test test/*.test.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/minify-build.mjs && node scripts/finalize-build.mjs","release":"node scripts/release.mjs --publish","pack:check":"pnpm build && npm pack --dry-run --cache /tmp/loopal-npm-cache","release:check":"node scripts/release.mjs --dry-run","prepublishOnly":"pnpm test"},"_npmUser":{"name":"svipc","email":"1803854237@qq.com"},"_npmVersion":"11.4.2","description":"Loopal command-line interface","directories":{},"_nodeVersion":"24.4.1","dependencies":{"jszip":"^3.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.12","typescript":"^5.9.3","@types/node":"^25.2.3"},"_npmOperationalInternal":{"tmp":"tmp/loopal-cli_3.1.3_1785329847794_0.30276526665025383","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"loopal-cli","version":"3.3.0","license":"UNLICENSED","_id":"loopal-cli@3.3.0","maintainers":[{"name":"svipc","email":"1803854237@qq.com"}],"bin":{"loopal":"dist/bin.js"},"dist":{"shasum":"0ecdc2cbc74d617a66f12e219eb4163c2bf2e791","tarball":"https://registry.npmjs.org/loopal-cli/-/loopal-cli-3.3.0.tgz","fileCount":264,"integrity":"sha512-4FX5+ZzBJmsbgrNFDihWnE6+rfHPQUp+Rbge35TkbU4EKFbYLQ55sXUFM8yJff0BmEeze9a5maMK8CeLzx4L6Q==","signatures":[{"sig":"MEYCIQCokZS+nT0NpXwyJKiwMeub0su7TblWM1+3U2Fh1BuosAIhALlUJFU+86QmjsW6AvyTssBZptB6LYTpbaTXRQgprdrI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":464013},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"10ec409b0f78687bdbf2f6b530ddcb416c68a9f7","scripts":{"test":"pnpm build && node --test test/*.test.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/minify-build.mjs && node scripts/finalize-build.mjs","release":"node scripts/release.mjs --publish","pack:check":"pnpm build && npm pack --dry-run --cache /tmp/loopal-npm-cache","release:check":"node scripts/release.mjs --dry-run","prepublishOnly":"pnpm test"},"_npmUser":{"name":"svipc","email":"1803854237@qq.com"},"_npmVersion":"11.4.2","description":"Loopal command-line interface","directories":{},"_nodeVersion":"24.4.1","dependencies":{"jszip":"^3.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.12","typescript":"^5.9.3","@types/node":"^25.2.3"},"_npmOperationalInternal":{"tmp":"tmp/loopal-cli_3.3.0_1785595161290_0.5261688833723919","host":"s3://npm-registry-packages-npm-production"}},"3.3.1":{"name":"loopal-cli","version":"3.3.1","license":"UNLICENSED","_id":"loopal-cli@3.3.1","maintainers":[{"name":"svipc","email":"1803854237@qq.com"}],"bin":{"loopal":"dist/bin.js"},"dist":{"shasum":"fbcee2b79e7e504b43d861ff5942c0cb353b7d96","tarball":"https://registry.npmjs.org/loopal-cli/-/loopal-cli-3.3.1.tgz","fileCount":271,"integrity":"sha512-upiSm0X1u94AAmd01Wlzb7LbGmvZpK/F5ffRX/4LlZFjtAApbEPk5gQ+bfeAa1xSnZZoU7V7bSHa9J0GxPldVg==","signatures":[{"sig":"MEQCIG1j61x7oeZ9JPb0qbslBr4/q2TPgxZaQo1Kt+OimraoAiBhsU3pQuAphDYCuUmRGzD2h+Ts+Io14/sI9TlLh3vKWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":476400},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"8e042fcfc8167c46d63f47a6156e834a50bdaa7d","scripts":{"test":"pnpm build && node --test test/*.test.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/minify-build.mjs && node scripts/finalize-build.mjs","release":"node scripts/release.mjs --publish","pack:check":"pnpm build && npm pack --dry-run --cache /tmp/loopal-npm-cache","release:check":"node scripts/release.mjs --dry-run","prepublishOnly":"pnpm test"},"_npmUser":{"name":"svipc","email":"1803854237@qq.com"},"_npmVersion":"11.4.2","description":"Loopal command-line interface","directories":{},"_nodeVersion":"24.4.1","dependencies":{"jszip":"^3.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.12","typescript":"^5.9.3","@types/node":"^25.2.3"},"_npmOperationalInternal":{"tmp":"tmp/loopal-cli_3.3.1_1785921196343_0.33754843056407124","host":"s3://npm-registry-packages-npm-production"}},"3.3.2":{"name":"loopal-cli","version":"3.3.2","license":"UNLICENSED","_id":"loopal-cli@3.3.2","maintainers":[{"name":"svipc","email":"1803854237@qq.com"}],"bin":{"loopal":"dist/bin.js"},"dist":{"shasum":"21e2e4bfce26ae40b8b12b756bf57c551a31036a","tarball":"https://registry.npmjs.org/loopal-cli/-/loopal-cli-3.3.2.tgz","fileCount":271,"integrity":"sha512-R19Ap/U/EdizZIpdyvREYsQFtSz6HqpDWl3+QljDVgpNGbl3J5ADP8MWS5nT5ErVBbr1h+DPDYOh2KpAG62u6g==","signatures":[{"sig":"MEUCIC7s21SgerurwqBE0F7c7th9ViU02twDrZL6tk8MxibbAiEAh+S5d6lSpuyETVdS9+ELY1ybo1oeu0Kc3LPUZzm8i1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":476406},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"115b7b010079a3c4529d836846a05fb18a086c31","scripts":{"test":"pnpm build && node --test test/*.test.mjs","build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/minify-build.mjs && node scripts/finalize-build.mjs","release":"node scripts/release.mjs --publish","pack:check":"pnpm build && npm pack --dry-run --cache /tmp/loopal-npm-cache","release:check":"node scripts/release.mjs --dry-run","prepublishOnly":"pnpm test"},"_npmUser":{"name":"svipc","email":"1803854237@qq.com"},"_npmVersion":"11.4.2","description":"Loopal command-line interface","directories":{},"_nodeVersion":"24.4.1","dependencies":{"jszip":"^3.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.12","typescript":"^5.9.3","@types/node":"^25.2.3"},"_npmOperationalInternal":{"tmp":"tmp/loopal-cli_3.3.2_1785938126072_0.13402555110907932","host":"s3://npm-registry-packages-npm-production"}},"3.3.3":{"name":"loopal-cli","version":"3.3.3","description":"Loopal command-line interface","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"bin":{"loopal":"dist/bin.js"},"scripts":{"build":"node scripts/clean.mjs && tsc -p tsconfig.json && node scripts/minify-build.mjs && node scripts/finalize-build.mjs","test":"pnpm build && node --test test/*.test.mjs","pack:check":"pnpm build && npm pack --dry-run --cache /tmp/loopal-npm-cache","release:check":"node scripts/release.mjs --dry-run","release":"node scripts/release.mjs --publish","prepublishOnly":"pnpm test"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"license":"UNLICENSED","dependencies":{"jszip":"^3.10.1"},"devDependencies":{"@types/node":"^25.2.3","esbuild":"^0.25.12","typescript":"^5.9.3"},"_id":"loopal-cli@3.3.3","gitHead":"7adee7ec1b2c426bb47699ce8c32416753328ef3","_nodeVersion":"24.4.1","_npmVersion":"11.4.2","dist":{"integrity":"sha512-hskZ4+c613N0egPMjQ+KvngkutjzpyOwpRjtPckRF4ObWkGcdJAm+WsVm/CKSFsPYDLn3gfjJ8eNC3jKdSRN4g==","shasum":"d181ea779300433e130022a3d42c5dad92887157","tarball":"https://registry.npmjs.org/loopal-cli/-/loopal-cli-3.3.3.tgz","fileCount":271,"unpackedSize":476400,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDb6QnBwqEvD4TltzHFAG/JA1ecLsbDHX/LNBooTqEYEgIgdXaXhzI8gbVgjIRHjvOXNlYHmzrXK4QWMxP3daUTEao="}]},"_npmUser":{"name":"svipc","email":"1803854237@qq.com"},"directories":{},"maintainers":[{"name":"svipc","email":"1803854237@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/loopal-cli_3.3.3_1785955710849_0.6154625895980732"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-16T09:20:29.569Z","modified":"2026-08-05T18:48:31.152Z","0.1.0":"2026-07-16T09:20:29.971Z","0.2.0":"2026-07-16T12:13:04.879Z","1.0.0":"2026-07-20T17:05:15.300Z","1.0.1":"2026-07-20T18:46:33.607Z","2.0.0":"2026-07-20T20:06:42.904Z","2.0.1":"2026-07-20T21:27:27.952Z","2.0.2":"2026-07-21T05:31:53.290Z","2.0.3":"2026-07-21T06:04:16.557Z","3.0.0":"2026-07-23T17:10:32.818Z","3.1.0":"2026-07-23T20:32:18.512Z","3.1.1":"2026-07-24T10:23:14.492Z","3.1.2":"2026-07-24T12:43:02.746Z","3.1.3":"2026-07-29T12:57:27.935Z","3.3.0":"2026-08-01T14:39:21.447Z","3.3.1":"2026-08-05T09:13:16.495Z","3.3.2":"2026-08-05T13:55:26.297Z","3.3.3":"2026-08-05T18:48:31.000Z"},"license":"UNLICENSED","description":"Loopal command-line interface","maintainers":[{"name":"svipc","email":"1803854237@qq.com"}],"readme":"# loopal\n\nLoopal 对外命令行工具。当前版本支持技能市场、天气、音频、图片、视频与音乐生成，以及使用用户默认 API Key 上传 24 小时有效的临时文件。\n\n## 安装\n\n```bash\nnpm install --global loopal-cli\n```\n\n也可以直接使用：\n\n```bash\nnpx --package loopal-cli loopal skill search \"网页设计\"\n```\n\n## 技能命令\n\n```bash\n# 搜索市场，可使用 --json 获取结构化结果\nloopal skill search \"网页设计\"\nloopal skill search --category front-end-design --tag design --json\n\n# 查看详情\nloopal skill info emilkowalski-design\n\n# 下载原始 ZIP\nloopal skill download emilkowalski-design --dir ./downloads\n\n# 需要自定义文件名时，指定完整输出路径\nloopal skill download emilkowalski-design --output ./downloads/design.zip\n\n# 安装到技能根目录，实际目录为 <dir>/<slug>\nloopal skill install emilkowalski-design --dir ~/.codex/skills\n```\n\n目标目录存在时默认拒绝覆盖；显式添加 `--force` 才会原子替换旧目录。\n\n## 登录与临时文件\n\n先在 Loopal 账号中心的“系统设置”中显示并复制默认 API Key，然后执行：\n\n```bash\nloopal login\nloopal whoami\nloopal upload ./report.pdf\n```\n\n`login` 会安全地读取并验证 API Key，再保存到 `~/.loopal/credentials.json`。文件权限为 `0600`，不会写入项目配置。CI 或无交互环境可以直接设置：\n\n```bash\nexport LOOPAL_API_KEY=sk-cc_xxx\nloopal upload ./report.pdf --json\n```\n\n模型命令还支持 `LOOPAL_MODEL_TOKEN`，其优先级高于 `LOOPAL_API_KEY`。Loopal Agent\n沙箱使用按会话挂载的 Unix Socket Broker，内部令牌不会写入 CLI 环境变量；\n`login`、`whoami` 等平台命令不会使用 Broker 或读取 `LOOPAL_MODEL_TOKEN`。\n\n临时文件的公开 URL 有效期为 24 小时，可用于后续模型请求。`loopal logout` 只删除本机凭证，不会禁用平台上的默认 API Key。\n\n## 音色查询\n\n按模型和标签查询可用于音频生成的音色 ID：\n\n```bash\nloopal voice-styles minimax --language English --gender Female\nloopal voice-styles doubao --language Chinese --scene \"General Use\"\nloopal voice-styles doubao --list-filters\n```\n\n命令默认输出 JSON，详细参数见 [`docs/commands/voice-styles.md`](./docs/commands/voice-styles.md)。\n\n## 语音识别\n\n查询 ASR 模型并识别本地音频：\n\n```bash\nloopal audio models --task transcribe --json\nloopal audio transcribe \\\n  --model doubao/auc-bigmodel \\\n  --file packages/loopal-cli/tmp/audio.mp3 \\\n  --json\n```\n\n## 图片生成与编辑\n\n```bash\nloopal image models --json\nloopal image generate \\\n  --model doubao/seedream-5-lite \\\n  --name \"雨夜书店\" \\\n  --prompt \"电影感的雨夜街角书店，暖色灯光\" \\\n  --json\n```\n\nGPT Image 2 还支持 `loopal image edit`。每个模型的完整参数通过 `--model <模型> --help` 查看，统一入口见 [`docs/commands/image.md`](./docs/commands/image.md)。\n\n## 视频生成与编辑\n\n```bash\nloopal video models --json\nloopal video generate \\\n  --model doubao/seedance-2.0 \\\n  --name \"产品镜头\" \\\n  --prompt \"镜头缓慢推进，产品表面出现柔和高光\" \\\n  --json\n```\n\nSeedance 支持首尾帧和多模态参考，HappyHorse 提供文生视频、图生视频、参考图生视频和视频编辑模型。完整入口见 [`docs/commands/video.md`](./docs/commands/video.md)。\n\n## 音乐生成与处理\n\n```bash\nloopal music models --json\nloopal music generate \\\n  --model mureka/mureka-9 \\\n  --name \"夏日海边\" \\\n  --lyrics-file ./lyrics.txt \\\n  --prompt \"清新流行摇滚，女声，明亮吉他和轻快鼓组\" \\\n  --json\n```\n\n音乐命令还支持歌词生成、续写、局部编辑、识别、描述、纯音乐和图片/视频配乐。完整入口见 [`docs/commands/music.md`](./docs/commands/music.md)。\n\n## 天气命令\n\n天气查询基于 `wttr.in`，不需要 API Key：\n\n```bash\nloopal weather Beijing\nloopal weather Shanghai --mode week\nloopal weather Tokyo --mode json --json\n```\n\n## 服务地址\n\nSkillHub、登录和音色查询默认使用 `https://loopal.app`；上传、生成和识别默认使用 `https://model.loopal.app`。CLI 不提供 `--base-url` 参数，内部按环境变量、`~/.loopal/config.json`、默认地址的顺序读取配置。\n\n完整配置格式见 [`docs/configuration.md`](./docs/configuration.md)。\n\n## 命令文档\n\n每个命令的参数、普通输出、JSON 输出、退出码和文件行为请参阅 [COMMANDS.md](./COMMANDS.md)。\n\n源码分层、测试约束和新增命令规范请参阅 [ARCHITECTURE.md](./ARCHITECTURE.md)。\n\n## 发布与更新\n\n```bash\n# 只检查，不会上传\npnpm --dir packages/loopal-cli release:check\n\n# 正式发布\npnpm --dir packages/loopal-cli release\n```\n\n版本升级、首次登录和异常处理请参阅 [RELEASING.md](./RELEASING.md)。\n","readmeFilename":"README.md"}