@sema-agent/client-core 0.71.3 → 0.71.4

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 CHANGED
@@ -49,6 +49,15 @@
49
49
  > 挡住 ⇒ 本批把它机械化——④a0 对 `pending` 行**要求段头已是日期形**(`(未发布)` 直接红),阶段一
50
50
  > commit 漏转在发布前就红,不再靠人记。
51
51
 
52
+ ## 0.71.4(2026-09-17)
53
+
54
+ > 主题:**core 7.20.1 提货**(提货单 [7415];本包 [7411] 认领)。**patch**:型面纯 additive(一个 `_sema_` 超集键 + 通告闭集 +1),公面 995 不变,peer 不动;devDep core `~7.20.1`。接入面 §46。
55
+
56
+ ### Added
57
+
58
+ - **`ENGINE_NOTICE_CODES` +1 = 六十五码**(顺序同源):`config.write_protection_target_view_absent`(index 13,紧跟 `config.task_root_not_canonical`;operator)—— 写保护判官只判拼写(`spelling-only`)、又挂了受保护写工具 ⇒ 每 run 一条(#853 C-R55 缺席响亮)。码册门 G8b 六十五 + G9 两格。
59
+ - **`wiring_manifest.writeProtection` 第七段进切片 ⇒ `_sema_writeProtection?: { targetView: 'spelling-only' | 'target' }`** + chrome `wiring_manifest.writeProtection?`:present-iff 这条腿编译出了写保护判官;🔴 缺席 = 没编译出判官(第三态),**不折 `spelling-only`**;`targetView` 不在二词 / 非对象 ⇒ 段缺席(其余段照投);多余成员不过境。type-superset 登记 +1;wiring 门 K 段。
60
+
52
61
  ## 0.71.3(2026-09-17)
53
62
 
54
63
  > 主题:清账批 —— 接入方七轴审查 [7367] R4 / R5 / 顺手项(CC-24 export-liveness 门 + 退役预告 / CC-26 `as unknown as` 铸链棘轮 / CC-25 §NNz 机读门与已发版本落点)+ **CC-06 B-081 包侧半场**(终局回执未消费族四件)。**patch**:型面纯 additive(公面 986 → 995;两个 `_sema_` 超集键)、peer 不动;本版只**预告**退役,不删任何导出。接入面 §45。
package/README.md CHANGED
@@ -35,7 +35,7 @@ Renamed from **`@sema-agent/wire-cc-adapter`** (0.1.x, deprecated — see *Migra
35
35
 
36
36
  ## Scope
37
37
 
38
- **Version:** 0.71.3
38
+ **Version:** 0.71.4
39
39
 
40
40
  - **Today** — the adapter seam, the whole `adapt()` pipeline (all 14 A-layer arms plus the
41
41
  B/D/E tool-card layers), the notification/caps/model families, the adapter kernel (stream driver
@@ -371,6 +371,8 @@ const wiringManifestArm = function* (m) {
371
371
  const tools = m._sema_tools;
372
372
  const hooks = m._sema_hooks;
373
373
  const lsp = m._sema_lsp;
374
+ const writeProtection = m._sema_writeProtection;
375
+ const hasWriteProtection = typeof writeProtection === 'object' && writeProtection !== null;
374
376
  const hasTools = typeof tools === 'object' && tools !== null;
375
377
  const hasHooks = Array.isArray(hooks);
376
378
  const hasLsp = typeof lsp === 'object' && lsp !== null;
@@ -379,7 +381,7 @@ const wiringManifestArm = function* (m) {
379
381
  // S-124(0.59.0):🔴 `Array.isArray` 判在场,**不判 `.length`** —— `mcp: []` 是「这条腿一台都
380
382
  // 没申报」这句正面事实,按长度判会把它和「老 mint 没报」折成同一件事(core 顶注点名的读法)。
381
383
  const hasMcp = Array.isArray(mcp);
382
- if (!hasGate && !hasAuto && !hasMcp && !hasTools && !hasHooks && !hasLsp)
384
+ if (!hasGate && !hasAuto && !hasMcp && !hasTools && !hasHooks && !hasLsp && !hasWriteProtection)
383
385
  return;
384
386
  yield chrome({
385
387
  kind: 'wiring_manifest',
@@ -390,6 +392,7 @@ const wiringManifestArm = function* (m) {
390
392
  ...(hasTools ? { tools: tools } : {}),
391
393
  ...(hasHooks ? { hooks: hooks } : {}),
392
394
  ...(hasLsp ? { lsp: lsp } : {}),
395
+ ...(hasWriteProtection ? { writeProtection: writeProtection } : {}),
393
396
  ...(typeof m.eventId === 'string' && m.eventId.length > 0 ? { eventId: m.eventId } : {}),
394
397
  });
395
398
  };
@@ -232,6 +232,11 @@ export interface WiringManifestMcpEntryView {
232
232
  httpStatus?: number;
233
233
  }
234
234
  export declare function projectMcpSection(raw: unknown): WiringManifestMcpEntryView[] | undefined;
235
+ /** core 7.20.1(0.71.4):`wiring_manifest.writeProtection` 第七段 —— 写保护判官自报的目标视图(present-iff 这条腿编译出了判官)。 */
236
+ export interface WiringManifestWriteProtectionView {
237
+ /** `spelling-only` = 只判拼写(别名写不拦;同 run 另发 `config.write_protection_target_view_absent`);`target` = 判真实目标。 */
238
+ targetView: 'spelling-only' | 'target';
239
+ }
235
240
  /**
236
241
  * CC-08(0.71.0):`wiring_manifest.hooks[]` 一行(sdk 9.6.0 `WiringManifestHookEntry`)—— 这条腿挂了哪些 hook 族、
237
242
  * 由 spec 还是 deps 拥有、是否只是观察性的。开集透传 `family` / `owner`;`observational` never-false。
@@ -1220,7 +1220,8 @@ function wiringManifestSupersetBody(ev) {
1220
1220
  const tools = projectToolRoster(ev);
1221
1221
  const hooks = projectHooksSection(ev.hooks);
1222
1222
  const lsp = projectLspSection(ev.lsp);
1223
- if (modelGate === undefined && autoMode === undefined && mcp === undefined && tools === undefined && hooks === undefined && lsp === undefined)
1223
+ const writeProtection = projectWriteProtectionSection(ev.writeProtection);
1224
+ if (modelGate === undefined && autoMode === undefined && mcp === undefined && tools === undefined && hooks === undefined && lsp === undefined && writeProtection === undefined)
1224
1225
  return undefined;
1225
1226
  return {
1226
1227
  ...(modelGate !== undefined ? { _sema_modelGate: modelGate } : {}),
@@ -1229,8 +1230,18 @@ function wiringManifestSupersetBody(ev) {
1229
1230
  ...(tools !== undefined ? { _sema_tools: tools } : {}),
1230
1231
  ...(hooks !== undefined ? { _sema_hooks: hooks } : {}),
1231
1232
  ...(lsp !== undefined ? { _sema_lsp: lsp } : {}),
1233
+ ...(writeProtection !== undefined ? { _sema_writeProtection: writeProtection } : {}),
1232
1234
  };
1233
1235
  }
1236
+ /** 🔴 缺席 = 没编译出判官(第三态),**不折 `spelling-only`**;`targetView` 不在二词 / 非对象 ⇒ 段缺席;多余成员不过境。 */
1237
+ function projectWriteProtectionSection(raw) {
1238
+ if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
1239
+ return undefined;
1240
+ const v = raw.targetView;
1241
+ if (v !== 'spelling-only' && v !== 'target')
1242
+ return undefined;
1243
+ return { targetView: v };
1244
+ }
1234
1245
  function projectHooksSection(raw) {
1235
1246
  if (!Array.isArray(raw))
1236
1247
  return undefined;
@@ -54,7 +54,7 @@
54
54
  /** 一条通告是**说给谁听**的。两值,刻意不设第三值(见模块顶注)。 */
55
55
  export type NoticeAudience = 'user' | 'operator';
56
56
  /**
57
- * 引擎**成文码册**的逐字镜像(core `ENGINE_NOTICE_CODES`,**7.20.0 = 六十四码**(7.19.0 五十九 + 7.20.0 五枚:`config.task_root_not_canonical` / `config.execution_env_capability_invalid` / `config.forward_sink_failed` / `memory.restore_withheld` / `agents.listing_truncated`,均 operator);顺序同源)。
57
+ * 引擎**成文码册**的逐字镜像(core `ENGINE_NOTICE_CODES`,**7.20.1 = 六十五码**(7.20.0 六十四 + 7.20.1 一枚 `config.write_protection_target_view_absent`;7.19.0 五十九 + 7.20.0 五枚:`config.task_root_not_canonical` / `config.execution_env_capability_invalid` / `config.forward_sink_failed` / `memory.restore_withheld` / `agents.listing_truncated`,均 operator);顺序同源)。
58
58
  * 🔴 这是一份**抄件**,不是本包的意见 —— 改它必须同 commit 附 core 坐标,且门会先红。
59
59
  * ⚠️ `EngineNotice.code` 的型面在上游**故意留 `string`**(宿主把自己的通告转发进同一个水槽是
60
60
  * 被支持的形),所以本表是**判据**不是型 —— 别拿它去窄化那个字段。
@@ -52,7 +52,7 @@
52
52
  * 出现在本包源码或产物里 => 当场红。
53
53
  */
54
54
  /**
55
- * 引擎**成文码册**的逐字镜像(core `ENGINE_NOTICE_CODES`,**7.20.0 = 六十四码**(7.19.0 五十九 + 7.20.0 五枚:`config.task_root_not_canonical` / `config.execution_env_capability_invalid` / `config.forward_sink_failed` / `memory.restore_withheld` / `agents.listing_truncated`,均 operator);顺序同源)。
55
+ * 引擎**成文码册**的逐字镜像(core `ENGINE_NOTICE_CODES`,**7.20.1 = 六十五码**(7.20.0 六十四 + 7.20.1 一枚 `config.write_protection_target_view_absent`;7.19.0 五十九 + 7.20.0 五枚:`config.task_root_not_canonical` / `config.execution_env_capability_invalid` / `config.forward_sink_failed` / `memory.restore_withheld` / `agents.listing_truncated`,均 operator);顺序同源)。
56
56
  * 🔴 这是一份**抄件**,不是本包的意见 —— 改它必须同 commit 附 core 坐标,且门会先红。
57
57
  * ⚠️ `EngineNotice.code` 的型面在上游**故意留 `string`**(宿主把自己的通告转发进同一个水槽是
58
58
  * 被支持的形),所以本表是**判据**不是型 —— 别拿它去窄化那个字段。
@@ -78,6 +78,8 @@ export const ENGINE_NOTICE_CODES = Object.freeze([
78
78
  'config.artifact_host_invalid',
79
79
  // core 7.20.0(0.71.0 提货):任务根非规范路径 / 远端执行环境能力声明坏值,两枚部署面通告;顺序同源(紧跟 artifact_host_invalid)。
80
80
  'config.task_root_not_canonical',
81
+ // core 7.20.1(0.71.4 提货,#853 C-R55):写保护判官只判拼写(spelling-only)又挂了受保护写工具 ⇒ 每 run 一条;顺序同源(紧跟 task_root_not_canonical)。
82
+ 'config.write_protection_target_view_absent',
81
83
  'config.execution_env_capability_invalid',
82
84
  'config.tool_card_undeclared',
83
85
  'config.tool_face_undeclared',
@@ -167,6 +169,7 @@ export const ENGINE_NOTICE_AUDIENCE = Object.freeze({
167
169
  // 0.68.0 提货批:`NOTICE_AUDIENCE_TABLE:181` 真字节 —— 一条「宿主把 artifact 席接坏了」的部署事实。
168
170
  'config.artifact_host_invalid': 'operator',
169
171
  'config.task_root_not_canonical': 'operator',
172
+ 'config.write_protection_target_view_absent': 'operator',
170
173
  'config.execution_env_capability_invalid': 'operator',
171
174
  'config.tool_card_undeclared': 'operator',
172
175
  'config.tool_face_undeclared': 'operator',
package/dist/seam.d.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  import type { ModelUsage, SDKMessage } from '@sema-agent/agent-types';
10
10
  import type { EngineTurnUsage } from './adapter/downstream/turnUsageToModelUsage.js';
11
11
  import type { RunCostReconcile } from './adapter/downstream/terminalToSdkResult.js';
12
- import type { WiringManifestAutoMode, WiringManifestModelGate, WiringManifestMcpEntryView, WiringManifestHookEntryView, WiringManifestLspSeamView, ContextUsageSectionView } from './adapter/downstream/eventToSdkMessage.js';
12
+ import type { WiringManifestAutoMode, WiringManifestModelGate, WiringManifestMcpEntryView, WiringManifestHookEntryView, WiringManifestLspSeamView, WiringManifestWriteProtectionView, ContextUsageSectionView } from './adapter/downstream/eventToSdkMessage.js';
13
13
  import type { ToolRosterView, ToolRosterDeltaView } from './toolRoster.js';
14
14
  /**
15
15
  * `AbortSignal` 的结构型(B3 扩容,SEAM-GAP-4)。
@@ -593,6 +593,8 @@ export interface WiringManifestChromeEvent {
593
593
  hooks?: readonly WiringManifestHookEntryView[];
594
594
  /** CC-08 ①:第六段 —— LSP 接缝(在场 iff 解析出了 manager 席;`mounted` 与 `lane` 禁合读)。 */
595
595
  lsp?: WiringManifestLspSeamView;
596
+ /** core 7.20.1(0.71.4):第七段 —— 写保护判官自报 targetView(present-iff 编译出判官;🔴 缺席 = 第三态,不折 spelling-only)。 */
597
+ writeProtection?: WiringManifestWriteProtectionView;
596
598
  /** core 铸的事件身份(uuidv7 形);wire 未必带 ⇒ 缺席时本键不在场。 */
597
599
  eventId?: string;
598
600
  }
@@ -19,7 +19,7 @@
19
19
 
20
20
  | 项 | 值 | 真源 |
21
21
  |---|---|---|
22
- | 本包 | `@sema-agent/client-core` **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 八条)|
22
+ | 本包 | `@sema-agent/client-core` **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
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
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` |
@@ -4631,7 +4631,7 @@ an argument」。audience 答另一问:这条事实**说给谁听**。
4631
4631
  **签名**
4632
4632
 
4633
4633
  ```ts
4634
- ENGINE_NOTICE_CODES: readonly string[] // 64 码,顺序同源(core 7.20.0 +5;0.71.0)
4634
+ ENGINE_NOTICE_CODES: readonly string[] // 65 码,顺序同源(core 7.20.1 +1;0.71.4)
4635
4635
  ENGINE_NOTICE_AUDIENCE: Readonly<Record<string, 'user' | 'operator'>>
4636
4636
  noticeAudienceOf(code: unknown): 'user' | 'operator'
4637
4637
  engineNoticeInCatalog(code: unknown): boolean
@@ -8240,3 +8240,30 @@ installCoreValuePorts({ resolveAutonomousLoopPrompt, loosenReasons, combinePolic
8240
8240
  4. **B-081 四件到货**:终帧读 `_sema_effective_reasoning` / `_sema_effective_memory_scopes`(缺席不渲成精确档 / 已挂);resume 三码走 `resumeReopenFromError`(再 park 不当终局);`/model` 用 `routePairingVerdict`。
8241
8241
 
8242
8242
  **包侧缺口:** ① `agents.listing_truncated` detail 读器候消费场景(by-design);② `ClassifierSeat.defaulted?` 候 sdk 出键(by-design);③ §NNz「declined 键真零命中」机读第二刀(候形式化,无到期日 = by-design 直到有人要)。
8243
+
8244
+ ## §46 🆕 0.71.4 core 7.20.1 提货(通告码 65 / `wiring_manifest.writeProtection` 第七段)
8245
+
8246
+ > **patch**:型面纯 additive(`_sema_writeProtection` 超集键 + 通告闭集 +1),公面 995 不变,peer 不动;devDep core `~7.20.1`。提货单 [7415] @client-core 三条:① 通知码镜像 +1 ② manifest 镜像加可选段 ③ 导出 +3 纯增(`WRITE_PROTECTION_TARGET_VIEWS` / `WriteProtectionMount` / `WriteProtectionTargetView`,本包不 import core 值级面,n/a)。
8247
+
8248
+ ### 46a. 处置表
8249
+
8250
+ | # | 面 | 本包做了什么 | 端要做什么 |
8251
+ |---|---|---|---|
8252
+ | S-1 | **`config.write_protection_target_view_absent`**(operator) | `ENGINE_NOTICE_CODES` index 13 镜像 + audience operator;`engineNoticeInCatalog` / `noticeAudienceOf` 照常 | 运维通知面按 operator 渲一条(每 run 一条):写保护判官只判拼写、受保护写工具已挂 —— 别名写不会被拦;用户面零动作 |
8253
+ | S-2 | **`wiring_manifest.writeProtection?: { targetView }`** | 切片 `_sema_writeProtection` + chrome `wiring_manifest.writeProtection?`;present-iff 编译出判官;`targetView` ∈ {spelling-only, target} 否则段缺席 | 诊断面(/doctor · wiring 面板)单独一格原样回显 `targetView`;🔴 缺席渲「未编译判官」(第三态),**不渲成 spelling-only** |
8254
+
8255
+ ### 46z. 逐键处置表
8256
+
8257
+ | # | 键 / 面 | 处置 | 坐标 / 理由 |
8258
+ |---|---|---|---|
8259
+ | 1 | `config.write_protection_target_view_absent` | **consumed(镜像 +1)** | `src/engineNoticeCodes.ts` 的 `#ENGINE_NOTICE_CODES` / `#NOTICE_AUDIENCE`;码册门 G9 |
8260
+ | 2 | `wiring_manifest.writeProtection` | **consumed(切片第七段)** | `src/adapter/downstream/eventToSdkMessage.ts` 的 `#projectWriteProtectionSection`;`src/adapt/arms.ts` 的 `#wiringManifestArm`;type-superset `_sema_writeProtection`;wiring 门 K |
8261
+ | 3 | core 导出 +3(`WRITE_PROTECTION_TARGET_VIEWS` 等) | **n/a** | 本包零 core 值级 import(端口注入);二词闭集在本包读器内以字面判 |
8262
+
8263
+ ### 46y. 🔴 三端升级必读(固定段式,[C295])
8264
+
8265
+ 1. 诊断面读 `wiring_manifest.writeProtection?.targetView`:缺席 = 第三态「未编译判官」,不渲成 `spelling-only`。
8266
+ 2. operator 通知面多一码(`config.write_protection_target_view_absent`),按 `noticeAudienceOf` 走 operator 臂。
8267
+ 3. 零 BREAKING:型面 / 公面 / peer 不动。
8268
+
8269
+ **包侧缺口:** ① CC-30 MCP 会话内重连消费口(候 core / server 座位,[7418] ①);② CC-31 WebSearch 后端名读口(候 server 并进非 operator 面,[7418] ②);③ `agents.listing_truncated` detail 读器候消费场景(by-design);④ `ClassifierSeat.defaulted?` 候 sdk 出键(by-design);⑤ §NNz「declined 键真零命中」机读第二刀(候形式化)。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/client-core",
3
- "version": "0.71.3",
3
+ "version": "0.71.4",
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",
@@ -35,7 +35,7 @@
35
35
  },
36
36
  "devDependencies": {
37
37
  "@sema-agent/agent-types": "^0.3.0",
38
- "@sema-agent/core": "~7.20.0",
38
+ "@sema-agent/core": "~7.20.1",
39
39
  "@sema-agent/sdk": "^9.6.0",
40
40
  "@sema-agent/settings-schema": "^2.0.0",
41
41
  "esbuild": "^0.27.4",