@sema-agent/client-core 0.70.1 → 0.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/README.md +5 -4
- package/dist/adapt/arms.js +110 -2
- package/dist/adapt/textStream.d.ts +15 -1
- package/dist/adapt/textStream.js +83 -12
- package/dist/adapter/downstream/eventToSdkMessage.d.ts +23 -19
- package/dist/adapter/downstream/eventToSdkMessage.js +186 -24
- package/dist/agentsWireCaps.d.ts +0 -1
- package/dist/agentsWireCaps.js +9 -9
- package/dist/cloudConfigWireCaps.js +1 -1
- package/dist/decideReceipt.d.ts +5 -5
- package/dist/decideReceipt.js +2 -4
- package/dist/engineErrorCodes.d.ts +6 -10
- package/dist/engineErrorCodes.js +8 -11
- package/dist/engineNoticeCodes.d.ts +3 -7
- package/dist/engineNoticeCodes.js +16 -4
- package/dist/hitl/toolApprovalWire.d.ts +11 -1
- package/dist/hitl/toolApprovalWire.js +2 -0
- package/dist/mcpPanel.d.ts +21 -3
- package/dist/mcpPanel.js +13 -0
- package/dist/mcpWireCaps.d.ts +1 -1
- package/dist/modelCapabilityProbe.d.ts +1 -1
- package/dist/modelCapabilityProbe.js +1 -1
- package/dist/seam.d.ts +98 -3
- package/dist/seam.js +23 -1
- package/dist/toolRoster.d.ts +21 -0
- package/dist/toolRoster.js +13 -8
- package/docs/INTEGRATION-CLIENTS.md +104 -11
- package/package.json +6 -6
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
|
|
20
20
|
| 项 | 值 | 真源 |
|
|
21
21
|
|---|---|---|
|
|
22
|
-
| 本包 | `@sema-agent/client-core` **0.
|
|
23
|
-
| peer:wire 契约 | `@sema-agent/sdk` **>=
|
|
24
|
-
| peer:会话词汇表 | `@sema-agent/agent-types` **>=0.
|
|
22
|
+
| 本包 | `@sema-agent/client-core` **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` **>=9.6.0**(value-level,非 type-only;**0.71.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
|
+
| 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
|
-
| 公开导出面 | **986** 个运行期符号(+ 44 个测试钩;= 0.70.0
|
|
26
|
+
| 公开导出面 | **986** 个运行期符号(+ 44 个测试钩;= 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`/`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`/`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.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
|
|
|
@@ -135,7 +135,7 @@ SDK 核对「本包 import 的每个值级符号仍然导出」「`TaskStats.cos
|
|
|
135
135
|
`WorkflowsGateUnknownDenial` 四形**不在**基线里,`src/selfOrchestrationDenial.ts` 对基线贡献
|
|
136
136
|
**4** 项运行期导出(三个函数 + `SELF_ORCHESTRATION_RETRY_WITHOUT`)。
|
|
137
137
|
|
|
138
|
-
986 项的内部构成(帮助端估读表大小;0.70.0 起 +1 函数;0.69.2 起 +3:常量 1 / 函数 2):**
|
|
138
|
+
986 项的内部构成(帮助端估读表大小;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):**297** 项是 `SCREAMING_SNAKE` 常量数据表/词汇表
|
|
139
139
|
(矩阵、键集、env 名、锚串)而非可调用物;**6** 项是 PascalCase 运行期值
|
|
140
140
|
(`ControlRouter` / `ControlSafetyError` / `HitlBridge` / `HitlSafetyError` / `DecideTransportRetryExhaustedError`);
|
|
141
141
|
**41** 项是 `*For(sessionKey, …)` 的 per-session 变体(§6;其中 `engineNamespaceKeyFor` 是命名巧合 —— 参数是 baseUrl 不是 sessionKey,见域 14)。
|
|
@@ -158,8 +158,8 @@ SDK 核对「本包 import 的每个值级符号仍然导出」「`TaskStats.cos
|
|
|
158
158
|
| 12 | **workflow 与后台工作视图** | 21 | `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`) |
|
|
159
159
|
| 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 桌面壳里的符号只会零命中,而零命中在这里**既不证真也不证伪**。复核这些断言**不得**拿本仓语料当反证 |
|
|
160
160
|
| 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` |
|
|
161
|
-
| 15 | **控制面与传输** |
|
|
162
|
-
| 16 | **引擎词汇表与包自检** |
|
|
161
|
+
| 15 | **控制面与传输** | 123 | `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/readFacePosture.ts` |
|
|
162
|
+
| 16 | **引擎词汇表与包自检** | 90 | `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`)|
|
|
163
163
|
|
|
164
164
|
🔴 **`engineErrorCodes` 的开集纪律**(该文件头注逐字):这些 `ReadonlySet` / 前缀谓词一律是**识别表**,
|
|
165
165
|
回答的是「我认不认得这个码」,**绝不是**「合法码只有这些」。消费点 `switch` **必须留 `default`**,
|
|
@@ -232,7 +232,7 @@ type EventProjection =
|
|
|
232
232
|
🔴 栏内只写**成员**;反例/对照臂(终态那两条之类)一律写到栏外去,否则会被读成成员。 -->
|
|
233
233
|
|
|
234
234
|
`meta`(流首帧身份信号,SDK/传输层自消费)· `file_link` / `prompt_assembled` / `model_usage` /
|
|
235
|
-
`
|
|
235
|
+
`config_assembled`(引擎可观测/审计面,CC transcript 无对位物;context_usage 自 0.71.0 CC-08 ③ 起**进切片**为 chrome 臂,不再在本表,见 §42)·
|
|
236
236
|
`needs_review`(壳消费的是 `done{status:'needs_review'}` 终帧,事件形重复且更早)·
|
|
237
237
|
`compaction_outcome`(压缩**非 compacted 结局**报告;CC transcript 无对位物,见 §7 缺口 **P-6**)·
|
|
238
238
|
`tool_approval` / `tool_approval_complete`(**不是丢帧**:它们走
|
|
@@ -4621,7 +4621,7 @@ an argument」。audience 答另一问:这条事实**说给谁听**。
|
|
|
4621
4621
|
**签名**
|
|
4622
4622
|
|
|
4623
4623
|
```ts
|
|
4624
|
-
ENGINE_NOTICE_CODES: readonly string[] //
|
|
4624
|
+
ENGINE_NOTICE_CODES: readonly string[] // 64 码,顺序同源(core 7.20.0 +5;0.71.0)
|
|
4625
4625
|
ENGINE_NOTICE_AUDIENCE: Readonly<Record<string, 'user' | 'operator'>>
|
|
4626
4626
|
noticeAudienceOf(code: unknown): 'user' | 'operator'
|
|
4627
4627
|
engineNoticeInCatalog(code: unknown): boolean
|
|
@@ -7772,6 +7772,10 @@ const line = mcpPanelLastLegDetail(view, { reachable }) // 一行措辞唯一
|
|
|
7772
7772
|
| `servers[]` 行 | `name` + `status` 必需(`status` **按开集读**);`serverInfo` / `toolNames` / `error` 逐键挑,形坏只丢该键 | 坏行只丢自己;`[]` = 一台都没配(正面事实) |
|
|
7773
7773
|
| `degraded` | `true`(never false)= materialize 超时/失败,`servers` 空但**不是**「没有 MCP」 | 正常 materialize |
|
|
7774
7774
|
| `lastLegMcp` | `{ runId, at, mcp[] }`;`mcp[]` 与 `wiring_manifest` 第三段**同一只读器**(`projectMcpSection`,同形同缺席律) | server 三形同形(新会话 / 最近腿账本行在保留窗外 / 该腿没推 manifest)**或**引擎 <7.77.0 —— 视图不铸键,「为什么缺席」不猜 |
|
|
7775
|
+
|
|
7776
|
+
🔒 **定谳(0.70.1;三方闭环):`lastLegMcp` 的三形同形**(新会话 / 最近腿账本行在保留窗外 / 该腿没推 manifest)**不是包侧缺口,永远不会长出缺席原因伴生键** —— 消费端可以照此设计,不必给原因键留位。两条硬理由:① 后两形在 server 是**同一条代码路径**(走完事件表就是没有那一帧),分不出「被保留窗剪掉」还是「压根没推」;能凑的启发式是把猜测穿成事实,与本包「不知道绝不渲成 0」同一条纪律。② 该读面的**属主门那一臂必须与其余缺席同形**(非属主读别人的会话时本键缺席、面板照常 200,反枚举);一旦有原因键,「不存在的会话答 `no_leg`、别人的会话不答」就是一个**会话存在性 oracle** ⇒ 可分辨性在这里必须让位给反枚举。
|
|
7777
|
+
⇒ 端渲这一格只有两句话可说:`lastLegMcp` 在场就照它渲,整键缺席就一句「不报」(`mcpPanelLastLegDetail` 的五句之一),**不编第三句**。上游对照:server 契约 B.2c-bis 第 3 条 + `lastLegMcpFor` 头注同批钉住。「这条会话跑过腿没有」属 **runs 面**、不属本面板,上游愿在真实用户困惑出现后评估做成 runs 面读法,届时本包认领投影。
|
|
7778
|
+
|
|
7775
7779
|
| `lastLegMcpUnreadable` | `true`(never false)= server 送了 `lastLegMcp` 但本视图读不出(`runId`/`at` 非非空串、`mcp` 读不出一行、值是 null) | 缺席 = 没这回事 |
|
|
7776
7780
|
|
|
7777
7781
|
🔴 **两面合法可不同**(契约 G.7 ④;server 判据 LL-2):`servers[].name` 与 `lastLegMcp.mcp[].name` 是两张表(部署缺省场景 vs 按请求注入的名册),视图上**没有**任何「一致/不一致」位,五句措辞没有一句提到 `servers`。端渲并排两块,不对账。
|
|
@@ -7993,7 +7997,7 @@ installCoreValuePorts({ resolveAutonomousLoopPrompt, loosenReasons, combinePolic
|
|
|
7993
7997
|
| 件 | 一句话 | 端要做什么 |
|
|
7994
7998
|
|---|---|---|
|
|
7995
7999
|
| S-1 🔴 **型面 BREAKING(唯一)** | **CC-04 `SKILL_CAPS` 只剩 `content`**:`items` / `name` / `description` 三键退役。server 7.78.1 `validateUserSkills` 直读 dist 已无条数帽、无长度帽(7.78.0 及以前仍有);core 7.19.0 `<skills>` 清单按字节预算自己裁描述 / 退 name-only 并发 `skills.listing_truncated`。`skillCommandsToSpecs` / `cloudSkillsToSpecs` 不再在第 10 条断开(此前静默丢弃零留痕);`toCappedSpec` 不再预截 name / description | 读 `SKILL_CAPS.items/.name/.description` 的端**删**(cli `skillsWireOverflow` 与本版同窗退役);别在端里复刻一个条数帽或长度帽 —— 那是在一道已不存在的门下面静默切字节 |
|
|
7996
|
-
| S-2 | **`readSkillsListingTruncated(notice)`**:清单裁切的唯一留痕读口(五必填 / 三可选 / 派生 `laneClamped?`) | 运维面 / 折叠行读它渲「N 条只列名、M
|
|
8000
|
+
| S-2 | **`readSkillsListingTruncated(notice)`**:清单裁切的唯一留痕读口(五必填 / 三可选 / 派生 `laneClamped?`)。🔧 **0.71.0 改口**:core 7.20.0 删 `requestedBudgetBytes`(8 KiB 天花板退役,声明比例即实际)⇒ `requestedBudgetBytes?` 与派生 `laneClamped?` **整只退役**,视图只剩 `budgetBytes` = 在场预算 | 运维面 / 折叠行读它渲「N 条只列名、M 条没上清单」;**只读 `budgetBytes`**,不再分「车道 clamp / 部署比例」(那个区分随天花板一起消亡);不自己数、不对 `message` 做等值匹配 |
|
|
7997
8001
|
| S-3 | `ENGINE_NOTICE_CODES` +3 = 五十九码(`classifier.role_defaulted` / `classifier.contract_broken` / `skills.listing_truncated`,operator);devDep core `~7.19.0` | 开集透传照旧;渲运维面的端按受众表分流 |
|
|
7998
8002
|
| S-4 | **CC-15** `thinking_segment_end` 形 (a) 透传 `committedUuids: []`(在场但空 = 本包判定本段零已提交行);形 (f) 零经手仍整键缺席;`committedUuid` 兼容位不变 | 读法改口:`Array.isArray(committedUuids)` 在场即以它为准(`[]` = 零行,不再数窗口里过境的行);整键缺席才是「包说不出」 |
|
|
7999
8003
|
| S-5 | `skillListingBudgetFraction` / `skillListingMaxDescChars` 两旋钮 | **本包零动作**:它们是 server `task-settings`(部署面)键,不在 `TaskRequest` 装配矩阵上;端不透传 |
|
|
@@ -8014,7 +8018,7 @@ installCoreValuePorts({ resolveAutonomousLoopPrompt, loosenReasons, combinePolic
|
|
|
8014
8018
|
### 39y. 🔴 三端升级必读(固定段式,[C295];本批**三条**)
|
|
8015
8019
|
|
|
8016
8020
|
1. 🔴 **技能条数帽 / 长度帽在端里一律删**:`SKILL_CAPS` 只剩 `content`;凡自己复刻「≤10 条」「name ≤64」「description ≤1024」或以 `SKILL_CAPS.items` 算「溢出了几条」的端(cli `skillsWireOverflow`)与本版同窗退役 —— server 7.78.1 全受理,引擎清单自己裁并通告。
|
|
8017
|
-
2. **清单裁切只从 `skills.listing_truncated` 读**:`readSkillsListingTruncated(notice)`
|
|
8021
|
+
2. **清单裁切只从 `skills.listing_truncated` 读**:`readSkillsListingTruncated(notice)` 给事实格;别自己数条数。🔧 0.71.0 改口:`laneClamped?` / `requestedBudgetBytes?` 已随 core 7.20.0 退役,调 `skillListingBudgetFraction` 现在**双向生效**(无天花板),运维面只读 `budgetBytes`。
|
|
8018
8022
|
3. **CC-15 读法改口**:`thinking_segment_end.committedUuids` 在场即以它为准(`[]` = 本段零已提交行),整键缺席才是「包说不出」;为形 (a) 自建的过境行计数臂删。
|
|
8019
8023
|
|
|
8020
8024
|
**到期复核(0.70.0 发后当拍记)**:① core 7.20.0 预告([7334] ③a)删 `skills.listing_truncated.detail.requestedBudgetBytes`(8 KiB 天花板退役后请求预算即实际预算)⇒ `readSkillsListingTruncated` 该键可选、`laneClamped` 只在它在场时派生,到货零改即缺席;随 7.20.0 提货批把 `laneClamped` 派生位整只删。② §37y ③ 「交互车道 `adapt()` 不经去重不受影响」是包视角的车道假设:cli 交互车道实际也经 `runStream`(durable-seq 去重在那里),server 7.77.0 的 `reasoning_end` id 复用在交互车道**同样**把权威段当重放丢(test [7335] B-125 实证);包侧去重律不变、零改,根因修在 server 7.78.1(唯一 id)。**已知边界改口**:凡经 `runStream` 的车道(cli 两车道皆是)在 server <7.78.1 上都收不到 `reasoning_end`。
|
|
@@ -8045,3 +8049,92 @@ installCoreValuePorts({ resolveAutonomousLoopPrompt, loosenReasons, combinePolic
|
|
|
8045
8049
|
2. **多行跨界段仍按老规矩**:一个 `segmentId` 对上多行时端照旧整发放弃(包这一版不单方面清);整段归属交全在下一版(`text_segment_end.committedUuids[]`)。
|
|
8046
8050
|
|
|
8047
8051
|
**包侧缺口:** ① 多行跨界形候 `committedUuids[]`(下一版);② 其余同 §39 包侧缺口。
|
|
8052
|
+
|
|
8053
|
+
## §41 🆕 0.70.2 安全修复(CC-18:`agents[].skills` 两条孪生帽退役)
|
|
8054
|
+
|
|
8055
|
+
### 41a. 本节速览
|
|
8056
|
+
|
|
8057
|
+
| 件 | 一句话 | 端要做什么 |
|
|
8058
|
+
|---|---|---|
|
|
8059
|
+
| S-1 🔴 | **`agents[].skills` 零条数帽**:`projectAgentsForWire` 不再在第 10 条处截 —— 修前声明 11+ 技能的 agent **静默丢技能**(只有一行运维 warn) | 为这一条自建的壳侧规避(先自己截到 10、或把 agent 拆成多个)**可退役**;端不要复刻条数帽 |
|
|
8060
|
+
| S-2 🔴 | **不再按技能名字长度滤**:名字超 64 的技能修前被滤进 `missing`,措辞说成「not found in the loaded skill set」= 假事实 | 读 `missing` 那条 warning 的端:它现在只含**真没加载**的名字,可以照字面信 |
|
|
8061
|
+
| S-3 | **射程止于这两条**:`MAX_AGENT_NAME_CHARS`(agent 自己的名字 ≤64)与 `MAX_AGENT_SKILL_CONTENT_CHARS`(1MB)上游仍判,**不退** | 零动作;别顺手把这两条也退了 —— 退了就是把响亮的 400 换成静默通过 |
|
|
8062
|
+
| S-4 | `MAX_AGENT_SKILLS` 常量**已退役但保留导出**(不再被任何投影读) | 读它的端改不读;常量随下一个 minor 删(型面 BREAKING,单独一版) |
|
|
8063
|
+
|
|
8064
|
+
### 41z. 逐键处置表(0.70.2)
|
|
8065
|
+
|
|
8066
|
+
| # | 键 / 面 | 处置 | 坐标 / 理由 |
|
|
8067
|
+
|---|---|---|---|
|
|
8068
|
+
| 1 | `agents[].skills` 条数帽 | **retired(行为)** | `src/agentsWireCaps.ts` 的 `#projectAgentsForWire`;server 7.78.1 `spec-fields.js` 的 `skills` 臂已删该判 |
|
|
8069
|
+
| 2 | `agents[].skills[].name` 长度过滤 | **retired(行为)** | 同上;server `skillOk` 里 name 只判非空 |
|
|
8070
|
+
| 3 | `MAX_AGENT_NAME_CHARS`(agent 自己的名字) | **不退** | server `spec-fields.js` 的 `name` 臂仍判非空且 ≤64 |
|
|
8071
|
+
| 4 | `MAX_AGENT_SKILL_CONTENT_CHARS`(1MB) | **不退** | server `skillOk` 仍判;超了整请求 400 |
|
|
8072
|
+
| 5 | `MAX_AGENT_SKILLS` 常量导出 | **deprecated(保留一版)** | 零读点;删它 = 型面 BREAKING,随下一个 minor |
|
|
8073
|
+
|
|
8074
|
+
### 41y. 🔴 三端升级必读(固定段式,[C295];本批**两条**)
|
|
8075
|
+
|
|
8076
|
+
1. 🔴 **别在端里复刻技能条数帽**:`agents[].skills` 上游已无条数帽,包侧也退了;为这一条自建的规避(自己先截到 10、把 agent 拆成多个)可退役。
|
|
8077
|
+
2. **`missing` 那条 warning 现在可以照字面信**:它只含真没加载的技能名;修前名字超 64 的已加载技能也在里面。
|
|
8078
|
+
|
|
8079
|
+
**包侧缺口:** ① `MAX_AGENT_SKILLS` 常量删除随下一个 minor;② 其余同 §40。
|
|
8080
|
+
|
|
8081
|
+
## §42 🆕 0.71.0 提货批(core 7.20.0 闭集 +5 / `laneClamped` 退役 / CC-16 文本面归属交全 / CC-08 五件 / peer sdk >=9.6.0)
|
|
8082
|
+
|
|
8083
|
+
### 42a. 本节速览(core 半场,已落 main)
|
|
8084
|
+
|
|
8085
|
+
| 件 | 一句话 | 端要做什么 |
|
|
8086
|
+
|---|---|---|
|
|
8087
|
+
| S-1 🔴 **型面 BREAKING** | `SkillsListingTruncatedFactsView` 删 `requestedBudgetBytes?` / `laneClamped?` 两键(core 7.20.0 #818 删 detail 键,本包是唯一真消费方;派生位没有输入 ⇒ 整只退役,不留恒 false);老引擎 7.19.0 仍发该键时视图**不铸不派生** | 读这两键的端删;运维面只读 `budgetBytes` |
|
|
8088
|
+
| S-2 | `ENGINE_NOTICE_CODES` +5 = 六十四码(`config.task_root_not_canonical` / `config.execution_env_capability_invalid` / `config.forward_sink_failed` / `memory.restore_withheld` / `agents.listing_truncated`,均 operator;顺序同源);devDep core `~7.20.0` | 开集透传照旧;`agents.listing_truncated` 与 `skills.listing_truncated` 同族,detail 形本包**暂不出读器**(候消费场景) |
|
|
8089
|
+
| S-3 | core 7.20.0 其余:`RECOMMENDED_SENSITIVE_ASK_PATTERNS` 删 / `writeProtectionCheck` 返 Promise / 四个写保护类型 / `canonicalPathIsAuthoritative` / `ClassifierSeat` | **n/a**(本包零镜像、不驱动 gate、不实现 adapter;`ClassifierSeat.defaulted?` 候 sdk 出键) | 零动作 |
|
|
8090
|
+
| S-5 🔴 **型面 BREAKING** | **peer sdk 地板 `>=9.6.0`**(`tool_disclosure` / `tool_progress` 两帧型 + `readRootCandidate` 自 9.6.0 起);**peer agent-types `>=0.2.0` → `>=0.3.0`**(devDep 同步;type-superset 门 CC 撞名预警对 0.3.0 求值,零撞名) | 装 sdk 9.6.0+ / agent-types 0.3.0+ |
|
|
8091
|
+
| S-6 | **CC-08 ① `tool_disclosure` chrome 臂**:`policy` 开集 / `thresholdPercent?` 缺席≠默认 / `deferred[]` `activated[]` 全量快照整只替换 | 要渲「哪些工具以名字占位、哪些已激活」的端接;不接零动作(`required: false`) |
|
|
8092
|
+
| S-7 | **CC-08 ⑤ `tool_progress` chrome 臂**(C-R50 一帧两拍):按 `toolCallId` 挂卡;Bash 类带 `output` 尾巴 + `totalLines`/`totalBytes` 同进同退;其他只 `elapsedSeconds` | 渲活面板的端接;🔴 `output` 是 UNTRUSTED RAW,可再封顶展示、**绝不回喂**模型;`elapsedSeconds` 缺席不是 0 |
|
|
8093
|
+
| S-9 | **CC-08 ① `wiring_manifest` 切片新带 `tools?` / `hooks?` / `lsp?`**;`tool_roster_delta` 帧 → chrome 臂(`delta` 已窄读) | 渲名册/hook/LSP 面的端接;`tool_roster_delta` 到手喂 `applyToolRosterDelta`,digest 对不上整只替换;重连按 `wiring_manifest.tools` 快照重同步 |
|
|
8094
|
+
| S-10 | **CC-08 ③ `context_usage` chrome 臂**(三标量 + `sections?`) | HUD 按最后一条取值;🔴 `sections[].tokens` 与 `usedTokens` 禁相减;`windowTokens` 别渲成模型上下文大小 |
|
|
8095
|
+
| S-11 🔴 **型面 BREAKING** | **`WiringManifestMcpEntry` → `WiringManifestMcpEntryView`**(同名影子收敛 + 编译期钉) | 两边都 import 的端改名;只 import 本包的端零动作 |
|
|
8096
|
+
| S-12 🔴 **型面 BREAKING** | **`MAX_AGENT_SKILLS` 删** | 0.70.2 起已零读点;仍 import 的端删 |
|
|
8097
|
+
| S-14 🔴 **型面 BREAKING** | **CC-20 `decide.workflow_host_not_parked` 退役**:常量 `DECIDE_WORKFLOW_HOST_NOT_PARKED` 删、`DECIDE_WORKFLOW_LANE_CODES` 三员 → 两员、`decideRefusalFromError` 对该码返 `null`(server 7.72.0 起永不再发) | 仍 import 该常量或按该码分支的端删;§30h「三条出路」读作两条 |
|
|
8098
|
+
| S-15 🔴 **子流面** | **`wiring_manifest` 三键子流断闸 + 身份透传**:投影口透 `parentToolCallId` / `sourceTaskId` / `bgAgentId`(在场非串 ⇒ `malformed`),臂按三键任一在场断闸(修前只判 `parentToolCallId`) | 端零动作;此前若在壳侧按 `sourceTaskId` 自滤子代 `wiring_manifest` 的可删(包已断闸,leader 面只见 leader 快照) |
|
|
8099
|
+
| S-16 🔴 **子流面** | **三键身份空串透传**:五臂共用读器三键在场即抄(含 `''`),与 `text_end` 投影和 `isSubFlowSegmentEnd`「键在场 = 子代帧」同律;`eventId` 非空才带 | 端零动作;别把 `sourceTaskId === ''` 读成主流 |
|
|
8100
|
+
| S-13 | **CC-19 `mcpEngineLegPresence(view)`**(cli L-335 归包):引擎侧 MCP 在场三值 `present` / `absent` / `unknown`,只从 `projectMcpPanel` 视图求 | 壳侧自算的 presence 删改调;🔴 `unknown`(视图读不出)不许渲成「一台 MCP 都没配」,有引擎接线的端开面板让「未观测」句说话;CC 那句只在壳侧零行 ∧ `absent` 时出 |
|
|
8101
|
+
| S-8 | **`ToolApprovalFrame.readRootCandidate?`**(#803):在场 = 根外读 ask 附「把 `dir` 加为本会话读目录」候选,`clearsThisAsk: true` | 审批卡按在场渲一格「add-dir」动作,`dir` 原样回传显完整;缺席 = 今日行为 |
|
|
8102
|
+
| S-4 🔴 **安全面** | **CC-16 `text_segment_end.committedUuids[]`**:本段身份窗口里段边界**之前**已提交的文本行 uuid 按序(`[]` = 零行在场但空;整键缺席 = 零经手形 f)+ `committedUuid` 末条兼容位;常态段定稿行在轮换之后提交 ⇒ 不在列 | **端义务改口**:`committedPrefixDiverged` ⇒ 按 `committedRows[]` **逐行写回**(包已算好:首行 = 前段定稿前缀 + `content`、其余行 `''`;🔴 别整行换首行 —— 提交行可能是「上一段定稿 + 本段那截」一条,整行换会删上一段权威正文;多行跨界时包同批清掉本段未提交的原始尾巴、补差账按写回后的屏同步,端写回后转录 = 权威正文恰一次);删自建的「本窗口过境行」跟踪与 `=== 1` 歧义闸;多行跨界段不再整发放弃 |
|
|
8103
|
+
|
|
8104
|
+
### 42z. 逐键处置表(0.71.0,core 半场)
|
|
8105
|
+
|
|
8106
|
+
| # | 键 / 面 | 处置 | 坐标 / 理由 |
|
|
8107
|
+
|---|---|---|---|
|
|
8108
|
+
| 1 | `skills.listing_truncated.detail.requestedBudgetBytes` 删 | **consumed(退役两键)** | `src/engineNoticeCodes.ts` 的 `#readSkillsListingTruncated`;码册门 G2 改口「在场不铸不派生」 |
|
|
8109
|
+
| 2 | `ENGINE_NOTICE_CODES` +5 | **consumed** | 同文件;码册门 A 双向等值(实装 core 7.20.0)+ G8 |
|
|
8110
|
+
| 3 | `agents.listing_truncated` detail | **pending(候消费场景)** | 与 skills 同族;端要渲 roster 裁切面时再出读器 |
|
|
8111
|
+
| 4 | `ClassifierSeat.defaulted?` | **候 sdk 出键** | 不在 wire 上 |
|
|
8112
|
+
| 5 | 其余(G1/G6/G7 各件) | **n/a** | [7357] ⑦ |
|
|
8113
|
+
| 7 | `tool_disclosure` 帧(四键) | **consumed(chrome 臂)** | `src/adapter/downstream/eventToSdkMessage.ts` 的 `#toolDisclosureProjection`;`src/adapt/arms.ts` 的 `#toolDisclosureArm`;`src/seam.ts` 臂表;门 tool-disclosure-progress-projection A/C/D/E |
|
|
8114
|
+
| 8 | `tool_progress` 帧(七键,一帧两拍) | **consumed(chrome 臂;C-R50 裁定形)** | 同上 `#toolProgressProjection` / `#toolProgressArm`;门 B/C/D/E |
|
|
8115
|
+
| 9 | `ToolApprovalFrame.readRootCandidate?` | **consumed(镜像 +1)** | `src/hitl/toolApprovalWire.ts` 的 `#TOOL_APPROVAL_FRAME_KEYS_MIRROR`;门 approval-frame-keys |
|
|
8116
|
+
| 10 | `APPROVAL_CARD_KEYS`(sdk 9.6.0) | **n/a(两版相同)** | 卡腿零动作 |
|
|
8117
|
+
| 11 | `wiring_manifest.tools` / `.hooks[]` / `.lsp` | **consumed(切片三键)** | `src/adapter/downstream/eventToSdkMessage.ts` 的 `#wiringManifestSupersetBody` + `#projectHooksSection` / `#projectLspSection`;tools 读器 `src/toolRoster.ts` 的 `#projectToolRoster`;门 wiring F |
|
|
8118
|
+
| 12 | `tool_roster_delta` 帧 | **consumed(chrome 臂;此前 unsupported_arm 有痕)** | `#projectToolRosterDelta`(`src/toolRoster.ts`);`src/adapt/arms.ts` 的 `#toolRosterDeltaArm`;门 wiring G |
|
|
8119
|
+
| 13 | `context_usage`(三标量 + `sections[]`) | **consumed(chrome 臂;此前 not_in_slice)** | `#contextUsageProjection`;`#contextUsageArm`;门 wiring H |
|
|
8120
|
+
| 14 | `WiringManifestMcpEntry` 同名影子 | **consumed(改名 View + 编译期钉)** | `#_mcpEntryViewPin`;门 wiring I + typeshape |
|
|
8121
|
+
| 15 | `MAX_AGENT_SKILLS` | **removed** | `src/agentsWireCaps.ts`;公面基线 −1 |
|
|
8122
|
+
| 16 | 引擎侧 MCP 在场三值(cli L-335) | **consumed(归包)** | `src/mcpPanel.ts` 的 `#mcpEngineLegPresence`;门 mcp-panel-projection K1–K7 |
|
|
8123
|
+
| 17 | `decide.workflow_host_not_parked`(server 7.72.0 退役) | **removed(CC-20)** | `src/engineErrorCodes.ts` / `src/decideReceipt.ts`;census 门登记退役词;decide-receipt 门 E 段两码 |
|
|
8124
|
+
| 6 | `text_segment_end.committedUuids[]` / `committedUuid` / `committedRows[]` | **consumed(CC-16;committedRows 发车前对抗复审补)** | `src/adapt/textStream.ts` 的 `#committedTextRows`(铸行登记含 `sealedPrefix` / 替换交全 / 轮换清);`src/adapt/arms.ts` 的 `#textSegmentEndArm` 透传;`src/seam.ts` 臂表义务 ⑥ + `#TextSegmentCommittedRow`;门 TSA Z1–Z8 |
|
|
8125
|
+
| 18 | `wiring_manifest` 三键身份 | **consumed(断闸 + 透传)** | `src/adapter/downstream/eventToSdkMessage.ts` 的 `#identityOrMalformed`(五臂共用);`src/adapt/arms.ts` 的 `#wiringManifestArm`;门 wiring J1–J5 |
|
|
8126
|
+
| 19 | 三键身份空串 | **consumed(在场即抄)** | 同 `#identityOrMalformed`;门 tool-disclosure B8 / D2 |
|
|
8127
|
+
|
|
8128
|
+
### 42y. 🔴 三端升级必读(固定段式,[C295];本批起草,发车时补全)
|
|
8129
|
+
|
|
8130
|
+
1. 🔴 **`text_segment_end` 归属交全(CC-16)**:`committedUuids[]` 在场即以它为准 —— `committedPrefixDiverged` ⇒ 按 `committedRows[]` 逐行写回正文(🔴 别自己整行换首行)。两形:**(a)** 提交行 = 「上一段定稿 + 本段那截」同一行时,该行最终正文 = 上一段正文(该行里已封存那截,逐字)+ 本段权威 `content`,其余行 `''`;**(b)** `committedRows` 在场 ⇔ `committedPrefixDiverged === true` ∧ `committedUuids.length > 0`,在场时与 `committedUuids` 长度相等、顺序一一对应(`committedRows[i].uuid === committedUuids[i]`),绝不只给其一;b1 形(前缀对得上)只有 `committedUuids`;`[]` = 本窗口零已提交行;整键缺席才是「包说不出」。自建的「本窗口过境行」跟踪与 `=== 1` 歧义闸可删,多行跨界段不再整发放弃。
|
|
8131
|
+
2. **`SkillsListingTruncatedFactsView` 删 `requestedBudgetBytes?` / `laneClamped?`**:运维面只读 `budgetBytes`。
|
|
8132
|
+
3. **peer sdk `>=9.6.0`**;两条新 chrome 臂 `tool_disclosure` / `tool_progress` 均 `required: false`,渲的端接、不渲零动作;🔴 `tool_progress.output` 绝不回喂模型。
|
|
8133
|
+
4. **审批卡 `readRootCandidate`**:在场渲一格 add-dir 动作,`dir` 原样回传;缺席不渲。
|
|
8134
|
+
5. 🔴 **两个型面改名/删除**:`WiringManifestMcpEntry` → `WiringManifestMcpEntryView`(两边都 import 的端改名);`MAX_AGENT_SKILLS` 删(仍 import 的端删)。
|
|
8135
|
+
6. **名册增量与上下文用量**:`tool_roster_delta` 喂 `applyToolRosterDelta`(digest 对不上整只替换、重连按快照重同步);`context_usage` 按最后一条取值,`sections[].tokens` 与 `usedTokens` 禁相减。
|
|
8136
|
+
7. **引擎侧 MCP 在场改读 `mcpEngineLegPresence(view)`**:壳侧自算的三值删;`unknown` 开面板不渲零。
|
|
8137
|
+
8. 🔴 **`decide.workflow_host_not_parked` 已退役**:仍 import `DECIDE_WORKFLOW_HOST_NOT_PARKED` 或按该码分支的端删;`decideRefusalFromError` 对它返 `null`(机器行原样上屏)。
|
|
8138
|
+
9. **子流断闸补齐**:`wiring_manifest` 三键断闸 + 五臂三键空串透传(S-15 / S-16);壳侧对这些臂自建的 `sourceTaskId` 过滤可删。
|
|
8139
|
+
|
|
8140
|
+
**包侧缺口:** ① `agents.listing_truncated` detail 读器候消费场景(by-design:无消费方不出读器);② `ClassifierSeat.defaulted?` 候 sdk 出键(by-design:上游未出);③ CC-06 B-081 包侧半场(窗 09-22);④ CC-24 export-liveness 门(窗 09-20);⑤ CC-25 §NNz 机读门 + 三已发版本落点 + FROZEN 腿判据(窗 09-22);⑥ CC-26 `as unknown as` 铸出口棘轮(窗 09-22)。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sema-agent/client-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.71.0",
|
|
4
4
|
"description": "Client-side session runtime shared by every sema human client (TUI / web / desktop): sema wire frames (AgentEvent) -> CC session vocabulary (SDKMessage) with dual-plane output (transcript/chrome), deterministic transcript ids, lane discipline as a type, and the notification/dedup ledgers. Every CC-skin shape is collected here so the wire itself stays neutral. Renamed from @sema-agent/wire-cc-adapter (0.1.x).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -30,13 +30,13 @@
|
|
|
30
30
|
"diff": "^9.0.0"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@sema-agent/agent-types": ">=0.
|
|
34
|
-
"@sema-agent/sdk": ">=9.
|
|
33
|
+
"@sema-agent/agent-types": ">=0.3.0",
|
|
34
|
+
"@sema-agent/sdk": ">=9.6.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@sema-agent/agent-types": "^0.
|
|
38
|
-
"@sema-agent/core": "~7.
|
|
39
|
-
"@sema-agent/sdk": "^9.
|
|
37
|
+
"@sema-agent/agent-types": "^0.3.0",
|
|
38
|
+
"@sema-agent/core": "~7.20.0",
|
|
39
|
+
"@sema-agent/sdk": "^9.6.0",
|
|
40
40
|
"@sema-agent/settings-schema": "^2.0.0",
|
|
41
41
|
"esbuild": "^0.27.4",
|
|
42
42
|
"typescript": "^6.0.2"
|