@sema-agent/client-core 0.95.0 → 0.96.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 +180 -0
- package/README.md +49 -25
- package/dist/adapt/arms.js +7 -1
- package/dist/adapt/toolCards.d.ts +1 -0
- package/dist/adapt/toolCards.js +16 -3
- package/dist/adapt/wireShapes.js +2 -16
- package/dist/adapter/activeRunSelfHeal.d.ts +4 -0
- package/dist/adapter/activeRunSelfHeal.js +30 -4
- package/dist/adapter/downstream/eventToSdkMessage.js +11 -3
- package/dist/adapter/downstream/terminalToSdkResult.js +8 -9
- package/dist/adapter/runStream.js +30 -47
- package/dist/agentSession/engineAgentRegistryRead.js +5 -4
- package/dist/agentSession/engineSessionBackgroundStop.js +22 -15
- package/dist/agentsWireCaps.js +13 -2
- package/dist/callerCwdCapability.d.ts +0 -4
- package/dist/callerCwdCapability.js +0 -6
- package/dist/centerWiringCapability.d.ts +0 -4
- package/dist/centerWiringCapability.js +0 -6
- package/dist/classifierVerdictWire.js +4 -16
- package/dist/clientSlice.js +1 -1
- package/dist/cloudConfigWireCaps.d.ts +3 -3
- package/dist/cloudConfigWireCaps.js +65 -45
- package/dist/coreValuePorts.d.ts +11 -7
- package/dist/coreValuePorts.js +5 -8
- package/dist/credentialProvenance.d.ts +28 -0
- package/dist/credentialProvenance.js +76 -0
- package/dist/decideFailureNote.js +3 -1
- package/dist/decideReceipt.js +7 -10
- package/dist/declared/supportFloorDeclared.js +3 -3
- package/dist/displayUntrusted.d.ts +7 -3
- package/dist/displayUntrusted.js +356 -60
- package/dist/engineCapsCache.d.ts +6 -0
- package/dist/engineCapsCache.js +226 -32
- package/dist/engineDirectory.d.ts +79 -0
- package/dist/engineDirectory.js +186 -0
- package/dist/engineErrorCodes.d.ts +14 -1
- package/dist/engineErrorCodes.js +37 -15
- package/dist/engineNoticeCodes.d.ts +17 -0
- package/dist/engineNoticeCodes.js +57 -3
- package/dist/engineWordRenames.d.ts +8 -0
- package/dist/engineWordRenames.js +13 -0
- package/dist/fileHistoryCaptureCapability.d.ts +14 -0
- package/dist/fileHistoryCaptureCapability.js +70 -0
- package/dist/fleet/bgSubagentRow.d.ts +15 -0
- package/dist/fleet/bgSubagentRow.js +67 -0
- package/dist/fleet/fleetLedger.d.ts +1 -0
- package/dist/fleet/fleetLedger.js +103 -89
- package/dist/fleet/fleetProjection.d.ts +1 -0
- package/dist/fleet/fleetProjection.js +10 -3
- package/dist/fleetTaskDesc.js +4 -17
- package/dist/gateOutcome.d.ts +12 -1
- package/dist/gateOutcome.js +58 -1
- package/dist/gateVocabulary.d.ts +7 -2
- package/dist/gateVocabulary.js +5 -1
- package/dist/generated/engineAskFaceTables.js +1 -1
- package/dist/generated/engineFactTables.d.ts +5 -3
- package/dist/generated/engineFactTables.js +17 -4
- package/dist/generated/engineNoticeTables.js +12 -3
- package/dist/generated/settingsSchemaFns.d.ts +3 -0
- package/dist/generated/settingsSchemaFns.js +53 -0
- package/dist/generated/toolNameTables.d.ts +1 -0
- package/dist/generated/toolNameTables.js +1 -0
- package/dist/hitl/approvalEndingCause.d.ts +2 -0
- package/dist/hitl/approvalEndingCause.js +31 -21
- package/dist/hitl/askParkRowRouting.js +1 -1
- package/dist/hitl/automaticAnswerVerdict.d.ts +1 -1
- package/dist/hitl/automaticAnswerVerdict.js +13 -8
- package/dist/hitl/decisionConflict.js +0 -2
- package/dist/hitl/decisionRefusal.d.ts +8 -0
- package/dist/hitl/decisionRefusal.js +48 -14
- package/dist/hitl/frameRouter.d.ts +0 -1
- package/dist/hitl/frameRouter.js +6 -14
- package/dist/hitl/hitlBridge.d.ts +6 -2
- package/dist/hitl/hitlBridge.js +28 -7
- package/dist/hitl/localAllowRule.d.ts +1 -0
- package/dist/hitl/localAllowRule.js +2 -2
- package/dist/hitl/noAllowCause.d.ts +2 -1
- package/dist/hitl/noAllowCause.js +3 -2
- package/dist/hitl/parkResolver.d.ts +1 -0
- package/dist/hitl/parkResolver.js +8 -54
- package/dist/hitl/parkRowBirthWait.d.ts +1 -0
- package/dist/hitl/parkRowBirthWait.js +2 -2
- package/dist/hitl/planReviewWire.d.ts +1 -0
- package/dist/hitl/planReviewWire.js +98 -20
- package/dist/hitl/replayedApproval.d.ts +1 -0
- package/dist/hitl/replayedApproval.js +14 -0
- package/dist/hitl/sessionPolicyDeliverable.js +8 -6
- package/dist/hitl/standingRows.d.ts +18 -0
- package/dist/hitl/standingRows.js +127 -0
- package/dist/hitl/toolApprovalWire.d.ts +15 -3
- package/dist/hitl/toolApprovalWire.js +238 -25
- package/dist/hookMatcherVerdict.d.ts +1 -9
- package/dist/hookMatcherVerdict.js +21 -61
- package/dist/hooksWireCaps.js +2 -2
- package/dist/hostCallbackGuard.d.ts +1 -0
- package/dist/hostCallbackGuard.js +6 -0
- package/dist/index.d.ts +21 -9
- package/dist/index.js +17 -8
- package/dist/mcpProbeCapability.d.ts +0 -4
- package/dist/mcpProbeCapability.js +0 -6
- package/dist/memoryComplianceCapability.d.ts +0 -4
- package/dist/memoryComplianceCapability.js +0 -6
- package/dist/memoryOriginCapability.d.ts +0 -4
- package/dist/memoryOriginCapability.js +0 -6
- package/dist/memorySpecWire.js +2 -2
- package/dist/modelIdentityResolvability.d.ts +2 -2
- package/dist/modelIdentityResolvability.js +12 -3
- package/dist/noticePresentation.d.ts +68 -0
- package/dist/noticePresentation.js +247 -0
- package/dist/outputStyleSeatCapability.d.ts +0 -1
- package/dist/outputStyleSeatCapability.js +0 -3
- package/dist/ownKey.d.ts +2 -0
- package/dist/ownKey.js +18 -0
- package/dist/peerFrames.js +13 -9
- package/dist/permissionModesCapability.d.ts +0 -4
- package/dist/permissionModesCapability.js +0 -6
- package/dist/permissionRuleIssue.js +0 -3
- package/dist/permissionsDeclaration.d.ts +2 -0
- package/dist/permissionsDeclaration.js +56 -41
- package/dist/printPermissionOutcome.d.ts +12 -0
- package/dist/printPermissionOutcome.js +50 -0
- package/dist/printToolResultFrame.d.ts +1 -0
- package/dist/printToolResultFrame.js +5 -9
- package/dist/promptBlockedCopy.d.ts +5 -0
- package/dist/promptBlockedCopy.js +35 -0
- package/dist/protocolSegment.d.ts +9 -6
- package/dist/protocolSegment.js +31 -21
- package/dist/providerRejection.d.ts +4 -0
- package/dist/providerRejection.js +75 -14
- package/dist/replayBody.d.ts +12 -0
- package/dist/replayBody.js +25 -0
- package/dist/resumeRefusalCopy.js +5 -21
- package/dist/retryStatus.d.ts +9 -1
- package/dist/retryStatus.js +9 -2
- package/dist/rewindArchiveCapability.d.ts +3 -13
- package/dist/rewindArchiveCapability.js +7 -58
- package/dist/rewindArchiveReading.d.ts +15 -0
- package/dist/rewindArchiveReading.js +56 -0
- package/dist/ruleCompileVerdict.d.ts +9 -1
- package/dist/ruleCompileVerdict.js +29 -4
- package/dist/runTerminal.d.ts +15 -1
- package/dist/runTerminal.js +56 -8
- package/dist/sandboxWire.js +13 -0
- package/dist/sealedKeyCapability.d.ts +0 -4
- package/dist/sealedKeyCapability.js +0 -6
- package/dist/seam.js +4 -2
- package/dist/seatContract.d.ts +73 -11
- package/dist/seatContract.js +195 -14
- package/dist/sessionReadRedactionCapability.d.ts +0 -4
- package/dist/sessionReadRedactionCapability.js +0 -6
- package/dist/sessionSyncFileHistory.d.ts +4 -0
- package/dist/sessionSyncFileHistory.js +66 -0
- package/dist/sessionSyncFileHistoryCapability.d.ts +0 -1
- package/dist/sessionSyncFileHistoryCapability.js +0 -3
- package/dist/skillToolListsCapability.d.ts +0 -1
- package/dist/skillToolListsCapability.js +0 -3
- package/dist/steerPriorityCapability.d.ts +0 -1
- package/dist/steerPriorityCapability.js +0 -3
- package/dist/storePostureCapability.d.ts +0 -4
- package/dist/storePostureCapability.js +0 -6
- package/dist/subagent/engineSubagentSteer.js +7 -5
- package/dist/subagentContentStore.js +4 -15
- package/dist/supportFloor.d.ts +1 -0
- package/dist/supportFloor.js +13 -9
- package/dist/systemReminderTag.d.ts +1 -0
- package/dist/systemReminderTag.js +8 -0
- package/dist/toolHistoryMismatch.d.ts +0 -3
- package/dist/toolHistoryMismatch.js +3 -7
- package/dist/toolResult.d.ts +1 -1
- package/dist/toolResult.js +2 -1
- package/dist/toolResultContent.d.ts +2 -0
- package/dist/toolResultContent.js +63 -0
- package/dist/usageAnalytics.js +40 -16
- package/dist/userInvokedSkillsCapability.d.ts +0 -1
- package/dist/userInvokedSkillsCapability.js +0 -3
- package/dist/wireErrorTriage.d.ts +2 -0
- package/dist/wireErrorTriage.js +34 -5
- package/dist/wireFailureShape.d.ts +19 -2
- package/dist/wireFailureShape.js +55 -50
- package/docs/INTEGRATION-CLIENTS.md +1262 -17
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -49,6 +49,186 @@
|
|
|
49
49
|
> 挡住 ⇒ 本批把它机械化——④a0 对 `pending` 行**要求段头已是日期形**(`(未发布)` 直接红),阶段一
|
|
50
50
|
> commit 漏转在发布前就红,不再靠人记。
|
|
51
51
|
|
|
52
|
+
## 0.96.0(2026-10-13)
|
|
53
|
+
|
|
54
|
+
> 主题:终端 1.0.148 对接版 —— 支持底线三件同号(server 7.125.0 / core 7.48.0 / sdk 20.0.0)与 settings-schema 12 提货;清账与单一真源收口(规则工具名判官 / 门种一张表 / 计划审阅结局判法 / 总缓存落地写点 / hooks matcher 契约读法 / 文件历史没搬句与收紧闸 / 探针两位判序 / 凭据网三形);座位改名置顶与最近目录;服务商拒收分类词。净值(相对 0.95.0):根入口运行期导出 1587 → 1629(+55 / −13),测试钩 73 → 59,门清单 232 → 256,退役登记在册 31 / 已退役 62。提货 —— server 7.125.0(CC-636)/ sdk 20.0.x(CC-633)/ settings-schema 12.2.1(CC-655);影子 models 文档改出 settings-schema 11 形(CC-637);404 成因读法与座位门 / 能力位读器成文例外收口(CC-638 / CC-639);`CONFIG_REFUSAL_CODES` 退役(CC-560 ②)。
|
|
55
|
+
|
|
56
|
+
### Removed
|
|
57
|
+
|
|
58
|
+
- **根入口删除名 `CONFIG_REFUSAL_CODES`**(CC-560 ②;接入文档 **§123 FA-2** / §2z;🔴 型面 BREAKING,三端 `src` 零命中):配置拒绝码的冻结 20 员登记表退役。它包内零读点、三端零读点,且与前缀谓词 `isConfigRefusalCode` 回答同一问(这是不是一条配置拒绝)却对近形(大小写 / 尾空白 / 少一段点)答案不同 —— 两条读法。「是不是配置拒绝」只剩 `isConfigRefusalCode`(`config.` 前缀,开集)这一条读法;各 `CONFIG_*` 码常量、出路句口与工具声明门九码的族读口不动。0.94.0 / 0.95.0 段里对该表的描述(「识别表」「订正名分」)以本条为准。根公面运行期导出 1587 → 1586。
|
|
59
|
+
- **`recordBgTerminalFacts`(0.96.0 退出公面) 退出根入口**(CC-348;退役登记 RL-104;接入文档 **§123 RT-1** / §2z;🔴 型面 BREAKING,根入口运行期导出 −1,三端代码零调用):通知终局事实(「最近一条被收下的后台通知说了什么」)的写者只该是 fleet 账本收通知那一臂 —— 包内照用同一只函数,三端没有写者(终端只在一个文件的头注里提到这个名字,网页端 / 桌面端 / 管理台零命中)。读口 `getBgTerminalFacts` 与型 `BgTerminalFacts` 不动,历史事实与行的当前终态的边界(§122 SC-7)不变。按名 import 它的端编译红一次(三端实际无需改)。根公面运行期导出 1592 → 1591。
|
|
60
|
+
- **23 个三端零读点的过渡口退出根入口:9 只 `noteEngineCapsFor*` 与 14 只 `__reset*ReadingsForTests`**(CC-344 余项;退役登记 RL-121 / RL-122,分别由 RL-113 / RL-114 拆出;接入文档 **§123 RT-6 / RT-7** / §2z;🔴 型面 BREAKING,根入口运行期导出 −9、测试钩 −14):tee 口 9 只 = `noteEngineCapsForCallerCwd`(0.96.0 退出公面) / `noteEngineCapsForStorePosture`(0.96.0 退出公面) / `noteEngineCapsForSessionReadRedaction`(0.96.0 退出公面) / `noteEngineCapsForSealedKey`(0.96.0 退出公面) / `noteEngineCapsForPermissionModes`(0.96.0 退出公面) / `noteEngineCapsForMemoryOrigin`(0.96.0 退出公面) / `noteEngineCapsForMemoryCompliance`(0.96.0 退出公面) / `noteEngineCapsForMcpProbe`(0.96.0 退出公面) / `noteEngineCapsForCenterWiring`(0.96.0 退出公面);测试钩 14 只 = `__reset<X>ReadingsForTests`,X 取 CallerCwd / UserInvokedSkills / StorePosture / SteerPriority / SkillToolLists / SessionSyncFileHistory / SessionReadRedaction / SealedKey / PermissionModes / OutputStyleSeat / MemoryOrigin / MemoryCompliance / McpProbe / CenterWiring。它们 0.95.0 起就是空调用 / 只清读器自己的记忆表,三端 origin/main 逐名扫描零代码读点(终端 `sema/engineGateSyncAllow.test.ts:2666` 里的 `noteEngineCapsForPermissionModes`(0.96.0 退出公面) 是一条断言「不含此名」的正则,不是调用),所以不再留一版。按名 import 它们的端编译红一次(三端实际无需改);要清读数改调 `__resetEngineCapsCacheForTests`。其余 20 只 tee 口与 15 只测试钩三端读点仍在,见下 `### Deprecated`。根公面运行期导出 1591 → 1582,测试钩 73 → 59。
|
|
61
|
+
- **根入口删除名 `discussionWorkflowName`;端口名 `DISCUSSION_WORKFLOW_NAME` 同退**(CC-606;接入文档 **§123 PC-4** / §2z;🔴 型面 BREAKING):引擎 7.49.0 删了讨论工作流整族(包根不再导出这一名,`Workflow({ name: "discussion" })` 不再解析),端口没有可装的原件 —— `CORE_VALUE_PORT_NAMES` 十七 → 十六件,`CoreValuePorts` 少这一成员;装配根照旧带这一键装 ⇒ 无人读。终端 `/discuss` 与装配根各有一处读 / 装,随终端换钉引擎 7.49 同批删。
|
|
62
|
+
- **座位设置态 `SettingsState` 退役缺省模型位 `defaultModel`**(CC-572;退役登记 RL-125;接入文档 **§123 S2-1**;🔴 型面 BREAKING):部署的缺省模型此前有两个座位位、两条读法 —— 座位 `listModels()` 交的在线目录上的 `defaultModel`(服务端的答案,读法 `liveDefaultModelOf`),与宿主往 `settingsState` 里另存的一份串(桌面端填的是 `/health.model`,形与取值时点都与前者不同)。现在缺省模型只经 `liveDefaultModelOf(listModels() 的结果)` 读,`SettingsState` 只剩 `engineVersion?` / `dataRoot?`;宿主往 `settingsState` 发布 `defaultModel` 键(任何值、含 `undefined`)⇒ 出站门拒,拒因点名「读在线目录」。🔴 硬破坏三句:① 带 `defaultModel` 键的 `SettingsState` 字面量与读 `state.defaultModel` 的端编译红;② 宿主不改仍发该键 ⇒ 座位出站门运行期拒、整只态不过门;③ 要渲缺省模型就读 `liveDefaultModelOf(目录)`:`listed` ⇒ 行名 / `not_listed` ⇒ 服务端给的 id / `unknown` ⇒ 不渲缺省名(不要把 `null` 或占位当答案)。顺带收紧:`settingsState` 出站门此前把数组当对象放行(所有位可选,空数组恰好全缺席),现只收普通对象(数组、`Date` / `Map` 等内建对象拒:结构化克隆会丢挂在它们上面的自有位)。
|
|
63
|
+
- **影子 models 文档不再写 settings-schema 10 一代的键(`default` / `atModelAllowlist`);问题账的键名与闭集随之收口**(CC-637;退役登记 RL-94;接入文档 **§123 PB-5 – PB-8** / §123y;🔴 型面 BREAKING〔闭集读数值〕,公面导出名零变):`cloudModelsToDoc` / `projectEffectiveBody(…).modelsDoc` 现在只出 11 一代的形 —— 缺省模型 = `roles.default`、@ 提及 = `atMention`(`only` 带名单、`none` 照写、`all` 与缺席同义不写)。11 一代读法里 `default` / `atModelAllowlist` 是退役键墓碑(在场即拒),此前靠本机引擎启动时的一次性迁移才读得通;现在文档本身就是它的读法。`CloudModelRefIssue.key` 由 `'models' | 'default' | 'roles' | 'atModelAllowlist' | 'tierGroups' | 'activeTierGroup'` 收成 `'models' | 'roles' | 'atMention' | 'tierGroups' | 'activeTierGroup'`(缺省模型的痕挂 `roles` · `at:'default'`、@ 提及的痕挂 `atMention`);`reason` 闭集 +`'shadowed'`;`outcome:'kept'` 只剩 `models` 键一形。对 `key === 'default'` / `'atModelAllowlist'` 做分支的宿主此后走不到那一臂(三端 origin/main 零命中:终端只按 `key === 'models'` 读),对象字面量或 `switch` 穷举这些联合的宿主编译红一次。KL-54 与 KL-665 两行已知限制随之删行(id 不复用)。
|
|
64
|
+
- **随支持底线越过而删的四条过渡读法(退役登记 RL-42 / RL-43 / RL-44 / RL-110 / RL-111;接入文档 **§123 PA-10**;型面零变)**:① 引擎 7.42.0 退役的规则 lint 码 `invalid.allow_param_rule` / `unsupported.bash_prefix` / `unsupported.file_glob` 不再有自己的一句 —— 这三码今天到达与任何不认识的码同落兜底句(说出码与引擎那一句);② 410 `gone.ask` 体上只认 `cause` 键,≤7.123.x 的旧体键 `deniedReason` 不再读(成因缺席、终态照读);404 `tool_approval.not_pending` 的旧词 `voided` / `denied` 不再算「这一问已结束」;③ 决断口 409 `approval_binding_mismatch` + `field:"answer"`(≤7.123.x 的答案席旧形)不再归 `answer_invalid`,与绑定码族里归不了类的形同答、照铸安全停。支持底线之内的服务端 / 引擎都不发这几形。
|
|
65
|
+
- **根入口删除名 `retiredToolNames`;端口名 `RETIRED_TOOL_NAMES` 同退**(CC-629;退役登记 RL-126;接入文档 **§123 PT-2** / §2z;🔴 型面 BREAKING):「规则里的工具名够不够得着任何工具」改由引擎判官 `judgeRuleToolName` 一只答(见 Added),退役名表这一件唯一的读点(请求体装配口退役名那一腿)改读判官后零读点 —— `CORE_VALUE_PORT_NAMES` 十六件里换一件(−`RETIRED_TOOL_NAMES` +`judgeRuleToolName`),`CoreValuePorts` 少这一成员;装配根照旧带这一键装 ⇒ 无人读。🔴 硬破坏三句:① 按完整型 `CoreValuePorts` 建袋的装配根多带 `RETIRED_TOOL_NAMES` ⇒ 编译红(与同版删 `DISCUSSION_WORKFLOW_NAME` 同一只对象字面量),读 `retiredToolNames()` 的端编译红;② 运行期:JS 宿主照旧装这一键 ⇒ 无人读,不抛;③ 删掉这一键与它的导入,读口自检改读 `ruleToolNameJudgement('read_file', new Set())`。
|
|
66
|
+
- **`HookMatcherVerdict` 受理臂退役 `names` 键**(CC-636 ④ / CC-434 ③;接入文档 **§123 SS-6** / §123y;🔴 型面 BREAKING,三端 `src` 零读点):那份名单是本包自带的名字表切分的产物 —— hooks matcher 的读法从本版起只剩设置契约那一只(`hookMatcherSelects` / `hookMatcherForm`,它不交名单),受理臂只剩 `kind` / `reading` / `aliases`(JS 宿主读 `verdict.names` 今天得 `undefined`;要名字改调契约 `hookMatcherSelects(matcher, name)` 逐名问)。要名字的宿主直接调设置契约的读法,不在端上另切一份。
|
|
67
|
+
- **≤7.124.x 服务端「无 `status` 的 409 冲突体」两只读臂退役:载体规则里 `status` 缺席又无 `terminal` 的 `done.result` 当载体那一支 + 重放臂折叠口 `foldReplayBusyFrame`**(CC-685;退役登记 RL-128,与支持底线抬升同版执行;接入文档 **§123 RA-1 / RA-2**;型面零变:两件都不在根入口,公面名与签名不动):支持底线抬到服务端 7.125.0 之后,幂等重放臂把原始 409 冲突体(无 `status`)逐字放进 `done.result` 的形只剩 ≤7.124.x 才发(7.125.0 起拒收与冲突终帧一律带 `status: 'failed'`)。折叠口(0.96.0 CC-631 立、同版退役,没有发出过)与载体规则里的那一支删除;`status` 缺席且自带 `terminal` 位的引擎结果形(因由形)仍是载体。行为变只在 ≤7.124.x:这一形的冲突体经公面判别口 `activeRunBusySignal` 答 `null`(0.95.0 答非 null)、终局行落 `Outcome unknown` 一行、结果帧带 `_sema_outcome: 'unknown'`;包内判据 `frameProvesDelivery` 对它读 `true`(KL-754)。门 `run-replay-busy-row-projection-test` 改名为 `run-active-run-busy-read-projection-test`,重放臂各格删,单一读法 / 因由形 / 源码钉留下。
|
|
68
|
+
|
|
69
|
+
### Added
|
|
70
|
+
|
|
71
|
+
- **座位 chrome 词表 +2 词(CC-645,additive)**:`CHROME_EVENT_KINDS` 由四词(`panel_task` / `notification_terminal` / `prompt_suggestions` / `subagent_lifecycle`)增为六词,新增 `text_segment_end` / `thinking_segment_end` —— 引擎明报的段权威全文(脱敏 / 改写)的唯一载体。修前座位出站门(`checkSeatChromeEnvelope`)拒这两词,按词表转发 chrome 事件的宿主转不出它们,座位 lane 上的活体文本永远收不到权威替换。公面导出名零变;`ChromeEventKind` 联合 +2 字面量(对它做穷举 `switch` / `Record<ChromeEventKind, …>` 的宿主编译红一次),且改为绑在 `ChromeEvent` 自己的判别键上(`Extract<ChromeArmKind, …>`):座位词表里写一个 `ChromeEvent` 没有的词、或 `ChromeEvent` 删 / 改名一个座位词,编译当场红(修前那两条 `Covers` 钉比较的是元组自身派生的类型,恒真)。宿主若按 `CHROME_EVENT_KINDS.includes(event.kind)` 转发,升级后这两种事件自动开始过境 —— 渲染层要有消费它们的臂。
|
|
72
|
+
- **座位请求过境 `rememberRefused`(CC-642,additive)**:`ToolPermissionRequest` / `TOOL_PERMISSION_REQUEST_KEYS` +`rememberRefused?: true`(服务端 ≥7.116.0 成文位:这张卡上「本会话放行」记不住);`toolPermissionRequestAskBits(card)` 带这一位,与卡口两条腿(活卡帧 / 耐久待决行)同一只读口 `readApprovalRememberRefused`(自有键 ∧ 严格 `true` 才上座;缺席 = 服务端没说,不是 `false`;读就抛 ⇒ 缺席)。修前座位卡在这类卡上照渲「Always allow (this session)」(兑付不了的钮)。座位出站门不校这一位(同其余展示增强位,覆盖表豁免)。
|
|
73
|
+
- **服务商拒绝的分类词 `PROVIDER_REJECTION_KINDS` 与型 `ProviderRejectionKind`**(CC-549;接入文档 **§123 WD-1**;根入口运行期导出 +1):冻结五词 `schema_invalid` / `auth` / `rate_limited` / `resend_eligible` / `unknown`。合成终局行上的 `_sema_provider_rejection_resend` 多一位 `kind`(`{ resend, text, kind }`)。分类函数不上根入口(端读行上的键;0.95.0 退出根入口的自由函数同理由)。
|
|
74
|
+
- **`CAPABILITY_IMAGE_INDEX_REQUIRED`**(CC-584;**§123 WD-4**;根入口运行期导出 +1):`'capability.image_index_required'`,单机(文件后端)引擎对沙箱镜像池恒答的 501 码,与同族 `CAPABILITY_*` 码常量同居 `engineErrorCodes`。
|
|
75
|
+
- **`modelSetupDecision` 可选第三参 `hostCanConfigureRoute`;`ModelSetupDecision` 多两词 `offer_route_setup` / `explain_route_unconfigurable`**(CC-579;**§123 WD-6**;型面联合加员:对该联合做 `switch` + `never` 穷举的宿主编译红一次)。第三参与 `hostCanConfigureModel` 同形(布尔),缺席 = 不知道。
|
|
76
|
+
- **`APPROVAL_PARKING_WARN_TEXT` 上根入口**(CC-577;**§123 HW-2**):停驻中那一句基句 `This approval is being parked; answer it again on the parked card when it appears.` —— 活卡 respond 回 `202 parking_in_progress` 且引擎没给 `retryAfterMs` 时通知的全文。此前是包内件(0.93.1 G-PK8e 钉着不上根),自己拼停驻告知的宿主(走回落腿的、直调 respond 的)只能留逐字副本;现在读这一只常量,副本随之退役。带句尾的 `approvalParkingNoticeText` 与通知铸口 `surfaceApprovalParking` 仍是内部件。根入口 +1 名。
|
|
77
|
+
- **放行披露的用户面句口 `modeReleaseReasonSentence(reason)` 与「按调用只说一次」的已说过账 `createReleaseDisclosureLedger()`**(CC-440 ② ③;**§123 HW-3 / HW-4**):放行原因词(`GateModeReleaseView.reason` / 判定口姿态车道的 `releaseReason`)此前只有词、没有句,每个读它的宿主各自翻译。句口:闭集词各一句(`rule_unreadable` 规则读不出、`target_unresolved` 写入落点读不出〔引擎 7.49.0 现名;老引擎仍发的旧词 `write_protection_unresolved` 经改名表读成同一句,两代读法见 PC-3〕),表外词(引擎比本包新)走通用句且**不回显该词**,缺席 / 非串 / 空串 ⇒ `undefined`(不渲);两处来路(放行账、判定口)同词同句。已说过账:`has(identity)` 只读、`mark(identity)` 单调写 —— **宿主在那一行真的上了屏 / 进了转录之后才 `mark`**;身份 = `toolCallId`(按会话代 `epoch` 限域)→ 回落 `callKey` → 都缺席恒「没说过」(照说);有界先进先出 256、不续命;坏形身份(访问器不跑 / 原型链 / 抛错代理)当缺席;每本账一份实例、无模块级状态。根入口 +2 名;型 `ReleaseDisclosureIdentity` / `ReleaseDisclosureLedger`。
|
|
78
|
+
- **`replayedApprovalClosesCardFrame(disposition)`**(CC-440 ④;**§123 HW-5**):回交给宿主的重放处置里,哪一种该让同一只问的 `approval_request` 卡帧按「已收口」去重 —— 唯一答 `true` 的是崩溃收敛行(`decided` 且带闭集成因词,与 `replayedApprovalSentence` 读同一张成因表);无成因的 `decided`(接到清单请求的副本内存里没有,跨副本恢复口要留)、带 `settled` 的、`live` / `unknown`、成因表外与一切坏形一律 `false`(不收口 = 卡仍可见)。此前这条判据只写在回交口注释里、端各自抄一行。`unknown` 臂的时间线句早已是 `replayedApprovalSentence`(0.95.0),端自铸的句子换读它即可。根入口 +1 名。
|
|
79
|
+
- **后台子代身份判定三端共用一只谓词(CC-643)**:根入口 +8 名 —— `isBackgroundSubagentRow(row)`(这一行是不是一只后台子代)· `isBackgroundWorkRow(row)`(横幅 / 问询卡「N 个后台任务 / 子代」那一格:后台子代,外加后台 bash / 监视器句柄)· `isOwnBackgroundSubagentRow(row, own)`(再加归属:会话流只顶替「归属」那一半,不顶替「行种类」)· `liveBgRowOwnership()` / `liveBgRowOwnershipFor(sessionKey)`(现读归属读数,一批行判一次)· 句柄契约 `DURABLE_AGENT_HANDLE_RE`(与 `@sema-agent/core` 包根同名的持久 agent 句柄正则,构建期从已装引擎生成,不是手抄)/ `isAgentHandle(rowId)` / `nonAgentHandleKind(rowId)`;型 `BgSubagentRowFacts` / `BgRowOwnership` / `NonAgentHandleKind`。规则按求值序:行无 id ⇒ 否;复合 id 或 `sourceLane === "run-leg"`(前台委派行)⇒ 否;非 agent 句柄(后台 bash / 监视器)⇒ 否;有父的单段行 ⇒ 是;无父只认 agent 族句柄(持久 agent 句柄,或 `wa` + 16 位 hex)。背景:fleet 在飞读面交的是全部非终态行,server ≥ 7.125.0 带 `?session=` 的会话流还会带回该会话的 run 行与它的前台(转发)子代行,「是不是后台子代」此前由终端壳自写一份,现归包。非 agent 句柄的前缀字母不手写:`scripts/gen-upstream-tables.mjs` 新增第十四批,对引擎任务登记簿逐任务型实铸一次读出前缀,进生成物 `CORE_TASK_HANDLE_PREFIXES`(不上根入口)。入参读不出时的缺席语义逐键见接入文档 §123b。
|
|
80
|
+
- **在飞读面行 `EngineActiveBgTask` 新增可选键 `sourceLane`(CC-643)**:wire 行上有非空串 ⇒ 原样带出;缺席 / 空串 / 非串 ⇒ 整键缺席(不编默认车道)。task 帧与 snapshot 两路入账的读面行形同一,通知退休行同样带。`readEngineActiveBgTasks` 交的是全部非终态 task 行、不分种类(server ≥ 7.125.0 的会话流含该会话的 run 行与前台委派行)—— 这一条写在源码 TSDoc 与接入文档 §123a FL-7(dist 的 `.d.ts` 构建期去注释,文字落点是接入文档)。
|
|
81
|
+
- **`decisionRefusalAskReading(failure)` 与型 `DecisionRefusalAskReading`**(CC-602;接入文档 **§123 HJ-1**;根入口运行期导出 +1):「一发被拒的决断,所问的那一问是否已决」的唯一读数,三态 `settled` / `not_settled` / `unreadable`。入参是决断口抛出的错误对象、活卡结局的 `respondRefusal` 便签或决断腿的拍平结局。`settled` 只从肯定证据来:本地 `no_pending`、409 `conflict.ask_decided`、`gone.ask` 或 `gone.ask_parked` 以外的 410、404 体上的「已结束」成因词、码被剥掉时 sdk `AskDecidedError` 类名;`NotFoundError` 类名、无成因词的 404、只说明「你看的那张已不是当前的」四码、`gone.ask_parked`(流内问已转成停驻卡、仍在等)、失败文字里像「已决」的词都不是证据。决断拒收分类、中断撤卡的告警判定与 `isAlreadyResolvedFailure` 都从这一只读数派生。
|
|
82
|
+
- **配置地址展示口 `displayConfiguredUrl(url, opts?)` 与上传判据 `queryCarriesCredential(query)`**(CC-288;接入文档 **§123 DC-1 / DC-2**;根入口运行期导出 +2):两只口同读一只 query 值判官 —— 键名是凭据标签,或值是已知前缀 / 高熵形,或值里嵌着凭据结构(嵌套地址的 userinfo、`标签=值`、方案词 + 值、嵌套能力地址,含百分号编码层与 `+` 作空格)⇒ 带凭据。展示口与 `displayUntrusted` 同一条管线(选项同义),只有 query 值按这只判官遮:`?tenant=acme` / `?region=us-east-1` 原样,只靠 query 区分的多租户端点分得开;`deployment` / `name` / `tenant` 等非秘密语义键下的可读词链(`my-gpt4-deployment-eastus2-prod01`)上屏;没有 `://` 的 scheme 写法(`https:/h/…`)按解析器组件重建后再遮。上传判据只判不改 = 展示口按不放宽的口径扫这条 query 会不会动它的字节(显示放的可读词链上传判有;展示口会遮的 —— 含两层编码的标签键、键名本身是凭据形 —— 一律判有);非串入参 ⇒ `false`。
|
|
83
|
+
- **通告呈现事实(CC-462;接入文档 **§123 NT-1 – NT-5**;根入口运行期导出 +9)**:三端共用的「这句通告说给谁听 / 有没有用户能做的事 / 是不是同一次发生 / 截在哪」从终端壳收进包,端只留座位装配。`cutForDisplay(text, budget, { boundary?, mark? })`:句界截断原语(句界 → 子句 → 词界 → 字符,每级保住至少一半可用长度;记号计入预算;代理对与 `\uXXXX` 转义 token 不劈,与 `displayUntrusted({ max })` 同一只封长;预算不是有限数 ⇒ 不截)。`noticePresentationFacts(notice, deployment?)`:`audience` 三态(码册内读生成表,册外 / 非串 ⇒ `unknown`)· `outlet`(`detail.remedy` 自有数据位非空串才 `present`,否则 `unknown`;`absent` 要等 core 码册机读新列,今天不铸)· `remedy` 原样 · `occurrence`(表内七码且身份键读得出 ⇒ `{ kind: 'occurrence', key }`,其余 `{ kind: 'event' }`)· `seatClass`。座位类表 `NOTICE_SEAT_CLASS` / `noticeSeatClassOf`(常驻+提示 / 常驻 / 瞬时 / 诊断;座位位置仍归各端)。出路可达判官 `outletReachable` / `planOutletRendering` / `OUTLET_KINDS`(七种出路 × 六位部署事实,读不出一律 `unknown`,`unknown` 不断言)。`noticePrintLine`:`-p` stderr 行 `[sema] <整句> [<码>]` 的唯一铸点(码名在行尾方括号;预算按受众 1000 / 160,截在句界,全文去处只在有会话转录时附,没有载体不截,单行,凭据面同一只洗法)与 `NOTICE_FULL_TEXT_CAP`(8000)。新型 15 个。`capDisplay` 由私有改为包内导出(不上根入口)。
|
|
84
|
+
- **`-p` 权限结局行 `printPermissionOutcomeOf`(CC-485;接入文档 **§123 NT-6**;根入口运行期导出 +2:另有 `PRINT_PERMISSION_OUTCOME_FORMS`)**:只读引擎的结局(`gateOutcomeOf(tool_end)` 的视图),三形一张句表 —— 模式拒(`dontAsk` 一句点名模式并带 allow 规则出路;`bypassPermissions` 说它判不出写落点是否受保护;模式词缺席 / 表外 ⇒ 通用句,不回显该词)· 无人可问(「这条车道没有审批通道」,**不再断言模式**)· 模式放行(放行原因句,与 `modeReleaseReasonSentence` 同一只铸点)。其余结局 / 门记录缺席 / 坏记录 ⇒ `undefined`。受众恒 `user`,出路由铸句方声明,座位类读 `NOTICE_SEAT_CLASS` 同一格。终端壳按「旗 + 壳本地视角」两源读模式、`--permission-mode dontAsk` 的拒句写成「under the default permission mode」的读法,换读后由本口取代。
|
|
85
|
+
- **重试状态多两位:`providerCondition` / `providerConditionSource`**(CC-606;**§123 PC-6**;additive):引擎 7.49.0 在重试帧上说服务商对被重试那次应答的判词(今天可重试的 `throttled` / `overloaded` / `unknown`)与它凭的证据,两层投影此前都剥掉;现在原样到 `RetryStatus` 顶层(开集串,非空才在)。`error.rateLimits` 仍 `null`、`error` 上不加判别位 —— 额度判定不从重试帧派生。`BRAIN_STATUS_PAYLOAD_KEYS` 十一 → 十三。
|
|
86
|
+
- **`task.tool_turn_incomplete` 读数多一位 `outcome`**(CC-606;**§123 PC-7**;additive):引擎 7.49.1 在掉了调用的那一轮上说结局(`terminal` / `reissued`);缺席 = 没说结局或老引擎,不补词。
|
|
87
|
+
- **具名型 `RuleGrammarView`;端口 `ruleToolGrammarOf` 的返回型放宽到 `'command' | 'domain' | 'name' | 'path'`**(CC-606;**§123 PC-5**):引擎 7.43.0 起多答 `name`、7.49.0 起多答 `domain`,此前端口型只有两词,宿主装引擎原件要型断言;现在按完整型装零断言。
|
|
88
|
+
- **云模式执行体读口(CC-622,additive)**:根入口 +4 个函数、+11 个型。`projectEngineDirectory(body)`(`GET /api/v1/engines` 回体 → 行名册)· `projectMeEngine(body)`(`GET /api/v1/me/engine` 回体 → 读数)· `decideMeEngine(reading)`(candidates 判定:`connect` / `no-engine` / `choose` / `unresolved`)· `engineOverrideOf(set, requested)`(`--engine <name>` 只在名册内选:`select` / `not-listed` / `duplicate` / `row-unreadable` / `unreadable` / `invalid`)。读法:回体整个不成形 ⇒ `undefined`(读数作废,不冒充「零台」;`engines: []` / `candidates: []` 才是零台);读不出的行不连坐别的行并计入 `unreadableRows`;行上 `viaCenter` 只认同源相对路径(它会被拼在已登录中心的 origin 之后并带用户令牌发出,绝对 URL / 协议相对 / 含空白或控制符 / 查询与片段 / 点段〔含百分号编码形〕一律让整行读不出);`kind` / `posture` / `rule` 按开集读(表外词原文透传,不抛、不折成已知词);`online` 缺席不折 `false`;`target` 判不出 ≠ 没有(`null` 才是服务端明说没有目标,判不出不落成 `no-engine`);表外 `rule` + 无 `target` 既不说「没有引擎」也不说「歧义」;`connect` 不凭 `target` 单键放行(名册缺席、不含 `target`、与 `rule` 的计数不符都判 `unresolved`);读不出的行里名字仍读得出的算重名证据,`--engine` 对它们答 `duplicate` / `row-unreadable`;名册读不出时 `--engine` 不放行、不回落到名册外按名直连。传输留在端(经 `RegistryClient.request`),本件只读已取回的 JSON 体。接入文档 §123 CL 行。
|
|
89
|
+
- **座位「最近目录」:可缺动词 `listRecentFolders()` / `noteRecentFolder(path)`、能力位 `recents`、唯一读法 `recentFoldersOf` 与编排口 `readRecentFolders`**(CC-574;网页端 [9916] 第 10 条;接入文档 **§123 S2-2**;根入口运行期导出 +2;🔴 编译面:`LocalSessionsApi` +2 方法、`SeatCapabilityName` 联合 +1 字面量):0.94.0 桥整退后座位没有最近目录的位,渲染端只能自写「记录行 `cwd` 去重」,Recent 只列开过会话的目录。现在「最近目录」= 会话记录行的 `cwd`(有会话的目录,派生、宿主不登记)∪ 宿主登记行(用户选过、不一定开过会话的目录),读法只有 `recentFoldersOf` 一只:按路径原文字节去重,同一路径时刻取较晚者,说得出时刻的在前(登记行取 `lastUsedAt`,记录行取 `lastActivityAt` 再取 `createdAt`),平手登记行在前;`sessions` / `registered` 缺席 = 那一半没供给,两半都没供给 ⇒ `null`、供给了空数组 ⇒ `[]`(读到了、真的没有);读不懂的行跳过不连坐。`readRecentFolders` 把能力位三态与动词调用编排在一起:能力位不是 `reported ∧ available` ⇒ 不调动词(`host: "skipped"`),动词抛 / 回执读不成 / 回执非空而一行都读不懂 ⇒ `host: "unreadable"` 且记录行那一半照读(读不出不折成「真的没有」;部分行读不懂时好行照用、读数的 `unreadableRows` 如实数出)。两只动词的出站门逐行对账(信封与行只收普通对象;路径非空串、`lastUsedAt` 在场即串),`noteRecentFolder` 回执复用通用 `{ ok }` 回执(`false` = 宿主没收,不是错误);能力位 `recents` 管这一组动词(缺席 = 宿主没说,出站门闭集、读口三态、禁用句三句同 `pickFolder` 一律)。`pickFolder` 回执、记录行 `cwd` 与登记行路径三处的「非空串」判据收成包内一只(行为不变)。
|
|
90
|
+
- **v1 呈卡帧卡面 → 卡入参事实的投影口 `approvalCardFactsOfV1(card)`(CC-449;接入文档 **§123 CD-1**;根入口运行期导出 +1,型 `ApprovalCardV1Facts`)**:`approval_request` 帧的 `card`(经 sdk `isApprovalRequestFrameV1` 窄化后取)按活卡帧腿**同一批读器**投成卡入参事实,两面同名的每一位同在同缺、同值(门对正形与坏形逐键差分)。载体差两处:真人位读 `risk.requiresRealApproval`;作答通路是问决断口(只收 approve / deny)⇒ 规则候选落只读位 `ruleOffersReadOnly`、不盖 `allowSessionCarried`。入参被省略 / 缺席 / 非对象 ⇒ 回落形 + `argsUnavailable` + 说明句(与活卡帧腿同一只;卡上不再给「编辑后批准」)。子代徽章与出处链的判别同活卡帧腿(出处链只在子代卡上、形不合整只不上)。宿主位(`callKey` 经 `askGateQuestionId(askId)`、`signal`、窗三键与本地收帧锚点)由装配点补;入参不是对象 ⇒ `undefined`;一位读就抛只丢那一位;出参冻结。端侧逐键手写的 v1 卡投影可整段换成本口(§123y)。
|
|
91
|
+
- **卡上三行放行的单一判官 `standingRowsOf(card, host?)`(CC-482;**§123 CD-2**;根入口运行期导出 +1,型 `StandingRows` / `StandingRowsWhy` / `StandingRowWhy` / `StandingPersistentRow` / `StandingRowsHostFacts`)**:一次答「本会话放行」「以后别问」(`engine_offer` / `local_whole_tool` / `none`)「部署名单那一问的本会话放行」三行与逐行理由。三行都是放宽方向,一律闭合失败:卡读不出、引擎声明记不住(`rememberRefused`)、那一位在场而读不出 ⇒ 三行都不给(规则候选在场也不给);会话行要卡上的作答通路事实 `allowSessionCarried`;名单会话行另要问类每一员都是名单那一问;引擎候选(可兑位或只读位)⇒ `engine_offer`,候选键在场而读不出 ⇒ `none`;本地整工具行要无引擎候选、引擎没点名规则车道关门(`ruleOffersAbsence` 缺席)、入参可得、授予绑定读作 `none`、一条 allow 规则清得掉这一问(`automaticAnswerVerdict(card, 'standing_rule')` 答 `may_answer`),且宿主报卡面恰为通用面、这条整工具规则按当前发送快照会随请求发出。卡上 `unreadableEvidence` 含 `rememberRefused` ⇒ 三行都不给;其余非空 ⇒ 「以后别问」一行不给(坏形 / 原型链上的 / 读就抛的证据不会经投影洗成缺席)。永不抛,出参冻结。
|
|
92
|
+
- **卡入参 +3 可选位(CC-482;**§123 CD-3**;型 `ApprovalGrantBinding`)**:`allowSessionCarried?: true`(本包按腿铸卡时盖的作答通路事实:活卡帧腿与待决行腿盖,v1 投影口不盖;缺席 = 带不走,或不是本包铸的卡)· `grantBinding?: 'bound' | 'none' | 'unreadable'`(批准这张卡是否还授予这一次调用之外的东西:载体上的授予摘要与工具名按 sdk 契约句读,三条腿同一只读法、恒盖)· `unreadableEvidence?: readonly string[]`(载体上在场却读不出、因而没上卡的放宽相关证据键 —— 记不住位、治理 / 真人 / 强制位与强制词、出身词、规则车道缺席词与候选、让位证据、问类对;只在非空时盖)。三位追加在卡入参末尾,既有键序与值不变;干净载体上 `unreadableEvidence` 不出现。
|
|
93
|
+
- **报告口 `kept[]` 的编译器拒收行带编译器的码与句**(CC-578 ③;接入文档 **§123 RF-1**;additive):`PermissionsKeptRule` 多两只可选键 `code` / `message`,只在 `reason === 'compile_refused'` 的行上、且编译器对这一条答的那一位是非空串时在场 —— 与判「拒收」同一次调用交回(问的是归一 / 改写后的那一串、同一读法、同一根基),宿主不必再为了码与句去问第二次同一只编译器。别的理由的行恒无这两键;同串同桶重复的行照第一次的结局。`message` 原样(句中可能引用用户写的规则串),显示前经 `displayUntrusted`。
|
|
94
|
+
- **活卡结局便签 `respondRefusal` 带齐分类要读的机读位:`retriable` / `extra` / `unreadable`**(CC-578 ④;**§123 RF-2**;additive):拒体自有 `retriable` 严格为 `true` ⇒ `retriable: true`(读法与两条决断腿拍平结局的同名位同一只);拒体原样袋上的 404 成因词与 409 席位词 ⇒ `extra: { cause?, field? }`(与抛出物同一读法、非空串才带,只此两词);抛出物上「这一问是否已决」读不出 ⇒ `unreadable: true`。三位都 present-iff、绝不铸 `false`。修前便签只有状态码 / 码 / 句:同一次拒绝以抛出物形与便签形进 `classifyDecisionRefusal` / `decisionRefusalAskReading` / 收口门,答案可以不同 —— 可重试的拒收与 404 他副本在便签上不读作瞬时、已结束的 404 不读作已在别处结算、409 问答载荷席读成行完整性拒、读不出的 410 读成已决。只有这些位读得出、状态码 / 码 / 句都读不出时不铸便签(「至少一位可呈现」不变)。
|
|
95
|
+
- **安全停闭集 `GATE_FAILURE_CODES` / `HitlSafetyCode` 加员 `binding_missing`**(CC-578 ⑤;**§123 RF-3**;型面联合加员:对 `HitlSafetyCode` / `GateFailureCode` 做穷举 `switch` 或 `Record<…>` 的宿主编译红一次,三端 `src` 零命中):待决行缺 D-1 绑定位、本地拦下、一个字节都没发。行为变化见 `### Changed`。
|
|
96
|
+
- **场景拒绝的出句 `scenarioNotAllowedContent(detail, requestedScenario?, surface?)` 与型 `ScenarioDenySurface`**(CC-389,原 KL-44;接入文档 **§123 FS-1 / FS-2**;根入口运行期导出 +1、型 +1,公面 1603 → 1604):场景执法拒绝(400 `scenario_not_allowed`,或续跑腿折成 409 `resume_blocked_by_policy` 而原码是它)此前判型在包里(`scenarioDenyFromError`)、句子归各端 —— 终端一句,网页端另写一句(还另写了一遍 allowlist 过滤),决断出口(只带折叠码的结局)出不了带允许清单的专句。现在句子与允许清单渲染都在包里:`·` 分段「主语 · `Available: <清单>`(空表不渲)· 出路尾(`You can also omit the scenario to run on your default assignment`)」;缺省面(`'request'`)与终端现句在干净输入上逐字节同;`'resumed_work'` 面给续跑腿 / 决断出口用:主语换「The scenario this work resumes under」、不带出路尾(决断体里没有可省的场景位,说了是假出路);名字(请求的场景名与清单项)逐名转义控制字符 / 双向覆写等,**不封长**(场景名是标识符:无标记截短会把共享前缀的两个名字显示成同一个,用户复制屏上的名字重试会提交另一个名字;干净文本任意长度逐字节不变)。入参按不可信读(`detail` 不是对象 / `allowlist` 不是数组或含非串项 / 取值器抛 ⇒ 按空表退让,永不抛)。
|
|
97
|
+
- **决断失败结局的原码位 `blockedBy`**(CC-389;**§123 FS-3**;additive 可选键):审批 approve · deny 两条决断腿与提问卡决断腿的 `failed` 结局,在外层码 `errorCode` 是续跑腿折叠码(`resume_blocked_by_policy`)且体上 `blockedBy` 读成非空串时,多带折叠前的原码(例 `scenario_not_allowed`);`errorCode` 仍是外层码(两个位两个命名空间,不合并);缺席 · 空串 · 非串 · 取值器抛 · 别的外层码上的同名键 ⇒ 键不铸;按状态派生的粗码也原样带(只搬运不解释)。`blockedBy` 的读法收成唯一读口(续跑折叠读数 `resumePolicyBlockFromError` 与 `effectiveWireErrorCode` 同读它,三态不变;一处成文的收紧:顶层 `blockedBy` 在场却不是非空串〔非串 / 取值器抛〕而 `extra` 里有串时,修前 `effectiveWireErrorCode` 回落 `extra` 答原码,现在读成「读不出」、答折叠码本身 —— 真 sdk 错误上顶层没有这一位,只手搓的错误对象可触发)。
|
|
98
|
+
- **取件等待与本地规则解析的可选注入口 `onFailure(log)`**(CC-517 (c);**§123 FS-6**;additive 可选成员):`ParkRowBirthWaitDeps.onFailure?` 与 `LocalAllowRuleDeps.onFailure?` —— 这两只纯模块没有日志口,「原抛出物只进宿主日志」此前只做到了不上屏;现在抛出物的日志形(`String(e)` 截 300 字,含类名)交给它(每次抛出调一次);回调同步抛 / 返回被拒的 Promise ⇒ 经包内唯一的宿主回调隔离口留一行 debug 痕迹、不改判决、不产生未处理拒绝;宿主不给 ⇒ 与此前逐字节同。
|
|
99
|
+
- **调用级两个标记 `tool_start.recovered` / `tool_end.notExecuted` 过境(CC-654;接入文档 **§123 KY-1 / KY-2**;additive 超集键,根入口零新增名)**:引擎 7.49.0 起 `tool_start` 帧可带字面 `true` 的 `recovered`(引擎在**关闭**一只开始帧从未发出的调用时补铸的开始帧 —— 中断 run 的对账、续跑进程关闭死进程宣告过的调用;它不断言执行与否),`tool_end` 帧可带字面 `true` 的 `notExecuted`(引擎对「这只调用从未执行」有**正证据**:停批的兄弟、开始前被打断、对账关闭了一只这个 run 没起过的调用)。两层投影的白名单此前都把它们剥掉。现在:开始帧的 assistant 信封多超集键 `_sema_tool_recovered: true`(交互转录与 `-p` 帧同一个键);收口帧的内部 `tool_end_result` 臂多 `notExecuted: true`,`-p` 帧与交互转录的 tool_result 行信封多 `_sema_not_executed: true`(键都在信封上、不在 tool_use / tool_result 块上 —— 块随 `/compact` 直发服务商)。🔴 严格真标记,只读自有数据位(取值器不执行),缺席 / 假 / 形不对 / 读不出一律不铸键;**缺席既不是「跑过了」也不是「没跑」**(引擎逐字:执行中被打断、下次进程启动才对账关闭的调用都不带 `notExecuted`),本包不铸任何反向键,`recovered` 也不蕴含 `notExecuted`。服务端 7.126.0 线之前这两键不上线(= 缺席)。
|
|
100
|
+
- **完成终局的机读账:`readRunTerminal` 的 `completed` 读数多可选位 `detail`,新型 `RunTerminalCompletedDetail`(CC-654;**§123 KY-3**;additive)**:最后一轮服务商用引擎不读的结束词收了尾(回合照留,可能被截短)而 run 在这一轮完成时,完成因由带 `detail { kind: 'finish_reason_unknown', finishReasonUnknown }`。读数两臂:`{ kind: 'finish_reason_unknown', finishReasonUnknown }` 与表外种类 `{ kind: 'unrecognized', word }`(开集,只带原 kind 词)。缺席 / 坏形 / 读就抛 ⇒ 整只缺席且读数仍是 `completed`(**缺席不等于干净收尾**:老引擎 / 老服务端不过境)。只在因由形上读,平面形结构上没有这一位。
|
|
101
|
+
- **失败终局 `provider_rejected` 详情多两位 `providerCondition` / `providerConditionSource`(CC-654;**§123 KY-5**;additive)**:服务商用 4xx 拒绝了请求的终局上,引擎说服务商对账号 / 容量说了什么(引擎闭集词:额度耗尽 · 可重试条件但预算用尽 · 凭据 / 权限 / 请求本身……)与它凭的证据;`RunTerminalFailureDetail` 此前只收 `kind / status / code`,这两位被剥掉。现在开集串原样透传(不手抄闭集),只在 `provider_rejected` 臂上读,逐键独立(一位读不出只省这一位,`status` / `code` 照交)。🔴 缺席 = 没判(与 `unknown` 同读),不得渲成「额度耗尽」;判词**不改**「改了重发」的状态分档。
|
|
102
|
+
- **两只通告事实读器 `readFinishReasonUnknown` / `readStreamEndIgnored`,派发表 +2 行(CC-654;**§123 KY-3 / KY-4**;根入口运行期导出 +2)**:`route.finish_reason_unknown`(服务商用引擎不读的结束词结束了一轮:`finishReason` 回声形串,`?` 是合法词)与 `route.stream_end_ignored`(第一条终结语句之后流里又来了东西:`statement` 开集 / `word` / `frames` 正整数),此前只登记在码册里、读器答 `undefined`。受众不变(user);必填格缺 / 空串 / 非串 ⇒ 整只缺席,绝不抛。
|
|
103
|
+
- **云模式凭据来源判词 `credentialProvenance(facts)`(CC-170,接入文档 **§123 CV-1**,additive)**:根入口运行期导出 +2(`credentialProvenance`、冻结四词 `CREDENTIAL_ATTACH_WORDS`)、型 +8(`CredentialFacts` / `CredentialProvenance` / `CredentialAttachWord` / `CredentialFactName` / `CredentialTargetKind` / `CredentialTargetProvenance` / `CredentialConsent` / `CredentialSidecarOwnership`)。「这台引擎目标上附的是哪一类凭据」的唯一读法:入参是宿主给的生命周期事实(布尔 / 闭集词 / 核验结果词,**不读环境、不碰凭证值**:把令牌串当「在不在」旗标传入读成读不出,且不回显),答 `{ kind: 'word', word: 'local-sidecar' | 'service-token' | 'registry' | 'none' }` 或 `{ kind: 'unreadable', reason }`。读法:本机托管行只看受护 sidecar 的归属核验结果(核过 ⇒ `local-sidecar`,核不过 ⇒ `none`),与服务令牌在不在、引擎此刻死活都无关,锚点绑定 / 存活这类身份事实不读;远端 / 回环 pin 上,第一次写进程槽之前就已导出的服务令牌 ⇒ `service-token`;否则已登录 ∧ 目标经连接步骤钉住(回环另需已同意)⇒ `registry`;手导基址永不自动注登录令牌;`none` 是正面事实(没附凭据),入参缺席 / 坏形 / 表外词(含 `kind: 'manual'`:manual 是出身不是 kind)/ 自有访问器 / 代理陷阱 / 只在原型链上的键一律 `unreadable` 并点名读不出的那一位,绝不折成 `none`;判定路径没走到的入参不读、不影响答案;永不抛。零 import、零宿主状态。
|
|
104
|
+
- **座位 `patchSession`:会话行改名 / 置顶的一只可缺动词**(CC-634;网页端 [10123] 请托;接入文档 **§123 PB-1 – PB-4**;🔴 对实现 `LocalSessionsApi` 的宿主是必填成员):`LocalSessionsApi` +`patchSession(req: SessionRowPatchRequest): Promise<LocalSessionRecord>`(宿主转投引擎 `sessions.patch`,服务端 ≥ 7.125.0),入参 `{ sessionId, title?: string | null, pinned?: boolean }` —— `title` 串 = 改名、`null` = 清回自动标题(空串是坏体)、至少带一位;回执 = 改完之后的列表行。`LocalSessionRecord` +可缺位 `pinned`(缺席 = 没置顶或宿主不知道,按没置顶读)。能力位 `patchSession` 进 `SEAT_CAPABILITY_NAMES`(读口 / 订阅口 / 禁用句三句同其余能力位;宿主在引擎端写口不可用时报 `false`)。入站判官 `checkSessionRowPatchRequest` / `isSessionRowPatchRequest` + 键集 `SESSION_ROW_PATCH_REQUEST_KEYS`(根入口运行期 +3):只判形,**不抄**服务端的标题规则(1 – 120 个字符、首尾无空白;越界得到服务端的 typed 400 `request.field_invalid`)。座位不再需要渲染端自己的改名 / 置顶旁路表,写口只有这一只。
|
|
105
|
+
- **终局读数 `RunTerminalRead` 多一个可选位 `replay: true`;提交幂等的重放体按嵌套结果读**(CC-636 ①;接入文档 **§123 PA-2**;additive):服务端 ≥7.125.0 同一把 `Idempotency-Key` 已建过 run 行时,终帧 `done.result` 是那一行的读面 + `replay: true`(sdk 20 `RunReplayRecord`),结局在嵌套的 `result`。`readRunTerminal` 先按严格 `replay === true` 分流:读嵌套的引擎结果,缺席才读行状态(行上句子位是 `error`);读数带 `replay: true`。修前这一形按扁平行状态读,失败码 / 句子 / 门 / 挡下理由丢失。首答、在飞合流的首答逐字、拒绝三键与冲突臂上不带这一位。
|
|
106
|
+
- **舰队视图 `FleetTaskView` 多一个可选键 `workspaceSnapshot?: 'failed'`**(CC-633;接入文档 **§123 PA-4**;additive):服务端 ≥7.125.0 顶层 run 终态帧的工作区快照残局键 —— 这条 run 结束时的工作区快照没存上(下一条 run 恢复的是上一份)。恰为 `"failed"` 才落键;缺席或别的值 ⇒ 整键缺席(缺席不是「存上了」);它不是 run 失败,`status` 各读各的。`FLEET_TASK_VIEW_KEYS` / `FLEET_TASK_ROW_WIRE_KEYS` 各 +1。
|
|
107
|
+
- **core 值级端口 `judgeRuleToolName`(规则工具名判官)+ 读口 `ruleToolNameJudgement` + 型 `RuleToolNameVerdictView`**(CC-629;接入文档 **§123 PT-1**;🔴 型面 BREAKING:`CoreValuePorts` 必填员 +1):引擎 7.48.0 包根的 `judgeRuleToolName(name, roster)` 是「规则里的工具名够不够得着任何工具」的唯一判官(四词 `current` / `retired` / `unprefixed_namespace` / `unmintable_segment`;7.48.0 起空工具段 `mcp__srv__` 也答 `unmintable_segment`)。装配根原样装进来(名表末位追加);读口没装 ⇒ `undefined`(不编 `current`),引擎的抛原样上抛;`RuleToolNameVerdictView.kind` 按开集串读(引擎加词时原样装得进,本包读点把表外词当判不出)。🔴 硬破坏三句:① 按完整型建袋的装配根缺这一件 ⇒ 编译红并点名它;② JS 宿主漏装 ⇒ 请求体装配口有规则要投即抛并点名 `judgeRuleToolName`,会话规则可送判定对协议名整批读不懂;③ 从 `@sema-agent/core` 多导入 `judgeRuleToolName` 放进袋(宿主装的引擎须 ≥ 7.48.0)。
|
|
108
|
+
- **会话同步「文件历史没搬」的用户面句与判定:`FILE_HISTORY_SKIPPED_NOTICE` / `fileHistorySyncNotice(result)` / `fileHistorySyncNoticeIdentity(result)`**(CC-408;CC-502、CC-463 P2-c 并入;接入文档 **§123 FH-1 / FH-2**;根入口运行期导出 +3):推 / 拉 / 导入三条同步腿与自动同步对「只同步了对话、文件历史没搬」应说同一句话,此前由终端壳自铸。`fileHistorySyncNotice(result)`:同步结果自有的 `fileHistory` 位恰为 `"skipped"` 才说那一句(只同步了对话 / 为什么 / 对 `/rewind` 恢复文件的后果 / 再同步不会补);`carried` / `none` / 位缺席(老服务端、本地短路、冲突返回)/ 非对象 / 读就抛 ⇒ 不说、不抛;`skipped` 而结果自带的源清单**明说**文件历史信封为空(零追踪文件 ∧ 零回退边界)⇒ 不说(没有东西丢),清单缺席 / 读不出 / 形不认按「有东西没搬」说。`fileHistorySyncNoticeIdentity(result)`:会说这句话时给发生身份(会话 × 源清单叶 entry,不透明串,只比相等),让同一会话在源端没有新轮时不重复说;清单缺席 / 叶为空 ⇒ `undefined`。能力位缺席(7.52 – 7.115 的单机后端)的处置在 sdk 同步编排(17.0.0 起),本包不在转口上再包一层。
|
|
109
|
+
- **`isFileHistoryBlobMissing(err)`**(CC-408;**§123 FH-3**;根入口运行期导出 +1):同步取文件历史 blob 时 404 `not_found.blob`(清单没引用该 hash,或字节不存在)的判口 —— 状态恰为数字 404 **且**机读码严格等于 `not_found.blob`;码缺席(含旧形粗码 `not_found.resource`)/ 表外码(前缀族、大小写、尾空白)/ 状态缺席或不是 404 / 非对象 / 读就抛 ⇒ `false`、不抛。同步腿的 catch 把其余 404 说成「会话不在」时用它排除「这一个 blob 取不到」这一件事。
|
|
110
|
+
- **文件检查点「判不出 × 用户要收紧 ⇒ 拒」与已缓存坏位的单飞重探:`FILE_HISTORY_TIGHTEN_VERDICTS` / `fileHistoryTightenVerdict` / `fileHistoryUnjudgedRefusal` / `judgeFileHistoryTighten`**(CC-443;**§123 FH-4 / FH-5**;根入口运行期导出 +4;另有型 `FileHistoryTightenVerdict` / `FileHistoryTightenJudgement`):用户把文件检查点关了、而引擎读数判不出能不能按会话关(没观测 / 引擎没报这一位 / 不认识的词 / 畸形读数)时,片段口 `fileHistoryDeclarationField` 给空片段 —— 请求照常发、引擎照常捕获,用户的设置被静默违背,而包里没有口能把这一形表达成拒绝。`fileHistoryTightenVerdict(reading, captureOffByUser)` 四词闭集:意图非严格 `true` ⇒ `not_requested`;`on-optional` ⇒ `declare`;`off` ⇒ `already_off`;其余一切 ⇒ `unjudged`(读数判官同源 `fileHistoryCaptureMode`)。`fileHistoryUnjudgedRefusal(reading, captureOffByUser)`:`unjudged` ⇒ 拒句(这一发没发出去;引擎没报能不能按会话关,现在发可能照样被记录;稍后再发,或把文件检查点打开后照常记录这一次),其余 `undefined`。`judgeFileHistoryTighten(captureOffByUser, { baseUrl?, withinMs? })`:提交前只调这一口 —— 非 `unjudged` 零网络;`unjudged` ⇒ 对该地址恰一次单飞重探(同地址并发多次只飞一发;回体已落地而这一位读不成形的「已缓存坏位」也修得了;重探失败不动旧落地、别的读器不受牵连;缺省有界等 3000 ms,`withinMs: 0` = 只起不等),重读再判,仍 `unjudged` ⇒ 带拒句返回;`opts.baseUrl` 显式给了却不是非空串、或读就抛 ⇒ 不知道要判哪一台引擎,意图为真按拒(绝不回退到默认读取的另一台引擎上去放行),`withinMs` 读不出只读成「不等」;重探回体须是普通对象(数组等畸形回体不替换有效落地),同地址同拍重入并入同一发。片段口本身不变。**只有收紧方向允许「判不出就拒」。**
|
|
111
|
+
- **`engineSupportFloorEffective(floor?)`:`engineVersionTier` 的有效门槛一只读口**(CC-687;接入文档 **§123 EF-1**;公面 +1 函数,additive):`engineVersionTier(version, floor?)` 的实际门槛是声明的服务端底线 `SUPPORT_FLOOR.server` 与 `floor` 取高;此前端要在拒句里写「低于哪一版」只能渲手里传进去的 `floor` 常量 —— 常量落到底线之下之后,门按底线拒、句子说的却是常量(判与渲两条读法)。新口答的就是同一次取高的结果(纯 `x.y.z` 串):一只内部判官同时吐出门槛与三态,`engineVersionTier` 取三态、新口取门槛,不是第二份比较。`floor` 缺席 ⇒ 底线;低于底线 ⇒ 底线;高于底线 ⇒ `floor` 原串;坏形 `floor` 与 `engineVersionTier` 同一条(`TypeError`、不回显值)。生成物名 `DECLARED_SUPPORT_FLOOR` 不出公面(单名:公面读底线只有 `SUPPORT_FLOOR`)。**行为变(极端输入)**:版本串的每一段须是安全整数(≤ 2^53 − 1)—— 超界段此前按丢精度的数值比(2^53 与 2^53 + 1 折成同值),会让回显的门槛原串和门实际放行的最小版本分叉;现在超界段的版本串读作 `unknown`(`engineVersionTier` / `coreVersionTier`)、超界段的 `floor` 同 `TypeError`,恰在 2^53 − 1 上的段照常读。真实服务端 / 引擎版本串不会碰到这一条。
|
|
112
|
+
- **耐久决断腿判定口(CC-662,additive)**:`durableDecideLegOf(row)` / 型 `DurableDecideLeg` —— 一行待决归哪条耐久决断腿的唯一读法,五词闭集 `approval` / `plan_review` / `other_gate` / `unreadable` / `absent`,永不抛;`askParkForeignGateKind` 改由它派生。`DecidePlanReviewOptions.parkedResult`(CC-661,可选):这张计划卡所答的那次停驻结果,供决断前门身份(接入文档 §123 PP-2 / PP-4)。
|
|
113
|
+
|
|
114
|
+
### Changed
|
|
115
|
+
|
|
116
|
+
- **勘误(0.95.0 段已冻结,此处回指;外部验收 [10143] 指出)**:① 0.95.0 主题句里的「`absent` 退词」不是 0.95.0 的改动 —— 那是 0.94.0 CC-173(`HeadlessPermissionResolution['source']` 去 `'absent'`,接入文档 §121 RQ-2),0.95.0 型面 BREAKING 三项应读作「终态词表 / 谓词改名带属主、七条过渡臂退役、RX 行三十名与 `isSeatModelCatalog` / `classifyRegistryConflict` / `isScopeGoneError` 退出根入口」;② 0.95.0 `### Removed` 首条「无根入口删除名」错:同节 RX-1 / RX-2 / WB-4 等条目已逐条列出,根入口实为 −43 / +83(净 +40,与「净值」行一致);③ 终态词表离开根入口的是 **10** 名(`TERMINAL_FLEET_TASK_STATUSES` / `isTerminalStatus` / `CLAIM_RELEASED_STATES` / `TASK_NOTIFICATION_TERMINAL_STATUSES` / `isTerminalNotSuccess` / `RUN_TERMINAL_STATUSES` / `RUN_TERMINAL_NOT_SUCCESS_STATUSES` / `TERMINAL_CAUSE_KINDS` / `isTaskNotificationTerminalStatus` / `isTerminalCauseKind`),发布说明只点了前五名;逐名「改用什么」见接入文档 §2z。
|
|
117
|
+
- **字符面旧三口与同伴署名改读 `displayUntrusted` 同一张宽集字符表(CC-635;CC-393 收口)**:`escapeDisplayControlChars` / `collapseLabel` / `capForDisplay` 与消息署名规范化不再各带一份字符集,而是同一张表的三组选项(转义不折平 / 折平再转义 / 标成空格再折平),不洗凭据。格式类整类此后转义上屏 —— 零宽 U+200B – U+200D、词连接符 U+2060、不可见运算子 U+2061 – U+2064、U+FEFF、软连字符 U+00AD、标签字符 U+E0001 / U+E0020 – U+E007F、行间注记 U+FFF9 – U+FFFB 等;emoji 连字与连接文字 / 印度系文字里的 ZWJ / ZWNJ、RGI 地区旗按 `displayUntrusted` 同一只语境判原样保留。署名规范化另收 C1 控制符、双向控制全族与孤代理项(此前原样)。逐码位只收紧:此前标出的码位一个不放。🔴 **显示字节会变**:含上述字符的标签、描述、横幅、拒因句多出可见转义(astral 码位写成 `\u{E0041}` 形);含它们的署名多出空格,只由它们组成的署名按缺席(可选位只丢那一位,必填位整帧按普通通知)。三端零编译红、零改码(读点见接入文档 §123d)。
|
|
118
|
+
- 消息署名的来源核对(载体 `from` 与 `_sema_provenance.from` 必须相等)改按**原串**比较:此前比的是展示规范化之后的署名,只差控制符 / 格式类 / 双向控制 / 孤代理的两个串会被当成同一来源(宽集扩表后碰撞面更大);两个铸点写的是同一个值,合法帧不受影响。规范化只管呈现,不参与判别。
|
|
119
|
+
- `capForDisplay` 的封长与 `displayUntrusted({ max })` 同一只实现:`\u{…}` 转义 token 同样不劈,截出新形(emoji 连字被截掉右半)时在截断串上再跑一遍;非正 / `NaN` 上限 ⇒ 空串、`Infinity` ⇒ 不封,与此前同;非数(如串 `'5'`)上限 ⇒ 空串(此前按 `Number()` 折算,0.95.0 得 `"abcde"`)。hook 故障横幅的 512 字符帽改用同一只封长(此前按字符切,可留半枚转义 token 或劈开代理对)。
|
|
120
|
+
- **总缓存按键现读的五个口与能力位读器族同一条读法(CC-596;接入文档 §123 CR-7;🔴 型面联合加员)**:`engineCapState` / `engineCapValue` / `engineCapTrue` / `engineCapString`(根入口)与包内的 `engineCapNestedTrue`、有界异步口 `engineCapStateVia` 此前按 `in` + 普通取值读 —— 自有访问器会被执行、只在原型链上的键算在场、`engineCapValue` / `engineCapString` / `engineCapNestedTrue` 遇到读就抛的位会外抛;29 只投影读器则只认自有数据位。现在取位只有一处:自有数据位才算值(值 `undefined` 与键不在同判缺席),自有访问器不执行、读描述符就抛 ⇒ 读不出(显式一态),只在原型链上的键算缺席。读不出的出口:`engineCapState` ⇒ `non_boolean`、`engineCapValue` ⇒ `{ kind: 'unreadable' }`(新)、`engineCapTrue` / `engineCapNestedTrue` ⇒ `false`、`engineCapString` ⇒ `undefined`。🔴 `EngineCapValueState` 多一员 `{ kind: 'unreadable' }`(对该联合做穷举 `switch` + `never` 的宿主编译红一次;三端 origin/main 里只有终端一处读点 `engineCapValue(…, 'version')`,按 `kind` 比较、不穷举)。真引擎回体是 JSON 解析产物,线上读数不变;变化只在手造的回体(取值器 / 原型链 / 代理)上。`engineCapState` 对「自有键值为 `undefined`」此前答 `non_boolean`,现答 `absent`(与读器族和 `engineCapValue` 同)。接入文档 §122 包侧缺口 CR ④ 的事实句自本版不成立(§123z 回指)。
|
|
121
|
+
- **`toolEndOutputText` 改读转录投影那一条文字读法(CC-648;接入文档 §123 TR-1;行为变,公面名不变)**:「工具结果正文的文字是什么」包内此前三条读法(这只公面读口只取 text 块、分类器识别另有一只 `'\n'` 连接并收 `{content}` 对象形的本地版、0.96.0 的转录投影叶),三处的差在任何真到达的输入上都不改读点判定,收成一只、零选项。读数变化:空数组 ⇒ `''`(此前 `undefined`,与空串两答);读得出的图像块 ⇒ `[image]`;有读不出的块 ⇒ 末尾一条 `[unsupported content omitted]`(此前静默丢;只有图 / 只有读不出的块此前 `undefined`);裸串与纯文本块不变;非串非数组仍 `undefined`。包内引擎中止串的精确等值读它:带图或带读不出块的帧不再读成中止串。
|
|
122
|
+
- **`classifierDenyFromToolEnd` 读同一条读法(CC-648;§123 TR-2;行为变,收窄)**:裁决载体只认裸串或恰一个块(多块帧不再是裁决;此前多 text 块按 `'\n'` 连接后可中);`{content:[…]}` 对象形(不在工具结果的 wire 契约里)不再认;不带 `type:'text'` 的项不再当正文。引擎铸的拒绝正文(单串 / 单 text 块,带或不带信封)判定与此前逐值同。
|
|
123
|
+
- **TaskOutput 结果的 `tool_result.content` 是模型面原文串(CC-649;§123 TR-4;行为变,型面收窄)**:此前交互转录的 block content 是对象 `{retrieval_status, task}`(不是合法的 tool_result content 形,与 `-p` 帧的串两车道不同),现在两车道同是原文串(截断带 `\n…(truncated)`),对象只在信封 `tool_use_result`(值与此前逐字节同);带图时与别的工具同一条块化规则。`wireOutputToBody` 对 TaskOutput 把对象放在 `toolUseResult` 位。`ToolResultBody.content` 型由 `unknown` 收窄为 `string | unknown[]`。
|
|
124
|
+
- **待决行缺 D-1 绑定位的安全停改铸 `binding_missing`(CC-578 ⑤,行为变;接入文档 §123 RF-3 / RF-4)**:修前这一形与引擎 409 `approval_binding_mismatch` 同铸 `binding_mismatch`,两个出处只能按错误句子的开头分。现在 `HitlSafetyError.code` / 耐久腿结局 `safetyCode` / 问答腿结局 `code` 上,`binding_mismatch` 只表示引擎答了绑定冲突(字节已出站),`binding_missing` 表示本地发送前拦下;两者照旧都是安全停(重呈给人,绝不自动重发)。「这一问是否已决」判官、`isAlreadyResolvedFailure` 与停驻解析把新词读作本地闭集码(未决;失败文字里有「已决」类词也不续读),与其余本地码同答。按 `code === 'binding_mismatch'` 认「本地缺绑定」的宿主改认 `binding_missing`;按句子开头分出处的读法可以删。`GATE_FAILURE_CODES` 同版冻结(此前是可变数组,宿主往里 `push` 一个词,包内白名单就放行表外词);型不变。
|
|
125
|
+
- **重试行 stalled 臂的 `detail` 过展示出口(CC-517 (e);§123 FS-7,行为变:显示字节变)**:0.68.0 的约定是「原样透传,一个字不改写」;但同批引擎字节在另四条 error 臂上自 0.94.0 起已过 `displayUntrusted`(`error.formatted`),这一臂是漏网的出口。现在 `RetryStatus` stalled 臂的 `detail` 与那四条臂同一只出口(缺省单行载体:先洗凭据、再标控制符与双向符、最后折行);干净文本逐字节不变;洗完为空 ⇒ 键不铸;仍不截断(封顶归端)。
|
|
126
|
+
- **`readEngineNoticeFacts` 对 `route.finish_reason_unknown` / `route.stream_end_ignored` 由答 `undefined` 变为答 typed 事实(CC-654,行为变;**§123 KY-3 / KY-4**)**:终端 `-p` 机读车道按「受众 user 且派发口有读数」给通告帧附 `facts`(读码推断,见 §123 KY-3 的终端读点),这两码的 `-p` 通告帧自本版起多一个 `facts` 键;交互呈现不变(仍是引擎原句)。
|
|
127
|
+
- **能力回体落地存描述符级快照,读器族与五口读同一只不可变快照(CC-653;接入文档 **§123 KY-8**;行为变;KL-724 销)**:此前落地存的是宿主交来的那只活对象 —— 读器族按落地记录记忆化首读投影,五个按键现读的口(`engineCapState` / `engineCapValue` / `engineCapTrue` / `engineCapString` 与包内的嵌套口)每次现读那只对象,宿主在探测闭包返回之后就地改写回体时两类读口对同一位可能给出不同答案(KL-724)。现在落地那一拍把回体照「读法同一条」深读一遍存另一只对象:只读自有位的**描述符**(取值器一次都不执行),访问器位在快照里仍读不出,代理陷阱抛的节点整只读不出,环保图形,超 64 层 / 10 万节点的子树按读不出(闭合失败),原型既非 `Object.prototype` 也非 `null` 的节点挂一只外来原型(读器按「是不是普通对象」判畸形的判据照旧),快照深冻结;宿主的对象不冻结、不改写。落地之后宿主改写自己的对象两类读口都看不见 —— 要换能力位走 `invalidateEngineCaps` 重探。🔴 快照这一遍可能调到宿主代码(回体是代理时的陷阱,此前在第一次读时才调):陷阱里换代是合法重入,快照做完再核一次代际,旧引擎的快照不落地。
|
|
128
|
+
- **整张悬空的 @ 名单不再原样保留,经上游收窄读法剔空成 `{mode:"none"}`**(CC-637;**§123 PB-6**;KL-54 销):修前 10 一代里剔空 = 空名单 = 「谁都能 @」,所以整张悬空的名单原样写进去,本机引擎因此整域拒收(启动时改用环境目录、刷新时保留上一份)。11 一代的 `only` 名单剔空就是 `none`(收紧方向,上游 `narrowAtMention` 的同一读法):文档可写、本机引擎整域不落缺省;问题账逐名记 dropped,外加一条整设置的 `{key:'atMention', at:'atMention', reason:'dangling'}` 并出一句 warn(名单里的模型一个都用不了,@ 提及整个关掉;目录条目一条都没过判定口、目录原样保留时本机整域拒收这份设置,`none` 不生效 ⇒ 这一条与这一句不出)。
|
|
129
|
+
- **`atMention: {mode:"none"}`(一个都不许 @)照写**(CC-637;**§123 PB-6**;KL-665 销;cli [10138] ④ 的 C-4 探针):修前影子文档写不出这一态(10 一代空名单 = 全部可 @)⇒ 不写、记 `unsupported`、一句「本机 @ 不受限」的 warn —— 放宽方向;现在写 `{mode:"none"}`,问题账零条、无 warn。`only` 名单照写(C-3 探针)。
|
|
130
|
+
- **10 形回体里 `models.default` 与 `roles.default` 同在且指向不同:取 `models.default`,被盖住的 `roles.default` 记 `shadowed`**(CC-637;**§123 PB-7**):11 形里缺省模型只有 `roles.default` 一位;取 `models.default` 与上游一次性迁移 SS-M9 同向(新增差分格对上游迁移逐值核过)。修前两键各自照写。只在老控制面回体上出现。
|
|
131
|
+
- **影子 models 文档里 `roles` 的缺省模型排第一位、空 `roles` 不写**(CC-637;**§123 PB-5**;外部验收 [10156] G-UP5):两代回体 `{default:b}` 与 `{roles:{default:{model:b}}}`(注入 `entryAccepted` 时)产出逐字节同的影子文档 —— 此前后者多一个空键 `roles:{}`。
|
|
132
|
+
- **🔴 支持底线三件同号抬:服务端 7.115.0 → 7.125.0、引擎 7.40.1 → 7.48.0、sdk 19.0.0 → 20.0.0;peer `@sema-agent/sdk` `>=19.0.0` → `>=20.0.0`**(CC-633 / CC-636;接入文档 **§123 PA-1** / §0a;型面零变):`SUPPORT_FLOOR` 三项换值;`engineVersionTier` / `coreVersionTier` 的门槛下限随之抬 —— 服务端 7.115.0 – 7.124.x 的版本串今天答 `legacy`,调用方另给的门槛低于新底线时按新底线判(只抬不降)。开发依赖 `@sema-agent/sdk` 换钉 `^20.0.0`(sdk 20 = 服务端 7.125.0 锁步 major;20.0.1 已弃用)。两视角实测:本包源码读 sdk 20 的舰队行型声明;已发 `.d.ts` 对装 sdk 20 的消费方 `skipLibCheck: false` 零错。换钉本版之前,服务端须 ≥ 7.125.0、sdk 须 20.x。
|
|
133
|
+
- **请求体装配口与会话规则可送判定:「工具名够不够得着工具」只读引擎判官**(CC-629;接入文档 **§123 PT-3 / PT-4**;退役登记 RL-127):此前三处各管一段手写文法(退役名表查表、「含 `__` 而无协议前缀」、协议段的对端段切分与铸名比对 —— 后者漏判空工具段 `mcp__srv__`,会话规则可送判定只剩「点了对端、没点工具」一道门挡它),现在退役名 / 无前缀 / 段铸不出三问都问同一只判官(退役名的**改写**仍走 0.90.0 起的继任名表 `normalizeLegacyToolName`,统一改读判官的 `currentName` 随 CC-688 收口);判官之外留两条不是同一问的关(名字里有左括号;服务端受理口不收的 `<前缀><段>` 不完整形),名字关在前、规则编译器在后。可见变化:① 铸名端口没装或抛不再改判决 —— allow 桶里判官答 current 的协议名照投、段铸不出的留下 `unminted_protocol_segment`(此前一律 `judge_failed`),deny / ask 段铸不出的照进 `unreachable[]`、只缺 `mintedPrefix`(KL-512 删);② 判官装着却答不上来(抛 / 回的不是四词之一)⇒ 装配口抛(与必备端口缺席同一条),可送判定整批读不懂;③ 会话规则可送判定的答案逐条不变(装满端口时),依赖的端口由协议表 + 铸名两件换成判官一件(KL-570 改写)。
|
|
134
|
+
- **`hookMatcherVerdict` 改读设置契约的唯一读法(不锚定)**(CC-636 ④ / CC-434 ③;接入文档 **§123 SS-5**,成文改口 G-SS5 – G-SS7):「matcher 选中哪些名字 / 是哪一形」只问设置契约 `hookMatcherSelects` / `hookMatcherForm`(构建期从开发依赖原样派生,运行期零 import),本包自带的名字表切分与锚定 `^(?:…)$` 删除 —— 服务端 7.125.0 受理面与终端执行器问的就是这一只。含正则字符的 matcher 整串按不锚定正则读:`"ListPeers)|(Read"` 拒 → 不判(`invalid_pattern`,服务端同样受理)、`"ListPee."` / `"Peers$"` 受理 → 拒、`"ListPeers|Agent."` 拒 → 受理,本口判了的形与服务端 7.125.0 起的提交结果逐格同(7.114.x – 7.124.x 服务端自持锚定读法,这几形答案不同);名字表形与全匹配形不变。正则形仍过本包的静态求值预算。逐代读法表换到 §123「G-SS7」(§117 那张冻结)。
|
|
135
|
+
- **中心配置 mcp http 条目同设 `principalHeader` 与 `assertionHeader` ⇒ 整条不投,丢弃账记 `principal-and-assertion-header`**(CC-655;接入文档 **§123 SS-2 / SS-3**;`CloudMcpDropReason` 联合 +1 字面量):两个键回答同一个问题(这台服务器的请求上用哪个头送身份),设置契约 12.2.0 在条目层判同设非法;此前本腿只投 `principalHeader`,等于替它择一。与契约同答的射程是两位都为非空串;任一位为空串 / 非串时契约整条拒,本腿照投读得出的那一位(中心配置既有的「形漂移不抛」姿势)。被丢条目的 `headerRefs` 不再报进 `missingEnv`。`assertionHeader` 本身本版不过境 —— 请求面(sdk `McpServerSpec` 的 http 传输)没有这个键,服务端任务提交腿会剥掉、MCP 探测口会拒;请求面声明它那一版改为原样过境。条目级三只透明键 `toolAxes` / `authForm` / `entryKind` 两条投影腿都不过境(§123 SS-4)。
|
|
136
|
+
- **开发依赖 settings-schema `^11.2.0` → `^12.2.1`**(接入文档 **§123 SS-1**):本包运行期不 import 设置契约包;既有生成物逐字节同,函数批 +2(`hookMatcherSelects` / `hookMatcherForm`)。
|
|
137
|
+
- **门种表与服务端决断口对齐(CC-662)**:`ASK_PARK_GATE_KINDS` 改为 `human` / `irreversible_ask`,`PLAN_REVIEW_GATE_KINDS` 改为 `plan_review`,`REVIEW_PARK_GATE_KINDS` 改为 `plan_review` / `needs_review` —— 退出的 `policy_ask` / `tool_approval` / `dry_run_review` 不是门种,wire 的门种位上从不出现;三张表对引擎停驻登记表两向编译期钉。门种位写这两个非门种词的待决行不再入审批臂(§123 PP-3 / PP-5)。
|
|
138
|
+
- **审批卡「为什么问」那一句的判序按线上契约改口:结构位在前、散文并渲在后(CC-691;接入文档 §123 PR-1;行为变,型面零变)**:`askProbeReasonDetail(card)` 在 0.94.0(CC-191)写成「`probeReason` 散文优先」,与服务端线上契约对该键的成文(优先渲 `probeCause`、没有结构位才回落本键、两键同在可并渲、禁把本键拆 / 解析成结构)相反 —— 成文例外,0.94.0 的「散文优先」作废。现在:`probeCause` 是记录 ⇒ 本包按码的那一句在前(码词形合才带 `(check code: …)`;只结构位时句子与此前逐字同),`probeReason` 在场(自有数据属性 ∧ 非空白串)⇒ 经 `displayUntrusted` 单行形以一个空格接在后面,此时结构句去掉「the engine did not say the specific reason」半句(紧跟的散文就是原因;「句′。 散文」;散文不拆、不解析、不从里面读码)。只有「两键同在」一形的读数变(此前只出散文);只有散文 ⇒ 散文、只有结构位 ⇒ 本包一句、两缺 / 读就抛 ⇒ `undefined`,三形与 0.94.0 逐字相同。并渲串长度不夹(长度归端),两键按键隔离(一键读不出只降那一键)。公面导出名、签名、返回型零变。
|
|
139
|
+
|
|
140
|
+
### Deprecated
|
|
141
|
+
|
|
142
|
+
- **`subscribeEngineAgentPanel` / `subscribeEngineAgentPanelAbsence` 再留一版,预告:随消费端删掉包装之后的下一个本包版本删除**(CC-114;退役登记 RL-89 / RL-90;**§123 RT-2**):本版行为不变。0.95.0 预告的删除条件(消费端改订行差分口 `subscribeEnginePanelRows`)在本版发布时未成立 —— 终端面板桥仍订这两口,所以不在本版删。🔴 删除那一版的硬破坏三句:① 按名 import 这两个名字的端编译红(运行期该名为 `undefined`,调用即抛);② 旧口的事实流与缺席上报随之退役,行差分口以 `upsert` 行上的 `fields.absence` 交同一件事,不再有第二条读法;③ 改订 `subscribeEnginePanelRows`、缺席标从差分里读,删掉旧口调用与喂旧口的测试写法。
|
|
143
|
+
- **`resetManualCompactCapability()` 再留一版,预告:随消费端删掉包装之后的下一个本包版本删除**(CC-344;退役登记 RL-101;**§123 RT-3**):本版行为不变(0.95.0 起它是空调用:`/compact` 的能力位没有私有表,失效只走 `invalidateEngineCaps`)。网页端在引擎重连失效处与 `invalidateEngineCaps` 同拍调它、终端门面再导出它,所以不在本版删。🔴 删除那一版的硬破坏三句:① 按名 import 或再导出它的端编译红(运行期调用即抛);② 对读数与行为零影响 —— 它本来就什么也不清;③ 删掉这一行调用与再导出,失效只走 `invalidateEngineCaps`。
|
|
144
|
+
- **20 只 `noteEngineCapsFor*` 再留一版,预告:随消费端删掉包装之后的下一个本包版本删除**(CC-344 余项;退役登记 RL-113;**§123 RT-4**):本版行为不变(空调用,读数只从总缓存的落地派生)。终端的 caps 探测闭包与十一份门面、网页端的回退读数探针仍在调,所以这 20 只不在本版删(三端零读点的另外 9 只已在本版删,见上 `### Removed`)。🔴 删除那一版的硬破坏三句:① 按名 import 或再导出这些名的端编译红(运行期调用即抛);② 对读数零影响 —— 它们本来就是空调用(探测闭包里同拍读读口得到 `unobserved` 的现状删除前后一样,KL-725);③ 删掉这些调用与门面再导出,闭包里同拍要用读数的读手上那一发回体的投影 `project*Capability(caps)`。
|
|
145
|
+
- **15 只 `__reset*ReadingsForTests` 再留一版,预告:随消费端删掉包装之后的下一个本包版本删除**(CC-344 余项;退役登记 RL-114;**§123 RT-5**):本版行为不变(只清读器自己的记忆表,下一次读按总缓存的落地重新投影)。终端的测试与十份门面再导出仍在用,所以这 15 只不在本版删(三端零读点的另外 14 只已在本版删,见上 `### Removed`)。🔴 删除那一版的硬破坏三句:① 按名 import 的测试代码与门面再导出编译红;② 对读数零影响 —— 它们没有读账可清;③ 要重置读数改调 `__resetEngineCapsCacheForTests`(总缓存的重置),并删掉门面再导出里的这些名。
|
|
146
|
+
- **开发依赖 `@sema-agent/core` 换钉 `7.49.1`(精确钉),构建期事实表重生成**(CC-606;**§123 PC-1**):通告码册 87 → 90(`config.write_protection_unresolved` 改名 `config.path_view_unresolved` 同位、+3 `route.*`〔受众 user 的两码本版另加事实读器,见 Added / **§123 KY-3 / KY-4**〕,**§123 PC-8**);问类仲裁表 +`unverifiable_shell_text`,写入落点读不出的那一类与放行原因词改名 `target_unresolved`(**§123 PC-3**);allow 惰性理由 −`path_pattern` −`domain`。生成物单代;老服务端(≤ 7.125.0)仍发的同一事实旧名 —— 强制词 / 问类 / 放行原因 `write_protection_unresolved`、通告码 `config.write_protection_unresolved` —— 经包内一张改名表与新名同读(判定口同答、同一句、通告照旧在册),支持底线越过引擎 7.49.0 那一版删这张表。
|
|
147
|
+
- **强制词表 `APPROVAL_MANDATE_WORDS` 改取引擎包根生成物,并收老引擎仍发的旧词(两代读法)**(CC-606;**§123 PC-2**;型面 +1 员):引擎 7.49.0 把 `write_protection_unresolved` 改名 `target_unresolved`,sdk 的声明仍是旧词;此前值就是 sdk 那只数组,新词读成缺席。现在七词(新词一句、旧词那一句照旧),值为冻结数组;旧词在支持底线越过引擎 7.49.0 那一版删。
|
|
148
|
+
|
|
149
|
+
### Fixed
|
|
150
|
+
- **发布前最后一批修正(行为面七处,型面零变)**:① `standingRowsOf` 的持久行:放行证据(`ruleOffers` / `ruleOffersReadOnly`)只认**自有数据位** —— 只在原型链上 / 自有取值器 ⇒ 不给「以后别问」(`offers_unreadable`),取值器零执行(此前宽读照给 `engine_offer`;门 `standing-rows` R6b / R6c);② 流式腿对 `done.result` 的三处消费(错误行的工具历史载体 / 工具历史账的会话回显 id 与 run id / 计费 chrome 的 `stats`)改经同一只 `engineResultOf`(重放体读嵌套引擎结果),与结果帧同读一处 —— 此前重放体上 `_sema_tool_history_mismatch` / `/rewind` 出路句丢、`run_cost_reconciled` 不发(门 `server-7125-pick` RS1);③ 根入口的三只闭集 `SESSION_ROW_PATCH_REQUEST_KEYS` / `CHROME_EVENT_KINDS` / `SEAT_EVENT_TYPES` 冻结(一个 `push` 就能放宽判官的闭形;门 `seat-session-patch` PS7);④ `findPendingForTask` 身份点名的那一行在队列里却不归审批腿 ⇒ 码由 `no_pending` 改 **`wrong_gate`**(本地闭集既有码):那一问**仍在等、只是门不对**,唯一判官读作 `not_settled`,不再被读成已决(门 `durable-decide-leg` DL4b′ / DL4b⁗、`terminal-cause-projection` E4);⑤ 待决行门种**读就抛** ⇒ `unreadable`(不进审批候选池、身份点名到它 ⇒ `wrong_gate` 不回落到另一行);缺席 / null / 空串 / 非串仍是 `absent`(门 DL2 / DL4b⁗′);⑥ 计划审阅结局:决断 200 体自述「卡仍 pending」(`retriable:true`)只在回拉**没有更晚的反证**时才判 `still_parked`(证得出)—— 回拉已 `completed` 或门身份已换(别的客户端推进了)⇒ `unconfirmed`,不按旧回执放开陈旧拦截(门 `plan-review-outcome-verdict` POV0);⑦ 门 `file-history-tighten` G16b 的「重入者不拿占位提前返回」改用微任务屏障,不再与墙钟竞速(并发负载下假红)。
|
|
151
|
+
|
|
152
|
+
- 记忆规格未知键句(`unknownMemorySpecKeysNote`):键名里的格式类字符逐枚转义进引号,astral 码位整枚写成 `\u{…}`(此前原样上屏)。
|
|
153
|
+
- hook 故障横幅(`hookFailureNoticeText`)在 512 字符帽上不再留半枚转义 token、不再劈开代理对。
|
|
154
|
+
- CC-393(原 KL-71「旧三口字符集窄于新口默认、署名规范化不折 C1 与双向族」)随本版字符表单源收口;接入文档 §101 包侧缺口 ② 与 §101 / §105 的「旧三口逐字节保持」判据自本版不再成立(§123z 回指)。
|
|
155
|
+
- **`text_segment_end` / `thinking_segment_end` 之后不再有同段增量(CC-645)**:权威全文里「还没泄出去的尾巴」此前要等下一帧才作为 `stream_delta` 排出,序列是 `[…, text_segment_end(diverged), stream_delta(尾)]` —— 端按契约用 `content` 整段重渲之后又收到一条迟到增量,尾巴渲两遍(`… Quill Quill`)。现在臂内先排尾增量再发段终事件;未分歧(尾巴为空)时序列与 0.95.0 逐字同。
|
|
156
|
+
- **中断撤卡撞 404 时,真 sdk 错误上「那一问已结束」的成因读不出,仍出「session may stay locked」**(CC-638;接入文档 **§123 FA-1**):中断时把挂着的那一问用一次拒绝结算掉,拒绝撞 `404 tool_approval.not_pending` 且体上带「已结束」的成因词(行上十词;≤7.123.x 的 `voided` / `denied` 同版随支持底线退役,见本段 Removed 的 PA-10 条)本应静默;但成因判官按「自有数据描述符」读抛出物的 `extra`,而 sdk 的 `APIError.extra` 是类上的取值器,在真 sdk 抛出的错误上成因词恒读不出,于是「could not cancel the pending question — the session may stay locked」照出(手搓成自有数据位的测试夹具读得出,所以门没见到)。现在抛出物的 `extra` 位只有一只读口(沿原型链普通取值;取值器抛 / 代理陷阱抛 / 已撤销的代理 ⇒ 读不出,不外抛),成因判官与包内另五处读该位的口并入它、三态的翻译与修前相同(唯一差别:`extra` 是已撤销的代理时,410 成因读位与归因拒 `field` 读位修前在判形上外抛,现在按「读不出」处置 —— 成因缺席且不回落旧键、`field` 回落读顶层);带成因词的 404 上,中断撤卡观察与决断拒收分类同答「已结束」。没有成因词 / `unknown_or_other_replica` / 读不出的 404 仍出该句(404 不是存在性神谕,闭合失败,不变)。门:`server-7124-pick` 新 XR 段(真 sdk 类实例与真 `AgentClient` 两条线 × 四种成因词 × 两只判定口,读口单源以语法树钉)。
|
|
157
|
+
- **工具结果带图像时,转录 `tool_result.content` 变成块数组(CC-641,行为变;接入文档 §123 HP-1)**:引擎 `tool_end.output` 带图像块且不是错误结果时,交互转录与 `-p` 帧上的 `tool_result.content` 从「恒串」变成块数组 —— 文本块 `{type:'text',text}` 与图像块 `{type:'image',source:{type:'base64',media_type,data}}`(图像数据只判是串、与 CC 同判,字节与引擎送来的逐字节同、顺序不变);纯文本结果仍是串(与修前逐字同),错误结果的 content 恒串,信封上的 `tool_use_result` 不变。读不出的块(图像数据不是串 / 媒体类型不在 jpeg · png · gif · webp / 未知类型)不进 content,末尾补一条 `[unsupported content omitted]`。按串直渲 content 的读点先判 `Array.isArray`。
|
|
158
|
+
- **工具结果里的图像在包内被压成字面 `[image]`(CC-641;[10159])**:修前两份块数组展平都把图像块换成 `[image]`,图像字节在包内丢失,端上拿不到模型看到的那张图;现两份展平收成一只实现(`flattenWireOutput` / `flattenToolOutput` / `coerceOutput` 同答),转录 content 保留图像块(见 Changed);文字读法里读不出的块不再静默消失,以一条告知收尾。
|
|
159
|
+
- **用量分析:同一个时间戳在日序列与小时序列上答案不一(CC-640;[10156])**:修前日序列做日历校验、小时序列走宽容解析,`2026-02-30` 在小时序列被收下并算进 `peakHourUtc`;现一只读口 —— 日期形或带时区的日期时间形、真实日历日,带偏移先换到 UTC,日键与小时出自同一次解析;读不出的点在 `projectUsageSeries` 就丢、计入 `unreadable`(两序列同答)。无时区的日期时间形改按读不出(修前小时随看的人的本地时区变)。
|
|
160
|
+
- **服务商把请求体形判不合(400 / 422 + 回声词在表)不再被劝「改了重发」**(CC-549;**§123 WD-2 / WD-3**):此前一切 400 的终局句都是「Change it … and send it again」,对请求体形被拒这一类方向相反(用户改措辞改不了)。现在这一类给另一句(措辞改了没用;查所配模型与端点,或报给运行引擎的一方),回声词不进句;其余拒绝的句子逐字节不变。`adapt` 重建合成行时,0.95.0 及以前铸的转录行(键只有 `resend` / `text`)重放不丢重发句:`kind` 缺席走旧一代读法由状态推导(不读码),`kind` 在场则须是闭集词且与状态、句一致,否则整键丢。
|
|
161
|
+
- **`sandboxDegradeHint` 认单机引擎的 501 `capability.image_index_required`**(CC-584;**§123 WD-5**):此前这一码不在闭集,用户只见被截断的原文。现按码(状态 501 ∧ 码恰等,不读句子)给具名降级句:这台引擎的存储后端没有镜像索引,换 SQL 后端的 worker 或不带 `--sandbox`。
|
|
162
|
+
- **路由缺口的决策句去掉「向导帮不上」半句,并按宿主位三向**(CC-579;**§123 WD-6 / WD-7**):此前句子写死「model setup will not help」并不读可配位,而终端向导能配路由。现在 `explain_route_gap` 专指宿主没报能不能配(中性句),能配 ⇒ `offer_route_setup`,不能配 ⇒ `explain_route_unconfigurable`。两参调用的决策结果与 0.95.0 逐值同。
|
|
163
|
+
- **型面 BREAKING:`NoAllowCause` 联合增员 `'engine_ask_rule'`;`RuleLadderNoAllowFacts` 多可选位 `noAskRuleMatched`;`policyDenyReason` 两车道各多一句**(CC-576;接入文档 **§123 HW-1**):原因词 `engine_ask_rule` = 卡上规则车道必问且问类或出身为 `ask_rule`(引擎判出的 ask 规则),而宿主阶梯证明**用户这一侧确无 ask 命中**(`noRuleMatched` ∨ 新位 `noAskRuleMatched`;后者专给「本地有 allow 命中、被卡上问类让位」那一形,`noRuleMatched` 说不了)—— 那条规则不在用户设置里(例:部署的 `APPROVAL_REQUIRE` 名单),用户设置清不掉、加 allow 答不了,两车道拒因句说「引擎那一侧的规则、用户设置批不了」,不给「删规则 / 加 allow」。判序只动第 4 步;本地 ask 命中(`askRuleMatched`)与预算用尽仍先于它;证据位缺席 / 非严格 `true` / 原型链 / 访问器 / 读抛 ⇒ 仍答旧词 `ask_rule`(不排除是用户自己的那条);单有新位而卡上不说 ask 规则 ⇒ 不产本词。**行为变**:卡类集含 `ask_rule` × `{ noRuleMatched: true }` 此前答 `ask_rule`、现答 `engine_ask_rule`(0.94.0 G-HD4 该格成文改口,见 §123c / §123z)。对 `NoAllowCause` 写穷举 `switch` 的宿主编译红(加一臂)。
|
|
164
|
+
- **被 `userPromptSubmit` hook 挡下的提示,终局句按成因出 CC 形句、引擎信封不再上屏**(CC-603;终端请托 [10068];KL-735 收口;**§123 LN-1**):此前 `blocked` 终局只有一句 `Run blocked: <reason>`,而 `reason` 是引擎按模型侧车道框好的话 —— `<system-reminder mark="…">` 信封连同会话 mark 原样上屏,机读成因 `detail.cause` 不渲。现在终局行与结果帧 `errors[0]` 经同一只出句口:hook 拒绝(`cause: 'block'`)⇒ `UserPromptSubmit operation blocked by hook:` 换行接 hook 自己的话(按不可信文本过展示出口、信封标签记号拆净,含零宽字符拼的);`crashed` / `timeout` / `cancelled` 各一句固定话并点明提示没有被提交;表外成因词只出句首、不回显原词。`detail` 缺席或坏形(服务端 <7.113.0、种类表外、成因缺席 / 非串)⇒ 落回 `Run blocked: <reason>`,整只引擎信封解开;agent 自己写的 `reason` 逐字节不变。新句计治理终态行(`isGovernanceStopRowText` 认,不叠 `Run stopped:` 前缀、不是 `API Error:`)。不带 CC 句尾的 `Original prompt: …`(流里没有提示原文)。
|
|
165
|
+
- **续跑被拒那一族三码,「门还在」判定同答**(CC-630;**§123 LN-2**):`isGateStandingErrorCode(code, true)` / `isCodeClassifiedGateFailure(code, true)` 此前只认 `checkpoint.unsupported_version`,另两码(`checkpoint.walltime_axis_retired` / `checkpoint.config_refused`)同样是 409 ∧ `retriable: true`(卡仍待决)却答 `false`,「门已决」判官对它们回落到失败文字扫词。现在族码表只登一处(与族读口 `refusedParkFromError` 同一张),三码 ∧ `retriable === true` 同答 `true`;`retriable` 缺席 / false / 非布尔仍是 `false`。
|
|
166
|
+
- **「会话已有在跑的 run」的判别体与载体规则各只定义一处;因由形两边同认**(CC-631;0.95.0 CC-391 的同轴孪生;**§123 LN-3**):公面判别口 `activeRunBusySignal` 与终局行 / 结果帧的选臂此前各读一份(判别体内联在适配层、载体规则散在两处);现在读同一只判别体 `classifyActiveRunBusy` 与同一条载体规则 `activeRunBusyCarrierOf`(都住 `engineErrorCodes`,不在根入口)。顺带收口一个方向的分歧:因由形 `terminal.code` 为占锁码的帧,终局行此前认、判别口不认,现在两边都认。≤7.124.x 服务端幂等重放臂回放的无 `status` 冲突体不在此条:见 `### Removed` 的 CC-685 条(同版退役)。
|
|
167
|
+
- **fleet 台账:终态行只有一处归宿(CC-644)**:此前重连快照带回的终态行(completed / failed / killed)留在活跃集里 —— 没有任何过期机制(server 对快照里的终态行不配 remove 帧,`project()` 对活跃集里的行不看留存窗),页脚上停掉的后台子代行长驻;同根的两个旁支:task 帧终态行的 remove 帧若丢失同样长驻,`clearAllRetainedFleetRows` 清不掉它们,而快照不含该行的下一次重连又会把它当场抹掉(应保留到窗过)。现在 task 帧臂与 snapshot 臂经同一个入账口,终态行只进留存池(窗 `TERMINAL_RETAIN_MS` 从本地接收时刻起算,同一行重复投递续窗,被查看中的行不过期),活跃集只留非终态行:窗过被摘、清池清得掉、后一份不含该行的快照抽不走它、同尾段双生行收敛成一条、尾段上有在飞行时终态条目不留(与快照行序无关)。通知臂里「活跃集里的终态行」那一支随镜像退役 —— 留存池独立成路那一支原本就覆盖同一套方向规则(洗绿拦截 / 升级改写 / 前代挡)。
|
|
168
|
+
- **终态证据活过留存窗(CC-644)**:终态行只住留存池之后,「行帧确认过 failed / killed」这条证据不能随展示条目一起过窗消失 —— 台账为此另记一本按尾段的有界终态证据(状态词 + 周期,上限 512,与周期水位同族),写者是终态入账那一个入口,复活(非终态入账)按尾段撤销、换会话换账清空;证据账自己周期单调(更早一代的终态与复活之后迟到的前代终态帧不覆盖 / 不重植)。通知在行已退场、池条目已过窗或被清之后到达时,零命中路径把它与通知事实台账并列当先例:同周期的 completed 回声不再把已知的 failed / killed 记成成功(0.95.0:remove 到了的常规路径过窗即无拦;remove 丢失时靠长驻的活跃集镜像拦,镜像随本版退役),新周期的 completed 与升级方向(completed → killed)照常收下。
|
|
169
|
+
- **同批的读数变化(CC-644)**:① `FleetLedger.status().taskCount` 只数活跃(非终态)行;② `onBgNotificationAccepted` 的第二参 `rowIds` 只含活跃行(通知到达时该行已是终态 ⇒ 空);③ `onTaskRemoved` 读口的 `unknownRow` / `stale` 把留存池里行帧车道结算过的终态条目算作「账本持有这一行」(终态帧之后的离场帧仍不标 `unknownRow`;通知车道推定退休的条目与 0.95.0 一样不算);同一 id 的重复离场帧在窗内不再标 `unknownRow`;④ snapshot 里缺 id / 空 id / 非串 id / null 的项,以及 task 帧的非串 id,此前把 `undefined` 键写进活跃集或在尾段计算里抛 TypeError(拆帧消费循环),现按同一判丢弃并计 `droppedMalformed`,同批好行照收。
|
|
170
|
+
- **「这一问是否已决」三处判据对同一形答案不同(CC-602 / CC-646;接入文档 §123 HJ-2 / HJ-3,行为变)**:修前决断拒收分类(404 一律算「已在别处结算」)、中断撤卡的告警判定(404 另要成因词)与 `isAlreadyResolvedFailure`(sdk `NotFoundError` 类名算已决、不认 `conflict.ask_decided`)各有一份判据。现在三处读同一只 `decisionRefusalAskReading`:① `classifyDecisionRefusal` 对无成因词 / 成因读不出 / 表外词 / `unknown_or_other_replica` 的 404 与 404 `not_found.approval` / `not_found.checkpoint` 答 `refused-pending`(修前 `settled-elsewhere`),`decisionRefusalClosesOut` 对它读权威列表,仍在等才收口;`unknown_or_other_replica` 另带 `transient: true`(换副本再送才有意义),收口门对它不收口;② `isAlreadyResolvedFailure` 对 409 `conflict.ask_decided` 与 410 `gone.ask_parked` 答 `true`(后者是门已挪走、流会送来停驻卡),对码被剥掉的 `NotFoundError` 答 `false`,类名不再越过在场的码,带状态码的抛出物不再按失败文字判;两条决断腿的拍平结局除这两码外与 0.95.0 逐格同(失败文字词表照旧只在无机读位时作续读提示);③ 中断撤卡的告警判定与分类对每一形同答;相对 0.95.0,中断撤卡撞 410 `gone.ask_parked` 时改为照出「会话可能仍被锁」告警(修前静默,而那一问已转成停驻卡、仍在等),其余形告警与否不变。
|
|
171
|
+
- **会话历史错配的出路句不再靠「模块加载」才知道引擎能不能回退对话(CC-595;接入文档 §123 CR-6)**:出路句(`Run /rewind to recover the conversation.`)与次数句的说话前提里有一条「引擎明说没有对话锚就不补」,判官此前由能力位读面模块在加载时接给出路句叶子;`package.json` 声明了 `sideEffects: false`,打包宿主只引出路句叶子与总缓存、没人 import 读面模块时判官永远没接上,引擎明说无对话锚时仍补句(答案取决于 import 顺序)。现在出路句叶子直接读 `/rewind` 能力位读器 —— 与 `/rewind` 菜单同一份按落地记忆化的读数;接线口与模块变量退役(它们从未在根入口,公面零变化),全包钉死「顶层零加载期副作用语句」。
|
|
172
|
+
- **百分号编码的凭据在展示出口上不再原样上屏(CC-604,行为变:显示字节变;接入文档 §123 DC-3)**:凭据面的一次扫描多几只读面 —— 原文与屏上文本含可解的 `%XX` 时逐层(至多三层)解码,同一组识别网在解码读面上照跑,遮盖落回原文的转义字节(屏上不解码)。修前前缀网与标签网只看原文:`token%3D<低熵前缀形>`、`api_key%3D<值>`、`Authorization%3A%20Bearer%20<值>`、编码分隔与值之间隔空白、整条编码的地址原样上屏;高熵形只被裸值网偶然遮成 `token%«redacted:secret»`(把转义的两位十六进制并进记号)。现在一律 `token%3D«redacted:secret»` 形,前后诊断词逐字节留着;包内自铸句(合成终局行、结果帧错误、引擎错误行)走同一只扫描,一并受益。
|
|
173
|
+
- **路径前导的已知前缀凭据(CC-604,行为变;§123 DC-4)**:散文字面形网修前把 `/` 之后的词一律当路径段放行,`GET /sk-…`、`/v1/keys/sk-…` 与编码形 `%2Fsk-…` 原样上屏。现在已知前缀(整词随机段 ≥ 16,及粘在 `_` / `-` 之后的前缀)在 `/` 之后照遮;`file:` 地址里的段(`file:` 须起一个 token,嵌在请求路径 / query 值里的子串不算)、反斜杠与点之后照旧放行(本机路径),裸不透明值的形状判据在路径段上仍不判(随机段是 ID / 哈希)。
|
|
174
|
+
- KL-736(凭据前缀网不认 `%XX` 编码的分隔与路径前导)随上两条收口删行。
|
|
175
|
+
- **`-p` 帧的 `is_error` 与交互转录同一位(CC-649;§123 TR-3)**:工具名不是 Bash、结构化结果按退出码判失败(`structured` 是 bash 形、`exitCode` 非零且无良性注记)时,`-p` 帧此前标 `false`(只认工具名 `bash`)而交互转录标 `true`;反过来,正文缺席(或结构化结果只带 `exitCode`)而退出码非零时,交互转录此前标 `false`。现在「这次结果是不是错误」只在关卡结果层折一次(结构化退出读数不以正文在场为前提),两车道读同一位。
|
|
176
|
+
- **决断出口的失败句补上场景拒的专句(CC-389,行为变:失败句多一句;接入文档 §123 FS-2)**:续跑腿折叠 409(`resume_blocked_by_policy`)而原码是 `scenario_not_allowed` 时,审批 approve · deny、提问卡、计划审阅四条决断出口的失败句修前只有折叠句(点名原码、不带允许清单);现在折叠句之后补一句 `— The scenario this work resumes under is not in your allowed list · Available: <清单>`(补句组合口 `decideFailureNote` 第九臂;非折叠的 400 形同句;折叠句保留,它说的「是否已消费未知」是场景句不说的另一件事)。
|
|
177
|
+
- **四个出口的 `message` 不再兜底成裸类名 / `[object Object]`(CC-517 (a);接入文档 §123 FS-4,行为变)**:持久规则写 · 会话策略写 · 记忆治理 · MCP 探测四个出口共用的结构快照 `message`,兜底曾是 `String(e)`:抛出物是带类名而 `message` 为空的 Error 时屏上是裸类名,是无 `message` 的对象时是 `[object Object]`(0.94.0 CC-508 只收了另七处)。现在与那七处同一份读法(自带 message ⇒ 非空串 / 数 / 布尔 / bigint 抛出物的文本 ⇒ 固定兜底句 `the call failed with an error this client could not render`),两条读法回答同一问的存量收成一条(结构快照的 `message` 就是那一只取句函数的产物)。非 Error 的抛出物里,对象自带的 `toString()` 不再被当作句子。
|
|
178
|
+
- **子代转向口 `steerEngineSubagent` 的 `detail`(CC-517 (b);接入文档 §123 FS-5,行为变)**:`not-running` / `error` 两臂的 `detail`(终端渲 `Failed to message agent: <detail>`)修前是 `e instanceof Error ? e.message : String(e)` / `String(e)`:带类名而 message 为空 ⇒ 空串 / 裸类名,有 message 的 Error ⇒ 「Class: message」,对象 ⇒ `[object Object]`,已撤销的代理上 `instanceof` / `String` 还会抛。现在取同一份读法,原抛出物的日志形(含类名)只进宿主日志;`error` 臂带状态码时 `detail` 仍只是状态码字串(不变)。
|
|
179
|
+
- **计划审阅的结局句 `The plan_review decision failed: HTTP <status> <msg>` 同读法(CC-517 同形存量;接入文档 §123 FS-8,行为变)**:`<msg>` 修前同样是 `e instanceof Error ? e.message : String(e)`(message 为空 ⇒ 句尾什么都没有,对象 ⇒ `[object Object]`);现在取同一份读法,带自己 message 的错误句子逐字节不变。
|
|
180
|
+
- **后台停止口的能力门:`background.exitFaces` 子位不再普通取值(CC-653;接入文档 **§123 KY-7**;行为修正)**:`stopEngineSessionBackground` 先读 `capabilities.background.exitFaces`,父位走总缓存的显式态,子位却是 `Object.hasOwn` + 普通取值 —— 子位是自有访问器时取值器**会执行**:返回 `true` 的访问器能把门打开(请求发了出去),抛的靠口内 `catch` 分类成 `capability_unknown`。现在两层都经总缓存的嵌套位读口(自有数据位、访问器不执行、显式五态),`unreadable` ⇒ `capability_unknown`,`not_reported` / 非 `true` ⇒ `no_exit_face`,只有数据位字面 `true` 放行;零请求、取值器零执行。
|
|
181
|
+
- **`capability_unknown` 的句子按成因分向(CC-653;**§123 KY-9**)**:此前「还没读到」与「读到了但这一位读不出」共用一句「等探测落定再调」—— 对读不出的位(访问器 / 读描述符就抛)永远等不到。现在两句一张表:没落地 ⇒ 等探测落定再调(不变);读不出 ⇒ 说引擎报的形本端读不了、这条连线上再调不会变;表外成因走通用句,两句都不回显回体里的任何原词,都点明零请求。
|
|
182
|
+
- **同形存量两处同批收口(CC-653;**§123 KY-10**)**:`readEngineAgentRegistry` 的 `caps.background.listFace`(此前普通取值:返回 `true` 的访问器让门打开、请求发出)与根入口 `engineSupportsTaskAgents` 的 `taskAgents` 位(此前注入 client 腿上取值器抛会直接抛出调用,返回 `true` 的访问器读成确证支持)。现在都读自有数据位、取值器不执行:前者读不出 ⇒ `read_failed`(与「明说没有」`no_list_face` 分得开),后者读不出 ⇒ `undefined`(无法确证),数据位行为逐字不变。
|
|
183
|
+
- KL-724(落地之后宿主就地改写回体,两类读口可分叉)随快照落地收口删行(见上 `### Changed`)。
|
|
184
|
+
- **提交幂等的重放体在结果帧上不再被当成引擎结果**(CC-636 ①;接入文档 **§123 PA-2**):服务端 ≥7.125.0 的重放体(sdk 20 `RunReplayRecord`)是 run 行的读面,引擎结果在嵌套的 `result`。修前结果帧投影 `doneToSdkResult` 把外层行当引擎结果读 —— `result` 落成整只嵌套对象、`num_turns` 落 0、选中模型缺席;现在读嵌套那一份(会话 id 取嵌套回显,缺席取行上的),终局分流照读整份载体。
|
|
185
|
+
- 计划审阅决断结局(CC-661):决断后任务落 `failed` / `blocked` / `timeout` 等非完成状态不再判 `took_effect`、不再说「resumed to completion」(今判 `unconfirmed`,正文只陈述读数);决断 200 体自述卡仍待决(`retriable: true`)判 `still_parked`(此前回拉读到 `suspended` 时判成推进到新门);决后仍 `needs_review` 而说不出是不是同一道门 ⇒ `unconfirmed`(此前断言「同一道门、没生效」);「推进到新的审批门、下一张卡会跟上」只在回拉读得出新停驻且那道门有决断卡时说(停在 `resource_limit` / `task_done` 等或门种读不出 ⇒ `unconfirmed`);「re-checked」只在状态来自决后回拉时写(§123 PP-1)。耐久审批取件:身份点名的待决行门种不归审批腿时不再回落到同一任务的另一行(§123 PP-6)。
|
|
186
|
+
- **传输失败分类:`terminated` / `other side closed` 两项按整词判(CC-694;接入文档 §123 NF-1;[10296] ①)**:网络词面基表 `WIRE_NETWORK_ERROR_PATTERN` 里这两项此前是裸子串 —— `SyntaxError('Unterminated string in JSON at position 0')` 的消息含 `terminated`,被 `classifyTurnWireError` / `isWireTransportError` 判成 `transport`(连接类失败),端上渲成「连接断了」;现在这两项加字边界,这条错判 `internal`。undici 原句(`TypeError: terminated` / `SocketError: other side closed`)判决不变,`cause` 在场仍先判 `transport`;基表其余十一项(errno 码、`UND_ERR` 码前缀族、`fetch failed`、`socket hang up`)逐项原样,导出名 / 型零变。端自带的词面表(网页端 `NETWORK_PATTERNS`)要同批加边界,见接入文档 123d。
|
|
187
|
+
- **不可信文本出口的凭据网补三形(CC-695;接入文档 §123 NF-2;[10296] ②;行为面收紧)**:① 粘连名 —— 名字以单数凭据词(token / key / secret / password / authorization / credential)收尾、前面粘着任意字母 / 数字的(`PGPASSWORD=<值>` / `CUSTOMSECRET=` / `MYAPIKEY=` / `dbPassword:` / `{"githubToken":…}` / `secretAccessKey=` / `privateKey:`),此前值原样上屏(只有词首与下划线之后的名字算标签:`FOO_TOKEN=` 遮而 `PGPASSWORD=` 不遮);现在遮值、名字留着。不收:复数(`maxTokens` / `inputTokens` / `MAXTOKENS` 是计量词)、名字后还有字(`tokenizer=` / `keyboard=` / `passwordless=` / `KEY_ID=`)、英文词 `monkey` / `turkey` / `donkey` / `hockey` / `whiskey` / `jockey` / `lackey`;配置地址的 query 键名判据(`queryCarriesCredential` / `displayConfiguredUrl`)与词级网读同一只标签判据,粘连名的键同步带凭据。② 方案词 `bearer` / `basic` 左边紧贴词字符(`_Bearer <值>` / `x_Bearer` / `1Bearer` / `xBearer`)此前原样上屏;现在遮值(`token` 方案词的左界不动)。③ 已知凭据前缀打头、其后一整段字母数字 ≥ 6 字的词(`sk-abcdefghijk` / `ghp_abcdef`)此前被「最长连续段 ≥ 16」的门槛放过;现在整词换记号。这道 16 的门槛是本包散文网自己加的(上游字面形判据对 `sk-abc` 这类短形照认、无长度下限),连字符分段的仓名(`sk-video-generation-toolkit`)与 5 字以内的短名(`sk-video` / `sk-tools`)仍放行。三形都只向多遮方向动,修前已遮的形一字节不变 —— 新认的词只当外层标签用,不当「里层词」去截断一只包着它的外层值(旧标签整段遮住的值里嵌着 `abcPassword=https://h/…` 之类仍整段遮,门 NF3d / NF3e 与差分门的嵌套形池钉)。门 DO15 的族外键一侧随之把 `PGPASSWORD` / `secretAccessKey` / `privateKey` 挪到成员一侧(词表一个词没加,变的是名字可以粘在别的字后面);KL-84 / KL-627 相应订正。已知限制见 KL-755 – KL-757。
|
|
188
|
+
|
|
189
|
+
### Gates
|
|
190
|
+
- 新门 24 道(包侧投影门三件:门 / gates-manifest 登记 / README Guards 行):
|
|
191
|
+
- `run-active-run-busy-read-projection-test.mjs`:🆕 0.96.0 CC-631(0.95.0 CC-391 的同轴孪生)· CC-685(≤7.124.x 重放臂退役;包侧投影门三件之一):「会话已有在跑的 run」终局行 / 结果帧 / 公面判别口同一条读法 —— RB0 尺子(扁平 409 恰一行锁定句)· RB4 一池 16 帧(扁平 / ≤7.124.x 无…
|
|
192
|
+
- `run-approval-card-v1-projection-test.mjs`:🆕 0.96.0 CC-449(包侧投影门三件之一):v1 呈卡帧卡面 → 卡入参事实的唯一投影口 `approvalCardFactsOfV1` —— V1 两腿一读法:sdk 帧键锚与卡键锚的交集逐键喂同值(正形 + 坏形)给活卡帧腿与 v1 口,卡入参同在同缺同值(候选按作答通路落位:活卡帧 ruleOffers…
|
|
193
|
+
- `run-bg-subagent-row-test.mjs`:🆕 0.96.0 CC-643(包侧投影门三件之一):后台子代身份判定三端共用一只谓词(自终端壳 fleetBgSubagentRow 整只上收)—— G0 公面 · G1 句柄契约(DURABLE_AGENT_HANDLE_RE == 已装 core 同名正则;非 agent 句柄前缀字母 == core 登记簿 m…
|
|
194
|
+
- `run-credential-provenance-test.mjs`:CC-170 U3 云模式凭据来源纯判词 `credentialProvenance(facts)`(词表 = 终端设计稿 `credential.attach` 四词 `local-sidecar` / `service-token` / `registry` / `none`,携带计划表 A 的行逐行字面钉):入参…
|
|
195
|
+
- `run-display-credential-reach-test.mjs`:🆕 0.96.0 展示出口凭据网的射程门(包侧投影门三件之一;CC-604 KL-736 收口 + CC-288 T1):DC 段 —— 百分号解码读面是同一次扫描里的几只读面(原文与屏上文本各自逐层 ≤ 3 层解码、解码字映回整枚 `%XX`,同一组候选生成器照跑,遮盖落回原文、屏上字节不解码):低熵 / 高熵编码分…
|
|
196
|
+
- `run-durable-decide-leg-test.mjs`:🆕 0.96.0 CC-662(包侧投影门三件之一):待决行门类判别单源 —— 门种 → 耐久决断腿一张表 + 一只判定口 `durableDecideLegOf`。DL1 三表值(ASK = human / irreversible_ask;PLAN = plan_review;REVIEW = plan_revie…
|
|
197
|
+
- `run-engine-account-keys-projection-test.mjs`:🆕 0.96.0 CC-654(引擎 7.49.0 余五键的包侧投影,承 CC-606 的重试帧 / 工具轮结局两位):P 产品面七名在 dist 根入口 / T `tool_start.recovered` —— 正控(开始帧 assistant 信封多超集键 `_sema_tool_recovered: true`…
|
|
198
|
+
- `run-engine-directory-test.mjs`:CC-622 云控制面执行体目录 / 我的执行体两条读口回体的投影与判定:回体整个不成形 ⇒ 读数作废(undefined),不冒充「零台」(`engines: []` / `candidates: []` 才是零台的正面事实)· 读不出的行不连坐别的行并计入 `unreadableRows`(名册不再宣称完整)· 🔴…
|
|
199
|
+
- `run-fail-sentence-test.mjs`:🆕 0.96.0 用户面失败句两件(G-FS-A–H;CC-389 / CC-517;包侧投影门三件之一):A 场景拒出句单源 `scenarioNotAllowedContent(detail, requestedScenario?, surface?)` —— 缺省('request')面对终端现句的冻结旧实现 4…
|
|
200
|
+
- `run-file-history-tighten-test.mjs`:🆕 0.96.0 CC-443(包侧投影门三件之一;实现住 `dist/fileHistoryCaptureCapability.js` 与总缓存 `dist/engineCapsCache.js`):文件检查点「判不出 × 用户要收紧 ⇒ 拒」+ 已缓存坏位的单飞重探 —— S 公面:`FILE_HISTORY_TI…
|
|
201
|
+
- `run-fleet-terminal-retain-test.mjs`:🆕 0.96.0 CC-644(包侧投影门三件之一):fleet 台账终态行只有一处归宿、一只处置函数 —— 终态行只住留存池、活跃集只留非终态行,task 帧臂与 snapshot 臂经同一个入账口(`admitRow` → `settleTerminalRow`)。修前 snapshot 带回的终态行留在活跃集、永…
|
|
202
|
+
- `run-notice-presentation-test.mjs`:🆕 0.96.0 CC-462(通告呈现设计的包口;包侧投影门三件之一):通告呈现事实 —— C 句界截断原语 `cutForDisplay`(放得下原样含恰等于预算;句界 → 子句 → 词界 → 字符,每级保住至少一半可用长度,否则降级;`boundary:'word'` 跳过句界与子句;记号计…
|
|
203
|
+
- `run-plan-review-outcome-verdict-test.mjs`:🆕 0.96.0 CC-661(包侧投影门三件之一):计划审阅决断结局判法单源 + 公面口带决断前门身份。一条规则 = 每个结局词只由正面证据给出,证据不足一律 unconfirmed;判官只有 `planReviewSettledVerdict` 一只、句子按判词选。POV1 failed(approve / rej…
|
|
204
|
+
- `run-print-permission-outcome-test.mjs`:🆕 0.96.0 CC-485(终端请托;包侧投影门三件之一):`-p` 车道权限结局行 `printPermissionOutcomeOf` 只读引擎的结局(`tool_end.gate.disposition`,经真读口 `gateOutcomeOf`),三形闭集一张句表 —— M 模式拒…
|
|
205
|
+
- `run-prompt-blocked-sentence-projection-test.mjs`:🆕 0.96.0 CC-603(终端请托;包侧投影门三件之一):被 `userPromptSubmit` hook 挡下提示的终局(`blocked` ∧ `detail.kind === 'prompt_blocked_by_hook'`)按 `detail.cause` 出 CC 形句 —— PB1…
|
|
206
|
+
- `run-refusal-machine-reads-test.mjs`:🆕 0.96.0 CC-578(终端 [9910] ③④⑤ 包侧请托;包侧投影门三件之一):审批 / 规则拒绝结局上三件机读位 —— 规则一句:一次拒绝的成因只有一个机读位,就在那一类结局已有的位上。RF3 规则编译器拒收的码与句随报告口 `kept[]` 那一行走(`compile_refused` 行带 `code…
|
|
207
|
+
- `run-seat-recents-test.mjs`:🆕 0.96.0(CC-574;包侧投影门三件之一):座位「最近目录」两动词 + 能力位 `recents` + 唯一读法。一条规则 = 最近目录 = 会话记录行 `cwd`(有会话的目录,派生、宿主不登记)∪ 宿主登记行(用户选过的目录),读法只有 `recentFoldersOf` 一只。RC1 登记(两动词进动词…
|
|
208
|
+
- `run-seat-session-patch-test.mjs`:🆕 0.96.0(CC-634;包侧投影门三件之一):座位「会话行改名 / 置顶」一只可缺动词 `patchSession` + 入站判官 + 能力位。一条规则 = 写口只有这一只座位动词、判官只有 `checkSessionRowPatchRequest`、回执就是既有行形 `LocalSessionRecord`(…
|
|
209
|
+
- `run-seat-settings-default-model-test.mjs`:🆕 0.96.0(CC-572;包侧投影门三件之一):座位设置态不再另存缺省模型 —— 缺省模型只一口:`liveDefaultModelOf(listModels() 的结果)`。SD1 型(`SettingsState` 成员恰 engineVersion / dataRoot,TypeScript AST 读构建…
|
|
210
|
+
- `run-server-7125-pick-test.mjs`:🆕 0.96.0(服务端 7.125.0 / sdk 20 提货 + 支持底线三件同号;CC-636 + CC-633,包侧投影门三件之一;判据 §123c G-PA1 – G-PA7):R 提交幂等重放体 —— 终局读口按严格 `replay === true` 分流、读嵌套引擎结果、缺席读行状态(…
|
|
211
|
+
- `run-session-sync-file-history-test.mjs`:🆕 0.96.0 CC-408(CC-502 / CC-463 P2-c 并入;包侧投影门三件之一;实现住 `dist/sessionSyncFileHistory.js`,根入口具名转出四只运行期口):会话同步「文件历史没搬」的用户面事实 —— S 公面:四只口在根入口与叶子同一对象、在公面基线里,`NOT_FOUN…
|
|
212
|
+
- `run-standing-rows-test.mjs`:🆕 0.96.0 CC-482(包侧投影门三件之一):卡上三行放行的单一判官 `standingRowsOf(card, host?)` —— 放宽方向闭合失败:R1 卡读不出(非对象 / 读就抛)三行都不给 · R2 rememberRefused 严格 true(自有或原型链)三行都不给、候选在场也不给 · R3 …
|
|
213
|
+
- `run-tool-result-content-projection-test.mjs`:🆕 0.96.0 CC-641(包侧投影门三件之一):工具结果正文 `tool_end.output` → 转录 `tool_result.content` 的唯一投影(零 import 叶 `toolResultContent.ts`,块形照 CC 2.1.296 外来工具结果内容归一那一只)—— I 读得出的图像块…
|
|
214
|
+
- `run-user-facing-sentence-readers-test.mjs`:0.96.0 三句用户面句的读口(CC-549 / CC-584 / CC-579;包侧投影门三件之一),每格断言最终渲出来的行文本 + 键 / 降级句 / 决策句:A 服务商 400 分类 —— A0 根入口只出闭集 `PROVIDER_REJECTION_KINDS`(冻结、五词、基线同批),不出自由函数 `pro…
|
|
215
|
+
- 对上一发布产物逐字节对拍的两格改登记形(合车):`terminal-cause-projection` G-PRC6e(除 0.96.0 加性位 `kind` 外逐字节同)/ G-BD7d(除 completed.detail 位外逐字节同,被剥的恰是读作 completed 且输入 detail 带自有 kind 串的那一类);`client-core-pure` G-BG5a 登记 TaskOutput 内容形有意差分;`server-7125-pick` Z1 会话行 pinned 零读点钉改登记形(恰 `src/seatContract.ts` 一处)。
|
|
216
|
+
|
|
217
|
+
### Known limits(本版新增)
|
|
218
|
+
|
|
219
|
+
- KL-746:`runModelSwitchProbe` 在宿主端口永不落定时无自带时限(时限属宿主传输层;test 验收 [10156] G-SB60)。
|
|
220
|
+
- KL-747:变体选择符(U+FE00 – U+FE0F、U+E0100 – U+E01EF)与其余非格式类的默认可忽略码位不在字符表里 —— 一枚基字后跟一串变体选择符可夹带不可见字节;合法 emoji 呈现与异体字序列依赖它们,按语境标另立判据。
|
|
221
|
+
- KL-748:服务商 400 / 422 的 schema 细分靠本包持有的六词回声词表(服务商公开词的镜像,无实抓证据);Anthropic 家族对一切 400 报同一个通用型,分不出 schema、保持原状态档(CC-549)。
|
|
222
|
+
- KL-749:百分号解码读面只解 ASCII 转义、至多三层(与上游字面形判据的容错逐个解码同一读法):编码的非 ASCII 分隔 / 空白(全角 `=` 的 `%EF%BC%9D`、`%C2%A0`)与第四层起的编码在自由文本出口上看不见;配置地址展示口与上传判据对解不完的值按带凭据处置。
|
|
223
|
+
- KL-750:已知前缀凭据在反斜杠 / 点之后与 `file:` 地址里照旧放行(本机路径读法);反过来,`/` 之后以已知前缀打头且随机段 ≥ 16 的 POSIX 目录名本版起被遮(多遮)。
|
|
224
|
+
- KL-751:服务端 7.115.x 结构性不带 `rememberRefused` ⇒ 缺席读作「引擎没声明记不住」,`standingRowsOf` 在这一代上照给会话行 / 名单会话行;引擎实际没记住时,由作答回执的记住回显与「记住未生效」告知说真话(CC-482)。
|
|
225
|
+
- KL-752:`judgeFileHistoryTighten` 的重探没有自带时限 —— 宿主的能力探测闭包永不落定时,在飞的那一发一直占着该地址的单飞位,之后的调用都并入它、各自按自己的 `withinMs` 放弃等待并给拒句(时限属宿主传输层;与 `kickEngineCapsProbe` 的在飞位同)。
|
|
226
|
+
- KL-753:重探口复用总缓存里真起跑过的最后一只探测闭包,被幂等闸挡回的 `kickEngineCapsProbe` 不改写登记 —— 同一地址令牌轮换后客户端重建、新闭包只交给被挡回的 kick 时,「回体已落地而这一位读不成形」的重探仍调首探那只闭包(旧令牌若已失效则恒败、关了检查点的用户被拒);换新闭包的通道是两参 `invalidateEngineCaps(baseUrl, probe)`。
|
|
227
|
+
- KL-754:≤7.124.x 服务端幂等重放臂回放的无 `status` 409 冲突体,公面判别口 `activeRunBusySignal` 不再认(答 `null`,CC-685),包内判据 `frameProvesDelivery` 因此把它读成「建了 run 的帧」—— 投递账本记 delivered、文件历史绑定把提交绑到一个并未建出的 run;终局行落 `Outcome unknown` 一行。这一形只有低于支持底线(服务端 7.125.0)的服务端才发,包不为出支持范围的服务端保留过渡臂;宿主让附着门放行 ≤7.124.x 的服务端时才会碰到。
|
|
228
|
+
- KL-755:凭据标签的粘连名只认单数收尾 —— 粘连复数名(`adminTokens=` / `BOTKEYS=`)原样(计量词 `maxTokens` / `inputTokens` 与它同形不可分);`key` 收尾的英文词只排除 `monkey` 一族七词,表外的(`hotkey` 等)与以 `key` / `token` 收尾的普通驼峰名(`cacheKey: abc`)值被遮(多遮,与下划线形同类)(CC-695)。
|
|
229
|
+
- KL-756:方案词 `bearer` / `basic` 左界放开与已知前缀短形门槛(整段字母数字 ≥ 6 字)带来两类多遮(另:连字符 / 下划线分段的短 `sk-` 值不遮,与仓名不可分):词尾是 `bearer` / `basic` 的英文词后接放行表之外的词(`pallbearer carried it`);6 字以上单段字母数字的 `sk-` / `ghp_` 打头仓名 / 包名(`sk-converter`)(CC-695)。
|
|
230
|
+
- KL-757:标签值恰是诊断词闭集里的词(`none` / `null` / `basic` / `missing` …)时不遮 —— `PGPASSWORD=Basic` 的值原样,桌面端冻结的本地句式网(任何值都遮)会遮这一形(CC-695;门 NF4c 钉现状)。
|
|
231
|
+
|
|
52
232
|
## 0.95.0(2026-10-12)
|
|
53
233
|
|
|
54
234
|
> 主题:终端 1.0.147 对接版 —— 引擎 7.48 / 服务端 7.124 / 设置契约 11 / sdk 19 提货(型面 BREAKING:终态词表 / 谓词改名带属主、`absent` 退词、七条过渡臂退役);面板行归约口;能力位读器族与终态词表收口;审批成因闭集与排空期重开;审批卡跨腿持有(同一张卡只在一条腿上出);技能工具表随能力位上 wire;0.95.0 窗内欠账按票收口(各条见 Fixed / Changed)。
|