Skip to content

Commit 6d6606a

Browse files
authored
Merge branch 'main' into fix/issue-fix
2 parents 09895fa + e89c331 commit 6d6606a

358 files changed

Lines changed: 33633 additions & 7822 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/ci.yml‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ jobs:
2323
node-version: "22"
2424
cache: pnpm
2525

26+
# Keep native-fetch and compiled Binary tests on the release Bun version.
27+
- uses: oven-sh/setup-bun@v2
28+
with:
29+
bun-version: "1.3.14"
30+
2631
- run: pnpm install --frozen-lockfile
2732

2833
- run: pnpm run sync:skill-assets
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: Clean npm tags
2+
run-name: Clean npm tags (${{ inputs.dry_run && 'preview' || 'delete' }})
3+
4+
on:
5+
workflow_dispatch:
6+
inputs:
7+
bailian_cli:
8+
description: "bailian-cli"
9+
type: boolean
10+
default: true
11+
bailian_cli_core:
12+
description: "bailian-cli-core"
13+
type: boolean
14+
default: true
15+
bailian_cli_runtime:
16+
description: "bailian-cli-runtime"
17+
type: boolean
18+
default: true
19+
bailian_cli_commands:
20+
description: "bailian-cli-commands"
21+
type: boolean
22+
default: true
23+
knowledge_studio_cli:
24+
description: "knowledge-studio-cli"
25+
type: boolean
26+
default: true
27+
bailian_kb_dsh:
28+
description: "bailian-kb-dsh"
29+
type: boolean
30+
default: true
31+
tags:
32+
description: "Tags to remove (spaces, commas or newlines). latest is protected."
33+
type: string
34+
required: true
35+
dry_run:
36+
description: "Preview only / 只预览,不删除"
37+
type: boolean
38+
default: true
39+
40+
permissions:
41+
contents: read
42+
43+
concurrency:
44+
group: cleanup-npm-tags
45+
cancel-in-progress: false
46+
47+
jobs:
48+
cleanup:
49+
runs-on: ubuntu-latest
50+
timeout-minutes: 15
51+
permissions:
52+
contents: read
53+
id-token: write
54+
steps:
55+
- uses: actions/checkout@v6
56+
- uses: actions/setup-node@v6
57+
with:
58+
node-version: "24"
59+
registry-url: "https://registry.npmjs.org/"
60+
package-manager-cache: false
61+
- name: Install npm with OIDC dist-tag support
62+
run: npm install --global npm@11.21.0
63+
- name: Clean selected tags
64+
env:
65+
CLEANUP_CLI: ${{ inputs.bailian_cli }}
66+
CLEANUP_CORE: ${{ inputs.bailian_cli_core }}
67+
CLEANUP_RUNTIME: ${{ inputs.bailian_cli_runtime }}
68+
CLEANUP_COMMANDS: ${{ inputs.bailian_cli_commands }}
69+
CLEANUP_KSCLI: ${{ inputs.knowledge_studio_cli }}
70+
CLEANUP_DSH: ${{ inputs.bailian_kb_dsh }}
71+
CLEANUP_TAGS: ${{ inputs.tags }}
72+
CLEANUP_DRY_RUN: ${{ inputs.dry_run }}
73+
run: node tools/release/cleanup-npm-tags.mjs

‎.github/workflows/publish.yml‎

Lines changed: 9 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,6 @@ name: Publish
33
on:
44
workflow_dispatch:
55
inputs:
6-
package:
7-
description: "Which package set to publish"
8-
required: true
9-
type: choice
10-
options:
11-
- bailian-cli
12-
- knowledge-studio-cli
13-
- bailian-kb-dsh
146
mode:
157
description: "Publish mode"
168
required: true
@@ -19,18 +11,18 @@ on:
1911
- channel
2012
- stable
2113
channel:
22-
description: "Required when mode=channel. npm dist-tag only (lowercase, digits, dashes), e.g. mcp / plugin / sync-release. bailian-cli binary CDN always overwrites sync-release.json; knowledge-studio-cli and bailian-kb-dsh are npm-only."
14+
description: "Required when mode=channel. npm dist-tag only (lowercase, digits, dashes), e.g. mcp / plugin / sync-release. bailian-cli binary CDN always overwrites sync-release.json; knowledge-studio-cli and dsh plugins are npm-only."
2315
required: false
2416
type: string
2517

2618
concurrency:
27-
group: publish-${{ inputs.package }}-${{ inputs.mode }}-${{ inputs.channel }}
19+
group: publish-${{ inputs.mode }}-${{ inputs.channel }}
2820
cancel-in-progress: false
2921

3022
jobs:
3123
publish-stable:
32-
if: inputs.mode == 'stable' && inputs.package != 'bailian-kb-dsh'
33-
name: publish stable (${{ inputs.package }}) to npm + binary + tag
24+
if: inputs.mode == 'stable'
25+
name: publish stable (bailian-cli + kscli + dsh plugins) to npm + binary + tag
3426
runs-on: ubuntu-latest
3527
environment: production # Required Reviewers gate
3628
permissions:
@@ -96,11 +88,11 @@ jobs:
9688
FC_RELEASE_AUDIENCE: ${{ vars.FC_RELEASE_AUDIENCE }}
9789
# Script order: git tag, then binary GitHub Release + OSS, then npm.
9890
# OSS upload can fail on a network blip; npm must not succeed first.
99-
run: node tools/release/publish-stable.mjs ${{ inputs.package == 'knowledge-studio-cli' && '--knowledge' || '' }}
91+
run: node tools/release/publish-stable.mjs
10092

10193
publish-channel:
102-
if: inputs.mode == 'channel' && inputs.package != 'bailian-kb-dsh'
103-
name: publish channel (${{ inputs.package }}) to npm + binary
94+
if: inputs.mode == 'channel'
95+
name: publish channel (bailian-cli + kscli + dsh plugins) to npm + binary
10496
runs-on: ubuntu-latest
10597
permissions:
10698
contents: write # create prerelease GitHub Release with binary assets
@@ -164,52 +156,7 @@ jobs:
164156
# credentials in this repo (see publish-stable env notes).
165157
FC_TRIGGER_URL: ${{ vars.FC_TRIGGER_URL }}
166158
FC_RELEASE_AUDIENCE: ${{ vars.FC_RELEASE_AUDIENCE }}
159+
RELEASE_CHANNEL: ${{ inputs.channel }}
167160
# Script order: binary GitHub Release + OSS, then npm.
168161
# OSS upload can fail on a network blip; npm must not succeed first.
169-
run: node tools/release/publish-channel.mjs ${{ inputs.package == 'knowledge-studio-cli' && '--knowledge' || '' }} --channel "${{ inputs.channel }}"
170-
171-
# bailian-kb-dsh is the dsh plugin (downstream host adapter): independent version,
172-
# tsc + tsdown build, npm-only. It shares this workflow's entry UI and setup steps
173-
# but NOT publish-stable.mjs / publish-channel.mjs — those broadcast one version
174-
# across the locked bl package set and produce binary artifacts, neither of which
175-
# applies here. See docs/agents/dsh-plugin.md.
176-
publish-kb-dsh:
177-
if: inputs.package == 'bailian-kb-dsh'
178-
name: publish ${{ inputs.mode }} (bailian-kb-dsh) to npm
179-
runs-on: ubuntu-latest
180-
# stable goes through the Required Reviewers gate, same as the bl stable job;
181-
# channel stays ungated so dist-tag drops need no approval.
182-
environment: ${{ inputs.mode == 'stable' && 'production' || '' }}
183-
permissions:
184-
contents: write # push the bailian-kb-dsh-v<version> tag (stable only)
185-
id-token: write # OIDC for npm Trusted Publishing + provenance
186-
steps:
187-
- name: Require channel input
188-
if: ${{ inputs.mode == 'channel' && inputs.channel == '' }}
189-
run: |
190-
echo "::error::mode=channel requires the workflow input \"channel\" (npm dist-tag, e.g. mcp / plugin). Leave mode=stable if you do not need a dist-tag."
191-
exit 1
192-
193-
- uses: actions/checkout@v6
194-
195-
- uses: pnpm/action-setup@v6
196-
197-
- uses: actions/setup-node@v6
198-
with:
199-
node-version: "24"
200-
cache: pnpm
201-
registry-url: "https://registry.npmjs.org/"
202-
203-
- name: Install gitleaks
204-
run: |
205-
set -euo pipefail
206-
GITLEAKS_VERSION=8.21.2
207-
curl -sSfL \
208-
"https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz" \
209-
| sudo tar -xz -C /usr/local/bin gitleaks
210-
gitleaks version
211-
212-
- run: pnpm install --frozen-lockfile
213-
214-
- name: publish-kb-dsh
215-
run: node tools/release/publish-kb-dsh.mjs ${{ inputs.mode == 'channel' && format('--channel "{0}"', inputs.channel) || '' }}
162+
run: node tools/release/publish-channel.mjs --channel "$RELEASE_CHANNEL"

‎.vite-hooks/pre-commit‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ git add \
1717
skills/bailian-managed-agent/reference \
1818
skills/bailian-sandbox/SKILL.md \
1919
skills/bailian-sandbox/reference \
20+
skills/bailian-memory/SKILL.md \
21+
skills/bailian-memory/reference \
2022
skills/bailian-web-search/SKILL.md
2123

2224
vp staged

‎AGENTS.md‎

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ monorepo 现在按"纯逻辑 → 运行时框架 → 命令库 → 产品入口"
1111
- `packages/commands` — `bailian-cli-commands`,可复用命令实现库,只导出 command,不决定产品路径
1212
- `packages/cli` — `bailian-cli`,完整 `bl` 产品入口;`src/commands.ts` 组装 `bl` 暴露的命令路径
1313
- `packages/kscli` — `knowledge-studio-cli`,Knowledge Studio 专用入口;`src/main.ts` 复用 commands 并重映射为 `kscli` 路径
14-
- `packages/bailian-kb-dsh` — `bailian-kb-dsh`,**下游宿主适配层**(依赖方向朝外):百炼知识库的 DeepSeek Harness (dsh) 插件,消费 `bl` CLI 与知识库 API,不在上面这条分层链上;版本、构建、发布都独立,见 [docs/agents/dsh-plugin.md](docs/agents/dsh-plugin.md)
14+
- `packages/bailian-kb-dsh` — `bailian-kb-dsh`,**下游宿主适配层**(依赖方向朝外):百炼知识库的 DeepSeek Harness (dsh) 插件,消费 `bl` CLI 与知识库 API,不在上面这条分层链上;构建独立,版本与发布跟随 bailian-cli,见 [docs/agents/dsh-plugin.md](docs/agents/dsh-plugin.md)
15+
- `packages/bailian-memo-dsh` — `bailian-memo-dsh`,**下游宿主适配层**:百炼个人记忆 dsh 插件(dsh 0.2.1 Volatile Config / SettingsForms);身份在 `~/.bailian/personal-memory/config.json`;构建独立,版本与发布跟随 bailian-cli,见 [docs/agents/dsh-plugin.md](docs/agents/dsh-plugin.md)
1516

1617
### 关键文件
1718

@@ -41,7 +42,7 @@ Skill / 命令手册随 `skills/bailian-*/` 经 `bl skill init` 安装(装齐
4142
约定:
4243

4344
- 命令实现文件路径仍按能力放置:`packages/commands/src/commands/text/chat.ts`
44-
- 产品命令路径由入口 map 决定:同一个实现可暴露为 `bl knowledge retrieve` 或 `kscli retrieve`
45+
- 产品命令路径由入口 map 决定:同一个实现可暴露为 `bl knowledge search` 或 `kscli search`
4546
- `defineCommand` 只写命令元数据与逻辑: `auth`、`flags`、`usageArgs`、`exampleArgs`、`validate`、`run`
4647
- `usageArgs` / `exampleArgs` 不写 `bl` 或 `kscli` 前缀;runtime / reference 生成器按产品路径补前缀
4748
- 不再使用 `catalog.ts` 作为登记处;新增/重命名命令必须同时看命令库导出和产品入口 map
@@ -57,44 +58,45 @@ Skill / 命令手册随 `skills/bailian-*/` 经 `bl skill init` 安装(装齐
5758

5859
按当前任务从下表挑一条进入对应文档:
5960

60-
| 场景 | 何时进入 | 详见 |
61-
| ----------------- | ------------------------------------------------ | ---------------------------------------------------------------------------- |
62-
| 命令增删改 | 增加 / 删除 / 重命名 `bl xxx` 或入口命令路径 | [docs/agents/command-add-remove.md](docs/agents/command-add-remove.md) |
63-
| E2E 测试维护 | 新增/改命令或 e2e 用例、补 help/缺参/dry-run | [docs/agents/cli-e2e-tests.md](docs/agents/cli-e2e-tests.md) |
64-
| 批量压测 | 改/跑多能力并发压测、`test:stress`、fixtures | [docs/agents/stress-batch-tests.md](docs/agents/stress-batch-tests.md) |
65-
| 选项变更 | 给已有命令加 `--flag` 或改默认值 | [docs/agents/command-flag-change.md](docs/agents/command-flag-change.md) |
66-
| 模型上下架 | 增加新模型 / 改默认模型 / 废弃旧模型 | [docs/agents/model-add-remove.md](docs/agents/model-add-remove.md) |
67-
| Skill 文案 / 路由 | 改 SKILL 路由、安装约定、hand-off、hub/领域边界 | [docs/agents/skill-change.md](docs/agents/skill-change.md) |
68-
| 错误文案变更 | 改 `BailianError` 的 message 或 hint | [docs/agents/error-hint-change.md](docs/agents/error-hint-change.md) |
69-
| URL / 渠道变更 | 控制台域名 / 文档站 / 追踪参数 | [docs/agents/url-change.md](docs/agents/url-change.md) |
70-
| 埋点变更 | 改 AEM 命令事件、后端渠道 header、User-Agent | [docs/agents/telemetry-change.md](docs/agents/telemetry-change.md) |
71-
| 鉴权扩展 | 加 OAuth / SSO / 换 token 来源 | [docs/agents/auth-change.md](docs/agents/auth-change.md) |
72-
| 配置项扩展 | 新 env var 或 `~/.bailian/config.json` 字段 | [docs/agents/config-add.md](docs/agents/config-add.md) |
73-
| Profile / 激活 | 改命名 Profile、预设或 `active_config` | [docs/agents/config-profile-change.md](docs/agents/config-profile-change.md) |
74-
| 安装文档 | 改安装、鉴权、验证流程或线上 install 页面 | [docs/agents/install-doc-change.md](docs/agents/install-doc-change.md) |
75-
| 发布 | channel / stable 发布到 npm(CI 驱动) | [docs/agents/publish.md](docs/agents/publish.md) |
76-
| Change Log | 发版说明 / 历史版本说明 | [docs/agents/changelog-write.md](docs/agents/changelog-write.md) |
77-
| 工具链调整 | lint 规则 / 构建配置 / 依赖升级 | [docs/agents/lint-toolchain.md](docs/agents/lint-toolchain.md) |
78-
| Command Pack | 扩展包 / 白名单 / plugin 管理命令 | [docs/agents/command-pack.md](docs/agents/command-pack.md) |
79-
| dsh 插件 | 改 `packages/bailian-kb-dsh`、dsh 依赖、插件发布 | [docs/agents/dsh-plugin.md](docs/agents/dsh-plugin.md) |
61+
| 场景 | 何时进入 | 详见 |
62+
| ----------------- | --------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
63+
| 命令增删改 | 增加 / 删除 / 重命名 `bl xxx` 或入口命令路径 | [docs/agents/command-add-remove.md](docs/agents/command-add-remove.md) |
64+
| E2E 测试维护 | 新增/改命令或 e2e 用例、补 help/缺参/dry-run | [docs/agents/cli-e2e-tests.md](docs/agents/cli-e2e-tests.md) |
65+
| 测试隔离 | 单测/E2E 受本地 HOME、语言、系统目录干扰;统一隔离基建 | [docs/agents/test-isolation.md](docs/agents/test-isolation.md) |
66+
| 批量压测 | 改/跑多能力并发压测、`test:stress`、fixtures | [docs/agents/stress-batch-tests.md](docs/agents/stress-batch-tests.md) |
67+
| 选项变更 | 给已有命令加 `--flag` 或改默认值 | [docs/agents/command-flag-change.md](docs/agents/command-flag-change.md) |
68+
| 模型上下架 | 增加新模型 / 改默认模型 / 废弃旧模型 | [docs/agents/model-add-remove.md](docs/agents/model-add-remove.md) |
69+
| Skill 文案 / 路由 | 改 SKILL 路由、安装约定、hand-off、hub/领域边界 | [docs/agents/skill-change.md](docs/agents/skill-change.md) |
70+
| 错误文案变更 | 改 `BailianError` 的 message 或 hint | [docs/agents/error-hint-change.md](docs/agents/error-hint-change.md) |
71+
| URL / 渠道变更 | 控制台域名 / 文档站 / 追踪参数 | [docs/agents/url-change.md](docs/agents/url-change.md) |
72+
| 埋点变更 | 改 AEM 命令事件、后端渠道 header、User-Agent | [docs/agents/telemetry-change.md](docs/agents/telemetry-change.md) |
73+
| 鉴权扩展 | 加 OAuth / SSO / 换 token 来源 | [docs/agents/auth-change.md](docs/agents/auth-change.md) |
74+
| 配置项扩展 | 新 env var 或 `~/.bailian/config.json` 字段 | [docs/agents/config-add.md](docs/agents/config-add.md) |
75+
| Profile / 激活 | 改命名 Profile、预设或 `active_config` | [docs/agents/config-profile-change.md](docs/agents/config-profile-change.md) |
76+
| 安装文档 | 改安装、鉴权、验证流程或线上 install 页面 | [docs/agents/install-doc-change.md](docs/agents/install-doc-change.md) |
77+
| 发布 | channel / stable 发布到 npm(CI 驱动) | [docs/agents/publish.md](docs/agents/publish.md) |
78+
| Change Log | 发版说明 / 历史版本说明 | [docs/agents/changelog-write.md](docs/agents/changelog-write.md) |
79+
| 工具链调整 | lint 规则 / 构建配置 / 依赖升级 | [docs/agents/lint-toolchain.md](docs/agents/lint-toolchain.md) |
80+
| Command Pack | 扩展包 / 白名单 / plugin 管理命令 | [docs/agents/command-pack.md](docs/agents/command-pack.md) |
81+
| dsh 插件 | 改 `packages/bailian-kb-dsh` / `bailian-memo-dsh`、dsh 依赖、插件发布 | [docs/agents/dsh-plugin.md](docs/agents/dsh-plugin.md) |
8082

8183
如果当前任务无法对应任何场景,先按经验完成,然后**回来评估这是不是一类新场景** —— 是就新增 `docs/agents/<scenario>.md`,把清单沉淀下来。
8284

8385
## 通用约定
8486

8587
### 1. 发布包版本号同步
8688

87-
源码包的 `version` 当前保持一致: `packages/core`、`packages/runtime`、`packages/commands`、`packages/cli`、`packages/kscli`。做版本 bump 时一动多动。release 工具当前强校验 / 发布范围以 `tools/release/lib/packages.mjs` 为准;把新包纳入发布前必须同步该清单和 [publish.md](docs/agents/publish.md)。
89+
源码包的 `version` 当前保持一致: `packages/core`、`packages/runtime`、`packages/commands`、`packages/cli`、`packages/kscli`、`packages/bailian-kb-dsh`、`packages/bailian-memo-dsh`。做版本 bump 时一动多动。release 工具当前强校验 / 发布范围以 `tools/release/lib/packages.mjs` 为准;把新包纳入发布前必须同步该清单和 [publish.md](docs/agents/publish.md)。
8890

89-
**例外**: `packages/bailian-kb-dsh` 不参与这个锁步(独立 `0.1.x`,跟随 dsh rc 节奏),也不在 release 白名单里;它走 `publish.yml` 里 `package=bailian-kb-dsh` 的独立 job(`tools/release/publish-kb-dsh.mjs`)。
91+
两个 dsh 插件也纳入七包锁步版本和统一发布,仅构建方式保留各自的 `tsc` / `tsdown`。
9092

9193
### 2. 分层边界
9294

9395
- `core` 是纯库:不依赖 `runtime` / `commands` / 产品入口;不调 `process.exit`;新增/改动时不硬编码 `bl` / `kscli` 命令名、控制台 URL 或渠道追踪参数。当前遗留项见 [error-hint-change.md](docs/agents/error-hint-change.md) 与 [url-change.md](docs/agents/url-change.md),触碰相关代码时顺手收敛
9496
- `runtime` 是通用 CLI 框架:可以处理 TTY、help、错误输出、middleware,但不写具体业务命令逻辑
9597
- `commands` 是命令实现库:不决定产品路径;不在 `usageArgs` / `exampleArgs` / hint 里硬编码产品 bin 前缀
9698
- `cli` / `kscli` 是产品层:负责命令路径 map、产品 identity、README、技能 reference、发版入口
97-
- `bailian-kb-dsh` 在这条链之外:它是别的宿主(dsh)里的插件,只允许依赖 `core`(且当前刻意零依赖),反过来 `core` / `runtime` / `commands` / 产品层**永远不许**依赖它
99+
- `bailian-kb-dsh` / `bailian-memo-dsh` 在这条链之外:它们是别的宿主(dsh)里的插件,刻意不依赖本仓 `core`/`runtime`/`commands`(自包含 endpoints/client);反过来产品层**永远不许**依赖它们
98100
- URL 集中在 `packages/runtime/src/urls.ts`(用户面控制台)和 `packages/core/src/config/schema.ts` / client 层(API)
99101

100102
### 3. 错误处理边界:CLI 不翻译服务端错误

0 commit comments

Comments
 (0)