dsh-ctxlift 0.1.1 → 0.1.2

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
@@ -2,6 +2,13 @@
2
2
 
3
3
  本项目遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/) 的格式。
4
4
 
5
+ ## [0.1.2] - 2026-10-28
6
+
7
+ ### 修复
8
+
9
+ - 修复上游 `flatMap` 崩溃缺陷:洋葱圈协调器在自主合成与原地替换 `agent-instructions` 消息时,严格强制为 `source` 提供合法数组 `changes: []`,彻底消除官方插件在后续步(多 step)触发 baseline 替换时调用 `visibleBaseline.changes.flatMap` 抛出的 `Cannot read properties of undefined (reading 'flatMap')` 崩溃。
10
+ - 新增专项单测:严密断言注入消息的 `source.changes` 严格为数组且支持 `.flatMap()`。
11
+
5
12
  ## [0.1.1] - 2026-10-28
6
13
 
7
14
  ### 新增
@@ -1 +1 @@
1
- {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/engine/coordinator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAgC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE;QACN,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9B,KAAK,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAA;SAAE,CAAC;KAC9B,CAAC;IACF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,kBAAkB,CAAC,CAGzB;IAEF,YAAY,MAAM,EAAE,0BAA0B,EAAE,aAAa,CAAC,EAAE,MAAM,EAGrE;IAED,YAAY,CAAC,SAAS,EAAE,0BAA0B,GAAG,IAAI,CAGxD;IAED;;OAEG;IACH,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAsB1D;IAED;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,GAClC,OAAO,CAAC,cAAc,CAAC,CAkEzB;CACF"}
1
+ {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/engine/coordinator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAgC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE;QACN,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9B,KAAK,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAA;SAAE,CAAC;KAC9B,CAAC;IACF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,kBAAkB,CAAC,CAGzB;IAEF,YAAY,MAAM,EAAE,0BAA0B,EAAE,aAAa,CAAC,EAAE,MAAM,EAGrE;IAED,YAAY,CAAC,SAAS,EAAE,0BAA0B,GAAG,IAAI,CAGxD;IAED;;OAEG;IACH,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAsB1D;IAED;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,GAClC,OAAO,CAAC,cAAc,CAAC,CAwEzB;CACF"}
@@ -56,8 +56,9 @@ export class InstructionCoordinator {
56
56
  // 2. 检查 decision.messages 中是否存在官方插件生成的 agent-instructions 消息
57
57
  const officialMsgIndex = decision.messages.findIndex((m) => m?.source?.kind === 'agent-instructions');
58
58
  if (officialMsgIndex !== -1) {
59
- // 原地精准替换官方消息的 content,保留其原有元数据,同时替换为精细控制后的文本
59
+ // 原地精准替换官方消息的 content,保留其原有元数据,同时兜底保证 changes 严格为数组(杜绝上游 flatMap 崩溃)
60
60
  const targetMsg = decision.messages[officialMsgIndex];
61
+ const targetSource = targetMsg?.source ?? {};
61
62
  const updatedMsg = {
62
63
  ...targetMsg,
63
64
  content: [
@@ -65,7 +66,11 @@ export class InstructionCoordinator {
65
66
  type: 'text',
66
67
  text: rendered.fullPromptText
67
68
  }
68
- ]
69
+ ],
70
+ source: {
71
+ ...targetSource,
72
+ changes: Array.isArray(targetSource.changes) ? targetSource.changes : []
73
+ }
69
74
  };
70
75
  const newMessages = [...decision.messages];
71
76
  newMessages[officialMsgIndex] = updatedMsg;
@@ -75,7 +80,7 @@ export class InstructionCoordinator {
75
80
  };
76
81
  }
77
82
  else {
78
- // 官方插件未启用或已被禁用:由本插件自主构造标准的指令消息并注入
83
+ // 官方插件未启用或已被禁用:由本插件自主构造标准的指令消息并注入,必须显式提供 changes: []
79
84
  const syntheticMsg = {
80
85
  role: 'user',
81
86
  content: [
@@ -88,7 +93,8 @@ export class InstructionCoordinator {
88
93
  kind: 'agent-instructions',
89
94
  form: 'instructions',
90
95
  baseline: true,
91
- baselineIdentity: 'granular-instructions-guard'
96
+ baselineIdentity: 'granular-instructions-guard',
97
+ changes: []
92
98
  }
93
99
  };
94
100
  // 插入到消息序列中
@@ -1 +1 @@
1
- {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/engine/coordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/engine/coordinator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-ctxlift",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "精细控制全局与项目级 AGENTS.md / CLAUDE.md 注入截断的 DSH 插件,附 Web 端全局指令在线编辑器",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",