dsh-ctxlift 0.1.1 → 0.1.3

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,21 @@
2
2
 
3
3
  本项目遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/) 的格式。
4
4
 
5
+ ## [0.1.3] - 2026-10-29
6
+
7
+ ### 修复与安全性增强
8
+
9
+ - 主目录边界隔离(Home Directory Boundary Isolation):向上递归寻根算法 `findProjectRoot` 在到达 `os.homedir()` 时强制中止向上穿透;当 fallback 命中主目录自身时返回其父目录,彻底禁止将用户主目录本身判定为工程项目根目录。
10
+ - 严禁误载主目录 `~/CLAUDE.md`:当会话工作目录(cwd)直接为用户主目录时,`discoverInstructionFiles` 强制排除 `~/CLAUDE.md` 与主目录根级项目指令,仅加载用户全局指令(`$DSH_HOME/AGENTS.md`),消除主目录下庞大历史环境文件对普通会话的无意污染。
11
+ - 新增专项测试与全量回归:在 `test/files.test.mjs` 中新增主目录寻根截断与主目录排除 `~/CLAUDE.md` 的专项断言,全套 16 项测试与 E2E 验收 100% 绿色通过。
12
+
13
+ ## [0.1.2] - 2026-10-28
14
+
15
+ ### 修复
16
+
17
+ - 修复上游 `flatMap` 崩溃缺陷:洋葱圈协调器在自主合成与原地替换 `agent-instructions` 消息时,严格强制为 `source` 提供合法数组 `changes: []`,彻底消除官方插件在后续步(多 step)触发 baseline 替换时调用 `visibleBaseline.changes.flatMap` 抛出的 `Cannot read properties of undefined (reading 'flatMap')` 崩溃。
18
+ - 新增专项单测:严密断言注入消息的 `source.changes` 严格为数组且支持 `.flatMap()`。
19
+
5
20
  ## [0.1.1] - 2026-10-28
6
21
 
7
22
  ### 新增
package/README.md CHANGED
@@ -24,6 +24,7 @@ The official `agent-instructions` plugin shares one global byte budget across al
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
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
+ - Home directory boundary isolation: project root traversal stops at `os.homedir()` and never treats the home directory as a project root, preventing unintended loading of `~/CLAUDE.md` when starting sessions from the user home.
27
28
 
28
29
  ## Install
29
30
 
@@ -89,7 +90,7 @@ Key contracts (verified against DSH source):
89
90
  pnpm install # installs dev + peer dependencies
90
91
  pnpm typecheck # tsc --noEmit
91
92
  pnpm build # tsc into lib/, scripts/build-client.mjs generates lib/client.js
92
- pnpm test # node --test test/*.test.mjs (13 unit tests)
93
+ pnpm test # node --test test/*.test.mjs (16 unit tests)
93
94
  node test/e2e/isolated-real-acceptance.mjs # isolated full-function acceptance
94
95
  ```
95
96
 
package/README.zh-CN.md CHANGED
@@ -24,6 +24,7 @@
24
24
  - 全局文件偏好:`auto` / `agents` / `claude` / `both`——打破官方硬编码 `USER_GLOBAL_FILE='AGENTS.md'` 的限制,支持全局 `CLAUDE.md`(或两者同时注入)。
25
25
  - 浏览器内在线编辑全局指令文件(`AGENTS.md` / `CLAUDE.md`),经 RPC 服务原子落盘。未创建的文件以空白草稿呈现(纯只读无副作用),保存时自动新建。
26
26
  - 每个 agent 步骤上以洋葱圈方式替换官方 `agent-instructions` 消息,策略在真实会话中生效。
27
+ - 主目录边界隔离(Home Directory Boundary Isolation):向上寻根探测到 `os.homedir()` 立即截断且绝不将主目录本身判定为项目根,彻底防止从主目录启动会话时误载 `~/CLAUDE.md`。
27
28
 
28
29
  ## 安装
29
30
 
@@ -89,7 +90,7 @@ locale/ zh.json / en.json
89
90
  pnpm install # 安装 dev + peer 依赖
90
91
  pnpm typecheck # tsc --noEmit
91
92
  pnpm build # tsc 输出 lib/,scripts/build-client.mjs 生成 lib/client.js
92
- pnpm test # node --test test/*.test.mjs(13 项单测)
93
+ pnpm test # node --test test/*.test.mjs(16 项单测)
93
94
  node test/e2e/isolated-real-acceptance.mjs # 隔离环境全功能验收
94
95
  ```
95
96
 
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/engine/files.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,mBAAmB,EAA2B,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC;IAC1C,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,GAAE,oBAA6B,EACzC,aAAa,CAAC,EAAE,MAAM,GACrB,oBAAoB,CAkEtB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkBxD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,oBAA6B,EACzC,aAAa,CAAC,EAAE,MAAM,GACrB,mBAAmB,EAAE,CA8FvB"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/engine/files.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,mBAAmB,EAA2B,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC;IAC1C,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,GAAE,oBAA6B,EACzC,aAAa,CAAC,EAAE,MAAM,GACrB,oBAAoB,CAkEtB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4BxD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,oBAA6B,EACzC,aAAa,CAAC,EAAE,MAAM,GACrB,mBAAmB,EAAE,CAoGvB"}
@@ -96,7 +96,15 @@ export function resolveGlobalInstructionFile(preference = 'auto', customDshHome)
96
96
  export function findProjectRoot(startDir) {
97
97
  let current = path.resolve(startDir);
98
98
  const root = path.parse(current).root;
99
+ // 家目录永远不是项目根:它是全局配置(~/.dsh、~/.agents)的所在,
100
+ // 里面那份 CLAUDE.md 属于用户全局环境,不该被当成某个项目的指令加载。
101
+ const homeDir = path.resolve(os.homedir());
99
102
  while (current && current !== root) {
103
+ // 探测到 home 层就停,且 home 自身与更高层都不参与标志判定:
104
+ // 家目录里的 .dsh、package.json 只是家目录配置,认下来会让所有
105
+ // 无项目标志的子目录都被归到 home,进而误加载 ~/CLAUDE.md。
106
+ if (current === homeDir)
107
+ break;
100
108
  if (fs.existsSync(path.join(current, '.git')) ||
101
109
  fs.existsSync(path.join(current, 'package.json')) ||
102
110
  fs.existsSync(path.join(current, '.dsh'))) {
@@ -107,7 +115,10 @@ export function findProjectRoot(startDir) {
107
115
  break;
108
116
  current = parent;
109
117
  }
110
- return path.resolve(startDir);
118
+ // 兜底:找不到项目标志时退回起点;但起点落在 home 时不能返回 home,
119
+ // 否则从家目录启动仍会命中 ~/CLAUDE.md。返回 home 的上一级,等于宣告无项目根。
120
+ const fallback = path.resolve(startDir);
121
+ return fallback === homeDir ? path.dirname(homeDir) : fallback;
111
122
  }
112
123
  /**
113
124
  * 扫描并搜集从全局到项目的所有指令文件列表
@@ -178,7 +189,12 @@ export function discoverInstructionFiles(workspaceDir, preference = 'auto', cust
178
189
  // 子目录扫描(如果当前工作区是项目根的深层子目录)
179
190
  const normalizedRoot = path.resolve(projectRoot);
180
191
  const normalizedCwd = path.resolve(workspaceDir);
181
- if (normalizedCwd !== normalizedRoot && normalizedCwd.startsWith(normalizedRoot)) {
192
+ // 家目录本身不算任何项目的子目录:从家目录启动会命中兜底返回的
193
+ // 「家目录的上一级」,若不排除,~/CLAUDE.md(全局环境记忆)会被当作
194
+ // 子目录指令重新注入。
195
+ if (normalizedCwd !== normalizedRoot &&
196
+ normalizedCwd.startsWith(normalizedRoot) &&
197
+ normalizedCwd !== path.resolve(os.homedir())) {
182
198
  const subCandidates = ['CLAUDE.md', 'AGENTS.md'];
183
199
  for (const subName of subCandidates) {
184
200
  const subFilePath = path.join(normalizedCwd, subName);
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/engine/files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/engine/files.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.3",
4
4
  "description": "精细控制全局与项目级 AGENTS.md / CLAUDE.md 注入截断的 DSH 插件,附 Web 端全局指令在线编辑器",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -54,12 +54,6 @@
54
54
  "node": ">=20.0.0",
55
55
  "dsh": ">=0.2.0-rc.1 <=0.2.1"
56
56
  },
57
- "scripts": {
58
- "build": "tsc -p tsconfig.build.json && node scripts/build-client.mjs",
59
- "typecheck": "tsc --noEmit",
60
- "test": "node --test test/*.test.mjs",
61
- "test:e2e": "node test/e2e/isolated-real-acceptance.mjs"
62
- },
63
57
  "keywords": [
64
58
  "dsh",
65
59
  "dsh-plugin",
@@ -84,5 +78,11 @@
84
78
  "@types/node": "^26.6.5",
85
79
  "@types/react": "^19.3.0",
86
80
  "typescript": "^7.0.2"
81
+ },
82
+ "scripts": {
83
+ "build": "tsc -p tsconfig.build.json && node scripts/build-client.mjs",
84
+ "typecheck": "tsc --noEmit",
85
+ "test": "node --test test/*.test.mjs",
86
+ "test:e2e": "node test/e2e/isolated-real-acceptance.mjs"
87
87
  }
88
- }
88
+ }