dsh-ctxlift 0.1.2 → 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 +8 -0
- package/README.md +2 -1
- package/README.zh-CN.md +2 -1
- package/lib/engine/files.d.ts.map +1 -1
- package/lib/engine/files.js +18 -2
- package/lib/engine/files.js.map +1 -1
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
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
|
+
|
|
5
13
|
## [0.1.2] - 2026-10-28
|
|
6
14
|
|
|
7
15
|
### 修复
|
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 (
|
|
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(
|
|
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":"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,
|
|
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"}
|
package/lib/engine/files.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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);
|
package/lib/engine/files.js.map
CHANGED
|
@@ -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":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAczB;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACxC,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC9C,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,UAAU,GAAyB,MAAM,EACzC,aAAsB;IAEtB,MAAM,OAAO,GAAG,aAAa,IAAI,aAAa,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAEnD,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAE/C,IAAI,UAAU,GAAG,UAAU,CAAC;IAC5B,IAAI,aAAa,GAAuB,UAAU,CAAC;IACnD,IAAI,cAAc,GAA8B,WAAW,CAAC;IAE5D,QAAQ,UAAoB,EAAE,CAAC;QAC7B,KAAK,QAAQ,CAAC;QACd,KAAK,WAAW;YACd,UAAU,GAAG,UAAU,CAAC;YACxB,aAAa,GAAG,UAAU,CAAC;YAC3B,cAAc,GAAG,WAAW,CAAC;YAC7B,MAAM;QACR,KAAK,QAAQ,CAAC;QACd,KAAK,WAAW;YACd,UAAU,GAAG,UAAU,CAAC;YACxB,aAAa,GAAG,UAAU,CAAC;YAC3B,cAAc,GAAG,WAAW,CAAC;YAC7B,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ;YACE,wDAAwD;YACxD,IAAI,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClC,UAAU,GAAG,UAAU,CAAC;gBACxB,aAAa,GAAG,UAAU,CAAC;gBAC3B,cAAc,GAAG,WAAW,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,UAAU,CAAC;gBACxB,aAAa,GAAG,UAAU,CAAC;gBAC3B,cAAc,GAAG,WAAW,CAAC;YAC/B,CAAC;YACD,MAAM;IACV,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACtC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC/C,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YACvB,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW,EAAE,UAAU;QACvB,aAAa;QACb,cAAc;QACd,MAAM;QACN,OAAO;QACP,SAAS;QACT,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IACtC,0CAA0C;IAC1C,0CAA0C;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAE3C,OAAO,OAAO,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACnC,sCAAsC;QACtC,0CAA0C;QAC1C,wCAAwC;QACxC,IAAI,OAAO,KAAK,OAAO;YAAE,MAAM;QAC/B,IACE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACzC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACjD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EACzC,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM;QAC9B,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IAED,yCAAyC;IACzC,kDAAkD;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,YAAoB,EACpB,UAAU,GAAyB,MAAM,EACzC,aAAsB;IAEtB,MAAM,MAAM,GAA0B,EAAE,CAAC;IAEzC,YAAY;IACZ,MAAM,OAAO,GAAG,aAAa,IAAI,aAAa,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAErD,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,kBAAkB;gBAC/B,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC;aAChD,CAAC,CAAC;QACL,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,kBAAkB;gBAC/B,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC;aAChD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,4BAA4B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,UAAU,CAAC,WAAW;gBAC5B,WAAW,EAAE,UAAU,UAAU,CAAC,cAAc,EAAE;gBAClD,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,cAAc;IACd,MAAM,WAAW,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,UAAU,GAAuF;QACrG,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE;QACtE,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE;QAC5E,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE;QACtE,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE;KAC7E,CAAC;IAEF,UAAU;IACV,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,IAAI,CAAC,IAAI;wBACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,OAAO;qBACR,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACjD,iCAAiC;IACjC,yCAAyC;IACzC,aAAa;IACb,IACE,aAAa,KAAK,cAAc;QAChC,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC;QACxC,aAAa,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAC5C,CAAC;QACD,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACjD,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACtD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;oBACtD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBAC/E,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,WAAW;4BACjB,WAAW,EAAE,OAAO;4BACpB,QAAQ,EAAE,cAAc;4BACxB,OAAO;yBACR,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-ctxlift",
|
|
3
|
-
"version": "0.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
|
+
}
|