{"_id":"@alphalawyer/alpha-oa-cli","_rev":"7-a566536f591295e51fcfb5fd801f528b","name":"@alphalawyer/alpha-oa-cli","dist-tags":{"latest":"0.4.11"},"versions":{"0.4.4":{"name":"@alphalawyer/alpha-oa-cli","version":"0.4.4","_id":"@alphalawyer/alpha-oa-cli@0.4.4","maintainers":[{"name":"alphalawyer","email":"ss135ss@sina.com"}],"bin":{"alpha-oa-cli":"dist/index.js"},"dist":{"shasum":"56f2ec65923038ef1b1d0d99dd4a0e1376c8d5f2","tarball":"https://registry.npmjs.org/@alphalawyer/alpha-oa-cli/-/alpha-oa-cli-0.4.4.tgz","fileCount":8,"integrity":"sha512-I+NTzMeCbvZRsf8NRNz3K65I/HjQpn0MSDJ0hJpNyQYZrzlNnS34Z/GZE98G6EKvGVUnb2PB1GEiG0TZS01D2Q==","signatures":[{"sig":"MEYCIQDBolR9ZxMBn4kFbdBACxqRMkyi9y7pMxNamLHxdZJxSQIhAMbVqJddZyt2l7FZROHy0AkBfosesj85VZr2h2NM8tqD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":524237},"type":"module","engines":{"node":">=20"},"gitHead":"937b2f6c61e58f7cc241d13c9e5da671839404a6","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alphalawyer","email":"ss135ss@sina.com"},"_npmVersion":"10.9.7","description":"Alpha OA CLI for session login, local instructions, and diagnostics","directories":{},"_nodeVersion":"22.22.2","dependencies":{"open":"^11.0.0","axios":"^1.14.0","keytar":"^7.9.0","commander":"^14.0.3","qrcode-terminal":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^4.1.2","typescript":"^6.0.2","@types/node":"^25.5.0","axios-mock-adapter":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/alpha-oa-cli_0.4.4_1779291244888_0.7436944938790642","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@alphalawyer/alpha-oa-cli","version":"0.4.5","_id":"@alphalawyer/alpha-oa-cli@0.4.5","maintainers":[{"name":"alphalawyer","email":"ss135ss@sina.com"}],"bin":{"alpha-oa-cli":"dist/index.js"},"dist":{"shasum":"69c046f92ef1ddfc7d8ea4d4686c94902c66aa45","tarball":"https://registry.npmjs.org/@alphalawyer/alpha-oa-cli/-/alpha-oa-cli-0.4.5.tgz","fileCount":8,"integrity":"sha512-y6i2w8m7lQpRrIGvDNKOXaY2AkscRdPZtz2pAXq9ClALzwr7sq7QT3j9S3CzpdYBnbwDxmo3lIAxFnSGSG1YiA==","signatures":[{"sig":"MEUCIDi1ShQVh19Y7YNummZxCsOe2SxjPmvBPGdjwlCS1bdRAiEAkaTY0K83KT1Hx4maAKbbmCqbyuk+pIcwwleKBz/GZMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":534024},"type":"module","engines":{"node":">=20"},"gitHead":"6ad2226987cde8efd620f26b8e2ba93c87aa29dd","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","release:check":"npm run typecheck && npm test && npm run build && npm pack --dry-run","release:major":"npm whoami && npm version major --no-git-tag-version && npm run release:check && npm publish --access public","release:minor":"npm whoami && npm version minor --no-git-tag-version && npm run release:check && npm publish --access public","release:patch":"npm whoami && npm version patch --no-git-tag-version && npm run release:check && npm publish --access public","release:current":"npm whoami && npm run release:check && npm publish --access public","release:dry-run":"npm run release:check"},"_npmUser":{"name":"alphalawyer","email":"ss135ss@sina.com"},"_npmVersion":"10.9.7","description":"Alpha OA CLI for session login, local instructions, and diagnostics","directories":{},"_nodeVersion":"22.22.2","dependencies":{"open":"^11.0.0","axios":"^1.14.0","keytar":"^7.9.0","commander":"^14.0.3","qrcode-terminal":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^4.1.2","typescript":"^6.0.2","@types/node":"^25.5.0","axios-mock-adapter":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/alpha-oa-cli_0.4.5_1779294093765_0.995908455211155","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@alphalawyer/alpha-oa-cli","version":"0.4.6","_id":"@alphalawyer/alpha-oa-cli@0.4.6","maintainers":[{"name":"alphalawyer","email":"ss135ss@sina.com"}],"bin":{"alpha-oa-cli":"dist/index.js"},"dist":{"shasum":"e27930a98d2e1b26d0bd9192a6c6d2d2f689f32a","tarball":"https://registry.npmjs.org/@alphalawyer/alpha-oa-cli/-/alpha-oa-cli-0.4.6.tgz","fileCount":8,"integrity":"sha512-jJYKWjONJT8uucWt3TDPhICAhzPDU6dxS10fdaa9rAedjZ7PXPaQkXqZ4qQ+YKJJ6Fn3qTxQ3//3TwaWaICvdQ==","signatures":[{"sig":"MEQCIEhhAak662hgVdmjeQbbVg6KGouO/ln9OWYxn13tj4KuAiAvXrxCxcDraINirGFHxWpihm+attwACSgBziHVK0ggwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":550317},"type":"module","engines":{"node":">=20"},"gitHead":"752e5c859c25156569f7e1ed58e226de1792f2f8","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","release:check":"npm run typecheck && npm test && npm run build && npm pack --dry-run","release:major":"npm whoami && npm version major --no-git-tag-version && npm run release:check && npm publish --access public","release:minor":"npm whoami && npm version minor --no-git-tag-version && npm run release:check && npm publish --access public","release:patch":"npm whoami && npm version patch --no-git-tag-version && npm run release:check && npm publish --access public","release:current":"npm whoami && npm run release:check && npm publish --access public","release:dry-run":"npm run release:check"},"_npmUser":{"name":"alphalawyer","email":"ss135ss@sina.com"},"_npmVersion":"10.9.7","description":"Alpha OA CLI for session login, local instructions, and diagnostics","directories":{},"_nodeVersion":"22.22.2","dependencies":{"open":"^11.0.0","axios":"^1.14.0","keytar":"^7.9.0","commander":"^14.0.3","qrcode-terminal":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^4.1.2","typescript":"^6.0.2","@types/node":"^25.5.0","axios-mock-adapter":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/alpha-oa-cli_0.4.6_1779374629194_0.47713115798453254","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@alphalawyer/alpha-oa-cli","version":"0.4.7","_id":"@alphalawyer/alpha-oa-cli@0.4.7","maintainers":[{"name":"alphalawyer","email":"ss135ss@sina.com"}],"bin":{"alpha-oa-cli":"dist/index.js"},"dist":{"shasum":"93878c240767838eae909c389b57192bca3f481c","tarball":"https://registry.npmjs.org/@alphalawyer/alpha-oa-cli/-/alpha-oa-cli-0.4.7.tgz","fileCount":8,"integrity":"sha512-xwGLcJbqEi2s9QO2LK5dKwAgyW6ezqkYWANNwR2T2oNSJnNGEsYJIXO3eBzfbavr6mJIy0+MMHwzzyZ7CbTIDw==","signatures":[{"sig":"MEYCIQC3nxCuFKmOWlzvtSY0xk0hgzTB69dqo5NZtTLtcMgXygIhANO0+7C/f4acSL9jjl9E7gpZfQ7zXYk2kQ++QhNKRUwk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":647788},"type":"module","engines":{"node":">=20"},"gitHead":"412e9eea3a3277fa40d820faf82b0acf578a6258","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","release:check":"npm run typecheck && npm test && npm run build && npm pack --dry-run","release:major":"npm whoami && npm version major --no-git-tag-version && npm run release:check && npm publish --access public","release:minor":"npm whoami && npm version minor --no-git-tag-version && npm run release:check && npm publish --access public","release:patch":"npm whoami && npm version patch --no-git-tag-version && npm run release:check && npm publish --access public","release:current":"npm whoami && npm run release:check && npm publish --access public","release:dry-run":"npm run release:check"},"_npmUser":{"name":"alphalawyer","email":"ss135ss@sina.com"},"_npmVersion":"10.9.7","description":"Alpha OA CLI for session login, local instructions, and diagnostics","directories":{},"_nodeVersion":"22.22.2","dependencies":{"open":"^11.0.0","axios":"^1.14.0","keytar":"^7.9.0","commander":"^14.0.3","qrcode-terminal":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^4.1.2","typescript":"^6.0.2","@types/node":"^25.5.0","axios-mock-adapter":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/alpha-oa-cli_0.4.7_1779728022525_0.9227512548963439","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"@alphalawyer/alpha-oa-cli","version":"0.4.8","_id":"@alphalawyer/alpha-oa-cli@0.4.8","maintainers":[{"name":"alphalawyer","email":"ss135ss@sina.com"}],"bin":{"alpha-oa-cli":"dist/index.js"},"dist":{"shasum":"9e58221c14e97a872c1c9f54cbb12fcf0f1b1943","tarball":"https://registry.npmjs.org/@alphalawyer/alpha-oa-cli/-/alpha-oa-cli-0.4.8.tgz","fileCount":8,"integrity":"sha512-LS/hsjKEmUtJKAd0WUHMsVnaBI4xWp96rqgjMJB3YuwWuPjcLy715mHbSdR09Xx8MpR0dd/RSoyGf9jN9FXGLw==","signatures":[{"sig":"MEYCIQCETH6fh8S7pWhExZaMVLOJa9gSwUJB0qPaylGGXQ263wIhAM660MAPX1mCMiEjk9r2NnFQAFIJNz/iE82D5C6oOPfK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":647815},"type":"module","engines":{"node":">=20"},"gitHead":"f0d791955fecaddca9a2b40de571eaba37c2bbf1","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","release:check":"npm run typecheck && npm test && npm run build && npm pack --dry-run","release:major":"npm whoami && npm version major --no-git-tag-version && npm run release:check && npm publish --access public","release:minor":"npm whoami && npm version minor --no-git-tag-version && npm run release:check && npm publish --access public","release:patch":"npm whoami && npm version patch --no-git-tag-version && npm run release:check && npm publish --access public","release:current":"npm whoami && npm run release:check && npm publish --access public","release:dry-run":"npm run release:check"},"_npmUser":{"name":"alphalawyer","email":"ss135ss@sina.com"},"_npmVersion":"10.9.7","description":"Alpha OA CLI for session login, local instructions, and diagnostics","directories":{},"_nodeVersion":"22.22.2","dependencies":{"open":"^11.0.0","axios":"^1.14.0","keytar":"^7.9.0","commander":"^14.0.3","qrcode-terminal":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^4.1.2","typescript":"^6.0.2","@types/node":"^25.5.0","axios-mock-adapter":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/alpha-oa-cli_0.4.8_1779758744153_0.9321553529441193","host":"s3://npm-registry-packages-npm-production"}},"0.4.10":{"name":"@alphalawyer/alpha-oa-cli","version":"0.4.10","_id":"@alphalawyer/alpha-oa-cli@0.4.10","maintainers":[{"name":"alphalawyer","email":"ss135ss@sina.com"}],"bin":{"alpha-oa-cli":"dist/index.js"},"dist":{"shasum":"86355e843889a0ad7eb9329220c93a888323d7e8","tarball":"https://registry.npmjs.org/@alphalawyer/alpha-oa-cli/-/alpha-oa-cli-0.4.10.tgz","fileCount":8,"integrity":"sha512-8M9LjMHwlM9lF0V3Md+TjGk3SYwbitEXE5aapYeKy5Z6voNc98ztdNrWBB2v4gKFl7LNbEcBNAz/Y9q7LxfmQQ==","signatures":[{"sig":"MEUCIHqkj3Zl0XH9z1nahHCaMPt1pgyEdom8oITFOyaa0bkiAiEAw1FbZDCzrm3z/bDmBnvbooeE5ja4e0iIUkVDSoOZwCU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":730810},"type":"module","engines":{"node":">=20"},"gitHead":"790a01a20617bc372621ee75e57c7e705abfbc74","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","release:check":"npm run typecheck && npm test && npm run build && npm pack --dry-run","release:major":"npm whoami && npm version major --no-git-tag-version && npm run release:check && npm publish --access public","release:minor":"npm whoami && npm version minor --no-git-tag-version && npm run release:check && npm publish --access public","release:patch":"npm whoami && npm version patch --no-git-tag-version && npm run release:check && npm publish --access public","release:current":"npm whoami && npm run release:check && npm publish --access public","release:dry-run":"npm run release:check"},"_npmUser":{"name":"alphalawyer","email":"ss135ss@sina.com"},"_npmVersion":"10.9.7","description":"Alpha OA CLI for session login, local instructions, and diagnostics","directories":{},"_nodeVersion":"22.22.2","dependencies":{"open":"^11.0.0","axios":"^1.14.0","keytar":"^7.9.0","commander":"^14.0.3","qrcode-terminal":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^4.1.2","typescript":"^6.0.2","@types/node":"^25.5.0","axios-mock-adapter":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/alpha-oa-cli_0.4.10_1779762599103_0.4853227322354454","host":"s3://npm-registry-packages-npm-production"}},"0.4.11":{"name":"@alphalawyer/alpha-oa-cli","version":"0.4.11","description":"Alpha OA CLI for session login, local instructions, and diagnostics","type":"module","bin":{"alpha-oa-cli":"dist/index.js"},"engines":{"node":">=20"},"scripts":{"build":"tsup","dev":"tsx src/index.ts","release:check":"npm run typecheck && npm test && npm run build && npm pack --dry-run","release:dry-run":"npm run release:check","release:current":"npm whoami && npm run release:check && npm publish --access public","release:patch":"npm whoami && npm version patch --no-git-tag-version && npm run release:check && npm publish --access public","release:minor":"npm whoami && npm version minor --no-git-tag-version && npm run release:check && npm publish --access public","release:major":"npm whoami && npm version major --no-git-tag-version && npm run release:check && npm publish --access public","test":"vitest run","typecheck":"tsc --noEmit"},"dependencies":{"axios":"^1.14.0","commander":"^14.0.3","keytar":"^7.9.0","open":"^11.0.0","qrcode-terminal":"^0.12.0"},"devDependencies":{"@types/node":"^25.5.0","axios-mock-adapter":"^2.1.0","tsup":"^8.5.1","tsx":"^4.21.0","typescript":"^6.0.2","vitest":"^4.1.2"},"_id":"@alphalawyer/alpha-oa-cli@0.4.11","gitHead":"470b843e75de6233c940eef5cce0e83a5dfe9aa5","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-7x29AfSHMRl4JG7q0LuBXVCaRKBQeWBBNlCiI5JVWg2XkH0mg1puyT8zoYsKIXaGxO7IpBTTYLV/ZKo1fY46gA==","shasum":"68eb9d26a1dba139239a723f883b37e5b30fe346","tarball":"https://registry.npmjs.org/@alphalawyer/alpha-oa-cli/-/alpha-oa-cli-0.4.11.tgz","fileCount":8,"unpackedSize":752606,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBSXJjP7N57bDmnaCXxfNrClHbUG0W7yWrbYCsANOr87AiEAxQEV2m4Kqzf8aXN5H+xiM4IuerHarGYlCtmEIzeClV8="}]},"_npmUser":{"name":"alphalawyer","email":"ss135ss@sina.com"},"directories":{},"maintainers":[{"name":"alphalawyer","email":"ss135ss@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/alpha-oa-cli_0.4.11_1779766563581_0.13976271522160544"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-20T15:34:04.681Z","modified":"2026-05-26T03:36:03.939Z","0.4.4":"2026-05-20T15:34:05.064Z","0.4.5":"2026-05-20T16:21:33.921Z","0.4.6":"2026-05-21T14:43:49.351Z","0.4.7":"2026-05-25T16:53:42.666Z","0.4.8":"2026-05-26T01:25:44.344Z","0.4.10":"2026-05-26T02:29:59.331Z","0.4.11":"2026-05-26T03:36:03.822Z"},"description":"Alpha OA CLI for session login, local instructions, and diagnostics","maintainers":[{"name":"alphalawyer","email":"ss135ss@sina.com"}],"readme":"# `@alphalawyer/alpha-oa-cli`\n\n`alpha-oa-cli` 是 Alpha OA 的本地安装、登录、诊断和 HTTP Tool 烟测工具。常规调用链路是：\n\n`Codex / Claude Code -> Alpha MCP -> 业务 tools`\n\n如果不走 MCP，也可以直接用：\n\n`alpha-oa-cli tool list/get/call/upload -> Alpha HTTP Tool 接口`\n\n默认环境是 `prod`。如果你不显式切环境，CLI 会默认使用正式生产域名。\n\n## 安装\n\n```bash\nnpm i -g @alphalawyer/alpha-oa-cli\n```\n\n## 自动更新\n\nCLI 会按本地缓存轻量提醒新版本，不会在普通业务命令里静默替用户升级。真正安装新版本需要显式执行：\n\n```bash\nalpha-oa-cli update --check\nalpha-oa-cli update\n```\n\n- `alpha-oa-cli update --check`：只检查 npm 最新版本，不执行安装，也不刷新本机 skill。\n- `alpha-oa-cli update`：检测当前安装方式；如果当前命令来自 npm 全局安装且本机有 npm，会执行 `npm install -g @alphalawyer/alpha-oa-cli@<latest>`，成功后再执行 `alpha-oa-cli skills update`。\n- 如果当前不是 npm 安装，或 PATH 中找不到 npm，命令会给出手动安装命令，不会强行改写本机文件。\n- JSON 输出会在有缓存命中新版本时附加 `_notice.update`，提示执行 `alpha-oa-cli update`；如需关闭提醒，可设置 `ALPHA_OA_CLI_NO_UPDATE_NOTIFIER=1`。\n\n## 发布到 npm\n\n常规发布只需要记住下面几个快捷命令：\n\n```bash\nnpm run release:dry-run\nnpm run release:patch\nnpm run release:minor\nnpm run release:major\n```\n\n- `release:dry-run`：执行类型检查、测试、构建和 `npm pack --dry-run`，只检查发包内容，不发布。\n- `release:patch`：先确认当前 npm 登录用户，再自动升级补丁版本，例如 `0.4.4 -> 0.4.5`，检查通过后发布到公开 npm 仓库。\n- `release:minor` / `release:major`：分别升级小版本和大版本，适合功能发布或破坏性变更。\n- 当前版本已经手动改好时，执行 `npm run release:current` 可以不改版本直接发布。\n- 如果 npm 要求 OTP，命令后追加参数即可，例如 `npm run release:patch -- --otp=123456`。\n\n## 常用命令\n\n```bash\nalpha-oa-cli auth login\nalpha-oa-cli auth login --no-wait --json\nalpha-oa-cli auth login --device-code <device_code>\nalpha-oa-cli auth status\nalpha-oa-cli auth check\nalpha-oa-cli auth whoami\nalpha-oa-cli auth list\nalpha-oa-cli auth refresh\nalpha-oa-cli doctor\nalpha-oa-cli update --check\nalpha-oa-cli update\nalpha-oa-cli auth logout\nalpha-oa-cli uninstall\nalpha-oa-cli env list\nalpha-oa-cli env use local\nalpha-oa-cli skills\nalpha-oa-cli skills update\nalpha-oa-cli skills update --source remote\nalpha-oa-cli skill codex\nalpha-oa-cli mcp\nalpha-oa-cli mcp install\nalpha-oa-cli mcp install openclaw\nalpha-oa-cli schema query_current_draft\nalpha-oa-cli tool list\nalpha-oa-cli tool get query_current_draft --format json\nalpha-oa-cli tool call query_current_draft --args-json '{\"include_schema\":false}' --dry-run\nalpha-oa-cli tool call query_customer_count_by_owner --args-json '{\"limit\":1000}'\nalpha-oa-cli customer +count-by-owner --limit 1000\nalpha-oa-cli project +in-progress --page-no 1 --page-size 5\nalpha-oa-cli draft +current\nalpha-oa-cli tool upload ./合同附件.pdf\nalpha-oa-cli attachment +upload ./合同附件.pdf\nalpha-oa-cli api GET /agent/api/v1/tools --query-json '{\"domain\":\"customer\"}'\nalpha-oa-cli api GET /agent/api/v1/cli/skills\n```\n\n## 推荐使用流程\n\n```bash\nalpha-oa-cli auth login\n```\n\n- `alpha-oa-cli auth login` 会创建设备授权码，在终端打印二维码和授权链接，用户在浏览器里确认授权后保存本地登录态，并自动安装 Codex、Claude、OpenClaw、已存在 AlphaClaw workspace 可读取的本地技能/指令，然后从 `/agent/api/v1/cli/skills` 拉取服务端最新 skill；它不会再默认安装 MCP。\n- Agent 宿主代用户首次安装时，推荐在 `npm i -g @alphalawyer/alpha-oa-cli` 后直接执行 `alpha-oa-cli auth login`；只想刷新 skill 时再单独执行 `alpha-oa-cli skills update`。\n- Agent 代用户登录时，推荐用 `alpha-oa-cli auth login --no-wait --json`，把输出里的 `verification_url` 原样发给用户，再用 `alpha-oa-cli auth login --device-code <device_code>` 继续轮询授权结果。\n- `alpha-oa-cli auth status` 查看当前登录态；`alpha-oa-cli auth check` 只校验 token 是否有效，token 失效会以非 0 退出码返回结构化错误。\n- `alpha-oa-cli auth whoami/list/refresh` 分别用于查看当前用户、列出本机会话、刷新 token；刷新 token 也不会自动改 MCP。\n- `alpha-oa-cli mcp install [codex|claude|openclaw|all]` 才会显式写入 MCP 配置。只用 HTTP CLI 的用户不需要执行它。\n- `alpha-oa-cli doctor` 用来检查本地 session、客户端安装状态、MCP 配置是否完整。\n- `alpha-oa-cli install` 只作为手动修复本地 skill / 指令入口保留；普通用户不需要先执行它，也不会因为执行它而默认安装 MCP。\n- 如果 Codex / Claude / OpenClaw / AlphaClaw 的本地 skill、指令被手工改坏，可以重新执行 `alpha-oa-cli auth login` 或 `alpha-oa-cli install` 修复；如果 MCP 配置被改坏，单独执行 `alpha-oa-cli mcp install`。\n- 只有在执行 `alpha-oa-cli install`、`alpha-oa-cli auth login` 或 `alpha-oa-cli mcp install` 之前客户端已经开着的情况下，才需要关闭当前窗口或至少新开会话；如果是执行完命令后才第一次打开客户端，一般不需要重开。\n\n## 环境预设\n\n`alpha-oa-cli` 现在内置了 4 套环境预设：\n\n- `local`\n  - Web / MCP：`http://localhost:8087`\n- `dev`\n  - Web / MCP：`https://devpro.alphalawyer.cn`\n- `test`\n  - Web / MCP：`https://testpro.alphalawyer.cn`\n- `prod`\n  - Web / MCP：`https://pro.alphalawyer.cn`\n\n默认就是 `prod`，因此：\n\n- 线上用户通常只需要直接执行 `alpha-oa-cli auth login`\n- 本地联调时，才需要先执行 `alpha-oa-cli env use local`\n\n可以直接切环境：\n\n```bash\nalpha-oa-cli env list\nalpha-oa-cli env current\nalpha-oa-cli env use local\nalpha-oa-cli env use prod\n```\n\n也可以添加用户自定义环境后再切换：\n\n```bash\nalpha-oa-cli env add xxx https://xxx.abc.com/\nalpha-oa-cli env use xxx\nalpha-oa-cli env current\n```\n\n- `env add <name> <base-url>` 会把环境写入本机配置，`mcp_base_url` 默认等于 `base_url`。\n- 需要单独指定 MCP 地址时使用 `--mcp-base-url <url>`。\n- `env remove <name>` 只允许删除用户自定义环境，不允许删除内置 `local/dev/test/prod`。\n- `env use <name>` 切换到任意内置或自定义环境；如果本机已有其它环境的登录态，会自动清理 session，避免跨环境复用 token。\n\n也可以在单次命令里指定环境：\n\n```bash\nalpha-oa-cli auth login --env local\nalpha-oa-cli auth login --env prod\n```\n\n本地只测后端 `agent-app:8087` 时，可以显式覆盖：\n\n```bash\nalpha-oa-cli auth login --env local --base-url http://localhost:8087\nalpha-oa-cli mcp install --env local --mcp-base-url http://localhost:8087\n```\n\n## 直接调用 Tool\n\n`alpha-oa-cli tool` 提供和飞书 CLI 类似的命令行直调入口，用于绕过 MCP 客户端，直接通过当前登录态访问 Alpha 服务端暴露的 Tool HTTP 接口。\n\n```bash\nalpha-oa-cli schema\nalpha-oa-cli schema query_current_draft\nalpha-oa-cli schema create_customer --format pretty\nalpha-oa-cli tool list\nalpha-oa-cli tool list --domain assistant --subject-type agent_draft\nalpha-oa-cli tool list --keyword draft\nalpha-oa-cli tool list --domain customer --format table\nalpha-oa-cli tool get query_current_draft --jq .parameterSchema\nalpha-oa-cli tool call query_current_draft --args-json '{\"include_schema\":false}' --dry-run\nalpha-oa-cli tool call query_current_draft --args-json '{\"include_schema\":false}' --runtime-json '{\"sessionId\":\"session-1\"}'\nalpha-oa-cli tool call query_customer_count_by_owner --args-json '{\"limit\":1000}'\nalpha-oa-cli tool call query_project_in_progress_current_user --page-no 1 --page-size 5\nalpha-oa-cli tool call query_project_in_progress_current_user --page-all --page-size 20 --page-limit 100\nalpha-oa-cli tool call update_draft_fields --args-json '{\"field_updates\":[{\"fieldLabel\":\"客户名称\",\"value\":\"测试客户\"}]}'\nalpha-oa-cli tool call create_customer --args-json '{\"draft_id\":123}' --confirm\nalpha-oa-cli tool upload ./合同附件.pdf\nalpha-oa-cli tool call extract_attachment_text --args-json '{\"file_id\":\"上传返回的文件ID\"}'\n```\n\n- `tool list/get/call` 走 `/agent/api/v1/tools`，适合本机命令行烟测和排查 Tool 入参、返回值。\n- `schema [toolName]` 会把服务端 Tool 定义整理成 Agent 更容易读的参数、风险、调用示例；不传 `toolName` 时输出 schema 索引。\n- `tool upload <filePath>` 走 `/agent/api/v1/tools/upload_attachment/upload`，会把本地文件以 multipart 方式上传到 Alpha，再返回文件模块真实 file 对象。\n- 登录态复用 `alpha-oa-cli auth login` 保存的 token；服务端返回 token 失效时，CLI 会尝试 refresh 后重试一次。\n- `tool` 和 `schema` 支持 `--format json|pretty|table|ndjson|csv`，也支持简单点路径 `--jq .data.items`。\n- `tool call` 支持统一分页参数：`--page-no`、`--page-size`、`--page-all`、`--page-limit`、`--page-delay-ms`；默认映射到 Tool arguments 里的 `page_no` / `page_size`。\n- 有真实副作用的 Tool 必须显式传 `--confirm`。未确认时 CLI 会返回 `confirmation_required` 结构化错误并使用退出码 `10`，Agent 必须先向用户确认再重试。\n- `--dry-run` 只打印将要调用的 endpoint、body、tool schema，不执行真实写入或上传。\n- `--args-json` 必须是 JSON object；`--runtime-json` 用于补充会话、运行、消息等运行时上下文。\n\n当前常用工具按领域分组：\n\n- `hr`：`query_user_by_name`、`query_user_by_user_id`、`query_user_by_user_ids`、`query_hr_department_by_name`、`query_hr_dept_all`、`query_hr_job_position_all`、`query_hr_job_level_all`\n- `customer`：`query_customer_by_name`、`query_customer_by_owner_name`、`query_customer_count_by_owner`、`query_customer_recent_created`、`query_customer_owned_without_recent_follow`、`query_customer_contacts_by_name`、`query_customer_recent_follow_by_name`、`create_draft_customer`、`create_customer`\n- `project`：`query_project_in_progress_current_user`、`query_project_in_progress_by_member_name`、`query_project_count`、`query_project_list`、`query_project_detail`、`query_project_activity`、`create_draft_project`、`create_project`\n- `timing`：`create_project_timing_current_user`、`query_timing_total_current_user`、`query_timing_day_summary_current_user`、`query_timing_detail_current_user`、`query_timing_total_by_user_name`、`query_timing_summary_by_user_name`、`query_timing_detail_by_user_name`、`query_project_timing_total`、`query_project_timing_detail`、`query_project_timing_summary_by_lawyer`\n- `schedule`：`query_current_user_schedule_agenda`、`query_current_user_schedule_detail`、`create_current_user_schedule`、`update_current_user_schedule`、`query_schedule_freebusy`、`query_schedule_suggestion`、`query_available_conference_rooms`、`update_current_user_schedule_rsvp`\n- `task`：`create_project_task`、`create_personal_task`、`query_my_pending_tasks`、`update_task`、`complete_task`、`update_task_reopen`、`create_task_check`、`complete_task_check`、`update_task_check_reopen`\n- `assistant`：`query_current_draft`、`query_session_drafts`、`update_current_draft_focus`、`update_draft_fields`、`delete_draft`\n- `attachment`：`extract_attachment_text`；文件上传使用 CLI 专用入口 `alpha-oa-cli tool upload <filePath>`\n- `dyform`：`query_form_schema`\n\n## 业务快捷命令\n\n业务快捷命令是飞书 CLI 风格的高频 Tool 包装，不要求 Agent 记住完整 Tool 名：\n\n```bash\nalpha-oa-cli customer +count-by-owner --limit 1000\nalpha-oa-cli customer +recent-created --page-size 20\nalpha-oa-cli project +in-progress --page-no 1 --page-size 5\nalpha-oa-cli project +in-progress --page-all --page-size 20 --page-limit 100\nalpha-oa-cli timing +create --project \"项目名或编号\" --date 2026-05-20 --duration 120 --work-detail \"开会\" --confirm\nalpha-oa-cli timing +total --from 2026-05-01 --to 2026-05-20\nalpha-oa-cli timing +day-summary --from 2026-05-01 --to 2026-05-20\nalpha-oa-cli timing +detail --from 2026-05-01 --to 2026-05-20 --project \"项目名或编号\" --page-size 20\nalpha-oa-cli timing +user-total --user \"张三\" --from 2026-05-01 --to 2026-05-20 --target-minutes 2400\nalpha-oa-cli timing +project-total --project \"项目名或编号\" --from 2026-05-01 --to 2026-05-20\nalpha-oa-cli timing +project-lawyer-summary --project \"项目名或编号\" --from 2026-05-01 --to 2026-05-20\nalpha-oa-cli schedule +agenda --start \"2026-05-20 00:00\" --end \"2026-05-20 23:59\"\nalpha-oa-cli schedule +detail --schedule-task-id 123\nalpha-oa-cli schedule +suggestion --attendee-user-ids 1001,1002 --duration-minutes 60 --limit 5\nalpha-oa-cli schedule +room-find --slot \"2026-05-20 10:00~2026-05-20 11:00\" --min-capacity 6\nalpha-oa-cli schedule +create --summary \"项目例会\" --start \"2026-05-20 10:00\" --end \"2026-05-20 11:00\" --attendee-user-ids 1001,1002 --conference-ids 8 --confirm\nalpha-oa-cli schedule +update --schedule-task-id 123 --summary \"项目周会\" --confirm\nalpha-oa-cli schedule +rsvp --schedule-task-id 123 --rsvp-status accept --confirm\nalpha-oa-cli task +create-project --project \"项目名或编号\" --title \"整理访谈纪要\" --assignee-names \"张三,李四\" --deadline \"2026-05-26\" --checklist-item \"上传纪要\" --attachment ./纪要.docx --confirm\nalpha-oa-cli task +create-personal --title \"补充客户材料\" --deadline \"2026-05-26 18:00\" --attachment ./材料.pdf --confirm\nalpha-oa-cli task +my-pending-tasks --personal-only --page-size 20\nalpha-oa-cli task +update --task-id 123 --title \"更新后的任务标题\" --attachment ./补充材料.pdf --attachment-scope project --confirm\nalpha-oa-cli task +complete --task-id 123 --confirm\nalpha-oa-cli task +check-add --task-id 123 --content \"复核附件\" --confirm\nalpha-oa-cli task +check-complete --task-check-id 456 --confirm\nalpha-oa-cli draft +current\nalpha-oa-cli attachment +upload ./合同附件.pdf\n```\n\n- 快捷命令底层仍然走正式 `/agent/api/v1/tools` 入口，不绕过权限和 Tool schema。\n- 支持 `--format`、`--jq`、`--runtime-json`、`--dry-run`。\n- 分页类快捷命令同样支持 `--page-no`、`--page-size`、`--page-all`、`--page-limit`、`--page-delay-ms`。\n- `timing +create` 是真实写入操作，必须显式传 `--confirm`；不确定项目匹配结果时先用 `--dry-run` 或让后端 Tool 返回澄清候选。\n- `schedule +create`、`schedule +update`、`schedule +rsvp` 是真实写入操作，必须显式传 `--confirm`；查询会议室前必须先给出明确 `--slot start~end` 时间段。\n- `task +create-project` 会用 `upload_temporary_attachment` 上传本地附件，`task +create-personal` 会用 `upload_attachment`；`task +update --attachment` 必须显式传 `--attachment-scope project|personal`。\n- `task +create-project`、`task +create-personal`、`task +update`、`task +complete`、`task +reopen` 和检查项写入命令都是真实写入操作，必须显式传 `--confirm`。\n\n## Raw API 调试\n\n`alpha-oa-cli api` 用于排查 HTTP 层问题，默认只允许白名单路径前缀：\n\n```bash\nalpha-oa-cli api GET /agent/api/v1/tools --query-json '{\"domain\":\"customer\"}'\nalpha-oa-cli api GET /agent/api/v1/cli/skills\nalpha-oa-cli api POST /agent/api/v1/tools/query_current_draft/invoke --data-json '{\"arguments\":{\"include_schema\":false}}' --confirm\n```\n\n- 允许前缀：`/agent/api/v1/tools`、`/agent/api/v1/cli/skills`、`/user/api/v1/token/check`、`/user/api/v1/token/refresh`、`/user/api/v1/cli-device-auth`。\n- 非 GET 请求必须显式加 `--confirm`。\n- 返回 HTTP 状态码、响应头和原始响应体，适合调试服务端协议差异。\n\n## 已安装内容\n\n- Codex skill：`~/.codex/skills/alpha-oa/SKILL.md`\n- Claude 入口指令：`~/.claude/CLAUDE.md`\n- OpenClaw skill：`~/.openclaw/skills/alpha-oa/SKILL.md`\n- AlphaClaw skill：已存在环境会写入 `~/.openclaw-devalphaclaw/workspace/skills/alpha-oa/SKILL.md`、`~/.openclaw-testalphaclaw/workspace/skills/alpha-oa/SKILL.md`、`~/.openclaw-alphaclaw/workspace/skills/alpha-oa/SKILL.md`\n- Bootstrap 技能正文：\n  - Codex：`~/.codex/skills/alpha-oa/SKILL.md`\n  - Claude：`~/.claude/skills/alpha-oa/SKILL.md`\n  - OpenClaw：`~/.openclaw/skills/alpha-oa/SKILL.md`\n  - AlphaClaw：已存在环境的 `workspace/skills/alpha-oa/SKILL.md`\n- 业务领域说明：不再随 npm 包内置，由服务端 `/agent/api/v1/cli/skills` 动态下发到 `alpha-oa/references/*.md`\n- 远程 MCP 服务名：`alpha`；只有执行 `alpha-oa-cli mcp install` 后才会写入客户端 MCP 配置\n\n## Codex 测试\n\n安装并登录后，直接在 Codex 对话框中提问：\n\n```text\n查一下我名下有多少个客户\n```\n\n也可以用非交互方式做烟测：\n\n```bash\ncodex exec --skip-git-repo-check \"查一下我名下有多少个客户\"\n```\n\n当前本地工具列表暂未稳定开放审批专用工具。如果 `alpha-oa-cli tool list --keyword 审批` 查不到对应工具，Codex 应明确说明该环境未开放审批查询能力。\n\n## Claude Code 测试\n\n先检查 Claude 是否已写入远程 MCP：\n\n```bash\nclaude mcp list\nclaude mcp get alpha\n```\n\n然后在 Claude Code 对话框里直接提问：\n\n```text\n查一下我参与的进行中项目，给我前5个\n```\n\n如果你要做命令行烟测，建议直接用：\n\n```bash\nclaude -p --permission-mode bypassPermissions \"查一下我名下有多少个客户\"\n```\n\n## Skill 更新流程\n\n`alpha-oa-cli skills update` 默认先请求服务端 `/agent/api/v1/cli/skills`，把服务端动态\nskill 写到 Codex、Claude、OpenClaw 和已存在 AlphaClaw workspace 的本机 skills 目录。只有远程不可用时，才写入\nnpm 包内置的极简 bootstrap skill 兜底。这样新增服务端 Tool 或业务模块贡献的 skill\n文件时，不需要重新发布 CLI 版本。\n\n当前 npm 包只保留非业务 bootstrap 模板：\n\n- `assets/agent-skill/SKILL.md`\n- `assets/claude/CLAUDE.md`\n\nbootstrap 模板更新流程固定为：\n\n1. 修改 `assets/agent-skill/SKILL.md` 或 `assets/claude/CLAUDE.md`。\n2. 执行 `npm run typecheck && npm run build && npm run test`。\n3. 重新执行 `alpha-oa-cli skills update --source bundled`、`alpha-oa-cli auth login` 或 `alpha-oa-cli install codex/claude/openclaw/alphaclaw`，把 bootstrap 覆盖到用户目录。\n4. 如果要对外发布，再升级 `package.json` 版本并发布 npm。\n\n服务端动态 skill 更新流程：\n\n1. 业务模块实现 `ICliSkillContributor`，返回自己的 `CliSkillFileVO` 列表。\n2. 部署服务端后执行 `alpha-oa-cli skills update --source remote`，只拉远程 skill。\n3. 日常使用 `alpha-oa-cli skills update` 即可；远程成功时以服务端清单为准，远程不可用时写入 bootstrap 兜底。\n4. CLI 会在各客户端 skills 根目录记录 `.alpha-oa-cli-remote-skills.json`，并按服务端清单清理旧文件，避免远端文件改名后本机残留历史 markdown。\n\n## 技能结构说明\n\n现在 npm 包内只维护一份 `alpha-oa/SKILL.md` bootstrap 和一个很短的 Claude\n入口说明。业务域内容由服务端按模块贡献，最终安装成 `alpha-oa/references/shared.md`、\n`alpha-oa/references/tool-index.md`、`alpha-oa/references/customer.md`、`alpha-oa/references/project.md`\n等引用文档，客户端技能框里只出现一个 `alpha-oa` 顶层 skill。\n\n这样做是参考飞书 `larksuite/cli` 的设计思路：CLI 负责安装和协议，业务说明由服务端模块贡献。\n\n## 彻底卸载\n\n如果你要做一次完全干净的本机复测，推荐按下面两步执行：\n\n```bash\nalpha-oa-cli uninstall\nnpm uninstall -g @alphalawyer/alpha-oa-cli\n```\n\n- `alpha-oa-cli uninstall` 会清理 Keychain 中的本地登录态、Codex/Claude/OpenClaw 的 Alpha MCP 配置、Codex/Claude/OpenClaw/AlphaClaw skills 目录下由 alpha-oa-cli 安装或远程下发的 `alpha-oa`、旧版 `agent-*`、`alpha-*`、`tool-index` 等技能、Claude 托管指令区块，以及 `~/.config/alpha-oa-cli`\n- `npm uninstall -g @alphalawyer/alpha-oa-cli` 只会移除全局 `alpha-oa-cli` 命令；如果直接执行这一步，npm 不会替你清理 Keychain session 和本地配置，所以必须先执行 `alpha-oa-cli uninstall`\n\n重新安装建议顺序：\n\n```bash\nnpm i -g @alphalawyer/alpha-oa-cli\nalpha-oa-cli auth login\n```\n\n## 查看技能和 MCP\n\n```bash\nalpha-oa-cli skills\nalpha-oa-cli skill codex\nalpha-oa-cli skill claude\nalpha-oa-cli skill openclaw\nalpha-oa-cli skill alphaclaw\nalpha-oa-cli mcp\nalpha-oa-cli mcp install openclaw\nalpha-oa-cli env current\nalpha-oa-cli auth status\nalpha-oa-cli auth check\nalpha-oa-cli auth whoami\nalpha-oa-cli auth list\nalpha-oa-cli update --check\nalpha-oa-cli update\nalpha-oa-cli schema\nalpha-oa-cli skills update\nalpha-oa-cli skills update --source remote\n```\n\n- `alpha-oa-cli skills`：查看项目内模板路径和本机安装路径\n- `alpha-oa-cli skill codex`：查看 Codex skill 模板内容\n- `alpha-oa-cli skill claude`：查看 Claude 指令模板内容\n- `alpha-oa-cli skill openclaw`：查看 OpenClaw 会安装的标准 skill 模板内容\n- `alpha-oa-cli skill alphaclaw`：查看 AlphaClaw 会安装的标准 skill 模板内容\n- `alpha-oa-cli skill agent`：查看本地 bootstrap 技能入口\n- `alpha-oa-cli mcp`：查看 Codex / Claude / OpenClaw 当前写入的远程 MCP 配置\n- `alpha-oa-cli mcp install`：显式安装远程 MCP 配置；默认目标是本机已安装的 Codex / Claude / OpenClaw，单独指定 `openclaw` 时会执行 `openclaw mcp set alpha ...`\n- `alpha-oa-cli env current/list/add/use/remove`：查看、添加、切换或删除本机环境配置\n- `alpha-oa-cli auth status/check/whoami/list/refresh`：查看、校验、刷新当前 token 登录态\n- `alpha-oa-cli update --check/update`：检查或安装 npm 最新版本，安装完成后会尽力刷新本机 skill\n- `alpha-oa-cli schema`：查看当前可用 Tool 的 Agent 友好 schema\n- `alpha-oa-cli skills update`：刷新本机 Codex / Claude / OpenClaw / 已存在 AlphaClaw workspace 技能，默认远程清单优先，远程不可用时写入本地 bootstrap\n- `alpha-oa-cli skills update --source remote`：只请求 `/agent/api/v1/cli/skills`，适合验证服务端新增 skill 是否生效\n\n## 诊断建议\n\n- `alpha-oa-cli doctor` 应至少看到 `session: present` 和 `api_check: ok`。\n- `alpha-oa-cli auth check` 适合 Agent 在执行业务命令前轻量校验 token；失败时按返回的 JSON 错误 hint 重新登录。\n- `alpha-oa-cli auth refresh` 适合在 token 即将过期时主动刷新；如果客户端 MCP Bearer 也需要更新，再执行 `alpha-oa-cli mcp install`。\n- Codex 侧优先走 OAuth。\n- Claude v1 使用 HTTP MCP + `Authorization: Bearer ...` 头。\n- 如果 Codex 远程 OAuth 同步提示 `No authorization support detected`，不影响 `alpha-oa-cli tool` HTTP 直调；继续用 `alpha-oa-cli doctor` 和 `alpha-oa-cli tool call ...` 验证服务端能力。\n- 日常优先使用 `alpha-oa-cli env use <name>` 或 `--env <name>` 切环境。\n- 只有在临时覆盖时，才手工传 `--base-url` 和 `--mcp-base-url`。\n","readmeFilename":"README.md"}