Compare commits

..

5 Commits

Author SHA1 Message Date
故璃 640dd02bc5 chore(release): prepare 1.15.1 2026-08-17 11:55:36 +08:00
故璃 d0610a61dc docs(changelog): document 1.15.1 2026-08-17 11:25:17 +08:00
gujieye 57c2d98308 Merge pull request #160 from modelstudioai/feat/skill-init-simplify
feat: update skill init output
2026-08-17 11:01:35 +08:00
gujieye 78e6993475 Merge pull request #162 from modelstudioai/feat/model-command-update
feat: update model quota limit & add model permission command
2026-08-17 00:06:30 +08:00
故璃 4ccda5f929 feat: update skill init output 2026-08-15 10:15:00 +08:00
13 changed files with 90 additions and 46 deletions
+13
View File
@@ -6,6 +6,19 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
[中文版](CHANGELOG.zh.md) · [README](README.md) · [Contributing](CONTRIBUTING.md)
## [1.15.1] - 2026-08-17
### Added
- **Model permission management** — `bl permission list` shows per-model inference / fine-tune / deploy grants; `bl permission grant` and `bl permission revoke` manage them, with `--all` to one-key grant inference for every model in the workspace (including future ones).
### Changed
- **`bl quota request` renamed to `bl quota update`** — set per-model QPM/TPM via `--rpm`/`--tpm` and clear custom limits with the new `--delete`; omitted fields keep their current values, and the old `quota request` path keeps working as an alias.
- **`bl quota list` reworked** — now reads the model-limits API and shows per-model and workspace-level request/usage limits plus async queue/concurrency limits in a single table.
- **`bl model list` no longer requires Console login** — the model catalog and `--enrich` parameter-schema endpoints are public.
- **`bl skill init` output simplified** — per-skill status is now `success`/`failed` (previously `installed`) with an aggregate `success`/`partial`/`failed` result; the `publishedAt` and `agents` fields were removed.
## [1.15.0] - 2026-08-14
### Added
+13
View File
@@ -6,6 +6,19 @@
[English](CHANGELOG.md) · [README](README.zh.md) · [参与贡献](CONTRIBUTING.zh.md)
## [1.15.1] - 2026-08-17
### 新增
- **模型权限管理** —— `bl permission list` 查看各模型的推理 / 微调 / 部署授权;`bl permission grant` 与 `bl permission revoke` 负责授予和回收,支持 `--all` 一键为工作区全部模型(含后续新增模型)开启推理授权。
### 变更
- **`bl quota request` 更名为 `bl quota update`** —— 通过 `--rpm`/`--tpm` 设置单模型 QPM/TPM,新增 `--delete` 一键清除自定义限制;未指定的字段保持当前值,旧命令 `quota request` 仍作为别名可用。
- **`bl quota list` 重构** —— 改从模型限制接口读取数据,单表展示模型级与工作区级的请求/用量限制及异步队列/并发限制。
- **`bl model list` 不再需要控制台登录** —— 模型目录与 `--enrich` 参数结构端点均为公开接口。
- **`bl skill init` 输出精简** —— 单技能状态改为 `success`/`failed`(原为 `installed`),新增 `success`/`partial`/`failed` 汇总结果;移除 `publishedAt` 与 `agents` 字段。
## [1.15.0] - 2026-08-14
### 新增
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "bailian-cli",
"version": "1.15.0",
"version": "1.15.1",
"description": "CLI for Aliyun Model Studio (DashScope) AI Platform.",
"keywords": [
"agent",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "bailian-cli-commands",
"version": "1.15.0",
"version": "1.15.1",
"description": "Command library for bailian-cli products (knowledge, memory, media, …). See https://www.npmjs.com/package/bailian-cli for usage.",
"homepage": "https://bailian.console.aliyun.com/cli",
"bugs": {
+54 -36
View File
@@ -4,21 +4,12 @@ import {
defineCommand,
detectInstalledAgents,
fetchSkillsIndex,
getSkillRegistryBaseUrl,
installSkillWithFanout,
readSkillLock,
runWithConcurrency,
writeSkillLock,
} from "bailian-cli-core";
import { emitBare, emitResult, formatTable } from "bailian-cli-runtime";
interface InitOutcome {
name: string;
status: "installed" | "failed";
publishedAt?: string;
agents?: string[];
reason?: string;
}
import { emitBare, emitResult } from "bailian-cli-runtime";
/** Prefix used to identify first-party Bailian skills in the registry. */
const BAILIAN_PREFIX = "bailian-";
@@ -26,6 +17,22 @@ const BAILIAN_PREFIX = "bailian-";
/** Max number of skills downloading/installing at the same time. */
const INIT_CONCURRENCY = 3;
/** Default output format when user does not pass --output explicitly. */
const DEFAULT_FORMAT = "json";
/** All status values used by skill init (per-skill outcome + aggregate result). */
const STATUS = {
success: "success",
partial: "partial",
failed: "failed",
} as const;
interface InitOutcome {
name: string;
status: typeof STATUS.success | typeof STATUS.failed;
reason?: string;
}
export default defineCommand({
description: "Install all bailian-* skills (one-shot bootstrap for new environments)",
auth: "none",
@@ -36,7 +43,7 @@ export default defineCommand({
"Equivalent to: bl skill add --all (filtered to bailian-* skills)",
],
async run(ctx) {
const format = ctx.settings.outputExplicit ? ctx.settings.output : "json";
const format = ctx.settings.outputExplicit ? ctx.settings.output : DEFAULT_FORMAT;
const index = await fetchSkillsIndex();
// Discover all bailian-* skills from the live registry index
@@ -55,16 +62,11 @@ export default defineCommand({
lock.skills[name]?.links ?? [],
);
lock.skills[name] = record.lockEntry;
return {
name,
status: "installed",
publishedAt: entry.publishedAt,
agents: record.linkedAgents,
};
return { name, status: STATUS.success };
} catch (err) {
return {
name,
status: "failed",
status: STATUS.failed,
reason: err instanceof Error ? err.message : String(err),
};
}
@@ -72,30 +74,46 @@ export default defineCommand({
const results = await runWithConcurrency(tasks, INIT_CONCURRENCY);
writeSkillLock(lock);
if (format === "json") {
emitResult(
{
registry: getSkillRegistryBaseUrl(),
agents: agents.map((agent) => agent.id),
skills: results,
},
format,
);
const installed = results.filter((result) => result.status === STATUS.success);
const failed = results.filter((result) => result.status === STATUS.failed);
const status =
failed.length === 0
? STATUS.success
: installed.length === 0
? STATUS.failed
: STATUS.partial;
if (format === DEFAULT_FORMAT) {
const agentIds = agents.map((agent) => agent.id);
const payload: Record<string, unknown> = {
status,
skills: installed.map((result) => result.name),
};
if (failed.length > 0) {
payload.failed = failed.map((result) => ({
name: result.name,
reason: result.reason,
agents: agentIds,
}));
}
emitResult(payload, format);
} else if (results.length === 0) {
emitBare("No bailian-* skills found in the registry.");
} else {
const rows = results.map((result) => [
result.name,
result.status,
result.publishedAt ? result.publishedAt.slice(0, 10) : "-",
result.status === "installed" ? result.agents?.join(", ") || "-" : (result.reason ?? "-"),
]);
for (const line of formatTable(["NAME", "STATUS", "PUBLISHED", "AGENTS / REASON"], rows)) {
emitBare(line);
emitBare(
status === STATUS.success
? `Installed ${installed.length} bailian-* skills.`
: `Installed ${installed.length}/${results.length} bailian-* skills.`,
);
if (failed.length > 0) {
emitBare("Failed:");
for (const item of failed) {
emitBare(` ${item.name}: ${item.reason}`);
}
}
}
const failed = results.filter((result) => result.status === "failed");
if (failed.length > 0) {
throw new BailianError(
`${failed.length}/${results.length} skill(s) failed to install`,
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "bailian-cli-core",
"version": "1.15.0",
"version": "1.15.1",
"description": "Core SDK for bailian-cli. See https://www.npmjs.com/package/bailian-cli for usage.",
"homepage": "https://bailian.console.aliyun.com/cli",
"bugs": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "knowledge-studio-cli",
"version": "1.15.0",
"version": "1.15.1",
"description": "Lightweight RAG CLI for Aliyun Model Studio — focused on knowledge-base retrieval.",
"keywords": [
"alibaba-cloud",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "bailian-cli-runtime",
"version": "1.15.0",
"version": "1.15.1",
"description": "Runtime framework for bailian-cli (createCli, registry, args, output, pipeline). See https://www.npmjs.com/package/bailian-cli for usage.",
"homepage": "https://bailian.console.aliyun.com/cli",
"bugs": {
+1 -1
View File
@@ -1,7 +1,7 @@
---
name: bailian-cli
metadata:
version: "1.15.0"
version: "1.15.1"
requires:
bins: ["bl"]
description: >-
+1 -1
View File
@@ -1,7 +1,7 @@
---
name: bailian-finetune
metadata:
version: "1.15.0"
version: "1.15.1"
requires:
bins: ["bl"]
description: >-
+1 -1
View File
@@ -1,7 +1,7 @@
---
name: bailian-gen
metadata:
version: "1.15.0"
version: "1.15.1"
requires:
bins: ["bl"]
description: >-
+1 -1
View File
@@ -1,7 +1,7 @@
---
name: bailian-managed-agent
metadata:
version: "1.15.0"
version: "1.15.1"
requires:
bins: ["bl"]
description: >-
+1 -1
View File
@@ -1,7 +1,7 @@
---
name: bailian-protocol
metadata:
version: "1.15.0"
version: "1.15.1"
requires:
bins: ["bl"]
description: >-