diff --git a/packages/cli/src/commands.ts b/packages/cli/src/commands.ts index 2d3ca54..8e51c94 100644 --- a/packages/cli/src/commands.ts +++ b/packages/cli/src/commands.ts @@ -3,6 +3,7 @@ import { authLogin, authStatus, authLogout, + authGenerateAccessToken, textChat, textOmni, imageGenerate, @@ -84,6 +85,7 @@ export const commands: Record = { "auth login": authLogin, "auth status": authStatus, "auth logout": authLogout, + "auth generate-access-token": authGenerateAccessToken, "text chat": textChat, omni: textOmni, "image generate": imageGenerate, diff --git a/packages/commands/src/commands/auth/generate-access-token.ts b/packages/commands/src/commands/auth/generate-access-token.ts index 7a2c36d..4423c2f 100644 --- a/packages/commands/src/commands/auth/generate-access-token.ts +++ b/packages/commands/src/commands/auth/generate-access-token.ts @@ -1 +1,44 @@ -export { generateCLIAccessToken } from "bailian-cli-core"; +import { + defineCommand, + detectOutputFormat, + generateCLIAccessToken, + type FlagsDef, +} from "bailian-cli-core"; +import { emitResult } from "bailian-cli-runtime"; + +const FLAGS = { + accessKeyId: { + type: "string", + valueHint: "", + description: "Alibaba Cloud Access Key ID", + required: true, + }, + accessKeySecret: { + type: "string", + valueHint: "", + description: "Alibaba Cloud Access Key Secret", + required: true, + }, +} satisfies FlagsDef; + +export default defineCommand({ + description: "Generate a CLI access token using OpenAPI AK/SK", + auth: "none", + usageArgs: "--access-key-id --access-key-secret ", + flags: FLAGS, + exampleArgs: ["--access-key-id LTAIxxxxx --access-key-secret xxxxx"], + async run(ctx) { + const { identity, settings, flags } = ctx; + const format = detectOutputFormat(settings.output); + + const resp = await generateCLIAccessToken({ + identity, + settings, + baseUrl: ctx.client.baseUrl, + accessKeyId: flags.accessKeyId, + accessKeySecret: flags.accessKeySecret, + }); + + emitResult(resp, format); + }, +}); diff --git a/packages/commands/src/commands/auth/login.ts b/packages/commands/src/commands/auth/login.ts index 217639f..0a7511e 100644 --- a/packages/commands/src/commands/auth/login.ts +++ b/packages/commands/src/commands/auth/login.ts @@ -5,7 +5,7 @@ import { runConsoleLogin, validateAndPersistApiKey, } from "./login-console.ts"; -import { generateCLIAccessToken } from "./generate-access-token.ts"; +import { generateCLIAccessToken } from "bailian-cli-core"; const LOGIN_MODE_HINT = "Choose exactly one login mode: --api-key, --console, or --open-api"; diff --git a/packages/commands/src/index.ts b/packages/commands/src/index.ts index d8467a7..7a46e39 100644 --- a/packages/commands/src/index.ts +++ b/packages/commands/src/index.ts @@ -6,6 +6,7 @@ export { default as authLogin } from "./commands/auth/login.ts"; export { default as authStatus } from "./commands/auth/status.ts"; export { default as authLogout } from "./commands/auth/logout.ts"; +export { default as authGenerateAccessToken } from "./commands/auth/generate-access-token.ts"; export { default as textChat } from "./commands/text/chat.ts"; export { default as textOmni } from "./commands/omni/chat.ts"; export { default as imageGenerate } from "./commands/image/generate.ts"; diff --git a/skills/bailian-cli/reference/auth.md b/skills/bailian-cli/reference/auth.md index eda1496..2a0bfd2 100644 --- a/skills/bailian-cli/reference/auth.md +++ b/skills/bailian-cli/reference/auth.md @@ -7,14 +7,36 @@ Index: [index.md](index.md) ## Commands in this group -| Command | Description | -| ---------------- | -------------------------------------------------------------------------------------------- | -| `bl auth login` | Authenticate with API key, console browser login, or OpenAPI AK/SK (credentials can coexist) | -| `bl auth logout` | Clear stored credentials | -| `bl auth status` | Show current authentication state | +| Command | Description | +| ------------------------------- | -------------------------------------------------------------------------------------------- | +| `bl auth generate-access-token` | Generate a CLI access token using OpenAPI AK/SK | +| `bl auth login` | Authenticate with API key, console browser login, or OpenAPI AK/SK (credentials can coexist) | +| `bl auth logout` | Clear stored credentials | +| `bl auth status` | Show current authentication state | ## Command details +### `bl auth generate-access-token` + +| Field | Value | +| --------------- | --------------------------------------------------------------------------------- | +| **Name** | `auth generate-access-token` | +| **Description** | Generate a CLI access token using OpenAPI AK/SK | +| **Usage** | `bl auth generate-access-token --access-key-id --access-key-secret ` | + +#### Flags + +| Flag | Type | Required | Description | +| ------------------------------ | ------ | -------- | ------------------------------- | +| `--access-key-id ` | string | yes | Alibaba Cloud Access Key ID | +| `--access-key-secret ` | string | yes | Alibaba Cloud Access Key Secret | + +#### Examples + +```bash +bl auth generate-access-token --access-key-id LTAIxxxxx --access-key-secret xxxxx +``` + ### `bl auth login` | Field | Value | diff --git a/skills/bailian-cli/reference/index.md b/skills/bailian-cli/reference/index.md index 00aef86..cf2f0aa 100644 --- a/skills/bailian-cli/reference/index.md +++ b/skills/bailian-cli/reference/index.md @@ -8,81 +8,82 @@ Use this index for the full quick index and global flags. ## Quick index -| Command | Description | Detail | -| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | -| `bl advisor recommend` | Recommend the best models for your use case (intent analysis → candidate recall → LLM ranking) | [advisor.md](advisor.md) | -| `bl app call` | Call a Bailian application (agent or workflow) | [app.md](app.md) | -| `bl app list` | List Bailian applications | [app.md](app.md) | -| `bl auth login` | Authenticate with API key, console browser login, or OpenAPI AK/SK (credentials can coexist) | [auth.md](auth.md) | -| `bl auth logout` | Clear stored credentials | [auth.md](auth.md) | -| `bl auth status` | Show current authentication state | [auth.md](auth.md) | -| `bl config set` | Set a config value | [config.md](config.md) | -| `bl config show` | Display current configuration | [config.md](config.md) | -| `bl console call` | Call a Bailian console API via the CLI gateway | [console.md](console.md) | -| `bl dataset delete` | Delete a dataset file by ID | [dataset.md](dataset.md) | -| `bl dataset get` | Get details of a single dataset file | [dataset.md](dataset.md) | -| `bl dataset list` | List uploaded dataset files | [dataset.md](dataset.md) | -| `bl dataset upload` | Upload a dataset file (.jsonl) to Bailian | [dataset.md](dataset.md) | -| `bl dataset validate` | Locally validate a dataset file (.jsonl) without uploading | [dataset.md](dataset.md) | -| `bl deploy create` | Create a model deployment | [deploy.md](deploy.md) | -| `bl deploy delete` | Delete a model deployment (must be STOPPED or FAILED) | [deploy.md](deploy.md) | -| `bl deploy get` | Get details of a single model deployment | [deploy.md](deploy.md) | -| `bl deploy list` | List model deployments | [deploy.md](deploy.md) | -| `bl deploy models` | List models available for deployment | [deploy.md](deploy.md) | -| `bl deploy scale` | Scale a deployment's capacity | [deploy.md](deploy.md) | -| `bl deploy update` | Update a deployment's rate limits (rpm_limit / tpm_limit) | [deploy.md](deploy.md) | -| `bl file upload` | Upload a local file to DashScope temporary storage (48h) | [file.md](file.md) | -| `bl finetune cancel` | Cancel a running fine-tune job | [finetune.md](finetune.md) | -| `bl finetune capability` | Query fine-tune training capability — by model (which training types it supports) or by training type (which models support it) | [finetune.md](finetune.md) | -| `bl finetune checkpoints` | List checkpoints produced by a fine-tune job | [finetune.md](finetune.md) | -| `bl finetune create` | Create a fine-tune job (sft \| sft-lora \| dpo \| dpo-lora \| cpt) | [finetune.md](finetune.md) | -| `bl finetune delete` | Delete a fine-tune job record | [finetune.md](finetune.md) | -| `bl finetune export` | Publish a checkpoint as a deployable model | [finetune.md](finetune.md) | -| `bl finetune get` | Get details of a single fine-tune job | [finetune.md](finetune.md) | -| `bl finetune list` | List fine-tune jobs | [finetune.md](finetune.md) | -| `bl finetune logs` | Fetch training logs for a fine-tune job | [finetune.md](finetune.md) | -| `bl finetune watch` | Probe a fine-tune job's status (default: single non-blocking fetch). Pass --follow to poll until terminal. | [finetune.md](finetune.md) | -| `bl image edit` | Edit an existing image with text instructions (Qwen-Image) | [image.md](image.md) | -| `bl image generate` | Generate images (Qwen-Image / wan2.x) | [image.md](image.md) | -| `bl knowledge chat` | Chat with a Bailian knowledge base (RAG Q&A with streaming) | [knowledge.md](knowledge.md) | -| `bl knowledge retrieve` | Retrieve from a Bailian knowledge base (deprecated, use `search` instead) | [knowledge.md](knowledge.md) | -| `bl knowledge search` | Search a Bailian knowledge base (RAG semantic retrieval) | [knowledge.md](knowledge.md) | -| `bl mcp call` | Call a tool on an MCP server (tools/call) | [mcp.md](mcp.md) | -| `bl mcp list` | List MCP servers activated under your Bailian account | [mcp.md](mcp.md) | -| `bl mcp tools` | List tools exposed by an MCP server (tools/list) | [mcp.md](mcp.md) | -| `bl memory add` | Add memory from messages or custom content | [memory.md](memory.md) | -| `bl memory delete` | Delete a memory node | [memory.md](memory.md) | -| `bl memory list` | List memory nodes for a user | [memory.md](memory.md) | -| `bl memory profile create` | Create a user profile schema for memory profiling | [memory.md](memory.md) | -| `bl memory profile get` | Get user profile by schema ID and user ID | [memory.md](memory.md) | -| `bl memory search` | Search memory nodes by query or messages | [memory.md](memory.md) | -| `bl memory update` | Update a memory node content | [memory.md](memory.md) | -| `bl omni` | Multimodal chat with text + audio output (Qwen-Omni) | [omni.md](omni.md) | -| `bl pipeline run` | Run a pipeline workflow definition | [pipeline.md](pipeline.md) | -| `bl pipeline validate` | Validate a pipeline definition without executing | [pipeline.md](pipeline.md) | -| `bl quota check` | Check current usage against rate limits | [quota.md](quota.md) | -| `bl quota history` | View quota change history | [quota.md](quota.md) | -| `bl quota list` | View model RPM/TPM rate limits | [quota.md](quota.md) | -| `bl quota request` | Request a temporary quota increase | [quota.md](quota.md) | -| `bl search web` | Search the web using DashScope MCP WebSearch service | [search.md](search.md) | -| `bl speech recognize` | Recognize speech from audio files (FunAudio-ASR) | [speech.md](speech.md) | -| `bl speech synthesize` | Synthesize speech from text (CosyVoice TTS) | [speech.md](speech.md) | -| `bl text chat` | Send a chat completion (OpenAI compatible, DashScope) | [text.md](text.md) | -| `bl token-plan add-member` | Add a member to a Token Plan organization | [token-plan.md](token-plan.md) | -| `bl token-plan assign-seats` | Batch assign Token Plan seats to members | [token-plan.md](token-plan.md) | -| `bl token-plan create-key` | Create a Token Plan API key for a seat | [token-plan.md](token-plan.md) | -| `bl token-plan list-seats` | List Token Plan subscription seat details | [token-plan.md](token-plan.md) | -| `bl update` | Update the CLI to the latest version | [update.md](update.md) | -| `bl usage free` | Query free-tier quota for models (all models if --model is omitted) | [usage.md](usage.md) | -| `bl usage freetier` | Enable or disable auto-stop for free-tier models. Enables by default; use --off to disable | [usage.md](usage.md) | -| `bl usage stats` | Query model usage statistics | [usage.md](usage.md) | -| `bl video download` | Download a completed video by task ID | [video.md](video.md) | -| `bl video edit` | Edit a video with happyhorse-1.0-video-edit (style transfer, object replacement, etc.) | [video.md](video.md) | -| `bl video generate` | Generate a video from text or image (happyhorse-1.1-t2v / happyhorse-1.1-i2v / wan2.6-t2v) | [video.md](video.md) | -| `bl video ref` | Reference-to-video generation (happyhorse-1.1-r2v / wan2.6-r2v): multi-subject, multi-shot with voice | [video.md](video.md) | -| `bl video task get` | Query async task status | [video.md](video.md) | -| `bl vision describe` | Describe an image or video using Qwen-VL | [vision.md](vision.md) | -| `bl workspace list` | List all workspaces | [workspace.md](workspace.md) | +| Command | Description | Detail | +| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | +| `bl advisor recommend` | Recommend the best models for your use case (intent analysis → candidate recall → LLM ranking) | [advisor.md](advisor.md) | +| `bl app call` | Call a Bailian application (agent or workflow) | [app.md](app.md) | +| `bl app list` | List Bailian applications | [app.md](app.md) | +| `bl auth generate-access-token` | Generate a CLI access token using OpenAPI AK/SK | [auth.md](auth.md) | +| `bl auth login` | Authenticate with API key, console browser login, or OpenAPI AK/SK (credentials can coexist) | [auth.md](auth.md) | +| `bl auth logout` | Clear stored credentials | [auth.md](auth.md) | +| `bl auth status` | Show current authentication state | [auth.md](auth.md) | +| `bl config set` | Set a config value | [config.md](config.md) | +| `bl config show` | Display current configuration | [config.md](config.md) | +| `bl console call` | Call a Bailian console API via the CLI gateway | [console.md](console.md) | +| `bl dataset delete` | Delete a dataset file by ID | [dataset.md](dataset.md) | +| `bl dataset get` | Get details of a single dataset file | [dataset.md](dataset.md) | +| `bl dataset list` | List uploaded dataset files | [dataset.md](dataset.md) | +| `bl dataset upload` | Upload a dataset file (.jsonl) to Bailian | [dataset.md](dataset.md) | +| `bl dataset validate` | Locally validate a dataset file (.jsonl) without uploading | [dataset.md](dataset.md) | +| `bl deploy create` | Create a model deployment | [deploy.md](deploy.md) | +| `bl deploy delete` | Delete a model deployment (must be STOPPED or FAILED) | [deploy.md](deploy.md) | +| `bl deploy get` | Get details of a single model deployment | [deploy.md](deploy.md) | +| `bl deploy list` | List model deployments | [deploy.md](deploy.md) | +| `bl deploy models` | List models available for deployment | [deploy.md](deploy.md) | +| `bl deploy scale` | Scale a deployment's capacity | [deploy.md](deploy.md) | +| `bl deploy update` | Update a deployment's rate limits (rpm_limit / tpm_limit) | [deploy.md](deploy.md) | +| `bl file upload` | Upload a local file to DashScope temporary storage (48h) | [file.md](file.md) | +| `bl finetune cancel` | Cancel a running fine-tune job | [finetune.md](finetune.md) | +| `bl finetune capability` | Query fine-tune training capability — by model (which training types it supports) or by training type (which models support it) | [finetune.md](finetune.md) | +| `bl finetune checkpoints` | List checkpoints produced by a fine-tune job | [finetune.md](finetune.md) | +| `bl finetune create` | Create a fine-tune job (sft \| sft-lora \| dpo \| dpo-lora \| cpt) | [finetune.md](finetune.md) | +| `bl finetune delete` | Delete a fine-tune job record | [finetune.md](finetune.md) | +| `bl finetune export` | Publish a checkpoint as a deployable model | [finetune.md](finetune.md) | +| `bl finetune get` | Get details of a single fine-tune job | [finetune.md](finetune.md) | +| `bl finetune list` | List fine-tune jobs | [finetune.md](finetune.md) | +| `bl finetune logs` | Fetch training logs for a fine-tune job | [finetune.md](finetune.md) | +| `bl finetune watch` | Probe a fine-tune job's status (default: single non-blocking fetch). Pass --follow to poll until terminal. | [finetune.md](finetune.md) | +| `bl image edit` | Edit an existing image with text instructions (Qwen-Image) | [image.md](image.md) | +| `bl image generate` | Generate images (Qwen-Image / wan2.x) | [image.md](image.md) | +| `bl knowledge chat` | Chat with a Bailian knowledge base (RAG Q&A with streaming) | [knowledge.md](knowledge.md) | +| `bl knowledge retrieve` | Retrieve from a Bailian knowledge base (deprecated, use `search` instead) | [knowledge.md](knowledge.md) | +| `bl knowledge search` | Search a Bailian knowledge base (RAG semantic retrieval) | [knowledge.md](knowledge.md) | +| `bl mcp call` | Call a tool on an MCP server (tools/call) | [mcp.md](mcp.md) | +| `bl mcp list` | List MCP servers activated under your Bailian account | [mcp.md](mcp.md) | +| `bl mcp tools` | List tools exposed by an MCP server (tools/list) | [mcp.md](mcp.md) | +| `bl memory add` | Add memory from messages or custom content | [memory.md](memory.md) | +| `bl memory delete` | Delete a memory node | [memory.md](memory.md) | +| `bl memory list` | List memory nodes for a user | [memory.md](memory.md) | +| `bl memory profile create` | Create a user profile schema for memory profiling | [memory.md](memory.md) | +| `bl memory profile get` | Get user profile by schema ID and user ID | [memory.md](memory.md) | +| `bl memory search` | Search memory nodes by query or messages | [memory.md](memory.md) | +| `bl memory update` | Update a memory node content | [memory.md](memory.md) | +| `bl omni` | Multimodal chat with text + audio output (Qwen-Omni) | [omni.md](omni.md) | +| `bl pipeline run` | Run a pipeline workflow definition | [pipeline.md](pipeline.md) | +| `bl pipeline validate` | Validate a pipeline definition without executing | [pipeline.md](pipeline.md) | +| `bl quota check` | Check current usage against rate limits | [quota.md](quota.md) | +| `bl quota history` | View quota change history | [quota.md](quota.md) | +| `bl quota list` | View model RPM/TPM rate limits | [quota.md](quota.md) | +| `bl quota request` | Request a temporary quota increase | [quota.md](quota.md) | +| `bl search web` | Search the web using DashScope MCP WebSearch service | [search.md](search.md) | +| `bl speech recognize` | Recognize speech from audio files (FunAudio-ASR) | [speech.md](speech.md) | +| `bl speech synthesize` | Synthesize speech from text (CosyVoice TTS) | [speech.md](speech.md) | +| `bl text chat` | Send a chat completion (OpenAI compatible, DashScope) | [text.md](text.md) | +| `bl token-plan add-member` | Add a member to a Token Plan organization | [token-plan.md](token-plan.md) | +| `bl token-plan assign-seats` | Batch assign Token Plan seats to members | [token-plan.md](token-plan.md) | +| `bl token-plan create-key` | Create a Token Plan API key for a seat | [token-plan.md](token-plan.md) | +| `bl token-plan list-seats` | List Token Plan subscription seat details | [token-plan.md](token-plan.md) | +| `bl update` | Update the CLI to the latest version | [update.md](update.md) | +| `bl usage free` | Query free-tier quota for models (all models if --model is omitted) | [usage.md](usage.md) | +| `bl usage freetier` | Enable or disable auto-stop for free-tier models. Enables by default; use --off to disable | [usage.md](usage.md) | +| `bl usage stats` | Query model usage statistics | [usage.md](usage.md) | +| `bl video download` | Download a completed video by task ID | [video.md](video.md) | +| `bl video edit` | Edit a video with happyhorse-1.0-video-edit (style transfer, object replacement, etc.) | [video.md](video.md) | +| `bl video generate` | Generate a video from text or image (happyhorse-1.1-t2v / happyhorse-1.1-i2v / wan2.6-t2v) | [video.md](video.md) | +| `bl video ref` | Reference-to-video generation (happyhorse-1.1-r2v / wan2.6-r2v): multi-subject, multi-shot with voice | [video.md](video.md) | +| `bl video task get` | Query async task status | [video.md](video.md) | +| `bl vision describe` | Describe an image or video using Qwen-VL | [vision.md](vision.md) | +| `bl workspace list` | List all workspaces | [workspace.md](workspace.md) | ## By group @@ -90,7 +91,7 @@ Use this index for the full quick index and global flags. | ------------ | --------------------------------------------------------------------------------------------------- | ------------------------------ | | `advisor` | `recommend` | [advisor.md](advisor.md) | | `app` | `call`, `list` | [app.md](app.md) | -| `auth` | `login`, `logout`, `status` | [auth.md](auth.md) | +| `auth` | `generate-access-token`, `login`, `logout`, `status` | [auth.md](auth.md) | | `config` | `set`, `show` | [config.md](config.md) | | `console` | `call` | [console.md](console.md) | | `dataset` | `delete`, `get`, `list`, `upload`, `validate` | [dataset.md](dataset.md) |