Commit Graph

165 Commits

Author SHA1 Message Date
lisheng.lisheng 98acbd7341 feat(dsh): feature catalog with per-feature tools + personal TokenPlan commands
Add a feature catalog (`packages/dsh/src/features.ts`) that drives two entry
points from one declaration: a model tool per feature (natural-language
entry) and a card-click webServer route (UI entry). Each feature declares
its `bl` argv, optional parameter flags, and a `summarize` projection, so
adding a capability means adding one catalog entry rather than wiring a
tool and a route separately.

New CLI commands backing the TokenPlan usage panel:

- `bl token-plan personal-usage` — 5h/1w usage percentage, subscription
  state, and addon credits, unwrapping the console gateway's nested
  `data.DataV2.data.data` envelope.
- `bl token-plan personal-key` — the masked personal-edition API key.

Both are `auth: "console"` and registered per the command checklist
(library export, `bl` product map, e2e topic routes, generated reference).

Two type fixes in the tool registration path:

- The parameter map was typed `Record<string, { type: string; ... }>`,
  which widens `FeatureParam["type"]` to `string` and is then unassignable
  to `ParameterSchemaSpec` (it needs the literal union). Keep the literal.
- `invokeFeature` returned `Promise<unknown>`, so the tool's `{ summary,
  data }` value failed `Record<string, JsonValue>`. It parses
  `bl --output json` output, so its return type is `JsonValue` — narrowing
  the signature is more honest than casting at the call site.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 23:42:27 +08:00
lisheng.lisheng 50ed680ade feat: enhance credential handling for managed-agent and memory APIs
- Updated README.md to clarify API key usage and access restrictions for TokenPlan and pay-as-you-go keys.
- Introduced shared credential validation logic to prevent TokenPlan keys from being used in incompatible contexts.
- Enhanced error messaging for credential resolution failures in managed-agent and memory plugins.
- Added tests for credential classification and workspace endpoint composition.
- Updated documentation to reflect changes in credential handling and workspace-scoped agentstudio endpoint requirements.
2026-08-15 16:50:08 +08:00
lisheng.lisheng f919ebae3c feat(dsh): remote managed-agent as on-demand tool + bl managed-agent run
Rework the managed-agent integration so a dsh user can, in plain
language, have a Bailian cloud agent created and run a task — no
hand-written agents.yaml, no prior apply.

New `bl managed-agent run --prompt <task> [--instructions] [--model]
[--agent]`: one step that idempotently materializes a cloud agent + its
environment, then opens a session and streams the result. It mirrors the
OpenAgentPack webui backend's ensure+run recipe (resolveProjectConfigFrom
Object → syncAgentResourcesWithStateBackend → readProjectRuntime +
startSessionRun) from an in-memory config, reusing the existing
credential spine in _engine/credentials.ts. State persists under the bl
config dir (~/.bailian/managed-agent/<agent>/), never the user's cwd, so
repeat runs with the same --agent reuse the materialized agent. Unlike
apply it provisions without --yes, since running is the intent.

dsh side: replace the SubagentProvider with a plain tool
`bailian_run_remote_task` (packages/dsh/src/tool-managed-agent). The
subagent seam did not fit: in the web profile every tool-subagent row is
disabled in the host plane (delegation lives in agent presets), a
provider fixes one agent identity in config, and the default numeric
maxDepth would fail-mount a no-depthLimit provider. As a tool the model
calls it directly and fills `instructions` from the user's intent, so the
remote agent's role is defined per task. Enabled by default — it creates
nothing at load, only on invocation.

LLM row: configure the base bundle's existing llm-pi-ai row instead of
mounting a second pi-ai instance (a second instance re-declares pi-ai's
global configurable-provider catalog and fails boot on a duplicate
amazon-bedrock). TokenPlan reads a dedicated BAILIAN_TOKENPLAN_API_KEY,
not DASHSCOPE_API_KEY: TokenPlan (sk-sp-) and pay-as-you-go (sk-ws-) keys
401 each other's endpoints, so sharing one var would silently break
whichever plugin lost.

Note: the ensure+run happy path could not be verified end-to-end on the
available account — agentstudio returns 404 there, and the existing
`managed-agent apply` 404s identically against the same endpoint/key, so
the failure is account/service provisioning, not this change. Command
wiring, dry-run, config assembly, credential injection and URL
construction were all verified.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-15 10:29:24 +08:00
lisheng.lisheng 9e9911aa86 feat(dsh): add bailian-cli-dsh plugin bundle for DeepSeek Harness
Expose Bailian capabilities to dsh through its service seams as one
package with six subpath plugin entries and a `dsh.bundle` patch:

- TokenPlan as an LLM provider
- bailian_vision_describe / bailian_image_generate tools over `bl`
- knowledge-base retrieval as a WebSearchProvider (`bailian-kb`)
- cross-session memory: tools, pre-step recall, turn-close persist
- managed-agent as a SubagentProvider

TokenPlan configures the base bundle's existing pi-ai row rather than
mounting a second `dsh-llm-pi-ai` instance. A second instance cannot
work: pi-ai re-declares its entire built-in provider catalog to
`registerConfigurableProviders`, and that directory is global, so boot
fails with a duplicate on `amazon-bedrock`.

Routes and vision support were probed against the live gateway.
qwen3.8-max, qwen3.7-plus, qwen3.6-flash and glm-5.2 read images;
qwen3.7-max rejects them with HTTP 400; the DeepSeek routes accept image
content without erroring yet stay blind. The DeepSeek entries therefore
do not declare image input — claiming it would turn a clean refusal into
a silently wrong answer — and `bailian_vision_describe` serves them by
returning text instead.

Also fix `bl memory` against the v2 API, each verified live:

- `profile get` used /profiles, which returns HTTP 500. The documented
  and working endpoint is /user_profile.
- `add` read `response.memory_ids`, which the service never returns. It
  returns `memory_nodes`, so text output always printed "IDs: none".
- `MemoryNode.created_at`/`updated_at` are unix seconds, not strings, and
  `UserProfileResponse.profile` did not match the wire shape.
- Add the missing request parameters: --meta-data, --project-id,
  --project-ids, --min-score, --enable-rerank, --plan-version,
  --enable-judge, --enable-rewrite, --timestamp.
- Add `memory profile list|detail|update|delete`, covering the four v2
  profile-schema operations the CLI was missing.

`plan_version: lite` is ignored by the service and still bills pro;
`enable_rerank: false` is what actually selects lite, which is ~50x
cheaper per search. The CLI flag and the memory plugin both send the
parameter that works.

Disable pnpm's autoInstallPeers: the @deepseek-ai/dsh-* rc line peers on
three packages that were never published to npm, which 404s the whole
workspace install. Verified the existing packages still build.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-15 01:47:18 +08:00
故璃 946b7029c6 feat: add version 1.14.2 2026-08-07 17:42:31 +08:00
故璃 4502424200 feat: add skill init & opt commend flags 2026-08-07 17:17:27 +08:00
Gong Shiqi 6338df36be Merge pull request #138 from modelstudioai/feat/update-defmodel
Update default image model to qwen-image-3.0
2026-08-05 19:43:48 +08:00
若麒 cb6740965f chore(release): prepare 1.14.1 2026-08-05 19:35:05 +08:00
若麒 01ec13aad8 feat: add CLI source config tags 2026-08-05 17:37:14 +08:00
clh02467605 b68ff45fb9 Merge remote-tracking branch 'refs/remotes/origin/main' into feat/update-defmodel 2026-08-05 17:08:44 +08:00
clh02467605 4990b27436 feat: update image default model 2026-08-05 16:58:29 +08:00
故璃 8488b251f7 Merge branch 'main' into feat/deploy-update 2026-08-05 16:11:38 +08:00
故璃 121fa1317f feat(skills): align agent registry with upstream and harden cross-platform install 2026-08-05 10:17:06 +08:00
若麒 081d09863b Merge branch 'main' into feat/multi-channel-install 2026-08-04 20:22:26 +08:00
若麒 1e1f5306b3 chore(release): prepare 1.14.0 2026-08-04 18:11:47 +08:00
故璃 3766b6d7ca Merge branch 'main' into feat/bailian-wiki-doc-sync 2026-08-03 19:33:16 +08:00
故璃 1962758b0c feat: add request id 2026-08-03 19:32:27 +08:00
若麒 026e250cd3 Merge branch 'main' into feat/multi-channel-install 2026-08-03 17:16:56 +08:00
若麒 7a870ec417 chore(release): prepare 1.13.1 2026-08-03 16:19:00 +08:00
clh02467605 1c38c381e5 feat: switch default text model to qwen3.8-max
Align text chat, pipeline, config UI, login validation, and Token Plan
text presets, and update README, skill reference, and related tests.
2026-08-03 15:34:18 +08:00
rendianmeng 658763af2c fix: ci test 2026-08-03 15:29:55 +08:00
rendianmeng 9fb388b75d Merge branch 'main' of github.com:modelstudioai/cli into feat/multi-channel-install 2026-07-31 17:47:10 +08:00
rendianmeng 45d468838f feat: win bl update exe file test 2026-07-31 17:44:59 +08:00
lisheng.lisheng 7e23ba00fb chore(release): 发布 v1.13.0 版本
- 增加 `bl config ui` 功能,支持技能、MCP、代理和资产清单浏览与管理
- 新增模型目录建议芯片,方便配置 UI 中快速填充模型名
- 实现配置文件的 Profile 磁贴网格展示及新增弹窗
- 优化配置 UI 布局,增强响应式布局和编辑体验
- 修复软链接技能目录识别问题
- 支持基于环境变量的配置文件路径及旧版配置方案
- 同步更新相关包版本至 1.13.0
2026-07-31 00:21:51 +08:00
rendianmeng 5e2833569a Merge branch main of github.com:modelstudioai/cli into feat/multi-channel-install 2026-07-30 10:12:42 +08:00
故璃 30fe8182f4 Merge branch 'main' into feat/bailian-wiki-doc-sync
# Conflicts:
#	packages/cli/src/commands.ts
#	packages/commands/tests/e2e/topic-routes.ts
#	pnpm-lock.yaml
#	pnpm-workspace.yaml
#	skills/bailian-cli/reference/index.md
2026-07-29 17:34:28 +08:00
故璃 65c0fe9604 feat: add skill commend & skill install 2026-07-29 17:04:17 +08:00
lisheng.lisheng 2c53b0692b refactor(inventory): 优化技能与代理配置代码格式和检测逻辑
- 统一代码格式,增加多处代码块的换行和缩进保持一致
- 调整技能安装目标列表的格式,提升可读性
- 修复解压缩逻辑中异常抛出格式,增强异常信息规范
- 优化归一化文件名过滤条件表达式格式
- 修改配置文件检测逻辑,兼容环境变量和旧版配置方案
- 增强对 Bailian 相关模型提供者的检测逻辑支持
- 规范代理详情字段生成方法的代码风格
- 调整 MCP 写回相关函数的格式,提升可维护性
- 改进技能和代理详情函数参数格式,统一参数拆分显示
- 修复单元测试中路径和 JSON 写入格式,增加不同配置场景测试覆盖
- 确保软链接技能目录被正确识别为安装来源
- 增加多代理配置文件和技能安装的检测测试用例,提升测试精准度
2026-07-28 20:51:07 +08:00
lisheng.lisheng adc89f635d Merge branch 'main' of github.com:modelstudioai/cli into feat/config-ui-enhancements
# Conflicts:
#	packages/commands/tests/config-ui.test.ts
2026-07-28 20:43:42 +08:00
lisheng.lisheng bbf45a5961 Merge branch 'main' of github.com:modelstudioai/cli into feat/config-agent-fix
# Conflicts:
#	CHANGELOG.md
#	CHANGELOG.zh.md
#	packages/cli/package.json
#	packages/commands/package.json
#	packages/core/package.json
#	packages/kscli/package.json
#	packages/runtime/package.json
#	skills/bailian-cli/SKILL.md
2026-07-28 20:33:16 +08:00
lisheng.lisheng 3988e701e1 chore(cli): 发布 1.11.0 版本,更新 agent 配置功能
- 新增 `bl config agent --key` / `--region`,支持控制台编码 API Key 本地解码和区域派生 Token Plan 地址
- 新增 `bl config agent --context-window`,设置 OpenClaw 配置的上下文窗口大小,默认 256000
- 新增 `bl config agent --wire-api`,支持选择 Codex 配置的通信协议,兼容旧版 chat 协议并提示警告
- 变更 Codex 默认写入通信协议为 `responses`,适配新版 Codex 不再支持旧 chat 模式
- 变更 Qwen Code 代理配置改用 `DASHSCOPE_API_KEY` 环境变量替代 `BAILIAN_CLI_API_KEY`
- 修复各 agent 配置格式不匹配问题,支持 JSONC 格式和官方结构,完善模型白名单与计费元数据
- 修复配置写入逻辑,合并保持用户自定义配置,避免覆盖及重复条目,优化显示名保留
- 更新所有相关包版本号至 1.11.0,包含 bailian-cli、commands、core、kscli、runtime
- 更新 bailian-cli 技能元数据版本号至 1.11.0
2026-07-28 20:27:28 +08:00
lisheng.lisheng 96744e3328 feat(config-agent): add --key and --region, default codex wire_api to responses
- --key: decode the web console's obfuscated API key (o1_ prefix) into
  the real key; mutually exclusive with --api-key, exactly one required
- --region: convert a Model Studio region into the Token Plan base URL
  (token-plan.<region>.maas.aliyuncs.com/compatible-mode/v1); mutually
  exclusive with --base-url, exactly one required
- codex: default wire_api to "responses" (current Codex rejects "chat");
  --wire-api chat kept for legacy Codex <= 0.80.0 with a warning
- regenerate skills reference for the new flags
2026-07-28 19:37:13 +08:00
若麒 be6ddb6126 chore(release): prepare 1.11.2 2026-07-28 19:24:40 +08:00
clh02467605 25ac5c9c84 fix: revert change about defaultTextModel 2026-07-28 18:05:18 +08:00
clh02467605 5d9e22de8f Merge remote-tracking branch 'refs/remotes/origin/main' into fix/web-search-and-thinking 2026-07-28 17:20:46 +08:00
clh02467605 20e3555b84 fix(text,auth): drop enable_thinking retry and omit the field by default
Pass through model constraint errors instead of auto-retrying, switch token-plan default text model to qwen3.7-plus, and align related e2e expectations.
2026-07-28 17:19:05 +08:00
若麒 4c4e7afb83 chore(release): prepare 1.11.1 2026-07-28 16:07:29 +08:00
若麒 17c52fb86f Merge branch 'main' into fix/default-model 2026-07-28 15:46:46 +08:00
若麒 eadd92327f chore(release): prepare 1.11.0 2026-07-28 13:28:11 +08:00
lisheng.lisheng 5a58f56b06 refactor(agent): 修改环境变量名并优化代码格式
- 将环境变量名从 BAILIAN_CLI_API_KEY 改为 DASHSCOPE_API_KEY
- 调整导入语句格式,提升代码可读性
- 优化 providers 条目查找的换行和缩进
- 标准化名称判断与赋值逻辑的格式与排列
2026-07-28 09:59:41 +08:00
clh02467605 7ad14a79b9 Merge branch 'main' of github.com:modelstudioai/cli into fix/web-search-and-thinking 2026-07-28 09:25:34 +08:00
clh02467605 8211268bd8 fix(text,mcp): keep thinking_budget on enable_thinking retry and hint MCP activation on 404 2026-07-28 09:25:02 +08:00
chenanran555 2dce9fe093 feat(agent): session and destroy failed error 2026-07-27 21:52:52 +08:00
chenanran555 9819eb6ddc feat(agent): 非bailian provider也走鉴权逻辑 2026-07-27 21:33:36 +08:00
chenanran555 a03ee0c72c fix(agent): timeout error 2026-07-27 20:23:21 +08:00
chenanran555 05860b3bdd fix(agent): session output json with session_id 2026-07-27 20:10:47 +08:00
chenanran555 63ee5aaec3 fix(agent): plan command dry-run 2026-07-27 20:03:09 +08:00
chenanran555 93c9149e45 feat(agent): 鉴权分离线命令和在线命令,仅对bailian provider鉴权 2026-07-27 19:51:56 +08:00
chenanran555 6f9e006fef feat(agent): add skills for skill-list command 2026-07-27 18:17:39 +08:00
chenanran555 e22058b0f7 feat: update openagentpack sdk 2026-07-27 18:14:06 +08:00