@sema-agent/client-core 0.101.0 → 0.103.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 (125) hide show
  1. package/CHANGELOG.md +153 -0
  2. package/README.md +19 -11
  3. package/dist/adapt/toolCards.d.ts +4 -2
  4. package/dist/adapt/toolCards.js +22 -6
  5. package/dist/adapt.d.ts +1 -1
  6. package/dist/adapt.js +1 -1
  7. package/dist/adapter/downstream/eventToSdkMessage.d.ts +5 -1
  8. package/dist/adapter/downstream/eventToSdkMessage.js +26 -70
  9. package/dist/adapter/downstream/terminalToSdkResult.js +0 -1
  10. package/dist/adapter/downstream/wiringManifestView.d.ts +1 -0
  11. package/dist/adapter/downstream/wiringManifestView.js +141 -0
  12. package/dist/cloudConfigWireCaps.js +6 -3
  13. package/dist/compensations.js +1 -1
  14. package/dist/credentialPlaneCapability.d.ts +22 -0
  15. package/dist/credentialPlaneCapability.js +75 -0
  16. package/dist/deviceExecutorManagementCapability.d.ts +1 -0
  17. package/dist/deviceExecutorManagementCapability.js +3 -1
  18. package/dist/displayUntrusted.d.ts +8 -4
  19. package/dist/displayUntrusted.js +769 -96
  20. package/dist/engineErrorCodes.d.ts +1 -0
  21. package/dist/engineErrorCodes.js +3 -1
  22. package/dist/engineNoticeCodes.d.ts +26 -0
  23. package/dist/engineNoticeCodes.js +121 -12
  24. package/dist/engineRowRef.js +2 -0
  25. package/dist/errorSupplementRoles.js +1 -3
  26. package/dist/eventLeg.js +2 -1
  27. package/dist/fleet/fleetProjection.js +16 -10
  28. package/dist/gateOutcome.d.ts +20 -0
  29. package/dist/gateOutcome.js +89 -0
  30. package/dist/generated/engineAskFaceTables.js +2 -2
  31. package/dist/generated/engineFactTables.d.ts +6 -2
  32. package/dist/generated/engineFactTables.js +41 -1
  33. package/dist/generated/engineNoticeTables.js +18 -0
  34. package/dist/generated/settingsSchemaDefaultModel.d.ts +1 -1
  35. package/dist/generated/settingsSchemaDefaultModel.js +2 -2
  36. package/dist/generated/settingsSchemaFns.d.ts +15 -0
  37. package/dist/generated/settingsSchemaFns.js +25 -2
  38. package/dist/generated/settingsSchemaHooksClassifier.js +109 -29
  39. package/dist/generated/settingsSchemaMcpRequestEntry.d.ts +1 -1
  40. package/dist/generated/settingsSchemaMcpRequestEntry.js +213 -93
  41. package/dist/generated/settingsSchemaMcpServerName.d.ts +1 -0
  42. package/dist/generated/settingsSchemaMcpServerName.js +8 -0
  43. package/dist/generated/settingsSchemaOwnKeyRead.d.ts +1 -0
  44. package/dist/generated/settingsSchemaOwnKeyRead.js +172 -0
  45. package/dist/generated/settingsSchemaPlainJsonObject.d.ts +1 -0
  46. package/dist/generated/settingsSchemaPlainJsonObject.js +28 -0
  47. package/dist/generated/settingsSchemaSafetyMergeSpec.js +10 -7
  48. package/dist/generated/settingsSchemaTierWords.d.ts +1 -0
  49. package/dist/generated/settingsSchemaTierWords.js +7 -0
  50. package/dist/generated/settingsSchemaTypes.d.ts +3 -1
  51. package/dist/hitl/automaticAnswerVerdict.d.ts +1 -1
  52. package/dist/hitl/decisionConflict.js +11 -11
  53. package/dist/hitl/decisionRefusal.d.ts +1 -0
  54. package/dist/hitl/decisionRefusal.js +4 -2
  55. package/dist/hitl/editedRuleTextPrecheck.d.ts +1 -0
  56. package/dist/hitl/editedRuleTextPrecheck.js +26 -1
  57. package/dist/hitl/persistedRulesWire.js +1 -0
  58. package/dist/hitl/planReviewWire.d.ts +2 -1
  59. package/dist/hitl/planReviewWire.js +8 -12
  60. package/dist/hitl/sessionPolicyDeliverable.d.ts +0 -1
  61. package/dist/hitl/sessionPolicyDeliverable.js +0 -5
  62. package/dist/hitl/sessionPolicyWire.js +1 -1
  63. package/dist/hitl/toolApprovalWire.d.ts +18 -6
  64. package/dist/hitl/toolApprovalWire.js +9 -4
  65. package/dist/i18n/messages.en.d.ts +43 -0
  66. package/dist/i18n/messages.en.js +44 -1
  67. package/dist/i18n/messages.zh.js +46 -1
  68. package/dist/index.d.ts +11 -2
  69. package/dist/index.js +7 -1
  70. package/dist/inheritEnvWire.d.ts +1 -0
  71. package/dist/inheritEnvWire.js +8 -5
  72. package/dist/interactiveHalt.d.ts +3 -1
  73. package/dist/interactiveHalt.js +2 -0
  74. package/dist/interactiveInterrupt.d.ts +2 -0
  75. package/dist/interactiveInterrupt.js +15 -0
  76. package/dist/mcpEngineLeg.d.ts +3 -0
  77. package/dist/mcpEngineLeg.js +4 -1
  78. package/dist/mcpLiveness.d.ts +18 -0
  79. package/dist/mcpLiveness.js +48 -1
  80. package/dist/mcpReconnect.d.ts +3 -0
  81. package/dist/mcpReconnect.js +6 -0
  82. package/dist/mcpStatusSupersetKeys.js +24 -1
  83. package/dist/mcpWireCaps.d.ts +2 -3
  84. package/dist/mcpWireCaps.js +9 -8
  85. package/dist/memoryEntriesWire.d.ts +35 -1
  86. package/dist/memoryEntriesWire.js +110 -14
  87. package/dist/modsFace.d.ts +8 -0
  88. package/dist/modsFace.js +63 -0
  89. package/dist/ownKey.d.ts +1 -0
  90. package/dist/ownKey.js +15 -0
  91. package/dist/postureKnob.js +1 -1
  92. package/dist/prepareRefusal.d.ts +0 -1
  93. package/dist/prepareRefusal.js +0 -3
  94. package/dist/printToolResultFrame.js +1 -1
  95. package/dist/promptProfileWireCaps.d.ts +1 -3
  96. package/dist/promptProfileWireCaps.js +2 -2
  97. package/dist/request/printNotification.js +1 -1
  98. package/dist/request/taskRequest.d.ts +22 -1
  99. package/dist/request/taskRequest.js +126 -10
  100. package/dist/retryStatus.d.ts +13 -1
  101. package/dist/retryStatus.js +20 -5
  102. package/dist/seam.js +1 -1
  103. package/dist/seatContract.d.ts +22 -6
  104. package/dist/seatContract.js +45 -6
  105. package/dist/sessionBackground.d.ts +165 -0
  106. package/dist/sessionBackground.js +781 -0
  107. package/dist/sessionBackgroundHandoff.d.ts +54 -0
  108. package/dist/sessionBackgroundHandoff.js +321 -0
  109. package/dist/sessionMap.js +4 -1
  110. package/dist/sessionMemoryErase.js +24 -2
  111. package/dist/settingsCredentialKeyPaths.js +2 -17
  112. package/dist/thinkingLatch.d.ts +69 -0
  113. package/dist/thinkingLatch.js +255 -0
  114. package/dist/thinkingLatchWords.d.ts +7 -0
  115. package/dist/thinkingLatchWords.js +4 -0
  116. package/dist/toolResult.js +2 -24
  117. package/dist/turnFailurePresentation.js +8 -1
  118. package/dist/wireFailureShape.d.ts +12 -1
  119. package/dist/wireFailureShape.js +58 -24
  120. package/dist/wireRefusalCopy.d.ts +0 -3
  121. package/dist/wireRefusalCopy.js +0 -17
  122. package/docs/INTEGRATION-CLIENTS.md +458 -14
  123. package/package.json +5 -5
  124. package/dist/argvFlagValue.d.ts +0 -8
  125. package/dist/argvFlagValue.js +0 -37
package/CHANGELOG.md CHANGED
@@ -49,6 +49,159 @@
49
49
  > 挡住 ⇒ 本批把它机械化——④a0 对 `pending` 行**要求段头已是日期形**(`(未发布)` 直接红),阶段一
50
50
  > commit 漏转在发布前就红,不再靠人记。
51
51
 
52
+ ## 0.103.0(2026-10-29)
53
+
54
+ > 主题:一次重锚到引擎 7.59.0(开发依赖 `@sema-agent/core` / `@sema-agent/mods-kernel` 7.59.0 · `@sema-agent/sdk` 28.0.0 · `@sema-agent/settings-schema` 14.8.0;生成表按新上游重生成)接入文档 **§131 PK-1 – PK-10** —— MCP 授权失败记录一只读口四处过境 · 两只新通知事实读器 · 状态帧等待两位 · 工具结果行改参记录 `_sema_rewrite` 与改参句 · 服务器名 `remote-` 前缀律 · 决断拒收「行完整性」只认正证据 · 请求键 `promptProfile` 换布尔 `promptLean`(🔴 型面 BREAKING)· 三处退役(RL-300 / RL-301 / RL-302)· 引擎 7.59.0 的抹除证明 v2 与整工具规则候选读得出 · 服务端 7.137.0 随附件 **§131 PK-10**(求助无门出路清单 · `invalid_session` 并进会话坏档判定 · 规则编辑文本修剪单铸点 · 计划审阅决断体带门身份 · 凭据平面读口 · 可收形 / 设备直达入口 / `inheritEnv` 拒因三位)· 结果帧成功臂不再带 `errors[]`(🔴 行为变,**§131 LG-1**)· 六只派生窄视图退出根入口(🔴 型面 BREAKING,**§131 LG-2**)。peer 地板不动。
55
+
56
+ ### Changed
57
+
58
+ - **🔴 型面 BREAKING:请求键 `promptProfile`(两词 `simple` / `classic`)换布尔 `promptLean`;映射口 `promptProfileFromEnv` → `promptLeanFromEnv`**(CC-1044;**§131 PK-7**;退役登记 RL-300):`TaskRequestInput.promptLean?: boolean`(`false` = 完整长形;缺席 = 目录缺省),车道表那一行同名换掉;`promptLeanFromEnv(env)` 只答 `false`(环境词 `classic`,大小写与首尾空白归一)或 `undefined`(其余一律不带键)。型 `PromptProfile` 与旧映射口退出根入口,零别名。按名调用旧口 / 入参写 `promptProfile` 的宿主编译红,改调新口 / 新键。🔴 行为:`promptLean` 只有服务端 7.137.0 起受理(7.136.x 及更早的服务端对它答 `400 request.body_shape`);宿主只在用户显式选了长形时才交这一键。**升级顺序**:服务端先升到 ≥ 7.137.0,再放用户选 `classic`(先升本包而服务端仍旧 ⇒ 选了 `classic` 的用户每一单都被拒)。
59
+ - **🔴 型面 BREAKING:根入口停转口 `RuleSuggestion`**(CC-1044;**§131 PK-7**;退役登记 RL-302):上游类型包删了这只退役前身型(规则候选只有 `RuleOffer` 一代,本包读口自 0.93.0 起只读 `ruleOffers`)。从本包引这只型的宿主编译红,改引 `RuleOffer`。
60
+ - **fleet 行 wire 键清单**(CC-1044;**§131 PK-7**;退役登记 RL-301):task 行清单去掉幻影键 `queuedCount`(上游类型删了声明;视图自 0.95.0 起就不带它);workflow 行清单加 `errorCode` / `parked` 两键(登记为「设计上不投影」—— 两者折进运行状态那一只判法,视图键不变)。对清单做精确等值断言的端须改断言。
61
+ - **决断拒收 409 分码:`row_integrity` 只认正证据**(CC-1045;**§131 PK-5**;🔴 行为变,只对「两词都缺」的拒收可见):`approval_binding_mismatch` 而没有 `field` 时,只有拒收体带了 `reason`(行完整性词,读法与 `field` 同:`extra` 优先、顶层兜底、只读自有数据位、非空串)才判 `row_integrity`;两词都缺 ⇒ 不给词(修前从缺席推断为坏行,把可改正的载荷拒读成「那一行坏了」)。拒收体的 `field` / `reason` 与机读袋各只读一次,分码出自同一份读数。🔴 射程:服务端 7.132.0 起才把拒收体的 `reason` 过境(支持底线 7.129.1 – 7.131.x 不带),引擎 7.59.0 起 `bound_input_hash_missing` 那一形的坏行才带 `reason` —— 在这些组合上,真坏了的那一行也拿不到 `row_integrity`,按一般拒收出句(按分码走「坏行」路的端在那里按一般绑定不符处置;见 Known limitations)。
62
+ - **MCP 服务器名 `remote-` 前缀律**(CC-1044;**§131 PK-8**;🔴 行为变,只对以小写 `remote-` 起头的名字可见):名字用法判官改用配置契约 14.8.0 的 MCP 服务器名判官;小写 `remote-` 起头的名字(含恰为 `remote-`)保留给已连接设备提供的 MCP 服务器 —— 本地整表口与云腿同拒(本地成因新词 `name_reserved`,带「改名」出路句;云腿成因词不变),大小写异形(`Remote-x`)照收、不算设备名;首尾空白先答空白。`McpConfigDropReason` / `McpServerNameUnusableReason` 各多一词 `name_reserved`(对两型穷举的端补一臂)。
63
+ - **中心配置腿承运 MCP 条目的 `startupTimeoutMs`**(CC-1044;**§131 PK-8**;🔴 行为变,只对中心配置里写了这一键的条目可见):配置契约 14.8.0 起中心配置条目也声明这台服务器的启动上限;`cloudMcpToSpecs` 与本地腿 `mcpConfigToSpec` 同一读法 —— 入口读一次,在场就原样上体,不判、不钳(值形判官在引擎);读就抛 ⇒ 这一台记 `entry-unreadable`。修前中心下发的上限被剥掉、这一台按缺省上限起。可达性:只在中心配置下发的条目原样带着这一键时生效(配置契约 14.8.0 起条目声明它;下发方是否原样透传本包不判);服务端请求面受理这一键。
64
+ - **请求面 MCP 条目嵌套位读不出时降级而不整台丢**(配置契约 14.6.0 起的请求面快照读法,随换钉到达;**§131 PK-8**):`env` / `headers`(整个或成员值)/ `principalHeader` 是检视不了的外来值(已撤销代理等)⇒ 与该位的任何非法值同律:这一台照上、丢该位、降级行点名该位(句子说「could not be inspected」);`args` 整个读不出仍判整份传输坏。修前这几形整台 `transport_invalid`。同批:传输位不是普通数据对象(类实例等)⇒ 这一台判传输坏;`principalHeader` / `assertionHeader` 只在原型链上 ⇒ 不读(只认自有位),并记一条读数问题。
65
+ - **钩子设置分类随配置契约 14.8.0 重生成**(**§131 PK-8**;🔴 行为变,只对非 JSON 形的设置对象可见):别的运行环境(realm)里造的普通对象按普通对象读;形状读不出的值(已撤销的代理)与靠迭代协议装内容的对象(`Map` / `Set` 等)按最严处置(当作可能带护栏标记);钩子条目与钩子块上的 `type` 只认自有位(原型链上的不算)。从 JSON 解析出来的设置零变化。
66
+ - **回执段 mod 行带 `provenance`**(CC-1045;**§131 PK-6**):`wiring_manifest.mods[]` 两形行视图(`WiringManifestModMountedView` / `WiringManifestModRefusedView`)多可选位 `provenance`(宿主给这条注册的出处标签,原串;非空串才在场)。
67
+ - **`invalid_session` 并进会话坏档判定**(CC-1044 ②;**§131 PK-10**;🔴 行为变,只对这一码可见):服务端 7.137.0 起,存着的会话日志父链走不通(悬空父 / 成环 / 叶子不在日志里)答 `invalid_session`(同步口 500、流式 `done` 终局、后台 run 行)。`isCorruptSessionCode` 认 `corrupt_session` / `invalid_session` 两词,三处载体读口、分诊位 `sessionUnreadable`、失败呈现(不给重试)、终局行与结果帧 `errors[0]` 的补句都随它,与 `corrupt_session` 同一句;码原样(`_sema_error_code`)。修前这一码走通用 5xx、给重试。导入面的 `422 invalid_entries`(调用方交来的日志坏)不认。
68
+ - **计划审阅决断体带门身份 `checkpointId`**(CC-1044 ⑥;**§131 PK-10**;🔴 行为变,只对报 `planReviewCheckpointId: true` 的服务端可见):决断时门身份读得出(宿主递了停驻结果)且这台引擎的能力位恰为 `true` ⇒ 体末多 `checkpointId`(去键重发的那一发照带)。能力位读哪台引擎的:已装目标形读目标地址上的;注入连线形读连线自己给的 `capsBaseUrl` 上的(不给 ⇒ 不带,不借已装目标的能力);门已换 ⇒ 服务端答 `409 approval_stale`、任何状态不动,结局落「没生效」。位缺席 / 非真 / 没观测 ⇒ 体逐字节同旧。自己给计划审阅请求签直连门证明的宿主须把这一位签进信封扩展对象。
69
+ - **计划审阅注入连线读 `capsBaseUrl` 就抛 ⇒ 连线不可用**(CC-1044 ⑥;**§131 PK-10**;🔴 行为变,只对给了取值器抛或严格代理连线的宿主可见):这一位与整族注入连线同读,读就抛的连线立卡不出(`armPlanReviewApproval` 答 `false`)、决断不发(「没送出」)。修前这一位一次也不读、决断照常送出。
70
+ - **`inheritEnv` 拒体读口认领请求上的任一值**(CC-1044 ⑨;**§131 PK-10**;🔴 行为变,只对请求带的不是 `"all"` 的拒可见):请求上真带了 `inheritEnv`(任一值,含 `"scrub"` 与词表外的值)而拒体机读位点名了这一项 ⇒ `inheritEnvRefusalFromError` 答肯定读数并带 `reason`(值形被拒的 `unknown_word` / `not_a_string` 也读得到),失败呈现出肯定句;拒体没有机读位时仍只对 `"all"` 答条件句。肯定句首段改说这一项的受理规则(只收缺省与整份环境两种取值,整份环境另要求工具跑在引擎自己那台机器上且请求属于某个会话),不再断言这次请求要了整份环境。修前请求带的不是 `"all"` 一律答 `null`。
71
+ - **规则编辑文本提交前修剪**(CC-1044 ⑤;**§131 PK-10**;🔴 行为变,只对带外缘空白的编辑可见):活卡编辑臂上 wire 的文本与预检口交给判官的文本同经 `trimEditedRuleText` —— 修掉前导 / 尾随空白与工具名和 `(` 之间的空白,内部空白不动。修前这几形得 `400 request.body_shape`(服务端 7.137.0 起)。
72
+ - **引擎帧三臂登记**(**§131 PK-6**):`approval_complete` / `session_titled` 两帧投影口有痕丢弃(`dropped` / `unsupported_arm`,修前落 `unknown_arm`),`cross_boundary_taint` 帧归「不在本切片」组(`none` / `not_in_slice`,修前同落 `dropped` / `unknown_arm`);HITL 帧集多 `approval_complete`(事件腿同族登记上下文后照放)。用户可见零变化;按丢弃词统计或告警的宿主会看到这三帧的词变了。
73
+
74
+ - **🔴 结果帧成功臂不再带 `errors[]`**(CC-1088;**§131 LG-1**;行为变,只对 `subtype: 'success'` 且 `is_error: true` 的结果帧可见):0.101.0 起,判型答 CC 成功臂的未完成终局(末行是 API 错误行或模型正文 —— 经 `runStream` 的失败 / 被拦 / 取消 / 结局不明都落这一臂)除必填键 `result` 外多带一份原因文本 `errors[]`,是给「按 `errors[0]` 出失败句」的端换读 `result` 的过渡一版(CC 成功臂没有这一键)。本版删这一键:`result` 不变(末行正文;读不出时是原先 `errors[]` 逐条换行拼接的同一串,同一只凭据网),错误臂的 `errors[]` 不变(CC 错误臂成员)。**改法**:成功臂的失败句读 `result`,错误臂读 `errors[0]`(通用写法 `frame.errors?.[0] ?? frame.result`);只判成败的端(读 `is_error` / `terminalReasonForResult`)零变化。终端的两处 `errors` 读点只读错误臂 / 无 `result` 的兜底形,不受影响;网页端 / 桌面端判成败读 `is_error`,零读点(推断:本机 origin/main 快照)。🔴 例外一形:停驻 ∧ 本流末行是模型正文 ⇒ 帧走成功臂,`-p` 停驻出路句(`Turn suspended awaiting …`)此前只在这个 `errors[0]` 上,本版起这一形上没有承载键(KL-1031;见 Known limitations)。
75
+
76
+ - **🔴 型面 BREAKING:六只派生窄视图退出根入口**(CC-843 / CC-836;**§131 LG-2**;退役登记 RL-179 · RL-192 – RL-196 执行,门钉不复活;公面运行期导出 −6):`hookMatcherRefusalFromError`(= 族读口 `settingsHooksRefusalFromError(err)?.matcher`;型 `HookMatcherRefusal` 留作 `matcher` 位的型)· `mcpConfigsToSpecs`(= `projectMcpConfigs(servers).specs`;坏形条目的丢弃与降级行读同一口的 `dropped` / `degraded`)· `legacyToolNameFailureNoteOf` 与 `imageInvalidFailureNoteOf`(各 = `prepareRefusalNoteOf(code)` 在 `config.legacy_tool_name` / `config.image_invalid` 上的答案,句子逐字不变;码从 `prepareRefusalCodeOf` 取)· `userAttachmentRefusalContent`(= `prepareRefusalNoteOf('config.user_attachment_invalid', { index })`)· `userInvokedSkillRefusalContent`(= `prepareRefusalNoteOf('config.user_invoked_skill_unknown')`)。六只自 0.100.0 起都是同一张「码 → 句」表或同一份投影的派生窄视图(同一只抛出物两口同答),三端生产源已不读。**编译红必改**:按名 import 这六名的宿主(含测试夹具)改读上面的单口(终端测试侧读点:`enginePinCapsReadings.test.ts` · `sessionPolicyWire.test.ts`;网页端测试侧:`run-bff-mcp-projection-test`、差分基线夹具;随升本版同窗换读)。`errorSupplementRoleOf` 对后两只句口的 `replacement` 声明随读口退出(它以读口函数本身为键):改读 `prepareRefusalNoteOf` 的宿主按未声明处理(`supplement`,机器行照旧在前)。
77
+ - **登记物到期收口**(**§131 LG-2**;不上公面,除上一条的六名):退役登记里到期的 19 行逐行处置 —— 六行按上一条执行退役;十一行(RL-171 · RL-184 · RL-185 · RL-220 – RL-226 · RL-290)消费端三树仍钉本包 0.100.0、读点未清 ⇒ 按「消费端删掉包装之后的下一个本包版本」续到 0.104.0(读点坐标与承接票写在登记行里,首次承诺窗留史、只追加);RL-227(引擎通知渲染器的不拉 `node:*` 出口)与 RL-251(停驻门卡词存量行过窗)前提未成立,未改窗,到期复核照旧挂着。
78
+ - **来源词表 `POSTURE_SOURCE_WORDS` 加 `lane`(四词 → 五词)**(**§131 PK-11**;🔴 公面值变):服务端 7.133.0 起部署旋钮与读面档位的来源多一词 `lane`(从隔离型执行车道 —— e2b / k8s / local-docker —— 派生的缺省值;类型包 28.0.0 `PostureSource` 与 spec 闭 enum 同序:`env` · `center` · `lane` · `posture` · `engine-default`)。读口本就按开集原样透传 `source`(修前读数上已能见到 `lane`),变的是这张优先序表:`lane` 落在 `center` 与 `posture` 之间;「运维表态过吗」判官 `postureSourceIsOperatorPinned('lane')` 答 `false`(只 `env` / `center` 算)。对这张表做长度 / 逐元素断言的端改断言。
79
+
80
+ ### Added
81
+
82
+ - **MCP 授权失败记录读口 `readMcpAuthorization(row)` 与四处过境**(CC-1045;**§131 PK-1**;根入口运行期 +4〔读口 + `MCP_FAILURE_KINDS` / `MCP_AUTHORIZATION_REASONS` / `MCP_FAILURE_UNAUTHORIZED`〕,型 +2):引擎 7.59.0 起 MCP 端点答 401(或带 `insufficient_scope` 的 403)记为失败类 `unauthorized` + `authorization: { reason, authorizeUrl?, resourceMetadataUrl? }`(不再是 `http_status` + `httpStatus`)。读口三读数:`absent`(自有键不在)/ `unreadable`(在场而读不出:非记录、访问器、读抛、`reason` 不是非空串)/ `record`(只读自有数据位、开集键不透传、冻结)。过境四处:接线回执 `mcp[]` 行视图(`authorization` 或 never-false 位 `authorizationUnreadable: true`)· 引擎腿连接读口 `mcpEngineLegConnectionOf`(失败臂带同两位;原始行与行视图两种入参同答)· 重连回执 `status` 视图 · `-p` 机读输出 `mcp_status` 行的超集键 `_sema_engineLeg`(引擎腿读数的冻结拷贝:原始值位逐位拷,授权记录经同一只读口拷,记录 / 读不出 / 缺席三形与连接读口同答)。`authorizeUrl` 是部署座给的可信地址;`resourceMetadataUrl` 是端点自述、不可信,只供展示,绝不当跳转目标。
83
+ - **两只通知事实读器**(CC-1045;**§131 PK-2**;根入口运行期 +2):`readMcpAuthorizationRequired(notice)`(`mcp.authorization_required`:`server` / `reason` / `sessionId` / `runId` 必填,`authorizeUrl` 可选,主体名不进视图)· `readContextImageRemoved(notice)`(`context.image_removed`:摘掉的图张数 `images` 正整数 + 两只 id);两码挂进事实读器派发表。通知码册随引擎 100 → 106。
84
+ - **状态帧等待两位**(CC-1045;**§131 PK-3**;根入口运行期 +1〔`BRAIN_STATUS_WAIT_SEGMENTS`〕,型 +1):`sleptMs`(宿主挂起结束的那次重试等待,有限非负数;`0` 是合法读数)/ `waitSegment`(等首 token 的哪一段,开集原样;上游两词 `response_headers` / `first_token`)经 wire → 内部臂 → 重试状态两层白名单都到;坏形只丢自己(两位在帧上只认自有数据位,取值器不执行、读抛只丢那一位);座位格对 `sleptMs` 同一条「有限非负」(负数 / 非有限不合座)。
85
+ - **工具结果行改参记录 `_sema_rewrite` 与改参句**(CC-1045;**§131 PK-4**;根入口运行期 +2〔`toolInputRewriteOf` / `rewriteExtensionNamesOf`〕,型 +3;零新臂):引擎 `tool_end.rewrite`(`{ by: 作者[], input }`)原样上信封超集键 `_sema_rewrite`(作者按采纳序、`input` 原值;`input` 的容器层数上限与引擎冻结参数的界同为 256 层,引擎铸的记录恒在界内;`input` 缺席或读不出 —— 访问器、非纯数据、比这一界还深,只可能来自宿主自拼的帧 —— 只丢 `input`,作者与改参句照出);作者里含扩展(`kind: "extension"`)⇒ `modCardSentence` 出改参句「Arguments changed by {by} before the call was let through」/「参数在放行前被 {by} 改过」(扩展名按首次采纳序去重;只有策略 / 审批者改过 ⇒ 记录过境、零句)。这句话不据记录说「已运行」:引擎 7.59.0 起「放行后自拒」(`gate` 放行 ∧ `isError` ∧ `notExecuted`)可与改参记录并存,句子只说谁改了参数。代答格与改参记录同帧 ⇒ 代答句优先。消息目录 +1 键 `config.mods.rewrite.inputBy`。
86
+ - **门拒臂 `extension?`**(CC-1045;**§131 PK-6**):`denied` 门视图带拒这只调用的那张扩展注册的名(引擎在 `classic.PreToolUse` / `tool.check` 站拒时记下;在场 ⇔ 拒者是钩子且注册名已知)。
87
+ - **规则匹配读数 `tool` 一键 · 会话策略记录元键 `operatorRules`**(**§131 PK-6**):持久规则的匹配说明多「整个工具匹配」一形(消息目录 +1 键 `rules.match.tool`);会话策略记录的元键多运维规则一位(不当规则桶读)。
88
+ - **询问类 `write_protection_on_disk`**(**§131 PK-9**):成因句与强制词 `write_protection` 同句(词表来自引擎生成物)。
89
+ - **结构化卡类型 `bash_self_kill_refused`**(**§131 PK-6**):Bash 工具拒自杀式模式 kill 的卡类型进结构化卡白名单(工具错误自带句子,按任一条 Bash 错误渲染)。
90
+ - **求助无门通告的出路清单**(CC-1044 ①;**§131 PK-10**;根入口运行期 +1〔`askUnresolvableRemedyContent`〕,型 +1〔`AskUnresolvableRemedyView`〕;消息目录 +2 键):`readAskUnresolvable` 视图多可选位 `remedies`(`approver` / `permission_mode` + `value` / `disclosedOn`;kind 闭集取引擎生成表,集外 kind 与坏员只丢自己,读空不铸,读抛只省这一位);句口 `askUnresolvableRemedyContent(remedy, lang?)` 按 kind 一句(`permission_mode` 句点名模式词并说明每次放行都标在那次工具调用上;呈不呈由宿主按本部署允不允许那一档定)。
91
+ - **成员 git 凭据平面读口 `observedSandboxGitCredentialPlane(baseUrl?)`**(CC-1044 ⑧;**§131 PK-10**;根入口运行期 +1,型 +2):能力位 `credentialPlane.sandboxGit` 五态 —— 没观测 / 没报(服务端 < 7.137.0;不说成 `off`)/ 读不出(一行坏即整只读不出)/ `off` + 关因原词(开集)/ `on` + 逐 origin 行。
92
+ - **三只读数各多一位**(CC-1044 ④ ⑧ ⑨;**§131 PK-10**):决断拒收读数 `acceptableForm`(只在 `409 resume.constraint_rejected` 且体上有这一位时;值不判形、原样交出)· 设备车道读数 `relayUrl`(非空串才在)· `inheritEnvRefusalFromError` 读数 `reason`(只在机读位点名 `inheritEnv` 时读;开集原样,句子不按拒因分)。
93
+ - **规则编辑文本修剪口 `trimEditedRuleText(text)`**(CC-1044 ⑤;**§131 PK-10**;根入口运行期 +1):自己拼编辑体的宿主经它修剪(幂等;非串原样返回)。
94
+ - **计划审阅注入连线 `PlanReviewWire` 多可选位 `capsBaseUrl`**(CC-1044 ⑥;**§131 PK-10**;型面只增):与整族注入连线同一位(`PlanReviewWire` 现继承 `EngineWireInjection<PlanReviewWireClient>`),值是宿主 `kickEngineCapsProbe(baseUrl, …)` 用的那把地址;决断腿只在这把键上读 `planReviewCheckpointId`。0.94.0 删掉的同名位以这一形回来。
95
+
96
+ ### Fixed
97
+
98
+ - **MCP 授权「在场读不出」不再在连接读口 / 重连视图上折成缺席**(CC-1045;**§131 PK-1**):同一行上的授权记录读不出时,两处都立 `authorizationUnreadable: true`,不把「引擎送了一份读不懂的」说成「没要授权」。
99
+ - **授权记录读口在已撤销的代理上不抛**(**§131 PK-1**):行本身或 `authorization` 位是已撤销的代理时,`readMcpAuthorization` 答 `unreadable`(修前形判在代理上抛,连接读口随之抛出)。
100
+ - **`mcp.authorization_required` 的 `authorizeUrl` 只认自有位**(**§131 PK-2**):原型链上的同名值不进视图(它是可信跳转地址,宿主自拼对象的继承值不能冒充部署座给的地址)。
101
+ - **两只确定性读面码不再给重试**(**§131 PK-10**):`approvals.read_corrupt` / `workflow.journal_incompatible` 落进失败呈现时与类型包重试器同判(不给原样重试)。
102
+ - **重试状态映射口每位读一次**(**§131 PK-3**):`waitSegment` 与 `providerCondition` / `providerConditionSource` 判形与落位读的是同一个值(修前判一次、落位再读一次)。
103
+ - **通告事实派发口 `readEngineNoticeFacts` 在已撤销的代理上不抛**(**§131 PK-2**):形判移进保护边界,与各只直读器对同一入参同答缺席(修前派发口抛 `TypeError`)。
104
+ - **读回的会话规则记录原样当 `prior` 交回不再抛**(**§131 PK-6**):服务端 7.135.0 起读回体带运维规则位 `operatorRules`;修前它被当成表外键,`tightenedSessionRules(prior, add)` 抛 `TypeError`(收紧后的规则写不回)。现按元键放过,写回体只带规则桶、不回送它。
105
+ - **持久规则匹配词 `tool` 有了说明句**(**§131 PK-6**):治理行「匹配形」一列对整工具规则出「whole-tool match (every call to the tool)」/「整个工具匹配(这个工具的每一次调用)」(修前落「a match form this build does not know」)。
106
+ - **决断拒收 409 的「行完整性」要求 `field` 真缺席**(**§131 PK-5**):`field` 在场而读不出(非串 / 空串 / 访问器,或机读袋读不出)不再当缺席,不据它判 `row_integrity`;值为 `undefined` 的自有键仍按缺席(类型包失败类在构造里把体上没有的位照样落成自有键)。
107
+ - **抹除证明 v2 读得出**(**§131 PK-10**;🔴 行为变,只对引擎 7.59.0 起的抹除可见):引擎 7.59.0 起抹除证明换 v2 信封(去掉每一处文件名身份 `slug`、残留表换成载体表;服务端 7.138.0 原样下发)。读口 `readMemoryEraseReceipt` 认 v1 / v2 两版,3 及以上照拒(`unsupported_version`)。修前 v2 一律判「版本不认得」:每一次成功抹除都落「收执读不懂」(会话抹除口 `receipt_unreadable`、抹除动词 `result_unreadable`),用户看到的是「没法确认抹了没有」。
108
+ - **v2 已抹除行的绑定不再读成 `null`**(**§131 PK-10**;🔴 型面):v2 的 bound 臂只带 `scope`,读成 `{ state: 'bound', scope }`(不编文件名身份;`slug` 在场则须非空串,原样带出);v1 的 bound 臂照旧要求 `slug`(普通 JSON 收执逐字照旧;只在原型链上的 `slug` 不再采信)。`MemoryErasedRow.binding` 的型由类型包的 `MemoryErasedBinding`(v1 形,`slug` 必选)改为本包读数型 `MemoryErasedBindingReading`(`slug` 可缺;由类型包型派生,退役登记 RL-311)。修前 v2 的每一条 bound 行读成 `null`(这一格读不出)。
109
+ - **抹除结果「部分」不再把残留记录说成条目没删**(**§131 PK-10**;🔴 行为变 + 型面,只对引擎 7.59.0 起的抹除可见):v2 收执的「部分」可以是条目全删了、只剩几类引用它们的存储记录没确认清掉(如引擎成文重放也清不掉的证据绑定行)。读口 `readMemoryEraseReceipt` 的读数多两位:`residuals`(残留载体表:八类逐类「删了几份 / 还剩几份」或「查不了」,加 `replay` / `propagation` 两词;v1 或表读不出 ⇒ `null`)与 `partialCause`(「部分」的成因三态:有条目没删成 / 条目已删只剩残留记录〔带类清单〕/ 判不出;「已抹除」⇒ `null`)。会话抹除结局按成因出三句:原句「some memory entries … were not erased yet」只给真有条目没删成的那一形;条目已删的那一形说「每一条都已抹除或早已不在,另有 N 类引用它们的存储记录没确认清掉,重发也未必清得掉」;判不出的那一形不说条目没删。修前一切「部分」都说条目还没删。
110
+ - **决断拒收分码判官的直接入口对机读袋只取一次**(**§131 PK-5**):不传协议名读数直接调 `decisionConflictOf` 时,协议名判型与拒体词位共用入口那一次袋读数(修前两处各读一次,随读变值的代理能让「行完整性」读成别的词)。
111
+ - **审批卡上「不再询问这个工具」的规则候选读得出**(**§131 PK-6**;🔴 行为变 + 🔴 型面):引擎 7.59.0 给没有规则文法的工具铸整工具候选(`match: "tool"`、`command` 为空串;服务端照放)。候选读口 `readRuleOffers` 的匹配词改判引擎的持久规则匹配词闭集(构建期生成表;类型包至 28.0.0 的候选匹配词表 `RULE_OFFER_MATCHES` 少 `tool`,是它的子集),`command` 空串合形(缺席 / 非串照丢)。`RuleOfferReading` single 臂与 batch `command` 成员的 `match` 型改为引擎闭集词(多 `tool`)。修前这一形整条丢掉,卡上那一格消失。
112
+ - **v1 呈卡投影读得出引擎卡词 `approvalCard`**(CC-981;**§131 PK-11**;🔴 行为变 + 型面加性):服务端 7.136.0 起 `approval_request` 帧的卡(活铸帧与断线重放帧同一份)带引擎卡词 `card.approvalCard`(与活卡帧顶层同一次读定;类型包 28.0.0 卡键锚第 23 员)。`approvalCardFactsOfV1(card)` 经与活卡帧腿同一把窄读 `readApprovalCardWord` 读它:引擎卡词原样上卡;表外词 / 大小写变体 / 非串 / 空串 / 访问器 / 只在原型链上 / 缺席 ⇒ 不长这一位(不编 `generic`)。`ApprovalCardV1Facts` 多可选位 `approvalCard`。修前 v1 腿恒缺,断线重连后从重放帧重建的卡落回通用卡;服务端 ≤ 7.135.x 的卡不带 ⇒ 照旧缺席。v1 卡上的「以后别问」本地整工具一行照旧不给(授予绑定那一步先答 `grant_binding`)。
113
+
114
+ ### Gates
115
+
116
+ - **`scripts/run-core-7590-pick-projection-test.mjs`**(CC-1044 / CC-1045;**§131 PK-1 – PK-10**;包侧投影门):A 两只 MCP 闭集与已装引擎逐员同序 + 等待段词表 + 两只新码挂在导出读器上 · B 授权记录三态(含原型链、访问器、已撤销代理)· C 三处过境(行视图 / 连接读口两种入参 / 重连 `status`)· D / E 两只通知读器 · F 等待两位两层白名单 · G `remote-` 前缀律两腿 · H 询问类同句 · K 内核契约 5 + `classic.SubagentStart` · Z 引擎新增而本包不读的四名零代码读点(植入自证)。
117
+ - **`scripts/run-core-7590-pick-projection-test.mjs` 加段**:P 决断口 409 分码一次快照(计数代理:袋 / `field` / `reason` 各读一次;随读变值的两形反例;十四形静态回归表)· D6 / D7 派发口与直读器对已撤销代理同答 · F6 – F8 座位格 `sleptMs` 有限非负、第一层两位逐键受保护读 · W 改参参数深度与已装引擎的界对拍(引擎冻结投影各深度原样过境、比界还深只丢 `input`、重读同答)· R 越地板三帧丢弃词 · O `operatorRules` 当 `prior` 交回 / `tool` 匹配句。**`scripts/run-mcp-status-superset-keys-test.mjs` 加 MK7**(`_sema_engineLeg` 授权记录在场 / 读不出 / 缺席 / never-false / 互斥、结构位只经唯一读口;差分与拷贝两格加授权两形)。
118
+ - **扩门**:mods 面投影门 W-③b 段(改参记录七格 × 两出口、九种坏形、参数读不出只丢参数三形、代答同帧、铸点语法单点)· CC 形消息键普查门(`_sema_rewrite` 路由行)· 内核过境门 7.59.0 列(契约 5,站行 142 / 53)· 上游生成表门(四个新闭包组 + 第 21 批)· MCP 名判官两门(第五个成因词;独立生成池改 32 位乘法后全池被抽到)· 请求面 MCP 条目形门(嵌套位降级分组)· fleet 视图键门 · 重试状态 / 通知码册 / 纯函数门的员数与读器格 · 装配回归语料去掉退役键后同法重取摘要。
119
+ - **引擎真铸两形**(`scripts/run-core-7590-pick-projection-test.mjs` M 段):已装引擎的文件后端亲手铸一份抹除证明(v2)与它的重放,读口读成 present、bound 臂带 `scope`、先前抹除行照读;引擎亲手铸的三条整工具候选读成 single、下标原样;读口认的匹配词 ⊇ 引擎闭集全集。抹除收执门 R2b / R2c / R4h / R4i(v1 / v2 正例、3 及以上拒、bound 臂 `slug` 两版规则)· 会话抹除投影门 J5e · 抹除动词门 V5e · 「部分」成因:引擎真铸收执(条目全落位、载体半未清)与八类补齐的残留形(状态交已装引擎的判官算)读成「条目已删只剩残留记录」、会话句不说条目没删(M7 / M8)· 抹除收执门 R10(残留表八类两臂原样、十四种坏表 ⇒ 表 `null` 收执照读、`residuals` / `carriers` 访问器逐键隔离、成因矩阵十四形)· 会话抹除投影门 J5e – J5k(v2 全清 ⇒ 已抹除;仅载体残留 ⇒ 不说条目没删、带类数;v1「部分」⇒ 判不出;条目真没删成 ⇒ 原句;降级腿七类查不了 ⇒ 人决定)· 决断口 409 直接入口一次快照(P1d / P3d / P5:两答代理经直接入口只读一次袋、答行完整性) · 规则候选读口门 ⑨b 改为对引擎闭集双向全等、⑨b′ 整工具候选与空 `command` 正例 · 上游生成表第 22 批(`PERSISTED_RULE_MATCHES`)。
120
+ - **sdk 见证编译两代同过**(地板一代 23.1 / 24.0 与开发锚 28.0):比地板新的三臂改 switch 前类型守卫、事件腿帧名钉 / fleet 键元组钉 / 会话策略元键表各按代豁免一次(退役登记 RL-304 – RL-307,条件 = 支持底线 sdk 抬到 ≥ 26.1.0);sdk 钉文件 mods 组(`provenance` 领先类型包,末格反钉)与 request-field 组(不读三族登记成词串)改形。
121
+ - **登记物跟上游**:审批帧键门主腿与下一代探针腿同读(类型包 26.0.0 起锚删保读键);退役登记 `ruleSuggestions` 按退出条件删行(两锚都删了它),卡面账删 `persistedRuleShadowed`、补 `approvalCard`(卡入参早已带同名位)· 耐久卡键普查删 `ruleSuggestions` 四行 · 通知码册门 7.59.0 一代(一百零六员;六码受众 / 铸方对引擎包根、码册元组逐元素对拍;两只新读器进样本与夹具)· 耐久卡键普查补账(摘要位已读 `grantBinding`;停驻身份 / 授予清单 / 无裁定成因三位登记不投)· 透明键账加 `sessionMetaKey`(请求面未声明 ⇒ 两腿都不承运)· 询问类门「同句并掉的类」改按引擎句表推出(加钉被并掉的四只)。
122
+ - **`scripts/run-server-7137-pick-projection-test.mjs`**(CC-1044 ① – ⑥ ⑧ ⑨;**§131 PK-10**;包侧投影门):A 出路清单读口(生成表第 22 批与已装引擎逐员同序;坏员 / 集外 kind / 读抛 / 原型链)与两语句口 · B `invalid_session` 三处载体 / 分诊 / 不给重试 / 坏档句 / 结果帧补句(导入面 422 负控;`principal_not_a_name` 400 走既有 4xx 读法)· C 同步腿原样转口与类型包重试器对 `terminal` / `transient` / 缺席的发次 · D `acceptableForm` present-iff(值不判形;只在原型链上的继承位不采信)· E 修剪十三形、幂等、过引擎拼写判官、活卡编辑臂与预检口同经 · F 决断体门身份按能力位带(真假假假与没观测;去键重发照带;注入连线形按 `capsBaseUrl` 带、不给不带、门已换落「没生效」、立卡到答卡端到端)· H 能力位缺席 = `absent`、凭据平面五态、`relayUrl` · I `inheritEnv` 拒因(含值形被拒的真组合与失败呈现句)/ `mcpUnavailable` 过境 / 技能不带 `mods` · K 读数形对类型包 28 编译期对拍 · Z 不读的四名在源码零读点、修剪调用点恰两处。
123
+ - **扩门**(**§131 PK-10**):会话完整性门 A4c / A5d 的「别的码」由 `invalid_session` 改 `internal.error`(这一码已并进同一判定)· 引擎通告目录门 F3l 的出路清单格改为「逐条同值读出」(本版读这一清单)· 能力位台账 +10 行(本版三位 + 类型包 26 – 28 的七位,读点 / 零读点由台账门逐行核)· 上游生成表第 22 批(`APPROVAL_REMEDY_KINDS`)· 出句口语料 `cc1044` · 计划审阅注入连线门 W3h / W3j(`PlanReviewWire` 只经 `EngineWireInjection` 继承 `capsBaseUrl`;读它就抛的连线与整族同判不可用)· `inheritEnv` 门 IE4 / IE7 / IE9 与失败呈现门 IE-T2(请求带的不是 `"all"` 而机读位点名这一项 ⇒ 肯定读数与肯定句;肯定句新金样)。
124
+ - **登记物同批**:`scripts/registry.json` 棘轮 `portability.index` 391 → 395(四只设置契约闭包组新叶)、`typeshape.unknownExport` 565 → 573(八处全在生成物闭包组的注入形参型,照上游声明;各一条 ledger)· `docs/refactor/p1-scan/singleton-manifest.json` +16 条。
125
+ - **`scripts/run-pkg-policy-registration-test.mjs`**(CC-1092;包侧登记门;无行为面):本包 `package.json` 对跨包策略登记表里本包一行逐项相等 —— 依赖四类的包名集合(只比名字不比版本范围,多一个少一个都红并带差集)· `exports` 键集 · 登记的版本(等于 `version` 或 CHANGELOG 最高已发段,bump 前后两态都合法;两头都不等点名「政策未跟版」)· `description` 首句。登记表由 `SEMA_PKG_POLICY_PATH` 钉住时只看它(不回落),没钉自包根向上找相邻的兄弟检出;都不可达则整门 `SKIPPED-SECTION`、退出码 0、不算通过。负控套 +1 枚:给 `devDependencies` 多登一个包 ⇒ 依赖那一格红并点名多出的包。
126
+
127
+ - **登记物门读数**(**§131 LG-1 – LG-2**):CC 形消息键普查门过渡表 1 → 0 行(成功臂 `errors` 出表,旧名回来即 C1 违例);结果帧各门按臂取失败句(成功臂读 `result`、错误臂读 `errors[0]`)并钉成功臂不带 `errors`(判型门 PA11a、展示净化门 S4 / S9 / X30b、停驻真因门 P4 / P9、拦截句门 PB1b、路由门 RT4、纯函数门 055⑥′、坏档句门 B6 / A6 / A7、通知门 TN7、终局身份门 G1d、错配句门 D2);句表门 M-自证改读已装类型包的实际词表(不写死个数);退役登记 RL-179 · RL-192 – RL-196 在已退役栏、名字账判「名不在」根入口 / 构建产物 / 门脚本代码位置;角色声明门 ES1 十八只。
128
+ - **门跟上游读数重钉**(引擎 7.59.0 / 类型包 28.0.0;只换判据所依的上游事实,不放宽):让位披露门 L5b(类型包 26.0.0 起帧型不再声明 `persistedRuleShadowed`、声明继任键)· v1 卡投影门 V2 处置表按卡键锚逐元素(+`approvalCard` 落位;两只退役键移到锚外段 V2r,读法照钉)、V1 差分加卡词一行 · 7.126 提货门 C5 改钉「v1 卡经同一把窄读读卡词」· 旋钮 / 读面两门 F4 / F5 / A7 / G5 不再写死词数,读 spec 闭 enum 与包内词表逐词同序 · 人话轮门 HT10e 夹具写最小合法 PNG 头(引擎 7.59.0 准入的头部一步要签名后紧跟 IHDR),并用引擎自己的头部判官自证 · MCP 面板门 TC0 – TC2 改用拨号前仍判的撞名形(主体头名 = 引擎包根导出的 `MCP_ASSERTION_HEADER`;声明里的 `headers` 已退役)· 撞名门 NC0b 铸点改钉撞名模块的拒启口(全包恰一处;调用者恰挂载处与连通探针口)· 场景技能门 A8 正控换两只按类型包 28.0.0 真声明仍成立的形 · 会话策略两门 Y5a / S0 / E3 改读引擎改名后的覆盖判官 `isCoveringRuleName(name, behavior)` / `ruleNameCovers`;会话规则形门 E6 拆出 E6b —— 引擎 7.59.0 起对端段部分通配 `mcp__git*` 写口收、真门拦以 `mcp__git` 起头的工具,本包仍以 `wildcard` 扣下(落进 KL-890「引擎认、本包仍扣」那一格;尾分隔形与对端段铸不出的形写口照旧拒)· 子代模型词门的引擎目录夹具改为合形 Model(引擎 7.59.0 判目录行形)并自证 · 附件座位门 J4 夹具补零挂载的 mod 总线(引擎 7.59.0 附件读入口经它问 `@` 提及站)· 展示净化门两处直调投影的扁平历史帧注明回放面 · 裸句基线 +4(座位值形标签一句 + 抹除「部分」成因三句,各记一条账)。
129
+ - **runner 到点判词让过一轮事件循环**:单门上限 / 宽限到点的两只回调先让事件循环处理完已到达的门退出事件再判 —— runner 进程被饿住(高负载)时,宽限内已自行退出的门不再记「宽限内未退出 ⇒ SIGKILL」、上限前已退出的门不再记超时;真没退的门照旧先 SIGTERM、宽限到点 SIGKILL。中断安全门加 R11 / R12(本门进程把事件循环占住跨过宽限到点 / 上限到点)两格;R3 判词对而落定读数越过上限 + 宽限、且 runner 进程里的循环旁证记到盖住门退出时刻的空档(被饿住)时,同一组上限 / 宽限有界重跑一次,判据与界都不变。
130
+
131
+ ### Known limitations
132
+
133
+ - `approval_complete`(开卡族的引擎侧消卡帧)本版只登记不消费:由 `approval_request` 开的卡不随它撤(与上一版同,修前落 `unknown_arm`)。
134
+ - 状态帧等待两位、工具结果改参记录、MCP 授权记录三处上游类型包尚未声明,本包按结构读(等待两位登记 RL-303;类型包补声明的那一批改类型面直读)。
135
+ - 卡上「整个工具」形的规则候选(`match: "tool"`、`command` 为空串)本版仍被候选读口丢掉:类型包(至 28.0.0)的候选匹配词表还没有这一词,读口按类型包的词表判;类型包声明这一形之后的下一个本包版本按它的形读。
136
+ - 状态帧等待两位、工具结果改参记录、MCP 授权记录、mod 行 `provenance` 四处上游类型包尚未声明,本包按结构读(登记 RL-303 / RL-308 / RL-309 / RL-310;类型包补声明的那一批改由类型面约束)。类型包(至 28.0.0)仍按 v1 声明抹除证明,v2 已抹除行的绑定读数型由本包派生(登记 RL-311)。
137
+ - 决断拒收的「那一行坏了」分码(`row_integrity`)在服务端 7.129.1 – 7.131.x 上永远给不出(这几版不把拒收体的 `reason` 过境),引擎 7.59.0 之前对 `bound_input_hash_missing` 那一形同样给不出:真坏行在这些组合上按一般拒收出句。支持底线升到服务端 ≥ 7.132.0 且引擎 ≥ 7.59.0 之后不再有这一形。
138
+ - `delegation.ask_unresolvable` 的机读出路清单 `remedies`(与句子同义的闭集重述)本版不读;句子照读。
139
+ - 待决列表行(耐久腿)上服务端新投的技能授予清单 `boundGrants` 与分类器无裁定成因 `classifierNoRuling` 本版不上卡(活卡帧腿照旧投;耐久腿的授予绑定三态 `grantBinding` 照旧读行上的摘要)。
140
+ - `400 request.field_invalid` 理由闭集新增的两族(`too_large` · URL 带凭据两词)本版帽读口 `fieldLimitRefusalFromError` 不读(答 `null`),服务端原句照常上屏(`inheritEnv` 四词由 `inheritEnv` 拒体读口读)。
141
+ - 服务端 7.137.0 随附的两件本版不读(§131a):接线回执的 `skills` 段与 `TaskResult.resultEntryIds`。
142
+ - 注入连线形的计划审阅腿只在宿主给了 `capsBaseUrl` 且那把键上的能力探测已落定时带 `checkpointId`:不给 / 没探 ⇒ 不带(没有「计划已变」保护,服务端按旧方式受理);`409 approval_stale` 拒体的 `currentPending` 本版不读,结局句不点名当前门。
143
+ - `invalid_session` 与 `corrupt_session` 共用一句坏档句(「保存的历史读不出 —— 存的日志已损坏」);要分「读不出」与「父链走不通」的宿主按码分。
144
+ - 出路清单里 `permission_mode` 那一句本包不判该不该呈:本部署禁了那一档时它会折回 `default`,而部署的这一层设置不在本包可见的读数里。
145
+ - 依赖服务端下一版的五项本版 pending(§131a):计划卡按发起调用联卡与滞留输入 id · 请求承运的 `classifyAllShell` · 规则写拒绝体逐条 `layer` · 历史读口的账行 · MCP 条目 `sessionMetaKey` 承运(今天的服务端请求面不收这把键;设置里写了它的用户本版看不到效果)。
146
+ - 停驻 ∧ 本流末行是模型正文那一形的 `-p` 停驻出路句(**§131 LG-1**;KL-1031):结果帧走成功臂、`result` 是那段正文,出路句原只在过渡键 `errors[0]` 上,本版删该键后这一形上没有承载键。可达性窄:引擎对停驻调用先铸工具行,末行通常是工具行,那一形走错误臂、出路句仍在 `errors[0]`;终端文本车道在成功臂上只读 `result`。落点未定(判官对停驻终局不走末行规则,或出路句改骑 `result` / `_sema_` 键)。
147
+
148
+ ## 0.102.0(2026-10-28)
149
+
150
+ > 主题:0.102.0 会话送后台四读口归包(能力位读数 · 连线句柄与本包亲手开流 · 交接资格一只判官 · 交接动词与后台观看)接入文档 **§130 BG-1 / BG-2 / BG-3 / BG-4 / BG-5 / BG-6** · 会话级思考开关归包(状态机 + `reasoningEffort` 单铸点投影 + 座位动词 / 能力位 / 会话行位)接入文档 **§130 TL-1 / TL-2 / TL-3 / TL-4 / TL-5** · mods 三类用户面座位(注册卡 / 工具结果行旁拒句 / 代答句)与桌面装载座位的读口 / 句口 —— 零新臂、既有公面型零改动、`./mods` 子路径入口零改动;接入文档 **§130 MF-1 / MF-2 / MF-3 / MF-4 / MF-5 / DU-1 / DU-2 / DU-3 / PS-1 / PS-2 / PS-3 / PS-4**(DU / PS:配置地址展示口七臂、无方案 userinfo 与边界判据进通用网、展示口非串入参 · 配置地址路径段与 Slack webhook 锚定形、设置判官读同一只扫描、凭据面规则按版本的阶梯链) · 会话映射的引擎命名空间键含规范化路径(经中心中继的多台引擎同 origin 异路径不再串键)与出包文案卫生(两条出包串中性化、同形存量清理、卫生门词表扩形),接入文档 **§130 NK-1 / HY-1**。
151
+
152
+ ### Added
153
+
154
+ - **能力位读数 `readSessionBackgroundable(baseUrl?)`**(CC-983;**§130 BG-1**;根入口运行期 +2〔读口 `readSessionBackgroundable` + 同读器的投影函数 `projectSessionBackgroundable(caps)`,与能力位读器族同形、读器族门按名取它;宿主读只用读口〕,型 +1):`GET /v1/capabilities.sessionBackgroundable` 的五态读数 —— `advertised`(位为 `true`)/ `declined`(`false`)/ `not_reported`(键缺或自有值 `undefined`)/ `unreadable`(非布尔、`null`、自有访问器 —— 取值器不执行)/ `unobserved`(没有当代落地)。经既有能力缓存读,不另存、不另探;读数冻结、永不抛。只有 `advertised` 放行交接;交互流带不带 detach 头只把 `declined` 当否决。
155
+ - **连线句柄与本包亲手开流:`interactiveEngineWire(init)` / `retireInteractiveEngineWire(wire)` · 姿态预览 `interactiveDetachPosture(wire, input)` · 开流口 `streamInteractiveRun(wire, req, opts, input)`**(CC-983;**§130 BG-2**;根入口运行期 +4,型 +7;型面 additive):一代引擎一只句柄(生命周期属主声明 `self-spawned` / `external`,`tasks` / `runs` 给原样 sdk 口),代结束同步退役。宿主在**调 sdk `tasks.stream` 的那一处**改调开流口,再把交回的生成器喂给自己的变换管线;本包对请求体取一次顶层浅快照、对 `headers` 取一次快照(任何大小写拼法的 `x-detach-on-disconnect` 都被删掉,带头时放唯一规范值 `'true'`),交给传输的是本包新造的对象;带头那一发被精确 durable-off 400 拒且没钉幂等键时去头重开恰一次。姿态判序:句柄认不出 / 入参读不出 ⇒ 不带 · 句柄退役 ⇒ 不带 · `SEMA_HEADLESS_DETACH` 关 ⇒ 不带 · 车道接不回在别处跑的 run ⇒ 不带 · 能力位 `declined` ⇒ 不带 · 本机自起 ∧ 环回 ⇒ 带(不要求 `advertised`)· 外接 ⇒ 不带(候引擎受理回执)。每次调用建一条开流记录:`x-task-id` 到 ⇒ 绑定;首个带账本锚的帧(`id` 非空)且 `meta` 报了会话 ⇒ 开跑 —— 重放 / 会话占用拒收 / 店竞态 / 落点拒这几种「回了 run id 却没为这一发跑起来」的流结构上进不了开跑。
156
+ - **交接资格一只判官 `backgroundHandoffEligibility({ wire, sessionKey })` + 句口 `backgroundHandoffSentence(verdict, lang?)`**(CC-983;**§130 BG-3**;根入口运行期 +2,型 +3):读句柄上该会话最近一次开流的记录、能力位读数与审批持有表,15 行有序判序,三态闭合(`eligible` 带 run id / `ineligible` 带确定原因 / `unknown` 带判不出的原因);永久原因先于暂时原因(用户不会被叫「稍后再试」而重试也没用)。没开跑 ⇒ 「引擎还没开始输出」;流已不在最初的实时连接上(断线、终帧是停驻)⇒ 那一句;刚交出的提问 / 审批帧宿主还没处理完、本开流有未结未到期的提问、持有表有本 run 的持有 ⇒ 「先回答屏上的问题」;归属说不出的持有 ⇒ 不确定句。同步、永不抛、判决冻结。
157
+ - **交接动词 `handoffInteractiveRun(req)` 与后台观看(`BackgroundRun`:`openFrames()` / `settled` / `dispose()`)· 交接表 `handedOffRunsOf(wire)` / `forgetHandedOffRun(wire, taskId)` · 停止事实 `interactiveStopFacts(wire, taskId)` · 常量 `BACKGROUND_HANDOFF_ABORT_REASON`**(CC-983;**§130 BG-4**;根入口运行期 +5,型 +7):判官放行 ⇒ 同一拍撕本包开的那条流(**不发 interrupt、不发 cancel**)、登记交接、起后台观看、通知宿主(宿主回调抛不回滚,结局 `hostNotified: false`);否则留在前台并给一句。后台观看在同一只句柄上、带引擎 `meta` 帧报的会话,从耐久账本从头重读;断连按 300 秒窗与退避梯重开、读 run 行合成终帧;首个执行终局落定一次(`completed` / `failed` / `cancelled` / `parked`),窗尽 / `dispose()` / 句柄退役 ⇒ `observation-stopped`。交接表 `running` / `unconfirmed` / `unrecognized-wire` 都按「可能在飞」处置,删行只经 `forgetHandedOffRun`。交接之后到的帧不再交前台,前台那一拉干净结束。
158
+ - **消息目录 +22 键(域 `session.background.*`)**(CC-983;**§130 BG-6**):交接成功 / 宿主没收尾 · 十四条拒句与一条不确定句 · 五条后台落定句 · 同一对话撞上后台回答时的 `busy` 句(宿主按 409 的 `activeTaskId` 命中交接表时经 `translate(lang, 'session.background.busy')` 取,本包不另立句口)。
159
+ - **会话级思考开关:状态机与存取端口读写口 `readThinkingLatch(port)` / `writeThinkingLatch(port, event)` + 视图口 `thinkingLatchView(reading, ctx?)` + 句口 `thinkingLatchSentence(subject, lang?)`**(CC-971;**§130 TL-1**;公面运行期 +4,型 +8;型面 additive):开关三态 `on` / `off` / `unset`(未设 ≠ 关:未设在请求面不压档位 —— 档位设置说了算,没有档位时才交给引擎默认)与四事件 `on` / `off` / `toggle` / `clear` 的迁移表只在包里一份(未设时切换 ⇒ 关);宿主只实现一只同步存取端口 `ThinkingLatchStorePort { read(), write(stored) }`(存储形 `true` / `false` / 缺席;一只端口 = 一个会话,包内零模块状态)。读口永不抛、`read` 恰调一次:端口缺席 ⇒ `unset/no_port`、读抛 ⇒ `unset/unreadable`、回 `undefined` ⇒ `unset/never_set`、回非布尔 ⇒ `unset/malformed` —— 读不出一律当未设,不猜开 / 关。写口永不抛:回执 `saved` / `unchanged` / `not_saved`(`no_port` / `bad_event` / `write_failed`);写抛之后再读一次,`now` 只是此刻观察值(不证明存成);存储读不出时照迁移写(修复存储)。视图口给冲突:座位会话而座位能力 `thinkingLatch` 不可用 ⇒ `seat_cannot_carry`(任一开关态);开 × 在线目录行明说这只模型不思考 ⇒ `model_cannot_think`(只披露,不改请求)。句口七个目录键 en / zh(状态三句〔未设说「由档位决定、没有档位时交给引擎默认」〕· 「同一条消息同时带 Ultracode 与关闭思考,以哪个为准由引擎决定」· 模型不思考 · 读不出按未设 · 没存上);座位冲突句转调既有禁用句铸点(不另铸)。门:`scripts/run-thinking-latch-projection-test.mjs`(新)T1 – T3 / T8 / T9。
160
+ - **请求投影:装配口两个控制入参 `thinkingLatch?: 'on' | 'off'` / `reasoningFloor?: string`,产物恒在的投影读数 `assembleTaskRequest(...).thinking`,预览口 `thinkingTurnProjection(input)`**(CC-971;**§130 TL-2**;公面运行期 +1,型 +2;型面 additive):请求体上的 `reasoningEffort` 只由装配口一行铸出,值由一只投影核心算 —— 开关关 ⇒ `"off"`(压过档位词;与 `settings.ultracode` 互不干预:两项同在时照上体,先后由引擎定);开 ⇒ 只解除档位词 `"off"`,从不替用户选档;下限词只认六个非 `off` 档、只抬不降(开关关、或开关投影之后档位仍是 `off` 时不动;开关开先解除档位词 `off` 再按下限抬);旁路车道(`utility`)开关与下限都不参与。🔴 开关未设且不交下限词 ⇒ 请求体与上一发布版**逐字节同**(档位词原样透传,含表外词与非串值)。开关表外值 ⇒ 装配期 `TypeError`(「关」被打字错误吞掉 = 收紧声明丢失);下限词坏值不起作用、不拒。`reasoningEffort` 的门推迟到 `settings` 门之后、对要铸的那个值问一次(这一行三车道有座、不受 live 门 ⇒ 去向回执零变化)。投影读数 `{ word?, verdict: 'utility_lane' | 'off' | 'strength', latch, ultracodeStamped, floorApplied?, strengthOverruled? }` 是本地装配诊断,不上任何载体;预览口交与装配口同一组入参时逐格同答,只绑定一条具体的用户直发、是暂定提示。门:同上 T4 – T6 / T10(T6 对上一发布产物逐字节对拍;T10 对构建产物做语法树计数:装配口内写入点恰 1、投影核心定义 1 / 两口各调 1)。
161
+ - **座位:可缺动词 `setThinkingLatch(req)` → `OkAck`、能力位 `thinkingLatch`、会话行位 `LocalSessionRecord.thinkingLatch`(`on` / `off` / `unreadable` / `malformed`,缺席 = 从未设)+ 行位写法 `thinkingLatchRowWordOf(reading)` / 读回 `readSeatThinkingLatch(record, capability)` + 入站判官 `checkSetThinkingLatchRequest` / 守卫 `isSetThinkingLatchRequest`**(CC-971;**§130 TL-3**;公面运行期 +4,型 +2;🔴 型面 BREAKING(窄):实现 `LocalSessionsApi` 的宿主多一只成员 `setThinkingLatch`):座位会话的开关存在桌面宿主(它装配那个会话的全部提交;渲染端不存、不做乐观本地态)。动词回执复用既有 `OkAck`(`true` = 存成或本来就是,`false` = 没存上);「现在是什么」只读会话行(宿主写后推一次 `session_updated`)。行位四词让「桌面读不出」不被读回成「从未设」;能力不可用 ⇒ 读回恒 `unset/no_port`、不看行位。座位登记七处同加(接口 · 规格方法行与回包判官 · 方法名表 · 入站判官登记与守卫 · 能力名 / 管辖 / 能力态 / 禁用句 / 能力表判官 · 会话行键表与行判官 · 编译钉两向)。门:同上 T7 / T11 + 既有座位门扩格。
162
+ - **接入文档 §130**:TL-4 —— CC-474 ① 的 thinking 半张(开关 ⇒ `reasoningEffort` 的逐请求投影、开关存在哪个宿主)由本票吸收,隐身半张仍归 CC-474;TL-5 —— 与 CC 2.1.309 的偏离登记(130d,含「Ultracode × 关思考:语料未对位」一行与「档位需要思考」报错的射程)。
163
+ - **注册卡读口与句口:`modRowsOf(records)` · `readModRegistrationRefusedNotice(ev)` · `modCardSentence(input, lang?)`**(CC-1042;**§130 MF-1**;根入口运行期 +3):一条腿上每一只 mod 注册的受理结果(挂上 / 被拒两形)在三处出现 —— 回执段 `wiring_manifest.mods[]`、注册被拒通告 `mods.registration_refused` 的 `detail`、进程内内核总线的 `records` —— 现在只有一条读法:`modRowsOf` 对进程内记录与回执段数组同读(非数组 / 读不出 / 非空却零行幸存 ⇒ `undefined`,读不出 ≠ 零;`[]` ⇒ `[]`;坏行逐行丢),两形按成员在场判(`'refusedBy' in row`),不派生处置词(引擎记录分不出「只观察」,包不替它说)。`readModRegistrationRefusedNotice` 把注册被拒通告读成被拒行(码不对 / `detail` 读不成被拒形 ⇒ `undefined`,宿主照渲引擎原话);通告臂、回执视图型、`ChromeEvent` 一字不动。`modCardSentence(视图行)` 出卡句:挂上形「{name} is loaded」,被拒形「{name} was not loaded: {refusedBy} refused it — {reason}」(en / zh;外来串过展示出口)。读口全部永不抛、只读自有数据位(访问器不执行、原型链上的位不算)。
164
+ - **工具结果行信封超集键 `_sema_answered_by` 与行旁拒句 / 代答句**(CC-1042;**§130 MF-2**;引擎 7.56.0 `tool_end.answeredBy`;零新臂):扩展在 `tool.call` 站替一次调用作答(拒了它,或替工具给了结果、本体没跑)时,引擎记下那张注册的名。前层 `tool_end` 投影把它(自有非空串)原样上内部臂(不进转录);收卡唯一行铸口(交互收口与 `-p` 帧同一只)按一句判据铸信封键 —— 令 A := `answeredBy` 是自有非空串且不是引擎自身记号 `engine`(`tool.call` 站本身起不来时引擎记它:那是引擎自己闭合失败,不是某一只扩展 ⇒ 零句)∧ `notExecuted === true`:**拒格** = A ∧ 门记录最新处置 `denied` ∧ `deniedBy === 'hook'` ∧ `isError === true`;**代答格** = A ∧ 门记录不是 `denied` ∧ `isError === false`;门视图带 `unreadable` 先判零;其余一律不铸。判据只在铸口算一次,门视图与同一行信封 `_sema_gate` 是同一次读。`modCardSentence(工具结果行)` 按信封门视图分臂出「Refused by {by}」/「Answered by {by} in place of the tool」(en / zh;只说「被谁」,「没执行」照旧由 `readToolCardOutcome` 说);信封无此键 ⇒ 零句(classic 钩子拒 / `tool.check` 拒 / 政策拒 / 正常跑都没有它 —— 成员缺席零句,不改说「钩子或扩展」,不解析结果句)。键同批进 `TRANSCRIPT_ROW_SIDECAR_KEYS`(元组 +1 元素,型不变):按白名单重建行的端展开它即保住新键。🔴 服务端 7.138.0 之前刻意不投 `answeredBy` ⇒ 经服务端车道今天恒缺席、三端用户面零可见变化。
165
+ - **桌面装载座位:动词闭集 `MOD_LOADER_VERBS`(`list` / `load` / `unload` / `status`)与型 `ModLoaderVerb`;装载失败句 `modLoaderFailureSentence(name, error, lang?)`**(CC-1042;**§130 MF-3**;根入口运行期 +2、型 +1):`list` / `status` 读、`load` / `unload` 请求,集外拒(宿主按闭集判,不猜近义词)。失败句吃宿主 `catch` 到的抛出物原样(抛出物读法复用 `wireFailureTextsOf`):读得出话 ⇒「{name} could not be loaded: {reason}」,读不出 ⇒「{name} could not be loaded」。身份 = `(side, name)`(side 取内核 `ModBusSide`,经 `./mods`);去重契约:surface 侧被拒行按 `(总线, side, name)` 各渲一次,engine 侧拒句只由通告出。装载编排(何时重准入)与宿主自身状态(持久化的「想要」、已渲身份、装载过程 UI 词)归宿主,不进包。
166
+ - **消息目录 +9 键(域 `config.mods.*`)**(CC-1042;**§130 MF-4**):卡两形 `card.mounted` / `card.refused` · 行旁两句 `refusal.by` / `rewrite.resultInPlace` · 失败两句 `loader.failed` / `loader.failedNoReason` · 一条腿的注册计数三句 `card.none`(「No mods registered on this leg」)/ `card.counts`(「{n} mounted」,零被拒)/ `card.countsWithRefused`(「{n} mounted, {m} refused」,有被拒)—— 计数三句不另立句口,壳按 `modRowsOf` 结果里 `refusedBy` 在场的行数选键、经 `translate(lang, key, { n, m })` 取句。
167
+
168
+ ### Changed
169
+
170
+ - **配置地址展示口七臂**(CC-848 ①;**§130 DU-1**;公面零新增):`displayConfiguredUrl` 对「userinfo 与 query / 片段的边界判不准」的写法(方案之后、第一个 `/` `\` 之前,任何 `@` 之前先出现裸 `?` / `#` 而其后还有 `@`:`https://alice:<前半>?<后半>@host/x`,能不能解析都一样)与 http / https / ws / wss / ftp 打头、单斜杠 / 零斜杠写法又读不成带主机的地址、串里带 `@ ? #` 的写法整串显示一枚 `«redacted:secret»`(修前口令两段原样上屏);串首就是无方案 `user:pass@host` 的写法 userinfo 换 `«redacted:userinfo»`、主机与路径照示;无方案、无前导斜杠的相对请求地址(`oauth/callback?code=<值>`)路径留、参数值逐值遮;特殊方案 authority 里夹反斜杠的写法(`https://h\x;sid=<值>/sse`)原串读法与按解析出的组件重建的读法按位置对应取舍 —— 原串读法已遮住重建读法要遮的一切 ⇒ 照原串显示、与上一发布版同字节(`https://alice:\<口令>@host` 仍显示 `https://«redacted:userinfo»@host`;`https://h\x/v1` 原样;`https://h\x?sig=<令牌>` 只遮令牌);否则重建读法遮住原串读法遮住的一切 ⇒ 重建后显示(`https://h/x;sid=«redacted:query»/sse`);两头都不成立 ⇒ 整串一枚 `«redacted:secret»`。authority 之外的凭据记号或 `\uXXXX` 字面不改变读法(`https://h\x;sid=<值>/sse#«redacted:fragment»` ⇒ `https://h/x;sid=«redacted:query»/sse#«redacted:fragment»`),它们按原文位置留在所在组件里;authority 里带本出口写出的东西(整枚记号,或本出口会写的转义记号形 `\u202E` 一类)的写法照原串显示(那是展示过的 authority;KL-8484)—— 展示过的串再展示一遍逐字节不变。
171
+ - **无方案 userinfo 与边界判据进通用网**(CC-848 ①;**§130 DU-2**):URL 结构网开着的出口上(这两条归 URL 结构网),无方案 `user:pass@host` 的口令可以夹 `?` / `#` / `@`(多枚 `@` 取主机之前最后一枚)、主机后的端口不要求数字、主机之后可以是 `) , ; ! ]`;带方案的地址里「边界判不准」那一形整只地址词换一枚 `«redacted:secret»`(与配置地址口同一只判据)。放宽读法只多交候选:每枚 `@` 先按上一发布版的读法读、只有它推进扫描起点,同一段文本里不比上一发布版少遮(`Bearer :=@h)<口令>@h` 照旧整段 `Bearer «redacted:userinfo»@h`)。代价:时刻 / 构建标签形的 `12:30@office, agenda`、`build:release@runner:linux, ready` 也被读成 userinfo(KL-8482)。只开词级网与两网全关的出口逐字节不变。
172
+ - **展示口非串入参**(CC-848 ①;**§130 DU-3**):`displayUntrusted` / `displayUntrustedMarks` / `displayConfiguredUrl` 收到非串的对象 / 数组 / 代理 / 函数 / Symbol 时显示一枚 `«redacted:secret»`,不再调用它的 `toString` / `valueOf` / `Symbol.toPrimitive`(修前执行调用方代码:它抛则口抛、它答什么就上屏什么);数 / bigint / 布尔照旧出字面串,`undefined` / `null` 照旧出空串。选项对象的读法本版不变。
173
+ - **配置地址路径段名位 / 值位**(CC-849;**§130 PS-1**):配置地址口里非 `file:` 地址的每一个路径段,名位(`=` 之前)与值位(`=` 之后;没有 `=` 即整段)过 query 值那一只值判官(高熵形 / 已知凭据字面形 / 嵌套凭据结构):名位判中 ⇒ 整截一枚 `«redacted:secret»`,值位判中 ⇒ 只换值位(`PGPASSWORD=«redacted:secret»`)。网关路径里的钥匙、MCP 能力地址段(`/api/mcp/s/<令牌>/mcp`、`/<uuid>/github`)、RPC 地址的密钥段被遮;代价:账号 ID / UUID 资源段(Cloudflare AI Gateway 账号段等)在配置口也显示成记号(KL-8493)。自由文本里的地址路径段不按形判(与 CC 2.1.309 同)。
174
+ - **Slack webhook 锚定形**(CC-849;**§130 PS-2**):凡开着凭据网的出口,`hooks.slack.com/services|workflows|triggers/` 之后的尾段(带不带 `https://`、主机尾点写法、主机百分号编码都算;与 CC 2.1.309 `slack-webhook-url` 同一识别式,尾段 ≥ 40 字)换一枚 `«redacted:secret»`,主机与 kind 段照示;尾段里已经有一枚本包记号时不再核 40 字下限(整尾一枚)。截短的 webhook(尾段不足 40 字)不遮,与 CC 同。
175
+ - **设置判官与上传判据读同一只扫描**(CC-849;**§130 PS-3**):`settingsCredentialKeyPaths` 判「这串设置值装不装凭据」改为配置地址口的同一次扫描 —— 终态里被遮掉的原文落成凭据种类即装着(片段只在内容按 query 再判一次带凭据时算);修前另写一段「要有 `://`、只看 userinfo ∪ query」的读法。多报:无方案 Slack webhook、路径里的钥匙、单斜杠写法、片段里的 `access_token=`、散文串值里的 `token=<值>`;改口:值里只剩已遮记号的地址(`?token=«redacted:query»`)不再报(没有可漏的内容)。`queryCarriesCredential` 读同一条阶梯。
176
+ - **凭据面规则按版本的阶梯链**(CC-849;**§130 PS-4**):本版新增的两只判法(PS-1 / PS-2)只在旧规则(规则表之外的全部规则,含本版对既有规则的改读 DU-1 / DU-2)跑到帽内不动点之后再上,之后「旧规则 + 新规则」交替到不动点 —— 任何输入的凭据面终态遮盖(封长之前)⊇ 旧规则单独跑到不动点的遮盖(按构造:记号落地后不再解开);相对上一发布版本的「不回退」是冻结池上的实测(原文位置与值字节两把尺子皆 0),不是按构造的保证;同一串文本只收集一次候选、各阶共用。帽按阶计(每阶一帽)。射程:带 `max` 的出口,本版遮得更短时截断点后移,上一版截掉的尾巴可能进窗(那几个字节上一版不截也可见;KL-8495)。
177
+ - **Esc 发射口与停止判定**(CC-983;**§130 BG-5**;🔴 型面 BREAKING(窄)):`fireInteractiveInterrupt(runs, taskId, opts)` 的 `opts` 多可选位 `wire` —— 在场时先在句柄上记「停止已发起」(此后送后台答 `stopping`),这条 run 已在交接 / 已交接 ⇒ 不发 interrupt、答新臂 `{ kind: 'withheld' }`;`wire` 缺席 ⇒ 与上一版逐字同。`InteractiveHaltInterruptOutcome` 多一臂 `{ kind: 'withheld' }`、`InteractiveHaltReason` 多一词 `handed-off`,`planInteractiveHalt` 收到 `withheld` ⇒ `none` / `handed-off`(不升级,`parked` / `detachArmed` 在这一格不读)。对这两只型做穷举 `switch` 的端编译红一次(补一臂:不升级、不提示)。
178
+ - **回执段 `mods[]` 行读法升级为自有数据位读 + 逐键隔离**(CC-1042;**§130 MF-5**;🔴 只对非 JSON 输入可见):回执段投影改调 `modRowsOf`:原型链上的位不算在场、自有访问器不执行;必填位 / 判别位读不出 ⇒ 那一行丢,可选位(`observe` / `skipped`)读不出 ⇒ 只丢那一位、行照出(修前整行一个 try:无关位的取值器抛会连坐有效行,原型链上的位会被收)。JSON 帧无原型链位 / 无访问器 ⇒ 真实输入逐字节同。
179
+ - **出包字符串去帖号别形与修补批过程词;卫生门词表扩形**(CC-1056;**§130 HY-1**;文案卫生,无行为变化):两条点名的出包串改中性 —— 散文段边界臂的说明串去掉帖号别形与仓名,座位契约豁免说明串去掉修补批段号与三处测试脚本文件名(说法改为「本包纯测试套的投毒段」)。按新词表扫 dist 全树,同形存量五个源文件里各一条说明串一并删去帖号别形,对外 README 的两个表行同(表行由登记清单生成)。卫生门 `scripts/run-package-hygiene-test.mjs` 的词表本仓本地加三条:`#` 加 2–5 位纯数字且后面不是字母数字(帖号别形;放行 `CC-nnn`、`[nnnn]`、十六进制颜色码、`文件.md#锚`、HTML 实体)· `FIX` 加数字(含圈号数字)· `fix` 加数字再加「段」(修补批过程词);dist 与 README 全文扫,CHANGELOG 自首个版本段起至 0.101.0 段之前、接入文档 §130 起向前执法(已发段冻结)。纯数字的 2–5 位短色码与帖号别形不可分,命中时改写成颜色名或 `rgb()`;dist 内目前零此类。
180
+
181
+ ### Fixed
182
+
183
+ - **会话映射的引擎命名空间键含规范化路径**(CC-1055;**§130 NK-1**;🔴 行为变,只对带路径的连接目标可见;公面零增删):`engineNamespaceKeyFor(baseUrl)` 修前只取 `new URL(baseUrl).origin`,经中心中继的多台引擎(`https://c.example/api/v1/chat/w/<名>/engine`)同 origin 只差路径,算成同一把键,会话映射里 `engines[键]` 的任务号与同步水位互相串键。现在键 = 小写 origin + 规范化路径:去全部尾斜杠;路径大小写与百分号编码逐字保留(同一台引擎的两种百分号拼法是两把键 —— 分开是安全方向);query / fragment / userinfo 不入键;默认端口与点段由 URL 解析器归一。不变:自起引擎恒 `local`;异 origin 异键;坏串回原串小写。同批收的一形:origin 不透明的方案(`foo://a/x`、无方案的 `host:port`、`blob:`)修前全并成同一把 `null` 键,现在回原串小写。旧映射只有一种读法:路径为空的目标(`http://host:8790` 与 `http://host:8790/`)键仍是纯 origin = 旧键,旧条目原样读得到;带路径的目标不读旧 origin 条目(它可能是同 origin 的另一台引擎写的,读它就是串键),没有回落读法 —— 升级后该目标的水位与任务号按首次同步处理。宿主判「live 引擎与同步目标是不是同一台」时,改比包键(`engineNamespaceKeyFor(a) === engineNamespaceKeyFor(b)`)而不是各自取 origin(130y ②)。门:`scripts/run-session-namespace-key-test.mjs`(新)N / S / L / B / U / X。
184
+
185
+ ### Fixed
186
+
187
+ - **路径段首是一枚记号时整段遮盖不再劈开记号**(CC-849;**§130 PS-4**):段首去边停在记号里时整枚补回截内,`…/v1/«redacted:secret»Bearer%20<值>` 一类输出一枚完整记号(修前 `««redacted:secret»`)。
188
+ - **单斜杠 / 零斜杠写法的配置地址不再把口令显示成路径**(CC-848 ①;**§130 DU-1**;🔴 行为变,只多遮):`displayConfiguredUrl` 对 `https:/alice:\<口令>@host`、`https:\\alice:\<口令>@host`、`https:/alice:\<口令>%40host` 一类写法,上一发布版按解析器重建后显示 `https://alice/<口令>@host`(反斜杠把 authority 收短,口令落进路径原样上屏);现在原串读法遮住的每一段须整段、逐字节落在重建串的同一个组件里才重建,否则(解析器改写了那些字节,或把那一段切到主机 / 路径 / query 两个组件里)整串显示一枚 `«redacted:secret»`(KL-8497)。同一段字在地址里写两遍时按位置认来源,不借另一份的「在场」:`https:/alice:\<口令>@host#alice:\<口令>`(片段 / query / 路径里再写一遍)上一发布版显示 `https://alice/<口令>@host#«redacted:fragment»`,现在整串一枚。解析器没有改写它们的写法照旧重建(`https:/h.example/mcp?x=<令牌>` ⇒ `https://h.example/mcp?x=«redacted:query»`)。
189
+ - **设置键路径对口令藏在反斜杠 / 编码 `@` 后面的地址值报「装着凭据」**(CC-848 ① / CC-849;**§130 PS-3**):`https://alice:\<口令>@host`、`https://alice:\<口令>%40host`、`https:/alice:\<口令>@host` 一类值,上一发布版 `settingsCredentialKeyPaths` 不列出(机读口遮、上传判据判带);现在设置键路径、机读口、上传判据同答「装着凭据」—— 设置判官读配置地址的同一种读法,重建不在判官之前丢掉原串读法认出的口令。
190
+
191
+ ### Gates
192
+
193
+ - **`scripts/run-display-untrusted-phase-ladder-test.mjs`**(CC-849;**§130 PS-4**;包侧门):规则表只一张、行只收加性生成器、阶号只经行发射口;生产路径阶 0 与上一发布产物逐字节同(文本 + 来源表;不同的格只许是本版基础规则的改读、与「表置空」变体同答);不回退尺(可见原文下标 ⊆ 上一版、值字节 0);出口幂等七组 ≤ 上一版、六组逐行不回退;干净文本一次收集;折叠对照(本版行折进阶 0 的单链在构造行上露值);两读法格与嵌套判官三行;读法层不回退(本版配置地址读法与上一版不同的格只许整串扣下,或保住上一版原文读法遮住的每一个字节的重建);反例钉(原文读法遮得到东西的反斜杠 / `%40` / 主机形一族四只读法同答且配置口逐字节为期望、全池 userinfo 证据不在判官之前丢、放宽读法加性、两族洗两遍 = 洗一遍、控制串里的锚定形阶 0 原样);判不准 / 读不成的写法整串扣下不因值里出现记号 / 转义记号形而放开、反斜杠写法在原串读法已遮住重建读法要遮的一切时照原串;两读法遮盖对应的独立尺(黑盒位置对应:原文一个字换一个同类字、看重建串哪几位跟着变,不借本包的组件对齐)—— 重复子串一族与记号 / 转义记号形一族逐字节为期望且四面不露、全池每条配置地址的读法两种口径下成立(重建 ⇒ 原串读法遮住的字节在重建读法里仍遮,单斜杠 / 零斜杠写法遮住的段整段落在同一字段;反斜杠写法照原串 ⇒ 原串可见的字节在重建读法里不被遮);读法层不回退的格改成同一把独立尺(修前是本包判法的副本);本包的位置对应表与同一把黑盒扰动一致(代理对 / 非 ASCII / 主机大写 / 端口);控制串里的锚定形原字 / 展示转义 / 百分号编码三形阶 0 原样;门内负控九枚(阶 1 从原文重起 / 丢阶号 / 判官只用末阶答 / 锚定形撤认记号 / 控制串内容嵌套候选丢阶号 / 屏上与解码读面内容嵌套候选丢阶号 / 裸 query 段丢阶号 / 只让解码读面内容的嵌套候选丢阶号 / 反斜杠写法不先问原串读法)。
194
+ - **展示出口投影门 CF848 / CF849 / K6 段 · 基线差分门 B11 / B12 段 · 设置键路径门的地址支格**(CC-848 ① / CC-849;**§130 DU-1 – DU-3 / PS-1 – PS-3**):终端金样 L5 / L6 / L8 换读本包口、N1 / N2 / S-c 逐格、重建不改写原文读法遮住的字节的十一形与放宽读法加性三形(CF848h / CF848i,负控 ②:`scheme://` 写法不再两读法取舍、一律用重建串 ⇒ 红)、重复子串五形与记号 / 转义记号形六形(CF848j / CF848k)、上一版遮住的口令本版十五出口 + 配置口三面不露(B11e,不分大小写)、上一版配置口露口令 / 段参数值的六形本版三面零字节(B11f);路径段与锚定形四十余格;非串入参九形 × 三口;无方案 userinfo 登记分歧与邻接负例对上一发布产物;能力地址池按秘密片段零残留判;遍数读口改读 `collections`(另报 `passes`)。
195
+ - **`scripts/run-mods-face-projection-test.mjs`**(CC-1042;**§130 MF-1 – MF-5**;包侧投影门):K 进程内真内核(开发依赖内核经 `./mods` 真跑 `admitMods`,判官拒候选)→ 两形行 → 句;W-① 夹具服务端真投影的回执段 + 引擎真铸、夹具服务端真投影的被拒通告 → 读器 → 句;W-②③a 一句判据七格每格至少一帧 × 交互收口 / `-p` 帧两出口,铸口与信封 `_sema_gate` 同一次读,判据只在铸口(语法树),合形帧对开发依赖引擎 `tool_end` 型 `satisfies`(`answeredBy` 一员以开发依赖引擎 ≥ 7.56.0 为前提:之前那一段打 `SKIPPED-SECTION … PENDING-DEVDEP-CORE-7.56.0`,换钉当天自动转正);L 同一拒装经 K / W 两路读出相等 + 九键金样 + 展示出口;A 缺席语义;M 冻结的修前读法 × 既有样本 + 生成池逐字节对拍。负控一枚(读器收原型链上的 `name` ⇒ K 段红)。
196
+ - **`scripts/run-session-namespace-key-test.mjs`**(CC-1055;**§130 NK-1**;包侧投影门):N 键形(异路径异键且逐字 = 手写期望、写法差同键、路径大小写保留、自起、异 origin 异键)· S 同一台判据前置(同 origin 异路径按包键比较不是同一台、同一台的不同写法是同一台;两条目写进同一份记录互不覆盖、按另一路径的键读不到对方水位)· L 旧映射单一读法(路径为空键 = 旧键,旧条目读得到;带路径目标不读旧 origin 条目)· B 边界(IPv6 / 默认端口 / 点段与越根 / 百分号编码 / 双斜杠 / 空路径 / 不透明 origin / `blob:`)· U 导出集恰三名(无第二读法)· X 一批畸形串与随机串永不抛、键对 URL 形的键幂等。修前产物 20 格红;变异五枚全杀;负控一枚(键改回只取 origin ⇒ N1 红)。
197
+ - **`scripts/run-package-hygiene-test.mjs` 扩形**(CC-1056;**§130 HY-1**):帖号别形 / 修补批过程词三条;自检 15 条正样本命中 / 26 条反样本不命中(含颜色码、锚、实体、字中命中)+ CHANGELOG 与接入文档两处向前执法切片自证;旧词表对修前 dist 通过(尺子瞎)、新词表红 11 行(dist 九处 + README 两处),改中性后通过;负控 +2 枚(往 README 植帖号别形 / 植修补批过程词 ⇒ 门红且点名同一节)。
198
+
199
+ ### Known limitations
200
+
201
+ - 本机自起引擎上「撕流不杀 run」是有界信任假设(地址按主机名判环回、引擎不回执 detach 受理)(KL-9831)· 重连期间 / 停驻续流期间 / 接管轮上的回答不能送后台(KL-9832)· 交接那一拍还在网线上的提问 / 审批卡不阻交接、前台不渲(KL-9833)· 交接后同一对话在后台回答结束前不能续聊(KL-9834)· 外接引擎车道一律不交接(KL-9835)。
202
+ - 配置地址口:短 / 无数字令牌仍原样(KL-8491)· 自由文本里非 Slack 的 webhook 路径令牌照样可见(KL-8492)· 账号 ID / UUID 资源段被遮(KL-8493)· 路径里低熵的秘密不在射程(KL-8481)· 无方案 `host/路径?k=v` 按相对请求地址读、每个参数值都遮(KL-8483)· 时刻 / 构建标签形被读成 userinfo(KL-8482)· URL 结构槽「记号 + 标点 + 明文」按已洗(路径段名位 / 值位同 query 槽,KL-8494)· 封长出口的单调射程(KL-8495)· 设置告知多报(KL-8496)· 单斜杠 / 零斜杠写法里解析器改写了原串读法遮住的字节、或把它切到两个组件时整串一枚(KL-8497)· authority 里带凭据记号或本出口会写的转义记号形的反斜杠写法照原串显示(手写这种字面 / 记号的地址,解析器读法里的段参数值不遮,KL-8484)· 点形下 authority 只靠不可见字充当主机又夹反斜杠的写法两次显示不同(第二次只多遮,KL-8498)。
203
+ - **KL-971**:座位会话的组合句预览是暂定提示 —— 排队件以排空那一拍的开关为准,入队时的预览可能与实发不同;座位会话的权威投影读数留在桌面,不新增回传载体(§130 包侧缺口)。
204
+
52
205
  ## 0.101.0(2026-10-27)
53
206
 
54
207
  > 主题:0.101.0 提货引擎 7.54.0(开发依赖 W1 换钉 `^7.54.0` 与生成表重生成,后续 mods 内核车换钉 core `^7.55.0` / mods-kernel 7.55.0 同号;通告码册 96 → 98;`AllowDenyPolicyOptionsView.scope` 退出,🔴 型面 BREAKING)· MCP 服务器名独立判口 · 引擎名册按对端分组投影 · 收紧桶对端段 `*` 原样 · 值级端口第 19 件接入文档 **§129 VP-1 / RP-1 / TF-1 / GT-5 / UA-4 / SP-1 / TF-2 / TR-2 / PK-2 / HK-1 / MK-5 / TS-2 / FL-2 / PD-1 / PD-2 / PD-3 / HK-3 / HP-1 / EV-1 / PR-2 / PR-3 / HP-2 / ER-1 / HT-1 / KP-3 / HS-1 / HS-2 / HS-3 / HS-4 / HS-5 / HS-6 / HS-7 / UC-1 / UC-2 / UC-3 / UC-4 / UC-5 / UC-6 / UC-7 / XA-1 / XA-2 / XA-3 / XA-4 / XA-5 / XA-6 / XA-7 / XA-8 / XA-9 / UB-1 / UB-3 / UB-5 / UB-8 / SF-1 / XC-1 / XC-2 / XC-3 / XC-4 / XC-5 / XC-6 / XC-7 / XE-1 / XE-2 / XE-3 / XE-4 / XE-5 / XE-6 / XF-1 / XF-2 / XF-3 / XF-4 / XF-5 / XF-6 / XF-7 / XF-8 / XF-9 / XF-10 / XF-11 / XF-12 / XF-13 / XF-14 / XF-15 / XF-16 / XF-17 / XF-18 / RQ-1 / MI-1 / MI-2 / MC-1 / CZ-5 / CZ-6 / PK-3 / PK-4 / PK-5 / GN-13 / GN-14 / GN-15 / GN-16 / GN-17 / GN-18 / GN-19 / GN-20 / GN-21 / GN-22 / GN-23 / GN-24 / GN-25 / GN-26 / GN-27 / GN-28 / GN-29 / GN-30 / NA-1 / IE-1 / PE-1 / MN-2 / CD-1 / PM-1 / NS-1 / DR-1 / TK-5 / AF-1 / WS-1 / TH-4 / SR-1 / ME-1 / SK-3 / SK-2 / MC-2 / IE-2 / FB-1 / FB-2 / FB-3 / FB-4 / FB-5 / LG-1 / FV-1 / FV-2 / FV-3 / FV-4 / FV-5 / FV-6 / FV-7 / FV-8 / FW-1 / FW-2 / FW-3 / FW-4 / FW-5 / FW-6 / U11-1**(本版首批 四波已并:+ 跨边界污染读口 · mods 内核子路径转口 · toolFaces 两腿同判 · 会话规则尾句 · 成因薄壳之二 · 工具结果块两新臂;本版 提货引擎 7.55.0:通告码册 98 → 100 · 卡词 8 → 10 · 问类句表 `probe` 无行 · 持久规则 `match` 十词 · 发送前拒绝两码 · 规则拒因码 `invalid.name_ambiguous` · 设置契约 14.4.0 换钉)。