@sema-agent/client-core 0.84.0 → 0.84.1
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 +98 -0
- package/README.md +12 -5
- package/dist/abortableSleep.d.ts +10 -0
- package/dist/abortableSleep.js +37 -0
- package/dist/adapter/downstream/terminalToSdkResult.d.ts +1 -0
- package/dist/adapter/downstream/terminalToSdkResult.js +10 -5
- package/dist/agentsWireCaps.js +8 -0
- package/dist/decideFailureNote.d.ts +2 -1
- package/dist/decideFailureNote.js +5 -3
- package/dist/detachWire.d.ts +1 -0
- package/dist/detachWire.js +13 -5
- package/dist/displayUntrusted.js +114 -18
- package/dist/engineErrorCodes.d.ts +2 -0
- package/dist/engineErrorCodes.js +3 -0
- package/dist/engineNoticeCodes.d.ts +30 -4
- package/dist/engineNoticeCodes.js +73 -5
- package/dist/engineWireSdk.d.ts +2 -0
- package/dist/hitl/askGateWire.d.ts +1 -1
- package/dist/hitl/askGateWire.js +1 -1
- package/dist/hitl/hitlHostSurface.js +1 -1
- package/dist/hitl/parkResolver.d.ts +1 -0
- package/dist/hitl/parkResolver.js +9 -3
- package/dist/hitl/planReviewWire.d.ts +30 -3
- package/dist/hitl/planReviewWire.js +139 -32
- package/dist/hitl/sessionPolicyDeliverable.d.ts +2 -0
- package/dist/hitl/sessionPolicyDeliverable.js +14 -3
- package/dist/hitl/sessionPolicyWire.d.ts +40 -0
- package/dist/hitl/sessionPolicyWire.js +210 -0
- package/dist/hitl/toolApprovalWire.js +2 -2
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/liveInitToolFace.js +28 -10
- package/dist/resumeRefusalCopy.d.ts +11 -0
- package/dist/resumeRefusalCopy.js +39 -1
- package/dist/systemReminderTag.d.ts +5 -0
- package/dist/systemReminderTag.js +20 -9
- package/docs/INTEGRATION-CLIENTS.md +461 -16
- package/package.json +1 -1
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
|
|
20
20
|
| 项 | 值 | 真源 |
|
|
21
21
|
|---|---|---|
|
|
22
|
-
| 本包 | `@sema-agent/client-core` **0.84.0**(本批发布版 = **minor**:peer sdk 地板 `>=11.3.0` → `>=12.0.1`;后台代理登记读数 —— 读口 / 取代判定 / 归类口 / 登记键桥 / 补行谓词,缺席行下半场(CC-194);读目录授权结论通告读口 `readReadRootGrantNotice`(CC-185);接线回执 `hands` 段 `_sema_hands` + 读口 `handsSeamReadingOf` / `handsSeamDetail`,`handsMountedDetail` 坏入参不再抛(CC-206);陈旧逻辑清扫(CC-223):退役键 `rewind.rewindFiles` 构造期拒收、`WorkflowRunState.agentCount` 改可选、26 个内部件退出根入口、九张公面判定表换只读 Set 子类、十五张判定数组冻结、`resume_at` 文本兼容腿退役;根公面 1278 → 1260;公面类型 +10;§107)。上一版 0.83.6 = **patch**:会话规则记录的无损判定 `sessionPolicyDeliverable` 把引擎会在准备阶段拒启的两类名字(引擎退役名、含 `__` 而不以协议前缀开头的名字)改判「不写」,成因词 `legacy_tool_name`(闭集 5 → 6),引擎说「改名为 X」的退役名带 `currentName` 出路位;`peer_wide` 那句改措辞(判决不变)(CC-226);根公面 1278 不变;peer sdk 地板 `>=11.3.0` 不动;§106)。上一版 0.83.5 = **patch**:展示层出口 `displayUntrusted` 的连接符 ZWJ / ZWNJ 按语境判(🔴 默认形输出字节变)、两只可选开关 `escapeBackslashes` / `blanks` 与标记位置读口 `displayUntrustedMarks`(CC-204);凭据两网的判别视图认孤代理项,机读字节 `errors[]` / 合成终局行同批(CC-207);转义记号在凭据再扫里原子与四处凭据读法存量修复(相对 0.83.4 零新增外泄);hooks 启动模式可选词读口 `SettingsPort.hooksStartupMode()`,安全 / bare 模式下设置来源只发 managed(CC-200),设置来源里同一条 hook 只发一份(CC-208);自愈三条重发结局 +1 可选位 `releaseConfirmedByEngine`、行句按释放证据分说(CC-212);活段接入指引订正;公面类型 +3;peer sdk 地板 `>=11.3.0` 不动;根公面 1278;§105)。上一版 0.83.4 = **patch**:只增 —— plan 审批卡「用户亲手关掉的卡,自动触发不在同一道门上放回屏上」的判定归包(`reopenPlanReviewCard` 加触发者位 `trigger`、拒开位 `dismissedByUser`,409 自愈腿按提交出身替宿主传触发者、结局与整行由包出;CC-201);座位审批请求补强制位 / 强制理由词 / 报价缺席因由 / 出身词四个可选位与过境口 `toolPermissionRequestAskBits`(CC-203);`<system-reminder>` 剥离 / 解包两只口上公面并改线性时间(CC-205);两条展示层接入指引订正;开发依赖引擎 `~7.33.1`;公面类型 +2;peer sdk 地板 `>=11.3.0` 不动;根公面 1277;§104)。上一版 0.83.3 = **patch**:入参 / 来源面 —— hooks 投影加 flag 来源(`--settings` 那一层,排在 local 之后;设置来源 hooks 维持托管在前拼接);规则列举口 `listAllPersistedRules` 入参只要 `list`(`RulesListFacade`,其余四口作可选成员);模型身份认目录缺省(本机读数加宿主报位 `engineAcceptsCatalogDefault`,位 `true` 才算目录可解析);公面类型 +1;peer sdk 地板 `>=11.3.0` 不动;根公面 1273;§103)。上一版 0.83.2 = **patch**:只增 —— 审批卡一族三件(常驻姿态下的放行谓词 `askSurvivesPosture`,三态、「不知道」不折成放行;卡上 `mandate` 六词闭集 + 读口 + 每词一句说明,通告码册 +2,开发依赖引擎 `~7.32.0`;停泊卡带出身词 `origin`;CC-193 / CC-195 / CC-196)与后台子代缺席行的判定、计数、sweep 豁免、回收与措辞单源(回收只在后台代理登记确认离场时;CC-194);公面类型 +13;peer sdk 地板 `>=11.3.0` 不动;根公面 1273;§102)。上一版 0.83.1 = **patch**:只增 + 行为订正 —— 展示层安全出口三端单源 `displayUntrusted`(凭据两网 ∘ 字符三网,选项按载体选;CC-112);本包合成的终局行正文与结果帧 `errors[]` 在铸点洗凭据(`errors[]` wire 可见,方向只会更安全)、交互车道合成行带上行类旗,回决备注与子代续跑收据多收双向 / 格式字符(CC-187 / CC-112);会话规则记录的无损判定 `sessionPolicyDeliverable` + 措辞单源 `sessionPolicyWithheldNotice` + 五词成因 `SESSION_POLICY_WITHHELD_WHY`(整批可送才送,首尾带空白的名字比宿主侧更严;CC-117);插件 hook 每轮计划 `hooksWirePlan` + `SettingsPort` 可选读口 `enabledPluginHooks` + `hooksForWire({ plan })`,逐条判「投给引擎 / 本客户端执行 / 如实不跑」、开机「不会执行」清单与 `/hooks` 标注措辞单源(投给引擎那一臂候引擎能力位 `taskSettings.pluginHooks`),设置来源的 `mcp_tool` 与 exec 形 hook 条目不再上请求体、手写的 `plugin` 键剥掉(CC-174);公面类型 +26;peer sdk 地板 `>=11.3.0` 不动;根公面 1254;§101)。上一版 0.83.0 = **minor**:行为面与型面都有 BREAKING —— CC 形消息 24 项按裁定 C-R103 退役名:结果帧 `degraded` / `errorCode` / `model` 与错误信封 `result` → `_sema_model_degraded` / `_sema_error_code` / `_sema_selected_model` / `_sema_salvaged_result`,合成终局行 `isApiErrorMessage` → `_sema_api_error_message`,工具结果记录删过渡名 `toolUseResult`,system 行 `attachedFiles` → `_sema_attached_files`、到达时戳 `timestamp` 与 `isMeta` 删,print 完成通知帧十三键平铺 `_sema_*`,记忆写入改走 chrome 臂 `memory_saved`(新型 `MemorySavedChromeEvent`,`CHROME_ARMS` required);本包只铸新名、端两名并读一版 + 结果帧 CC 键 `terminal_reason` 与读口 `terminalReasonForResult`(CC-175),错误信封知道就铸 `_sema_selected_model` + 转录 id 改 UUID 形(CC-147)+ `SettingsPort` 可选合并读口 `mergedDisableAllHooks`、用户层 `disableAllHooks` 在引擎腿上生效(CC-162)+ 退化审批卡三形拒收改写、`FsApprovalOutcome` 的 `failed` 臂 +可选位 `editRefused`(CC-135)+ 注入件自愈句整族重写 + 联网搜索旧三读口 `webSearchFromEnv` / `webSearchFromSettings` / `resolveWebSearch` 退出公面,`resolveLiveInitToolFace` 可选 `opts.webSearchStamped`(`LiveInitToolFaceOptions`),endpoint userinfo 律跟服务端 7.101.0(CC-184)+ 公面类型 −4(CC-171)+ 通告码册 69 → 71 与结构化卡白名单 +`read-inbox`(CC-186,开发依赖引擎 `~7.31.0`)+ 合成终局行 `uuid` 改 UUID 形;peer sdk 地板 `>=11.3.0` 不动;根公面 1238;§100)。上一版 0.82.7 = **patch**:只增不改 —— 每请求联网搜索配置的三态判决 `judgeWebSearchSettings` / `webSearchVerdictFromEnv` / `resolveWebSearchVerdict`(与 7.100.0 及以后 server 的受理判官同序同判,认不出的 provider 判形错、不再静默丢段;settings 段凭据注入回调 `apiKeyFor`)+ 措辞单源 `webSearchVerdictMessage`(不回显任何用户配的值)+ 调试日志用 `webSearchEndpointForDisplay`;旧三读口 `webSearchFromEnv` / `webSearchFromSettings` / `resolveWebSearch` 行为不变、标过渡期,0.83.0 删(CC-182);peer sdk 地板 `>=11.3.0` 不动;根公面 1240;§99)。上一版 0.82.6 = **patch**:只增不改 —— 停泊行上选「本会话允许」却没被记住时与活卡腿同句告知(回体 `rememberApplied: false`,或 server 以会话级放行专属拒绝码拒了 remember 后回退普通批准;其余失败一律未知不告知),回执 `DecideReceiptView` +1 可选位 `rememberApplied`(CC-181);决断落定后与桥重试臂的诊断留痕不再因宿主日志口抛错回流进决断;接入文档改口:server ≥7.100.0 上 park 行卡的 `requiresRealApproval` / `approvalIsMandated` 生效(CC-180,零代码改动);peer sdk 地板 `>=11.3.0` 不动;根公面 1235;§98)。上一版 0.82.5 = **patch**:只增不改 —— print 车道 init 帧工具面名册优先:流包装器 `withPrintInitFrame`(首选接法,init 恒为首行、其后按到达序)/ 判定闸 `createPrintInitGate` / 分类口 `printInitRosterSignal` / 判定口 `decidePrintInitToolFace` / 留痕措辞 `printInitToolFaceDebugLine` + 等待上界 `PRINT_INIT_ROSTER_WAIT_MS`(150 000);回落估计表补 `ListAgents`(7.30.0 及以后的引擎上与 `SendMessage` 同条件)(CC-169);peer sdk 地板 `>=11.3.0` 不动;根公面 1235;§97)。上一版 0.82.4 = **patch**:只增不改 —— park 行审批卡新增门类位 `irreversibleParkGate`(待决行门类恰为 irreversible_ask,今天即生效,门类事实不是保证);`requiresRealApproval` 在待决行顶层带时透传(就绪,待决列表带出后才生效,今天零行为变化)(CC-180);`ApprovalCardRequest` +1 可选位;peer sdk 地板 `>=11.3.0` 不动;根公面 1229;§96)。上一版 0.82.3 = **patch**:只增不改的公面 —— 自愈提示的「保住对话」出路槽 `keepSessionWayOut` 与交互面引擎决断入口开关 `engineDecidePath`(CC-177;两位都不给时措辞与 0.82.2 逐字节同);自愈结局两臂 +机读位 `pendingRowGone`(重开链证实待决项已不在);peer sdk 地板 `>=11.3.0` 不动;根公面 1229;§95)。上一版 0.82.2 = **patch**:只增不改的公面 + 若干行为订正 —— 新增措辞单源 `cloudEffectiveNotices`:云控制面有效配置回体的降级告警 / 预算 / 能力上限三读数(CC-164,四态,不读成 0 或「没有预算」);本机引擎 models 文档在宿主注入本机条目判定 `entryAccepted` 时补 `default` / `tierGroups` / `activeTierGroup`,剔掉会让本机整份拒收的目录引用与判定口不收的条目,去掉 registry 注记键 `origin` / `overridesTeam`(CC-165;结果新增 `modelRefIssues`);计划复核结局机读位 `_sema_planReviewOutcome`(CC-160 ①);停泊审批决断操作起止回调 `onDecideOperation` 与操作句柄 `openDecideOperation`(CC-160 ③);新增超集键 `_sema_planReviewOutcome`;peer sdk 地板 `>=11.3.0` 不动;根公面 1229;§94)。上一版 0.82.1 = **patch**:只增不改的公面 + 若干行为订正 —— 新增读口 15 个(续跑折叠码读口与措辞 / 文件历史捕获读口六口 / 模型身份可解析判据五口 / 自定义代理载荷作废重投口 / 决断失败码「门还在」判定)+ 宿主车道声明 `EmitContext.lane`;新增超集键 `_sema_response_model`(终帧 / 每轮用量)与 chrome 用量两臂 `responseModel`、重开判决 `_sema_decisionInFlight`、自愈结局两臂 `decisionInFlight`、内部臂 `_sema_denial_unclassified`、通知码 +1;行为订正:计划复核决断在飞不重开卡且自愈提示不再教人再决一次(CC-160 ②)、决断出口补折叠句且停泊腿不再把折叠 / 坏档误判已决(CC-154)、执行车道 `in-process` 措辞(CC-153)、`-p` 车道 Bash 良性退出与交互同判(CC-168)、`-p` 工具结果帧补结构化结果(CC-149)、被拒分类词两车道同判(CC-172)、非交互车道子代工具帧(CC-158,宿主声明车道才生效)、终帧被拒清单对账流内拒绝(CC-159)、自定义代理载荷作废重投(CC-161);peer sdk 地板 `>=11.3.0` 不动;根公面 1228;§93)。上一版 0.82.0 = **minor**:只增不改 —— 新增只读读口 17 个 + 1 常量、工具名册行一格 `mountedBy`、turn 错误判决 `http` 臂一格 `storedRowWhere`:`/rewind` 代码档与对话档能不能用由引擎能力位回答(CC-146)、云控制面额度读数三分(CC-150)、装配期「这一条腿有没有手」(CC-152)、续跑拒收按原码判(CC-154);两处既有面行为订正:自动模式分类器拒的类别词由 `permission-rule` 改为 `automode-*` 三词(CC-155,订正 0.81.1)、续跑上下文读不出时引擎点名的那一行不再丢(CC-156);0.81.0 预告的 23 键 + 1 子型删改**改到 0.83.0**(§92y ㉙);零 wire 键、零投影臂;peer sdk 地板 `>=11.3.0` 不动;§92。上一版 0.81.1 = **patch**:被拒分类词读器加第③路(CC-148):引擎「没问过就拒」的工具调用(deny 规则 / 权限模式 / hook / 分类器 / 写保护 —— 无 `settlement` 只有 `gate.disposition.deniedBy`)在 user 工具结果记录与终帧 `permission_denials[]` 上此前恒缺 `_sema_denial_kind` / `toolDenialKind`,现按层名落 `permission-rule`(其中「分类器」一项已由 0.82.0 CC-155 订正)(`ask_resolution` 无结算 / 结算段不成形 / 层名表外仍缺席不猜);交互与 `--print` 两条车道同一只读器;另钉终帧两臂 `_sema_effective_*` 键集不变量 —— 成功臂展开单铸函数、错误信封显式重发,覆盖性钉在返回对象自己的类型上(漏键 / 多键编译期即红)+ 门格判两臂键集相等且值逐字节同,给单铸函数加键时错误臂不会再静默少键(本版无键增减);零 wire 键、零投影臂、根公面 1195;§91。上一版 0.81.0 = **minor**:CC 形消息一张脸(C-R85 / CC-131):user 工具结果记录加 SDK 面键 `tool_use_result`(与过渡键 `toolUseResult` 同引用,删驼峰原定 0.82.0、已改到 0.83.0)+ DS-19 普查门升硬门(键集按语法解析、按 type/subtype 分表;23 键 + 1 子型过渡表到期窗原为 0.82.0、已改到 0.83.0,零常驻豁免)+ CC-145 `/rewind` both 臂改发 `restoreFiles:true`、`projectRewind(pending)` 单参;零 wire 键、零投影臂、根公面 1195;§90。上一版 0.80.2 = **patch**:`conflict.resume_context_unavailable` 的 `staleAfterSec` / `runId` 在真 SDK 上读不到(CC-137:sdk 11.1.0 起 `APIError` 把体上非具名键收进 `extra`,这一码映射成 `ConflictError` 无具名位,读口只读顶层 ⇒ 真调用链恒缺席)⇒ 体源结构位改「顶层有效值优先、`extra` 兜底」三只类型化读口单铸,有具名子类位的三处(`retryAfterSec` × 2 / `allowlist`)行为不变只多兜底,头源 `retryAfterMs` 只读具名位;零 wire 键、零投影臂、根公面 1195;§89。上一版 0.80.1 = **patch**:去键重发判据句按「铸」计(CC-143;§87「带键的体恰一次」作废 → 被铸恰一次,POST 几次随传输层)+ 接入文档段落自带射程限定词自 §88 起向前执法 + 模型预设表 deepseek 项改闭集真名 deepseek-flash(CC-144,C-R82 ①)+ 门里 git 兜底自陈探针(CC-142);零 wire 键、零投影臂、根公面 1195;§88。上一版 0.80.0 = **minor**:🔴 peer sdk 地板 >=11.2.1 → >=11.3.0 + 策略拒的归因上 wire(CC-133:发送面 deny+policy 带 settledBy / 读侧 policy_refused 十三词入 CC 规则桶 / 三错误码读口 / 直连门去键重发恰一次)+ 删除规则后果句归包(CC-132)+ /mcp 详情卡两腿分说归包(CC-134:六档读口 + 九句铸点,同批改口八处说满的话)+ 🔴 终帧旧拼法 `structuredOutput` 按 0.79.1 的宣告删除(只剩 CC 形 `structured_output`);根公面 1195;§87。上一版 0.79.1 = **patch**:终帧结构化产出同帧铸 CC 形 `structured_output`(旧拼法 `structuredOutput` 过渡一版,0.80.0 删;CC-130)+ 写审批 `argsOmitted` 退化卡在无受护写入部署形上重新解得出路径(CC-129)+ 云控制面十值二型经本包第二个入口 `@sema-agent/client-core/registry` 原样转口(根入口零变;CC-128 ①);根公面 1184;§86。上一版 0.79.0 = **minor**:server 7.93.0 过境批 —— peer sdk 地板 >=11.2.1 + 写口回执第六臂 unverified 与 503 体 committed 分臂(CC-124)+ 无 run 可读的 MCP 状态面(CC-74)+ 审批卡 mandated 位(CC-110)+ 请求装配第三车道 utility 与 approverPosture / maxTokens / outputRetries 三键 + print 车道 model 座(CC-116 / 118 / 123)+ 拒因两面分铸与四个机读位(CC-125)+ 模型轮边界划消息界(CC-126)+ 委派结果人类面读口按来源声明体内定位(CC-127)+ sdk 转口三件(CC-128)+ 通告码 memory.project_scope_absent(CC-122);公面 1184;§85。上一版 0.78.2 = **patch**:门的棘轮登记数字单真源 —— 五只门十一格棘轮 + 218 条沿革账搬进 scripts/registry.json、门只读不抄、负控改篡改登记物、下调通道 RATCHET-SLACK、新门 run-registry-test(CC-79 第一期)+ 两格存量松量收掉 + submit-wiring-manifest 门补 count===1 边界格;src 零改动,dist 逐字节同 0.78.1;公面 1154;§84。上一版 0.78.1 = **patch**:两辆并行车收货 + 三张跟进票 —— displayBody 人类面读口 + 围栏解析头尾配对收紧(CC-113)/ MCP 两处「没报」措辞分句(CC-115)/ 记忆治理面五动词调用口(CC-97 b)/ 非流式提交回执接线回执读口 readSubmitWiringManifest(CC-121)/ 三份失败判官抛出物读取收口(CC-119);公面 1154;§83。上一版 0.78.0 = **minor**:peer sdk 地板 >=9.8.1 → >=11.0.1(CC-106)+ 单步写口 200 体按 stillLive 判别联合改读、第五臂 revoked、三型取自 sdk、RulesFacade.write 必填、PersistedRuleLiveness 转口(CC-103)+ DeniedBy 第十词 read_boundary 专句(CC-106 ④)+ excludeAllTools 车道行;型面 BREAKING 三处、行为面同 0.77.2;公面 1143;§82。上一版 0.77.2 = **patch**:出包面结构卫生 —— 构建期 removeComments,dist js / d.ts 零注释(新门 run-dist-comments-test.mjs + 卫生门词表 32 条 + 文档向前执法;CC-100)+ gateDeniedByDetail 表外词兜底句改「本版不认识这个层名」(CC-111 ①);行为 / 型面逐字节同 0.77.1;公面 1143;§81。上一版 0.77.1 = **patch**:外部验收三件回填 —— 读器族边界残留 projectMcpReconnectCapability 只认自有键(CC-107)/ rewind 四子键恰读一次(CC-108)/ 子代输出合并按回体 output.type · retrieval_status 定处置(CC-109,server ≥7.92.0 cursorSemantics 缺席面);型面 additive 一处;公面 1143;§80。上一版 0.77.0 = **minor**:请求装配逐键去向回执 + print 车道补座 + 表外键响亮拒(CC-101,四条行为 BREAKING)/ 会话策略写端口(CC-105)/ 持久规则单步写面(CC-103)/ workflow 子代面板行代际三向恢复(CC-104,零改码)/ 能力位读器族口径整族改齐 + 外部验收 F-A / F-B 处置 + 合并树异源复审两轮处置;公面 1143;§79。上一版 0.76.2 = **patch**:制品卫生 —— 清 dist 重 build 去掉两只已撤出源码的编译产物 + dist ⇄ src 对账门;零源码 / 零型面 / 零行为改动;公面 1122;§78。上一版 0.76.1 = **patch**:能力位读器工厂(CC-75)/ MCP 活性观察读口(CC-36)/ `capabilities.peerLane` · `permissionRulesWrite` 四态读口(CC-102)/ 记忆治理面两只读口 + 三只条目面回体读口(CC-97 a)/ 主车道证明逐次新建(CC-99)+ 修 0.76.0 的 F1 / F2(身份四键一次性快照只修了投影口一侧);公面 1122;§77。上一版 0.76.0 = **minor**:六票一批 —— `prompt_assembled` 投影臂 / 审批 feed 三态(**型面 BREAKING**)/ `ApprovalResolution` 单源联合 / 记忆 spec 读口 / 终态词表上游钉 / `tasks_expand` 退役(**型面 BREAKING**),外加身份四键一次性快照(跨全部内部臂);公面 1081;§76。上一版 0.75.1 = **patch**:面板短命子代反序缓行放不出的残洞(外部复验 D1)+ 同代 running 帧三向定形(B4)+ #969 提货 `spawnName` 透传与 `agentType` 改读诚实来源(CC-95);§75。上一版 0.75.0 = **minor**:压缩的非 compacted 结局上 chrome 面 `compaction_outcome`(新内部臂 —— 自建 print 出口的端先表态)+ peer sdk 地板 `>=9.8.1`;型面 additive(ChromeEvent +1 臂)、公面 1065、零 wire 新键;§74。上一版 0.74.5 = **patch**:core 7.24.0 提货 `_sema_freed_tokens?` + 首见即终态的行零事件(幽灵完成行)+ `isNewEngineAgentPanelCycle` / `approvalOutcomeNoteOf` 上公面;型面 additive、公面 1065、peer 不动;§73。上一版 0.74.4 = **patch**:面板键「先发布的键为准」(tick 归不了一的三序不再两行)+ 前代 UUID 迟到 tick 丢弃 + `readRunCancelContext` 下钻收紧;型面 additive、公面 1061、peer 不动;§72。上一版 0.74.3 = **patch**:面板子代身份归一(tick / end 的 UUID 归到 fleet 尾段,宿主零改)+ run 记录 `cancelContext` 读口与成因四词 + workflow 行 `errorCode` + reopen 第二臂两件;型面纯 additive、公面 1061、peer 不动;§71。上一版 0.74.2 = **patch**:`capabilities.deviceExecutor.management` 四态读口(缺席 ≠ false;`deviceExecutor: false` = 车道缺席;管理动词可用性三态归包);公面 1052;§70。上一版 0.74.1 = **patch**:审批卡无决断收口 + 结局回交;§69。上一版 0.74.0 = **minor**:peer sdk 地板 >=9.7.1 + covers 过境 + 面板周期身份 + 离场读口;§68。上一版 0.73.5 = **patch**:workflow 规模告警判定上收进包(`evaluateWorkflowSize` 三态:未知的规模不当作规模正常;分母口径与帽优先级单源;env 读口纯函数);型面纯 additive、公面 1044、peer 不动;§67。上一版 0.73.4 = **patch**:终帧 `permission_denials` 第三键 ⇐ 同一条流 `tool_start` 入参按 `toolCallId` join(三道闸;join 不上留 sema 载体;🔴 更正 0.73.2「自动升级收口」一句)+ 审批 feed push 侧取件失败的欠账退避重试;型面纯 additive、公面 1033、peer 不动;§66。上一版 0.73.3 = **patch**:CC-61 sdk 9.7.1 提货 + `capabilities.approvalsStreamLive` 四态读口(缺席 = 判不出;`livePendingNeedsReconcile` 只在引擎明说会推时才让对账节拍降兜底)+ CC-60 五条模型面文案锚包侧半场(cursorSemantics 机读位 / result 行注记 / bash 首行两变体与良性槽 / 通知 seed 并集 / parked 臂);型面纯 additive、公面 1032、peer 不动;§65。上一版 0.73.2 = **patch**:CC-59 悬挂 ask 全卡 —— `livePending[].frame`(server ≥7.87.0)两道闸窄读进视图,在场即走流内帧腿同一条路(入参可见、改写可转发),缺席保持盲卡;CC-34 收口(引擎半场随 7.87.0 到货,判据交黑盒);型面纯 additive、公面 1026、peer 不动;§64。上一版 0.73.1 = **patch**:CC-57 `decidePlanReview` outcome 尾句按「决断有没有生效」四态选(单铸点 `planReviewOutcomeTail`;此前本地拒发仍让模型汇报已拒绝)+ CC-56 cancel 的 409 按机器码分家(`cancelConflictFromError` 三形 / 新安全码 `cancel_run_not_running`)与提交面 429 用量窗读口 + 人话;型面纯 additive、公面 1026、peer 不动;§63。上一版 0.73.0 = **minor,型面 BREAKING**:fleet 视图八个数值键改可选 —— CC-52 `FleetTaskView.elapsedMs` / `tokens` / `queuedCount` 与 `FleetWorkflowView.doneCount` / `totalCount` / `failedCount` / `tokens` / `elapsedMs` 不再 `?? 0`(有键 = 真值含真 0,缺键 = 不知道;逐键缺席语义见 §62b)+ 台账补偿链无基数不铸;公面导出名零增减 1019、零 wire 变化、peer 不动;§62。上一版 0.72.14 = **patch**:悬挂的流内 ask 拉半场 —— CC-55 `startApprovalsFeed` 快照加 `livePending` 段并进变化摘要(键缺席 = 未报,不铸空)+ 视图 / 去重账 / 与流内帧腿同链的决断口(入参不可见上卡明说、改写不转发)+ 宿主闸对账节拍 + 待决计数读口(不知道 = null);型面纯 additive、公面 1019、peer 不动;§61。上一版 0.72.13 = **patch**:server 7.86.0 提货 —— CC-46 plan_review `permissionModeAfter` 发口(三选卡双闸:宿主声明只读起步 ∧ 引擎 ≥7.86.0;400 field_conflict 两种处置)+ CC-54 `capabilities.executionLane` 四态读面(键缺席 ≠ 不是本机车道;`toolsRunHere` 判据归包)+ CC-53 detach 版本闸三态;型面 additive(另撤回 0.72.12 的主通道 `absent` 臂,改独立缺席订阅口)、公面 1011、peer 不动;§60;**预告 0.73.0 BREAKING**:fleet 视图数值键改可选。上一版 0.72.12 = **patch**:「缺席被折成正向终态」按类清剿 —— CC-50 M1 头条(fleet 行缺席改发 `absent` 不再铸 `end{isError:false}`)+ 六站一次改齐(缺席 ⇒ `unknown`)+ 结果边界 fail-closed 取舍 + `_sema_outcome` + `Outcome unknown:` 行 + CC-51 M6(default 臂不再谎报 running)+ 普查门 + DS-06;型面 additive、公面 993、peer 不动;行为面三处真变化见 CHANGELOG 取舍段;§59。上一版 0.72.11 = **patch**:core 7.23.0 提货 —— CC-49 通告码 66 → 67 `config.write_protection_unresolved`(operator;兄弟码 `target_view_absent` = 没有视图,这枚 = 有视图解析不出)+ `permission_denials` 自动升级腿通电(`gates[].toolCallId` ⇒ `tool_use_id`;CC-34 引擎半场);型面零变化、公面 989、peer 不动、devDep core ~7.23.0;§58。上一版 0.72.10 = **patch**:CC-41 leader run 终局 `needs_human` + `result.conflict` 三形读面(none 缺席不可分 / unreadable 在场读不懂 / conflict;`salvaged[]` 原样给落盘口;措辞单源不提重试);型面纯 additive、公面 989、peer 不动;§57。上一版 0.72.9 = **patch**:server 7.85.0 提货 —— CC-30 会话内 MCP re-dial 消费口(`reconnectMcpServer` 三态 / unsupported 恒五键 / 交易文案单源)+ CC-39② memory-status `autoConsolidationArmed` 三态 + CC-45 resume 补充句渲保留秒数;型面纯 additive、公面 985、peer 不动;§56。上一版 0.72.8 = **patch**:清账三票 —— `memory:"off"` 请求键(CC-39③,server 7.84.0 S-405)+ `runStream` 第二条中性臂 `Model output error:`(CC-43)+ 注入件撞活 run 自动 steer 零卡(CC-44);型面纯 additive、公面 977、peer 不动;§55。上一版 0.72.7 = **patch**:core 7.22.0 提货 —— 通告码 66 `mcp.server_redialed` + 读器 `readMcpServerRedialed` + `wiring_manifest.readDeny` 第九段 `_sema_readDeny`(缺席 = 没有内置行判这条腿);型面纯 additive、公面 971、peer 不动、devDep core ~7.22.0;§54。上一版 0.72.6 = **patch**:cli L-379 包侧半场 —— `steerFollowIntent` steer 后续听意图三态(tail / after-decision / after-wake)+ `activeRunSelfHealRow` 续听声明第五参;型面纯 additive、公面 969、peer 不动;§53。上一版 0.72.5 = **patch**:server 7.82.1 提货 —— `capabilities.webSearch.backend` 部署默认 WebSearch 后端四态读面(键缺席 = 老引擎判不了 ≠ `none`);型面纯 additive、公面 968、peer 不动;§52。上一版 0.72.4 = **patch**:core 7.21.x 三件经 server 7.82.0 提货 —— `wiring_manifest.autoConsolidation` 第八段 `_sema_autoConsolidation`(缺席 = indeterminate 不折 false);型面纯 additive、公面 962、peer 不动;§51。上一版 0.72.3 = **patch**:core #863 记忆单系统半场 ① —— `projectAgentsForWire` 投影 `agents[].memory`(user|project|local 三词同映射引擎平面 agent:<type>);型面纯 additive、公面 962、零 wire 新键、peer 不动;§50。上一版 0.72.2 = **patch**:workflow 视图两票 —— `LiveWorkflowController.resolution()` 六态(snapshot() 的 null 三义拆开)+ `noteOwnWorkflowRun` own 台账同拍登记;型面纯 additive、公面 961、零 wire 键、peer 不动;§49。上一版 0.72.1 = **patch**:server 7.80.1 提货 —— 409 `conflict.resume_context_unavailable` 结构读数(`staleAfterSec` / `runId`;sdk 9.6.0 尚未带键,经 sdk 今天恒缺席)+ `SkillSpec.baseDir`(只在本机车道带);型面纯 additive、公面 960、peer 不动;§48。上一版 0.72.0 = **minor**:型面 BREAKING —— 39 个零消费导出退出公面(CC-32 退役批,[7419] §45 预告 / cli [7422] 同意 / web-client·desktop 过节拍沉默 = 同意;名单见 §47a S-1);运行期零 BREAKING、公面 956、peer 不动、devDep core ~7.20.1;随批:已退役名账 `removed` + export-liveness 门 G 段 + 冻结账门 ⑧c;§47。上一版 0.71.4 = **patch**:core 7.20.1 提货 —— `ENGINE_NOTICE_CODES` 65 + `wiring_manifest.writeProtection` 第七段 `_sema_writeProtection`;型面纯 additive、公面 995、peer 不动、devDep core `~7.20.1`;§46。上一版 0.71.3 = **patch**:门体系清账批 —— CC-24 export-liveness 门 + 39 个导出退役预告(0.72.0 删,表态制)/ CC-26 `as unknown as` 铸链棘轮 / CC-25 冻结账门 ⑧ 段 / CC-06 B-081 包侧半场(终帧 `_sema_effective_reasoning` / `_sema_effective_memory_scopes` + resume reopen 族 + `routePairingVerdict`);型面纯 additive、公面 986 → 995、peer 不动;§45。上一版 0.71.2 = **patch**:接入方验收两票归包 —— CC-28 B-132 decide 拒体三句去内部车道词 / CC-29 B-133 committedUuids 唯一性(重复 ⇒ 形 f);零型面变化、公面 986、peer 不动;§44。上一版 0.71.1 = **patch**:接入档打回修正 —— CC-27 `ApprovalCardRequest.readRootCandidate?` 帧→卡透传位 + 新导出型 `ReadRootCandidateView`;型面纯 additive、公面 986 不变、peer 不动;§43。上一版 0.71.0 = **minor**:型面 BREAKING 六件 —— peer sdk 地板 >=9.6.0 + agent-types >=0.3.0 / `SkillsListingTruncatedFactsView` 删 `requestedBudgetBytes?`·`laneClamped?` / `WiringManifestMcpEntry` → `WiringManifestMcpEntryView` / `MAX_AGENT_SKILLS` 删 / `decide.workflow_host_not_parked` 退役;运行期零 BREAKING。内容:core 7.20.0 提货(闭集 +5 六十四码)/ 🔴 CC-16 `text_segment_end.committedUuids[]` / CC-08 全五件(tool_disclosure / tool_progress 两 chrome 臂、wiring_manifest tools·hooks·lsp 进切片、tool_roster_delta 接上、context_usage 进切片、`readRootCandidate` 镜像)/ CC-19 `mcpEngineLegPresence` 归包 / CC-20 not_parked clean-cut;公面 986;§42 / 42y 八条)|
|
|
23
|
-
| peer:wire 契约 | `@sema-agent/sdk` **>=12.0.1**(value-level,非 type-only;**0.84.0 抬版**:12.x 声明每会话后台登记列表 `sessions.background`、能力位 `capabilities.background.listFace` 与七词闭集的后台状态型,本包三者都读(登记读口的端点门与归类口的编译期穷举),按 12.0.1 编译,11.3.0
|
|
22
|
+
| 本包 | `@sema-agent/client-core` **0.84.1**(本批发布版 = **patch**:`<system-reminder>` 开标签定位口 `findSystemReminderOpenTag`(CC-210);detach durable-off 400 纯判定 `isDetachDurableOff400`,`detachDurableOffHint` 对读属性会抛的错误对象改回 `null`(CC-219);服务端自铸通告码进码册与受众表 `SERVER_NOTICE_AUDIENCE`(`instructions.source_changed` 回到用户面)+ 事实读器 `readInstructionsSourceChanged`(CC-213);按码派发的通告事实口 `readEngineNoticeFacts` + 派发表 `ENGINE_NOTICE_FACT_READERS`,`readReadRootGrantNotice` 入参型放宽(CC-214);停泊审批决断 422 `parked_resume.startup_failed` 的读口 / 一句话 / 判定与码优先 `isCodeClassifiedGateFailure`(CC-225);拒启会话的窄撤销动词 `removeRefusedSessionRules` 与出路句 `legacyToolNameFailureNoteOf`,`CONFIG_REFUSAL_CODES` 七员 → 八员(CC-229);plan-review 编排三口与两只能力探针收注入 client(CC-209);CC 形 `permission_denials` 收入参只被传输层脱敏过的拒绝 + 超集位 `_sema_tool_input_redacted`(CC-235);凭据读法两处放行收口(CC-234);根公面 1260 → 1275;公面类型 +18;peer sdk 地板 `>=12.0.1` 不动;§108)。上一版 0.84.0 = **minor**:peer sdk 地板 `>=11.3.0` → `>=12.0.1`;后台代理登记读数 —— 读口 / 取代判定 / 归类口 / 登记键桥 / 补行谓词,缺席行下半场(CC-194);读目录授权结论通告读口 `readReadRootGrantNotice`(CC-185);接线回执 `hands` 段 `_sema_hands` + 读口 `handsSeamReadingOf` / `handsSeamDetail`,`handsMountedDetail` 坏入参不再抛(CC-206);陈旧逻辑清扫(CC-223):退役键 `rewind.rewindFiles` 构造期拒收、`WorkflowRunState.agentCount` 改可选、26 个内部件退出根入口、九张公面判定表换只读 Set 子类、十五张判定数组冻结、`resume_at` 文本兼容腿退役;根公面 1278 → 1260;公面类型 +10;§107)。上一版 0.83.6 = **patch**:会话规则记录的无损判定 `sessionPolicyDeliverable` 把引擎会在准备阶段拒启的两类名字(引擎退役名、含 `__` 而不以协议前缀开头的名字)改判「不写」,成因词 `legacy_tool_name`(闭集 5 → 6),引擎说「改名为 X」的退役名带 `currentName` 出路位;`peer_wide` 那句改措辞(判决不变)(CC-226);根公面 1278 不变;peer sdk 地板 `>=11.3.0` 不动;§106)。上一版 0.83.5 = **patch**:展示层出口 `displayUntrusted` 的连接符 ZWJ / ZWNJ 按语境判(🔴 默认形输出字节变)、两只可选开关 `escapeBackslashes` / `blanks` 与标记位置读口 `displayUntrustedMarks`(CC-204);凭据两网的判别视图认孤代理项,机读字节 `errors[]` / 合成终局行同批(CC-207);转义记号在凭据再扫里原子与四处凭据读法存量修复(相对 0.83.4 零新增外泄);hooks 启动模式可选词读口 `SettingsPort.hooksStartupMode()`,安全 / bare 模式下设置来源只发 managed(CC-200),设置来源里同一条 hook 只发一份(CC-208);自愈三条重发结局 +1 可选位 `releaseConfirmedByEngine`、行句按释放证据分说(CC-212);活段接入指引订正;公面类型 +3;peer sdk 地板 `>=11.3.0` 不动;根公面 1278;§105)。上一版 0.83.4 = **patch**:只增 —— plan 审批卡「用户亲手关掉的卡,自动触发不在同一道门上放回屏上」的判定归包(`reopenPlanReviewCard` 加触发者位 `trigger`、拒开位 `dismissedByUser`,409 自愈腿按提交出身替宿主传触发者、结局与整行由包出;CC-201);座位审批请求补强制位 / 强制理由词 / 报价缺席因由 / 出身词四个可选位与过境口 `toolPermissionRequestAskBits`(CC-203);`<system-reminder>` 剥离 / 解包两只口上公面并改线性时间(CC-205);两条展示层接入指引订正;开发依赖引擎 `~7.33.1`;公面类型 +2;peer sdk 地板 `>=11.3.0` 不动;根公面 1277;§104)。上一版 0.83.3 = **patch**:入参 / 来源面 —— hooks 投影加 flag 来源(`--settings` 那一层,排在 local 之后;设置来源 hooks 维持托管在前拼接);规则列举口 `listAllPersistedRules` 入参只要 `list`(`RulesListFacade`,其余四口作可选成员);模型身份认目录缺省(本机读数加宿主报位 `engineAcceptsCatalogDefault`,位 `true` 才算目录可解析);公面类型 +1;peer sdk 地板 `>=11.3.0` 不动;根公面 1273;§103)。上一版 0.83.2 = **patch**:只增 —— 审批卡一族三件(常驻姿态下的放行谓词 `askSurvivesPosture`,三态、「不知道」不折成放行;卡上 `mandate` 六词闭集 + 读口 + 每词一句说明,通告码册 +2,开发依赖引擎 `~7.32.0`;停泊卡带出身词 `origin`;CC-193 / CC-195 / CC-196)与后台子代缺席行的判定、计数、sweep 豁免、回收与措辞单源(回收只在后台代理登记确认离场时;CC-194);公面类型 +13;peer sdk 地板 `>=11.3.0` 不动;根公面 1273;§102)。上一版 0.83.1 = **patch**:只增 + 行为订正 —— 展示层安全出口三端单源 `displayUntrusted`(凭据两网 ∘ 字符三网,选项按载体选;CC-112);本包合成的终局行正文与结果帧 `errors[]` 在铸点洗凭据(`errors[]` wire 可见,方向只会更安全)、交互车道合成行带上行类旗,回决备注与子代续跑收据多收双向 / 格式字符(CC-187 / CC-112);会话规则记录的无损判定 `sessionPolicyDeliverable` + 措辞单源 `sessionPolicyWithheldNotice` + 五词成因 `SESSION_POLICY_WITHHELD_WHY`(整批可送才送,首尾带空白的名字比宿主侧更严;CC-117);插件 hook 每轮计划 `hooksWirePlan` + `SettingsPort` 可选读口 `enabledPluginHooks` + `hooksForWire({ plan })`,逐条判「投给引擎 / 本客户端执行 / 如实不跑」、开机「不会执行」清单与 `/hooks` 标注措辞单源(投给引擎那一臂候引擎能力位 `taskSettings.pluginHooks`),设置来源的 `mcp_tool` 与 exec 形 hook 条目不再上请求体、手写的 `plugin` 键剥掉(CC-174);公面类型 +26;peer sdk 地板 `>=11.3.0` 不动;根公面 1254;§101)。上一版 0.83.0 = **minor**:行为面与型面都有 BREAKING —— CC 形消息 24 项按裁定 C-R103 退役名:结果帧 `degraded` / `errorCode` / `model` 与错误信封 `result` → `_sema_model_degraded` / `_sema_error_code` / `_sema_selected_model` / `_sema_salvaged_result`,合成终局行 `isApiErrorMessage` → `_sema_api_error_message`,工具结果记录删过渡名 `toolUseResult`,system 行 `attachedFiles` → `_sema_attached_files`、到达时戳 `timestamp` 与 `isMeta` 删,print 完成通知帧十三键平铺 `_sema_*`,记忆写入改走 chrome 臂 `memory_saved`(新型 `MemorySavedChromeEvent`,`CHROME_ARMS` required);本包只铸新名、端两名并读一版 + 结果帧 CC 键 `terminal_reason` 与读口 `terminalReasonForResult`(CC-175),错误信封知道就铸 `_sema_selected_model` + 转录 id 改 UUID 形(CC-147)+ `SettingsPort` 可选合并读口 `mergedDisableAllHooks`、用户层 `disableAllHooks` 在引擎腿上生效(CC-162)+ 退化审批卡三形拒收改写、`FsApprovalOutcome` 的 `failed` 臂 +可选位 `editRefused`(CC-135)+ 注入件自愈句整族重写 + 联网搜索旧三读口 `webSearchFromEnv` / `webSearchFromSettings` / `resolveWebSearch` 退出公面,`resolveLiveInitToolFace` 可选 `opts.webSearchStamped`(`LiveInitToolFaceOptions`),endpoint userinfo 律跟服务端 7.101.0(CC-184)+ 公面类型 −4(CC-171)+ 通告码册 69 → 71 与结构化卡白名单 +`read-inbox`(CC-186,开发依赖引擎 `~7.31.0`)+ 合成终局行 `uuid` 改 UUID 形;peer sdk 地板 `>=11.3.0` 不动;根公面 1238;§100)。上一版 0.82.7 = **patch**:只增不改 —— 每请求联网搜索配置的三态判决 `judgeWebSearchSettings` / `webSearchVerdictFromEnv` / `resolveWebSearchVerdict`(与 7.100.0 及以后 server 的受理判官同序同判,认不出的 provider 判形错、不再静默丢段;settings 段凭据注入回调 `apiKeyFor`)+ 措辞单源 `webSearchVerdictMessage`(不回显任何用户配的值)+ 调试日志用 `webSearchEndpointForDisplay`;旧三读口 `webSearchFromEnv` / `webSearchFromSettings` / `resolveWebSearch` 行为不变、标过渡期,0.83.0 删(CC-182);peer sdk 地板 `>=11.3.0` 不动;根公面 1240;§99)。上一版 0.82.6 = **patch**:只增不改 —— 停泊行上选「本会话允许」却没被记住时与活卡腿同句告知(回体 `rememberApplied: false`,或 server 以会话级放行专属拒绝码拒了 remember 后回退普通批准;其余失败一律未知不告知),回执 `DecideReceiptView` +1 可选位 `rememberApplied`(CC-181);决断落定后与桥重试臂的诊断留痕不再因宿主日志口抛错回流进决断;接入文档改口:server ≥7.100.0 上 park 行卡的 `requiresRealApproval` / `approvalIsMandated` 生效(CC-180,零代码改动);peer sdk 地板 `>=11.3.0` 不动;根公面 1235;§98)。上一版 0.82.5 = **patch**:只增不改 —— print 车道 init 帧工具面名册优先:流包装器 `withPrintInitFrame`(首选接法,init 恒为首行、其后按到达序)/ 判定闸 `createPrintInitGate` / 分类口 `printInitRosterSignal` / 判定口 `decidePrintInitToolFace` / 留痕措辞 `printInitToolFaceDebugLine` + 等待上界 `PRINT_INIT_ROSTER_WAIT_MS`(150 000);回落估计表补 `ListAgents`(7.30.0 及以后的引擎上与 `SendMessage` 同条件)(CC-169);peer sdk 地板 `>=11.3.0` 不动;根公面 1235;§97)。上一版 0.82.4 = **patch**:只增不改 —— park 行审批卡新增门类位 `irreversibleParkGate`(待决行门类恰为 irreversible_ask,今天即生效,门类事实不是保证);`requiresRealApproval` 在待决行顶层带时透传(就绪,待决列表带出后才生效,今天零行为变化)(CC-180);`ApprovalCardRequest` +1 可选位;peer sdk 地板 `>=11.3.0` 不动;根公面 1229;§96)。上一版 0.82.3 = **patch**:只增不改的公面 —— 自愈提示的「保住对话」出路槽 `keepSessionWayOut` 与交互面引擎决断入口开关 `engineDecidePath`(CC-177;两位都不给时措辞与 0.82.2 逐字节同);自愈结局两臂 +机读位 `pendingRowGone`(重开链证实待决项已不在);peer sdk 地板 `>=11.3.0` 不动;根公面 1229;§95)。上一版 0.82.2 = **patch**:只增不改的公面 + 若干行为订正 —— 新增措辞单源 `cloudEffectiveNotices`:云控制面有效配置回体的降级告警 / 预算 / 能力上限三读数(CC-164,四态,不读成 0 或「没有预算」);本机引擎 models 文档在宿主注入本机条目判定 `entryAccepted` 时补 `default` / `tierGroups` / `activeTierGroup`,剔掉会让本机整份拒收的目录引用与判定口不收的条目,去掉 registry 注记键 `origin` / `overridesTeam`(CC-165;结果新增 `modelRefIssues`);计划复核结局机读位 `_sema_planReviewOutcome`(CC-160 ①);停泊审批决断操作起止回调 `onDecideOperation` 与操作句柄 `openDecideOperation`(CC-160 ③);新增超集键 `_sema_planReviewOutcome`;peer sdk 地板 `>=11.3.0` 不动;根公面 1229;§94)。上一版 0.82.1 = **patch**:只增不改的公面 + 若干行为订正 —— 新增读口 15 个(续跑折叠码读口与措辞 / 文件历史捕获读口六口 / 模型身份可解析判据五口 / 自定义代理载荷作废重投口 / 决断失败码「门还在」判定)+ 宿主车道声明 `EmitContext.lane`;新增超集键 `_sema_response_model`(终帧 / 每轮用量)与 chrome 用量两臂 `responseModel`、重开判决 `_sema_decisionInFlight`、自愈结局两臂 `decisionInFlight`、内部臂 `_sema_denial_unclassified`、通知码 +1;行为订正:计划复核决断在飞不重开卡且自愈提示不再教人再决一次(CC-160 ②)、决断出口补折叠句且停泊腿不再把折叠 / 坏档误判已决(CC-154)、执行车道 `in-process` 措辞(CC-153)、`-p` 车道 Bash 良性退出与交互同判(CC-168)、`-p` 工具结果帧补结构化结果(CC-149)、被拒分类词两车道同判(CC-172)、非交互车道子代工具帧(CC-158,宿主声明车道才生效)、终帧被拒清单对账流内拒绝(CC-159)、自定义代理载荷作废重投(CC-161);peer sdk 地板 `>=11.3.0` 不动;根公面 1228;§93)。上一版 0.82.0 = **minor**:只增不改 —— 新增只读读口 17 个 + 1 常量、工具名册行一格 `mountedBy`、turn 错误判决 `http` 臂一格 `storedRowWhere`:`/rewind` 代码档与对话档能不能用由引擎能力位回答(CC-146)、云控制面额度读数三分(CC-150)、装配期「这一条腿有没有手」(CC-152)、续跑拒收按原码判(CC-154);两处既有面行为订正:自动模式分类器拒的类别词由 `permission-rule` 改为 `automode-*` 三词(CC-155,订正 0.81.1)、续跑上下文读不出时引擎点名的那一行不再丢(CC-156);0.81.0 预告的 23 键 + 1 子型删改**改到 0.83.0**(§92y ㉙);零 wire 键、零投影臂;peer sdk 地板 `>=11.3.0` 不动;§92。上一版 0.81.1 = **patch**:被拒分类词读器加第③路(CC-148):引擎「没问过就拒」的工具调用(deny 规则 / 权限模式 / hook / 分类器 / 写保护 —— 无 `settlement` 只有 `gate.disposition.deniedBy`)在 user 工具结果记录与终帧 `permission_denials[]` 上此前恒缺 `_sema_denial_kind` / `toolDenialKind`,现按层名落 `permission-rule`(其中「分类器」一项已由 0.82.0 CC-155 订正)(`ask_resolution` 无结算 / 结算段不成形 / 层名表外仍缺席不猜);交互与 `--print` 两条车道同一只读器;另钉终帧两臂 `_sema_effective_*` 键集不变量 —— 成功臂展开单铸函数、错误信封显式重发,覆盖性钉在返回对象自己的类型上(漏键 / 多键编译期即红)+ 门格判两臂键集相等且值逐字节同,给单铸函数加键时错误臂不会再静默少键(本版无键增减);零 wire 键、零投影臂、根公面 1195;§91。上一版 0.81.0 = **minor**:CC 形消息一张脸(C-R85 / CC-131):user 工具结果记录加 SDK 面键 `tool_use_result`(与过渡键 `toolUseResult` 同引用,删驼峰原定 0.82.0、已改到 0.83.0)+ DS-19 普查门升硬门(键集按语法解析、按 type/subtype 分表;23 键 + 1 子型过渡表到期窗原为 0.82.0、已改到 0.83.0,零常驻豁免)+ CC-145 `/rewind` both 臂改发 `restoreFiles:true`、`projectRewind(pending)` 单参;零 wire 键、零投影臂、根公面 1195;§90。上一版 0.80.2 = **patch**:`conflict.resume_context_unavailable` 的 `staleAfterSec` / `runId` 在真 SDK 上读不到(CC-137:sdk 11.1.0 起 `APIError` 把体上非具名键收进 `extra`,这一码映射成 `ConflictError` 无具名位,读口只读顶层 ⇒ 真调用链恒缺席)⇒ 体源结构位改「顶层有效值优先、`extra` 兜底」三只类型化读口单铸,有具名子类位的三处(`retryAfterSec` × 2 / `allowlist`)行为不变只多兜底,头源 `retryAfterMs` 只读具名位;零 wire 键、零投影臂、根公面 1195;§89。上一版 0.80.1 = **patch**:去键重发判据句按「铸」计(CC-143;§87「带键的体恰一次」作废 → 被铸恰一次,POST 几次随传输层)+ 接入文档段落自带射程限定词自 §88 起向前执法 + 模型预设表 deepseek 项改闭集真名 deepseek-flash(CC-144,C-R82 ①)+ 门里 git 兜底自陈探针(CC-142);零 wire 键、零投影臂、根公面 1195;§88。上一版 0.80.0 = **minor**:🔴 peer sdk 地板 >=11.2.1 → >=11.3.0 + 策略拒的归因上 wire(CC-133:发送面 deny+policy 带 settledBy / 读侧 policy_refused 十三词入 CC 规则桶 / 三错误码读口 / 直连门去键重发恰一次)+ 删除规则后果句归包(CC-132)+ /mcp 详情卡两腿分说归包(CC-134:六档读口 + 九句铸点,同批改口八处说满的话)+ 🔴 终帧旧拼法 `structuredOutput` 按 0.79.1 的宣告删除(只剩 CC 形 `structured_output`);根公面 1195;§87。上一版 0.79.1 = **patch**:终帧结构化产出同帧铸 CC 形 `structured_output`(旧拼法 `structuredOutput` 过渡一版,0.80.0 删;CC-130)+ 写审批 `argsOmitted` 退化卡在无受护写入部署形上重新解得出路径(CC-129)+ 云控制面十值二型经本包第二个入口 `@sema-agent/client-core/registry` 原样转口(根入口零变;CC-128 ①);根公面 1184;§86。上一版 0.79.0 = **minor**:server 7.93.0 过境批 —— peer sdk 地板 >=11.2.1 + 写口回执第六臂 unverified 与 503 体 committed 分臂(CC-124)+ 无 run 可读的 MCP 状态面(CC-74)+ 审批卡 mandated 位(CC-110)+ 请求装配第三车道 utility 与 approverPosture / maxTokens / outputRetries 三键 + print 车道 model 座(CC-116 / 118 / 123)+ 拒因两面分铸与四个机读位(CC-125)+ 模型轮边界划消息界(CC-126)+ 委派结果人类面读口按来源声明体内定位(CC-127)+ sdk 转口三件(CC-128)+ 通告码 memory.project_scope_absent(CC-122);公面 1184;§85。上一版 0.78.2 = **patch**:门的棘轮登记数字单真源 —— 五只门十一格棘轮 + 218 条沿革账搬进 scripts/registry.json、门只读不抄、负控改篡改登记物、下调通道 RATCHET-SLACK、新门 run-registry-test(CC-79 第一期)+ 两格存量松量收掉 + submit-wiring-manifest 门补 count===1 边界格;src 零改动,dist 逐字节同 0.78.1;公面 1154;§84。上一版 0.78.1 = **patch**:两辆并行车收货 + 三张跟进票 —— displayBody 人类面读口 + 围栏解析头尾配对收紧(CC-113)/ MCP 两处「没报」措辞分句(CC-115)/ 记忆治理面五动词调用口(CC-97 b)/ 非流式提交回执接线回执读口 readSubmitWiringManifest(CC-121)/ 三份失败判官抛出物读取收口(CC-119);公面 1154;§83。上一版 0.78.0 = **minor**:peer sdk 地板 >=9.8.1 → >=11.0.1(CC-106)+ 单步写口 200 体按 stillLive 判别联合改读、第五臂 revoked、三型取自 sdk、RulesFacade.write 必填、PersistedRuleLiveness 转口(CC-103)+ DeniedBy 第十词 read_boundary 专句(CC-106 ④)+ excludeAllTools 车道行;型面 BREAKING 三处、行为面同 0.77.2;公面 1143;§82。上一版 0.77.2 = **patch**:出包面结构卫生 —— 构建期 removeComments,dist js / d.ts 零注释(新门 run-dist-comments-test.mjs + 卫生门词表 32 条 + 文档向前执法;CC-100)+ gateDeniedByDetail 表外词兜底句改「本版不认识这个层名」(CC-111 ①);行为 / 型面逐字节同 0.77.1;公面 1143;§81。上一版 0.77.1 = **patch**:外部验收三件回填 —— 读器族边界残留 projectMcpReconnectCapability 只认自有键(CC-107)/ rewind 四子键恰读一次(CC-108)/ 子代输出合并按回体 output.type · retrieval_status 定处置(CC-109,server ≥7.92.0 cursorSemantics 缺席面);型面 additive 一处;公面 1143;§80。上一版 0.77.0 = **minor**:请求装配逐键去向回执 + print 车道补座 + 表外键响亮拒(CC-101,四条行为 BREAKING)/ 会话策略写端口(CC-105)/ 持久规则单步写面(CC-103)/ workflow 子代面板行代际三向恢复(CC-104,零改码)/ 能力位读器族口径整族改齐 + 外部验收 F-A / F-B 处置 + 合并树异源复审两轮处置;公面 1143;§79。上一版 0.76.2 = **patch**:制品卫生 —— 清 dist 重 build 去掉两只已撤出源码的编译产物 + dist ⇄ src 对账门;零源码 / 零型面 / 零行为改动;公面 1122;§78。上一版 0.76.1 = **patch**:能力位读器工厂(CC-75)/ MCP 活性观察读口(CC-36)/ `capabilities.peerLane` · `permissionRulesWrite` 四态读口(CC-102)/ 记忆治理面两只读口 + 三只条目面回体读口(CC-97 a)/ 主车道证明逐次新建(CC-99)+ 修 0.76.0 的 F1 / F2(身份四键一次性快照只修了投影口一侧);公面 1122;§77。上一版 0.76.0 = **minor**:六票一批 —— `prompt_assembled` 投影臂 / 审批 feed 三态(**型面 BREAKING**)/ `ApprovalResolution` 单源联合 / 记忆 spec 读口 / 终态词表上游钉 / `tasks_expand` 退役(**型面 BREAKING**),外加身份四键一次性快照(跨全部内部臂);公面 1081;§76。上一版 0.75.1 = **patch**:面板短命子代反序缓行放不出的残洞(外部复验 D1)+ 同代 running 帧三向定形(B4)+ #969 提货 `spawnName` 透传与 `agentType` 改读诚实来源(CC-95);§75。上一版 0.75.0 = **minor**:压缩的非 compacted 结局上 chrome 面 `compaction_outcome`(新内部臂 —— 自建 print 出口的端先表态)+ peer sdk 地板 `>=9.8.1`;型面 additive(ChromeEvent +1 臂)、公面 1065、零 wire 新键;§74。上一版 0.74.5 = **patch**:core 7.24.0 提货 `_sema_freed_tokens?` + 首见即终态的行零事件(幽灵完成行)+ `isNewEngineAgentPanelCycle` / `approvalOutcomeNoteOf` 上公面;型面 additive、公面 1065、peer 不动;§73。上一版 0.74.4 = **patch**:面板键「先发布的键为准」(tick 归不了一的三序不再两行)+ 前代 UUID 迟到 tick 丢弃 + `readRunCancelContext` 下钻收紧;型面 additive、公面 1061、peer 不动;§72。上一版 0.74.3 = **patch**:面板子代身份归一(tick / end 的 UUID 归到 fleet 尾段,宿主零改)+ run 记录 `cancelContext` 读口与成因四词 + workflow 行 `errorCode` + reopen 第二臂两件;型面纯 additive、公面 1061、peer 不动;§71。上一版 0.74.2 = **patch**:`capabilities.deviceExecutor.management` 四态读口(缺席 ≠ false;`deviceExecutor: false` = 车道缺席;管理动词可用性三态归包);公面 1052;§70。上一版 0.74.1 = **patch**:审批卡无决断收口 + 结局回交;§69。上一版 0.74.0 = **minor**:peer sdk 地板 >=9.7.1 + covers 过境 + 面板周期身份 + 离场读口;§68。上一版 0.73.5 = **patch**:workflow 规模告警判定上收进包(`evaluateWorkflowSize` 三态:未知的规模不当作规模正常;分母口径与帽优先级单源;env 读口纯函数);型面纯 additive、公面 1044、peer 不动;§67。上一版 0.73.4 = **patch**:终帧 `permission_denials` 第三键 ⇐ 同一条流 `tool_start` 入参按 `toolCallId` join(三道闸;join 不上留 sema 载体;🔴 更正 0.73.2「自动升级收口」一句)+ 审批 feed push 侧取件失败的欠账退避重试;型面纯 additive、公面 1033、peer 不动;§66。上一版 0.73.3 = **patch**:CC-61 sdk 9.7.1 提货 + `capabilities.approvalsStreamLive` 四态读口(缺席 = 判不出;`livePendingNeedsReconcile` 只在引擎明说会推时才让对账节拍降兜底)+ CC-60 五条模型面文案锚包侧半场(cursorSemantics 机读位 / result 行注记 / bash 首行两变体与良性槽 / 通知 seed 并集 / parked 臂);型面纯 additive、公面 1032、peer 不动;§65。上一版 0.73.2 = **patch**:CC-59 悬挂 ask 全卡 —— `livePending[].frame`(server ≥7.87.0)两道闸窄读进视图,在场即走流内帧腿同一条路(入参可见、改写可转发),缺席保持盲卡;CC-34 收口(引擎半场随 7.87.0 到货,判据交黑盒);型面纯 additive、公面 1026、peer 不动;§64。上一版 0.73.1 = **patch**:CC-57 `decidePlanReview` outcome 尾句按「决断有没有生效」四态选(单铸点 `planReviewOutcomeTail`;此前本地拒发仍让模型汇报已拒绝)+ CC-56 cancel 的 409 按机器码分家(`cancelConflictFromError` 三形 / 新安全码 `cancel_run_not_running`)与提交面 429 用量窗读口 + 人话;型面纯 additive、公面 1026、peer 不动;§63。上一版 0.73.0 = **minor,型面 BREAKING**:fleet 视图八个数值键改可选 —— CC-52 `FleetTaskView.elapsedMs` / `tokens` / `queuedCount` 与 `FleetWorkflowView.doneCount` / `totalCount` / `failedCount` / `tokens` / `elapsedMs` 不再 `?? 0`(有键 = 真值含真 0,缺键 = 不知道;逐键缺席语义见 §62b)+ 台账补偿链无基数不铸;公面导出名零增减 1019、零 wire 变化、peer 不动;§62。上一版 0.72.14 = **patch**:悬挂的流内 ask 拉半场 —— CC-55 `startApprovalsFeed` 快照加 `livePending` 段并进变化摘要(键缺席 = 未报,不铸空)+ 视图 / 去重账 / 与流内帧腿同链的决断口(入参不可见上卡明说、改写不转发)+ 宿主闸对账节拍 + 待决计数读口(不知道 = null);型面纯 additive、公面 1019、peer 不动;§61。上一版 0.72.13 = **patch**:server 7.86.0 提货 —— CC-46 plan_review `permissionModeAfter` 发口(三选卡双闸:宿主声明只读起步 ∧ 引擎 ≥7.86.0;400 field_conflict 两种处置)+ CC-54 `capabilities.executionLane` 四态读面(键缺席 ≠ 不是本机车道;`toolsRunHere` 判据归包)+ CC-53 detach 版本闸三态;型面 additive(另撤回 0.72.12 的主通道 `absent` 臂,改独立缺席订阅口)、公面 1011、peer 不动;§60;**预告 0.73.0 BREAKING**:fleet 视图数值键改可选。上一版 0.72.12 = **patch**:「缺席被折成正向终态」按类清剿 —— CC-50 M1 头条(fleet 行缺席改发 `absent` 不再铸 `end{isError:false}`)+ 六站一次改齐(缺席 ⇒ `unknown`)+ 结果边界 fail-closed 取舍 + `_sema_outcome` + `Outcome unknown:` 行 + CC-51 M6(default 臂不再谎报 running)+ 普查门 + DS-06;型面 additive、公面 993、peer 不动;行为面三处真变化见 CHANGELOG 取舍段;§59。上一版 0.72.11 = **patch**:core 7.23.0 提货 —— CC-49 通告码 66 → 67 `config.write_protection_unresolved`(operator;兄弟码 `target_view_absent` = 没有视图,这枚 = 有视图解析不出)+ `permission_denials` 自动升级腿通电(`gates[].toolCallId` ⇒ `tool_use_id`;CC-34 引擎半场);型面零变化、公面 989、peer 不动、devDep core ~7.23.0;§58。上一版 0.72.10 = **patch**:CC-41 leader run 终局 `needs_human` + `result.conflict` 三形读面(none 缺席不可分 / unreadable 在场读不懂 / conflict;`salvaged[]` 原样给落盘口;措辞单源不提重试);型面纯 additive、公面 989、peer 不动;§57。上一版 0.72.9 = **patch**:server 7.85.0 提货 —— CC-30 会话内 MCP re-dial 消费口(`reconnectMcpServer` 三态 / unsupported 恒五键 / 交易文案单源)+ CC-39② memory-status `autoConsolidationArmed` 三态 + CC-45 resume 补充句渲保留秒数;型面纯 additive、公面 985、peer 不动;§56。上一版 0.72.8 = **patch**:清账三票 —— `memory:"off"` 请求键(CC-39③,server 7.84.0 S-405)+ `runStream` 第二条中性臂 `Model output error:`(CC-43)+ 注入件撞活 run 自动 steer 零卡(CC-44);型面纯 additive、公面 977、peer 不动;§55。上一版 0.72.7 = **patch**:core 7.22.0 提货 —— 通告码 66 `mcp.server_redialed` + 读器 `readMcpServerRedialed` + `wiring_manifest.readDeny` 第九段 `_sema_readDeny`(缺席 = 没有内置行判这条腿);型面纯 additive、公面 971、peer 不动、devDep core ~7.22.0;§54。上一版 0.72.6 = **patch**:cli L-379 包侧半场 —— `steerFollowIntent` steer 后续听意图三态(tail / after-decision / after-wake)+ `activeRunSelfHealRow` 续听声明第五参;型面纯 additive、公面 969、peer 不动;§53。上一版 0.72.5 = **patch**:server 7.82.1 提货 —— `capabilities.webSearch.backend` 部署默认 WebSearch 后端四态读面(键缺席 = 老引擎判不了 ≠ `none`);型面纯 additive、公面 968、peer 不动;§52。上一版 0.72.4 = **patch**:core 7.21.x 三件经 server 7.82.0 提货 —— `wiring_manifest.autoConsolidation` 第八段 `_sema_autoConsolidation`(缺席 = indeterminate 不折 false);型面纯 additive、公面 962、peer 不动;§51。上一版 0.72.3 = **patch**:core #863 记忆单系统半场 ① —— `projectAgentsForWire` 投影 `agents[].memory`(user|project|local 三词同映射引擎平面 agent:<type>);型面纯 additive、公面 962、零 wire 新键、peer 不动;§50。上一版 0.72.2 = **patch**:workflow 视图两票 —— `LiveWorkflowController.resolution()` 六态(snapshot() 的 null 三义拆开)+ `noteOwnWorkflowRun` own 台账同拍登记;型面纯 additive、公面 961、零 wire 键、peer 不动;§49。上一版 0.72.1 = **patch**:server 7.80.1 提货 —— 409 `conflict.resume_context_unavailable` 结构读数(`staleAfterSec` / `runId`;sdk 9.6.0 尚未带键,经 sdk 今天恒缺席)+ `SkillSpec.baseDir`(只在本机车道带);型面纯 additive、公面 960、peer 不动;§48。上一版 0.72.0 = **minor**:型面 BREAKING —— 39 个零消费导出退出公面(CC-32 退役批,[7419] §45 预告 / cli [7422] 同意 / web-client·desktop 过节拍沉默 = 同意;名单见 §47a S-1);运行期零 BREAKING、公面 956、peer 不动、devDep core ~7.20.1;随批:已退役名账 `removed` + export-liveness 门 G 段 + 冻结账门 ⑧c;§47。上一版 0.71.4 = **patch**:core 7.20.1 提货 —— `ENGINE_NOTICE_CODES` 65 + `wiring_manifest.writeProtection` 第七段 `_sema_writeProtection`;型面纯 additive、公面 995、peer 不动、devDep core `~7.20.1`;§46。上一版 0.71.3 = **patch**:门体系清账批 —— CC-24 export-liveness 门 + 39 个导出退役预告(0.72.0 删,表态制)/ CC-26 `as unknown as` 铸链棘轮 / CC-25 冻结账门 ⑧ 段 / CC-06 B-081 包侧半场(终帧 `_sema_effective_reasoning` / `_sema_effective_memory_scopes` + resume reopen 族 + `routePairingVerdict`);型面纯 additive、公面 986 → 995、peer 不动;§45。上一版 0.71.2 = **patch**:接入方验收两票归包 —— CC-28 B-132 decide 拒体三句去内部车道词 / CC-29 B-133 committedUuids 唯一性(重复 ⇒ 形 f);零型面变化、公面 986、peer 不动;§44。上一版 0.71.1 = **patch**:接入档打回修正 —— CC-27 `ApprovalCardRequest.readRootCandidate?` 帧→卡透传位 + 新导出型 `ReadRootCandidateView`;型面纯 additive、公面 986 不变、peer 不动;§43。上一版 0.71.0 = **minor**:型面 BREAKING 六件 —— peer sdk 地板 >=9.6.0 + agent-types >=0.3.0 / `SkillsListingTruncatedFactsView` 删 `requestedBudgetBytes?`·`laneClamped?` / `WiringManifestMcpEntry` → `WiringManifestMcpEntryView` / `MAX_AGENT_SKILLS` 删 / `decide.workflow_host_not_parked` 退役;运行期零 BREAKING。内容:core 7.20.0 提货(闭集 +5 六十四码)/ 🔴 CC-16 `text_segment_end.committedUuids[]` / CC-08 全五件(tool_disclosure / tool_progress 两 chrome 臂、wiring_manifest tools·hooks·lsp 进切片、tool_roster_delta 接上、context_usage 进切片、`readRootCandidate` 镜像)/ CC-19 `mcpEngineLegPresence` 归包 / CC-20 not_parked clean-cut;公面 986;§42 / 42y 八条)|
|
|
23
|
+
| peer:wire 契约 | `@sema-agent/sdk` **>=12.0.1**(value-level,非 type-only;**0.84.0 抬版**:12.x 声明每会话后台登记列表 `sessions.background`、能力位 `capabilities.background.listFace` 与七词闭集的后台状态型,本包三者都读(登记读口的端点门与归类口的编译期穷举),按 12.0.1 编译,11.3.0 失去物料见证;0.84.1 不动。此前 **0.80.0 曾抬到 >=11.3.0**:11.3.0 在两条回决口体上声明 `settledBy?: "policy"`、`Settlement.kind` 第十三词 `policy_refused` 与三错误码(0.80.0 至 0.83.6 都在这条地板上);**0.79.0 曾抬到 >=11.2.1**:11.2.x 声明 `capabilities.mcpProbe`、`mcpCapabilities` / `probeMcp` + `McpProbeFace`、写回执第三支 `stillLive: "unknown"`,11.2.1 再补 `TaskRequest.approverPosture` 与审批帧键 `mandated`(型面 + 运行期键锚),本包按 11.2.1 编译,11.0.1 失去物料见证;**0.78.0 曾抬到 >=11.0.1**:11.x 声明 `DeniedBy` 第十词 `read_boundary`、`rules.write` 200 体按 `stillLive` 判别联合、`RemovalLiveness` / `RuleWriteRequest` / `RuleWriteResult` / `RuleWriteBehavior` 包根导出、`TaskRequest.excludeAllTools`,本包按 11.0.1 编译,9.8.1 失去物料见证;**0.75.0 曾抬到 >=9.8.1**:9.8.x 声明 `Capabilities.deviceExecutor.management?`,9.7.1 失去物料见证;**0.74.0 曾抬到 >=9.7.1**:9.7.x 追平的六处型面是本包 0.73.3 起的编译基线,且 9.6.0 失去物料见证;**0.71.0 曾抬到 >=9.6.0**:`tool_disclosure` / `tool_progress` 两帧型与 `ToolApprovalFrame.readRootCandidate` 自 9.6.0 起;0.69.0 曾抬到 >=9.4.0(`reasoning_end` / `lastLegMcp`),0.60.0 抬到 >=8.4.0;地板由 `scripts/run-sdk-floor-test.mjs` 的 `FLOOR` 与 public-surface 门 C-CC-3「不低于见证到的最低实装版」双钉)| `package.json` `peerDependencies` |
|
|
24
24
|
| peer:会话词汇表 | `@sema-agent/agent-types` **>=0.3.0**(type-only,零运行时;0.71.0 抬版:devDep 与 peer 同步,type-superset 门 ④ 撞名预警对着 0.3.0 的 .d.ts 求值) | 同上 |
|
|
25
25
|
| runtime dep | `diff` ^9.0.0(**唯一**一条;portability 门按**等值**钉死) | `package.json` `dependencies` |
|
|
26
|
-
| 公开导出面 | **1260** 个运行期符号(+ **59 个测试钩,两种拼法**:35 个 `__*ForTests` + 24 个单下划线开头(22 个 `_*ForTest` + `_resetLiveQuestionStore` / `_resetUltracodePreset`) —— 两种都在 `public-export-baseline.json` 的 `testHookNames` 里、各自受棘轮管,**不在** `names` 的 1260 里。运行期 `Object.keys(dist/index.js)` 的全量 = 1260 + 59 = **1319**;只剔双下划线那 35 个会多数出 24 个来,那不是棘轮盲区;最简单的剔法是去掉所有以 `_` 开头的名字(公面运行期名没有一个以 `_` 开头);= 下一版(未发布)的值:相对 0.75.1 **+16**,两票合计 —— **CC-77 ①** 审批决断结局单源判别联合 6 件:`approvalResolutionOf` / `isApprovalDecided` / `approvalNotSentCause` / `approvalUnsettledCause` + 两张 cause 词表 `APPROVAL_NOT_SENT_CAUSES` / `APPROVAL_UNSETTLED_CAUSES`(域 3);**CC-96** 记忆 spec 读面 10 件:`readAgentMemorySpec` / `unknownMemorySpecKeys` / `unknownMemorySpecKeysNote` / `memoryConfigRefusalNoteOf` / `KNOWN_AGENT_MEMORY_SPEC_KEYS` / `PENDING_MEMORY_SPEC_KEYS` / `MAX_UNKNOWN_MEMORY_SPEC_KEYS` / `CONFIG_MEMORY_PROJECT_KEY_SPELLING` / `CONFIG_MEMORY_WRITE_SCOPE_MISMATCH` + 判别形型(域 6 / 16)。CC-89 / CC-91 / CC-92 / CC-98 四票**零值导出增减**(新臂走 `ChromeEvent` 联合与内部臂表,`tasks_expand` 退役删的是联合成员不是导出名);1065 = 0.74.5 / 0.75.0 / 0.75.1 的值:相对 0.74.4 +4 —— `isNewEngineAgentPanelCycle`(CC-87,域 4)+ `approvalOutcomeNoteOf` 与两句固定文案常量(CC-88,域 3);1065 = 0.74.5 / 0.75.0 的值:相对 0.74.4 +4 —— `isNewEngineAgentPanelCycle`(CC-87,域 4)+ `approvalOutcomeNoteOf` 与两句固定文案常量(CC-88,域 3);1061 = 0.74.3 / 0.74.4 的值:相对 0.74.2 +9 —— CC-70 / CC-71 / CC-72 / CC-73 八件 + CC-80 `lastFlagValue`,见 §2b 域 3 / 4 / 10 / 15;1052 = 0.74.2 的值:相对 0.74.1 +6 —— CC-69 六件,见 §2b 域 9;1046 = 0.74.1 的值:相对 0.74.0 +1 —— `RETRACTED_CARD_DECISION_KIND`,见 §2b 域 3;1045 = 0.74.0 的值:相对 0.73.5 +1 —— `isStaleEngineAgentPanelEnd`,见 §2b 域 4;1044 = 0.73.5 的值:相对 0.73.4 +11 —— CC-58 规模告警十一件,名单见 §2b 域 12;1033 = 0.73.4 的值:相对 0.73.3 +1 —— `TOOL_INPUT_JOIN_MAX_CALLS`,见 §2b 域 1;1032 = 0.73.3 的值:相对 0.73.2 +6 —— CC-61 六件,名单见 §2b 域 9;1026 = 0.73.2 的值(导出名零增减);= 0.73.1 的值:相对 0.73.0 +7 —— CC-56 六件 / CC-57 一件,名单见 §2b 域 3 / 15;1019 = 0.73.0 的值(导出名零增减,BREAKING 在类型面);= 0.72.14 的值:相对 0.72.13 +8 —— CC-55 八件,名单见 §2b 域 3;1011 = 0.72.13 的值:相对 0.72.12 +18 —— CC-46 八件 / CC-54 六件 / CC-53 两件 / CC-50 缺席口两件,名单见 §2b 域 3 / 4 / 9 / 10;993 = 0.72.12 的值(测试钩 45):相对 0.72.11 +4 —— CC-50 `OUTCOME_UNKNOWN_ROW_PREFIX` / `isOutcomeUnknownRowText` / `TASK_NOTIFICATION_TERMINAL_STATUSES` / `isTaskNotificationTerminalStatus`;989 = 0.72.10 的值:相对 0.72.9 +4 —— CC-41 `LEADER_RUN_STATUSES` / `LEADER_REJ_HEAD_DISPLAY_MAX` / `projectLeaderConflict` / `leaderConflictDetail`;985 = 0.72.9 的值:相对 0.72.8 +8 —— CC-30 `MCP_RECONNECT_OUTCOMES` / `MCP_RECONNECT_TRANSACTION_NOTICE` / `projectMcpReconnectResult` / `classifyMcpReconnectFailure` / `reconnectMcpServer` / `projectMcpReconnectCapability` / `mcpReconnectOutcomeDetail`、CC-39② `readAutoConsolidationArmed`;977 = 0.72.8 的值:相对 0.72.7 +6 —— CC-39③ `MEMORY_OFF` / `memoryOffDeclarationField` / `memoryOffDeclared`、CC-43 `MODEL_OUTPUT_ERROR_PREFIX` / `isModelOutputErrorText` / `isModelOutputErrorRowText`;971 = 0.72.7 的值:相对 0.72.6 +2 —— CC-42 core 7.22.0 提货 `MCP_REDIAL_OUTCOMES` / `readMcpServerRedialed`;969 = 0.72.6 的值:相对 0.72.5 +1 —— CC-40 `steerFollowIntent`;968 = 0.72.5 的值:相对 0.72.4 +6 —— CC-31 server 7.82.1 提货 `capabilities.webSearch.backend` 四态读面:`WEB_SEARCH_BACKEND_NONE` / `projectWebSearchBackendCapability` / `observedWebSearchBackend` / `noteEngineCapsForWebSearchBackend` / `forgetWebSearchBackendReading` / `webSearchBackendDoctorDetail`;962 = 0.72.3 的值:相对 0.72.2 +1 —— CC-39① `AGENT_MEMORY_WORDS`;0.72.2 相对 0.72.1 +1 —— CC-37 `noteOwnWorkflowRun`;0.72.1 相对 0.72.0 +4 —— CC-33 server 7.80.1 提货:`RESUME_CONTEXT_UNAVAILABLE` / `resumeContextUnavailableFromError` / `resumeContextUnavailableContent` / `skillBaseDirOf`;0.72.0 相对 0.71.4 −39 —— CC-32 退役批删 export-liveness 登记 retire 的 39 个零消费导出(23 常量 + 16 函数,名单见 §47);995 = 0.71.3 的值:相对 0.71.2 +9 —— CC-06 `readEffectiveReasoning` / `readEffectiveMemoryScopes` / `resumeReopenFromError` / `resumeReopenContent` / `routePairingVerdict` 五函数 + `RESUME_REOPEN_CODES` / `RESUME_ENV_FAILED` / `RESUME_TOOL_UNAVAILABLE` / `RESUME_TOOL_CONTRACT_MISMATCH` 四常量;986 = 0.71.0 的值:相对 0.70.2 −`MAX_AGENT_SKILLS` −`DECIDE_WORKFLOW_HOST_NOT_PARKED` +`projectToolRosterDelta` +`mcpEngineLegPresence`;986 = 0.70.0 的值:相对 0.69.2 **一件 additive(`readSkillsListingTruncated`,§39)、零删除**;985 = 0.69.2 的值:相对 0.69.1 **三件 additive、零删除**(CC-13 `isSubFlowSegmentEnd` / `SEGMENT_END_IDENTITY_KEYS` / `droppedWhySentence`,§38);982 = 0.69.0 未发布版的值(原排 0.68.3,因 peer 地板抬升改 minor)= 相对 0.68.2 **十七件 additive、零删除**:`fetchMcpPanel`(CC-03 补件,§36e)+ `readWorkflowResumeAdmissionIncomplete`(CC-05 core 7.18.0 #755)+ `installCoreValuePorts`/`hasCoreValuePorts`/`hasCoreValuePort`/`coreValuePortMisses`/`CORE_VALUE_PORT_NAMES` + 十读口(CC-07 core 值级端口,§36d);0.68.2 相对 0.68.1 十三件 additive:`SEMA_SEGMENT_ID_KEY`(CC-01 段身份键,§35f)/ `projectMcpPanel`+`mcpPanelLastLegDetail`+`projectMcpSection`(CC-03 `/mcp` 面板读视图,§35g)/ `resolveTextSegmentAuthority`/`createTextSegmentLedger`(L-318 `text_end` 权威段替换的判决单源 + print 形段账,详见 §35b/§35c)/ `memoryCaptureDeclarationField`/`MEMORY_CAPTURE_OFF`(L-316 会话级隐私声明的字面唯一铸点,§35d)/ `engineUrl`/`probeHealth`(L-61 件④ SDK 纯工具面原样转口,§35d)/ `AgentClient`/`isApprovalRequestFrameV1`/`isApprovalRevokeFrameV1`(L-61 存量清零:SDK **wire 面**原样转口,§35e)。`0.68.1`/`0.68.0` 是 **952**,那批是相对 0.67.2 **二十件 additive、🔴 两件删除(BREAKING)**:additive = `TERMINAL_CAUSE_KINDS`/`isTerminalCauseKind`/`RUN_TERMINAL_NOT_SUCCESS_STATUSES`/`RUN_TERMINAL_STATUSES`(L-247 终态词两表分源,详见 §33b)/ `SEMA_SUBAGENT_USAGE_PARTIAL_KEY`/`subagentUsageIsPartial`(L-244 子代下界位自有名,§33g)/ `ASK_UNRESOLVABLE_CAUSES`/`readAskUnresolvable`/`DURABLE_MANDATE_SOURCES`/`readDurableGateUnavailable`(core 7.17.0 #709 ①② 两只通告事实窄读器,§33c)/ `WORKFLOW_PARK_TRUTH_UNREADABLE`/`WORKFLOW_PARK_NOT_PENDING`/`WORKFLOW_PARK_BINDING_BROKEN`/`WORKFLOW_PARK_REQUIRES_RUN_STORE`(四个单码常量 🔧 0.72.0 退役)/`WORKFLOW_PARK_REFUSAL_CODES`/`isWorkflowParkRefusalCode`/`readWorkflowParks`(core 7.17.0 #652 park 真相四码 + parks 三键读器,§33d)/ `ENGINE_STOP_REASONS`/`engineStopReasonToCc`(L-246 A13 停止原词映射下沉,§33g)/ `readCancelRequested`(L-230 读面,§33f);🔴 **删除两件** `TERMINAL_NOT_SUCCESS_STATUSES`/`TERMINAL_STATUSES`(随 L-247 两表分源更名成 `RUN_TERMINAL_*`,clean-cut **不留别名** —— 留一个别名等于让端可以继续按合起来的那张表读,分源就白做了,详见 §33b)。`0.67.0` 是 **934**,那批是相对 0.66.0 **七件 additive、🔴 两件删除**:additive = `CLASSIFIER_DENY_CAUSES`/`isClassifierDenyCause`/`classifierDenyCauseOf`/`classifierDenyCauseDetail`(core 7.14.0 退役 `classifierUnavailable` 之后的**拒绝面**继任读器与措辞,详见 §32b)/ `RULE_STORE_UNREADABLE_KINDS`/`isRuleStoreUnreadableKind`/`ruleStoreUnreadableDetail`(core 7.14.0 #688 C3 的规则店机制位三件,详见 §32d);🔴 **删除两件** `classifierUnavailableOf`/`classifierUnavailableDetail`(随 core 7.14.0 的 Retired keys 表整族退役,clean-cut 不留别名,详见 §32b;同批删的还有**型** `ClassifierUnavailableView`、卡位与帧位 `classifierUnavailable`、以及一条恒真的型面钉 `_askOriginWordsPin`)。`0.66.0` 是 **929**,那批是一件 additive、零删除:`readRunCostFacts`(终局成本事实的唯一读器:`costBreakdown` / `nested` 窄读 + 对账三段与两个判别位,终帧超集键与 chrome 对账臂共用它;详见 §31c);已发的 **0.65.x 十一件 additive、两件删除**:additive = `DECIDE_WORKFLOW_HOST_UNKNOWN`/`DECIDE_WORKFLOW_HOST_NOT_PARKED`/`DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED`/`DECIDE_WORKFLOW_LANE_CODES`/`readDecideReceipt`/`decideAcceptedNotResolved`/`decideRefusalFromError`(B-070 `/decide` 回执读面与三码人话,详见 §30h)/ `TERMINAL_NOT_SUCCESS_STATUSES`/`isTerminalNotSuccess`/`TERMINAL_STATUSES`/`isTerminalStatus`(L-215② 终局词汇单铸谓词,详见 §30j);🔴 **删除两件** `AUTO_MODE_BREAKER_CAUSES`/`classifierBreakerOf`(熔断族随 core 7.12.0 的 Removed(BREAKING) 整只退役,clean-cut 不留别名,详见 §30k②;同批删的还有**型** `ClassifierBreakerView` 与 `ClassifierStatusView.breaker` 一位)。`0.64.2` 是 **919**,那批是一件 additive、零删除:`readDenialLimitFallback`(限额回落卡的窄读器上公面,壳侧同判据副本退役,详见 §29③);`0.64.0` 是 **918**,那批是件①+件② 十三件 additive、零删除:`CLASSIFIER_STATUS_STATES`/`classifierBreakerOf`/`classifierStatusOf`/`classifierStatusDetail`(分类器状态面,详见 §28②)/ `THINKING_FORMATS`/`THINKING_FORMAT_WIRE_TWINS`/`THINKING_DISABLE_PROBE_ORDER`/`MODEL_PROBE_VERDICTS`/`PROBE_PROMPT`/`PROBE_MAX_TOKENS`(两个探针常量 🔧 0.72.0 退役)/`probeRequestBody`/`probeModelCapability`/`applyProbeToEntry`(模型思考能力探测,详见 §28①);`0.63.0` 是 **905**,那批是八件 additive、零删除:`projectServerGateKnobs`/`postureKnobSourceOf`/`postureSourceIsOperatorPinned`/`postureKnobDetail`/`POSTURE_SOURCE_WORDS`(S-178 三根 posture 旋钮读数,详见 §27b)/ `PERSISTED_RULE_BEHAVIORS`/`PERSISTED_RULE_BEHAVIOR_UNKNOWN`/`persistedRuleBehaviorOf`/`persistedRuleBehaviorLabel`/`revokeTargetFromPersistedRule`(三态规则身份,§27c)/ `engineIdentityOf`/`engineIdentityVerdict`/`engineIdentityChanged`/`engineIdentityChangedBy`/`ENGINE_IDENTITY_ANCHORS`(S-179 代际锚,§27d)/ `GATE_DENIED_BY_WORDS`/`gateDeniedByDetail`/`ASK_ORIGIN_WORDS`/`askOriginDetail`(门词汇 +2,§27e)/ `PERMISSION_RULE_ISSUE_CODES`/`RETIRED_PERMISSION_RULE_ISSUE_CODES`/`permissionRuleIssueDetail`(规则 lint 码表,§27f)/ `projectToolRoster`/`toolRosterNames`/`toolShimFromRoster`/`applyToolRosterDelta`(L-161 工具名册,§27g)/ `ENGINE_NOTICE_CODES`/`ENGINE_NOTICE_AUDIENCE`/`noticeAudienceOf`/`engineNoticeInCatalog`/`MCP_INJECTION_DROP_REASONS`/`readMcpInjectionDrop`(L-167 通告码册,§27h)/ `AUTO_MODE_UNAVAILABLE_CAUSES`/`AUTO_MODE_BREAKER_CAUSES`/`classifierUnavailableOf`/`classifierUnavailableDetail`(件⑧ 分类器不可用事实,§27h2);`0.62.0` 是 **869**,那批是五件 additive、**零删除**:`capForDisplay`(呈前消毒 + 封长的共用铸点,详见 §26⑦)/ `SEAT_SEND_MESSAGE_KEY_ORIGINS`(座位载荷逐键出身表,详见 §26③)/ `configureSubagentContentStore`+`subagentContentStoreConfig`+`SUBAGENT_CONTENT_STORE_DEFAULTS`(子代内容账本字节预算,测试钩 `__resetSubagentContentStoreConfigForTests` +1,详见 §26②);`0.61.0` 是 **864**,那批是三件 additive、**零删除**:`projectReadFacePosture`/`readFacePostureDetail`/`readFaceDisagreement`(S-167 READ 容纳面 operator 读器,详见 §25);`0.60.0` 是 **861**,那批是二十五件 additive、**零删除**:`readRunTerminal`/`runTerminalCode`/`runTerminalGateKind`/`runTerminalGateToolName`/`isReviewPark`/`REVIEW_PARK_GATE_KINDS` 六件终局因由读器 + `gateOutcomeOf`/`isDeniedGate`/`gateDeniedBy`/`gateApprover`/`isApprovalWindowExpiredGate`/`isDenialLimitAutoDeniedGate`/`isParkSlaExpiredGate`/`isHumanSettledGate` 八件门记录读器 + `projectWriteProtectionCapability`/`noteEngineCapsForWriteProtection`/`observedWriteProtection`/`forgetWriteProtectionReading`/`writeProtectionDoctorDetail`/`projectWriteProtectionPosture`/`writeProtectionPostureDetail` 七件写保护读面(测试钩 `__resetWriteProtectionReadingsForTests` +1)+ `readWireErrorCode` + 真机边界①的两件 `isGateParkedToolEnd`/`GATE_PARKED_ERROR_CODE` + 异源复审逼出的 `engineCapsGeneration`;`0.59.0` 是 **836**,那批是八件 additive:`RULE_OFFERS_ABSENCE_REASONS`/`DENIAL_LIMIT_KINDS` 两张闭词表再导出 + `engineCapValue` 能力位四态通用读口 + `projectSqlEngineCapability`/`observedSqlEngine`/`noteEngineCapsForSqlEngine`/`forgetSqlEngineReading`/`sqlEngineDoctorDetail` 五件 SQL 姿态读面(测试钩 `__resetSqlEngineReadingsForTests` +1);`0.58.0` 是 **828**,那批是三件 additive:`RULE_OFFER_MATCHES`/`RULE_OFFER_BATCH_MEMBER_KINDS`/`RULE_OFFER_UNCOVERED_REASONS` 三张闭词表再导出 + `RESUME_REFUSAL_CODES`/`RESUME_PLACEMENT_MISMATCH`/`resumeRefusalFromError`/`resumeRefusalContent` 四件文案铸点;`0.57.0` 是 **821**;`0.56.0`/`0.55.0` 是 **815**;已发 `0.54.0`(design/385 十件 additive 含 `AUTHORITY_ENVELOPE_TAGS` 🔧 0.72.0 退役);`0.52.0` 是 **805**(L-69⑨ 两件);`0.51.0` 是 **803**;`0.50.0` 是 **800**(S-81 五件);`0.49.0` 是 **795**;`0.48.0` 是 **794**;npm `0.47.0` 是 **790**,`0.46.0` 是 **787**,`0.44.0` 是 **783**,`0.43.1`/`0.43.0` 是 **776**,`0.42.0` 是 **771**,`0.41.0` 是 **767**,`0.39.0` 是 **766**,`0.38.0` 是 **764**;`0.37.0` 是 **753**,见 `CHANGELOG.md`) | `scripts/public-export-baseline.json` 的 `count` / `testHookCount` —— **别手抄进别处,以该文件为准** |
|
|
26
|
+
| 公开导出面 | **1275** 个运行期符号(+ **59 个测试钩,两种拼法**:35 个 `__*ForTests` + 24 个单下划线开头(22 个 `_*ForTest` + `_resetLiveQuestionStore` / `_resetUltracodePreset`) —— 两种都在 `public-export-baseline.json` 的 `testHookNames` 里、各自受棘轮管,**不在** `names` 的 1275 里。运行期 `Object.keys(dist/index.js)` 的全量 = 1275 + 59 = **1334**;只剔双下划线那 35 个会多数出 24 个来,那不是棘轮盲区;最简单的剔法是去掉所有以 `_` 开头的名字(公面运行期名没有一个以 `_` 开头);= 下一版(未发布)的值:相对 0.75.1 **+16**,两票合计 —— **CC-77 ①** 审批决断结局单源判别联合 6 件:`approvalResolutionOf` / `isApprovalDecided` / `approvalNotSentCause` / `approvalUnsettledCause` + 两张 cause 词表 `APPROVAL_NOT_SENT_CAUSES` / `APPROVAL_UNSETTLED_CAUSES`(域 3);**CC-96** 记忆 spec 读面 10 件:`readAgentMemorySpec` / `unknownMemorySpecKeys` / `unknownMemorySpecKeysNote` / `memoryConfigRefusalNoteOf` / `KNOWN_AGENT_MEMORY_SPEC_KEYS` / `PENDING_MEMORY_SPEC_KEYS` / `MAX_UNKNOWN_MEMORY_SPEC_KEYS` / `CONFIG_MEMORY_PROJECT_KEY_SPELLING` / `CONFIG_MEMORY_WRITE_SCOPE_MISMATCH` + 判别形型(域 6 / 16)。CC-89 / CC-91 / CC-92 / CC-98 四票**零值导出增减**(新臂走 `ChromeEvent` 联合与内部臂表,`tasks_expand` 退役删的是联合成员不是导出名);1065 = 0.74.5 / 0.75.0 / 0.75.1 的值:相对 0.74.4 +4 —— `isNewEngineAgentPanelCycle`(CC-87,域 4)+ `approvalOutcomeNoteOf` 与两句固定文案常量(CC-88,域 3);1065 = 0.74.5 / 0.75.0 的值:相对 0.74.4 +4 —— `isNewEngineAgentPanelCycle`(CC-87,域 4)+ `approvalOutcomeNoteOf` 与两句固定文案常量(CC-88,域 3);1061 = 0.74.3 / 0.74.4 的值:相对 0.74.2 +9 —— CC-70 / CC-71 / CC-72 / CC-73 八件 + CC-80 `lastFlagValue`,见 §2b 域 3 / 4 / 10 / 15;1052 = 0.74.2 的值:相对 0.74.1 +6 —— CC-69 六件,见 §2b 域 9;1046 = 0.74.1 的值:相对 0.74.0 +1 —— `RETRACTED_CARD_DECISION_KIND`,见 §2b 域 3;1045 = 0.74.0 的值:相对 0.73.5 +1 —— `isStaleEngineAgentPanelEnd`,见 §2b 域 4;1044 = 0.73.5 的值:相对 0.73.4 +11 —— CC-58 规模告警十一件,名单见 §2b 域 12;1033 = 0.73.4 的值:相对 0.73.3 +1 —— `TOOL_INPUT_JOIN_MAX_CALLS`,见 §2b 域 1;1032 = 0.73.3 的值:相对 0.73.2 +6 —— CC-61 六件,名单见 §2b 域 9;1026 = 0.73.2 的值(导出名零增减);= 0.73.1 的值:相对 0.73.0 +7 —— CC-56 六件 / CC-57 一件,名单见 §2b 域 3 / 15;1019 = 0.73.0 的值(导出名零增减,BREAKING 在类型面);= 0.72.14 的值:相对 0.72.13 +8 —— CC-55 八件,名单见 §2b 域 3;1011 = 0.72.13 的值:相对 0.72.12 +18 —— CC-46 八件 / CC-54 六件 / CC-53 两件 / CC-50 缺席口两件,名单见 §2b 域 3 / 4 / 9 / 10;993 = 0.72.12 的值(测试钩 45):相对 0.72.11 +4 —— CC-50 `OUTCOME_UNKNOWN_ROW_PREFIX` / `isOutcomeUnknownRowText` / `TASK_NOTIFICATION_TERMINAL_STATUSES` / `isTaskNotificationTerminalStatus`;989 = 0.72.10 的值:相对 0.72.9 +4 —— CC-41 `LEADER_RUN_STATUSES` / `LEADER_REJ_HEAD_DISPLAY_MAX` / `projectLeaderConflict` / `leaderConflictDetail`;985 = 0.72.9 的值:相对 0.72.8 +8 —— CC-30 `MCP_RECONNECT_OUTCOMES` / `MCP_RECONNECT_TRANSACTION_NOTICE` / `projectMcpReconnectResult` / `classifyMcpReconnectFailure` / `reconnectMcpServer` / `projectMcpReconnectCapability` / `mcpReconnectOutcomeDetail`、CC-39② `readAutoConsolidationArmed`;977 = 0.72.8 的值:相对 0.72.7 +6 —— CC-39③ `MEMORY_OFF` / `memoryOffDeclarationField` / `memoryOffDeclared`、CC-43 `MODEL_OUTPUT_ERROR_PREFIX` / `isModelOutputErrorText` / `isModelOutputErrorRowText`;971 = 0.72.7 的值:相对 0.72.6 +2 —— CC-42 core 7.22.0 提货 `MCP_REDIAL_OUTCOMES` / `readMcpServerRedialed`;969 = 0.72.6 的值:相对 0.72.5 +1 —— CC-40 `steerFollowIntent`;968 = 0.72.5 的值:相对 0.72.4 +6 —— CC-31 server 7.82.1 提货 `capabilities.webSearch.backend` 四态读面:`WEB_SEARCH_BACKEND_NONE` / `projectWebSearchBackendCapability` / `observedWebSearchBackend` / `noteEngineCapsForWebSearchBackend` / `forgetWebSearchBackendReading` / `webSearchBackendDoctorDetail`;962 = 0.72.3 的值:相对 0.72.2 +1 —— CC-39① `AGENT_MEMORY_WORDS`;0.72.2 相对 0.72.1 +1 —— CC-37 `noteOwnWorkflowRun`;0.72.1 相对 0.72.0 +4 —— CC-33 server 7.80.1 提货:`RESUME_CONTEXT_UNAVAILABLE` / `resumeContextUnavailableFromError` / `resumeContextUnavailableContent` / `skillBaseDirOf`;0.72.0 相对 0.71.4 −39 —— CC-32 退役批删 export-liveness 登记 retire 的 39 个零消费导出(23 常量 + 16 函数,名单见 §47);995 = 0.71.3 的值:相对 0.71.2 +9 —— CC-06 `readEffectiveReasoning` / `readEffectiveMemoryScopes` / `resumeReopenFromError` / `resumeReopenContent` / `routePairingVerdict` 五函数 + `RESUME_REOPEN_CODES` / `RESUME_ENV_FAILED` / `RESUME_TOOL_UNAVAILABLE` / `RESUME_TOOL_CONTRACT_MISMATCH` 四常量;986 = 0.71.0 的值:相对 0.70.2 −`MAX_AGENT_SKILLS` −`DECIDE_WORKFLOW_HOST_NOT_PARKED` +`projectToolRosterDelta` +`mcpEngineLegPresence`;986 = 0.70.0 的值:相对 0.69.2 **一件 additive(`readSkillsListingTruncated`,§39)、零删除**;985 = 0.69.2 的值:相对 0.69.1 **三件 additive、零删除**(CC-13 `isSubFlowSegmentEnd` / `SEGMENT_END_IDENTITY_KEYS` / `droppedWhySentence`,§38);982 = 0.69.0 未发布版的值(原排 0.68.3,因 peer 地板抬升改 minor)= 相对 0.68.2 **十七件 additive、零删除**:`fetchMcpPanel`(CC-03 补件,§36e)+ `readWorkflowResumeAdmissionIncomplete`(CC-05 core 7.18.0 #755)+ `installCoreValuePorts`/`hasCoreValuePorts`/`hasCoreValuePort`/`coreValuePortMisses`/`CORE_VALUE_PORT_NAMES` + 十读口(CC-07 core 值级端口,§36d);0.68.2 相对 0.68.1 十三件 additive:`SEMA_SEGMENT_ID_KEY`(CC-01 段身份键,§35f)/ `projectMcpPanel`+`mcpPanelLastLegDetail`+`projectMcpSection`(CC-03 `/mcp` 面板读视图,§35g)/ `resolveTextSegmentAuthority`/`createTextSegmentLedger`(L-318 `text_end` 权威段替换的判决单源 + print 形段账,详见 §35b/§35c)/ `memoryCaptureDeclarationField`/`MEMORY_CAPTURE_OFF`(L-316 会话级隐私声明的字面唯一铸点,§35d)/ `engineUrl`/`probeHealth`(L-61 件④ SDK 纯工具面原样转口,§35d)/ `AgentClient`/`isApprovalRequestFrameV1`/`isApprovalRevokeFrameV1`(L-61 存量清零:SDK **wire 面**原样转口,§35e)。`0.68.1`/`0.68.0` 是 **952**,那批是相对 0.67.2 **二十件 additive、🔴 两件删除(BREAKING)**:additive = `TERMINAL_CAUSE_KINDS`/`isTerminalCauseKind`/`RUN_TERMINAL_NOT_SUCCESS_STATUSES`/`RUN_TERMINAL_STATUSES`(L-247 终态词两表分源,详见 §33b)/ `SEMA_SUBAGENT_USAGE_PARTIAL_KEY`/`subagentUsageIsPartial`(L-244 子代下界位自有名,§33g)/ `ASK_UNRESOLVABLE_CAUSES`/`readAskUnresolvable`/`DURABLE_MANDATE_SOURCES`/`readDurableGateUnavailable`(core 7.17.0 #709 ①② 两只通告事实窄读器,§33c)/ `WORKFLOW_PARK_TRUTH_UNREADABLE`/`WORKFLOW_PARK_NOT_PENDING`/`WORKFLOW_PARK_BINDING_BROKEN`/`WORKFLOW_PARK_REQUIRES_RUN_STORE`(四个单码常量 🔧 0.72.0 退役)/`WORKFLOW_PARK_REFUSAL_CODES`/`isWorkflowParkRefusalCode`/`readWorkflowParks`(core 7.17.0 #652 park 真相四码 + parks 三键读器,§33d)/ `ENGINE_STOP_REASONS`/`engineStopReasonToCc`(L-246 A13 停止原词映射下沉,§33g)/ `readCancelRequested`(L-230 读面,§33f);🔴 **删除两件** `TERMINAL_NOT_SUCCESS_STATUSES`/`TERMINAL_STATUSES`(随 L-247 两表分源更名成 `RUN_TERMINAL_*`,clean-cut **不留别名** —— 留一个别名等于让端可以继续按合起来的那张表读,分源就白做了,详见 §33b)。`0.67.0` 是 **934**,那批是相对 0.66.0 **七件 additive、🔴 两件删除**:additive = `CLASSIFIER_DENY_CAUSES`/`isClassifierDenyCause`/`classifierDenyCauseOf`/`classifierDenyCauseDetail`(core 7.14.0 退役 `classifierUnavailable` 之后的**拒绝面**继任读器与措辞,详见 §32b)/ `RULE_STORE_UNREADABLE_KINDS`/`isRuleStoreUnreadableKind`/`ruleStoreUnreadableDetail`(core 7.14.0 #688 C3 的规则店机制位三件,详见 §32d);🔴 **删除两件** `classifierUnavailableOf`/`classifierUnavailableDetail`(随 core 7.14.0 的 Retired keys 表整族退役,clean-cut 不留别名,详见 §32b;同批删的还有**型** `ClassifierUnavailableView`、卡位与帧位 `classifierUnavailable`、以及一条恒真的型面钉 `_askOriginWordsPin`)。`0.66.0` 是 **929**,那批是一件 additive、零删除:`readRunCostFacts`(终局成本事实的唯一读器:`costBreakdown` / `nested` 窄读 + 对账三段与两个判别位,终帧超集键与 chrome 对账臂共用它;详见 §31c);已发的 **0.65.x 十一件 additive、两件删除**:additive = `DECIDE_WORKFLOW_HOST_UNKNOWN`/`DECIDE_WORKFLOW_HOST_NOT_PARKED`/`DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED`/`DECIDE_WORKFLOW_LANE_CODES`/`readDecideReceipt`/`decideAcceptedNotResolved`/`decideRefusalFromError`(B-070 `/decide` 回执读面与三码人话,详见 §30h)/ `TERMINAL_NOT_SUCCESS_STATUSES`/`isTerminalNotSuccess`/`TERMINAL_STATUSES`/`isTerminalStatus`(L-215② 终局词汇单铸谓词,详见 §30j);🔴 **删除两件** `AUTO_MODE_BREAKER_CAUSES`/`classifierBreakerOf`(熔断族随 core 7.12.0 的 Removed(BREAKING) 整只退役,clean-cut 不留别名,详见 §30k②;同批删的还有**型** `ClassifierBreakerView` 与 `ClassifierStatusView.breaker` 一位)。`0.64.2` 是 **919**,那批是一件 additive、零删除:`readDenialLimitFallback`(限额回落卡的窄读器上公面,壳侧同判据副本退役,详见 §29③);`0.64.0` 是 **918**,那批是件①+件② 十三件 additive、零删除:`CLASSIFIER_STATUS_STATES`/`classifierBreakerOf`/`classifierStatusOf`/`classifierStatusDetail`(分类器状态面,详见 §28②)/ `THINKING_FORMATS`/`THINKING_FORMAT_WIRE_TWINS`/`THINKING_DISABLE_PROBE_ORDER`/`MODEL_PROBE_VERDICTS`/`PROBE_PROMPT`/`PROBE_MAX_TOKENS`(两个探针常量 🔧 0.72.0 退役)/`probeRequestBody`/`probeModelCapability`/`applyProbeToEntry`(模型思考能力探测,详见 §28①);`0.63.0` 是 **905**,那批是八件 additive、零删除:`projectServerGateKnobs`/`postureKnobSourceOf`/`postureSourceIsOperatorPinned`/`postureKnobDetail`/`POSTURE_SOURCE_WORDS`(S-178 三根 posture 旋钮读数,详见 §27b)/ `PERSISTED_RULE_BEHAVIORS`/`PERSISTED_RULE_BEHAVIOR_UNKNOWN`/`persistedRuleBehaviorOf`/`persistedRuleBehaviorLabel`/`revokeTargetFromPersistedRule`(三态规则身份,§27c)/ `engineIdentityOf`/`engineIdentityVerdict`/`engineIdentityChanged`/`engineIdentityChangedBy`/`ENGINE_IDENTITY_ANCHORS`(S-179 代际锚,§27d)/ `GATE_DENIED_BY_WORDS`/`gateDeniedByDetail`/`ASK_ORIGIN_WORDS`/`askOriginDetail`(门词汇 +2,§27e)/ `PERMISSION_RULE_ISSUE_CODES`/`RETIRED_PERMISSION_RULE_ISSUE_CODES`/`permissionRuleIssueDetail`(规则 lint 码表,§27f)/ `projectToolRoster`/`toolRosterNames`/`toolShimFromRoster`/`applyToolRosterDelta`(L-161 工具名册,§27g)/ `ENGINE_NOTICE_CODES`/`ENGINE_NOTICE_AUDIENCE`/`noticeAudienceOf`/`engineNoticeInCatalog`/`MCP_INJECTION_DROP_REASONS`/`readMcpInjectionDrop`(L-167 通告码册,§27h)/ `AUTO_MODE_UNAVAILABLE_CAUSES`/`AUTO_MODE_BREAKER_CAUSES`/`classifierUnavailableOf`/`classifierUnavailableDetail`(件⑧ 分类器不可用事实,§27h2);`0.62.0` 是 **869**,那批是五件 additive、**零删除**:`capForDisplay`(呈前消毒 + 封长的共用铸点,详见 §26⑦)/ `SEAT_SEND_MESSAGE_KEY_ORIGINS`(座位载荷逐键出身表,详见 §26③)/ `configureSubagentContentStore`+`subagentContentStoreConfig`+`SUBAGENT_CONTENT_STORE_DEFAULTS`(子代内容账本字节预算,测试钩 `__resetSubagentContentStoreConfigForTests` +1,详见 §26②);`0.61.0` 是 **864**,那批是三件 additive、**零删除**:`projectReadFacePosture`/`readFacePostureDetail`/`readFaceDisagreement`(S-167 READ 容纳面 operator 读器,详见 §25);`0.60.0` 是 **861**,那批是二十五件 additive、**零删除**:`readRunTerminal`/`runTerminalCode`/`runTerminalGateKind`/`runTerminalGateToolName`/`isReviewPark`/`REVIEW_PARK_GATE_KINDS` 六件终局因由读器 + `gateOutcomeOf`/`isDeniedGate`/`gateDeniedBy`/`gateApprover`/`isApprovalWindowExpiredGate`/`isDenialLimitAutoDeniedGate`/`isParkSlaExpiredGate`/`isHumanSettledGate` 八件门记录读器 + `projectWriteProtectionCapability`/`noteEngineCapsForWriteProtection`/`observedWriteProtection`/`forgetWriteProtectionReading`/`writeProtectionDoctorDetail`/`projectWriteProtectionPosture`/`writeProtectionPostureDetail` 七件写保护读面(测试钩 `__resetWriteProtectionReadingsForTests` +1)+ `readWireErrorCode` + 真机边界①的两件 `isGateParkedToolEnd`/`GATE_PARKED_ERROR_CODE` + 异源复审逼出的 `engineCapsGeneration`;`0.59.0` 是 **836**,那批是八件 additive:`RULE_OFFERS_ABSENCE_REASONS`/`DENIAL_LIMIT_KINDS` 两张闭词表再导出 + `engineCapValue` 能力位四态通用读口 + `projectSqlEngineCapability`/`observedSqlEngine`/`noteEngineCapsForSqlEngine`/`forgetSqlEngineReading`/`sqlEngineDoctorDetail` 五件 SQL 姿态读面(测试钩 `__resetSqlEngineReadingsForTests` +1);`0.58.0` 是 **828**,那批是三件 additive:`RULE_OFFER_MATCHES`/`RULE_OFFER_BATCH_MEMBER_KINDS`/`RULE_OFFER_UNCOVERED_REASONS` 三张闭词表再导出 + `RESUME_REFUSAL_CODES`/`RESUME_PLACEMENT_MISMATCH`/`resumeRefusalFromError`/`resumeRefusalContent` 四件文案铸点;`0.57.0` 是 **821**;`0.56.0`/`0.55.0` 是 **815**;已发 `0.54.0`(design/385 十件 additive 含 `AUTHORITY_ENVELOPE_TAGS` 🔧 0.72.0 退役);`0.52.0` 是 **805**(L-69⑨ 两件);`0.51.0` 是 **803**;`0.50.0` 是 **800**(S-81 五件);`0.49.0` 是 **795**;`0.48.0` 是 **794**;npm `0.47.0` 是 **790**,`0.46.0` 是 **787**,`0.44.0` 是 **783**,`0.43.1`/`0.43.0` 是 **776**,`0.42.0` 是 **771**,`0.41.0` 是 **767**,`0.39.0` 是 **766**,`0.38.0` 是 **764**;`0.37.0` 是 **753**,见 `CHANGELOG.md`) | `scripts/public-export-baseline.json` 的 `count` / `testHookCount` —— **别手抄进别处,以该文件为准** |
|
|
27
27
|
| 常驻门 | 以 `scripts/gates-manifest.json` 的 `suites` 长度为准(**本档不抄这个数**) | `scripts/gates-manifest.json`;`npm test` 的名单等值门与它逐名对账 |
|
|
28
28
|
| 沿革档 | 0.29.0 起建 `CHANGELOG.md`;更早批次记账在 `src/index.ts` 文件头 + `docs/REFACTOR-LEDGER.md` | — |
|
|
29
29
|
|
|
@@ -125,7 +125,7 @@ SDK 核对「本包 import 的每个值级符号仍然导出」「`TaskStats.cos
|
|
|
125
125
|
|
|
126
126
|
> 📦 **随包 / 不随包**:npm 包只带 `dist` / `README` / `CHANGELOG` / 本档 / `LICENSE`。本档各处提到的 `docs/type-superset.json`、`scripts/*.json`、`scripts/run-*-test.mjs` 都是**仓内登记物与门,不随包发出** —— 装包的消费者找不到它们是预期;`_sema_` 超集键的**随包契约**就是本档各 §NNz 逐键处置表(键名 / 值域 / 缺席语义逐条在表里)。
|
|
127
127
|
>
|
|
128
|
-
> 全集真源 = `scripts/public-export-baseline.json` 的 `names`(**
|
|
128
|
+
> 全集真源 = `scripts/public-export-baseline.json` 的 `names`(**1275** 项;该基线只覆盖**根**入口,子路径入口 `./registry` 的名单在 §86 与 `scripts/run-sdk-registry-transit-test.mjs` A / C 段)。
|
|
129
129
|
> 本节**不逐名抄**,只给「域 → 承重导出 → 用途 → 实现锚」。承重导出 = 一个端为了让这个域干活
|
|
130
130
|
> **必须**直接调到的那几个符号;其余是它们的类型、变体与辅助位。
|
|
131
131
|
> 两个入口:根 `import { … } from '@sema-agent/client-core'`(会话运行时;`exports` 的 `.`)+ `import { … } from '@sema-agent/client-core/registry'`(云控制面原样转口,0.79.1 起;`exports` 的 `./registry`,§86);
|
|
@@ -149,31 +149,31 @@ SDK 核对「本包 import 的每个值级符号仍然导出」「`TaskStats.cos
|
|
|
149
149
|
`WorkflowsGateUnknownDenial` 四形**不在**基线里,`src/selfOrchestrationDenial.ts` 对基线贡献
|
|
150
150
|
**4** 项运行期导出(三个函数 + `SELF_ORCHESTRATION_RETRY_WITHOUT`)。
|
|
151
151
|
|
|
152
|
-
|
|
152
|
+
1275 项的内部构成(帮助端估读表大小;0.84.1 +11 函数 +4 常量(CC-210 开标签定位口 / CC-219 detach 400 纯判定 / CC-213 服务端自铸码受众表 + 事实读器 / CC-214 按码派发口 + 派发表 / CC-225 停泊决断 422 读口 + 措辞 + 码优先判定 + 码常量 / CC-229 撤销动词 + 措辞 + 出路句 + 判据本体 + 码常量);0.84.0 +8 函数 −7 常量 −19 函数(CC-194 B 半登记读数五口 / CC-185 读目录授权结论通告读口 / CC-206 `hands` 段读口与措辞两口;CC-223 收回 0.71.3 预告的 26 个 `export *` 放大件,🔧 0.84.0 退出公面,逐名见 CHANGELOG 0.84.0);0.83.5 +1 函数(CC-204 字符面标记位置读口 `displayUntrustedMarks`);0.83.4 +4 函数(CC-205 `<system-reminder>` 剥离 / 解包两口;CC-203 座位过境口;CC-201 清「用户关卡」记号口);0.83.2 +15 函数 +4 常量(CC-193 姿态放行谓词 / CC-195 强制词闭集 + 成员判据 + 读口 + 措辞 / CC-194 缺席行判定 11 函数 + 3 常量);0.83.1 +10 函数 +6 常量(CC-112 展示层安全出口 `displayUntrusted` / CC-117 会话规则记录无损判定 + 措辞单源 + 五词成因闭集 / CC-174 插件 hook 每轮计划 + 查询口 + 事件判定口 + 四只措辞口 + 五张闭集);0.83.0 −3 函数(联网搜索旧三读口 `webSearchFromEnv` / `webSearchFromSettings` / `resolveWebSearch` 🔧 0.83.0 退出公面)+1 函数(CC-175 `terminalReasonForResult`);0.82.7 +5 函数(CC-182 每请求联网搜索配置三态判决:段判决 / env 判决 / 两车道合成 / 措辞单源 / endpoint 显示形);0.82.5 +5 函数 +1 常量(CC-169 print 车道 init 帧工具面:流包装器 / 判定闸 / 名册信号分类口 / 判定口 / 留痕措辞单源 + 等待上界常量);0.82.2 +1 函数(CC-164 云控制面有效配置回体措辞单源 `cloudEffectiveNotices`);0.82.1 +15 函数(CC-154 续跑折叠码读口 + 措辞 / CC-163 文件历史捕获读口六口 / CC-151 模型身份可解析判据五口 / CC-161 自定义代理载荷作废重投口 / 决断失败码「门还在」判定;测试钩 +1);0.82.0 +17 函数 +1 常量(CC-146 `/rewind` 代码档与对话档可用性读口投影 + 三口读账 + 两只判据 + 三句措辞 / CC-150 额度投影三口 / CC-152 装配期无手两口 / CC-154 取码单源 + 折叠码常量 / CC-156 坏档行坐标读口 + 措辞);0.80.0 +1 常量 +10 函数(CC-133 结算词表镜像 `SETTLEMENT_KIND_WORDS` + 五函数 / CC-134 三函数 / CC-132 两函数);0.79.0 +8 常量 +21 函数 +1 类(CC-74 MCP 状态面两张词表 + 九函数 / CC-110 `approvalIsMandated` + `mandatedApprovalDetail` / CC-116 · 118 · 123 `APPROVER_POSTURE_BYPASS` + `REQUEST_LANES` + 三函数 / CC-125 拒因两面四常量 `HITL_POLICY_DENY_MESSAGE` `APPROVAL_DENY_SETTLED_BY_WORDS` `SEMA_DENIAL_KIND_KEY` `CC_TOOL_DENIAL_KINDS` + 四函数 / CC-128 会话 bundle 面转口 `pushSessionBundle` `pullSessionBundle` `importSessionBundle` + 错误类 `APIError`;测试钩 +1);0.78.1 +2 常量 +9 函数(CC-113 displayBody / CC-97 b 五动词 + 判官 + 覆盖面判词 / CC-121 readSubmitWiringManifest);0.77.0 +2 常量 +2 函数(CC-101)+ 5 常量 +12 函数(CC-105 / CC-103;测试钩 +1);0.76.1 +1 常量 +4 函数(CC-36)+ 13 函数(CC-102;测试钩 +2)+ 1 常量 +20 函数(CC-97a;测试钩 +2)+ 2 函数(身份快照助手上公面);0.76.0 +8 常量 +8 函数(CC-77 ① 2+4 / CC-96 6+4);0.74.5 +2 常量 +2 函数(CC-87 / CC-88);0.74.3 +2 常量 +7 函数(CC-70 / CC-71 / CC-72 / CC-73 / CC-80;测试钩 +1);0.74.2 +6 函数(CC-69;测试钩 +1);0.74.1 +1 常量(CC-67);0.74.0 +1 函数(CC-66);0.73.5 +8 常量 +3 函数(CC-58);0.73.4 +1 常量(CC-34);0.73.3 +6 函数(CC-61;测试钩 +1);0.73.1 +2 常量 +5 函数(CC-56 / CC-57;测试钩 +1);0.72.14 +1 常量 +7 函数(CC-55);0.72.13 +4 常量 +14 函数(CC-46 / CC-54 / CC-53 / CC-50 缺席口);0.72.12 +2 常量 +2 函数(CC-50);0.72.10 +2 常量 +2 函数(CC-41);0.72.9 +2 常量 +6 函数(CC-30 / CC-39②);0.72.8 +2 常量 +4 函数(CC-39③ / CC-43);0.72.7 +1 常量 +1 函数(CC-42);0.72.6 +1 函数(CC-40);0.72.5 +1 常量 +5 函数(CC-31);0.72.3 +1 常量(CC-39①);0.72.2 +1 函数(CC-37);0.72.1 +1 常量 +3 函数(CC-33);0.72.0 −23 常量 −16 函数(CC-32 退役批);0.71.3 +4 常量 +5 函数(CC-06);0.71.0 −2 常量 `MAX_AGENT_SKILLS` / `DECIDE_WORKFLOW_HOST_NOT_PARKED` +2 函数 `projectToolRosterDelta` / `mcpEngineLegPresence`;0.70.0 起 +1 函数;0.69.2 起 +3:常量 1 / 函数 2):**348** 项是 `SCREAMING_SNAKE` 常量数据表/词汇表
|
|
153
153
|
(矩阵、键集、env 名、锚串)而非可调用物;**7** 项是 PascalCase 运行期值
|
|
154
154
|
(`ControlRouter` / `ControlSafetyError` / `HitlBridge` / `HitlSafetyError` / `DecideTransportRetryExhaustedError` / `APIError`);
|
|
155
155
|
**34** 项是 `*For(sessionKey, …)` 的 per-session 变体(0.84.0 −3:`notePlanReviewAnsweredFor` / `planReviewArmedKeyFor` / `waitForGateArmedFor` 🔧 0.84.0 退出公面;0.72.0 −4:`clearArmedGateFor` / `onGateArmedFor` / `registerArmedGateFromQuestionIdFor` / `notePlanReviewAnsweredIfDecisiveFor` 退出公面)(§6;其中 `engineNamespaceKeyFor` 是命名巧合 —— 参数是 baseUrl 不是 sessionKey,见域 14)。
|
|
156
156
|
|
|
157
|
-
### 2b. 域图(16 域,逐域计数之和 =
|
|
157
|
+
### 2b. 域图(16 域,逐域计数之和 = 1275)
|
|
158
158
|
|
|
159
159
|
| # | 域 | 名数 | 承重导出 | 用途 | 实现锚 |
|
|
160
160
|
|---|---|---|---|---|---|
|
|
161
161
|
| 1 | **适配内核(下行主链)** | 69 | `handsSeamReadingOf` / `handsSeamDetail`(0.84.0 CC-206:接线回执 `hands` 段三态读口 + 措辞单源,「没有自带工具」那一句与 `handsMountedDetail` 同句首句尾,两者不是同一个事实;§107)· `terminalReasonForResult`(0.83.0 CC-175:结果帧 CC 键 `terminal_reason` 的读口,与铸点同一只判据,给端自拼的结果帧与旧转录;§100)· `handsMountedFromManifest` / `handsMountedDetail`(0.82.0 CC-152:装配期「这一 run 有没有手」三态判据 + 措辞单源,读 `wiring_manifest` 名册的 `mountedBy`;§92)· `readSubmitWiringManifest`(0.78.1 CC-121:非流式提交 200 体 `TaskResult.wiringManifest` 的三态读口,view 与流式腿 chrome 臂同一张;§83)· `TOOL_INPUT_JOIN_MAX_CALLS`(0.73.4 CC-34:终帧拒绝清单第三键的本流快照上限;§66)· `OUTCOME_UNKNOWN_ROW_PREFIX` / `isOutcomeUnknownRowText`(0.72.12 CC-50:第三条中性终局行「结局不知道」,读结果帧 `_sema_outcome`;§59)· `MODEL_OUTPUT_ERROR_PREFIX` / `isModelOutputErrorText` / `isModelOutputErrorRowText`(0.72.8 CC-43:runStream 第二条中性臂 —— core malformed tool-call 一族的行身份;§55)· `readEffectiveReasoning` · `readEffectiveMemoryScopes`(0.71.3 CC-06:终帧 `_sema_effective_reasoning` / `_sema_effective_memory_scopes` 的窄读器,§45)· `isSubFlowSegmentEnd` · `SEGMENT_END_IDENTITY_KEYS` · `droppedWhySentence`(0.69.2 CC-13:三件出公面,§38)· `adapt` · `createWireToCcAdapter` · `runStream` · `eventToSdkMessage` · `terminalToSdkResult` · `SEMA_SEGMENT_ID_KEY`(0.68.2 CC-01:committed assistant 文本行顶层段身份键的唯一字面量出处,壳只读)· `projectMcpSection`(0.68.2 CC-03:`wiring_manifest.mcp[]` 与 `/mcp` 面板 `lastLegMcp.mcp[]` 共用的同一只条目读器)· `readRunCostFacts`(0.66.0:终局成本事实的**唯一读器** —— `TaskStats.costBreakdown` / `nested` 逐键窄读 + 对账三段(own/nested/compaction)与两个「没定价」判别位;终帧的两个超集键与 chrome 臂 `run_cost_reconciled` **共用它**,两面不会各算各的,详见 §31c)· `TERMINAL_CAUSE_KINDS`/`isTerminalCauseKind`(0.68.0 / L-247:**core 终局因由**闭集,四词 `completed|failed|blocked|paused`)· `RUN_TERMINAL_NOT_SUCCESS_STATUSES`/`isTerminalNotSuccess`/`RUN_TERMINAL_STATUSES`/`isTerminalStatus`(L-215② 终局词汇的**单铸谓词**,0.68.0 随 L-247 **两表分源**更名 —— `killed` 属 server run 行状态面、`paused` 属 core 因由面,合成一张会让两边加词时都读不出该改哪儿;`blocked` 是 agent 自报终态,`suspended`/`needs_review` 刻意不在表里,详见 §33b / §30j)· `SEMA_SUBAGENT_USAGE_PARTIAL_KEY`/`subagentUsageIsPartial`(0.68.0 / L-244:子代用量下界位的**自有名**与唯一判据,与终帧 `_sema_usage_lower_bound` 分名,详见 §33g) · `turnUsageToModelUsage` · `isRunStreamActive` · `ADAPTER_DIVERGENCES` · `readRunTerminal` / `runTerminalCode` / `runTerminalGateKind` / `runTerminalGateToolName` / `isReviewPark` / `REVIEW_PARK_GATE_KINDS`(0.60.0 / engine ≥7.64.0:一次 run **怎么结束的**唯一读器 —— 终局从八个平面键换成一条带标因由 `terminal`,四臂 + `unknown` 防御臂 + `plane` 两代字节标;🔴 不认识的终态词绝不折成成功、本包不提供「因由→五词 status」的兼容投影,详见 §24b)| 引擎 SSE `AgentEvent` → 端要渲的**双面输出**:transcript(`SDKMessage`)+ chrome(瞬态 `ChromeEvent`)。**本包存在的理由** | `src/adapt.ts`、`src/adapt/{arms,wireShapes,panelTasks}.ts`(经 `adapt.ts` 再导出)、`src/adapter/runStream.ts`、`src/adapter/downstream/*`、`src/adapter/types.ts`、`src/runTerminal.ts` |
|
|
162
162
|
| 2 | **seam 公共契约** | 4(其余为 type-only) | `CHROME_ARMS` · `deriveTranscriptId` · `snapshotSegmentIdentity` / `snapshotIsSubFlow`(0.76.1:身份四键一次性快照助手,投影口与 adapt 侧全部臂的唯一身份读点;§77)| 公共词汇 + **id 确定性不变量**(同一条流重放 ⇒ 同一串 id)。`CHROME_ARMS` = 端「我要消费哪些 chrome 臂」的对照清单 | `src/seam.ts` |
|
|
163
|
-
| 3 | **HITL 决断卡链**(§4/§5 主战场) |
|
|
163
|
+
| 3 | **HITL 决断卡链**(§4/§5 主战场) | 214 | `isCodeClassifiedGateFailure`(0.84.1 CC-225:这枚决断失败码自己说清了处置、失败文字不许再按「门已决」词表扫 —— `isGateStandingErrorCode` 的两码 ∪ 422 `parked_resume.startup_failed`;§108)· `removeRefusedSessionRules` / `sessionPolicyRemovalNotice` / `isEngineRefusedToolName`(0.84.1 CC-229:会话规则记录里引擎会拒启的条目的窄撤销动词 + 八臂措辞单源 + 引擎准备期按名字拒启的判据本体,比 `sessionPolicyDeliverable` 的 `legacy_tool_name` 判词宽;撤销动词必交这台部署一跑的工具名册,名册里的名与别名不撤;§108)· `toolPermissionRequestAskBits` / `clearPlanReviewUserDismissals`(0.83.4 CC-203 / CC-201:卡请求 → 座位请求的四位过境口,与卡请求同一把窄读;会话换代时清「用户关卡」记号;§104)· `askSurvivesPosture` / `readApprovalMandate`(0.83.2 CC-193 / CC-195:常驻姿态下「这一张卡能不能由姿态答掉」三态谓词;卡上强制词读口,缺席答缺席;§102)· `sessionPolicyDeliverable` / `sessionPolicyWithheldNotice` / `SESSION_POLICY_WITHHELD_WHY`(0.83.1 CC-117:一批规则串能不能无损写进会话规则记录 —— 整批可送才送、五词成因闭集、每词一句措辞单源;宿主侧那一份的继任;§101)· `isPolicyRefusedGate` / `denyAttributionRefusalFromError` / `denyAttributionRefusalContent` / `removalConsequenceLineForBehavior` / `ruleRemovalBehaviorOf`(0.80.0 CC-133 · CC-132:策略拒谓词 + 归因键三码读口与人话 + 删除规则后果句铸点与闭集读口;§87)· `HITL_POLICY_DENY_MESSAGE` / `APPROVAL_DENY_SETTLED_BY_WORDS` / `readApprovalDenySettledBy` / `SEMA_DENIAL_KIND_KEY`(0.79.0 CC-125:deny 收口帧按 `settledBy` 分两串的冻结句、决断对象归因位的两词可达子集与只认自有数据属性的读器、分类词信封键名;§85)· `approvalIsMandated`(0.79.0 CC-110:审批卡「清不掉」判据口,帧位 ∨ 寄存行缺席词两条腿一个真源;§85)· `readSessionPolicy` / `tightenSessionPolicy` / `tightenedSessionRules` / `classifySessionPolicyFailure` / `sessionPolicyTightenNotice` / `SESSION_POLICY_RULE_FIELDS` / `SESSION_POLICY_TIGHTEN_UNKNOWN_WHY`(0.77.0 CC-105:会话策略窄读 + 收紧编排五臂判别联合)· `writePersistedRule` / `PERSISTED_RULE_WRITE_BEHAVIORS` / `PERSISTED_RULE_WRITE_REFUSAL_CAUSES` / `PERSISTED_RULE_WRITE_UNKNOWN_REASONS`(0.77.0 CC-103:持久规则单步写面,词表派生不手抄;§79)· `persistedRulesWriteAvailable`(0.76.1 CC-102:单步写入口便利口,只派生自写键自己的四态,不与撤销面那只合取;§77)· `approvalResolutionOf` / `isApprovalDecided` / `approvalNotSentCause` / `approvalUnsettledCause` / `APPROVAL_NOT_SENT_CAUSES` / `APPROVAL_UNSETTLED_CAUSES`(CC-77 ①:「一次审批决断最后怎么了」的单源判别联合 `decided` / `not_sent` / `unsettled`,两条腿的结局对象一次判别;既有结局型面一字不动)· `approvalOutcomeNoteOf` / `APPROVAL_NOTE_RETRACTED_DETAIL` / `APPROVAL_NOTE_EDIT_REFUSED_DETAIL`(0.74.5 CC-88:审批结局便签单源;§73)· `decideReceiptReopen` / `suspendedReopenOf`(0.74.3 CC-73:reopen 族第二臂;§71)· `RETRACTED_CARD_DECISION_KIND`(0.74.1 CC-67:卡口无决断收口;§69)· `planReviewOutcomeTail`(0.73.1 CC-57:outcome 尾句六态单铸点;投递口闩;§63)· `readLivePendingRows` / `suspendedSubagentAsks` / `countApprovalsAwaitingDecision` / `createSuspendedAskTracker` / `livePendingRowToApprovalFrame` / `surfaceSuspendedAskAndRespond` / `surfaceEditRefusedOnBlindAsk` + `EDIT_REFUSED_ON_BLIND_ASK_WARN_TEXT`(0.72.14 CC-55:悬挂的流内 ask 读面 / 视图 / 去重账 / 决断口;§61)· `planReviewCardOptions` / `planReviewChoiceFromAnswer` / `versionSupportsPlanReviewModeAfter` / `isPlanReviewModeAfter` + `PLAN_REVIEW_APPROVE_AUTO_LABEL` / `PLAN_REVIEW_APPROVE_MANUAL_LABEL` / `PLAN_REVIEW_MODE_AFTER_WORDS` / `PLAN_REVIEW_MODE_AFTER_MIN_ENGINE`(0.72.13 CC-46:plan_review 批准后模式 `permissionModeAfter` 发口与三选卡双闸;§60)· `makeHitlCanUseTool` · `HitlBridge` · `findPendingForTask` · `readDecideReceipt`/`decideAcceptedNotResolved`/`decideRefusalFromError`(B-070:`/decide` 200 = **投递受理**不是「门已解决」;`executionOutcome` 缺席 = 未知,详见 §30h) · `HitlSafetyError` · `bridgeAskUserQuestionGates` · `surfaceToolApprovalFrameAndRespond` / `surfaceFsApprovalAndDecide` · `readToolApprovalRespondAck` · `installApprovalCardPort(For)` · `installHitlHostSurface(For)` · `armPlanReviewApproval` · `reopenPlanReviewCard` · `decidePlanReview` · `startApprovalsFeed` · `pendingRowIsOwnedByThisSession` · `approvalCallKey`/`liveFrameCallKey`/`planReviewQuestionId` · `registerArmedGateFor`/`wasGateArmedFor` · `waitForGateArmed`/`onGateArmed`/`gateArmedWaitMs`(#244 F1 呈现回执事件源) · `planReviewArmedKey`/`notePlanReviewAnswered`/`notePlanReviewAnsweredIfDecisive`(A-024.4 plan 呈现分代;`waitForGateArmed` / `planReviewArmedKey` / `notePlanReviewAnswered` 三只的 `*For` 变体 0.84.0 退出公面) · `toolEndOutputText` · `waitForParkRowBirth` · `classifyAskParkRows` / `askParkRowArm` / `classifyAskParkChainFailure` · `readDecisionNoteAudit` / `decisionNoteAuditLine` · `resumeRunningOptions` / `resumeChoiceFromLabels` · `persistedRulesLaneAvailable`/`persistedRulesGovernanceAvailable` · `classifyRulesFailure` · `listAllPersistedRules` · `classifySkippedReason` · `readRulePersistOutcome`(#244 F2:persist-ack 读口与 `readToolApprovalRespondAck` 合成一处) · `parseLocalAllowRule`(durable 腿本地落规则窄化骨架,谓词经 `LocalAllowRuleDeps` 注入) · `readToolApprovalRespondRefusal`(#225 件5,0.42.0:respond 抛错的结构化原文读口 —— 三位各自防御读、各自缺席不铸、**三位皆缺席时整只返 `undefined`**;原样交还零加工,UNTRUSTED-for-display)· `installEditedRuleTextPrechecker` / `hasEditedRuleTextPrechecker` / `precheckEditedRuleText`([5076] 转出口,0.42.0:core 5.57.0 `precheckEditedRuleText` 的**端口注入形** —— 类型面 + 注入口 + 诚实缺席读口。🔴 **不是** value 级 re-export,理由见 §7 缺口 **P-34**;未装 ⇒ 返 `undefined`,绝不编一个 `{ok:true}`)· `RULE_NOT_SENT_WARN_TEXT` + `RULE_NOT_SENT_REJECTED_WARN_TEXT`(#334,0.43.0:人在卡上按下的「不再询问」被整条丢弃时的诚实告知(文案两句;发告知的两只函数 0.84.0 起是包内件)——**两条刻意分开**:前者=**引擎能力位未确认**(换台引擎/等探测就好),后者=**这次选择没过包内表核/互斥核**(表外文本/坏下标/两臂同场,换引擎也不会变) —— 编辑臂 `respondFreeFormRules` 与批臂 `respondBatchRuleOffers` 两条同形存量共用一条,与 `surfaceRememberNotApplied` 同族纪律:决断照送、只是规则没存,静默丢掉用户明确意图 = 让人以为功能坏了)· `projectCrashConverged`(L-38,0.49.0:`/v1/approvals` additive 键 `crashConverged` 的分桶投影 —— 崩溃收敛的孤儿审批读面,**缺席 ≠ 空数组**、分桶恰一个合取、坏行丢弃并计数,详见 §12;同批把 `ApprovalsResourceLike.list()` 的返回位 additive 放宽成 `ApprovalsListEnvelope`,老形 `{pending}` 仍可赋值)· `readRuleOffers` / `readRuleOfferSupply`(L-103/[C228],0.57.0 additive 导出:「不再询问」候选两代 wire 键的窄读器**公面化** —— 此前只经卡端口出包,不走卡端口架构的宿主只能自己重铸一把,而它承载的是兑付安全判据(原始下标不前移/逐条丢坏/闭集 kind/两代取舍序),详见 §20)· `RULE_OFFERS_ABSENCE_REASONS` / `DENIAL_LIMIT_KINDS`(0.59.0 / sdk 8.3.0 提货:`ruleOffersAbsence` 三词与 `denialLimitFallback.limit` 二词的**运行期**闭词表再导出 —— 与 0.58.0 那三张同一条纪律:端拿它做判定别再手抄字面量。⚠️ **本包自己不拿这两张表做窄读判定**(两处都按开集透传,词表属主是 core、server 已按闭集拒过),再导出只是给端的 `switch` 一份可数的表,端仍必须带 `default` 臂,详见 §23a)· `DecideTransportRetryExhaustedError`(Inkglow-1085 P0a:decide 出站瞬断重试耗尽的 typed 判别 —— HitlBridge 内建单次退避重试,耗尽走重呈臂不判死 turn;端一般只消费行为,不需要 instanceof) · `gateOutcomeOf` / `isDeniedGate` / `gateDeniedBy` / `gateApprover` / `isApprovalWindowExpiredGate` / `isDenialLimitAutoDeniedGate` / `isParkSlaExpiredGate` / `isHumanSettledGate`(0.60.0 / engine ≥7.64.0:`tool_end.gate` 整条门记录的窄读器 + 判定谓词 —— 取代退役的四个正交词 `settledBy`/`resolution`/`autoDenied`/`approver`。🔴 **判定归包**:「是不是审批窗自己走完的拒绝」旧形上是端各自拼的两键合取,而三条窗词现在分得开、合并读回去等于把刚修好的判别力扔掉;⚠️ 公面型一律带 `View` 后缀 —— 本文件的 `GateOutcome`(决断腿结局)与 sdk 的 `GateOutcome`(引擎门记录)**同名不同义**,详见 §24c)· `isGateParkedToolEnd`(「这次调用没在这里结算」的**第二形**谓词:gate 缺席 + `errorCode:"gate.parked"`;端判这件事必须与 `isApprovalWindowExpiredGate` **两形合读**) · `readWireErrorCode`(B-037 候包件②:decide/取件失败上引擎 wire 机器码的单源读口,结构视图读不 `instanceof`;与本包铸的 `code` 是两个命名空间,详见 §24g)| suspended→decide→resume 环。🔴 **D-1 两元组 verbatim 回显**是字节级断言的安全不变量,端**不许重实现它的任何一段**。🔴 键空间边界(web [C1] d3 拦截):`gateIdentity` 四常量两函数只覆盖 HITL questionId/callKey 空间;seat 的 `TOOL_PERMISSION_REQUEST_ID_DOMAINS`(`plan:` 等)是另一键空间,**两者绝不合并**(合并=座位校验器静默拒全部 plan-review 卡) | `src/hitl/hitlBridge.ts`、`toolApprovalWire.ts`、`askGateWire.ts`、`planReviewWire.ts`、`hitlHostSurface.ts`、`gateIdentity.ts`、`armedGateRegistry.ts`、`parkOwnership.ts`、`parkResolver.ts`、`approvalsFeed.ts`、`frameRouter.ts`(**只挑名导出** `toolEndOutputText`/`ENGINE_ABORT_TOOL_RESULT`/`HITL_REJECT_MESSAGE`/`HITL_INTERRUPT_MESSAGE_FOR_TOOL_USE`)、`parkRowBirthWait.ts`、`approvalDecisionNoteAudit.ts`、`askParkRowRouting.ts`、`resumeRunningCard.ts`(#265 上收的判定层)、`persistedRulesWire.ts`、`localAllowRule.ts`(#244 F2 规则侧)、`crashConverged.ts`(L-38 崩溃收敛读面)、`sessionPolicyDeliverable.ts`(0.83.1 CC-117 会话规则无损判定)、`askSurvivesPosture.ts`(0.83.2 CC-193 姿态放行谓词)、`src/gateOutcome.ts` |
|
|
164
164
|
| 4 | **子代 wire + 面板侧信道台账** | 107 | `readEngineAgentRegistry` / `isEngineAgentRegistryListingSuperseded` / `engineAgentRegistryReadingOf` / `engineAgentRegistryKeyOf` / `engineAgentRegistryRowsMissingFromHost`(0.84.0 CC-194 B 半:后台代理登记读口 + 取代判定 + 归类口 + 登记键桥 + 补行谓词,宿主据此给缺席行回收入参的 `registry` 位填真读数;§107)· `isEngineAgentAbsentRow` / `engineAgentAbsenceMarkOf` / `engineAgentAbsenceClockStopMs` / `engineAgentPanelEventClearsAbsence` / `engineAgentRowCountsAsRunning` / `tallyEngineAgentRows` / `engineAgentTurnSweepSettles` / `reapEngineAgentAbsentRows` / `engineAgentAbsenceTtlDueAtMs` / `engineAgentAbsenceDroppedLine` / `engineAgentTerminalAfterDropLine` + `ENGINE_AGENT_ABSENT_ROW_TEXT` / `ENGINE_AGENT_ABSENCE_TTL_MS` / `ENGINE_AGENT_REGISTRY_READINGS`(0.83.2 CC-194:后台子代缺席行的判定 / 计数 / sweep 豁免 / 回收 / 措辞单源,回收只在后台代理登记确认离场时;§102)· `isNewEngineAgentPanelCycle`(0.74.5 CC-87:新周期单源判据;§73)· `resolveEnginePanelTaskId` / `MAX_HELD_WIRE_TICK_BEATS` / `clearEnginePanelTaskResidentByWire`(0.74.3 CC-70:子代身份归一读口、缓一拍节拍上限、按 wire id 清常驻标(前代终态不清当代);§71)· `isStaleEngineAgentPanelEnd`(0.74.0 CC-66:面板 end 的周期身份判据;§68)· `subscribeEngineAgentPanelAbsence` / `publishEngineAgentPanelAbsence`(0.72.13:fleet 行缺席上报的**独立订阅口** —— 不上主通道,老消费者结构上收不到;§60 S-5)· `tailEngineSubagent` · `installSubagentActivitySink` · `installSubagentTailMetaSink`(#280 件2:tail meta 帧发布口,`contentFrames` 判别位载体)· `stopEngineTask` + `classifyTaskStopConflict` · `fetchEngineSubagentReport` · `steerEngineSubagent`(0.32.0 未发布 #280 件A:additive 第三参 `childTaskId` —— 端有行上下文时**应当**传,传了就走「台账优先 / 缺席即诚实缺席 + 缺席留痕」的 Q3 口径,与 tail·taskOutput·subagentOutput 三腿同姿势、与孪生 resume 腿共用同一个 `resolveOwnerRunId` 判据;**不传**则逐字维持旧行为=回落在飞 run)· `resumeSettledSubagent` + `resolveSubagentResumeContext` + `resolveOwnerRunId` + `classifySubagentResumeFailure` + `subagentResumeAvailable`(#242 批 2 A-028.7:resume 判定半场上收,与 steer 孪生同居;取址三态 = 台账有行用行值 / 指名了行但台账缺席则**诚实缺席绝不回落在飞 run** / 没指名行才回落。出路文案归端)· `recordSubagentOwnerFromProgress` + `getBgParentRunOwner`(A-028.6:「子代 → 宿主 run」**单表**,宿主 run 必须由持 stream-local 值的调用方显式传入,包内绝不从 `activeEngineRunId()` 推断)· `auditRetainWithoutWake`([4000] Q5:引擎宣示 `subagentResume` + 本端在付 `retainSubagentSessions` + 端未实现 `wakeSubagent` ⇒ 响亮一条;`CLIENT_VERBS.wakeSubagent` 维持 fail-soft)· `subscribeSubagentContent` · `subscribeEngineAgentPanel` · `publishQuestionFrame` / `respondToQuestion` · `configureSubagentContentStore` / `subagentContentStoreConfig` / `SUBAGENT_CONTENT_STORE_DEFAULTS`(0.62.0:子代内容账本的**字节预算** —— 此前只有条数帽而单条无上限,一条 base64 工具结果就能让一个子代槽吃到十几 MB;越限从最早的内容开始丢并留一条可渲染的 `truncated` 记录,总帽淘汰整条最久未用的账本。配置面 fail-loud,详见 §26②)| 驱动与观测委派子代;经 module 级台账喂活体 agent/task 面板。全部**能力位 gate**(§5b) | `src/subagent/*.ts`、`src/subagentContentStore.ts`、`src/engineAgentPanelStore.ts`、`src/engineAgentAbsence.ts`(0.83.2 CC-194 缺席行判定与措辞)、`src/agentSession/engineAgentRegistryRead.ts`(0.84.0 CC-194 B 半登记读口)、`src/engineInlineTaskStats.ts`、`src/engineToolLabelStore.ts`、`src/liveQuestionStore.ts` |
|
|
165
165
|
| 5 | **fleet 投影** | 38 | `displayUntrustedMarks`(0.83.5 CC-204:同一只出口另报每一枚字符面标记的 UTF-16 区间,`text` 与同选项的出口逐字节同;§105)· `displayUntrusted`(0.83.1 CC-112:wire 派生文本上屏前的合成出口三端单源 —— 凭据两网 ∘ 字符三网,选项按载体选;本域 `escapeDisplayControlChars` / `collapseLabel` / `capForDisplay` 三只旧口改由同一只字符面引擎实现、输出逐字节不变,字符集窄于新口默认;§101)· `createFleetLedger` · `projectTasks` · `projectWorkflows` · `projectFleetAgentRows` · `readEngineActiveBgTasks` · `FLEET_TASK_VIEW_KEYS` · `escapeDisplayControlChars`(不可见字符可见化,行标签/描述消毒的共享底座)· `capForDisplay`(0.62.0:呈前**消毒 + 封长**的共用铸点 —— 先转义、后按转义结果封长,截点避开半截转义 token 与合法代理对;本包该族四处此前各写一份、其中三份顺序是反的,详见 §26⑦) | 老 `fleetClient` 那一刀的成品:**帧体归库、连接归端** —— 端持 SSE 连接,库做行投影 + 保留台账 | `src/fleet/fleetProjection.ts`、`src/fleet/fleetLedger.ts`、`src/fleetAgentPanelProjection.ts`、`src/fleetTaskDesc.ts`、`src/displayUntrusted.ts`(0.83.1 CC-112:展示层安全出口单源,本域三只旧口的字符面引擎) |
|
|
166
166
|
| 6 | **请求装配(上行唯一构造口)** | 30 | `REQUEST_LANES` / `APPROVER_POSTURE_BYPASS` / `approverPostureDeclarationField` / `taskRequestOmissionCauseDetail` / `parseMaxCostUsd`(0.79.0 CC-116 · 118 · 123:第三条车道清单、审批姿态声明的唯一铸点与意图位片段、回执成因人话、花费上限文本解析;§85)· `assembleTaskRequest` / `taskRequestSeatOf` / `TASK_REQUEST_OMISSION_CAUSES` / `UPSTREAM_ABSENT_REQUEST_INTENTS`(0.77.0 CC-101:逐键去向回执 + 座位读数 + 成因词表 + 上游无对位表;§79)· `readAgentMemorySpec` / `unknownMemorySpecKeys` / `unknownMemorySpecKeysNote` / `memoryConfigRefusalNoteOf` / `KNOWN_AGENT_MEMORY_SPEC_KEYS` / `PENDING_MEMORY_SPEC_KEYS` / `RETIRED_MEMORY_SPEC_SINGULAR_KEY` / `MAX_UNKNOWN_MEMORY_SPEC_KEYS`(CC-96:`agents[].memory` 记忆 spec 的三态读口与闭白名单判官 —— 未列键拒掉的是**整只 agent 定义**)· `MEMORY_OFF` / `memoryOffDeclarationField` / `memoryOffDeclared`(0.72.8 CC-39③:`memory:"off"` 请求级整面关的意图位片段;§55)· `buildTaskRequest` · `REQUEST_FIELD_MATRIX` · `unregisteredRequestKeys` · `applyLiveRequestDefaults` · `taskNotificationToPrintFrame` | 两条车道(`interactive`/`print`)出站请求的**唯一**构造器;`unregisteredRequestKeys` 是可执行门 —— 端偷带一个未登记键上 wire 就红 | `src/request/taskRequest.ts`、`src/request/printNotification.ts` |
|
|
167
167
|
| 7 | **通知与 outstanding 台账** | 49 | `noteOwnWorkflowRun`(0.72.2 CC-37:own 台账显式登记口,adapter workflow lane 门在 own-run 正向证明下同拍调;§49)· `installNotificationQueuePort` · `normalizeTaskNotification` · `taskNotificationDedupKeyFromWire` · `registerOutstandingBgTask` / `registerOutstandingWorkflowRun` · `notificationQueuePortMisses` · `subscribeOutstandingWorkflows` · `outstandingDeliverableWorkflowCount` | `task_notification` 归一 + 去重 + 投递进宿主命令队列的**一把闸**;`outstandingDeliverableWorkflowCount()` 是 headless `-p` 的**退出门** · `classifyPeerNotification` / `renderPeerFrameTranscriptText` / `parsePeerFrameText` / `peerFrameDisplayName` + 三张闭集表(design/385,0.54.0:同一条 `task_notification` 车道上三条**引擎注入帧**的类型化投影 —— 判别位=载体在场而非 summary 文本,详见 §17) | `src/notifications.ts`(11 个 module 台账) |
|
|
168
|
-
| 8 | **工具结果卡** |
|
|
168
|
+
| 8 | **工具结果卡** | 28 | `findSystemReminderOpenTag`(0.84.1 CC-210:开标签定位口,与剥离 / 解包同一个判定,文法常量不上公面;§108)· `stripSystemReminderBlocks` / `unwrapSystemReminder`(0.83.4 CC-205:引擎 `<system-reminder>` 信封壳的剥离与整条解包,开标签只认引擎铸的两形,线性时间;§104)· `displayBody`(0.78.1 CC-113:工具结果正文的人类面读口,剥本包铸的不可信围栏,三形互不折叠;§83)· `structuredToToolUseResult` · `readAsyncLaunchedAgentReceipt` · `wireOutputToBody` · `parseModelFacingBash` · `getPatchFromContents` · `toolEndResultToUserFrame` · `flattenToolOutput` | 铸端要渲的 `tool_result` 卡体,含客户端 diff hunk(唯一 runtime dep 的用处) | `src/toolResult.ts`、`src/printToolResultFrame.ts`、`src/diff/patch.ts` |
|
|
169
169
|
| 9 | **能力/旋钮 wire 门族** | 179 | `hooksWirePlan` / `pluginHookVerdictOf` / `hooksNotRunNotice` / `pluginHookExecutorLabel` / `pluginHookReasonText` / `settingsHookDropText` / `isEngineFiredHookEvent` + `ENGINE_FIRED_HOOK_EVENTS` / `PLUGIN_HOOK_DISPOSITIONS` / `PLUGIN_HOOK_REASONS` / `PLUGIN_HOOK_EXCLUSION_REASONS` / `SETTINGS_HOOK_DROP_REASONS`(0.83.1 CC-174:插件 hook 每轮计划 —— 逐条判「投给引擎 / 本客户端执行 / 如实不跑」,请求体 hooks 与本地跳过用同一份,开机「不会执行」清单与 `/hooks` 标注措辞单源,五张闭集;读口是 `SettingsPort` 的可选成员 `enabledPluginHooks`(型面,不计名数);§101)· `invalidateTaskAgentsWire`(0.82.1 CC-161:自定义代理载荷作废并重投,就绪门等最新一代,§93 S-14)· `projectFileHistoryCaptureCapability` / `noteEngineCapsForFileHistoryCapture` / `observedFileHistoryCapture` / `forgetFileHistoryCaptureReading` / `fileHistoryCaptureMode` / `fileHistoryCaptureDoctorDetail`(0.82.1 CC-163:`capabilities.fileHistoryCapture` 四态读口 + 判据 + 措辞单源;§93)· `observedRewindArchive` / `rewindCodeArchiveAvailability` / `rewindConversationAvailability` / `rewindArchiveDoctorDetail` / `rewindConversationDoctorDetail`(0.82.0 CC-146:`/rewind` 代码档与对话档可用性四位窄读口 + 端判据三态 + 措辞单源,替掉壳侧「本地备份表非空」那条判据;§92)· `mcpEngineLegLivenessOf` / `mcpDetailLegNote` / `isMcpLivenessState`(0.80.0 CC-134:引擎腿活性六档读口 + 九句范围说明铸点 + 活性三词判据上公面;§87)· `projectMcpProbeCapability` / `noteEngineCapsForMcpProbe` / `observedMcpProbe` / `forgetMcpProbeReading` / `mcpProbeAvailable` / `mcpProbeDoctorDetail`(0.79.0 CC-74:`capabilities.mcpProbe` 四态读口 + 「这次调用要不要上 wire」三态 + doctor 句;§85)· `projectSessionPolicyCapability` / `observedSessionPolicy` / `sessionPolicyFaceAvailable`(0.77.0 CC-105:`capabilities.sessionPolicy` 四态读口 + 渲不渲写入口三态;§79)· `projectMemoryComplianceCapability` / `memoryComplianceVerbsAvailable` · `projectMemoryOriginCapability` / `memoryOriginVerbsAvailable`(0.76.1 CC-97a:`capabilities.memoryCompliance` / `memoryOrigin` 两只四态读口,同判据不同位、各持一张表;§77)· `projectPeerLaneCapability` / `observedPeerLane` / `peerLaneAvailable`(0.76.1 CC-102:`capabilities.peerLane` 四态读口 + 露不露跨会话入口的三态判据;非 HTTP 面)· `projectPermissionRulesWriteCapability` / `observedPermissionRulesWrite` / `permissionRulesWriteAvailable`(0.76.1 CC-102:`capabilities.permissionRulesWrite` 四态读口 —— 键缺席 = 二进制比单步写口老、藏入口;在场按本键的值判这次够不够得着;§77)· `projectDeviceExecutorManagementCapability` / `noteEngineCapsForDeviceExecutorManagement` / `observedDeviceExecutorManagement` / `forgetDeviceExecutorManagementReading` / `deviceExecutorManagementDoctorDetail` / `deviceManagementVerbsAvailable`(0.74.2 CC-69;§70)· `projectApprovalsStreamLiveCapability` / `noteEngineCapsForApprovalsStreamLive` / `observedApprovalsStreamLive` / `forgetApprovalsStreamLiveReading` / `approvalsStreamLiveDoctorDetail` / `livePendingNeedsReconcile`(0.73.3 CC-61;§65)· `projectExecutionLaneCapability` / `noteEngineCapsForExecutionLane` / `observedExecutionLane` / `forgetExecutionLaneReading` / `executionLaneDoctorDetail` / `toolsRunHereFromExecutionLane`(0.72.13 CC-54:`capabilities.executionLane` 四态读面,键缺席 ≠ 不是本机车道;§60)· `AGENT_MEMORY_WORDS`(0.72.3 CC-39①:`memory: user|project|local` 三词;`projectAgentsForWire` 把它们同映射为 `agents[].memory = { scopes:[agent:<type>], writeScope }`;§50)· `skillBaseDirOf`(0.72.1 CC-33:`SkillSpec.baseDir` 窄读 = server 顶层门同一只结构判据;`skillCommandsToSpecs` 第三参 `{ toolsRunHere }` 只在本机车道带;§48)· `projectAgentsForWire` / `awaitTaskAgentsWire` · `hooksForWire` · `mcpConfigsToSpecs` · `ultracodeForRequest` · `buildWebSearchEnv`(`resolveWebSearch` 🔧 0.83.0 退出公面,换读域 15 的 `resolveWebSearchVerdict`) · `attachmentsForRequest` · `projectEffectiveBody` · `classifySelfOrchestrationRefusal` / `stripSelfOrchestrationIntent` / `projectWorkflowsGate` / `SELF_ORCHESTRATION_RETRY_WITHOUT`(S-81,server 7.57.0:上面两条 stamp 腿的**背面** —— 半配置多租户形态下 server 把带 `selfOrchestration` / `settings.ultracode` 的提交 501 拒掉,判型/去键/caps 闸三处都是判定不是文案,详见 §13) · `engineCapsGeneration`(0.60.0,异源对抗复审 [medium] 逼出:caps 探测的**当代号**读口 —— 代际闸在 probe **返回之后**才跑,而宿主的读面 tee 是在 probe **内部**落地的 ⇒ 一次慢的旧探测能把上一台引擎的读数写回来。宿主在**起探测那一刻**抓号、tee 时交回 `{generation}`,陈旧那一发整只丢掉;不传 = 逐字节同行为,详见 §24e)| 逐功能的「引擎有没有这个能力 + 这个字段怎么上 wire」投影器,由 `buildTaskRequest` 组装。🔴 `hooksForWire()` 是 **fail-closed**:无 `SettingsPort` ⇒ 返回 `undefined`(信任门,不是取值) | 17 个 `src/*WireCaps.ts` + `src/scratchpadWireCaps.ts`、`src/hooksWireCaps.ts`、`src/goalStopHook.ts`、`src/websearch/searchProviderPresets.ts`、`src/selfOrchestrationDenial.ts`(S-81 拒绝判定层)、`src/pluginHooksWire.ts`(0.83.1 CC-174:插件 hook 判定 / 措辞 / 闭集,经 `src/hooksWireCaps.ts` 编排) |
|
|
170
|
-
| 10 | **headless / 部署旋钮 wire** |
|
|
170
|
+
| 10 | **headless / 部署旋钮 wire** | 62 | `isDetachDurableOff400`(0.84.1 CC-219:detach durable-off 400 纯判定,不带进程门,只认锚句不认码,一律不抛;§108)· `lastFlagValue`(0.74.3 CC-80:argv 末次旗值扫描原语上公面;§71)· `probeEngineDetachSupport` / `detachSupportDisclosure`(0.72.13 CC-53:detach 版本闸三态读口 + 披露句;§60)· `parseSandboxArgv` / `sandboxRequestFields` · `parseLimitsArgv` / `limitsForPrint` · `resolveHeadlessFinalVerify` · `resolveHeadlessPermissionMode` · `resolveHeadlessInteractiveTools` · `armDetachCancel` + `detachCancelArm` + `isDetachArmed` · `withHeadlessR1Reconnect` | `-p`/headless 车道的 env+argv 旋钮。🔴 `detachWire` 是**拆**的补偿:判定与 cancel-arm 台账在库,信号路径的裸 fetch 留宿主(`detachCancelArm()` 是取件口) | `src/sandboxWire.ts`、`scenarioWire.ts`、`finalVerifyWire.ts`、`limitsWire.ts`、`interactiveToolsWire.ts`、`headlessPermissionModeWire.ts`、`headlessReconnectWire.ts`、`detachWire.ts` |
|
|
171
171
|
| 11 | **模型目录与预算** | 72 | `modelIdentityResolvability` / `modelIdentityDetail` / `modelSetupDecision` / `modelSetupNotice` / `observedEngineAnswer`(0.82.1 CC-151:「引擎启动时拿不拿得到模型名」三态判据 + 向导两位决策 + 措辞单源,§93 S-11)· `routePairingVerdict`(0.71.3 CC-06:`ModelInfo.routePairing` ok / broken / unknown 三态读口,§45)· `resolveModelCatalog` · `loadCatalogWithSources` · `PROVIDER_PRESETS` / `MODEL_FAMILIES` · `defaultMaxTokensFor` · `getLiveModelCatalog` / `setLiveModelCatalogRefresher` · `providerAuthMethods` / `beginDeviceCodeAuth` · `providerCatalogRows` / `providerCatalogRowDetail` / `providerPresetById`(#244 F4 族D A-028.17:46 家表的规范折表层 —— 全表不重排、诚实缺席「model id typed in」,cli 目录/web 向导同一份折表)· `TIER_ORDER` / `CC_TIER_ALIASES` / `isTier` / `resolveTierBinding`(A-028.18:档位词表+校验+fail-open 降档派生单源;settings 存储归宿主)· `resolveEntryVision` / `computeDeleteBlockers` / `computeDeleteWarnings`(0.38.0 #318 件③ 上收:Model Hub 供给面的三端公共判定 —— vision 生效值+来源三态、删除断链核(拒删+指路)、删除降级后果(照删但必说)。**零 IO**,读盘那半场留各端;`doc === null` 的两义在调用方分流) | 三层 provider 目录解析(线上 URL → 包内预设 → 用户覆盖)+ per-model `maxTokens` 封顶。线上腿需注入 `CatalogFetchJson`,缺席 ⇒ 整条不启用(`online.reason='no-fetch-port'`);缓存落盘经 `CatalogCachePort` | `src/model/{catalog,catalogLoader,providerAuth,providerPresets,providerCatalog,tierVocabulary}.ts`、`src/liveModelCatalog.ts`、`src/modelBudgetRule.ts`、`src/sessionModelLatch.ts`、`src/effortWire.ts` |
|
|
172
172
|
| 12 | **workflow 与后台工作视图** | 36 | `evaluateWorkflowSize` / `readWorkflowSizeWarningEnvCaps` / `workflowSizeWarningTextForWidth` + `WORKFLOW_SIZE_WARNING_AGENT_CAP` / `_TOKEN_CAP` / `_TOKENS_PER_AGENT` / `_ENV_NAMES` / `_TEXT_LONG` / `_TEXT_SHORT` / `_TEXT_MIN` / `WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS`(0.73.5 CC-58:规模告警判定三态;§67)· `projectLeaderConflict` / `leaderConflictDetail` + `LEADER_RUN_STATUSES` / `LEADER_REJ_HEAD_DISPLAY_MAX`(0.72.10 CC-41:leader run 终局 `needs_human` + `result.conflict` 三形读面 none / unreadable / conflict,缺席不可分、filesTruncated 只认 true、salvaged 原样给落盘口;§57)· `projectWorkflowRun` · `readWorkflowResumeAdmissionIncomplete`(0.68.3 CC-05:core 7.18.0 `resumeAdmissionIncomplete` 在场 = 不是 resume 基,与 `readWorkflowParks` 同一条投影义务)· `createLiveWorkflowSource` · `ensureWorkflowActivityLedger` · `readWorkflowActivityLedger` · `stopWorkflowActivityLedger` · `resetWorkflowActivityLedgers` · `createBackgroundView` · `projectBackgroundView` · `recordWorkflowAgentTaskId` · `agentDisplayStatus` | 活过一个 turn 的长任务读面:workflow run + 跨 session 后台任务归一表(`assistant.tasks` 与 fleet SSE **两源独立降级**) | `src/workflow.ts`、`src/workflowClient.ts`、`src/workflowMonitor.ts`、`src/agentSession/backgroundView.ts`(+ 纯类型 `src/agentSession/contract.ts`) |
|
|
173
173
|
| 13 | **座位 IPC 契约** | 34 | `LOCAL_SESSIONS_SPEC` · `SEAT_METHOD_NAMES` · `SEAT_EVENT_TYPES` · `isLocalSessionEvent` · `isToolPermissionRequest` · `toolPermissionRequestId` · `SEAT_VALIDATOR_KEY_COVERAGE` · `SEAT_SEND_MESSAGE_KEY_ORIGINS`(0.62.0:座位载荷**逐键出身**登记 —— 每个位要么写明转投哪个引擎请求位、要么写明为什么不上 wire;常驻门对**装在盘上的** sdk 型面逐名核,详见 §26③)| desktop↔web 座位 IPC 契约的**单一真源**(此前两边各一份、名字零重合 ⇒ 编译器永远不会告诉你它们漂了)。🔴 加 verb 忘了加 `LOCAL_SESSIONS_SPEC` **不报错**:preload 不注册 channel、渲染端读到 `undefined` | `src/seatContract.ts`(**零 import**,纯类型 + 常量 + 纯谓词)。🔴 **证据等级标注(0.42.0,test [5087] 的「语料**种类**缺口」/ cli [5088] 认领件)**:该文件里所有以「CC 如何如何」为形的断言(`212 methods` / `854-channel census` / 方法名逐字保留 / `fQe` 逐字段对照 / 一切 `.vite/build/index.chunk-*.js` 坐标)**证据等级 = 桌面 unpack,本地语料库不可复验** —— 本仓手边可复验的参照语料**只覆盖终端 CLI 形态**的静态产物,拿它去 grep 桌面壳里的符号只会零命中,而零命中在这里**既不证真也不证伪**。复核这些断言**不得**拿本仓语料当反证 |
|
|
174
174
|
| 14 | **宿主端口与会话槽** | 41 | `installHost` · `installHostFor` · `installCoreValuePorts` + 十读口 + 三存在性口(0.69.0 CC-07:core 值级面端口注入,Node 宿主装配根装、浏览器 lane 恒缺席)· `hostPortMisses(For)` · `DEFAULT_SESSION_KEY` · `hostEnv` · `unrefTimer` · `parseLocaleTag` / `pickUiLanguage`(#244 F4 族D A-028.20:locale tag 手术单源 + UI 语言判定;与 `resolveRegionHint` 双出口成文 —— 语言偏好域 en/zh ≠ 地址可达域 cn/intl/unknown,`zh-Hant` 前者 zh 后者 intl 是设计)· `engineNamespaceKeyFor` / `mergeSessionMapRecord` / `mergeEngineEntry`(A-028.12:会话 id 映射单一键形 + merge 判定;存储经 `SessionMapStorePort` 归端 —— cli 文件锁/原子写,web localStorage)| 进程/端级装配层(settings/fs/queue/timers/session/log/probe),与 per-turn 的 `AdapterContext` **分层**。头注的判定规则:**这个能力每 turn 都会变吗?** 会 ⇒ `ctx`;不会 ⇒ `installHost` | `src/host.ts`、`src/hostEnv.ts`、`src/sessionSlot.ts`、`src/unrefTimer.ts`、`src/env/{localeGeo,localeTag,uiLanguage}.ts`、`src/sessionMap.ts` |
|
|
175
175
|
| 15 | **控制面与传输** | 193 | `judgeWebSearchSettings` / `webSearchVerdictFromEnv` / `resolveWebSearchVerdict` / `webSearchVerdictMessage` / `webSearchEndpointForDisplay`(0.82.7 CC-182:每请求联网搜索配置三态判决,与 server ≥7.100.0 判官同判;§99)· `withPrintInitFrame` / `createPrintInitGate` / `printInitRosterSignal` / `decidePrintInitToolFace` / `printInitToolFaceDebugLine` / `PRINT_INIT_ROSTER_WAIT_MS`(0.82.5 CC-169:print 车道 init 帧工具面名册优先 —— 流包装器、判定闸、名册信号三态分类、判定口、留痕措辞单源、等待上界;§97)· `projectRegistryQuotaUsage` / `quotaAmountText` / `registryQuotaDoctorDetail`(0.82.0 CC-150:云控制面 quota/usage 回体的纯投影 —— 两种 null 的正面事实与「判不出」三分,措辞零 0;§92)· `pushSessionBundle` / `pullSessionBundle` / `importSessionBundle` / `APIError`(0.79.0 CC-128:会话 bundle 面四名原样转口,与 `AgentClient` 同一张存量转口表;§85)· `readMcpCapabilities` / `probeMcpServers` / `classifyMcpProbeFailure` / `MCP_PROBE_REFUSAL_CAUSES` / `MCP_PROBE_UNKNOWN_WHYS`(0.79.0 CC-74:无 run 可读的 MCP 状态面两只调用口 + 单一失败判官 + 两张闭集词表;§85)· `readEntryProvenance` / `eraseMemoryEntries` / `listExternalOriginEntries` / `listOriginClearances` / `clearEntryOrigin` / `classifyMemoryFailure` / `externalOriginCoverage` / `MEMORY_VERB_REFUSAL_CAUSES` / `MEMORY_VERB_UNKNOWN_WHYS`(0.78.1 CC-97 b:记忆治理面五动词调用口 + 单一失败判官 + 两张闭集 + 覆盖面判词;§83)· `readMemoryExportRows` / `scopeExternalOriginVerdict` / `readMemoryEraseReceipt` / `memoryEraseCounts` / `memoryEraseErasedNothing` / `eraseNotFoundHistoryVerdict` / `memoryEraseReplayPosture` / `readMemoryOriginClearanceReceipt` / `MEMORY_ENGINE_REQUIRED_CODE`(0.76.1 CC-97a:记忆条目面三个回体的窄读口 + 判词口;「空答绝不读作本店干净」的代码落点;§77)· `readMcpLiveness` / `mcpLivenessRollupOf` / `mcpEngineLegHealthOf` / `mcpEngineLegHealthDetail` / `MCP_LIVENESS_STATES`(0.76.1 CC-36:`wiring_manifest.mcp[].liveness` 活性观察的行级三向读口 + 腿级四读数判词 + 措辞铸点;§77)· `readRunCancelContext` / `classifyRunAbortCause` / `RUN_CANCELLED_CODE`(0.74.3 CC-71:run 取消现场与成因;§71)· `cancelConflictFromError` / `cancelConflictContent` / `usageWindowExhaustedFromError` / `usageWindowExhaustedContent` + `CONFLICT_APPROVAL_SETTLED` / `CONFLICT_RUN_NOT_RUNNING`(0.73.1 CC-56:cancel 409 按码分家 + 提交面 429 用量窗;§63)· `reconnectMcpServer` / `projectMcpReconnectResult` / `classifyMcpReconnectFailure` / `projectMcpReconnectCapability` / `mcpReconnectOutcomeDetail` + `MCP_RECONNECT_OUTCOMES` / `MCP_RECONNECT_TRANSACTION_NOTICE`(0.72.9 CC-30:会话内 MCP re-dial 消费口,outcome 三态 / unsupported 恒五键 / 名册按 toolNames 在场性;§56)· `readAutoConsolidationArmed`(0.72.9 CC-39②:memory-status `autoConsolidationArmed` 三态,缺席 = 老 server 判不了;§56)· `steerFollowIntent`(0.72.6 CC-40:steer 后续听意图三态 tail / after-decision / after-wake,按 `SteerReceipt.delivery` 判;§53)· `projectWebSearchBackendCapability` / `observedWebSearchBackend` / `noteEngineCapsForWebSearchBackend` / `forgetWebSearchBackendReading` / `webSearchBackendDoctorDetail` + `WEB_SEARCH_BACKEND_NONE`(0.72.5 CC-31:`capabilities.webSearch.backend` 四态读面 —— 键缺席 = 老引擎判不了 ≠ `none` = 引擎明说没有默认后端;与 `sqlEngineCapability` / `writeProtectionCapability` 同构;§52)· `resumeContextUnavailableFromError` / `resumeContextUnavailableContent`(0.72.1 CC-33:409 `conflict.resume_context_unavailable` 读数 `{ code, staleAfterSec?, runId? }` + 三句人话;§48)· `mcpEngineLegPresence`(0.71.0 CC-19:引擎侧 MCP 在场三值,只从面板视图求;§42)· `ControlRouter`(+ `ControlSafetyError`)· `fetchMcpPanel`(0.69.0:经 sdk `sessions.mcp` 取体 + 投视图,不裸 fetch)· `projectMcpPanel` + `mcpPanelLastLegDetail`(0.68.2 CC-03:`GET /v1/sessions/:id/mcp` 面板体防御读视图 + `lastLegMcp` 一行措辞铸点;缺席 = 键不铸、读不懂 = `lastLegMcpUnreadable`、禁与 `servers[]` 对账)· `makeEngineWireClient` + `resolveWireAuth` · `installEngineWireTarget` · `diagnoseSseIdleTear` / `isSseIdleError` · `attemptActiveRunSelfHeal` + `activeRunBusySignal` + `activeRunSelfHealRow` / `activeRunBusyHeadlessRow` · `kickEngineCapsProbe` / `engineCapTrue` / `invalidateEngineCaps(baseUrl, probe?)`(#307 S25:引擎温切后的 caps 生产失效口 —— kick 自带幂等闸,同 baseUrl 重启后不显式失效就永远读到旧引擎那一版能力位;调用方 = 壳的 respawn/restartEngine。🔴 **推荐两参形**:第二参给替代探测则「推进代际 + 注册新探测」在同一同步块内完成,失效与下一次 kick 之间那个「等待者读到未判」的窗按构造不存在;单参形保留给「只丢缓存、这一刻没有替代探测」的调用方,那种情形下读到未判是诚实结局) · `engineCapValue`(S-131,0.59.0:能力位的**四态**通用读口 `unobserved`/`not_reported`/`null`/`value` —— 既有三口把四种「读不出」全折成 fail-closed 一档,对**放行**问题是对的、对**读面/诊断**问题是错的:`null`(引擎明确说没有,正面事实)会与「老引擎不报」「还没探到」在屏上同形。`value` 位刻意不做形校验,形归各能力位自己的窄读器,详见 §23b)· `projectSqlEngineCapability` / `observedSqlEngine` / `noteEngineCapsForSqlEngine` / `forgetSqlEngineReading` / `sqlEngineDoctorDetail`(S-131,0.59.0:`Capabilities.sql`(server ≥7.60.0)的四态读面**从壳侧上收** —— 归层债,0.58.0 时它长在壳里正是因为包侧没有嵌套对象读口。🔴 **导出名与壳侧那份逐字同名 = drift-lock**;`txnMode: null` 是铸点域内的合法值不是畸形;换代失效口清成未观测而不是留旧值,详见 §23b)· `mapBrainStatusToRetry` · `waitForClaimRelease` + `CLAIM_RELEASED_STATES` / `CLAIM_HELD_STATES` · `atMostOnceFailureClass` / `readSteerDelivery` · `clearRunningChoiceOffer`(Inkglow-1085 P0b①:「Do nothing」登记的清口 —— 端的「重新打开操作菜单」入口;登记在场时 attemptActiveRunSelfHeal 不整卡重弹,not-parked 结局带 `alreadyOffered: true` 判别位,端据此降级渲一行)· `INTERACTIVE_WAY_OUT`(默认出路串单源)· `engineSessionParamFor`(design/285 批 0:`?session=` 派生的 **per-key** 形 —— `hostSessionFor(sessionKey)?.currentSessionId()` + [1501] 空串归一;零参 `engineSessionParam()` = 默认槽兼容层,取值链逐字等价)· `normalizeWirePrincipal`(A-028.10:principal 在场性 trim 原语 —— 全空白=缺席不发头,engineWireTarget 两臂/makeEngineWireClient/壳 livePrincipal 同尺)· `readSessionMemoryStatus` / `classifyMemoryStatusFailure` / `readCaptureOptOut` / `readLastCapture`(S-53 会话记忆姿态读面,0.48.0:失败分诊**码优先**——两个 404 分道 `not_found.session` / `not_found.route`,无码 404 不猜落 failed;五键逐键缺席语义两个合读器,`lastCapture` 三态的判别材料是 `committedCount` 不是本键;IO 归宿主注入 `MemoryStatusClientLike`,详见 §11) · `classifyTurnWireError` / `isWireTransportError` / `isPreStreamDrainingReject` / `isResumeAtRejection` / `drainingRetryDelayMs` / `scenarioDenyFromError` + `WIRE_NETWORK_ERROR_PATTERN`(A-028.11/.13:turn 错误分型判定半场,人话文案与渲染归端)· `resumeRetryLaterFromError`(L-102,0.57.0:resume 族**时间性拒绝**二码的判型半场 —— 这一族里唯一**带得出「等多久」**(`retryAfterSec`)的两个码。🔴 闭集**不是**「哪些码可以等」的名单:同族 `resume.row_recycling` 同样可等(窗口自清)只是没有秒数 ⇒ 本读口返回 `null` 只意味着没命中这两码,详见 §21) · `projectWriteProtectionCapability` / `observedWriteProtection` / `noteEngineCapsForWriteProtection` / `forgetWriteProtectionReading` / `writeProtectionDoctorDetail` / `projectWriteProtectionPosture` / `writeProtectionPostureDetail`(S-138,0.60.0:`Capabilities.writeProtection` (engine ≥7.63.0)的**四态**读面 + operator 面行表 —— 与上面 S-131 那一格**同构同纪律**。🔴 三位刻意不合成一个布尔;`not_reported` **不是**「这台部署没有写保护表」(座位缺席恰是缺省表在岗);逐行 name/kind 走**最小披露**只上 operator 面,详见 §24e)· `projectReadFacePosture` / `readFacePostureDetail` / `readFaceDisagreement`(S-167,0.61.0:operator 面 `diagnostics.wiring.readFace`(engine ≥7.65.0)的窄读器 —— 与上面S-138 那一格**同构同纪律**。🔴 三句「答不出来」逐字互异且没有一句等于「没有 READ 档」;`source` 按开集读;与租户面 `capabilities.readFace` 刻意不合流,只带一个纯比较函数,详见 §25)| 上行通道的**监管**半场(submit / steer / kill / 队列命令定序)+ 传输构造、caps 探测、SSE 断流分诊、**409 active-run 自愈** | `src/controlRouter.ts`、`steering.ts`、`sseIdleTriage.ts`、`retryStatus.ts`、`diagnostics.ts`、`engineWireSdk.ts`、`engineWireTarget.ts`、`src/principalWire.ts`、`src/wireErrorTriage.ts`、`engineSessionParam.ts`、`engineCapsCache.ts`、`liveInitToolFace.ts`、`adapter/activeRunSelfHeal.ts`、`src/sessionMemoryStatus.ts`、`src/writeProtectionCapability.ts`、`src/webSearchBackendCapability.ts`、`src/mcpReconnect.ts`、`src/readFacePosture.ts` |
|
|
176
|
-
| 16 | **引擎词汇表与包自检** |
|
|
176
|
+
| 16 | **引擎词汇表与包自检** | 119 | `SERVER_NOTICE_AUDIENCE` / `readInstructionsSourceChanged`(0.84.1 CC-213:服务端自铸通告码 → 受众两行,在册判据与受众读口同认;`instructions.source_changed` 的事实读器;§108)· `readEngineNoticeFacts` / `ENGINE_NOTICE_FACT_READERS`(0.84.1 CC-214:按码派发的 typed 通告事实口 + 派发表,七只读器八个码,只有受众 `user` 的六码属用户面;§108)· `PARKED_RESUME_STARTUP_FAILED` / `parkedResumeStartupFromError` / `parkedResumeStartupContent`(0.84.1 CC-225:停泊审批决断 422 的码常量、读口与按成因分说的一句话,同一个决定不重发、deny 照开;§108)· `CONFIG_LEGACY_TOOL_NAME` / `legacyToolNameFailureNoteOf`(0.84.1 CC-229:拒启码常量与启动失败出路句,只按码判,列四处可能的位置;§108)· `readReadRootGrantNotice`(0.84.0 CC-185:读目录授权两枚结论通告 `approval.read_root_granted` / `approval.read_root_grant_rejected` 的事实读口,按 `toolCallId` 对卡,没有 granted 通告 = 什么都没加;§107)· `APPROVAL_MANDATE_WORDS` / `isApprovalMandateWord` / `approvalMandateDetail`(0.83.2 CC-195:强制位站在哪一个词上的六词闭集,与引擎型面编译期双向钉;成员判据;每词一句说明;§102)· `resumePolicyBlockFromError` / `resumePolicyBlockContent`(0.82.1 CC-154:续跑折叠码 `resume_blocked_by_policy` 自己的读数与措辞,原码三态;§93)· `corruptStoredRowWhere` / `corruptStoredRowContent`(0.82.0 CC-156:续跑上下文坏档时引擎点名的那一行的读口与措辞单源;§92)· `effectiveWireErrorCode` / `RESUME_POLICY_FOLD_CODE`(0.82.0 CC-154:政策折叠码与「按原码判」的取码单源;§92)· `SETTLEMENT_KIND_WORDS` / `ccToolDenialKindForSettledBy` / `ccToolDenialKindForToolEnd`(0.80.0 CC-133:结算词十三词镜像 + 「谁结算的」→ CC 分类词单铸映射 + `tool_end` 帧合流读口;§87)· `CC_TOOL_DENIAL_KINDS` / `isCcToolDenialKind` / `isCcToolDenialKindADenial` / `isGateDeniedByWord`(0.79.0 CC-125:上游转录记录键 `toolDenialKind` 七词镜像 + 两只谓词 + `DeniedBy` 十词成员谓词;§85)· `mandatedApprovalDetail`(0.79.0 CC-110:「这张卡清不掉」那一句的唯一铸点;§85)· `CONFIG_MEMORY_PROJECT_KEY_SPELLING` / `CONFIG_MEMORY_WRITE_SCOPE_MISMATCH`(CC-96:记忆面两个**构造期**拒码,进既有 `config.` 族识别表;400 拼写 / 409 冲突,分诊归引擎)· `TASK_NOTIFICATION_TERMINAL_STATUSES` / `isTaskNotificationTerminalStatus`(0.72.12 CC-50:通知自己的四终态词,含 `cancelled`;与 run 级终态表两张表;§59)· `ENGINE_NOTICE_CODES` 71(0.83.0 CC-186:引擎 7.30.0 / 7.31.0 +2 `config.context_settings_swapped` / `config.secret_env_scrubbed`,均 operator;§100。历史:0.82.1 69、0.79.0 68、0.72.11 CC-49 67 —— core 7.23.0 +1 `config.write_protection_unresolved`,operator,兄弟码 `target_view_absent` 之后;§58)· `MCP_REDIAL_OUTCOMES` / `readMcpServerRedialed`(0.72.7 CC-42:通告 `mcp.server_redialed` 事实读器,outcome 三词闭集、added/removed 计数;§54)· `RESUME_CONTEXT_UNAVAILABLE`(0.72.1 CC-33;不进两个 resume 闭集:不可等、也不是换参数)· `RESUME_REOPEN_CODES` / `RESUME_ENV_FAILED` / `RESUME_TOOL_UNAVAILABLE` / `RESUME_TOOL_CONTRACT_MISMATCH` · `resumeReopenFromError` / `resumeReopenContent`(0.71.3 CC-06:resume reopen 族三码闭集 + 读口 + 三句,§45)· `readSkillsListingTruncated`(0.70.0 CC-04:`skills.listing_truncated` 事实读器,§39)· `CONFIG_REFUSAL_CODES` / `isConfigRefusalCode` · `DECIDE_WORKFLOW_LANE_CODES`(+ 三个具名码;`/decide` workflow 车道,三条出路刻意不合并,详见 §30h)· `STOP_CONFLICT_CODES` · `isInterruptedToolEndCode` · `isRewindFamilyCode` · `CLIENT_VERBS` · `compensationSplitViolations` · `DELEGATION_CAP_CODES` / `isDelegationCapCode` / `DELEGATION_CONCURRENCY_CAP` / `DELEGATION_SESSION_CAP`(0.38.0 #318 件④:core 5.48.0 design/323 委派席位到限**两码,处置不对称禁合并** —— 并发帽=**可等**(兄弟结束即有位)/ 会话累计帽=**等也没用**(这条会话的配额用尽))· `CONFIG_DELEGATION_ENTRY_CAPS`(同批入 `CONFIG_REFUSAL_CODES` 识别表)· `delegationCapDispositionOf` / `MCP_SERVER_REVOKED`(0.39.0 载体到货消费件:core 5.50.0 补 `{ error: code, code }` 孪生拼法后两码真上 `tool_end.errorCode`,0.38.0「先立词不落消费分支」的已知局限自此解除;处置轴 `wait-for-slot` / `reuse-existing-or-await-reap` 机器可读(累计帽=retained-window 帐,行回收配额即回,处置=SendMessage 复用,**非**「换会话/永久耗尽」——0.38.0 段该句系勘误),未知 `delegation.*` 码 ⇒ `undefined`;`mcp.server_revoked` = 操作员 mid-session 吊销 server 后的工具面本地闸(被吊销的 server **名**今天不过 wire 境:detail.server 是进程内位,抬升腿只 lift code——归因渲染候 core 补 typed detail,已点名);载体门 = engine-vocab G3 腿锚 core dist 铸点)· `CAPABILITY_SELF_ORCHESTRATION_REQUIRED`(S-81,server 7.57.0:提交面的 selfOrchestration 准入拒绝码。🔴 **复用码** —— 与其它 `capability.*` 501 同体形而处置不同,消费点必须按**恰等**判、绝不放宽成前缀判;判型与「去键重发一次」归 `src/selfOrchestrationDenial.ts`,详见 §13) · `GATE_PARKED_ERROR_CODE`(0.60.0:「门把这次调用 park 了」的机读码单源 —— `frameRouter` 的连坐/中断判据与 `gateOutcome.isGateParkedToolEnd` 读同一个常量;真机黑盒直证 park 短路帧上**没有 `gate`**,这个码是那一形唯一的信号,详见 §24c)| 三端分臂共用的**去字面化** `errorCode` 词表(病根正是三端各抄一份字面);编译期 verb 闭合门;搬迁补偿登记表 | `src/engineErrorCodes.ts`(计数以 `scripts/public-export-baseline.json` 为准,别手抄;A-028.11/.13 补 `DRAINING_ERROR_CODE`/`SCENARIO_NOT_ALLOWED_ERROR_CODE`/`RESUME_AT_ERROR_CODE_PREFIX`;#318 件④ 补 `delegation.*` 族四位 + `config.delegation_entry_caps`;0.39.0 补三新码消费件三位);S-81 补 `capability.self_orchestration_required` 一位;L-102 补 `resume.*` 时间性拒绝二码 + 闭集 `RESUME_RETRY_LATER_CODES` 三位)、`src/classifierVerdictWire.ts`、`src/compensations.ts`、`src/clientSlice.ts`;**0.67.0 补锚**(这三件的导出一直计在本域,而本表此前没有它们的锚行 —— 如实补上,不是搬家):`src/gateVocabulary.ts`(`GATE_DENIED_BY_WORDS`/`gateDeniedByDetail`/`ASK_ORIGIN_WORDS`/`askOriginDetail` + 🆕 `RULE_STORE_UNREADABLE_KINDS`/`isRuleStoreUnreadableKind`/`ruleStoreUnreadableDetail`,详见 §32d)、`src/autoModeUnavailable.ts`(`AUTO_MODE_UNAVAILABLE_CAUSES` + 🆕 `CLASSIFIER_DENY_CAUSES`/`isClassifierDenyCause`/`classifierDenyCauseOf`/`classifierDenyCauseDetail`;🔴 同批**删**`classifierUnavailableOf`/`classifierUnavailableDetail`,详见 §32b)、`src/classifierStatus.ts`(`CLASSIFIER_STATUS_STATES`/`classifierStatusOf`/`classifierStatusDetail`)|
|
|
177
177
|
|
|
178
178
|
🔴 **`engineErrorCodes` 的开集纪律**(该文件头注逐字):这些 `ReadonlySet` / 前缀谓词一律是**识别表**,
|
|
179
179
|
回答的是「我认不认得这个码」,**绝不是**「合法码只有这些」。消费点 `switch` **必须留 `default`**,
|
|
@@ -1220,18 +1220,20 @@ respawn/restart 后调 `invalidateEngineCaps(baseUrl, probe?)`(**推荐两参形
|
|
|
1220
1220
|
- 🔴 **唯一构造点纪律不破**:relay 形也走 `makeEngineWireClient()`(`src/engineWireSdk.ts`),
|
|
1221
1221
|
没有第二个铸口。
|
|
1222
1222
|
|
|
1223
|
-
**今天放宽了的入参面只有两个**(⚠️
|
|
1223
|
+
**今天放宽了的入参面只有两个**(⚠️ 这一条决定端能不能真用上;0.84.1 起另有两处注入口,见表末两行):
|
|
1224
1224
|
|
|
1225
1225
|
| 入参面 | 类型 | 实现锚 | 端怎么用 |
|
|
1226
1226
|
|---|---|---|---|
|
|
1227
1227
|
| `EngineWireClientConfig.token` | `string \| { mode: 'same-origin-relay' }` | `src/engineWireSdk.ts` | 自己直调 `makeEngineWireClient({ baseUrl, token: { mode:'same-origin-relay' } })` 的路径可用 |
|
|
1228
1228
|
| `LiveWorkflowConfig.authToken` | `string \| { mode: 'same-origin-relay' }` | `src/workflowClient.ts`(`createLiveWorkflowSource`) | workflow 活体读面可用 |
|
|
1229
|
+
| `DecidePlanReviewOptions.wire` / `armPlanReviewApproval` `opts.wire` / `ReopenPlanReviewOpts.wire` | `{ client: PlanReviewWireClient; capsBaseUrl?: string }` | `src/hitl/planReviewWire.ts` | 🆕 0.84.1 注入口:把自己的中继 `AgentClient` 交进来,plan-review 三口整条编排(闩 / 双闸 / 去键重发 / 回拉六态 / 结局)在包内跑;版本证据键给 `capsBaseUrl`;这只 client 的 `timeoutMs` 不低于 6 h、建议 `maxRetries: 0`(§108a-9) |
|
|
1230
|
+
| `EngineProbeOpts.client` | `EngineProbeClient` | `src/engineWireSdk.ts` | 🆕 0.84.1 注入口:两只探针直接用它,`timeoutMs` 是 独立落定的截止(到点答「不知道」并中止底层请求;§108) |
|
|
1229
1231
|
|
|
1230
1232
|
🔴 **没放宽的那一半(端接之前必须知道)**:`EngineWireTarget.token` 仍是 `string`
|
|
1231
1233
|
(`src/engineWireTarget.ts`),而 `installEngineWireTarget()` 是**非 Node 宿主唯一的装配入口** ——
|
|
1232
1234
|
包内经 `engineWireTarget()` 取址再构造 client 的那 **10 处**(plan review ×2 / 子代 tail / steer /
|
|
1233
|
-
output / compact ×2 / taskHandle ×2 / delegated prompt)因此**装不进** relay
|
|
1234
|
-
|
|
1235
|
+
output / compact ×2 / taskHandle ×2 / delegated prompt)因此**装不进** relay 形 —— 🆕 0.84.1 起 plan review 那 2 处有注入形(上表末两行之一),子代族 8 处(另有 resume 族 3 处)仍装不进。详见缺口 **P-28**。
|
|
1236
|
+
浏览器宿主今天能走通的只有上表那几条自带入参面 / 注入口的路径;走 `engineWireTarget()` 的子代族动词
|
|
1235
1237
|
在同源反代部署下**没有合法凭证形**可传。
|
|
1236
1238
|
|
|
1237
1239
|
🔴 **没放宽的还有第二个入参面**(0.30.0 发包扫描补记 —— 此前本节与 P-28 只点了上面那 10 处,
|
|
@@ -1241,7 +1243,7 @@ output / compact ×2 / taskHandle ×2 / delegated prompt)因此**装不进** rel
|
|
|
1241
1243
|
它们在浏览器 relay 部署下同样构造不出 client,失效形属下表 **C 档(零日志零信号)**:
|
|
1242
1244
|
前者 `return undefined`(= 「不知道有没有这个能力」,不是 `false`),后者 `return null`。
|
|
1243
1245
|
⚠️ 端**不要**把这两个 `undefined`/`null` 读成「引擎不支持」——它们在 relay 部署下**恒**如此,
|
|
1244
|
-
与引擎能力无关;正位解同 P-28(放宽入参面 + 透传)
|
|
1246
|
+
与引擎能力无关;正位解同 P-28(放宽入参面 + 透传),**不许端侧侧路补救**。🆕 0.84.1:`EngineProbeOpts.client`(`EngineProbeClient`,`AgentClient` 直接满足)是中继宿主的正位入口 —— 交了注入 client 的宿主上两只探针照常读(`timeoutMs` 是独立落定的截止),上面的「恒 `undefined` / `null`」只对不交的宿主成立(§108)。
|
|
1245
1247
|
|
|
1246
1248
|
⚠️ **失效形:构造失败一律吞成 `null`,但「之后怎么办」逐点不同 —— 别当成一律静默**。
|
|
1247
1249
|
`makeEngineWireClient()` 的构造被 SDK 守卫拒时走 `catch { return null }`(`src/engineWireSdk.ts`),
|
|
@@ -1256,7 +1258,7 @@ output / compact ×2 / taskHandle ×2 / delegated prompt)因此**装不进** rel
|
|
|
1256
1258
|
🔴 **A 档的用户可见性是有前提的,别当成保证**(#252 复审 R2 命中):`enqueuePlanReviewOutcome()`
|
|
1257
1259
|
(`src/notifications.ts`)在**队列口没装**时直接 `return false`;装了但**没有 `enqueueMetaPrompt`** 时
|
|
1258
1260
|
`queuePortMisses++` 后 `return false`。`decidePlanReview` 对 `false` 只再补一行
|
|
1259
|
-
`hostLog('error', 'planReviewWire: outcome enqueue MISSED …')`,投递口抛错则只落一行 `debug
|
|
1261
|
+
`hostLog('error', 'planReviewWire: outcome enqueue MISSED …')`,投递口抛错则只落一行 `debug`。🆕 0.84.1:`decidePlanReview` 的 `onOutcome` 回调(§108)是与队列口**并行**的第二条可见通道 —— 宿主接了回调时,队列口缺席不再打 error 级 MISSED(改一行 debug),结局照样交到宿主手里;两条都没有才照旧 error 级。所以(不接回调时):
|
|
1260
1262
|
|
|
1261
1263
|
| 结局 | 用户看不看得见 |
|
|
1262
1264
|
|---|---|
|
|
@@ -1563,7 +1565,7 @@ CHANGELOG 0.29.0「已知局限」段与相应 JSDoc 都有成文。**别在读
|
|
|
1563
1565
|
| **P-25** | 结构 | 类型小环 1 条:`seam → turnUsageToModelUsage → adapter/types → seam` | `docs/REFACTOR-LEDGER.md` 在册 | 纯类型环,无运行时影响;端无动作 |
|
|
1564
1566
|
| **P-26** | **已落**(0.29.x,2026-08-12) | seat requestId 域的**正向铸口**已在位:`toolPermissionRequestId(domain, id)` —— 往返性成契约(铸出的键必被读口 `toolPermissionRequestIdDomain` 认回同域,校验器同表放行);三类坏入参 fail-loud(未登记域含忘尾冒号 / 空串与非串 id / id 自带域前缀的双前缀键),**绝不静默吐坏键** | `src/seatContract.ts`(`toolPermissionRequestId` / `TOOL_PERMISSION_REQUEST_ID_DOMAINS` / `toolPermissionRequestIdDomain`) | 铸 requestId 一律 `toolPermissionRequestId(域, id)`,**不要**再手抄 `` `plan:${id}` `` 类模板串(手抄的失效形是运行期路由到不存在的目标,编译期不响) |
|
|
1565
1567
|
| **P-27** | 立票设计件(web [C1] 疑点③,族A 二段票同批) | `ToolPermissionDecision` **无 note 席位**且座位宿主无 caps 缓存读口 ⇒ #229 回决备注在两座位端(web/desktop)**结构性无法供给**。修形二选一未裁:decision 形补 `note?` + 能力位随 `ToolPermissionRequest` 下发,或宿主侧统一判 | `src/seatContract.ts`(`ToolPermissionDecision`,682 行域) | 座位端今天**不要**渲 note 输入位(渲了也送不出去=假 affordance);候本条落地随提货单换 |
|
|
1566
|
-
| **P-28** |
|
|
1568
|
+
| **P-28** | 🟡 med → **plan-review 半场已解(0.84.1)**,子代族半场 pending | `same-origin-relay` 只放宽了 `EngineWireClientConfig.token` 与 `LiveWorkflowConfig.authToken` 两个入参面,`EngineWireTarget.token` 仍是 `string`(`installEngineWireTarget()` 是非 Node 宿主唯一的装配入口)。**0.84.1 起**:plan-review 三口(`decidePlanReview` / `armPlanReviewApproval` / `reopenPlanReviewCard`)与两只探针(`engineSupportsTaskAgents` / `probeScenarioTools`)收注入 client(§5d 入参面表末两行;§108),浏览器同源中继宿主把自己的中继 `AgentClient` 交进来即可,包内不接触任何凭证。**仍未放宽**:经 `engineWireTarget()` 取址的子代族 8 处 + resume 族 3 处(`engineSubagentTail.ts` / `engineSubagentSteer.ts` / `engineSubagentOutput.ts` / `engineCompactWire.ts` ×2 / `engineTaskHandleWire.ts` ×2 / `engineDelegatedPrompt.ts` / `engineSubagentResume.ts` ×3)在同源反代部署下没有合法凭证形可传,失效形按 §5d 末两表 B / C 档(构造失败吞成 `null`、不抛) | `src/hitl/planReviewWire.ts`(注入形)· `src/engineWireSdk.ts`(`EngineProbeOpts.client`)· `src/engineWireTarget.ts`(`EngineWireTarget.token`,未动)· §5d 的两表 | 浏览器同源宿主:plan-review 与两只探针走注入 client(§108d);子代族动词**别指望在 relay 部署下发得出去**,也**不要**把「动词没反应」读成「引擎没这个能力」。🔴 子代族的正位解仍在包侧(共用构造点收编 + 注入,候票),**不许端侧侧路补救** |
|
|
1567
1569
|
| **P-29** | low(自检面) | **通知队列口没有存在性读口**:审批卡口有 `hasApprovalCardPort(For)`、HITL 面有 `hitlHostSurfaceFor`、宿主端口族有 `hostSettings()` 等无副作用读口(见 §5a 的 (a) 表),**唯独 `installNotificationQueuePort()` 没有对偶谓词**。而它的 `notificationQueuePortMisses()` 与同族几个 miss 计数一样**初值为 0**,只有真发生过一次「用到了但没装」才递增 ⇒ 「完全没装 + 还没有任何投递」照样是 0。拿它做**启动装配自检**必然假绿 —— §5a 此前正是这么写的(#252 复审 R3/R4 命中,已按端口拆成「存在性读口」与「回归探针」两类) | `src/notifications.ts`(`installNotificationQueuePort` 无对偶读口;`queuePortMisses` 初值与 `port()` 的 null 分支) | 队列口:按 §8-B 真调 `installNotificationQueuePort()`,miss 计数只当**跑过真流量之后**的回归探针用;其余端口按 §5a (a) 表用各自的存在性读口做启动校验。要队列口的读口按 [C162] 令④ 回 C 板提(正位解在包侧:补一个 `hasNotificationQueuePort()` 谓词) |
|
|
1568
1570
|
| **P-30** | med(HITL 路由面) | **durable 审批腿不按 `gateKind` 路由,且取行有「同 taskId 任意行」回落** (0.30.0 发包扫描 对抗复审 finding① 坐实,**非本窗引入**):`findPendingForTask` 在工具名谓词无命中时走 `?? rows.find(r => r.taskId === taskId)`,而 `surfaceFsApprovalAndDecide` 拿到行之后**不校 `gateKind`** ⇒ 同一 task 上同时停着 `plan_review` / `resource_limit` 行时,会弹出一张 `toolName` 为空串的**工具审批卡**。⚠️ **不会误批**(server 侧 fail-closed):本腿打的是 `POST /v1/approvals/:sessionId/decide`,非工具门在该端点上回 **409 `gate_not_tool_approval`**(SDK `dist/errors.d.ts`;⚠️ **不是** `gate_not_resumable` / `gate_not_plan_review` —— 那两个分别是 `/resume` 与 plan-review 端点的守卫,2026-08-14 对抗复审 R2 订正本条初稿的错码)。🔴 **但后果不止「一次失败的决断」**:decide 抛错 ⇒ `surfaceFsApprovalAndDecide` 折成 `{kind:'failed'}` ⇒ `parkResolver` 走 fail-soft 结束**本次客户端 turn**;而 server 侧 checkpoint 因为 fail-closed **没被消费**,run/session 仍 suspended、仍持 claim ⇒ 重试还会再撞一次。⚠️ **终帧按入口分两形,排障别只等一个码**(2026-08-14 对抗复审 R3 订正本条初稿的单一描述):① **初始 park 入口**(`done{…park…}` 经 `frameRouter.routeDone` 进来,`park.pendingDone` **在场**)⇒ 先 `led.flushHeld()` 吐出 park 期被 HOLD 的**毒化帧**(`tool_end{isError:true, output:'Operation aborted'}`,`frameRouter.ENGINE_ABORT_TOOL_RESULT`),再原样回吐那条 `done` —— **没有**合成 `failed` 终帧、**没有** `hitl_unanswered` 错误码,可观察到的失败信号只有那条 isError 的 `tool_end`。⚠️ **它与「用户真按了拒绝」可以分辨,按 `output` 分**(2026-08-14 对抗复审 R5 订正本条初稿的「同形不可分」;**0.43.0 起是三分不是两分**,见下):fail-soft 这条是 `flushHeld()` 吐出的**毒化帧**,`output` 逐字是 `ENGINE_ABORT_TOOL_RESULT`(`'Operation aborted'`);真 deny 走 `frameRouter` 的 `denied-call` / `deny-stamp-next` 臂,`output` 被改写成 `HITL_REJECT_MESSAGE`(CC `REJECT_MESSAGE` 逐字)。🆕 **0.43.0 新增第三形(#323 症状②)**:fail-soft 的原因若是**用户在门卡上中断**(`GateOutcome.kind === 'aborted'`,= 用户按 Esc/Ctrl+C),同一批毒化帧的 `output` 被归一成 `HITL_INTERRUPT_MESSAGE_FOR_TOOL_USE`(CC `[Request interrupted by user for tool use]` 逐字,公面导出)——`isError` / `errorCode`(含 `gate.parked`)/ `_sema_collateral_abort` 等机读位**一个都不改**。⇒ 端做归因的 `output` 三分:`'Operation aborted'` = 非中断原因的 fail-soft(卡面不可用 / no_pending / 传输失败)· CC 中断串 = 用户中断 · CC REJECT 串 = 用户真拒绝。端**不要**再假定「fail-soft ⇒ 必是引擎原文」;② **续流 / durable re-attach 入口**(`suspended` 进来,无 `pendingDone`)⇒ 才合成 `failed{errorCode:'hitl_unanswered'}`。⇒ 端做告警/埋点时**不要**只锚 `hitl_unanswered`,①那条路径上它根本不出现。⚠️ 定性要分清:这条 fail-soft 链是 durable 腿**通用**的失败路径(设计如此 —— 替代方案是谎报成功,更坏),**不是**本缺口独有;本缺口的**增量**是「弹了一张 `toolName` 为空的卡 + 发了一次注定 409 的 decide + 把用户的一次表态浪费掉」 | `src/hitl/hitlBridge.ts`(`findPendingForTask` 的第二条 `rows.find`)· `src/hitl/toolApprovalWire.ts`(`surfaceFsApprovalAndDecide` 全程零 `gateKind` 读)· 常驻登记见 `scripts/run-durable-card-display-keys-test.mjs` ⑦ 段 `gateKind` 那条未投影理由 | 端**不要**把「durable 卡弹出来了」读成「这一定是个工具门」;拿到 `toolName` 为空串的卡按异常处置、别渲成可决断卡。🔴 正位解在包侧(本腿按 `gateKind` 严格路由 + 回落收窄),要同批想好 pre-`gate_kind` 历史行 `gateKind` 缺席时的降级 —— 属独立设计件,按 [C162] 令④ 回 C 板提 |
|
|
1569
1571
|
|
|
@@ -9614,6 +9616,449 @@ installCoreValuePorts({ resolveAutonomousLoopPrompt, loosenReasons, combinePolic
|
|
|
9614
9616
|
|
|
9615
9617
|
**包侧缺口:** ① 出包面注释存量(别仓名 / 票号 / 帖号 / 过程词)与卫生门判据太窄(CC-100)—— 方案候拍板(dist 去注释 vs 手清),0.77.2 · ② `DeniedBy` 第十词 `read_boundary` / `teamName` / `stillLive` 三词随 sdk 10 型面在 0.78.0 吸收(CC-106)· ③ `capabilities.mcpProbe` 候 core 7.26.0 #951 → server 7.93.0(CC-74)。
|
|
9616
9618
|
|
|
9619
|
+
## §108 🆕 0.84.1(2026-09-28)`<system-reminder>` 开标签定位口 + detach durable-off 400 纯判定 + 服务端自铸通告码进册与按码派发的通告事实口 + 停泊审批决断 422 的读口 / 一句话 / 码优先 + 拒启会话的撤销动词与出路句 + plan-review 编排收注入 client + CC 形拒绝清单收仅被脱敏的拒绝 + 凭据读法两处放行收口 + 门夹具第二批(patch;根公面运行期导出 1260 → 1275〔+15〕;公面类型 +18;`SemaPermissionDenial` +1 可选成员 `_sema_tool_input_redacted`〔超集键 +1〕;`CONFIG_REFUSAL_CODES` 七员 → 八员;`readReadRootGrantNotice` 入参型放宽为 `unknown`;`detachDurableOffHint` 对读属性会抛的错误对象改回 `null`;凭据两网输出字节变;§66 G2 / G3 作废;零新投影臂;peer sdk 地板 `>=12.0.1` 不动)
|
|
9620
|
+
|
|
9621
|
+
> **patch**,九件同发,零 BREAKING、零编译期前置改动(本节按 0.84.1 的读法写;若与本版发布帖不一致,以发布帖为准):
|
|
9622
|
+
> ① **开标签定位口**(CC-210):§104 起本包只公开「剥离 / 解包」两个动作,开标签文法不上公面(§104 包侧缺口 ⑦)。要按开标签把消息切成块的端因此只能自持文法,或拿剥离口派生判定。本版公开定位口 `findSystemReminderOpenTag(text, from?)`,与剥离 / 解包两口同一个判定;端拿到的是位置,文法常量本身仍不上公面。
|
|
9623
|
+
> ② **detach durable-off 400 纯判定**(CC-219):`detachDurableOffHint` 被进程级的 `isDetachArmed()` 门住(只有终端 `-p` 车道真拼上头时才 arm),浏览器 / 桌面拿不到这个判定。本版把判定抽成不带进程门的 `isDetachDurableOff400(err)` 上公面,`detachDurableOffHint` 改为包它。纯判定一律不抛,包装层因此也不再因「读属性会抛错」的错误对象而抛(此前抛;其余输入逐字不变)。
|
|
9624
|
+
> ③ **服务端自铸通告码 + 按码派发口**(CC-213 / CC-214):服务端经同一条通告通道投它自己铸的码(服务端 7.101.0 起两枚)。修前本包只认引擎码册 ⇒ `instructions.source_changed` 被判「册外 / `operator`」。本版加一张服务端自铸码表,在册判据与受众读口同认,并给这枚码的事实读器;七只事实读器(八个码;0.84.0 的读目录授权结论读口一只挂两码)另有一个按码派发的总口,按码判别的联合,只有受众 `user` 的码属用户面。
|
|
9625
|
+
> ④ **停泊审批决断 422**(CC-225):读口 + 按成因分说的一句话 + 「同一个决定不重发、deny 照开」判定,四个决断出口补句;这枚码不再被「门已决」扫词臂误判(码优先)。
|
|
9626
|
+
> ⑤ **拒启会话的出路**(CC-229):引擎在每一跑的**准备阶段**对这一跑的每一层规则名字做一次审计 —— 调用方策略、会话规则记录、父会话的规则记录、冻结约束、技能范围。名字不在这一跑的工具名单里时,两类名字硬失败,码 `config.legacy_tool_name`:引擎退役名;含 `__` 而不以协议前缀(今天是 `mcp__` / `a2a__`,区分大小写)开头的名字。会话规则记录里交给这道审计的是 `toolDeny` 与 `toolAllow` 两只桶。0.83.6(§106)在写之前扣下这两类;本版是**已经写进去**那一侧:窄撤销动词(必交这台部署一跑的工具名册 —— 名册里有的名字引擎照认,不撤)+ 八臂措辞 + 启动失败出路句 + 判据本体。
|
|
9627
|
+
> ⑥ **plan-review 编排收注入 client**(CC-209;§7 P-28 的 plan-review 半场):公面只增(全部可选位),旧签名逐字节同答;行为面的新分支是「给了注入连线」那一形,另有一处两条路共改:决断撞上请求时限那一臂的结局正文(「已送出、时限内没有答复」)。两只能力探针同样收注入 client;本包经注入 client 的读都有独立落定的截止。
|
|
9628
|
+
> ⑦ **拒绝清单少列**(CC-235):入参被传输层脱敏过的拒绝此前只在超集载体上,只读 CC 形清单的消费方少数一条;本版照列、带脱敏标记。真没有入参对象的几类不变。**读法变化**:§66 G2 / G3 作废(108a′)。
|
|
9629
|
+
> ⑧ **凭据读法两处放行收口**(CC-234):值左邻是不可见单字时地址形的值不再按地址豁免(`scheme://` 留、主机与路径换记号);`@` 右边主机位被可剥单元占住、没有主机时照算 userinfo(候选挂在凭据标签 / 方案词上时让给标签那一遍整只遮,与 0.84.0 同答)。输出字节与 0.83.4 不完全相同 —— 判据请按「不含值」写。
|
|
9630
|
+
> ⑨ **门夹具第二批 + 扁平终帧棘轮 + 权威信封标签对账**(CC-233 / CC-230;只改门):出包面零变化,三端与管理台零动作。
|
|
9631
|
+
> **表态现势**:patch,全速模式,不设表态窗;到货点名两处 —— 网页端删端侧重建的 plan-review 编排(⑥,108d);管理台删本地同名的 detach 判定改从本包导入(②,本包同名影子对账门的过渡登记到 0.85.0 为止)。
|
|
9632
|
+
|
|
9633
|
+
### 108a. 处置表
|
|
9634
|
+
|
|
9635
|
+
包处置列:`added` = 本包自有面本版新增;`changed` = 本版改(括注改的是什么);`consumed` = 本版读上游的 wire 事实;`不变` = 回归约束;`pending` = 候上游 / 候包侧另批;`gates` = 只改门。各端列:`pending` = 有读点待改(格内注明必改与否);`n/a` = 该端零读点或零改动即得(按本机克隆的只读检索,见 108d 的日期)。
|
|
9636
|
+
|
|
9637
|
+
| # | 面 | 包处置 | 旧 → 新 | 终端 | 网页端 | 桌面端 | 管理台 | 验收方 | 本节 |
|
|
9638
|
+
|---|---|---|---|---|---|---|---|---|---|
|
|
9639
|
+
| O-1 | `findSystemReminderOpenTag(text, from?)`;型 `SystemReminderOpenTagSpan` | added | — → 下一枚引擎形开标签的 `{ start, end }` 或 `null`(108a-1) | pending(建议:转录搜索那一处「找开标签 → 删到闭标签 → 从头再找」的循环换读 `stripSystemReminderBlocks`(那一处要的就是整块剥);确需自己切块的读者换读本口,删自持的宽属性文法 —— 换读前按 104a-1 核负样本) | n/a(只调剥离口) | n/a(零读点) | pending(建议:回放拆分删「候选 + 闭标签问剥离口」那一步派生判定,换读本口;截断块归块的处置照旧在端) | pending | 108a-1 · G-O1–G-O6 |
|
|
9640
|
+
| O-2 | `stripSystemReminderBlocks` / `unwrapSystemReminder` | 不变 | 开标签识别改走与 O-1 同一个判定;**行为不变** | n/a | n/a | n/a | n/a | 回归约束 | 108a-1 · G-O6 |
|
|
9641
|
+
| DT-1 | `isDetachDurableOff400(err)` | added | — → 不带进程门的纯判定(108a-2) | n/a(`-p` 车道继续用 `detachDurableOffHint`;要在别处判同一枚错误时用本口) | pending(建议:提交恒带 detach 头而未见对这一枚 400 的处置 —— 连到没有耐久账本的执行体时整轮失败;要退让时用本口判,不按码) | n/a(自带引擎恒有耐久账本;连外部引擎时同网页端) | pending(🔴 必改:删本地同名判定改从本包导入 —— 同名同义,换 import 即可;本包同名影子对账门的过渡登记到 0.85.0 为止) | pending | 108a-2 · G-DT1–G-DT6 |
|
|
9642
|
+
| DT-2 | `detachDurableOffHint(err)` | changed(行为:不再抛) | 改为「`isDetachArmed()` ∧ DT-1」。读属性会抛错的错误对象(getter / Proxy 陷阱抛错、已撤销的 Proxy):已 arm 时原样抛出 → **回 `null`**;其余输入返回值逐字不变;`message` 读两次 → 至多一次 | n/a(`-p` 车道的错误来自 SDK,不是这类对象) | n/a | n/a | n/a | pending(按「会抛」写的判据眼改锚,见 108a′) | 108a-2 · G-DT4 / G-DT6 |
|
|
9643
|
+
| N-1 | `SERVER_NOTICE_AUDIENCE: Readonly<Record<string, NoticeAudience>>`(冻结) | added | 无 → 服务端自铸码 → 受众两行 `instructions.source_changed: 'user'` / `memory.layer_locked_legacy: 'operator'` | n/a(读受众一律经 `noticeAudienceOf`,不直读本表) | n/a(同左) | n/a | n/a | pending | G-N1 |
|
|
9644
|
+
| N-2 | `engineNoticeInCatalog(code)` / `noticeAudienceOf(code)` | changed(多认两码) | 只认引擎码册 → 引擎码册 ∪ 服务端自铸码表;查表序引擎先;两表之外仍保守 `operator` | 零改动即得(册外兜底分流那一格:`instructions.source_changed` 从「只落调试」变「册内通用行」,受众从 `operator` 变 `user`) | 零改动即得(今天零读点;接通知面时按受众分发就读这一口) | 零改动即得(同左) | 零改动即得(同左) | pending | G-N2 / G-N3 |
|
|
9645
|
+
| N-3 | `readInstructionsSourceChanged(notice)`;型 `InstructionsSourceChangedFactsView` | consumed | 无 → 事实读器(三格必填,`previous` / `current` 可为 `null`) | pending(机读车道与交互车道的专属行经 D-1 读;单独调本口亦可) | pending(用户通知面) | n/a | n/a | pending | G-N4 / G-N5 |
|
|
9646
|
+
| D-1 | `readEngineNoticeFacts(notice)`;型 `EngineNoticeFacts` / `EngineNoticeFactsOf<K>` / `EngineNoticeFactsCode` | added | 无 → 按码派发口 | pending(见 108d:壳里逐码分派整段换读本口;机读车道按 `_sema_` 前缀键上帧用它的读数) | pending(用户通知面:`audience === 'user'` 的读数才渲) | n/a | pending(运维面:`audience === 'operator'` 的读数) | pending | G-D1–G-D5 |
|
|
9647
|
+
| D-2 | `ENGINE_NOTICE_FACT_READERS`(冻结,码 → 读器) | added | 无 → 派发表(八行;七只读器,读目录授权结论读口挂两行) | n/a(判「这个码有没有 typed 读数」用 `Object.hasOwn(ENGINE_NOTICE_FACT_READERS, code)`;不要抄一份码名单) | 同左 | n/a | 同左 | pending | G-D1 |
|
|
9648
|
+
| D-3 | `readReadRootGrantNotice(notice)` 入参型 | changed(型放宽) | `{ code?, detail? } \| null \| undefined` → `unknown`(非破坏;读法与返回值不变) | 零改动即得 | 零改动即得 | n/a | 零改动即得 | n/a | G-D6 |
|
|
9649
|
+
| P-1 | `PARKED_RESUME_STARTUP_FAILED`;`parkedResumeStartupFromError(err, decision?)`;型 `ParkedResumeStartupDetail` / `ParkedResumeStartupCause` / `ParkedResumeStartupDecision` | consumed | 无 → 读口(只认 `errorCode` 串) | pending(决断出站代理上与既有几只 `say*` 同闸口,按这一发的方向传 `decision`) | pending(自己的决断失败面) | pending(同左,冻结期内零改动) | n/a | pending | 108a-3 · G-P1–G-P3 |
|
|
9650
|
+
| P-2 | `parkedResumeStartupContent(detail)` | added | 无 → 措辞单源(两句) | pending(说这一句,不自铸) | pending | pending | n/a | pending | 108a-3 · G-P4 |
|
|
9651
|
+
| P-3 | 读数上 `resendable: false` / `denyStaysOpen: true` | added | 无 → 判定(恒值) | pending(决断重试那一处:本码不自动重发;卡上 deny 保留) | pending(同左) | pending | n/a | pending | G-P5 |
|
|
9652
|
+
| P-4 | 包内四个决断出口的失败文字 | changed(补句) | `…failed: <原句>` → 本码时 `…failed: <原句> — <那一句>`;别的码逐字节不变 | 零改动即得(审批卡两条腿 / 提问卡腿 / 中断撤卡上屏行) | n/a(不走包内决断出口) | n/a | n/a | pending | G-P6 / G-P7 |
|
|
9653
|
+
| P-5 | `isCodeClassifiedGateFailure(code)`;包内停泊审批腿的「门已决」判定 | changed(码优先) | 扫词前只问 `isGateStandingErrorCode`(两码)→ 扫词前问本判定(两码 ∪ 本码);本码时不再按失败文字判「门已决」、不重连 | pending(自有「门已决」判据链:扫词之前问本判定;失败文字被拍平、读不到机读码的那条路,按 SDK 错误类名 `ParkedResumeStartupError` 兜底) | n/a(不走包内停泊腿;自有判据链时同左) | n/a | n/a | pending | 108a-3 · G-P8 / G-P9 |
|
|
9654
|
+
| E-1 | `removeRefusedSessionRules(facade, sessionId, roster, opts?)`;型 `SessionPolicyRemovalOutcome` / `SessionPolicyRemovedEntry` / `SessionPolicyRosterRequiredWhy` | added | — → 窄撤销动词(108a-4;`roster` 必交,缺席 / 读不了 ⇒ `roster_required`、零请求) | pending(「本会话规则」删除动作与可见段接它,名册取最近一份装配清单;非必改,见 108d) | n/a(未见会话规则写口) | n/a | n/a | pending | 108a-4 · G-E1–G-E5 · G-E9 / G-E10 |
|
|
9655
|
+
| E-2 | `sessionPolicyRemovalNotice(outcome)` | added | — → 八臂措辞(108a-5;撤成那句按桶分说) | pending(随 E-1) | n/a | n/a | n/a | pending | 108a-5 · G-E6 |
|
|
9656
|
+
| E-3 | `legacyToolNameFailureNoteOf(code)` | added | — → 启动失败出路句(108a-6) | pending(🔴 建议改:今天壳侧自己那一句按结果帧的旧键读码,换钉 ≥0.83.0 后会静默不再命中,见 108d) | n/a(未见终局失败按码补句的读点) | n/a | pending(建议:失败卡按码补这一句,见 108d;非必改) | pending | 108a-6 · G-E7 / G-E8 |
|
|
9657
|
+
| E-4 | `isEngineRefusedToolName(name)` | added | — → 引擎准备期按名字拒启的判据本体 | pending(可见段标坏行用它,不要自己判) | n/a | n/a | n/a | n/a | 108a-4 |
|
|
9658
|
+
| E-5 | `CONFIG_LEGACY_TOOL_NAME` | added | — → 码常量 `'config.legacy_tool_name'` | pending(换掉壳侧同值常量) | n/a | n/a | n/a | n/a | 108a-6 |
|
|
9659
|
+
| E-6 | `CONFIG_REFUSAL_CODES` | changed(+1 员) | 七员 → **八员**(+`config.legacy_tool_name`,排在最后) | n/a(按 `.has` / 前缀判即得) | n/a | n/a | n/a | pending(按「恰七员」或逐员逐序断言的改锚) | 108a′ |
|
|
9660
|
+
| W-1 | `decidePlanReview` 第四参 `DecidePlanReviewOptions.wire: { client, capsBaseUrl? }` | added | 无 → 注入连线:给了就只用它(POST + 回拉),已装目标一个字不读;client 不可用或连线本身坏形 ⇒ `not_sent` 专句、零请求、不抛;回拉是 15 s 独立落定的截止;`client` 的 `timeoutMs` 要求见 108a-9 | 零改动(继续装目标) | 🔴 接:`respondToPlan` 改调 `decidePlanReview(taskId, decisionWord, mode, { wire: { client: ctx.client, capsBaseUrl: ctx.approvalDecisionNoteBaseUrl }, reason, onOutcome })`,删本地编排(108d 网页端 ①) | 零改动(自有 client 直发,本包零读点) | n/a | pending | G-W1–G-W3 · G-W11 / G-W12 |
|
|
9661
|
+
| W-2 | `DecidePlanReviewOptions.reason` | added | 无 → 随决断上送 `PlanReviewRequest.reason`;trim / 空白与非串不落 / 超 4096 截断;去键重发保留;任一决断都可带 | 零改动(卡上无理由位) | 接:reject ⇒ `"rejected by user"`、revise ⇒ 反馈原文(与今天 `bodyOf` 同) | — | n/a | pending | G-W4 |
|
|
9662
|
+
| W-3 | `PlanReviewDeliveryOptions.onOutcome(outcome)`;型 `PlanReviewDecisionOutcome` | added | 无 → 结局交回宿主(与队列口并行;八键;`prompt` === 队列项 `value`;`status` 读到才落键);被闩拒不回调;队列口缺席 + 有回调 ⇒ 不打 error 级 MISSED | 可选(队列口在,零改动) | 🔴 接:按 `effect` 渲今天的人话回执(`took_effect` 静默、其余四句),删本地 `classifyPlanReviewEffect` 与回拉(108d 网页端 ①) | — | n/a | pending | G-W5 |
|
|
9663
|
+
| W-4 | `armPlanReviewApproval` 的 `opts.wire` / `opts.onOutcome`(命名形 `ArmPlanReviewOptions`) | added | 无 → 在场判看注入 client;CC-46 三选卡的证据键 = `wire.capsBaseUrl`(不给 ⇒ 老两选,不回落已装目标);responder 递交时原样带 | 零改动 | 候(网页端首呈卡今天走自家 `buildParkSurface`,不经 arm;换到包内首呈另立票) | — | n/a | pending | G-W2 |
|
|
9664
|
+
| W-5 | `ReopenPlanReviewOpts.wire` / `.onOutcome` | added | 无 → 缺省投递经注入 client;非默认槽 + `wire` 放行(此前必须自带 `deliverDecision`);canonical 复用臂沿用首呈的连线(成文例外) | 零改动(终端自带 `deliverDecision`) | 🔴 接:自愈 `reopenPlanReview` 供给改 `reopenPlanReviewCard(taskId, { trigger, wire: { client }, sessionKey: uiSessionId, onOutcome, presentationReceiptMs })`,并订阅 `onQuestionFrameFor(uiSessionId)` 渲卡(108d 网页端 ②) | — | n/a | pending | G-W6 |
|
|
9665
|
+
| W-6 | `EngineProbeOpts.client`(型 `EngineProbeClient`) | added | 无 → 两只探针直接用注入 client,`timeoutMs` 是独立落定的截止(到点答「不知道」并中止底层请求);凭证位不读 | 零改动 | 接(有调这两只探针时);今天零读点 | — | n/a | pending | G-W7 |
|
|
9666
|
+
| W-7 | 已装目标那条路(`EngineWireTarget` / `makeEngineWireClient` / 三口不带新位) | 不变 | 逐字节同 0.84.0(决断撞上请求时限那一臂除外,见 W-9) | 回归约束 | — | — | — | 回归约束 | G-W8 |
|
|
9667
|
+
| W-9 | `decidePlanReview` 决断 POST 撞上请求时限(sdk `TimeoutError`)那一臂的结局正文(两条路) | changed(结局正文) | 「could not reach the engine: <错误串>」→「was sent, but no answer came back from the engine within the time limit this host allows for it — it may have taken effect (…)」;`effect` 仍 `unconfirmed`;连不上照旧 | 零改动即得(6 h 时限罕见撞上) | 零改动即得(给中继 client 设 `timeoutMs` 后罕见撞上;见 108a-9) | n/a | n/a | pending(按旧句断言的格改锚,见 108a′) | 108a-9 · G-W10 |
|
|
9668
|
+
| W-8 | 子代族动词(tail / steer / output / compact ×2 / task handle ×2 / delegated prompt / resume)在中继部署下 | **pending**(包侧缺口) | 仍只吃已装目标;候「共用构造点收编 + 注入」 | — | 不接(今天零读点) | — | — | — | §7 P-28 · 包侧缺口 |
|
|
9669
|
+
| PD-1 | 终帧 CC 形 `permission_denials`(三键必填) | changed(读法) | 入参只被传输层脱敏过的拒绝:只在 `_sema_permission_denials` + `_absent: true` → 照进 CC 数组,`tool_input` = 帧上同一只对象(= 转录 `tool_use.input`) | 零改动即得(走 `runStream`;`-p` 结果帧整帧过境,新条目与新位原样到 stdout) | n/a(今天零读点) | n/a(今天零读点) | n/a | pending | 108a-7 · G-PD1 / G-PD3 / G-PD4 |
|
|
9670
|
+
| PD-2 | `_sema_permission_denials[]._sema_tool_input_redacted`(CC 数组同一条目同值) | added(超集位) | 无 → present-iff 严格 `true` | 可不读;凡拿 `tool_input` 做重跑 / 比对 / 生成放行规则的读点必读(今天终端没有这类读点) | n/a | n/a | n/a | pending | G-PD1 / G-PD2 |
|
|
9671
|
+
| PD-3 | `_sema_permission_denials_absent` | changed(落下条件) | 语义不变(= CC 那条清单不可声称完整);这一类不再让它落下 | 零改动即得(两键合读的读法不变:`[]` + 缺席 = 零拒绝) | n/a | n/a | n/a | pending | G-PD1 / G-PD5 |
|
|
9672
|
+
| PD-4 | `_sema_tool_input_source` | changed(在场条件) | 语义不变(只说来源);在场条件放宽到被脱敏过的入参 | 零改动即得 | n/a | n/a | n/a | pending | G-PD1 |
|
|
9673
|
+
| K-1 | 标签 / 方案词后、紧贴值夹不可见单字的地址形值 | changed(输出字节) | 按地址豁免(主机 / 路径原样)→ `scheme://` 留、主机与路径换 `«redacted:secret»`、query / 片段照旧换记号 | 经本包的合成终局行 / 结果帧 `errors[]` 升级即净;终端自带的呈现出口不在本版射程 | 零直接读点;经适配层的机读口升级即净 | 不在射程(钉的版本早于呈前出口) | 三种载体(正文 / 单行 / 字段)零改动即净;钉现状的提货格按预期翻红 → 翻面 | pending | 108a-8 · G-K1 / G-K2 |
|
|
9674
|
+
| K-2 | `user:<口令>@` 后主机位被可剥单元占住、没有主机 | changed(输出字节) | 不算 userinfo(口令原样)→ `«redacted:userinfo»@…`;候选挂在凭据标签 / 方案词上(是它的值或吞了它一截;标签被单元拆开也算)⇒ 让给标签那一遍整只遮(与 0.84.0 同字节) | 同上 | 同上 | 同上 | 同上 | pending | 108a-8 · G-K3 / G-K6 / G-K7 |
|
|
9675
|
+
| F-1 | 门夹具的 `done` 终帧形(六套:权限拒绝投影 / 流式计时 / 终态身份文案 / 终答补差 / 停泊决断 422 / 纯函数总套余下部分) | gates | 退役平面形 → 现役因由形 `result.terminal`;前后检查数逐一相同 | n/a | n/a | n/a | n/a | n/a(门内自证) | G-F1 |
|
|
9676
|
+
| F-2 | 合法扁平帧(409 拒绝信封 / 回放面)29 处 | gates | 无注 → 逐格注 `// 409:` / `// 回放面:` | n/a | n/a | n/a | n/a | n/a | G-F2 |
|
|
9677
|
+
| F-3 | 新门:扁平终帧未注位点棘轮 | gates | 无 → 上限 23,只降 | n/a | n/a | n/a | n/a | pending(可按 G-F3 自跑) | G-F3 |
|
|
9678
|
+
| F-4 | 新门:权威信封标签镜像 ⇄ 引擎表双向对账 + 三车道拆火消费面 | gates | 无门 → 常驻门(过渡读法) | n/a | n/a | n/a | n/a | pending(可按 G-F4 自跑) | G-F4 |
|
|
9679
|
+
|
|
9680
|
+
F-1 – F-4 只改门:那一件的 `src/` 零改动,dist、根公面、措辞都不因它变;同事正文的拆火行为(转录行里权威标签 `<` 后插零宽空格)逐字节不变,本版只是给那张表补了对账门,按 §17 接同事三车道的端零改动。
|
|
9681
|
+
|
|
9682
|
+
#### 108a-1 · 开标签定位口
|
|
9683
|
+
|
|
9684
|
+
- 文法与 104a-1 同(两形 + 七种不认的形),与剥离 / 解包两口是**同一个判定函数** —— 三口对「哪一处是开标签」永远同答。
|
|
9685
|
+
- `findSystemReminderOpenTag(text, from = 0)`:回 `start ≥ from` 的第一枚开标签的 `{ start, end }`(UTF-16 下标;`end` = 开标签后一位,`text.slice(start, end)` 恰是那枚开标签);没有回 `null`。`from` 落在一枚开标签内部时,那一枚不认。
|
|
9686
|
+
- 截断:开标签要整枚在场才认 —— 串尾的 `<system-reminder`、`<system-reminder mark="AbCd`、`<system-reminder mark="<22 位>"`(少 `>`)都不认;截断形后面紧跟一枚完整开标签时认后面那枚。
|
|
9687
|
+
- **与块上下文无关**:块正文里的字面开标签(引擎铸块时不转义正文)、没闭合的开标签、嵌套的内层开标签都认。本口只答「开标签在哪」,不答「它是不是一块的开头」。要与剥离口同块语义地切块,按下面的循环(从闭标签尾接着找,块里的字面开标签自然被跳过):
|
|
9688
|
+
|
|
9689
|
+
```ts
|
|
9690
|
+
const CLOSE = '</system-reminder>'
|
|
9691
|
+
let i = 0
|
|
9692
|
+
for (let open = findSystemReminderOpenTag(text, 0); open !== null; ) {
|
|
9693
|
+
const close = text.indexOf(CLOSE, open.end)
|
|
9694
|
+
if (close === -1) { /* 截断块:归块还是归正文由端定(剥离口原样留作正文) */ break }
|
|
9695
|
+
// 正文:text.slice(i, open.start);块体:text.slice(open.end, close)
|
|
9696
|
+
i = close + CLOSE.length
|
|
9697
|
+
open = findSystemReminderOpenTag(text, i)
|
|
9698
|
+
}
|
|
9699
|
+
// 余下正文:text.slice(i)
|
|
9700
|
+
```
|
|
9701
|
+
|
|
9702
|
+
这个循环与剥离口逐字节同答(门 F3 格)。「删掉一块后从串头重找」的写法两处与它不同:每删一块都重扫一遍(块多时平方),而且删块后两侧的字节拼在一起可能拼出一枚新的开标签;按上面的循环从原串的闭标签尾接着找,两处都没有。
|
|
9703
|
+
- 线性:单次调用一趟扫到命中或串尾;按上面的循环逐枚找完整串,总开销线性。
|
|
9704
|
+
- 入参:`text` 非串 ⇒ `null`(不强转;`String` 包装对象、带 `toString` 的对象同);`from` 的合法域 = 0 ≤ `from` ≤ `text.length` 的整数(缺席 = 0),域外(负数、小数、`NaN`、`±Infinity`、非数)⇒ `null`。都不抛。
|
|
9705
|
+
|
|
9706
|
+
#### 108a-2 · detach durable-off 400 纯判定
|
|
9707
|
+
|
|
9708
|
+
- `isDetachDurableOff400(err)` ⇒ `true` ⟺ `err.status === 400`(数字)∧ `err.message` 是串且含 `DETACH_DURABLE_OFF_400_ANCHOR`(`'x-detach-on-disconnect requires a durable run'`;这条拒绝的原文以它起头)。SDK 把错误体的 `error` 原文放进 `message`,所以对 SDK 抛出的错误直接调即可。
|
|
9709
|
+
- 🔴 **不认码**:这条拒绝带 `errorCode: 'request.precondition_unmet'`,但那是通用前置条件码 —— 同一条 `POST /v1/tasks/stream` 上与 detach 头无关的拒绝也用它(device 部署首轮没有会话、带 `deviceId` 而部署不在用户设备上执行、cascade 没配梯子)。按码判 = 对那些拒绝静默去头重发一次、说一句「没有耐久 run」的假话。
|
|
9710
|
+
- 不读进程台账:与 `isDetachArmed()` 无关,任何宿主都能调。`detachDurableOffHint(err)` = `isDetachArmed() ∧ isDetachDurableOff400(err)` ⇒ 提示行;两者在 armed 时同答。
|
|
9711
|
+
- 读法:`status`、`message` 按普通属性读 —— 原型链上的属性也认,函数对象带这两位也认。每个属性至多读一次,先读 `status`,不是 400 就不读 `message`。
|
|
9712
|
+
- **一律不抛**:非对象 / `null` / 缺字段 / `message` 非串 ⇒ `false`;读属性时 getter 抛错、Proxy 陷阱抛错、已撤销的 Proxy ⇒ `false`(不外抛、不重试读)。宿主通常在 `catch` 里调它,判定自己再抛会把原本那一枚错误遮掉。`detachDurableOffHint` 随之对这类对象回 `null`(此前已 arm 时原样抛出)。
|
|
9713
|
+
|
|
9714
|
+
#### 108a-3 · 422 `parked_resume.startup_failed` 的两种成因与读口怎么选句
|
|
9715
|
+
|
|
9716
|
+
- 成因 ①:续跑没起来 —— 被停泊的代理会话没了(这一形里那一行已不可再决),或引擎拒了这次决断本身(例如答案挂错了问题);成因 ②:停在一只「代理从发起它的任务继承来的工具」上的**批准**,这台服务端交不出那只工具 —— 同一个批准永远不会成,卡留在待决列表,deny 照样能结掉它(服务端对一层代理已能交出,更深层的代理与发起会话已删除或换了主人的行仍落这一形)。
|
|
9717
|
+
- 回体只有 `error`(引擎正文)/ `errorCode` / `taskId` / `rollback`,**没有**成因位;本包不按正文分臂。
|
|
9718
|
+
- `decision: 'deny'` ⇒ `cause: 'resume_rejected'`(成因 ② 只对批准出)⇒ 句子只说成因 ①:「重取待决列表,卡还在就从新列表再决」。
|
|
9719
|
+
- `decision: 'approve'`、未声明、或表外值 ⇒ `cause: 'undetermined'` ⇒ 句子摆两条出路:「引擎拒了这次决断本身 ⇒ 改正后再决;批准的是继承来的工具 ⇒ 再批在这台服务端上不会成,拒掉或等服务端升级」。
|
|
9720
|
+
- 两句的第二段相同:这次拒绝**不说**卡是否还在 —— 先重取待决列表。
|
|
9721
|
+
- **码优先**:本码的失败文字里是引擎原句;会话没了那一形恰含「Session not found」,会命中「门已决」扫词表(`no pending checkpoint` / `resolved` / `already` / `not found`)。本码不走那张词表:它既不是「门还在」(不进 `isGateStandingErrorCode`),也不是「门已决」,是「启动期失败、先重取待决列表」。
|
|
9722
|
+
|
|
9723
|
+
#### 108a-4 · 撤销动词
|
|
9724
|
+
|
|
9725
|
+
- **名册必交**:`removeRefusedSessionRules(facade, sessionId, roster, opts?)` 的 `roster` 是这台部署上一跑的工具名册(`wiring_manifest` 经 `projectToolRoster` 读出的 `ToolRosterView`)。引擎准备期那道审计先问「名字在不在这一跑的名册里」—— 集合 = 每行的 `name` ∪ 该行的 `aliases`,**原样比、分大小写**(`task` 不豁免 `Task`)—— 在就放行,两类硬失败都不走。部署自己挂了一只恰叫退役名的工具(如一只叫 `Task` 的自定义工具,或别名恰是 `KillShell` 的工具)时,记录里那一条是**生效的**限制;本动词因此只撤「判据本体说会拒 ∧ 名字不在名册里」的条目。
|
|
9726
|
+
- 名册缺席(`undefined` / `null`)⇒ `roster_required` / `absent`;交了但读不成名册(不是对象、`entries` 不是数组、任一行没有非空串名字、`aliases` 在场却不是串数组、读属性就抛)⇒ `roster_required` / `unreadable`。两形都**一个请求都不发**(读都不读)。绝不半张名册:少读一行 = 把那只工具当没挂 = 多撤一条生效的限制。读得懂的空名册(一只工具都没挂)是名册,照常判。
|
|
9727
|
+
- 名册从哪来:因 `config.legacy_tool_name` 启动失败的那一跑在交出装配清单**之前**就停了(引擎先审计、后铸清单),交不出名册;取这条会话 / 这台部署上最近一次过了准备阶段的一跑的清单。两跑挂的工具不同时按交来的那一份判(KL-182)。
|
|
9728
|
+
- **做什么**:`GET` 当前记录(窄读同 `readSessionPolicy`)→ 在 `toolDeny` / `toolAllow` 里拿掉 `isEngineRefusedToolName` 判「会拒」且名字不在名册里的条目(同一桶里重复的同名条目全拿掉、结局里只记一次)→ 带读到的版本号 `PUT` 整份记录 → 回执对账(版本号推进、留着的条目都在、撤掉的条目**不在**)。
|
|
9729
|
+
- **不做什么**:不删别的条目(通用删除在属主身份上是放宽,引擎照拒);不碰命令桶 / 目录桶(不进那道审计);不改写成现名(往白名单里加名字是放宽;往禁止名单里加现名交给用户自己决定);不读能力位、不按引擎版本猜。
|
|
9730
|
+
- **判据用本体,不用 `legacy_tool_name` 判词**:判词排在逐条判据最后,` foo__bar` / `foo__*` 先被判成 `not_a_tool_name` / `wildcard`;这些形照样让引擎拒启,按判词撤会漏掉它们、会话照样起不来,还会答一句「没有要撤的」。
|
|
9731
|
+
- **两代引擎**:
|
|
9732
|
+
- 老引擎:普通调用方从 `toolDeny` 里删任何一条都算放宽 ⇒ `loosen_forbidden`,**记录不变**(恰写一次、不重试)。只有 `toolAllow` 里有坏行时,删它是收紧方向 ⇒ 撤得成。运营方身份两种都撤得成。
|
|
9733
|
+
- 较新的引擎(宣布「删一条引擎会拒启的名字不算放宽」之后):普通调用方也撤得成。
|
|
9734
|
+
- **结局**:
|
|
9735
|
+
|
|
9736
|
+
| `kind` | 什么时候 | 记录 | 附带 |
|
|
9737
|
+
|---|---|---|---|
|
|
9738
|
+
| `roster_required` | 名册缺席(`why: 'absent'`)或读不了(`why: 'unreadable'`) | 没读、没写 | `why` |
|
|
9739
|
+
| `removed` | 回执读得懂且对得上 | 撤掉的条目已不在,版本号 +1 | `rev`(新版本号)、`removed`(撤掉的条目,按桶名全集的序、桶内按记录序,非空) |
|
|
9740
|
+
| `nothing_to_remove` | 两只桶里没有「会拒且名册里没有」的条目 | 没写 | `rev`(读到的版本号) |
|
|
9741
|
+
| `loosen_forbidden` | 引擎把这次删除判成放宽 | 不变 | `message`(引擎原文)、`refused`(本想撤的条目) |
|
|
9742
|
+
| `conflict` | 重读重写一次之后仍被并发键挡住 | 没写 | `rev`(第二趟依据的版本号) |
|
|
9743
|
+
| `read_failed` | 当前记录读不到 / 读不懂 | 没写 | `why`、可选 `message` |
|
|
9744
|
+
| `write_refused` | 引擎带码拒了这次写(客户端侧拒绝都在落盘之前) | 没写 | `why`、可选 `message` |
|
|
9745
|
+
| `write_unconfirmed` | 裁决没到手(裸抛 / 断连 / 5xx / 不带码的 4xx)或回执读不懂 / 对不上 | **可能已经生效** | `why`、可选 `message`;再调一次即核对 |
|
|
9746
|
+
|
|
9747
|
+
`why` 取自 `SessionPolicyTightenUnknownWhy` 的子集:`read_failed` ∈ {`face_unavailable`, `session_not_found`, `session_ownerless`, `unauthorized`, `request_rejected`, `store_corrupt`, `read_unreadable`, `read_failed`};`write_refused` ∈ {`face_unavailable`, `session_not_found`, `session_ownerless`, `unauthorized`, `request_rejected`, `store_corrupt`, `write_refused`};`write_unconfirmed` ∈ {`write_indeterminate`, `write_receipt_unreadable`, `write_receipt_mismatch`}。
|
|
9748
|
+
|
|
9749
|
+
#### 108a-5 · 撤销措辞
|
|
9750
|
+
|
|
9751
|
+
`sessionPolicyRemovalNotice(outcome)` 八臂各一句(失败臂与名册臂按 `why` 再分几句):
|
|
9752
|
+
- `roster_required`:什么都没改;没有名册(或读不了),看起来会拒的名字可能是这台部署自己挂的工具,撤了会放宽一条生效的限制;`absent` 那句指路「交这条会话在这台部署上一跑的名册(启动失败的那一跑不交名册)」,`unreadable` 那句指路「按装配清单读出的原样交」;
|
|
9753
|
+
- `removed`:`Removed N entr(y|ies) from this session’s rule record (now at version V): (it|each) names a tool the engine refuses, and no tool in the supplied roster answers to (it|those names); this record no longer stops the session’s runs from starting.`,后面**按撤掉的桶**接一半或两半:撤了 deny ⇒「从 deny 列表拿掉名字不解开任何挂着的工具;要按现名拦就新加一条 deny」;撤了 allow ⇒「从 allow 列表拿掉名字不放行任何新东西:那些名字原想放行的工具仍在列表外,列表拿空即一个工具都不放行;要按现名放行就把现名加回 allow 列表」;
|
|
9754
|
+
- `nothing_to_remove`:什么都没改;若仍启动失败,那一条在这条记录管不到的地方(随跑设置 / 父会话规则记录 / 部署自己的工具规则),或是本版还不认得的新拒启名,或失败那一跑没挂交来的名册里同名的那只工具;
|
|
9755
|
+
- `loosen_forbidden`:这台引擎上只有运营方能从会话规则记录里删条目,记录没变;找运营方,或换一个新会话继续;
|
|
9756
|
+
- `write_unconfirmed`:可能已经生效,再跑一次撤销(它会重读,生效了就答没有要撤的);
|
|
9757
|
+
- 其余:什么都没改(规则店故障那句另说需要运营方看一眼规则店)。
|
|
9758
|
+
|
|
9759
|
+
纪律:零用户字节(条目原串与引擎原文都不进句子;要摆哪几条由宿主对 `removed` / `refused` 取);表外值回通用句,不抛。
|
|
9760
|
+
|
|
9761
|
+
#### 108a-6 · 启动失败出路句
|
|
9762
|
+
|
|
9763
|
+
`legacyToolNameFailureNoteOf(code)`:`code === 'config.legacy_tool_name'` ⇒ 下面这一句,否则 `undefined`(别的 `config.*` 码不在这里答)。
|
|
9764
|
+
|
|
9765
|
+
`This run did not start: a tool rule applied to it names a tool the engine refuses — a retired tool name, or a name that contains "__" but does not start with "mcp__" or "a2a__" (the engine's own error text names the entry). Every later run fails the same way until that entry is removed from wherever it is set: this session’s rule record, the settings sent with the run, a parent session’s rule record, or the deployment’s own tool rules.`
|
|
9766
|
+
|
|
9767
|
+
- 码从哪取由宿主定:结果帧的超集键 `_sema_error_code`(0.83.0 起;此前骑 `errorCode`)、`readRunTerminal` 读数 `failed` 臂的 `code`、子代工具结果的 `errorCode` 都行。
|
|
9768
|
+
- 句子不断言「一定在会话规则记录里」:同一枚码也从调用方策略那一层来(G-E8 实跑);会话规则记录排第一是因为它是撤销动词管得到的那一处。
|
|
9769
|
+
- 不点名谁能删:会话规则记录里那一条,老引擎上只有运营方能删、较新的引擎上属主可删;撤销动词的结局会说出这一台的答案。
|
|
9770
|
+
- 不回显名字、不读引擎原文(那一行已在失败文字里,且点了名)。
|
|
9771
|
+
|
|
9772
|
+
#### 108a-7 · 哪几类拒绝在 CC 形清单上、哪几类不在
|
|
9773
|
+
|
|
9774
|
+
- **在**(三键齐):入参来自账本(今天没有)或同一条流的 `tool_start`,且是普通对象、扫描在预算内(节点 ≤ 20000、深度 ≤ 80)。其中被传输层动过的(字符串叶含 `«redacted` 前缀的记号,或叶值恰为 `[circular]` / `[depth-limit]`)**本版起也在**,条目带 `_sema_tool_input_redacted: true`。
|
|
9775
|
+
- **不在**(只在 `_sema_permission_denials`,`tool_input` 缺席,`_absent: true`):行无 `toolCallId` · 本流没见过那只 `tool_start` · 同一个 id 两份不同入参 · 入参不是普通对象 · 超扫描预算(含「被动过 ∧ 超预算」)· 本流快照溢出 · 流内补行工具名读不出。这几类手里**没有**一只可交出的入参对象;本包不编。
|
|
9776
|
+
- 为什么收「被动过」那一类而不收「没有对象」那几类:前者本包手里有对象,而且同一条输出流里已经把它当 `tool_use.input` 交出;在拒绝清单里再拒收同一只对象,换来的只是条数错。后者手里什么都没有,填 `{}` 是编造一个「入参为空」的事实。
|
|
9777
|
+
- 严格的消费方:CC 数组元素上多出的超集位(`_sema_tool_input_source` / `_sema_tool_input_redacted` / `_sema_tool_arg` / `deniedBy` / `toolDenialKind`)在缺省的对象校验下被剔掉;对元素做「禁止未知键」形校验的消费方会判非法 —— 这一风险自 0.73.4 起就在(不是本版新引入)。
|
|
9778
|
+
|
|
9779
|
+
#### 108a-8 · 凭据读法两处收口的判据(逐条)
|
|
9780
|
+
|
|
9781
|
+
1. **不可见单字** = 判别视图里的可剥单元中,完整转义序列(CSI / nF / Fp / Fe、已结尾的控制串、被下一枚单元截断的序列前缀)以外的那些:格式类字符(`\p{Cf}`)、孤代理项、非空白控制符(C0 除 `\t` `\n` `\v` `\f` `\r`、DEL、C1)、没接成序列的 ESC / C1。原字与本出口画出的可见转义形(`\uXXXX` / `\u{…}`)同判;空白码位的转义形(`\u000A`、`
` 等)与原字同判,算空白。
|
|
9782
|
+
2. **地址形** = 值以 `scheme://`(scheme 2–16 位)打头,或以 `«redacted:userinfo»@` 打头。
|
|
9783
|
+
3. **紧贴** = 值起点左边连着的那一串可剥单元里至少有一枚不可见单字(串里可混着序列)。左邻是真空白 / 分隔符 / 引号 ⇒ 不算(值是独立的一只地址);只有序列 ⇒ 不算。
|
|
9784
|
+
4. **遮盖**:`scheme://` 留;其后到 `?` / `#`(或外延末)换 `«redacted:secret»`;`?` / `#` 之后照豁免时换 `«redacted:query»` / `«redacted:fragment»`。外延取「豁免时的外延(到下一个引号外空白)」与「值本身(到停字符)」较长的一段;段末跨着下一枚标签时与豁免同样停在标签前,那枚标签照常遮它自己的值。
|
|
9785
|
+
5. **空主机**:`@` 之后一串可剥单元(任一种),之后是右界(串尾 / 空白 / `` / ? # " < > ` | \ ^ { } ``)、`:<数字>` 再右界、或下一枚 `@` ⇒ 前面的 `<名>:<串>` 按 userinfo 遮;这一形里用户名一段跨过可剥单元。单元之后直接是主机的形不走这一条(并联读法本来就认得出)。
|
|
9786
|
+
6. **候选挂在标签上**(第 5 条的让位):窗口 = 上一枚 `@` 之后到这一枚 `@`,在两种读法上各找凭据标签(带分隔)与方案词(带分隔)—— 原样读法(可剥单元照算空白)与剥掉可剥单元的读法(`to` + 软连字符 + `ken=`、`"pass` + 孤代理项 + `word":`、`Bea` + 零宽空格 + `rer `、`tok` + 着色序列 + `en=` 这种被拆开的词)。有一枚匹配的**末端落在候选起点或其右**(候选就是它的值:分隔一直吃到候选起点,含引号值的开引号;或候选吞了它一截)⇒ 不认,留给标签那一遍整只遮(与 0.84.0 同答)。末端在候选起点左边、中间隔着别的字(`token=abc user:<口令>@…`)⇒ 照认。只在空主机形上判;主机在场的形照旧(KL-193)。
|
|
9787
|
+
|
|
9788
|
+
#### 108a-9 · 注入 client 路径的决断时限与读口截止
|
|
9789
|
+
|
|
9790
|
+
- 🔴 **注入 client 的 `timeoutMs` 不低于 6 小时**(`21600000`,与已装目标那条路的决断预算同一档),**建议 `maxRetries: 0`**(本包自构造的 client 同此)。例(浏览器同源中继宿主):`new AgentClient({ baseUrl: '', authToken: { mode: 'same-origin-relay' }, timeoutMs: 6 * 60 * 60 * 1000, maxRetries: 0 })`,专给 plan-review 连线用。
|
|
9791
|
+
- 为什么:批准会让引擎把续跑**同步**驱动到终态才答复,常常是分钟级;sdk 的逐请求选项只有取消信号(没有逐请求时限 / 重试开关),本包改不了宿主 client 的时限。沿用 sdk 缺省 60 s 的 client,续跑超过一分钟的批准会落时限那一臂。
|
|
9792
|
+
- 时限那一臂(两条路同一句):sdk 每请求时限到点(`TimeoutError`)⇒ `effect: 'unconfirmed'`,结局正文「The plan_review <决断> was sent, but no answer came back from the engine within the time limit this host allows for it — it may have taken effect (…)」—— 这一发已经送出、引擎多半正在驱动续跑,**不是**连不上;连接被拒 / 断网照旧「could not reach the engine: <错误串>」。
|
|
9793
|
+
- 本包经注入 client 的读都有**独立落定**的截止,与 client 的时限长短无关:决后回拉 15 s、`engineSupportsTaskAgents` 3 s、`probeScenarioTools` 2 s(后两者可经 `timeoutMs` 改)。截止到点即落定(回拉当失败、回落 200 体的状态;探针答「不知道」),同时中止底层请求。注入 client 的读重试在退避 / `Retry-After` 睡眠期间不看取消信号 —— 截止照样按时落定,但那只 client 可能再睡一轮(至多 60 s)才收手;`maxRetries: 0` 即无此形(KL-191)。
|
|
9794
|
+
- 已装目标那条路不变:决断用独立的 6 h client、回拉用独立的 15 s client,两只都 `maxRetries: 0`。
|
|
9795
|
+
|
|
9796
|
+
### 108a′. 成文改口(旧判据眼作废 → 新判据眼)
|
|
9797
|
+
|
|
9798
|
+
**作废**(旧判据眼装 0.84.1 后判红是预期行为,不是回归):
|
|
9799
|
+
|
|
9800
|
+
1. §104 包侧缺口 ⑦「开标签文法本身不上公面,要按开标签切块的端仍自持文法」的后半句 —— 切块的端换读 O-1 即可,不必自持文法。前半句(文法常量不上公面)照旧成立。
|
|
9801
|
+
2. §104 处置表 R-1 管理台格与 104d「回放面按开标签切块的那一处仍需文法(见包侧缺口 ⑦)」—— 那一处换读 O-1。
|
|
9802
|
+
3. 「浏览器 / 桌面拿不到 detach 400 的判定,只能本地自写」—— 用 DT-1。
|
|
9803
|
+
4. 「已 arm 时 `detachDurableOffHint` 对读属性会抛错的错误对象原样抛出」—— 本版起回 `null`(G-DT6)。
|
|
9804
|
+
5. 「`noticeAudienceOf('instructions.source_changed') === 'operator'`(属运维面)」—— 本版起受众 `user`;`memory.layer_locked_legacy` 受众仍 `operator`(服务端只在启动期把它记进运维日志,不上用户流),此前是回落、本版起表上写明。按「受众为 `operator`」写的判据在 0.84.1 上必须判红(G-N2)。
|
|
9805
|
+
6. 「`engineNoticeInCatalog('instructions.source_changed')` / `engineNoticeInCatalog('memory.layer_locked_legacy')` 答 `false`(册外、只落调试)」—— 本版起两枚都答 `true`(在册、册内通用行)。按「这两枚码册外 / 只落调试」写的判据在 0.84.1 上必须判红(G-N2)。
|
|
9806
|
+
7. 「422 `parked_resume.startup_failed` + 正文含 `not found` ⇒ 包内停泊腿走重连一轮」—— 0.84.0 及以前的误判,本版起判红;按旧行为写的判据(「这一形会重连一轮」)作废(G-P8)。
|
|
9807
|
+
8. 「`CONFIG_REFUSAL_CODES` 恰七员」—— 改八员,新员 `config.legacy_tool_name` 排在最后。
|
|
9808
|
+
9. §66 **G2**(join 负半):「入参里带一段会被传输层替换的凭据形串 ⇒ `permission_denials` 空、`_sema_permission_denials` 一条(带 `tool_use_id`,无 `tool_input`)、`_absent: true`」—— 本版起该形 `permission_denials` 恰一条、`tool_input` 与转录 `tool_use.input` 同一只对象、两载体同一条目 `_sema_tool_input_redacted: true`、`_absent` 不在场(G-PD1)。
|
|
9809
|
+
10. §66 **G3**(混合,一正一负且负的是 G2 那一形):「CC 数组一条、sema 载体两条、`_absent: true`」—— 本版起 CC 数组两条(脱敏那条带标记)、`_absent` 不在场(G-PD3)。负的一条若是「没有对象」那几类(例:行无 `toolCallId`),旧判据照旧成立。
|
|
9810
|
+
11. 按「CC 形数组里的条目都没被传输层动过 / `tool_input` 字符串叶里不会出现 `«redacted…»`」写的判据眼 —— 本版起有标记的条目恰是这一形。
|
|
9811
|
+
12. 按「`Authorization: Bearer` + 孤代理项 + `https://…` 在正文 / 单行 / 字段载体上原样露出值」钉现状的格,以及「同一位置换成零宽空格同样露出」的对照格([8562])—— 本版三种载体都不含值、都含 `«redacted:`(G-K1)。
|
|
9812
|
+
13. 按「`user:<口令>@` + 不可见单元、没有主机 ⇒ 机读口 / 转义形原样」钉现状的格(G-K3)。
|
|
9813
|
+
14. 按「`decidePlanReview` 决断撞上请求时限 ⇒ 结局正文「The plan_review decision could not reach the engine: …」」钉现状的格 —— 本版起这一臂说「was sent, but no answer came back from the engine within the time limit …」(G-W10);连接被拒 / 断网那一形照旧。
|
|
9814
|
+
|
|
9815
|
+
**改读**(判据的意思保留,换读法):
|
|
9816
|
+
|
|
9817
|
+
1. §66a **S-1**「三道闸(普通对象 / 没被传输层动过 / 扫描预算内)」→ **两道闸**(普通对象 / 扫描预算内)+ **一个标记判定**(被传输层动过 ⇒ 照交出,盖 `_sema_tool_input_redacted`)。
|
|
9818
|
+
2. §66b 第一条「`tool_input` 缺席 = 拿不出可信的入参对象,五种原因之一」→ **四种**:行无 `toolCallId` · 本流没见过那只 `tool_start` · 入参不是普通对象 · 超扫描预算;「入参被传输层动过」一因移出(那一类现在 `tool_input` 在场并带标记)。「绝不等于入参为空」不变。
|
|
9819
|
+
3. §66z **#3**「传输层替换记号 / 环与深度占位串:consumed(只作『被动过』判据,不反解)」→ consumed(只作**标记**判据,不反解、**不拦**)。
|
|
9820
|
+
4. 0.73.4 发布说明「被拒的调用没有改写,所以拒绝清单上的 `tool_input` 就是模型发出的入参」→ 射程限定:`tool_input` 是调用开始时 `tool_start` 帧上的入参(= 模型发出的那份,审批人改写过的是改写后那份);**不是**「被拒的那份」—— hook / 策略在判定前改写过入参的调用,被判并拒绝的是改写后的最终入参(KL-175)。本版新收的脱敏条目另有一层:它还是脱敏视图(标记在场)。
|
|
9821
|
+
5. §66 包侧缺口 ②「被传输层动过的入参无机读判别位(今按字面记号认)」→ 仍成立,改读为「标记按字面记号盖」(KL-11 改写)。
|
|
9822
|
+
6. 按 0.83.4 原样凭据字节(`Authorization: «redacted:secret»`、`Bearer «redacted:secret»`)写的判据,改锚为「输出不含值的字面 ∧ 含 `«redacted:`」(本版字节见 G-K1 / G-K2)。
|
|
9823
|
+
7. §106y 第 2 条「已中招的会话要把那一条从会话规则记录里删掉(今天的引擎上只有运营方能删)」与 §106 包侧缺口 ③「已经写进会话规则记录、每跑启动失败的会话本包救不回,也还没有专门出路句」—— 本版起有撤销动词(E-1)与出路句(E-3);老引擎上属主撤 `toolDeny` 仍会被判放宽而拒(撤销动词如实答 `loosen_forbidden`),较新的引擎上属主可撤。
|
|
9824
|
+
8. §5d 与 §7 **P-28**「正位解 = 放宽 `EngineWireTarget.token` + 10 处透传」—— 改为:plan-review 三口与两只探针以注入 client 解(本版,§5d 入参面表末两行);子代族候「共用构造点收编 + 注入」。§5d 末表 A 档「用户看不看得见取决于通知队列口装没装」补:宿主接了 `onOutcome` 也算可见通道(本版起两条通道并行)。活段 §5d / §7 P-28 已随本版改写。
|
|
9825
|
+
9. 注入 client 路径的决断时限:宿主交进来的 client 的 `timeoutMs` 不低于 6 h、建议 `maxRetries: 0`(108a-9);决断撞上时限那一臂按 G-W10 的句子判「已送出、结果未确认」,不按「连不上」判。
|
|
9826
|
+
|
|
9827
|
+
**新增**:G-O1–G-O6 / G-DT1–G-DT6 / G-N1–G-N5 / G-D1–G-D6 / G-P1–G-P9 / G-E1–G-E10 / G-W1–G-W12 / G-PD1–G-PD6 / G-K1–G-K7 / G-F1–G-F4。
|
|
9828
|
+
|
|
9829
|
+
**不变**:
|
|
9830
|
+
|
|
9831
|
+
- 剥离 / 解包两口的块语义与答案(§104 G-R2 / G-R4 / G-R6 照旧成立)。
|
|
9832
|
+
- `detachDurableOffHint` 对其余输入的答案(未 arm 恒 `null`;armed 时对 durable-off 400 出那一行、其余 `null`)。
|
|
9833
|
+
- 引擎码册镜像 `ENGINE_NOTICE_CODES` / `ENGINE_NOTICE_AUDIENCE` 的成员与顺序;六只既有事实读器(含 0.84.0 的读目录授权结论读口)的读法;两表之外的码受众仍保守 `operator`。
|
|
9834
|
+
- 决断出口在别的码 / 无码上的失败文字逐字节同 0.84.0;没有机读码 / 别的码的失败,包内停泊腿「门早已决」扫词臂照旧。
|
|
9835
|
+
- `sessionPolicyDeliverable` 的判决与话(`legacy_tool_name` 臂改调判据本体,同表同序)。
|
|
9836
|
+
- plan-review 三口不带新位时(请求体 / 出站头 / 结局文字〔决断撞上请求时限那一臂除外〕/ 队列项键集 / 投递闩 / 投递序号 / 重开判决)逐字节同 0.84.0;`EngineWireTarget` 型与 `makeEngineWireClient` 不动。
|
|
9837
|
+
- 拒绝清单「没有对象」几类的处置(§66b 其余四因、§66 G4、0.82.1 对账的缺字段行);账本自带入参恒优先;`_sema_tool_input_source` 的值与「只说来源」的语义;`_sema_permission_denials_absent` 的语义(CC 那条清单不可声称完整)与两键合读法;`_sema_zero_output_denied` 的三条合取(读的是 sema 载体,不受本件影响);流内快照的 per-stream / 上限 / 单向闩 / 两份不同入参出表。
|
|
9838
|
+
- 凭据读法:孤代理项与零宽空格同位同答(§105 的同处置不变量)照旧成立;干净文本逐字节不变照旧成立;标签 / 方案词的值是空主机 userinfo 形时与 0.84.0 逐字节同(G-K6)。
|
|
9839
|
+
- 同事正文的权威标签拆火逐字节不变。
|
|
9840
|
+
|
|
9841
|
+
已发段(§66、§104、§106 与 0.73.4 的 CHANGELOG 段)不回改,以本段为准。
|
|
9842
|
+
|
|
9843
|
+
### 108b. 缺席语义(逐键)
|
|
9844
|
+
|
|
9845
|
+
**开标签定位口 / detach 判定**
|
|
9846
|
+
|
|
9847
|
+
- `findSystemReminderOpenTag` 回 `null` = 从 `from` 起没有(完整的)引擎形开标签 —— 串里只有截断形 / 非引擎形也是 `null`;`text` 非串、`from` 域外同样是 `null`。它**不是**「不知道」:在切块循环里读作「余下都是正文」(方向与剥离口对截断信封的处置一致:宁可多渲,不吞正文),调用方把位置算错时循环也照样收尾、不会从头重扫。
|
|
9848
|
+
- 回 `{ start, end }` 不代表这一块闭合了:有没有闭标签要调用方自己找(108a-1 的循环)。
|
|
9849
|
+
- `isDetachDurableOff400` 回 `false` = 这一枚错误不是(或认不出是)detach durable-off 400:非 400、没有锚句、非对象、读属性就抛错的对象都落这里。那条拒绝的原文改了时也落这里 —— 方向:不退让、不出提示行,原 400 照常交给宿主(不会静默重发)。
|
|
9850
|
+
- 回 `true` 只看两位的值,不看载体的形:函数对象、原型链上带 `status: 400` 与含锚句 `message` 的对象同样回 `true`。常见的本地实现先判 `typeof err === 'object'`,对函数对象回 `false` —— 换读本口时这是唯一的答案差别(SDK 抛出的错误都是对象,真部署上碰不到)。
|
|
9851
|
+
|
|
9852
|
+
**服务端自铸码 / 派发口 / 停泊决断 422**
|
|
9853
|
+
|
|
9854
|
+
- `readInstructionsSourceChanged`:`previous` / `current` 的 `null` 是真读数(「那一次运行没有项目指令文件」);键缺席、空串、非串非 `null`、只在原型链上 ⇒ 整只 `undefined`(不是 `null`)。`sessionId` 缺席 / 空串 ⇒ 整只 `undefined`。视图里没有运行 id(服务端铸点不带;运行归属由投递它的那条流承载)。
|
|
9855
|
+
- `readEngineNoticeFacts`:`undefined` 不是「没发生」—— 在册码走册内通用行渲引擎 / 服务端给的 `message`,册外码只落调试(端的分流,不在本口)。表里有这个码但读器判不成形 ⇒ `undefined`(不交半只读数)。
|
|
9856
|
+
- 读目录授权两码经派发口(派发口不做类型断言,`facts` 按码收窄到那只读口的视图型):`facts` 是 `readReadRootGrantNotice` 的两臂联合视图(型面上两码都是这只联合),按 `facts.outcome` 判别 —— 读口按码出臂,granted 码恒出 granted 臂、rejected 码恒出 rejected 臂;granted 形坏(缺 `dir` / `root`、`covers` 在场而不是 `"exact"`)⇒ 派发口与直接调读口同判 `undefined`(不折成目录义)。
|
|
9857
|
+
- `parkedResumeStartupFromError`:`null` = 不是这枚码(别码、无码、非对象、取值器抛)⇒ 端走原有失败面。`taskId` 读不出 ⇒ 键缺席(不编)。`decision` 缺席 ⇒ `undetermined`。
|
|
9858
|
+
- 老服务端(不发这枚码)/ 缺席:读口恒 `null`,决断出口失败文字与 0.84.0 逐字节同。
|
|
9859
|
+
|
|
9860
|
+
**拒启会话的撤销动词 / 出路句**
|
|
9861
|
+
|
|
9862
|
+
- `roster` 缺席 ≠「这台部署没挂工具」:缺席 / 读不了 ⇒ `roster_required`,一条不撤、零请求;读得懂的空名册才是「一只都没挂」。结局里不回显名册。
|
|
9863
|
+
- `removed` 恒非空(空就是 `nothing_to_remove`);`refused` 恒非空。
|
|
9864
|
+
- `message` 缺席 = 引擎没给文字,不是「没有原因」;它是引擎原文,展示前按不可信文本处理。
|
|
9865
|
+
- `nothing_to_remove` ≠「这条会话不会再启动失败」:只说这条记录里没有「本版认得的拒启名 ∧ 交来的名册里没有」的条目(见包侧缺口 ⑧ ⑨ ⑫)。
|
|
9866
|
+
- `legacyToolNameFailureNoteOf` 返回 `undefined` = 不是这一枚码,不是「没有出路」。
|
|
9867
|
+
- `write_unconfirmed` 上**没有** `rev`(不知道新版本号;也绝不借读到的那个)。
|
|
9868
|
+
|
|
9869
|
+
**plan-review 注入 client**
|
|
9870
|
+
|
|
9871
|
+
- `opts` / `opts.wire` 缺席 = 旧路径:经 `engineWireTarget()` 自构造;目标没装 ⇒ `not_sent`「no engine connection is configured」(不变)。
|
|
9872
|
+
- `wire` 在场而 `wire.client` 不是对象 / 缺 `assistant.planReview` / 缺 `runs.get`,或 `wire` 本身是 `null` / 非对象 / 读 `client` 就抛 = 不可用 ⇒ `not_sent`,专句「the engine client supplied by the host cannot send it」,`onOutcome` 照回、不抛;**不**回落已装目标。`armPlanReviewApproval` 同形 ⇒ `false`、零帧。
|
|
9873
|
+
- `wire.capsBaseUrl` 缺席 = 版本证据 `unknown` ⇒ 老两选卡(即使已装目标的 baseUrl 上有 ≥7.86.0 证据也不读它)。
|
|
9874
|
+
- `reason` 缺席 / 非串 / 纯空白 = 键不落(体逐字节同旧);超 4096 = 截到 4096(边界不切代理对)。
|
|
9875
|
+
- `onOutcome` 缺席 = 只投队列口;队列口也缺席 ⇒ 照旧 error 级 MISSED。在场 ⇒ 每次放行恰一次;被闩拒 = 不回调。载荷 `status` 缺席 = 回拉与 200 体都没读到状态(此时 `effect` 必是 `unconfirmed` / `not_sent` / `not_applied` 之一)。
|
|
9876
|
+
- `ReopenPlanReviewOpts.wire` 缺席 ∧ `deliverDecision` 缺席 ∧ 非默认槽 = 照旧拒开(error 留痕);canonical 复用臂上 `wire` / `onOutcome` = 不生效(debug 留痕)。
|
|
9877
|
+
- `EngineProbeOpts.client` 缺席 = 旧路径(自构造);在场而缺动词 = 「不知道」(`undefined` / `null`),零请求;`timeoutMs` 缺席 = 3 s / 2 s 缺省(独立落定的截止)。截止到点的「不知道」与失败的「不知道」同形 —— 不是「不支持」。
|
|
9878
|
+
- 注入 client 的每请求时限 = 宿主构造时的 `timeoutMs`(sdk 缺省 60 s),本包改不了(108a-9 要求不低于 6 h);回拉腿另有 15 s 独立落定的截止,到点 ⇒ 状态按决断 200 体自带的措辞(载荷 `status` 取那一份;都没有 ⇒ 键不落、`unconfirmed`)。
|
|
9879
|
+
- 决断撞上请求时限 ⇒ `effect: 'unconfirmed'`、结局正文「was sent, but no answer came back …」:**不是**「没送出」,也不是「没生效」—— 先读任务状态。
|
|
9880
|
+
|
|
9881
|
+
**拒绝清单**
|
|
9882
|
+
|
|
9883
|
+
- `_sema_tool_input_redacted` 缺席 = 这条 `tool_input` 上没扫到替换记号 / 占位串,**或** `tool_input` 不来自流内帧(来自账本),**或**根本没有 `tool_input`。它**不**等于「这就是原值」:判据是字面记号,上游没有机读位;也不说「这就是被拒的那份入参」(KL-175)。
|
|
9884
|
+
- `_sema_tool_input_redacted` 在场而 `_sema_tool_input_source` 缺席 —— 不会出现(在场时来源位恒为 `'tool_start'`)。
|
|
9885
|
+
- `permission_denials` 里某条带标记 ⇒ 那条的 `tool_input` 是脱敏视图:渲染照常(记号本身就是给人看的),**不要**拿它重跑、比对原值或生成放行规则。
|
|
9886
|
+
- `_absent` 缺席 + CC 数组里有带标记的条目 = 清单**条数完整**;入参保真度逐条看标记。
|
|
9887
|
+
|
|
9888
|
+
**凭据读法 / 门**:无新键、无新导出、无新类型 —— 凭据那一件只改两网的输出字节;门那一件不读、不铸任何 wire 键。
|
|
9889
|
+
|
|
9890
|
+
### 108c. 黑盒判据骨架
|
|
9891
|
+
|
|
9892
|
+
> 🔴 标「本版证明」的格在**上一发布版**(0.84.0)产物上必须 FAIL、在 0.84.1 上必须 PASS;标「回归约束」的格两版都 PASS;标「端侧验收」「射程延伸」的格验的是真部署或端换读之后的行为;G-F 各格在装好开发依赖的本包源码目录里跑(只改门)。请记下两次跑的产物标识(版本 + tarball shasum)。前缀:G-O = 开标签定位口、G-DT = detach 400 判定、G-N = 服务端自铸码、G-D = 派发口、G-P = 停泊审批 422、G-E = 拒启会话的出路、G-W = plan-review 注入 client、G-PD = 拒绝清单、G-K = 凭据读法、G-F = 门夹具与对账门。
|
|
9893
|
+
|
|
9894
|
+
**开标签定位口**(下文 `MARK` = `AbCdEfGhIjKlMnOpQrStUv`(22 位),`OPEN_MARK` = `<system-reminder mark="${MARK}">`(47 字符),`OPEN_BARE` = `<system-reminder>`(17 字符),`CLOSE` = `</system-reminder>`;`find` = `findSystemReminderOpenTag`)
|
|
9895
|
+
|
|
9896
|
+
- **G-O1**(本版证明,纯包层):`findSystemReminderOpenTag(OPEN_BARE)` ⇒ `{ start: 0, end: 17 }`;`findSystemReminderOpenTag('hello ' + OPEN_MARK + '\nbody\n' + CLOSE)` ⇒ `{ start: 6, end: 53 }`;`findSystemReminderOpenTag('😀中文' + OPEN_BARE).start === 4`(UTF-16 计位);无开标签 / 空串 ⇒ `null`。
|
|
9897
|
+
- **G-O2**(本版证明):104a-1 七种不认的形(外加 `<system-reminder >`、`<system-reminderx>`、21 位 `mark`、`mark` 值带字母表外字符)夹在正文里 ⇒ `null`;串尾截断 `'partial <system-reminder'` / `'partial <system-reminder mark="AbCdEfGhIj'` / `'partial <system-reminder mark="' + MARK + '"'` ⇒ `null`;`'<system-reminder mark="AbCdE' + OPEN_BARE` ⇒ `{ start: 28, end: 45 }`。
|
|
9898
|
+
- **G-O3**(本版证明):`t = OPEN_BARE + 'ab' + OPEN_MARK + 'cd'`:`find(t, 1).start === 19`、`find(t, 20) === null`、`find(t, t.length) === null`;`find(t, -1)` / `find(t, 1.5)` / `find(t, NaN)` / `find(t, t.length + 1)` / `find(t, '0')` ⇒ `null`;`find(42)` / `find(new String(OPEN_BARE))` / `find({ toString: () => OPEN_BARE })` ⇒ `null`;都不抛。
|
|
9899
|
+
- **G-O4**(本版证明,对拍):定种子随机串(开标签两形、截断形、非引擎近亲、闭标签、嵌套、杂字混排)上,按 108a-1 循环逐枚找出的开标签集合 ≡ 「在每个 `<` 处取到首个 `>` 的候选,`stripSystemReminderBlocks(候选 + CLOSE) === ''`」反推的集合 ≡ 换成 `unwrapSystemReminder(候选 + CLOSE) === ''` 反推的集合;108a-1 的循环拼出的正文与 `stripSystemReminderBlocks` 逐字节同。
|
|
9900
|
+
- **G-O5**(本版证明,线性):`find(('<system-reminder mark="' + MARK.slice(1) + '">x').repeat(n))`(不命中的近似形)与 108a-1 循环走完 `(OPEN_MARK + 'ab' + OPEN_BARE + '<c').repeat(n)` 各在 n 与 4n 两个尺寸上量三次取最快,4n 那次 250 ms 内直接算过,否则放大倍数 < 10。
|
|
9901
|
+
- **G-O6**(回归约束):§104 G-R2 / G-R4 / G-R6 两版同答(剥离 / 解包两口改走同一判定后行为不变)。
|
|
9902
|
+
|
|
9903
|
+
**detach 400 判定**
|
|
9904
|
+
|
|
9905
|
+
- **G-DT1**(本版证明,纯包层):`isDetachDurableOff400({ status: 400, message: 'x-detach-on-disconnect requires a durable run (a run store + sessionId) — without one the detached result would be unqueryable' }) === true`;带不带 `errorCode`、前后夹字同答。SDK 路径:假 `fetch` 对 `tasks.stream`(带 detach 头)回 400 `{ error: <上句>, errorCode: 'request.precondition_unmet' }`,抛出的那一枚 ⇒ `true`。
|
|
9906
|
+
- **G-DT2**(本版证明):同码另三句原文(`cascade requested but no ladder configured — …`、`deviceId is only accepted on a deployment that executes on the user's own device (REMOTE_EXEC=device) — …`、`device execution binds a device to a ROOT SESSION, so this submit needs a session — …`)各带 `status: 400, errorCode: 'request.precondition_unmet'` ⇒ `false`(经 SDK 路径同);`status` 为 500 / `'400'` / 缺席 ⇒ `false`;`undefined` / `null` / 锚句字符串本身 / `{}` / `{ status: 400 }` / `{ status: 400, message: 123 }` ⇒ `false`,不抛。
|
|
9907
|
+
- **G-DT3**(本版证明):未 arm 的进程(浏览器即是)里 G-DT1 的错误 ⇒ `isDetachDurableOff400` 为 `true`,`detachDurableOffHint` 仍为 `null`。
|
|
9908
|
+
- **G-DT4**(回归约束):`detachDurableOffHint` 在 armed / 未 arm 下对 G-DT1 / G-DT2 全部输入两版同答(出行的文字逐字节同)。
|
|
9909
|
+
- **G-DT5**(射程延伸,真部署):对没有 run store 的执行体提交(带 detach 头)⇒ 400,换读本口的端判 `true`(按端自己的退让策略处理);device 部署首轮没有会话的提交 ⇒ 400 同码另一句,本口判 `false`,原样上抛、不去头重发。
|
|
9910
|
+
- **G-DT6**(本版证明):`{ get status() { throw new Error('x') } }`、`{ status: 400, get message() { throw new Error('x') } }`、`new Proxy({}, { get() { throw new Error('x') } })`、已撤销的 Proxy ⇒ `isDetachDurableOff400` 回 `false`、不抛;已 arm 的进程里 `detachDurableOffHint` 对同四形回 `null`、不抛。判别点:0.84.0 上 `detachDurableOffHint`(已 arm)对这四形抛出(纯判定在 0.84.0 不存在)。另:计数 Proxy 包 `{ status: 400, message: <锚句原文> }` ⇒ 读序恰 `status → message`;包 `{ status: 500, message: … }` ⇒ 只读 `status`。
|
|
9911
|
+
|
|
9912
|
+
**服务端自铸码 / 派发口**
|
|
9913
|
+
|
|
9914
|
+
- **G-N1**(本版证明,纯包层;N-1):根入口 `SERVER_NOTICE_AUDIENCE` 冻结、键集恰 `instructions.source_changed` / `memory.layer_locked_legacy`、值 `user` / `operator`。判别点:0.84.0 为 `undefined`。
|
|
9915
|
+
- **G-N2**(本版证明;N-2):`noticeAudienceOf('instructions.source_changed') === 'user'`、`engineNoticeInCatalog('instructions.source_changed') === true`;`memory.layer_locked_legacy` 在册且 `operator`。判别点:0.84.0 答 `operator` / `false`。
|
|
9916
|
+
- **G-N3**(回归约束;N-2):`ENGINE_NOTICE_CODES` 与 `ENGINE_NOTICE_AUDIENCE` 不含这两枚码;`constructor` / `__proto__` / 带换行或大写变体的码 ⇒ 册外、`operator`;任一既有引擎码的受众两版同答。
|
|
9917
|
+
- **G-N4**(本版证明;N-3):`readInstructionsSourceChanged({ code: 'instructions.source_changed', detail: { previous: 'CLAUDE.md', current: null, sessionId: 's1' } })` ⇒ `{ previous: 'CLAUDE.md', current: null, sessionId: 's1' }`(键集恰三键)。
|
|
9918
|
+
- **G-N5**(本版证明;N-3 缺席):`previous` 缺席 / 空串 / 数 / 只在原型链上、`sessionId` 空串、`detail` 为数组 ⇒ `undefined`,不抛;别的码 ⇒ `undefined`。
|
|
9919
|
+
- **G-D1**(本版证明;D-1 / D-2):`ENGINE_NOTICE_FACT_READERS` 冻结、八个码;根入口从本模块导出的七只 `read*` 事实读器各是表里的同一只函数(`===`;`readReadRootGrantNotice` 挂 `approval.read_root_granted` / `approval.read_root_grant_rejected` 两行);每只读器只读得出它挂的那几个码的合法通告。
|
|
9920
|
+
- **G-D2**(本版证明;D-1):八个码各一条合法通告 ⇒ `readEngineNoticeFacts` 答 `{ code, audience, facts }`,`facts` 与直接调那只读器逐键同值,`audience === noticeAudienceOf(code)`。
|
|
9921
|
+
- **G-D3**(本版证明;用户面):表里受众 `user` 的码恰六个(`approval.read_root_grant_rejected` / `approval.read_root_granted` / `config.durable_gate_unavailable` / `delegation.ask_unresolvable` / `instructions.source_changed` / `mcp.injection_dropped`),`operator` 两个(`mcp.server_redialed` / `skills.listing_truncated`)。有服务端发布包时另核:六个 `user` 码都在服务端用户流白名单(`ENGINE_NOTICE_WIRE_CODES`)里、两个 `operator` 码都不在。
|
|
9922
|
+
- **G-D4**(回归约束形的新口格;D-1):在册无读器的码(`memory.session_polluted`)、册外码、`constructor` 作码、`null` / 串 / 数组入参、`code` 或 `detail` 取值器抛 ⇒ `undefined`,不抛。
|
|
9923
|
+
- **G-D5**(本版证明;读一次):`code` 取值器第一次答 `mcp.injection_dropped`、第二次答别的码 ⇒ 派发口交出的是 `mcp.injection_dropped` 的读数,`code` / `detail` 各只被读一次。
|
|
9924
|
+
- **G-D6**(本版证明;读目录授权两码经派发口):`readEngineNoticeFacts({ code: 'approval.read_root_granted', detail: { toolCallId: 'c1', dir: '/w/data/', root: '/w/data', sessionId: 's1' } })` ⇒ `{ code, audience: 'user', facts: { outcome: 'granted', toolCallId: 'c1', dir: '/w/data/', root: '/w/data', sessionId: 's1' } }`;`approval.read_root_grant_rejected`(`reason: 'mismatch'`)⇒ `facts.outcome === 'rejected'`、无 `dir`;granted 带 `covers: 'dir'` ⇒ `undefined`。判别点:0.84.0 无派发口。
|
|
9925
|
+
|
|
9926
|
+
**停泊审批 422**
|
|
9927
|
+
|
|
9928
|
+
- **G-P1**(本版证明,纯包层;P-1):`parkedResumeStartupFromError({ errorCode: 'parked_resume.startup_failed', taskId: 'bg-1' }, 'deny')` ⇒ `{ code, cause: 'resume_rejected', taskId: 'bg-1', resendable: false, denyStaysOpen: true }`。判别点:0.84.0 为 `undefined` 函数。
|
|
9929
|
+
- **G-P2**(本版证明;不猜):同码、`message` 里写着「inherits from its spawning run」的批准 ⇒ `cause: 'undetermined'`;写着「session not found」的批准同样 `undetermined`;未声明方向 ⇒ `undetermined`。
|
|
9930
|
+
- **G-P3**(本版证明;真 SDK 形):用 SDK 的 `toApiError(422, { error, errorCode: 'parked_resume.startup_failed', taskId })` 造出的 `ParkedResumeStartupError` 实例照读;同形的无原型普通对象照读;`errorCode` 是 `decide.revive_rejected` / `revive.startup_failed` / 大写变体 / 缺席 ⇒ `null`。
|
|
9931
|
+
- **G-P4**(本版证明;措辞):两句三段、互异;都含「re-fetch the pending approvals」且都说这次拒绝不说卡是否还在;`undetermined` 那一句含改正后再决、继承工具、deny、server upgrade 两条出路;`resume_rejected` 那一句不含 server upgrade;两句对 `isAlreadyResolvedGateReason` 都答 `false`。
|
|
9932
|
+
- **G-P5**(本版证明;判定):三种方向下 `resendable` 严格 `false`、`denyStaysOpen` 严格 `true`。
|
|
9933
|
+
- **G-P6**(本版证明;P-4):审批卡腿(`surfaceFsApprovalAndDecide`,假客户端的 `approvals.decide` 抛 422 本码)批准 ⇒ `failed.reason === 'decide(approve) failed: ' + String(e) + ' — ' + <undetermined 那一句>`;拒绝 ⇒ 同形带 `resume_rejected` 那一句;中断撤卡(`observeCancelByDeny`)上屏那一行 = 固定警告 + ` — ` + `resume_rejected` 那一句。判别点:0.84.0 恰为 `…failed: ` + `String(e)`。
|
|
9934
|
+
- **G-P7**(回归约束;P-4 缺席):别的码(`approval_stale` / `decide.revive_rejected`)与无码 422 在上述出口上失败文字逐字节同 0.84.0。
|
|
9935
|
+
- **G-P8**(本版证明;码优先,P-5):`bridgeAskUserQuestionGates` 驱动一只停泊提问卡,假客户端的 `approvals.decide` 抛 `{ status: 422, errorCode: 'parked_resume.startup_failed', message: 'Parked resume did not complete: parked resume failed — the approval is no longer redeemable: Session not found: <id>' }`(先自证这句对 `isAlreadyResolvedGateReason` 答 `true`);作答(批准)与空作答(拒绝)两形 ⇒ 宿主日志**没有**「gate already resolved / re-attaching」那一行,「gate not decided」那一行带对应那一句。审批卡腿同判:同一驱动口喂 `checkpointGate: { kind: 'tool_approval', toolName: 'Write' }` 的停泊、`installApprovalCardPort` 装卡口答批准 / 拒绝,决断口抛同一个 422 ⇒ 同样不重连、失败行带对应那一句。判别点:0.84.0 四形都走重连、失败行不出现(0.84.0 上实跑:四形都重连、失败行为空)。
|
|
9936
|
+
- **G-P9**(回归约束;P-5 射程):同一正文无码、或码为 `decide.revive_rejected` ⇒ 照旧走重连(两版同答;提问卡腿与审批卡腿同判);`isCodeClassifiedGateFailure` 对本码 / `resume_blocked_by_policy` / `corrupt` 答 `true`,对别码与缺席答 `false`;`isGateStandingErrorCode('parked_resume.startup_failed') === false`。
|
|
9937
|
+
|
|
9938
|
+
**拒启会话的出路**
|
|
9939
|
+
|
|
9940
|
+
- **G-E1**(本版证明,包 + 引擎包,不需要服务端):引擎包的内存会话规则店写 `{ toolDeny: ['Read','bash','mcp__srv__x',' foo__bar','Task(x)','foo__*','mcp__srv ','bash','Write'], toolAllow: ['Grep','grep','Read'], commandDeny: ['rm','bash','foo__bar'], allowDirs: ['/w'] }`,同一会话跑一次 ⇒ `config.legacy_tool_name`、模型零调用;以运营方身份调 `removeRefusedSessionRules(facade, sid, roster)`(`roster` = 同一台引擎一跑的 `wiring_manifest` 经 `projectToolRoster` 读出的名册)⇒ `removed`,`removed` 恰 `[toolAllow grep, toolDeny bash, toolDeny " foo__bar", toolDeny foo__*]`,记录变成 `toolDeny ['Read','mcp__srv__x','Task(x)','mcp__srv ','Write']` / `toolAllow ['Grep','Read']`,命令桶与目录桶不变,版本号 +1,恰一读一写;再跑一次 ⇒ 准备阶段通过、模型被调到。
|
|
9941
|
+
- **G-E2**(本版证明,老引擎形):同一店、普通调用方、记录 `{ toolDeny: ['Read','MultiEdit'], toolAllow: ['Read','grep'] }` ⇒ `loosen_forbidden`,`refused` 两条,恰一次写,记录逐字节不变,下一跑仍 `config.legacy_tool_name`;只有 `toolAllow: ['Read','bash_readonly']` ⇒ `removed`、下一跑通过。
|
|
9942
|
+
- **G-E3**(端侧验收,真部署;两代引擎各一次):宿主经「本会话规则」写口(或直接写会话规则记录)放进 `MultiEdit` / `foo__bar`,确认下一跑以 `config.legacy_tool_name` 失败;属主身份调撤销动词 —— 老引擎 ⇒ `loosen_forbidden`,出现「只有运营方能删」那一句,`GET` 回来的记录不变,下一跑仍失败;较新的引擎 ⇒ `removed`,下一跑正常开始。别用 `Task` / `KillShell` 造这一格(会把旧名先改写成现名的宿主上它们不中招)。
|
|
9943
|
+
- **G-E4**(回归约束):记录里没有会拒名(`{ toolDeny: ['Read','mcp__srv'], commandDeny: ['bash'] }` 或还没写过策略的会话)⇒ `nothing_to_remove`、零写。
|
|
9944
|
+
- **G-E5**(本版证明,并发与失败分类):读与写之间别人推进一次记录并加进一条 `KillShell` ⇒ 恰重读重写一次,两条会拒的都撤、对方加的别的条目留着;连撞两次 ⇒ `conflict`、恰两读两写;写后才断连 / 回执读不懂 / 回执版本号没推进 / 回执里还留着撤掉的那条 ⇒ `write_unconfirmed`,再调一次 ⇒ `nothing_to_remove`。
|
|
9945
|
+
- **G-E6**(本版证明,措辞):八臂句子两两互异(`roster_required` 两句互异、都含 `tool roster` 与 `in effect`);撤成那句按桶分说 —— 只撤 deny ⇒ 含 `deny list`、不含 `allow list`,只撤 allow ⇒ 含 `allow list` 与 `allows no tool`、不含 `deny rule`;`removed` 单复数(`1 entry` / `3 entries`)带版本号;`loosen_forbidden` 句含 `only an operator` 与 `unchanged`;`write_unconfirmed` 句含 `may already be in effect`;其余失败句(含名册两句)含 `nothing was changed`;任何句子都不含结局里的条目原串与 `message`。
|
|
9946
|
+
- **G-E7**(本版证明,启动失败出路句):`legacyToolNameFailureNoteOf('config.legacy_tool_name')` 等于 108a-6 那一句;`'config.limit_invalid'` / `'config.legacy_tool_name '` / `'CONFIG.LEGACY_TOOL_NAME'` / `undefined` ⇒ `undefined`;句子含四处位置、`"mcp__" or "a2a__"`,不含 `operator` / `administrator` / `owner`。
|
|
9947
|
+
- **G-E8**(回归约束,层位):会话规则记录为空、调用方策略 deny `MultiEdit` 跑一次 ⇒ 同样 `config.legacy_tool_name`;对这条会话调撤销动词 ⇒ `nothing_to_remove`(出路句因此列出四处)。
|
|
9948
|
+
- **G-E9**(本版证明,包 + 引擎包;名册):记录 `{ toolDeny: ['Task', 'Read', 'bash'] }`;同一台引擎挂一只叫 `Task` 的自定义工具(`spec.tools`)跑一次 ⇒ 过准备阶段(引擎认 `toolDeny: Task`),从这一跑的 `wiring_manifest` 读名册;运营方身份调撤销动词 ⇒ `removed` 恰 `[toolDeny bash]`,记录 `toolDeny` 留 `Task` / `Read`,下一跑(同样挂 `Task`)照过准备阶段。别名同判:自定义工具 `aliases: ['KillShell']` ⇒ 记录里的 `KillShell` 不撤。名册里只有小写 `task` ⇒ 记录里的 `Task` 照撤(引擎原样比)。判别点:0.84.0 无撤销动词;按静态退役名表撤的实现会把 `Task` 撤掉(deny 变 allow)。
|
|
9949
|
+
- **G-E10**(本版证明;名册缺席):`removeRefusedSessionRules(facade, sid, undefined)` / `null` ⇒ `roster_required` / `absent`;`'Task'` / `['Task']` / `{ count: 0 }` / `{ entries: [{ name: 'Task' }, { source: 'caller' }] }` / `{ entries: [{ name: 'X', aliases: ['KillShell', 7] }] }` / 读 `entries` 就抛 ⇒ `roster_required` / `unreadable`;全部零请求(读写计数都是 0)、不抛;`{ entries: [] }`(读得懂的空名册)⇒ 照常撤。
|
|
9950
|
+
|
|
9951
|
+
**plan-review 注入 client**(驱动形:真 sdk `new AgentClient({ baseUrl, authToken: { mode: 'same-origin-relay' }, fetch })` + node:http 假引擎;已装目标另指一只只答 404 的假引擎 B)
|
|
9952
|
+
|
|
9953
|
+
- **G-W1**(本版证明):`decidePlanReview('t', 'approve', undefined, { wire: { client } })` ⇒ POST 打到 client 那台引擎、B 零命中、结局与目标形逐字节同(仍锁 / 推进 / 离开 / 回拉 500 / 404 `not_found.plan_review` / 409 折叠码 / 500 corrupt+where / `default` 撞 conflict 去键重发 / `acceptEdits` 撞 conflict 不重发 / 本地拒发)。旧版:第四参被忽略 ⇒ 决断打到 B(404)。
|
|
9954
|
+
- **G-W2**(本版证明):`armPlanReviewApproval(park, undefined, { submittedInPlanMode: true, wire: { client, capsBaseUrl: K } })` 且 `K` 上版本 7.86.0 ⇒ 三选卡;答 auto ⇒ client 收到 `{ decision: 'approve', permissionModeAfter: 'acceptEdits' }`;不给 `capsBaseUrl`(B 上有 7.86.0)⇒ 老两选。
|
|
9955
|
+
- **G-W3**(本版证明):中继形 client 的每一发(POST + 回拉 GET)无 `authorization` 头;`{ wire: { client: {} } }` ⇒ 零请求、结局含「could NOT be sent」与「client supplied by the host」。
|
|
9956
|
+
- **G-W4**(本版证明):`{ reason: 'needs more tests' }` ⇒ 体 `{"decision":"reject","reason":"needs more tests"}`;`' '` / `42` ⇒ `{"decision":"reject"}`;4097 字 ⇒ 4096。
|
|
9957
|
+
- **G-W5**(本版证明):`{ onOutcome }` ⇒ 恰一次,键集 `decision,detail,dispatchNo,effect,prompt,status,tail,taskId`(状态读不到时无 `status`),`prompt` === 队列项 `value`;卸掉队列口 ⇒ 仍回调、无 error 级 MISSED;同任务并发第二次 ⇒ 不回调。
|
|
9958
|
+
- **G-W6**(本版证明):`reopenPlanReviewCard('t', { sessionKey: 'K9', wire: { client } })`(K9 有 overlay)⇒ `reopened: true`;作答 ⇒ POST 经注入 client。旧版:`reopened: false` + error 留痕。
|
|
9959
|
+
- **G-W7**(本版证明):`engineSupportsTaskAgents('http://ignored.invalid', { client })` ⇒ 打到 client 那台引擎、无 `authorization`;永不落定的 client + `timeoutMs: 60` ⇒ 约 60 ms 内 `undefined`;读口答 429 + `Retry-After: 60` 的真 sdk 中继 client(缺省读重试)+ `timeoutMs: 150` ⇒ 约 150 ms 内 `undefined`,那一发请求的取消信号已触发;`probeScenarioTools` 同两形 ⇒ `null`。
|
|
9960
|
+
- **G-W8**(回归约束):三口不带新位 ⇒ 体 / 结局(决断撞上请求时限那一臂除外,见 G-W10)/ 队列项键集 / 闩 / 序号 / 重开判决同 0.84.0(`run-plan-review-decide-verify-test.mjs` / `run-plan-review-dismissal-test.mjs` 全绿)。
|
|
9961
|
+
- **G-W9**(端侧验收;射程:网页端,中继部署,服务端 ≥7.86.0):中继 client 按 108a-9 构造(`timeoutMs` ≥ 6 h、`maxRetries: 0`);plan 模式提交 → 卡上批准(auto)→ 引擎收到带 `permissionModeAfter` 的体 → 续跑超过一分钟的批准回执仍按 `took_effect` 渲;拒绝 + 反馈 ⇒ 引擎收到 `reason`;同一卡双击 ⇒ 恰一条 POST。
|
|
9962
|
+
- **G-W10**(本版证明,真 sdk + 缩放计时器):假引擎对决断 POST 延迟 400 ms 答 200、回拉答 `completed`。① 已装目标形与注入形(中继 client `timeoutMs: 5000`,缩放的 6 h)⇒ 都 `took_effect`、结局逐字节同;② 注入 client `timeoutMs: 80`(缩放的 60 s)⇒ `unconfirmed`,结局正文含「was sent, but no answer came back from the engine within the time limit」与「may have taken effect」、不含「could not reach the engine」;③ 已装目标形的出站 `fetch` 以 `DOMException('…', 'TimeoutError')` 落定(sdk 每请求时限到点的同形)⇒ 结局与 ② 逐字节同;④ 连接被拒(中继 client 指向无人监听的端口)⇒ 仍「could not reach the engine」。判别点:0.84.0 上 ②③ 都是「could not reach the engine: TimeoutError: …」。
|
|
9963
|
+
- **G-W11**(本版证明,真 sdk):假引擎决断答 200 `{ status: 'completed' }`、回拉答 429 + `Retry-After: 60`;注入中继 client(缺省读重试)⇒ 回拉在本包截止处落定(门里把 15 s 截止缩放到 120 ms,sdk 的 60 s 退避不缩放),结局 `took_effect`、`status: 'completed'`(取 200 体)、`decidePlanReview` 在截止附近落定。判别点:0.84.0 无注入形;只中止不落定的实现会被拖到 sdk 睡醒(约 60 s)。
|
|
9964
|
+
- **G-W12**(本版证明):`decidePlanReview('t', 'approve', undefined, { wire: null, onOutcome })`、`wire` 为串 / 数、`wire` 读 `client` 就抛 ⇒ 不抛、`onOutcome` 恰一次且 `effect: 'not_sent'`、结局含「could NOT be sent」、零请求;`void decidePlanReview('t', 'reject', undefined, { wire: null })` 不留未处理的拒绝。
|
|
9965
|
+
|
|
9966
|
+
**拒绝清单**
|
|
9967
|
+
|
|
9968
|
+
- **G-PD1**(本版证明,纯包层;PD-1 / PD-2 / PD-3 / PD-4):`terminalToSdkResult({ type: 'done', result: { status: 'completed', result: 'ok', stats: { humanReview: { count: 1, totalWaitMs: 0, gates: [{ kind: 'human', waitMs: 0, decision: 'deny', toolName: 'Bash', toolArg: 'curl …', toolCallId: 'c1' }] } } } }, ctx, { toolInputByCallId: new Map([['c1', input]]) })`,`input = { command: 'curl -H «redacted:key» x' }` ⇒ `permission_denials.length === 1`,`permission_denials[0].tool_input === input`(同一个引用),`permission_denials[0]._sema_tool_input_redacted === true`、`_sema_tool_input_source === 'tool_start'`,`_sema_permission_denials[0]` 同值,`_sema_permission_denials_absent` 不在场。五形各一格:顶层记号 / 嵌套残片记号 `«redacted:key:partial»` / 裸记号 `«redacted»` / 叶值恰为 `[circular]` / 叶值恰为 `[depth-limit]`。判别点:0.84.0 上 `permission_denials` 为 `[]`、`_absent: true`、sema 条目无 `tool_input`。
|
|
9969
|
+
- **G-PD2**(回归约束;present-iff):同上但入参 `{ command: 'rm -rf /tmp/x' }` ⇒ 进 CC 数组、两载体都**没有** `_sema_tool_input_redacted` 键;入参 `{ note: 'see [circular] refs' }`(占位串只在正文里)⇒ 同样无标记。
|
|
9970
|
+
- **G-PD3**(本版证明;混合):两条拒绝,一条入参干净、一条带记号 ⇒ CC 数组两条(只有带记号那条有标记)、sema 载体两条、`_absent` 不在场。判别点:0.84.0 为 CC 一条、`_absent: true`。
|
|
9971
|
+
- **G-PD4**(本版证明,端到端;公开入口):`runStream` 喂 `tool_start{ toolCallId: 'c1', args: X }`(X 带记号)→ `tool_end{ isError: true }` → `done`(账本一条 deny,`toolCallId: 'c1'`)⇒ 结果帧 `permission_denials[0].tool_input` 与同一条输出流里 assistant 消息 `tool_use`(`id === 'c1'`)块的 `input` **是同一个对象**、带标记、`_absent` 不在场。另一形:账本为空数组、同一条流里那次调用的 `tool_end` 带门记录 `{ disposition: { kind: 'denied', deniedBy: 'policy' } }`(流内补行)⇒ 同答。真部署形(可选,射程:终端 `-p`、服务端对凭据形 URL 做转发前脱敏):让模型执行一条入参含 `https://user:token@host/…` 的命令并被拒 ⇒ `-p --output-format json` 的结果帧 `permission_denials` 含这一条且带标记;0.84.0 上这一条缺、`_sema_permission_denials_absent: true`。
|
|
9972
|
+
- **G-PD5**(回归约束;没有对象的几类):行无 `toolCallId`、`toolInputByCallId` 里只有别的 id、入参为串 / 数组 / `null`、入参 `{ xs: <30000 个数>, command: '«redacted» x' }`(被动过 ∧ 超节点预算,两种键序)、`{ deep: <101 层嵌套>, self: '[circular]' }`(被动过 ∧ 超深度)⇒ CC 数组空、sema 条目无 `tool_input` 且无标记、`_absent: true`。流内补行没见过 `tool_start` ⇒ 同答。
|
|
9973
|
+
- **G-PD6**(回归约束;账本优先):账本行自带 `toolInput`、流内那份带记号 ⇒ `tool_input` 是账本那份、无来源位、无标记。
|
|
9974
|
+
|
|
9975
|
+
**凭据读法**
|
|
9976
|
+
|
|
9977
|
+
- **G-K1**(本版证明,纯包层;K-1):输入 `Authorization: Bearer` + U+D800 + `https://secret.example/x`。机读口、`displayUntrusted` 默认形、`{ foldLines: false, keepLayout: true, mark: 'dot' }`、`{ foldLines: false, mark: 'dot' }`、`{ foldLines: false, mark: 'escape' }` 五种输出都不含 `secret.example`、都含 `«redacted:`。同一位置换成 U+200B 同答。判别点:0.84.0 上默认形与转义形露出 `secret.example`。
|
|
9978
|
+
- **G-K2**(本版证明;K-1 字节):`Bearer ` + U+D800 + `https://secret.example/x` 经 `{ foldLines: false, mark: 'escape' }` = `Bearer \uD800https://«redacted:secret»`(`\uD800` 是六个可见字符);机读口 = `Bearer ` + U+D800 + `https://«redacted:secret»`。
|
|
9979
|
+
- **G-K3**(本版证明;K-2):`user:<口令>@` + ESC + U+D800 —— 默认形 = `«redacted:userinfo»@\u001B\uD800`;机读口 = `«redacted:userinfo»@` + ESC + U+D800;`user:<口令>@` + U+200B + `:5432` 与 `db user:<口令>@` + U+D800 + ` is down` 同样遮住口令。判别点:0.84.0 默认形原样露出口令。
|
|
9980
|
+
- **G-K4**(回归约束):`Bearer https://docs.example.com/x`、`api_key: ` + ESC `[33m` + `https://console.example.com/keys` + ESC `[0m`、`mail a.b@` + U+200B + `example.com` 机读口逐字节不变。
|
|
9981
|
+
- **G-K5**(回归约束):`token=u:<口令>@` + ESC `[0m` + `/<值>` 整只值换记号(`token=«redacted:secret»` 一类),`<值>` 不露。
|
|
9982
|
+
- **G-K6**(回归约束,对 0.84.0 逐字节;K-2 让位):机读口 —— `password: "user:<口令>@` + U+200B + `/ <尾>"` ⇒ `password: "«redacted:secret»"`;`to` + U+00AD + `ken=u:<口令>@` + U+200B + `/<尾>` ⇒ `to` + U+00AD + `ken=«redacted:secret»`;`Bea` + U+200B + `rer u:<口令>@` + U+200B + `/<尾>` ⇒ `Bea` + U+200B + `rer «redacted:secret»`。十二种出口(机读口、`displayUntrusted` 默认 / 正文 / 单行 / 字段 / 空格 / 字符面全关 / 反斜杠成对 / blanks 三形、标记读口)都不含 `<口令>` 与 `<尾>`。
|
|
9983
|
+
- **G-K7**(本版证明;K-2 射程):`token=abc user:<口令>@` + U+200B + ` is down` 机读口 ⇒ `token=«redacted:secret» «redacted:userinfo»@` + U+200B + ` is down`(标签的值是 `abc`,候选不挂在标签上 ⇒ 照认 userinfo)。判别点:0.84.0 上 `<口令>` 原样。
|
|
9984
|
+
|
|
9985
|
+
**门夹具与对账门**(源码目录自跑)
|
|
9986
|
+
|
|
9987
|
+
- **G-F1**:在装好开发依赖的本包源码目录里跑六套被换形的门,各自全绿且检查数与本版发布帖所列一致;对任一套把换进来的终态词改成表外词(`failed` → `failedX` 一类),套必须红或 exit 9(权限拒绝投影那一套例外,理由见 CHANGELOG Gates 段:改做「被挡 → 成功」换词)。
|
|
9988
|
+
- **G-F2**:对 `scripts/` 逐文件 grep 扁平帧(`status:` 与 `type: 'done'` 同帧、无 `terminal`),每一处要么带 `// 409:` / `// 回放面:` 注,要么落在 CHANGELOG Known limits 所列的九套里。
|
|
9989
|
+
- **G-F3**:跑 `node scripts/run-fixture-flat-done-ratchet-test.mjs` ⇒ 绿、未注位点 = 上限;在任一门里新写一只扁平 `done` 帧(字面量,或经 `const X = {status:…}` 再喂)不加注 ⇒ 红且点名文件与行;加一行 `// 回放面: <理由>` ⇒ 回绿;把 `scripts/registry.json` 的 `ratchets.fixtureFlatDone.unmarkedCeiling` 改小 1 ⇒ 红。
|
|
9990
|
+
- **G-F4**:跑 `node scripts/run-authority-envelope-mirror-test.mjs` ⇒ 绿;在开发依赖引擎包的信封登记表里把任一 `framing` 行改判 `authority` ⇒ 红且点名那个标签;在本包镜像里删一个标签 ⇒ 红(且 `run-peer-frame-projection-test.mjs` 对同一删改保持绿 —— 那一套只钉两只代表标签,这正是本门补的缺口)。
|
|
9991
|
+
|
|
9992
|
+
- 包层行为钉在门 `run-system-reminder-open-tag-test.mjs`、`run-detach-durable-off-verdict-test.mjs`、`run-engine-notice-catalog-test.mjs`(I / IX / J 段)、`run-parked-resume-startup-test.mjs`(U0–U7)、`run-session-policy-refused-removal-test.mjs`、`run-plan-review-injected-wire-test.mjs`(W1–W14)、`run-permission-denial-projection-test.mjs`(F1e / F5 / F5a–F5a3 / F5b / F5g–F5j / F6b / F10b / L4 / L4b)、`run-display-untrusted-projection-test.mjs`(X41–X49)、`run-fixture-flat-done-ratchet-test.mjs`、`run-authority-envelope-mirror-test.mjs`。
|
|
9993
|
+
|
|
9994
|
+
### 108d. 端上要动的读点
|
|
9995
|
+
|
|
9996
|
+
坐标与普查来自本机克隆的只读检索(终端 09-25 / 09-27、网页端 09-27、桌面端 08-13、管理台 09-27;行号会漂),以各端现状为准。终端与管理台的坐标省去开头的 `src/`;网页端坐标从仓根起(`ui/`)。
|
|
9997
|
+
|
|
9998
|
+
**终端**
|
|
9999
|
+
|
|
10000
|
+
- O-1(建议):`utils/transcriptSearch.ts:136-141` 的循环(找开标签 → 删到闭标签 → 从串头重找)在块多时平方,删块后两侧字节可能拼出新开标签 —— 那一处要的是整块剥,换读 `stripSystemReminderBlocks`;`utils/systemReminderTag.ts` 的 `findSystemReminderOpen`(宽属性文法)随之可删。同文件的整块形(`utils/queryHelpers.ts` 消费)与整条去标(`components/messages/UserToolResultMessage/UserToolErrorMessage.tsx:39`)见 §104 R-1(`stripSystemReminderBlocks` / `unwrapSystemReminder`)。换读前按 104a-1 核负样本:本包只认引擎两形,带任意属性的开标签不再当信封剥。
|
|
10001
|
+
- DT-1:`-p` 车道(`sema/seamQueryEngine.ts:2007`)继续用 `detachDurableOffHint`,零改动。
|
|
10002
|
+
- D-1:通告转录面里逐码分派那一段(`mcp.injection_dropped` / `mcp.server_redialed` / `skills.listing_truncated` 各自调读器的几处)整段换读 `readEngineNoticeFacts`,按 `f.code` 分支(读目录授权两码也在派发表里,换读后同一口即得它们的 typed 读数,`facts.outcome` 再判);删壳里逐码调读器的分派。册外兜底分流保留在壳(在册无读数 ⇒ 册内通用行渲 `message`;册外 ⇒ 只落调试)——判「在册」继续读 `engineNoticeInCatalog`,它这一版多认两枚码。
|
|
10003
|
+
- D-1(机读车道):通告帧的 `detail` 仍不上帧;有 typed 读数的码按 `_sema_` 前缀键把 `readEngineNoticeFacts` 的读数上帧(只在 `audience === 'user'` 的读数上帧即与用户流同口径;运维面读数要不要上机读车道由壳定)。
|
|
10004
|
+
- N-2:按受众分发的那一处零改动;`instructions.source_changed` 从这一版起走用户面。若壳为它写过运维面专属行,那一行跟着挪。
|
|
10005
|
+
- P-1 – P-3:决断出站代理上与既有 `say*` 同闸口,加一只:`parkedResumeStartupFromError(e, verb)`(`verb` 就是那一发的批准 / 拒绝)→ 命中说 `parkedResumeStartupContent(detail)`;决断重试那一处对本码不自动重发(读 `resendable`);卡上 deny 保留(读 `denyStaysOpen`)。壳侧处置表里这一格由 declined 改读包口。
|
|
10006
|
+
- P-5:自有「门已决」判据链(按失败文字扫词的那一只)在扫词之前问 `isCodeClassifiedGateFailure(errorCode)`,命中即不判「门已决」;失败文字被拍平、读不到机读码的那条路,SDK 错误类名 `ParkedResumeStartupError` 在拍平串里,可按类名兜底。
|
|
10007
|
+
- 🔴 E-3 / E-5:`sema/legacyToolNameFailureCopy.ts:18` 自带码常量、`:21-25` 终帧谓词按结果帧的 **`errorCode`** 键读码;本包 0.83.0 起结果帧上这一位叫 **`_sema_error_code`**(旧键不再铸)⇒ 换钉 `^0.83.x` 之后这只谓词静默不再命中,出路句不再出现。换成 `legacyToolNameFailureNoteOf(frame._sema_error_code)`(句子也换成本包那一句,壳那一句「`/clear`」的建议可以接在后面作为宿主自己的回落路),常量换成 `CONFIG_LEGACY_TOOL_NAME`。接线点 `sema/upstreamBridge.ts:3314` / `:3329` / `:3527` / `:3633` 不变。
|
|
10008
|
+
- E-1 / E-2 / E-4:「本会话规则」删除动作(删一条 deny 时,若这条名字在本会话的会话规则记录里,同一拍经本包撤掉)与会话规则可见段(坏行旁「从本会话移除」)接 `removeRefusedSessionRules` + `sessionPolicyRemovalNotice`;🔴 `roster` 取这条会话最近一次收到的装配清单(`wiring_manifest` 帧)经 `projectToolRoster` 读出的名册 —— 启动失败的那一跑不发这一帧;手里没有就照传 `undefined`,动词答 `roster_required`,说那一句即可;标坏行用 `isEngineRefusedToolName`,不要自己判;读记录用 `readSessionPolicy`。🔴 撤销动词撤的是**这条会话里所有**会拒的条目,不是「用户点的那一条」:可见段上一键撤全部即可,单条入口的话要把这件事说清。出路句按结局改口,不按能力位、不按版本猜:老引擎上撤销动词自己会答 `loosen_forbidden`。
|
|
10009
|
+
- W-1 – W-7:零改动 —— `runStream.ts:469` arm 三参、`planReviewReopen.ts:82` 两参 decide、`:157-160` reopen 带 `deliverDecision` 全部旧签名,逐字节同答;`onOutcome` 可选不接(队列口在)。
|
|
10010
|
+
- PD-1 / PD-3:`-p` 车道「这条 run 真的拒过」的判定(print 车道审批通道告知那一处:CC 数组非空 ⇒ 拒了,否则判别位在场时读超集载体)零改动,结论不变 —— 这一类此前经超集载体判「拒了」,现在经 CC 数组判「拒了」。
|
|
10011
|
+
- PD-1:`-p` 结果帧的整帧过境(结果帧投影那一处 `{ ...msg }`)零改动即把新条目与新位原样交给 stdout;本版不要改成逐键挑。
|
|
10012
|
+
- PD-2:终端今天没有拿 `tool_input` 重跑 / 生成放行规则的读点;将来有 ⇒ 先读标记。壳侧结果帧的对象校验(三键 `z.object`,缺省剔未知键)不受影响。壳侧自合成终帧(会话归档 / 开机窗尾帧 / headless 尾帧 / producer 异常帧 / 载入失败帧)的 `permission_denials: []` + `_absent: true` 与本件无关(壳手里没有拒绝账本),照旧。壳侧消费清单:新键 `_sema_permission_denials[]._sema_tool_input_redacted` 登一行(consumed / declined 由壳定)。
|
|
10013
|
+
- K-1 / K-2:呈现走自带的出口(未读本包 `displayUntrusted`),本版射程外;经本包适配层的合成终局行 / 结果帧 `errors[]` 升级即净,零改动。
|
|
10014
|
+
|
|
10015
|
+
**网页端**
|
|
10016
|
+
|
|
10017
|
+
- 🔴 W-1 – W-6(到货删端侧重建的 plan-review 编排;对表网页端自列的五件清单):
|
|
10018
|
+
1. `ui/lib/engine/engine-decision-verbs.ts` —— `respondToPlan`(:694-840)整段本地编排删:投递闩 `planReviewDecideInFlight`(:105-109)、CC-46 双闸(:721-731)、`bodyOf` 与 `field_conflict` 去键重发(:733-760)、`preCheckpointPromise` / 回拉 / `classifyPlanReviewEffect`(:157 起,:790-812)、人话回执(:820-840)。改为一调:`decidePlanReview(taskId, decisionWord, permissionModeAfter, { wire: { client: ctx.client, capsBaseUrl: ctx.approvalDecisionNoteBaseUrl }, reason, onOutcome })` —— `reason` 取今天 `bodyOf` 的同一值(reject ⇒ `"rejected by user"`、revise ⇒ `decision.feedback`),`onOutcome` 里按 `outcome.effect` 渲今天 `humanTitle` 那四句(`took_effect` 静默),`registration.release()` 挪到 `onOutcome` 或 `await decidePlanReview` 之后。⚠️ 两处语义差:① 包的闩把在飞中的重复决断**丢弃**(error 级留痕,不回调),不再「共享首发 promise」—— `useHitlDecisions.ts:50-70` 的 `decidePlan` 靠 `respondToPlan` 落定撤重试卡,改靠首发那一次的落定即可;② `submittedInPlanMode` 的供给仍是 `ctx.planModeTaskIds`,但**摘除**改在 `onOutcome` 里按 `effect === 'took_effect'` 做(今天 :801-803 的判据不变)。头注(:58-103)「为什么不直接调包」三条理由本版全部消失,同批删;`tests/run-plan-review-wire-test.mjs` 五臂改成真包驱动(①②③④ 由本包门 W1–W7 覆盖,⑤「POST 抛错原样上抛」在包内是 `not_applied` / `unconfirmed` 结局而不是 throw —— 判据改口)。
|
|
10019
|
+
2. `ui/lib/engine/engine-self-heal.ts` —— `reopenViaParkSurface("needs_review", …)`(:148-200)与 `reopenPlanReview:` 供给(:230)改接包 `reopenPlanReviewCard(taskId, { trigger, wire: { client: deps.client }, sessionKey: deps.uiSessionId, onOutcome, presentationReceiptMs })`,并用 `onQuestionFrameFor(deps.uiSessionId, …)` 收卡帧 → 渲成今天的 `composer/surface` 卡 → 作答经 `respondToQuestion(questionId, { answers: [{ selected: [label] }] })` 回包(标签取 `planReviewCardOptions` / `PLAN_REVIEW_*_LABEL` 单源);呈现回执经 `registerArmedGateFromQuestionId`。头注(:27-58)「trigger 结构性传不到 / dismissedByUser 永不产出」三条同批撤;`clearPlanReviewUserDismissals(uiSessionId)` 挂 invalidateSession / dispose。
|
|
10020
|
+
3. `SessionTurnRequest` 补「提交出身」位喂 `trigger`(用户 / 注入)—— 网页端自列第 ③ 件,包侧无改动。
|
|
10021
|
+
4. `tests/run-self-heal-disposition-test.mjs` 改真包驱动 —— 网页端自列第 ④ 件。
|
|
10022
|
+
5. 🔴 中继 client 的 `timeoutMs`:决断 POST 同步驱动到终态可能分钟级 —— 给 plan-review 连线一只专用中继 client,`timeoutMs` ≥ 6 h、`maxRetries: 0`(108a-9);`relay-client.ts` 那只若沿用 sdk 缺省 60 s,续跑超过一分钟的批准会落 `unconfirmed`「已送出、时限内没有答复」(回执「submitted, but we couldn't confirm」)。
|
|
10023
|
+
- DT-1(建议):`ui/lib/engine/engine-session-transport.ts:325` 的提交恒带 detach 头,未见对这一枚 400 的处置 —— 连到没有耐久账本的执行体时整轮失败。要退让(去头重发一次并告知「断连会中止本轮」)时用本口判,不按码。
|
|
10024
|
+
- O-1:只调剥离口,零改动。
|
|
10025
|
+
- N-2 / D-1:今天零通告读点(本版普查:主干全树 `engine_notice` / `noticeAudienceOf` 零命中)。接用户通知面时:在册判据读 `engineNoticeInCatalog`,受众读 `noticeAudienceOf`,typed 读数读 `readEngineNoticeFacts` 且只渲 `audience === 'user'` 的。
|
|
10026
|
+
- P-1 – P-3:审批决断失败面(若自己调决断口)按同一只读口与措辞,不自铸。
|
|
10027
|
+
- E-*:未见会话规则写口,也未见按终局码补句的读点;零改动。将来接时直接用这几只口。
|
|
10028
|
+
- PD-*:今天零读点(`permission_denials` / `_sema_permission_denials` 主干全树零命中)。接结果帧拒绝面时:两键合读,条目按 `_sema_tool_input_redacted` 标「入参已脱敏」。
|
|
10029
|
+
- K-*:零直接读点;经适配层的机读口升级即净。
|
|
10030
|
+
|
|
10031
|
+
**桌面端**
|
|
10032
|
+
|
|
10033
|
+
- DT-1:`main/session-host.ts:1469` 恒带 detach 头;自带引擎恒有耐久账本,零改动。连外部引擎时同网页端。
|
|
10034
|
+
- W-*:零读点(`session-host.ts` 自有 client 直发 `{decision}` / `{decision, reason}`)。
|
|
10035
|
+
- N / D / P / PD:冻结期内零改动(零读点);解冻配对时同网页端。E / O:零改动。K:钉的版本早于呈前出口,不在射程。
|
|
10036
|
+
|
|
10037
|
+
**管理台**
|
|
10038
|
+
|
|
10039
|
+
- 🔴 DT-1(必改):`lib/chat/transport/engine-transport.ts:767` 的本地 `isDetachDurableOff400` 与本口同名同义(只认锚句、不认码)—— 删掉,改从本包导入(调用点 `:1675` 不动)。本包同名影子对账门对这一处登记了过渡豁免,到 0.85.0 为止。
|
|
10040
|
+
- O-1(建议):`components/chat/stream-core.ts:466` 的 `openTagOf` 里 `system-reminder` 一臂(「候选 + 闭标签问剥离口删不删净」的派生判定)换读 `findSystemReminderOpenTag`;`splitHarnessBlocks` 的截断块处置(余下全文归块)是端的呈现决定,照旧。
|
|
10041
|
+
- K-1 / K-2:三种载体经公面出口,零改动即净。提货测试里钉现状的三载体断言与零宽空格对照一条会按预期变红 → 翻面为「不含值、含记号」([8562])。
|
|
10042
|
+
- E-3(可选,非必改):`components/chat/chat-page.tsx:1691` 失败卡按 `errorCodeWording(stream.state.errorCode)` 取词,码为 `config.legacy_tool_name` 时可再补 `legacyToolNameFailureNoteOf(stream.state.errorCode)` 那一句(管理台自己不写会话规则,但会碰到被别的端写坏的会话)。
|
|
10043
|
+
- N-2 / D-1:运维面(若接通告)按受众分发读 `noticeAudienceOf`;`memory.layer_locked_legacy` 只出现在服务端运维日志,不上会话流。
|
|
10044
|
+
- W-* / PD-*:零读点;零改动。
|
|
10045
|
+
|
|
10046
|
+
**验收方**
|
|
10047
|
+
|
|
10048
|
+
- 按 108c 各格;按 108a′ 作废 / 改读换锚(已 arm 时 `detachDurableOffHint` 对抛错对象会抛 / `instructions.source_changed` 是运维面或册外 / 422 本码会重连一轮 / `CONFIG_REFUSAL_CODES` 恰七员 / §66 G2 / G3 / 按 0.83.4 原样凭据字节写的格)。§104 G-R 系照旧。`run-plan-review-injected-wire-test.mjs` 的 W1 矩阵可作对拍夹具。
|
|
10049
|
+
|
|
10050
|
+
### 108y. 🔴 三端升级必读(固定段式)
|
|
10051
|
+
|
|
10052
|
+
1. **换钉 `^0.84.1` 之前**:零前置编译改动(纯增:十五个运行期导出、十八个具名型与若干可选位;`readReadRootGrantNotice` 入参型放宽为 `unknown`、`SemaPermissionDenial` 多一个可选成员,对调用方都非破坏)。peer sdk 地板 `>=12.0.1` 不动。可观察变化(按旧行为断言过的测试改锚,见 108a′):① `detachDurableOffHint` 对读属性会抛错的错误对象改回 `null`(此前已 arm 时抛);② `noticeAudienceOf('instructions.source_changed')` 从 `operator` 变 `user`、`engineNoticeInCatalog` 对两枚服务端自铸码从 `false` 变 `true` —— 按受众 / 在册分发的端不改代码即跟着走;③ 包内四个决断出口在 422 `parked_resume.startup_failed` 上的失败文字多一句(别的码逐字节不变),包内停泊审批腿撞这枚码时不再重连一轮;④ `CONFIG_REFUSAL_CODES` 七员 → 八员(按 `.has` 判的零改动);⑤ 入参被传输层脱敏过的拒绝从此出现在 CC 形 `permission_denials` 里(带 `_sema_tool_input_redacted: true`,`tool_input` 字符串里可见 `«redacted…»` 记号),清单里只有这一类不完整时 `_sema_permission_denials_absent` 不再落下;⑥ 凭据两网在「值左邻是不可见单字」与「空主机 userinfo」两形上的输出字节变(值不露、含 `«redacted:`;`scheme://` 与那枚单字留在记号外)—— 断言按「不含值 ∧ 含 `«redacted:`」写,不按 0.83.4 原样字节写。⑦ `decidePlanReview` 决断撞上请求时限那一臂的结局正文从「could not reach the engine」改为「was sent, but no answer came back … within the time limit」(两条路同一句,`effect` 仍 `unconfirmed`);注入 client 要 `timeoutMs` ≥ 6 h、建议 `maxRetries: 0`(108a-9)。管理台:本地同名的 detach 判定与本包新导出同名 —— 换钉后删掉本地那份、改从本包导入(本包侧对这一处的过渡登记到 0.85.0 为止)。
|
|
10053
|
+
2. **逐面**:
|
|
10054
|
+
- **终端**:通告逐码分派换读派发口;决断代理加一只 422 读口,按判定不重发同一决定;自有「门已决」判据链扫词前问 `isCodeClassifiedGateFailure`;🔴 终帧出路句的码要从 `_sema_error_code` 读(换钉 ≥0.83.0 即生效),建议换调 `legacyToolNameFailureNoteOf`;「本会话规则」删除动作 / 可见段接撤销动词(非必改;要交最近一份装配清单读出的名册);转录搜索那一处换读 `stripSystemReminderBlocks`;凡把拒绝清单 `tool_input` 当原值用的读点先读标记(今天没有);plan-review / detach / 凭据零改动。
|
|
10055
|
+
- **网页端**:🔴 删端侧重建的 plan-review 编排,改一调 `decidePlanReview(…, { wire, reason, onOutcome })` 与 `reopenPlanReviewCard(…, { trigger, wire, sessionKey, onOutcome })`(108d),连线用的中继 client `timeoutMs` ≥ 6 h、`maxRetries: 0`;提交恒带 detach 头而未处置 durable-off 400,要退让时用 `isDetachDurableOff400`;接通知面时按受众读包口;其余零改动。
|
|
10056
|
+
- **桌面端**:冻结期零改动(连外部引擎时 detach 同网页端)。
|
|
10057
|
+
- **管理台**:🔴 删本地 detach 判定改导入;回放拆分换读 `findSystemReminderOpenTag`、删派生判定;凭据提货格翻面为「不含值、含记号」;失败卡可选补出路句;接通告时按受众读包口。
|
|
10058
|
+
3. **成文改口**:见 108a′(作废 / 改读 / 新增 / 不变);已发段(§66、§104、§106 与 0.73.4 的 CHANGELOG 段)不回改,以本段为准。
|
|
10059
|
+
|
|
10060
|
+
**包侧缺口:** 开标签定位口 —— ① 文法常量本身仍不上公面:定位口回位置,不回正则源码 · ② 定位口与块上下文无关:截断块归块还是归正文、块内字面开标签怎么跳过,由端的切块循环决定(108a-1 给了与剥离口同答的写法);detach —— ③ `isDetachDurableOff400` 只认锚句:那条拒绝的原文改了,本口答 `false`(不退让、原 400 照常交给宿主),在这条拒绝配上专码之前没有更稳的判据(KL-176)· ④ 本包没有能力面 `sessionBackgroundable` 的读口,不提供「提交前预检这台执行体有没有耐久账本」的谓词(那一位为假时带头必然 400;为真时仍可能因为没有会话而 400);通告与决断 —— ⑤ 422 两种成因回体上分不开:批准一侧只能说「分不出」那一句,候服务端带出机读成因位(KL-177)· ⑥ 端侧「门已决」判据链读不到机读码(失败文字被拍平)的路径上,码优先落不下去,只能按 SDK 错误类名兜底(KL-178)· ⑦ 服务端自铸码表的对账腿要指向服务端发布包才跑,日常跑只有定值判据(KL-179);拒启会话 —— ⑧ 撤销动词按宿主交来的**一份**工具名册判:启动失败的那一跑交不出名册,名册取自同一部署上的另一跑;两跑挂的工具不同(子代腿、按场景卸载)时按交来的那一份判;判据本体 `isEngineRefusedToolName` 本身仍不看名册(KL-182)· ⑨ 退役名表是本包构建时对过账的一份:引擎扩表后新加的名字在本包跟进前撤不掉(撤销动词答 `nothing_to_remove`,句子已带这一射程)(KL-183)· ⑩ 老引擎上一份记录同时在 `toolDeny` 与 `toolAllow` 里有坏行时,整份写被判放宽而拒,白名单那几条也一起没撤(一份写只会一起成或一起败;单撤白名单也救不回这条会话)(KL-184)· ⑪ 写口直接拒收这两类名字(服务端 400 `rules.legacy_tool_name`)的写失败分类未做:服务端尚未铸这枚码;到货前这类 400 落在收紧结局的 `request_rejected`(「改了条目再发」)(KL-185)· ⑫ 出路句说不出是哪一层、也不点名:引擎的拒因只有码与散文,本包不读散文(KL-186);plan-review 注入 client —— ⑬ 子代族动词(tail / steer / output / compact ×2 / task handle ×2 / delegated prompt / resume)在中继部署下仍只吃已装目标(§7 P-28 余半场;候「共用构造点收编 + 注入」)· ⑭ 注入形的决断腿时限 = 宿主 client 的 `timeoutMs`(sdk 缺省 60 s),本包改不了(sdk 无逐请求时限 / 重试开关);短于 6 h ⇒ 分钟级续跑落 `unconfirmed`「已送出、时限内没有答复」;注入 client 的读重试在截止落定之后仍可能再睡一轮(至多 60 s)才收手 —— `timeoutMs` ≥ 6 h、`maxRetries: 0` 即无这两形(KL-191)· ⑮ `armPlanReviewApproval` 非默认槽仍拒(卡台账默认槽单会话形,既有)· ⑯ 注入形下宿主 client 抛出的(非时限)错误文本由本包原样转述进「could not reach the engine」结局(既有行为;那是宿主自己的错误面,本包不洗)· ⑰ 包的投递闩对在飞中的重复决断是丢弃(error 留痕、不回调),不是「共享首发 promise」—— 网页端换调后要靠首发那一次落定;拒绝清单 —— ⑱ 「入参被传输层动过」按字面记号认,上游没有记录级机读「已脱敏」位;入参本来就含记号字面的调用会被多盖标记(KL-11)· ⑲ 拒绝清单上的 `tool_input` 取自 `tool_start`,先于 hook / 策略在判定前的改写,不等于被拒的最终入参;上游在被拒调用的收口帧上带出最终入参之前,本包说不出被拒的是哪一份(KL-175)· ⑳ 没有入参对象的几类(重连后的流、没见过 `tool_start`、超预算等)仍只在超集载体上,只读 CC 形清单的消费方在这几类上仍会少数(KL-12 等,不变);凭据读法 —— ㉑ 地址形的值左邻只有完整转义序列(着色等)、没有不可见单字时照旧按地址豁免,与真空白同答(KL-180)· ㉒ 不可见单字不紧贴值(`Bearer ` + 单字 + 空格 + 地址)时照旧豁免:屏上地址前有真空白,是独立的一只 · ㉓ 空主机形与有主机形用同一张右界表:主机位之后接 `,` / `;` / `)` 这类不认(两版同)· ㉔ 点形单行载体上,空主机 userinfo 前面隔着换行 / 制表符的上一个词不再并进用户名一起遮:上一版这一形第一轮认不出 userinfo,画成点之后第二轮把「上一个词 + 点 + 用户名」整段当 userinfo 遮住;本版第一轮就按换行断开用户名,与有主机形(两版)同答(KL-181)· ㉕ 用户名与 `:` 之间紧贴 C1 引导符 U+009B 时,判别视图按一段控制序列读(冒号进了序列参数),机读口与转义形认不出 userinfo、口令原样;点形遮住(0.83.4 起同形,KL-192)· ㉖ 主机在场的无 scheme userinfo 左界不在 `"` 处断开:JSON 键或引号值的开引号被吞进记号,引号里空白之后的尾巴原样上屏(0.83.4 起同形;本版只在空主机形上让位,KL-193);门 —— ㉗ 九套 23 处终帧夹具仍是扁平形(结论与终态读法无关),由棘轮封顶只许减少(KL-187)· ㉘ 棘轮只管总数不管分布,注是声明不是证明,追不到的形不计(KL-188)· ㉙ 权威信封标签对账读引擎模块内部值,是过渡读法;引擎新增权威标签时本包到抬开发依赖那天才跟(KL-189)· ㉚ 权限拒绝投影与纯函数总套的降级链一组、流式计时 ① 段对「表外终态词」负控不响 —— 这些格只分「成功 / 非成功」或与终态无关,认不出的终态词按设计落错误信封(KL-190)。
|
|
10061
|
+
|
|
9617
10062
|
## §107 🆕 0.84.0(2026-09-27)sdk 12.0.1 地板 + 后台代理登记读数(缺席行下半场)+ 读目录授权结论通告读口 + 接线回执 `hands` 段 + 陈旧逻辑清扫(退役键 `rewindFiles` 拒收 · `agentCount` 可选 · 26 个内部件退出根入口 · 九张判定表换只读 Set 子类 · 十五张判定数组冻结 · `resume_at` 文本腿退役)(🔴 minor;peer sdk 地板 `>=11.3.0` → `>=12.0.1`;型面 BREAKING 两处〔`SeamRewindSpec.rewindFiles` 删 / `WorkflowRunState.agentCount` 改可选〕;根公面运行期导出 1278 → 1260〔+8 −26〕;公面类型 +10;`WiringManifestView` / `WiringManifestChromeEvent` 各 +1 可选键 `hands`;超集键 +1 `_sema_hands`;开发依赖引擎 `~7.33.1` 不变)
|
|
9618
10063
|
|
|
9619
10064
|
> **minor**,原因三条:peer 地板跨到 sdk 12(本包按 12.x 才有的声明编译);型面 BREAKING 两处与 26 个内部件退出根入口;一处运行期拒收(`rewind.rewindFiles` 构造期抛)与一处运行期行为面(九张判定表换成只读 Set 子类,严格深比较 / `constructor` 可见)。五件同发(本节按 0.84.0 的读法写;若与本版发布帖不一致,以发布帖为准):
|