@sema-agent/server 7.143.0 → 7.145.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.
Files changed (139) hide show
  1. package/MIGRATION.md +295 -0
  2. package/README.md +3 -0
  3. package/README.zh-CN.md +1 -0
  4. package/USAGE.md +34 -16
  5. package/dist/approval-card.d.ts +31 -14
  6. package/dist/approval-card.js +8 -8
  7. package/dist/audit.d.ts +2 -21
  8. package/dist/audit.js +0 -9
  9. package/dist/boot/execution-env.js +1 -1
  10. package/dist/boot/runner-deps.d.ts +10 -5
  11. package/dist/boot/runner-deps.js +5 -4
  12. package/dist/boot/session-faces.d.ts +1 -1
  13. package/dist/boot/session-faces.js +3 -3
  14. package/dist/boot/shutdown.d.ts +1 -1
  15. package/dist/boot/shutdown.js +4 -2
  16. package/dist/boot/stage-01-config.js +2 -0
  17. package/dist/boot/stage-07-capability-layer.js +1 -1
  18. package/dist/boot/stage-09-leader.d.ts +1 -1
  19. package/dist/boot/stage-10-http-server.d.ts +1 -1
  20. package/dist/boot/stage-10-http-server.js +4 -9
  21. package/dist/capabilities/scenarios.d.ts +14 -18
  22. package/dist/capabilities/scenarios.js +1 -2
  23. package/dist/config-d-migration.d.ts +3 -0
  24. package/dist/delegated-session-owner.d.ts +33 -151
  25. package/dist/delegated-session-owner.js +1 -83
  26. package/dist/entry-mode-clamp-notice.d.ts +1 -1
  27. package/dist/execution-placement.d.ts +7 -4
  28. package/dist/fleet/fleet-bus.d.ts +13 -3
  29. package/dist/fleet/fleet-bus.js +17 -3
  30. package/dist/hooks/classic-stations.d.ts +3 -1
  31. package/dist/hooks/classic-stations.js +2 -0
  32. package/dist/http/admission.js +2 -1
  33. package/dist/http/checkpoint-ctx.d.ts +1 -0
  34. package/dist/http/checkpoint-ctx.js +1 -0
  35. package/dist/http/durable-run-leg.js +7 -6
  36. package/dist/http/principal-gate.d.ts +1 -1
  37. package/dist/http/refusal-body.d.ts +7 -3
  38. package/dist/http/refusal-body.js +1 -0
  39. package/dist/http/resume-legs.js +16 -7
  40. package/dist/http/route-ctx.d.ts +15 -0
  41. package/dist/http/routes/approvals-assistant.d.ts +20 -1
  42. package/dist/http/routes/approvals-assistant.js +28 -6
  43. package/dist/http/routes/rules.d.ts +1 -1
  44. package/dist/http/routes/rules.js +5 -2
  45. package/dist/http/routes/session-sync.js +12 -0
  46. package/dist/http/routes/tasks.js +12 -9
  47. package/dist/http/run-meta.d.ts +14 -7
  48. package/dist/http/run-meta.js +5 -2
  49. package/dist/http/server.d.ts +13 -5
  50. package/dist/http/server.js +3 -0
  51. package/dist/http/submit-ctx.d.ts +12 -0
  52. package/dist/http/submit-ctx.js +23 -0
  53. package/dist/index.d.ts +1 -0
  54. package/dist/index.js +1 -0
  55. package/dist/lane-home-probe.d.ts +15 -0
  56. package/dist/lane-home-probe.js +4 -0
  57. package/dist/observability/corrupt-read-seat.d.ts +5 -9
  58. package/dist/observability/corrupt-read-seat.js +1 -2
  59. package/dist/observability/fail-open.d.ts +26 -10
  60. package/dist/observability/fail-open.js +26 -10
  61. package/dist/observability/run-terminal.d.ts +1 -1
  62. package/dist/observability/run-terminal.js +2 -2
  63. package/dist/parked-revive-surface.d.ts +6 -7
  64. package/dist/peer-inbound-face.d.ts +29 -34
  65. package/dist/peer-inbound-face.js +28 -63
  66. package/dist/plugins/approval-ask-store-file.d.ts +16 -2
  67. package/dist/plugins/approval-ask-store-file.js +21 -1
  68. package/dist/plugins/approval-ask-store-memory.d.ts +8 -2
  69. package/dist/plugins/approval-ask-store-memory.js +11 -8
  70. package/dist/plugins/caching-session-store.d.ts +3 -3
  71. package/dist/plugins/caching-session-store.js +3 -3
  72. package/dist/plugins/checkpoint-store-sql.d.ts +62 -37
  73. package/dist/plugins/checkpoint-store-sql.js +123 -40
  74. package/dist/plugins/file-run-store.d.ts +13 -1
  75. package/dist/plugins/file-run-store.js +11 -1
  76. package/dist/plugins/fork-routing-session-store.d.ts +8 -1
  77. package/dist/plugins/fork-routing-session-store.js +6 -0
  78. package/dist/plugins/local-checkpoint-store.d.ts +17 -8
  79. package/dist/plugins/local-checkpoint-store.js +26 -7
  80. package/dist/plugins/local-session-store.d.ts +105 -34
  81. package/dist/plugins/local-session-store.js +168 -65
  82. package/dist/plugins/local-session-window.d.ts +4 -2
  83. package/dist/plugins/memory-run-store.d.ts +2 -0
  84. package/dist/plugins/memory-run-store.js +6 -0
  85. package/dist/plugins/one-time-migrations.d.ts +12 -12
  86. package/dist/plugins/one-time-migrations.js +13 -13
  87. package/dist/plugins/pg-session-storage.d.ts +1 -9
  88. package/dist/plugins/pg-session-storage.js +2 -19
  89. package/dist/plugins/remote-env-host.d.ts +8 -4
  90. package/dist/plugins/remote-env-host.js +7 -9
  91. package/dist/plugins/remote-shell.js +12 -2
  92. package/dist/plugins/run-store-sql.d.ts +4 -0
  93. package/dist/plugins/run-store-sql.js +3 -0
  94. package/dist/plugins/schema-consistency.d.ts +5 -1
  95. package/dist/plugins/session-fork.d.ts +1 -1
  96. package/dist/plugins/session-ownership.d.ts +9 -0
  97. package/dist/plugins/session-ownership.js +6 -0
  98. package/dist/plugins/session-store.d.ts +13 -16
  99. package/dist/plugins/session-store.js +9 -10
  100. package/dist/plugins/sql-json-column.d.ts +24 -2
  101. package/dist/plugins/sql-json-column.js +38 -3
  102. package/dist/plugins/store-backend.js +3 -2
  103. package/dist/plugins/tidb-session-store.d.ts +2 -14
  104. package/dist/plugins/tidb-session-store.js +2 -20
  105. package/dist/prompt-screen.d.ts +21 -0
  106. package/dist/prompt-screen.js +8 -0
  107. package/dist/rules-consent.d.ts +63 -51
  108. package/dist/rules-consent.js +6 -10
  109. package/dist/run-acceptance.d.ts +40 -10
  110. package/dist/run-acceptance.js +38 -5
  111. package/dist/run-local.js +2 -1
  112. package/dist/runs.js +5 -1
  113. package/dist/security.d.ts +10 -7
  114. package/dist/session-agent.d.ts +39 -0
  115. package/dist/session-agent.js +16 -0
  116. package/dist/session-error-wire.d.ts +25 -26
  117. package/dist/session-error-wire.js +4 -5
  118. package/dist/session-incarnation.d.ts +2 -2
  119. package/dist/session-notify-door.d.ts +2 -2
  120. package/dist/session-notify-door.js +5 -1
  121. package/dist/tool-approval.d.ts +3 -1
  122. package/dist/tool-approval.js +47 -18
  123. package/dist/trace/core-keyset-guard.d.ts +1 -1
  124. package/dist/trace/engine-notice-wire.d.ts +1 -1
  125. package/dist/trace/engine-notice-wire.js +1 -1
  126. package/dist/trace/ledger-sink.js +12 -4
  127. package/dist/trace/model-segment.d.ts +26 -6
  128. package/dist/trace/model-segment.js +58 -9
  129. package/dist/trace/project.d.ts +8 -2
  130. package/dist/trace/project.js +6 -4
  131. package/dist/trace/redact.d.ts +77 -2
  132. package/dist/trace/redact.js +234 -99
  133. package/dist/trace/self-minted-wire.d.ts +160 -9
  134. package/dist/trace/self-minted-wire.js +52 -3
  135. package/package.json +3 -3
  136. package/wire-changes/server@7.144.0.json +291 -0
  137. package/wire-changes/server@7.145.0.json +146 -0
  138. package/dist/session-records-skipped-notice.d.ts +0 -21
  139. package/dist/session-records-skipped-notice.js +0 -27
@@ -735,17 +735,33 @@ export declare const SELF_MINTED_WIRE: {
735
735
  };
736
736
  };
737
737
  /**
738
- * `POST /v1/side-query` 200 体在失败时的 `errorKind` 值里本版新出现的词(机读失败种类;缺席 = 引擎没给)。词是引擎铸的闭集,本服务逐字过境(`projectSideQueryResult`),词表属主 = 引擎的 `AssistantMessage.errorKind`:
739
- * `satisfies Partial<Record<…>>` 把「登的是引擎的词」绑在引擎的型上。`image_unprocessable` —— 服务商处理不了请求里的图 —— 是本版新词;此前的三词(`input_too_long` / `length_empty` / `degenerate`,自 7.135.0 起在 wire 上)
740
- * 不在本集 —— 同上面四个集的口径,只登本版新出现的。
738
+ * `POST /v1/side-query` 200 体在失败时 `errorKind` 的**整个**词闭集(机读失败种类;缺席 = 引擎没给)。词是引擎铸的闭集,本服务逐字过境(`projectSideQueryResult`),词表属主 = 引擎的 `AssistantMessage.errorKind`:
739
+ * `satisfies Record<…>` 穷举 —— 引擎加一个词而本表没跟 ⇒ 提货当拍 tsc 红(词逐字过境,上 wire 的那一刻就该在这里)。`since` = 这个词在本服务 wire 上出现的版本:三词随 `errorKind` 这一位
740
+ * 一起上(7.135.0,引擎 7.55.0);`image_unprocessable` 7.138.0(引擎 7.59.0);`tool_schema_refused` 7.143.0(引擎 7.61.0 —— 当版漏登,7.144.0 补登:本表此前是只登本版新词的 `Partial`,引擎加词不红)。
741
741
  */
742
742
  readonly sideQueryErrorKind: {
743
743
  readonly at: "POST /v1/side-query 200 体 errorKind 的值(失败时在场;引擎的词逐字过境)";
744
744
  readonly members: {
745
+ input_too_long: {
746
+ attr: string;
747
+ since: string;
748
+ };
749
+ length_empty: {
750
+ attr: string;
751
+ since: string;
752
+ };
753
+ degenerate: {
754
+ attr: string;
755
+ since: string;
756
+ };
745
757
  image_unprocessable: {
746
758
  attr: string;
747
759
  since: string;
748
760
  };
761
+ tool_schema_refused: {
762
+ attr: string;
763
+ since: string;
764
+ };
749
765
  };
750
766
  };
751
767
  /** MCP 授权记录 `authorization`(只投闭集词 `reason`,与 `errorCode:"unauthorized"` 同行)出现的三张面;投影只有 `mcp-authorization-face.ts` 的 `projectMcpAuthorization` 一只,三面同读。 */
@@ -1309,6 +1325,36 @@ export declare const SELF_MINTED_WIRE: {
1309
1325
  };
1310
1326
  };
1311
1327
  };
1328
+ /**
1329
+ * 运维队列行与订阅流 `pending` 帧(停驻门族)上的 `rowVerdict`(7.144.0;core 7.62.0 [ref]):这一行**本引擎续不续得了** —— core 判官 `judgeCheckpointRow` 对这一行字节的判决,
1330
+ * 与助手收件箱行的同名位、续跑第一级的拒同一个读者、同一答(逐字投,本服务不重算)。`satisfies Record<Extract<keyof PendingCheckpoint, "rowVerdict">, …>`:行形改名 / 删键而本表没跟 ⇒ tsc 红。
1331
+ * 在场律 `present-iff`:LOCAL 后端恒在;SQL 后端只在「两次读之间行离开待决」或「两次读之间行的字节变了」时缺席 —— 缺席不是 `ok`。
1332
+ * 字节读不成一只检查点的行(7.145.0 起)判官照答(恒 `damaged`,计数)、在场 —— 7.144.x 这一形缺席。
1333
+ */
1334
+ readonly approvalQueueRowVerdict: {
1335
+ readonly at: "GET /v1/approvals pending[] 行 · GET /v1/approvals/stream pending 帧(停驻门族)的 rowVerdict";
1336
+ readonly members: {
1337
+ rowVerdict: {
1338
+ attr: string;
1339
+ since: string;
1340
+ };
1341
+ };
1342
+ };
1343
+ /**
1344
+ * 运维队列停驻行(`kind: "checkpoint"`)与订阅流 `pending` 帧上的 `agent` —— 行的会话(`sessionId`)在委派树里的位置 `{ id?, parentSessionId?, rootSessionId? }`,
1345
+ * 与 `GET /v1/sessions/:sessionId` 体顶层的同名键同一只读口(`session-agent.ts` 的 `readSessionAgent`)、同一只投影,逐值同答。
1346
+ * 在场律 `present-iff`:这一次列表读到行的会话是一只 placed 委派子代(会话行上存着引擎写下的委派元组);宿主会话、同步委派的子代、`fork` 型后台子代、
1347
+ * 不存元组的店、那一读没读成(F 类 `server.approvals.queue-row-agent-unreadable`)⇒ 缺席 —— 缺席读作「这台 server 没有说」。`satisfies` 绑行形:删键 / 改名而本表没跟 ⇒ tsc 红。
1348
+ */
1349
+ readonly approvalQueueRowAgent: {
1350
+ readonly at: "GET /v1/approvals pending[] 行 · GET /v1/approvals/stream pending 帧(停驻门族)的 agent";
1351
+ readonly members: {
1352
+ agent: {
1353
+ attr: string;
1354
+ since: string;
1355
+ };
1356
+ };
1357
+ };
1312
1358
  /**
1313
1359
  * 运维审批队列 `pending[]` 的**行族闭集**(7.143.0):每一行 / 每一帧(`pending` 与 `resolved`)恒带 `kind`,消费方先按它分支。
1314
1360
  * `satisfies Record<ApprovalQueueKind, …>`(闭集属主 = `approval-queue-kind.ts` 的 `APPROVAL_QUEUE_KINDS`;加一族而本表没跟 ⇒ tsc 红)。
@@ -1365,6 +1411,10 @@ export declare const SELF_MINTED_WIRE: {
1365
1411
  attr: string;
1366
1412
  since: string;
1367
1413
  };
1414
+ deadline: {
1415
+ attr: string;
1416
+ since: string;
1417
+ };
1368
1418
  fromSession: {
1369
1419
  attr: string;
1370
1420
  since: string;
@@ -1442,6 +1492,21 @@ export declare const SELF_MINTED_WIRE: {
1442
1492
  };
1443
1493
  };
1444
1494
  };
1495
+ /**
1496
+ * 续跑拒体上引擎 7.62.0 新位 `detail.thrownName` 的过境键(7.144.0):引擎的行判官读不出一行(被读的成员读时抛 / 容器不是容器)⇒ 认领前拒 `reason: requirements_damaged`,
1497
+ * `thrownName` 点名读它时被抛出的东西的名字(引擎侧有界、不带 message)—— 在场 = 引擎缺陷,缺席 = 行的内容对不上它自述的(数据损坏),运维凭这一位分诊。
1498
+ * 唯一读法 = `http/refusal-body.ts` 的 `resumeRefusalFacts`(同步腿的 `checkpointRefusalAnswer` 与后台停驻 422 体读同一只;回执今天不带这一位 ⇒ 422 腿恒缺席)。
1499
+ * 拒体没有可 `satisfies` 的全集型,行为由对应 CHANGELOG 条的钉证(`test/durable-resume-http.test.ts`)。在场律 `present-iff`:引擎给了非空串才铸键。
1500
+ */
1501
+ readonly requirementsDamagedBodyKey: {
1502
+ readonly at: "409 续跑拒体(引擎 reason requirements_damaged;<键> → 在场律)";
1503
+ readonly members: {
1504
+ readonly thrownName: {
1505
+ readonly attr: "present-iff the engine named what its row judge saw thrown (non-empty string)";
1506
+ readonly since: "7.144.0";
1507
+ };
1508
+ };
1509
+ };
1445
1510
  /**
1446
1511
  * 在飞 run 的权限模式切档口 `POST /v1/runs/:id/permission-mode`(本版新端点)200 体的键集(<键> → 在场律)。
1447
1512
  * `satisfies Record<keyof PermissionModeVerbReply, …>`(体形属主 = `http/routes/run-permission-mode.ts`,路由按这只型铸体;键加一个而本表没跟 ⇒ tsc 红)。
@@ -1568,9 +1633,17 @@ export declare const SELF_MINTED_WIRE: {
1568
1633
  readonly attr: 500;
1569
1634
  readonly since: "7.136.0";
1570
1635
  };
1571
- readonly "POST /v1/tasks#stored_log_invalid(\u540C\u6B65\u817F;\u6253\u5F00\u5DF2\u5B58\u65E5\u5FD7\u649E\u4E0A\u7ED3\u6784\u574F:\u60AC\u7A7A\u7236 / \u81EA\u6307 / \u6210\u73AF / \u53F6\u5B50\u7F3A\u5E2D;\u96F6\u5DE5\u4F5C\u7684\u62D2;\u4F53 invalid_session)": {
1636
+ readonly "POST /v1/tasks#stored_log_unwalkable(\u540C\u6B65\u817F;\u5DF2\u5B58\u65E5\u5FD7\u8D70\u4E0D\u6210\u4E00\u68F5\u6811\u800C\u56DE\u653E\u6CA1\u4E22\u8BB0\u5F55:\u60AC\u7A7A\u7236 / \u81EA\u6307 / \u6210\u73AF / \u53F6\u5B50\u7F3A\u5E2D;\u96F6\u5DE5\u4F5C\u7684\u62D2;\u4F53 corrupt_session)": {
1572
1637
  readonly attr: 500;
1573
- readonly since: "7.137.0";
1638
+ readonly since: "7.144.0";
1639
+ };
1640
+ readonly "POST /v1/tasks#stored_log_rerooted(\u540C\u6B65\u817F;\u56DE\u653E\u4E22\u4E86\u8BB0\u5F55\u800C\u5206\u652F\u5728\u65AD\u70B9\u65AD\u5F00 \u21D2 run \u4ECE\u65AD\u70B9\u7EED\u4E0A)": {
1641
+ readonly attr: 200;
1642
+ readonly since: "7.144.0";
1643
+ };
1644
+ readonly "POST /v1/tasks#env_home_unconfirmed(\u540C\u6B65\u817F;host \u8F66\u9053\u6267\u884C\u73AF\u5883\u7684\u5BB6\u76EE\u5F55\u4E3B\u5F20\u8BC1\u4E0D\u4E86,\u5DE5\u5382\u5728\u94F8\u73AF\u5883\u4E4B\u524D\u62D2;\u96F6\u5DE5\u4F5C\u7684\u62D2;\u4F53 env.home_unconfirmed + \u5224\u5B98\u7684\u62D2\u53E5)": {
1645
+ readonly attr: 409;
1646
+ readonly since: "7.144.0";
1574
1647
  };
1575
1648
  readonly "POST /v1/sessions/:id/sync/import#identical_repush_blob_missing(\u4F53 missing_blob)": {
1576
1649
  readonly attr: 422;
@@ -1588,13 +1661,17 @@ export declare const SELF_MINTED_WIRE: {
1588
1661
  readonly attr: 400;
1589
1662
  readonly since: "7.141.0";
1590
1663
  };
1591
- readonly "POST /v1/sessions/:id/fork#stamped_archive(DB_BACKEND=local;\u6E90\u5B58\u6863\u4ECD\u5E26\u66F4\u65E9\u7248\u672C\u5199\u4E0B\u7684\u5C5E\u4E3B\u6233;\u96F6\u5199;\u4F53 conflict + \u5E26\u6233\u5B58\u6863\u7684\u56FA\u5B9A\u53E5)": {
1664
+ readonly "POST /v1/sessions/:id/fork#stamped_archive(DB_BACKEND=local;\u6E90\u5B58\u6863\u4ECD\u5E26\u66F4\u65E9\u7248\u672C\u5199\u4E0B\u7684\u5C5E\u4E3B\u6233;\u96F6\u5199;\u4F53 conflict.session_archive_stamped + \u5E26\u6233\u5B58\u6863\u7684\u56FA\u5B9A\u53E5)": {
1592
1665
  readonly attr: 409;
1593
- readonly since: "7.141.0";
1666
+ readonly since: "7.144.0";
1594
1667
  };
1595
- readonly "POST /v1/sessions/:id/sync/import/:stagingId/entries#stamped_archive(DB_BACKEND=local;\u63D0\u4EA4\u843D\u5728\u4ECD\u5E26\u5C5E\u4E3B\u6233\u7684\u5B58\u6863\u4E0A;\u884C\u51C0\u96F6\u5199;\u4F53 conflict + \u5E26\u6233\u5B58\u6863\u7684\u56FA\u5B9A\u53E5)": {
1668
+ readonly "POST /v1/sessions/:id/sync/import/:stagingId/entries#stamped_archive(DB_BACKEND=local;\u63D0\u4EA4\u843D\u5728\u4ECD\u5E26\u5C5E\u4E3B\u6233\u7684\u5B58\u6863\u4E0A,\u6539\u65E5\u5FD7\u7684\u5404\u5F62\u63A8\u9001\u540C\u7B54;\u884C\u51C0\u96F6\u5199;\u4F53 conflict.session_archive_stamped + \u5E26\u6233\u5B58\u6863\u7684\u56FA\u5B9A\u53E5)": {
1596
1669
  readonly attr: 409;
1597
- readonly since: "7.141.0";
1670
+ readonly since: "7.144.0";
1671
+ };
1672
+ readonly "POST /v1/sessions/:id/sync/import#stamped_archive(DB_BACKEND=local;\u7B2C\u4E00\u9636\u6BB5\u6309 id \u5206\u7C7B\u51FA fork / stale \u4E14\u6CA1\u5E26\u540C\u610F,\u76EE\u7684\u7AEF\u5B58\u6863\u4ECD\u5E26\u5C5E\u4E3B\u6233;\u4E0D\u5F00\u6682\u5B58\u3001\u4E0D\u62FF\u79DF\u7EA6\u3001\u4E0D\u5199\u5B58\u6863;\u4F53 conflict.session_archive_stamped + \u5E26\u6233\u5B58\u6863\u7684\u56FA\u5B9A\u53E5,\u4E0D\u5E26 relation)": {
1673
+ readonly attr: 409;
1674
+ readonly since: "7.145.0";
1598
1675
  };
1599
1676
  readonly "POST /v1/tasks|/v1/tasks/stream|/v1/runs#images_url_credential(\u65B0\u63D0\u4EA4;\u4F53 request.field_invalid + field images[i].url + reason url_userinfo|url_credential_param)": {
1600
1677
  readonly attr: 400;
@@ -1824,6 +1901,58 @@ export declare const SELF_MINTED_WIRE: {
1824
1901
  readonly attr: 503;
1825
1902
  readonly since: "7.143.0";
1826
1903
  };
1904
+ readonly "POST /v1/rules/cc-import/redeem#member_refused(\u5151\u4ED8\u8D70\u5B8C\u3001\u5F15\u64CE\u7684\u5B8C\u6574\u6210\u5458\u8868\u91CC\u6709\u88AB\u62D2\u7684\u6210\u5458;\u4F53 = \u56DE\u6267 { members, rev },\u90A3\u51E0\u884C outcome indeterminate + reason store_refused + detail \u5F15\u64CE\u539F\u8BDD;\u7968\u7528\u6389,\u540C\u7968\u518D\u5151 404)": {
1905
+ readonly attr: 200;
1906
+ readonly since: "7.145.0";
1907
+ };
1908
+ };
1909
+ };
1910
+ /**
1911
+ * `POST /v1/rules/cc-import/redeem` 200 回执的顶层键(<键> → 在场律)。规则导入两只 redeem 口同一张回执、同一个铸点(`http/routes/rules.ts` 的 `sendImportReceipt`),
1912
+ * 键集属主 = `rules-consent.ts` 的 `ImportOutcome`(`satisfies` 穷举:回执加一键而本表没跟 / 登的键不在回执里 ⇒ tsc 红)。`POST /v1/rules/local-import/redeem` 早于本表就是这一形,
1913
+ * 本表的 `since` 记的是 cc-import 口换上这一形的版本;cc-import 口此前那一形的唯一顶层键 `result` 记在 `retired`。钉 test/rules-import-receipt.test.ts(两口逐字节同形)、
1914
+ * test/permission-rules-lane.test.ts(cc-import 200 体全等)。
1915
+ */
1916
+ readonly ruleImportReceiptKey: {
1917
+ readonly at: "POST /v1/rules/cc-import/redeem 200 回执顶层键(<键> → 在场律;与 POST /v1/rules/local-import/redeem 同形)";
1918
+ readonly members: {
1919
+ members: {
1920
+ attr: string;
1921
+ since: string;
1922
+ };
1923
+ rev: {
1924
+ attr: string;
1925
+ since: string;
1926
+ };
1927
+ };
1928
+ readonly retired: {
1929
+ readonly "result(\u22647.144.0 \u7684 cc-import \u56DE\u6267:{ members: <\u5F15\u64CE RedeemedBatchMember \u539F\u5F62\u884C:candidateIndex / behavior / rule / scope \u5BF9\u8C61 / status / alreadyRedeemed / dot>, rev })": {
1930
+ readonly attr: "always";
1931
+ readonly since: "7.46.0";
1932
+ readonly until: "7.145.0";
1933
+ };
1934
+ };
1935
+ };
1936
+ /** 同上回执 `members[]` 一行的键(<键> → 在场律)。键集属主 = `ImportOutcomeMember`(`satisfies` 穷举),唯一投影 = `rules-consent.ts` 的 `buildImportOutcomeMembers`(两口同调)。 */
1937
+ readonly ruleImportReceiptMemberKey: {
1938
+ readonly at: "POST /v1/rules/cc-import/redeem 200 回执 members[] 行键(<键> → 在场律;与 POST /v1/rules/local-import/redeem 同形)";
1939
+ readonly members: {
1940
+ key: {
1941
+ attr: string;
1942
+ since: string;
1943
+ };
1944
+ outcome: {
1945
+ attr: string;
1946
+ since: string;
1947
+ };
1948
+ reason: {
1949
+ attr: string;
1950
+ since: string;
1951
+ };
1952
+ detail: {
1953
+ attr: string;
1954
+ since: string;
1955
+ };
1827
1956
  };
1828
1957
  };
1829
1958
  /**
@@ -2711,6 +2840,28 @@ export declare const SELF_MINTED_WIRE: {
2711
2840
  readonly attr: "whole-segment-for-late-subscriber";
2712
2841
  readonly since: "7.143.0";
2713
2842
  };
2843
+ /**
2844
+ * 7.144.0:文字段的状态边界只有一条 —— 段(段界谓词 + 腿终局 / 子代终态),与账本 `text` 行同一个单位;引擎的 `text_end` 关的是文字块,是这一块的交付点、不再收段
2845
+ * (`trace/model-segment.ts` 的 `text_end` 分支经流式口的交付口 `takeAll` 放出这一块余下的字节,段的流接着喂下一块;分歧核对只在段收时一次)。
2846
+ * 锚在一块、值在下一块 ⇒ 下一块的 `text_delta` 照样遮;块界上按到此为止的判定与整段判定不同(一个凭据形横跨块界:读得出的半形出遮记号、读不出的前缀半截原样出门;
2847
+ * 或交付时认作凭据、后文让它不再是:活流那一截是记号)⇒ 活流按到此为止、账本整段判、计数 `server.live-text.hold-diverged` 恰 +1。此前文字段在每个 `text_end` 上收掉重开。
2848
+ * 钉 test/live-model-text-redact.test.ts「文字脱敏单位 = 段」组。
2849
+ */
2850
+ readonly "SSE text_delta#delta(\u6587\u5B57\u6BB5\u7684\u72B6\u6001\u8DE8\u6587\u5B57\u5757)": {
2851
+ readonly attr: "segment-scoped-redactor-state;text_end=block-delivery-not-segment-close;block-end-as-ended-vs-whole-differs=live-as-ended+ledger-whole+hold-diverged+1";
2852
+ readonly since: "7.144.0";
2853
+ };
2854
+ /** 7.144.0:`text_end.content` 仍是引擎给的那一块正文(引擎修剪过的照样),接在同段已交付的前缀之后判 ⇒ 值在本块、锚在前一块照样遮;此前孤立地过脱敏器。钉同上。 */
2855
+ readonly "SSE text_end#content(\u63A5\u5728\u540C\u6BB5\u524D\u7F00\u4E4B\u540E\u5224)": {
2856
+ readonly attr: "engine-block-content;judged-after-segment-prefix";
2857
+ readonly since: "7.144.0";
2858
+ };
2859
+ /** 7.144.0:账本 `text` 行的正文 = 段内各块原文依次拼接,块原文唯一定义 = `trace/model-segment.ts` 的 `blockText`(有 delta 字节 ⇒ 那些字节;一个都没有、只有 `text_end` 的块 ⇒ 它的正文),
2860
+ * ledger 写口与续跑腿同读;此前两条账本腿只拼 delta 字节,只有 `text_end` 的块不在行里。钉 test/live-model-text-redact.test.ts、test/durable-resume-http.test.ts「修复轮 ⑤」。 */
2861
+ readonly "GET /v1/runs/:id/events#text.text(\u6BB5\u6587\u672C\u542B\u53EA\u6709 text_end \u7684\u5757)": {
2862
+ readonly attr: "segment-text=block-texts-concat;end-only-block=text_end.content";
2863
+ readonly since: "7.144.0";
2864
+ };
2714
2865
  };
2715
2866
  };
2716
2867
  };
@@ -281,7 +281,11 @@ export const SELF_MINTED_WIRE = {
281
281
  sideQueryErrorKind: {
282
282
  at: "POST /v1/side-query 200 体 errorKind 的值(失败时在场;引擎的词逐字过境)",
283
283
  members: {
284
+ input_too_long: { attr: "-", since: "7.135.0" },
285
+ length_empty: { attr: "-", since: "7.135.0" },
286
+ degenerate: { attr: "-", since: "7.135.0" },
284
287
  image_unprocessable: { attr: "-", since: "7.138.0" },
288
+ tool_schema_refused: { attr: "-", since: "7.143.0" },
285
289
  },
286
290
  },
287
291
  mcpAuthorizationKey: {
@@ -481,6 +485,18 @@ export const SELF_MINTED_WIRE = {
481
485
  classifierNoRuling: { attr: "present-iff", since: "7.136.0" },
482
486
  },
483
487
  },
488
+ approvalQueueRowVerdict: {
489
+ at: "GET /v1/approvals pending[] 行 · GET /v1/approvals/stream pending 帧(停驻门族)的 rowVerdict",
490
+ members: {
491
+ rowVerdict: { attr: "present-iff the row's stored bytes were judged on this listing", since: "7.144.0" },
492
+ },
493
+ },
494
+ approvalQueueRowAgent: {
495
+ at: "GET /v1/approvals pending[] 行 · GET /v1/approvals/stream pending 帧(停驻门族)的 agent",
496
+ members: {
497
+ agent: { attr: "present-iff the row's session is a placed delegated child (its stored delegation tuple was read on this listing)", since: "7.145.0" },
498
+ },
499
+ },
484
500
  approvalQueueKind: {
485
501
  at: "GET /v1/approvals pending[].kind · GET /v1/approvals/stream pending / resolved 帧的 kind(恒带)",
486
502
  members: {
@@ -499,6 +515,7 @@ export const SELF_MINTED_WIRE = {
499
515
  content: { attr: "always", since: "7.143.0" },
500
516
  sentAt: { attr: "always", since: "7.143.0" },
501
517
  heldAt: { attr: "always", since: "7.143.0" },
518
+ deadline: { attr: "present-iff", since: "7.144.0" },
502
519
  fromSession: { attr: "present-iff", since: "7.143.0" },
503
520
  fromName: { attr: "present-iff", since: "7.143.0" },
504
521
  fromScope: { attr: "present-iff", since: "7.143.0" },
@@ -532,6 +549,12 @@ export const SELF_MINTED_WIRE = {
532
549
  acceptableForm: { attr: "present-iff", since: "7.137.0" },
533
550
  },
534
551
  },
552
+ requirementsDamagedBodyKey: {
553
+ at: "409 续跑拒体(引擎 reason requirements_damaged;<键> → 在场律)",
554
+ members: {
555
+ thrownName: { attr: "present-iff the engine named what its row judge saw thrown (non-empty string)", since: "7.144.0" },
556
+ },
557
+ },
535
558
  permissionModeVerbBodyKey: {
536
559
  at: "POST /v1/runs/:id/permission-mode 200 体(<键> → 在场律)",
537
560
  members: {
@@ -574,13 +597,16 @@ export const SELF_MINTED_WIRE = {
574
597
  "GET /v1/sessions/:id/sync/history/blobs/:hash#store_deployment_fault(体同上)": { attr: 503, since: "7.137.0" },
575
598
  "GET /v1/sessions/:id/events#corrupt_archive(DB_BACKEND=local;开流之前;体 corrupt_session)": { attr: 500, since: "7.136.0" },
576
599
  "PATCH /v1/sessions/:id#corrupt_archive(DB_BACKEND=local;体 corrupt_session)": { attr: 500, since: "7.136.0" },
577
- "POST /v1/tasks#stored_log_invalid(同步腿;打开已存日志撞上结构坏:悬空父 / 自指 / 成环 / 叶子缺席;零工作的拒;体 invalid_session)": { attr: 500, since: "7.137.0" },
600
+ "POST /v1/tasks#stored_log_unwalkable(同步腿;已存日志走不成一棵树而回放没丢记录:悬空父 / 自指 / 成环 / 叶子缺席;零工作的拒;体 corrupt_session)": { attr: 500, since: "7.144.0" },
601
+ "POST /v1/tasks#stored_log_rerooted(同步腿;回放丢了记录而分支在断点断开 ⇒ run 从断点续上)": { attr: 200, since: "7.144.0" },
602
+ "POST /v1/tasks#env_home_unconfirmed(同步腿;host 车道执行环境的家目录主张证不了,工厂在铸环境之前拒;零工作的拒;体 env.home_unconfirmed + 判官的拒句)": { attr: 409, since: "7.144.0" },
578
603
  "POST /v1/sessions/:id/sync/import#identical_repush_blob_missing(体 missing_blob)": { attr: 422, since: "7.136.0" },
579
604
  "PATCH /v1/sessions/:id#title_no_visible_character(体 request.field_invalid)": { attr: 400, since: "7.136.0" },
580
605
  "POST /v1/sessions/:id/sync/import#title_no_visible_character(Phase A 体的 title;体 request.field_invalid)": { attr: 400, since: "7.136.0" },
581
606
  "POST /v1/sessions/:id/sync/import#anchor_outside_declared_entries(Phase A 体的 anchors[i]:entryId 不在 entryIds 里 / 元素不是带串型 eventId 与 entryId 的对象;体 request.field_invalid)": { attr: 400, since: "7.141.0" },
582
- "POST /v1/sessions/:id/fork#stamped_archive(DB_BACKEND=local;源存档仍带更早版本写下的属主戳;零写;体 conflict + 带戳存档的固定句)": { attr: 409, since: "7.141.0" },
583
- "POST /v1/sessions/:id/sync/import/:stagingId/entries#stamped_archive(DB_BACKEND=local;提交落在仍带属主戳的存档上;行净零写;体 conflict + 带戳存档的固定句)": { attr: 409, since: "7.141.0" },
607
+ "POST /v1/sessions/:id/fork#stamped_archive(DB_BACKEND=local;源存档仍带更早版本写下的属主戳;零写;体 conflict.session_archive_stamped + 带戳存档的固定句)": { attr: 409, since: "7.144.0" },
608
+ "POST /v1/sessions/:id/sync/import/:stagingId/entries#stamped_archive(DB_BACKEND=local;提交落在仍带属主戳的存档上,改日志的各形推送同答;行净零写;体 conflict.session_archive_stamped + 带戳存档的固定句)": { attr: 409, since: "7.144.0" },
609
+ "POST /v1/sessions/:id/sync/import#stamped_archive(DB_BACKEND=local;第一阶段按 id 分类出 fork / stale 且没带同意,目的端存档仍带属主戳;不开暂存、不拿租约、不写存档;体 conflict.session_archive_stamped + 带戳存档的固定句,不带 relation)": { attr: 409, since: "7.145.0" },
584
610
  "POST /v1/tasks|/v1/tasks/stream|/v1/runs#images_url_credential(新提交;体 request.field_invalid + field images[i].url + reason url_userinfo|url_credential_param)": { attr: 400, since: "7.136.0" },
585
611
  "POST /v1/tasks|/v1/tasks/stream|/v1/runs#a2aPeers_malformed(新提交;列表不是数组 / 条目不是对象 / 键值判不出形;体 request.field_invalid)": { attr: 400, since: "7.136.0" },
586
612
  "POST /v1/tasks|/v1/tasks/stream|/v1/runs#a2aPeers_unknown_key(新提交;词表外的键;体 request.body_shape + unknownKeys)": { attr: 400, since: "7.136.0" },
@@ -638,6 +664,26 @@ export const SELF_MINTED_WIRE = {
638
664
  "GET /v1/capabilities/mcp#engine_name_collision(中心声明两台归一后同挂一个工具命名空间前缀,引擎在任何传输被触碰之前整集拒;体 config.mcp_server_name_collision + 引擎原句;与同步提交腿同一张码 → 状态表)": { attr: 409, since: "7.143.0" },
639
665
  "POST /v1/tasks#engine_name_collision(同步腿;同一份声明集被引擎整集拒;零工作的拒;体 config.mcp_server_name_collision)": { attr: 409, since: "7.143.0" },
640
666
  "POST /v1/rules/local-import/prepare#tightening_write_failed(一条收下的 deny / ask 写不进店;这一批的放行扣下、没有票;体 state.rule_write_failed + committed,同 POST /v1/rules)": { attr: 503, since: "7.143.0" },
667
+ "POST /v1/rules/cc-import/redeem#member_refused(兑付走完、引擎的完整成员表里有被拒的成员;体 = 回执 { members, rev },那几行 outcome indeterminate + reason store_refused + detail 引擎原话;票用掉,同票再兑 404)": { attr: 200, since: "7.145.0" },
668
+ },
669
+ },
670
+ ruleImportReceiptKey: {
671
+ at: "POST /v1/rules/cc-import/redeem 200 回执顶层键(<键> → 在场律;与 POST /v1/rules/local-import/redeem 同形)",
672
+ members: {
673
+ members: { attr: "always", since: "7.145.0" },
674
+ rev: { attr: "always", since: "7.145.0" },
675
+ },
676
+ retired: {
677
+ "result(≤7.144.0 的 cc-import 回执:{ members: <引擎 RedeemedBatchMember 原形行:candidateIndex / behavior / rule / scope 对象 / status / alreadyRedeemed / dot>, rev })": { attr: "always", since: "7.46.0", until: "7.145.0" },
678
+ },
679
+ },
680
+ ruleImportReceiptMemberKey: {
681
+ at: "POST /v1/rules/cc-import/redeem 200 回执 members[] 行键(<键> → 在场律;与 POST /v1/rules/local-import/redeem 同形)",
682
+ members: {
683
+ key: { attr: "always; { behavior, rule, scope } — scope is the GET /v1/rules discriminated string (global | project:<root>)", since: "7.145.0" },
684
+ outcome: { attr: "always; persisted | no-op | indeterminate (refused reserved for a typed engine verdict bit, not minted)", since: "7.145.0" },
685
+ reason: { attr: "present-iff outcome indeterminate; store_refused", since: "7.145.0" },
686
+ detail: { attr: "present-iff outcome indeterminate; the engine's refusal sentence verbatim", since: "7.145.0" },
641
687
  },
642
688
  },
643
689
  memoryLayerSeatKey: {
@@ -904,6 +950,9 @@ export const SELF_MINTED_WIRE = {
904
950
  "SSE text_delta#delta": { attr: "live-hold:same-redactor-stream(pending-tail-from-arm-table);concat=segment-end-content;remainder-frame-without-eventId", since: "7.143.0" },
905
951
  "SSE reasoning_delta#delta": { attr: "live-hold:same-redactor-stream(pending-tail-from-arm-table);concat=segment-end-content;remainder-frame-without-eventId", since: "7.143.0" },
906
952
  "GET /v1/runs/:id/subagents/:handle/stream#reasoning_end.content": { attr: "whole-segment-for-late-subscriber", since: "7.143.0" },
953
+ "SSE text_delta#delta(文字段的状态跨文字块)": { attr: "segment-scoped-redactor-state;text_end=block-delivery-not-segment-close;block-end-as-ended-vs-whole-differs=live-as-ended+ledger-whole+hold-diverged+1", since: "7.144.0" },
954
+ "SSE text_end#content(接在同段前缀之后判)": { attr: "engine-block-content;judged-after-segment-prefix", since: "7.144.0" },
955
+ "GET /v1/runs/:id/events#text.text(段文本含只有 text_end 的块)": { attr: "segment-text=block-texts-concat;end-only-block=text_end.content", since: "7.144.0" },
907
956
  },
908
957
  },
909
958
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/server",
3
- "version": "7.143.0",
3
+ "version": "7.145.0",
4
4
  "description": "Sema Server — the server/API implementation layer for Sema, wiring core, registry, model providers, and cloud agent execution. Built on @sema-agent/core.",
5
5
  "type": "module",
6
6
  "license": "BUSL-1.1",
@@ -70,8 +70,8 @@
70
70
  },
71
71
  "dependencies": {
72
72
  "@modelcontextprotocol/server": "2.4.0",
73
- "@sema-agent/core": "7.61.0",
74
- "@sema-agent/settings-schema": "16.0.0",
73
+ "@sema-agent/core": "7.62.0",
74
+ "@sema-agent/settings-schema": "17.0.0",
75
75
  "e2b": "^2.28.0",
76
76
  "libsodium-wrappers": "^0.8.4",
77
77
  "mysql2": "^3.22.4",