dsh-git-worktree 0.11.0 → 0.12.0
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 +20 -0
- package/README.en.md +26 -19
- package/README.md +26 -19
- package/lib/adapters/git.js +45 -8
- package/lib/adapters/git.js.map +1 -1
- package/lib/adapters/project-skill-io.js +7 -1
- package/lib/adapters/project-skill-io.js.map +1 -1
- package/lib/adapters/project-skill-snapshot.d.ts +10 -0
- package/lib/adapters/project-skill-snapshot.js +182 -0
- package/lib/adapters/project-skill-snapshot.js.map +1 -0
- package/lib/adapters/project-skills.d.ts +18 -3
- package/lib/adapters/project-skills.js +102 -13
- package/lib/adapters/project-skills.js.map +1 -1
- package/lib/client/WorktreeCreateRow.js +14 -2
- package/lib/client/WorktreeCreateRow.js.map +1 -1
- package/lib/client/actions.d.ts +32 -1
- package/lib/client/actions.js +41 -0
- package/lib/client/actions.js.map +1 -1
- package/lib/client/index.d.ts +6 -1
- package/lib/client/index.js +11 -2
- package/lib/client/index.js.map +1 -1
- package/lib/client/target-console/TargetStatusAction.js +11 -9
- package/lib/client/target-console/TargetStatusAction.js.map +1 -1
- package/lib/client/workspace-desktop.d.ts +15 -0
- package/lib/client/workspace-desktop.js +95 -0
- package/lib/client/workspace-desktop.js.map +1 -0
- package/lib/client.js +255 -105
- package/lib/console-host/review-diff.js +9 -4
- package/lib/console-host/review-diff.js.map +1 -1
- package/lib/creation-failure.d.ts +6 -0
- package/lib/creation-failure.js +9 -0
- package/lib/creation-failure.js.map +1 -1
- package/lib/i18n/client-messages.d.ts +8 -0
- package/lib/i18n/client-messages.js +3 -1
- package/lib/i18n/client-messages.js.map +1 -1
- package/lib/session-checkout-apply.js +6 -3
- package/lib/session-checkout-apply.js.map +1 -1
- package/lib/session-checkout-module.js +6 -1
- package/lib/session-checkout-module.js.map +1 -1
- package/package.json +13 -13
- package/scripts/workspace-sidebar-resources.mjs +25 -0
- package/scripts/workspace-sidebar-upstream-alpha.mjs +2 -1
- package/scripts/workspace-sidebar-upstream-next.mjs +2 -1
- package/scripts/workspace-sidebar-upstream.mjs +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
本项目的显著变更记录在此文件中。版本号遵循 Semantic Versioning;在 `0.x` 阶段,minor 版本可能包含需要迁移的公开能力调整。
|
|
4
4
|
|
|
5
|
+
## [0.12.0] - 2026-11-02
|
|
6
|
+
|
|
7
|
+
本版新增仓库内 Project Skills symlink 安全快照,修复侧栏样式资源与打开工作目录,并将 DSH 安装要求从单个 RC 改为最低版本。构建基线仍为 `0.2.1-rc.2`;`0.2.1-rc.5` 允许安装但未完成实机验收,未知宿主保留官方侧栏。#11 原始双 Provider 异常仍未确认解决。Windows symlink 生命周期未实机验证。
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Project Skills 支持同一真实 Git 仓库内的文件/目录 symlink、共享/多层目标及 Skill 根目录链接,以受限快照物化到 Managed Worktree,不链接回 Local 或共享目录;拒绝任何仓库外跳转、Git 元数据、循环、悬空和特殊文件目标。原有文件/大小/深度限制计入展开副本。
|
|
12
|
+
- Internal project Skill links (including tracked/root/shared/multi-hop links) are safely snapshotted into ordinary managed files/directories. External hops, Git metadata, cycles, dangling links and special files remain errors. Materialized copies are frozen auxiliary snapshots: modifications block delivery and cleanup; edit canonical tracked sources instead. Precise host-private provenance preserves original tracked links across review/checkpoint/preview/finalize and fresh next iterations without hiding normal tracked edits.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- DSH peer 声明改为最低版本 `>=0.2.1-rc.2`,不再因同代新 RC 阻止安装;开发依赖与侧栏来源仍精确锁定,未知宿主保留官方侧栏。允许安装不代表新版已实机验收。
|
|
17
|
+
- 修复 tracked link 物化后的 Git 类型变化/删除及新增副本被误当交付内容;只恢复 provenance 验证通过的原链接条目,物化副本变化或暂存明确报错并保留现场,canonical tracked 目标的正常改动仍可交付。保留 porcelain 首条记录前导空格与 NUL 重命名语义。
|
|
18
|
+
- 修复「打开当前工作位置」与创建卡片里可点击的 workspace 路径静默失败:客户端调用了 Workspace 控制器上从不存在的 `workspaces.openPath`(同步 `TypeError`,菜单先关闭所以用户侧无任何反馈),改为经 `remote.session.canOpenWorkspacePath()` / `openWorkspacePath()` 交付路径;宿主没有桌面打开能力时不再渲染该控件,与官方 open-in-app 一致,运行期失败改为可见提示。
|
|
19
|
+
- 客户端 `inject` 声明补入 `remote` 与 `remote.session`,与官方 open-in-app 的注入约定保持一致。
|
|
20
|
+
- 桌面打开能力查询只缓存成功结果;临时失败共享有限重试,避免首次断连后永久隐藏入口,不引入持续轮询。
|
|
21
|
+
- 隔离三代 Workspace 派生的 CSS 去重标识与资源归属,避免不同版本样式互相压制或被官方模块清理误删;保留上游 CSS 与来源校验。此项不代表已解决 #11 的双 Provider 注册问题。
|
|
22
|
+
- Project Skills 源预检失败保留原始错误和具体路径,在保守清理后停止无关的存储目录重试;保留保守清理安全边界。
|
|
23
|
+
- 补充中英文重启取证、Skill 链接排错和精确 Host/插件版本配对说明。
|
|
24
|
+
|
|
5
25
|
## [0.11.0] - 2026-10-18
|
|
6
26
|
|
|
7
27
|
`0.11.0` 将 DSH 基线从 `0.2.0-rc.2` 精确切换到 `0.2.1-rc.2`,并修复新版 Cordis/Loader 下的 Provider 生命周期;同时取消提交信息长度限制、精简验收冲突展示。本版完整包含 tag `v0.10.1` 的全部变更;`v0.10.1` 有 Git tag 与 GitHub Release 但从未发布到 npm,npm 用户应直接安装 `0.11.0`。
|
package/README.en.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# dsh-git-worktree
|
|
2
2
|
|
|
3
|
+
> Development installation policy: DSH peers use a minimum of `>=0.2.1-rc.2`, with no speculative upper bound; requirements change when breaking changes are confirmed. Build dependencies and embedded Browser sources remain exact. Unknown Hosts retain the official Workspace rather than reusing an unverified derivative. Installation permission is not acceptance evidence. Standard SemVer includes later RCs of the same `0.2.1` core; prereleases of other future cores are not matched by default. Exact peer constraints below describe historical published releases.
|
|
4
|
+
|
|
3
5
|
[](https://www.npmjs.com/package/dsh-git-worktree)
|
|
4
6
|
[](https://www.npmjs.com/package/dsh-git-worktree)
|
|
5
7
|
[](https://github.com/wloops/dsh-git-worktree/actions/workflows/ci.yml)
|
|
@@ -7,7 +9,7 @@
|
|
|
7
9
|
|
|
8
10
|
**Let agents complete tasks in independent Git Worktrees, then review the changes before deciding whether to save them.**
|
|
9
11
|
|
|
10
|
-
`dsh-git-worktree` is a Git Worktree plugin for [DeepSeek Harness](https://github.com/deepseek-ai/DeepSeek-Harness). It creates a separate Worktree (working directory) for
|
|
12
|
+
`dsh-git-worktree` is a Git Worktree plugin for [DeepSeek Harness](https://github.com/deepseek-ai/DeepSeek-Harness). It creates a separate Worktree (working directory) for each isolated task, where the agent edits and tests code. The plugin writes task changes back to the current project only when you start a preview or confirm saving. When the task is complete, you can preview the result and then save it, send it back for changes, or discard it.
|
|
11
13
|
|
|
12
14
|
This Git Worktree workflow originated in [Domi](https://github.com/restflux/domi), an open-source desktop coding workbench powered by the Pi Agent Runtime. This plugin is independently adapted for DeepSeek Harness and can be installed and used on its own.
|
|
13
15
|
|
|
@@ -18,7 +20,7 @@ This Git Worktree workflow originated in [Domi](https://github.com/restflux/domi
|
|
|
18
20
|
When an agent edits the current project directly, its changes can mix with your unfinished work. Running multiple tasks at once can also make them interfere with one another. With this plugin:
|
|
19
21
|
|
|
20
22
|
- every task is edited and tested in its own Git Worktree (an independent working directory);
|
|
21
|
-
- multiple tasks can
|
|
23
|
+
- multiple isolated tasks can develop in parallel in separate working directories; only one task per project can enter the review write-back flow at a time;
|
|
22
24
|
- when the agent finishes, you can temporarily show the changes in the current project and inspect them;
|
|
23
25
|
- changes are saved only after confirmation, and conflicts never overwrite your work automatically.
|
|
24
26
|
|
|
@@ -72,38 +74,43 @@ See the [full usage guide](docs/USAGE.en.md) for detailed actions, recovery scen
|
|
|
72
74
|
### Requirements
|
|
73
75
|
|
|
74
76
|
- Node.js `^22.19.0 || >=24.0.0`
|
|
75
|
-
-
|
|
76
|
-
- Published historical combinations (not withdrawn by this work): this plugin follows Host version lines — `0.10.0` targets DSH `0.2.0-rc.2` (exact peer pins; verified against an isolated source Host for install, boot, the Worktree switch and pre-session creation, while AI conversation and the delivery lifecycle remain pending acceptance). For DSH `0.1.x`, stay on the `0.9.x` plugin line. See the [compatibility matrix and limitations](docs/COMPATIBILITY.md#english).
|
|
77
|
-
- Harness Web Client
|
|
77
|
+
- DeepSeek Harness Web Client
|
|
78
78
|
- A Git Workspace
|
|
79
|
+
- A plugin version matching your Harness version, as listed below
|
|
79
80
|
|
|
80
|
-
|
|
81
|
+
### Choose a version
|
|
81
82
|
|
|
82
|
-
|
|
83
|
+
| DeepSeek Harness | Plugin version |
|
|
84
|
+
| --- | --- |
|
|
85
|
+
| `0.2.1-rc.2` | `0.11.0` |
|
|
86
|
+
| `0.2.0-rc.2` | `0.10.0` |
|
|
87
|
+
| `0.1.x` | See the historical `0.9.x` compatibility records; not every `0.1.x` version has been verified |
|
|
83
88
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
89
|
+
Match the plugin version to your Harness version rather than installing the latest plugin on an older Harness.
|
|
90
|
+
|
|
91
|
+
The DSH `0.2.1-rc.2` adaptation included in `0.11.0` passed pre-release source compatibility checks. Browser, real AI conversation, desktop and Windows end-to-end acceptance for this combination remain incomplete. See the [compatibility notes](docs/COMPATIBILITY.md#english) and [validation report](docs/compatibility/0.2.1-rc.2.md) for the scope. Historical validation records remain valid for their original combinations, not as acceptance evidence for newer ones.
|
|
87
92
|
|
|
88
93
|
### Install
|
|
89
94
|
|
|
95
|
+
For DSH `0.2.1-rc.2`, install through the `dsh` Web Profile:
|
|
96
|
+
|
|
90
97
|
```bash
|
|
91
|
-
dsh plugin --profile web add dsh-git-worktree
|
|
98
|
+
dsh plugin --profile web add dsh-git-worktree@0.11.0
|
|
92
99
|
```
|
|
93
100
|
|
|
94
|
-
|
|
101
|
+
For other Harness versions, choose the matching plugin version from the table above first.
|
|
95
102
|
|
|
96
|
-
|
|
97
|
-
dsh plugin --profile web add github:wloops/dsh-git-worktree#v0.10.0
|
|
98
|
-
```
|
|
103
|
+
Open a Git Workspace and enable **Worktree** when creating a Session. An existing Local Session can also let the agent call `worktree_create` to create a separate isolated Session.
|
|
99
104
|
|
|
100
|
-
|
|
105
|
+
For the first run, complete one full create → Preview changes → Confirm and save → clean up the Worktree cycle.
|
|
101
106
|
|
|
102
|
-
|
|
107
|
+
### Upgrades and troubleshooting
|
|
103
108
|
|
|
104
|
-
|
|
109
|
+
- Back up your data and check version compatibility before upgrading Harness. See the [compatibility notes](docs/COMPATIBILITY.md#english) for legacy data migration requirements.
|
|
110
|
+
- If the UI shows **Failed to load plugins**, first check that the plugin and Harness versions match, then follow the troubleshooting guide.
|
|
111
|
+
- Harness's supply-chain guard (`minimumReleaseAge`) may skip a freshly published release and fall back to an older one. Specify the matching exact version explicitly or retry after the guard window passes.
|
|
105
112
|
|
|
106
|
-
|
|
113
|
+
For Git-source installation, pnpm build approval and other troubleshooting steps, see [Installation and troubleshooting](docs/USAGE.en.md#installation-and-troubleshooting).
|
|
107
114
|
|
|
108
115
|
## Screenshots
|
|
109
116
|
|
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# dsh-git-worktree
|
|
2
2
|
|
|
3
|
+
> 当前开发版安装策略:DSH peer 使用最低版本 `>=0.2.1-rc.2`,不设置预防性上限;仅在确认破坏性变化后调整要求。开发依赖和内嵌侧栏来源继续精确锁定。未知宿主不复用旧侧栏,而保留官方 Workspace,其他插件功能按实际 API 运行。允许安装并不等于已验收;SemVer 默认仅自动包含同一 `0.2.1` 核心版本的后续 RC,未来其他核心版本的预发布不属于默认匹配。下方精确 peer 描述均为已发布历史版本的记录。
|
|
4
|
+
|
|
3
5
|
[](https://www.npmjs.com/package/dsh-git-worktree)
|
|
4
6
|
[](https://www.npmjs.com/package/dsh-git-worktree)
|
|
5
7
|
[](https://github.com/wloops/dsh-git-worktree/actions/workflows/ci.yml)
|
|
@@ -7,7 +9,7 @@
|
|
|
7
9
|
|
|
8
10
|
**让 Agent 在独立 Git Worktree 中完成任务,你看过修改后再决定是否保存。**
|
|
9
11
|
|
|
10
|
-
`dsh-git-worktree` 是 [DeepSeek Harness](https://github.com/deepseek-ai/DeepSeek-Harness) 的 Git Worktree
|
|
12
|
+
`dsh-git-worktree` 是 [DeepSeek Harness](https://github.com/deepseek-ai/DeepSeek-Harness) 的 Git Worktree 插件。它为隔离任务创建独立的 Worktree(工作目录),Agent 的代码修改和测试在其中进行;只有你发起预览或确认保存时,插件才会把任务改动写回当前项目。任务完成后,你可以先预览结果,再选择保存、退回修改或放弃。
|
|
11
13
|
|
|
12
14
|
这套 Git Worktree 工作方式最初来自基于 Pi Agent Runtime 的开源桌面 coding 工作台 [Domi](https://github.com/restflux/domi),本插件是针对 DeepSeek Harness 独立适配的版本,可以单独安装和使用。
|
|
13
15
|
|
|
@@ -18,7 +20,7 @@
|
|
|
18
20
|
让 Agent 直接修改当前项目时,它的改动可能与你尚未提交的内容混在一起;同时运行多个任务时,也更容易互相影响。使用本插件后:
|
|
19
21
|
|
|
20
22
|
- 每个任务都在自己的 Git Worktree(独立工作目录)中修改和测试;
|
|
21
|
-
-
|
|
23
|
+
- 多个隔离任务可以同时开发,各自使用独立工作目录;同一项目一次只允许一个任务进入验收写回流程;
|
|
22
24
|
- Agent 完成后,你可以先把修改临时显示在当前项目中查看;
|
|
23
25
|
- 只有确认后才会保存本轮修改,遇到冲突时不会自动覆盖你的内容。
|
|
24
26
|
|
|
@@ -72,38 +74,43 @@ flowchart LR
|
|
|
72
74
|
### 环境要求
|
|
73
75
|
|
|
74
76
|
- Node.js `^22.19.0 || >=24.0.0`
|
|
75
|
-
-
|
|
76
|
-
- 已发布历史组合(不因本轮撤销):插件按 Host 版本分线——`0.10.0` 面向 DSH `0.2.0-rc.2`(peers 精确锁定;已通过隔离源码 Host 的安装、启动、Worktree 开关与预会话创建真实验证,AI 对话与交付全流程仍待验收);DSH `0.1.x` 请使用 `0.9.x` 插件线。详见[兼容矩阵与限制](docs/COMPATIBILITY.md#中文)。
|
|
77
|
-
- Harness Web Client
|
|
77
|
+
- DeepSeek Harness Web Client
|
|
78
78
|
- Git Workspace
|
|
79
|
+
- 与 Harness 版本匹配的插件版本,见下表
|
|
79
80
|
|
|
80
|
-
|
|
81
|
+
### 版本选择
|
|
81
82
|
|
|
82
|
-
|
|
83
|
+
| DeepSeek Harness | 插件版本 |
|
|
84
|
+
| --- | --- |
|
|
85
|
+
| `0.2.1-rc.2` | `0.11.0` |
|
|
86
|
+
| `0.2.0-rc.2` | `0.10.0` |
|
|
87
|
+
| `0.1.x` | 请参考 `0.9.x` 的历史兼容记录,不代表所有 `0.1.x` 版本均已验证 |
|
|
83
88
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
89
|
+
插件版本与 Harness 版本需要匹配,不建议在旧版 Harness 上直接安装最新版插件。
|
|
90
|
+
|
|
91
|
+
`0.11.0` 对应的 DSH `0.2.1-rc.2` 适配已通过发布前源码兼容检查,但尚未完成该组合的浏览器、真实 AI 对话、桌面端和 Windows 全流程验收。详细验证范围见[兼容性说明](docs/COMPATIBILITY.md#中文)与[验证报告](docs/compatibility/0.2.1-rc.2.md);旧组合的验证记录仍保留,不自动转为新组合的验收证据。
|
|
87
92
|
|
|
88
93
|
### 安装
|
|
89
94
|
|
|
95
|
+
以下命令适用于 DSH `0.2.1-rc.2`,通过 `dsh` 的 Web Profile 安装:
|
|
96
|
+
|
|
90
97
|
```bash
|
|
91
|
-
dsh plugin --profile web add dsh-git-worktree
|
|
98
|
+
dsh plugin --profile web add dsh-git-worktree@0.11.0
|
|
92
99
|
```
|
|
93
100
|
|
|
94
|
-
|
|
101
|
+
如果使用其他 Harness 版本,请先按上表选择匹配的插件版本。
|
|
95
102
|
|
|
96
|
-
|
|
97
|
-
dsh plugin --profile web add github:wloops/dsh-git-worktree#v0.10.0
|
|
98
|
-
```
|
|
103
|
+
安装后打开 Git Workspace,在新建 Session 时启用 **Worktree**;已有 Local Session 也可以让 Agent 调用 `worktree_create` 创建独立的隔离 Session。
|
|
99
104
|
|
|
100
|
-
|
|
105
|
+
第一次使用建议先完成一次“创建 → 预览修改 → 确认并保存 → 清理 Worktree”的完整流程。
|
|
101
106
|
|
|
102
|
-
|
|
107
|
+
### 升级与排错
|
|
103
108
|
|
|
104
|
-
|
|
109
|
+
- 升级 Harness 前,请先备份数据并检查版本兼容性;旧版数据迁移要求见[升级与回退](docs/COMPATIBILITY.md#升级与回退)。
|
|
110
|
+
- 出现 **Failed to load plugins** 时,先确认插件与 Harness 版本匹配,再按使用指南排查。
|
|
111
|
+
- 刚发布的版本可能被 Harness 的供应链防护(`minimumReleaseAge`)暂时跳过而回退旧版;可显式指定匹配的精确版本,或待防护窗口过后重试。
|
|
105
112
|
|
|
106
|
-
|
|
113
|
+
Git 源安装方式、pnpm build approval 及其他排错步骤见[安装与排错](docs/USAGE.md#安装与排错)。
|
|
107
114
|
|
|
108
115
|
## 界面预览
|
|
109
116
|
|
package/lib/adapters/git.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ProjectSkillStore, PROJECT_SKILL_ROOTS, hasDeliverableStatus, trackedSkillPaths } from './project-skills.js';
|
|
2
2
|
import { createWorktree } from './worktree-creation.js';
|
|
3
|
+
import { WorktreeCreationPreflightFailure } from '../creation-failure.js';
|
|
3
4
|
import { gitTimeoutMs, validateGitTimeouts } from './git-options.js';
|
|
4
5
|
import { initialCommitActions } from './initial-commit.js';
|
|
5
6
|
import { hostMessage } from '../i18n/host.js';
|
|
@@ -139,7 +140,7 @@ async function runGit(ctx, cwd, args, options, input, creation) {
|
|
|
139
140
|
if (outcome.signal === 'SIGTERM' || outcome.signal === 'SIGKILL' || controller.signal.aborted) {
|
|
140
141
|
return { code: -1, stdout, stderr: hostMessage('gitTimedOutMsAndWasTerminated', { p0: args.join(' '), p1: graceMs }), quiescent };
|
|
141
142
|
}
|
|
142
|
-
return { code: outcome.exitCode ?? -1, stdout: stdout.trim(), stderr: stderr.trim(), quiescent };
|
|
143
|
+
return { code: outcome.exitCode ?? -1, stdout: args[0] === 'status' ? stdout : stdout.trim(), stderr: stderr.trim(), quiescent };
|
|
143
144
|
}
|
|
144
145
|
catch (error) {
|
|
145
146
|
if (error instanceof SessionCheckoutError)
|
|
@@ -255,14 +256,49 @@ export function createDshGitPort(ctx, options) {
|
|
|
255
256
|
status: async (root) => {
|
|
256
257
|
const output = await runSessionGitChecked(root, ['status', '--porcelain=v1', '-z', '--untracked-files=all']);
|
|
257
258
|
const carried = await projectSkills.scope(root);
|
|
258
|
-
|
|
259
|
+
let links = [];
|
|
260
|
+
if (carried) {
|
|
261
|
+
const index = await runSessionGitChecked(root, ['ls-files', '--stage', '-z']);
|
|
262
|
+
const head = await runSessionGitChecked(root, ['ls-tree', '-r', '-z', 'HEAD']);
|
|
263
|
+
links = (await projectSkills.projection(root, index, head))?.links ?? [];
|
|
264
|
+
}
|
|
265
|
+
return { dirty: hasDeliverableStatus(output, new Set(carried?.paths ?? []), carried?.directories, new Set(links)) };
|
|
259
266
|
},
|
|
260
267
|
createDetachedWorktree: async (localRoot, managedRoot, baseOid, saveEvidence) => {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
268
|
+
// Only source preflight is target-independent. Do not classify creation or
|
|
269
|
+
// carry failures here: those may have produced evidence or partial content.
|
|
270
|
+
const skills = await (async () => {
|
|
271
|
+
try {
|
|
272
|
+
const gitRoot = await realpath(await runSessionGitChecked(localRoot, ['rev-parse', '--show-toplevel']));
|
|
273
|
+
const metadata = [await runSessionGitChecked(localRoot, ['rev-parse', '--path-format=absolute', '--git-common-dir']),
|
|
274
|
+
await runSessionGitChecked(localRoot, ['rev-parse', '--absolute-git-dir'])];
|
|
275
|
+
const snapshot = await projectSkills.snapshot(gitRoot, { root: gitRoot, metadata });
|
|
276
|
+
// Link targets may live outside Skill roots. Their Local edits cannot be
|
|
277
|
+
// silently frozen while the canonical worktree starts at another base.
|
|
278
|
+
const paths = [...PROJECT_SKILL_ROOTS, ...(snapshot.sourcePaths ?? [])];
|
|
279
|
+
const changes = [];
|
|
280
|
+
for (let offset = 0; offset < paths.length; offset += 50) {
|
|
281
|
+
const batch = paths.slice(offset, offset + 50);
|
|
282
|
+
changes.push(await runSessionGitChecked(gitRoot, ['--literal-pathspecs', 'diff', '--name-only', '-z', baseOid, '--', ...batch]), await runSessionGitChecked(gitRoot, ['--literal-pathspecs', 'diff', '--cached', '--name-only', '-z', baseOid, '--', ...batch]));
|
|
283
|
+
}
|
|
284
|
+
const changed = changes.join('');
|
|
285
|
+
const index = await runSessionGitChecked(gitRoot, ['ls-files', '--stage', '-z']);
|
|
286
|
+
for (const link of snapshot.links ?? []) {
|
|
287
|
+
const entry = index.split('\0').find(entry => entry.slice(entry.indexOf('\t') + 1) === link.path);
|
|
288
|
+
if (entry) {
|
|
289
|
+
if (!entry.startsWith('120000 ') || !entry.includes(' 0\t'))
|
|
290
|
+
throw new Error(`Project Skills: tracked link conflicts with index: ${link.path}`);
|
|
291
|
+
link.entry = entry;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
if (changed)
|
|
295
|
+
throw new SessionCheckoutError('git_operation_failed', `Project Skills: commit or resolve local tracked Skill changes before creating a Worktree (${changed.split('\0').filter(Boolean).join(', ')})`);
|
|
296
|
+
return snapshot;
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
throw new WorktreeCreationPreflightFailure(error);
|
|
300
|
+
}
|
|
301
|
+
})();
|
|
266
302
|
const deadline = Date.now() + gitTimeoutMs(['worktree', 'add'], options);
|
|
267
303
|
await createWorktree(localRoot, managedRoot, baseOid, (cwd, args, creating) => runGit(ctx, cwd, args, options, undefined, creating ? { deadline }
|
|
268
304
|
: args[0] === 'worktree' && ['move', 'remove'].includes(args[1] ?? '')
|
|
@@ -274,7 +310,8 @@ export function createDshGitPort(ctx, options) {
|
|
|
274
310
|
// the caller has already verified checkout identity and the full fingerprint.
|
|
275
311
|
if (await projectSkills.paths(managedRoot)) {
|
|
276
312
|
const index = await runSessionGitChecked(managedRoot, ['ls-files', '--stage', '-z']);
|
|
277
|
-
const head = await runSessionGitChecked(managedRoot, ['ls-tree', '-r', '
|
|
313
|
+
const head = await runSessionGitChecked(managedRoot, ['ls-tree', '-r', '-z', 'HEAD']);
|
|
314
|
+
await projectSkills.projection(managedRoot, index, head);
|
|
278
315
|
await projectSkills.assertRemovable(managedRoot, trackedSkillPaths(index, head));
|
|
279
316
|
}
|
|
280
317
|
await runSessionGitChecked(localRoot, ['worktree', 'remove', '--force', managedRoot]);
|
package/lib/adapters/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/adapters/git.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/adapters/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ export async function readSkillFiles(root, identity, files) {
|
|
|
40
40
|
for (const file of files) {
|
|
41
41
|
await checkRoot(root, identity);
|
|
42
42
|
await checkPath(root, file.path);
|
|
43
|
-
const handle = await open(join(root, file.path), constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0));
|
|
43
|
+
const handle = await open(join(root, file.path), constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0) | (constants.O_NONBLOCK ?? 0));
|
|
44
44
|
try {
|
|
45
45
|
const stat = await handle.stat({ bigint: true });
|
|
46
46
|
const pathStat = await lstat(join(root, file.path), { bigint: true });
|
|
@@ -57,6 +57,12 @@ export async function readSkillFiles(root, identity, files) {
|
|
|
57
57
|
}
|
|
58
58
|
if (size > limit)
|
|
59
59
|
throw new Error('Project Skills: file exceeds size limit');
|
|
60
|
+
await checkPath(root, file.path);
|
|
61
|
+
const after = await handle.stat({ bigint: true });
|
|
62
|
+
const named = await lstat(join(root, file.path), { bigint: true });
|
|
63
|
+
if (size !== Number(stat.size) || after.size !== stat.size || after.mtimeNs !== stat.mtimeNs || after.ctimeNs !== stat.ctimeNs
|
|
64
|
+
|| named.isSymbolicLink() || named.dev !== stat.dev || named.ino !== stat.ino || named.mode !== stat.mode)
|
|
65
|
+
throw new Error(`Project Skills: file changed during read: ${file.path}`);
|
|
60
66
|
remaining -= size;
|
|
61
67
|
result.push({ path: file.path, content: buffer.subarray(0, size), mode: Number(stat.mode & 511n) });
|
|
62
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-skill-io.js","sourceRoot":"","sources":["../../src/adapters/project-skill-io.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"project-skill-io.js","sourceRoot":"","sources":["../../src/adapters/project-skill-io.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SkillSnapshot } from './project-skills.js';
|
|
2
|
+
export interface SkillBoundary {
|
|
3
|
+
root: string;
|
|
4
|
+
metadata: string[];
|
|
5
|
+
}
|
|
6
|
+
/** Source-only resolver. Destination IO deliberately continues to reject links.
|
|
7
|
+
* Like project-skill-io, this detects races in a trusted local filesystem; Node
|
|
8
|
+
* does not offer openat/O_BENEATH for atomic adversarial ancestor containment.
|
|
9
|
+
*/
|
|
10
|
+
export declare function snapshotSkillLinks(source: string, roots: readonly string[], boundary: SkillBoundary): Promise<SkillSnapshot>;
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { constants } from 'node:fs';
|
|
2
|
+
import { lstat, open, readdir, readlink, realpath } from 'node:fs/promises';
|
|
3
|
+
import { dirname, isAbsolute, join, relative, parse, sep } from 'node:path';
|
|
4
|
+
import { createHash } from 'node:crypto';
|
|
5
|
+
const fail = (message, path) => new Error(`Project Skills: ${message}: ${path}`);
|
|
6
|
+
const stamp = (s) => `${s.dev}:${s.ino}:${s.mode}:${s.size}:${s.mtimeMs}:${s.ctimeMs}`;
|
|
7
|
+
/** Source-only resolver. Destination IO deliberately continues to reject links.
|
|
8
|
+
* Like project-skill-io, this detects races in a trusted local filesystem; Node
|
|
9
|
+
* does not offer openat/O_BENEATH for atomic adversarial ancestor containment.
|
|
10
|
+
*/
|
|
11
|
+
export async function snapshotSkillLinks(source, roots, boundary) {
|
|
12
|
+
const root = await realpath(boundary.root);
|
|
13
|
+
if (await realpath(source) !== root)
|
|
14
|
+
throw fail('snapshot source is not the Git root', source);
|
|
15
|
+
const metadata = await Promise.all(boundary.metadata.map(path => realpath(path)));
|
|
16
|
+
const observed = new Map();
|
|
17
|
+
const links = [];
|
|
18
|
+
const files = [];
|
|
19
|
+
const directories = [];
|
|
20
|
+
const sourcePaths = new Set();
|
|
21
|
+
let entries = 0, bytes = 0;
|
|
22
|
+
function contained(path, container) {
|
|
23
|
+
const rel = relative(container, path);
|
|
24
|
+
return rel === '' || (!isAbsolute(rel) && rel !== '..' && !rel.startsWith(`..${sep}`));
|
|
25
|
+
}
|
|
26
|
+
function safe(path, logical) {
|
|
27
|
+
if (!contained(path, root))
|
|
28
|
+
throw fail('link escapes Git repository', logical);
|
|
29
|
+
const parts = relative(root, path).split(sep);
|
|
30
|
+
if (parts.length > 67)
|
|
31
|
+
throw fail('source path exceeds depth limit', logical);
|
|
32
|
+
if (parts.some(part => part.toLowerCase() === '.git') || metadata.some(dir => contained(path, dir)))
|
|
33
|
+
throw fail('link enters Git metadata', logical);
|
|
34
|
+
if (parts.some(part => /[\\:\x00-\x1f]/.test(part)))
|
|
35
|
+
throw fail('unsupported source path', logical);
|
|
36
|
+
}
|
|
37
|
+
async function observe(path, logical) {
|
|
38
|
+
let stat;
|
|
39
|
+
try {
|
|
40
|
+
stat = await lstat(path);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (error.code === 'ENOENT')
|
|
44
|
+
throw fail('dangling link or missing source', logical);
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
const value = stamp(stat);
|
|
48
|
+
if (observed.has(path) && observed.get(path) !== value)
|
|
49
|
+
throw fail('source changed during snapshot', logical);
|
|
50
|
+
observed.set(path, value);
|
|
51
|
+
if (stat.isFile() || stat.isSymbolicLink())
|
|
52
|
+
sourcePaths.add(relative(root, path).split(sep).join('/'));
|
|
53
|
+
return stat;
|
|
54
|
+
}
|
|
55
|
+
async function resolvePath(path, logical, chain = new Set()) {
|
|
56
|
+
safe(path, logical);
|
|
57
|
+
let current = root;
|
|
58
|
+
for (const part of relative(root, path).split(sep).filter(Boolean)) {
|
|
59
|
+
current = join(current, part);
|
|
60
|
+
safe(current, logical);
|
|
61
|
+
const stat = await observe(current, logical);
|
|
62
|
+
if (stat.isSymbolicLink()) {
|
|
63
|
+
if (chain.has(current) || chain.size >= 64)
|
|
64
|
+
throw fail('cyclic link or link depth limit', logical);
|
|
65
|
+
const next = new Set(chain).add(current);
|
|
66
|
+
const target = await readlink(current);
|
|
67
|
+
let targetPath = isAbsolute(target) ? parse(target).root : dirname(current);
|
|
68
|
+
// Keep `..` in traversal order; normalizing it before resolving an
|
|
69
|
+
// intermediate link could read a different path or hide a boundary hop.
|
|
70
|
+
for (const segment of target.slice(isAbsolute(target) ? parse(target).root.length : 0).split(sep)) {
|
|
71
|
+
if (!segment || segment === '.')
|
|
72
|
+
continue;
|
|
73
|
+
if (segment === '..') {
|
|
74
|
+
targetPath = dirname(targetPath);
|
|
75
|
+
safe(targetPath, logical);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
const candidate = join(targetPath, segment);
|
|
79
|
+
// Absolute targets must enter the root through its literal prefix.
|
|
80
|
+
if (isAbsolute(target) && contained(root, candidate) && !contained(candidate, root)) {
|
|
81
|
+
targetPath = candidate;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
targetPath = await resolvePath(candidate, logical, next);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
safe(targetPath, logical);
|
|
88
|
+
current = targetPath;
|
|
89
|
+
}
|
|
90
|
+
else if (!stat.isFile() && !stat.isDirectory())
|
|
91
|
+
throw fail('special file is not supported', logical);
|
|
92
|
+
}
|
|
93
|
+
return current;
|
|
94
|
+
}
|
|
95
|
+
// Record a physically checked-out link only until the first expanded alias.
|
|
96
|
+
async function walk(logical, physical, depth, ancestors, expanded) {
|
|
97
|
+
if (++entries > 10000 || depth > 64)
|
|
98
|
+
throw fail('Skill tree exceeds the inspection limit', logical);
|
|
99
|
+
if (logical.split('/').some(part => !part || part === '.' || part === '..' || /[\\:\x00-\x1f]/.test(part)))
|
|
100
|
+
throw fail('unsupported Skill path', logical);
|
|
101
|
+
safe(physical, logical);
|
|
102
|
+
const original = await observe(physical, logical);
|
|
103
|
+
if (original.isSymbolicLink() && !expanded) {
|
|
104
|
+
links.push({ path: logical, target: await readlink(physical) });
|
|
105
|
+
expanded = true;
|
|
106
|
+
}
|
|
107
|
+
const path = await resolvePath(physical, logical);
|
|
108
|
+
const stat = await observe(path, logical);
|
|
109
|
+
if (depth === 0 && !stat.isDirectory())
|
|
110
|
+
throw fail('Skill root must resolve to a directory', logical);
|
|
111
|
+
if (stat.isDirectory()) {
|
|
112
|
+
if (ancestors.has(path))
|
|
113
|
+
throw fail('cyclic directory link', logical);
|
|
114
|
+
const next = new Set(ancestors).add(path);
|
|
115
|
+
const names = (await readdir(path)).sort();
|
|
116
|
+
if (!names.length)
|
|
117
|
+
directories.push(logical);
|
|
118
|
+
for (const name of names)
|
|
119
|
+
await walk(`${logical}/${name}`, join(path, name), depth + 1, next, expanded);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (!stat.isFile())
|
|
123
|
+
throw fail('special file is not supported', logical);
|
|
124
|
+
if (files.length >= 5000 || bytes + stat.size > 64 * 1024 * 1024)
|
|
125
|
+
throw fail('Skill snapshot exceeds the safety limit', logical);
|
|
126
|
+
const handle = await open(path, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0) | (constants.O_NONBLOCK ?? 0));
|
|
127
|
+
try {
|
|
128
|
+
const before = await handle.stat();
|
|
129
|
+
if (stamp(before) !== stamp(stat))
|
|
130
|
+
throw fail('source changed during snapshot', logical);
|
|
131
|
+
const buffer = Buffer.alloc(stat.size + 1);
|
|
132
|
+
let size = 0;
|
|
133
|
+
while (size < buffer.length) {
|
|
134
|
+
const read = await handle.read(buffer, size, buffer.length - size, size);
|
|
135
|
+
if (!read.bytesRead)
|
|
136
|
+
break;
|
|
137
|
+
size += read.bytesRead;
|
|
138
|
+
}
|
|
139
|
+
if (size !== stat.size || stamp(await handle.stat()) !== stamp(before) || stamp(await lstat(path)) !== stamp(before))
|
|
140
|
+
throw fail('source changed during snapshot', logical);
|
|
141
|
+
bytes += size;
|
|
142
|
+
const content = buffer.subarray(0, size);
|
|
143
|
+
files.push({ path: logical, content, hash: createHash('sha256').update(content).digest('hex'), mode: stat.mode & 0o777 });
|
|
144
|
+
sourcePaths.add(relative(root, path).split(sep).join('/'));
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
await handle.close();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
await observe(root, '.');
|
|
151
|
+
for (const logical of roots) {
|
|
152
|
+
// Only absent roots are optional; missing targets within a root are errors.
|
|
153
|
+
let parent = root;
|
|
154
|
+
const parts = logical.split('/');
|
|
155
|
+
let absent = false;
|
|
156
|
+
for (const [index, part] of parts.entries()) {
|
|
157
|
+
const path = join(parent, part);
|
|
158
|
+
try {
|
|
159
|
+
const stat = await lstat(path);
|
|
160
|
+
if (stat.isSymbolicLink() && index < parts.length - 1)
|
|
161
|
+
throw fail('link above Skill root is not supported', logical);
|
|
162
|
+
parent = path;
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
if (error.code === 'ENOENT') {
|
|
166
|
+
absent = true;
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
;
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (!absent)
|
|
174
|
+
await walk(logical, join(root, logical), 0, new Set(), false);
|
|
175
|
+
}
|
|
176
|
+
for (const [path, expected] of observed) {
|
|
177
|
+
if (stamp(await lstat(path)) !== expected)
|
|
178
|
+
throw fail('source changed during snapshot', relative(root, path));
|
|
179
|
+
}
|
|
180
|
+
return { files, directories, links, sourcePaths: [...sourcePaths] };
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=project-skill-snapshot.js.map
|