@sema-agent/client-core 0.94.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 +521 -0
- package/README.md +104 -57
- package/dist/adapt/arms.js +12 -7
- package/dist/adapt/panelTasks.js +4 -10
- package/dist/adapt/toolCards.d.ts +1 -0
- package/dist/adapt/toolCards.js +18 -5
- package/dist/adapt/wireShapes.js +5 -24
- package/dist/adapter/activeRunSelfHeal.d.ts +12 -3
- package/dist/adapter/activeRunSelfHeal.js +50 -16
- package/dist/adapter/downstream/eventToSdkMessage.js +33 -18
- package/dist/adapter/downstream/terminalToSdkResult.js +19 -12
- package/dist/adapter/runStream.js +30 -46
- package/dist/adapter/types.d.ts +7 -0
- package/dist/adapter/types.js +15 -0
- package/dist/agentSession/backgroundView.js +5 -1
- package/dist/agentSession/engineAgentRegistryRead.js +7 -5
- package/dist/agentSession/engineSessionBackgroundStop.js +25 -17
- package/dist/agentsWireCaps.d.ts +2 -0
- package/dist/agentsWireCaps.js +13 -2
- package/dist/approvalDecidedByCapability.d.ts +0 -1
- package/dist/approvalDecidedByCapability.js +2 -7
- package/dist/approvalsStreamLiveCapability.d.ts +0 -1
- package/dist/approvalsStreamLiveCapability.js +2 -6
- package/dist/atMostOnce.d.ts +8 -0
- package/dist/atMostOnce.js +36 -0
- package/dist/attachmentSeatCapability.d.ts +0 -1
- package/dist/attachmentSeatCapability.js +0 -3
- package/dist/attachmentsWireCaps.js +11 -6
- package/dist/bashExitReading.d.ts +10 -0
- package/dist/bashExitReading.js +12 -0
- package/dist/callerCwdCapability.d.ts +0 -5
- package/dist/callerCwdCapability.js +2 -13
- package/dist/centerWiringCapability.d.ts +1 -7
- package/dist/centerWiringCapability.js +18 -27
- package/dist/classifierStatus.js +4 -4
- package/dist/classifierVerdictWire.js +4 -16
- package/dist/clientSlice.js +1 -1
- package/dist/cloudConfigWireCaps.d.ts +3 -3
- package/dist/cloudConfigWireCaps.js +85 -43
- package/dist/compensations.js +1 -1
- 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/cycleOrder.d.ts +15 -0
- package/dist/cycleOrder.js +45 -0
- package/dist/decideFailureNote.js +7 -2
- package/dist/decideReceipt.d.ts +2 -1
- package/dist/decideReceipt.js +39 -14
- package/dist/declared/supportFloorDeclared.d.ts +1 -0
- package/dist/declared/supportFloorDeclared.js +5 -0
- package/dist/deviceExecutorManagementCapability.d.ts +0 -1
- package/dist/deviceExecutorManagementCapability.js +7 -16
- package/dist/deviceRebind.d.ts +88 -0
- package/dist/deviceRebind.js +242 -0
- package/dist/displayUntrusted.d.ts +8 -3
- package/dist/displayUntrusted.js +661 -63
- package/dist/engineAgentAbsence.d.ts +2 -2
- package/dist/engineAgentPanelStore.d.ts +8 -18
- package/dist/engineAgentPanelStore.js +19 -537
- package/dist/engineCapReader.d.ts +6 -6
- package/dist/engineCapReader.js +30 -43
- package/dist/engineCapsCache.d.ts +13 -2
- package/dist/engineCapsCache.js +276 -44
- package/dist/engineCredentialRequirement.d.ts +9 -0
- package/dist/engineCredentialRequirement.js +23 -0
- package/dist/engineDirectory.d.ts +79 -0
- package/dist/engineDirectory.js +186 -0
- package/dist/engineEnvSourcing.d.ts +53 -0
- package/dist/engineEnvSourcing.js +81 -0
- package/dist/engineErrorCodes.d.ts +28 -4
- package/dist/engineErrorCodes.js +68 -25
- package/dist/engineIdentity.js +2 -0
- package/dist/engineNoticeCodes.d.ts +17 -0
- package/dist/engineNoticeCodes.js +57 -3
- package/dist/engineWireSdk.js +2 -2
- package/dist/engineWordRenames.d.ts +8 -0
- package/dist/engineWordRenames.js +13 -0
- package/dist/executionLaneCapability.d.ts +2 -3
- package/dist/executionLaneCapability.js +18 -23
- package/dist/fileHistoryCaptureCapability.d.ts +14 -1
- package/dist/fileHistoryCaptureCapability.js +72 -6
- package/dist/fileHistoryLegNotice.d.ts +3 -2
- package/dist/fileHistoryLegNotice.js +51 -2
- package/dist/fleet/bgSubagentRow.d.ts +15 -0
- package/dist/fleet/bgSubagentRow.js +67 -0
- package/dist/fleet/fleetLedger.d.ts +3 -0
- package/dist/fleet/fleetLedger.js +153 -122
- package/dist/fleet/fleetProjection.d.ts +1 -3
- package/dist/fleet/fleetProjection.js +19 -19
- package/dist/fleetAgentPanelProjection.d.ts +4 -17
- package/dist/fleetAgentPanelProjection.js +7 -197
- package/dist/fleetAgentRowLike.d.ts +16 -0
- package/dist/fleetAgentRowLike.js +1 -0
- package/dist/fleetTaskDesc.js +4 -17
- package/dist/gateOutcome.d.ts +12 -1
- package/dist/gateOutcome.js +87 -18
- 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/sdkFactTables.d.ts +2 -0
- package/dist/generated/sdkFactTables.js +17 -0
- package/dist/generated/settingsSchemaFns.d.ts +13 -0
- package/dist/generated/settingsSchemaFns.js +75 -0
- package/dist/generated/toolNameTables.d.ts +1 -0
- package/dist/generated/toolNameTables.js +1 -0
- package/dist/headlessPermissionModeWire.d.ts +1 -1
- package/dist/headlessPermissionModeWire.js +1 -1
- package/dist/headlessReconnectWire.js +49 -20
- package/dist/hitl/allowRuleShadow.d.ts +1 -1
- package/dist/hitl/allowRuleShadow.js +49 -8
- package/dist/hitl/approvalCompleteParked.d.ts +1 -0
- package/dist/hitl/approvalCompleteParked.js +14 -0
- package/dist/hitl/approvalEndingCause.d.ts +7 -0
- package/dist/hitl/approvalEndingCause.js +71 -0
- package/dist/hitl/approvalHolds.d.ts +12 -2
- package/dist/hitl/approvalHolds.js +53 -2
- package/dist/hitl/approvalsFeed.js +23 -11
- package/dist/hitl/askGateWire.d.ts +2 -1
- package/dist/hitl/askGateWire.js +26 -1
- package/dist/hitl/askParkRowRouting.js +1 -1
- package/dist/hitl/automaticAnswerVerdict.d.ts +1 -1
- package/dist/hitl/automaticAnswerVerdict.js +15 -10
- package/dist/hitl/crashConverged.js +2 -0
- package/dist/hitl/decisionConflict.d.ts +3 -0
- package/dist/hitl/decisionConflict.js +41 -0
- package/dist/hitl/decisionRefusal.d.ts +12 -0
- package/dist/hitl/decisionRefusal.js +63 -4
- package/dist/hitl/frameRouter.d.ts +0 -1
- package/dist/hitl/frameRouter.js +32 -57
- package/dist/hitl/gateLedger.d.ts +5 -0
- package/dist/hitl/gateLedger.js +21 -0
- package/dist/hitl/hitlBridge.d.ts +17 -2
- package/dist/hitl/hitlBridge.js +91 -55
- package/dist/hitl/hitlHostSurface.js +3 -11
- package/dist/hitl/livePendingAsk.d.ts +16 -6
- package/dist/hitl/livePendingAsk.js +36 -4
- 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/parkExpiryJudgements.d.ts +19 -0
- package/dist/hitl/parkExpiryJudgements.js +46 -0
- package/dist/hitl/parkResolver.d.ts +4 -7
- package/dist/hitl/parkResolver.js +12 -34
- package/dist/hitl/parkRowBirthWait.d.ts +1 -0
- package/dist/hitl/parkRowBirthWait.js +2 -2
- package/dist/hitl/persistedRulesWire.js +5 -1
- package/dist/hitl/planReviewWire.d.ts +3 -2
- package/dist/hitl/planReviewWire.js +154 -50
- package/dist/hitl/replayedApproval.d.ts +9 -0
- package/dist/hitl/replayedApproval.js +139 -10
- package/dist/hitl/resumeRunningCard.d.ts +2 -0
- package/dist/hitl/resumeRunningCard.js +15 -4
- 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 +39 -7
- package/dist/hitl/toolApprovalWire.js +351 -61
- package/dist/hookMatcherVerdict.d.ts +1 -9
- package/dist/hookMatcherVerdict.js +21 -61
- package/dist/hooksWireCaps.js +40 -8
- package/dist/host.d.ts +5 -0
- package/dist/host.js +3 -1
- package/dist/hostCallbackGuard.d.ts +2 -0
- package/dist/hostCallbackGuard.js +31 -0
- package/dist/index.d.ts +48 -17
- package/dist/index.js +36 -15
- package/dist/interactiveInterrupt.d.ts +8 -0
- package/dist/interactiveInterrupt.js +54 -0
- package/dist/limitsWire.d.ts +5 -0
- package/dist/limitsWire.js +49 -3
- package/dist/liveModelCatalog.d.ts +95 -0
- package/dist/liveModelCatalog.js +297 -32
- package/dist/mcpEngineLeg.d.ts +25 -0
- package/dist/mcpEngineLeg.js +71 -15
- package/dist/mcpPanel.js +2 -1
- package/dist/mcpProbeCapability.d.ts +0 -5
- package/dist/mcpProbeCapability.js +2 -12
- package/dist/mcpReconnect.d.ts +1 -3
- package/dist/mcpReconnect.js +10 -5
- package/dist/memoryComplianceCapability.d.ts +0 -5
- package/dist/memoryComplianceCapability.js +2 -12
- package/dist/memoryOriginCapability.d.ts +0 -5
- package/dist/memoryOriginCapability.js +2 -12
- package/dist/memorySpecWire.js +2 -2
- package/dist/memoryVerbsWire.d.ts +1 -1
- package/dist/memoryVerbsWire.js +4 -0
- package/dist/model/liveCatalogShape.d.ts +14 -0
- package/dist/model/liveCatalogShape.js +71 -0
- package/dist/model/modelSupplyRules.d.ts +1 -0
- package/dist/model/modelSupplyRules.js +30 -9
- package/dist/model/modelsPolicy.d.ts +21 -0
- package/dist/model/modelsPolicy.js +90 -0
- package/dist/modelIdentityResolvability.d.ts +2 -2
- package/dist/modelIdentityResolvability.js +14 -12
- package/dist/modelSwitchFallback.d.ts +69 -0
- package/dist/modelSwitchFallback.js +206 -0
- package/dist/noticePresentation.d.ts +68 -0
- package/dist/noticePresentation.js +247 -0
- package/dist/notifications.js +12 -11
- package/dist/outputStyleSeatCapability.d.ts +0 -2
- package/dist/outputStyleSeatCapability.js +2 -10
- package/dist/ownKey.d.ts +8 -0
- package/dist/ownKey.js +66 -0
- package/dist/panelReduce.d.ts +114 -0
- package/dist/panelReduce.js +1135 -0
- package/dist/panelStateHolder.d.ts +17 -0
- package/dist/panelStateHolder.js +201 -0
- package/dist/peerFrames.js +13 -9
- package/dist/peerLaneCapability.d.ts +0 -1
- package/dist/peerLaneCapability.js +2 -6
- package/dist/permissionModesCapability.d.ts +0 -5
- package/dist/permissionModesCapability.js +5 -16
- package/dist/permissionRuleIssue.js +0 -3
- package/dist/permissionRulesWriteCapability.d.ts +0 -1
- package/dist/permissionRulesWriteCapability.js +2 -6
- package/dist/permissionsAllowGrantCapability.d.ts +0 -1
- package/dist/permissionsAllowGrantCapability.js +3 -9
- package/dist/permissionsDeclaration.d.ts +8 -0
- package/dist/permissionsDeclaration.js +101 -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 -17
- package/dist/promptBlockedCopy.d.ts +5 -0
- package/dist/promptBlockedCopy.js +35 -0
- package/dist/promptDelivery.js +0 -8
- 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.d.ts +18 -1
- package/dist/resumeRefusalCopy.js +127 -32
- package/dist/retryStatus.d.ts +9 -1
- package/dist/retryStatus.js +9 -2
- package/dist/rewindArchiveCapability.d.ts +5 -14
- package/dist/rewindArchiveCapability.js +18 -61
- package/dist/rewindArchiveReading.d.ts +15 -0
- package/dist/rewindArchiveReading.js +56 -0
- package/dist/rewindEngineAction.d.ts +21 -0
- package/dist/rewindEngineAction.js +36 -0
- package/dist/rewindWireCaps.d.ts +2 -1
- package/dist/rewindWireCaps.js +1 -0
- package/dist/ruleCompileVerdict.d.ts +9 -1
- package/dist/ruleCompileVerdict.js +29 -4
- package/dist/runTerminal.d.ts +15 -12
- package/dist/runTerminal.js +60 -35
- package/dist/sandboxWire.js +13 -0
- package/dist/sdkRegistryTransit.d.ts +2 -1
- package/dist/sdkRegistryTransit.js +1 -0
- package/dist/sealedKeyCapability.d.ts +0 -5
- package/dist/sealedKeyCapability.js +3 -15
- package/dist/seam.js +4 -2
- package/dist/seatContract.d.ts +125 -34
- package/dist/seatContract.js +583 -179
- package/dist/sessionIdSegment.d.ts +1 -0
- package/dist/sessionIdSegment.js +11 -0
- package/dist/sessionMemoryErase.d.ts +1 -1
- package/dist/sessionMemoryErase.js +6 -1
- package/dist/sessionMemoryStatus.js +3 -2
- package/dist/sessionPolicyCapability.d.ts +0 -1
- package/dist/sessionPolicyCapability.js +2 -6
- package/dist/sessionReadRedactionCapability.d.ts +0 -5
- package/dist/sessionReadRedactionCapability.js +2 -13
- package/dist/sessionSyncFileHistory.d.ts +4 -0
- package/dist/sessionSyncFileHistory.js +66 -0
- package/dist/sessionSyncFileHistoryCapability.d.ts +0 -2
- package/dist/sessionSyncFileHistoryCapability.js +2 -9
- package/dist/skillToolListsCapability.d.ts +0 -2
- package/dist/skillToolListsCapability.js +2 -9
- package/dist/skillsWireCaps.d.ts +4 -0
- package/dist/skillsWireCaps.js +66 -1
- package/dist/sqlEngineCapability.d.ts +0 -1
- package/dist/sqlEngineCapability.js +9 -14
- package/dist/steerPriorityCapability.d.ts +0 -2
- package/dist/steerPriorityCapability.js +3 -12
- package/dist/storePostureCapability.d.ts +1 -5
- package/dist/storePostureCapability.js +16 -22
- package/dist/streamDrainingLegs.d.ts +6 -0
- package/dist/streamDrainingLegs.js +23 -0
- package/dist/subagent/engineCompactWire.js +13 -38
- package/dist/subagent/engineDelegatedPrompt.js +10 -6
- package/dist/subagent/engineSubagentOutput.d.ts +0 -1
- package/dist/subagent/engineSubagentOutput.js +5 -20
- package/dist/subagent/engineSubagentSteer.js +7 -5
- package/dist/subagent/engineSubagentTail.d.ts +0 -1
- package/dist/subagent/engineSubagentTail.js +7 -32
- package/dist/subagentContentStore.js +7 -18
- package/dist/supportFloor.d.ts +1 -0
- package/dist/supportFloor.js +15 -14
- package/dist/systemReminderTag.d.ts +1 -0
- package/dist/systemReminderTag.js +8 -0
- package/dist/terminalStatuses.d.ts +30 -0
- package/dist/terminalStatuses.js +67 -0
- package/dist/toolHistoryMismatch.d.ts +0 -3
- package/dist/toolHistoryMismatch.js +3 -7
- package/dist/toolResult.d.ts +6 -1
- package/dist/toolResult.js +90 -37
- package/dist/toolResultContent.d.ts +2 -0
- package/dist/toolResultContent.js +63 -0
- package/dist/types/engineState.d.ts +2 -1
- package/dist/usageAnalytics.d.ts +146 -0
- package/dist/usageAnalytics.js +335 -0
- package/dist/userInvokedSkillsCapability.d.ts +0 -2
- package/dist/userInvokedSkillsCapability.js +2 -9
- package/dist/webSearchBackendCapability.d.ts +0 -1
- package/dist/webSearchBackendCapability.js +3 -7
- package/dist/webSearchWireCaps.js +3 -11
- package/dist/wireErrorTriage.d.ts +2 -0
- package/dist/wireErrorTriage.js +34 -5
- package/dist/wireFailureShape.d.ts +23 -2
- package/dist/wireFailureShape.js +88 -43
- package/dist/wireRefusalCopy.js +2 -18
- package/dist/workflowClient.js +7 -11
- package/dist/workflowsJournalCapability.d.ts +0 -1
- package/dist/workflowsJournalCapability.js +2 -6
- package/dist/writeProtectionCapability.d.ts +0 -1
- package/dist/writeProtectionCapability.js +5 -10
- package/docs/INTEGRATION-CLIENTS.md +2279 -27
- package/package.json +5 -5
- package/dist/engineCapsGenerationGuard.d.ts +0 -4
- package/dist/engineCapsGenerationGuard.js +0 -19
- package/dist/panelRunningHistory.d.ts +0 -22
- package/dist/panelRunningHistory.js +0 -82
- package/dist/registryConflict.d.ts +0 -3
- package/dist/registryConflict.js +0 -44
package/CHANGELOG.md
CHANGED
|
@@ -49,6 +49,527 @@
|
|
|
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
|
+
|
|
232
|
+
## 0.95.0(2026-10-12)
|
|
233
|
+
|
|
234
|
+
> 主题:终端 1.0.147 对接版 —— 引擎 7.48 / 服务端 7.124 / 设置契约 11 / sdk 19 提货(型面 BREAKING:终态词表 / 谓词改名带属主、`absent` 退词、七条过渡臂退役);面板行归约口;能力位读器族与终态词表收口;审批成因闭集与排空期重开;审批卡跨腿持有(同一张卡只在一条腿上出);技能工具表随能力位上 wire;0.95.0 窗内欠账按票收口(各条见 Fixed / Changed)。
|
|
235
|
+
|
|
236
|
+
> 净值(相对 0.94.0):根公面运行期导出 1547 → 1587;测试钩 74 → 73;门清单 209 → 232;退役登记在册 26 → 37 行(本版退 9 = RL-97 / RL-82 / RL-91 / RL-22 / RL-58 / RL-54 / RL-16 / RL-46 / RL-115;RL-37 重分类为常驻移出在册)、已退役 38 → 47 行;棘轮:`unknownExport` 525 → 574、`bareUnknownReturn` 0 → 3、B4 20 → 21、可移植性 kernel 26 → 28 / adapt 41 → 46 / index 277 → 298、单例高风险上限 145 → 131、带理由的吞 46 → 47;在册局限段 71 条(新增为主,含射程扩与删);peer sdk 地板 `>=18.1.0` → `>=19.0.0`;开发依赖引擎 `~7.47.0` → `~7.48.0`、sdk `^18.1.0` → `^19.0.0`、设置契约 `^10.0.0` → `^11.2.0`。
|
|
237
|
+
|
|
238
|
+
### Removed
|
|
239
|
+
|
|
240
|
+
- 无根入口删除名。包内件 `panelRunningHistory`(running 历史 / ended 账 / 缓着的首见终态行三张模块级表)整文件删除,三本账成为面板记录的字段(CC-76;不在公面)。
|
|
241
|
+
- `displayUntrusted` 里一枚读数恒假的只含反引号的正则(`isQuoteChar` 末尾那一枚;运行期零读者,此前以死字面量随包出)删除;`isQuoteChar` 逐值不变,展示出口输出逐字节不变(CC-552;**§122 GT-3**)。
|
|
242
|
+
- **`HealthResponse` 不再带扁平 `restart` 位**(CC-521 ⑹ / CC-540 F;接入文档 **§122 UP-6**):`/health` 上与 `engineSignal.restart` 同一次读数的扁平键是契约包标了弃用的方言位,本包对它零读点(漂移判决只读 `restartRequired`)。要读引擎态的宿主读 sdk `EngineHealth.engineSignal`(服务端 ≥ 7.123.0;更老的服务端体里没有信号)。型面 BREAKING:读 `HealthResponse['restart']` 的写法编译红一次。
|
|
243
|
+
- 云配置告警措辞删两臂 `hosts-grandfathered` / `legacy-governance-lifted`(CC-521 ⑴;**§122 UP-3**):settings-schema 11.0.0 删了这两只告警种类;仍发它们的老控制面 ⇒ 落「本端认不出的告警」那一句(warn)。
|
|
244
|
+
- **座位旧目录形 `SeatModelCatalog` / `SeatModelInfo` / `isSeatModelCatalog` 删除**(CC-465;接入文档 **§122 WB-4**;🔴 型面 BREAKING):座位 `listModels()` 改交在线目录 `LiveModelCatalog`(回体读口 `readLiveModelCatalog` 的产物),出站门与回体读口同一只行判据。旧形按 `id` 键行、拒没有 `id` 的行,而服务端的提交值是行的 `name`(`id` 可缺、可在两行上相同)。宿主把回体过读口、交 `reading.catalog`;渲染端读 `liveModelRowsOf` / `liveDefaultModelOf`。
|
|
245
|
+
- **会话内 MCP 重拨注入面的 `{ server }` 适配形退役**(CC-432;接入文档 **§122 RD-4**;🔴 型面 BREAKING):`McpReconnectClientLike.sessions.mcpReconnect` 的第二参由 `{ server }` 对象改为裸串 `server` —— 即 sdk `SessionsResource.mcpReconnect(sessionId, server, opts?)` 的签名;旧适配形不留双读。终端 / 桌面端零处调用 `reconnectMcpServer`;**网页端有一处活的适配器**(`ui/lib/engine/engine-observability-wire.ts:660-682` 的 `toMcpReconnectClientLike`)必改:删适配器、把 `createEngineClient()` 的实例直接传给 `reconnectMcpServer`。硬破坏三句:判决函数的注入面第二参类型由 `{ server: string }` 变为 `string`;把 `(sessionId, { server }, opts)` 形的适配器赋给注入面的写法编译红一次,删掉适配器、直接传 sdk 客户端即可;JS 宿主不改不会抛 —— 适配器收到的是裸串,读出的 `server` 是 undefined,请求被服务端按体形拒绝,判决落 `failed`(破坏性的「先关后拨」不会发生)。
|
|
246
|
+
- **`providerRejectionResend` 退出根入口**(CC-309;退役登记 RL-22;接入文档 **§122 RX-1**;🔴 型面 BREAKING,运行期导出 −1):0.93.0 起弃用、预告 0.94.0 删、改窗 0.95.0。合成终局行上的 `_sema_provider_rejection_resend`(`{ resend, text }`)与同一行行尾那一句不变 —— 包内铸点照用同一只函数;端读行上的键(`-p` 车道读结果帧 `errors[0]`)。具名型 `ProviderRejectionResend` 留在根入口。硬破坏三句:删了就是删了、不留别名、`import { providerRejectionResend }` 编译红。
|
|
247
|
+
- **二十九只逐只失效口 `forget*Reading` 与读器工厂的 `forget` 口删除**(CC-377;退役登记 RL-54;**§122 RX-2**;🔴 型面 BREAKING,运行期导出 −29;逐名见接入文档 §2z):0.92.0 起读器的格随能力缓存代际自动失效,失效口降为可选;三版预告之后删除。宿主在引擎温切处只调 `invalidateEngineCaps(baseUrl)`,各读器的 `observed*` 随即答 `unobserved`;单只清格用各读器的测试钩 `__reset*ReadingsForTests`。终端 `sema/*Capability.ts` 里十一行 `forgetXxxReading,` 死再导出换钉时编译红(删行)。
|
|
248
|
+
- **`ApprovalCardRequest.persistedRuleShadowed` 删除**(CC-401;退役登记 RL-58;**§122 RX-3**;🔴 型面 BREAKING,`ApprovalCardRequest` 删一成员):0.92.0 起它是结构化披露 `allowRuleShadow` 同一读数的派生位、保留一版。被越级的规则文本读 `allowRuleShadow` 的 `persisted` 成员条目,让位判定读 `approvalAllowRuleShadowed`(读法不变);活卡帧腿与耐久行腿两处派生写法一并删。`ToolApprovalFrame.persistedRuleShadowed`(wire 入参键,老一代服务端仍发)与读口对老两键的读法不动。已知限制 KL-558(旧卡字段只从 `persisted` 成员派生)随字段删除而过时,从已知限制档删行。
|
|
249
|
+
- **`normalizeShellPermissionModeForWire` 的第二参删除**(CC-426;退役登记 RL-82;**§122 RX-4**;🔴 型面 BREAKING):签名收成 `(mode)`,读数与行为一个字节不变(0.94.0 起第二参就不读)。TS 里两实参调用编译红(删第二实参);纯 JS 宿主多带的实参被忽略。
|
|
250
|
+
- **`modelSetupDecision` 的三态入参臂删除**(CC-322 ③;退役登记 RL-91;**§122 RX-5**;🔴 型面 BREAKING):第一参只收 `ModelIdentityReading`。TS 里交三态串编译红(改交读数);🔴 行为面(纯 JS 宿主):交三态串读成不成形的读数 ⇒ `proceed`(不弹、不抛;此前 `'not_resolvable'` 串按 0.93.x 读成 `offer_setup` / `explain_unconfigured`)。读数入参的答案一字不变。
|
|
251
|
+
- **「只续已有会话」被拒读口的粗码兜底删除**(CC-281;退役登记 RL-16;**§122 RX-6**):`requireExistingSessionRefusalFromError` 只认带码形(404 `resume.session_not_found`、422 `request.field_conflict`);服务端 ≤7.114.x 的状态粗码形(404 `not_found.resource` / 422 `request.unprocessable` + message 尾括注)读成 `null`。随支持底线抬升同批执行(见 Changed)。
|
|
252
|
+
- **`ReopenPlanReviewOpts.decisionHandedOver` 删除**(CC-346;**§122 SC-4**):计划审阅重开选项上的宿主交出窗谓词(0.83.4 起)与 `notePlanReviewDecisionHandedOver` 决断台账(0.85.0 起)答的是同一件事「这条任务的决断已交出」;读后复核此前在台账没说话时再问谓词。三端零调用方;交出只经台账登记一条读法。型面 BREAKING:对象字面量里传这一位编译红;JS 宿主传了不抛、不再有任何效果(登记交出改调 `notePlanReviewDecisionHandedOver`)。
|
|
253
|
+
- 包内件:面板行台账里一只只写不读的集合(只服务已退役的委派卡先到先绑回落臂)删除(CC-347;不在公面)。
|
|
254
|
+
- **能力位读数型去掉两代读法那一档**(CC-344;接入文档 **§122 SB-5 / SB-6**;🔴 型面 BREAKING):`CenterWiringReading` 去 `{ kind: 'not_reported' }` 一臂(`centerWiring` 键缺席 = 没接中心 ⇒ `none`)、`ExecutionLaneIsolatedAbsence` 去 `'not_reported'` 一词(`isolated` 缺席按手分);`toolsRunHereFromExecutionLane` 去第二参 `legacyInference`(调用方旁证;判官只剩能力位,没报 / 未观测 ⇒ `false`)。两只读数型三端零读点;**终端必改**:`sema/skillsWire.ts:167` 的两参调用改一参,并在读能力位前先 `await engineCapsSettled(baseUrl, { withinMs })` —— 🔴 行为差:读数 `unobserved` 且旁证为真时,0.94.0 答真、0.95.0 答假,能力位落地之前提交的那一拍技能规格不再带 `baseDir`。硬破坏三句:两只读数型各少一员、判据口少一参;对那一臂 / 那一词穷举分支、或传两参的写法编译红一次,删掉即可;JS 宿主不改不会抛 —— 那两档永不再出现,多传的实参被忽略。
|
|
255
|
+
- 测试钩 `__resetSubagentStreamCapCacheForTests` / `__resetSubagentOutputCapCacheForTests`(0.95.0 退出公面;CC-344;**§122 SB-1**):子代尾随 / 终报的私有能力表删了,无表可清;清能力读数用 `__resetEngineCapsCacheForTests`。**终端必改**:`sema/engineSubagentOutput.ts:16` 与 `sema/engineSubagentTail.ts:35` 两处非测试文件再导出这两个名,换钉即编译红,删掉再导出名即可。
|
|
256
|
+
- **终态词表与谓词改名带属主,旧名不留别名**(CC-78;接入文档 **§122 TW-1**;🔴 型面 BREAKING,运行期导出 −10 / +14,型 −3 / +6):此前「这条 run / 任务结了没」散在八张表、八种命名里,其中公面那张 `RUN_TERMINAL_STATUSES` 把 run 行状态的终态三词与 fleet / 通知面的 `killed` 并在一起。本版每张表只抄一个具名上游的终态分区,表名带属主,住同一处。**谁受伤**:import 下列旧名的宿主编译红 —— 表 `TERMINAL_CAUSE_KINDS` / `RUN_TERMINAL_STATUSES` / `RUN_TERMINAL_NOT_SUCCESS_STATUSES` / `TASK_NOTIFICATION_TERMINAL_STATUSES` / `TERMINAL_FLEET_TASK_STATUSES` / `CLAIM_RELEASED_STATES`,谓词 `isTerminalCauseKind` / `isTerminalStatus` / `isTerminalNotSuccess` / `isTaskNotificationTerminalStatus`,型 `TerminalCauseKind` / `RunTerminalStatus` / `RunTerminalNotSuccessStatus`。**改法**:按读的那一面换属主名(逐名对照见 §122 TW-1)—— 终局因由 → `CORE_TERMINAL_CAUSE_KINDS` / `isCoreTerminalCauseKind`;run 行状态(`runs.get`)→ `SDK_RUN_TERMINAL_STATUSES` / `isSdkRunTerminal` / `isSdkRunTerminalNotSuccess`;fleet 行 → `SDK_FLEET_TASK_TERMINAL_STATUSES` / `isSdkFleetTaskTerminal` / `isSdkFleetTaskTerminalNotSuccess`;通知(`task_notification` 帧 / `<task-notification>` 的 `<status>`)→ `CORE_TASK_NOTIFICATION_TERMINAL_STATUSES` / `isCoreTaskNotificationTerminal` / `isCoreTaskNotificationTerminalNotSuccess`;登记任务 / TaskOutput 卡 → `CORE_SEMA_TASK_TERMINAL_STATUSES` / `isCoreSemaTaskTerminal`。🔴 旧 `RUN_TERMINAL_STATUSES` 不是任何一张新表的改名:新 run 行表没有 `killed`、多一个历史落库行 `timeout`;只按值换名会在读通知 / fleet 行 / TaskOutput 卡的地方漏掉 `killed`。**三端矩阵**:终端 —— 近三十处读点要换(§122 TW 段 122d 逐行);网页端 / 桌面端 / 管理台 —— 零读点。
|
|
257
|
+
- 包内件 `engineCapsGenerationGuard`(能力位读器格的代际两问叶)整文件删除;读器格表与格的代际身份随写入口一起退役,总缓存的代际回到只有号(CC-344 余项;不在公面;**§122 CR-2**)。已知限制 KL-545(tee 不供代际号照写陈旧读数)与 KL-572(只收过畸形回体的地址代际号推到 1)随之消失 —— 读器没有写入口,也就没有这两道取舍。
|
|
258
|
+
- **`FleetTaskView.queuedCount` 与 `FleetWorkflowView.errorCode` 两只零生产者位退出视图**(CC-388;接入文档 **§122 FX-F2**;🔴 型面 BREAKING):`queuedCount` 是 sdk 行型上的幻影键 —— 任何服务端版本都不发(生产侧已整只删除,明说要队列深度须是带生产者的新键);`errorCode` 是 0.74.3 加的结构读位 —— 服务端的 fleet workflow 行从不铸它,run 级码只住 workflow 读面。两位在视图上永远缺席,一个等不来货的可选位是假线索。硬破坏三句:删了就是删了、不留别名、读 `view.queuedCount` / `view.errorCode` 的 TS 写法编译红一次;运行期它们本来恒缺席,零行为差(输入里塞了也不过境)。视图键清单各少一员(`FLEET_TASK_VIEW_KEYS` 24 → 23、`FLEET_WORKFLOW_VIEW_KEYS` 11 → 10);`queuedCount` 仍是 sdk wire 键,登记在 `FLEET_TASK_ROW_KEYS_NOT_PROJECTED`(by-design;sdk 删声明的那个 major 同批删本条)。终端渲染契约里各留一个可选位与读点(`overrides/fleet-tree.tsx:203,473,764` / `:268,554`):死码,终端侧删;网页端 / 桌面端零读点。
|
|
259
|
+
- **`classifyRegistryConflict` / `isScopeGoneError` 退出根入口(型 `RegistryConflictClass` 随之退出),registry 写门 409 的判读口改由子路径入口 `@sema-agent/client-core/registry` 原样转口**(CC-538;接入文档 **§122 FX-H2**;🔴 型面 BREAKING,根入口运行期导出 −2、子路径入口 +1 名 +1 型):registry(云控制面)的写门在同一个 409 上答两件相反的事 —— 乐观锁冲突(重读、改基线、再写一次),与目标空间在途中被删 / 被同名替换(什么都没写,不可自动重试);上游只有一只判读函数。包内曾自铸一份同名同形副本(当年的 sdk 地板上没有上游那一只),地板抬到 19 之后这条理由没了,同一个 409 于是有两条读法 —— 副本整份删除,判读只此一处。一并删除的谓词 `isScopeGoneError` 没有消费方(它按类名认两只 scope-gone 错误类;sdk 19 起那两只类恒在,`instanceof` 即可)。硬破坏三句:根入口不再导出这三个名;`import { classifyRegistryConflict, type RegistryConflictClass } from '@sema-agent/client-core'` 编译红一次,改从 `@sema-agent/client-core/registry` 导入(同一个函数对象,调用与返回值逐字不变);行为差只在敌意入参 —— 上游函数不替调用方吞「取值器 / 代理陷阱抛」(副本曾答 `'gone'`),而线上入参是 `res.json()` 的产物,两者逐例同答。
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
### Added
|
|
267
|
+
|
|
268
|
+
- **面板行归约口 `reducePanelFrame(state, frame)` / `createPanelReduceState()` / 差分臂闭集 `PANEL_DELTA_OPS`**(CC-76 + CC-114;接入文档 **§122 PR-1**):「一帧进 → 行差分出」的纯函数 —— 不做 IO、不读时钟(投影快照帧自带 `nowMs`)、不读写模块态、不改入参状态;同一 (state, frame) 恒得同一份差分,同一帧再喂一次零差分。帧闭集 `PanelFrame` = 面板事件四臂(tick / fleet-row / end / sweep)+ 投影快照 / 会话拆除 / 缺席上报 / 常驻标 / 转录锚;差分闭集 `PanelDelta` = `upsert`(`created` / `revived` + 只放变了的展示位;`fields.absence` 在场 = 引擎不再上报这一行,`null` = 行回来了)/ `usage_delta`(累计口径,只放变了的键,缺席不落键、绝不补 0)/ `terminal`(`isError` / `report?` / `cause: 'end' \| 'sweep'`)/ `remove`(包已不再跟踪这一行),每臂带 `canonicalId`。根入口 +3 名;型 `PanelFrame` / `PanelDelta` / `PanelRowFields` / `PanelReduceState`。
|
|
269
|
+
- **行差分订阅口 `subscribeEnginePanelRows(fn)`**(CC-114;**§122 PR-2**):宿主进程里那份面板状态的出口。单消费者;订阅即按当前行表回放快照(每行 `upsert{created}` + 用量 + 已结行的 `terminal`,无缓冲上限),之后按产出序到达。前代迟到的终态、同代重复终态、消费端没有的行、首见即终态的历史行都在包内判完;turn 末 `sweep` 只结「在跑 ∧ 非常驻 ∧ 非缺席 ∧ 非行帧 lane」的行。根入口 +1 名;测试钩 `__resetEnginePanelStateForTests` +1。
|
|
270
|
+
- **`droppedModelEntriesOf(catalog?)` / `ModelDroppedEntriesReading` / `LiveModelDroppedEntry`**(CC-540 A;**§122 UP-1**):在线目录里哪些条目没被引擎收下、为什么(服务端 7.123.0 `GET /v1/models.droppedEntries`:`index` + `reasonCode` + 可披露身份)。读数三态:`reported{ entries, unreadable }`(在场的空数组 = 一条都没丢)/ `not_reported`(键缺席 = 更早的服务端,**不**编空数组)/ `unknown{ no_catalog | malformed | unreadable }`;坏行只丢自己、表外 reasonCode 与新键原样带、只读自有数据位、读数冻结。`LiveModelCatalog` 增可选位 `droppedEntries`(宿主把 `models.list()` 回体原样装进来即可)。行型派生自 sdk `models.list()` 返回型(peer 地板 sdk 18.1.0 上照样编译)。根入口 +1 名(函数)。
|
|
271
|
+
- **`hasLedgerPositionKey(frame)` 上根入口**(CC-464;接入文档 **§122 WC-1**):「这一帧带不带账本位置」的唯一读法 —— `id` 或 `seq` 任一键在场且不是 `null` ⇒ 真(值坏形也算),两键都缺席 / `undefined` / `null` ⇒ 假;读位抛 ⇒ 原样抛。它此前只在包内(帧通道的判活闸、preamble 记账、判定口三处共读),端要自判只能自写第二份 —— 网页端那一份只认非空串 `id`、忽略 `seq`,与包内不等价:仅有 `seq`、空串 / `false` / 对象 `id` 的账本帧,端当「没有账本位置」去铸可点卡,包按账本帧核待决清单。判定口 `replayedApprovalDisposition` 对带 `approvalId` 的帧答 `live_leg` 恰是本口为假。
|
|
272
|
+
- **`replayedApprovalSentence(disposition, opts?)`**(CC-464 + CC-467;**§122 WC-2**):账本里重放回来的审批帧「现在不能决」那一句的唯一铸点,一张表。`decided` 三向 —— 无成因 ⇒ 「引擎的待决清单里没有它,没发决定」(判定口分不出人决过 / 过期 / 转入停驻,所以**不说**已批、已过期、工具跑过;KL-683);带成因(`crashed_before_park` 说引擎意外停止、`shutdown_before_park` 说有序关停)⇒ 按崩溃收敛行的分桶注脚 `needsHumanReason`(判定口 `decided` 臂随成因带上,与 `projectCrashConverged` 同一份读数)分三向 —— 还在等的两桶(resumeSafe / `pending_unsafe`)⇒ 它还在等、引擎自动拒了它,补一句「工具有没有开始,这里看不出」;`approved_then_interrupted` ⇒ 人已批过、可能正在跑、副作用可能落了一半,引擎随后把它收成了拒绝;`contradictory` / `unstable_row` / 表外词 / 读不出 ⇒ 记录看不清批没批过、开没开始(两头都不说);`unknown` ⇒ 「没能确认它还在不在等,没发决定」一句(六种 `why` 同句);`live` / 非对象 / 不认得的 `kind` ⇒ `undefined`。崩溃收敛行恒是 denied,任何路径都不把结局说成已批(已批后中断那一桶说的是人当时批过、结局仍是拒绝)。判定口 `ReplayedApprovalDisposition` 的 `decided` 臂增可选位 `needsHumanReason`(只跟 `cause` 一起在场,闭集四词原样)。可选第二参 `{ toolName }` 点名(名字是不可信文本:过显示消毒、封 80,进句时放进一对双引号、引号转义 —— 名字里的整句话冒充不了本句的状态陈述)。成因词表取自型 `CrashConvergedRow['cause']`,句子表钉在表自己上(联合加一词而表没跟 ⇒ 编译红);表外成因词 / 非串 / 原型链名落中性句。永不抛。根入口 +1 名。
|
|
273
|
+
- **`allowRuleShadowSentence(card)`**(CC-468;**§122 WC-3**):卡上「allow 层有成员命中了这次调用、却清不掉这只 ask」那一句的唯一铸点。披露的事实此前就单源(`readApprovalAllowRuleShadow`),句子三端各拼各的(网页端取条目自己 join、终端壳里一只叶子、桌面端零);现在按成员与条目成句,老一串与新键 `persisted` 成员同一读数同一句,卡级读口对裸帧回落同一读数。缺席 ⇒ `undefined`(不说「你没有规则」);整只读不出 ⇒ 说读不出;条目与表外成员词是不可信文本,一律放进一对双引号(过显示消毒、引号转义、字面反斜杠成对 —— 文本里的整句话出不了引号、冒充不了句子自己的陈述;闭集成员词原样)。老一代单句形如 `Your saved permission rule "Bash(ls:*)" still exists — …`(终端壳里那只叶子写的是括号形 `(Bash(ls:*))`,两者差在条目与表外成员词的引法;换读本口即得引号形)。帧级读口 `readAllowRuleShadowFromWire` 不另导出;`legacyShadowedRuleTextOf` 不是句子口,是卡字段 `persistedRuleShadowed` 的派生函数,随该字段按 RL-58 一起退役。根入口 +1 名。
|
|
274
|
+
- **`GET /v1/models` 回体的唯一读口 `readLiveModelCatalog(body)` / `LiveModelCatalogReading`**(CC-465;**§122 WB-1**):行键 `name`(提交值与 `@` 句柄);不是普通对象 / `name` 不是非空串 / 带访问器或非 JSON 值 / 稀疏洞 / 同名后到的行计入 `unreadableRows`、好兄弟照留;读数、目录、行全冻结的深拷贝,不改入参;`defaultModel` 形对才带(形不对记 `defaultModelMalformed`);`droppedEntries` 原值过境,`droppedModelEntriesOf` 读数与未过读口时逐字同;信封只带四键。整份读不出 ⇒ `unreadable`(`not_an_object` / `models_not_array` / `default_missing` / `unreadable`)。
|
|
275
|
+
- **缺省模型读口 `liveDefaultModelOf(catalog?)` / `LiveDefaultModelReading`**(CC-465;**§122 WB-2**):服务端的答案,只读 `defaultModel` —— `name` 恰是某行 `name` ⇒ 那一行,否则 `id` 只按行的 `id` 落行(上游 id 与某行 `name` 撞串不算);落不到 ⇒ `not_listed`;`defaultModel` 缺席 / 形不对 ⇒ `unknown{not_reported}`;绝不取第一行。设置契约的缺省链在服务端应用目录时已经跑过,本包不再跑一遍。
|
|
276
|
+
- **`atMentionOf` / `modelCompatOf` / 行视图 `liveModelRowsOf`**(CC-465;**§122 WB-3**):目录行按真值出四键 —— 配对姿态(既有 `routePairingVerdict`)、可否 `@`(`allowed` / `refused` / `not_governed` = 部署没配名单 / `unknown`)、线路兼容声明(`declared` / `not_declared` / `unknown`;型 `LiveModelCompat` 派生自 sdk)、接受哪几档(既有 `effortLevelsOf`,唯一读法,不从兼容声明推)。行视图每一位调同一只单行读口;窗口 / 输出上限只认正有限数、不设下限。`LiveModelInfo` +4 可选位。
|
|
277
|
+
- **座位入站判官 `checkSendMessageRequest(v)` / `isSendMessageRequest(v)`**(CC-466;**§122 WB-5**):`sendMessage` 整只载荷的唯一判官 —— 闭集键,每键词表取包里那只元组(`PERMISSION_MODE_INTENTS` / `SEAT_REASONING_EFFORTS` / `REWIND_MODES` / `SEAT_TURN_SETTINGS_KEYS`)与附件上限;子代两位(`forwardSubagentEvents` / `retainSubagentSessions`)有了判据;未登记顶层键、访问器、读抛一律拒,拒因带键路径。
|
|
278
|
+
- **座位回退载体 `SendMessageRequest.rewind?: SeatRewindIntent` + `SEAT_REWIND_INTENT_KEYS`、档位元组 `REWIND_MODES`、能力名 `rewind`**(CC-466;**§122 WB-6**):`{ mode, targetMessageUuid }`,宿主把锚点映射到引擎条目、按 `rewindSpecForMode` 投进这一轮请求;能不能用由座位能力表答(能力名 ⊆ 动词名 ∪ 载荷键名)。出身表多第三种出身 `{ projectedBy, taskRequestKeys }`。
|
|
279
|
+
- **settings 子键出身表 `SEAT_TURN_SETTINGS_ORIGINS`**(CC-466;**§122 WB-7**):请求装配口每一把 settings 子键在座位 lane 上由谁供 —— 渲染端载(`ultracode`)或宿主自供(`webSearch` / `hooks` / `resolved` / `outputStyle`,带理由);键集与装配口编译期两向钉,判官拒宿主自供子键。
|
|
280
|
+
- **`LocalSessionEvent.parked?: true` 与收口帧读口 `approvalCompleteParked(frame)`**(CC-466;**§122 WB-8**;并网页端 [9527]):`tool_permission_resolved` 带停驻位(present-iff:只在 `outcome === "expired"` 且这一问转停驻时),铸法与适配层撤卡同读 `approvalCompleteParked`(自有数据位 `outcome === "expired"` ∧ `parked === true`)。
|
|
281
|
+
- **`SettingsPort.managedPolicyReading()` / 型 `ManagedPolicyReading` / `ManagedPolicyState`**(CC-488;接入文档 **§122 RD-1**;根入口运行期名不增、型 +2):hooks 投影的托管层读数端口(可选、零参),返回 `{ state: 'absent' | 'in-effect' | 'unreadable' }`。修前只有「读 `policySettings` 抛错」会让投影整条腿不投;宿主的按源读口通常不抛 —— 托管文件 / 远端缓存读坏时返回 `null`,本包读到「没有托管策略」,user / project / local / flag 四源的 hooks 照上请求体,管理员下发的 `allowManagedHooksOnly` / `disableAllHooks` 恰在读不出的那一拍消失。现在 `unreadable` ⇒ 整条腿 fail-closed(四源 + `/goal` 全不投,插件那一半的排除理由是 `governance_unreadable`,`hooksForWire()` 与 `hooksWirePlan()` 同判)。**只收紧**:读口缺席 / `absent` / `in-effect` 三个读得出的答案在同一份托管文档上的投影逐字节同;`absent` 与文档里的 `disableAllHooks: true` 矛盾时文档照判。读口抛错 / 返回词表外的值(含大小写不同)/ `state` 取值器抛 / 写成属性而不是方法 ⇒ 按 `unreadable`;只有成员缺席(`undefined`)才是「端没接」,维持今天的抛错臂、零日志(KL-686)。
|
|
282
|
+
- **引擎用量分析读口:三口 wire 读器 + 三态视图 + 句单源**(CC-511;**§122 RD-2**;根入口 +13 名:`readUsageSummary` / `readUsageSeries` / `readUsageBreakdown` · `projectUsageSummary` / `projectUsageSeries` / `projectUsageBreakdown` · `classifyUsageFailure` · `projectUsageAnalytics` / `readUsageAnalytics` · `usageBoundPrefix` · `usageWindowOfRange` · `USAGE_SENTENCES` · `USAGE_HEATMAP_MAX_DAYS`):`GET /v1/usage/summary` · `/series` · `/breakdown` 的读器永不抛,判决联合 `ok` / `unavailable`(`capability.*` 或无码 501 = 引擎没有 run store;`feature.*`;404 `not_found.route` = 老引擎无路由)/ `failed`(401 / 403 / 5xx / 网络 / 体畸形 —— 读失败不说成「这个后端没有」);注入面形 = sdk `usage.*` 的签名,sdk 客户端实例直接传入。`readUsageAnalytics(client, window)` 并发读四次(总账 / 日序列 / 小时序列 / 按模型分桶)合成一张三态卡:`available`(精确)/ `estimated`(金额轴是下界 `≥`、token 轴是估算 `≈`,前缀单源 `usageBoundPrefix`;总账自陈扫描窗被截 `truncated: true` 时两轴都不标精确 —— 金额 `≥`,token 精确口径 `≥`、估算口径 `≈`)/ `unavailable`(引擎没有这一面一句、读失败另一句,零统计格、零热力格、零数字)。缺席位不编 0:总账某位缺席或坏形 ⇒ 视图里没有这一位;热力图与活跃天数只在日序列**读成功且读完整**时才有(读失败 ≠ 一整张零活动;读到了但有读不懂的点 / 无效日期 / 序列自己被截 ⇒ 同样不补零、不报活跃天数);峰值小时与最常用模型同一条完整性规则;分桶读失败 ≠ 窗内没有模型用量;`estimated` 只有显式 `false` 才是精确。终端的 `sema cloud usage` 读的是中心中继的另一个源,不并。
|
|
283
|
+
- **审批窗到期转 durable 队列链上的四件判定读口同名上收**(CC-550;**§122 RD-3**;根入口 +4 名:`classifyApprovalCompleteFrame` / `parkRowDeadlineState` / `lateDecideRoute` / `runReapedByDeadline`;型 `ApprovalCompleteDisposition` / `ParkRowDeadlineState`):自终端壳半场逐字上收、**不改名**(壳侧到货条件锚按名机读)。`classifyApprovalCompleteFrame`:`tool_approval_complete` 帧 `expired` ∧ `parked === true`(只认严格 `true`、只认自有数据位:原型链 / 取值器上的 `parked` 读成撤卡;「转停驻」的判法就是共享的 `approvalCompleteParked`,与座位 `tool_permission_resolved.parked` 同一只读口)⇒ `live-expired-parked`、`expired` 无 park 证据 ⇒ `live-expired-retract`、`allowed` / `denied` ⇒ `settled`、开集新词 / `outcome` 缺席 / 开卡帧 / 非对象 ⇒ `null`;`parkRowDeadlineState(row, nowMs)`:读 `pending[].deadline`(不读流窗那一族的 `expiresAtMs`)⇒ `none` / `pending` / `past`,缺席 / `null` / 荒谬值(非有限、非正、串、超 24 小时)当缺席不夹边界;`lateDecideRoute`:窗没关过恒 `respond`、关过且真找到 durable 行才 `decide`;`runReapedByDeadline(client, taskId)`:decide 的 404 族先读 `GET /v1/runs/:id` 的终态码,**只有** `approval.expired` 配得上「这一步没有跑」,读不到 / 抛 / 别的码一律 `false`(被收割码取包内单源 `APPROVAL_EXPIRED`)。
|
|
284
|
+
- **交互 Esc 的 interrupt 发射口 `fireInteractiveInterrupt(runs, taskId, opts?)` + 型 `InteractiveInterruptRuns` / `InteractiveInterruptOptions`**(CC-319;接入文档 **§122 SA-1**):经宿主 live 客户端的 runs 资源发一发 bare `POST /v1/runs/:id/interrupt`(方法形调用、`sessionId` 非空串才带 `?session=`、不带幂等键 ⇒ 恰一发,sdk 不重试)。结局就是 `planInteractiveHalt` 的入参 `InteractiveHaltInterruptOutcome`(四臂不变),绝不抛:回执的 `turnCut` 只认自有数据位上的布尔(取值器不执行、读不出不硬造 `false`);2xx 受理而回执体解不开(不是 JSON)⇒ `halted` 不带 `turnCut`(受理已证,不当传输失败);其余抛出物交与自愈 steer / cancel 两路同一只至多一次判类尺 —— 4xx(及交引擎前就拒的 503 账本码)⇒ `refused { status, errorCode? }`,5xx / 连接断 / 截止 / 中止 ⇒ `transport { detail? }`(`detail` 只取错误类名);runs 资源缺席 ⇒ `unarmed`(零请求)。🔴 与宿主自发的唯一行为差:5xx 不再当成引擎判决 ⇒ 宿主自证屏上挂着审批卡或这条 run 武装了 detach 时,`planInteractiveHalt` 升级 run 级 cancel(此前不升级)。
|
|
285
|
+
- **设备换绑判定半场 `listDevices` / `readSessionBinding` / `rebindSession` + 纯判定 `reconcileRebindOutcome` / `rebindProvesRequestNotApplied`(型 16 个)**(CC-320 ①;**§122 SA-2**):换绑那一条 UX 的三步各一只发射口,经宿主 live 客户端的 devices 资源发,结局恒是判别值、绝不抛。拒码一张闭集表、状态码与码合取:501 `capability.device_lane_required` / 501 `capability.run_store_required`(`lane-absent`,后者带 `runStoreOnly`)· 404 `not_found.device`(读面 / 换绑 `not-found`,列面 `refused`)· 409 `device.rebind_active_run`(`activeTaskId` 取 sdk 具名位)· 409 `device.rebind_rev_conflict`(`currentRev` 只认非负整数)· 503 `auth.service_token_required`(`refused`,不折成车道缺席);换绑表外失败交至多一次尺(`refused` / `unconfirmed`;有状态码 `server-error`、无状态码 `transport`,两格都 `mayStillBeRunning: true` —— HTTP 5xx 证明不了处理器已收工,网关超时时上游那一笔写可能还在跑,回读看见旧态只判 `unknown`)。换绑成功形要回显会话逐字等 ∧ 落在目标设备 ∧ rev 恰 +1(或前态本来就在目标上且 rev 不动),否则 `unconfirmed / accepted-unreadable`,绝不拿请求值回填;`workspaceCarryover` 只认字面 `'none'`;`expectedRev` 不是非负整数 ⇒ 本地拒、零请求。回读对账只交判决词 `landed` / `already-there` / `unchanged` / `unknown`(呈现句留宿主)。回体与错误对象上的位一律按自有数据位读。
|
|
286
|
+
- **sdk 设备行型十一名经根入口 type 再导出**(CC-581;接入文档 **§122 SA-7**):`DeviceSummary` / `DeviceListResult` / `DeviceBinding` / `DeviceSessionBinding` / `DeviceRebindRequest` / `DeviceRevokeRequest` / `DeviceRebindResult` / `DeviceEnrollToken` / `DeviceEnrollRequest` / `DeviceEnrollResult` / `DeviceRevokeResult` —— 端声明设备面端口与映射行形时从本包取型,不再直接从 sdk 取;型与 sdk 恒等,零运行期字节。同批:设备换绑读面的前态型由 `DeviceBinding` 改名 `DeviceBindingReading`(读数投影:只读、`boundAt` 缺席照收,与 sdk 原型同名不同形;本版新口,无已发存量),原名让给 sdk 原型。
|
|
287
|
+
- **引擎 env 组来源判定 `resolveEngineEnvSourcing(input)` / 读视图 `engineEnvView(env, caseInsensitive)`(型 7 个)**(CC-321;**§122 SA-5**):起本机引擎那一刻,来源写了某个「全有或全无」组的一半、那一半被忽略、子进程 env 里缺席,且按组声明起不来 ⇒ 安全组或声明不可跳过的组 `refuse-explained`(照旧交引擎拒启),其余 `skip`(只删这一组自己的开关)。纯函数;组声明(含镜像引擎启动校验的谓词)、忽略判据、别名表由宿主给;退役 env 改名表的属主是设置契约 `RETIRED_ENVS`,宿主直读后经 `aliases` 交进来,本包不 import、不转口、不存任何一行。出参:要删的键、逐组读数(碰过的键带来源里写的原名与来源)、逐键来源与理由(`repo-half-ignored` / `dropped-with-group`);告知句留宿主。宿主谓词抛 ⇒ 按「没忽略 / 起得来」处置(不删、不说)。
|
|
288
|
+
- **引擎托管 MCP 连接态读口 `mcpEngineLegConnectionOf(serverName, rows)` / 型 `McpEngineLegConnection`**(CC-325;接入文档 **§122 SB-3**;根入口 +1 名):「这台服务器在引擎这一轮运行上连着没有」只读这一轮 `wiring_manifest.mcp[]` 里这一台的 `status` —— 三态 `connected`(带非负整数 `toolCount?`)/ `not_connected`(`failed` 带读得出的 `errorCode` / `delivered` / `httpStatus`、`skipped`、`not_listed`)/ `unknown`(`unobserved` / `ambiguous` 带行数 / `unreadable` / `unrecognized_status` 带原词)。工具名册与端本地自连的 client 都不是这句话的说话人;同一行的活性格不读(活性仍读 `mcpEngineLegLivenessOf`,两口按名找行共用同一只查找);三词表与引擎型编译期双向钉。读数是这一轮运行拨号那一刻的判词,不是此刻的健康(KL-696)。
|
|
289
|
+
- **切模型两件公共判定**(CC-324;**§122 SB-4**;根入口 +3 名:`modelSwitchProbeOutcomeOf` / `runModelSwitchProbe` / `createModelSwitchFallbackLedger`;型 9 个):① 切换前探活的结果分型 —— 车道(`live` / `mock` / `engine_absent` / `unwired`)× 判决口结局 ⇒ 放行(`probed` 说这一次真探了没有)或不切(`rejected` = 判决口说这个模型不成立;`unavailable` = 探活没跑成、对模型没有结论,`cause` 分说 `unwired` / `probe_missing` / `probe_threw` / `unchecked`),`reason` 是判决口原话(不可信串);编排口只在需要时调判决口、永不 reject。② 切换后首发空流的回落台账(实例,按会话分格):用户发起的切换 `noteSwitch` 记一笔(带单调序号;宿主交不出「最近真答过的模型」就不记);`advisoryFor` 纯读 —— 结果帧终局码 `stream_torn`(经 `resultErrorCodeOf`)、失败的就是切过去那一个(先比流入口名,不中再比帧上的 `_sema_selected_model`,经 `resultSelectedModelOf`)、它还没真答过,四条全成立才交回那一笔;`release(sessionId, seq)` 比序号才销(旧判定销不掉新切换),宿主投递成功后再销。文案与投递留端。
|
|
290
|
+
- **忙卡接管出路 `attach` · 与 resume 三选卡同一只判定 `runningAttachOffered(canAttach)` · Cancel 已受理确认句 `resumeRunningCancelConfirmedRow(taskId)`**(CC-536;接入文档 **§122 RS-1 – RS-3**):「run 还在跑且可接管 ⇒ 给 attach」只有一条规则、一只判定 —— resume 三选卡(`resumeRunningOptions`)与 Leave 之后再撞 running 的忙卡(`activeRunSelfHeal` 的三选 steer / cancel / wait)都经 `runningAttachOffered` 决定给不给(只认严格 `true`;供给位缺席 ⇒ 不给出路,没说不等于不可接管)。忙卡一侧:`ActiveRunSelfHealDeps.canAttachRunning`(可选,语义与 `ResumeRunningCardInput.canAttach` 同:durable 事件动词在场且宿主有接管消费口)→ 请求 `RunningChoiceRequest.canAttach?: true`(在场即严格 `true`;宿主不给供给位时请求的键与旧版逐字同)→ 呈现口回执加词 `'attach'` → 新结局 `{ kind: 'running-attach'; taskId }`:本层零写请求(不 steer、不 cancel),接管由宿主做;处置档 `not-delivered`(被拒的那条消息没送出,不回灌);行句 = 重放披露原句(`resumeAttachReplayDisclosure`)+ 消息没发出去的出路;不产出续听意图。卡上只剩 attach 一条真出路时照样出卡(与 resume 卡同律);系统注入件恒不问人、恒不 attach(没有正文可送而供给位在场也不例外);存活对账先于出卡,幽灵 / 已终结的 run 不递 attach。确认句:`resumeRunningCancelConfirmedRow` 与 `resumeRunningCancelUnconfirmedRow`(字节不变)经包内同一只私有铸造点出其一,两句互斥 —— 确认句只说回执证得出的事:引擎受理了、那条 run 可能还要一会儿才停(取消口回 `cancelling` 受理体或终态 no-op,受理不证明活被丢弃、已停或会话已空出来)。根入口 +2 名。**型面两向**:对实现 `offerRunningChoice` 的宿主是放宽(旧实现只回三词照常编过;新请求位、新 deps 位都可选);对按回执词或按结局 `kind` 穷举(`never` 分支)的宿主,联合各加一员 ⇒ 加词这一版编译红一次,改法是补 `'attach'` 一臂调接管口、补 `running-attach` 一臂(行句可用 `activeRunSelfHealRow`)。无硬破坏:不删不改既有成员语义。
|
|
291
|
+
- **终态属主表五张 + 成员型六个 + 谓词八只 + CC 行词投影 `ccTaskTerminalStatusOf`**(CC-78;接入文档 **§122 TW-1 / TW-2**):冻结字面元组 `SDK_RUN_TERMINAL_STATUSES`(completed / failed / blocked / 历史行 timeout)/ `SDK_FLEET_TASK_TERMINAL_STATUSES`(completed / failed / killed)/ `CORE_TASK_NOTIFICATION_TERMINAL_STATUSES`(completed / failed / killed / cancelled)/ `CORE_SEMA_TASK_TERMINAL_STATUSES`(同四词,登记任务面)/ `CORE_TERMINAL_CAUSE_KINDS`(生成物原名直出),成员型 `SdkRunTerminalStatus` / `SdkFleetTaskTerminalStatus` / `CoreTaskNotificationTerminalStatus` / `CoreSemaTaskTerminalStatus` / `CoreTerminalCauseKind` 由元组派生,端的型面从此派生、不再手抄词。三问按属主各一只:结了没 `is…Terminal`,成没成功只出否面 `is…TerminalNotSuccess`(🔴 任何谓词的 `false` 都不是「成功」);能不能合成终帧只有 run 行有,包内判。`ccTaskTerminalStatusOf(status)` 把任一属主的终态词折成 CC 本地任务行的三词(`CcTaskTerminalStatus` = completed / failed / killed):`blocked` / `timeout` ⇒ `failed`,`cancelled` ⇒ `killed`,其余原样;非终态与表外词 ⇒ `undefined`(不翻行)。fleet 表此前是 `ReadonlySet<string>`,本版换冻结数组(`.has` 改调谓词)。
|
|
292
|
+
- **同一只审批的持有者读口 `joinApprovalHolder(identity, signal?)`**(CC-593;接入文档 **§122 XH-1 / XH-3**):宿主自己的耐久审批路(收到 `approval_request` 帧 → 开卡 → 耐久决断)开卡前调一次 —— 本进程此刻持有这只审批的活卡(卡在屏,或答复在送)⇒ 等它放手再交回 `{ kind: 'joined', outcome }`(持有者已结算:本路不开卡、不发决断;`outcome` 是持有者结局的拷贝,带 `joinedInFlight: true`)或 `{ kind: 'free' }`(没有持有者;或持有者放手而这一问没结算 —— 答复没送达、正在停驻、转停驻、卡被撤 —— 本路照常开卡)。身份 `ApprovalHolderIdentity`:带 `approvalId` 只按它认;不带则按 `taskId` + `toolCallId`(两侧会话都在场时还须同会话),且只认还在等人答的卡;读不出的分量 ⇒ 不认。根入口 +1 名;型 `ApprovalHolderIdentity` / `ApprovalHolderJoin`。`surfaceToolApprovalFrameAndRespond` 多一个可选第 6 参 `run?: { taskId?, sessionId? }`(这只帧属于哪条 run;包内帧路由自己传,直调的宿主可不传 —— 不传 ⇒ 只能按 `approvalId` 被认出;子代审批帧不收这一参,run 只取帧上的 `sourceTaskId`)。
|
|
293
|
+
- 无根入口新增名。包内叶 `ownKey` 多两只读法原语(`ownDataField` / `ownSendableField`,不上公面):读外来对象一位自有数据值,自有访问器与(送出用的)不可枚举位抛、不执行取值器;读器族与座位门共用这一只读法(CC-516 / CC-525 ③;**§122 CR-3 / CR-4**)。
|
|
294
|
+
- **活卡结局帧的「非人结局」成因读口 `approvalCompleteCauseOf(frame)`;帧型 `ToolApprovalFrame` 加 `cause?`、帧键镜像 `TOOL_APPROVAL_FRAME_KEYS_MIRROR` 加 `cause`(37 → 38)**(CC-570;服务端 7.124.0 / sdk 19.0.0;**§122 PK7-3**):十四词闭集(问账行十词取 sdk `ASK_ROW_ENDING_CAUSES`,窗到期 / 广播全灭 / 断流 / 投递不出四个等待类词两向钉在 sdk `ApprovalSettleCause` 型上),只读帧上的自有数据位;键缺席 = 人答的结局或更早的服务端,读作缺席、不反推任何一词;表外词读作缺席。根入口 +1 名。
|
|
295
|
+
- **决断拒收分类读数加 `conflict`(型 `DecisionRefusalConflict`)**(CC-570;**§122 PK7-4**):`classifyDecisionRefusal` 在 409 上把服务端 7.124.0 起「一码一因」的四形分开 —— `binding_mismatch`(绑定席)/ `row_integrity`(无 `field` 的行完整性拒)/ `format_version`(`checkpoint.unsupported_version`)/ `answer_invalid`(问答载荷不合法:7.124.0 的 `resume_outcome_invalid` 与更早服务端借绑定不符码发的那一形同答);认不出 ⇒ 缺席。`standing` 不变。
|
|
296
|
+
- **`checkpointUnsupportedVersionFromError` 读数加 `writerVersion?` / `readerVersion?`**(CC-570;**§122 PK7-5**):服务端 7.124.0 起这一拒带两只版本键;两键都是非空串才一起带,只有一键 ⇒ 都不带。写下停驻的引擎比读它的这台新 ⇒ `checkpointUnsupportedVersionContent` 的出路改说「回到那一版或更新的引擎上继续」;相等 / 更旧 / 缺席 / 任一方不是纯 `x.y.z`(预发布、构建尾同,与 `engineVersionTier` 同一读法)/ 读它的这台低于本包支持底线 ⇒ 句子逐字同旧。
|
|
297
|
+
- **`CenterWiringView.worker?`**(CC-570;服务端 7.124.0;**§122 PK7-7**):引擎向中心登记的 worker 名,present-iff 引擎报了(配了名且可披露);在场而不是非空串 ⇒ 整条读数按畸形删格(与这一格其余可选位同律)。
|
|
298
|
+
- **技能两表 `allowedTools` / `disallowedTools` 上 wire**(CC-590;接入文档 **§122 SK-1**):技能 frontmatter 的 `allowed-tools` / `disallowed-tools` 此前到不了请求体 —— `skillCommandsToSpecs` 只投 name / description / content / baseDir,用户写的 deny 表因此在引擎上不生效。现 `SkillCmdLike` 多两只可选成员 `allowedTools?` / `disallowedTools?`(`readonly string[]`),`SkillSpecsOptions` 多一位 `skillToolLists?: SkillToolListsReading`(宿主交 `observedSkillToolLists()` 的读数),`TaskAgentWireSkill` 多两只可选成员。🔴 **上不上 wire 只看能力位**:唯一判官 `skillToolListsAvailable` 答 `'yes'` 才带两表;选项缺席 / 未观测 / 老服务端没报 / 明说否 / 读数不是读数 ⇒ 一律不带(逐字节同 0.94.0;老服务端对顶层技能上的两表照收但引擎不读,对子代技能 `agents[].skills[]` 上的两表整条拒)。带的时候逐字原样 —— 不归一、不去重、不截断、不过滤、不改序,空数组照带 `[]`(服务端 ≥7.116.0 把两表读作这一次运行的 allow / deny 规则来源,空表 = 不贡献规则 = 与缺席同效),只做浅拷贝。唯一的本地判断是值形:非数组 / 含非串项(含稀疏洞)/ 报不出合法长度的外来数组 ⇒ `TypeError`(点名技能与表名、不回显条目;属性读 / 长度读 / 下标读抛出的,换成不带抛出物的 `TypeError`;交了读数位的宿主才判,先于能力位判 —— 坏声明不许借「这一次不发」被吞;只对真会被发出的技能判;选项缺席的宿主不读不判两表,逐字节同 0.94.0)。条目级(每表 > 1000 条、deny 侧读成空的条目、空串元素)一概交上游受理口 400 响亮报,本包不立第二判官。`projectAgentsForWire` 的 `skillSpecs` 吃同一份产物,`agents[].skills[]` 与顶层同形。公面运行期导出零变化。
|
|
299
|
+
- **`EngineInstance.startedAt?` / `HealthResponse.startedAt?`:引擎进程起点有了型位**(CC-446;接入文档 **§122 FX-E1**):来源只有 `/health.startedAt`(服务端 ≥7.67.0 无条件发),读法仍只有 `engineIdentityOf` 一条;三处型位(读数 `EngineIdentityView.startedAt`、`EngineInstance`、`HealthResponse`)在编译期互钉同型(两向)。缺席 = 这台引擎说不出来,**不是**「它没重启过」;不铸 0,不借 `Date.now()`,不借同名异义的 `EnginePortFile.startedAt`(那是壳写文件的落盘时间戳)。纯类型,运行期导出零变化。
|
|
300
|
+
- **`engineCredentialRequirementOf(answer)` / 型 `EngineProbeAnswer` / `EngineCredentialNeed`**(CC-461 ①;**§122 FX-E2a**):「不带任何凭据探一次引擎」的回答 ⇒ 这台引擎要不要凭据的纯函数判词(零宿主状态、永不抛)。回答三形 `{ ok: true }` / `{ status }` / `{ transport: true }` ⇒ `open` / `requires` / `undetermined`:只有明确的成功是 `open`,只有 401 / 403 是 `requires`,其余一律 `undetermined` —— 别的状态(含 2xx 出现在 status 臂)、传输失败、零臂、多臂互相矛盾、臂值坏形、非对象、原型链上的键、自有访问器(取值器不执行)、敌意代理。判不出就是判不出:既不当 `open`(宿主不能据此以为什么都不用带),也不当 `requires`(宿主不能据此往没证明身份的口上发本机凭据)。根入口 +1 名,型 +2。
|
|
301
|
+
- **`storePostureHeadWord(reading)`**(CC-461 ②;**§122 FX-E2b**):窄面板的句首判词 —— 只在 `storePersistence` 答 `not_durable` 时给词 `NOT durable`,持久 / 没报 / 没观测 / 读数坏形一律 `undefined`(不替没说的引擎断言「不持久」)。整句 `storePostureDoctorDetail` 的不持久段开头与它取同一个常量(字面在源码里恰一处),整句输出逐字节不变;词里不带后端词与降级成因,不随后端词长度被挤掉。根入口 +1 名。
|
|
302
|
+
- **`isSessionIdPathSegment(id)`:会话 id 路径段校验单源**(CC-392,原已知限制;**§122 FX-E4**):会话 id 会被拼进 `/v1/sessions/<id>/…`,`encodeURIComponent` 对 `.` / `..` 原样放行、URL 解析把它们当点段吃掉。判定 = 非空字符串 ∧ 不是点段 `.` / `..` ∧ `encodeURIComponent` 不抛(含孤立代理项);`%2e%2e` 之类字面串编码后不是点段,照常放行。根入口 +1 名;同调点见 Fixed。
|
|
303
|
+
- **`forgetSettledTerminalRow(id)` / `forgetSettledTerminalRowFor(sessionKey, id)`**(CC-332;**§122 FX-F1**;根入口 +2 名):按行 id 摘掉一条已结算的终态行(行帧车道说它结了的行:live 集里还没等到离场帧的终态行,以及已离场、在留存窗内继续展示的保留行),返回是否摘了。仍在飞的行与只由通知推定的退休行不摘(返回 `false`);只动展示面,终局事实台账原样。keyed 变体只动该会话登记的账本。
|
|
304
|
+
- **`engineRewindRefusedNow(option, reading?)` / `decideRewindEngineAction(option, resolved, reading?)` / `previewEngineRewind(option, resolved, reading?)` 与四型 `RewindRestoreOption` / `RewindTargetPosition` / `RewindTargetResolution` / `RewindEngineAction`**(CC-167;接入文档 **§122 FX-H4**;根入口运行期导出 +3):`/rewind` 的两只三端共用判定自终端壳上收。派发闸 `engineRewindRefusedNow`:**此刻**引擎是否明说这一档不能 —— 三档各读 0.82.0 的可用性判官(`both` = 对话锚 ∧ 文件历史、`code` = 只回退代码位、`conversation` = 对话锚),只有 `off` 才拒,没报 / 读不出 / 没观测一律不拒(不灰掉),表外选项答 `false`。引擎侧处置 `decideRewindEngineAction`:选项 × 壳解析好的目标位置 × 能力读数 ⇒ `arm`(带请求键;`both` 的 `restoreFiles` 随纪元位)/ `reopen`(会话根上带 `resumeAt` 的两档:服务端不许回卷到会话根之前)/ `none`(带原因 `not-an-engine-rewind` / `no-engine-turn-to-rewind` / `unresolved`;位置判不了什么都不动);`previewEngineRewind` 就是它的 `kind`(确认屏按这一条消息筛档用)。目标位置的解析(在壳的消息表上找引擎手柄与会话根位置)与执行面(挂预挂 / 重开会话 / 清预挂)留在宿主;缺省读数读当前引擎目标。终端仓里的两份同名副本与本包逐例同答,删副本改调本包即可(**§122 FX-H4**、122d)。
|
|
305
|
+
- **续跑被拒那一族的读口 `refusedParkFromError(failure)`、拍平失败事实型 `RefusedParkFacts`、出句口 `refusedParkContent(input)`、自动腿不放回句 `refusedParkBlockedContent(taskId, lane?)`**(CC-410;接入文档 **§122 FX-D2**):服务端 409 的三个码 —— `checkpoint.unsupported_version` / `checkpoint.walltime_axis_retired` / `checkpoint.config_refused` —— 都拒在认领之前、零写,同一个决定原样再发每次都被同样拒;拒体 `retriable: true` 读作「卡仍待决」,不是「重试会成功」。此前包里只有第一个码的读口(`checkpointUnsupportedVersionFromError`,服务端口吻的一句话),另两码与被拍平的失败事实(没有状态码 / 没有 `extra` 的 `{ errorCode }`)由终端壳内自写了一套判型与两句话。现在包出:读口(SDK 错误对象或拍平事实 → `{ code, field?, stillPending? }` 或 `null`;状态码缺席 / 409 才认;`field` 只读 `config_refused`、token 形;`stillPending`:错误对象上明说 ⇒ `true`、读得到而没说 ⇒ `false`、读不出 ⇒ 缺席,拍平事实只在明说 `true` 时才 `true` —— 不知道不渲 `false`;逐键隔离、读数冻结、永不抛)、出句口(交互车道零 HTTP 路径 / `-p` 车道点名机读码与取消动词;`stillPending === false` 不说「占着会话」;怪形 run id 落 `<run id>` 占位;表外码不上屏)、自动腿不放回那一句。措辞与终端旧实现逐字节同,四处有意差分见 §122b。根入口运行期 +3 名、型 +3 名(只增)。
|
|
306
|
+
- **`readApprovalRememberRefused(v)`**(CC-442;接入文档 **§122 FX-A2**):审批卡上「引擎声明这张卡的本会话放行不会被记住」(`rememberRefused`,服务端 ≥7.116.0)那一位的读口上根入口。入参是任何带这一位的载体(活卡帧 / 待决列表行 / 卡请求 / v1 审批卡信封 / 审批流对应帧);自有键 ∧ 严格 `true` ⇒ `true`,其余 ⇒ `false`(含取值器或代理陷阱抛 —— 永不抛)。包内活卡帧与耐久待决行两条腿调的就是它,私有读口退役;端不再各手写一份窄读。`false` 答的是「引擎没有这句声明」,不是「记得住」:老服务端(≤ 7.115.x)的所有面结构性不带这一位,包里不从强制 / 真人位 / 治理出身去推断。根入口 +1 名。
|
|
307
|
+
- **`rememberRefusalOf(error)` / 型 `RememberRefusalCode`**(CC-486;**§122 FX-A3**):带 `remember:"session"` 的那一发是否被服务端以 remember 专属码拒绝的判官 —— 五码(`remember_not_in_proof` / `remember_requires_binding` / `capability.store_required` / `decide.workflow_remember_unsupported` / `decide.parked_remember_unsupported`)之一 ⇒ 答该码,否 / 读不出 ⇒ `undefined`,永不抛。包内停泊行腿(去掉 remember 重发恰一次纯批准并告知「没记住」)与宿主自己发 remember 的迟到决断路径同用这一只,宿主不再抄五码表;无机读码的 400(不认 remember 键的老服务端)不在这一问之内:停泊腿对它只回退重发、不出「没记住」的告知;机读码读不出(取值器 / 代理陷阱抛)的 400 不回退(读不出 ≠ 没有)。根入口 +1 名,型 +1。
|
|
308
|
+
- **`-p` 车道两句归包**(CC-441;接入文档 **§122 FX-G1 / FX-G2**;根入口 +3 名 `permissionsAllowKeptNotice` / `limitsSupportNotice` / `explicitLimitFlagNames`,型 +1 `PermissionsAllowKeptFacts`):① `permissionsAllowKeptNotice(report, settingsRead, facts?)` —— 设置读不干净、设置文件层 allow 这一发没送的那一句:读报告口 `kept[]` 里 `settings_read_not_clean` 的行数 + 读健康三态 + 宿主才知道的事实(问题条数 / 托管策略还没拿到 / 去哪看是哪个键);`partial` / `unreadable`(含缺席与表外值)/ 托管策略三形各一句,句子不带规则原文,坏形按缺席(报告与事实逐格受保护读,取值器抛 / 已撤销的代理都不逃逸);② `limitsSupportNotice({ observed, version }, flags)` —— 限值旗「这台引擎认不认」那一句:caps 没观测到或版本在支持底线之上不说,低于底线说「可能被忽略」,观测到却没报版本 / 读不懂说「确认不了,照发了」;版本只经 `engineVersionTier`,旗面词只回显固定三只;`explicitLimitFlagNames(parsed)` —— 用户显式给了哪几只限值旗,与 `parseLimitsArgv` 读的旗、句子回显的旗同一张旗面表。0.93.0 删 `engineLimitsSupportWarning`(0.93.0 退出公面)时说的「替代句口」在此交付;终端壳里这两句的判定与措辞可整段删(等 caps 探测落定的有界等待是宿主装配,仍在壳里)。
|
|
309
|
+
- **`displayBody(text, 'delegation_report')` 在委派报告框架支上多交帧头展示槽位**(CC-444;**§122 FX-C3**;型面只增、根入口运行期导出零变化):`DelegationReportFrame` 多四个缺席式可选成员 `status?` / `error?` / `stats?` / `headRest?`(与后台子代 TaskOutput 头部槽位 CC-376 / CC-379 同形;键不存在 = 没读到,不是空串、不是 `undefined` 值),`PROTOCOL_MARKERS` 多一名 `delegationFieldLine`(字段行唯一读法)。读法:帧头行与结果段标签行之间,第一行必须是规范 `status:` 行且是区间内唯一的 `status:` 行 ⇒ `status`(两端修剪);其后区间内恰一条规范 `error:` 行、其后紧跟规范的 `error_kind:` / `observer:` / `stats:` 之一(引擎的铸序)、且它之前没有 `worktree:` 行(那一行里的路径与清理失败的异常文本是未消毒的多行插值,其后形如 `error: …` 的行认证不了是引擎自己铸的;有 `worktree:` 行的报告 error 留在 `headRest`)⇒ `error`,恰一条规范 `stats:` 行 ⇒ `stats`(原样不修剪);其余没被认领的行 —— 前置告警、worktree 行、阻断原因、`error_kind`、内部 id、步骤清单、认不出的字段行 —— 原样按序每行带换行进 `headRest`(帧头行与结果段标签行含部分发现前缀句是已认领的框架行,不在其中;全空白 ⇒ 键不存在)。状态行不紧邻帧头、非规范(键后无空格 / 空值 / 值内带 CR · U+2028 · U+2029 · U+0085)、或区间内有两条以上 `status:` 行(帧头行里的任务描述原样插入、可带换行,描述里的假状态行 / 假 error 行因此读不成槽位)⇒ 四键全缺席、字节全在 `headRest`;`before` / `after` 仍逐字交出、`before + 摘出的一段 + after === 入参` 不变。默认车道(不声明来源)与纯围栏形零 `frame`。此前端自己数行拼(终端按『恰四行 + 借 `taskOutputStatus` 读状态行』判常态),现在读槽位:常态完成 = `status === 'completed'` 且 `error` 与 `headRest` 都缺席(122d)。
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
### Changed
|
|
315
|
+
|
|
316
|
+
- **面板的五本账收成一条记录**(CC-76;**§122 PR-3**):身份归一漏斗的七张模块级表、常驻集合、running 历史 / ended 账 / 缓着的首见终态行、fleet 投影按会话台账里的周期副本、委派提示的转录锚连接表,收成归约口状态里**一条记录 + 一张别名索引**;代际只有一只判据(`isStaleEngineAgentPanelEnd` 与 `isNewEngineAgentPanelCycle` 是它的两个视图,后者对全部输入逐值不变);面板终态事实只有一个构造器(关卡 / 通知 / 终态 tick / fleet 投影四条腿只交事实)。旧事件口 `subscribeEngineAgentPanel` 与缺席口 `subscribeEngineAgentPanelAbsence` 的投递语义不变(既有两道面板门 273 格原样绿;只在自相矛盾的周期输入与各字段上限被顶满时有边角差别,见本段末条与 KL-661 / KL-662 / KL-664)。
|
|
317
|
+
- **转录锚读面一个键空间**(CC-76;**§122 PR-4**):`getEngineTranscriptId(id)` 按尾段 / 先发布的 UUID / 消费端键一律命中同一条。此前锚按行 id 尾段记、消费端按自己那把键查 —— 子代的 UUID 先上屏(先发布的键为准)那一形读空,委派 prompt 取件腿整条静默。
|
|
318
|
+
- **fleet 账本收通知只按尾段一种比较**(CC-76;**§122 PR-5**):通知 id 在入口归一一次;对裸尾段通知与此前逐值同,复合形通知(`runId childId`)按尾段收齐双生行。
|
|
319
|
+
- `resolveEnginePanelTaskId` 改为纯读(不再顺手续命别名索引的 LRU 序;续命只发生在归约口真走过归一的那一步)。
|
|
320
|
+
- fleet 投影的「上一帧是哪一代」改读记录上的唯一水位(投影不再持周期副本):同一行两帧 `cycleSeq` 相等而 `startedAt` 不同(自相矛盾的输入)时,用量粘性按同一代处理(此前投影自比 `startedAt` 判新一代);投影接受的周期(含缓着的首见终态行)计入水位 —— 比缓行更旧的终态事实不再写进 ended 账(旧事件口照旧递达,行差分口判掉)。KL-661 / KL-662。
|
|
321
|
+
- **终帧拒绝清单「可声称完整」读本流覆盖**(CC-382;接入文档 **§122 KA-1**):判别位 `_sema_permission_denials_absent`(= CC 那条 `permission_denials` 不可声称完整)此前只看账本自己(行读得出 / 判词认得 / 三键齐)。账本只记人审,规则 / hook / 分类器没问过人的拒只有流内那一半看得见,而重连后的流、耐久回放、没交被拒调用表的自建管线上这一半看不全 —— `[]` 加判别位缺席 = 「零拒绝」在最该保守的两形上被说满。现在「可声称完整」须同时:账本侧完整 ∧ 本流见到流首 `meta` ∧ 交了被拒调用表(终帧投影器第三参 `streamSawRunOpen` / `deniedToolNameByCallId`);覆盖读数缺席 = 不知道 ⇒ 判别位落下,清单读作「至少这些」。走 `runStream` 的端零接线,活流上零拒绝的正面事实仍可达;直调终帧投影器的自建管线不交这两格就会拿到判别位(此前没有)。
|
|
322
|
+
- **终帧拒绝清单:账本行遇本地中止与流内补行同一种处置**(CC-382;**§122 KA-2**):同一件事(这次调用最终是本地中止)此前两种处置 —— 流内补行按合并后分类剔中止两词,账本行照列并带 `toolDenialKind: 'cancelled'`,人审拒绝后又被本地打断的调用 `-p` 终帧仍报一条拒绝、还可能让 `_sema_zero_output_denied` 成立。现在两处读同一张合并后分类表:落在中止两词(`interrupted` / `cancelled`)的调用两边都不列(CC:中止不计进拒绝);无 id 的账本行对不上分类表、分类缺席 / 表外词不猜,照列。
|
|
323
|
+
- **`LiveWorkflowController.status().code` 回到型注写的值域**(CC-383;**§122 KA-4**;退役一条读法):型注写「降级时 501 / 404,其余 null」,实现却对任何 `APIError` 都写状态码(401 / 403 / 5xx 都非 null、`degraded` 为假),于是「凭据没被接受」有两条读法(`status().code === 401` 分不出身份类两码;`resolution().kind === 'unauthorized'` 经判官)。现在 `code` 只在降级(501 / 404)时有值(非 null 时 `degraded` 必为真;空列表与造不出 client 仍是 `degraded` 而 `code` 为 null,同前);别的失败状态只留在 `lastError`(`<状态> <句>`)。「凭据没被接受」只剩 `resolution()` 一条读法。读 `status().code` 判 501 / 404 的端零改动。
|
|
324
|
+
- **文件历史一句的判定改读「装配那一拍」的能力位读数**(CC-384;**§122 KA-5**;🔴 型面 BREAKING):`FileHistoryLegNoticeInput.capability` 改名 `assemblyCapability` 并改义 —— 不再是接线回执到时的 `observedFileHistoryCapture()`,而是提交那一拍宿主据以拼声明片段的读数;`FileHistoryDeclarationLedger.declared(requestKey, fact, capabilityAtAssembly?)` 多一个可选第三参,账本多一口 `capabilityAtAssemblyOf(runId)`(同一请求键、同一次绑定;没记 / 没绑 / 键间矛盾 / 那一拍就没读到 ⇒ `{ kind: 'unobserved' }`)。修前:提交时能力探测还没落地 ⇒ 片段口给空片段、引擎照常捕获,回执到时探测已落地 ⇒ 判定的「开关在、端刻意没带」被说话时的读数误满足 ⇒ `not_declared`;现在这一形落 `unknown`(提交时没读到能力位的「没带」不是「刻意没带」)。出句的态不变(仍只有 `not_honored` 一态出句),变的是零句态的判定词与审计行。
|
|
325
|
+
- **持久规则列举错误:`request.query_invalid` 不交游标位时答通用 `error`**(CC-390;**§122 KA-7**;退役 KL-620):`classifyRulesFailure(e, context?)` 在调用方没说这一发带没带游标时(不交第二参 / `cursorSent` 不是布尔 / 读它就抛)不再沿用 0.93.1 的答案 `cursor-stale`(「丢游标重列」对没带游标的那一发永远无效,说不清时说出一个具体因果是编了一个没确认过的事实)。`cursorSent: true` ⇒ `cursor-stale`、`false` ⇒ `query-refused` 不变;本包的列举口永远交这一位。
|
|
326
|
+
- **开发依赖换钉**(CC-524 / CC-540 / CC-521;**§122 UP-0**):`@sema-agent/core` `~7.48.0`、`@sema-agent/sdk` `^18.2.0`、`@sema-agent/settings-schema` `^11.2.0`;peer sdk 地板 `>=18.1.0` 不动。构建期生成表随之重生(值零变化,只换头注版本);生成器读 settings-schema 的 zod 模式改读 zod 4 结构(11.0.0 起依赖 zod 4)。
|
|
327
|
+
- **「本机」判定与 URL 层级式判定改读设置契约的判官**(CC-521 ⑵ ⑶;**§122 UP-2**):`isLoopbackWireUrl` 的主机名判定改读 settings-schema `isLoopbackAuthHost`(鉴权放宽那一只,窄:只认字面),联网搜索 endpoint 的层级式判据改读 settings-schema `isHierarchicalUrl`。两只都以构建期生成物进包(运行期零新依赖)。对 URL 入参逐值不变(上游多认的 socket 形 `::ffff:127.0.0.1` 不会是 `URL.hostname` 的取值)。
|
|
328
|
+
- **models 域的缺省模型与 @ 提及:两代输入归一,影子文档出 10 一代投影**(CC-521 ⑷ ⑸;**§122 UP-4 / UP-5**):settings-schema 10 的 `default` / `atModelAllowlist` 与 11 的 `roles.default` / `atMention` 都经同一只归一器落成一份规范化策略(缺省模型:`default` 在场先于 `roles.default`;@ 提及:`atMention` 在场先于 `atModelAllowlist`,空名单 = 全部可 @),影子 models 文档只出 10 一代的投影(`default` / `atModelAllowlist`,与 0.94.0 同形)—— 支持底线内的本机引擎(服务端 ≤ 7.123.0 内带 settings-schema 10)直接读得懂,11 一代的本机引擎经一次性迁移读成同一份策略。`only` 名单的收窄读设置契约的 `narrowAtMention`(构建期生成物);整张悬空仍原样保留(KL-54);`none`(一个都不许 @)在 10 一代写不出 ⇒ 不写、记 `{ key:'atModelAllowlist', at:'atMention', reason:'unsupported' }` 并出一句 warn(KL-665);`atMention` 读不懂 / 10 形名单不是数组 ⇒ 不写、记 `unreadable`(带 `at`)并出一句 warn(此前 10 形坏值静默忽略);缺省模型从 `roles.default` 归一出来时它不另写;被 `default` 盖住的 `roles.default` 照常按角色写(10 一代里两键各自生效 —— 主任务跑 `default`、`default` 角色解到 `roles.default`;11 一代本机引擎经一次性迁移读成 `default` 那一个,被压过的那一位由迁移自己记回执),悬空照剔、照留痕。`CloudModelRefIssue` 型零变化。Model Hub 删除判定 `computeDeleteWarnings` / `computeDeleteBlockers` 读同一只归一器:11 形 `only` 名单删空的后果句是「一个都不许 @」(10 形照旧「全部可 @」),`roles.default` 指着它报 `default` 拒删(坐标 `roles.default`);`DeleteWarningsInput.doc` 增可选位 `atMention`。
|
|
329
|
+
- **展示出口:被洗的值不再吞掉收尾的结构字符**(CC-528;接入文档 **§122 OL-4**):`displayUntrusted` / `displayUntrustedMarks` 与本包合成终局行 / 结果帧 `errors[]` 共用的凭据面,值恰好止于收尾一段同行代码段的那一串反引号时,那一串留在记号外(`` `api_key=<值>` `` 记号之后收尾反引号照留);值里的反引号一律不截断值(与上一版同);URL 片段末尾**没有配对**的 `)` / `]` 不再算地址的一部分(`[文档](https://h/s?q=<值>)` 的收尾括号、`(https://h/p#<值>)` 的收尾括号留在记号外,配平的括号照旧是地址的一部分)。以反引号起头的值读法不变(整只代码段一枚记号)。
|
|
330
|
+
- **展示出口:「凭据标签 + `token` 方案词 + 值」整只一枚记号**(CC-360;**§122 OL-6**):`password: Token https://h/<值>/x` 此前只遮 `Token`、地址主机 / 路径原样(半洗),现整只一枚记号;`password: Token <值>` / `token: token <值>` 由两枚记号变一枚(遮盖范围不变)。`Authorization: Token <值>` 照旧「方案词留、凭据段换记号」。凭据标签(含 `Authorization:`)的值是 `bearer` / `basic` + 地址时,地址整只一枚记号、方案词留(此前地址按地址豁免、路径原样;`Authorization: Basic <口令>@<主机>` 由 `«redacted:userinfo»@<主机>` 变整只一枚);`bearer` / `basic` + 非地址值读法不变。
|
|
331
|
+
- **展示出口:值前 JSON 转义的制表符 `\t`(字面两字)按分隔读**(CC-528;**§122 OL-2**):标签后的值此前从反斜杠处起读、转义字母 `t` 随值进记号(`password:\«redacted:secret»`),现转义符留在记号外(`password:\t«redacted:secret»`)。紧贴在一枚落单反斜杠之后的方案词是路径段、不读(`C:\repo\basic\test\foo.spec.js` 原样;成对反斜杠之后照认);标签值恰是 `Token`、其后是方案词那一遍会放行的词(`auth_token: Token not found`)时只遮 `Token`、不把后一个词并进记号。
|
|
332
|
+
- **缺省模型改读 `defaultModel`**(CC-465;**§122 WB-2**):`liveDefaultModelName()` 与 `imageVisionOf` / `effortLevelsOf` 的「未指定 ⇒ 缺省」改读 `liveDefaultModelOf`。两行同 id 时改答服务端那一行(此前按 id 形老键 `default` 落第一行);只带老键、不带 `defaultModel` 的目录上改答「不知道」(服务端在本包支持底线以下就恒发 `defaultModel`)。成文改口见 §122b WB 段。
|
|
333
|
+
- `RewindMode` 由运行期元组 `REWIND_MODES` 派生(值不变);`SEAT_CAPABILITY_NAMES` 闭集增员 `rewind`(对 `SeatCapabilityName` 穷举分支的端编译红一次)(CC-466;**§122 WB-6**)。
|
|
334
|
+
- 适配层收口帧撤卡读 `approvalCompleteParked`:`parked: true` 配不是 `expired` 的结局(契约里没有的形)不再算转停驻,撤卡后不再提示「转停驻」(CC-466;**§122 WB-8**)。
|
|
335
|
+
- **hooks 投影读托管层读数**(CC-488;**§122 RD-1**):`hooksForWire()` / `hooksWirePlan()` 在信任门之后、读 `policySettings` 之前读一次 `SettingsPort.managedPolicyReading()`(一轮恰一次),`unreadable` ⇒ 同「读 `policySettings` 抛错」一个成因(`governance_unreadable`)。宿主不接这一口 = 今天的行为一个字节不变。
|
|
336
|
+
- **`reconnectMcpServer` 的注入面就是 sdk 的签名**(CC-432;**§122 RD-4**;🔴 型面 BREAKING,见 Removed):动词按 `(sessionId, server: string, opts?)` 调 —— 第二实参裸串、有 `signal` 时第三实参恰 `{ signal }`。sdk 的 `AgentClient` 实例不经适配直接传入;编译期钉在 `AgentClient` 与 `McpReconnectClientLike` 两个真类型的赋值关系上(sdk 改了签名或有人把注入面改回别的形 ⇒ build 红)。判决臂、体门、回声身份、`unsettled` 读法一字不变。
|
|
337
|
+
- **至多一次判类尺先取快照再判**(CC-319;接入文档 **§122 SA-1**):自愈 steer / cancel 两路、新的 interrupt 与设备换绑发射口共用的判类,先把抛出物上的状态码 / 状态码别名 / 机器码 / 类名四位逐位受保护地各读一次,判类与结局都用这一份读数,不再回读。对真 sdk 错误对象(四位都是数据位)判类逐例不变;只在外来的抛出物上有差:机器码取值器会抛时此前连状态码一起读不出、判「送达未知」,现在只丢机器码、按状态码判(4xx ⇒ 确定没送到);两读两样的取值器不再让判类与结局各说各的。
|
|
338
|
+
- **支持底线抬升:服务端 7.106.0 → 7.115.0、引擎 7.35.2 → 7.40.1**(**§122 RX-6**;sdk 底线 18.1.0 不动):终端附着门槛 7.119.0 已在主干、三端回报的底线均 ≥ 7.119.0;服务端 7.106.0 – 7.114.x 出支持范围,本包不再见证它们(根公面 `SUPPORT_FLOOR` 的值随之变,型面不变)。`engineVersionTier` 的门槛跟着抬:7.106.0 – 7.114.x 由 `engine` 改答 `legacy`;`coreVersionTier` 的下限 7.35.2 → 7.40.1(`coreVersionTier('7.38.3', '1.288.0')` 由 `engine` 改答 `legacy`)。
|
|
339
|
+
- **`isAlreadyResolvedFailure` 收成「门已决」的唯一判据,入参放宽为两形**(CC-354 / CC-346;**§122 SC-1**):端侧判据链上多出的四臂并进来 —— 本地安全停一律不算已决、引擎「门已决」四码(`approval_stale` / `checkpoint.already_resolved` / `not_found.approval` / `not_found.checkpoint`)按码判已决、sdk 把这一族映成的错误类(`ApprovalStaleError` / `NotFoundError`)判已决、续跑启动期错误类不算已决;判序 = 闭集码闸最先 → 四臂 → 其余(门还在 / 续跑启动期失败的码、停驻挪动族、`gone.ask`、文案兜底)。入参除决断腿的拍平结局外也收决断口抛出的错误对象(型为 `unknown`,只放宽);拍平结局上的本地安全停位与闭集码同一读法,文字里的类名不当机读信号。包内两条决断腿:四码此前多经失败文字判成已决,现在按码判;唯一的行为差是 `checkpoint.already_resolved` 的「checkpoint is <状态> — the token is consumed …」那一句在状态不是 resolved 时(文字里没有词表的词)此前判「真失败」、现在判已决(续读流,与终端同)。对终端现行组合逐格同答:拍平结局 770 格、抛出物 1 650 格。
|
|
340
|
+
- `GATE_FAILURE_CODES` 只定义一次(CC-346;**§122 SC-3**):`HitlSafetyCode` 与 `GateFailureCode` 都由这一只元组派生(此前另有一份同员联合靠双向编译钉对齐);根入口同名同值。
|
|
341
|
+
- 子代内容账本的缺省会话槽身份改取 `DEFAULT_SESSION_KEY`(CC-348;**§122 SC-6**;包内件):此前手抄同值一份、靠门对值。
|
|
342
|
+
- 通知终局事实 `getBgTerminalFacts` 的语义成文(CC-348;**§122 SC-7**):它是「最近一条被收下的后台通知说了什么」(历史事实),不是这一行的当前终态 —— 之后的终态行帧不改写它,行的当前终态读账本的行(`project().tasks` / `readEngineActiveBgTasks`)。行为不变,边界由门钉住。
|
|
343
|
+
- **子代尾随 / 子代终报 / `/compact` 的能力位只读总缓存**(CC-344;**§122 SB-1**):三处各自的按地址私有能力表删除,读数只在 `engineCapsCache` 的快照里 —— 有身份键 ⇒ 读快照(未落地就经它 kick 一次、等落定至多 60 s;宿主自己的探测在飞就等它),没有身份键(注入连线不给 `capsBaseUrl`)⇒ 只探这一发、不存。判据不变(尾随 / 终报读数恰为真才开;`/compact` 只有明说 `false` 才答 `unsupported`)。🔴 行为差:true 不再永久固化、false 不再 5 分钟后自己重探 —— 两者都只随 `invalidateEngineCaps` 换代(KL-699);宿主已 kick 的快照直接读,注入 client 不再为这三处另发探测。调用方中止只结束自己的等待,共用探测照常落地。
|
|
344
|
+
- `centerWiring` 键缺席一律读 `none`、`executionLane.isolated` 缺席一律按手分(`no_hands` / `unreadable`)—— 不再拿同体 `store` 在不在分「新一代 / 老一代」(CC-344;**§122 SB-5**):本包支持底线服务端 7.106.0 起 `store` 恒在场,见证对受支持的服务端没有判别力;只在不带 `store` 的回体上有差别(此前答 `not_reported`)。`store` / `sql` 两只读器读 `store` 座的那一只读法不变。
|
|
345
|
+
- **`mcpEngineLegLivenessOf` 对投影后被丢掉的坏行不再答「不在上面」**(CC-325;**§122 SB-3**):段投影器 `projectMcpSection` 丢掉的「名字读得出、`status` 读不出」的行按名记在它产出的那只数组上(不可枚举的符号键;JSON / 展开 / 键枚举与修前逐字节同),两只按名找行的读口把它们算作「在,但读不出」—— 活性由 `not-listed` 改答 `unreadable`,同名一好一坏由只读好的那一行改答 `ambiguous`(与同一份原始行直接喂进来同答);宿主拷贝过的段丢掉这一记号(KL-700)。
|
|
346
|
+
- doctor 句 `executionLaneDoctorDetail` 的「没报」那一句改口:不再说「客户端照旧推断」(0.92.0 起已不推断),改说 baseDir 在引擎报告之前不发(CC-344;**§122 SB-6**)。
|
|
347
|
+
- `engineCapState` 对一份读键就抛的能力回体(宿主探测交来的取值器 / 撤销式代理)答 `unprobed`,不再把异常抛给调用方(CC-344;与本模块其余口「绝不抛」同一条)。
|
|
348
|
+
- **resume 三选卡的 attach 供给位改读 `runningAttachOffered`(严格 `true`)**(CC-536;**§122 RS-4**):`ResumeRunningCardInput.canAttach` 的类型是 `boolean`,按类型传值的宿主行为与 0.94.0 逐字节同;纯 JS 宿主若交非布尔真值(函数引用、`1`),0.94.0 会给 attach、本版不给(KL-717)。
|
|
349
|
+
- **`engineAgentTerminalAfterDropLine(label, status, hasReport)` 的 `status` 型由 `RunTerminalStatus` 收成 `CcTaskTerminalStatus`**(CC-78;**§122 TW-2**;🔴 型面 BREAKING,只对传 `blocked` 的调用方):这一句描述的是 CC 本地任务行的终态,行词表只有 completed / failed / killed;传引擎别的终态词先过 `ccTaskTerminalStatusOf`。句子逐字节不变。
|
|
350
|
+
- **`<task-notification>` 的种子扫描只认通知词域的四个终态**(CC-78;**§122 TW-3**;成文改口):此前按「通知表 ∪ run 行表」的并集判,多认一个 `blocked`。`<status>` 的词域属引擎 `TaskNotificationStatus`;包内与终端写这条 XML 的生产者逐个核过,都不写 `blocked`。`<status>blocked</status>` 的块从此不记「已通知」(KL-714)。
|
|
351
|
+
- **`SUPPORT_FLOOR` 改为声明的构建期生成物**(CC-397;运行期值、`Readonly<SupportFloor>` 型与根入口导出都不变,无 API 变化):`scripts/gen-support-floor.mjs` 把机读声明 `scripts/support-floor.json` 的 `floor` 写成包内 `src/declared/supportFloorDeclared.ts`(一个冻结字面对象,零注释零 import),`src/supportFloor.ts` 只引那一个对象 —— 此前是声明的手写镜像,抬底线要同批改两处、靠门逐项对拍兜着;现在只改声明、跑一次生成器(`node scripts/gen-support-floor.mjs --write`)。新文件进 `dist` 但不上根入口。
|
|
352
|
+
- **能力位读器族读数改从总缓存的落地派生**(CC-344 余项 #238 / #240 / #241 / #245;**§122 CR-1**):29 只 `observed*` 不再各存一张按地址的格表 —— 「这台引擎的某一位能力读出来是什么」= 那一位的投影作用在总缓存当前落地的那份回体上,按「这一次落地」记忆化并逐层冻结(同一次落地两读交同一只对象;同一只回体再落一次、或失效后替代探测落地 ⇒ 重新投影);没有落地(没 kick / 在途 / 探测抛 / 回体非对象 / 被失效)与投影答畸形一律 `unobserved`(每次新铸)。读数型、`observed*` / `project*` 签名与根入口名数不变。**行为差(与 0.94.0 比,两向)**:① 探测闭包里(落地之前)读口答 `unobserved`(此前闭包里先调 `noteEngineCapsFor*` 再读,同一拍就读到);同一拍要用读数的宿主读手上这一发的投影 `project*Capability(caps)`(纯函数),或 `await engineCapsSettled` 之后再读(KL-725)。② 宿主不调 `noteEngineCapsFor*` 也读得到(此前恒 `unobserved`)。
|
|
353
|
+
- **「引擎明说不能回退对话就不补 `/rewind` 出路句」的判官随模块加载接上**(**§122 CR-5**):此前(含 0.94.0)判官挂在 `noteEngineCapsForRewindArchive` 上,宿主第一次喂读数时才接;`noteEngineCapsFor*` 成空调用后不再调它的宿主永远接不上,`offersRewind: { engineBaseUrl }` 对象形下引擎明说无对话锚时仍补出路句。现在判官在包加载时接上、读总缓存的落地(没落地 ⇒ 判不出 ⇒ 照补,同前)。
|
|
354
|
+
- **需要 sdk ≥19.0.0**(peer 地板 `>=18.1.0` → `>=19.0.0`;CC-570;**§122 PK7-1**):🔴 型面 BREAKING / 硬破坏三句 —— ① 本包的型取 sdk 19 的 `AskRowEndingCause` / `ApprovalSettleCause`、运行期闭集与码表取 sdk 19 包根常量(构建期生成),sdk 18 上编译红;② 410 读数位改名(下一条);③ 订阅读口在终帧上结束本腿交给 sdk 19(审批推送腿不再自己截断,见下下一条)。支持底线 sdk 一项同批 18.1.0 → 19.0.0。
|
|
355
|
+
- **410 `gone.ask` 读数 `AskGoneDetail.deniedReason` 改名 `endingCause`,值域由开集收成闭集**(CC-570;服务端 7.124.0 把体键 `deniedReason` 换成 `cause`;**§122 PK7-2**):`askGoneFromError` 按键在场判两代 —— 体上有 `cause` 键即新一代、只读它(读不出也不回落旧键),没有才读旧键 `deniedReason`;两支同一张闭集(sdk `ASK_ROW_ENDING_CAUSES`)、同一条分组律(`DENIED` 只配路由失败那一词,`VOID` 配其余九词),表外 / 组外 ⇒ 缺席(修前 `VOID` 组的表外词原样带)。`askGoneContent` 的句子逐字不变。型面 BREAKING:读 `.deniedReason` 的写法编译红一次。
|
|
356
|
+
- **run 死亡判决码表 `RUN_DEATH_VERDICT_CODES` 取 sdk 19 包根同名常量**(CC-570;**§122 PK7-8**):公面名与值不变;三只单码名与三句出路句钉在 sdk 码表的成员型上(sdk 增删一码 ⇒ 本包编译红)。
|
|
357
|
+
- **店形拒同族的第二码 `memory.scope_home_not_directory` 有了专读**(CC-372;服务端 ≥7.118.0 / 引擎 7.44.0;**§122 FX-E3a / FX-E3b**):一只作用域家被换成链或文件时,所有触记忆店的路由同答 409 + 这一码(此前平铺布局答 500 `internal.memory_control_plane_corrupt`)。会话属主抹除口:`SessionMemoryEraseUnconfirmedWhy` 多一员 `store_home_not_directory`(`SESSION_MEMORY_ERASE_UNCONFIRMED_WHYS` 九 → 十),归「没法确认」档、重发姿势 `needs_operator`(上游不给提交点判别位,与 `store_link_outside` 同读法;不说「什么都没抹」);记忆治理五动词判官 `classifyMemoryFailure`:`MEMORY_VERB_UNKNOWN_WHYS` 多一员 `store_form_refused`(九 → 十),同时收 `memory.target_outside_store`(此前落 `unclassified`)与新码,同为「说不清」。按码读 —— **`detail.form` / `detail.path` 不在 wire 上**(服务端只发码 + 固定句,路径只进运维日志),本包不读它们,即便将来回体多带,结局的文本与诊断位也不带出路径或盘形词。更老的服务端对同一盘形答 500,仍落 `control_plane_corrupt` / `engine_fault`,不变。型面:两个闭集各增一员,对它们做带 `never` 兜底的穷举 `switch` 的宿主编译红一次。
|
|
358
|
+
- **代际判据抽到第 0 层叶子 `cycleOrder.ts`,fleet 账本与面板记录共用一只比较**(CC-555;**§122 FX-F3**;实现收口,不在新增公面名):此前账本的 `raiseCycleWatermark` 与通知退休处对周期号整数直比,与面板的 `cycleOrder` 是同一问的第二条读法,「合法周期号」的整数判也有六份(面板判据自带一份、行投影一处、账本两处、通知消费者给面板终态事实与常驻标清除用的周期身份两处)。现在比较一律经 `cycleSeqOrder`(`cycleOrder` 的数值视图)、合法性一律经 `cycleSeqValue`(≥ 1 的整数,其余整键缺席);两层各自的**状态**不合并(面板记录上的 `cycle` 水位;账本里按任务的有界水位)。公面不变:`isStaleEngineAgentPanelEnd` / `isNewEngineAgentPanelCycle` 仍是判据的视图,型 `EngineAgentPanelCycleIdentity` 同名同形;对全部合法输入逐值不变,坏形(0 / 负 / 小数 / NaN / 非数)按缺席 ⇒ 判不出 ⇒ 现行为。
|
|
359
|
+
- **hooks「本端执行器能不能跑这一只」在没有型表时只剩一种读法**(CC-387;接入文档 **§122 FX-H3**):`shellHookEvents` 报了事件而没交 `shellHookTypesByEvent`(或交的是坏形)时,此前插件条目读「报了事件 = 全型」、设置来源条目读「prompt / agent 本端跑不了」—— 同一个 (UserPromptSubmit, prompt) 两只谓词答案相反。现在三处判定(插件条目的「壳执行」、设置来源条目的执行者、被拿掉条目的 `notRun`)读同一只:没有型表 ⇒ command / http 按事件、prompt / agent 视为本端跑不了;型表在场而没列某个事件 ⇒ 该事件全型(不变)。行为差只在「报了事件却不交型表」的宿主上:prompt / agent 型的**插件**条目由「本端跑」改判「不跑」并进未执行清单(此前静默声称本端会跑);设置来源条目照旧留在请求体上由引擎跑。交了型表的宿主(终端)零差。
|
|
360
|
+
- **门记录对裸帧只读一次;ask 出身词 `origin` 只有一把读法**(CC-395;**§122 FX-A1**):① `gateOutcomeOf(frame)` 与分类词读器 `ccToolDenialKindForToolEnd(frame)` 共用一只记录读器 —— 裸帧每个属性只读一次,门记录视图与「结算段 / 成因 / 分类归属是否在场」三个位出自同一份快照(此前分类词读器先读一遍成视图、再读一遍裸帧取在场;取值器 / 代理 / 会变的帧上两次读到不同值,答出的词对不上任何一拍,现以第一拍为准)。JSON 形帧逐帧同值(对 0.94.0 实现的 ≥ 6000 只纯数据帧池对拍)。② `origin` 全包只有一把读法 —— 自有键 ∧ 非空串 ⇒ 原文字节:门记录视图、放行账与分类器状态读器的观测座此前按原型链取值,与活卡帧 / 待决行 / 卡请求 / 自动车道判定的自有键读法是两套,现统一。行为差只在非 JSON 形入参上:只在原型链上的 `origin` 不再算(此前观测座会把它当成「分类器真跑过」的肯定事实)。
|
|
361
|
+
- **🔴 型面 BREAKING:悬挂 ask 的会话范围必须显式选**(CC-333;接入文档 **§122 FX-G3**):`suspendedSubagentAsks(snapshot, filter)` / `countApprovalsAwaitingDecision(snapshot, filter)` / `createSuspendedAskTracker(filter)` 的 `filter` 由可选改必填,`SuspendedAskFilter` 由 `{ sessionId?: string }` 改为三形恰一:`{ sessionId }`(只该会话)/ `{ allSessions: true }`(显式不分会话)/ `{ identityPending: true }`(本端会话身份还没落地)。修前缺省 / 缺席 `sessionId` = 全体:多会话共用一台引擎、本端身份未落地时,会把别的会话的审批数成自己的、把别人的卡出到自己面前。现在身份未定(显式声明,或缺席 / 空串 / 非串 / 两形同给 / 在场却不合法的位 / 非对象 / 取值器抛 / 已撤销的代理 / 原型链上的位)⇒ 计数三格 `null`(不知道归谁,不渲 0、也不渲全体数)、视图空、跟踪器零 delta;范围随跟踪器构造固定(身份落地后宿主换一只新的)。硬破坏三句:`filter` 可选改必填、联合三形取代 `{ sessionId?: string }`;不改就编译红(`createSuspendedAskTracker()` / `{ sessionId: string | undefined }` / 不给范围的两口);JS 宿主不改:缺席 / `{ sessionId: undefined }` 一律按身份未定处置(计数 `null`、卡不出),不再默认全体。
|
|
362
|
+
- **`SEMA_ATTACHMENTS` 的产品缺省多一键 `todoReminder`**(CC-544;行为面,提交体多一键;接入文档 **§122 FX-G4**):缺省路径(取值缺席 / 空清单 / 单个未登记词 / `default` 词)现在产出 `{ backgroundTasks: true, toolsDelta: true, todoReminder: true }`,缺省表只此一处;引擎库缺省不变(`TaskSpec.attachments.todoReminder === true` 才开),自拼 `attachments` 对象的宿主不经本口、不受影响。要关:`SEMA_ATTACHMENTS=off`(五拼法;整条撤,literal-true 族删键、永不发 `false`)或写不含它的显式清单(`backgroundTasks,toolsDelta` 即此前的缺省)。`default,-todoReminder` 仍被拒(literal-true 族不接受减号),句子指向逐项列清单的写法。
|
|
363
|
+
- **`CONFIG_REFUSAL_CODES` 订正名分**(CC-560 ②;接入文档 **§122 FX-G6**;成文改口 —— 0.94.0「两只准备期拒码进配置拒绝识别表」一条里的「识别表」与「渲染按 `config.` 前缀走既有处置」两处作废):它是已登记成员的冻结清单,**不参与任何判定**;包内零读点,「这是不是一条配置拒绝」只有一条读法 `isConfigRefusalCode`(`config.` 前缀,开集);包内也没有按前缀渲染的代码,那是宿主读谓词的事。成员、值与导出面不变;门钉零读点与表上的注释。
|
|
364
|
+
- **引擎 Bash 结构化位『交出后台』只有一个读点**(CC-418;**§122 FX-C2**;实现收口,行为面只在引擎不铸的一形):此前同一个 `detached` 位有三处读法 —— `wireOutputToBody` 的 T14 排除读 `detached === true`、`structuredToToolUseResult` 的 bash 臂读 `detached === true` ∧ `task_id` 是串(空串也算)、`detectEngineBgShellDetach` 读 `task_id` 非空串,判据字面不同、今天同答只因为引擎不铸空串 task_id。现在三处读同一只私有读点的同一个量(`detached === true` ∧ `task_id` 是非空串;`registerFailed` 只否决登记、卡照渲)。行为差只有一形:`detached: true` 而 `task_id` 为空串 —— 此前 bash 臂渲出 `backgroundTaskId` 为空串的『已转后台』卡(T14 照排除、登记不铸,三处各说各话),现在落普通 bash 卡、T14 不再排除。不带 `detached === true` 的输入与 0.94.0 / 0.93.1 / 0.92.0 发布产物逐位同。
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
### Deprecated
|
|
371
|
+
|
|
372
|
+
- **`subscribeEngineAgentPanel` / `subscribeEngineAgentPanelAbsence`**(CC-114;**§122 PR-2**):过渡口,本版行为不变;消费端改订 `subscribeEnginePanelRows`、删掉旧口调用之后的下一个本包版本删除(复核期 0.96.0;退役登记 RL-89 / RL-90)。
|
|
373
|
+
- `sessionReadRedaction` 的布尔读法(CC-540 B;**§122 UP-7**):服务端 7.123.0 起历史读面 assistant `errorMessage` 叶同一只脱敏而位值不变 —— 位为真不答这一叶的射程(KL-667)。服务端换成叶名表之后的下一个本包版本改读叶名表(复核期 0.96.0;退役登记 RL-92)。
|
|
374
|
+
- 影子 models 文档的 10 一代投影(CC-521;**§122 UP-4**):支持底线的服务端一项抬到 7.124.0 之后的下一个本包版本改出 11 一代的形(`roles.default` / `atMention`,`none` 照写)、删 10 一代投影(退役登记 RL-94,按支持底线自动判期)。
|
|
375
|
+
- models 域归一器的 10 一代输入臂(读 `default` / `atModelAllowlist`;CC-521):终端换钉 settings-schema ≥ 11 之后的下一个本包版本删除(复核期 0.97.0;退役登记 RL-95)。
|
|
376
|
+
- 在线目录型上的 id 形缺省老键 `LiveModelCatalog.default`(CC-465;**§122 WB-2**):本包读口自本版起不读;三端删掉对它的读点(改读 `liveDefaultModelOf`)之后的下一个本包版本从型上去掉(复核期 0.97.0;退役登记 RL-107)。
|
|
377
|
+
- **`isAlreadyResolvedGateReason` / `isGateStandingErrorCode` / `isCodeClassifiedGateFailure` 三只拼装件**(CC-354;**§122 SC-2**):只为端自拼「门已决」判据链而在根入口;本版起端整只换读 `isAlreadyResolvedFailure`。终端删掉自拼的组合、桌面端会话宿主的扫词读点改调 `isAlreadyResolvedFailure` 之后的下一个本包版本退出根入口(包内照用;复核期 0.97.0;退役登记 RL-103)。
|
|
378
|
+
- **`recordBgTerminalFacts` 根入口写口**(CC-348;**§122 SC-7**):通知终局事实的写者只该是 fleet 账本收通知那一臂;三端零写者。下一个本包版本退出根入口(包内照用;复核期 0.96.0;退役登记 RL-104)。
|
|
379
|
+
- **fleet 账本兼容入口 `ledger.applyFrame`**(CC-348;**§122 SC-8**):与 `issueStream()` 的 ingress 并存使「有没有活流」两读。终端改走 ingress 之后的下一个本包版本,兼容入口与 `connected` 判活读法一起退(复核期 0.97.0;退役登记 RL-105)。
|
|
380
|
+
- `resetManualCompactCapability()`(CC-344;**§122 SB-2**):本版起 no-op —— `/compact` 的能力位不再有私有表,失效只走 `invalidateEngineCaps`(对总缓存零副作用,不替调用方失效别的能力位)。消费端在引擎温切处删掉这一行调用之后的下一个本包版本删除(复核期 0.96.0;退役登记 RL-101)。
|
|
381
|
+
- **29 只 `noteEngineCapsFor*`**(CC-344 余项;**§122 CR-2**):本版起空调用(读数只从总缓存的落地派生,宿主探测闭包里不必再调;对任意入参不抛)。消费端删掉这些调用之后的下一个本包版本删除(复核期 0.96.0;退役登记 RL-113)。
|
|
382
|
+
- **29 只 `__reset*ReadingsForTests`**(CC-344 余项;**§122 CR-2**):本版起只清读器自己的记忆(下一次读按落地重新投影);要清读数改调 `__resetEngineCapsCacheForTests`。消费端删掉这些调用之后的下一个本包版本删除(复核期 0.96.0;退役登记 RL-114)。
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
### Fixed
|
|
386
|
+
|
|
387
|
+
- **审批推送腿在排空终帧上结束本腿、按梯重开**(CC-558 / CC-570;**§122 DR-1** / **PK7-9**):此前对 `error` + `draining` 那一帧 `continue`,把「结束本腿」交给了 sdk `approvals.stream` 资源层的重连环(帧解析成功即清失败计数、流尽即重连 —— 排空帧本身就是一帧,对每次都回排空帧的对端是每拍一次 GET 的慢循环);与 sdk 19 搭配时排空收场又被当成一次推送失败、按 `streamRetryMs` 才重开。现在本腿在排空终帧上结束 —— 由 sdk ≥19 的 `approvals.stream` 结束(交出终帧之后自己结束本腿、不重连;本包不另设第二份终止判定),推送腿记下「本腿以排空帧收场」、回落轮询不盲、按三端同读的 `streamDrainingDecision` 梯(1 / 2 / 4 秒,三次)重开推送腿,排空不计 `streamFailures`,三次仍在排空按一次常规故障处理(有界)。
|
|
388
|
+
- **服务端排空时 run 事件流按梯重开、不再停在排空帧上**(CC-597;**§122 DR-1a**):sdk 19 起 `runs.events` 在排空终帧上结束本腿、不再自己重连 —— 此前决断后续读的那条 run 事件流(`bridgeAskUserQuestionGates`)把排空帧原样交给宿主后就收场,这一轮停在那里;无头续收(`withHeadlessR1Reconnect`)把它当成一次撕裂,零等待重开,连着两次就耗尽重连预算、落「引擎空闲」那句判死。现在两条腿与审批推送腿、workflow 活动流读同一只排空收场账:以排空终帧**正常结束**的腿按 `streamDrainingDecision` 梯(1 / 2 / 4 秒,三次)从已读到的最后一个事件重开同一条 run —— 不重发决断、不计连接失败(无头腿不扣重连预算、不探活)、排空帧不交宿主;梯尽或 run 句柄未知 ⇒ 按断线收场(决断腿干净结束、不铸终帧、不抛,由宿主对断线的既有处置接手;无头腿先查 run 行,取得到终局即收尾,否则进它自己的重连预算);调用方已停 ⇒ 中断出口。排空帧在任何出口都不交宿主。抛出仍按断线处理。资源层自己重连的 sdk(18.x 在排空帧之后流不结束)上不会多开一条流。同批:workflow 活动流在排空帧之后又抛出时按断线处理(1.5 秒重连),此前也走排空梯。
|
|
389
|
+
- 子代 UUID 先上屏的那一形,详情页「委派 prompt」不再恒空(见 Changed 第二条)。
|
|
390
|
+
- **短命子代的终态事实按它的 UUID 先到、终态行后到**:此前那条终态行被当成历史行永远缓住(两个订阅口都看不到这一行与它的最终用量);现在行自己的转录锚在本进程递达过终态事实 ⇒ 不是历史行,照发行帧(带最终用量)与这一行自己的终态(**§122 PR-6**)。
|
|
391
|
+
- 直接发布口送来的**可证更旧一代**的行帧不再把周期水位回滚(此前随后的前代终态会被当成当代);行差分口对它零差分,旧事件口照旧过境(**§122 PR-6**)。
|
|
392
|
+
- **计划审阅卡上的自由文本反馈不再丢字**(CC-557;**§122 PF-1 / PF-2**):用户在计划卡上写的反馈(`AskAnswer.note`)此前从不被读 —— 空 `selected` 加 `note` 被判成 `dismissed`(等同 Esc),选「No」也从不带理由,引擎侧「审阅人备注」通道没有生产者,写下的字没有上线。现在 `planReviewChoiceFromAnswer` 读 `note`:恰一题、`selected` 为空或恰为 No 标签、`note` 非空白 ⇒ `{ decision: 'reject', reason: <note 原文> }`;选 Yes 又写了字 ⇒ 照旧批准(`note` 不改决定、不上线,只留一行 debug 日志,日志不含正文);空 `selected` 且无 `note`(Esc)与矛盾多选 / 多题 / 不在本卡标签的作答仍是 `dismissed`(`note` 救不回它们)。首呈卡与重开卡两个作答口把理由随决断递交,经审批拒因同一只窄化器(trim / 空白不落 / 超 4096 字符截断),请求体键序 `decision` → `reason` → `permissionModeAfter`;不带 `note` 的作答请求体与 0.94.0 逐字节同。型面只增:`PlanReviewChoice` 的 reject 臂多可选 `reason?: string`;`ReopenPlanReviewOpts.deliverDecision` 多可选第三参 `reason`(有反馈时才传;没有反馈时调用形不变)。宿主记账口 `notePlanReviewAnsweredIfDecisive` 把非空白 `note` 的自由文本作答算作决断性作答。
|
|
393
|
+
- **后台视图 assistant 源的 401 与 fleet 源同判**(CC-383;**§122 KA-3**):同一个服务端铸点(全局凭据门的 `401 auth.unauthorized`)此前在 fleet 源落 `unauthorized`、在 assistant 源落 `unavailable` —— 配了服务凭据而客户端没带对时,后台视图两源一个说「凭据没被接受」、一个说「连不上」。现在 assistant 源调同一只判官 `isReadCredentialRefusal`、同一个先后(面不在的 `not-configured` 先于凭据);caps 探针自己也 401 时不改写这一判。两源对同一抛出物同答;`BackgroundSourceHealth` 的 `unauthorized` 一员不是新增(0.86.0 起),只是 assistant 源现在也会落它。
|
|
394
|
+
- **print 车道 `tool_use` 块不再带三只非 CC 键**(CC-385;**§122 KA-6**;根入口 +1 名 `stripToolUseSideChannels`,即三键的唯一摘除口):`-p --output-format stream-json` 出帧的 `tool_use` 块此前带 `label` / `eventId` / `parentToolCallId`(`tool_start` 臂为交互面桥铸在块上的侧信道,桥负责在渲染前摘掉;print 车道没有桥)。现在 print 车道(`EmitContext.lane === 'print'`)出帧前经与交互面适配层同一只摘键函数,块只剩 CC 形 `type` / `id` / `name` / `input`;子代归属仍在信封层(`parent_tool_use_id`、`message.id`)。交互面(车道缺席 / `'interactive'` / `'utility'`)块上照旧带这三键。入参对象不动。
|
|
395
|
+
- 控制面按 settings-schema 11 发 models 域时,@ 提及限制不再被影子文档静默丢掉(0.94.0 只认 `atModelAllowlist`,读不到 `atMention` ⇒ 本机引擎上谁都能 @;**§122 UP-4**)。
|
|
396
|
+
- **展示出口凭据网补漏七形**(CC-528 / CC-360 / CC-414;帖 [9734] / [9753];接入文档 **§122 OL-1 – OL-7**;只多遮):① `Bearer (<值>)` / `Bearer [<值>]` 与标签后的 `api_key=(<值>)` / `api_key: (<值>)` —— 括号里恰一只裸值且紧跟配对收尾 ⇒ 遮括号里那一只(括号里是占位形 `(API_KEY)` / `(your-token)`、有空白、`[文字](` 链接形照旧原样);② `Bearer\t<值>`(JSON 转义制表符作分隔)此前整形不认;③ 没有任何标签的裸不透明值(`key <值> is invalid`、解析器报错里引出的原体)按长度 + 字符三类 + 香农熵 + 段形判,十六进制哈希(含大小写混写)/ UUID / Base64 图片头 / 完整性摘要 / 服务商对象 id / 常见标识符不动;④ 关联数组箭头 `'api_key' => '<值>'`(引号包住的标签、同一行的引号值);⑤ 凭据标签(含 `Authorization:`)之后「方案词 + 地址」的地址主机 / 路径 / 查询:`password: Token https://h/<值>/x` 整只一枚,`password: Bearer https://h/<值>/x` / `"token": "basic https://…"` 方案词留、地址整只一枚(无标签的地址与说明句照旧);⑥ 粘在下划线 / 连字符之后的已知前缀凭据(`mcp__x__sk-ant-<值>`、`x_sk-ant-<值>`、`MY_ghp_<值>`,URL 路径段同判)—— 遮盖从前缀起,标识符前半截留着;`mcp__x__skill` 一类普通标识符不动。`Parsing error: Unexpected token =>` 一句与上一版同字节。
|
|
397
|
+
- 两行模型同一个上游 id 时,缺省模型(选单打勾、看图 / 思考档的未指定形)不再落到第一行,改落服务端说的那一行(CC-465;**§122 WB-2**)。
|
|
398
|
+
- 座位上渲染端送的两只子代载荷位(`forwardSubagentEvents` / `retainSubagentSessions`)有了判官(此前没有包侧判据,宿主自写的入站门不读它们);座位目录不再丢掉没有 `id` 的模型行(CC-465 / CC-466;**§122 WB-4 / WB-5**)。
|
|
399
|
+
- **托管层读不出时 hooks 不再照全源投**(CC-488;**§122 RD-1**):见 Added 第一条。受影响的宿主只有「托管层读坏时按源读口返回 `null` 而不抛」的那一形;接上 `managedPolicyReading()` 并在读不出时报 `unreadable` 即得;不接的宿主不受影响(KL-686)。
|
|
400
|
+
- **sdk 客户端直接传给 `reconnectMcpServer` 时请求体不再是 `{"server":{"server":"alpha"}}`**(CC-432;**§122 RD-4**):修前注入面把 `{ server }` 对象当第二实参交给 sdk 的 `mcpReconnect(sessionId, server, opts?)`,sdk 把它整个序列化成 `server` 的值;JS 宿主绕过类型检查直传 sdk 客户端会发出一个被服务端拒绝的请求体。现在体恰为 `{"server":"alpha"}`。
|
|
401
|
+
- **models 域归一器对「读到一半抛」的答法**(absence-fold 诚实化;**§122 UP-4 / UP-5**):此前 `modelsPolicyOf` 的 catch 折成空策略(= 「文档没说」),两处读者看不出差别 —— 云投影把缺省模型与 @ 提及两键静默不投、零留痕零句,Model Hub 删除判定读成「没人指着它、可以删」。现在读抛 ⇒ `{ unreadable: true }`:云投影两键不投且各留一条 `unreadable` 痕(@ 提及那条 `at: 'models'`)并各出一句 warn;删除判定产一条 `unreadable` 阻断(fail-closed 拒删,与「调用方没读到文档」同一口径)。JSON 回体 / 盘上 JSON 上不可达(访问器 / 代理陷阱 / 撤销代理才到),敌意形钉行为;`CloudModelRefIssue` / `PoolDeleteBlocker` 型零变化。
|
|
402
|
+
- **Bash 结果「按退出码算不算失败」两车道同一只判定**(CC-347;**§122 SC-5**):`-p` 车道此前自带正则只锚首行 `exit code: N`,交互车道反解完整框架 —— 负退出码(`-p` 判不出)、首行之后不是框架的文本(`-p` 判失败)、structured 只带 `exitCode`(交互车道退回反解正文)三形两车道答案相反。现在两车道与结构化投影都读同一只退出读数:structured 是 bash 形且 `exitCode` 是数 ⇒ 权威;否则只认完整框架;良性注记在场不算失败。交互车道的正文两槽来源不变(structured 带 stdout / stderr 串才读它,否则反解框架);正文不是框架而 structured 带非零 `exitCode` ⇒ 按失败卡渲原文。
|
|
403
|
+
- **已取消的后台任务通知不再挂成「在跑」、不再被结成成功**(CC-78;**§122 TW-3**):`task_notification` 帧的终态判据此前借 run 行那张表(有 `blocked`、没有 `cancelled`)⇒ 一条 `cancelled` 通知既不收面板行、也不发 `notification_terminal`,行挂成「在跑」;后台子代通知(`bg_notification` 与空闲期补发)的 `isError` 此前借 run 行否面谓词 ⇒ `cancelled` 答 `false`,面板把一条已取消的子代结成**成功**。两处改读通知面属主谓词:`cancelled` 收行且 `isError: true`、发 `notification_terminal`。`blocked` 不在通知词域里,通知帧上读到它不再当终态。
|
|
404
|
+
- **活卡在屏时,同一只审批不再从耐久路开出第二张卡**(CC-593;**§122 XH-1 / XH-2**):单一持有登记里活卡与停驻行两种键构造上不相交,「同一只审批同时只有一个持有者」只在各自那一路内成立 —— 活卡在屏期间同一只审批从耐久路再进来(包内停驻行审批口 `surfaceFsApprovalAndDecide`;或宿主在现场答复没及时收口后走的耐久决断路),会开出第二张卡,工具行停在等待、残留的停驻卡挡住后续审批卡。现在停驻行审批口在取件之后、持有之前按「同 run + 同被门住的调用」查活卡登记:活卡在屏 ⇒ 等它放手,结算了就交回它的结局(`joinedInFlight: true`,零卡零决断),没结算就重新取件、照常持有;宿主自己的耐久路经 `joinApprovalHolder` 读同一只判定。射程 = 走「现场卡 → 耐久决断」回落的调用路径;按帧型显式选路、没有定时回落的宿主不经这一处,行为不变。
|
|
405
|
+
- **能力位读器族不再执行宿主能力回体上的取值器**(CC-516;**§122 CR-3**):此前 28 只 `project*Capability` 对宿主交来的能力对象按普通取值读 —— 取值器(`get`)会被执行,手造的「取值器返回 `true`」对象读成 present,而头注写的是「只读自有数据属性」;取值器抛的处置各读器各有一说。现在全族(含 `projectMcpReconnectCapability`、`store` 座的共用读法与候上游的附件席位占位)每一次读(顶层与各层段、数组的 `length` 与逐项)经同一只自有数据描述符读:自有访问器 ⇒ 整格畸形(读成 `unobserved`;`sql` 的 `store` 座读不出 ⇒ `not_reported`;逐位读器 `rewindArchive` 上也是整格畸形),取值器零执行;只在原型链上的键 ⇒ 族规「没报」;读描述符本身就抛(代理陷阱 / 已撤销代理)⇒ 同一结局、不外抛。**收紧方向**:服务端的真回体是 JSON、没有访问器,读数不变;只有宿主手造的带访问器对象(测试夹具 / 自建适配层)从 present 变成畸形或缺席。
|
|
406
|
+
- **座位门不再按普通取值读载荷**(CC-525 ③;**§122 CR-4**):座位的 `check*`(会话状态 / 设置状态 / 发送请求 / 能力表 / 各 ack 等)此前按普通取值读,取值器可以在「过门」与「宿主结构化克隆送出」之间给出两个不同的值(实测 `{ get extra() { this.sessionId = 42 } }` 过门、克隆出 42)。现在每只 `check*` 的每一次读经同一只自有数据描述符读,外包一层先扫整棵载荷树:任何一层有访问器(含不被校验的透传位)⇒ 拒,拒绝的 `field` 带点号路径,`reason` 为 `must be a plain enumerable data property (accessors are refused and never executed)`;被校验的位不可枚举 ⇒ 拒(克隆只带可枚举自有位);读就抛(代理陷阱)⇒ 拒,门自己永不抛;`checkSendMessageRequest` / `checkSeatCapabilitiesState` 里各自内联的描述符读收进同一只。**收紧方向**:宿主若用访问器或不可枚举属性拼座位载荷,本版起那一发整条被拒;函数引用与覆盖表登记不变。
|
|
407
|
+
- **中断撤卡撞「那一问已经不在等了」不再出「session may stay locked」告警**(CC-561;**§122 PK7-6**):中断时把挂着的那一问结算成一次拒绝,那一发若收到带「已结束」成因词的 404(行上成因十词,或 ≤7.123.x 的 `voided` / `denied`;取消撤卡、停驻换卡都带词)、410 或「已被决」的 409,与本地「取件时已不在」同归良性、零告警 —— 判定建在决断拒收分类之上、只在 404 上多要成因词(修前观察器只认本地那一形,同一只 404 在分类器里是「已在别处结算」、在这里是 10 秒的假告警)。404 不带成因词或成因是 `unknown_or_other_replica`(本副本不认识 —— 那一问可能在别的副本上仍在等)⇒ 照旧出句(没有结束的证据就不当结束);真失败(409 别的码、5xx、422、超时、网络断)照旧出句。
|
|
408
|
+
- **决断口问答载荷不合法不再被说成「待决动作变了」**(CC-570;**§122 PK7-4**):更早服务端借绑定不符的码发这一形,修前本包铸成绑定不符的安全停;现在两代都原样上抛、失败文字补一句「答案不合这一问,改了再发」。绑定席与无 `field` 的同码形照旧铸安全停。
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
- **「本会话放行」那一发被拒后不再自动补发一次纯批准**(耐久审批腿):带 `remember:"session"` 的决断被拒时,只有服务端明说不接这把键(remember 专属五码,或不带机读码的 400 —— 不认它的老服务端)才去掉 remember 再发恰一次;其余拒绝(任何 409 —— 含问答载荷不合法的两代形、7.124.0 起技能清单变了要先拒再激活的 `resume_outcome_invalid`;404 / 429 / 5xx)恰一发、结局 `failed` 带机读码,与纯批准那一发失败同一处置。修前会用人对这张卡给的答案自动再发一次纯批准。
|
|
414
|
+
- 控制面发的 `atMention` 多带一把键时不再整只读不懂(修前 ⇒ 影子文档不写名单 = 本机谁都能 @、删除提示不出):只读 `mode` / `models`,多余键忽略,与设置契约同读(**§122 UP-4**)。
|
|
415
|
+
- 先按 UUID 上屏、后来复活的后台子代,详情页「委派 prompt」不再显示另一代的 prompt:转录锚写在这一代的行所在的键上(认领它的 UUID 已结 ⇒ 写尾段自己),读口不再把被认领尾段上的下一代锚读给前一代(**§122 PR-6**)。
|
|
416
|
+
- 面板归约:一条终态 / 一次锚读空的成本不再随会话历史线性增长(「哪些尾段被这把 UUID 认领」改读记录上的反向索引;找缓行只在有缓行时扫)(**§122 PR-6**)。
|
|
417
|
+
- **会话 id 是 `.` / `..` 时,请求不再被改投到别的路径**(CC-392;**§122 FX-E4**):修前只有抹除口一处本地拒点段;`readSessionMemoryStatus` / `fetchMcpPanel` / `reconnectMcpServer` / `stopEngineSessionBackground` / `readEngineAgentRegistry` / `fetchDelegatedPrompt`(转录锚)经 sdk 动词拼路径都不防(`..` 实发到 `/v1/background/stop`)。现七个调用点(含抹除口)同调 `isSessionIdPathSegment`,点段一律走各点既有的坏入参出口、不发请求:`failed` / `undefined` / `invalid` / `unavailable`·`bad_input` / `unavailable`·`read_failed` / `skipped`(没有可用的转录锚,与无锚同出口)/ `not_sent`·`bad_input`;不新增结局词。抹除口原有的点段与孤立代理项本地拒读数不变。
|
|
418
|
+
- **被用户停掉的子代不再在页脚挂满一分钟**(CC-332;**§122 FX-F1**):`task_remove` 不带 `removeReason`(引擎已结算,区别于陈述级的 `orphaned`)而留存池里这一行是行帧车道结算的 `killed` 时(含行帧先报别的终态词、随后被通知升级成 `killed` 的行),账本当场摘掉它,不再挂满 `TERMINAL_RETAIN_MS`(转录里已写「stopped by user」而页脚还挂着计时停住的一行,读起来是「没停掉」)。成文边界不变:离场不是终局证据,本规则只提前结束一条已是终态的保留行的展示,不据离场 settle、不改状态词、不碰终局事实台账。completed / failed 的行照旧走保留窗;陈述级离场(含表外原词)、前代迟到的离场(live 行已是更新一代,或池里条目比离场帧所报的代际更新)、通知车道推定的退休行(在飞读面按在飞计的保守默认)都不摘;离场先于终态帧时不留任何记忆(之后到的终态帧照常入池)。终端过渡件 `withoutSettledStoppedRows` 在换钉后可删。
|
|
419
|
+
- **「会话已有在跑的 run」的拒收帧判别只剩公面判别口一条读法**(CC-391;**§122 FX-D1**):`activeRunBusySignal` 此前对服务端幂等重放臂(宿主对两次提交钉同一把 `Idempotency-Key`、撞上在飞那一发时,服务端把原始 409 冲突体逐字放进 `done.result`、带 `replay: true`;冲突体没有 `status`)答 `null`,投递账本却另加了一臂特判认它 —— 同一件事两条读法。现在公面口自己认这一形(`result.status` 缺席的非数组对象,仍按 `errorCode` / `activeTaskId` 两腿判;`replay` 位不参与判别,缺席 / false / true 同答;`status` 是别的取值、数组、无 busy 位 ⇒ 仍 `null`),账本只调它一次,特判臂删除,账本行为零变化。**升级后行为差**:读公面口的宿主(409 改写、自愈分诊)从此在重放臂这一帧上也得到非空信号。
|
|
420
|
+
- **宿主回调「同步抛 + 异步拒绝」的隔离只有一只实现**(CC-562;**§122 FX-D3**):`/compact` 手动压缩的结局接收口 `onSettled`(0.94.0 起)只包了同步 `try / catch` —— 宿主传 `async` 函数(或返回被拒 promise 的函数)时,拒绝无人接,成了未处理拒绝(Node 缺省整进程崩);而同一个包里的 `onDecideOperation` 观察者早有完整守卫。现在两者与另外五处手写的同形守卫(审批帧路由的 `onReplayedApproval` / `onToolApprovalOutcome`、fleet 账本的 `onTaskRemoved` / `onBgNotificationAccepted`、子代尾随的 meta sink)收成包内一只守卫:回调同步抛、返回的拒绝、读 `.then` 就抛、留痕口自己失败,都只留一行 debug 痕迹、不外溢;痕迹行前缀逐字节不变。同批补上留痕口本身的一个洞:宿主装的日志口 / 探针口是会拒绝的 `async` 函数时,它返回的拒绝此前被诊断口出口丢掉(未处理拒绝),现在同样只丢那一行诊断(`hostLog` / `hostProbe` 的全部调用点受益)。公面零变化。
|
|
421
|
+
- **决断出口对敌意抛出物一律走兜底句**(CC-560 ①;接入文档 **§122 FX-G5**):审批卡 approve · deny 与提问卡三条出口,遇 `message` 取值器抛 / `toString` 抛 / 已撤销的代理 / `status` · `errorCode` · `name` 取值器抛的抛出物,此前把取值器自己的报错拼进句子(「decide(approve) failed: Error: …」):决断桥的失败分类(绑定不符 / 瞬断 / 超时)在 catch 块里无保护地读抛出物,取值器一抛,那一次读的报错替换了原抛出物。现在分类对每一格的读取受保护、逐格互不连坐,判型(`instanceof`)同;原抛出物原样上抛,出口落抛出物自带的 `message` 或固定兜底句,原抛出物进宿主日志。方向不变(判不出一律非瞬断):`status` 读不出 ⇒ 不重试;别的格读不出 ⇒ 这一格不当证据(`name` 读不出而 `code` 是瞬断码 ⇒ 照旧重试一次)。同批 `readDecideCurrentPending` / `readWireErrorCode` 两口按「读不出即 `undefined`」的合同补上受保护读;出口读安全停码(判型过了不等于实例上的 `code` 读得出)同受保护。0.94.0 同条「取值器抛 ⇒ 落兜底句」的承诺在这三条出口上此前不成立(§122z DC-6 ②),本版成立。
|
|
422
|
+
- **子代读面的结果段标签行不再对特制输入平方回溯**(CC-400;**§122 FX-C1**;既有,不是 0.92.0 的 CC-376 / CC-379 引入):`PROTOCOL_MARKERS.taskOutputResultLine` 带 `m` 旗标,`^` 认 LF / CR / U+2028 / U+2029 四种行起点,而括注类只排 LF —— 子代输出是不可信文本,『行分隔符 + `--- result (`』重复 8000 次(约 104 KB)的输入让每个行起点都把括注扫到整串尾再回溯,读口卡 2.5 – 7.8 秒。现在括注里的 CR / U+2028 / U+2029 / U+0085 照旧是括注原文(`resultNote` 原样交出),只有『行终止符紧跟 `--- result`』处括注到此为止 —— 那里就是下一个行起点,一个起点的括注扫描越不过下一个起点,线性、同输入毫秒级。与旧形只在『括注吞下另一个行起点』一类输入上答不同(引擎不铸;旧形吞下它、新形不认这一行,答 null 或更靠后的标签行);既有语料逐例同答。🔴 **源码字节换新**:终端的协议字面登记按这条正则的整条字节钉住,换钉同批要更新那一处登记(122d);同族普查(同文件带 `m` 旗标的另三条与无旗标五条)实测线性、无改动。
|
|
423
|
+
- **chrome 臂 `bgshell_register` 的 `laneProof` 与同卡信封取同一个值**(CC-418;**§122 FX-C2b**):此前恒 `{ lane: 'main' }`,带父调用 id 的子代 Bash / Monitor 的登记也标 main。现在与同卡 tool_result 行信封上的 `parent_tool_use_id` 取同一个值(收卡帧优先、开卡块兜底):缺席 ⇒ `{ lane: 'main' }`,在场(含空串)⇒ `{ lane: 'subagent', parentToolCallId }`;登记体与铸不铸不变。三端消费口都不按 lane 过滤这一臂(122d)。
|
|
424
|
+
- **已结算的审批再来一帧重复帧,不再重开一张可答的旧卡**(CC-526;**§122 FX-21**;基线 0.93.1 即如此):流内审批帧腿此前只对「带账本位置且不在本段 preamble 里」的帧过判定口;一问已经结了(人答过 / 卡被中止且已发中断拒绝 / 引擎收口帧到过)之后,同 `approvalId` 再来一帧 —— 不带账本位置的(按协议恒当活的)、或带位置而 preamble 又列着它的 —— 都当新问题再呈一张卡,用户答了服务端回 404,屏上落「没落定」一句。现在帧腿在判之前先问「本桥已见这一问的结局吗」(判定口新增第 0 条,与位置键 / preamble / 清单无关):已见 ⇒ `decided`(新可选键 `settled`:`answered` / `interrupted` / `closed_by_engine`,与崩溃收敛的 `cause` 互斥),不呈卡、不发决断、不读清单、不上屏通告,帧经 `onReplayedApproval` 交宿主一次。只记确定的结局:宿主撤卡、respond 抛(没落定)不记,重复帧照旧开卡;结局首个为准、不随换连接清、有界 4096(被挤出的问回到修前行为)。`replayedApprovalSentence` 为 `settled` 加三句(只说「那一问早已有结局、这一份重复的没当新问题呈、没发决定」,不说批还是拒)。型面只增:`ReplayedApprovalDisposition` 的 `decided` 臂与 `ReplayPendingBasis` 各多一把可选键 `settled`,公面运行期导出零变化。射程见 Known limits(KL-744 / KL-745)。
|
|
425
|
+
|
|
426
|
+
### Gates
|
|
427
|
+
- **dist-comments 门:模板字符串 `${}` 之后的尾段按扫描器既定用法重扫**:此前尾段里的 `//` / `/*` 会被数成注释(本版生成表里一处 `` `${u.protocol}//` `` 被误判、门假红);两格自证反钉(尾段里的 // 与 /* 不算;模板串之后的真注释照算)。只改门,产物零变化。
|
|
428
|
+
|
|
429
|
+
- `run-retirement-ledger-test` 加「挂链首」臂(CC-565):登记行可带结构位 `blockedOn { ticket, landsIn, ruling }`;到期行带合形 blockedOn 且 ruling 正文引用同一裁定号 ⇒ 不计入到期红,改打 `BLOCKED-DUE` 可见行并由 C′ 格限 ≤ 10 行(本版清账普查实得挂链首十行;超过 = 台账在用挂链首当延期,上板申请裁定);裸挂(缺裁定号 / 裁定号不在 ruling 里 / 票号坏形)⇒ 合形红照旧。自证四格(S2′–S2⁗)。首例 RL-35(server 7.124.0 双生行带 workflowRunId)。
|
|
430
|
+
- 新门 `run-panel-reduce-test.mjs`(包侧投影门三件之一;64 格):公面闭集 / 纯(同入参同差分且不改入参、不读时钟、两份状态不串、重放零差分、值级 import 闭集、零可变模块态)/ 代际单判据(网格逐值 + AST:周期两键不进任何比较)/ 终态单构造(AST:面板终态事实字面量与 `terminal` 字面量全包各恰一处)/ 一个键空间(状态键闭集、面板族可变模块态只在宿主持有处、锚两向命中、账本通知单比较)/ 端到端十二组序列(两 lane 交错 / 先发布的键 / 复活 / 重连缺席 / 迟订阅快照 / 短命子代用量两序 / 历史行 / 缺席不伪 0 / sweep 射程 / 过渡口与差分口分工 / 有界淘汰 / 快照成因)/ 发布前复核找到的四条序列(前代终态先到而新一代行后到、UUID 终态先到而行后到、更旧一代的行帧、旧口回调里重入发布)。
|
|
431
|
+
- `run-integration-doc-freshness-test` ②a:冻结段(已发段)里引到的、本版删掉的文件改由活段「已删文件名录」一行补偿(与 ⑧c 已退役名的补偿格同形;活段裸引照旧红,名录行引的坐标冻结段里没有 = 死行红,自带判别力自证);②b 入库方向只问在盘的坐标。
|
|
432
|
+
- `run-absence-fold-census-test` ⑤ 与 `run-terminal-status-vocabulary-test` D5 的站点反钉跟着投影判定搬到 `panelReduce.ts`(原文件改为薄壳后仍钉零 `isError: false`)。
|
|
433
|
+
- 新门 `run-sdk-witness-compile-test.mjs`(CC-421;**§122 GT-1**):见证集里版本不低于 peer 地板的每一份 sdk(地板读自 `package.json`,见证集与公面门、地板门共读同一张表)各编译一遍 `src`,零诊断为绿 —— 换钉、来新探针、型面变化的当拍就会响,不再等下游装上新 sdk 才暴露。每一份各带三类尺子格:Program 含磁盘上每个 `src` 文件、`src` 里每条 `@sema-agent/sdk` import 真落在被测的这一份里(不回落到开发依赖)、内存里植入的两处旧形(`ControlClient.config.put` 缺必填 `baseVersion`、`RunStatus` 闭集联合里没有的词)必须报错而带 `baseVersion` 的对照新形必须零诊断;夹具根里装着而环境钉没列的探针为红;探针缺席为诚实跳段(必跑档为红),不当绿。
|
|
434
|
+
- `run-client-core-portability-test.mjs`(CC-523 + CC-552;**§122 GT-2**;96 → 110 格):剥注释 / 剥串两只手写词法器(按字面引号与反引号配对、不认正则字面量)换成 TypeScript 真语法 —— 正则字面量里的反引号 / 引号 / `//` 会让旧词法器配对错位,错位两个方向都会发生:说明文字被读成代码(假红,源码里靠一枚恒假正则拨回),与真读取被当成字符串吞掉(假绿;构造片段可复现)。同门里另两条行首锚正则(纯类型登记项的零值级导出、产物零残留裸包 import)一并换成 AST 读器(旧正则认不得同行形 / `export async function` / `export abstract class`,多行 `import {…} from` 整条漏)。每个读器两向对照:该逮的逮住、该放过的放过;带语法错的输入一律抛,不吐一份看似干净的结果。
|
|
435
|
+
- `run-plan-review-decide-verify-test` 加 ⑫ 段(G-PF1 – G-PF7、G-PF9:纯判读四形 + dismissed 射程、首呈卡 / 重开卡端到端的请求体逐字节、窄化与直接调用 `decidePlanReview({ reason })` 同一只、note 优先于调用方 reason);`run-plan-review-dismissal-test` 加 E6d – E6f(G-PF8:自由文本是决断性作答,撤用户关卡记号并投递恰一次 reject;纯空白 note 与矛盾多选不撤)。
|
|
436
|
+
- 五票的红先格与判别力自证:`run-permission-denial-projection-test` 新段 P(覆盖读数 × 账本侧完整的各形、重连后的流、账本行遇中止的两词 × 两种到达序 × 反向三格)并把原来只看账本的「判别位缺席」格改为带覆盖读数、新增同一份账不交读数 ⇒ 判别位在场的反格 · `run-read-credential-refusal-projection-test` 的 assistant 源 401 取舍格改成同判 + 老部署对拍 + 面不在优先 + 两源同答,新段 W8(`status().code` 值域)· `run-file-history-leg-notice-test` 账本多记一份事实的 L7 系列、端到端「提交时没读到能力位」E9 – E12(含冻结的 0.94.0 判定对同一事实答 `not_declared` 的判别力自证)· `run-subagent-durable-divert-test` 段 P9(print 车道块键恰为 CC 形 / 交互面三形负控 / 与适配层摘键函数整块深等 / 三键名单单源)· `run-rules-side-test` 把「不交游标位 ⇒ `cursor-stale`」的取舍格改成通用 `error` 并加两向负控。
|
|
437
|
+
- 新门 `run-models-dropped-entries-projection-test.mjs`(包侧投影门三件之一;27 格):三态读数、诚实缺席(缺席 ≠ 空数组)、服务端 7.123.0 判据样本逐字、坏行只丢自己、开集、读法纪律、出包型派生自 sdk。
|
|
438
|
+
- `run-upstream-tables-test` G18 / N18:设置契约函数批(三只纯函数取原件源码)与原件独立样本逐个同答、自含(函数体外的名字 / 未登记全局 ⇒ 拒生成)、读者是生成物、源码里回环字面等值比较零处;G11 与生成器读 zod 4 结构,zod 3 形拒生成。
|
|
439
|
+
- `run-cloud-effective-projection-test` S4k 告警种类读实装 settings-schema `WARNING_KINDS`(不再手写种类表);「本机引擎真读」各格改用 10 一代的读法(夹具服务端 7.122.0 树里带的 settings-schema;缺席 ⇒ SKIPPED-SECTION),新增 S8(两代输入 ⇒ 同一份影子文档逐字节同;同一份文档经 10 一代读法与 11 一代一次性迁移读到同一限制;`none` / 读不懂 / 两形并存 / 10 形坏值)与 S9(Model Hub 删除判定两代各一形);`run-additive-key-passthrough-test` G7 改读 zod 4 结构。
|
|
440
|
+
- `HealthResponse` 不再 pick `restart`:`run-tick-model-and-config-drift-test` Y1 / Y6′ / Y6″、`run-upstream-tables-test` G12 a4 / a5 / a9 / a10、`run-server-7122-pick-test` S2(地板线 sdk 上编新读口的型)同批改。
|
|
441
|
+
- 扩门 `run-display-untrusted-projection-test`(586 → 613 格;CC-528 / CC-360 / CC-414):OL 段 —— 七形各一正一负(正形修前在 0.94.0 发布件上红;值里的反引号不截断值另一格、凭据标签 + `bearer` / `basic` + 地址另一正一负)、裸不透明值负控池 26 形、探窗覆盖上游字面形判据最短匹配的自证、幂等与线性各一格;按改读重写的既有格:K25(粘在连字符后的 `sk-` 出负控)、H4g / H14c / H15b(标签 + `token` 方案词一枚记号;H14c 另四行 `bearer` / `basic` + 地址整只遮)、X41b / Y19(`Authorization:` 头值里方案词后的地址整只遮)、YB6(同行箭头两行);OL11 三格(路径段整段是方案词不读 / 标签 `Token` 后跟放行词不延 / 真凭据七形照遮)。
|
|
442
|
+
- 扩门 `run-display-untrusted-baseline-diff-test`:B9 三票池(2 000 正形 + 420 负形,同进 B1 / B4 / B6)—— 正形秘密本版零露、上一版露(判别力)、负形十五出口与上一版逐字节同、十形登记分歧逐字节钉(上一版读法一并钉)、形状判据对纯随机串的判中率读数(下限 0.9 回归绊线);B7b 非块形池里本来就有的同行箭头形按改读单列 B7b′(只许多遮)。
|
|
443
|
+
- `run-replayed-approval-disposition-test` 加 WC 段(**§122 G-WC1 – G-WC6**;19 格):账本位置谓词真值表、与判定口 `live_leg` 闸互为反面、端自写「只认非空串 id」与根入口谓词的九形分歧、读位抛原样抛;句子表逐字(无成因 / 意外停止 / 有序关停 / unknown)、全域每一句过禁词(不说已批 / 工具已跑)、三向互异、成因闭集从出包型读出且每词各有一句、表外成因落中性句、判定口真崩溃收敛行端到端、工具名各形与显示消毒、敌意名字经判定口真处置只出现在引号内、敌意入参不抛、出包 `dist` 里这句只在一处。
|
|
444
|
+
- `run-allow-rule-shadow-projection-test` 加 WC 段(**§122 G-WC7 – G-WC9**;11 格):缺席 ⇒ `undefined`、两代同句(裸帧 / 已盖形 / 活卡帧路径 / 耐久行路径八形逐字相等,三个样本串)、逐形成句逐字、读不出 ⇒ 说读不出、消毒(双向覆盖符 / 控制符 / ANSI / 换行 / 凭据形 / 封顶)、卡级读口对裸帧回落同一读数、帧级读口与旧派生函数不在根入口、出包 `dist` 里这句只在一处。
|
|
445
|
+
- 新门 `run-model-catalog-read-projection-test.mjs`(包侧投影门三件之一;115 格):公面 / 回体读口(信封三坏形、坏行只丢自己、同名后到、深拷贝冻结、`defaultModel` 形判、`droppedEntries` 读数不变)/ 缺省模型(只读 `defaultModel`、两行同 id、`defaultModel.id` 只比行的 `id`、绝不取第一行)/ @ 三态 / 兼容声明三态(不是第二条档位读法,源码零读点)/ 行视图逐行同答、不设下限 / 座位出站门 / 出包型编译。
|
|
446
|
+
- 新门 `run-seat-carriers-test.mjs`(包侧投影门三件之一;193 格):入站判官逐键(含子代两位与未登记键)/ 回退载体与投影口同一元组、出身表引擎请求键 = 投影产出键并集 / settings 子键出身表 / 能力表 `rewind` / 停驻位 present-iff 与单一读口 / 型。
|
|
447
|
+
- `run-seat-contract-keys-test` 覆盖表 20 → 21 组(−`SeatModelCatalog` −`SeatModelInfo` +`LiveModelCatalog` +`SendMessageRequest` +`SeatRewindIntent`)、`listModels` 回执格改在线目录形;`run-seat-task-request-origin-test` 认第三种出身(投影口 + 引擎请求键逐名对 sdk 型面直读);`run-seat-wave2-test` S1 能力名两员;`run-human-turn-encoding-test` HT8a、`run-request-uplift-test` G-RQ5b、`run-client-core-pure-test` 在线目录段的夹具补 `defaultModel`(成文改口)。
|
|
448
|
+
- 新门 `run-hooks-managed-policy-reading-test.mjs`(CC-488;包侧投影门三件之一;44 格;判据 **G-RD1 / G-RD2**):型面 AST(可选 / 零参 / 三词闭集 / 既有两员仍必填)· `unreadable` 整条腿关(四源 + flag + `/goal`;计划路径插件排除理由)· 只收紧(policy 文档五形 × 读口缺席 / `absent` / `in-effect` 三答逐字节同)· 读口异常当读不出(抛错 / 返回 undefined、null、串、{}、大小写不同、词表外、数组 / `state` 取值器抛 / 撤销代理 / 写成属性 / 取成员抛)· 顺序与次数。
|
|
449
|
+
- 新门 `run-park-expiry-judgements-test.mjs`(CC-550;包侧投影门三件之一;46 格;判据 **G-RD5 – G-RD8**):终端壳离线套 A-a … A-h(闭合帧三态)/ B-a … B-i(行到期三档)/ J-a … J-c(迟到决断端点)逐格搬来,另补 24 小时边界、四象限真值表、被收割读口逐形(只认 `approval.expired`、读不到恒 false、按方法调且恰一个实参、永不抛)、码单源 AST、真 `AgentClient` 假 fetch 直入;内嵌壳原实现的冻结副本差分 1500 余例逐例同答。同名影子对账门 `run-layering-shadow-export-test.mjs` 因此新增四行豁免(`divergent-copy`,差分格 `cc550-park-expiry-judgements` 直接摘终端源码上的四只与本包同名读口逐例比:零类外分歧;唯一已知类 `client-read-guard` 只属 `runReapedByDeadline` 一行)。
|
|
450
|
+
- 新门 `run-usage-analytics-projection-test.mjs`(CC-511;包侧投影门三件之一;76 格;判据 **G-RD9 – G-RD13**):三口投影(缺席位不编 0、`estimated` 只认显式 false 为精确、序列点 `estimated` 严格布尔)· 失败分诊(按码、读失败不说成「没有」)· 三口消费口(永不抛、只转交给了的键)· 三态视图(不可用卡零数字、热力图与活跃天数仅日序列读成功且完整时才有、峰值与最常用模型同律〔序列 / 分桶有读不懂的点·行或自己被截 ⇒ 不报〕、分桶失败 ≠ 空、400 种判决组合总函数;网页端自检金样逐格搬来)· 真 `AgentClient` 假 fetch 端到端(恰四次 GET、全 501、仅分桶 501、全 401、abort)· TypeScript checker:sdk 客户端直入注入面零诊断。
|
|
451
|
+
- `run-mcp-reconnect-test.mjs` 加 S8(CC-432;判据 **G-RD3 / G-RD4**):动词第二实参裸串、有 `signal` 时第三实参恰 `{ signal }`;真 `AgentClient` + 假 fetch 不经适配器直入(体恰 `{"server":"alpha"}`、503 `state.mcp_reconnect_unsettled` ⇒ `unsettled`、409 ⇒ `not_running`);TypeScript checker:`AgentClient` 可直接赋给 `McpReconnectClientLike`(零诊断),旧 `{ server }` 适配形赋给注入面 ⇒ 编译诊断。黑盒 G-MU8 去掉 adapter 一句(见 §122c)。
|
|
452
|
+
- 新门 `run-interactive-interrupt-emitter-test.mjs`(包侧投影门三件之一;70 格;G-SA1 – G-SA4):结局映射(回执布尔只认自有数据位、九种坏形回执、确定判决九形、没拿到判决七形、抛出物读抛不出境)、判类单源(216 只抛出物逐只与自愈两路的至多一次尺同答)、调用形(恰一发、保接收者、bare、`session` 只在非空串时带、零幂等键)、真 sdk 客户端桩 fetch 端到端并接 `planInteractiveHalt`。
|
|
453
|
+
- 新门 `run-device-rebind-judgement-test.mjs`(包侧投影门三件之一;105 格;G-SA5 – G-SA9):列面坏行逐行丢并计数、读面回显闸、换绑本地前态自校验零请求 / 体恰两键 / 成功形不变式九个反形 / 闭集六码与错状态码反格 / 表外抛出物逐只与至多一次尺同答、真 sdk 客户端桩 fetch(具名位、写动词 5xx 恰一发、2xx 坏体)、回读对账全格对冻结的先前宿主判定转写。
|
|
454
|
+
- 新门 `run-engine-env-sourcing-test.mjs`(包侧投影门三件之一;25 格;G-SA10 – G-SA13):对冻结的先前宿主判定循环转写做 1 500 组种子差分、别名与来源压序 / 大小写 / 安全组与不可跳过组 / 只删开关 / 逐键来源与理由 / 宿主谓词抛各定点格、墓碑零镜像(构建产物对设置契约 `RETIRED_ENVS` 全部旧名零命中、零 import、零平台读、零模块级变量)。
|
|
455
|
+
- 退役行为面的红先格(CC-309 / CC-377 / CC-401 / CC-426 / CC-322 / CC-281;**§122 G-RX1 – G-RX6**):`run-terminal-cause-projection-test` G-PR2a(根入口无 `providerRejectionResend`、包内模块路径上仍是函数)· `run-engine-cap-reader-factory-test` F7a / F15d(二十九个名不在根入口)+ F7b / F7c / F15e′ / F15f / F17s / F18 改钉唯一失效口 `invalidateEngineCaps` 与测试钩 reset(爆破半径恰是被点名那一个 baseUrl)· `run-allow-rule-shadow-projection-test` L5 / L5b(源码零写法 + 型面 AST:`ApprovalCardRequest` 无此成员、`ToolApprovalFrame` 仍有)与 L1 – L3 / L7 / B / F 段改钉「卡上无旧字段、披露与让位证据逐例同答」 · `run-permission-modes-capability-test` PM4b(形参个数 1)· `run-model-identity-resolvability-test` S4g / `run-request-uplift-test` G-RQ4h⁗(三态串 ⇒ `proceed`)· `run-resume-refusal-copy-test` CC-281 段(粗码形改判 `null`,夹具腿的 <7.115.0 一代读 `null` 且不再是必跑档)· `run-support-floor-projection-test` SF1f / SF1g / CT1a 按新底线重钉;`run-retirement-ledger-test` 把 RL-16 / 22 / 54 / 58 / 82 / 91 挪进已退役栏(F 段钉锚不复活),RL-21 / 35 / 36 / 38 / 39 / 40 / 41 / 46 / 78 / 83 十行带 `blockedOn`,RL-37 重分类为常驻(不进已退役栏)。
|
|
456
|
+
- `run-hitl-gate-honesty-test` F19h(G-SC1;五格)钉四臂并包与两形入参;F19-T 改为「并包后零差」对拍:拍平结局 770 格与抛出物 1 650 格逐格同答终端现行组合,认终端两代(从拍平文字抠类名的那一代,不同答只许落在文字以类名开头的格上);F19-T3 加全安全停闭集与 `retriable` 两维,不同答只许落在两处登记口径差(拍平结局只带 `safetyCode: 'no_pending'` / 卡仍待决的 `retriable`)、方向固定。
|
|
457
|
+
- `run-print-bash-iserror-test` ⑥(G-SC5):负退出码 / 只有首行 / structured 只带 exitCode 三形 + 十六形两车道逐形同答,⑥b 钉 structured 只带 exitCode 时正文两槽仍从框架反解;`run-bash-benign-exit-interpretation-test` ③d 改口(首行之后不是框架 ⇒ 不算失败)。
|
|
458
|
+
- `run-plan-review-dismissal-test` H 段改走台账登记,H2(G-SC4)钉退役谓词不再被调用;`run-client-core-pure-test` R6h(G-SC3)钉缺省会话槽身份只定义一次;`run-panel-cycle-identity-test` S4m(G-SC6)钉通知终局事实与行当前终态的边界。
|
|
459
|
+
- 新门 `run-engine-caps-single-source-test.mjs`(CC-344;包侧门三件之一;26 格;判据 **G-SB1 – G-SB22**):包内读口有键 / 无键 / 宿主快照 / 调用方中止 / 有界等待五形;三处迁移对宿主快照与换代各一正一负(修前在 0.94.0 上红);AST 静态扫描 —— 私有能力表与两代见证标识零处、每一处 `.capabilities(` 都在交给总缓存的探测闭包里(例外两处登记、带死行钉、植入违例自证);两代读法与旁证参数退役(声明面 AST)。
|
|
460
|
+
- 新门 `run-mcp-engine-leg-connection-test.mjs`(CC-325;包侧投影门三件之一;24 格;判据 **G-SB30 – G-SB47**;G-SB42 – G-SB44 是发布前复核采纳项的红先格):三态 + 成因逐形、缺席与畸形(读不完 ≠ 不在上面)、与活性读口按名找行逐池同答、源码按名找行的循环恰一处、连接态不读活性格、经包内段投影器逐形、声明面三态。
|
|
461
|
+
- 新门 `run-model-switch-fallback-test.mjs`(CC-324;包侧投影门三件之一;25 格;判据 **G-SB50 – G-SB74**):探活分型逐臂、编排(只在需要时问判决口)、回落台账(不记三形、序号单调、四条判据、负控十一形、判定纯读、销账比序号、按会话分格、格数有界、读帧不执行取值器)。
|
|
462
|
+
- 能力位四道既有门随 CC-344 翻面(各格注明翻面理由,判别力不降):`run-execution-lane-capability-test` S3a / S3b / S5d / S6b / S6b2 / S6d / S6p / S6s;`run-store-center-wiring-capability-test` S4d / S4d2 / S4h / S6a / S6b / S9a – S9d(`store` 座的读法改钉 `storeSeatOf` 只供 store / sql 两只读器);`run-engine-cap-reader-factory-test` 表加 `absentKind` 列(centerWiring 键缺席 ⇒ `none`,族规各格按列取期望);`run-subagent-injected-wire-test` / `run-client-core-pure-test` 去掉两只退役测试钩的调用。
|
|
463
|
+
- `run-selfheal-reopen-test` 加 **G-RS** 段(CC-536;**§122 G-RS1 – G-RS7**;38 格):① 同一组供给输入(`true` / `false` / 缺席 / `'yes'` / `1` / `null`)上 resume 卡与忙卡对 attach 逐格一致且只有严格 `true` 才给;宿主不给供给位 ⇒ 忙卡请求没有 `canAttach` 键(键集逐字同旧);注入件恒不问人 ② 选 attach ⇒ `{ kind: 'running-attach', taskId }` 恰两键、零 steer / 零 cancel、处置档 `not-delivered`、行句含重放披露原句、不进「选过 Do nothing」登记、不产出续听意图 ③ 回执说 attach 而本轮没供给(缺席 / `false`)⇒ 零动作 ④ 仅 attach 在场照样出卡、三条路都没供给一张不铸 ⑤ 幽灵 / 已终结的 run 供给位在场也不出卡 ⑥ 确认句 / 未确认句:未确认句字节同 0.94.0、确认句字节与不替引擎断言终态(不含丢弃 / 已停 / 已结束 / 会话已空出来的说法,且明说可能还要一会儿)、互斥(互不含对方特征词)、产物里两句特征串各恰一处且同在 `cancelRow` 体内、两只读口是它的薄包装 ⑦ 产物里 `canAttach` 的读点只此两处且都经 `runningAttachOffered`(忙卡一侧还验该函数取自 resumeRunningCard)。
|
|
464
|
+
- **终态词表参数化属主对账门**(CC-78;`run-terminal-table-provenance-test` 原地重写;**§122 G-TW1 – G-TW9**):一张登记表一行一张表 × 一只比较器;上游联合与本包成员型都用 TypeScript checker 从开发依赖包根解析(不再按正则或散文锚抠 `.d.ts`),双向对账(上游多一词 / 少一词、表多一词 / 少一词、分区重叠、历史扩员撞现役词、开集成员都红,植入假件逐形自证);命名规则机检(表名 = 前缀 + 上游符号名);属主模块之外零终态表声明、零对终态表的 `.has` / `.includes`,且不看名字:登记表只在登记处被导入(别名 / 命名空间 / 动态 import / 转出都算)、零由两个以上不同终态词组成的字符串数组字面量或相等比较链(AST;检视实证名字匹配漏掉匿名私抄与别名导入两形后收紧,同批两处内联判据 —— `workflow_complete` 合同两词与 fleet 行「失败洗成成功」判据 —— 改读属主谓词,行为不变);十余处读点逐处真读属主谓词;运行期值 == 型面且冻结;CC 行词投影逐词;改属主之后的两条行为红先(取消通知收行 / 子代取消 isError);真 TaskRegistry 取消回归保留。`run-terminal-word-source-test` 的上游对账两段并入本门(余下分水岭 / 形制 / 谓词 / 读器四段换新名);`run-terminal-status-vocabulary-test` 族扫的属主文件与正向证据换新名。
|
|
465
|
+
- **新门 `run-approval-cross-leg-holder-test.mjs`**(CC-593;G-XH1 – G-XH8):宿主时序复现(活卡 1.1 s 才答、750 ms 宽限后走耐久路)、负控(无持有者 / 现场答复 404)、身份读不出、三形中止、停驻行审批口 join(allow / deny)、同一调用的下一只审批、转停驻接手、射程。修前 18 格红。
|
|
466
|
+
- **门脚本剥注释 / 剥串换成共用的 TypeScript 记号层读器**(CC-559;判据 = 可移植门 ④d 植入集自证格):`scripts/_gate-lib.mjs` 收口读器 `lexParse` / `lexStripComments` / `lexStripCommentsAndStrings` / `lexCommentCount`(可移植门里的两只读器搬进来作首例)与十一形植入集 `LEXER_BATTERY`(正则字面量含 `//` · `/*` · 引号 · 反引号;模板串里的说明文字与 `${…}` 里的真读取;JSDoc 里写着 `import(`;嵌套模板串;孤立撇号;串里的 `//` 与 `/*`);用读器的每一道门带一格植入对照,另有一格钉「带语法错的输入必须抛」。旧尺子逐类自证:按引号配对的手写词法器(五只)与正则式 / 行过滤式剥注释(十一种写法)各让植入集里 2 – 7 形漏读(真读取被当注释 / 串体吞掉)或误读(注释漏过 / 串体处置错)。真 `src` 里的实案:5 个文件(`diagnostics` · `displayUntrusted` · `model/catalogLoader` · `webSearchWireCaps` · 生成表 `settingsSchemaFns`)含 `://` 串,`//[^\n]*` 类尺子会在上面吞掉同行后半。换过去的门共 40 道:点名四道(`engine-caps-ledger` · `sdk-floor` · `sdk-registry-transit` · `retired-vocabulary-census`)、`engine-vocab-floor`、`dist-comments`、可移植门,以及 33 道此前用正则或行过滤剥注释的门;今天的真 `src` 上逐门判决不变(全绿),只是尺子从此对正则字面量与模板串读得准。
|
|
467
|
+
- `run-sdk-floor-test` 另修一处恒绿假钉(CC-559 附带):第四种 `costUsd` 写法(方括号取值 `stats['costUsd']`)的正则跑在已清空串体的文本上,在真 `src` 上永远判不到(正向对照拿未经剥离的样本喂它,所以一直绿);现在枚举器收原文,方括号取值与带引号的属性名(`{ 'costUsd': 1 }` / 解构里的 `'costUsd': c`)按语法读,串体 / 注释里的同样字样不数。植入验证:往 `src` 植入 `stats['costUsd']` ⇒ 修前绿、修后红。
|
|
468
|
+
- `run-dist-comments-test` 从裸扫描器改解析器(CC-559;自证四组 → 八组):裸扫描器没有解析器上下文,认不出正则字面量的起点 —— `/[//]/`、URL 前缀正则 `/^https?:\/\//`、`/\/*/` 都被数成注释(假红,本版生成表里模板串尾段那一例同源);现在注释只在记号之间的缝里数。植入验证:往 `dist` 追加一条 URL 前缀正则 ⇒ 修前红(假)、修后绿;追加一行普通注释 ⇒ 两版都红。
|
|
469
|
+
- `run-client-core-portability-test` ④d 门脚本族扫(CC-559;113 → 118 格:共享植入集两格 + 族扫四格):语法树读 `scripts/*.mjs` 的两形 —— A 形「正则字面量含块注释剥离」(三种写法)零存量;B 形「同一函数体里比较三种引号字符加 `/` `*`」= 手写按引号配对的 TS 词法器,只许登记的存量(登记不许空转)。尺子自证:植入各形都响、干净 / 近邻形不响、TypeScript 对少数合法 `.mjs` 报语法错时按恢复树读的植入照样读得到。本机实读 230 份,其中 14 份 TypeScript 报语法错(箭头函数体是括号对象字面量、紧跟下一行 `{` 的写法),按恢复树读。index 闭包 290 → 291(新增 `src/declared/supportFloorDeclared.ts`,见 Changed)。
|
|
470
|
+
- `run-terminal-facts-projection-test` C 段两臂事实键集改**声明派生**(CC-394;原写死两键名,又按 `_sema_effective_` 前缀扫,看不见第三键 `_sema_response_model`):TypeScript 检查器读 `EffectiveFactParts` 的声明(交叉 / 继承形也展开),每个声明键配一份输入夹具并与声明键集双向对账;成功臂与错误臂对每个声明键都真带、逐字节同,事实键族不多铸声明之外的键,另按键各自独立。自证:植入第三键 ⇒ 派生键集多恰这一键、对账点名「声明有而无夹具」;删一键 ⇒ 点名「夹具有而声明里没有」;交叉型展开、不存在的类型名各一格。植入验证:声明 + 成功臂 + 错误臂三处同加第四键(编译照过)⇒ 修前绿、修后红。
|
|
471
|
+
- `run-support-floor-projection-test` 加 SF5 构建期生成物(CC-397;106 格):盘上 `src/declared/supportFloorDeclared.ts` == 用声明重新生成(逐字节,生成目录零孤儿)· 生成物零注释零 import 恰一条语句 · 运行期 `SUPPORT_FLOOR` 与 dist 生成模块的 `DECLARED_SUPPORT_FLOOR` 是同一个对象 · `src/supportFloor.ts` 零纯 `x.y.z` 字面量且 `SUPPORT_FLOOR` 的初始化式就是导入标识符(手写镜像回潜当场红,`SF1d` 的「常量 ≡ 声明」仍逐项判);自证格:声明改了而生成物没跟 · 生成物被改一格 · 被植入注释(行 / 块各一形)· 生成器漏一键 / 改键序 / 少结尾换行 / 引号换形 · 孤儿 / 缺席 · 空计划拒判 · 坏声明十二形各自被拒生成;生成目录名只经生成器声明的那一个目录常量(门里不另写一份),且与上游表生成器的生成目录互不相同也互不嵌套(两边的孤儿判定不数对方目录里的文件)。植入验证七枚(生成物手改 / 声明改了没生成 / 手写镜像回潜 / 生成器漏一行 / 生成物与生成器一起漂成带头注 ⇒ 只有零注释格能抓 / 两个生成器指向同一目录 ×2 个方向)各红在预期的格上。
|
|
472
|
+
- 新门 `run-engine-cap-snapshot-readers-test.mjs`(CC-344 余项 / CC-516 / CC-525 ③;包侧投影门三件之一;894 格;判据 **G-CR1 – G-CR33**):读数只从总缓存落地派生(不调 tee 也读得到、tee 不写;落地前 / 失效后 / 探测抛 / 坏形 / 非对象回体 ⇒ `unobserved`;按落地记忆化 + 冻结;投影途中重入同一读口)· 全族自有数据律(29 只投影 + 附件席位占位 + `store` 座共用读法逐只用记录器代理断言零 `get` / 零 `has` 陷阱;顶层与嵌套每一位逐位换成取值器 ⇒ 畸形且取值器零执行)· 座位门同律(覆盖表每只 `check` 的每个被校验位逐位换成取值器 ⇒ 拒且零执行;整棵载荷树含透传位的访问器 ⇒ 拒并带点号路径;不可枚举被校验位 ⇒ 拒;抛出物只按身份认)· 本包 `src` 零处调用 `noteEngineCapsFor*`、工厂 `note` 空体、退役口 29 名逐字面量 = 根入口导出集 · 「只回退对话」判官随模块加载接上(新进程里只落地、不调 tee)。
|
|
473
|
+
- `run-engine-cap-reader-factory-test` 重写以对应新律(2436 → 1894 格):F4 成文改口 —— 旧判据眼「顶层取值器恰读一次且 present」作废,新判据眼「返回合法值的取值器零执行、读成畸形」(CC-516);F3 / F9 / F17 的 tee 专属臂退役(写入口没了),其余格起手改经总缓存落地;F18 改钉「每读 = 投影作用在最近一次落地上、同一次落地同一只对象、取值器零执行」。读器表挪进 `scripts/_cap-readers-table.mjs`,与新门共读。
|
|
474
|
+
- 19 道既有读器门的 tee 起手改经总缓存落地(`_gate-lib.mjs` 的 `landEngineCaps`:两参原子失效 + 等落定),各格注明改口理由、判别力不降:sql-engine / execution-lane / approvals-stream-live / peer-lane-rules-write / store-center-wiring / rewind-archive / steer-tier / mcp-probe-face / hitl-words-readout / session-policy-wire / permissions-declaration / wiring-instructions-attribution / memory-entries-wire / human-turn-encoding / tool-history-mismatch-projection / terminal-cause-projection / multicause-wording / server-7119-fixture / request-uplift;另 8 道(sealed-key / approval-decided-by / session-read-redaction / output-style-seat / permission-modes / file-history-capture / device-executor-management / web-search-backend)同法。「顶层取值器恰读一次」类格一律按 F4 成文改口;「探测闭包里同一拍读到」类格(wiring-instructions-attribution G-RP2b)按 KL-725 改口(闭包里答 `unobserved`、手上投影给读数)。
|
|
475
|
+
- `run-engine-caps-ledger-test` 订正一行:`deviceExecutor` 本包一直在读(`deviceExecutorManagementCapability.ts` 的车道读器),此前登 `not_read` 是登记错 —— 老写法 `Object.hasOwn(c, 'deviceExecutor')` 对本门第 ④ 形(`<fn>(caps, '<key>')`)隐形,读器族改经 `ownDataField(caps, …)` 后这一形可见;现登 `read`(台账 read 45 / not_read 71)。
|
|
476
|
+
- 棘轮账:`typeshape.unknownExport` 547 → 550、`typeshape.bareUnknownReturn` 0 → 2(`ownKey` 的两只读法原语返回未验数据、一只抛出物判别口收 `unknown`,包内件不上根入口)、`portability.index` 291 → 290(删 `engineCapsGenerationGuard`);`singleton-manifest` +1(`ownKey.REFUSAL_KEYS` 弱表,low)。
|
|
477
|
+
- 新门 `run-server-7124-pick-test`(G-PK7-1 – G-PK7-11):410 成因两代一只判官 / 结局帧成因 / 404 成因零读点 / 409 分码与安全停与补句 / 两版本键 / 中断撤卡观察(含真活卡腿时序)/ run 死亡判决码表 / sdk 19 读口在排空帧上自己结束(前提见证)/ worker / 预览零读点 / 服务端 ≥7.124.0 成因表对拍。既有门随版改口:approval-frame-keys 镜像 38、server-7116-fixture C9 读数位改名与体键按代际、store-center-wiring-capability S8g – S8i(成员 `worker` 按代际)、approvals-feed-unknown U12 改 sdk 19 收场形 + U13、server-7122-pick D9 假流按 sdk 19 收场、retirement-ledger G11a(RL-46 按条件退役)、sdk-floor ②d-3(地板 19.0.0 的理由见证)。
|
|
478
|
+
- 新门 `run-run-events-drain-reopen-test.mjs`(CC-597;包侧投影门三件之一;47 格):排空收场账本身(梯 1 / 2 / 4 秒、别的帧归零、抛出不给决策、每腿记号用后即清)/ 决断后续读腿(决断已发 / 未发两形各一格:决断恰一次、游标续读、真时钟等待;梯尽 / 句柄未知按断线形收场且不交排空帧、等待期中止走中断出口;sdk 18 形不多开;抛出照旧)/ 无头续收腿(不探活、不扣预算、梯尽查 run 行、抛出照旧、等待期中止)/ 开发依赖 sdk 19 真读口经两条腿各恰两次连接且第二次带 Last-Event-ID、sdk 18 见证不双重连 / workflow 活动流迁账 / 语法树名册(账恰四个调用点且不进根入口、`runs.events` 消费点恰两处)。负控一枚(排空判型恒假)。`run-server-7122-pick-test` D11 / D12 与 `run-server-7124-pick-test` T2 随迁账改锚(判型口 / 决策口在 `src` 里只剩舰队账本、包内排空收场账与 `wireErrorTriage`)。
|
|
479
|
+
- 新门 `run-skill-tool-lists-projection-test.mjs`(CC-590;包侧投影门三件之一;411 格):读数六形 × 两表六形矩阵(非 `present` 零键、`present` 逐字)/ 不截断不改序不别名(1000 / 1001 / 5000 条)/ 值形拒(两键 × 十一种坏形 × 四种读数,不回显条目)/ 选项缺席逐字节同 0.94.0 / 子代同形 / 单源判官词法扫(判官恰一处、无上游帽与判官名的手抄)/ 真能力缓存端到端 / 夹具腿(每一份 ≥7.116.0 的真受理口收原样产物,≥7.117.0 超帽 1001 条产物仍 1001 条而上游句子「拒而不截」、deny 读成空的条目被上游判官点名而产物仍带它;每一份 <7.116.0 老一代:真能力路由读数 `not_reported`、产物零键且被收,硬带两表的子代技能被整条拒)/ 型面编译探针。负控一枚(能力位判恒真)。
|
|
480
|
+
- 新门 `run-engine-target-facts-projection-test.mjs`(CC-461;包侧投影门三件之一;107 格):凭据需求判词三形主路 / 状态码 100 – 599 全域扫(requires 恰 {401, 403};status 臂永不给 open)/ 坏形逐格(status 十一形、臂值七形、多臂五形、非对象九形、原型链键、自有访问器不执行、全陷阱与已撤销代理)/ 独立生成池 5832 个入参与一份独立写的参照实现逐个对拍;句首判词三态 + 不持久六形同词且不带后端词 / 整句含「<词>: 」而持久 / 没报 / 没观测的整句不含 / 整句六形逐字节不变 / 十五形坏读数不抛 / 与 `storePersistence` 同判;源码形:判词文件零宿主状态、「NOT durable」字面恰一处。
|
|
481
|
+
- 新门 `run-session-id-path-segment-test.mjs`(CC-392;包侧投影门三件之一;94 格):判定本体 —— 逐形 + 4681 串独立生成池与 WHATWG URL 解析对拍(自证 URL 解析真把 `.` / `..` 判成点段、`%2e%2e` 字面串不是);七个调用点的行为(假 sdk 客户端计动词调用,点段零调用、合法 id 正控照发;停止口先把能力位落地,免被能力门遮住守卫);调用点花名册(AST:`<…>.sessions.<动词>(id)` 所在文件 ≡ 登记六件,每处落点都被一条**支配**它的 `if (!isSessionIdPathSegment(id)) { …离场 }` 守卫 —— 在某层外围函数里、位置在前、不在分支里;同名形参只在别的函数里判定 / 判定结果被丢弃 / 判定在请求之后 / 判定落在分支里 / 判假不离场都不算;拼 `/v1/sessions/${…}` 的模板所在文件 ≡ 抹除口且同样被守卫支配;点段手写判断在判定本体之外为零),尺子自证十四格(植入违例必响)。
|
|
482
|
+
- 既有门随版改口:`run-engine-identity-test` 新 F 段(消费方视角 tsc 探针:`EngineInstance` / `HealthResponse` 带可缺的数 `startedAt`、与读数同型两向、`EnginePortFile.startedAt` 仍必填;串 / 缺落盘戳 / 显式 `undefined` 三类负向)· `run-session-memory-erase-projection-test` J2 / J8 加新码一档、J17 三格(回体多带 `detail` / 句内路径时结局逐位相同且无路径无盘形词;老一代形仍落 `control_plane_corrupt`)、X10b 真服务端按码(≥7.118.0 一代 409 新成因,更老一代落 500 `internal.error`)· `run-memory-verbs-wire-test` 码表 22 → 24 条、同一个 409 上九格互异改十格(F2b)、说不清表 10 词每词仍由一次真调用产出过(L2)· `run-upstream-tables-test` G12-2 的 `HealthResponse` 键集十一 → 十二位(`startedAt`)。
|
|
483
|
+
- 棘轮账:`portability.index` 294 → 296(+ `engineCredentialRequirement.ts` / `sessionIdSegment.ts` 两个纯叶);根公面运行期导出 +3(`engineCredentialRequirementOf` / `isSessionIdPathSegment` / `storePostureHeadWord`);门清单 +2。
|
|
484
|
+
- **规则名判官对拍**(CC-563;**§122 FX-H1**):`run-session-policy-deliverable-test` 新增 G-JR1 – G-JR3 —— 开发依赖引擎 7.48.0 起包根导出的 `judgeRuleToolName` 是引擎对「规则里这个工具名够不够得着任何工具」的唯一判读;门用 400 余名生成池(协议前缀 × 段形 × 工具段形含空工具段 + 引擎退役名全表 + 无前缀 `__` 名)逐名对拍本包各条消费路径的**终局**:引擎答非 current 的名字,会话规则可送判定一个都不送且读得懂,请求体 allow 桶一条不投、deny / ask 投出的都进 `unreachable[]` 或原样即引擎认的现名。工具段为空的协议名(`mcp__srv__`)实证:引擎答 `unmintable_segment`,本包两条路径都扣下(会话判定落 `peer_wide`、装配口落 `incomplete_protocol_name`)。只加门,产物零变化。
|
|
485
|
+
- 新门 `run-rewind-engine-action-test`(CC-167;**§122 FX-H4**):派发闸整张表(3 档 × 65 张读数)、引擎侧处置整张表(16 种目标解析 × 3 档 × 5 类读数)对独立手写真值、`previewEngineRewind` ≡ `decide.kind`、非引擎选项与敌意入参、读法单源(模块零档位串字面量、闸函数体零位名);终端参照树上的同名副本由归层对账门的差分格逐例比。
|
|
486
|
+
- `run-registry-conflict-projection-test` 随副本退役改写(CC-538;**§122 FX-H2**):单读法见证(根入口三名不在、副本文件不在、子路径入口出的就是上游同一函数对象、src 机器词串字面量零处)+ 上游读法逐例钉 + 上游两只映射口的 scope-gone 类 ⟺ 判读答 `gone` + registry 服务真铸点腿;`run-sdk-registry-transit-test` 名单 +1 值 +1 型。
|
|
487
|
+
- `run-plugin-hooks-projection-test` G-HK0b-5 改钉、新增 G-HK0b-6 / 6b(CC-387;**§122 FX-H3**):36 格(型表缺席 / 坏形 / 只列别的事件 / 全列 × 三事件 × http · prompt · agent)插件条目与设置来源条目答案逐格相同,且等于谓词的真值表。
|
|
488
|
+
- failloud 门加第 ④ 段(CC-562):宿主回调隔离口的站点名册(对 `invokeHostCallbackIsolated` 的调用站点 7 个,与源码等值 —— 多一个红、少一个也红)+ 守卫文件之外零手写 `typeof x.then === 'function'` 探测(第二份手写守卫即违规)+ 自检语料(手写守卫判 1、走守卫判 0)。
|
|
489
|
+
- 新门 `run-refused-park-family-test.mjs`(CC-410;包侧投影门三件之一;101 格):读口金样(三码 × 错误对象 / 拍平事实、状态码政策、`field` token、`stillPending` 三态、取值器 / 撤销式代理逐键隔离)· 与终端旧实现逐字节对拍(门内嵌冻结的旧判型与措辞:读口矩阵 180 形、出句口 120 组合、自动腿句 18 组合,四类有意差分逐类钉)· 出句口性质(车道、占位、表外码不上屏、卫生禁表、不命中「门早已决」词表)· 与 CC-339 读口的关系。红先:模块缺席 83 格红。
|
|
490
|
+
- 投递账本投影门加 F1c(CC-391):公面判别口认重放臂(三形 + 材料位同读 + `replay` 三值同答)、收紧方向九形仍 `null`、账本「不记 delivered」⇔ 公面口认的 16 帧逐帧等价、`frameProvesDelivery` 源码钉(恰一次调用公面口、无 `.status` 读、无手拼 `failed` 帧)。红先 5 格红。
|
|
491
|
+
- HITL 读口门 G-HW8 加格(CC-562):`onSettled` 是 `async` 函数 / 返回被拒 promise / `await` 之后才抛 ⇒ 回传恰一次、只留痕、零未处理拒绝;抛出物读就抛的撤销式代理不外溢;idle 臂扇出时前一个 async 拒绝不连坐后一个。红先 4 格红(加总判「未处理的拒绝」)。
|
|
492
|
+
- 既有五门加格(CC-395 / CC-442 / CC-486):permission-denial-projection M7 – M8(裸帧读次数 + 取值器两拍快照 + 对 0.94.0 实现的纯数据池对拍)· classifier-status G7 · gate-vocabulary C3 – C5(自有键读法 + 「只经一只读法」的结构钉)· additive-key-passthrough G9f – G9k · hitl-gate-honesty F4-e。棘轮账:`typeshape.unknownExport` 565 → 567;`singleton-manifest` +1(`REMEMBER_REFUSAL_CODES`,low);公面运行期导出 +2。
|
|
493
|
+
- 扩门(同批,只扩既有套):`run-hitl-words-readout-test`(G-HW1h:三出口 × 七形敌意抛出物 + 决断发数;G-HW1 经桥格由「不抛、无类名前缀」收紧为兜底句)· `run-live-pending-ask-test`(S2x:会话范围三形 × 十八种缺席 / 坏形、跟踪器零 delta、三口范围入参必填的出包型编译)· `run-limits-env-failloud-test`(LN:限值旗那一句与旗面表)· `run-permissions-declaration-test`(PN:allow 没发那一句)· `run-upstream-tables-test`(G3-5 / G3-6:登记表零读点与表上的注释)· `run-client-core-pure-test`(G-TR:产品缺省;冻结收的语料里缺省路径各行改口)。同名影子豁免表 +2 行(终端的 `limitsSupportNotice` / `explicitLimitFlagNames`,分类 divergent-copy,新差分格 `cc441-print-limits-notice`)+ 同义 1 行(`describePrintLaneAllowKept` ≈ `permissionsAllowKeptNotice`),到期 0.96.0。
|
|
494
|
+
- `run-model-facing-anchors-test` 加 A-D4c – A-D4h(CC-400;**§122 FX-C1**):『行分隔符 + `--- result (`』四种换行 × N 的线性时间格(线性时间助手:本线程 CPU 钟、n 与 4n 各量取最快、倍数 < 10 或 4n 在 250 ms 内,不达标原样重量一次;旧形实测倍数约 16)、端到端经 `parseModelFacingTaskOutput`、`PROTOCOL_MARKERS` 八条读不可信文本的正则 52 个〔正则 × 单元 × 换行〕普查、既有语料 38 例逐例同答、生成池(11 个记号、深度 6、1 948 717 例)与冻结的 0.94.0 形逐例对拍(差异类只有『括注吞下另一个行起点』,3 例全部不同答)、源码字节钉。`run-display-body-test` 加 H11(CC-444;**§122 FX-C3**)、H2f 订正帧键集;`run-client-core-pure-test` 加 G-BG6(CC-418;**§122 FX-C2 / FX-C2b**)—— `.detached` 读点源码扫、40 形网格三处同答、登记臂车道五形,B5 普查加 `delegationFieldLine`(parse 角色 10 → 11 处),G-BG5 对拍再加 6 个不带 detached 的锁形(三版基线 0.92.0 / 0.93.1 / 0.94.0 逐位同)。
|
|
495
|
+
- `hitl-gate-honesty` +3 格(F6-d3 / d3b / d3c):决断首发抛出物的机读码**读不出**(取值器 / 代理陷阱抛)而另带瞬断特征时恰一发、原错上抛、不铸安全停、不重试(读不出 ≠ 不是绑定拒绝;同形 F4-e9);机读码读到「没有」的同形仍走瞬断分诊;码读不出但 sdk 类名是绑定不符仍铸安全停。`client-core-pure` B7 的 409 不重试冻结段按三态形重铸。
|
|
496
|
+
### Known limits(本版新增)
|
|
497
|
+
|
|
498
|
+
- KL-628 射程扩(CC-528 同窗复核):`displayUntrusted` 对 DCS / APC / PM / SOS 控制串排在块序列项(`api_keys:` 一类标签换行 `- ` 之后)与值之间的文本,经点形 / 空格形载体(`{ mark: 'dot' }` 缺省折行点形、保排版点形、`{ mark: 'space' }`)再洗一遍时,第二遍多遮第一遍画出的控制串残骸(`api_keys: - .P1$r.\«redacted:secret»` → `api_keys: - «redacted:secret»\«redacted:secret»`),两遍都不露值;OSC / CSI 控制串、流序列、逗号清单、单值幂等。此前 KL-628 只写了键名清单 × 不可见单元那一形;0.94.0 接入文档 G-DO9 的「洗两遍 = 洗一遍」以此为例外(接入文档 §122 DC-14)。
|
|
499
|
+
- KL-660:`remove` 只在有界淘汰(行表 8192,已结的先让位)时发;缺席行的硬 TTL 回收仍由宿主经登记读数判(要读登记 = IO,不进纯归约口)。
|
|
500
|
+
- KL-661:同一行两帧 `cycleSeq` 相等而 `startedAt` 不同时按同一代(唯一判据只比 `cycleSeq`)。
|
|
501
|
+
- KL-662:投影接受的周期计入唯一水位;比缓着的首见终态行更旧的终态事实不再写进 ended 账。
|
|
502
|
+
- KL-663:行差分口不订阅不缓冲;迟订阅拿到的是当前行表快照,不是中间变化的历史(复活 / 缺席的中间态折进当前态)。
|
|
503
|
+
- KL-664:有界淘汰挑「最早建档」的那一条,不再是「最近最少写」的那一条(只在各字段上限被顶满时有差别)。
|
|
504
|
+
- KL-670:`_sema_permission_denials_absent` 的覆盖读数缺席一律落下 —— 自建管线直调终帧投影器不交 `streamSawRunOpen` / `deniedToolNameByCallId`、耐久回放腿、重连后的流都拿不到「零拒绝」的正面事实;同一只调用的归因矛盾(两只 wire 帧层名 / 结算词不同或两只本地中止词不同)使合并后分类缺席时,一次本地中止仍会按收集侧的「拒了」补行(CC-159 起的已知限,未变)。
|
|
505
|
+
- KL-671:`status().code` 不再带降级之外的 HTTP 状态;宿主要原始状态只能读 `lastError` 的 `<状态> <句>` 前缀(散文前缀,不是机读位)。
|
|
506
|
+
- KL-672:账本读回口 `capabilityAtAssemblyOf` 把「宿主没交第三参 / 没绑 / 键间矛盾」与「那一拍就没读到」同读 `unobserved`;提交时没读到能力位而用户关了文件检查点的那一发,判定落 `unknown`、屏上仍不说话(KL-244 的宿主义务:关了检查点时第一次提交前先等能力读数)。
|
|
507
|
+
- KL-673:print 车道只摘 `label` / `eventId` / `parentToolCallId` 三键,适配层摘键口的另两件(引擎子代入参的 CC 名重映射、入参里 `_sema_*` 键剥除)不随车道搬过来 —— 终帧 `permission_denials[].tool_input` 与块上 `input` 是同一只对象的契约(CC-235)要求入参不动;print 车道上引擎子代工具的块 `input` 仍是引擎形。
|
|
508
|
+
- KL-680:sdk 见证编译门的植入尺子依赖 sdk 根入口导出 `ControlClient` 与 `RunStatus` 两个名;sdk 将来改名或移出根入口时植入文件自己编不过,门报「尺子哑了」(尺子位红,不是 `src` 红),植入要同批改。
|
|
509
|
+
- KL-681:sdk 见证编译门的「夹具根里每份探针都在见证集」一格按版本号比对;见证集按版本去重,与开发依赖同版本的探针目录漏列时不报(那一版仍被开发依赖那一份编译到)。
|
|
510
|
+
- KL-682:sdk 见证编译门只判地板之上的见证;地板之下的见证在册、打印、不编译,门不判地板偏不偏高(地板由公面门与地板门的理由见证管)。
|
|
511
|
+
- KL-710:重开卡的宿主自带投递口 `deliverDecision` 的第三参 `reason` 是新增位;不认第三参的老投递口照常收到 reject,理由落空(宿主要转进 `decidePlanReview` 的 `reason`)。
|
|
512
|
+
- KL-711:选 Yes 又写了字,字不上线(批准不带反馈;引擎只在拒绝时读理由),只留一行不含正文的 debug 日志。
|
|
513
|
+
- KL-665:控制面发 `atMention: {mode:"none"}`(一个都不许 @)时影子文档写不出这一态(10 一代空名单 = 全部可 @)⇒ 不写、本机 @ 不受限、出一句 warn;支持底线抬到服务端 7.124.0 后随 RL-94 照写。KL-54(整张悬空原样保留)仍在。
|
|
514
|
+
- KL-667:`sessionReadRedaction` 位为真不答 assistant `errorMessage` 叶是否已脱敏(7.120.0 – 7.122.x 该叶原样、7.123.0 起脱敏,位同值)。
|
|
515
|
+
- KL-675:无标签的裸不透明值按形状判是概率判据(约 4% 的 24 字随机串仍露,B9d 池读数 0.961 – 0.993;两类字符 / 23 字以内 / 粘着 `+` `/` `=` 的 Base64 凭据不判;缩写密集带数字的长标识符与无文件签名的 Base64 文本会被遮)。
|
|
516
|
+
- KL-676:收尾反引号只在值末尾留在记号外(值恰好止于收尾一段同行代码段的那一串);值里的反引号一律不截断值;收尾反引号之后紧跟值字符时它随值进记号(与 0.94.0 同)。URL 片段末尾不配对的 `)` / `]` 留在记号外。
|
|
517
|
+
- KL-678:值前 JSON 转义空白只认制表符,转义行断不作分隔(它们是 YAML 块 / 清单读法的行断);方案词恰是路径段尾半截(`…\my-token\test.txt`)时其后的 `\t` / `\T` 仍按转义制表符读、下一段被遮(整段是方案词的路径段已不读)。
|
|
518
|
+
- KL-383 收窄:括号 / 方括号包着的值已按其升级判据收口,余项为尖括号 / 花括号与括号里的占位形 / 多个词。KL-467 收窄:同一行的引号标签箭头形已遮,余项为箭头后换行(保排版出口)/ 不带引号的标签 / 箭头后不是引号值。KL-573 删行(CC-414 收口:粘在下划线 / 连字符后的已知前缀本版起遮)。
|
|
519
|
+
- KL-683:重放审批帧 `decided` 且无成因时,句子只说「引擎的待决清单里没有它」,不分人决过 / 过期 / 转入停驻 —— 待决清单与崩溃收敛清单都不列已决行的结局,包不自造「已批」或「已过期」。
|
|
520
|
+
- KL-707:回体读口只带信封四键(`models` / `default` / `defaultModel` / `droppedEntries`);服务端将来在信封上新加的键不随在线目录过境,直到本包认得它(行上的新键照带)。
|
|
521
|
+
- KL-708:座位回退载体只带渲染端看到的锚点 `uuid`;锚点 → 引擎条目的映射(含被选消息之前没有进过引擎的轮时要重开会话、`code` 档只回文件)在宿主,本包不给映射口;映射不出的宿主不报能力 `rewind`。
|
|
522
|
+
- KL-709:座位上没有后台子代的插话 / 续跑 / 停止动词(桌面端宿主没有子代台账);座位 lane 上不提供这三个动作,本版只给每轮两只子代载荷位补判据。
|
|
523
|
+
- KL-686:`SettingsPort.managedPolicyReading` 是可选口 —— 宿主有托管层却不接它时,托管层读坏仍读成「没有托管策略」(只有读抛错才关);包不假设宿主一定沿用,不告警(没有托管层的宿主不实现它是正确答案)。
|
|
524
|
+
- KL-687:引擎 ≥7.73.0 在 `GET /v1/usage/series` 的点上逐点带 `estimated`,sdk 18.2.0 的 `UsageSeries` 型还没声明这一键;本包按结构读(严格布尔才收,缺席不折 false)。
|
|
525
|
+
- KL-688:`runReapedByDeadline` 的 `runs.get` 单发、无期限、不传 `signal`(与终端壳同形):传输层挂住时 decide 的 404 归因那一行会一直等;宿主要有界等待就在自己传入的 client 上包一层期限。
|
|
526
|
+
- KL-691:设备换绑经 sdk 发,2xx 的状态码看不见 —— 「恰 200 才算成功形、202 = 还在办」那一判不可得,改由回体不变式判;2xx 体不是 JSON 时 sdk 抛无状态码的解析错 ⇒ 落 `unconfirmed / transport`(`mayStillBeRunning: true`),回读对账只认目标态。
|
|
527
|
+
- KL-693:env 组声明(含镜像引擎启动校验的 `refuses` 谓词与告知句)由宿主给,本包不镜像引擎判官;每个起本机引擎的宿主要持有同一份声明,直到引擎或设置契约导出组校验。
|
|
528
|
+
- KL-701:子代内容账本对聚合帧的两道去重恒都跑 —— 同一 turn 里两段逐字相同的子代正文在耐久腿上折成一段(内容闸是承重的:耐久续读跨重连回放同一段时带新的事件 id)。
|
|
529
|
+
- KL-702:「门已决」判据的文案兜底臂仍给无码 / 码不在任何一张表里的失败(宿主自带传输层的普通错误等);失败文字恰含 already / resolved / not found 时按已决处置(多读一轮流,同因连续第二次即诚实收场)。
|
|
530
|
+
- KL-420 删行:「门已决」判据比终端少四臂的限制随本版并包收掉。
|
|
531
|
+
- KL-696:`mcpEngineLegConnectionOf` 的读数是这一轮运行拨号那一刻的判词;运行中途服务器掉线这一格仍读 `connected`(活性另读 `mcpEngineLegLivenessOf`),下一轮整份替换。
|
|
532
|
+
- KL-697:回落台账「真答过」的证据(`lastServed`)由宿主交;宿主没有这份证据 ⇒ 台账不记、不指路。
|
|
533
|
+
- KL-698:子代尾随 / 终报在快照未落地时等共用探测落定至多 60 s(宿主的探测挂住时等满);调用方中止只结束自己的等待。
|
|
534
|
+
- KL-700:段投影器的丢行记号只随它产出的那只数组对象走;宿主展开 / 序列化往返过的段看不见被丢的坏行,两只按名找行的读口回到「不在上面」的读法。
|
|
535
|
+
- KL-699:能力读数换代只随 `invalidateEngineCaps`;引擎在同一地址换代而宿主不调它时,三处读的仍是上一台的位(此前 false 会在 5 分钟后自己重探一次)。
|
|
536
|
+
- KL-716:忙卡的接管行句复用 resume 入口的重放披露原句,其中「a run that outlived its shell」按 resume 入口写成;忙卡上被接管的那条 run 常是本进程里背景化的一轮,屏上已有它此前的输出 ——「会再出现一次」「不重复计账」照实,「outlived its shell」对这一形读起来偏窄。要换措辞的宿主用 `rowFor` 整行覆盖;不为一行措辞另铸第二份披露。
|
|
537
|
+
- KL-717:attach 供给位只认严格 `true`;纯 JS 宿主交非布尔真值(函数引用、`1`、`'yes'`)给 resume 卡的 `canAttach` 时,0.94.0 给 attach、本版不给 —— 按类型(`boolean`)传值的调用方不受影响,不为类型违例的输入保留真值读法。
|
|
538
|
+
- KL-728:忙卡(Leave 之后再撞 running 的三选卡)对同一条 run 已呈过一次、用户选了「什么都不做」之后再撞 running:只出一行现状,这一行不提「可以接管观看」。
|
|
539
|
+
- KL-712:`ccTaskTerminalStatusOf` 把 `cancelled` 折成 `killed`、把 `blocked` / 历史行 `timeout` 折成 `failed` —— CC 本地任务行上看不出「取消」与「被停」、「自报走不下去」与「失败」的差别(原词仍在通知 / 行帧上)。
|
|
540
|
+
- KL-713:参数化对账门只读开发依赖那一版上游的包根(引擎 7.48.0 / sdk 18.2.0);peer 地板与见证集上的其它 sdk 版本若词表不同,本门看不见。
|
|
541
|
+
- KL-714:`<status>blocked</status>` 的通知块不再记「已通知」;今天没有生产者写它,若某份历史转录里有,重开会话时那一条可能再投一次。
|
|
542
|
+
- KL-729:跨腿单一持有只设「耐久路查活卡」一个方向;停驻行审批口已持有时同一只审批再来现场卡不查表(现场 → 停驻单向转移,判为没有铸帧来路)。
|
|
543
|
+
- KL-730:宿主自己的耐久路开出的卡不进本包的持有登记 —— 宿主那一路能经 `joinApprovalHolder` 问到本包的活卡,本包的停驻行审批口看不见宿主那一路在屏的卡(推断形,未见实测)。
|
|
544
|
+
- KL-722:门脚本里仍有几处按行或按片段读注释的写法不在门脚本族扫认得的两形里 —— `run-client-core-pure-test.mjs` 的行级去注释(域词表-09 普查,带前提自校)与 web 分类器表的行尾 `//` 剥离(条件腿),`run-hitl-words-readout-test.mjs` G-HW10 找签名之后第一条非 `//` 行,`run-retirement-ledger-test.mjs` 的 `stripCommentMarker`(归一注释正文,不是剥注释)。
|
|
545
|
+
- KL-723:`run-engine-caps-ledger-test.mjs` 的能力位读点普查对已剥注释的 `src` 文本仍用正则找 `engineCap*(` 调用头、按括号配平取实参,并用按引号配对的 `splitArgs` 切开实参。
|
|
546
|
+
- KL-724:宿主在能力回体落地之后就地改写自己交出的那只对象 ⇒ 读器保留这次落地的首读投影,按键现读的口(`engineCapState` / `engineCapValue` / `engineCapTrue` / `engineCapString`)跟着改,两类读口对同一位可能分叉(CC-344 余项)。
|
|
547
|
+
- KL-725:宿主探测闭包里(落地之前)读 `observed*` 答 `unobserved`;同一拍要用读数读手上这一发的投影 `project*Capability(caps)`,或 `await engineCapsSettled` 之后再读(此前闭包里先调 `noteEngineCapsFor*` 同拍读得到;CC-344 余项)。
|
|
548
|
+
- KL-718:没有持久问账的部署(或行上没记成因的存量行)上,中断撤卡那一发撞 404 时体上不带成因词,告警照出 —— 那一问可能已经结束(假告警),也可能在别的副本上仍在等,wire 上分不出,按「可能锁住」说。
|
|
549
|
+
- KL-719:`approval_binding_mismatch` 无 `field` 的行完整性拒仍铸安全停 `binding_mismatch`(宿主按「待决动作变了」重取重呈;同一决断再送照样被拒);分类读数里它是 `row_integrity`,安全停只给有权威依据的答案席那一形放宽。
|
|
550
|
+
- KL-720:sdk 的终帧判据不在包根导出(只在 sdk 包内,且判的是原始 SSE 帧);`isInStreamDrainingEnd` 保留自己对投影后对象的三形分支。舰队流与 workflow 流不在 sdk 的终帧读口名单里,排空帧照旧由本包判型、随服务端关流结束。
|
|
551
|
+
- KL-721:预览 `objectivePreview` 本包零读点;服务端 7.124.0 上「建过预览、剥完没有用户正文」与「没记录」在会话列表上同为 `null`、在任务列表上同为键缺席(两张面分不出),只有任务名展示面带服务端自己的「(notification turn)」字样;本包不铸占位、不渲 0。
|
|
552
|
+
- KL-731:重开撞上提交前的 503 `draining`(排空期由中继 / 代理拒订阅时)按抛出处理、不走排空梯 —— 决断后续读腿把错误冒给宿主,无头续收腿扣它的重连预算(服务端 7.124.0 排空期照收订阅,只拒新提交)。
|
|
553
|
+
- KL-732:排空收场账不在根入口;自带 run 事件读者的端要连续次数,用 `isInStreamDrainingEnd` + `streamDrainingDecision` 自记(CC-600:0.96.0 上根入口)。
|
|
554
|
+
- KL-733:后台子代尾随(`runs.subagentStream`,单腿)排空时不重开(与 sdk 19 之前同形)。
|
|
555
|
+
- KL-734:技能两表 `allowedTools` / `disallowedTools` 在能力位 `skillToolLists` 不是 `yes` 时不发且不逐请求告知(CC-590;`skillToolListsDoctorDetail` 读口可见;上游对未知键整条拒,发了反而整只技能失效)。
|
|
556
|
+
- KL-735:提示被 UserPromptSubmit 钩子拦下时「Run blocked: …」终帧句原样带出引擎信封文本、不渲 `terminal.detail.cause`(铸点在本包;CC-603 0.96.0 改 CC 形句 + 信封零上屏)。
|
|
557
|
+
- KL-522 改写(CC-344 余项随 CC-516:读数改从总缓存的落地派生后,「第一拍 / 切换后未落定 ⇒ `unobserved`、`now` / `later` 本地拒」这一形的推荐序改成先 `engineCapsSettled(baseUrl, { withinMs })` 再取读数再发;宿主不必也不能再喂读数)。
|
|
558
|
+
- KL-655 删行(CC-597 收口):审批推送流与 run 事件流在排空终帧之后的重开等待都归本包的排空决策口(sdk 19 起两条流都在排空终帧上结束、不再自己重连;四条订阅腿同一只排空收场账)。
|
|
559
|
+
- KL-736:`displayUntrusted` 凭据前缀网不认 `%XX` 编码的分隔与路径前导(高熵真形由裸值网兜住;低熵 / 短形与 `/` 前导原样);解码后再过同一张网归 CC-604(0.96.0,与 CC-288 合并收口)。
|
|
560
|
+
- KL-737:托管策略读数端口 `managedPolicyReading` 只交三词,沿用覆盖 / 远端未到 / 被盖住三维读不出 ⇒ 托管层读坏而壳沿用上次名单时,发给引擎的 hooks 腿与壳本端执行腿处置不一;归 CC-601(0.96.0)。
|
|
561
|
+
- KL-738:`LiveWorkflowConfig.baseUrl` 只收串,引擎换口时 workflow 详情源 / 监视器仍连旧口(`authToken` 已是取值函数,两者不对称;CC-292 收账 P3)。
|
|
562
|
+
- KL-739:`run-session-memory-erase` 60 ms 取消计时格与同形固定窗计数格在全门并发下偶红(单跑绿);正向计数格改有界等待前先单跑复核(CC-564 收账 P3)。
|
|
563
|
+
- KL-740:fleet 账本结算级离场自摘只摘行帧车道结算的 `killed` 行,终态通知推定的 killed 行挂满保留窗(≤ 60 s)才走(CC-332;终端换读本包后比壳内过渡件多等一窗)。
|
|
564
|
+
- KL-741:fleet 账本无离场墓碑,重连间隙里离场帧先到、`killed` 终态帧后到时该行留到下一条离场 / 快照;自摘不看 `viewingTaskId`(CC-332)。
|
|
565
|
+
- KL-742:委派报告帧槽位(`DelegationReportFrame` 的 `status` / `error` / `stats` / `headRest`)只在引擎铸的位置上读 —— 状态行紧邻帧头;任务描述(上游原样插进帧头行、可带换行)把帧头行撑成多行、或描述里塞了 `status:` 行时四个槽位全缺席、字节全进 `headRest`(端退回逐行原样渲,多渲不丢);有 `worktree:` 行(引擎里唯一未消毒的多行插值:路径与清理失败的异常文本)的报告,引擎自己铸的 `error` 也不上槽、留在 `headRest`;根治在上游把那一行消毒成单行(CC-444;**§122 FX-C3**)。
|
|
566
|
+
- KL-743:结果段标签行 `taskOutputResultLine` 的括注读到『行终止符(CR / U+2028 / U+2029)紧跟 `--- result`』即止 —— 括注里恰夹着另一个标签行起头的输入(引擎不铸)0.94.0 的正则整段吞作括注,现在不认这一行;与旧形仅此一类输入答不同(CC-400;**§122 FX-C1**)。
|
|
567
|
+
- KL-744:「本桥已见结局」只记流内帧腿自己见到的结局(它呈的卡被答 / 被中止,以及它收到的引擎收口帧);悬挂 ask 腿(宿主驱动)与宿主自己的 chrome 卡那一路上结算的问不进这本账 —— 那两路上同 `approvalId` 的重复帧仍按各自既有的判定处置(帧带位置时读清单判活)。被有界淘汰挤出的问、重启后的新桥同样回到修前行为(重复帧再开一张卡)。(CC-526)
|
|
568
|
+
- KL-745:答复送出后服务端回 404(没落定)的结局不记入「已见结局」 —— 非粘性多副本上那一发可能只是落到了别的副本、这一问仍在等,压掉重复帧会压掉唯一一张还能答的卡;代价是此后的重复帧会再开一张卡(答它再回 404,与修前同形;KL-506 同源)。(CC-526)
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
52
573
|
## 0.94.0(2026-10-10)
|
|
53
574
|
|
|
54
575
|
> 主题:**minor** —— 终端 1.0.146 对接版:引擎 7.45 – 7.47 / 服务端 7.120 – 7.122 / 配置层 10 / sdk 18.1 提货 · 请求装配与审批判定归包 · 到期登记物按预告硬删 · 凭据遮蔽两件 · 附件信封外套标签
|