@blade-hq/agent-client 2612.0.0-beta.11 → 2612.0.0-beta.13

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.
Files changed (66) hide show
  1. package/README.md +59 -2
  2. package/dist/{chunk-SCG5SRXE.js → chunk-KPS6X6QX.js} +13 -16
  3. package/dist/chunk-KPS6X6QX.js.map +1 -0
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/internal.d.ts +1 -1
  7. package/dist/internal.js +1 -1
  8. package/dist/resources/sessions.d.ts +42 -6
  9. package/dist/schemas/session.d.ts +1 -42
  10. package/dist/session/agent-session.d.ts +0 -1
  11. package/dist/session/events.d.ts +0 -1
  12. package/node_modules/engine.io-client/build/cjs/globals.node.d.ts +2 -3
  13. package/node_modules/engine.io-client/build/cjs/index.d.ts +3 -3
  14. package/node_modules/engine.io-client/build/cjs/index.js +1 -4
  15. package/node_modules/engine.io-client/build/cjs/socket.d.ts +39 -82
  16. package/node_modules/engine.io-client/build/cjs/socket.js +151 -218
  17. package/node_modules/engine.io-client/build/cjs/transport.d.ts +1 -1
  18. package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.d.ts +4 -4
  19. package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js +2 -2
  20. package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.node.js +17 -7
  21. package/node_modules/engine.io-client/build/cjs/transports/websocket.node.js +17 -7
  22. package/node_modules/engine.io-client/build/esm/globals.node.d.ts +2 -3
  23. package/node_modules/engine.io-client/build/esm/index.d.ts +3 -3
  24. package/node_modules/engine.io-client/build/esm/index.js +1 -2
  25. package/node_modules/engine.io-client/build/esm/socket.d.ts +39 -82
  26. package/node_modules/engine.io-client/build/esm/socket.js +141 -206
  27. package/node_modules/engine.io-client/build/esm/transport.d.ts +1 -1
  28. package/node_modules/engine.io-client/build/esm/transports/polling-xhr.d.ts +4 -4
  29. package/node_modules/engine.io-client/build/esm/transports/polling-xhr.js +2 -2
  30. package/node_modules/engine.io-client/build/esm-debug/globals.node.d.ts +2 -3
  31. package/node_modules/engine.io-client/build/esm-debug/index.d.ts +3 -3
  32. package/node_modules/engine.io-client/build/esm-debug/index.js +1 -2
  33. package/node_modules/engine.io-client/build/esm-debug/socket.d.ts +39 -82
  34. package/node_modules/engine.io-client/build/esm-debug/socket.js +150 -215
  35. package/node_modules/engine.io-client/build/esm-debug/transport.d.ts +1 -1
  36. package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.d.ts +4 -4
  37. package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.js +2 -2
  38. package/node_modules/engine.io-client/dist/engine.io.esm.min.js +3 -3
  39. package/node_modules/engine.io-client/dist/engine.io.esm.min.js.map +1 -1
  40. package/node_modules/engine.io-client/dist/engine.io.js +164 -239
  41. package/node_modules/engine.io-client/dist/engine.io.js.map +1 -1
  42. package/node_modules/engine.io-client/dist/engine.io.min.js +3 -3
  43. package/node_modules/engine.io-client/dist/engine.io.min.js.map +1 -1
  44. package/node_modules/engine.io-client/package.json +2 -2
  45. package/node_modules/socket.io-parser/build/cjs/binary.js +4 -1
  46. package/node_modules/socket.io-parser/build/cjs/index.d.ts +14 -4
  47. package/node_modules/socket.io-parser/build/cjs/index.js +18 -11
  48. package/node_modules/socket.io-parser/build/esm/binary.js +4 -1
  49. package/node_modules/socket.io-parser/build/esm/index.d.ts +14 -4
  50. package/node_modules/socket.io-parser/build/esm/index.js +14 -10
  51. package/node_modules/socket.io-parser/build/esm-debug/binary.js +4 -1
  52. package/node_modules/socket.io-parser/build/esm-debug/index.d.ts +14 -4
  53. package/node_modules/socket.io-parser/build/esm-debug/index.js +14 -10
  54. package/node_modules/socket.io-parser/package.json +1 -1
  55. package/node_modules/ws/index.js +15 -6
  56. package/node_modules/ws/lib/constants.js +1 -0
  57. package/node_modules/ws/lib/permessage-deflate.js +9 -7
  58. package/node_modules/ws/lib/receiver.js +37 -0
  59. package/node_modules/ws/lib/sender.js +6 -1
  60. package/node_modules/ws/lib/websocket-server.js +18 -6
  61. package/node_modules/ws/lib/websocket.js +50 -17
  62. package/node_modules/ws/package.json +8 -3
  63. package/node_modules/ws/wrapper.mjs +14 -1
  64. package/package.json +4 -4
  65. package/public-api.md +36 -17
  66. package/dist/chunk-SCG5SRXE.js.map +0 -1
package/README.md CHANGED
@@ -181,14 +181,63 @@ const { session_id } = await client.sessions.createSessionWithRequest({
181
181
  id: "feishu",
182
182
  url: "https://adapter.example.com/mcp",
183
183
  bearer_token: sessionToken,
184
- eager_tools: ["send_files"],
184
+ include_tools: ["send_files"],
185
185
  }],
186
186
  })
187
187
  ```
188
188
 
189
- 工具集合由创建请求确定,后续 `session.send()` 沿用它。查询来源和轮换凭据的 REST 接口见 Swagger;轮换时传入 `null` 可撤销某来源凭据。
189
+ 来源与白名单由创建或配置升级请求确定。查询来源和轮换凭据的 REST 接口见 Swagger;轮换时传入 `null` 可撤销某来源凭据。
190
190
  `skip_confirmations: true` 会让该会话的普通轮次直接执行工具,适合由接入方自行承接交互的渠道会话。
191
191
 
192
+ ### 升级已有会话的全套配置
193
+
194
+ 会话所有者可通过 `GET/PATCH /api/sessions/{id}/configuration` 查询和升级已有沙盒会话,
195
+ 保留 ID、对话历史、压缩摘要、用户文件及非方案技能。升级不重跑初始化或初始消息。
196
+ 请求类型为 `UpdateSessionConfigurationRequest`,查询和升级返回 `SessionConfiguration`。
197
+
198
+ ```ts
199
+ const current = await client.sessions.getSessionConfiguration(id)
200
+ const applied = await client.sessions.updateSessionConfiguration(id, {
201
+ version: "pa-2026-10-12",
202
+ expected_revision: current.revision,
203
+ session_solution_asset_id: newSolutionAssetId,
204
+ biz_role_id: "main",
205
+ model: "your-model-id",
206
+ enable_thinking: false,
207
+ memory_enabled: true,
208
+ disable_tools: [],
209
+ env: {},
210
+ skip_confirmations: true,
211
+ compaction_ratio: 0.75,
212
+ mcp_sources: [{
213
+ id: "personal-assistant",
214
+ url: "https://adapter.example.com/mcp",
215
+ include_tools: ["send_user_message", "delegate_task"],
216
+ }],
217
+ })
218
+ console.log(applied.version, applied.revision)
219
+ ```
220
+
221
+ Solution 来源用 `solution_ref`、`solution_id` 或 `session_solution_asset_id` 三选一;只更新
222
+ `biz_role_id` 时使用当前方案。其他可升级字段如示例。省略字段保持旧值;数组和对象整体
223
+ 替换,`[]`/`{}` 清空。只有 `enable_thinking`、`compaction_ratio` 接受 null,表示恢复默认。
224
+ 角色省略时保留原角色,新方案不包含它则报错。MCP 同 ID 的来源省略 bearer_token 保留旧
225
+ 凭据;新来源省略则匿名访问,显式 null 也表示匿名访问。已撤销来源必须显式提供凭据。
226
+ 被删除的来源和被移出白名单的工具不能继续调用,查询不返回凭据。
227
+
228
+ 全部校验(含 MCP 发现)成功后一起提交,失败继续使用旧配置。执行、压缩或轮次交接中
229
+ 返回 409,请在轮次结束后重试;成功后下一轮生效。同一 version 同一请求重复提交安全且
230
+ revision 不增加,同 version 不同请求返回 409。`expected_revision` 可选,用于避免覆盖
231
+ 另一份升级。首次查询未升级的会话返回 version=null、revision=0;version/revision 记录
232
+ 本接口成功提交的升级,其他既有独立修改接口仍可使用,实际字段以查询的 configuration 为准。
233
+
234
+ 配置升级只追加当前规则快照或撤回说明,不改写或过滤已有模型消息,保持对话消息前缀。
235
+ 更换模型或修改 eager 工具 schema 时允许缓存失效。
236
+
237
+ daemon/native 和回放会话不支持该接口。runtime_type、daemon_id、agent_runtime_id、父子
238
+ 关系、聊天分组、template_id、primary_skill_id 等创建或绑定字段提交后返回 422,未知字段
239
+ 也返回 422。方案技能与用户已有技能同路径冲突时拒绝升级,用户文件不会被覆盖。
240
+
192
241
  `SessionTurnsQuery` 的 `before` 与 `fromEntryId` 互斥;定位命中不了当前分支时服务端返回
193
242
  404 / 409,而不是空窗口。目录的 `entryId` 与 `/turns` 的 `turn_id` 同源,可直接当 `before` 游标。
194
243
 
@@ -731,3 +780,11 @@ chat.renderers = {
731
780
  `session.send(text, { refs })` 选择本轮条目;不传 refs 继承上一轮选择,`refs: []` 清除,新的数组替换。AskUser 和暂停续跑沿用本轮冻结内容,下一条新消息才重新读取。流式消息和历史消息都保留 `message.refs`。
732
781
 
733
782
  `ToolEvidence` 是工具调用的原文快照类型。`ToolCallInfo.evidence` 保存引用编号、原文、插件包摘要及具体调用身份;历史查看直接使用该字段,插件停用或卸载后仍可核查当时内容。
783
+
784
+ Solution 的 `skill_tools_enabled`、是否为 `solution-app`、是否采用 `night_build` 安全策略会影响 system 前缀,属于创建时策略;升级时跨值修改返回 422,其他字段也不会部分提交。角色规则和方案技能可正常升级。
785
+
786
+ 非默认模板绑定的会话不能通过 Solution selector 转换为方案会话(422);普通运行配置仍可升级,模板绑定保持原样。
787
+
788
+ 已应用的版本 ID 持久保留:当前版本相同请求幂等返回;被后续升级覆盖的版本返回 409,禁止延迟重试回滚配置。主动回退配置应提交新的版本 ID。
789
+
790
+ 分组会话复用现有 validate_group_session 约束,只允许通用助手;切换到业务 Solution 返回 422,普通运行设置可升级,分组绑定保留。
@@ -1,6 +1,6 @@
1
1
  // src/version.ts
2
2
  var SDK_NAME = "agent-client";
3
- var SDK_VERSION = true ? "2612.0.0-beta.11" : "1.1.1";
3
+ var SDK_VERSION = true ? "2612.0.0-beta.13" : "1.1.1";
4
4
 
5
5
  // src/auth-login.ts
6
6
  function isAuthCallbackMessage(value) {
@@ -3114,7 +3114,6 @@ var SessionInfo = type({
3114
3114
  "initiator?": "'ui' | 'sdk' | 'unknown' | null",
3115
3115
  "is_headless?": "boolean",
3116
3116
  "viewer_role?": "'owner' | 'viewer'",
3117
- "template_id?": "string | null",
3118
3117
  "model?": "string | null",
3119
3118
  "enable_thinking?": "boolean | null",
3120
3119
  "solution_id?": "string | null",
@@ -3122,10 +3121,6 @@ var SessionInfo = type({
3122
3121
  "biz_role_id?": "string | null",
3123
3122
  "solution?": "unknown",
3124
3123
  "plan_summary?": "string | null",
3125
- "primary_skill_id?": "string | null",
3126
- // ship-attack v2:后端 engine.set_bound_skill 写入的"绑定 skill id"。
3127
- // 未绑定 / 非 ship-attack session 为 null。
3128
- "bound_skill_id?": "string | null",
3129
3124
  "replay_state?": "unknown",
3130
3125
  "is_pinned?": "boolean",
3131
3126
  "pinned_at?": "string | null",
@@ -3165,14 +3160,12 @@ function toCreateSessionPayload(request) {
3165
3160
  const solutionRef = request.solution_ref ?? externalSolutionRef(request.solution_id);
3166
3161
  return {
3167
3162
  intent: request.intent ?? "",
3168
- template_id: request.template_id,
3169
3163
  solution_id: solutionRef ? void 0 : request.solution_id,
3170
3164
  solution_ref: solutionRef,
3171
3165
  biz_role_id: request.biz_role_id ?? null,
3172
3166
  model: request.model ?? null,
3173
3167
  enable_thinking: request.enable_thinking ?? null,
3174
3168
  memory_enabled: request.memory_enabled ?? null,
3175
- primary_skill_id: request.primary_skill_id ?? null,
3176
3169
  env: request.env,
3177
3170
  disable_tools: request.disable_tools ?? null,
3178
3171
  mcp_sources: request.mcp_sources,
@@ -3412,7 +3405,6 @@ var SessionsResource = class {
3412
3405
  fetchSessionsPage({
3413
3406
  limit,
3414
3407
  offset,
3415
- template_id_prefix,
3416
3408
  solution_id,
3417
3409
  solution_registry_id,
3418
3410
  q,
@@ -3421,7 +3413,6 @@ var SessionsResource = class {
3421
3413
  const searchParams = new URLSearchParams();
3422
3414
  searchParams.set("limit", String(limit));
3423
3415
  searchParams.set("offset", String(offset));
3424
- if (template_id_prefix) searchParams.set("template_id_prefix", template_id_prefix);
3425
3416
  if (solution_registry_id) {
3426
3417
  searchParams.set("solution_registry_id", solution_registry_id);
3427
3418
  } else if (solution_id) {
@@ -3432,12 +3423,12 @@ var SessionsResource = class {
3432
3423
  if (chat_group_id) searchParams.set("chat_group_id", chat_group_id);
3433
3424
  return this.client.json("GET", `/api/sessions?${searchParams.toString()}`);
3434
3425
  }
3435
- async listSessions(template_id_prefix, solution_id) {
3426
+ async listSessions(solution_id) {
3436
3427
  const pageSize = 100;
3437
3428
  const sessions = [];
3438
3429
  let offset = 0;
3439
3430
  while (true) {
3440
- const page = await this.fetchSessionsPage({ limit: pageSize, offset, template_id_prefix, solution_id });
3431
+ const page = await this.fetchSessionsPage({ limit: pageSize, offset, solution_id });
3441
3432
  sessions.push(...page.items);
3442
3433
  if (sessions.length >= page.total || page.items.length === 0) return sessions;
3443
3434
  offset += page.items.length;
@@ -3454,8 +3445,8 @@ var SessionsResource = class {
3454
3445
  if (params.limit !== void 0) searchParams.set("limit", String(params.limit));
3455
3446
  return this.client.json("GET", `/api/search?${searchParams.toString()}`);
3456
3447
  }
3457
- createSession(intent, template_id, primary_skill_id) {
3458
- return this.createSessionWithRequest({ intent, template_id, primary_skill_id });
3448
+ createSession(intent) {
3449
+ return this.createSessionWithRequest({ intent });
3459
3450
  }
3460
3451
  createSessionWithRequest(request) {
3461
3452
  return this.client.json("POST", "/api/sessions", toCreateSessionPayload(request));
@@ -3473,6 +3464,13 @@ var SessionsResource = class {
3473
3464
  updateSession(sessionId, payload) {
3474
3465
  return this.client.json("PATCH", `/api/sessions/${sessionId}`, payload);
3475
3466
  }
3467
+ getSessionConfiguration(sessionId, init) {
3468
+ return this.client.jsonFromInit(`/api/sessions/${encodeURIComponent(sessionId)}/configuration`, init);
3469
+ }
3470
+ /** Updates atomically between turns. A running/handoff session returns HTTP 409. */
3471
+ updateSessionConfiguration(sessionId, request) {
3472
+ return this.client.json("PATCH", `/api/sessions/${encodeURIComponent(sessionId)}/configuration`, request);
3473
+ }
3476
3474
  setSessionEnv(sessionId, env) {
3477
3475
  return this.client.json("PUT", `/api/sessions/${sessionId}/env`, { env });
3478
3476
  }
@@ -6568,7 +6566,6 @@ var AgentSession = class _AgentSession {
6568
6566
  intent: data.intent,
6569
6567
  status: data.status,
6570
6568
  model: data.model,
6571
- boundSkillId: data.bound_skill_id,
6572
6569
  replayState: data.replay_state
6573
6570
  });
6574
6571
  }
@@ -8267,4 +8264,4 @@ export {
8267
8264
  createSocket,
8268
8265
  BladeClient
8269
8266
  };
8270
- //# sourceMappingURL=chunk-SCG5SRXE.js.map
8267
+ //# sourceMappingURL=chunk-KPS6X6QX.js.map