@sema-agent/client-core 0.90.0 → 0.92.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +365 -0
- package/README.md +48 -32
- package/dist/adapt/arms.js +13 -12
- package/dist/adapt/panelTasks.d.ts +0 -2
- package/dist/adapt/panelTasks.js +6 -26
- package/dist/adapt.js +2 -2
- package/dist/adapter/activeRunSelfHeal.d.ts +0 -2
- package/dist/adapter/activeRunSelfHeal.js +5 -27
- package/dist/adapter/downstream/eventToSdkMessage.js +4 -2
- package/dist/adapter/downstream/terminalToSdkResult.js +16 -7
- package/dist/adapter/downstream/wiringManifestView.d.ts +6 -0
- package/dist/adapter/downstream/wiringManifestView.js +16 -0
- package/dist/adapter/runStream.js +39 -20
- package/dist/askSurvivesStandingAnswer.d.ts +13 -0
- package/dist/askSurvivesStandingAnswer.js +53 -0
- package/dist/attachmentSeatCapability.d.ts +11 -0
- package/dist/attachmentSeatCapability.js +27 -0
- package/dist/attachmentsWireCaps.d.ts +9 -0
- package/dist/attachmentsWireCaps.js +74 -21
- package/dist/autoModeUnavailable.js +3 -2
- package/dist/cloudConfigWireCaps.js +5 -4
- package/dist/compensations.js +13 -17
- package/dist/controlRouter.d.ts +32 -25
- package/dist/controlRouter.js +166 -63
- package/dist/coreValuePorts.d.ts +4 -2
- package/dist/coreValuePorts.js +5 -0
- package/dist/decideFailureNote.js +7 -3
- package/dist/decideReceipt.d.ts +9 -0
- package/dist/decideReceipt.js +62 -1
- package/dist/disableSkillsWire.d.ts +1 -0
- package/dist/disableSkillsWire.js +8 -1
- package/dist/displayUntrusted.js +155 -5
- package/dist/effectiveFacts.d.ts +14 -4
- package/dist/effectiveFacts.js +45 -5
- package/dist/engineAgentAbsence.js +2 -1
- package/dist/engineCapReader.js +16 -10
- package/dist/engineCapsCache.d.ts +5 -1
- package/dist/engineCapsCache.js +69 -8
- package/dist/engineClosedSets.d.ts +2 -0
- package/dist/engineClosedSets.js +3 -0
- package/dist/engineErrorCodes.d.ts +17 -0
- package/dist/engineErrorCodes.js +47 -0
- package/dist/engineNoticeCodes.d.ts +14 -0
- package/dist/engineNoticeCodes.js +71 -0
- package/dist/executionLaneCapability.js +2 -0
- package/dist/gateOutcome.js +2 -17
- package/dist/gateVocabulary.d.ts +2 -4
- package/dist/gateVocabulary.js +3 -11
- package/dist/generated/engineFactTables.d.ts +27 -0
- package/dist/generated/engineFactTables.js +128 -0
- package/dist/generated/engineNoticeTables.js +3 -0
- package/dist/generated/settingsSchemaTables.d.ts +8 -0
- package/dist/generated/settingsSchemaTables.js +40 -0
- package/dist/hitl/allowRuleShadow.d.ts +21 -0
- package/dist/hitl/allowRuleShadow.js +167 -0
- package/dist/hitl/askClassPair.d.ts +14 -0
- package/dist/hitl/askClassPair.js +42 -0
- package/dist/hitl/askGateWire.d.ts +1 -1
- package/dist/hitl/askGateWire.js +2 -1
- package/dist/hitl/askSurvivesPosture.d.ts +5 -0
- package/dist/hitl/askSurvivesPosture.js +17 -0
- package/dist/hitl/automaticAnswerVerdict.d.ts +21 -0
- package/dist/hitl/automaticAnswerVerdict.js +143 -0
- package/dist/hitl/crashConverged.d.ts +8 -0
- package/dist/hitl/crashConverged.js +58 -1
- package/dist/hitl/crashConvergedNotice.d.ts +4 -0
- package/dist/hitl/crashConvergedNotice.js +57 -0
- package/dist/hitl/frameRouter.d.ts +2 -0
- package/dist/hitl/frameRouter.js +66 -14
- package/dist/hitl/gateLedger.d.ts +6 -0
- package/dist/hitl/gateLedger.js +34 -5
- package/dist/hitl/hitlBridge.d.ts +7 -4
- package/dist/hitl/hitlHostSurface.d.ts +2 -0
- package/dist/hitl/hitlHostSurface.js +7 -0
- package/dist/hitl/livePendingAsk.js +24 -5
- package/dist/hitl/parkResolver.d.ts +7 -2
- package/dist/hitl/parkResolver.js +21 -7
- package/dist/hitl/persistedRulesWire.d.ts +4 -1
- package/dist/hitl/persistedRulesWire.js +9 -2
- package/dist/hitl/planReviewWire.d.ts +1 -1
- package/dist/hitl/planReviewWire.js +19 -5
- package/dist/hitl/replayedApproval.d.ts +21 -0
- package/dist/hitl/replayedApproval.js +89 -0
- package/dist/hitl/sessionPolicyDeliverable.js +20 -2
- package/dist/hitl/sessionPolicyWire.d.ts +13 -0
- package/dist/hitl/sessionPolicyWire.js +75 -2
- package/dist/hitl/suspendedReopen.js +2 -2
- package/dist/hitl/toolApprovalWire.d.ts +9 -1
- package/dist/hitl/toolApprovalWire.js +40 -40
- package/dist/hookMatcherVerdict.d.ts +29 -0
- package/dist/hookMatcherVerdict.js +266 -0
- package/dist/humanTurn.d.ts +91 -0
- package/dist/humanTurn.js +252 -0
- package/dist/humanTurnRead.d.ts +105 -0
- package/dist/humanTurnRead.js +331 -0
- package/dist/index.d.ts +38 -11
- package/dist/index.js +27 -8
- package/dist/inheritEnvWire.js +4 -5
- package/dist/liveModelCatalog.d.ts +2 -0
- package/dist/liveModelCatalog.js +51 -3
- package/dist/mcpLiveness.js +2 -1
- package/dist/memoryVerbsWire.d.ts +1 -1
- package/dist/memoryVerbsWire.js +3 -0
- package/dist/model/catalog.js +2 -1
- package/dist/model/providerPresets.d.ts +3 -1
- package/dist/model/tierVocabulary.d.ts +2 -1
- package/dist/model/tierVocabulary.js +3 -8
- package/dist/peerFrames.js +2 -2
- package/dist/permissionRuleIssue.d.ts +1 -1
- package/dist/permissionRuleIssue.js +31 -9
- package/dist/permissionsAllowGrantCapability.d.ts +2 -1
- package/dist/permissionsAllowGrantCapability.js +11 -2
- package/dist/permissionsDeclaration.d.ts +29 -0
- package/dist/permissionsDeclaration.js +155 -66
- package/dist/pluginHooksWire.js +2 -11
- package/dist/promptDelivery.d.ts +11 -3
- package/dist/promptDelivery.js +164 -29
- package/dist/promptProfileWireCaps.d.ts +2 -1
- package/dist/protocolSegment.d.ts +9 -0
- package/dist/protocolSegment.js +28 -0
- package/dist/providerRejection.d.ts +1 -0
- package/dist/providerRejection.js +20 -0
- package/dist/readDenyTiers.d.ts +10 -0
- package/dist/readDenyTiers.js +29 -0
- package/dist/request/taskRequest.js +3 -17
- package/dist/resumeRefusalCopy.d.ts +11 -0
- package/dist/resumeRefusalCopy.js +61 -4
- package/dist/rewindArchiveCapability.js +4 -4
- package/dist/rewindWireCaps.d.ts +2 -1
- package/dist/rewindWireCaps.js +19 -2
- package/dist/ruleCompileVerdict.d.ts +2 -0
- package/dist/ruleCompileVerdict.js +13 -0
- package/dist/ruleRemovalConsequence.d.ts +2 -1
- package/dist/runCancelContext.d.ts +12 -0
- package/dist/runCancelContext.js +83 -1
- package/dist/seam.d.ts +2 -0
- package/dist/seam.js +1 -1
- package/dist/seatContract.d.ts +2 -1
- package/dist/sessionMemoryStatus.d.ts +2 -4
- package/dist/sessionSyncFileHistoryCapability.d.ts +18 -0
- package/dist/sessionSyncFileHistoryCapability.js +50 -0
- package/dist/skillToolListsCapability.d.ts +18 -0
- package/dist/skillToolListsCapability.js +50 -0
- package/dist/sqlEngineCapability.js +1 -8
- package/dist/steerPriorityCapability.d.ts +18 -0
- package/dist/steerPriorityCapability.js +80 -0
- package/dist/steerReceipt.d.ts +9 -0
- package/dist/steerReceipt.js +25 -0
- package/dist/subagent/engineSubagentSteer.js +2 -9
- package/dist/supportFloor.js +2 -2
- package/dist/taskRequestWords.d.ts +7 -1
- package/dist/taskRequestWords.js +18 -8
- package/dist/toolHistoryBadTurn.d.ts +1 -0
- package/dist/toolHistoryBadTurn.js +89 -0
- package/dist/toolHistoryMismatch.d.ts +2 -1
- package/dist/toolHistoryMismatch.js +19 -6
- package/dist/toolResult.d.ts +8 -0
- package/dist/toolResult.js +47 -3
- package/dist/types/engineState.d.ts +2 -12
- package/dist/userAttachmentEnvelope.d.ts +61 -0
- package/dist/userAttachmentEnvelope.js +204 -0
- package/dist/userInvokedSkillsCapability.d.ts +18 -0
- package/dist/userInvokedSkillsCapability.js +50 -0
- package/dist/wireFailureShape.d.ts +3 -0
- package/dist/wireFailureShape.js +8 -0
- package/dist/wireRefusalCopy.d.ts +6 -0
- package/dist/wireRefusalCopy.js +26 -3
- package/dist/workflowsJournalCapability.d.ts +18 -0
- package/dist/workflowsJournalCapability.js +50 -0
- package/dist/writeProtectionCapability.d.ts +2 -4
- package/docs/INTEGRATION-CLIENTS.md +1489 -16
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -49,6 +49,371 @@
|
|
|
49
49
|
> 挡住 ⇒ 本批把它机械化——④a0 对 `pending` 行**要求段头已是日期形**(`(未发布)` 直接红),阶段一
|
|
50
50
|
> commit 漏转在发布前就红,不再靠人记。
|
|
51
51
|
|
|
52
|
+
## 0.92.0(2026-10-07)
|
|
53
|
+
|
|
54
|
+
> 主题:⟨发版时汇总⟩
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
|
|
58
|
+
- **「这一只审批帧现在还能不能决」判定口 `replayedApprovalDisposition(frame, basis)` + 型 `ReplayedApprovalDisposition` / `ReplayPendingBasis`**(CC-367;接入文档 **§118 RP-1**):账本(`runs.events`)里读回来的审批帧只说「当时问过」,现在还在不在等只有一个读法 —— 这一帧到手之后读的 `GET /v1/approvals`;开流 preamble 是同一份清单在开流那一刻的快照。三态:`live`(`basis`:`live_leg` = 帧不带账本位置 / `preamble` = 本连接开流时列着 / `pending_list` = 清单 `livePending` 列着)· `decided`(完整清单里没有它;同一回体 `crashConverged` 上有这一 `approvalId` 的行时带 `cause`,词表 = `CrashConvergedRow['cause']`)· `unknown`(`why`:`unreadable_frame` / `no_approval_id` / `not_read` / `list_unreadable` / `list_not_reported` / `list_incomplete`)。正面证据取并集;preamble 没列永不推出 `decided`;`basis.approvals` 必须是这一帧到手之后读的(调用方的责任,不跨帧复用读数)。「帧不带账本位置」= `id` 与 `seq` 两键都缺席或为 `null`;任一键在场(哪怕值坏形:空串 / `false` / 对象)都按账本帧核清单。纯函数,永不抛,每次交新的冻结对象;帧读不动 ⇒ `unknown`,不落 `live`。流内审批帧(`tool_approval`)本包已内建同一判定;只经 chrome `approval_request` 出卡的宿主对账本重放回来的卡帧调它。「完整清单里没有」要证得出完整:`livePending` 是回体的自有数据属性、数组成员是自有数据属性(洞 / 取值器成员 ⇒ 证不了)、长度读一次并在读完后复核 —— 证不了 ⇒ `unknown`(`list_unreadable`),不答 `decided`。这条加固在待决清单的共享读法上,审批快照(`startApprovalsFeed`)同读:这几形此前洞按坏行计数、其余照常提交,现在整次不提交、发「这次取不到」。JSON 回体零变化。
|
|
59
|
+
- **`AskGateWireDeps.onReplayedApproval?(frame, disposition)`**(CC-367;**§118 RP-2**):本包没有当作待答的问呈卡的那只账本审批帧,连同判定交回宿主(`decided` / `unknown` 各一次;`live` 不调,它照原路呈卡、结局经 `onToolApprovalOutcome`)。缺席零变化;抛错 / reject 被吞。
|
|
60
|
+
- **`REPLAYED_APPROVAL_LIST_UNREADABLE_WARN_TEXT`**(CC-367;**§118 RP-2**):清单没读成时本包上屏的那一句(经 `installHitlHostSurface` 的宿主通知面,10 秒自清):`Could not read the pending-approval list, so an approval request read back from this run's event log was not raised as a question, and no decision was sent for it.`
|
|
61
|
+
- **内联图片被拒码 `CONFIG_IMAGE_INVALID`(`'config.image_invalid'`)与出路句 `imageInvalidFailureNoteOf(code)`**(CC-369 ⑦;接入文档 **§118 DP-6**):引擎 7.42.0 起,随消息内联发来的一张图片过不了读图那条车道的准入(类型 / 解码后字节数与文件签名 / base64 长度)时,在第一次调模型之前把这一跑落成 `failed`、`terminal.code` 为这一码,什么都没发给模型。码登记进配置拒绝识别表 `CONFIG_REFUSAL_CODES`(前缀谓词本来就认它);出路句只按码判(码从 `readRunTerminal` 读数的 `failed.code`、结果帧的 `_sema_error_code` 取),别的码 / 非串 ⇒ `undefined`,不抛;句子说「这一跑没起来、哪一张怎么不对看引擎那句、什么都没发给模型、换掉那张图再发」,不复述引擎那句话。老一代引擎(< 7.42.0)不铸这一码:同一张坏图在那里落成模型供应方的报错,读口答不到。
|
|
62
|
+
- **对一只已在没有人决定的情况下收场的流内问作答(410 `gone.ask`)的读口与一句话:`askGoneFromError(e)` + 型 `AskGoneDetail` + `askGoneContent(detail)` + 码 `ASK_GONE`**(CC-371;接入文档 **§118 SV-18**):服务端 7.116.0 起,local 车道重启后对上一世那张卡作答也落这一形(`state: "VOID"` + `deniedReason` `crashed_before_park` / `shutdown_before_park`)。读口只按码判,交 `state`(`VOID` / `DENIED`)、`deniedReason`(按组:`DENIED` 只认路由失败那一词,`VOID` 非空串原样)与 `holderGone`(「承载这一问的进程没了」两词之一,与 `GET /v1/approvals` 崩溃收敛行的成因、重放审批判定口的成因是同一张闭集表)。句子三段:发生了什么 · 这次决定没被施加 · 出路(进程没了 ⇒ 重新提交任务;路由失败的拒绝 ⇒ 拒绝成立;别的撤卡 ⇒ 没有谁再等这个答复、还需要这一步就等它再问或重新提交;终态读不出 ⇒ 重取待决列表);句子零机器词,不复述归因词(原词在读数 `deniedReason` 位)。
|
|
63
|
+
- **run 死亡判决三码与出路句:`RUN_STALLED` / `RUN_ORPHANED` / `APPROVAL_EXPIRED` + 闭集 `RUN_DEATH_VERDICT_CODES`(型 `RunDeathVerdictCode`)+ `runDeathVerdictNoteOf(code)`**(CC-371;**§118 SV-19**):服务端 7.116.0 起 `GET /v1/runs/:id` 的 `errorCode` 多三个取值。两类出路句:前两码 = 跑这条 run 的引擎进程没了(重启或失联);`approval.expired` = 停在审批上太久被收掉;两句都说不是请求本身的错、这一跑续不上了、把工作作为新任务再提交。只按码判,别的码 / 无码 ⇒ `undefined`。
|
|
64
|
+
- **运维名单为空:码 `CAPABILITY_OPERATOR_PRINCIPALS_REQUIRED` 与运维门两句 `operatorGateRefusalContent(cause)`(型 `OperatorGateRefusal`)**(CC-370 / CC-371;**§118 SV-20**):记忆治理五口与持久规则口共用 `operator_only`(名单上没有调用方)/ `operators_unconfigured`(这台部署没有配置任何运维身份)两词各一句,都说「什么都没做」。
|
|
65
|
+
- **四只能力位读器**(CC-371;**§118 SV-22 / SV-23**):`sessionSyncFileHistory`(会话同步的文件历史 blob 面)/ `workflowsJournal`(workflow 执行日志口)/ `userInvokedSkills` / `skillToolLists`(技能请求面两只恒真版本位),各一族 `project*Capability` / `noteEngineCapsFor*` / `observed*` / `*Available` / `*DoctorDetail` / `forget*Reading` + 复位钩 + 读数型;四态 `unobserved` / `not_reported` / `absent` / `present`。前两只缺席 = 判不出(老服务端把那几口算在 `sessionSync` / `workflowsList` 里),后两只缺席 = 老服务端的否定(别发点名键 / 清单不被读)。
|
|
66
|
+
- **core 值级端口第十一件 `mintNamespacePrefix`**(`CoreValuePorts` +1 成员、`CORE_VALUE_PORT_NAMES` 十 → 十一、读口 `mintNamespacePrefix(ns, peer)`;CC-371;**§118 SV-24**):协议服务器 / 对端段的铸名前缀,宿主从 `@sema-agent/core` 原样装。
|
|
67
|
+
- **审批卡 `rememberRefused?: true`**(`ApprovalCardRequest` 与 `ToolApprovalFrame` 各 +1 可选位;CC-371;**§118 SV-25**):服务端 7.116.0 起这张卡上「本会话放行」不会被记住时带这一位(运维治理层的门 / 必须真人逐次批 / 强制 / 应答还授予这一次之外的东西);活卡帧与待决列表行两条路径进同一卡位,自有键 ∧ 严格 `true` 才上卡。审批帧键镜像 34 → 35。
|
|
68
|
+
- **会话规则旧名拒体两格**(CC-371;**§118 SV-26**):会话规则写口 `400 rules.legacy_tool_name` 的失败臂与两只 `legacy_tool_name` 结局 +`verdict?`(型 `LegacyToolNameVerdict`:`retired` / `unprefixed_namespace`)+ `currentName?`(退役名的现名,服务端 7.116.0 起拒体带)。
|
|
69
|
+
- **后台子代 `TaskOutput` 正文头部的 `state:` / `error:` 两行进槽位:`parseModelFacingTaskOutput` 的 `agent` / `unknown` 两臂加可选槽 `state` / `error`**(CC-376;接入文档 **§118 TO-1**):引擎 7.41.0 起后台子代的 `TaskOutput` 正文在 `status:` 行之后多一行 `state: <摘要>`(状态词 · 最近活动 · 停驻时的审批卡状态);失败的子代还有一行 `error: <句>`(这一行老引擎就有,此前不进任何槽位)。两只槽是**缺席式**可选键(行不在场 ⇒ 键不存在,不是「键在、值 `undefined`」)。读法**位置式**:`status:` 行必须是正文第一行(值不跨行:该行里除空格 / 制表符外没有别的空白,含 U+2028 / U+2029),只取它紧邻之后的 `state:` → `error:` 两行(顺序固定,缺哪行缺哪个槽),再往后的行(结果段、说明句、多行错误的续行)一概不读 —— 子代结果正文里写的 `state:` / `error:` / `status:` 字样进不了槽位。值 = 去掉行首键与一个空格之后的整行内容(`\n` / `\r\n` 行尾不在值里;行尾空白原样、不按长度截断、不解析行内结构)。只有**规范行**进槽位:值非空白,且不含 `\r` `\n` U+2028 U+2029 U+0085;第一条不规范的行(空值 / 全空白值、值内带 Unicode 行终止符、键后无空格……)起整行不进槽位 —— `agent` 臂上落进 `headRest`(见下一条),`unknown` 臂仍只是缺席。`bash` 臂不读这两行。没有这两行的输入(老引擎不带错误的各形、`bash` 臂、认不出的文本)上三臂的键集与 0.91.0 逐字节同;有 `error:` 行的老引擎形多一只 `error` 键;`agent` 臂上正文还有多余行时另多 `headRest`(同版的下一条)。在跑 / 停驻 / 无结果文本三形仍是 `unknown` 臂(调用方回落原文不变),这三形上 `state` / `error` 槽是新读数。卡片投影(`toolUseResult.task` 的各键)取用的槽位不变,本版不接这两槽。读法登记为 `PROTOCOL_MARKERS.taskOutputHeadSlots`(根公面名不变,表成员 +1)。
|
|
70
|
+
- **后台子代 `TaskOutput` 读面再交两只槽:`parseModelFacingTaskOutput` 的 `agent` 臂加缺席式可选槽 `resultNote` / `headRest`**(CC-379;接入文档 **§118 TO-2**):`resultNote` = 结果段标签行 `--- result (…) ---` 括号里的原文(不含括号;今天引擎只铸 `partial — produced before the task was stopped` 一种,本包不解析、不枚举成闭集;空括号交空串);标签行没有括注 ⇒ 键不存在。`headRest` = `status:` 行之后、结果段标签行之前**没被映射进 `state` / `error` 的全部字节**(原样、保留行界、末尾换行留着:多行错误的续行、将来引擎新加的头部行、位置形不符而没读进槽位的行;`status:` 行不领头时是标签行之前的整段);头部每一行都进了槽位 ⇒ 键不存在。**拼回不变式**:`agent` 臂上「status 行 + state 行 + error 行 + `headRest` + 结果段标签行(含括注)+ `output`」逐字节拼得回去壳正文,差异只有四条规范化 —— status 行写成 `status: <槽>` / 领头头部三种行的 `\r\n` 重建成 `\n` / 标签行末尾的 `\n` 有无不区分 / 整段末尾空白(`output` 既有的 trimEnd);拼不回去 = 读口丢了字节。`unknown` / `bash` 两臂不加这两槽;没有这些行的输入(老引擎不带错误与括注的各形、`bash` 臂、认不出的文本)三臂键集与 0.91.0 逐字节同 —— 前提是 status 行合格(正文第一行、行内只有空格 / 制表符、行尾 `\n` / `\r\n`);status 行畸形的形(行内夹不换行空格、U+2028 一类行终止符,或前面还有别的行)`status` 槽照既有读法,那一行另落 `headRest`。**读法相对本版上一条收紧一处**:值内带 U+2028 / U+2029 / U+0085 的行、空值 / 全空白值的行,不再是「取第一段 / 槽缺席但后一行照读」,而是整行不进槽位、整行落 `headRest`(否则被丢的字节无处安放);槽位的其余读法不变。读法登记 `PROTOCOL_MARKERS.taskOutputResultNote`(表成员 +1,根公面名不变)。端上「取结果段正文是否丢事实」这类判据改读四槽即可,不必再数行(§118 118d)。
|
|
71
|
+
- **自动车道单一判定 `automaticAnswerVerdict(card, lane, facts?)` + 型 `AutomaticAnswerLane` / `AutomaticAnswerFacts` / `AutomaticAnswerRoad` / `AutomaticAnswerUnknownWhy` / `AutomaticAnswerVerdict`**(CC-368;接入文档 **§118 PV-1**):「这张卡能不能被常驻的放行替人答掉」一只口答两条车道 —— `mode_posture`(常驻放行模式)/ `standing_rule`(常驻 allow 规则)。把卡上的问类集合按引擎问类仲裁表(构建期生成)以引擎同一规则折叠,读本车道那一列;可放只有一条路径(问类集合成对合形 ∧ 全部类名在表 ∧ 本车道那一列不拦 ∧ 卡上没有任何必问证据 ∧ 姿态车道宿主报没命中自己的 ask 规则),其余答 `must_ask`(带 `road`)或 `unknown`(带 `why`;处置同必问)。正向必问证据(出身六词 / 治理位;姿态车道另有两个强制词;规则车道另有真人位、强制族、让位披露)不需要问类集合;表外类名不推出可放;姿态车道放行了要披露的那一类(规则读不出)时带 `releaseReason`。永不抛、不改入参、返回冻结。读法按方向分两把尺:能把结果推向可放的量 —— 问类集合与宿主读数 `settingsAskRuleMatched` —— 只认自有数据属性(宿主读数在原型链上、是取值器、读的时候抛或不是布尔 ⇒ `host_not_reported`);只会推向必问的证据(出身词、真人位、治理位、强制位与强制词、缺席词、让位披露)按普通属性读,原型链上的也算,读的时候抛 ⇒ `unknown`。JSON 形入参上两种读法同答。
|
|
72
|
+
- **allow 层让位披露两代同一只读口:`readApprovalAllowRuleShadow(card)` / `approvalAllowRuleShadowed(card)` + 型 `ApprovalAllowRuleShadow` / `ApprovalAllowRuleShadowMember` / `AllowRuleShadowedWireMember`;卡入参 `ApprovalCardRequest.allowRuleShadow?`;帧型 `ToolApprovalFrame.allowRuleShadowed?`**(CC-401;接入文档 **§118 AR-1 / AR-2 / AR-4**):服务端 7.117.0 起「allow 层有成员命中了这次调用、却清不掉这只 ask」换成结构化的 `allowRuleShadowed: [{ member, entries, omitted? }]`(成员 `hook` / `deployment` / `persisted` / `skill` / `request`;活卡帧顶层 / 待决列表行的帧 / 耐久行 `riskDescriptor` 下),旧键删、零别名。读口读两代(老一代:活卡帧 `persistedRuleShadowed` / 耐久行 `riskDescriptor.shadowedRule`,归一成一个 `persisted` 成员;两代都在以新键为准),三条卡腿盖同一只归一读数;缺席 ≠「你没有规则」,坏形不猜、不折成空、仍算证据,闭集外成员原样保留。条目是 UNTRUSTED-for-display。审批帧键镜像 +1。这是披露轴:让位的硬保证在问类(ask 规则命中的卡 `classes` 含 `ask_rule`,由 `automaticAnswerVerdict` 判),让位证据口是并列的正向证据、只收紧。
|
|
73
|
+
- **steer 档位经包:能力位读器 `fleet.steerPriority`**(`projectSteerPriorityCapability` / `noteEngineCapsForSteerPriority` / `observedSteerPriority` / `forgetSteerPriorityReading` / 判据 `steerPriorityMode` / `steerPriorityDoctorDetail` + 型 `SteerPriorityReading` / `SteerPriorityMode`;CC-374;接入文档 **§118 ST-1**):服务端 7.116.0 起 steer 请求体的 `priority`(`now` / `next` / `later`)交给引擎三档,能力位由 `advisory`(收下回显但不生效)变 `engine`。三态读数(`unobserved` / `not_reported` / `present{ word }`),词按开集收;`fleet: false`(这台部署没有 fleet 面)读 `not_reported`。判据只认精确的 `engine` / `advisory`,其余一律 `unknown`。
|
|
74
|
+
- **steer 体的唯一铸点 `steerBodyOf(input, reading)`**(+ 型 `SteerBody` / `SteerBodyInput`;`ControlRouter.steer` 第三参具名为 `ControlRouterSteerOptions`,+`priority?` / `steerPriority?`;CC-374;**§118 ST-2**):`next` 与不带档位恒不进体(体与 0.91.0 逐字节同);`now` / `later` 只在读数为 `engine` 时进体;读数不是 `engine` 时这一条不发,抛 `ControlSafetyError`(`priority_not_applied`,`advice` 按「这台不生效」/「不知道生不生效」分两句),档位不是三词之一或入参读不出时抛 `steer_input_invalid`。拒的时候手里没有体可发:不要把它当片段展开拼进自己的体。路由器与自己拼请求的客户端走同一只,本包自愈那一路(运行中三选卡选「发给在跑的 run」)也从它取体(不带档位,体与 0.91.0 逐字节同);路由器不内建等待 —— 会话第一拍先 `engineCapsSettled(baseUrl, { withinMs })`、再取读数、再发。
|
|
75
|
+
- **steer 回执唯一读口 `readSteerReceipt(receipt)`** + 型 `SteerReceiptReading`(CC-374;**§118 ST-4**):`delivery` / `status` / `messageId` / `priority`(回显),只认自有数据位、永不抛。`priority` 缺席 = 没取得有效回显,这一发带没带档位以出站体为准。
|
|
76
|
+
- **一次真切断的通告 `task.turn_interrupted`:读器 `readTurnInterrupted` + 用户面一句 `turnInterruptedNotice` + 对账判词 `steerCutVerdict(notice, messageId)`**(+ 型 `TurnInterruptedFactsView` / `SteerCutVerdict`;按码派发表 +1 码;CC-374;**§118 ST-5**):三臂 —— 一条 `now` 档输入切的(无 `cause`、带 `inputId`,steer 与带正文的 interrupt 同形)/ 裸停切的(`cause: "user_halt"`)/ 认不出;判词只有在通告的 `inputId` 与回执的 `messageId` 两边都是非空串且相等时才答 `this_input`,回执还没到(或老回执没有 `messageId`)答 `unattributed`。句子只说这一轮被切断,不提审批卡。
|
|
77
|
+
- **steer 拒收处置句带两半 `happened` / `nextStep`**(`SteerRefusalAdvice` +2 位,`advice` 恒为前半 + ` — ` + 后半;CC-353;**§118 ST-7**):代用户把消息留在自己队列里的客户端,用前半接自己的下一步。
|
|
78
|
+
- **记忆作用域读面再交两只键:`mounted` 臂的 `projectKey` 与每一行的 `shadowed`**(CC-178;接入文档 **§118 MK-1 / MK-2 / MK-3**):终帧 `_sema_effective_memory_scopes`(`EffectiveMemoryScopesView`)此前只读 `scope` / `origin`;引擎同一份 `effectiveMemoryScopes` 上还有两只键,服务端整只原样转发、本包没读。**`projectKey`**(只在 `mounted` 臂)= 部署为这一任务声明的项目身份,恰一臂 `{ scope }` 或 `{ absent }`(`absent` 是部署「看过、没找到」的说法,开集透传;今天引擎的词是 `not_git` / `bare` / `unreadable`);**缺席 = 部署没声明,与 `{ absent }` 不同**。**`scopes[].shadowed`** = 这一层里有多少条目被会话的写入家按名字从默认读面退下(按 id 与 `includeShadowed` 仍读得到);正整数,在场当且仅当非零,从不在写入家自己那一行;是挂载那一刻的快照,之后的质疑 / 墓碑可使实际答案更小。坏形(不是恰一臂 / 空白 / 非串 / 非正整数 / 写入家那一行带它)与取值抛 ⇒ **只这一键不铸**,不折成 0 / 空串 / 空对象,不拖垮整臂、不丢这一行。视图型 additive 加两个可选成员、新增两个类型名 `EffectiveMemoryProjectKey` 与 `EffectiveMemoryScopeRow`(`scopes` 的元素型,此前是内联匿名形),运行期导出名 +0;不带这两键的终帧,读数与 0.91.0 逐字节同。`shadowedBy` / `shadowedHidden` 两键**不交付**:引擎只铸在记忆工具结果的内部明细里,不进终帧或工具结束帧,服务端与 sdk 型面零铸点(§118 MK-3)。
|
|
79
|
+
- **取消终局的成因读口 `readAbortCause(frame)` + 三词表 `ABORT_CAUSES` + 型 `AbortCause` / `AbortCauseReading`**(CC-295;接入文档 **§118 AC-1**):服务端 7.112.0 起,在它自己中止一条 run 时铸出的取消终局上留下成因词 `abortCause` —— `client_disconnected`(流式提交的连接断了)/ `ask_park_grace_exhausted`(断连那一刻有待决的问,宽限内没能停成可续的停驻)/ `cancel_verb`(取消请求)。此前三件事在终局上逐字同形。一只读口认四个落点(run 记录的 `result` / 流与事件日志的 `done.result` / 同步提交 200 体顶层 / 事件日志里没有 `done` 可落的 `failed` 行顶层),只在取消终局(`failed` + 码 `cancelled`)上读;答 `{ kind: 'known', cause }` / `{ kind: 'unrecognized', word }`(更新的服务端加的词,原词;不折成三词之一)/ `undefined`(缺席 = 成因未记录:7.112.0 之前的服务端或行、不是服务端那次中止铸的终局;坏形同答)。永不抛。
|
|
80
|
+
- **成因那一句 `abortCauseNoteOf(frame)`**(CC-295;**§118 AC-3**):入参同读口;三词各一句、表外词一句通用句(不回显原词),带现场时句尾补「跑了多久 / 最后一次引擎动静离停下多久」(`(ran 45.0s; last engine activity 1.2s before the stop)`,缺哪只省哪只);不是带成因的取消终局 ⇒ `undefined`。三句逐字:`Cancelled: a cancel request to the engine stopped this run (cause cancel_verb) — not an engine error.` · `Aborted: the stream connection to the engine dropped, and the engine stopped the run (cause client_disconnected) — not an engine error.` · `Aborted: the connection dropped while a question or approval was pending, and the run could not be parked for later resumption in time (cause ask_park_grace_exhausted) — not an engine error.`;通用句 `Aborted by the engine for a reason this client does not recognize — not an engine error.`
|
|
81
|
+
- **`classifyRunAbortCause` 的 cancelled 臂 +`cause?`**(CC-295;**§118 AC-2**):与 `context` 并列,值同 `readAbortCause`;成因缺席 ⇒ 键不在。
|
|
82
|
+
- **结果帧超集键 `_sema_abort_cause`**(CC-295;**§118 AC-4**):取消终局带成因时,错误信封带那个词(原样;三词之一或本版不认识的词);缺席 = 不是带成因的取消终局,不是「客户端取消」。
|
|
83
|
+
|
|
84
|
+
### Changed
|
|
85
|
+
|
|
86
|
+
- **开发依赖 `@sema-agent/core` 换钉 `~7.42.1`**(构建期,不出包;7.42.1 相对 7.42.0 只多一处修正 —— 一条 steer 的优先级缺席与写明 `next` 读成同一条,生成表内容不变;不进 `dependencies` / `peerDependencies`;CC-369 / CC-338;接入文档 **§118 DP-1**)。生成表随之重生:
|
|
87
|
+
- 通告码册 85 → 86:+`permission.allowed_tool_not_granted`(受众 user、铸方 engine;allow 列表里读成「什么都不授予」的条目那一枚通告)。只登记、不加事实读器(端渲引擎给的 message)。引擎 7.41.x 铸的旧名 `skills.allowed_tool_not_granted` 本包从没登记过,仍是册外码,受众按保守缺省 operator(与它在 7.41.x 上的受众同)。
|
|
88
|
+
- 问类仲裁表 `MODE_ARBITRATION` +1 类 `requires_user_interaction`(五位逐位同引擎)。
|
|
89
|
+
- 新生成四张闭集(技能授予来源 / allow 条目读成什么都不授予的理由 / allow 层成员五词 / 规则工具名判词),只进构建期生成物,**不上根入口**(本版没有读它们的读口)。
|
|
90
|
+
- **权限规则装配口:allow 桶的整工具名改按收紧读法问规则编译器**(CC-369 ④;**§118 DP-2**):引擎 7.42.0 起规则编译器不再接 allow 读法(每条 allow 都答 `unsupported.allow`),本包也不再这样问 —— allow 桶的整工具名与 deny 桶同问一只名字文法判定(deny 读法),内容形 allow 一律不投、不再为它问编译器。**投出集合与 0.91.0 逐字节同**:受理这只桶的服务端(能力位为真的那一代)用的老一代编译器,对整工具名的 allow 读法与 deny 读法逐名同判;宿主装的是老一代还是 7.42.0 的编译器,答案相同。报告口 `permissionsDeclarationReport` 唯一可见变化:编译器答不上来(抛 / 回非数组)时,内容形 allow 的理由由 `judge_failed` 改为 `content_form_not_grantable`(两种都不投)。
|
|
91
|
+
- **`PermissionRuleView.behavior` 收窄为 `'deny' | 'ask'`**(型面窄变一处;CC-369 ④;**§118 DP-3**):与引擎 7.42.0 编译器入参同值域。只有往本包读口 `validatePermissionRules` 里传 `behavior: 'allow'` 的写法编译红(本机检索四端零处);老一代引擎的同名函数入参更宽,照样装得进端口。
|
|
92
|
+
- **规则 lint 拒因码表 `PERMISSION_RULE_ISSUE_CODES` −3 +3**(仍十五码;CC-369 ⑤;**§118 DP-4**):−`unsupported.bash_prefix` / `unsupported.file_glob` / `invalid.allow_param_rule`(引擎 7.42.0 退役:三码只为「策略里的 allow 规则这一形不收」而设)+`unsupported.allow` / `invalid.behavior` / `invalid.entry_type`。`permissionRuleIssueDetail` 对三只新码各一句;退役三码老一代引擎仍铸,它们那三句与 0.91.0 逐字节同(不认领新义),只是不再列在码表里。
|
|
93
|
+
- **上游事实表改由构建期生成(九处本包手抄 → 生成物)**(CC-341 A 组;**§118 DP-5**):`SETTLEMENT_KIND_WORDS` / `CLASSIFIER_DENY_CAUSES` / `AUTO_MODE_UNAVAILABLE_CAUSES` / `TIER_ORDER` / `CC_TIER_ALIASES` / `PEER_MODE_CLASSES` / `MCP_LIVENESS_STATES` / `PERSISTED_RULE_BEHAVIORS` 与后台代理句柄形(模块私有),值改成从已装开发依赖引擎包根同名常量生成的冻结对象;公面名、成员与顺序不变。已发导出的可观察变化两处:`CC_TIER_ALIASES` 由可写对象变成冻结对象(就地改写在严格模式下抛);`Tier` 型由档位序表派生(同五词)。
|
|
94
|
+
- **设置契约事实改由构建期生成(六处)**(CC-341 E 组 + CC-358;**§118 DP-5**):hooks matcher 受理判定 `hookMatcherVerdict` 的事件范围(属主 engine ∧ matcher 读工具名的三只工具事件;已知限制 KL-451 随之销)、引擎点亮的 hook 事件表 `ENGINE_FIRED_HOOK_EVENTS`、已知凭据字面形、档位组名的形、预算键三类与按模型键、模型条目接口词,改从已装开发依赖 `@sema-agent/settings-schema` 的包根生成(运行期仍不依赖它);值不变。模型条目接口词有了具名型 `ModelApiWord`(公面类型名 +1),`ProviderPreset.api` / `SeatCatalogEntry.api` 改用它(同两词)。已发导出的可观察变化一处:`ENGINE_FIRED_HOOK_EVENTS` 由可写数组变成冻结数组。
|
|
95
|
+
- **六处手写的上游同形型改取上游型**(CC-341;**§118 DP-5**):`RuleRemovalBehavior`(sdk `RuleBehavior` + 读不出臂)/ `WriteProtectionCapabilityView`(sdk `WriteProtectionCapability` 的三位)/ `HealthResponse`(sdk `EngineHealth` 的十一位)/ `MemoryStatusFacts`(sdk `SessionMemoryStatusResponse` 去掉路径回显)/ `PromptProfile`(sdk `TaskRequest['promptProfile']`)与结果帧错误子型的内部型(agent-types `SDKResultError['subtype']`);值域与键集逐一不变(编译期两向钉)。`MemoryStatusFacts.autoConsolidationArmed` 不再标只读(读法不变)。
|
|
96
|
+
- **记忆治理五口与持久规则口:运维名单为空的 501 读成「确知什么都没做」**(CC-370 / CC-371;**§118 SV-20**):服务端 7.116.0 起运维名单为空的部署上运维口由 403 `auth.operator_only` 改答 501 `capability.operator_principals_required`(对任何身份,先于授权)。`MEMORY_VERB_REFUSAL_CAUSES` 与 `PERSISTED_RULE_WRITE_REFUSAL_CAUSES` 各 +1 词 `operators_unconfigured`,`RulesFailure` +1 臂 `operators-unconfigured`(**闭集 / 联合 +1 员:做穷尽 `switch` 的端编译红一次**)。修前这一形落「说不清」(记忆五口 `unknown` / `server_fault`、规则口 `error`、写口 `unknown` / `unclassified`)。按码判,不合取状态码;老服务端同一形仍是 403、仍落 `operator_only`。
|
|
97
|
+
- **计划审阅决断撞「这台部署上这一面不可用」的 501 ⇒ 结局 `not_applied`**(CC-371;**§118 SV-21**):带 `capability.` / `feature.` 前缀码的 501(服务端 7.116.0 起没有持久审批底座的部署上计划审阅口答 501 `capability.checkpoint_store_required`,7.115.0 同一部署答 404)由 `unconfirmed` 改为 `not_applied`;无码 501 与别的 5xx 照旧 `unconfirmed`。
|
|
98
|
+
- **权限规则装配口:协议名的服务器段铸不出 —— allow 桶留下不投,deny / ask 照投并列进报告口新表 `unreachable[]`**(CC-371;**§118 SV-24**):服务端 7.116.0 起请求体 `settings.permissions.*` 里服务器 / 对端段不是引擎铸的那一段(段带 `*`、字符表外字符、超长、连续或尾下划线)⇒ 整请求拒收并点名该条。这类条目在任何一代上都匹配不到工具。`permissionsDeclaration` / `permissionsDeclarationReport` 用引擎同一只铸名函数(服务端受理口的判官)判段:allow 桶 ⇒ 留下(`PERMISSIONS_KEPT_REASONS` +1 词 `unminted_protocol_segment`,十二 → 十三;不授予是安全方向,也免得一条 allow 把整份请求带成拒收);deny / ask ⇒ **照投**,与 0.91.0 逐字节同(收紧规则不在投口悄悄消失,拒收让用户知道这条规则没在起作用),报告口 +1 张表 `unreachable[]`(型 `PermissionsUnreachableRule` `{ rule, bucket, mintedPrefix? }`;`mintedPrefix` = 引擎对这一段铸出的前缀,段带 `*` 时缺席),供端在发出前提示用户改写。铸名端口没装 ⇒ 判不出:allow 留下 `judge_failed`;deny / ask 照投、不进 `unreachable[]`(段带 `*` 那一形不问端口:allow 照留、deny / ask 照进表)。已发导出的可观察变化:allow 桶投出集合收窄;报告口多一键。
|
|
99
|
+
- **`isAlreadyResolvedFailure` 按码认领 410 `gone.ask`**(CC-371;**§118 SV-18**):带这一码的决断失败答 `true`(这只问已在终态、不能再决 ⇒ 续读流);服务端那一句不带「门早已决」扫词表里的词,修前答 `false`。决断出口的失败文字补 `askGoneContent` 那一句(与其余补句同一处组合)。本包自己的三条决断路径到不了这一码,认领是为了端拿自己那条流内问决断路径的失败问同一只判定。
|
|
100
|
+
- **人类提交装配口的两只引擎限值改读引擎常量:单张图片阈值收紧(行为面)、steer 字符上限零变化**(CC-373;接入文档 **§118 IM-1 / IM-2**):`encodeHumanTurn` 图片座位判定的「单张」一道此前读本包手写的 6 MiB(抄的是服务端受理口的私有常量),而引擎 7.42.0 起内联图片准入读的是它包根导出的 `MCP_IMAGE_MAX_BASE64`(5242880 字符)—— 同一件事两只数,base64 长度落在两数之间的一张图本包答份额 `full`、装 7.42.0 及以后引擎的服务端上这一发整个失败(引擎在第一次调模型之前以 `config.image_invalid` 拒)。本版这一道改读构建期从开发依赖引擎包根生成的常量(生成器第十批;不上根入口),手写 6 MiB 删除;steer 文本字符上限(16000,引擎 `MAX_PENDING_STEER_CHARS` 的手写镜像)同样改读、值同。座位三道的顺序、份额词与 `degraded.why` 词不变,合计 6 MiB(客户端政策)/ 张数 20 / 请求体 8 MiB 不动。**已发行为的可观察变化一处(收紧)**:单张 base64 长度在 (5242880, 6291456] 内的图,此前入座(份额 `full`),本版不入座、记 `image_too_large`、进 `degraded`(粘贴图:条目 `partial`;`@` 图:信封「像素未附」)。射程:装 7.42.0 及以后引擎的服务端上带这样一张图的提交本来就整个失败,本版把这一拒前移成逐张降级;老一代引擎(< 7.42.0)没有这一道准入,只有模型供应方接受这一量级的图时才是窄变(原先发得出去的图本版不发)。生成器对两只常量按「正安全整数」验形(缺名 / 非数 / 0 / 负 / 小数 / 超安全整数 ⇒ 拒生成并点名,不生成 0 / NaN / 缺席冒充上限)。
|
|
101
|
+
- **`askSurvivesPosture` / `askSurvivesStandingAnswer` 改为旧判法与新判定取较严者(只收紧;返回值各加可选位)**(CC-368;**§118 PV-2 / PV-3**):🔴 `askSurvivesPosture` 在卡上没有问类集合时不再答 `posture_may_answer`、改答 `unknown` —— **升级必改一处:卡口把卡上已有的 `askClass` / `classes` 交给判定**(只换钉不改的端,常驻放行模式在姿态那一步一律 `unknown`,按端自己的规则阶梯判);治理位与两个强制词(`operator_always` / `write_protection_unresolved`)和免疫类成为姿态车道的必问证据。`askSurvivesStandingAnswer` 另读出身六词、真人位、治理位、强制词与缺席词 `mandated`、让位披露与缺席词 `shadowed`,问类集合要成对。返回值:`must_ask` +`road`(姿态那只另 +`askClass`)、`posture_may_answer` +`releaseReason`、`unknown` +`why`;`askSurvivesPosture` 的 `by` 仍是两词闭集。两只旧口保留一版。
|
|
102
|
+
- **问类两位的成对读法加固**(CC-368;**§118 PV-4**):卡口两条腿、卡 → 座位过境口与新判定读同一只;成员只认自有数据属性(访问器成员 ⇒ 坏形),读的过程中长度变了 ⇒ 坏形,两位一起不上卡。JSON 形入参零变化。
|
|
103
|
+
- **卡入参 `persistedRuleShadowed` 改为派生位(保留一版)**(CC-401;**§118 AR-3 / AR-5**):由让位披露同一读数派生 —— 老一代 = 原串(与 0.91.0 逐字节同),新一代 = 第一个 `persisted` 成员的第一条;只有别的成员时缺席。披露改读 `allowRuleShadow` / `approvalAllowRuleShadowed`。🔴 端提服务端 7.117.0 的两个条件:让位 = 卡口把 `askClass` / `classes` 交给 `automaticAnswerVerdict`(7.117.0 起只有问类挡得住记住的规则代答);披露 = 同批换钉本版(0.91.0 在 7.117.0 上读不到任何让位披露)。
|
|
104
|
+
- **🔴 型面 BREAKING:`ControlRouter` 本地三档队列退役**(`enqueue` / `dequeue` / `pending` / `drainNext` 四方法与型 `QueuePriority` / `QueuedCommand`;CC-374;**§118 ST-8**):它的本地 `now` 只排到本地队首、不切断任何东西,与 steer 的 `now`(当场切断在飞的这一轮)同词反义;还没交出去的消息由各客户端自己的队列持有。再导出这两个型的地方编译红,删掉即可。
|
|
105
|
+
- **🔴 型面 BREAKING:两只回执读口 `readSteerDelivery` / `readSteerReceiptStatus` 退役**,改用 `readSteerReceipt(r).delivery` / `.status`(同一判据;读法改为只认自有数据位)(CC-374;**§118 ST-4**)。
|
|
106
|
+
- **🔴 型面 BREAKING:`ControlSafetyCode` +2 `priority_not_applied` / `steer_input_invalid`**(本地拒、零请求;CC-374;**§118 ST-3**):对这个联合做穷举 `switch` 的地方编译红,补两臂即可(运行期 `default` 臂照兜)。
|
|
107
|
+
- **`RunsResourceLike.steer` 体型 +`priority?`**(具名 `SteerBodyInput`;CC-374;**§118 ST-2**):宿主实现收更窄的体型照可赋;要把档位递到服务端,自己的 `steer` 包装要把体原样转过去。
|
|
108
|
+
- **同键重放 409 `steering.duplicate_input_id` 的处置句改口**(码不变;CC-374;**§118 ST-6**):修前句无条件劝「换一个 key 重发」—— 自服务端 7.116.0 起只换了档位也是这一码,照做会把同一条指令投两次;wire 上分不出是哪一面不同。新句:原来那条照旧有效;只有正文变了才换 key 发新正文,否则别重发。
|
|
109
|
+
- **steering 拒收处置句一族改写为可直接上屏的用户面一句**(CC-353;**§118 ST-7**):`queue_full` 由「别再发」改为「等停放的那几条投递掉之后再发」(那一条没被受理);`ambiguous_target` 子代给调用 id、workflow 面说清只能等同名的在跑只剩一只;`invalid_content` 由「写给接入方」改为「改写后再发」;`not_running` 去掉过时的「先解它的门」(停在决断上的 run 早已是停放、不是这一码);`cancel` 的 404 有了处置句(`message` 随之为「`runs.cancel 404` — 处置句」)。判别位与 `message` 前缀不变。
|
|
110
|
+
- **sdk 专类名 `SteeringQueueFullError` / `SteeringDuplicateInputIdError` 认得**(CC-374):错误码被传输层剥掉、只剩类名时,修前合成口答 `undefined`、路由器原样抛 sdk 错误;现在分别落 `queue_full` / `duplicate_input_id`。
|
|
111
|
+
- **自愈 steer 那一句「明确拒收」不再替引擎认领**(CC-374):`The engine rejected handing your message…` → `Handing your message to the running run (run …) was refused: …`(账本写不进的 503 与服务端自己的 4xx 是服务端拒的;与注入形同一说法)。
|
|
112
|
+
- **能力位读器的读数随能力缓存代际自动失效:`invalidateEngineCaps` 之后各读口答 `unobserved`,温切处不必再逐只调 `forget*Reading`**(CC-377;接入文档 **§118 CG-1 – CG-4**):二十四只能力位窄读器(`observedSqlEngine` … `observedSkillToolLists`,含本版新加的 `observedSteerPriority`)的一格读数属于写入那一刻的能力缓存代际;代际一推进(`invalidateEngineCaps`,含两参形替代探测还没落地、失败、挂住),不调 `forget*Reading` 各读口也答 `unobserved`(四态词表不变),直到当代的 tee 再写。此前读口取数不核代际,失效之后答的是上一台引擎的读数,全靠端在温切处逐只调 `forget*Reading`。`forget*Reading` 一族保留、行为不变,自本版起是可选口,三端都删掉温切处的接线之后的下一个本包版本删除。从不调 `invalidateEngineCaps` 的宿主读数与 0.91.0 逐字节同。另收紧两形:回体取值器在投影中途触发失效时,不带 `generation` 的那一发也不写(此前照写,盖掉当代刚写的格);一个地址上落过读器格之后,`invalidateEngineCaps` 推进它的代际(此前「从没探过也从没失效过」的地址上是 no-op);只收过坏体(各读器删格、没写)的地址不留代际,失效口对它照旧 no-op,号与 0.91.0 同为 0。测试钩 `__resetEngineCapsCacheForTests` 连带让读器格作废。
|
|
113
|
+
- **🔴 支持底线抬到服务端 7.106.0 / 引擎 7.35.2**(sdk 一项不动,仍 12.0.1;CC-352;接入文档 **§118 LD-0**):`SUPPORT_FLOOR` 的 `server` / `core` 两项由 `7.104.0` / `7.33.8` 改为 `7.106.0` / `7.35.2`(那一版服务端发布包精确钉的引擎);`engineVersionTier` 的缺省门槛随之抬,`7.104.x` / `7.105.x` 由 `engine` 改答 `legacy`。7.106.0 以下的服务端本包不再见证、不再特判;下面几条是同一条线以下的老读法当版退。型面不变(三位仍是 `string`)。
|
|
114
|
+
- **「谁拒的」词表退掉老引擎的 `plan_mode`**(CC-352;**§118 LD-2**):`GATE_DENIED_BY_WORDS` 11 → 10 词(= 引擎包根 `DENIED_BY_VALUES` 原序),`GateDeniedByWord`(与 `SemaPermissionDenial.deniedBy`)窄一员 —— 按 `'plan_mode'` 比较这两只型的 TS 写法编译红(本机检索各端零处)。门记录上带 `deniedBy: "plan_mode"`(只有引擎 7.33.x 及更老会铸)时:`isGateDeniedByWord` 答 `false`、结果侧不再盖「谁拒的」、`ccToolDenialKindForToolEnd` 不再答 `permission-rule`(答不出)、`gateDeniedByDetail` 落表外词那一句。拒绝本身照旧由引擎执行。
|
|
115
|
+
- **表外「谁拒的」词那一句改中性**(CC-352;**§118 LD-2**):`denied by a layer this build does not know (<词>) — this build does not know this layer name, so it cannot say which layer refused this call or why`。修前那一句猜「可能是更新的引擎加的、也可能是坏记录」,对已退役的老词(老会话历史回放里的 `plan_mode`)是误导。
|
|
116
|
+
- **请求键 `approverPosture` 不再有按名专句**(CC-352;**§118 LD-3**):带它的入参改由通用「不认识的键」那一句拒(仍 `TypeError`、点名键名、不回显值)。服务端 7.106.0 起这一键整条 400,本包装配前就拒,行为方向不变。
|
|
117
|
+
- **审批卡不再铸 `ruleStoreUnreadable`**(CC-352;**§118 LD-1**):活卡帧与待决列表行两条路径都不再读这一位(只有引擎 7.33.x 及更老会铸),卡照出、照问,出身照带 —— 少的只是「读不出来的是店还是这次调用」那一句。`askOriginDetail` 的第二参(引擎 message)一字不读:`rule_store_unavailable` 一词恒答表内定义句(**§118 LD-4**)。
|
|
118
|
+
- **引擎子代行只按 typed 父键绑委派卡**(CC-352;**§118 LD-5**):不带 `parentToolCallId` 的 `task_progress`(支持范围内的引擎从不这样铸)不再按开卡顺序猜父,行保持 unbound;「≥2 张未绑候选 ⇒ 含糊」那一道随之退。`MIGRATED_COMPENSATIONS` 的 T32 一行 `what` 文案与 `retireOn`(→ `null`)随改。
|
|
119
|
+
- **workflow 车道门只认帧带 `workflowRunId`**(CC-352;**§118 LD-6**):wa+16hex 形 id 与「父是本会话见过的 Workflow 卡」两级旁证退(支持范围内每一代引擎都给 workflow 子代的 tick 盖 `workflowRunId`;十一代服务端夹具内嵌引擎上直接跑 / 续跑 / 重放前缀三形实跑零缺席)。`MIGRATED_COMPENSATIONS` 的 T47 一行 `what` 与 `retireOn`(→ `null`)随改;`isWorkflowAgentTaskId` / `isKnownWorkflowAgentTaskId` 两只公面口不变。
|
|
120
|
+
- **SQL 姿态只读 `store.sql`**(CC-352;**§118 LD-8**):`projectSqlEngineCapability` / `observedSqlEngine` 不再读 7.105.x 及以前的顶层 `sql`;回体上没有 `store`、或 `store` 坏形 / 读它就抛 ⇒ `not_reported`(与同一回体上的 `centerWiring` 同答);`store` 在而 `store.sql` 缺席 ⇒ `none`;`store.sql` 坏形 ⇒ 畸形删格。
|
|
121
|
+
- **`inheritEnvDeclaration` 不再判「服务端太旧」**(CC-352;**§118 LD-9**):版本读得懂就发 `inheritEnv`(低于 7.106.0 的服务端会整条 400,响亮);版本读不出照旧不发、回执 `server_version_unknown`。版本读法与 `engineVersionTier` 同一只。
|
|
122
|
+
- **问类工具的同步审批帧不再自动放行**(CC-380;**§118 LD-10**):名字(去空白 / 下划线 / 连字符、不分大小写)等于 AskUserQuestion 的 `tool_approval` 帧此前不出卡、直接回 allow(只为引擎 1.375 以前的问题门保留);现在走普通呈卡决断。收紧方向:带强制位的帧、名字归一后相同的别名帧都不再按名字放行。
|
|
123
|
+
- **持久规则治理面只看车道位**(CC-352;**§118 LD-11**):`persistedRulesGovernanceAvailable` = `permissionRules` 为真,不再合取 `permissionRulesRevoke`(支持范围内前者为真蕴含后者为真)。
|
|
124
|
+
- **`toolsRunHereFromExecutionLane` 对 `not_reported` 答 `false`**(CC-352;**§118 LD-12**):能力位 7.86.0 起恒在,`not_reported` 只在回体坏了时出现,不再借调用方的旁证(按「不发 `baseDir`」答);`unobserved` 照旧用旁证。
|
|
125
|
+
- **合成终局行与结果帧 `errors[0]` 在带成因的取消终局上补成因句**(CC-295;**§118 AC-4**):原句之后另起一行补 `abortCauseNoteOf` 那一句,与「会话存档读不出」那一句同一位置、互斥(码不同);`subtype` / `is_error` / `_sema_error_code` 不变;成因缺席与 0.91.0 逐字节同。自己在这两处补过成因句的端,换钉同批删掉那一段,否则同一句出现两遍。
|
|
126
|
+
- **请求构造口车道表 `images` 行给一次性(`print`)车道座位**(CC-407;**§118 PI-1**):此前只给交互车道(理由句「`-p` 的输入里没有图片块」已不成立:一次性车道的结构化输入带图,人类提交装配口 `encodeHumanTurn` 也不分这两条车道),装配口答 `full` 的图在 `-p` 上被构造口以 `off_lane` 丢掉。现在 `print` 车道上交的非空 `images` 整份上请求体(不在 live 门后,与交互车道同)、回执不再有它;`taskRequestSeatOf('images', 'print')` 答 `seated`;side-channel 车道照旧无座。
|
|
127
|
+
|
|
128
|
+
### Deprecated
|
|
129
|
+
|
|
130
|
+
以下公面名与型面位本版**标弃用、预告 0.93.0 删除**(CC-352;接入文档 **§118 LD-13**;名与签名不变,其中随支持底线抬高而值变的三只在 LD 行逐名写明;发布包的类型声明没有机器可读的弃用标记,以本节与 §118 为准):
|
|
131
|
+
|
|
132
|
+
- `RULE_STORE_UNREADABLE_KINDS` / `RuleStoreUnreadableKind` / `isRuleStoreUnreadableKind` / `ruleStoreUnreadableDetail`;`ApprovalCardRequest.ruleStoreUnreadable` / `ToolApprovalFrame.ruleStoreUnreadable`(本版起恒缺席);`askOriginDetail` 的第二参(本版起不读)。
|
|
133
|
+
- `wireAuthTokenFor`(`resolveWireAuth` 的旧名别名;改调 `resolveWireAuth`)。
|
|
134
|
+
- 文件历史能力位的 `on-always` 一员(`FileHistoryCaptureMode`)与它带出的 `not_offered` 判词、那一句(只有服务端 7.97.0 – 7.103.x 会铸)。
|
|
135
|
+
- `/goal` Stop 钩的版本分档:`CC_STOP_SEMANTICS_MIN_SERVER` / `ccStopSemanticsFromVersion` / `engineCcStopSemantics`(0.93.0 起版本读不出时也按新形发)。
|
|
136
|
+
- limits / detach 两只引擎版本门:`LIMITS_WIRE_MIN_ENGINE` / `versionSupportsLimits` / `engineLimitsSupportWarning`、`DETACH_WIRE_MIN_ENGINE` / `versionSupportsDetach` / `probeEngineDetachSupport` / `engineSupportsDetach` / `detachSupportDisclosure` / `EngineDetachSupport`(门槛 1.196.0)。
|
|
137
|
+
- 计划审阅三选卡的引擎版本闸:`PLAN_REVIEW_MODE_AFTER_MIN_ENGINE` / `versionSupportsPlanReviewModeAfter`(0.93.0 起只看宿主声明)。
|
|
138
|
+
- `readRuleOfferSupply` 的第二参(服务端 7.45 及以前的 `ruleSuggestions`)。
|
|
139
|
+
- `INHERIT_ENV_MIN_SERVER` / `inheritEnvServerSupport`、`InheritEnvWithheldCause` 的 `server_too_old` 一员与它的两句。
|
|
140
|
+
|
|
141
|
+
### Fixed
|
|
142
|
+
|
|
143
|
+
- **并行调用时,流内审批卡认错调用:卡上是别的调用的入参,拒绝盖到别的调用的收口帧上**(CC-380 同批;**§118 LD-10b**):普通呈卡路径此前一律取「最后一只在等的写文件调用」当这张卡的调用 —— 一只写文件调用在等时,别的工具(MCP 工具、名字与 AskUserQuestion 宽松相等的自定义工具)的审批卡显示那只写文件调用的入参,按「拒绝」后那只写文件调用的真错误(如 `EACCES`)被改成「用户拒绝」;两只写文件调用并行时审批先开的那只,卡上是后开那只的入参。现在帧自带 `toolCallId` 时就认它:写文件调用取它自己的流上入参,别的工具照旧用帧上那一份,拒绝按身份落到它自己的收口帧;帧不带这一位时推断不变。
|
|
144
|
+
- **从头重放一条 run 的事件流时,早已决过的审批不再重新弹成待答的卡**(CC-367;**§118 RP-2 / RP-3**):`bridgeAskUserQuestionGates` 对带账本位置(`id` / `seq` 任一键在场)、且不在本连接 preamble 里的 `tool_approval` 帧,呈卡之前先就地读一次待决清单(有界 3 秒)再按 `replayedApprovalDisposition` 处置 —— `live` 照原路呈卡决断(零变化);`decided` 不呈卡、不发任何决定(问类工具的那一发放行同样不发)、不上任何话;`unknown` 不呈卡、不发决定、帧经 `onReplayedApproval` 交宿主、上屏 `REPLAYED_APPROVAL_LIST_UNREADABLE_WARN_TEXT`(用户已按中断时不上)。修前这一路对每一只审批帧都呈卡并停在卡上等人,账本重放回来的历史帧于是逐张再弹;同一 ask 的 `approval_request` 卡帧那一路的去重又要等这只卡收口的帧,停在旧卡上时它永远到不了。live 流上的审批帧不带账本位置,行为与 0.91.0 逐字节同。preamble 证据按连接计:停驻决断后桥换读新连接时清掉,新连接的 preamble 重新列。
|
|
145
|
+
- **服务端 7.116.0 上,allow 规则里写着服务器段铸不出的协议名(例 `mcp__github.com__*`)时每一次提交都被整请求拒收**(CC-371;**§118 SV-24**):这类 allow 从来授予不了任何工具,修前本包照投;现在装配口用引擎同一只铸名函数提前留下它们(报告口理由 `unminted_protocol_segment`),请求照常受理。deny / ask 里的同形**照投**(7.116.0 上整请求拒收是服务端为它们设计的响亮结局);报告口 `unreachable[]` 列出它们,端可在发出前告诉用户改写。
|
|
146
|
+
- **服务端 7.116.0 上对上一世的审批卡作答时,终端一类自写的「还会再问」那句话误导人等**(CC-371;**§118 SV-18**):那条 run 已随重启回收、不会再问。本包给出按成因分说的一句(进程没了 ⇒ 重新提交),端改取即得。
|
|
147
|
+
|
|
148
|
+
- **会话规则可送判定改读规则名文法:引擎规则编译器不收的名字不再判成可送**(CC-381;接入文档 **§118 SP-1**):`sessionPolicyDeliverable` 判「这条 deny 能不能原样写进会话规则记录」时,此前只认整串里有没有未转义的左括号 —— 带转义括号(`Read\(x\)`)、反斜杠、只有右括号、偶数个反斜杠后的左括号(`Read\\(x)`)或超过规则长度上限(512 字符)的名字被判成能送;引擎的规则编译器不收这些串作整工具规则,会话规则记录按原字节比也没有哪只工具叫这个名字,引擎准备期只告警 —— 写进去一条都拦不住,端上却会渲「已保存」。本版逐条判据判能送之后再问装着的 core 值级端口 `validatePermissionRules`(deny 读法、单条;与 `permissionsDeclaration` 问整工具名是同一只判官、同一问法):不收 ⇒ 以 `not_a_tool_name` 扣下(不新增成因词);判序在拒启名之后、名册之前,修前已扣的串成因与现名不变,带名册只收紧照旧。**只收紧**:修后能送的批是修前能送的子集,多扣的恰是这一类。`not_a_tool_name` 那一句随之改口:多说「不是规则文法里的单个工具名(带反斜杠或括号、或超长)」。**闭合失败**:端口没装 / 抛 / 回的不是数组时,批里有串要走到这一步 ⇒ 整批 `unreadable: true`(不送、不编成因);`ask` 批与每一条都已被前面判据扣下的 deny 批不问判官、答案不变。装不了引擎的宿主上这意味着含普通工具名的 deny 批一律不写会话规则记录(KL-551)。同一步再核协议名的服务器 / 对端段:引擎铸不出原样那一段的名字(`mcp__github.com__x` 引擎铸成 `mcp__github_com__x`;段带空白、非 ASCII、超长等)以 `not_a_tool_name` 扣下 —— 判法与 `permissionsDeclarationReport().unreachable[]` 同一只(服务端 7.116.0 起会话规则写口对这类名字答 400,更早各代照收,写进去拦不住引擎铸出的真工具名);`not_a_tool_name` 那一句随之多说这一类。判不出(core 值级端口 `protocolOf` / `mintNamespacePrefix` 没装、抛、回的不是串)⇒ 整批 `unreadable: true`:端口装配里没有 `mintNamespacePrefix`(装的 core 7.41.0 及更早不导出它)的宿主上,带协议名(`mcp__…` / `a2a__…`)的 deny 批一律不写会话规则记录,要写先换钉 core 并装上这件端口。
|
|
149
|
+
|
|
150
|
+
### Gates
|
|
151
|
+
|
|
152
|
+
- 新门 `scripts/run-replayed-approval-disposition-test.mjs`(39 格,G-RP):RP1 纯判定表(三态与各自因由、正面证据并集、preamble 缺席不推出已决、崩溃收敛成因词、位置键坏形或坏形 `id` 遮住有效 `seq` 时按账本帧核、取值器 / 代理入参不抛且不落 `live`、每次新冻结对象)· RP2 流内审批帧逐帧直驱(已决零卡零决断且清单恰读一次、preamble 列着零读、读失败不呈卡并交帧与上屏一句、live 流零变化、逐帧就地读不缓存、先已决后 preamble 列着 ⇒ live、活尾列着 ⇒ 呈卡、读挂住 3 秒落定、回交口抛错被吞、无决断口不读、带账本位置的卡帧不算 preamble、问类工具账本帧不发放行、坏形 `id` 遮不住有效 `seq`)· RP3 桥级两段流(停驻决断换流后上一段 preamble 作废、新段 preamble 列着 ⇒ 同一帧 live、preamble 卡帧照常下游)。
|
|
153
|
+
- `scripts/run-hitl-gate-honesty-test.mjs` 与 `scripts/run-shell-gate-durable-allow-test.mjs` 夹具订正(判据零改):同步流夹具里的 `tool_approval` 帧(前者 19 只、后者 1 只)去掉 `id` —— 服务端 live 流只给带 `eventId` 的帧盖 SSE `id:`,审批帧不带;带 `id` 的审批帧是账本帧,按本版要先读清单,夹具若不改就不再走它们原本要覆盖的「卡真呈出来」那条路。
|
|
154
|
+
- **permissions-declaration**:+T-DP(端口镜像 `behavior` 与已装引擎编译器入参两向同值域 + 判别力对照)/ +G-DP1(本件对 allow 桶问到的整工具名上:受理口那一代编译器 allow 读法拒的集 ≡ 装着的编译器 deny 读法拒的集)/ +G-DP2(`compileAllowList` 与那一代编译器拒的名差异恰为登记的三类 —— 服务器段带反斜杠 / 带通配的两类命名空间写法先被段判定以 `unminted_protocol_segment` 留下、名字判官问不到,G-DP2b 逐只见证 —— 逐类列见证)/ +G-DP3(老一代拒、allow 层文法收的名字一个都不投);MS1 / MS1b / MS1c 编译器前提改在 deny / ask 两读法上判(allow 读法的受理口由 MS2 逐代判);MW 的 allow 桶改问受理口那一代编译器;R6 基线跑在受理口那一代引擎上、本版两套端口各跑一遍,与 0.90.0 发布产物逐字节同。
|
|
155
|
+
- **permission-rule-issue-codes**:真铸集改为「permission-rules 产物的码字面量 ∪ 声明联合里在别的引擎产物里铸得出的成员」;A5 / A6(三新码在场、三退役码不在);+L 段(退役三码句子与 0.91.0 逐字节同、由服务端夹具引擎派生认出、三新码零机器词)。
|
|
156
|
+
- **upstream-tables**:+G10(第八 / 九批:十三件逐项同引擎、冻结,第九批每处消费点引用相等 + 初始化式 AST 见证、句柄正则与档位别名对象零抄件)/ +N10(加员 / 坏形 / 缺名点齐负控)/ +G11 + N11(设置契约批:逐项同、语义对拍、六处消费点见证、坏形拒生成);U3 改口(档位序字面数组恰一处,在生成物里);生成计划四只文件。
|
|
157
|
+
- **engine-notice-catalog**:码册 86;+G-AN1 … G-AN4。
|
|
158
|
+
- **client-core-pure**:配置拒绝识别表九员 + 生成九码;+G-IMG1 … G-IMG6(含铸点 / 老一代零铸点两头实证)。
|
|
159
|
+
- **upstream-tables** 另 +G12(六处纯型面:声明里零手写成员、与修前手写形两向同)。
|
|
160
|
+
- **classifier-status** E2 / **cloud-effective-projection** S5w‴ / **engine-agent-absence-projection** B1f / **memory-spec-wire** G2 / **persisted-rule-write** W1i / W1j / **display-untrusted-projection** Y26(数据 URL 派生副本换生成物地址)/ **client-core-portability** 内核 / A 层 / 全量三条闭包上限各 +1(23 → 24 / 38 → 39 / 249 → 250;新进的一只是零 import 的生成物叶子):按生成物改口。
|
|
161
|
+
- **session-policy-deliverable** E 段:引擎 7.41.0 起会话规则店在写的时候就按同一判定拒退役名 / 无前缀 `__` 名(记录不落),拒启判据认「写口当场拒」与「准备阶段拒启」两形(前者更早更强);通过判据不变。**session-policy-refused-removal**:E / R / M / F 段(「升级前就写进记录的拒启名」与老引擎上的放宽判据)改在服务端夹具自带的老一代引擎(< 7.41.0)上跑,新增 R5r 用开发依赖引擎 7.42.0 的真店核新一代那一形(普通调用方撤成 / 写口当场拒 / 多删一条现名照拒放宽;修前只有模型);F7 铸点见证两代各按各的形数(老一代两处、7.42.0 并成一处)。
|
|
162
|
+
- 新门 `scripts/run-server-7116-fixture-test.mjs`(服务端 7.116.0 发布包夹具对拍 + 逐代表 ≥7.116.0 / 7.115.x / 7.104.0–7.114.x):C9 真收敛写点 → 真决断路由 410(体键集恰四键)→ 开发依赖 sdk 与探针树 sdk 16.2.0 映射 → `askGoneFromError` / `askGoneContent` / 决断出口补句 / `isAlreadyResolvedFailure` 按码认领,「进程没了」两词 = 服务端成因表 = 本包崩溃收敛闭集表,`DENIED` 组单员 = 服务端 `DENY_REASONS`、本包认得的三词都在 sdk `AskGoneDeniedReason` 里(`VOID` 组开集不抄)、句子零机器词;C10 真 run 详情路由四形行 → 读口原样带码、两类出路句,服务端死亡判决两码 = 本包两码;C16 运维名单为空真铸点 → 两只判官与写口结局 `operators_unconfigured`、403 照旧、计划审阅 501 ⇒ `not_applied`、能力路由真跑四只新位 × 四只读器;C8 服务端受理判官 × 装配口同池按方向分(allow:投出的服务端都收、`unminted_protocol_segment` 只在 allow 桶且留下的服务端都拒;deny / ask:服务端判官拒的 ⇔ `unreachable[]` 两向、`mintedPrefix` 与判官铸名逐字同;去掉 `unreachable[]` 那几条两代三桶编译零 422,原样整份 7.116.0 拒收 / 7.115.0 照收,存原始读数)+ 铸名端口缺席形;C3 服务端「记不住」判据 → 两条路径卡上同一位、坏形缺席不阻断;C5 仲裁表行逐字同。
|
|
163
|
+
- **门环境**:服务端现役夹具 7.116.0(内嵌引擎 7.41.2),7.115.0 进老一代列表首位;sdk 探针树 16.2.0(见证矩阵首位)。读老一代列表的几道门不再只看列表首份:`resume-refusal-copy` CC-281 逐份跑 ≥7.104.0 的老一代、`wiring-manifest-projection` FLX 取列表里第一份 7.104.0–7.114.x;`server-7115-fixture` 能力路由装配配置带空运维名单(7.116.0 起能力路由读它)、`mandated-card-values` 盖章口事实对象带空 `mandateMarks`(引擎 7.41.x 起读它)。
|
|
164
|
+
- **permissions-declaration**:+MU0–MU6(allow 桶铸不出的整工具名留下、这一词只出现在 allow 桶 / deny / ask 照投、kept 只有去重与内容形编译拒收 / `unreachable[]` 恰是投出的 deny / ask 里铸不出的、`mintedPrefix` 与引擎铸名逐字同 / 铸得出照投 / 闭集位置 / 判官失灵时内容形照投进表 / 铸名端口缺席与抛两形);R0 设计闭集 13 词;R1 不变量 +`unreachable[]` 两向(投出里判铸不出的 ⇔ 表,按请求体次序);R2 见证表 +1 行(allow 桶 `unminted_protocol_segment` + deny / ask 照投进 `unreachable[]`);MS1c′(改写出的名字里段铸不出的照投、恰进 `unreachable[]`);R6 只摘 allow 桶里铸不出的条目再与基线对拍、基线 ≥0.91.0 时不设「基线多投 allow」下限;+R6d(deny / ask 两桶与差分基线一条不摘逐字节同,池里压满铸不出的形,基线投出的铸不出条目数 = 本版 `unreachable[]` 行数);G-DP2 登记类五 → 三 + G-DP2b(allow 桶段判定先于名字判官)。
|
|
165
|
+
- **approval-frame-keys**:领先登记 +`rememberRefused`(开发依赖 sdk 12.0.1 锚无、16.2.0 锚有);在场即真名册两张各 +1。**client-core-pure** B7 镜像 35 键。**core-value-ports**:十一件(+②p / ②q)。**engine-cap-reader-factory**:READERS 表 +5 行(24 只,含 `fleet.steerPriority`)。**client-core-portability**:全量闭包上限 251 → 255(四只新读器文件);**client-core-typeshape** unknown 出境棘轮按账追加。
|
|
166
|
+
- **human-turn-encoding**:单张图片与 steer 长度的边界格一律读生成表(门里不再写一遍上游数字):HT2c / HT2j 按引擎常量重写(`@` 图恰阈值进、多 1 字符不进;粘贴图多 1 与多 4 的对齐形不进)、HT2e / HT2f 合计格改用两张粘贴图占满合计(单张阈值小于合计)、HT2k / HT3e 的尺寸改由单张阈值与合计政策推出;+HT2m(两只生成常量是正安全整数、单张 ≤ 合计)、+HT4j(steer 边界两格对引擎 `validatePendingSteer`)、HT10a 改判「生成表 === 引擎包根常量」;**+HT10e 对引擎内联图片准入口实物**(包根不导出准入函数,按文件路径载入开发依赖里的那一份):规范 base64 长度恰阈值受理 / 多一字节拒 `config.image_invalid`,本包座位判定对同一对载荷同答(粘贴图、`@` 图两形);HT10d 改成射程句 —— 每一代服务端夹具(新一代 + 老一代列表共十份)的准入口都收本包阈值那么大的图(各代自己的单张阈值只作读数进标签,不再断言「本包镜像对得上」)。**upstream-tables**:+G13(第十批两只常量逐值同引擎、`number` 型、不上根入口、装配口值级 import 两只生成物、装配口里零手写镜像〔常量表达式求值 + 旧名声明;尺子先在合成源码上证明会响〕)/ +N13(上游换值生成物随之变;缺席 / null / 0 / 负 / NaN / ±Infinity / 小数 / 串 / bigint / 布尔 / 超安全整数 / 数组各拒生成并点名;缺名点齐)。
|
|
167
|
+
- **client-core-pure**(CC-376):⑪b 段 +G-TO(117 格)—— 十二形(进程内记录 7 + 耐久记录 5:在跑 / 一次性提交在跑 / 终局带结果 / 失败带错误带部分结果 / 失败带错误无结果 / 终局无结果 / 停驻)× 新旧两代,语料一律由引擎自己的铸点函数真驱(新一代 = 现装开发依赖引擎,老一代 = 服务端夹具自带的老引擎),整只读数(值与键集)逐位等于门里钉死的字面、键序 = 0.91.0 的四键在前 state / error 只在末尾;子代输出不可信:结果正文以 `state: fake` 起头 / 结果正文带 `error:` `status:` 字样(有 state 行、无 state 行、老一代三形)/ 多行错误的续行带 `state:` 字样 / 错误句夹结果分隔行 / 没有头部 status 行 / status 行不在第一行 / status 值跨行 ⇒ 槽位恒是头部真行或缺席;位置形(顺序固定、重复只读紧邻、中间隔行不读、冒号后无空格不读、state 行形坏时 error 也不读)、行尾形(CRLF、行尾空白原样、行首只去一个空格、孤立 `\r`、U+2028 / U+2029 / U+0085 一类行终止符在值里与在 status 值里各一形,含真铸点的错误句)、空值形(空 / 全空白 ⇒ 缺席)、20 万字符不截断、失败路径与满是终止符的长值线性、不解析行内结构、无围栏文本同读法;`bash` 臂不读两行、键集不变;第七形(耐久记录标着在跑而本进程没在执行,引擎另一处铸点)带源码锚;类型面(两只可选槽缺席式、只挂 `agent` / `unknown` 两个成员)。⑬ 段协议字面量普查:登记键 +1(`taskOutputHeadSlots`),解析角色组由 8 处变 9 处。
|
|
168
|
+
- **client-core-pure**(CC-379):⑪b 段 +52 格(G-TO 共 169 格)—— `resultNote` 字面(引擎铸的括注 × 新旧两代 × 两条读路 / 无括注缺席 / 空括号 / 括注里带括号、`state:`、结果分隔行、Unicode 行终止符)· `headRest` 字面(多行错误续行 / 头部新加行 / `state` 之后隔行 / 空值行 / 值内带终止符的行 / 键后无空格 / status 不领头 / CRLF / 标签行落在行中间 / 每一行都进槽位 ⇒ 键不存在 / 真铸多行错误 × 两代)· **拼回不变式**(门里独立写的重建器:十二形 × 两代真铸、四十形对抗手拼 × 围栏 / 裸、一池 4000 条定种子随机头部〔伪造行 / CRLF / Unicode 行终止符 / 空值行 / 括注各形〕全部拼得回去;判别器自证:丢一行 / 丢括注 / 改一字节都判拼不回去;池覆盖量下限自证)· 不可信文本(`headRest` / `resultNote` 里的 `state:` / `status:` / 结果分隔行字样不改别的槽)· 终端判据等价格(用四槽写出的判据与终端 1.0.141 现判据在老引擎读面上逐例同答,在 7.41.0+ 读面上本包答「不丢」)· 与上一发布产物逐字节对拍(基线 ≥ 0.90.0:没有新键的输入逐位同、有新键的输入旧键值不变、`bash` 臂永远同;基线版本与「必须真跑」独立对账)· 类型面改判(agent 成员四槽、unknown 成员两槽、bash 成员无);上一条 CC-376 的几格随读法收紧改口(G-TO2g / 2h / 2i / 4d / 4k / 4l)。⑬ 段协议字面量普查:登记键再 +1(`taskOutputResultNote`),解析角色组 9 → 10 处。
|
|
169
|
+
- **permissions-declaration** 另 +G-RR1(要靠任务根解析的路径 deny / ask 规则池在 0.90.0 / 0.91.0 发布产物与本版上投口逐例逐字节同、allow 能力位不为真时 0.91.0 与本版报告口整份同、本版投出里有这类规则的原串且没有一行把相对写法改成 `//` 写法)/ +G-RR2(门里登记的各版服务端设置受理口:这类 deny / ask 不给任务根时拒收、给任务根时收,`//` 绝对形两种都收,读数逐版原样存档,服务端改了即红)(CC-366;**§118 RR-1**)。
|
|
170
|
+
- **session-policy-deliverable**(CC-381):门按 Node 宿主装法装上开发依赖引擎的值级端口(SP0);向量表原「平价格」两行(转义括号 / 偶数个反斜杠后的左括号)翻成第五类登记分歧 P(本包更严:终端照送)并补 P3–P12 与 P7b(只有右括号 / 反斜杠三位 / 协议工具名的工具段带反斜杠 / 超长与恰到上限 / 混批 / 判序三格 / `ask` 批不受影响 / 标点正控);YV10 改判(不交名册已扣,名册不换成因);Y1 改为「除规则名文法一类外与 0.84.1 发布产物逐字节同」并 +Y1e(分歧逐例的形:修后多出的成因全是「修前单条能送 ∧ 编译器不收 ∧ `not_a_tool_name`」),Y1c 改为旧六句里除 `not_a_tool_name` 外逐字节同;+N9f(那一句覆盖文法这一类、不借用限定那句的说法);+G-SP 段:G-SP1 判能送的名字引擎编译器都收(两万余名池 + 两两成批)/ G-SP2 修后能送 ⊆ 修前、多扣恰是这一类、带名册不放宽 / G-SP3 判序 / G-SP4 判官答不上来八形闭合失败、判官全拒一形 / G-SP5 与请求体装配口同一名字同答 / G-SP6 服务端夹具自带的九代引擎(7.33.8 起)的编译器装进端口逐名同答 / G-SP7 读法单源(源码见证);D 段(与终端旧实现的活体差分,有终端树时才跑)登记分歧四类 → 五类。**rules-legacy-tool-name-projection** T3:翻译判定那一格按宿主装法装上编译器端口。**client-core-portability**:全量闭包上限 251 → 252(新进的一只是包内规则编译读法叶,只 import 端口模块)。
|
|
171
|
+
- **permissions-declaration** 另 +G-RR1(要靠任务根解析的路径 deny / ask 规则池在 0.90.0 / 0.91.0 发布产物与本版上投口逐例逐字节同、allow 能力位不为真时 0.91.0 与本版报告口除本版新增的 `unreachable` 表(这一池上恒空)外整份同、本版投出里有这类规则的原串且没有一行把相对写法改成 `//` 写法)/ +G-RR2(门里登记的各版服务端设置受理口:这类 deny / ask 不给任务根时拒收、给任务根时收,`//` 绝对形两种都收,读数逐版原样存档,服务端改了即红)(CC-366;**§118 RR-1**)。
|
|
172
|
+
- 新门 `scripts/run-automatic-answer-verdict-test.mjs`(CC-368,G-PV):P 公面与问类读法单源 · M 每一类 × 两车道单类卡与全部有序二类集对引擎包根仲裁表独立推导、表外类名 · A 判法总表逐行(正向证据在问类集合缺席 / 坏形时照样必问、读期变形两向、宿主读数、放行披露、返回冻结不改入参;服务端说明「带新让位键的卡恒带问类」之外的那一形与探针回归矩阵各一格)· E 包内折叠对引擎 `foldArbitrationRow` 五位逐位(单类 / 全部二类 / 全部三类 / 3000 抽样)、姿态车道对 `arbitrateByMode('bypassPermissions')` 同向、规则车道对折叠行、出身 ⇒ 类与强制词 ⇒ 类在引擎派生上逐词核、引擎真链路上 ask 规则命中的卡问类含 `ask_rule` · X 两只旧口每例不比新判定松、对上一发布产物可放集只缩不扩 · O 本包自己的出口不经判定自动决断(没装卡口时活卡帧腿恰一次拒、耐久腿零决断;读期变形的问类集合与盲卡在两车道都不可放)· T 终端参照树真判定链(本树 dist vs 它自钉的那一版)自动放行只缩、姿态放行归零。外部件缺席 ⇒ `SKIPPED-SECTION`。
|
|
173
|
+
- 新门 `scripts/run-allow-rule-shadow-projection-test.mjs`(CC-401,G-AR):读口五成员 / 多成员 / `hook` 空表 / `omitted` / 闭集外成员 / 坏形四态 / 缺席 / 老一串 / 两代并存 / 已盖形再读 / 冻结 · 三条卡腿经真卡口端到端、旧字段与读口同源 · 老一代帧形对上一发布产物逐例同 · 下一代服务端夹具(设 `SEMA_CC_SERVER_FIXTURE_NEXT` 时)引擎真铸点 → 服务端读器 → 活卡帧、引擎风险描述 → 服务端脱敏 → 耐久行、呈卡帧带新键不带旧键;耐久行条目经服务端凭据脱敏、部署旋钮真形(`APPROVAL_REQUIRE` 形卡只靠问类也必问、`APPROVAL_NEVER_AUTO` 形必问、同工具无旋钮普通问卡可放);现役夹具老一代真铸 · 两车道判定。
|
|
174
|
+
- **ask-survives-posture**:A2b / A2c / A4 / B3 / B5 / C2 / D1–D5 / E2 / F 段按新判法改口(类集合缺席 ⇒ `unknown`、治理位与两个强制词必问、真人位不是姿态证据)。**upstream-tables** SA 段:卡样本补成对的 `askClass`、重复类与读期变形 ⇒ 坏形、拦的类优先于表外类、返回值原样冻结;源码判定点改指新判定文件。**approval-frame-keys**:领先登记 +`allowRuleShadowed`(开发依赖 sdk 与 sdk 探针都还没有);+G-AR1(下一代夹具帧键 ⊆ 镜像、新键在旧键不在、镜像两键都留);+G-AR1b(设 `SEMA_SDK_PROBE_NEXT` 时:sdk 16.3.0 帧键锚与镜像严格两向相等、卡键锚多出的键按归一换名对上卡入参)。sdk 地板见证集同一环境变量多一个探针位(没设打印跳过行)。**client-core-pure** B7 镜像 36 键(+`allowRuleShadowed`)。
|
|
175
|
+
- 新门 `scripts/run-steer-tier-test.mjs`(G-ST,51 格):读器投影 22 形 · 判据精确三值 · 构造口 5 读数 × 8 档 × 2 drain 按码断言 + 路由器同答 · `next` / 不带 / drain / 中断信号六形的 `runs.steer` 实参与 0.90.0 / 0.91.0 发布产物逐字节同 · 服务端 7.116.0 发布包:能力路由真跑、steer 路由真跑(档词镜像两向、同键重放幂等与换档 409、停放与 live 两条路、`now` 的切断通告 `inputId` = 回执 `messageId`)· 处置句 · 回执读口 · 对账判词(回执侧与通告侧各自闭合:空串 / 非串 / 原型链上的 id 与缺席同读)· 通告从 wire 帧过两层投影到句子 · 首拍序列(有界等待 → 读数 → 发送)· 换代整链 · 本地队列退役。
|
|
176
|
+
- **engine-cap-reader-factory**:读器名单 +1(`fleet.steerPriority`,第二十四只)。**engine-notice-catalog**:派发表 +1 码与夹具;J6 用户面「恰十六个」改「恰十七个」。**steer-refusal-advice**:SR-A6 改核两半各一处字面量;SR-C1 改比判别位与 `message` 前缀(处置句为本版句子);SR-C2 cancel 404 带处置句;SR-T 十三格按本版句子重判。**client-core-pure** / **selfheal-reopen** / **subagent-injected-wire**:退役口与改写句的格随之改。
|
|
177
|
+
- **terminal-facts-projection**(CC-178):+G 段 —— `projectKey` 在场两臂(引擎词表里每个词都读得出、表外词照带)/ 十七形坏形 / 多余成员与新铸对象 / 取值抛五形(臂上一形、`projectKey` 内部位四形)与撤销式代理 / get 陷阱抛的代理三形 / 各位恰读一次;`shadowed` 在场与两端 / 十二形坏形 / 写入家那一行与只读分层 / 取值抛 / 恰读一次 / 坏行逐条丢仍成立;别的四臂带 `projectKey` 不过境;终帧两臂同带逐字节同;与 0.91.0 发布产物对拍(不带两键的一大池输入读数逐字节同,带两键的输入去掉两键后同;取值器 / 撤销式代理的活对象池上「抛 / 不抛」与读数同)。+G-F 段:服务端夹具各代(7.104.0 – 7.116.0)与开发依赖引擎上两键铸点三行与两条声明在场、真跑服务端终帧整形两键原样过境、真跑服务端项目身份铸口三形读器全收;sdk 各见证零建模(正控尺在引擎声明上命中);被拒两键 `shadowedBy` / `shadowedHidden` 在服务端各代整形层与 sdk 各见证零命中、本包 `src` 零读点(正控尺在引擎记忆工具源上命中)。
|
|
178
|
+
- **engine-cap-reader-factory**(CC-377):+F17(二十三只读器逐只:失效后不调 forget ⇒ 未观测;时序 —— 失效先于 / 后于迟到的旧探测、供号与不供号、两参失效的替代探测成功 / 抛 / 回三种坏形 / 挂住 / 永不来,与 `engineCapsSettled` 的读后态;并发 —— 两只读器同地址交错两向、两个地址两种落格顺序、两发在途探测反序落地两向;失败分类 —— 回体取值器在投影中途触发失效〔供号 / 不供号 / 当代已写 / 随后抛〕、探测闭包在 tee 之后抛与不经能力缓存直接写时失效照常推进代际;测试钩清表后旧格不复活;forget 仍可用且不推进代际)+F18(0.91.0 工厂冻结实现内嵌,逐只在役读器 300 步定种子随机序列〔不含失效〕上读数 JSON、冻结态、对象同一性与取值器执行次数逐步相等,序列末代际号仍 0)。
|
|
179
|
+
- **到期登记物与支持底线**(CC-352 / CC-380;G-LD 各格先在修前产物上跑红、修后转绿):**support-floor-projection** SF1f / SF1g 改钉本版底线与 `engineVersionTier` 的缺省门槛 · **gate-vocabulary** 「谁拒的」表 = 引擎包根十词、`plan_mode` 出表四读口同答、表外词那一句改中性、`askOriginDetail` 第二参不读 · **task-request-omission-receipt** `approverPosture` 改由通用拒收 · **durable-card-display-keys** / **hitl-gate-honesty** 两条卡路径带着这一位也不上卡 · **client-core-pure** / **client-core-diff** 子代行不猜父、workflow 车道只认 `workflowRunId`(差分正向对照的 workflow 车道下限 3 → 1)· **sql-engine-capability** 回体一律按 `store.sql` 形写、+老位置事实钉 + 本座取值器抛删格 · **store-center-wiring-capability** / **engine-cap-reader-factory** SQL 读器按 `store.sql` 读(工厂门读器表登记嵌套座、+F2c)· **engine-caps-ledger** 顶层 `sql` 与 `permissionRulesRevoke` 改登零读点 · **inherit-env-wire** / **rules-side** / **execution-lane-capability** 各 +事实钉 · **replayed-approval-disposition** +事实钉(问类帧出卡)与 RP2n 五格(问类帧 / MCP 帧并行一只写文件调用、两只并行写文件调用各认各的;帧不带 `toolCallId` 与单只 Bash 两格回归约束) · **mode-release-projection** / **permission-denial-projection** / **terminal-cause-projection** `plan_mode` 出桶(+编译期一格:按它比较编译红)· **upstream-tables** / **tool-history-mismatch-projection** 底线以下那一代的夹具段删除 · **retirement-ledger** 在册行数与改窗行随登记物 · **integration-doc-freshness** 签名块表长铸点只剩生成物一处。
|
|
180
|
+
- 新门 `scripts/run-abort-cause-projection-test.mjs`(174 格,G-AC;CC-295):AC1 读口四落点 × 三词 · AC2 缺席 / 坏形(非串 / 空串 / 原型链 / 取值器不执行 / 抛错代理)/ 表外(五种变体都答 `unrecognized`、带原词)/ 不是取消终局八形 · AC3 分类器 cancelled 臂并列 · AC4 句子金样与尾注四形 · AC5 真驱 `runStream` 与直调 `terminalToSdkResult`:两处呈现 = 无成因时那一句 + 换行 + 成因句、`_sema_abort_cause` 原词、缺席逐字节同、诚实失败句不补、没补句时 `errors[]` 的非串元素原样放回 · AC6 服务端各代发布包(新一代五份:词表 / 自铸登记 / 真铸点 × 三词经四落点 / 事件日志 `failed` 行 / 只补空座 / 两条值变更;老一代五份:同一铸点不铸 ⇒ 缺席)与 sdk 见证(≥16.0.0 的同名型联合与三词相等,更老的没有这一型)。先在修前树上跑红 149 格、修后全绿。
|
|
181
|
+
- **human-turn-encoding**(CC-407):+HT11(七格:装配口答 `full` 的图经构造口在一次性车道上整份上请求体、两种 live 都是 · 与交互车道同判 · side-channel 车道不被带进 · 车道表读口三车道);修前红五格。**task-request-omission-receipt**:B8 一次性车道「交互面独有」名单去掉 `images`、+B8d(`images` 在 `print` 上不再进回执、整份上请求体);B15d 的 `off_lane` 正控改用 `attachmentIds`。**disable-skills-wire** G-DS7(不带那一键的读数逐字节同 0.88.0):语料把一次性车道上的 `images` 挪出回归面(那一格的新行为由上两门钉),摘要用 0.89.0 发布产物重取 —— 该产物对改前语料的五只摘要与原 0.88.0 摘要逐字节相等,改语料后与本版五只逐字节相等。
|
|
182
|
+
|
|
183
|
+
### Known limits(本版新增)
|
|
184
|
+
|
|
185
|
+
- **KL-506**:判活读的 `livePending` 是接到清单请求那台副本的内存;非粘性多副本上,连上之后新铸、不在 preamble 里的问可能被判 `decided`(流内审批帧那一路本来也只在同副本决得了;跨副本恢复归 chrome 卡帧那一路的持久决断口)。
|
|
186
|
+
- **KL-507**:清单读不到(失败 / 超时 / 段缺席或有读不出的行)时 fail-closed,真待决的问不在这一路出卡,由引擎按窗处置。
|
|
187
|
+
- **KL-508**:每一只不在 preamble 里的账本审批帧读一次清单(不跨帧缓存,每次有界 3 秒)。
|
|
188
|
+
- **KL-511**:本包原样转口 sdk 的会话同步三条编排;sdk ≤16.1.0 的三条在服务端 ≥7.52 上推送那一步抛,云同步要 sdk ≥16.2.0(peer 地板不抬)。
|
|
189
|
+
- **KL-512**:装配口判协议名服务器段要宿主装 core 值级端口第十一件(core 7.41.1 起从根导出);没装 ⇒ allow 桶里每一条协议名(铸得出的也算)留下不授予,报告口 `unreachable[]` 也列不出段铸不出的 deny / ask(只剩段带 `*` 的)。
|
|
190
|
+
- **KL-490 改写**(CC-373):装配口手持的上游受理限值镜像由三份减为:请求体 8 MiB、图片至多 20 张(服务端准入,上游没有可读的权威位)与 steer 文本的两只判据(提醒形标签 / 控制字符类;引擎判据,字符类不是包根数据)。单张图片上限(原手写 6 MiB)与 steer 字符上限(原手写 16000)改读引擎包根常量,不再是镜像;图片合计 6 MiB 仍是客户端政策。
|
|
191
|
+
- **KL-509**:单张图片预判量 `data` 串的长度,引擎内联图片准入量解码后重编码的规范 base64 长度;规范 base64 两者相等,每 76 字符折行的 base64(实测 5311865 字符、规范长度恰 5242880)引擎受理、本包按串长记 `image_too_large`。端铸的 base64 都是规范形,折行只在手写 MIME 形输入上出现。
|
|
192
|
+
- **KL-535**:`error` 槽只交第一行。引擎把错误句原样铸进 `error: <句>`,句子含换行时续行在正文里是普通行,位置式读法不读进槽位 —— `agent` 臂上续行落在 `headRest`(CC-379),`unknown` 臂上(无标签行)不交;值内带 U+2028 / U+2029 / U+0085 的错误行不是规范行,整行不进槽位(`agent` 臂落 `headRest`);句尾的 `(error_kind: …, retryable: …)` 附注在多行错误上落在最后一行,也不在槽位里(单行错误整句在槽里)。
|
|
193
|
+
- **KL-536**:头部形与引擎铸形不一致时槽位缺席、不猜:`status:` 行前有别的行、`status:` 与 `state:` / `error:` 之间隔了别的行、顺序反了、整段文本被改写成 CRLF 行尾(围栏认不出,`taskId` 同缺)。引擎往头部加行 / 换行序后,`agent` 臂上这些字节落在 `headRest`(CC-379,不再静默),`unknown` 臂上仍是静默缺席;由门里对引擎铸点的实物读数先红。
|
|
194
|
+
- **KL-529**:要靠任务根解析的路径 deny / ask 规则(`src/**` / `./x` / `/x`)照写法原样投,与 0.91.0 逐字节同(CC-366;接入文档 **§118 RR-1**)。任务根不在服务端那台机器上的执行环境里,服务端会在受理时整份拒收带这类规则的请求(拒绝句点名规则)。本版不把它们改写成 `//` 绝对形:改写后的规则在这类执行环境里是否与有任务根时同样生效取决于服务端,尚未得到确认。
|
|
195
|
+
- **KL-549**:`headRest` 与 `resultNote` 是引擎 / 子代产出的原样文本(`headRest` 里可有任意行,括注里可有任意字),本包不消毒、不洗;端渲染前须与槽值一样过显示消毒(`displayBody` 一路),不要按里面的词分支。
|
|
196
|
+
- **KL-550**:`unknown` 臂不交 `headRest` / `resultNote`(没有标签行,调用方本来回落原文);`bash` 臂的截断说明行、丢字节说明行与 stdout 标题括注同类的缺(`bash` 臂只交 stdout 标题行之后的字节)本包没有读口,`bash` 臂键集与 0.91.0 逐字节同。
|
|
197
|
+
- **KL-551**:会话规则可送判定的文法那一步只在 core 值级端口装着时有判官;装不了引擎的宿主(浏览器 / 渲染层)上,批里有一条普通工具名的 deny 批整批 `unreadable: true`,不写会话规则记录(CC-381;**§118 SP-1**)。
|
|
198
|
+
- **KL-552**:部署自己挂了名字里带括号 / 反斜杠、或名字超过 512 字符的工具时,会话规则记录按原字节比其实拦得住它,本版照以 `not_a_tool_name` 扣下(更严,代价是晚一拍生效)。
|
|
199
|
+
- **已知限制档清账补遗**(CC-350 / CC-351 余项):`docs/KNOWN-LIMITS.md` 删 6 行 —— 转为票 4 行(KL-102 → CC-360、KL-178 → CC-354、KL-297 → CC-342、KL-387 → CC-347)、已过时 2 行(KL-392:服务端 7.115.0 起铸同名位;KL-417:升级判据 0.91.0 已兑现,自由函数的双读由退役登记 RL-22 守到期);KL-256 重新登回(读实现后判为取舍);KL-373 触发条件补终端现状。源码注释、门脚本与登记物里指向已转票行的引用同批改指承接票号(52 处;构建产物逐字节不变)。
|
|
200
|
+
- **KL-554**:只换钉本包、卡口不交问类集合的端,常驻放行模式在姿态那一步一律 `unknown`,姿态自动应答归零(按端自己的规则阶梯判);卡口交出问类集合后恢复。
|
|
201
|
+
- **KL-555**:问类集合上 wire 要引擎 ≥ 7.37.0 且服务端 ≥ 7.109.0;更老的服务端卡上没有 `classes`,常驻放行模式下姿态车道恒 `unknown`。
|
|
202
|
+
- **KL-557**:服务端会话级「总是允许」的结算不读问类集合、出身词与让位披露;本包规则车道答必问的卡,服务端那一侧可能已按会话授予结算。
|
|
203
|
+
- **KL-558**:卡入参旧字段在新一代帧形上只从 `persisted` 成员派生;仍按旧字段判让位的端在 7.117.0 上看不见别的成员的让位。
|
|
204
|
+
- **KL-521**:`fleet: false`(部署没有 fleet 面)时能力位读 `not_reported`,`now` / `later` 本地拒 —— 引擎其实会生效(方向安全;标准启动恒建 fleet 面)。
|
|
205
|
+
- **KL-522**:会话第一拍还没读到能力、客户端没接读器的 tee、或引擎切换后新探测还没落定时,`now` / `later` 本地拒(按推荐序先有界等待)。
|
|
206
|
+
- **KL-523**:被一条 `now` 切断的那一轮上撤掉的审批卡,撤卡帧的理由词与取消 / 停止同词、帧上没有输入关联键;切断句不提卡,卡的结局由撤卡帧单独说。
|
|
207
|
+
- **KL-524**:同键重放 409 分不出是正文还是别的面不同,处置句一句两分支;机读区分位随引擎提货再分句(CC-365)。
|
|
208
|
+
- **KL-525**:`later` 档的消息在 run 收尾前没被用上时,用户看到的是「排队的 follow-up 没被用上」那一句(引擎走同一条 follow-up 车道)。
|
|
209
|
+
- **KL-526**:停放中(等决断 / 已结束待唤醒)的 run 上,档位随条目存着,投递时刻(`now` 等同 `next`、`later` 在下一段的首轮)上游没有 wire 钉,本包不承诺时刻。
|
|
210
|
+
- **KL-527**:回执的 `priority` 回显是这一发请求所带的档位,不是停放条目存的档位(7.116.0 上两者等效;老服务端上换档同键重放的回显与条目不一致)。
|
|
211
|
+
- **已知限制档删 2 行**(CC-353 解):KL-419(处置句写给接入方、与终端句表两说)、KL-421(cancel 404 无处置句)。
|
|
212
|
+
- **KL-564**:`readEffectiveMemoryScopes` 里既有的读位(`state` / `contract` / `reason` / `scopes` 与行的 `scope` / `origin`、`writeScope`、`materializedResidue`)仍是裸读,取值抛的入参会让读器抛;只有本版新增的两键(`projectKey` 及其内部位、行上 `shadowed`)是受保护读(取值抛 ⇒ 这一键不铸、不拖垮整臂)。终帧经 JSON 反序列化进来、没有取值器,只有宿主把带访问器的活对象直接交给读器才碰到。
|
|
213
|
+
- **KL-545**:能力位读器的 tee 不带 `generation` 时,一发在 `invalidateEngineCaps` 之后才落地的上一代能力回体照写、记为当代(号要在探测出生那一刻抓,tee 里抓到的永远是新号;CC-377,接入文档 **§118 CG-2**)。按接入文档的接线形在探测出生时抓号交回即无此形。
|
|
214
|
+
- **KL-546**:能力位读器的格按地址分、不按调用方身份;能力回体里按调用方算的位(`permissionRulesWrite`、`centerWiring.caller`)在同一地址上换身份读时,换身份后调 `invalidateEngineCaps` 让全族作废(CC-377)。
|
|
215
|
+
- **KL-547**:失效之后到新读数落地之间读器答 `unobserved`,四类判定比上一台的读数宽(`fileHistoryDeclarationField` 不带「别捕获」声明、`toolsRunHereFromExecutionLane` 回落调用方旁证、`noOsSandboxOnThisHost` 那一句不渲、三态可用性判定由 `no` 变 `unknown`);那一拍与此前按义务调了 `forget*Reading` 的端相同。要按新读数提交的先 `await engineCapsSettled(baseUrl, { withinMs })` 再重读:替代探测失败 / 没有替代探测 / 到时之后读数仍是 `unobserved`,用户关了文件历史时这一拍不要直接提交(片段为空 = 照常捕获),不提交或先让用户确认(CC-377,接入文档 **§118 CG-1**)。
|
|
216
|
+
- **KL-566**:支持底线按终端的回报与附着门抬到服务端 7.106.0;网页端 / 管理台 / 桌面端没有回报自己的部署底线 —— 有低于 7.106.0 的部署请回报。
|
|
217
|
+
- **KL-567**:老会话历史回放里的 `deniedBy: "plan_mode"`(引擎 7.33.x 及更老写下的门记录)本版起不在「谁拒的」表里:结果侧不盖「谁拒的」、CC 拒类答不出、措辞落表外那一句。
|
|
218
|
+
- **KL-568**:低于支持底线(服务端 < 7.106.0)的部署上,本版退掉的老读法不再兜:不带 typed 父键的子代行恒 unbound、不带 `workflowRunId` 的 workflow 子代 tick 进前台面板、`inheritEnv` 请求整条被拒、治理面露出而撤销答 404、SQL 姿态答「没报」、审批卡少「读不出来的是店还是这次调用」那一句。
|
|
219
|
+
- **KL-569**:`toolsRunHereFromExecutionLane` 的 `unobserved` 臂(能力位还没落地)仍用调用方的旁证,收口归能力快照统一。
|
|
220
|
+
- **KL-571**:取消终局的合成终局行仍落 `API Error:` 那一臂(码 `cancelled` 不在占锁 / 治理 / 模型输出三臂的判据里);带成因时下一行成因句说「not an engine error」,行首与成因句并存;成因缺席的取消终局只有 `API Error:` 那一行。
|
|
221
|
+
- **KL-572**:只收过畸形能力回体的地址,`invalidateEngineCaps` 会把代际号从 0 推到 1(0.91.0 为 0):读器入口先占的代际身份没写格也不退还 —— 退还会把同一只身份下别的读器刚写成功的格一并作废;只差在号,读数照旧未观测。
|
|
222
|
+
- **KL-573**(披露,CC-414):展示出口对粘在下划线 / 连字符后的已知前缀凭据(`mcp__x__sk-ant-…`)不遮 —— 已知前缀按词界锚定、下划线算词字符;空白后的同串照遮。
|
|
223
|
+
|
|
224
|
+
## 0.91.0(2026-10-05)
|
|
225
|
+
|
|
226
|
+
> 主题:**minor** —— steer 拒收处置句单源与两只已有判定上根入口 · 引擎闭集表四张提货与问类仲裁 · 会话历史 tool_use 错配一族收口(「改了重发」归合成终局行、出路句事实位、行键读口与点名坏轮句)· 投递事实账本的来源位 / 份额位与按引擎代查询 · 崩溃遗留通告那一行话归包 · 权限规则装配口的筛选理由报告口与读健康位 · 能力位有界等待 · hooks matcher 受理判定 · 会话规则读失败句与 `inheritEnv` 拒绝句改口 · 展示出口 YAML 块标量整块遮 · 用户附件数据信封与人类提交的唯一投影 · 服务端 7.115.0 / sdk 16.1.0 提货(「只续已有会话」按码优先、`checkpoint.unsupported_version` 读口与出句口、hooks matcher 别名拒事后读口、`probeReason` 与 `fleet` 段过境、夹具换代)· 登记物整治(已知限制档清账、退役台账与影子表到期读法)· 开发依赖 settings-schema ^8。
|
|
227
|
+
|
|
228
|
+
### Added
|
|
229
|
+
|
|
230
|
+
- **投递账本的记录带来源位与份额位,读回分得清「是谁说交出去了」**(CC-293;**§117 PL-1**):`PromptDeliveryRecord` 加两只可选键 —— `by?: 'frame' | 'steer_receipt'`(这条 `d` 是本包哪一只写口记下的:引擎流上建了 run 的帧 / 拒收之后自愈递进在跑 run 的受理回执)与 `share?: 'full' | 'partial'`(交出去的份额,只挂带 `by` 的 `d`,缺席 = `full`);`a` 记录不带扩展键。账本对象加两只读口:`deliveryShareOf(uuid)` → `'full' | 'partial' | undefined`,`droppedKeyCount()` = `fromRecords` 读回时丢掉的键累计数(收下的记录身上没保留的键;整条被跳过的坏行不计)。判定:带 `by` 的 `d` ⇒ 交出去了(`share: 'partial'` 时 `isDelivered` 真、`knownUndelivered` 假、份额 `partial`);**没有 `by` 的 `d`(0.90.0 及更早写下的)读作 legacy ⇒ `isDelivered` / `knownUndelivered` 两判皆假**(不知道);扩展位读不懂(表外词 / 非串 / 取值器 / 只在原型链上 / 只有份额没有来源)⇒ 这一条按 legacy 记,存下的记录不带扩展键(经本账本再写出去也不会升格)。合并取上确界(`full` ⊔ `partial` = `full`、带来源 ⊔ legacy = 带来源),与先后无关、不按最后一条;读回只在读数上升时返回新增记录。0.90.0 的读者读本版记录时剥掉扩展键读成 `d`,对这些记录与本版读者答案一致。
|
|
231
|
+
- **点名坏轮那一句 `toolHistoryBadTurnSentence(promptText)`**(CC-303;**§117 TH-3**):宿主解析到坏记录所在那一轮、`/rewind` 预选了那一行之后,取这一句接在本包出路句 / 次数句之后。处理顺序:非串当空 → 去显示标签(成对的小写 XML 形标签块;删完为空则用原文)→ 空白折成一格并去首尾 → 展示出口单行洗(`displayUntrusted`,`{ foldLines: false, mark: 'dot' }`)→ 按码点截前 60 个、超出补 `...`。**先洗后截**(先截会把一枚凭据截成半只、洗法认不出就原样漏进句子);按码点截(不劈代理对)。两句:有预览 `The broken record is in the turn you started with "<预览>"; /rewind has that prompt preselected, so restore the conversation to before it.`;无预览(空串 / 非串 / 洗完为空)`The broken record is in the turn /rewind has preselected; restore the conversation to before it.`。恒返回一句(要不要说这一句由宿主定);去标签是线性扫描。与终端现行那一句逐字节同。
|
|
232
|
+
- **行键读口 `readToolHistoryMismatchKey` 与行键型 `ToolHistoryMismatchRowKey` 上根入口**(CC-304;接入文档 **§117 TH-1**):合成终局行顶层的 `_sema_tool_history_mismatch` 原样交进来(非对象 ⇒ `undefined`),拿回一只新对象 `{ kind, toolUseId?, consecutive?, rewindOffered? }`;四位都只读自有数据位(继承来的 / 取值器形的成员当缺席 —— 本版起,此前包内这一只按属性访问读;JSON 行上两者同答);kind 在闭集外或缺席 / 读它就抛 ⇒ `undefined`,可选成员坏形逐个丢,永不抛。与 `adapt()` 重建合成行时接力用的是同一只读口(同一函数对象)。读法与闭集只在这一只读口里 —— 端不必再自判顶层位在不在。
|
|
233
|
+
- **hooks matcher 受理判定 `hookMatcherVerdict(event, matcher)` + 型 `HookMatcherVerdict` / `HookMatcherUnjudgedReason`**(CC-306;接入文档 **§117 HV-1**):一只纯函数回答「这条 matcher 放在这个事件上,服务端会不会因为它选中了某个工具的别名、却选不中别名的正名而拒掉整份提交」。读法与服务端 7.114.0 / 7.115.0 受理面同一套:只判 matcher 按工具名匹配的三只工具事件(PreToolUse / PostToolUse / PostToolUseFailure);缺席 / `""` / `"*"` 匹配一切;只含名字字符、半角空格、竖线与逗号的串按名字表读(竖线或逗号分名、每段去两端空格、空段丢、区分大小写),其余按锚定正则读;别名表读 `hookToolAliasesOf()` 那同一张生成表。四臂:`matchesAll` / `accepted`(带读法、名字表读法分出的名字、它点名或匹配到的别名与正名)/ `refused`(理由词 `alias_without_canonical`,带第一对别名与正名 —— 与服务端 7.115.0 起 400 体 `detail` 的 `alias` / `canonical` 同答)/ `unjudged`(带理由:事件不在范围、matcher 不是串、超过 8192 字符、正则编不过、正则用了给不出耗时上界的语法、静态回溯上界超预算)。**`unjudged` 不是受理**,调用方不得当通过。用户写的正则只拿去配别名表里的工具名,执行前先过静态回溯上界,病态正则不执行;永不抛,读数冻结、每次新对象。装配口照旧把 matcher 原样放上请求体,跳过口照旧按原串做键;提交前要不要预检由宿主调本口决定。逐代读法(服务端 ≤7.111.x / 7.113.x / ≥7.114.0)见接入文档 §117 G-HV7 表。
|
|
234
|
+
- **steer 拒收合成口 `steerRefusalAdviceOf(e)` + 型 `SteerRefusalAdvice`**(CC-307;接入文档 **§117 SR-1**):对一个 steer 抛出物(sdk 抛出的错误对象,或 `ControlSafetyError` 的 `cause`)给出 steering 族的判别位与处置句 `{ safety, advice }`;不是 steering 族 ⇒ `undefined`。判别与 `ControlRouter.steer` **是同一份**:路由器自己也改调这一只,同一抛出物上路由器抛出的 `ControlSafetyError` 的 `code` / `advice` 与本口的 `safety` / `advice` 逐字节同。判别三步:码优先、sdk 类名兜底,`steering.` 前缀在场即归族、表外码落开集位 `steering_other`;「服务端在交给引擎之前就拒了」的那几位要状态码与码(或类名)合取成立才给,不成立落开集位;开集位的句子按状态码是否 4xx 分两句(4xx ⇒「没落地」,其余 ⇒「送达未知,别当它确知被丢而重发」),与 `atMostOnceFailureClass` 的送达判定同一条线。受保护读:码 / 类名 / 状态码任一读位抛 ⇒ `undefined`,绝不抛;每次交新对象。入参是 `ControlSafetyError` 本身时答 `undefined`(它自己带 `code` / `advice`)。
|
|
235
|
+
- **`ControlSafetyError.advice?` / `ControlSafetyError.status?`**(CC-307;**§117 SR-2 / SR-3**):两只自有只读位。`advice` = 这次拒收的处置句,不含码前缀(路由器铸的错误上 `message` 恒为 `<前缀> — <advice>`,两者同源);steering 族恒在,cancel 的两只 409 位(`cancel_run_not_running` / `cancel_lost_race`)与「没有在飞的 run 可 steer」在,只陈述、不含处置的两句(cancel 404 `not_found` / 没有在飞的 run 可取消)缺席。`status` = 抛出点从原始错误上读到的 HTTP 状态码(`errCodes` 同一读法:`status ?? statusCode`,数值才带);本地拒(请求没发出去)/ 没有数值状态码 / 读位抛 ⇒ 缺席。两位缺席时不是自有属性(`'advice' in err` 为假),不是值为 `undefined` 的属性。**`message` 逐字节不变**(对 180 种抛出物与 0.90.0 构建实跑逐字节比过,见下方 Changed 唯一一条例外)。构造签名加可选第四参 `detail?: { advice?: string; status?: number }`(只收非空串与数,其余当缺席);旧的两参 / 三参调用逐字节同旧、两位缺席。
|
|
236
|
+
- **`steeringRefusedBeforeEngine(e)` + 型 `SteeringRefusedBeforeEngine` 上根入口**(CC-307;**§117 SR-4**):「服务端在交给引擎之前就拒了」的 5xx 判定(今天唯一一行:503 ∧ `steering.ledger_unavailable` 或 sdk 专类名),此前是包内件(自愈 / 子代 / 主 run 三条 steer 路径共用)。语义不变:入参收对象、受保护读、判不出 ⇒ `undefined`。合取成立时与 `steerRefusalAdviceOf` 对同一抛出物同答;型与 `SteerRefusalAdvice` 同形。`steeringStatusIs4xx` 不上根入口(合成口的零件;端拿合成口的结论,不另按状态码分句)。
|
|
237
|
+
- **合成终局行上的「改了重发」读数 `_sema_provider_rejection_resend`**(CC-309 ②;**§117 TH-4**;超集键 +1):值 = `providerRejectionResend` 的读数原样 `{ resend, text }`。
|
|
238
|
+
- **崩溃遗留通告那一行话:整行 `crashConvergedNotice(projection)` / 按因由一句 `crashConvergedNeedsHumanSentence(reason, n, total)` / 句序 `NEEDS_HUMAN_REASON_ORDER`**(CC-310;**§117 CN-1 … CN-4**):上一次引擎运行留下、被收敛成 denied 的审批(`projectCrashConverged` 的产物)要对人说的那一行话,唯一措辞真源。
|
|
239
|
+
- `crashConvergedNotice(projection)`:入参 = `projectCrashConverged` 的产物原样(宿主按自己的披露账摘过行的,按两桶长度重算 `total` 后交)。出英文一行:头句 `the previous engine run ended with <N> approval(s) still waiting (recorded as <cause 码>), and the engine converged it / them to denied`(cause 码原样复述、按首见序去重,不翻译成「引擎崩了」)→ 有需人核行时按因由逐句,否则 `based on what was recorded, it / they can be re-run` → `. sema has not re-run anything.` → 有读不出的行时补 ` (<N> further record(s) could not be read.)`;两桶都空、只有读不出的行时只说 `the previous session left <N> crash-converged approval record(s) that this version could not read. sema has not re-run anything.`。需人核那一段:各因由按 `NEEDS_HUMAN_REASON_ORDER` 各一句,因由缺席 / 表外 / 读不出的行合成兜底一句 `<n> of <total> had already been approved, or cannot be accounted for, so a side effect may have partly landed` 排最后,句间 `; `,收尾 ` — check it / them by hand before re-running` 只说一次(按需人核行数选 it / them)。缺席(`undefined`)/ 服务端明说一条都没有(`total` 与 `dropped` 都是 0)/ 读不懂(不是投影形、两桶长度之和不等于 `total`、计数不是非负整数、行数超过 100000、取值器 / 原型位 / 代理)⇒ `undefined`,不抛;某一行的因由读不出只让那一行落兜底句,某一行读不动只让括号里的码整截不写。分桶只信投影:不读 `orphanState` / `resumeSafe` 位 / 已批证据。对投影形入参与终端现行那一行逐字节同。
|
|
240
|
+
- `crashConvergedNeedsHumanSentence(reason, n, total)`:四因由各一句(单复数只看 `n`):`approved_then_interrupted` ⇒ `<n> of <total> had already been approved and may have been running when the previous engine run ended, so a side effect may have partly landed`;`pending_unsafe` ⇒ `<n> of <total> had not started, based on what was recorded, but the engine did not mark it / them as safe to re-run`;`contradictory` ⇒ `<n> of <total> has a contradictory record / have contradictory records`;`unstable_row` ⇒ `<n> of <total> has a record that read differently each time it was read / have records that read differently each time they were read`。表外词 / 非串 / 原型链上的名字 / 包装串 ⇒ `undefined`;`n` 不是正整数、`total` 不是不小于 `n` 的整数 ⇒ `undefined`;不抛。兜底句不在这只口上(只在整行口里)。
|
|
241
|
+
- `NEEDS_HUMAN_REASON_ORDER`:冻结元组 `approved_then_interrupted` / `pending_unsafe` / `contradictory` / `unstable_row` —— 句子排在屏上的顺序;与 `needsHumanReason` 字面量联合的声明序(分桶时的判定优先序)不同是有意的,构建期保证它恰是那只联合的一个排列(删一员 / 多一员 / 重复一员都编译红)。
|
|
242
|
+
- **`engineCapsSettled(baseUrl, { withinMs })` 有界形**(CC-311;接入文档 **§117 CS-1 … CS-3**):签名 `engineCapsSettled(baseUrl, opts?: { withinMs?: number })` ⇒ `Promise<'settled' | 'timed_out'>`。
|
|
243
|
+
- 不给 `withinMs`(`opts` 缺 / `null` / `{}` / `withinMs: undefined`)⇒ 与 0.90.0 逐字节同行为:等到当前探测落地,零计时器。
|
|
244
|
+
- 给了而此刻有在飞探测 ⇒ 最多等 `withinMs` 毫秒:探测先落地(成败皆算)⇒ `'settled'`,到时 ⇒ `'timed_out'`。到时**不取消**探测,之后落地的位照常进缓存。返回值只说「等待为什么结束」,不是能力读数:要知道引擎说了什么,返回后仍读缓存位(`engineCapState` / `engineCapTrue` / 片段口;KL-445)。
|
|
245
|
+
- 没有在飞探测 / `baseUrl` 缺席 / 空串 ⇒ 立即 `'settled'`,**不铸计时器**。计时器**不 unref**(被 await 的预算臂:探测永不落地时它是 `await` 唯一的 settle 来源,unref 会让没有别的存活句柄的进程在到时之前退出,实读退出码 13),ref 保持到清掉为止,返回前一定清掉(先落定 / 到时 / 异常三条路同),寿命上界 = `withinMs`;预算是**一次调用的总预算**(引擎温切把等待接力到新探测上时不重铸),接力后读到的是新引擎的位。
|
|
246
|
+
- 读不懂的 `withinMs`(≤ 0 / `NaN` / `±Infinity` / 非数 / 数字串 / `bigint` / `opts` 不是对象 / 取值器抛 / 已撤销代理)⇒ 读成「不等」(没在飞 ⇒ `'settled'`,在飞 ⇒ `'timed_out'`),**绝不退成无上限**;超过 2^31−1 毫秒的值夹到 2^31−1(不回绕成 1 毫秒);小数 `0.5` 是有界。「没给」与「读不懂」答法不同,见 KL-447。
|
|
247
|
+
- 任何情况不抛:计时器工厂本身抛也只答 `'timed_out'`。
|
|
248
|
+
- **`disableSkillsDeclarationSettled(want, baseUrl, withinMs)`** ⇒ `Promise<DisableSkillsDeclaration>`(CC-311;**§117 CS-4**;KL-357 改写):`disableSkillsDeclaration` 的有界异步变体 —— 先有界等这台引擎的能力探测落定,再调同步片段口,答案**逐字**经同步口出(不另造成因、不另造措辞)。宿主已起探测、窗内落定且读到的能力位为真 ⇒ 首发就给 `{ disableSkills: true }`;其余一律与同步口同答 —— 到时仍没读到 / 探测失败 / 宿主没起过探测(本口不替宿主起探测,没有在飞探测可等,立即答)⇒ `unprobed` 回执(同一句话),引擎没报 / 报假 / 报了读不懂的值 ⇒ 对应成因的回执。`want` 的静态型是 `boolean | null | undefined`(同步口是 `unknown`);意图不是 `true`(`false` / `undefined` / `null`)不等、立即按同步口答;运行期坏意图(JS 宿主 / 类型断言)先于等待抛同一句坏值句(起头换成本口名),不先白等一个窗;`withinMs` 缺 / 读不懂 ⇒ 不等。**同步口 `disableSkillsDeclaration` 一字不动**(仍纯同步读缓存,能力没读到仍答 `unprobed`)。
|
|
249
|
+
- **权限规则装配口的筛选理由报告口 `permissionsDeclarationReport(input, caps)` + 闭集 `PERMISSIONS_KEPT_REASONS` + 型 `PermissionsDeclarationReport` / `PermissionsKeptRule` / `PermissionsKeptReason` / `PermissionsRewrittenRule` / `PermissionsUncheckedRule`**(CC-314;接入文档 **§117 PX-1 – PX-4**):与 `permissionsDeclaration` 出自**同一次遍历**(两只口共用一只内部装配,不另判)。`permissions` 与投口逐字节同(在场与否也同);`kept` 列出每一条没随请求发出的规则串与理由,十二词闭集 —— allow 桶两道门 `allow_capability_off` / `settings_read_not_clean`,逐条判的各关 `empty_rule` / `paren_in_tool_name` / `retired_tool_name` / `unprefixed_namespaced_name` / `incomplete_protocol_name` / `home_relative_path` / `compile_refused` / `content_form_not_grantable` / `judge_failed`,同桶去重 `duplicate`;一条规则只报它在判定路径上第一个没过的那一关。`rewritten` 列出每一条写法变了的投出规则 `{ from, to, bucket }`(旧名归一、整工具形、整服务器 / 整 peer 写法);`unchecked` 列出投出了但规则编译器答不上来的 deny / ask。入参四只列里每一条规则串恰好落在「投出」或 `kept` 之一;数组里的非串与纯空洞不是规则串,两口都跳过。抛的范围与句子与投口逐字节同。端向用户解释「这条规则为什么没随请求发出」只读 `kept`;审批的同步放行照旧按**全部** allow 规则做 —— 发出去的 allow 在引擎那边是「有人对这只工具表过态」,不是免问。
|
|
250
|
+
- **`PermissionsDeclarationInput.settingsRead: 'clean' | 'partial' | 'unreadable'`(型面必填,型面 BREAKING)**(CC-314;**§117 PX-5**):构造入参不带它 ⇒ 编译红,0.90.0 起的调用方加这一位即过(`permissionsDeclarationReport` 同型);运行期缺席(JS 调用方)按下面的「缺席 = 不知道」处置。**产出这批规则的那一次设置读**的健康(`'clean'` = 读得出、零问题键 —— 读不干净时宿主沿用上一次干净读里已有的 allow,那一批也交 `'clean'`;`'partial'` = 有文件带坏字段、权限段照常解析出来;`'unreadable'` = 有文件读不出;缺席 = 不知道)。行为见下方 Changed。
|
|
251
|
+
- **用户附件数据信封 `mintUserAttachmentEnvelope(descriptor)` + 型 `UserAttachmentDescriptor` / `UserAttachmentNotebookCell`**(CC-315;接入文档 **§117 AE-1 … AE-4**):引擎没有附件席位时,用户 `@` 附上的文件 / notebook / 图片 / PDF / 目录写成模型读的那段文本 —— 唯一铸点。形:头部事实句(谁附的、名字、绝对路径、行数 / 条目数 / 体积、完整与否)+ 空行 + 围栏 + 带行号正文 + 围栏;PDF / 图片 / 没带上的 / 空文件 / 空目录只有事实句。不自称调用过工具、不用提醒形外壳、不嵌指令句;像素、PDF 正文、notebook 图片输出与读不了 / 过大 / 被读规则挡住的路径一律如实说没带(页数读不到写 `page count unknown`,不估)。边界三规则只在铸点里:① 围栏长度 = 整只信封里任意位置最长的波浪线类连续串(含五个形近码位)+ 1、至少 4;② 正文行内的九个断行码位(CR / VT / FF / U+001C – U+001E / U+0085 / U+2028 / U+2029)写成可见转义并在头部说一句;③ 名字 / 路径 / 条目名含控制 / 格式 / 分隔 / 孤代理码位、双引号或反斜杠时写成 JSON 串并把余下的那些码位写成 `\uXXXX`。描述符六形(`text` / `notebook` / `image` / `pdf` / `directory` / `not-included`)由端读盘后交进来,本包不读盘;按不可信入参读(只认自有数据位、取值器不执行),坏形抛 `TypeError`。字节与终端现行那一份逐字节同(45 条参考样本逐字节拷进本包门);notebook 单元的「输出过大」由端判成结构位 `outputsTooLarge`(不认端的替身文本)。
|
|
252
|
+
- **人类提交装配 `encodeHumanTurn(input)` + 交账本两档 `deliveredUuidsOf(encoding)` + 看图判定 `imageVisionOf(model, catalog?)`**(CC-297 子集 / CC-315 ②;**§117 HT-1 … HT-7**):一次提交(有序条目:正文、粘贴图、`@` 附件描述符、上传件、随行、端报的缺失)→ 请求载体的唯一投影。两个载体:`objective`(交互车道与一次性 `-p` 车道共用;`text` + `images` + `attachmentIds`)与 `steer`(只有 `text`)。投影:各条「附件信封 …(空行分隔)该条正文」,各条非空条目正文按序换行连接。`objective`:图片座位计划一次算定 —— 粘贴图先占、至多 20 张、单张与合计 base64 各 6 MiB、模型能看图(`caps.vision === 'yes'`)才放 `@` 图片的像素,入座的那张信封说已随附、其余说未附;请求体 8 MiB 核算(入参 `otherBodyBytes` = 请求体其余键的序列化字节数,算式与真序列化逐字节相等,恰好等于上限照收),装不下把贡献最大的附件降为一句引用(同大先降靠后的),全降仍超 ⇒ `oversize`。`steer`:内容形过引擎的补话文本判据(提醒形标签 / 控制字符 / 16000 码元)即发,不过 ⇒ 全部附件降为引用句再判,仍不过 ⇒ `{ ok: false, reason: 'steer_hold', why }`(留队,这一轮结束后作普通提交发出)。份额:每条逐项(正文 / 每张图 / 每只附件 / 每个上传件 / 按角色要求的随行正文 / 端报的缺失)记 full 或 none,条目级 full / partial / none;`degraded` 是编码器自己降掉的那几项,与份额出自同一份记录。拒绝臂闭集 `empty` / `malformed_input` / `malformed_item` / `duplicate_uuid` / `rider_collides_primary` / `oversize`;永不抛。`deliveredUuidsOf` 交 `{ full, partial }`(档内带该条主 uuid + 随行 + 附件 uuid;`none` 不入,`ok: false` ⇒ 两档皆空),原样交给投递账本的两只写口:两档都经写口记交出,`partial` 记 `share: 'partial'`;`knownUndelivered` 只对两档都没记的条目为真。`imageVisionOf` 找在线目录那一行时先找 name 恰等于目标的、一行都没有再找 id(与本包在线目录的引用归一 `normalizeLiveModelRef` 同一只解析规则,两者现在共用它;一行的 id 撞上另一行的 name 时取 name 那一行):行上自有的 `vision` 为真 ⇒ `yes`、为假 ⇒ `no`,其余(目录缺席 / 找不到 / 没这一位 / 只在原型链上或是取值器)⇒ `unknown`,取值器一次不执行;缺省读本包的在线目录。型:`HumanTurnInput` / `HumanTurnItem` / `HumanTurnAttachment` / `HumanTurnRider` / `HumanTurnMissing` / `HumanTurnCaps` / `HumanTurnEncoding` / `HumanTurnShare` / `HumanTurnSharePart` / `HumanTurnDegraded` / `HumanTurnDelivered` / `ImageVision`。
|
|
253
|
+
- **附件席位能力位三口 `noteEngineCapsForAttachmentSeat` / `observedAttachmentSeat` / `forgetAttachmentSeatReading` + 型 `AttachmentSeatReading`**(CC-315 ③;**§117 AE-5**;测试钩 `__resetAttachmentSeatReadingsForTests`):能力位读器族同一套 tee / 读口 / 换代失效口。今天读数只有 `unobserved` / `not_reported` 两态 —— 引擎席位的能力位键名随引擎那一版的判据定,本版不铸;读到普通对象能力表 ⇒ `not_reported`(不是「不支持」)。装配口今天恒走数据信封。
|
|
254
|
+
- **`abortableSleep(ms, signal)` 上根入口**(CC-317;**§117 RX-1**):abort 感知的 sleep —— 到点 resolve;等待中 `signal` 被 abort 即刻 resolve 并清掉定时器;入口时已 aborted ⇒ 立即 resolve、零定时器。与包内两处轮询退避用的是同一个函数(根入口导出与包内调用是同一引用)。同文件的 `settleWithinDeadline` 不出。
|
|
255
|
+
- **`isAlreadyResolvedFailure(outcome)` 上根入口**(CC-317;**§117 RX-2**):两条决断路径的失败结局(`GateOutcome` / `FsApprovalOutcome` 的 `failed` 那半)判「这张门是不是早就被解决了」—— 闭集失败码在场只信码(`no_pending` ⇒ 真);码说清了自己是「门还在」或「续跑启动期失败」的不进文案臂(⇒ 假);停驻挪动族三码按码判「门已不在原处」(⇒ 真);其余落文案兜底词表。与包内停泊路径用的是同一个函数。公面口受保护读:入参不是对象、任一读位抛 ⇒ `false`(答真会让调用方续读流 / 重探坐标,读不出就不放行),绝不抛。
|
|
256
|
+
- **引擎两只闭集表 `ASK_EVIDENCE_ABSENCE_VALUES` / `SYSTEM_INJECTION_PRIORITIES` 上根入口**(CC-318;接入文档 **§117 UT-1 … UT-3**):审批问的规则证据某一位「为什么没有值」的已知词(`not_wired` / `not_adjudicated` / `unavailable` / `no_match` / `not_reported`)与系统注入队列的档位(`now` / `next` / `later`)。此前三端各自手抄一份、靠镜像门对值;本版起表由**构建期从已装开发依赖引擎的包根常量生成**(`scripts/gen-upstream-tables.mjs` 第七批),运行期不读引擎,根入口交出的是生成物那个冻结对象(`as const` 元组,成员型可由它派生)。表是**已知词**清单,不是线上词的闭集判官:读线上帧的口仍按开集原样带回表外词。生成器遇到引擎里没有这只名字 / 不是数组 / 空数组 / 有重复 / 含非串或空串一律拒生成(非零退出、不落盘空表)。
|
|
257
|
+
- **问类仲裁表 `MODE_ARBITRATION` 与「常驻回答放行之后还问不问」判定 `askSurvivesStandingAnswer(card)`**(CC-322 ①;**§117 SA-1 … SA-4**):
|
|
258
|
+
- `MODE_ARBITRATION`:问类 → `{ bypassImmune, classifierEligible, sandboxAdmission, ruleMayClear, hookAskFloor }` 五个布尔,逐键逐位同引擎(今天 22 类),冻结且每一行也冻结;同上由生成器第七批生成(行缺位 / 多位 / 位非布尔 / 键是 `__proto__` 或数组下标形 ⇒ 拒生成)。
|
|
259
|
+
- `askSurvivesStandingAnswer(card)` ⇒ `{ kind: 'must_ask', by }`(`by` = `'mandated'` 或第一个清不掉的问类名)/ `{ kind: 'may_answer' }` / `{ kind: 'unknown' }`。只读卡上自有的 `mandated` 与 `classes` 两位,都受保护读(读抛 ⇒ `unknown`;原型链上的位不算;`classes` 的长度只读一次、读完再核,读的过程中被改动的数组 ⇒ `unknown`):`mandated` 严格为 `true` ⇒ `must_ask`;否则 `classes` 须是非空的串数组,按数组序逐类查表 —— 遇到 `ruleMayClear` 不是 `true` 的类 ⇒ `must_ask`、遇到表外类名 ⇒ `unknown`(开集词按收紧方向)、全部在表且全可被清 ⇒ `may_answer`;`classes` 缺席 / 非数组 / 空数组 / 含非串 / 有洞 ⇒ `unknown`。**`unknown` = 调用方不得让位**(与 `must_ask` 同处置),绝不折成 `may_answer`。不读 `origin` / `ruleOffersAbsence` / `shadowed` / `askClass`(引擎已明说「被盖住」不是判定输入)。判定函数只读生成表,零问类名字面量。表是构建期快照(KL-427);老服务端(< 7.109.0)停下的卡没有 `classes` ⇒ `unknown`(KL-428)。
|
|
260
|
+
- 型:`StandingAnswerVerdict`。
|
|
261
|
+
- **内置读拒表档位词表 `READ_DENY_BUILTIN_TIERS` / `READ_DENY_DEFAULT_TIERS` 与部署键串校验口 `parseReadDenyBuiltinTiers(input)`**(CC-327;**§117 RD-1 … RD-4**):两张词表(五档全集 `credentials` / `shell-history` / `browser` / `wallet` / `agent-config`;不配置时在岗的两档 `credentials` / `agent-config`)同上由生成器第七批生成,出厂在岗档必须是全档的子集(否则拒生成)。`parseReadDenyBuiltinTiers(input: string)` 判面板输入能不能写成部署键 `READ_DENY_BUILTIN_TIERS` 的值:
|
|
262
|
+
- `{ ok: true, value: null }` —— 空 / 全空白 = **删键**(回到引擎出厂缺省;不是把空串当值写进去,服务端对空值拒启);
|
|
263
|
+
- `{ ok: true, value: 'none' }` —— 显式空姿态,整张内置表关;只能单独出现;
|
|
264
|
+
- `{ ok: true, value: '<规范拼法>' }` —— 各项两端空白裁掉、按输入序、逗号连接(不排序、不去重、大小写敏感;同一档位写两次照收,`browser,browser` 仍是 `browser,browser` —— 服务端对这样的串照收,引擎一侧在岗档位是集合,重复无害);
|
|
265
|
+
- `{ ok: false, why }` —— 空项 / `none` 与别的项并列 / 表外档位;`why` 是一句英文单行,回显的用户原值过本包展示出口(凭据遮蔽 / 控制符转义 / 封长),超长原值不整串回显。
|
|
266
|
+
- 非串入参 ⇒ `{ ok: false }` 不抛;`value` 永不是空串。校验口只读生成表,函数里没有任何一档的字面名。
|
|
267
|
+
- 🔴 串文法(逗号切分 / `none` 哨兵 / 空白口径)是按服务端受理行为写的镜像,服务端发布包里没有可直接调用的纯解析函数,所以没有可对拍的受理口,门里只有九格金样(KL-425;退役登记 RL-21)。
|
|
268
|
+
- 型:`ReadDenyBuiltinTiersParse`。
|
|
269
|
+
- **`sessionPolicyReadNotice(outcome)`**(CC-328;接入文档 **§117 SN-1 … SN-3**):会话规则记录**读不到**时的一句人话,唯一措辞真源。入参取 `readSessionPolicy` 结局的非 `present` 两臂 —— `failed` 按失败分类各一句(十一句)、`malformed` 按读不懂位置各一句(三句)—— 外加宿主自己的 `{ kind: 'no_target' }`(没有连上引擎,会话规则记录读不到;连上后再看)一句,十五句两两互异。`no_target` **不是读口的结局**:本包的 `readSessionPolicy` 永不铸这一臂,它是宿主自己的状态,句子放在这里是为了让这一页的读不到只有一个说话人。零机器词:失败分类原词、状态码、机器码、读不懂位置原词、引擎原文与读不懂的细节一个字都不进句子,宿主要摆自己对结局取。读不到不等于没有规则:没有一句说「空 / 没有限制」;「没有这条会话」两种成因一起说(可能不存在、也可能是别人的),这一面不给存在性预言机;`malformed` 的 `rule_field` 一句说清为什么整份都不展示(半坏就是坏)。入参不是对象 / 表外臂 / 表外失败分类 / 表外读不懂位置 / 原型键 / 读属性就抛 ⇒ 同一句通用话,不抛;每个键只取一次自有属性描述符、只认自有数据位(自有访问器不执行、按缺席算,不让不可信入参在这里跑代码)。声明面入参型 = `Exclude<SessionPolicyReadOutcome, { kind: 'present' }> | { kind: 'no_target' }`(类型面挡着「把成功当失败渲」);失败分类或读不懂位置多一种而没给句子 ⇒ 构建期编译红(穷尽 `switch`,无 `default`)。写口那一侧的三句(收紧 / 撤销 / 不写入)不变。
|
|
270
|
+
- **按引擎代查询「在那一代上提交过、仍没交出去」**(CC-334;**§117 PL-2**):`attempted(batchUuids, opts?)` 收可选 `{ generation }`(非负安全整数)⇒ 这一批记到该代的索引(同一 uuid 再提交 ⇒ 挪到最近一次的代与先后);账本新读口 `undeliveredInGeneration(generation)` 返回该代上提交过、此刻仍确知没交出去的 uuid(按最近一次提交的先后),读出即销该代的**索引项** —— 两只事实集合不动:读完之后 `knownUndelivered` 照旧为真、迟到的交出照记,同一代再读答空。代不进记录、不落盘;代不合法(非整数 / 负数 / 非数 / 选项读不动)⇒ 不记代、事实照记;读口收到坏代 ⇒ 冻结空数组、不抛。旧的一参调用不变。
|
|
271
|
+
- **`attachmentsSubmitVerdict(env?)` + 型 `AttachmentsSubmitVerdict`**(CC-337;**§117 AV-1 … AV-4**):`SEMA_ATTACHMENTS` 的**不抛**判读口。与 `attachmentsForRequest` 是**同一只判官**的两个出口 —— 同一取值,抛的那条路拒 ⇔ 本口 `ok: false`;收的那条路交出的声明与本口 `attachments` 逐字相同。`{ ok: true, attachments } | { ok: false, sentence, refusedKey }`:`sentence` 是一句可直接上屏的新句 —— 不带内部出处字样、不引被拒的原值(只说「清单里的第 N 项」与它属于哪只键;键名取自本包的键表)、带出路(合法写法、怎么整条撤掉);`refusedKey` 是被拒那一项属于哪只键(认不出是哪只键、或整个取值读不了 ⇒ `undefined`)。取值读不了(不是字符串或带 `trim` 的包装串 / 读取值就抛)⇒ 按「读不了」拒(同一句、`refusedKey: undefined`),缺席与空串 ⇒ 默认声明;两口共用同一个取值归一,同一入参两条路答案一致是结构保证。「接了引擎才读」这道门在调用方,本口不判。`AttachmentsSpecRefused` 的 `message` 一字不动(与 0.90.0 发布产物逐字节对拍);判官内部改为不抛的判决函数,抛的口包它、本口包它。
|
|
272
|
+
- **续跑被拒「服务端按存下的样子续不了这份停驻」的读口与句子 `checkpointUnsupportedVersionFromError(err)` / `checkpointUnsupportedVersionContent(detail, ctx?)` + 型 `CheckpointUnsupportedVersionDetail` / `CheckpointUnsupportedParkKind` / `CheckpointUnsupportedVersionContext`**(CC-339;**§117 SV-8**):服务端 7.115.0 起,升级前停下、提交体带非空 `settings.permissions.allow` 的任务,各续跑入口(工具审批决断 / 资源停车续跑 / 计划审阅 / 唤醒 / workflow 子代审批投到宿主的会话)答 409 `checkpoint.unsupported_version` 且 `retriable: true` —— 卡仍待决、零写,**不是**「重试会成功」。形与 reopen 族同(读口 + 出句口两只):读口只在码与错误对象**自有**的 `retriable === true` 同在时交 `{ code, retriable: true }`,否则 `null`(凭码不说「卡仍待决」;同一个码在引擎里还有别的成因,拒体上没有分臂位,读口不认定成因);停驻种类与 run id 是出句口的入参。出句口三段:服务端按存下的样子续不了这份停驻 · 什么都没决定、停驻仍在等,但原样再发不会自己续上 · 出路按调用方声明的停驻种类分(`tool_approval` / `plan_review` / `resource_park`:先取消那条 run —— 给了 `runId` 就点名,转义后封长 —— 再作为新任务重提;`wake` / `workflow_host`:没有可取消的 run,直接在那段对话里新开一条任务;不传或表外:两类都说),并指向服务端的升级前排空检查;不复述服务端原句、不带端点与请求键名。
|
|
273
|
+
- **hooks matcher 别名拒的事后读口 `hookMatcherRefusalFromError(err)` + 型 `HookMatcherRefusal`**(CC-339;**§117 SV-9**):读服务端 7.115.0 起 400 拒体的机读位 —— `errorCode` 为 `request.field_invalid` 且 `field` 为 `settings.hooks` 时,从 `detail` 交出冻结的 `{ event, alias, canonical }`(错误对象顶层与 sdk 的 `extra` 两处都认,顶层优先);老服务端没有这两位、`detail` 缺位 / 坏形 / 只在原型链上 ⇒ `undefined`(不读句子)。与提交前的判定 `hookMatcherVerdict` 分开:那一只事前判、读本包的别名表;这一只事后读服务端已经拒了的那一份。
|
|
274
|
+
- **接线回执 `fleet` 段**(CC-339;**§117 SV-10**):`wiring_manifest` 的 chrome 臂与非流式提交回执视图多一段 `fleet: { subagentTranscripts }`(冻结;型 `WiringManifestFleetView`;内部臂超集键 `_sema_fleet`)—— 服务端 7.115.0 起部署对委派子代对话能活多久的自述,今天三词 `none` / `rows` / `full`,开集原字节(第四个词按未知档位处理,不当 `full`);同段另两位本包不过境。缺席 = 这一帧没有这句陈述(7.114.0 及更早的服务端不投),**不是** `none`;坏形整段缺席、别段照投;只带这一段的帧照样成臂。
|
|
275
|
+
- **审批卡上的探针因由那一句 `probeReason`**(CC-339;**§117 SV-11**):`ApprovalCardRequest.probeReason?: string` 与帧镜像 `ToolApprovalFrame.probeReason?`(帧键镜像 33 → 34)。活卡帧(服务端 7.115.0 起)与耐久待决行的 `riskDescriptor.probeReason`(更早就带)两条路径进同一个卡位、同一只读法:自有串、去两端空白后非空才带,原文字节不截不改;缺席不是「没有原因」(老服务端的活卡帧 / 没被收紧 / 探针没给 / 来自呈卡帧的卡都没有);与 `probeCause` 并列不替代(两位同在时优先渲结构位)。
|
|
276
|
+
- 公面合计(本版):根入口运行期导出 1397 → 1429(+32,零删名):CC-303 `toolHistoryBadTurnSentence`;CC-304 `readToolHistoryMismatchKey`;CC-306 `hookMatcherVerdict`;CC-307 `steerRefusalAdviceOf` / `steeringRefusedBeforeEngine`;CC-310 `NEEDS_HUMAN_REASON_ORDER` / `crashConvergedNeedsHumanSentence` / `crashConvergedNotice`;CC-311 `disableSkillsDeclarationSettled`;CC-314 `permissionsDeclarationReport` / `PERMISSIONS_KEPT_REASONS`;CC-315 / CC-297 `mintUserAttachmentEnvelope` / `encodeHumanTurn` / `deliveredUuidsOf` / `imageVisionOf` / `noteEngineCapsForAttachmentSeat` / `observedAttachmentSeat` / `forgetAttachmentSeatReading`;CC-317 `abortableSleep` / `isAlreadyResolvedFailure`;CC-318 `ASK_EVIDENCE_ABSENCE_VALUES` / `SYSTEM_INJECTION_PRIORITIES`;CC-322 ① `MODE_ARBITRATION` / `askSurvivesStandingAnswer`;CC-327 `READ_DENY_BUILTIN_TIERS` / `READ_DENY_DEFAULT_TIERS` / `parseReadDenyBuiltinTiers`;CC-328 `sessionPolicyReadNotice`;CC-337 `attachmentsSubmitVerdict`;CC-339 `checkpointUnsupportedVersionFromError` / `checkpointUnsupportedVersionContent` / `hookMatcherRefusalFromError`。公面类型名 964 → 997(+33:CC-304 `ToolHistoryMismatchRowKey`;CC-306 `HookMatcherVerdict` / `HookMatcherUnjudgedReason`;CC-307 `SteerRefusalAdvice` / `SteeringRefusedBeforeEngine`;CC-314 `PermissionsDeclarationReport` / `PermissionsKeptReason` / `PermissionsKeptRule` / `PermissionsRewrittenRule` / `PermissionsUncheckedRule`;CC-315 / CC-297 十五只,见上;CC-322 ① `StandingAnswerVerdict`;CC-327 `ReadDenyBuiltinTiersParse`;CC-337 `AttachmentsSubmitVerdict`;CC-339 `CheckpointUnsupportedVersionDetail` / `CheckpointUnsupportedParkKind` / `CheckpointUnsupportedVersionContext` / `HookMatcherRefusal` / `WiringManifestFleetView`);测试钩 63 → 64(`__resetAttachmentSeatReadingsForTests`,CC-315 ③);🔴 型面 BREAKING 两处:① `PromptDeliveryLedger` 接口 +3 必有成员(CC-293 / CC-334;把自写替身赋给该接口型的端编译红一次,见 Changed);② `PermissionsDeclarationInput` +1 必填位 `settingsRead`(CC-314;构造入参不带它的调用编译红一次,加这一位即过,见 Added);另 `engineCapsSettled` 的返回型由 `Promise<void>` 收窄为字面量联合,只有一种写法会编译红(见 Changed,CC-311);`PromptDeliveryRecord` +2 可选键、账本 `attempted` +1 可选参、两只 delivered 写口第一参放宽为 `readonly string[] | HumanTurnDelivered`(CC-293 / CC-334 / CC-297);`planReviewOutcomeTail` +1 可选参、`isGateStandingErrorCode` / `isCodeClassifiedGateFailure` +1 可选参、`GateOutcome` / `FsApprovalOutcome` 失败臂 +1 可选位 `retriable`(CC-339);零新投影臂;超集键 +2(`_sema_provider_rejection_resend`,CC-309 ②;`_sema_fleet`,CC-339)、审批卡与审批帧可选位 +1(`probeReason`,CC-339)、接线回执视图 +1 段(`fleet`,CC-339)与错配键子位 +1(`rewindOffered`,CC-305)。
|
|
277
|
+
|
|
278
|
+
### Changed
|
|
279
|
+
|
|
280
|
+
- **本包记下的 `d` 记录多一只 `by`;读回到没有 `by` 的 `d` 改判「不知道」**(CC-293;**§117 PL-1 / PL-4 / 117a′**):`deliveredByFrame` / `deliveredBySteerReceipt` 的返回与 `toRecords` 里的 `d` 由 `{"u":…,"s":"d"}` 变为 `{"u":…,"s":"d","by":"frame"}` / `…"by":"steer_receipt"}`(`a` 行逐字节不变)。0.90.0 及更早写下的 `d`(含较早的终端把「流上第一帧不是 409」记成交出去、实则被拒的那一形)读回后不再算交出去:`isDelivered` 由真变假、`knownUndelivered` 仍假;之后真见到建了 run 的帧 ⇒ 写口返回一条带 `by` 的 `d`,追加进存储即升格。宿主读回时要把解析出的对象原样交给 `fromRecords`(只留 `u` / `s` 重建会剥掉 `by`,读回全成 legacy)。`PromptDeliveryLedger` 接口加三只必有成员(`deliveryShareOf` / `undeliveredInGeneration` / `droppedKeyCount`):自写替身赋给该型的那一处编译红(型面 BREAKING 一处);只持 `createPromptDeliveryLedger()` 产物的端不受影响,两只自由函数的参数型不变。
|
|
281
|
+
- **投递账本在撤销式代理入参上不再外抛**(**§117 PL-3**):`attempted` / `deliveredByFrame` / `deliveredBySteerReceipt` 的批与结局、`fromRecords` 的记录表与记录、`withoutUndeliveredPrompts` 与账本 `withoutUndelivered` 的行表 —— 数组判收进受保护读,读不动 ⇒ 不记 / 答空(此前外抛 `TypeError`)。
|
|
282
|
+
- **错配键上加一位 `rewindOffered: boolean`**(CC-305;**§117 TH-2**):这一行有没有补 `/rewind` 出路句(铸行那一拍的事实:车道闸 × 宿主声明 `offersRewind` × 「只回退对话」判官),本版起铸的键恒带、与行文本同真同假;`adapt()` 接力照带;读口读回带这一位,0.90.0 及更早铸的行没有 ⇒ 读回里缺席(不补 `false`)。端据它决定要不要接点名坏轮那一句、要不要预选那一轮,不在归约那一拍拿判官重算 —— 铸行与归约之间能力位读数被改写时两边不再两说。错配行别的位与行文本逐字节同 0.90.0。
|
|
283
|
+
- **`ControlRouter.steer` 遇到读位会抛的抛出物时,原样抛 steer 的那只错误**(CC-307;**§117 SR-5**):修前路由器在 catch 里读码 / 类名 / 状态码不设防,错误对象上的取值器(或代理)一抛,`steer()` 拒绝的就是取值器的那个错,steer 本身的错丢了。现在判别经受保护的合成口,读不出 ⇒ 判不出 ⇒ 原样抛 steer 的错误(与「不是 steering 族」同一走法)。只有这一形的行为变了;其余抛出物上 `code` 与 `message` 与 0.90.0 逐字节同。
|
|
284
|
+
- **开发依赖 `@sema-agent/settings-schema` `^7.0.1` → `^8.0.0`**(CC-308;构建期,不进运行期依赖、不进 `peerDependencies`、不出包;**§117 TY-7**):本包 `src/` 对它零 import。8.0.0 的变更面 —— 一致性套件新增第四项检查 `strictWrite`(严写受理)且每一项都要表态(接了该套件适配器的消费方才会编译红)、`parseDomain` 对非域名的键改说真因(此前说成「读不出值」)、`migrate-workers` 命令行的 `--check` 与真跑过同一只判定(整域会被拒的文档 `--check` 也报 `refused` / 退出 1,`refused[]` 逐条带出)、新增导出面登记表脚本;`./migrate` 子路径仍在、没有删 —— 在本包 `src/`、`scripts/` 与 `package.json` 里都零读点(换钉前按这些名字与命令行名检索 `src/` / `scripts/` / `package.json` / `README.md` / `docs/` 全树零命中)。换钉只影响读该包产物的七道常驻门(`run-additive-key-passthrough-test.mjs` / `run-cloud-effective-projection-test.mjs` / `run-display-untrusted-projection-test.mjs` / `run-hook-matcher-verdict-test.mjs` / `run-layering-shadow-export-test.mjs`〔只把该包的 `types` 入口当桩依赖载入、语料不调用它,见 KL-485〕 / `run-model-capability-probe-test.mjs` / `run-plugin-hooks-projection-test.mjs`)与核声明范围的公面门 ⑤c:换钉前后逐格同读,唯一可见差异是 `run-additive-key-passthrough-test.mjs` 的 G7v 标签里装着的 major 由 7 变 8。这些门直接读的 `hooks.js` / `types.js` / `index.js` / `node.js` 四个文件两版逐字节相同;经它们间接加载的模块里只有 `config-fns.js` 不同(`parseDomain` 对非域名的拒因一处,对真域名的行为不变,这些门不以非域名调它);九个引擎事件名、五个档位词、档位组名的正则、hook 条目必要字段判据(`run-plugin-hooks-projection-test.mjs` 的 G-HK29 同源格)两版逐值同答。另有 `hooks.d.ts`(`MessageDisplay` 入参的推导类型里 `index` 成员换了书写位置,同一成员同一类型)、命令行与一致性套件各文件不同于 7.0.1。终端 1.0.142 先行把自己的依赖换到 `^8.0.0`;G7v 判的是「本包装着的 major ≥ 终端在用的 major」,终端先升而本包不跟时这一格会红(终端声明 `^8.0.0`、本包装着 7.0.1 时实测红),本版换钉后恢复。
|
|
285
|
+
- **「改了重发」那一句归合成终局行**(CC-309 ②;**§117 TH-4 / 117a′**):`API Error:` 那一臂上,终局因由带服务商拒绝详情(`terminal.detail.kind === "provider_rejected"`、状态码读得出)且这一行**不是**会话历史 tool_use 错配 ⇒ 行尾另起一行补 `providerRejectionResend` 的那一句,行上挂 `_sema_provider_rejection_resend`。与错配键同一铸点、互斥:错配键在 ⇒ 没有这一句、没有这只键;判错配的载体与这一句读的详情出自同一次只认自有数据位的读取(取值器形 / 原型链上的 `detail` 两边都不认);409 占锁行 / 治理·契约终态行 / 模型输出问题行 / `failed` 事件帧(帧上没有详情)/ 详情缺席或种类表外 ⇒ 都不补、不挂。车道不分(这一句不点名任何命令,`-p` 与工具车道同样补)。结果帧 `errors[]` 仍是原文。`adapt()` 重建合成行时照带这只键(只认判定口会铸的读数,不是 ⇒ 整键丢)。没有这一句的终局行逐字节同 0.90.0。自由函数 `providerRejectionResend(detail, carrier?)` 不变。
|
|
286
|
+
- **`engineCapsSettled` 的返回型由 `Promise<void>` 变为 `Promise<'settled' | 'timed_out'>`**(CC-311;**§117 CS-2**):不带 `withinMs` 时恒答 `'settled'`。对 `await engineCapsSettled(base)` 语句、`.then(() => …)` 与丢弃返回值的写法无影响;会编译红的只有一种形 —— 把返回的 Promise 直接赋给 `Promise<void>` 型的位置(变量标注 / 接缝型 / 返回型),见接入文档 117y ①。
|
|
287
|
+
- `disableSkillsDeclaration` 的文档注释改指有界异步变体(行为零变化)。
|
|
288
|
+
- **设置文件里的 allow 只在干净的设置读上投**(CC-314;**§117 PX-5**;KL-488):能力位为真之外,来源(`origins.allow`)是托管策略 / `--settings` / 用户 / 本地 / 项目、或来源说不清的 allow,还要入参带自有的 `settingsRead: 'clean'`;`'partial'` / `'unreadable'` / 缺席 / 表外值 ⇒ 这几条不投(报告口逐条记 `settings_read_not_clean`)。来源是命令行(`cliArg`)或会话(`session`)的 allow 不受读健康影响,能力位为真就照投;deny / ask 照投、与 0.90.0 逐字节同。交互与 `-p` 两条车道同一条律,由本包一处判,端上不再自己扣 allow。对 0.90.0 发布产物实跑对拍(两只规则池 × 能力位五种读数 × 规则编译器三种答法,含抛的句子):`settingsRead: 'clean'` 的入参上逐字节同;其余读健康上等于把只来自命令行 / 会话的那几条 allow 交给 0.90.0 的结果。**换钉即交 `settingsRead: 'clean'`**(读干净时;读不干净而沿用上一次干净读的 allow 时也交 `'clean'`),否则设置文件里的 allow 在能力位为真的引擎上不发 —— 报告口 `kept` 与 doctor 句都会说出来;服务端 7.115.0 之前的版本不报能力位、allow 本来就不投,在那些服务端上请求体零变化。
|
|
289
|
+
- **doctor 句 `permissionsAllowGrantDoctorDetail(reading, settingsRead?)` 与装配口问同一只门**(CC-314;**§117 PX-7**):加可选第二参(与装配口入参的 `settingsRead` 交同一个值)。说「allow rules sent」恒等于装配口在同一份读数与读健康上投 allow;能力位为真而读不干净或没交读健康 ⇒ 新的一句「allow rules from settings files kept on this side — this engine reads allow rules as rules, but the settings read that produced them was not reported clean … command-line and session allow rules are still sent …」;能力位不是真的三句不变。只传一参的旧调用在能力位为真的引擎上改说新句(与装配口同答)。
|
|
290
|
+
- **allow 放行能力位位名定稿**(CC-314;**§117 PX-6**):服务端 7.115.0 起在 `/v1/capabilities` 顶层恒铸 `settings: { permissions: { allowGrant: true } }`,与本包 0.90.0 起读的路径逐段同,读法不变;≤7.114.0 不铸(读 `not_reported`)。
|
|
291
|
+
- **`inheritEnvRefusalContent` 的第一段改口**(CC-336;**§117 IE-1**):此前第一段断言引擎「没有点名字段」(`The engine refused this request as invalid without naming the field`),而服务端自己的拒句散文以 `inheritEnv:"all"` 开头、随错误码那一行原样上屏,两句互相矛盾。本包只读机读位、不读拒句散文,拒体上又没有机读字段位(服务端 7.114.0 的三处 400 都只带错误码),所以对「点没点名」既不能说点了、也不能说没点。现在第一段改为 `The engine refused this request as invalid, under a refusal code that many different request fields share`;后面按条件措辞的那一段原样保留。函数签名、认领条件 `inheritEnvRefusalFromError`、返回形都不动。按词扫这一句(例如匹配 `without naming`)的写法要改。待服务端给出机读字段位后再改按字段位认领。
|
|
292
|
+
- **「只续已有会话」被拒的读口按码优先**(CC-339;**§117 SV-12**):服务端 7.115.0 起两处挂码 —— 会话不在 ⇒ 404 `resume.session_not_found`;要求续已有会话却没给会话 id ⇒ 422 `request.field_conflict`(句尾不再括注)。`requireExistingSessionRefusalFromError` 先按「状态 ↔ 码」成对认,不读 `message`;旧形(状态派生粗码 + 句尾括注)只在拒体上的码恰是那一状态的粗码时才读,留给 7.114.x 及更老的服务端(支持底线越过 7.115.0 那一版退)。修前 7.115.0 的 422 那一形读成 `null`、端漏了那一句。读数的 `code` 是本读口的族标 `resume.session_not_found`,两代读出同一个 `code` 与 `form`。422 ∧ `resume.session_not_found` 这一没有服务端铸过的组合改读 `null`。
|
|
293
|
+
- **reopen 族读口与新读口共用一只 `retriable` 读法**(CC-339):`resumeReopenFromError` 只认错误对象**自有**的 `retriable === true`(修前原型链上的同名位也算;sdk 错误对象与 JSON 形都是自有位,线上零变化),读这一位抛 ⇒ 不认领(修前抛出)。
|
|
294
|
+
- **计划审阅决断撞上 409 `checkpoint.unsupported_version`(带 `retriable: true`)**(CC-339;**§117 SV-13**):结局从「决断失败 HTTP 409 …」改为「这次决断没生效」+ 带计划审阅种类与这条任务 id 的那三句,结局机读位 `effect` 从 `not_applied` 改为 `still_parked`(服务端说卡仍待决)。审批决断出口的失败文字补上不带停驻种类的那三句(决断出口分不清是自己那张卡还是 workflow 宿主那条路径)。
|
|
295
|
+
- **`makeHitlCanUseTool` / `HitlCanUseToolFn` 的两个不透明位成了类型参数,`HitlBackendDenyDecision` 声明为 `PermissionResult` 的拒绝臂**(CC-343 ②;**§117 TD-6 / TD-7**;类型面 additive):`HitlCanUseToolFn<D, Ctx = never, Msg = never>` 的默认槽位仍是 `never`(只写 `HitlCanUseToolFn<D>` 的既有写法照常编译);`makeHitlCanUseTool<D, Ctx = unknown, Msg = unknown>` 返回 `HitlCanUseToolFn<D, Ctx, Msg>` —— 返回值可直接赋给宿主自己的 `CanUseToolFn`(宿主那两位是具体类型,此前 `never` 在逆变位不接,宿主只能 `as unknown as`),也可显式实例化成宿主自己的类型。`HitlBackendDenyDecision` 现在 `extends` agent-types 的 `PermissionResult` 拒绝臂(多出 CC 的可选成员 `interrupt?` / `toolUseID?` / `decisionClassification?`;`backendDeny` 运行时仍只铸原来三个键);agent-types 改了那一臂的形,红在本包构建期;装了更新版 agent-types 而那一臂的型变了的消费方,`skipLibCheck: false` 时红在本包的声明文件里(设计如此)。
|
|
296
|
+
- **补偿登记表 `MIGRATED_COMPENSATIONS` 里十条非空 `retireOn` 的值由自由文本改为退役台账行号**(CC-343 ④;**§117 TD-8**;已发导出的可观察变化):`retireOn` 的类型仍是 `string | null`,`null`(长期职责)不变;非空的十条此前是一句里程碑原话(「P1-2 到货 …」),现在是 `RL-31` … `RL-40`(条件原句在源码注释里,机读触发与到期版本在退役台账里)。读 `retireOn` 做按词判断的端要改读台账;本机三端参照树产品源码零依赖。
|
|
297
|
+
- **`rewindSpecForMode(mode, id, reading?)` 加第三个可选参数:`both` 档按纪元位决定带不带 `restoreFiles`**(CC-345 ①;**§117 TD-3 / TD-4**):读数(`observedRewindArchive()` 的返回)里 `restoreFiles` 纪元位明说 `on` 才带;`off` / `not_reported` / `malformed` 一律不带 —— 此时 `both` 的请求体与 `conversation` 同形、只回退对话,宿主读返回值上有没有 `restoreFiles` 来对用户说明;读数读不懂也不带。没传读数、或传了「没观测」的读数 ⇒ 照旧带(与 0.90.0 逐字节同;KL-480)。`conversation` / `code` 两档不读读数。`rewindRestoreFilesEpochDetail` 三句「不认」的措辞随之改口(不再说「客户端照发」,如实说「按这份读数铸的请求不带这个键、只回退对话」),没观测那句补一句「仍带」。
|
|
298
|
+
- **`approvalsStreamLive` 能力位不驱动对账:源码注释改口,行为与接入文档不变**(CC-345 ②;**§117 TD-5**):审批 feed 不读这一位,对账节拍的闸只有宿主传的 `reconcile.shouldReconcile`;`livePendingNeedsReconcile` 是提示口。此前模块头注与判定函数的注释写成「决定 feed 要不要靠推面 / 对账的判据单源」,与接入文档(`reconcile` 照传不关、别拿它做 `shouldReconcile` 的合取)不一致 —— 读实现:文档对。
|
|
299
|
+
- **`permissionRuleIssueDetail(code, message, rule?)` 加第三个可选参数,`invalid.param_split` 那一句按规则原文分两说**(CC-359;**§117 TD-1 / TD-2**):此前那一码恒说「冒号前面那段不是参数名」,对括号里根本没有冒号的规则(`Skill(s1)`)是错话。传了规则原文(`issue.rule`)时:括号里有冒号 ⇒ 「参数规则写成 `name:pattern`,冒号前的名字或冒号后的模式是空的」;没有冒号 ⇒ 「括号里没有冒号,这不是参数规则(参数规则写成 `name:pattern`)」;没传 / 读不懂(非串、没有未转义的左括号)⇒ 中性一句(括号里没有写成 `name:pattern` 的参数规则),既不说有冒号也不说没有。规则原文只用来判有没有冒号、绝不进句子(它是用户写的);只有这一个码读它,其余十四码带不带规则原文都逐字节同。不传第三参的老写法照旧可用,只是 `invalid.param_split` 那一句换成中性句(KL-482)。
|
|
300
|
+
|
|
301
|
+
### Fixed
|
|
302
|
+
|
|
303
|
+
- **展示出口对 YAML 块标量形的凭据值遮不全,且遮法误导**(CC-340;**§117 DU-11 / DU-12**):凭据标签 / 方案词**冒号分隔**之后的值是 YAML 块标量(`api_key: |`、`password: >`,块标记后可带 `-` / `+` / 缩进数字,块头行尾可带 `#` 注释,块头以换行收尾)时,0.90.0 把块标记当成一只单行值 —— `|` 换成记号、真值原样留在下一行(读者会以为已经洗过),`>` 连记号都没有。本版块头连同其后整个缩进块换**一枚**记号:块一直算到第一行「有可见内容、缩进不深于标签所在行」的行之前,只有空白的行属于块;`api_key: |\n <值>\nnext: x` ⇒ `api_key: «redacted:secret»\nnext: x`,`password: >\n <值>` ⇒ `password: «redacted:secret»`。块后那一枚行断、尾随空行与回退行原样(把行断画成转义记号或点的单行出口上,回退行的首词与任何值后隔一枚行断的首词一样并进记号,0.90.0 同);块头行上的注释随块进记号;原样换行(`\n` / `\r\n` / `\r`)与 JSON 转义形(字面 `\n` / `\r\n`)两种写法都认,一只块只认结束块头那一枚的写法;缩进按行首空白字符个数比,不可见字符(着色序列、零宽字符、控制字符)不计,控制串里的空白也不计;块标记与修饰之间夹着不可见字符照样认;块里一行只有控制串(窗口标题等)时,控制串的内容算这一行的内容,整段控制串进记号。等号分隔(`key = |`、箭头 `=>`)不是 YAML,块头在串尾时后面没有块,这两类按单行值读、与 0.90.0 逐字节同(解析器诊断 `Unexpected token =>` / `Unexpected token: >` 原样)。块里另有凭据标签、方案词、地址或私钥块时整块仍只出这一枚记号:上一版在块里铸的几枚并进来 —— 按记号个数断言的读数会变少,遮住的范围只多不少。只多遮:对 0.90.0 发布产物的全池差分「上一版遮、本版露」0 格,不是块头的形逐字节不变。覆盖 `displayUntrusted` / `displayUntrustedMarks` 与本包合成终局行、结果帧 `errors[]` 的铸点;只开 URL 结构面的出口不认块(块是词级面的射程,与 `Bearer <值>` 同)。零新公面名、零型面变化。
|
|
304
|
+
- **份额 `partial` 的条目经写口记交出**(CC-293 / CC-297;**§117 PL-1 / HT-6**):投递账本的两只 delivered 写口(`deliveredByFrame` / `deliveredBySteerReceipt`)第一参另收编码答案的两档 `{ full, partial }`(`deliveredUuidsOf(encoding)` 原样):`full` 档铸 `{ u, s: 'd', by }`,`partial` 档铸 `{ u, s: 'd', by, share: 'partial' }`,同一 uuid 两档都在按 `full` 记一条;读不动的批(撤销式代理 / 会抛的取值器 / 非对象)两档都不记、不抛,档内坏 uuid 逐项跳过;uuid 数组形照旧整批记 `full`(相对 0.90.0 只多一只 `by`,与本版其余写法一致)。两档都经写口记交出,`partial` 记 `share: 'partial'`;`knownUndelivered` 只对两档都没记的条目为真 —— 只把 `full` 档交写口的接线会让交出去一部分的条目(`@` 图片的模型没有看图位、steer 上带粘贴图、随行正文没合进)停在 attempted 而无 `d`:换代查询把它交出去重发(正文到两次)、旁路过滤把它从本地历史删掉、端上显示假「↑ 重发」。对象形的两档只认自有键(原型链上的档位不是送达证据),任一档读不出(取值抛 / 非数组 / 档内取值抛 / 撤销式代理)⇒ 两档皆空、整批不写(半批可读不构成账本事实);数组形入参的处置与 0.90.0 逐字节同。
|
|
305
|
+
- **读回一条记录时扩展位读抛 ⇒ 与读不懂同一处置,不丢这条记录**(CC-293;**§117 PL-3**):`fromRecords` 读定 `u` / `s` 之后,`by` / `share` 的描述符、`in` 判或自有键枚举读抛(代理陷阱)⇒ 这一条按 legacy 收(两判皆假)、丢键按 0、不抛 —— 整条丢掉会让这一条由「不知道」变成「确知没交出去」。`u` / `s` 自己读抛仍整条跳过(同坏行)。
|
|
306
|
+
- **`deliveredUuidsOf` 不受随行列表长度限制**(CC-297;**§117 HT-6**):随行 uuid 逐项追加(不按调用实参展开);150000 只随行的条目两档照常交出、不抛。
|
|
307
|
+
- **装配后正文为空的提交答 `empty`,不再答 `ok`**(CC-297;**§117 HT-1**):`encodeHumanTurn` 的 `objective` 车道在装配之后再判一次正文 —— 只有粘贴图、只有上传件 id、纯空白正文(以及唯一一张粘贴图超限被丢)都是空 objective,服务端受理口一律 400,本版起直接答 `{ ok: false, reason: 'empty' }`(闭集已有的词);`@` 附件经信封铸进正文的不算空。
|
|
308
|
+
- **粘贴图同样过图片座位上限**(CC-297;**§117 HT-3**):`objective` 车道的粘贴图先占座,同样过张数(20)/ 单张(base64 6 MiB)/ 合计(6 MiB)三道上限 —— 超出的那张不进 `images`、份额记 none(`seat_count` / `image_too_large` / `seat_total`,进 `degraded`)、条目 `partial`(那张是这一条唯一内容时 `none`),不再答份额 `full` 而让服务端去拒。粘贴图不看看图位;steer 车道不变。
|
|
309
|
+
- **审批卡 `probeReason` 读抛不阻断审批**(CC-339;**§117 SV-11**):活卡帧与耐久待决行两条路径的窄读是受保护读 —— 自有键判或取值读抛(取值器 / 代理陷阱)⇒ 按缺席,卡照呈、决断照发;一只会抛的展示位不会让整次呈卡失败、让引擎拿不到答复。
|
|
310
|
+
- **计划审阅撞 409 `checkpoint.unsupported_version` 时,尾句说再决不会生效**(CC-339;**§117 SV-13**):这一形的结局尾句不说「还在等决定」,而说再决不会生效、按本结局给的出路取消这条任务的 run 后重提;尾句仍只从 `planReviewOutcomeTail` 一处铸(新增可选第四参 `cause: 'stored_form_unsupported'`;不传与 0.90.0 逐字同)。`effect` 仍是 `still_parked`(门确实还在)。
|
|
311
|
+
- **决断失败「门还在」按码判,不再靠失败文字恰好没有某几个词**(CC-339;**§117 SV-13 / RX-2**):提问卡与耐久审批卡两条决断路径的失败结局带上拒体的 `retriable` 位(自有严格 `true` 才落键);`isGateStandingErrorCode(code, retriable?)` / `isCodeClassifiedGateFailure(code, retriable?)` 在 409 `checkpoint.unsupported_version` ∧ `retriable === true` 上答 `true`,`isAlreadyResolvedFailure` 据此答 `false`(不扫失败文字);只传码的旧调用逐字同答。0.90.0 上这一形落文案兜底臂 —— 原句恰含 `not found` 一类词时被判成「已决」、空转一轮重连。
|
|
312
|
+
|
|
313
|
+
### Gates
|
|
314
|
+
|
|
315
|
+
- 扩门 `scripts/run-engine-cap-reader-factory-test.mjs`:+F15 候上游读器八格(CC-315 ③ 的附件席位读器是占位形 —— 键名随引擎 7.42.0 判据帖定、本版不认任何键、恒 `not_reported`、无 `present` 臂;占位行也进 F12 名单等值,不走 present 轨,过自己的三态 / 两向隔离 / 冻结格,且 🔴 必须在退役登记在册(RL-41,带复核期与票号),占位读器不许长期存活)。
|
|
316
|
+
- 扩门 `scripts/run-prompt-delivery-projection-test.mjs`(156 → 261 格,带 0.90.0 发布产物与两代服务端夹具时):L 来源位与份额(两只写口各带来源位、legacy 两判皆假、有来源无份额 = `full`、`partial`、十三种读不懂的扩展位降为 legacy 且存下的记录不带扩展键、取值器一次不执行、原型链上的与 `Object.prototype` 被污染出的来源位不算、自有来源位配只在原型链上的份额位四形按 legacy(不放宽成 `full`,重读后再合一条真 `partial` 仍是 `partial`)、丢键计数、两两合并五对 × 两种先后、升格才返回新增、同级先记者胜、`deliveryShareOf` 入参域);LT 类型面(真 tsc 编真 d.ts:正例零诊断、反例五格、0.90.0 形替身赋给接口 ⇒ TS2739);Q 2400 条随机序列 × 七种重放(原序 / 乱序 / 重复 / 拆两只账本两向互并 / 落盘重启 / 乱序落盘乱序读回)对独立的上确界参照逐格同答,判别力自证 =「按最后一条」的模型在这批语料上必有分歧;V 与 0.90.0 发布产物对读(读 `SEMA_DU_BASELINE_TGZ`,缺席 ⇒ SKIPPED-SECTION):本版记录交老读者逐格同答、老读者重写出去的 `d` 回到本版是 legacy、老读者自己写的 `d` 在本版答不知道;G 按引擎代查询:时序(先交后提 / 读后迟到不复活 / 重发换代 / 读后同代新提交)× 并发(两代交错、两只账本、随机交错 600 条对参照)× 失败分类(十三种坏代 / 八种坏选项 / 批读抛 / 读口坏代)与代不落盘;P 撤销式代理八形不抛。既有格:`d` 记录的期望形加 `by`(T1 / R1 / H1 – H5b),乱序全排列那一格的存储回放记录换成本版形,S4 账本口数十一 → 十四。
|
|
317
|
+
- 扩门 `scripts/run-server-7113-fixture-test.mjs`(42 格不变):C3 账本期望的 `d` 记录加 `by: 'frame'`。
|
|
318
|
+
- 扩门 `scripts/run-tool-history-mismatch-projection-test.mjs`(293 → 344 格,带终端源码树与 0.90.0 发布产物时):R4 行键读口与行键型在根入口(同一函数对象、tsc 真跑可引)、「键从行顶层读」对真铸行与 `adapt` 重建行实读对拍;RO `rewindOffered` 四种声明形 × 三态判官 × 四车道 × 两种帧形 48 格位值与行文本同真同假、铸行后改写能力位行上的位不变、接力 / 读回 / 老行缺席 / 坏形;BT 两句金样、非串、洗截池二十形、先洗后截与按码点截、去标签线性、与终端那一句按语法树摘出逐字节对拍 1220 只 prompt(终端树缺席 ⇒ 标未跑);RS 十一档状态码 × 四车道 × 声明有无 88 格行文本与键、错配互斥、不铸的八形、行键与公开读法同答、接力只认判定口读数、同一帧只读一遍、原型链上与取值器形的详情不算(错配原话 + 取值器详情不补重发句);读口对继承 / 取值器形成员当缺席;RB 与 0.90.0 发布产物四种上下文 × 二十六只终局帧逐条对拍(非拒收行逐字节同、拒收行只多那一句与键、错配键只多 `rewindOffered`;基线缺席 ⇒ 标未跑)。既有格:错配键的期望形加 `rewindOffered`、真引擎 401 / 不是错配的 400 那两行的期望文本加那一句。
|
|
319
|
+
- 新门 `scripts/run-hook-matcher-verdict-test.mjs`(67 格;CC-306,包侧投影门):四臂与形(35 形 × 三只工具事件逐格期望)、别名表与生成表同源(给生成表加一对假别名判定随之变)、病态回溯正则在有界等待里交回 `unjudged`、与服务端发布包真受理口逐形同答(现役一代比受理 / 拒二值;7.115.0 起另比 400 体机读位 `field` + `detail { event, alias, canonical }` 与本口 `refused` 逐位同)、老一代服务端读数与接入文档 §117 逐代读法表同、终端 1.0.141 判定对读(不同答的格与登记逐格同);夹具缺席的段标未跑、不当绿。
|
|
320
|
+
- 新门 `scripts/run-steer-refusal-advice-test.mjs`(32 格;CC-307):抛出物池上合成口与路由器逐格同答、`message` 与 0.90.0 金样逐字节同、根入口同一引用、两只新位的缺席语义、调用点清单与单一铸点、与终端 1.0.141 句表逐码并排判同义与否。
|
|
321
|
+
- 扩门 `scripts/run-crash-converged-projection-test.mjs`(166 → 242 格,带终端源码树时;不带时 239):G11 段 —— 顺序常量逐词逐序、冻结、与 `needsHumanReason` 联合同集无重且序不同(联合成员从发布物声明文件读出);在内存里改源实编,删常量一员 / 常量多一个重复员 / 删联合一员时,各自那一枚编译期钉所在的行编译红;四句逐字与单复数;表外词 / 非串 / 原型键 / 包装串 / 会抛的对象 25 形与 18 种坏计数答 `undefined` 不抛;整行金样十形;8748 只投影的组合池与门自己写的规则逐字节同、收尾恰一次、句序与兜底排最后;读不懂的入参 22 形与两桶合计超过行数上限答 `undefined` 且取值器零执行;行级坏形落兜底不连坐、码表读不动与一个闭集词都没有两形同样不写括号;本口不重判行(两种冒充形 + 发布物与读事实那几只函数里不出现判据位名 + 包内读口不在根入口);措辞纪律(「已确认安全」族与「引擎崩了」不在场、零自动动作、全部输出过出包卫生禁表且恒单行、有序关停行不出现 crash 字样);服务端形回体经投影再经本口的真链金样;纯度;编译面(三名可从根入口引、可选因由位直喂句口、真客户端回体经投影直喂整行口);与终端 1.0.141 按语法树摘出的那一族实跑同一池 9432 只投影逐字节对拍(终端树缺席 ⇒ 标未跑)。投影模块零句子那一格改了标签(措辞在通告那一件,投影仍零句子),断言不变。
|
|
322
|
+
- 扩门 `scripts/run-abortable-sleep-test.mjs`(+2 格,共 9 格;CC-317):根入口导出与 dist 单文件里那一只是同一函数引用、同文件的 `settleWithinDeadline` 仍不出根入口。
|
|
323
|
+
- 扩门 `scripts/run-hitl-gate-honesty-test.mjs`(+9 格,带终端源码树时共 575 格;CC-317):F19 段 —— `isAlreadyResolvedFailure` 受保护读与判据、与终端 1.0.141 决断失败判据逐格对拍(不同答只落在终端多出的四臂)、按 §117d 的次序换调后与终端现在那一只在 3850 格事实上逐格同答(「四臂整块在前」的错误拼法 924 格不同,作正控)。
|
|
324
|
+
- 新门 `scripts/run-engine-caps-settled-within-test.mjs`(59 格;CC-311,包侧投影门):N 两只口的签名按语法树读发布产物声明文件(`want` 的静态型钉 `boolean | null | undefined`)、两名在根入口;A 不给 `withinMs` 的五种写法等到落定且零计时器 / 没有在飞探测立即 `'settled'` 且零计时器 / `baseUrl` 缺席 / 探测失败也算落地;B 有界形时序走**注入的假计时器**(到时、先落定、迟到的计时回调、落定与到时同拍两种次序、到时不毒化缓存、多个等待者共用一次探测、接力下总预算只铸一枚计时器、接力后读到新引擎的位、旧探测始终不释放而新探测落地时等待者靠代际信号接力);U 假计时器观察有界形的计时器 unref 零次,U2 / U3 两格用子进程读「无其它存活句柄」与「有存活句柄」两种进程里到时的原始读数(两种都打出 timed_out 并以退出码 0 退出;子进程装置先用不碰被测物的两段脚本自证读得出两种结局);C `withinMs` 坏值十七形一律「不等」、超上限夹值;D 计时器工厂抛不外溢;E `disableSkillsDeclarationSettled` 与同步口逐字同(五种能力位读数,给键当且仅当能力位为真)、窗内落定且能力为真时首发给键、宿主没起过探测时立即同答且不替宿主起探测、坏意图先于等待、同步口不动、端到端 spread 进装配口;R 真计时器两条路径与无残留的真 `Timeout` 句柄(资源计数器读不到 unref 的计时器,所以除计数外另用真 `setTimeout` 的记录包装读句柄自己的已销毁位,并先自证这把尺子会响;只用有界等待,不断言耗时)。
|
|
325
|
+
- 扩门 `scripts/run-client-core-pure-test.mjs`(CC-311 这一条不加格):TIMER③ 裸计时器创建点登记表 +1 行(`engineCapsCache.ts`,基线 1 处,理由随行)。
|
|
326
|
+
- 扩门 `scripts/run-permissions-declaration-test.mjs`(140 → 254 格,带 0.90.0 发布基线;带服务端 7.115.0 夹具时 255;CC-314):R 报告口 —— 不变量三条(`permissions` 与投口逐字节同 / 每条规则串恰落投出或 `kept` 之一 / 改写表对得上)× 能力位四态与一种畸形读数 × 两只规则池(门里现成的池 + 独立生成池)× 规则编译器三种答法;理由闭集每词一组整份报告见证、见证覆盖闭集;抛的范围与句子同;两口对规则编译器的调用序列逐条同、源码上两口都只调同一只内部装配;与 0.90.0 发布产物三版对拍(`SEMA_DU_BASELINE_TGZ` 指 0.90.0 或更新的发布包时跑;没给 / 路径错 / 更旧时必跑档红、普通档标为未跑);读健康位 —— `settingsRead` 型面必填的编译期三格(从真 `dist/index.d.ts` 取型:不传三处各一缺位诊断 / 三个词零诊断 / 表外值一处)、能力位四读数 × 五种读健康 × 四形 80 格、读健康门按来源分(命令行与用户设置 allow 并存 × 读健康三态 + 缺席 × 能力位真假;托管 / `--settings` / 本地 / 项目 / 来源说不清的被挡、命令行 / 会话照投)、原型链上的 `settingsRead` 拒、每字段恰读一次、被挡的不判(端口缺席不抛)而命令行那条照判、doctor 五句互异且「sent」⇔ 装配口投 allow(读数 × 读健康逐格对拍);能力位铸点 —— 服务端 ≥7.115.0 夹具的能力路由按语法树摘顶层 `settings` 字面量喂读器 ⇒ `present` / `true`(没有这一代夹具 ⇒ 标为未跑),<7.115.0 各代不铸;整服务器写法的受理口前提在 ≥7.115.0 上按「带理由的放行」认 allow 命中。
|
|
327
|
+
- 新门 `scripts/run-human-turn-encoding-test.mjs`(CC-315 / CC-297;293 格):信封 —— 45 条参考样本逐字节(样本文件与终端那一份逐字节同、按 git blob 钉)、正文夹带指令四写法的字节形(指令只在围栏之间且带行号、围栏最长、头部无提醒形标签 / 无「调用了工具」/ 无祈使词)、边界三规则各自的格、坏形描述符二十二形抛且取值器零执行;装配 —— 投影固定向量、座位计划边界、8 MiB 核算(六种请求体形恰好受理 / 多 1 字节降级或拒,与真序列化逐字节对)、降级次序、steer 三级处置真值表与引擎包根补话文本判据的定种子差分、份额与降级清单一一对应、拒绝臂与敌意入参不抛(含长度位谎报的数组、抛出物本身是撤销代理)、看图判定三态(先认 name 再认 id、取值器与继承位不认)、席位读器三态;上游见证 —— 引擎包根补话长度上限、服务端夹具真受理口上请求体 / 图片张数 / 单张图片三处边界 ±1(夹具缺席时标未跑,必跑档红)。
|
|
328
|
+
- 扩门 `scripts/run-upstream-tables-test.mjs`(346 → 407 格;CC-318 / CC-322 ① / CC-327):第七批四张闭集与问类仲裁表对已装引擎逐项同序、根入口引用相等、判定只读生成表零字面量,拒生成负控(缺名 / 空表 / 重复 / 非串 / 位缺多 / 原型键)。
|
|
329
|
+
- 新门 `scripts/run-read-deny-tiers-test.mjs`(60 格;CC-327):九格金样、其余受理与拒绝形、非串入参不抛、`why` 卫生与封长线性、词表只读生成表(抽掉 / 加一档判定随之变)。
|
|
330
|
+
- 扩门 `scripts/run-session-policy-wire-test.mjs`(243 → 287 格):读失败句(CC-328:十一种失败分类由真读口与真分类器铸出、三种读不懂位置、`no_target` 臂、两张表与声明面联合两向逐名对账、十五句互异、零机器词、读不到不说空、表外 / 原型键 / 自有访问器 / 抛出的取值器三十五形同一句通用话、每键恰取一次自有描述符且访问器一次不执行)。
|
|
331
|
+
- 扩门 `scripts/run-inherit-env-wire-test.mjs`(98 → 101 格):拒句整句逐字节钉 + 「不对点名与否作断言」的肯定与否定两向格 + 判别力自证。
|
|
332
|
+
- 扩门 `scripts/run-client-core-pure-test.mjs`(4253 → 4388 格,基线取 0.90.0 发布产物;不带基线的环境 4346):`attachmentsSubmitVerdict`(CC-337:在 0.90.0 发布产物上实跑铸出的冻结语料 —— 拒 31 形的 message / token / why 逐字节、收 28 形的声明;不抛的口逐形 refusedKey / 第几项;句子无内部出处、不回显原值〔含六形凭据形〕、带出路〔按句子办法改完的值真收且声明里没有被拒的键;`off` 只能整值〕、七类互异;取值读不了 / 缺席 / 包装串两口同读 / 恰读一次;定种子 4000 条语料两条路同判;基线版本 ≥ 0.90.0 时另与它逐字节对拍并有独立再算版本的一格钉死「必须真跑」,更低或读不出版本才打 SKIPPED-SECTION);CC-316 对上一发布产物对拍那一段按基线版本分支断言(< 0.90.0 断言普通 Error 形、≥ 0.90.0 断言具名类形与 message 逐字节同,基线读不出版本才 SKIPPED-SECTION)。
|
|
333
|
+
- 新门 `scripts/run-server-7115-fixture-test.mjs`(136 格;CC-339,包侧投影门):服务端发布包夹具真铸点 / 真受理口 + 逐代表(≥7.115.0 / 7.109.0–7.114.x / 7.104.0–7.108.x 三档,每档五格精确期望)—— C1 夹具引擎把「没人表态」那一问判成 `unstated`、服务端出帧窄读交出这一对,到本包卡 / 座位口原样,常驻回答判定与夹具引擎仲裁表那一行同答;C2 能力路由真跑(7.115.0 顶层 `settings.permissions.allowGrant` 为真 ⇒ 读器 present / true,老一代 not_reported),本包对一池规则装配出的请求体在同代真受理口 + 服务端三桶编译上零 422(内容形 allow 原样直交编译即拒,证明池子会响);C4 拒绝铸点真跑 → 两份 sdk 映射 → 读口与五种停驻种类的句子,终局形读口不认领;C7 两处码逐代同答、`probeReason` 出帧窄读与耐久面脱敏同值 ⇒ 两条路径卡上同值。
|
|
334
|
+
- 扩门 `scripts/run-resume-refusal-copy-test.mjs`(现 272 格):CC-281 段按码优先(7.115.0 422 形、不读 message、族标两代同、422 ∧ `resume.session_not_found` 改判 `null`、夹具两代分期望并各证一向、扫夹具证 422 ∧ `request.field_conflict` 只此一处、两份 sdk 映射);⑨ 段 `checkpoint.unsupported_version` 读口 + 出句口(retriable 读法与 reopen 族同答、五种停驻种类与不传、run id 转义封长、不说重试会成功、零机器词、决断出口补句、计划审阅决断 `still_parked`)。
|
|
335
|
+
- 扩门 `scripts/run-hook-matcher-verdict-test.mjs`(67 → 95 格):R 段事后读拒体(形池 + 7.115.0 真拒体与本口 `refused` 逐位同 + 7.114.x 真拒体无机读位 ⇒ `undefined`);N 段改读现役夹具、按服务端版本认代(不再读附加夹具变量);7.114.0 退成老一代后落文档表「≥7.114.0」一列。
|
|
336
|
+
- 扩门 `scripts/run-wiring-manifest-projection-test.mjs`(296 → 329 格):FL 段 `fleet.subagentTranscripts`(开集、缺席不折 `none`、坏形整段缺席、只带这一段成臂、子流断闸、视图第二道成形判、两代发布包真铸链)。
|
|
337
|
+
- 扩门 `scripts/run-additive-key-passthrough-test.mjs`(126 → 140 格):G8 `probeReason` 两条路径同一卡位。
|
|
338
|
+
- 扩门 `scripts/run-approval-frame-keys-test.mjs`:帧键镜像 +`probeReason`(领先开发依赖 sdk 锚,退出条件同前);探针段先读 `SEMA_SDK16_ROOT`(sdk 16.1.0 锚与镜像两向相等)。
|
|
339
|
+
- 扩门 `scripts/run-server-7114-fixture-test.mjs`(128 → 155 格):逐代断言表加 ≥7.115.0 一档(与 7.114.x 受理 / 拒逐格同;拒体带 `field` + `detail`、更老的不带;两代拒句与码逐字同)。
|
|
340
|
+
- 门环境:服务端夹具新一代 7.115.0(内嵌引擎 7.40.1)、老一代列表 +7.114.0;sdk 16.1.0 探针树进地板见证矩阵首位、`SEMA_SDK16_ROOT` 指 16.1.0(peer 地板 `>=12.0.1` 不动)。
|
|
341
|
+
- 退役台账 RL-16 条件改写为「带码读法已上;粗码兜底随支持底线越过 7.115.0 那一版退」(机读子式 = 支持底线服务端一项 ≥ 7.115.0;复核期不动)。
|
|
342
|
+
- 扩门 `scripts/run-display-untrusted-projection-test.mjs`(新 YB 段 10 格;CC-340):YB1 四形机读口与默认形逐字节;YB2 块标记 2 × 修饰 11 × 标签行缩进 2 × 块内深出 3 × 块后 6 形全积 726 形逐字节恰一枚记号、全出口不露;YB3 块里夹凭据形 / 着色序列 / 控制串 / 双向符 / 代理对 / 零宽 / 私钥块 13 形;YB4 写法族 17 形(注释、CRLF、单 CR、JSON 转义形、块头在标签下一行、列表项、嵌套映射兄弟键、不可见字符、非 ASCII 空白与制表符缩进、`basic: |`);YB5 块里引号值跨过块尾不露;YB6 不是块头的十五形(含等号分隔、箭头换行、串尾块头、解析器诊断)与 0.90.0 逐字节同;YB10 块里只有控制串的行、标签前控制串里的空格、块标记与修饰之间的不可见字符九形;YB9 块与值的单行读法取并(转义形出口上单行读法伸进回退行的那一截照遮,与 0.90.0 同字节)与单行出口上的续接;YB7 本段全部输入 × 十四出口一轮即不动;YB8 块形线性(四形 n → 4n、两形 n → 16n:注释里接连写的块头共用一次块尾查询、缩进阶梯加长串空行)。
|
|
343
|
+
- 扩门 `scripts/run-display-untrusted-baseline-diff-test.mjs`:新 YAML 块标量池(定种子 3 200 块形 + 900 非块形;块头修饰(含夹着不可见字符)× 块头行尾 × 原样 / 转义形行断 × 非 ASCII 空白缩进 × 行首不可见字符与带空格的控制串 × 块内凭据形、控制串与只有控制串的行 × 块后七形;非块形含等号分隔与串尾块头)并进 B1 / B4 / B6;新 B7 —— B7a 块形池块内秘密在十四出口一格不露(只开 URL 结构面的出口不判),B7a′ 上一版在同一池上露(判别力),B7b 非块形池十五出口与上一版逐字节同。
|
|
344
|
+
- 扩门 `scripts/run-client-core-typeshape-test.mjs`(CC-343 ②;新 E 段十格):真 tsc 逐句核 —— 工厂返回值直接赋给宿主 `CanUseToolFn` 形(推断 / 只写决断型 / 显式三参 / 仍可赋给旧返回型 / 既有实现方写法不被打坏)、`backendDeny` 返回值可赋给 CC 内部形与 agent-types 拒绝臂、`HitlBackendDenyDecision` 接得住 CC 的可选成员;三枚反例(默认槽位仍是 `never` / 归因臂恒 `asyncAgent` / 入参是串)落在预期诊断码。
|
|
345
|
+
- 扩门 `scripts/run-layering-shadow-export-test.mjs`(CC-343 ① ⑤;+T5 / T6 / T6b / T7 / E8 与自证 R7b – R7e / R18 / R18b):影子豁免表的到期只读 `dueBy`(此前三类行按核对期、其余按 `retireBy` 判,表头注与读法对不上);旧字段并存一版、门只核等值;同义不同名登记入口(顶层 `synonyms`,示例行 = 终端 `projectEngineRuleNames` ≈ 本包 `permissionsDeclaration`)核行形 / 到期 / 端侧声明是否仍在。负控套里「到期」那一枚改注入 `dueBy`。
|
|
346
|
+
- 扩门 `scripts/run-retirement-ledger-test.mjs`(CC-343 ③ ④;+S20 与 G1 – G6):已退役行可带 `note`(RL-17 误登挪入);RL-18 / RL-20 带版本兜底 0.93.0;RL-04 条件改随 CC-341 生成;补偿层十条并入台账(行号与 `src/compensations.ts` 逐号相等)。
|
|
347
|
+
- 扩门 `scripts/run-client-core-pure-test.mjs`(CC-343 ④;+1 格):补偿登记里「退役条件指名 P1-3 / 1.290 / 撤单」三组格改读台账行;新增「非空 `retireOn` 一律是在册台账行号」一格。
|
|
348
|
+
- 扩门 `scripts/run-rewind-archive-capability-test.mjs`(CC-345 ①;S5 改口两格 + S5x 一段):纪元位 `on` / `off` / `not_reported` / `malformed` × `both` 带不带 `restoreFiles`;没传 / 没观测带;读不懂的读数十二形(含取值就抛)不带;`conversation` / `code` 不读;只读纪元位(其余三位怎么说都不改);经真投影与 tee 读口的端到端;纪元位不改 `both` 档可用性;三句「不认」措辞改口。
|
|
349
|
+
- 扩门 `scripts/run-approvals-stream-live-capability-test.mjs`(CC-345 ②;+S5 一段):feed 源文件里没有这一位的读点(带尺子正控);位真 / 位假两种读数下宿主 `shouldReconcile` 为真时对账照常跑;源码注释不再写「决定 / 判据单源」那类驱动口径。
|
|
350
|
+
- 扩门 `scripts/run-permission-rule-issue-codes-test.mjs`(CC-359;+C-359 一段):有冒号 / 没有冒号 / 中性三句互异、各自点名或不点名冒号;冒号只在工具名里(`Foo:bar(x)`)按没有冒号读;转义左括号 / 读不懂的规则原文(非串 / 空 / 无括号 / 超长 / 取值就抛的代理)落中性句、不抛;规则原文不进句子;其余十四码与两参形逐字节同。
|
|
351
|
+
- 登记物:根公面基线 1397 → 1429(+32,零删名)、测试钩 63 → 64(`__resetAttachmentSeatReadingsForTests`,CC-315 ③)、公面类型名 964 → 997(+33);裸计时器创建点登记 +1 处(`engineCapsCache.ts`,CC-311);门清单 `scripts/gates-manifest.json` 177 → 183 条(新门 `hook-matcher-verdict`(CC-306)/ `steer-refusal-advice`(CC-307)/ `engine-caps-settled-within`(CC-311)/ `human-turn-encoding`(CC-315 / CC-297)/ `read-deny-tiers`(CC-327)/ `server-7115-fixture`(CC-339);CC-293 / CC-310 / CC-314 / CC-334 / CC-340 / CC-343 / CC-345 / CC-359 只扩既有门,CC-339 另扩六道既有门),README「Guards」与负控文档由生成器同批重写(行为套 134 → 140;自动化负控 28 / 盲门 14 不变);单例清单 617 → 649 条(CC-303 +1 / CC-309 ② +1:两只无状态正则;CC-306 +1:matcher 事件范围集合;CC-310 +2:句序元组与四句措辞表;CC-314 +1:报告口理由闭集;CC-315 / CC-297 +18:一只能力位读器、八只正则、三只冻结对象〔含读口坏形哨兵〕、三只名单、两只查找集〔由名单派生〕与一张拒绝哨兵表;CC-318 +2 / CC-327 +2:四张生成表;CC-322 ① +4:仲裁生成表与三态读数三只冻结实例;CC-307 原有一条由 Map 改写为全表对象,条数不变),high 上限 134 不变;棘轮 `portability.kernel` 22 → 23 / `portability.adapt` 37 → 38(CC-309 ②)、`portability.index` 239 → 249(CC-318 / CC-322 ① / CC-327 +3、CC-303 +1、CC-306 +1、CC-310 +1、CC-315 / CC-297 +4)、`typeshape.unknownExport` 469 → 474(CC-303 +1、CC-306 +1、CC-315 ③ +1、CC-339 +2),棘轮账 340 → 351 条(登记账逐条写理由);类型 / wire 超集台账 99 → 102 条(+3 键:`_sema_provider_rejection_resend`,错配键子键 `rewindOffered` 同登;`probeReason` / `_sema_fleet`,CC-339);退役登记在册 11 → 23 行、已退役 8 → 9 行(RL-21:部署键串校验口里按服务端受理行为手写的逗号串文法,服务端出纯解析函数后改读,复核期 0.92.0,CC-327;RL-22:自由函数 `providerRejectionResend` 的根入口导出 —— 与行上的键是同一事实的两条读法,三端改读行上的键之后退出根入口,复核期 0.93.0,CC-309 ②;RL-31 … RL-40:补偿登记表十条非空退役条件由自由文本改为台账行号,机读条件 + 复核期,CC-343 ④;RL-17 误登〔不是过渡臂〕挪入已退役并带注、RL-04 条件改为随 CC-341 生成即退、RL-18 / RL-20 补复核期 0.93.0,CC-343 ③;RL-41:附件席位能力位读器的占位形,到货转正,复核期 0.93.0,CC-315 ③;RL-16 条件改写为随支持底线越过服务端 7.115.0 退,复核期不动,CC-339);`docs/KNOWN-LIMITS.md` 新增 KL-419…421 / 425 / 427 / 428 / 430…433 / 435…437 / 445 / 447 / 448 / 450…453 / 455…469 / 470…475 / 480…482 / 485…493、KL-357 改写、KL-102 改写(块标记那一半收口)、KL-402 改写(已收)、KL-416 升级判据栏补本版判定口的指针、KL-392 追注(位名定稿)、KL-209 改写;清账删 141 行(48 过时、93 升票,CC-349),全档 414 → 326 行(KL-426 / KL-446 号空置,不重排);接入文档冻结账 1653 格(144 版)不变。
|
|
352
|
+
- 扩门(本版发版前修的那几件,逐件红先绿后):`scripts/run-prompt-delivery-projection-test.mjs`(261 → 284 格:L11 读回时 `by` / `share` 描述符读抛、`ownKeys` / `has` 陷阱抛四形照收为 legacy、`a` 记录枚举抛、`u` 读抛对照;L12 写口收两档 —— 铸形与键序、份额读数、换代查询与按行口、`deliveredBySteerReceipt` 同律、两档同 uuid 按 `full`、JSON 往返,时序 partial → full 升格 / full → partial 不降,并发 300 例两只写口交错对上确界参照,失败分类档内坏 uuid 与七种坏批不抛零记录;LT1b 两只写口收两档与数组两形、只收数组的自写替身照赋)· `scripts/run-human-turn-encoding-test.mjs`(288 → 296 格:HT2i – HT2l 粘贴图过三道座位上限、让座后 `@` 图照常排座、steer 不变;HT5h / HT5h2 150000 只随行两档不抛;HT5i / HT5j 编码 → 两档 → 账本写口端到端)· `scripts/run-additive-key-passthrough-test.mjs`(140 → 143 格:G8i / G8i2 活卡帧 `probeReason` 取值器抛与描述符陷阱抛、G8j 耐久行同形,卡照呈、决断照发)· `scripts/run-hitl-gate-honesty-test.mjs`(575 → 581 格:F19g 409 `checkpoint.unsupported_version` ∧ `retriable` 进两只判定、`isAlreadyResolvedFailure` 码优先、耐久审批卡的失败结局带 `retriable`(只认自有位)、提问卡上原句含 `not found` 时不重连)· `scripts/run-resume-refusal-copy-test.mjs`(272 → 273 格:⑨-12c 这一形的尾句与尾句铸点同一只、其余尾句不变)· `scripts/run-tool-history-mismatch-projection-test.mjs`(344 → 347 格:RA 合成终局行的选臂判据只此一处,铸行处与错误载体铸口调同一只;臂的先后钉住 —— 错误句恰以模型输出那一句开头时,占锁与治理两臂仍优先;RB 逐字节对拍照旧)· `scripts/run-upstream-tables-test.mjs`(407 → 408 格:U7 引擎码串 `request.field_conflict` 的串字面量在 src 里恰一处,尺子自证 +1 类)· `scripts/run-client-core-pure-test.mjs`(+3 格:G-AV6 生成负控 —— 发布产物副本的退役键表多植一行假键,不抛口报那只假键的名字与它自己那一行的理由、抛的口同拒,真产物照旧按未登记键拒)。
|
|
353
|
+
|
|
354
|
+
### Known limits(本版新增)
|
|
355
|
+
|
|
356
|
+
- **KL-419**:steer 拒收的处置句是写给接入方的,不是现成的用户面句子;其中 `queue_full` 与 `ambiguous_target` 两句与终端 1.0.141 自持句表不同义。
|
|
357
|
+
- **KL-420**:`isAlreadyResolvedFailure` 不含终端决断失败判据多出的四臂(安全信号闸 / 引擎机器码表 / sdk 类名表 / 续跑启动期类名排除);终端换调后仍自持这四臂。
|
|
358
|
+
- **KL-421**:`ControlSafetyError` 的 cancel 404 与「没有在飞的 run 可取消」两种只陈述、不含处置的拒收没有 `advice`。
|
|
359
|
+
- **KL-425**:`parseReadDenyBuiltinTiers` 的串文法是按服务端受理行为写的镜像;服务端发布包里没有可直接调用的纯解析函数,没有可对拍的受理口,门里只有九格金样。
|
|
360
|
+
- **KL-427**:问类仲裁表 / `askSurvivesStandingAnswer` 与两张同源闭集表是构建期快照:引擎之后新增的问类判定答 `unknown`(照问),本包换钉后才认得。
|
|
361
|
+
- **KL-428**:更老的服务端 / 引擎(服务端 7.109.0 之前)停下的卡没有 `classes`,`askSurvivesStandingAnswer` 答 `unknown`(照问)。
|
|
362
|
+
- **KL-430**:`attachmentsSubmitVerdict` 只读 `SEMA_ATTACHMENTS`;`buildTaskRequest` 的 `attachments` 对象里点名退役键仍抛 `AttachmentsSpecRefused`,没有不抛的对位口。
|
|
363
|
+
- **KL-431**:`inheritEnvRefusalContent` 的句子按条件措辞:拒体上没有机读字段位,认不出这一次是不是冲着 `inheritEnv`,也不对「引擎点没点名字段」作断言。
|
|
364
|
+
- **KL-432**:`sessionPolicyReadNotice` 里写口的四类拒绝分类在读路上本不会铸出;万一撞上,句子只转述「引擎答了这一类拒绝、所以没读到」。
|
|
365
|
+
- **KL-433**:`attachmentsSubmitVerdict` 句子里的「第 N 项」只数非空项,用户按逗号位置数会差一。
|
|
366
|
+
- **KL-435**:点名坏轮句的预览截点恰落在 emoji 连字序列中间时,末尾留一只零宽连接符(先洗后截;与终端同答)。
|
|
367
|
+
- **KL-436**:结果帧 `errors[0]` 不带「改了重发」那一句;要在 `errors[0]` 上呈现的端读同一流里合成终局行上的键。
|
|
368
|
+
- **KL-437**:`adapt()` 接力的重发键只认本版判定口会铸的读数,判定口措辞改过的老行重放时这只键丢、行文本照旧。
|
|
369
|
+
- **KL-445**:有界形的返回值说「等待为什么结束」,不是读数;返回后仍要读缓存位。
|
|
370
|
+
- **KL-447**:`withinMs` 「没给」(无上限,同 0.90.0)与「读不懂」(不等)答法不同;由可能缺席的配置算出 `withinMs` 会得到无上限等待。
|
|
371
|
+
- **KL-448**:终端接缝外包 race 的 1500 ms 一处(race 要罩住可注入的接缝替身)不在本件射程;另四份终端手写等待按接入文档 117d 迁。
|
|
372
|
+
- **KL-450**:`hookMatcherVerdict` 的正则形只在给得出耗时上界的语法子集里判,子集外与静态回溯上界超预算的落「本口不判」,其中有服务端能判出的格(先行断言形服务端拒、本口不判)。
|
|
373
|
+
- **KL-451**:`hookMatcherVerdict` 的事件范围是本包手抄的三员集合(真源在设置契约包,门里逐员对拍)。
|
|
374
|
+
- **KL-452**:`hookMatcherVerdict` 对长正则形的编译开销只由 8192 字符上限兜(8 KiB 长交替正则首次执行实测 20 – 170 ms)。
|
|
375
|
+
- **KL-453**:`hookMatcherVerdict` 按 hooks 会被采纳的车道答;多租户车道上正则形的 `refused` 服务端受理(名字表形照拒)。
|
|
376
|
+
- **KL-455**:账本份额只有条目级两档:`partial` 只说这一条交出去了一部分,不记缺的是哪几项(逐项在编码答案的 `shares[].parts`)。
|
|
377
|
+
- **KL-456**:更新版本铸的、本版读不懂的来源词 / 份额词按 legacy 存,经本版转写出去就丢了那一位。
|
|
378
|
+
- **KL-457**:0.90.0 及更早的读者读进本版记录再写出去的 `d` 不带 `by`,回到本版是 legacy(不知道)。
|
|
379
|
+
- **KL-458**:代索引不落盘、不设上限:重启后读回的账本对任一代答空;从不按代读的宿主,索引随提交增长。
|
|
380
|
+
- **KL-459**:`toRecords` 是读数上升史:同一 uuid 混读 legacy / `partial` / `full` 时记录条数随先后不同,读数相同。
|
|
381
|
+
- **KL-460**:崩溃遗留通告会把已经执行完、结果已流到屏上的调用也列进需人核(服务端按「这条 run 的执行有没有收尾」收敛,收敛行上没有能与转录对上的调用 id,也没有「结果已产生」位);候服务端给位。
|
|
382
|
+
- **KL-461**:补话三级处置是预判,部署的提交钩子等仍可能当场拒(端的留队出路接住)。
|
|
383
|
+
- **KL-462**:只有附件、没有正文的条目不留尾随空行,与终端现行拼法差这一处。
|
|
384
|
+
- **KL-463**:8 MiB 核算信调用方报的其余键字节数;末道对实际请求体的终判是端的事。
|
|
385
|
+
- **KL-464**:附件席位读器今天恒 `not_reported`,装配口恒走信封;席位键名候引擎那一版的判据。
|
|
386
|
+
- **KL-465**:块的缩进按行首空白字符个数比,不按显示列宽(制表符、表意空格各算一格);混用制表符 / 非 ASCII 空白缩进、块里的行字符数不多于标签行时,那一行起按块外读;块里一行只有控制串且顶格写时同样读作回退。
|
|
387
|
+
- **KL-466**:没有块标记的 YAML 多行普通标量只遮首行(0.90.0 同)。
|
|
388
|
+
- **KL-467**:等号分隔不认块头:关联数组箭头 `'api_key' => '<值>'`(同一行或 `=>` 后换行)与 `key = |` 这类非 YAML 写法按单行值读,值不洗或只遮块标记(0.90.0 同)。
|
|
389
|
+
- **KL-468**:诊断文本里凭据标签后恰是 `|` / `>` 再换行、其下是缩进行时整块遮(多遮)。
|
|
390
|
+
- **KL-469**:JSON 转义形的块按字面 `\n` 切行、不数反斜杠转义层:块里转义过的反斜杠紧跟 `n` 会在那里断行。
|
|
391
|
+
- **KL-470**:`checkpoint.unsupported_version` 那一句不认定成因(拒体上没有分臂位;同一个码还有「行格式比本进程新」等成因),出路以「若是升级之前停下的」起头。
|
|
392
|
+
- **KL-471**:`checkpointUnsupportedVersionFromError` 只认错误对象自有的 `retriable === true`;只在 `extra` 里带这一位的重建形与不带这一位的终局形不认领,端走通用拒绝面。
|
|
393
|
+
- **KL-472**:审批决断出口分不清是自己那张卡还是 workflow 宿主那条路径,补句不带停驻种类(两类出路都说)。
|
|
394
|
+
- **KL-473**:`probeReason` 不在呈卡帧 / 卡信封上(上游刻意不带),从那里来的卡恒缺席;本包不截长(服务端已按引擎铸得出的长度整只丢超长句)。
|
|
395
|
+
- **KL-474**:`fleet` 视图只过境 `subagentTranscripts` 一位,同段另两位不读。
|
|
396
|
+
- **KL-475**:「只续已有会话」的 422 形按「状态 ↔ 码」成对认,码 `request.field_conflict` 是多处共用的码(服务端别处一律 400);服务端哪天在提交面另铸一处 422 ∧ 这个码,本读口会把它读成这一形(门扫夹具钉「只此一处」)。
|
|
397
|
+
- **KL-494**:审批卡上 `probeCause` / `mandated`(与耐久行的 `riskDescriptor.probeCause`)的裸读不受保护,取值器抛或撤销式代理会让整次呈卡失败(0.90.0 既有;本版只把新读的 `probeReason` 改成受保护读)。
|
|
398
|
+
- **KL-495**:计划审阅撞 409 `checkpoint.unsupported_version` 时尾句已改口,但结局仍记 `still_parked` ⇒ 卡会放回屏上,再点一次只会再撞同一个 409。
|
|
399
|
+
- **KL-480**:`rewindSpecForMode('both', id, reading)` 只在读数明说不认(纪元位 `off` / `not_reported` / `malformed`,或读数读不懂)时不带 `restoreFiles`;没传读数、或传了「没观测」的读数时照旧带 —— 没问能力位不等于引擎说不认。
|
|
400
|
+
- **KL-481**:同义不同名(端上换了名字另写本包已有逻辑)只有登记入口,门核登记行的存活与到期,不做全量扫;没登记的这一族机器看不见。
|
|
401
|
+
- **KL-482**:`permissionRuleIssueDetail(code, message)` 不传第三参 `rule` 时,`invalid.param_split` 说中性的一句,不分有没有冒号。
|
|
402
|
+
- **KL-485**:报告口对一条规则只报第一个没过的那一关;allow 门没开时 allow 规则不逐条判,内容形 allow 门开之后仍不会投。
|
|
403
|
+
- **KL-486**:几个理由词各合并了几种情形(能力位四种读数、编译器问题码、判官两种失灵、两段协议名的几种形、两种去重)。
|
|
404
|
+
- **KL-487**:规则数组里的非串与纯空洞不进 `kept`。
|
|
405
|
+
- **KL-488**:读健康门只认宿主交的那一个词:读不干净而沿用上一次干净读的 allow 要由宿主交 `'clean'`;不交读健康按「不知道」处置,设置文件里的 allow 不发(命令行 / 会话来源照发)。
|
|
406
|
+
- **KL-489**:报告里命令行 deny 与设置 deny 同记 `deny` 桶,不分来源。
|
|
407
|
+
- **KL-490**:装配口手持三份上游受理限值的镜像(请求体 8 MiB、图片 20 张 / 单张 6 MiB、补话文本三判据),上游没有可读的权威位;门里对上游实物见证,已请上游公布。
|
|
408
|
+
- **KL-491**:提醒旋钮键表仍是静态表,按能力面取交集候服务端公布受理键集。
|
|
409
|
+
- **KL-492**:名字 / 路径里的提醒形标签原样进信封头行;补话上整条留队。
|
|
410
|
+
- **KL-493**:`run-layering-shadow-export-test.mjs` 的展示层差分格把已装设置契约包的 `types` 入口当桩依赖载入,语料只含字符面、不调用它;该入口读不到(或换版)时这道门不红(换钉 `^8.0.0` 时实测:移走 `types.js` 后门读数与换钉前逐字节同)。
|
|
411
|
+
- `disableSkillsDeclaration` 首发不生效(KL-357)改写:宿主已起探测、探测在窗内落定且能力位为真时,有界变体让首发带上键;探测慢于窗 / 失败 / 没起 / 引擎没报或报假 / 宿主仍调同步口时首发照装技能。
|
|
412
|
+
- 已知限制档里此前「YAML 块标记后的值被误导性地遮了块标记」那一半(KL-102 后半)本版收口,KL-102 只剩括号包住的值一形。
|
|
413
|
+
- KL-402「投递账本其余入口在撤销式代理上外抛」本版收口(CC-293 / CC-334 同批动了投递账本的行为面):五处数组判收进受保护读,撤销式代理入参 ⇒ 不记 / 答空、不抛(§117 PL-3)。
|
|
414
|
+
- **已知限制档清账**(CC-349):`docs/KNOWN-LIMITS.md` 删 141 行 —— 48 行已过时(前提不成立或已标解;逐行核过让它过时的坐标仍成立:KL-2 / 7 / 23 / 29 / 31 / 40 / 42 / 51 / 55 / 63 / 65 / 69 / 70 / 74 / 82 / 99 / 110 / 112 / 113 / 114 / 125 / 128 / 135 / 143 / 144 / 145 / 167 / 170 / 179 / 185 / 189 / 193 / 197 / 208 / 218 / 233 / 234 / 235 / 236 / 245 / 246 / 251 / 263 / 280 / 329 / 332 / 333 / 364),93 行判为「该立票的缺陷」而不是「已知并接受的取舍」,改由承接票带:CC-168〔KL-43〕、CC-190〔KL-66〕、CC-192〔KL-108 / 109 / 210〕、CC-235〔KL-11 / 175〕、CC-288〔KL-215〕、CC-341〔KL-198〕、CC-342〔KL-195 / 196〕、CC-343〔KL-211 / 395 / 418〕、CC-350〔KL-9 / 21 / 27 / 30 / 39 / 46 / 47 / 52 / 75 / 77 / 80 / 107 / 126 / 174 / 250 / 256 / 267 / 268 / 291 / 371 / 377 / 399〕、CC-351〔KL-3 / 18 / 33 / 36 / 44 / 49 / 50 / 56 / 58 / 71 / 72 / 76 / 81 / 97 / 98 / 123 / 132 / 133 / 136 / 155 / 161 / 166 / 171 / 176 / 206 / 212 / 222 / 248 / 273 / 275 / 281 / 292 / 295 / 299 / 308 / 309 / 314 / 337 / 338 / 339 / 342 / 345 / 353 / 359 / 366 / 368 / 372 / 376 / 378 / 386 / 388 / 404 / 405 / 406 / 408 / 409 / 413〕。id 不重排、不复用。留行:承接票本版已交付、取舍还在的五条(KL-102 / 178 / 297 / 357 / 417)与复核后保留的三条(KL-373 / 387 / 392)。
|
|
415
|
+
- 登记物按既定裁定改窗(本版对这些物零改动):同名影子对账门的过渡表里,终端四行(`promptKnownUndelivered` / `withoutUndeliveredPrompts` / `reopenPlanReviewCard` 三只同名包装与壳侧那一份 `fileHistoryLegNoticeVerdict`)期限 0.91.0 → 0.92.0 —— 删行期限按「终端删掉包装之后的下一个本包版本」定,终端下一发布 tag 尚未出;同表十行复核期类按终端 1.0.141 发布 tag 逐行复核、判词不变,复核期续到 0.93.0(其中 `turnEndUsage` 转口在终端上已无运行时调用点,点名终端删);退役台账里按支持底线判的三条(`ruleStoreUnreadable` 两代读法 / 退役词 `plan_mode` / `approverPosture` 专句拒)支持底线未越过(服务端 7.104.0 / 引擎 7.33.8),复核期 0.91.0 → 0.92.0 并入支持底线以下过渡臂退役批(CC-352);「只续已有会话」被拒粗码读法的复核期 0.91.0 → 0.93.0 随支持底线(服务端 7.115.0 已给两处挂码,本版起带码形优先、粗码兜底)。
|
|
416
|
+
|
|
52
417
|
## 0.90.0(2026-10-04)
|
|
53
418
|
|
|
54
419
|
> 主题:引擎 7.40 / 服务端 7.113 / sdk 16 探针换钉提货 · `settings.permissions` 三桶装配口与 allow 桶的能力位门控 · 文件历史一句的五态判定与声明事实账本 · hooks matcher 工具别名读口 · 机读支持底线与引擎版本三态 · 投递账本两只绑定方法 · 云控制面子路径入口五名转口。
|