{"_id":"@casfa/cli","_rev":"3-06d490d3387f458c9f7967f413621e2c","name":"@casfa/cli","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.1":{"name":"@casfa/cli","version":"0.0.1","keywords":["casfa","cli","content-addressable-storage","cas","agent"],"license":"MIT","_id":"@casfa/cli@0.0.1","maintainers":[{"name":"shazhou.ww","email":"shazhou.ww@gmail.com"}],"bin":{"casfa":"src/cli.ts"},"dist":{"shasum":"26aab11959f614f77bb6c30c9d6adb81139b3823","tarball":"https://registry.npmjs.org/@casfa/cli/-/cli-0.0.1.tgz","fileCount":20,"integrity":"sha512-OlgoLeF1w61Ii6Vio3CzlT4auewwSnF+/BSP9LBstIdiUYPbuiOaJjldIietzaiy7LUMVa/+jIEt9wy5RN0JSw==","signatures":[{"sig":"MEQCICao0HZOdjsotyx2UP0Lv5ooSfxxDQLDI/tkFS/ojsV6AiAaClNfCEJPAkN9RTEPKHNEA4ihasOkckMROT2C0SxhmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117871},"main":"./src/cli.ts","type":"module","types":"./src/cli.ts","exports":{".":{"types":"./src/cli.ts","import":"./src/cli.ts"}},"gitHead":"b4ce0cee965a5046a37b216a8538d274bdb9f339","scripts":{"dev":"bun src/cli.ts","lint":"biome check .","check":"tsc --noEmit && biome check .","lint:fix":"biome check --write .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"shazhou.ww","email":"shazhou.ww@gmail.com"},"_npmVersion":"11.6.2","description":"CLI for CASFA content-addressable storage service","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ora":"^8.1.0","open":"^10.1.0","yaml":"^2.5.0","chalk":"^5.3.0","enquirer":"^2.4.1","commander":"^12.1.0","cli-table3":"^0.6.5","@casfa/core":"workspace:*","@casfa/client":"workspace:*","@noble/hashes":"^2.0.1","@casfa/protocol":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.4","@types/node":"^22.5.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.1_1770258972977_0.1307290270363326","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@casfa/cli","version":"0.0.2","keywords":["casfa","cli","content-addressable-storage","cas","agent"],"license":"MIT","_id":"@casfa/cli@0.0.2","maintainers":[{"name":"shazhou.ww","email":"shazhou.ww@gmail.com"}],"bin":{"casfa":"dist/cli.js"},"dist":{"shasum":"236f8bfd5dc77f9ef8d42c7ec6670d7bc5e3179f","tarball":"https://registry.npmjs.org/@casfa/cli/-/cli-0.0.2.tgz","fileCount":4,"integrity":"sha512-2nSS0PWAe0di8l+0+/n+fgYL9jpxkMIMyjkqm7Kcz7+vGc+QtZb7LikGzr+1KNPsAOQC7OedUnyH9nA7gHpT8A==","signatures":[{"sig":"MEUCIQDYk/XHzO5xjJFn2fqOtNU899XMe7Ow8BmNOPloHym12wIgQD5jTHwuLbj/xrrMwARw7NreHxUCEE5Kk7ffCWJJW+U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":339581},"main":"./dist/cli.js","type":"module","types":"./dist/cli.d.ts","exports":{".":{"types":"./dist/cli.d.ts","import":"./dist/cli.js"}},"gitHead":"db4a19e92d5299379bb13fafe2e8df1501e9b4aa","scripts":{"dev":"bun src/cli.ts","lint":"biome check .","build":"tsup","check":"tsc --noEmit && biome check .","lint:fix":"biome check --write .","test:e2e":"bun run scripts/e2e-test.ts","typecheck":"tsc --noEmit","prepublishOnly":"bun run build","test:e2e:debug":"bun run scripts/e2e-test.ts --no-cleanup --keep-container"},"_npmUser":{"name":"shazhou.ww","email":"shazhou.ww@gmail.com"},"_npmVersion":"10.8.2","description":"CLI for CASFA content-addressable storage service","directories":{},"_nodeVersion":"22.5.1","dependencies":{"ora":"^8.1.0","open":"^10.1.0","yaml":"^2.5.0","chalk":"^5.3.0","enquirer":"^2.4.1","commander":"^12.1.0","cli-table3":"^0.6.5","@casfa/core":"workspace:*","@casfa/client":"workspace:*","@noble/hashes":"^2.0.1","@casfa/protocol":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.5.4","@types/node":"^22.5.0","@aws-sdk/client-dynamodb":"^3.975.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.2_1770315531331_0.8124291896302505","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@casfa/cli","version":"0.2.0","description":"CLI for CASFA content-addressable storage service","type":"module","main":"./dist/cli.js","types":"./dist/cli.d.ts","bin":{"casfa":"dist/cli.js"},"exports":{".":{"types":"./dist/cli.d.ts","import":"./dist/cli.js"}},"scripts":{"build":"tsup","dev":"bun src/cli.ts","typecheck":"tsc --noEmit","lint":"biome check .","lint:fix":"biome check --write .","check":"tsc --noEmit && biome check .","test:e2e":"bun run scripts/e2e-test.ts","test:e2e:debug":"bun run scripts/e2e-test.ts --no-cleanup --keep-container","prepublishOnly":"bun run build"},"dependencies":{"@casfa/core":"workspace:*","@casfa/client":"workspace:*","@casfa/protocol":"workspace:*","@noble/hashes":"^2.0.1","chalk":"^5.3.0","cli-table3":"^0.6.5","commander":"^12.1.0","enquirer":"^2.4.1","open":"^10.1.0","ora":"^8.1.0","yaml":"^2.5.0"},"devDependencies":{"@aws-sdk/client-dynamodb":"^3.975.0","@types/bun":"latest","@types/node":"^22.5.0","typescript":"^5.5.4"},"keywords":["casfa","cli","content-addressable-storage","cas","agent"],"publishConfig":{"access":"public"},"license":"MIT","_id":"@casfa/cli@0.2.0","gitHead":"5bf2bee1c9ecfeeb99a089160255346cc94cafa2","_nodeVersion":"22.5.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-52ZTTLBXd64ZRCGbhYmhg4NDoKrtutUzIysJtlZVbbQFDnfaJU4BTR8I3tbZNJ+3mM/VpE2p1o363MkQRaAoXQ==","shasum":"80ce71fa03ce245fcce054709ce4a7584e249cc8","tarball":"https://registry.npmjs.org/@casfa/cli/-/cli-0.2.0.tgz","fileCount":6,"unpackedSize":349076,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD5LCpqINkcfOTr2pXBsB6yPA8tCxV0vTWOpcEvKzSNKQIhAMrKxEv0zswJcm3t0caTAqXnDwxaWuaumRxJnhuJ+rkg"}]},"_npmUser":{"name":"shazhou.ww","email":"shazhou.ww@gmail.com"},"directories":{},"maintainers":[{"name":"shazhou.ww","email":"shazhou.ww@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_0.2.0_1770334725902_0.5279012212914216"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-05T02:36:12.821Z","modified":"2026-02-05T23:38:46.489Z","0.0.1":"2026-02-05T02:36:13.135Z","0.0.2":"2026-02-05T18:18:51.482Z","0.2.0":"2026-02-05T23:38:46.041Z"},"license":"MIT","keywords":["casfa","cli","content-addressable-storage","cas","agent"],"description":"CLI for CASFA content-addressable storage service","maintainers":[{"name":"shazhou.ww","email":"shazhou.ww@gmail.com"}],"readme":"# @casfa/cli\n\nCASFA 内容寻址存储服务的命令行工具。\n\n## 安装\n\n```bash\n# 全局安装\nbun add -g @casfa/cli\n\n# 或者通过 bunx/npx 直接使用\nbunx @casfa/cli --help\n```\n\n## 快速开始\n\n```bash\n# 初始化配置\ncasfa config init\n\n# 登录 CASFA\ncasfa auth login\n\n# 检查连接状态\ncasfa info\n\n# 上传文件\ncasfa node put ./myfile.txt\n\n# 下载文件\ncasfa node get node:abc123... -o output.txt\n```\n\n## 命令一览\n\n### 配置管理\n\n```bash\n# 初始化配置\ncasfa config init\n\n# 显示当前配置\ncasfa config show\n\n# 设置配置项\ncasfa config set baseUrl https://api.casfa.example.com\ncasfa config set profile default\n\n# 列出所有配置文件\ncasfa config list\n```\n\n### 身份认证\n\n```bash\n# 通过 OAuth 登录（浏览器方式）\ncasfa auth login\n\n# 使用指定配置文件登录\ncasfa auth login --profile production\n\n# 查看认证状态\ncasfa auth status\n\n# 登出\ncasfa auth logout\n```\n\n### 节点操作（CAS）\n\n```bash\n# 上传文件\ncasfa node put <file>\n\n# 从标准输入上传\ncat file.txt | casfa node put -\n\n# 下载节点\ncasfa node get <node-key> [-o output.txt]\n\n# 检查节点是否存在\ncasfa node has <node-key>\n\n# 获取节点信息\ncasfa node info <node-key>\n\n# 上传目录\ncasfa node put-tree <directory>\n\n# 下载目录树\ncasfa node get-tree <node-key> <output-dir>\n```\n\n### Depot 操作\n\n```bash\n# 列出 depot\ncasfa depot list\n\n# 创建 depot\ncasfa depot create <name> [--description \"...\"]\n\n# 获取 depot 信息\ncasfa depot info <depot-id>\n\n# 更新 depot\ncasfa depot update <depot-id> --name \"new-name\"\n\n# 删除 depot\ncasfa depot delete <depot-id>\n\n# 向 depot 提交\ncasfa depot commit <depot-id> <node-key>\n```\n\n### Ticket 操作\n\n```bash\n# 列出 ticket\ncasfa ticket list [--depot <depot-id>]\n\n# 创建 ticket\ncasfa ticket create <depot-id> [--permissions read,write] [--expires-in 3600]\n\n# 获取 ticket 信息\ncasfa ticket info <ticket-id>\n\n# 撤销 ticket\ncasfa ticket revoke <ticket-id>\n```\n\n### Realm 操作\n\n```bash\n# 获取 realm 信息\ncasfa realm info\n\n# 列出 realm 节点\ncasfa realm nodes [--prefix <path>]\n```\n\n### 缓存操作\n\n```bash\n# 显示缓存信息\ncasfa cache info\n\n# 清除缓存\ncasfa cache clear\n\n# 清理过期缓存\ncasfa cache prune\n```\n\n### Shell 补全\n\n```bash\n# 生成 bash 补全脚本\ncasfa completion bash >> ~/.bashrc\n\n# 生成 zsh 补全脚本\ncasfa completion zsh >> ~/.zshrc\n\n# 生成 fish 补全脚本\ncasfa completion fish >> ~/.config/fish/completions/casfa.fish\n```\n\n## 全局选项\n\n```bash\ncasfa [command] [options]\n\nOptions:\n  -p, --profile <name>         使用指定的配置文件\n  --base-url <url>             覆盖服务端基础 URL\n  --delegate-token <token>     使用委托令牌进行认证\n  --access-token <token>       直接使用访问令牌\n  --ticket <ticket>            使用 ticket 进行认证\n  --realm <realm-id>           指定 realm ID\n  --no-cache                   禁用本地缓存\n  -f, --format <type>          输出格式: text|json|yaml|table (默认: \"text\")\n  -v, --verbose                详细输出\n  -q, --quiet                  静默模式\n  -V, --version                输出版本号\n  -h, --help                   显示帮助信息\n```\n\n## 配置文件\n\n配置存储在 `~/.casfa/config.yaml`：\n\n```yaml\ncurrentProfile: default\n\nprofiles:\n  default:\n    baseUrl: https://api.casfa.example.com\n    \n  production:\n    baseUrl: https://api.casfa.io\n    \n  local:\n    baseUrl: http://localhost:8801\n```\n\n## 环境变量\n\n| 变量 | 说明 |\n|------|------|\n| `CASFA_BASE_URL` | 覆盖基础 URL |\n| `CASFA_PROFILE` | 默认配置文件名 |\n| `CASFA_TOKEN` | 用于认证的委托令牌 |\n| `CASFA_ACCESS_TOKEN` | 用于认证的访问令牌 |\n| `CASFA_CACHE_DIR` | 缓存目录路径 |\n\n## 使用示例\n\n### 上传并分享文件\n\n```bash\n# 上传文件\ncasfa node put document.pdf\n# 输出: node:abc123...\n\n# 创建只读 ticket 用于分享\ncasfa ticket create depot:xyz... --permissions read --expires-in 86400\n# 输出: ticket:def456...\n\n# 将 ticket 分享给他人\necho \"使用以下命令访问: casfa node get node:abc123... --ticket ticket:def456...\"\n```\n\n### 将目录同步到 depot\n\n```bash\n# 将目录上传为树\ncasfa node put-tree ./project\n# 输出: node:abc123... (根节点)\n\n# 提交到 depot\ncasfa depot commit depot:xyz... node:abc123...\n```\n\n### 使用不同的配置文件\n\n```bash\n# 使用生产环境配置\ncasfa --profile production depot list\n\n# 使用本地开发服务器\ncasfa --base-url http://localhost:8801 info\n```\n\n## 开发\n\n```bash\n# 从源码运行\nbun run apps/cli/src/cli.ts --help\n\n# 构建\ncd apps/cli && bun run build\n\n# 运行端到端测试\nbun run test:e2e\n```\n\n## 许可证\n\nMIT\n","readmeFilename":"README.zh-CN.md"}