@kanyun-ai-infra/agenthub 1.22.0 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,52 @@
2
2
 
3
3
  本文件从 1.12.0 开始记录;更早的版本见 git 历史中的 `chore(agenthub-sdk): release X.Y.Z` 提交。
4
4
 
5
+ ## 1.24.0
6
+
7
+ 本版带上 1.23.0(9a5aad9fe,#5829,11-04)之后合入 main 的两组公开面变化:`workloads.getRevisionById`(#5856,Band 从槽位 `revisionId` 得到版本名的依赖),以及凭据直写收紧到项目管理员带来的新 403 错误码(#5858)。均不破坏编译。
8
+
9
+ ### 新增(主入口)
10
+
11
+ - `workloads.getRevisionById({ projectId, revisionId })`(#5856):`GET /api/revisions/{revisionId}?projectId=`,按 id 读一条已发布 revision——手里只有槽位视图的 `revisionId`、拿不到版本名时用它。返回与 `getRevision`(slug + version)同一对象(`version`、`plugins` 在内,不含 `sequence`),别名 `agents.getRevisionById` 同一方法。`projectId` 必填:别的项目的 revision 与不存在的 id 同形,都是 404 `REVISION_NOT_FOUND`;token scope 外的 `projectId` 在任何读之前 403 `PROJECT_NOT_IN_TOKEN_SCOPE`。需要 `agents:read`。新入参类型 `GetRevisionByIdInput`(与 `GetRevisionInput` 同模式,不单独从入口导出)。需要服务端部署 #5856。
12
+ - eval run 读面(`evals.listRuns` / `getRun` 返回的 `summary`)新增可选字段 `sessionRevisionIds: string[]`(#5729 巡检线,99314ac0b):巡检 run(trigger `schedule`)的会话实际用到的 revision,按首次出现排序去重,首项即 run 的实际版本;run 中途换过版本时长度大于 1。非巡检 run、一个会话都没建成或 run 不由 worker 收口时缺省。schema 本就 `.loose()`,未知消费方不受影响;该字段只出现在读面,eval 写 API 不在 SDK 公开面。
13
+
14
+ ### 行为变化
15
+
16
+ - 凭据值的直接写入收紧到项目管理员(canManage,#5858):`secrets.rotate`(沿用 403 `SECRET_FORBIDDEN`,文案改为「只有项目管理员可以轮换密钥」)与 `managedMcps.update` 里携带 `accessToken` / 非空 `secretValues` / `customHeaders`(整包算凭据)的请求、携带这些字段的 rebuild,普通成员 / 组成员 / 组主体 token(协作级)现在收到 403;托管 MCP 侧新错误码 **`managed_mcp_credential_requires_manager`**(403)。读、列表、新建、只改 `displayName` / `toolApprovalPolicies` 仍是协作级。放行:owner、平台管理员、组管理员。这是**服务端行为变化**(无 flag,随服务端发版生效),SDK 版本不改变它;升级 SDK 的意义是新错误码进入 `ManagedMcpErrorCode` 闭集。以协作级 token 做自动化凭据轮换的调用方,改用项目管理员 token。需要服务端部署 #5858。
17
+
18
+ ### 随包文档
19
+
20
+ - `SKILL.md`:`getRevisionById` 的用法与资源表更新已在 #5856 进 main。随包 skill 版本由 0.32.0 升至 0.33.0(npm 1.23.0 包里实测是 0.32.0)。
21
+
22
+ ### 导出面核对
23
+
24
+ `npm pack @kanyun-ai-infra/agenthub@1.23.0` 解包后的 `dist/index.d.ts` 与本分支构建产物逐块对比,全部非注释差异:`workloads.getRevisionById` 方法与 `GetRevisionByIdInput`;`EvalRunSummarySchema` / `EvalRunSummaryWriteSchema` 的 `summary` 内新增 `sessionRevisionIds: z.ZodOptional<z.ZodArray<z.ZodString>>`(两处,#5729)。没有删除行。`dist/realtime.d.ts` 逐字节相同。JS 运行时 diff 的其余部分均为 zod 别名重编号、#5808 的注释措辞(判官→grader)与 SDK 不导出的内联 schema(groups-portal 巡检控制台 wire、eval patrol、`managed_mcp_credential_requires_manager` 错误码常量),不构成类型面变化。
25
+
26
+ ### 迁移说明
27
+
28
+ 无破坏性变化,不需要迁移。旧版本风险:服务端部署 #5858 后,1.23.0 及更早版本里能收到这个码的路径(`managedMcps.update` 携带凭据字段)会把它按旧白名单投影成 `UNKNOWN_ERROR`(`PilotPlatformApiError`,status 403,message 固定文案,非原样 code);要区分出 `managed_mcp_credential_requires_manager` 本身,先升级到 1.24.0(闭集含它,原样透出)。`getRevisionById` 是新方法,旧版本没有对应路径。
29
+
30
+ ## 1.23.0
31
+
32
+ 本版带上 1.22.0 之后合入的两组公开面改动:`sessions.create` 按会话选择项目模型服务(`modelServiceId`,#5809),以及选择流水线克隆绑定仓库所用凭据的 `bindings.setRepoCredentialMode` / `getRepoCredentialStatus`(#5770 PR 2a,#5802)。两组都是新增,没有破坏性变化。
33
+
34
+ ### 新增(主入口)
35
+
36
+ - `sessions.create` 的可选 `modelServiceId`(#5809):形如 `"llmp_…"`,让该会话跑在**本会话所属项目自己的**某个模型服务上,而不是 revision 声明的那个。不传则行为不变。服务在建会话时校验并冻结,之后的回合、复活和 `PATCH /sessions/:id/model` 都不会改它,要换就开新会话。只收 `llmp_*` 公开 id;别的项目的、已归档的、不存在的服务一律失败为 `SESSION_LLM_PROVIDER_NOT_FOUND`(三种情况同一个答案)。不同时设 `metadata.model` 时,会话用所选服务的默认模型,而不是 revision 的默认模型。公开项目的非成员访客得 403 `public_viewer_cannot_declare_model_service`。它属于请求身份:同一 `idempotencyKey` 换了或漏了 `modelServiceId` 回 `IDEMPOTENCY_REPLAY_MISMATCH`。带它的请求不走预热池。需要服务端部署 #5809。
37
+ - `bindings.setRepoCredentialMode(projectId, "managed" | "manual")`、`bindings.getRepoCredentialStatus(projectId)`(#5770):选择流水线克隆项目绑定 GitLab 仓库时用的凭据。`managed` 由平台从组的签发凭据为该仓库签发只读项目令牌放进项目 vault,流水线用它克隆;签发完成前运行等待重试,令牌不可用时运行失败,不回退到共享令牌。`manual` 回到项目共享 GitLab 令牌。先绑仓库再设模式。需要 `project:repo-bind`,且调用方对组内项目有 owner 级角色(组主体对自己创建的项目满足)。读状态同样要求这个权限。返回 `{ mode, state, repoPath, expiresAt }`,`state` 在 manual 下为 `null`,managed 下取 `ready` / `pending` / `expired` / `unavailable` / `ambiguous` / `mismatch`;改绑仓库后为 `mismatch`,需要再设一次 `managed`。组没有启用的签发凭据时 400 `ISSUER_UNAVAILABLE`。不含令牌值。新导出 `RepoCredentialMode`、`RepoCredentialStatus`、`SetRepoCredentialModeRequest` 及对应 schema。需要服务端部署 #5770 PR 2a。
38
+
39
+ ### 随包文档
40
+
41
+ - `SKILL.md`:新增「Choosing the model service per session: `modelServiceId`」一节,预热池跳过条件里补上 `modelServiceId`(#5809);仓库凭据的用法随 #5802 进入。随包 skill 版本由 0.31.1 升至 0.32.0(npm 上 1.22.0 随包的是 0.31.1,0.31.2 从未随包发布)。
42
+
43
+ ### 导出面核对
44
+
45
+ `npm pack @kanyun-ai-infra/agenthub@1.22.0` 解包后的 `dist/index.d.ts` 与本分支构建产物逐块对比:非注释差异只有 `bindings.setRepoCredentialMode`、`bindings.getRepoCredentialStatus`、`sessions.create` 请求 schema 的 `modelServiceId`,以及新导出 `RepoCredentialMode`、`RepoCredentialModeSchema`、`RepoCredentialStatus`、`RepoCredentialStatusSchema`、`SetRepoCredentialModeRequest`、`SetRepoCredentialModeRequestSchema`;另有两处联合类型成员顺序变化(`state: "legacy" | "unavailable" | …` 变为 `"unavailable" | "legacy" | …`),类型等价。`dist/realtime.d.ts` 逐字节相同。
46
+
47
+ ### 迁移说明
48
+
49
+ 无破坏性变化,不需要迁移。1.22.0 的 `sessions.create` 请求 schema 是 strict,传 `modelServiceId` 会在发请求前被拒;要用它先升级到 1.23.0。
50
+
5
51
  ## 1.22.0
6
52
 
7
53
  本版的主线是 vault MCP 按目标限制工具(#5719):`sessions.create` 可以对调用方 vault 里每个 remote MCP 目标声明允许的工具。同时,服务端以后新增的取值不再让调用失败:托管 MCP 与项目秘密的 `status` / `credentialState` 改为开放集合,`vaults.credentials.update` 会按原样返回 SDK 尚未建模的凭据类型。本版还包含 1.21.0 之后合入的托管 MCP 会话身份校验、定时任务的 webhook 目标与 `sessions:terminate` 签发规则调整。