@sema-agent/client-core 0.110.0 → 0.111.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 +169 -0
- package/README.md +50 -18
- package/dist/abortableSleep.d.ts +7 -0
- package/dist/abortableSleep.js +37 -0
- package/dist/adapt/arms.js +25 -4
- package/dist/adapt/toolCards.d.ts +3 -1
- package/dist/adapt/toolCards.js +4 -2
- package/dist/adapter/activeRunSelfHeal.d.ts +39 -0
- package/dist/adapter/activeRunSelfHeal.js +171 -3
- package/dist/adapter/downstream/eventToSdkMessage.js +10 -10
- package/dist/adapter/downstream/terminalToSdkResult.d.ts +2 -0
- package/dist/adapter/downstream/terminalToSdkResult.js +11 -0
- package/dist/adapter/runStream.d.ts +5 -0
- package/dist/adapter/runStream.js +15 -3
- package/dist/attachmentRoute.d.ts +20 -0
- package/dist/attachmentRoute.js +39 -0
- package/dist/attachmentsWireCaps.js +1 -1
- package/dist/builtinOutputStyles.d.ts +12 -0
- package/dist/builtinOutputStyles.js +147 -0
- package/dist/compactionStatus.d.ts +9 -0
- package/dist/compactionStatus.js +29 -5
- package/dist/controlRouter.js +2 -1
- package/dist/coreValuePorts.d.ts +39 -1
- package/dist/coreValuePorts.js +10 -0
- package/dist/displayUntrusted.d.ts +1 -0
- package/dist/displayUntrusted.js +6 -0
- package/dist/engineHealthFacts.d.ts +11 -0
- package/dist/engineHealthFacts.js +21 -0
- package/dist/engineHealthProbeVerdict.d.ts +23 -0
- package/dist/engineHealthProbeVerdict.js +115 -0
- package/dist/engineNoticeCodes.js +5 -7
- package/dist/engineRepoint.d.ts +12 -5
- package/dist/engineRepoint.js +44 -19
- package/dist/engineRowRef.d.ts +3 -0
- package/dist/engineRowRef.js +11 -1
- package/dist/engineSwapCrossing.d.ts +57 -0
- package/dist/engineSwapCrossing.js +297 -0
- package/dist/engineUnavailable.d.ts +44 -0
- package/dist/engineUnavailable.js +492 -0
- package/dist/eventLeg.js +3 -3
- package/dist/generated/sdkFactTables.d.ts +1 -1
- package/dist/generated/sdkFactTables.js +1 -0
- package/dist/generated/settingsSchemaTables.d.ts +4 -0
- package/dist/generated/settingsSchemaTables.js +1 -0
- package/dist/hitl/approvalDelivery.d.ts +1 -0
- package/dist/hitl/approvalDelivery.js +1 -1
- package/dist/hitl/approvalResolution.d.ts +1 -1
- package/dist/hitl/approvalResolution.js +2 -1
- package/dist/hitl/askGateWire.js +5 -6
- package/dist/hitl/decisionRefusal.d.ts +2 -0
- package/dist/hitl/decisionRefusal.js +7 -8
- package/dist/hitl/decisionRefusalCarrier.d.ts +3 -0
- package/dist/hitl/decisionRefusalCarrier.js +348 -0
- package/dist/hitl/decisionSend.d.ts +7 -0
- package/dist/hitl/decisionSend.js +34 -12
- package/dist/hitl/editedApprovalAcceptance.js +1 -1
- package/dist/hitl/elicitationRefusal.d.ts +4 -0
- package/dist/hitl/elicitationRefusal.js +23 -0
- package/dist/hitl/frameRouter.d.ts +2 -2
- package/dist/hitl/frameRouter.js +8 -15
- package/dist/hitl/gateIdentity.d.ts +5 -0
- package/dist/hitl/gateIdentity.js +23 -0
- package/dist/hitl/hitlBridge.d.ts +6 -0
- package/dist/hitl/hitlBridge.js +10 -4
- package/dist/hitl/hitlHostSurface.d.ts +2 -1
- package/dist/hitl/hitlHostSurface.js +7 -2
- package/dist/hitl/localAllowRedemption.d.ts +67 -0
- package/dist/hitl/localAllowRedemption.js +256 -0
- package/dist/hitl/parkResolver.js +7 -4
- package/dist/hitl/persistedRulesWire.d.ts +16 -0
- package/dist/hitl/persistedRulesWire.js +70 -0
- package/dist/hitl/planReviewWire.d.ts +3 -0
- package/dist/hitl/planReviewWire.js +23 -6
- package/dist/hitl/policyDenyCause.d.ts +1 -1
- package/dist/hitl/policyDenyCause.js +1 -1
- package/dist/hitl/resumeRunningCard.d.ts +1 -0
- package/dist/hitl/resumeRunningCard.js +1 -0
- package/dist/hitl/screenCardCarriers.d.ts +15 -0
- package/dist/hitl/screenCardCarriers.js +41 -0
- package/dist/hitl/screenDecisionCards.d.ts +98 -0
- package/dist/hitl/screenDecisionCards.js +362 -0
- package/dist/hitl/standingRows.d.ts +3 -1
- package/dist/hitl/standingRows.js +18 -0
- package/dist/hitl/toolApprovalWire.d.ts +30 -8
- package/dist/hitl/toolApprovalWire.js +264 -121
- package/dist/hooksWireCaps.js +3 -3
- package/dist/hostSettingNoticeArm.d.ts +3 -0
- package/dist/hostSettingNoticeArm.js +12 -0
- package/dist/hostTurnSettings.d.ts +3 -0
- package/dist/hostTurnSettings.js +38 -5
- package/dist/humanTurnRead.js +11 -1
- package/dist/i18n/messages.en.d.ts +129 -0
- package/dist/i18n/messages.en.js +135 -7
- package/dist/i18n/messages.zh.js +142 -6
- package/dist/i18n/translate.d.ts +3 -0
- package/dist/i18n/translate.js +78 -10
- package/dist/i18n/zh.d.ts +1 -0
- package/dist/i18n/zh.js +1 -0
- package/dist/index.d.ts +43 -17
- package/dist/index.js +30 -12
- package/dist/interactiveHalt.js +2 -1
- package/dist/interactiveInterrupt.js +20 -2
- package/dist/liveModelCatalog.js +2 -2
- package/dist/localEngineSeatReading.d.ts +2 -2
- package/dist/localEngineSeatReading.js +5 -3
- package/dist/localEngineSpawn.d.ts +0 -7
- package/dist/localEngineSpawn.js +0 -92
- package/dist/localEngineStep.d.ts +2 -2
- package/dist/localEngineStep.js +2 -0
- package/dist/mcpReconnect.js +3 -3
- package/dist/mcpWireCaps.js +1 -1
- package/dist/model/engineModelWords.d.ts +3 -0
- package/dist/model/engineModelWords.js +13 -0
- package/dist/model/subagentModelWord.d.ts +21 -2
- package/dist/model/subagentModelWord.js +100 -29
- package/dist/modelCapabilityProbe.js +3 -40
- package/dist/notifications.d.ts +19 -0
- package/dist/notifications.js +114 -12
- package/dist/ownKey.d.ts +6 -0
- package/dist/ownKey.js +31 -0
- package/dist/pendingUserRow.d.ts +4 -0
- package/dist/pendingUserRow.js +16 -0
- package/dist/permissionsDeclaration.d.ts +1 -0
- package/dist/permissionsDeclaration.js +11 -1
- package/dist/planReviewCardFacts.d.ts +3 -0
- package/dist/planReviewCardFacts.js +52 -2
- package/dist/pluginHooksWire.d.ts +9 -1
- package/dist/pluginHooksWire.js +40 -6
- package/dist/printToolResultFrame.js +4 -2
- package/dist/promptBlockedCopy.js +11 -6
- package/dist/promptSuggestionBatch.d.ts +7 -0
- package/dist/promptSuggestionBatch.js +9 -0
- package/dist/promptSuggestionsTail.d.ts +39 -0
- package/dist/promptSuggestionsTail.js +116 -0
- package/dist/request/taskRequest.js +10 -6
- package/dist/requestCoordinate.d.ts +1 -0
- package/dist/requestCoordinate.js +13 -0
- package/dist/rewindArchiveReading.js +4 -4
- package/dist/runCancelContext.d.ts +2 -1
- package/dist/runCancelContext.js +1 -0
- package/dist/runPermissionModeSwitch.js +2 -2
- package/dist/scenarioRefusal.js +11 -13
- package/dist/scenarioSkills.js +11 -6
- package/dist/seam.d.ts +16 -2
- package/dist/seam.js +10 -0
- package/dist/seatContract.d.ts +109 -9
- package/dist/seatContract.js +218 -15
- package/dist/sessionCostReading.d.ts +70 -0
- package/dist/sessionCostReading.js +150 -0
- package/dist/sessionHooksRoster.d.ts +4 -0
- package/dist/sessionHooksRoster.js +158 -0
- package/dist/sessionMemoryStatus.js +2 -2
- package/dist/sessionReadRedaction.d.ts +7 -0
- package/dist/sessionReadRedaction.js +26 -0
- package/dist/sessionSyncFileHistory.js +8 -9
- package/dist/settingsHooksSalvage.js +2 -1
- package/dist/sseIdleTriage.js +2 -1
- package/dist/storeDurabilityWord.d.ts +15 -0
- package/dist/storeDurabilityWord.js +18 -0
- package/dist/storePostureCapability.d.ts +7 -3
- package/dist/storePostureCapability.js +69 -39
- package/dist/subagent/engineSubagentResume.js +2 -2
- package/dist/subagent/engineSubagentTail.js +2 -1
- package/dist/subagentContentStore.d.ts +11 -0
- package/dist/subagentContentStore.js +28 -2
- package/dist/toolResult.d.ts +1 -0
- package/dist/toolResult.js +2 -0
- package/dist/userAttachmentEnvelope.d.ts +2 -1
- package/dist/userAttachmentEnvelope.js +10 -0
- package/dist/wireErrorTriage.js +2 -1
- package/dist/wireFailureShape.d.ts +4 -0
- package/dist/wireFailureShape.js +141 -19
- package/dist/wireRefusalCopy.d.ts +6 -5
- package/dist/wireRefusalCopy.js +49 -92
- package/docs/INTEGRATION-CLIENTS.md +2118 -17
- package/package.json +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -49,6 +49,175 @@
|
|
|
49
49
|
> 挡住 ⇒ 本批把它机械化——④a0 对 `pending` 行**要求段头已是日期形**(`(未发布)` 直接红),阶段一
|
|
50
50
|
> commit 漏转在发布前就红,不再靠人记。
|
|
51
51
|
|
|
52
|
+
## 0.111.0(2026-11-09)
|
|
53
|
+
|
|
54
|
+
> 主题:中文消息目录改住子路径 `./i18n/zh`、根入口不再带中文表;宿主在装配根 `installMessageCatalog('zh', ZH_MESSAGES)` 一次(CC-1357;接入文档 **§140 EX-1 – EX-6**;🔴 型面 BREAKING:根入口退出 `ZH_MESSAGES`;行为变:未装中文目录的宿主渲 `'zh'` 得英文)‖ 包入口闭集收成一张登记表,B0 单例定论(CC-1022;**§140 EX-7**;零行为变) ‖ 座位契约两件 —— Quick Entry 快捷键读写动词 + 会话 hooks 名册只读动词(CC-1369;接入文档 **§140 QE-1 – QE-6 / HR-1 – HR-8**) ‖ 子代理模型词:代理准入判官 `subagentModelAdmissionOf` · 准入拒那一句 `subagentModelAdmissionLine` · 调用层当场拒那一句 `subagentModelCallRefusalReason` · 读数 `default` 一类 · 宿主断言词 `reads-this-config` · 引擎词表一张(CC-1362;接入文档 **§140 AM-1 – AM-7**;型面加性 + 型面加宽〔读数类别 +1〕+ 行为变:`default` 规范拼写、受理判官 `best` 说不清) ‖ 「永不抛」的抛出物字段读口上根入口 `thrownSlotOf` / `errnoCode`(CC-1370;接入文档 **§140 TS-1 – TS-4**;型面加性:根入口运行期 +2)‖ 场景卡技能清单能力位读器的读数改为模块级冻结单例,与根入口全部 `observed*` 读口同律(CC-1355;**§140 SC-1 / SC-2**;读数形零变)‖ `-p` 车道「托管策略还没拿到,allow 规则这一发没送」那一句按拉取态分三形(CC-1372;**§140 PK-1 – PK-5**;🔴 行为变:文字 —— 旧调用方不给拉取态位 ⇒ 得保守句,不再是原句) ‖ 人拒带说明位:工具结果行信封位 `_sema_refusal_noted` / 读口第五位 `refusalNoted` + 子代内容槽拒绝分类词与说明位(CC-1380 / CC-1381;接入文档 **§140 RN-1 – RN-6**;型面加性 + 行为变) ‖ 用户附件这一件怎么走 —— 唯一判官 attachmentRouteOf(工具相对这台机器在哪 × 附件腿 ⇒ 照附 / 照附带来源句 / 不附两因)、不附两因进「没带上」原因闭集、用户面原因句两语与来源句(CC-1389;接入文档 **§140 AR-1 – AR-6**;型面加性:根入口运行期 +5、型 +5;原因闭集加宽) ‖ 屏上决定卡的三个事实 —— 卡种 / 门实例身份 / 来源代,每种载体一只读口(CC-1373 / CC-1375;接入文档 **§140 SQ-1 – SQ-4**;加性) ‖ 换代两拍一只判官 `engineGenerationCardPlan` + 到期判定 + 金样(CC-1374;**§140 SQ-5 – SQ-7**;加性) ‖ 引擎决定判定 `screenCardsHoldEngineDecision`(CC-1375;**§140 SQ-8**;加性) ‖ 内置输出风格表下沉进包(CC-1340;接入文档 **§140 BO**;加性)‖ 排队用户行 `pending-<uuid>` 行形归包(CC-1337;接入文档 **§140 PU**;加性)‖ 停驻行卡 `parkRow.taskId` 退役(CC-1348;接入文档 **§140 CP**;🔴 型面 BREAKING,0.110.0 已预告)‖ 展示出口 query 区标签裸值止点成文句收口(CC-1300;接入文档 **§140 DQ**;字节不变) ‖ 「不再询问」本地落规则档兑付契约(LA;加性 + 行为变 + 🔴 型面 BREAKING 窄) ‖ 计划审阅卡卡事实的证据代 `evidenceRevision` + 过期卡判官 `planReviewEvidenceMovedOf`(CC-1400;接入文档 **§140 EG-1 – EG-4**;加性) ‖ 失败通知的原因位 `error` 两条来路一事一源(CC-1407;**§140 WF2-1 – WF2-3**;行为变:推送来路事实位多 `error`) ‖ 外来说明文本的封长规则只剩一份、量与引擎同(CC-1409;**§140 TR-1 – TR-3**;行为变:截断处整段多一码元) ‖ workflow 完成的取件位补充(CC-1422;**§140 WD-1 – WD-5**;行为变:轮询先交时,同一次完成带取件位的补投帧补一件取件位通知) ‖ 耐久审批门通告事实读口的来源词 `source` 改与成因词 `cause` 同形的开集读法(CC-1356;接入文档 **§140 NC-1 – NC-3**) ‖ 会话成本读口 `sessionCostReadingOf` · 分叉种子 `forkSeedCostOf` · 逐轮读数 `turnCostReadingOf` / `runCostSettlementOf` · 值级端口第二十六 / 二十七件 `accountRowOfResult` / `foldAccount`(CC-1008 A 件;接入文档 **§140 CO-1 – CO-8**;🔴 型面 BREAKING:完整型端口袋 +2 必填成员) ‖ 记忆暴露通告开头句回到平话(CC-1456;接入文档 **§140 MP-1**;行为变:文字) ‖ `settings.env` 随最终 hooks 重算,补入条目点名的名补上(CC-1421;**§140 HE-1 – HE-3**;🔴 行为变:139-HE-10 成文改口) ‖ 引擎改指口列表口工厂形 + 连续性证据绑地址对 + 接线错不可重试(CC-1408;**§140 RP3-1 – RP3-3**;🔴 型面 BREAKING) ‖ 交易句随界面语言(**§140 MR2-1**;行为变:文字)
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
- **子路径入口 `@sema-agent/client-core/i18n/zh`**(CC-1357;**§140 EX-1**):运行期恰一名 `ZH_MESSAGES`(冻结中文消息目录,与此前根入口交出的是同一张表)。纯数据入口:零状态、零外向依赖、闭包与根入口不相交。
|
|
58
|
+
- **`installMessageCatalog(lang, catalog)` + 型 `MessageCatalogInstallOutcome`**(CC-1357;**§140 EX-2 / EX-3**;根入口运行期 +1、型 +1;公面导出计数不变 2228 → 2228〔−1 +1〕):宿主在装配根装一种非内置界面语言的目录;结局闭集 `installed` / `built_in` / `unknown_language` / `not_a_catalog` / `conflict`。装入即快照(只取自有数据位上、键在英文目录里的串;取值器不执行;宿主事后改原表不影响出句);同一只目录再装幂等,另一只 ⇒ `conflict`(先装者有效)。永不抛。
|
|
59
|
+
- **MCP 表单问「此处呈现不了、已拒」一句 `elicitationRefusedLine(frame, outcome, lang?)`**(CC-1363;**§140 ED-1 – ED-3**;型面加性:根入口运行期 +1、型 0;消息目录新域 `mcp`,两键 `mcp.elicitation.refused.named` / `.unnamed`):宿主呈现不了 MCP 服务器经引擎发来的表单(`elicitation` 开问帧),当拍经 `sendHitlDecision` 回 `{ action: 'decline' }`,且回绝生效(结局 `applied`)⇒ 一句(en / zh 同键):说「此处呈现不了这张表单,所以拒了」,不说用户拒绝;服务器名经展示出口画成单行、封长;名字说不出 ⇒ 无名那一句。别的结局(`settled_elsewhere` / `not_applied` / `unconfirmed` / `not_sent`)、收尾帧、别族结局、坏形 ⇒ `undefined`。何时出句由本口判,宿主只交帧与结局。
|
|
60
|
+
- **Quick Entry 快捷键:座位动词 `getQuickEntryShortcut()` / `setQuickEntryShortcut(next)` · 能力位 `quickEntryShortcut` · 前置判法 `planSetQuickEntryShortcut(request)` · 闭集 `QUICK_ENTRY_SHORTCUT_REFUSAL_REASONS` / `QUICK_ENTRY_SHORTCUT_FAILURES` · 型 `QuickEntryShortcut` / `QuickEntryShortcutState` / `SetQuickEntryShortcutResult` / `SetQuickEntryShortcutPlan`**(CC-1369;**§140 QE-1 – QE-4**;🔴 型面 BREAKING(窄):`LocalSessionsApi` 多两只成员、能力名闭集多一词;根入口运行期 +3):宿主的 Quick Entry 全局快捷键此前只有宿主菜单能改、只能选预设,渲染端没有读写口。现势三键 —— `saved`(`"off"` 或一枚键)/ `active`(此刻真注册着的键,没有 ⇒ `null`,不是空串)/ `savedFailure`(存的那枚键为什么没注册上);写口被拒是回执不是异常:`{ ok: false, reason, state }`,拒因四词 `invalid-request` / `invalid-accelerator` / `registration-failed`(系统拒注册或回读不在,含被别的应用占用)/ `write-failed`,旧键原样留着,回执带现势;出站门拒「成功却挂着注册失败」的假成功,拒「关着却说注册失败」「注册着却说失败」两种自相矛盾的现势。浏览器 lane / 终端不报能力位 ⇒ 不渲录制器。
|
|
61
|
+
- **会话 hooks 名册:座位动词 `readSessionHooksRoster(sessionId)` · 能力位 `hooksRoster` · 唯一投影口 `sessionHooksRosterOf(plan)` · 闭集 `SESSION_HOOKS_ROSTER_STATUSES` / `HOOK_ENTRY_TYPE_WORDS` · 型 `SessionHooksRoster` / `SessionHooksRosterRow` / `SessionHooksRosterLayer` / `SessionHooksRosterHttpRow` / `SessionHooksRosterStatus` / `SessionHooksRosterEvent` / `HookEntryTypeWord`**(CC-1369;**§140 HR-1 – HR-6**;🔴 型面 BREAKING(窄):`LocalSessionsApi` 多一只成员、能力名闭集多一词;根入口运行期 +3;目录 +2 键):名册 = 组回合用的同一份 hooks 计划在设置来源平面的逐行投影 —— 每行 来源层 / 事件 / 组下标 / 条下标 / 条目型 / 状态(`engine` / `shell` / `not_run`)/ 理由词,另有逐层结局(剔了件 / 整份拒 / 信任扣下)与被 http 名单动过的条目;名册里每个串都是闭集词,命令串、url、用户写的键名都进不来。座位宿主读的那一拍按下一拍装配回合的同一只计划口现算计划交投影口(没有这只会话 ⇒ `unarmed`;计划读不成 ⇒ `unreadable`);浏览器 lane 的服务端对同一份计划调同一只投影口 —— 两条 lane 一份读数。
|
|
62
|
+
- **代理准入判官 `subagentModelAdmissionOf({ word, liveCatalog?, local? })` + 型 `SubagentModelAdmission`**(CC-1362;**§140 AM-1**;根入口运行期 +1、型 +1):问的是「带着词读数交出去的那个词的一条 `agents[]`,这台引擎的代理准入收不收」。入参与 `resolveSubagentModelWord` 同一只、内部走同一份词读数(不另解析词);交出去的那个词交唯一受理判官 `modelAcceptanceOf` 按 `liveCatalog` 判(不另判目录)。代理面与主模型选择面只差两处:部署的 @ 名单不挡代理(`not_at_mentionable` ⇒ 收);引擎词表词(档位词 / CC 档位别名 / `best` / `default`)不在受理面 ⇒ `refused{not_served}`(别的词 ⇒ `refused{not_listed}`;目录明说停用 ⇒ `refused{disabled}`)。读数不带 `model`(`inherit` / 多义 / 落不了点)⇒ `accepted{not_sent}`;没有这台引擎报的目录 ⇒ `unknown{catalog_absent}`(本机池不是受理面;读不出 ≠ 拒);目录读不出 / 读法丢过行 / 不带受理面而词是词表词 ⇒ `unknown`(成因同受理判官)。冻结、永不抛、取值器不执行。
|
|
63
|
+
- **准入拒那一句 `subagentModelAdmissionLine(word, admission, lang?)`**(CC-1362;**§140 AM-2**;根入口运行期 +1;目录 +3 键 `model.subagent.refused.*`):三因各一句(en / zh),点名用户写的词、说「这个代理不随请求发出」与出路;只在 `refused` 出句,其余 ⇒ `undefined`。句子的「不随请求发出」是宿主照读数剔掉那一条之后的事实 —— 宿主没剔就不要渲。
|
|
64
|
+
- **调用层当场拒那一句 `subagentModelCallRefusalReason(word, reading, lang?)`**(CC-1362;**§140 AM-3**;根入口运行期 +1;目录 +4 键 `model.subagent.call.*`):调用参这一层落不了点 / 多义时拒绝执行的那一句,四因(多义 · 档位层惰性 · 链上无绑定 · 绑定不在目录)各一句,档位两因点名档位(读数的 `label`,CC 别名已翻成档位词);与 `subagentModelWordProblemLine`(fail-soft 那一句)同一只成因分类器。句子不带宿主命令名、不带合法词表。
|
|
65
|
+
- **宿主断言词 `'reads-this-config'`**(CC-1362;**§140 AM-5**;型面加宽:`SubagentModelLocalEngine.engine` 可取两词):说的是本包依赖的那一件事 —— 连着的引擎读的就是 `tiers` / `pool` 取自的那份配置(本配置根的本机引擎,不论哪一端起的;起来时的配置源就是这两张表的配置源)。
|
|
66
|
+
- **`thrownSlotOf(err, name, kind?)` + `errnoCode(e)` 上根入口**(CC-1370;**§140 TS-1 – TS-3**;型面加性:根入口运行期 +2、型 0):抛出物字段读法此前住在包内,终端壳各写自己的一份(失败留痕与重连两处各一份字段读口、`errnoCode` 副本若干)。`thrownSlotOf` 是包内受保护读口的薄包装,档位 `kind`:缺省 `[[Get]]` 沿原型链读(内建 `Error` 的 `name` 在原型上);`true` 只认自有键;`'data'` 只认自有数据位(取值器不执行、原型链上的同名位与 `Object.prototype` 污染不算)。永不抛;**字段缺席与读不出(取值器 / 代理陷阱抛、已撤销的代理、入参 `null` / `undefined`)一律 `undefined`**,读数可直接 `??` 兜缺省、可直接插进模板串;用作串 / 数前先 `typeof` 窄型。入参 / 读数写 `{} | null | undefined`(catch 里的 `unknown` 可直接传)。包内口与它的「读不出」私有哨兵不上公面。`errnoCode(e)` 是 `code` 位的固定调法:自有数据位的非空串 ⇒ 该串,其余一律 `undefined`。
|
|
67
|
+
- **引擎此刻服务不了这一会话:一行 `engineUnavailableLine(facts, lane, lang?)` + 臂闭集 `ENGINE_UNAVAILABLE_REASONS`(八词)+ 安装形闭集 `ENGINE_INSTALL_SHAPES`(六词)+ 拒码表 `ENGINE_BOOT_REFUSAL_CODES` + 专码 `ENGINE_UNAVAILABLE_EXIT_CODE = 69`**(CC-1378;**§140 EU-1 – EU-7**;型面加性:根入口运行期 +5〔公面导出 2232 → 2237〕、型 +7 `EngineUnavailableReason` / `EngineBootRefusalReason` / `EngineInstallShape` / `EngineBootRefusalForm` / `EngineDataRootVariant` / `EngineBootWayOut` / `EngineUnavailableFacts`):
|
|
68
|
+
「引擎为什么不在、端说哪一行、出路是什么、重试有没有用、headless 退什么码」修前各端各判一份(文本识别器各写各的、出路各配各的)。现在一行由本包出:机读前缀 `[sema] engine-fatal · reason=<码|臂> engine_exit=<n|none> engine_signal=<名|none>`(两语逐字同;读不出的位渲 `none`,不折 0)+ 头半句 + 详情 + 出路;
|
|
69
|
+
拒因认出了臂 ⇒ 它的臂与引擎原话赢(宿主一句不再另拼);车道只用既有三词 `interactive` / `print` / `utility`,只改重试短语(`print`:「run the command again」);两只「拒用」臂不附出路。专码与 `RESUME_RUNNING_NO_UI_EXIT_CODE`(75)并排。
|
|
70
|
+
- **自愈腿「发起这一笔的对话还在不在屏上」一只宿主口 `ActiveRunSelfHealDeps.stillHere?: () => boolean | undefined` + 唯一读法 `conversationLeftOf(deps)` → 三态 `ConversationPresence`(`'here' | 'left' | 'unconfirmed'`)**(CC-1379;**§140 CL-1 / CL-2**;型面加性:根入口运行期 +1、型 +1):宿主答「发起这一笔的那个对话还是屏上这一个吗」(典型实现:进入那一拍记下的对话 id 与此刻屏上的比)。严格 `true` ⇒ here、严格 `false` ⇒ left;交了口却答 `undefined` / 非布尔 / 读口抛 ⇒ unconfirmed(扣发:误投到别的对话比不发更坏);口缺席 / 不是函数 ⇒ here(与修前逐字节同)。本包三处读点(自愈出口 / 留批等待 / 结束那条 run 的离开句判)与宿主都经这一只读法。
|
|
71
|
+
- **结局臂 `resend-withheld-left` / `resend-withheld-unconfirmed`(都是 `{ kind; taskId; releaseConfirmedByEngine?: true }`)**(CC-1379;**§140 CL-3**;🔴 型面 BREAKING〔窄〕:`SelfHealOutcome` 联合 +2 成员,对它穷举 `switch` 且无默认臂的宿主编译红一次):释放已在原对话里成立、本该把被拒的那条重发,但宿主答发起它的对话已离开(left)/ 答不清(unconfirmed)⇒ 不重发。处置都是 `not-delivered`(宿主的重发闸只读 `selfHealSubmissionDisposition`,自然不发)、续听意图 `null`;已离开那臂按释放证据分两句(用户形 / 注入形各二),说不清那臂各一句、只说「确认不了、没发」不说「已离开」(注入族事实表 +3)。
|
|
72
|
+
- **留批等待归包 `waitForInjectedResubmit(outcome, deps)` → `'resubmit' | 'gave-up' | 'left' | 'unconfirmed'`**(CC-1379;**§140 CL-4**;根入口运行期 +1、型 +2 `InjectedResubmitWaitDeps` / `InjectedResubmitWaitVerdict`):`injected-deferred` 之后「等占着会话的那条 run 停下」的编排。`deps` 的 `sessionId` / `stillHere` 就是自愈腿 deps 的那两位(宿主原样展开交进来);读口每轮现取;放行仍只问 `injectedResubmitAfter`;离开 / 说不清先于放行判;`unconfirmed` 与 `left` 同样不重提,但宿主上屏注入形「确认不了」那一句;永不抛。
|
|
73
|
+
- **结束那条 run 期间对话已离开的六类:型 `ConversationLeftStopResult` + 映射 `conversationLeftStopResultOf(outcome)` + 句口 `conversationLeftStopRow(result, taskId, copy?, lang?)`**(CC-1379;**§140 CL-5 / CL-6**;根入口运行期 +2、型 +1;消息目录本票合计 +14 键):宿主的结束命令驱动自愈腿期间换了对话(读法答 `left`;`unconfirmed` 用常规结局句)⇒ 结局按那个对话说(没动它 / 在等你的决定 / 已结束 / 早已结束 / 引擎拒了 / 证不出已放开);「结束那条 run」半句走既有结束出口槽 `endRun`。
|
|
74
|
+
- **工具结果行人拒带说明位 `_sema_refusal_noted`(值恒 `true`,present-iff)+ 读口第五位 `ToolResultRowFlags.refusalNoted` + 键名常量 `SEMA_REFUSAL_NOTED_KEY`**(CC-1380;**§140 RN-1 – RN-3**;型面加性:根入口运行期 +1〔公面导出 +1〕、`ToolResultRowFlags` 多一只必在成员):人在审批卡上拒了这只调用、并附了说明时,引擎把说明记进门记录(`settlement.note`),这一轮按说明继续;没附说明的是裸拒。交互转录行与 `-p` 工具结果帧经同一只行铸口带上这一位,读法只有 `toolResultRowFlagsOf(row).refusalNoted`。落位条件全在同一行上读:分类词 `_sema_denial_kind` 是 `user-rejected` ∧ 门记录 `_sema_gate` 是一次人的拒绝(处置拒、层名 `ask_resolution`、结算 `human_refused`)∧ 说明非空串(空串 / 非串当没写;只含空白仍是说明)。位在场时同一行分类词恒为 `user-rejected`,端不必再合取。键名进 `TRANSCRIPT_ROW_SIDECAR_KEYS`(按白名单重建行的端零改码)。
|
|
75
|
+
- **子代内容事件 / 账本卡 / 查看态槽位多两只可选位 `denialKind?: CcToolDenialKind` · `refusalNoted?: true`**(CC-1381;**§140 RN-4 – RN-6**;型面加性;座位载体 `subagentContent` 的闭形 +2 位):子代的 `tool_end` 此前不带门记录进槽,人拒的卡在子代查看态画成普通执行错误。现在投影口带上这次拒绝的分类词(与主转录同一只读器、同一闭集七词)与人拒带说明位(与主转录同一只判据);活体流、后台子代尾随流、重放三条路同一只投影;后到的更新收口按同一条替换律摘掉 / 换上。座位出站门只收闭集内的词与字面 `true`。
|
|
76
|
+
- Tool-permission receipts can say "not known". `respondToToolPermission` receipts gain an `unconfirmed` slot `{ cause }` for a host that got no verdict for the user's decision (no reply in time, a dropped connection, a server error, a local error, a cancelled send, a resend that found the request no longer waiting, or a pending-request list that could not be read when the receipt was settled); it always comes with `ok: false`. The cause words are the package's existing words for a decision with no verdict plus `registry_unreadable`. New `readToolPermissionAckState(ack)` reads a receipt as applied, not applied or unconfirmed; `toolPermissionUnconfirmedLine(ack, lang?)` gives the unconfirmed sentence in both interface languages (the after-resend cause reuses the existing sentence); `toolPermissionUnconfirmedOf(thrown, signal?)` turns a thrown decision error into the slot with the same classification the decision sender uses and returns nothing when the engine gave a verdict. New types `ToolPermissionUnconfirmed`, `ToolPermissionUnconfirmedCause`, `ToolPermissionAckSettled`, `ToolPermissionAckUnconfirmed`, `ToolPermissionAckState`.
|
|
77
|
+
- **停 / 换本机引擎之前的一判 `engineSwapCrossingVerdict(facts)` · 可排空态回落读口 `parkedToolApprovalsBySession(emission)` · 类闭集 `ENGINE_DRAIN_CLASSES` · 两语句口 `engineSwapCrossingText(verdict, lane, upgrade, lang?)`**(CC-1386;**§140 SX-1 – SX-6**;型面加性:根入口运行期 +4、型 +6;目录 +16 键):任何一端要停掉在跑的本机引擎(换代、重启、配置或凭据变了、引擎不答)之前问这一只判口。在跑引擎比本端新吗,只读本机引擎判官的判词,不再比一次版本:更新的在跑引擎**永不被停**,用户确认也不改(新版本胜、不降级)。本端更新时,在跑引擎上还在等的、换版后可能续不了的活(本版一类:还续得了的工具审批停驻行,按会话计)读到计数 > 0 或这一次读不出 ⇒ 先不换;引擎根本报不出的一类只列出、不单独拦。方向判不出 ⇒ 不自动换。拦截态带事实指纹,用户确认时宿主交回他看到的那一份,指纹相等才放行(多一张卡、换了一台引擎实例 ⇒ 重新问),放行后换并告知可能续不了什么。回落读口读审批订阅口的发射物原样:只计审批决断腿上、引擎判决缺席或 ok 的行,读不全一律 `failed`,不折 0。取值器不执行、敌意入参不抛。
|
|
78
|
+
- `### Added` 条:**「这一件用户附件怎么走」的唯一判官 `attachmentRouteOf({ leg, toolsLocation })` + 闭集 `ATTACHMENT_ROUTE_LEGS`(`at_mention` / `edited_file` / `paste` / `ide_selection`)/ `TOOLS_LOCATIONS`(`this-machine` / `elsewhere` / `unconfirmed`)+ 用户面原因句口 `attachmentWithheldReasonText(reason, lang?)` + 来源句 `attachmentLocalCopyNote()`**(CC-1389;**§140 AR-1 – AR-4**;型面加性:根入口运行期 +5、型 +5 `AttachmentRoute` / `AttachmentRouteFacts` / `AttachmentRouteLeg` / `AttachmentWithheldReason` / `ToolsLocation`):工作区文件的内容只有在工具读写的就是这台机器上的文件时才从这台机器读了交给模型;工具不在这台机器(`elsewhere`)或确认不了(`unconfirmed`,连着远端引擎时恒是这一词)时,`@` 提及的路径不读、每只一条「没带上」,原因 `tools-elsewhere` / `tools-location-unconfirmed`(「没带上」原因闭集加两词,信封模型面子句与用户面原因同出消息目录、两面同一原因词);编辑过的文件整只不跑;用户粘贴与编辑器选区照附,模型面同条带一句「这是客户端所在机器上的那份」。读不出的位置一律当确认不了(不折成本机、不说成确知在别处),取值器不执行,永不抛。
|
|
79
|
+
- `_sema_planReviewOutcome` (the machine-readable slot on a plan-review outcome) gains an optional `questionId`: the id of the card that was answered, byte for byte the id the card frame and the `plan_review_park` event carry. It is present only when the decision came through the package's own answer paths (the armed card and the reopened card's default delivery); a decision handed to `decidePlanReview` by the host carries none, and an absent id means "not known", never "no card". The id of the gated `ExitPlanMode` call is not available at this point and is not carried. (CC-1384)
|
|
80
|
+
- Chrome event `resupply_truncated` and `resupplyTruncatedSentence(facts, lang?)`: a resupplied `task_notification` or `workflow_complete` frame that the server sent in its minimal form (`payloadTruncated { bytes, droppedKeys }`, server 7.147.0 and later) now produces one event with `source`, `taskId` (the run id for a workflow), `bytes` (the size of the full form), `droppedKeys`, and one sentence in the interface language saying that the notice was shortened, how large the full record is (over the notice size limit), how many fields were left out, and that the full content can still be viewed in the run record. For a task notification the event comes before the transcript row; for a workflow completion it comes after the enqueue event, so a consumer that stops reading at the event has already been handed the completion. An absent mark says nothing; a malformed mark (a byte count that is not a positive integer, a key list that is empty, over 256 entries, or holds anything but non-empty names) is dropped as a whole. The seat vocabulary grows from nineteen to twenty words (the new word last); a host that switches exhaustively over `ChromeEventKind` fails to compile once. (CC-1385)
|
|
81
|
+
- **新读口 `ccImportSkippedRowsOf(skipped)`:导入预览 `skipped[]` 的呈现读**(CC-1365;**§140 CS-1 – CS-7**;加性):三端此前各写一份「按原因分组」。现包里一只读口:`skipped` → `{ shape: 'absent' | 'malformed' | 'read', groups, unreadable }`。分组 = `{ entries, reason, code? }[]`,按引擎原话**逐字节**分组(不归一化)· 组序与条目序 = 引擎序 · `code` 在场才带(读法 = `classifySkippedReason`)· 条目与原话过显示口(`displayUntrusted`)。三态:没带(`absent`)· 在场而整体读不成(`malformed`)· 数组(`read`);数组里读不出的元素**只计进 `unreadable`**,不猜、不补、不折成「没有」、不进任何组(空数组 ⇒ `read` + `[]` + 0;全坏数组 ⇒ `read` + `[]` + n)。取值器不执行;结果冻结;永不抛。公面 +1 值名(`ccImportSkippedRowsOf`)+ 2 型(`CcImportSkippedGroup` / `CcImportSkippedReading`)。
|
|
82
|
+
- **屏上决定卡的门实例身份与来源代随卡**(CC-1373;**§140 SQ-1 – SQ-4**;型面加性:根入口运行期 +3〔`questionFrameGateOf` · `approvalCardGateOf` · `questionFrameSourceGenerationOf`〕、型 +1 `ScreenCardGate`;既有型加可选位:`ApprovalCardRequest.sourceGeneration` · `AskGateWireDeps.engineGeneration` · `FsApprovalWireDeps.engineGeneration` · `surfaceToolApprovalFrameAndRespond` 第六参 `run.sourceGeneration`):门实例身份是判别联合 —— 工具门 `{ kind: 'tool', taskId, gatedCallId }`(停驻行所属 run + 行上被门住的调用)、计划门 `{ kind: 'plan', taskId, checkpointId? }`。停驻问卡的问答帧多带超集键 `_sema_parkGate`(两位都读得出才落),读口 `questionFrameGateOf(frame)`:停驻问卡读这一键、计划审阅卡读既有 `_sema_planReview`(不另铸),两键并存 / 坏形 / 访问器 / 原型链 ⇒ `undefined`;停驻审批卡读口 `approvalCardGateOf(card)` 只读卡上已铸的位(卡顶层 `taskId` + `parkRow.gatedCallId`),活卡 ⇒ `undefined`。宿主不再解析 `questionId` 取身份(那只 id 只承载调用 id 与 run id 之一)。来源代 = 产生这张卡的那次待决读 / 那条流所属的引擎代:问答桥依赖与停驻审批腿依赖多一只读函数 `engineGeneration`(同 `EngineGenerationPort.current`),停驻腿在**取件读之前**读一次、活卡记帧所在那条流**打开**那一拍的读数(帧在旧代结束之后才到也记旧代);读到有限数才落 —— 审批卡请求的 `sourceGeneration`、停驻问卡帧的 `_sema_sourceGeneration`(读口 `questionFrameSourceGenerationOf`)。缺席 = 说不出(端口没装 / 读抛 / 非有限数;计划审阅卡本版不带),不是 0、不是当代。帧与决断字节、卡面事实不变。
|
|
83
|
+
- **换代两拍一只判官 `engineGenerationCardPlan(facts)` + 到期判定 `engineGenerationCardRecheckDue(facts)` + 金样 `ENGINE_GENERATION_CARD_PLAN_GOLDEN`**(CC-1374;**§140 SQ-5 – SQ-7**;型面加性:根入口运行期 +4 含留卡因闭集 `SCREEN_CARD_KEEP_REASONS`、型 +12):两拍读同一型 `ScreenDecisionCard { instance, origin?, gate?, sourceGeneration?, toolCallId?, window? }`。`phase: 'ended'`(旧代刚结束)⇒ `{ retract, phases }`,判据就是既有 `convergeEndedEngineGeneration` —— 只有活卡窗确定还开着才撤,其余卡种(含卡种读不出)恒留;`phase: 'ready'`(新代就绪、读过一次新引擎的待决队列)⇒ `{ withdraw, keep }`:全局两闸(没就绪 / 代号读不出 ⇒ `not-ready`;读期间换代 ⇒ `generation-moved`,一张不收),逐张按 `SCREEN_CARD_KEEP_REASONS` 的判序 —— 卡种可收(停驻审批卡 / 停驻问卡 / 计划审阅卡 / 宿主重开问卡,与宿主交的 `withdrawable` 取交)→ 门可用(计划门须带 `checkpointId`,不退化成只比 run)→ 来源代早于当代(缺席按早)→ 有行对上门(工具门与取件口身份腿同一谓词)→ 行属本会话 → 行判决(唯一读口)非 `ok` ⇒ 收,收卡事实 `withdrawal = { toldBy: 'host', rowVerdict }` 原样交 `withdrawParkQuestion` / 卡口 `withdrawn` 臂。判官只出计划:收没收成、屏上还剩不剩卡,宿主执行后重读。到期判定 = 当代就绪 ∧ 有一张卡过前三道,与新代拍同一候选谓词。金样是冻结数据(行的归属约定 = 自有位 `owned === true`),宿主可拿它对拍自己的旧实现。
|
|
84
|
+
- **问卡 id → 卡种的唯一分类口 `questionCardOriginOf(questionId)`、宿主两种问卡 id 的铸口 `hostReopenQuestionId` / `hostRunChoiceQuestionId`、卡种读口 `approvalCardOriginOf`、引擎决定判定 `screenCardsHoldEngineDecision(cards)`**(CC-1375;**§140 SQ-1 / SQ-8**;型面加性:根入口运行期 +6 含卡种闭集 `SCREEN_CARD_ORIGINS`、型 +1 `ScreenCardOrigin`):卡种闭集 `SCREEN_CARD_ORIGINS` 七词(`live-approval` · `park-approval` · `park-question` · `plan-review` · `host-reopen-question` · `host-choice` · `local-permission`);问卡 id 词汇(包铸两种 + 宿主铸两种)只住一处,不认得 ⇒ `undefined`。`screenCardsHoldEngineDecision` = 这些卡里有没有一张引擎在等的决断(自愈端口 `hasPendingDecision` 的语义定义):宿主选择卡与本地权限卡不计,卡种读不出计入。
|
|
85
|
+
- **Decision refusals now cross a process boundary intact (`decisionRefusalCarrierOf`).** A host that has to send a refused approval decision to another process (for example from a desktop main process to its renderer) can call `decisionRefusalCarrierOf(err)` and send the result instead of the error. The result is a plain, deeply frozen object that survives structured clone and carries exactly the fields the package's own failure readers read on that error (status, error code, message, retriable flag, error name, and body fields such as the wait time of a rejected resume, the more specific check behind a folded policy refusal, or the configuration field a parked task was refused on), never a field whose name looks like a credential, and nothing nobody reads. Before returning it the package checks that every one of its failure readers (`classifyDecisionRefusal`, `decideFailureNote`, every `…FromError` reader, `wireFailureCoreOf`, `wireFailureTextsOf`) gives the same answer for the result as for the original error; when that cannot be proven (an unreadable field, a reader that depends on the error class, or a credential-named field a reader needs) it returns `undefined`, and the host should rethrow the original error as before. The seat contract names the rejection of `respondToToolPermission` as this carrier (`ToolPermissionRefusal`, `DecisionRefusalCarrier`, `DecisionRefusalCarrierValue`).
|
|
86
|
+
- **Plan-review card facts for hosts that intercept the parked terminal frame (`openPlanReviewFrameClaim`).** A host that takes the parked terminal frame out of the stream before `runStream` sees it can open one claim per stream and feed it the raw frames in arrival order; on the terminal frame of a run parked at a plan gate, `feed` returns the same frozen `PlanReviewCardFacts` that `runStream` would have produced and commits them to the same store, so `readPlanReviewCardFacts(taskId, { checkpointId })` answers from that store without reading the run's ledger. `feed` is synchronous and does no I/O, opens no subscription and publishes nothing; both entries share one per-frame step, so frames that also reach `runStream` are harmless.
|
|
87
|
+
- **内置输出风格表**(CC-1340;§140 BO-1 – BO-3):根入口运行期 +2 `BUILTIN_OUTPUT_STYLES`(只读深冻结表,名闭集五个〔语料序〕`default` / `Proactive` / `Concise` / `Explanatory` / `Learning`,`default` 的值 `null`;`Proactive` 另带 `turnReminder` + `waitingTurnReminder`、`Concise` 另带 `turnReminder`)· `builtinOutputStyleOf(name)`(名在闭集内 ⇒ 表里同一个冻结对象;表外 / 大小写变体 / 带空白 / 原型链名 / 非串 ⇒ `undefined`);型 +2 `BuiltinOutputStyle` · `BuiltinOutputStyleName`。正文与提醒句对 CC 2.1.316 内置风格表逐字节(描述句唯一替换 = 开头品牌词换本产品名)。终端现表只有 `Explanatory` / `Learning` 两个,缺 `Proactive` / `Concise` ⇒ 终端到货补。
|
|
88
|
+
- **排队用户行 id 行形**(CC-1337;§140 PU-1 – PU-4):根入口运行期 +4 `PENDING_USER_ROW_ID_PREFIX`(`'pending-'`)· `pendingUserRowIdOf(uuid)`(合法 v4 uuid ⇒ `pending-<uuid>`,字节原样;否则 `undefined`)· `pendingUserRowUuidOf(id)`(唯一读口:`id` 恰是铸口铸得出来的〔前缀 + 合法 v4 uuid 整串〕⇒ 返回其中的 uuid,字节原样;坏形 / 非串 ⇒ `undefined`)· `isPendingUserRowId(id)`(只答布尔,经读口定义;铸 / 读 / 判单源)。
|
|
89
|
+
- **停止裁决读口 `compactionStopVerdict(reading)` + 取消句 `compactionCanceledSentence(lang?)`;压缩读数多 `openTriggers`**(CC-1333;**§140 CN-1 – CN-5**;加性:根入口运行期 +2、型 +1 `CompactionStopVerdict`;`CompactionStatusReading` 多可选位 `openTriggers?: readonly string[]`;目录 +1 键 `session.compaction.canceled`):用户在压缩进行中停下这一回合时,端该出哪一行由包裁 —— 停下那一刻主车道恰一只在开的压缩 pass 且其 `trigger` 恰是 `manual` ⇒ `{ kind: 'compaction_canceled' }`(呈现 `Compaction canceled.` / `压缩已取消。`,与 CC 2.1.316 手动压缩被停下时的那一行逐字节同);自动 / 强制 / 表外词 / 没有在开的 pass / 两只及以上并开 / 读数读不出 ⇒ `{ kind: 'interrupted' }`(端的通用中断行)。读数 = 同一只追踪器 `createCompactionStatusTracker().reading()`,新位 `openTriggers`(主车道在开 pass 的 `trigger` 原词、开的序、冻结)只在 `compacting: true` 时在场。只决定**呈现**哪一行;发往引擎的中断照旧。
|
|
90
|
+
- 🔴 行为变(字面):`reading()` 在压缩进行中多一个键 `openTriggers` —— 把读数整只做字面比对 / 序列化断言的端与测试改读具名位。
|
|
91
|
+
- **宿主通告句过座位:chrome 臂 `host_setting_notice` + 唯一铸口 `hostSettingNoticeEventsOf(notices)`;通告句多挂行两位 `key?` / `cause?`**(CC-1338;**§140 HN-1 – HN-6**;🔴 型面加宽:`ChromeEvent` / `ChromeArmKind` / `ChromeEventKind` 各 +1 成员,座位词表 20 → 21〔末位;同版 CC-1385 的 `resupply_truncated` 先追加,本版合计 19 → 21〕,`CHROME_EVENT_KINDS` 值变;根入口运行期 +1、型 +1 `HostSettingNoticeChromeEvent`;`HostSettingNotice` 多两可选位):`hostTurnSettings()` 产物 `notices` 的每一句(`turn` / `session` / `diagnostic` 三面)经 `hostSettingNoticeEventsOf(product.notices)` 成一只 `{ kind: 'host_setting_notice', laneProof: { lane: 'main' }, id, plane, text, key?, cause? }` 臂 —— 载荷就是那一句本身;座位去向 `seat`,宿主按词表转发零新逻辑。由一行的臂铸出的句子挂上那一行的 `key` / `cause`(判决那一句与列表里那一句是同一只对象);不挂行的句子两位缺席。非终态:不是失败卡、不改回合状态。
|
|
92
|
+
- 🔴 行为变(字面):`hostTurnSettings()` 产物 `notices` 里由一行铸出的句子多两个键 `key` / `cause`;对句子做「键集恰为 id / plane / text」字面断言的端与测试改读具名位。快照口读一句时 `plane` 不是三词之一的句子(只可能出现在手拼产物上)按读不成处置。
|
|
93
|
+
- **「完成后补收建议」共用口 `followUpPromptSuggestions(input)` + 能力位真话读口 `promptSuggestionsOnStream(baseUrl)` + 上界常量 `PROMPT_SUGGESTIONS_TAIL_MAX_ATTEMPTS`(6)/ `PROMPT_SUGGESTIONS_TAIL_BUDGET_MS`(12 000)**(CC-1336;**§140 ST-1 – ST-6**;加性:根入口运行期 +4、型 +4):建议批只有一种铸法(投影口 `suggestions` 臂与本口同读一只;逐字节同上一版:去空白判空 → 前 8 条 → 单条 200 字截断留 `…`)、只铸成一种臂(`prompt_suggestions`)。**主路** = 流上 `suggestions` 帧(服务端 ≥ 7.149.0 落在 `done` 之前;投影口零改)。**补路** = 本口对 `runs.get` 有界轮询,只在主路不可能已交付时问:没请求 / 流上来过那一帧 / 走到 `done` 且这台服务端帧在 `done` 之前 ⇒ 零发;断流 / 交后台 / 老服务端 ⇒ 问。`RunRecord.suggestions` 三态(非空 ⇒ 铸臂;`[]` ⇒ 已结算没有、停;缺席 ⇒ 再问),`status` 不是 completed / running ⇒ 停,6 发 / 12 s 双闸 —— 整次在预算内落定:每一发之前重查截止(预算尽不再发),一发本身只等剩余预算(与截止赛跑,到点中止那一发、答 `gave_up`,不靠对端理会信号),下传给 `runs.get` 的信号是调用方中止与到点并联的一只;调用方信号读不出(读 `aborted` 抛)按不再发处置。结局五词 `skipped` / `settled` / `not_completed` / `gave_up` / `unavailable`;永不抛。`promptSuggestionsOnStream` = 能力位 `promptSuggestions` 为 `true` ∧ 服务端自报版本 ≥ 7.149.0(≤ 7.148.0 的位写死 `true`、按腿不真 ⇒ 读 `false`)(内核闭包文件 +1,棘轮 46 → 47 登记)。
|
|
94
|
+
- `approvalCardRequestOf(facts, host)`:审批卡请求的唯一装配口(CC-1403)。卡事实读数(`approvalCardFactsOfV1Frame` / `approvalCardFactsOfFrame` / `approvalCardFactsOfGeneric` / `approvalCardFactsOfV1` 的出参)+ 宿主位 `ApprovalCardHostBits`(`callKey` 必填;`taskId` / `signal` / 窗四位 `expiresInMs` / `expiresAtMs` / `serverNowMs` / `receivedAtMs`,窗四位直接展开 `approvalWindowKeysOf` 的读数)→ `ApprovalCardRequest`。事实位整只过境、值同一引用;两只入参只读自有数据位(访问器不执行、原型链上的不算、值为 `undefined` 的键不落、一位读就抛只丢那一位);闭集外的键两边都不过境(宿主位上的事实键、事实读数上的宿主键 / 卡腿专有键一律不落);入参不是对象或必需三位不成立 ⇒ `undefined`。永不抛。
|
|
95
|
+
- 型 `ApprovalCardHostBits`(宿主位闭集七键)。
|
|
96
|
+
- **会话历史读面脱敏位的唯一读口 `sessionReadRedactionOf(caps)` · 型 `SessionReadRedactionLeavesReading`**(CC-1411;**§140 RR-1 – RR-3**;加性:根入口运行期 +1、型 +1;包内读这一位的地方只此一处):服务端 7.148.0 把能力位 `sessionReadRedaction` 由布尔 `true` 改成历史读面过脱敏的叶名表 `string[]`(`<形>.<键>`,布尔形整删),老服务端(7.120.0 – 7.147.x)仍报 `true`。读口入参是能力回体原样,答 `{ kind: 'redacted', leaves? }` 或 `{ kind: 'unconfirmed' }`:布尔 `true` ⇒ `redacted`(不带 `leaves`);非空且每员都是非空串的数组 ⇒ `redacted` + `leaves`(冻结的原样拷贝,顺序 / 重复 / 大小写不动,叶名开集不判形);位缺席 / 空表 / `false` / 含非串或空串或空洞的表 / 其余坏形 ⇒ `unconfirmed`。只认自有数据位、取值器不执行、读抛 ⇒ `unconfirmed`、永不抛;读数冻结、逐次现铸。`unconfirmed` 只是「引擎没有确认」,不是「读面没脱敏」;`redacted` 不带 `leaves` 是「报了脱敏、没报叶名」,不是「没有叶被脱敏」也不是「每一叶都脱敏」。能力位台账 `sessionReadRedaction` 由 `not_read` 改 `read`;已知限制 KL-667 的到货条件成立、同票销(残留只剩布尔形那一代的叶覆盖不报,见 §140 RR-2)。
|
|
97
|
+
- **`/health` 店持久性读口 `readEngineHealthStore(health)` · 型 `EngineHealthStoreReading` / `EngineHealthStoreDurability`**(CC-1411;**§140 RR-4 – RR-5**;加性:根入口运行期 +1、型 +1 `EngineHealthStoreReading`;三态型 `EngineHealthStoreDurability` 与能力面共用,根入口型出口随 CC-1418 计一次):服务端 7.148.0 起 `/health.store = { durability }`(`durability` 三词闭集 `durable` / `ephemeral` / `unknown`;匿名读者的 `/health` 闭集无 `store`;≤ 7.147.x 无此键)。读口只读这一位,三态:`{ kind: 'reported', durability }`(`unknown` 是引擎的正面陈述 —— 判不出 —— 不折成 `ephemeral`、不折成 `durable`、不等于缺席)· `{ kind: 'unreadable', word? }`(发了、读不懂;三词之外的非空串带原串 `word`,未消毒,上屏过 `displayUntrusted`;持久性读成「不知道」)· `{ kind: 'absent' }`(没发:老服务端或匿名读者,不是「持久」也不是「不持久」)。与 `readEngineHealthFacts` 各读各的键(六件读数里没有 `store`),只读 `store` 位、不出健康判决。
|
|
98
|
+
- ### Added —— **`storePostureDoctorDetail(reading, lang?)` / `storePostureHeadWord(reading, lang?)` 两语**(CC-1418;**§140 SP-3**;型面加性):句子进消息目录(+14 键 `notice.capability.storePosture.*`,中英);不传 `lang` ⇒ 英文,老一代各句英文逐字节不变。新增三句:易失(不说「内存」—— 新一代的易失也包括易失文件系统与随 pod 的卷)、判不了、认不出的持久性词(带原词,过展示出口封长)。
|
|
99
|
+
- **「不再询问」本地落规则档的兑付契约:唯一判官 `localAllowRedeemability(input)` + 只读座位兑付口 `redeemReadOnlyRuleOffer(facade, input, opts?)` + 五只冻结闭集**(CC-1412;**§140 LA-1 – LA-5**;型面加性:根入口运行期 +7〔`localAllowRedeemability` / `redeemReadOnlyRuleOffer` / `LOCAL_ALLOW_NOT_REDEEMABLE_REASONS` / `LOCAL_ALLOW_UNKNOWN_CAUSES` / `LOCAL_ALLOW_REDEMPTION_REFUSALS` / `LOCAL_ALLOW_REDEMPTION_UNAVAILABLE_CAUSES` / `LOCAL_ALLOW_REDEMPTION_UNKNOWN_CAUSES`〕、型 +11):规则一条 —— 本地设置层的 allow 行自身永不生效(设置契约里那一层够不着 allow 的地板),它能生效只因为引擎规则店里有同一身份(allow、逐字同一串、同一项目根或全局)的活行;设置文件里的一行从来不是同意。判官三态:`redeemable{via: 'layer' | 'consent'}` / `not_redeemable{reason}`(`managed_only` · `tighten_only` · `no_scope_root` · `no_consent` · `road_closed`)/ `unknown{cause}`(`input_unreadable` · `policy_unreadable` · `consent_unreadable` · `road_unknown`);两个主语:盘上已有的一行(`declared`,读规则列举的结局)与卡上将出的一档(`offered`,读规则车道能力位)。仓库自带的本地层 allow 行、店里没有同意 ⇒ `not_redeemable{no_consent}`,工作区信任读数怎么答都不变。永不抛,取值器不执行,出参冻结。兑付口先问同一只判官、过窄化五步,再走 settings 导入两步:上送的层只含被点的那一条(从不上送设置文件本身),预览恰是那一条、在那一项目根才兑票;只兑一次、不重试。回执闭集四臂:`applied{outcome: 'persisted' | 'already_live'}` / `refused{reason}`(确知没入店:`managed_only` · `no_scope_root` · `rule_shape` · `request_refused` · `preview_mismatch` · `engine_refused` · `ticket_dead`)/ `unavailable{cause}`(路走不通:`road_closed` · `road_unknown` · `policy_unreadable` · `input_unreadable` · `prepare_failed`)/ `unknown{cause}`(兑票已发、入没入店说不清:`redeem_unsettled` · `receipt_unreadable`)。
|
|
100
|
+
- **引擎探活结局的三态判决 `classifyHealthProbe(result)` · 句口 `healthAnswerClause(verdict, lang?)` · 段内选取口 `latestSegmentHealthAnswer(segmentStartMs, ...seen)`**(CC-1415;**§140 HP-1 – HP-5**;加性:根入口运行期 +3、型 +5〔`HealthProbeVerdict` / `HealthProbeAnsweredNotOk` / `HealthProbeUnansweredReason` / `HealthProbeNotOkReason` / `TimedHealthAnswer`〕;目录 +5 键):类型包 `probeHealth` 的死臂有四条 —— `timeout` / `network` 是没应答,`http`(非 2xx)与 `not_ok`(2xx 而体不是 `status:"ok"`)是有应答。端把四条折成「活 / 不活」后,出句对不活一律说「没应答」,对有应答的两臂是假话,三端各折一份、各选一份「段内最近一次有应答」。本版收成三只:`classifyHealthProbe` 把结果归并成 `unanswered{reason:'timeout'|'network'}` · `answered_ok` · `answered_not_ok{reason:'http'|'not_ok', http, status?}`(判活不动:只有 `alive: true` 算 `answered_ok`;读不出判决所需位 ⇒ `undefined`,不折成 `unanswered`);`healthAnswerClause` 给一句动词短语(`did not answer in time` / `could not be reached` / `answered with status "ok"` / `answered HTTP <码>` / `answered HTTP <码> but not with status "ok"`;zh 同键;`answered_not_ok` 只说 HTTP 码,对端自报的状态词是不可信展示文本,句子不引);`latestSegmentHealthAnswer` 按观测时刻取段内最近一次有应答(早于段起点的不参与、同刻先到先赢、坏形元素逐个跳过)。`probeEngineAlive` 改为派生自判决,对所有探活结果答案逐位不变;包内读探活结果 `alive` 位的只剩判决一处。
|
|
101
|
+
- **规则导入兑付回执的被拒行读数 `refusedRowOf(counts)` · 型 `CcImportRefusedReading`**(CC-1414;**§140 RW-1 – RW-3**;加性:根入口运行期 +1、型 +1):入参是 `readCcImportRedeemCounts` 的读数(回执体仍只经那一只读口读),答 `{ count, rows }`:回执里确知被拒、确知没落的条数,与行序同回执的被拒行(规则身份 `key` · 引擎拒因码 `reason` · 引擎原话 `detail`,三位各自独立缺席、行不丢;`detail` 已由读口过显示出口封长)。读数是 `null`(回执读不出)⇒ `null`;读得出而没有被拒行 ⇒ `{ count: 0, rows: [] }`。不计进成功的两个数。
|
|
102
|
+
- **附件名 / 路径的显形口 `showAttachmentName(name)` 上根入口**(CC-1416;**§140 AN-1**;加性:根入口运行期 +1):附件信封里名字与路径的写法(含 Cc / Cf / Zl / Zp / Cs 码位、双引号、反斜杠的名字写成 JSON 串并把留下的不可见码位写成 `\uXXXX`;其余原样,`<` / `>` 不在其列)从包内件改为根入口导出;与信封内部是同一个函数引用。
|
|
103
|
+
- **座位回执位 `settledElsewhere` 的唯一铸口 `toolPermissionSettledElsewhereOf(firstDecision, sent)` 上根入口**(CC-1423;**§140 SE-1**;加性:根入口运行期 +1):它就是活卡答复口在回放判处调的那一只函数(根导出与模块内同一个引用,不是第二份实现)。宿主读到回放体、要自己铸回执位时调它,不再手抄「首决 × 这一发是否相反」的同式。
|
|
104
|
+
- **回放自称判决口 `toolApprovalReplayVerdictOf(body, approvalId)`**(CC-1424;**§140 RV-1 – RV-3**;加性:根入口运行期 +1、型 +1 `ToolApprovalReplayVerdict`):活卡答复口回体「是不是回放、首决是哪一词」的唯一读法 —— 三态闭集 `not_replay` / `replayed{firstDecision}` / `unreadable`;活卡答复口自己的回放兜底改走同一只合成。读就抛 / 点名别的卡 / 与 `delivery` 并存 / 决断词读不出 ⇒ `unreadable`(不当 `not_replay`);永不抛、取值器一次不执行。 🔴 行为变(只在外来体坏形上):判别位 `idempotent` 自身读不出(读描述符就抛 / 已撤销代理 / 自有访问器) ⇒ 活卡答复口落 unsettled unreadable、不再落回用户按的词(§140 RV-3;同版 CC-1425)。
|
|
105
|
+
- **本机引擎 `down` 原因闭集加一词 `exited-once`**(CC-1426;**§140 XO-1 – XO-4**;🔴 型面变〔窄〕:`LocalEngineDownReason` / `LocalEngineStateDownReason` / `LOCAL_ENGINE_DOWN_REASONS` 各 +1 词,`LocalEngineFailCode` / `LOCAL_ENGINE_FAIL_CODES` +1 码 `local_engine.exited_once`):「起服后退出了一次、不自动重起」。句子只在消息目录一处(`localEngine.down.exitedOnce`,en / zh),相位句 `localEngineSeatSentence`、本机半边 `lastBootError` 派生句、一次性车道失败句同读这一键;出站门词闭集同改。状态机的迁移表不进入这一词:无自动重起策略的宿主把态置为 `down{exited-once}`,定时器不重起,用户显式重试照常。
|
|
106
|
+
- **附件名 / 路径的实体形显形口 `showAttachmentNameCc(name)`**(CC-1430;**§140 AC-1 – AC-2**;加性:根入口运行期 +1):`<` → `<`、`>` → `>`、C0 / DEL / C1 / U+2028 / U+2029 → `&#N;`(N = 十进制 UTF-16 码元),其余逐字(`&` 不转,格式符与孤代理不转)。与 `showAttachmentName`(JSON / `\uXXXX` 形)并存、各自单源、互不借用;已有形一字不动。
|
|
107
|
+
- **座位动作词 `open-local-setup`**(CC-1444;接入文档 **§140 OL-1 – OL-3**):座位动作闭集 `SEAT_ACTION_NAMES` 末位追加第三词 `open-local-setup`(无载荷;宿主通知座位打开本机模型设置向导);型 `SeatAction` 联合 +1 成员、`SeatActionName` +1 员,出站门 `checkSeatAction` / 渲染端读口 `readSeatAction` / 认领入站门 `checkSeatActionsClaim` / 宿主读口 `claimedSeatActionsOf` 随闭集走(表外词仍整表拒并点名,拒因带三词闭集);根入口导出数不变(🔴 型面加宽:对 `SeatAction` / `SeatActionName` 做穷举 `switch` 或 `Record<SeatActionName, …>` 的宿主编译红一次)。
|
|
108
|
+
- **计划审阅卡卡事实加可选位 `evidenceRevision`(证据代)+ 过期卡判官 `planReviewEvidenceMovedOf(shown, latest)` → `'same' | 'moved' | 'unknown'`**(CC-1400;**§140 EG-1 – EG-4**;型面加性:根入口运行期 +1、型 +1 `PlanReviewEvidenceMove`,既有型 `PlanReviewCardFacts` 加可选位):证据代 = 这份卡事实所依据的那一次正文证据的代号(正整数,进程级单调,只增不复用)。同一道门、认领相同的重读(断线重附 / 账本入口重读)沿用同一个号;门换了或同门认领换了(⇒ `conflicting_claims`)才领新号;临时读数 / 门身份缺席的事实不带这一位。帧 `_sema_planReview`、chrome `plan_review_park.planReview`、视图 `planReviewCardViewOf(frame).facts` 是同一份冻结事实,读到同一个号。宿主拿屏上那张卡的事实与此刻读口 `readPlanReviewCardFacts` 读出的事实交给判官:号相同 `same`、不同(或门身份不同)`moved`、任一边缺号 / 读不出 / 不是同一个 task ⇒ `unknown`(**不是 `same`**)。在场而坏形(非整数 / 0 / 负 / 取值器)⇒ 整份事实读不出,视图按撤档两项处置。与卡请求上的引擎实例代 `sourceGeneration` 是两件事,各一只读口。
|
|
109
|
+
- **会话成本读口 + 分叉种子 + 逐轮读数 + 账目行端口**(CC-1008 A 件;**§140 CO-1 – CO-8**;型面:根入口运行期 +12〔公面导出 2191 → 2203:六张冻结闭集 `SESSION_COST_BOUNDS` / `SESSION_COST_HISTORY_BASES` / `SESSION_COST_LOWER_BOUND_CAUSES` / `SESSION_COST_UNKNOWN_WHYS` / `TURN_COST_UNKNOWN_WHYS` / `RUN_COST_SETTLEMENTS`、四只函数 `sessionCostReadingOf` / `forkSeedCostOf` / `turnCostReadingOf` / `runCostSettlementOf`、两只端口读口 `accountRowOfResult` / `foldAccount`〕、型 +21;🔴 `CoreValuePorts` 完整型多两个必填成员 ⇒ 按完整型建袋的宿主装配根编译红一次;既有读口行为零变):引擎 7.59.0 起把「账」定成一件事 —— 每次被定价的调用一条行(一次 run 终局 = `accountRowOfResult`,一次侧查询自带 `account`),宿主存行,**只经 `foldAccount` 一只读法**读回。修前三端各算各的:终端壳按读面逐条 run 的终局账折一套、本机快照一套、逐轮窗口一套;网页端 / 桌面端读助手行上的 `usage.cost.total`(模型适配层自己的金额,缓存命中时**高于**引擎账)。现在:① 两只值级端口(第二十六 / 二十七件,名表末位追加,读口同名,没装 ⇒ `undefined`,不编空账)② `sessionCostReadingOf({ lines, history, pendingTurns? })` 把宿主存的行读成三个口径 —— 结果帧 `total_cost_usd`(`frame` = 来源 `run` 的折叠,含续开的历史行、不含侧查询行)· 会话累计(`cumulative` = 整个折叠)· 侧查询单列(`sideQuery`),每个口径只有三态:`known`(已知)/ `lower_bound`(有数但只是下界,界标 `+`,成因 `usage_missing` / `history_partial` / `history_unread` 可并存)/ `unknown`(**零数字位**,成因闭集六词:`port_absent` / `lines_malformed` / `fold_unreadable` / `line_cost_unknown` / `zero_lower_bound` / `pending_run_cost`);求和只在引擎折叠一处,本口零求和、零乘除价;未定价行使含它的口径 `unknown`(引擎的答案,不跳过它求和);端口没装 ⇒ 三口径 `unknown{ port_absent }`(**不折 0**);行集读不出或引擎拒收坏形行 ⇒ `unknown{ lines_malformed }`,永不抛 ③ 历史完整性由宿主声明(`complete` / `partial` / `unread`,必填、不默认「完整」):不全的有数是下界、零是不知道(一个下界 0 什么也没说)④ `forkSeedCostOf({ lines, history })`:分叉种子恒下界(源声明 `complete` 也是 `partial`;源没读到 / 行坏形 ⇒ 空种子 + `unread`),新会话之后的读数用种子的 `history` ⑤ `turnCostReadingOf(usage, settlement)`:逐轮 `costUSD` / `costMicroUsd` 的字面 0 在终局成本事实到之前不算免费 —— `awaiting` ⇒ 待定位(`pending_terminal`,不渲 0),终局 own 成本读得出(`priced`,含声明免费的 0)才是已知的 0,`unpriced` / `lost` 各有成因;`runCostSettlementOf(stats)` 从终局 `stats` 读出这个事实(与终帧超集键同一只成本读器);`pendingTurns` 让会话口径在零价时同样不渲「免费」。助手行 `usage.cost.total` 不是账:网页端 / 桌面端改读这里。币种与格式化不在本口(账行单位是引擎原生 micro-USD,本口只出 `micro` 与展示换算 `usd`)。引擎的持久会话级账(续跑链上的几条行不可相加、后台委派在终局后记的账不在任何一行)仍未到货,本口不假装解决。
|
|
110
|
+
- **取消成因第四词 `stall_verdict`**(CC-1404;**§140 S7148-6**):服务端 7.148.0 起判死(心跳过期)的 run 上,原执行者的腿读到后自停,取消成因答 `stall_verdict`。本包读成已知成因、出专句(不是引擎错);修前落 `unrecognized`。成因词型 `AbortCauseWord`(= 类型包 `AbortCause` ∪ `'stall_verdict'`,根入口型名 +1;peer 地板越过 38.0.0 后收回成 `AbortCause`)。
|
|
111
|
+
|
|
112
|
+
### Changed
|
|
113
|
+
- **未装目录的界面语言整句回英文**(CC-1357;**§140 EX-4**;🔴 行为变):`renderMessage` / `translate` / `createTranslator` 以及每一只带 `lang` 的句口,对 `'zh'` 在宿主未装中文目录时按英文出整句(含嵌套片段)—— 不是空串、不是键名、不抛;缺词台账记固定条目 `lang:zh`(按次数);进程内每种语言恰一次 `console.error` 通告。表外语言照旧(`lang:?`、零通告)。`renderMessage` 仍是同步口。
|
|
114
|
+
- **语言相关的接缝跟实际出句语走**(CC-1357;**§140 EX-5**;行为变:只在未装目录时可见):记忆同步停驻句的层名分隔符、记忆通告的句间空白按「这一句实际按哪一语出」选,不再按请求语选(修前未装中文目录时会出英文句夹中文顿号)。
|
|
115
|
+
- **🔴 行为变(组合器路径):活流腿的排空终帧不再在腿内重开,归宿主再附着**(CC-1363;**§140 EO-1 – EO-3**;零公面变):`composeEventLeg` 带 `askBridge` 的活流腿,源流以排空终帧收场时,修前(0.105.0 起)问答桥按这条腿的绑定等一格、在腿内开 `runs.events` 续读;现在桥一条流都不开,经 `askBridge.onBreak` 恰交一次断因 `{ cause: 'stream_draining', frame, runId? }`(`runId` = 这条腿的绑定,说不出就缺席)后按断线形收场(干净结束、无终帧、不抛),由宿主的再附着接手。耐久腿(`durable`)与问答桥决断后自开的续流不变:仍按包的排空梯在腿内重开同一条订阅,梯尽才交一次 `{ ladder: 'exhausted' }` 断因。根入口 `bridgeAskUserQuestionGates` 直装不变(修前就不在活流腿内重开)。规则:能原样重开同一条订阅(`runs.events`)的,读它的那一层重开;活流不可续读,换道归宿主。没有宿主开关。
|
|
116
|
+
- **计划的三张设置来源行表多一只可缺位 `type`**(CC-1369;**§140 HR-3**;加性):`settingsVerdicts` / `settingsDropped` / `settingsExcluded`(含整腿关时的逐条拿掉行)在铸点记下条目自己的型词(`command` / `prompt` / `agent` / `http` / `mcp_tool`);条目不是对象或型不是这五词 ⇒ 缺席。判定 / 拿掉 / 排除的结论不读这一位,`hooksNotRunNotice` 与两只本端跳过口逐字节不变。
|
|
117
|
+
- **子代理模型词读数加 `default` 一类**(CC-1362;**§140 AM-4**;🔴 型面加宽:`SubagentModelWordKind` +1 员 ⇒ 对它穷举的端编译红,补一臂;行为变):`default`(大小写不敏感)⇒ `{ kind: 'default', model: 'default', label: 'default' }`,无落点、无成因;修前读成 `passthrough`(目录已知)/ `catalog-unknown`(目录未知),大小写变体原样交、引擎纯键查不认 ⇒ 400。目录另有只差大小写的键(如 `Default`)⇒ 多义(不猜)。
|
|
118
|
+
- **引擎认而目录行不列的词:一张表**(CC-1362;**§140 AM-6**;行为变,只在目录不带 `aliases` 时可达):受理判官 `modelAcceptanceOf` 的保留词与子代理模型词读口的词表词同读一张表(档位序 / CC 档位别名 / `best` / `default`)。修前受理判官那一份漏 `best` ⇒ 目录不带受理面(支持底线以下的服务端 / 手搓目录)时 `best` 被判 `refused{not_listed}`(引擎其实认,档位展开铸它);现在 `unknown{reserved_word}`。目录带受理面时零变化。
|
|
119
|
+
- **`subagentModelWordProblemLine` 改走与调用层那一句同一只成因分类器**(CC-1362;**§140 AM-7**;零行为变:四句逐字节同 0.98.0)。
|
|
120
|
+
- **场景卡技能清单能力位读器 `observedScenarioSkillsCapability` 的五态读数改为模块级冻结单例**(CC-1355;**§140 SC-1 / SC-2**;零公面变、读数形零变):修前本口每次调用新铸一只冻结对象,是根入口 37 只 `observed*` 能力位读口里唯一不守「同一态连读两次得同一只引用」的(接入文档成文全族单例)。现在五态各是一只模块级冻结对象;`confirmed` / `absent` / `declined` / `unreadable` / `unobserved` 连读两次、换地址、重新落地之后都是同一只引用。依赖「每次一只新对象」的端(就地改读数)修前也改不动(冻结);按身份比较的端现在可以比。
|
|
121
|
+
- **`permissionsAllowKeptNotice` 的托管策略专句按拉取态分三形;`PermissionsAllowKeptFacts` 多一只可选位 `managedPolicyFetch?: 'in_progress' | 'failed' | 'unknown'`**(CC-1372;**§140 PK-1 – PK-5**;型面加性〔事实型多一只可选位〕+ 🔴 行为变:文字):修前专句恒说「sema keeps fetching it; allow rules apply once it arrives」,而一次性运行(`-p`)托管策略拉取失败之后这一次运行不会再拉(下一次运行才重试)—— 句子不实。现在专句(`partial` ∧ `managedPolicyPending` ∧ `problemCount === 1`)按宿主交来的拉取态出三形:`in_progress` = 修前原句逐字节;`failed` = 「…has not been received yet (this run will not fetch again; the next run retries). Run again to retry fetching it (…)」;`unknown` = 只说还没收到、不断言会不会重拉。位缺席 · 表外词 · 非串 · 取值器抛 ⇒ 一律按 `unknown`。其余分支(文件问题数 > 1 / 没给问题数 / `unreadable`)逐字节不变。
|
|
122
|
+
- **起服拒因读口 `engineBootRefusalOf` 结果加位、句口 `engineBootRefusalSentence` 加第三参 `form`**(CC-1378;**§140 EU-4 / EU-5**;型面加性,签名不变;行为变窄):读口在结构化行之外兜底认**纯文本回显**的数据根拒启(码与出路表段首两锚同在才认、整段先脱敏再切);
|
|
123
|
+
认出的臂 `reason` 与 `restartWouldHelp: false`(认不出 ⇒ 两位缺席 = 不知道)、数据根形的 `variant` / `findings` / `highWater` / `engineVersion` / `markerPath` / `waysOut`(逐文件段里认出才在);没有条目行时 `code` 取致命句里作为码出现的那一枚。
|
|
124
|
+
句口第三参给安装形 ⇒ 附该臂出路(数据根形:引擎首行与逐文件段原话 + 按安装形改写的三条出路 —— 宿主自起的引擎永不点名数据根键、改点名起服注入表钉住的配置根键(命令形 `` `SEMA_CONFIG_DIR=<another-folder> sema` `` 反引号包住、两语逐字同,过展示出口不被当凭据值洗掉);更新命令只给 npm 全局 / 版本库两形);不给 ⇒ 逐字旧行为。两只口从起服注入面模块搬到引擎不可用模块,根入口名不变。
|
|
125
|
+
- **🔴 行为变(只在宿主给了 `stillHere` 且答的不是严格 `true` 时)**:`attemptActiveRunSelfHeal` 的四种重发结局(`running-cancelled` / `stale-park-cancelled` / `ask-decided-without-card` / `interrupted-settled`)改出 `resend-withheld-left`(答 `false`)/ `resend-withheld-unconfirmed`(答不清 / 抛)。不给这只口 ⇒ 零变化。
|
|
126
|
+
- `-p` 工具结果帧(stdout)在人拒带说明的那一行上多一枚信封键 `_sema_refusal_noted: true`(与既有四只行级位同层;不进 `tool_result` 块)。
|
|
127
|
+
- `ToolPermissionAck` is now a union of two arms, `ToolPermissionAckSettled | ToolPermissionAckUnconfirmed` (it was an interface). Code that extends it as an interface must switch to one of the arms.
|
|
128
|
+
- The outbound check for `respondToToolPermission` receipts is stricter: unknown top-level keys are refused (they used to pass), `unconfirmed` and `settledElsewhere` are refused together, `unconfirmed` with `ok: true` is refused, and when `settledElsewhere` is present `ok` must be the opposite of `contrary` (an opposite earlier decision means `ok: false`; the same earlier decision means `ok: true`). A receipt with neither slot is unchanged.
|
|
129
|
+
- `readToolPermissionSettledElsewhere` reads only from receipts that pass that check (it used to read the slot of a receipt the check refuses).
|
|
130
|
+
- The default attachments table grows from three keys to four. On the four default paths (the variable absent, an empty list, a single unregistered word, the word `default`) `attachmentsForRequest` and `attachmentsSubmitVerdict` now also send `mcpInstructions: true`, after `backgroundTasks`, `toolsDelta` and `todoReminder`, so the usage notes of an MCP server connected in the middle of a session reach the model without extra configuration. `off` still removes the key (it never sends `false`), an explicit list without the word `default` still sends only the keys it names, and a host that builds its own `attachments` object is unaffected. (CC-1383)
|
|
131
|
+
- **本地 MCP 配置投影:按工具消费的三个键的披露句改口**(CC-1367;**§140 MT-1 – MT-3**;行为变:文字):`toolAxes` / `toolFaces` / `allowTools` 三个键的坏形披露句修前说「这台服务器没有启动」。这三个键是按工具名消费的,引擎要读到工具列表才用得上它们,终端实测也是先拨号读一次工具列表、再因设置无效丢弃这一台 —— 「没有启动」不实。现在三句改说「为读工具列表启动过,随后被丢弃」(英文含 `was started to read its tool list and then dropped`,中文含「曾被启动去读取它的工具列表,随后被丢弃」),修法句与「其他 MCP 服务器不受影响」两半不变;拨号之前就定得了的十一形(名字五形 · 身份头同设 · 传输不受理 / 不可用 · `elicitation` 坏形 · 条目不是对象 / 读不出)仍说「没有启动」。判口(`reason` 词 · `problem` 原句 · 谁被丢弃)一个字不动;云配置腿的「被略过」句不涉启动、不动。
|
|
132
|
+
- **「编辑后批准没发出」一事的三句归一为一只目录词干**(CC-1364;**§140 EW-1 – EW-4**;行为变:文字 + 型放宽):此前同一件事有三句各钉各的字节(句子口短语 · 停驻腿失败原文 · 转录行)。现在目录里只有词干 `approval.editRefusal.stem` 一处写「为什么」,转录行 `approval.editRefusal.line` 与停驻腿失败原文 `approval.editRefusal.parkReason` 两条尾巴嵌套它,`APPROVAL_NOTE_EDIT_REFUSED_DETAIL` 就是词干英文。**改口清单**:① 句子口短语(`approvalResolutionDetail` 的 `edit_refused` 句 / 根常量 `APPROVAL_NOTE_EDIT_REFUSED_DETAIL`)由 `edits are not accepted on this card` 改为词干英文 `this request does not expose its tool arguments here, so an edited approval cannot be applied`,常量型由字面量放宽为 `string`;② 停驻腿失败原文改写为 `the card returned an edited approval, but <词干> — nothing was sent (the arguments are missing from the pending approval record, or replaced there by a size marker); approve or deny it as it is`;③ 转录行两语渲出字节与 0.110.0 逐字节不变。目录键 +2(`approval.editRefusal.stem` / `approval.editRefusal.parkReason`)。
|
|
133
|
+
- **类型包 37.0.0 加面四键的终态**(CC-1391;**§140 PD-1 – PD-2**;无代码变,处置表终态):`engineLease.lane` / `engineLease.handover` = pending(服务端交接 verb 本版仍未做;期望口写在 §140 PD-1);工作流列表行 `budgetOvershoot` / `timeoutInterruption` = declined(显示判官的输入 fleet 行没有这两位、判官答的是闭集状态词、引擎已有自己的散文、本包没有列表行投影;复活条件写在 §140 PD-2)。
|
|
134
|
+
- **停驻臂判类并入读流器按因读口的同一读法**(CC-1393;**§140 PA-1 – PA-2**;行为变,只在非常规形上):`classifyTurnWireError` 的停驻臂此前按 `name` 宽读判「读流器耗尽」这一类(原型链 / 访问器上的名字也认,取值器会执行),与 `isStreamEndedWithoutTerminalError` / `streamEndedReasonOf`(instanceof 为主、`name` 兜底只读自有数据位)并存。现在停驻臂只问同一只读口:名字只在原型链 / 自有访问器上的伪造物不再被判成「候人决断」(落原有的传输 / 内部判法);真类实例被改名仍判停驻;自有数据位同名的 Error / plain object(跨 bundle 重建形)照旧。
|
|
135
|
+
- **Changed(行为变:文字 + 编辑闸)— 活卡帧腿的审批卡回落形与耐久停驻腿同判(CC-1394;销 §138 PGd 包侧缺口 ㉚)**:卡入参读器答「回落到流上模型的原始调用」(活卡帧上的 `args` 被省略 / 缺席 / 不是普通记录 ∧ 事件流上 `tool_start.args` 是对象)时,活卡帧腿的卡现在同样置 `argsUnavailable: true`,
|
|
136
|
+
说明句 `wireNote` 与停驻腿回落形同一句(目录键 `approval.park.argsFromModelCall` 的英文),`inputSource: 'stream'` 照旧;卡口答「编辑后批准」(含 `allow_session` + 改写)⇒ 一个字节都不发,结局 `not_sent{edit_refused, lane: 'respond'}`,
|
|
137
|
+
告知句沿用 `EDIT_REFUSED_ON_BLIND_ASK_WARN_TEXT` 恰一次;纯批准 / 拒绝照发。两条腿的回落形铸点收成一只包内助手(活卡腿自有的另一句说明连同它的私有常量一并退出出包字节;零根入口新名、零型变、零公面变)。
|
|
138
|
+
连带:回落卡上 `standingRowsOf` 的整工具「不再询问」那一行因入参不可得关闭(`args_unavailable`,与停驻腿回落卡同答);纯投影出口 `approvalCardFactsOfFrame` 带流上入参时同变。
|
|
139
|
+
- **引擎拒码 `steering.not_running` 与 `interrupt.nothing_in_flight` 的字面收成包内码表常量单源**(CC-1326;接入文档 **§140 RQ-1 – RQ-3**;零行为变、零公面变):此前这两个码在包内各读点各留一份字面(`steering.not_running` 五处:MCP 重拨分诊 · 在飞 run 切权限档 · 在飞 run 自愈 · 引导拒收逐码表 · 子代续跑分诊;`interrupt.nothing_in_flight` 一处:Esc 升级闭集,所在判定页被门钉成零 import 而取不了码表常量)。现在六处都取 `engineErrorCodes` 的同一只常量;判定页 `planInteractiveHalt` 所在模块的 import 恰一条(码常量叶),叶的传递闭包仍零 Node 内建、零第三方包,三端装包面不变。`RUN_LEVEL_STOP_ERROR_CODES` 的值与冻结性不变。
|
|
140
|
+
- **展示出口 query 区标签裸值止点的成文句收口**(CC-1300;§140 DQ-1;字节不变):「片段外散文逐字节不动」改写为只对 URL 结构面单开成立;凭据标签落在 query 区里时标签的值归词级面,在第一枚 `&` / `#` 止,其余同裸值读法,`|` 一类不是词级停字符 ⇒ 可以伸出片段末、伸出部分整只按 secret(只多遮)。零行为变,门 UQ1 – UQ7 钉。
|
|
141
|
+
- **停驻行卡的行身份证明换读顶层 `taskId`**(CC-1348;§140 CP-2):`answerCarriage(card)` 的证据由「`parkRow.taskId` 非空串」改为「`parkRow` 在场 ∧ 卡顶层 `taskId` 非空串」;包铸的耐久卡逐格同答;手拼旧形 `{ parkRow: { taskId } }`(顶层无 `taskId`)⇒ `none`。`answerCarriage` 入参型多一只可选位 `taskId`。
|
|
142
|
+
- Changed:投影口 `suggestions` 臂的铸法搬进包内叶(零行为变)。
|
|
143
|
+
- 本包活卡腿交给卡口的卡请求改经同一只装配核(交给卡口的卡逐键同值同序,零行为变)。
|
|
144
|
+
- ### Changed —— **能力面 `store` 座的持久性按两代读**(CC-1418;**§140 SP-1 – SP-4**;🔴 型面 BREAKING〔窄〕:`StorePostureView.durable` 由必选改可选;型面加性:视图 +2 可选位 `durability` / `unrecognizedDurability`、根入口型 +1 `EngineHealthStoreDurability`;根入口运行期名零变):服务端 7.148.0 起 `store` 座删 `durable` 布尔、改报三态 `durability`(`durable` / `ephemeral` / `unknown`,与 `/health.store.durability` 同一只装配值)。修前本包要求 `durable` 严格布尔,7.148.0 及以后引擎上整只 `store` 读成「读不出」;现在恰一代的键在场即读出:三词之一 ⇒ `durability`;三词之外的非空串 ⇒ `unrecognizedDurability`(原串,持久性按不知道);≤7.147.x 的布尔 ⇒ `durable`。两代键同在或都不在 ⇒ 整条读不出(不择一)。`storePersistence`:`durable` / `true` ⇒ `durable`,`ephemeral` / `false` ⇒ `not_durable`,`unknown` 与认不出的词 ⇒ `unknown`(不折「不持久」)。
|
|
145
|
+
- **`standingRowsOf` / `rememberOfferable`:只读座位(`ruleOffersReadOnly`)的「以后别问」一行改问兑付判官**(CC-1412;**§140 LA-6**;🔴 行为变 + 型面 BREAKING〔窄〕:`StandingRowWhy` 多两词 `redemption_closed` / `redemption_unknown`,按它穷举的消费端编译红一次;`StandingRowsHostFacts` 多一只可选位 `readOnlyRedemption`):修前只读座位候选在场即给这一行(`engine_offer`),而那一行按下去写进本地设置的规则恒不生效。现在宿主交兑付判官三格(托管「只认托管规则」/ 作用域根 / 规则车道能力位读数)且判官答可兑付才给;不可兑付 ⇒ `redemption_closed`(三态 `refused`),判不出或三格缺席 ⇒ `redemption_unknown`(三态 `unknown`)。活卡座位(`ruleOffers`)不变。
|
|
146
|
+
- 决断拒收分码对 `checkpoint.invalid_outcome` 的读法 0.110.0 已按码归 `row_integrity`(CC-1413;**§140 IO-1**):本版没有行为变,新增的是在服务端自己的出站构造口上逐门逐词的回归钉(三个门 × 引擎行判官的每个 `reason` 词 ⇒ 线上码恒为该码 ⇒ 读数 `row_integrity`、不铸瞬时;没有成因的另一形与别的席位词照类型包成文处置)。
|
|
147
|
+
- **回执读口单次观察**(CC-1425;接入文档 **§140 RA-1 – RA-4**;🔴 行为变,只在外来体坏形上;零型变、零根入口新名):`readToolApprovalRespondAck` 在入口对回执体每一位只取一次自有描述符(取值器与代理取值陷阱一次都不执行;只在原型链上的位不算),嵌套的规则清单与归属锚在同一次取数里定形,此后三臂(applied / 首决回放 / 赎回)的判形与落位只读这一份。修前 applied 与首决回放两臂先判形、再回头取值:会变的取值器能让视图落下没判过的值(`decision` 判过三词闭集后读成表外词、`rememberApplied` 落成串),原型链上的位被当成回执自己的(原型上放 `rememberApplied: true` 即替每张回执说「本会话全放行」),取值陷阱抛则读口本身抛。现在:三个判别位(`accepted` / `idempotent` / `delivery`)任一读不出 ⇒ 整只读不出(`accepted` 读不出修前「不认领、落另两臂」,现与另两位同处置);首决回放臂「没有 `delivery`」只认证明缺席(自有的 `delivery: undefined` 不再算没有,与赎回臂同一条);必在位读不出 ⇒ 整只读不出;可选位读不出 ⇒ 只丢该键;读口永不抛(`readRulePersistOutcome` 随之对这类体答 `unknown`);视图的 `persistedRules` 是新铸的可写数组,不再与传入的数组是同一个对象;带洞的稀疏清单整份不落;宿主数组上自带的 `every` / 迭代器不再被调用。JSON 解析的回体(服务端的一切回执)逐键逐值与修前相同。 同版 CC-1424:回放判决合成在判别位 `idempotent` 自身读不出(读描述符就抛 / 已撤销代理 / 自有访问器)时答 `unreadable`,活卡答复口随之落 unsettled unreadable、不落回用户按的词(§140 RAy ②)。
|
|
148
|
+
- **壳属主事件上的设置来源 hook:本端执行器不跑 ⇒ 计划如实记一行「哪都不跑」**(CC-1429;**§140 HG-1 – HG-4**;🔴 行为变(只多披露)+ 🔴 公面常量值变:`SETTINGS_HOOK_DROP_REASONS` 7 → 8 词,末位 `no_executor`;根入口运行期 / 型名零增减):引擎只点亮九个 hook 事件,其余事件从不上请求体(§139 HK-1),由端自己的执行器跑。插件与会话 hook 在这些事件上早有判定(端报了 ⇒ 本端跑;没报 ⇒ `not_run` / `no_executor`),设置来源却没有:端没有本地执行器时(或执行器不跑这一事件 × 这一型),用户在设置里写的 `PermissionRequest` 等 hook 哪都不跑,计划零行、开机清单零句。现在这类条目在 `settingsDropped` 里各记一行 `{ source, event, groupIndex, hookIndex, reason: 'no_executor', notRun: true }`(依据词与插件 / 会话同名、同一句),`hooksNotRunNotice(plan)` 按「来源 × 依据」各出一句(例:`User settings: PermissionRequest hook will not run — neither the engine nor this client runs this event.`)。本端执行器跑这一只 ⇒ 零行(同修前)。治理先赢:整腿关、只投托管、安全 / bare 模式、工作区信任扣下的层照旧由各自的行 / 句说明,不另出本词。
|
|
149
|
+
- **服务端契约四词只在引擎属主事件上判**(CC-1429;**§140 HG-2**;🔴 行为变):`exec_form_unsupported` / `mcp_tool_unsupported` / `key_not_read` / `source_not_authored` 说的是「为什么不能交引擎」;壳属主事件上的条目本就不交引擎,修前仍照记这四词、`notRun` 恒为假(哪都不跑的条目因此不进清单)。现在壳属主事件上只判本端执行器跑不跑:跑 ⇒ 零行;不跑 ⇒ `no_executor`。引擎属主事件上四词与修前逐字同。
|
|
150
|
+
- **依据短句 `no_executor` 进消息目录**(键 `config.hooks.plan.reason.noExecutor`,en / zh;CC-1429;**§140 HG-3**):英文与修前插件字面逐字节同,`pluginHookReasonText('no_executor')` 与 `settingsHookDropText('no_executor')` 读同一键。
|
|
151
|
+
- 活卡答复口回放兜底的「读 + 判」合成收进模块内一只(`toolApprovalReplayVerdictOf` 与编排共用);逐体对拍 33 形,结局分类逐字同。
|
|
152
|
+
- 放行备注「什么算写了」只剩一个读口(CC-1398):决断发送机入口快照不再内联一份「串且非全空白」的规则,改问读口 `allowNoteReadingOf`;推送结果行位(`rowBits`)的词表与「哪个词说一句」出自同一张表,成员判定不再另手抄四词(上游加词时两处同步,不再静默漏认)。零行为变。
|
|
153
|
+
- 引擎改指结局 `partial` / `store-failed` 的续跑与用户句(CC-1405;证据随同版 CC-1408 绑地址对;接入文档 **§140 RP2 / RF-4**):续会话半场要宿主交回上一次结局的连续性证据(`continuity`),不带它重跑恒落 `record-absent` —— 证据只走宿主持久化(调用前写迁移记录,`partial` / `store-failed` 后换成结局带回的 `continuity`,重跑同一对地址时原样递回),两句因此只说「再运行一次同样的命令」(不叫用户带设备 ID,也不在句子里替终端许诺证据会带上 —— 那是终端按接入文档存并递回 `continuity` 的义务);`store-failed` 句同时不再断言「什么都没改」(回读读不出时档可能其实已迁,状态未知,只确定会话没有动)。进程崩在档已迁、结局未回到宿主之间的读法写进接入文档:宿主在调用前读旧址档的 `deviceId`、与这一对地址一起写进自己的迁移记录(即 `continuity` 同形),崩后把记录作 `continuity` 重跑。
|
|
154
|
+
- 工具审批决断:绑定码族里「这一行自己的拒」(`reason` 在场、`field` 缺席;≤ 7.146.x 的服务端借 `approval_binding_mismatch` 发的那一形)不再铸 `binding_mismatch` 安全停(CC-1406):安全停判官改问决断分码判官,`row_integrity` ⇒ 原抛出物上抛、恰一发、结局无 `safetyCode`、拒收读数 `conflict: 'row_integrity'`(取消形,不教宿主重取重呈);族里其余形仍铸安全停。修前活卡腿在这一形上陷「批准 → 拒 → 重呈」的循环,而停驻腿已是取消句。
|
|
155
|
+
- `engineTargetLocalOf` 回值诚实(CC-1410;🔴 型面 BREAKING〔窄〕:`EngineTargetState.local` 可缺席):读数坏形(含 `lifecycle` 为 `undefined`,即 `localEngineSeatReadingOf` 读不出态时的回值)回 `undefined`,不再回 `{}` 冒充本机半边;`EngineTargetState.local` 改可缺席,缺席 = 此刻没有合法的本机读数;出站门与 `watchEngineTarget` 放行缺 `local` 的态,宿主只扣本机半边、`mode` / `generation` / `cloud` 照发(修前整只态扣发,`mode` / `generation` 随之冻)。型面变:`engineTargetLocalOf` 入参 `lifecycle` 加 `| undefined`、回值 `EngineTargetLocal | undefined`;读 `state.local` 的渲染端须处理缺席。
|
|
156
|
+
- **🔴 行为变:中断拒绝(停止回合时那张审批卡上的工具级拒绝)走各腿平常的决断投递,不再是单发**(CC-1110;**§140 IR2-1 – IR2-4**;公面常量值变:`CANCEL_DENY_BUDGET_MS` 2000 → 8000;根入口零增减):活卡腿改走投递段(连接断 / 5xx 有界重发,202 停驻按服务端邀请同体重投恰一次;修前裸单发,连接断一次就上屏「could not cancel the pending question — the session may stay locked」);耐久审批腿与问答腿照旧走决断桥的瞬断重试,但带一只独立寿命(= 一次投递的整次预算 8 s;修前不带信号,请求挂住时这一问的登记永不清)。观察器在那一次投递的最后一发失败时上屏、或到 8 s 仍无回音时上屏,不再按 2 s 先报;重发撞「已被决 / 已到终态」静默。至多一发被受理(重发只在没拿到服务端判决时发)。
|
|
157
|
+
- **策略拒的原因词 +`hook`(一只 PermissionRequest 钩子拒的)**(CC-1114;**§140 PQ-1 – PQ-3**;型面加宽:`policyCause` 联合 +1;目录 +1 键 `approval.policyDeny.hook`,en / zh):卡的拒绝决断带 `policyCause: 'hook'` ⇒ 工具结果首句改为钩子那一句(「denied by a PermissionRequest hook … do not retry it unchanged」),钩子的拒因照旧原样另起一行接在后面;修前宿主只能报成缺席,交互会话与 `-p` / SDK 车道上都说「permission prompts are not available in this session」。三条决断腿同一条律;不上 wire、不参与裁决(决断体上的出处座位 `decidedVia` 本版未带,见 §140 PQ 包侧缺口)。
|
|
158
|
+
- **失败通知的原因位 `TaskNotificationFields.error`:推送来路与轮询来路落同一位、过同一只展示出口**(CC-1407;**§140 WF2-1 – WF2-3**;行为变):引擎失败通知帧(`status` 恰 `failed`)带的 `error` 现在经 `normalizeTaskNotification` 落在事实位 `error`(转录行 `_sema_task_notification`、队列项事实),与 workflow 看守轮询来路同一位、同一只呈前出口(凭据洗、字符面转义、封长 200 码元);同一原文两来路逐字节同。修前推送来路丢掉这一位。不进正文 XML。
|
|
159
|
+
- **外来说明文本的封长规则只剩一份,量与引擎同:截到 200 再接 `…`**(CC-1409;**§140 TR-1 – TR-3**;行为变):失败原因展示与三只通告句的说明位(`memory.session_polluted` · 委派静态标记放行 · 对端来信处置的 `cause`)改调同一只截断叶;修前截到 `封长 − 1` 再接标记(整段恰封长),与引擎「取前 200 再接 `…`」不同量。现在超长时整段 = 封长 + 1 码元;不超长原样、不加标记。`TaskNotificationFields.error` 与读数 `error` 成文为**已是展示形**:消费端原样渲、不要再过一遍出口(出口开着字面反斜杠成对时不幂等,再过会翻倍)。
|
|
160
|
+
- **workflow 完成的取件位补充**(CC-1422;**§140 WD-1 – WD-5**;行为变 + 型面加性:`EngineWorkflowCompletion.diagnostics?`、读数 `WorkflowRunTerminalReading` 完成 / 失败臂加可选位 `truncated?: true`):看守轮询先把终局句交了(读面没有全文取件位)之后,同一次完成的推送(补投帧臂 / 直调口)若带着全文取件位,补一件只含取件位的通知(无终局句、无 `result`),销账一次;之后同 runId 的推送照旧被 runId 门挡。推送先到、两者同到、只有轮询的行为不变;live 回声到达销账。取件位只认引擎诊断文本里那一句固定形(取最后一处,ref 过字符集 / 长度闸)。截断位读 run 记录自己的字段 `resultFull`(今天服务端读面不投它,所以线上读不到:缺席 = 不知道)。
|
|
161
|
+
- **服务端拒体机读位一种版式:读口只读体根;老服务端的嵌套形在抛出物快照口提升一次**(CC-1404;**§140 S7148-1 / S7148-2**;🔴 行为变,型面窄 BREAKING 见下一条):服务端 7.148.0 起拒体是 `{ error, errorCode, ...事实 }`,根上不再有 `detail`(八条码路径的对象形 `detail` 摊到根上)。本包所有按拒体事实分支的读口(hooks 族、帽拒、规则条目拒、字段冲突、附件拒、场景拒、会话放置、输入 id 重复)只读根键;服务端 7.139.0 – 7.147.x 仍发嵌套形,由抛出物的唯一快照口按码表闭集把 `detail` 下的事实提升到根上(表外码 / 串形 `detail` / 根上已有同名键 ⇒ 不提升、不覆盖;提升后的袋不带 `detail`),面板 200 体的场景拒位同一函数。两代读出同一读数;老服务端上 `dead_alias` 的 `groupIndex` 缺席(那一代不发)。过渡期登记:支持底线越过服务端 7.148.0 的那一版删提升。
|
|
162
|
+
- **`settings.hooks` 族拒读数的定位位由段数组 `path` 换成坐标串 `field`**(CC-1404;**§140 S7148-2**;🔴 型面 BREAKING 窄):`SettingsHooksRefusal.path?: (string | number)[]` → `field: string`(恒在);`HookMatcherRefusal` 四臂 `path?` → `field?: string`。服务端 7.148.0 起是判决处的精确坐标(如 `settings.hooks.PreToolUse[0].matcher`),老服务端由段数组渲出同一种写法,段数组读不出时是 `settings.hooks`。坐标是不透明定位串,不反解。族认领按坐标:码 `request.field_invalid` ∧ `field` 是 `settings.hooks` 本身或以 `settings.hooks.` / `settings.hooks[` 起头;泛化帽读口 `fieldLimitRefusalFromError` 不再认领 hooks 坐标上的帽拒(那一族的读数在 hooks 族读口里)。
|
|
163
|
+
- **hooks 读者不读的键告知句里的坐标写法跟服务端一致:数字段方括号**(CC-1404;**§140 S7148-3**;🔴 文案变):`settings.hooks.Stop.0.hooks.0.onFailure` → `settings.hooks.Stop[0].hooks[0].onFailure`;含 `.` `[` `]` `"`、空白、控制字符的键段写成 `["…"]`。本包写坐标只剩一只渲染器,写法与服务端 7.148.0 的 `unknownKeys` / 拒体 `field` 同。
|
|
164
|
+
- **MCP 断言头告知句的服务端版本射程 7.147.0 → 7.148.0**(CC-1404;**§140 S7148-0**;🔴 文案变,一句改写):`mcpAssertionHeaderNotSentNotice` 的「server versions up to 7.147.0 accept this setting but do not send the header」改说「up to 7.148.0」—— 服务端 7.148.0 仍不把 `assertionHeader` 交给引擎(其处置表 `withheld`),射程跟现役见证那一版走。
|
|
165
|
+
- **「会话可回退 / 分叉还原文件」读数格 `forkRestore` 改读能力位 `restoreFiles`**(CC-1404;**§140 S7148-4**):服务端 7.148.0 删能力位 `rewindFiles`(7.52.0 起与 `restoreFiles` 同谓词、恒同值)。两代读出同值;7.148.0 部署上修前该格读 `not_reported`。
|
|
166
|
+
- **门夹具现役服务端 7.147.0 → 7.148.0;开发依赖类型包 `@sema-agent/sdk` 37.0.0 → 38.0.0**(CC-1404;**§140 S7148-0 / S7148-5**;peer 地板 `>=25.0.0` 与支持底线不动):服务端 registry `dist.shasum` `ed5d3eb49ff19664d73bce42af9c4f565ab29a36`、`gitHead` `4a87488ca6f51d4994e8323e06f5e0bc70757088`(随包精确钉引擎 7.66.0 / 设置契约 24.0.0)。类型包七处破坏点逐条落点见 §140 S7148-5。
|
|
167
|
+
|
|
168
|
+
- **记忆暴露通告的开头句回到平话,只说引擎事实**(CC-1456;接入文档 **§140 MP-1**;行为变:文字,en / zh;在包,零型变、零公面变、目录键不增减):`notice.memory.sessionPolluted` 的开头句,0.109.0 写成「took in content from an outside source / 收进了来自外部来源的内容」(说过了头 —— 引擎发这个标时只说明会话里有工具能够到外部内容,不说明真收进过),0.110.0 又照抄引擎内部形写成「marked externally exposed / 已标记为暴露于外部」。现在 en `A tool in this session can reach content from outside it ({reason}).` / zh `本会话里有工具能够到外部内容({reason})。`;后半句(可能被扣下候审、每一批实际扣下什么会另行通知)逐字节不变。`memorySessionPollutedSentence` 与引擎通告派发出的是同一句。按句子文本匹配不在契约里,改读通告码与读口读数。
|
|
169
|
+
- **派发前重判口 `refilterHostSettings` 让 `settings.env` 跟着最终 hooks 走,补入的条目点名的名也补上**(CC-1421;接入文档 **§140 HE-1 – HE-3**;🔴 行为变:0.110.0 成文「此刻多出来的不加」(139-HE-10)改口,见 140-HEd;型面零变):宿主在装配之后改写 `settings.hooks`(锁存对齐补入 http 条目 / 派发前自己拿掉或收窄条目)时,`settings.env` 的名集由本口按**取交之后的最终 hooks** 重算(名集只有 `hookEnvNamesOf` 一种读法,入口与本口同源):被拿掉 / 被收窄的条目独有的名删;补入的条目点名、此刻的产物带的名补上(值取此刻的产物;已在请求上的名值不换;本车道 `settings.env` 无座 / 此刻 env 那一行漏接 ⇒ 不补)。补名要生效,宿主须在自己改写 hooks 之后、发出之前调本口一次,且此刻的产物由含锁存对齐那份计划的源铸出。宿主壳自铸的收窄过渡臂与它的两处调用到货即退(见 §140 HE 升级必读)。
|
|
170
|
+
- **引擎改指口 `repointEngine`:列表口改工厂形、连续性证据绑地址对、接线错改不可重试的拒**(CC-1408;接入文档 **§140 RP3-1 – RP3-3**;🔴 型面 BREAKING —— 本口 0.110.0 才出,承接方是终端):① `EngineRepointRoster.devices` 由「sdk 切片」改为工厂 `(address) => 切片`,`EngineRepointRoster.address`(宿主声明的切片地址,宿主地址的第二份)删除 —— 本口把规范化后的新址递给工厂、只读它交回的切片;`EngineRepointRosterProof` 的 `unreadable` 因里删 `address-unbound`。② 连续性证据 `expectDeviceId`(一枚裸串)改为 `continuity: { deviceId, from, to }`(新型 `EngineRepointContinuity`,根入口型 +1),由 `repointed` / `partial` / `store-failed` 三种结局带回(新位 `continuity`),宿主原样存下、原样递回;别的地址对 / 反向 / 只改一址铸的证据不再放行,旧入参 `expectDeviceId` 不再读(零双读);同版 CC-1405 的续跑证据由宿主持久化并重传,续跑句只叫用户再运行同样的命令;`EngineRepointContinuity` 的判据是 `deviceId` 相等且两址规范化后同键(不是逐位比)。③ 工厂交不回切片(宿主没有把设备列表接到新址 = 接线错误)⇒ 新拒因 `roster-unbound`(`EngineRepointRefusal` 加一词):不发任何请求(握手也不起)、旧档零变,句子 `session.devices.repoint.refused.rosterUnbound`(两语)明说这是应用自己的接线问题、再试也不会好 —— 修前这一形落在可重试的 `undetermined`、句子叫用户「Try again」。`devices` 不是一只可调的函数(缺 / 0.110.0 形的切片对象 / 取值器 / 别的值)同属接线错,落同一拒(工厂抛仍是可重试的 `undetermined`)。
|
|
171
|
+
- **宿主通告句的读法:`plane` 不是三词之一的句子整句不读**(CC-1338 同版;接入文档 **§140 RF-9**;行为变,只影响克隆或手拼的产物):快照口与派发前重判读一句时,`plane` 不是 `turn` / `session` / `diagnostic` 之一 ⇒ 这一句不读(0.110.0 照抄任意串 `plane`);拒发那一句因此读不成时回落投影句。包铸产物不受影响;逐句隔离,某一句读不出只跳那一句。
|
|
172
|
+
- **「重连 = 一次交易」那一句随界面语言**(§140 MR2-1;行为变:文字,中文界面上这一句此前是英文;型面:`MCP_RECONNECT_TRANSACTION_NOTICE` 值逐字不变、类型由字面量放宽为 `string`;消息目录键 +1):措辞真源迁进消息目录键 `session.mcpReconnect.transaction`(en / zh 两语),常量取目录英文;中文界面经根入口已有的 `renderMessage(msg('session.mcpReconnect.transaction'), lang)` 出句,不另铸句口。
|
|
173
|
+
- **会话 hooks 名册的状态闭集收成三词 `engine` / `shell` / `not_run`**(接入文档 **§140 RF-12**;🔴 型面窄:`SessionHooksRosterStatus` 去 `not_sent`,两者都是本版新出):第四词 `not_sent` 只出自「非引擎事件上、计划没断言本端跑不跑的拿掉行」,同版壳属主事件改按本端执行器判(跑得了 ⇒ 不出行,跑不了 ⇒ `no_executor`)之后计划不再出这一形,闭集里不留铸不出的词;手拼或外来计划带这一形 ⇒ 不成行、计入 `unlisted`;出站门拒 `not_sent` 状态。
|
|
174
|
+
### Deprecated
|
|
175
|
+
- **宿主断言词 `'started-by-this-process'`**(CC-1362;**§140 AM-5**;退役登记 RL-13620,retireBy 0.112.0):与新词同一处置;终端与桌面端都改交 `'reads-this-config'` 之后的下一个本包版本不再认(型面 BREAKING,随 minor)。
|
|
176
|
+
|
|
177
|
+
### Removed
|
|
178
|
+
- **根入口退出 `ZH_MESSAGES`**(CC-1357;**§140 EX-1**;🔴 型面 BREAKING:根入口运行期 −1;值与冻结形不变,改从子路径 `@sema-agent/client-core/i18n/zh` 取)。中文表约 225 KB 源码、约 59 KB gzip 不再随根入口进只渲英文的宿主的打包产物。
|
|
179
|
+
- **`ApprovalCardParkRow.taskId`**(CC-1348;§140 CP-1;🔴 型面 BREAKING):0.110.0 CC-883 起卡顶层 `taskId` 与 `parkRow.taskId` 同值双名,本版删 `parkRow` 里这一名;读「这条行属于哪条腿」只读卡顶层 `taskId`(字节同修前 `parkRow.taskId`)。`parkRow` 键闭集 `{ gatedCallId?, deadlineMs? }`。
|
|
180
|
+
|
|
181
|
+
### Fixed
|
|
182
|
+
- **Fixed(展示安全)— 被挡终局句 `Run blocked: <reason>` 的 reason 过展示口径(CC-1361;web-client 请托)**:无机读 detail 时,reason(agent 自报的话 / 解开引擎信封后的正文)此前只解信封,U+202E / ESC 序列 / C0 原样进句;现在与 hook 的话走同一展示口径
|
|
183
|
+
(凭据面 + 双向与控制字符标成可见转义 + 折成一行 + 封长 1000 且截点不劈转义记号)。句子字面不变;干净文本逐字节同旧;空 / 空白 reason 按没有 reason 处置(通用句,不出悬空冒号)。多行 reason 现在折成一行。终局行 / 结果帧失败句 / 根入口 `runBlockedText` 同一口径。
|
|
184
|
+
- **耐久审批门通告的来源词 `source` 与成因词 `cause` 同形按开集读,表外词不再让整条读数缺位**(CC-1356;**§140 NC-1 – NC-3**;行为变,在包;零型变、零公面变):修前 `readDurableGateUnavailable` 对 `source` 只认已装引擎词表(`DURABLE_MANDATE_SOURCES`)里的词 —— 引擎新增一个来源词的那一版,这条通告在宿主侧整条读不出(读口答 `undefined`,宿主退回引擎原句);而句口 `durableGateUnavailableSentence` 本来就按开集设计(表外来源词落保守从句、不回显词、不给「另一条出路」,出路句按成因),接入文档 §138 NC-1 / NCb 也这样写 —— 读口与句口、成文与行为对不上。现在 `source` 与 `cause` 一个读法:非空串即原样透传(不 trim、不折大小写、不改写;原型链上的键名也只是一个词),表外词读数在场、其余各格照带、句口落保守从句;空串 / 非串 / 缺席仍整条缺位(宿主退回引擎原句)。`DURABLE_MANDATE_SOURCES` 仍在根入口(冻结数组,值不变),只作句表逐词对账用、不再是读口准入。
|
|
185
|
+
|
|
186
|
+
- **发送机审批族:回执的回放判别读不出不再说「已生效」**(接入文档 **§140 RF-1**;🔴 行为变,只在外来体坏形与回放边角上;零型变):`sendHitlDecision` 审批族读回体后的回放判读改调活卡答复口与 `toolApprovalReplayVerdictOf` 共用的那一只判决。判别位 `idempotent` 自身读不出(自有访问器 / 描述符陷阱抛的代理)⇒ `unconfirmed{local_error}`(本版回执读口改为一次观察、永不抛之后,这一形曾落 `applied` 并以「已答」放掉持有;0.110.0 同为 `unconfirmed{local_error}`);自称回放却点名别的卡 / 与 `delivery` 并存 / 读不全又对不上号 ⇒ `unconfirmed{local_error}`(0.110.0 起说 `settled_elsewhere`、不带首决);读不全但自有位点名这张卡、首决是两词之一的回放 ⇒ `settled_elsewhere` 带 `firstDecision` / `contrary`(0.110.0 起只说早已决)。三条腿对同一只回体同答。
|
|
187
|
+
- **workflow 完成补投帧的截断披露臂改在入队臂之后发**(CC-1385;接入文档 **§140 RF-2**;行为变:臂序):消费者在披露臂处停读时,入队臂已交到宿主 —— 修前披露臂在前,停在那一拍会留下「已记账而入队臂没交出」,这次完成通知不再补发。任务通知那一形不变(披露臂仍在转录行之前)。
|
|
188
|
+
- **两语平话**(接入文档 **§140 RF-6**;行为变:文字):`session.mcpReconnect.transaction` 中文改说「这是一次整体操作,不是刷新」;`approval.editRefusal.parkReason` 中文尾巴改说「或因为太大在那里只留下了一个标明大小的占位」;英文两句不变。
|
|
189
|
+
- **`engineGenerationCardPlan` 兜底分支不再回头读入参**(CC-1374;接入文档 **§140 RF-7**):入参是取值陷阱抛的代理、卡表判形就抛时,修前兜底里再读一次 `phase` 又抛、逃出永不抛的判官;现在按首读的 `phase` 交空计划。
|
|
190
|
+
- **三处兜底不折正向词**(接入文档 **§140 RF-8**):`screenCardsHoldEngineDecision` 逐项按下标读、只在证明没有时答 `false`(卡表读不出仍答 `true`;宿主换掉数组迭代协议时照常逐项判,修前整只答 `true`);取件位补充通知的状态词 = 它补的那一次完成交来的词原样(直调口 `enqueueEngineWorkflowNotification` 交来表外词时不再折成 `completed`,与直调口正常入队同一读法);补收建议的调用方信号读不出按「不再发」处置,不再折成「已中止」。
|
|
191
|
+
|
|
192
|
+
### Gates
|
|
193
|
+
- 新门 `run-package-subpath-exports-test.mjs`:exports 闭集 · 根入口不带中文表(静态闭包 + 真打包产物两面)· 未装回英文 + 一次通告 + 拒因闭集 · 打包同一性三形(browser / Electron 主进程 / Node 条件集)+ 两份 bundle 的判别力自证。
|
|
194
|
+
- 入口闭集收成一张登记表(`scripts/_package-entries.mjs`),公面门 ⓪ / ⓪b、可移植门 ①d、两只转口门的入口格同读;单例门加一段:子路径入口的运行期闭包里零「复制两份就出真回归」的模块级状态。
|
|
195
|
+
- 新门 `run-elicitation-leg-ownership-test.mjs`(§140 EO / ED):活流腿零自开 + 断因恰一次带绑定 run(头 / `meta` 两种来路;说不出不编)· 断因进宿主按次策略口即梯主(排空帧经断因交出、读者恰一个)· 耐久源流按梯重开、梯尽才交断因 · 自开续流排空桥重开、零断因 · 根入口与组合器同一重开判据 · 结构钉(桥的 run 句柄只两处赋值、零回落旁路)· 依赖对象多出「回落 / 重开」位不改属主 · 公面型零开关位 · 旧代零自开零断因 · 句口两语同键 / 无名形 / 只 `applied` 出句 / 不可信名 / 口吻 / 目录 / 根入口与公面基线 / 出句口登记。
|
|
196
|
+
- `run-run-follow-projection-test.mjs` G2b 改口:活流源流不在腿内重开、断因带组合器补的绑定 run(修前钉的是腿内重开)。
|
|
197
|
+
- `run-message-catalog-test.mjs` MC5 域闭集 +`mcp`;`run-catalog-routing-test.mjs` CR11「别的门钉」表 +`elicitationRefusedLine`。
|
|
198
|
+
- **新门 `scripts/run-session-hooks-roster-test.mjs`**(CC-1369;**§140 QE / HR**;包侧投影门三件之一):QE1 登记 + 构建产物声明 · QE2 / QE3 读写两只出站门(空串、假成功、两条现势矛盾)· QE4 前置判法二十形 · QE5 宿主替身端到端(注册表替身;拒后旧键原样)· QE6 能力位读口 · HR1 登记 + 构建产物声明 · HR2 名册出站门逐键投毒 + 三条必然矛盾 · HR3 植入式零敏感字节(命令串 / url / 用户键名 / 原文事件键 / prompt 正文)+ 每个串都是闭集词 · HR4 计划 ⇄ 名册逐行对拍 · HR5 缺席语义 · HR6 宿主替身(`unarmed`;两 lane 同答)· HR7 源码锚(投影口不另算计划、不读自由文本位)。
|
|
199
|
+
- `scripts/run-seat-wave2-test.mjs` S1 / `scripts/run-seat-carriers-test.mjs` C1 · C5 / `scripts/run-seat-recents-test.mjs` RC1 能力名闭集 +`quickEntryShortcut` / `hooksRoster`(被管表 +2 行);单例清单 +11、公面基线 +6。
|
|
200
|
+
- **新门 `scripts/run-subagent-model-ports-test.mjs`**(CC-1362;**§140 AM**;包侧投影门三件之一):一张词表(两只判官的词集逐个相等)· `default` 一类(引擎纯键查对拍)· 两只断言词读数逐字同 · 准入判官三态逐因、对已装引擎档位展开 + 服务端代理门纯键查差分(35 份配置 × 20 词 × 有无本机表,1400 格)· 两只句口两语同键、出句 ⇔ 判官读数、成因分类器同一只(fail-soft 四句逐字节同 0.98.0)· 敌意入参。门 catalog-routing CR11「别的门钉」表登两只新句口。
|
|
201
|
+
- 新门 `run-engine-unavailable-line-test.mjs`(EU0 – EU7,223 格;含两语过展示出口格);语料 `cc1378`(32 条)进句等值门;生成表加 `SETTINGS_WEB_ADMIN_TOKEN_ENV`(中心凭证拒启出路句点名的两只键取自设置契约)。
|
|
202
|
+
- 新门 `run-self-heal-conversation-left-test.mjs`(A 出口闸 × 口的八种答 · B 行两语 · C 留批等待 · D 六类映射与句 · E 三处同读同答)。
|
|
203
|
+
- 新门 `scripts/run-refusal-noted-projection-test.mjs`;扩 `run-row-sidecar-projection-test.mjs`(G-RF7 五位 / G-RF12)、`run-seat-contract-keys-test.mjs`(P4 三格)、`run-server-7141-pick-projection-test.mjs`(PK6f);`run-cc-message-key-census-test.mjs` 工具收卡臂去向表 `gate` 行 +本键(接入文档那张去向表随 `--table` 重生成)、`run-engine-account-keys-projection-test.mjs` / `run-mods-face-projection-test.mjs` 铸口展开形改三参。
|
|
204
|
+
- `run-decide-ack-outcomes-test.mjs` (new).
|
|
205
|
+
- **新门 `run-engine-swap-crossing-test.mjs`**(CC-1386;151 格):公面 / 方向 × 可排空态 × 知情矩阵(判官真判词八种)/ 回退保护(确认不放行、高水位来源)/ 手搭判词 / 读数规范化 / 指纹绑定 / 回落读口 / 取值器零执行与敌意入参 / 两语句 / 缺席语义 / 反例三枚 / 冻结。CR11 语料 `cc1386` 一只出句口。
|
|
206
|
+
- `### Gates` 条:新门 `run-attachment-route-test.mjs`(判官 4 腿 × 3 位置逐格 · 缺席 / 敌意入参从严 · 两语两面同一原因不分叉 · 信封与装配口接线 · 六腿覆盖面机读表 · 来源句 · 结构:两原因词字面与位置键只在登记处);消息目录域闭集加 `attachments`;目录路由语料 `cc1389`。
|
|
207
|
+
- **Gates**:`run-approval-card-reading-projection-test`(AL-R2 / R2b / R2d / F5 / PG-R6 改口,AL-R6b 登记的两腿差作废,新 AL-R6c / AL-R7)· `run-hitl-gate-honesty-test`(F18①d 改口 + 诊断痕两格)· `run-prompt-blocked-sentence-projection-test`(新 PB9a–j);退役登记 RL-13941;裸句棘轮基线降 1 并记账。
|
|
208
|
+
- `run-interrupt-refusal-note-test.mjs` 扩 IR6g / IR6h(CC-1326;**§140 RQ-2**):全包族扫——三个码字面在 `src/` 里只住 `engineErrorCodes.ts`(构建期生成表除外),其余出现 = 0;六处原留字面的模块都 import 叶里的常量;尺子自证(植入单引号 / 双引号 / 模板串各被扫到,注释里的不算);变异 7 枚。
|
|
209
|
+
- `run-esc-halt-plan-test.mjs` G5 与 `run-interactive-interrupt-emitter-test.mjs` S0b 由「模块零 import」改口为「import 恰一条 = 码常量叶 `INTERRUPT_NOTHING_IN_FLIGHT`」(CC-1326;**§140 RQ-2**),G5 加叶的值级闭包纯度格(零 Node 内建 / 零第三方包)。
|
|
210
|
+
- **门库新增按版本取老一代夹具的统一取代际口 `resolveOldFixture`,服务端夹具代际缺席不再读成产品红 / 整门崩**(CC-1396;纯门件,无行为面):凡某一段需要**指定代**的服务端夹具(底线端见证 / 登记差对照代 / 某一代真拒体)一律经它按版本取,取不到 ⇒ 该段 `SKIPPED-SECTION` 点名缺席代际(收集器记 PARTIAL),门收尾行带 ` · 跳 n 段(夹具缺席,不计入通过数)`;**支持底线以下的代际恒不要求夹具**(必跑档下也不红),底线及以上的代际在必跑档(`SEMA_CC_REQUIRE_SERVER_FIXTURE=1`)下缺席仍红。已按此模板改:`server-7126-pick` F5 · `standing-rows` R9 · `support-range-admission` G7s-3a · `session-policy-deliverable` PS7 / SP-5 / E 端到端 · `server-7144-pick-projection`(对照代按版本取,夹具装载守卫:在场却装不上记一格红而不是顶层崩)· `server-7147-pick-projection`(对照代 7.145.x)· `steer-tier` G-ST5c advisory 臂 · `terminal-cause-projection` G-BD8(无铸点一代缺席 ⇒ 对照段跳过、逐代格照跑,不再 exit 9 整门退出)。自证:`server-7114-fixture` 新增 L3 七格(精确 / 区间 / 缺席点名 / 底线以下不要求 / 普通档 / 预发布 / 非法入参);变异九枚各红(见回执)。 **老一代夹具的「任一更老的一代」类问法并进统一取代际口,底线以下的代际缺席不再读成红**(CC-1396 余批;纯门件,无行为面):门库 `resolveOldFixture` 增认代的尺(服务端版本 / 所捆引擎版本)、区间取版本最高的一份(与夹具列表顺序无关),类问法认代口 `oldGenServerFixture` / `oldGenCoreFixture` 退役。支持底线(`scripts/support-floor.json` 的 server / core 两项)以下的代际在必跑档下也恒 `SKIPPED-SECTION`(不发地板下夹具),底线及以上必跑档缺席仍红。23 道门的约 30 处调用点已迁(`server-7113-fixture` · `request-uplift` · `disable-skills-wire` · `crash-converged-projection` · `user-attachment-seat` · `subagent-injected-wire` · `wiring-manifest-projection`〔含 FLX 直读口〕· `host-turn-settings` · `mcp-wire-caps` · `engine-notice-catalog` · `terminal-table-provenance` · `park-row-card-leg-projection` · `session-memory-erase-projection` · `session-policy-refused-removal` · `upstream-tables` · `plugin-hooks-projection` · `additive-key-passthrough` · `agents-wire-directory` · `server-7145-pick-projection`〔对照代按版本取 + 装载守卫〕· `terminal-cause-projection` · `standing-rows` · `server-7147-pick-projection` · `session-policy-deliverable`),各门收尾行带跳段尾缀;自证:`server-7114-fixture` L1 改钉、新增 L3h–L3k(列表顺序无关 / 引擎尺 / 预发布与入参 / 底线边界两把尺)与 L4(跳段尾缀),`approval-frame-keys` Z2 / Z6 / Z7 改钉同口。 **「每一代」问法并入统一取代际口,32 道直读老一代夹具列表的门全部改走门库,夹具代际缺席不再读成失败**(CC-1396 第三批;纯门件,无行为面):门库在 `resolveOldFixture`(取区间里版本最高的一份)之外新增同一份收集器与同一份缺席口径上的 `resolveOldFixtureAll`(区间里在场的**每一代**都交出来,给逐代对拍 / 逐代读数的段用;`GEN_OPEN_TOP` 作「该版本及以上」的开放上界;另交 `unreadable` = 列表里读不出服务端的项),读列表 / 认代 / 预发布 / 支持底线以下不要求的口径只在门库这一处。已迁:`abort-cause-projection` · `agents-wire-caps` · `allow-rule-shadow-projection` · `approval-respond-parking` · `approval-frame-families-declaration` · `cloud-skill-tool-lists` · `done-replay-single-source` · `hook-matcher-verdict` · `human-turn-encoding` · `mcp-reconnect` · `model-plane-projection` · `parked-resume-startup` · `permission-rule-issue-codes` · `permissions-declaration` · `prompt-delivery-projection` · `resume-refusal-copy` · `rule-readings` · `rule-refusal-sentence` · `sdk-33-pick-projection` · `server-7115-fixture` · `server-7116-fixture` · `server-7119-fixture` · `server-7124-pick` · `skill-tool-lists-projection` · `session-rules-namespace-forms` · `support-floor-projection` · `terminal-facts-projection` · `tick-model-and-config-drift` · `websearch-verdict` · `workflow-decide-refusal`(另 `gate-vocabulary` / `tool-history-mismatch-projection` 门内零老一代读点,只改过时注释并补收尾尾缀)。逐代表三门(`server-7115-fixture` / `server-7116-fixture` / `server-7119-fixture`)与 `skill-tool-lists-projection` / `terminal-facts-projection` 的「逐档都要有夹具」元断言原在必跑档下对支持底线以下的档也判红,改为每个缺的档各问一次统一口(整档在底线以下 ⇒ 点名缺席代际的跳段、不红;跨底线 / 底线及以上 ⇒ 必跑档红),三门另加 T3 钉档区间表与 `tierOf` 同源。自证:`server-7114-fixture` 新增 L3l – L3p(每一代问法:列表顺序无关 / 同版本去重 / 引擎尺共享 / 缺席口径与单代口逐字相同 / 入参纪律 / 底线边界)与 L5(存量棘轮:直读老一代夹具列表的门只在登记里、次数不增、迁走要缩表)。
|
|
211
|
+
- 新门 `run-pending-user-row-projection-test.mjs`(CC-1337)· `run-builtin-output-styles-test.mjs`(CC-1340;读 CC 2.1.316 语料逐字节,语料缺席 ⇒ SKIPPED-SECTION)· `run-url-query-label-stop-test.mjs`(CC-1300;UQ1 – UQ7);扩 `run-approval-card-face-projection-test.mjs`(RI0b / RI7 / RI7a / RI7c / RI7d / RI7e)· `run-approval-hold-scope-test.mjs`(HL1-11)· `run-hitl-allow-feedback-projection-test.mjs`(FB2 / FB6)· `run-seat-contract-keys-test.mjs`(K2fb-3)。
|
|
212
|
+
- 公面基线 `public-export-baseline.json` 运行期 +6(`PENDING_USER_ROW_ID_PREFIX` · `pendingUserRowIdOf` · `pendingUserRowUuidOf` · `isPendingUserRowId` · `BUILTIN_OUTPUT_STYLES` · `builtinOutputStyleOf`);裸句基线 `bare-sentence-baseline.json` +1 文件 / +14 摘要(`src/builtinOutputStyles.ts`,模型面正文,ledger 已追一条)。
|
|
213
|
+
- 新门 `approval-card-request-assembly`:卡请求键三分(事实 / 宿主 / 卡腿专有)在构建产物上用类型检查器量,未分类即红;事实位与宿主位逐键过境;闭集外键不过境;外来体与坏形;三只投影口真读数 ≡ 修前展开形;本包活卡腿 ≡ 装配口且源码不再内联展开。
|
|
214
|
+
- 门:新增 `run-interrupt-deny-delivery-test.mjs`(README Guards 一行);`run-hitl-gate-honesty-test.mjs` F17-PC 扩钩子格;`run-client-core-pure-test.mjs` B7 常量钉改 8000(成文改口)。
|
|
215
|
+
- **新增发版前内部检查门 `scripts/run-p2-clearance-gate-test.mjs`**(CC-1301):包产物与公面零变化。
|
|
216
|
+
- `run-engine-notice-catalog-test.mjs` F9b / F12b 改钉(表外 `source` 与原型键名作 `source`:由「整条读数缺位」改「读数在场、原样透传」)+ 新钉 F9c(表外词读数与已知词读数键集同形)/ F9d(不 trim、不折大小写、逐字节原样)/ F9e(空串与七种非串 ⇒ 缺位且不抛);`run-engine-notice-user-codes-test.mjs` 多 NC5l – NC5o 一组(CC-1356;表外来源词 × 成因三态 × 两语:读口交出读数、句口恒出一句、保守从句不回显词、无「另一条出路」、出路句按成因;判别力自证:已知词的句与保守句不同;空串 / 非串仍缺位)。
|
|
217
|
+
- `run-usage-analytics-projection-test` 扩 H 段、`run-core-value-ports-test` 扩 ⑱ 段(CC-1008;**§140 CO**):行集 × 端口有无 × 字面 0 时序逐格 · 三百组全价行集对独立求和判官 · 坏形 28 种永不抛 · 端口装了不守形 · 种子恒下界 · 逐轮读数 × 终局事实四态 · 单一折法源码直读(零求和 / 归并)· 真编译器型面;端口两件三档编译装得进 · 二十五件旧袋编译红点名两件 · 真引擎逐形同答。
|
|
218
|
+
- 扩既有门(CC-1456 / CC-1421 / CC-1408 / §140 MR2):`run-engine-notice-user-codes-test.mjs` NC4a2 重写(两语新句首 + 六词两语整句零残留)· `run-hook-env-seat-projection-test.mjs` HE10i 改口 + HE10i2 + HE13(拿掉 / 收窄 / 新增三形、不补各形、值律、幂等、与入口单源)· `run-engine-repoint-projection-test.mjs` 工厂形端口夹具、RP14 改形、RP16(工厂 / 证据绑地址对 / 接线错)、RP15 续跑句与崩溃形改读 `continuity`(+RP15b2)· `run-mcp-reconnect-test.mjs` S16;目录路由金样 `cc1284` 一条摘要随新句换;裸句基线 `src/mcpReconnect.ts` 1 → 0 并记账。
|
|
219
|
+
- 扩既有门(接入文档 **§140 RF**):`run-tool-permission-settled-projection-test.mjs` TS-D3 改口 + TS-D6 / D7 / V7b(发送机与判决口 36 形逐体对拍)/ V8e(发送机不再自写回放判读)· `run-resupply-truncated-projection-test.mjs` W1 改口(披露臂在入队臂之后)+ W1b(披露处早退)+ R0(两语无内部词)· `run-client-core-pure-test.mjs` B6 披露处早退 · `run-prompt-suggestions-tail-test.mjs` P2d / P2e / P6e / P7c(P7a 改口)· `run-engine-repoint-projection-test.mjs` RP15 改口 · RP16c / d 改口 + RP16n · `run-edited-approval-acceptance-test.mjs` E4b · `run-mcp-reconnect-test.mjs` S16b 改口 · `run-screen-decision-cards-test.mjs` SC3f / SC4d · `run-workflow-completion-poll-test.mjs` WP12 状态词格 · `run-host-setting-notice-projection-test.mjs` H5e(逐句隔离)· `run-package-hygiene-test.mjs` 加一张协作流程用语表(dist 与 README 全文、文档自 0.111.0 段起)· `run-server-7114-fixture-test.mjs` L5 改走记号层的注释位置读法。缺席折正向词普查与展示面控制符字符类单源两道门回绿:实体形显形口的 CC 控制类改按 Unicode 类名书写,输出逐字节不变。;`run-session-hooks-roster-test.mjs` HR1 / HR2 / HR4 改口 + HR4x(与铸点相矛盾的拿掉行计入 `unlisted`)· `run-seat-devices-test.mjs` SD6b 内部调用点逐处登记(三处)· `run-session-id-path-segment-test.mjs` R1 豁免行 +1(数组方法,非会话动词)· `run-session-mods-seat-test.mjs` MV1 改钉下标 · `run-store-center-wiring-capability-test.mjs` S8f 两侧回到逐元素相等 · `run-task-notification-entry-sampling-test.mjs` NA0 采样口名册 +1(审批答口回执读口对在场位的值采样;续读游标两只文件仍不在射程)· `run-thrown-data-reads-test.mjs` AE1 / AE5:两处外来值落数组改走 `appendOwnElement`(零 `push`) · `run-display-untrusted-projection-test.mjs` C 段:控制符字符类普查补认 Unicode 类名写法(`\p{Cc}` / `\p{Control}` / `\p{gc=…}` / 取反,C0c 尺子自证),现形的四个文件逐处登记理由(登记残留 3 → 7;都是对拍 CC / 服务端同形的文法,或「拒而不洗」的收否判据,不是转义展示面)
|
|
220
|
+
|
|
52
221
|
## 0.110.0(2026-11-08)
|
|
53
222
|
|
|
54
223
|
> 主题:展示出口凭据面:方案词 `Bearer` / `Basic` 紧贴值、不带分隔的粘连形进射程(CC-1282;接入文档 **§139 SA-1 – SA-4**;🔴 行为变,只多遮)· 值扫描按位查表、一遍合计线性(CC-1298;字节不变) ‖ 宿主收卡 —— 宿主已对用户说了「这一行续不了」之后,把包持结局的停驻卡零决断、零句地收下屏(CC-1313;接入文档 **§139 PW-1 – PW-6**;型面加性 + 型面加宽) ‖ 提交幂等重放位的读法单源:开流记录与账本观看泵改走包内唯一读法 `isReplayedTerminal`(CC-1314;接入文档 **§139 DR-1 – DR-5**) ‖ 座位请求「为什么问」两位 `probeReason` / `probeCause`(CC-1316;接入文档 **§139 PR-1 – PR-4**;加性) ‖ Esc 的 interrupt 被引擎拒收的句口 `interruptRefusalNote`(CC-1317;接入文档 **§139 IR-1 – IR-4**) ‖ 宿主通知档位的座位能力位与读写动词(CC-1318;接入文档 **§139 NL-1 – NL-7**;🔴 型面 BREAKING〔窄〕:`LocalSessionsApi` 多两只成员) ‖ 会话 mods 读数两件 —— 座位动词 `readSessionMods` + 能力位 `modsView` + 唯一读口 `sessionModsOf`;部署声明的 mod 包只数读口 `readModsDeploymentPackages`;§130 桌面装载段按内核契约 8 改口(CC-1319;接入文档 **§139 MV-1 – MV-9**) ‖ 请求 `settings.env` 座 —— 交引擎执行的 http hook 头 `$NAME` 与本端执行器同一个环境来源(CC-1322;接入文档 **§139 HE-1 – HE-6**;🔴 型面 BREAKING〔窄〕:宿主自供项源表 +1 必填位) ‖ 旧并发期两条跨族关联臂退役、宿主谓词 `replayedApprovalClosesCardFrame` 在册待退(CC-481 / CC-1332;接入文档 **§139 DF-1 – DF-4**;行为变,只在支持底线以下的服务端上可达) ‖ 审批卡上「是哪只扩展发起的」`requestedBy` 上卡 + 句口 `approvalRequestedBySentence` + 读口 `approvalAskReasonsOf` 上根入口(CC-1327;接入文档 **§139 RB-1 – RB-6**;加性) ‖ 自知块借道臂与一等位臂同一条律合并用户正文、合超服务端上限不发超限体并说一句(CC-1339 / CC-1350;接入文档 **§139 SK-1 – SK-7**) ‖ 请求体 `settings.hooks` 只带引擎属主事件(CC-1335;接入文档 **§139 HK-1 – HK-3**) ‖ 门卫生 —— 在只带跟踪文件的环境里(无夹具 · 无兄弟端树 · 无发布 tag · 一次性单提交仓),门的后段不再被「环境没带来的物料」整段遮住;九道存量门逐道改诚实跳段 / 延后收口,加一枚远端形反钉门;同名影子豁免行 `BrainStatusPhase` 删行(随 SF-3)(CC-1334 / CC-1324;接入文档 **§139 GH-1 – GH-5**;零公面变、零行为变) ‖ MCP 会话内重拨判决 → 句子单源口 `mcpReconnectVerdictDetail`(CC-853;接入文档 **§139 MR-1**;CC-1349 扩到九档、`ok` / `unsettled` 两句迁进消息目录、`invalid` / `not_running` 两句按真语义改口〔行为变:文字〕) ‖ 引擎腿「这台要用户去授权」的纯函数判法 `mcpNeedsReauth`(CC-854;**§139 MR-2**) ‖ 失败读数的状态小段 `mcpFailureStatusSuffix`:`(re-authorize)` 只跟 `unauthorized` 态(CC-1349;**§139 MR-4**;加性) ‖ 会话规则撤销动词「放宽被拒」那一句按真语义改口并收成消息目录单源(CC-968;接入文档 **§139 LS-1 – LS-4**) ‖ 座位回执承载「别处已决」:`respondToToolPermission` 回执多可选位 `settledElsewhere`、渲染端读口 `readToolPermissionSettledElsewhere` 与句口 `toolPermissionSettledLine`;活卡答复口回执读口认赎回臂(`readToolApprovalRespondAck` 读 `accepted: 'parked_redeemed'` 的首赎回 / 回放两形)(CC-1331;接入文档 **§139 SL-1 – SL-6**) ‖ 一次性「引擎改指」的编排口与两证判定口(CC-1139;接入文档 **§139 RP-1 – RP-6**) ‖ 宿主设置产物的输出风格键落风格正文、不再落风格名(CC-1347;接入文档 **§139 OB-1 – OB-6**) ‖ 控制台中心用量体的金额判词 `centerUsageCostOf`(CC-885;接入文档 **§139 CB-1 – CB-6**) ‖ 治理把整条 hooks 腿关掉时,本端跳过口与请求体同判(CC-881;接入文档 **§139 HC-1 – HC-4**):设置来源跳过口 `settingsHooksKeptLocally` 在关腿计划上一律答空、新增插件对位口 `pluginHooksKeptLocally`、关腿计划逐来源逐条记 `settingsDropped` ‖ peer sdk 地板 `>=23.1.0` → `>=25.0.0`、支持底线 sdk 一项同步(CC-1342;接入文档 **§139 SF-1**;🔴 支持承诺收回:钉 sdk 23.x / 24.x 的消费方升 sdk) ‖ 地板越过 24.0.0 同批到期的过渡物退役:协议类名读口第四态 `sdk-instance` 与错误实例挡板(RL-167;行为变)· `compaction_started` 帧回到 switch 里一条 `case`(RL-186)· 地板以上的编译期钉并回源码(RL-187)· 续跑启动失败成因的领先登记(RL-188)(**§139 SF-2**) ‖ 同名型 `BrainStatusPhase` 改再导出 sdk 那一只(**§139 SF-3**;取值同七词) ‖ 地板线值级导入见证(**§139 SF-4**) ‖ 门卫生 —— 会话策略撤销门的铸点见证格(F7)按引擎代际读真字节、并在没有老一代夹具的环境里也执行(CC-1354;纯门件,无行为面,接入文档不动) ‖ 模型能力位三态读法单源 —— 目录行推理位读口 `modelReasoningOf`,看图位 / 推理位 / 档位读口 / 行视图读同一条折词口;探针落笔不再把「没被要求时没思考」写成 `reasoning:false`;引擎「声明不收图 ⇒ 图换成占位说明」通告 `model.capability_downgraded` 的事实读口与两语句口(CC-778;接入文档 **§139 MC-1 – MC-10**) ‖ 审批决断 allow 臂「Yes + 告诉 agent 下一步」反馈位 `feedback` 投影(CC-585;接入文档 **§139 FB-1 – FB-6**) ‖ 座位请求两位 `requestedBy` / `frameReading`:扩展发起者与呈卡帧判因随卡上座(CC-1341 / CC-1345;接入文档 **§139 TP-1 – TP-4**;型面加性 + 🔴 公面常量值变) ‖ 被挡臂终局句的出句口 `runBlockedText` 按名转出根入口(CC-1346;web-client [C756];接入文档 **§139 RT-1**) ‖ 审批卡请求多一只可选位 `taskId`(这张卡所属腿的 id:主腿 = run id,委派子代腿 = 子代会话 id;CC-883;接入文档 **§139 RI-1 – RI-4**) ‖ 这张卡收不收「编辑后批准」的根导出判口 `editedApprovalAcceptanceOf` 与拒发那一句转录行 `editedApprovalRefusedLine`(CC-1306;接入文档 **§139 ER-1 – ER-6**) ‖ 后台子代委派卡的徽章模型位:`task_started.model` 落徽章台账 `engineInlineTaskStats`(CC-1358;接入文档 **§139 BM**) ‖ 服务端 7.137.0 随附六件的逐件落点核对(CC-1044;接入文档 **§139 S7137-1 – S7137-6**;零代码改动、零公面变)‖ 门补 14 格:服务端黑盒 G6 – G10 的客户端半改用真类型包错误对象走全链(**§139 S7137-7**)‖ README 门清单里本门一行对计划审阅决断体 `checkpointId` 的说法订正(**§139 S7137-8**) ‖ 问题卡在钩子车道必问 —— 钩子的拒不再能关掉引擎对人的提问(CC-1359;接入文档 **§139 AN-1 – AN-3**) ‖ 输入作者词与出身词:一只读口、闭集 + 读不出位(CC-1069;接入文档 **§139 AU**) ‖ 停驻 fail-soft 收场句:引擎答了且拒之后卡不会自己再出现,出路句改说「发一句话重开」(CC-1344;接入文档 **§139 FW-1 – FW-3**);其余收场腿的出路句一字不变 ‖ 记忆暴露通告的开头句按引擎事实改口(会话的记忆被标为暴露于外部,不再说「收进了外部来源的内容」),三只通告句里外来串超长截断处带省略标记(CC-1377;接入文档 **§139 MX-1 / MX-2**) ‖ workflow 完成的轮询兜底归包 —— 读面终局读口 `workflowRunTerminalReadingOf` · 读面注入口 `installWorkflowRunReader` 取代 `installWorkflowStatusProbe` · 轮询来路见终局经同一铸点交一次(CC-1197;接入文档 **§139 139-WF**;🔴 型面 BREAKING + 行为变) ‖ 服务端 7.147.0 预发布构建 → 发布版换钉:请求成员本版读者读不出的拒(新提交 400 / 续跑四门 409)读口 `unreadRequestMembersFromError` 与句口 `unreadRequestMembersContent`、车道词 `none` 五处读点逐处核对、随包 wire 变更产物新增 79 条逐条对表(CC-1368;接入文档 **§139 S7147-1 – S7147-7**;加性:根入口运行期 +2) ‖ 审批卡请求多一只可选位 `inputSource`(卡上入参取自记录侧 `'record'` 还是回落到事件流 `'stream'`;座位请求同名位随过境口上座;CC-1366;接入文档 **§139 IS-1 – IS-5**) ‖ 换钉类型包 37.0.0(锁步服务端 7.147.0;CC-1376;接入文档 **§139 PK-1 – PK-9**):决断类续跑「这一行自己的拒」读成行坏、不再铸绑定不符安全停、不铸瞬时(🔴 行为变)· 判活口 `probeEngineAlive` 单参(🔴 型面 BREAKING,窄)· 推送结果行位 `writer_side` 一句(加性)· 赎回臂 `rememberApplied` 按布尔读(型面加宽) ‖ 会话箱车道三载体 `crossSessionMessage` / `crossSessionNotice` / `inboxNotice` 与侧记 `_sema_provenance` 的投影:第四条车道 `inbox_notice`、回执 / 空闲通告的 typed 正体、加性 chrome 臂 `session_box_notice`、收件箱通告跨 run 去重(CC-138;接入文档 **§139 SB-1 – SB-11**;加性 + 型面加宽 + 行为变) ‖ 读流器耗尽的按因读口 `streamEndedReasonOf` · 失败呈现停驻臂按因分句 · 判型谓词改为它的派生口(CC-877;退役登记 RL-877 执行;接入文档 **§139 RE-1 – RE-5**;加性 + 行为变:文字) ‖ 本机引擎三项到期过渡物:座位本机半边 `lifecycle` 必选、宿主自写 `lastBootError` 那一臂删 · 空闲谓词后台合取项改按支持底线退役 · 三只弃用型本版不删(CC-1173;退役登记 RL-12679 执行;接入文档 **§139 ES-1 – ES-3**;🔴 型面 BREAKING〔窄〕+ 行为变:出站门拒不带 `lifecycle` 的本机半边)
|