dsh-ctxlift 0.1.0 → 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,26 @@
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
+
12
+ ## [0.1.1] - 2026-10-28
13
+
14
+ ### 新增
15
+
16
+ - 全局指令编辑器只读选择语义:点击未创建的全局文件(如缺失的 `CLAUDE.md`)时,前端编辑器直接显示空白草稿,杜绝在点击时自动克隆或创建占位脏文件。
17
+ - 保存时自动创建:在空白草稿中输入内容点击「保存更改」后,底层临时文件与原子 rename 会自动新建并持久化该全局文件,并原位刷新当前选中文件状态。
18
+
19
+ ### 优化
20
+
21
+ - `switchGlobalFilename` 纯只读化:移除 `copyExisting` 逻辑,返回完整的目标文件存在性(`exists`)、内容(`content`)与字节数(`bytes`)。
22
+ - 前端 Store 状态闭环:保存成功后链式触发目标项刷新,防止保存后跳回默认选项。
23
+ - 完善 CI 工作流与测试断言:覆盖缺失文件空内容只读呈现与保存自动创建的专项单测及 E2E 验证。
24
+
5
25
  ## [0.1.0] - 2026-10-27
6
26
 
7
27
  首个发布版本。完成官方范式重构与隔离实例全量验收。
@@ -23,4 +43,4 @@
23
43
 
24
44
  - 13 项单测全绿;隔离环境全功能验收(E2E)10 项标准全过。
25
45
  - 隔离实例真机验收:settings 命名空间出现 `dsh-ctxlift`、浏览器面板渲染、编辑器保存落盘字节校验、四层截断策略独立生效(17/17)、真实 agent 会话三态(truncate / disabled / unlimited)实测。
26
- - 冷装 / 热装 / 热卸载验收通过。
46
+ - 冷装 / 热装 / 热卸载验收通过。
package/README.md CHANGED
@@ -22,7 +22,7 @@ The official `agent-instructions` plugin shares one global byte budget across al
22
22
  - `truncate` — keep the first N bytes (UTF-8 safe, no broken characters)
23
23
  - `disabled` — do not inject this layer at all
24
24
  - Global file preference: `auto` / `agents` / `claude` / `both` — breaks the official hardcoded `USER_GLOBAL_FILE='AGENTS.md'` limit and supports a global `CLAUDE.md` (or both files at once).
25
- - In-browser editor for global instruction files (`AGENTS.md` / `CLAUDE.md`) with atomic writes through an RPC service.
25
+ - In-browser editor for global instruction files (`AGENTS.md` / `CLAUDE.md`) with atomic writes through an RPC service. Missing files open as clean empty drafts with zero disk side effects and are created automatically on save.
26
26
  - Onion-skin replacement of the official `agent-instructions` messages on every agent step, so your policies take effect in real sessions.
27
27
 
28
28
  ## Install
@@ -101,4 +101,4 @@ node test/e2e/isolated-real-acceptance.mjs # isolated full-function acceptance
101
101
 
102
102
  ## License
103
103
 
104
- MIT. Full text in [LICENSE](./LICENSE).
104
+ MIT. Full text in [LICENSE](./LICENSE).
package/README.zh-CN.md CHANGED
@@ -22,7 +22,7 @@
22
22
  - `truncate`:保留开头 N 字节(UTF-8 边界安全,不产生乱码)
23
23
  - `disabled`:整层不注入
24
24
  - 全局文件偏好:`auto` / `agents` / `claude` / `both`——打破官方硬编码 `USER_GLOBAL_FILE='AGENTS.md'` 的限制,支持全局 `CLAUDE.md`(或两者同时注入)。
25
- - 浏览器内在线编辑全局指令文件(`AGENTS.md` / `CLAUDE.md`),经 RPC 服务原子落盘。
25
+ - 浏览器内在线编辑全局指令文件(`AGENTS.md` / `CLAUDE.md`),经 RPC 服务原子落盘。未创建的文件以空白草稿呈现(纯只读无副作用),保存时自动新建。
26
26
  - 每个 agent 步骤上以洋葱圈方式替换官方 `agent-instructions` 消息,策略在真实会话中生效。
27
27
 
28
28
  ## 安装
@@ -101,4 +101,4 @@ node test/e2e/isolated-real-acceptance.mjs # 隔离环境全功能验收
101
101
 
102
102
  ## 许可证
103
103
 
104
- MIT,全文见 [LICENSE](./LICENSE)。
104
+ MIT,全文见 [LICENSE](./LICENSE)。
package/lib/client.js CHANGED
@@ -196,21 +196,25 @@ window.__ModuleLoader__.load({
196
196
  .then(function (response) {
197
197
  var value = unwrap(response);
198
198
  if (value === undefined || value.ok !== true) return false;
199
- return load().then(function () { return true; });
199
+ // 保存后停在刚写的文件上,并刷新它的新内容与大小
200
+ return switchTo(filename);
200
201
  })
201
202
  .catch(function () { return false; });
202
203
  };
203
204
 
205
+ // 切换只读不落盘:目标文件不存在时 value.content 就是空串,编辑器直接显示空文本,
206
+ // 用户写好内容再保存时才由 saveGlobalContent 自动创建文件。
204
207
  var switchTo = function (target) {
205
208
  var ns = endpoint("switchGlobalFilename");
206
209
  if (ns === null) return Promise.resolve(false);
207
- return Promise.resolve(ns.switchGlobalFilename({ target: target, copyExisting: true }))
210
+ return Promise.resolve(ns.switchGlobalFilename({ target: target }))
208
211
  .then(function (response) {
209
212
  var value = unwrap(response);
210
- if (value === undefined || value.ok !== true) return false;
211
- return load().then(function () { return true; });
213
+ if (value === undefined) { fail(); return false; }
214
+ store.set({ status: "ready", value: value });
215
+ return true;
212
216
  })
213
- .catch(function () { return false; });
217
+ .catch(function () { fail(); return false; });
214
218
  };
215
219
 
216
220
  store.reload = load;
@@ -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/lib/remote.d.ts CHANGED
@@ -13,7 +13,6 @@ export interface SaveGlobalPayload {
13
13
  }
14
14
  export interface SwitchGlobalPayload {
15
15
  target: 'AGENTS.md' | 'CLAUDE.md';
16
- copyExisting?: boolean;
17
16
  }
18
17
  export interface SaveGlobalResult {
19
18
  ok: boolean;
@@ -21,6 +20,9 @@ export interface SaveGlobalResult {
21
20
  sizeBytes: number;
22
21
  lastModifiedMs: number;
23
22
  }
23
+ export interface SwitchGlobalResult extends GlobalFileResolution {
24
+ ok: boolean;
25
+ }
24
26
  /**
25
27
  * 指令守卫宿主服务。
26
28
  * 注意:signal 必须声明在业务参数之后(网关按方法签名反射,signal 非末位会直接拒绝)。
@@ -38,12 +40,10 @@ export declare class InstructionsGuardService extends TypertRemoteService {
38
40
  */
39
41
  saveGlobalContent(payload: SaveGlobalPayload): Promise<SaveGlobalResult>;
40
42
  /**
41
- * 切换全局生效的文件名(AGENTS.md <-> CLAUDE.md)。
42
- * 目标文件不存在时,按 copyExisting 决定是克隆旧内容还是写一个起始标题。
43
+ * 选择要查看/编辑的全局文件名(AGENTS.md <-> CLAUDE.md),并返回该文件的状态与内容。
44
+ * 只读,不落盘:目标文件不存在时 content 为空字符串,由用户在编辑器里写好内容后
45
+ * 调用 saveGlobalContent 自动创建(写入临时文件再 rename,不需要目标预先存在)。
43
46
  */
44
- switchGlobalFilename(payload: SwitchGlobalPayload): Promise<{
45
- ok: boolean;
46
- activePath: string;
47
- }>;
47
+ switchGlobalFilename(payload: SwitchGlobalPayload): Promise<SwitchGlobalResult>;
48
48
  }
49
49
  //# sourceMappingURL=remote.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAU,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,WAAW,GAAG,WAAW,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,mBAAmB;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IAExC,YAAY,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,EAG/C;IAED;;OAEG;IAEG,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAGnD;IAED;;;OAGG;IAEG,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyC7E;IAED;;;OAGG;IAEG,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAuBrG;CACF"}
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAU,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,WAAW,GAAG,WAAW,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D,EAAE,EAAE,OAAO,CAAC;CACb;AAED;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,mBAAmB;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IAExC,YAAY,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,EAG/C;IAED;;OAEG;IAEG,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAGnD;IAED;;;OAGG;IAEG,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyC7E;IAED;;;;OAIG;IAEG,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQpF;CACF"}
package/lib/remote.js CHANGED
@@ -117,30 +117,17 @@ let InstructionsGuardService = (() => {
117
117
  }
118
118
  }
119
119
  /**
120
- * 切换全局生效的文件名(AGENTS.md <-> CLAUDE.md)。
121
- * 目标文件不存在时,按 copyExisting 决定是克隆旧内容还是写一个起始标题。
120
+ * 选择要查看/编辑的全局文件名(AGENTS.md <-> CLAUDE.md),并返回该文件的状态与内容。
121
+ * 只读,不落盘:目标文件不存在时 content 为空字符串,由用户在编辑器里写好内容后
122
+ * 调用 saveGlobalContent 自动创建(写入临时文件再 rename,不需要目标预先存在)。
122
123
  */
123
124
  async switchGlobalFilename(payload) {
124
125
  if (!payload || (payload.target !== 'AGENTS.md' && payload.target !== 'CLAUDE.md')) {
125
126
  throw new Error('switchGlobalFilename requires a "target" of "AGENTS.md" or "CLAUDE.md"');
126
127
  }
127
- const targetFilename = payload.target;
128
128
  const dshHome = this.customDshHome ?? getDshHomeDir();
129
- if (!fs.existsSync(dshHome)) {
130
- fs.mkdirSync(dshHome, { recursive: true });
131
- }
132
- const targetPath = path.join(dshHome, targetFilename);
133
- const currentResolution = resolveGlobalInstructionFile('auto', dshHome);
134
- if (!fs.existsSync(targetPath) && payload?.copyExisting && currentResolution.exists) {
135
- fs.writeFileSync(targetPath, currentResolution.content, 'utf-8');
136
- }
137
- else if (!fs.existsSync(targetPath)) {
138
- fs.writeFileSync(targetPath, `# 全局工作守则 (${targetFilename})\n`, 'utf-8');
139
- }
140
- return {
141
- ok: true,
142
- activePath: targetPath
143
- };
129
+ const preference = payload.target === 'CLAUDE.md' ? 'claude' : 'agents';
130
+ return { ok: true, ...resolveGlobalInstructionFile(preference, dshHome) };
144
131
  }
145
132
  };
146
133
  })();
package/lib/remote.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.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.0",
3
+ "version": "0.1.2",
4
4
  "description": "精细控制全局与项目级 AGENTS.md / CLAUDE.md 注入截断的 DSH 插件,附 Web 端全局指令在线编辑器",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",