dsh-git-worktree 0.9.0 → 0.9.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 +405 -353
- package/LICENSE +21 -21
- package/NOTICE +16 -14
- package/README.en.md +169 -168
- package/README.md +169 -168
- package/cordis.patch.yml +11 -11
- package/docs/i18n.md +63 -63
- package/lib/adapters/git-options.d.ts +9 -0
- package/lib/adapters/git-options.js +19 -0
- package/lib/adapters/git-options.js.map +1 -0
- package/lib/adapters/git.d.ts +4 -1
- package/lib/adapters/git.js +87 -21
- package/lib/adapters/git.js.map +1 -1
- package/lib/adapters/initial-commit.js +3 -3
- package/lib/adapters/project-skill-io.d.ts +12 -0
- package/lib/adapters/project-skill-io.js +96 -0
- package/lib/adapters/project-skill-io.js.map +1 -0
- package/lib/adapters/project-skill-provider.d.ts +25 -0
- package/lib/adapters/project-skill-provider.js +137 -0
- package/lib/adapters/project-skill-provider.js.map +1 -0
- package/lib/adapters/project-skills.d.ts +40 -0
- package/lib/adapters/project-skills.js +285 -0
- package/lib/adapters/project-skills.js.map +1 -0
- package/lib/adapters/registry.js +13 -2
- package/lib/adapters/registry.js.map +1 -1
- package/lib/adapters/worktree-creation.d.ts +11 -0
- package/lib/adapters/worktree-creation.js +321 -0
- package/lib/adapters/worktree-creation.js.map +1 -0
- package/lib/client/actions.d.ts +21 -3
- package/lib/client/actions.js +23 -3
- package/lib/client/actions.js.map +1 -1
- package/lib/client/console-remote/index.js +36 -8
- package/lib/client/console-remote/index.js.map +1 -1
- package/lib/client/index.js +1 -0
- package/lib/client/index.js.map +1 -1
- package/lib/client/pre-session/controller.d.ts +1 -1
- package/lib/client/pre-session/controller.js +33 -18
- package/lib/client/pre-session/controller.js.map +1 -1
- package/lib/client/review-console/recovery-continuation.d.ts +1 -1
- package/lib/client/review-console/recovery-continuation.js +9 -4
- package/lib/client/review-console/recovery-continuation.js.map +1 -1
- package/lib/client/review-console/review-console.styles.js +190 -190
- package/lib/client/styles.js +146 -140
- package/lib/client/styles.js.map +1 -1
- package/lib/client/target-console/target-console.styles.js +155 -155
- package/lib/client/workspace-sidebar/index.d.ts +11 -2
- package/lib/client/workspace-sidebar/index.js +50 -8
- package/lib/client/workspace-sidebar/index.js.map +1 -1
- package/lib/client.js +7624 -161
- package/lib/console-contract.d.ts +2 -0
- package/lib/console-contract.js.map +1 -1
- package/lib/console-host/control-plane.js +12 -8
- package/lib/console-host/control-plane.js.map +1 -1
- package/lib/console-host/review-diff.d.ts +2 -1
- package/lib/console-host/review-diff.js +23 -2
- package/lib/console-host/review-diff.js.map +1 -1
- package/lib/console-host/service.js +4 -2
- package/lib/console-host/service.js.map +1 -1
- package/lib/console-remote/descriptors.js +8 -3
- package/lib/console-remote/descriptors.js.map +1 -1
- package/lib/console-remote/schemas.js +1 -0
- package/lib/console-remote/schemas.js.map +1 -1
- package/lib/creation-failure.d.ts +5 -0
- package/lib/creation-failure.js +10 -0
- package/lib/creation-failure.js.map +1 -0
- package/lib/host-compat.d.ts +4 -0
- package/lib/host-compat.js +23 -0
- package/lib/host-compat.js.map +1 -0
- package/lib/i18n/client-messages.d.ts +4 -0
- package/lib/i18n/client-messages.js +4 -0
- package/lib/i18n/client-messages.js.map +1 -1
- package/lib/index.d.ts +31 -2
- package/lib/index.js +12 -12
- package/lib/index.js.map +1 -1
- package/lib/ports.d.ts +15 -1
- package/lib/session-checkout-apply.d.ts +2 -0
- package/lib/session-checkout-apply.js +52 -36
- package/lib/session-checkout-apply.js.map +1 -1
- package/lib/session-checkout-module.js +58 -4
- package/lib/session-checkout-module.js.map +1 -1
- package/lib/workspace-provider-lifecycle.d.ts +2 -1
- package/lib/workspace-provider-lifecycle.js +6 -1
- package/lib/workspace-provider-lifecycle.js.map +1 -1
- package/package.json +151 -143
- package/scripts/check-publish.mjs +238 -235
- package/scripts/check-workspace-sidebar-version.mjs +18 -14
- package/scripts/clean-lib.mjs +7 -7
- package/scripts/dev-dsh-lib.mjs +547 -509
- package/scripts/dev-dsh.mjs +98 -95
- package/scripts/dsh-source-runner.mjs +20 -14
- package/scripts/workspace-sidebar-upstream-alpha.mjs +102 -0
- package/scripts/workspace-sidebar-upstream-next.mjs +134 -0
- package/scripts/workspace-sidebar-upstream.d.mts +8 -8
- package/scripts/workspace-sidebar-upstream.mjs +162 -162
package/lib/adapters/git.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { ProjectSkillStore, PROJECT_SKILL_ROOTS, hasDeliverableStatus, trackedSkillPaths } from './project-skills.js';
|
|
2
|
+
import { createWorktree } from './worktree-creation.js';
|
|
3
|
+
import { gitTimeoutMs, validateGitTimeouts } from './git-options.js';
|
|
1
4
|
import { initialCommitActions } from './initial-commit.js';
|
|
2
5
|
import { hostMessage } from '../i18n/host.js';
|
|
3
6
|
/**
|
|
@@ -14,32 +17,48 @@ import { createHash } from 'node:crypto';
|
|
|
14
17
|
import { realpath, lstat } from 'node:fs/promises';
|
|
15
18
|
import { resolve, dirname, join } from 'node:path';
|
|
16
19
|
import { SessionCheckoutError } from '../index.js';
|
|
17
|
-
/**
|
|
18
|
-
const
|
|
19
|
-
const WORKTREE_REMOVE_TIMEOUT_MS = 5 * 60_000;
|
|
20
|
+
/** Termination grace is separate from the command deadline. */
|
|
21
|
+
const GIT_TERMINATION_GRACE_MS = 1_000;
|
|
20
22
|
/** Collected-output cap per stream; git output is small but removals can warn. */
|
|
21
23
|
const GIT_COLLECT_BYTES = 1 << 20;
|
|
22
|
-
function
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
async function settleCreationTree(handle) {
|
|
25
|
+
if (typeof handle.waitForExit !== 'function' || typeof handle.terminate !== 'function')
|
|
26
|
+
return false;
|
|
27
|
+
const controller = new AbortController();
|
|
28
|
+
const timeout = setTimeout(() => controller.abort(), 10_000);
|
|
29
|
+
timeout.unref?.();
|
|
30
|
+
try {
|
|
31
|
+
handle.terminate();
|
|
32
|
+
return await handle.waitForExit(controller.signal);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
clearTimeout(timeout);
|
|
39
|
+
}
|
|
26
40
|
}
|
|
27
41
|
/**
|
|
28
42
|
* Run one git command through `ctx.subprocess`. Returns an outcome object —
|
|
29
43
|
* the caller decides whether a non-zero exit is an error. Never
|
|
30
44
|
* shell-interpreted; argv passes verbatim.
|
|
31
45
|
*/
|
|
32
|
-
async function runGit(ctx, cwd, args, options, input) {
|
|
33
|
-
const graceMs = gitTimeoutMs(args);
|
|
46
|
+
async function runGit(ctx, cwd, args, options, input, creation) {
|
|
47
|
+
const graceMs = creation ? creation.deadline - Date.now() : gitTimeoutMs(args, options);
|
|
48
|
+
if (creation && graceMs <= 0)
|
|
49
|
+
return { code: -1, stdout: '', stderr: hostMessage('gitTimedOutMsAndWasTerminated', { p0: args.join(' '), p1: 0 }), quiescent: true };
|
|
34
50
|
const controller = new AbortController();
|
|
35
51
|
const timeout = setTimeout(() => controller.abort(), graceMs);
|
|
36
52
|
timeout.unref?.();
|
|
53
|
+
let handle;
|
|
37
54
|
try {
|
|
38
|
-
|
|
55
|
+
handle = ctx.subprocess.spawn({
|
|
39
56
|
argv: [
|
|
40
57
|
'git',
|
|
41
58
|
'--no-pager',
|
|
42
59
|
'--no-optional-locks',
|
|
60
|
+
// Worktree prefixes can exceed MAX_PATH even when the source checkout fits.
|
|
61
|
+
...(process.platform === 'win32' ? ['-c', 'core.longpaths=true'] : []),
|
|
43
62
|
'-c', 'core.quotePath=false',
|
|
44
63
|
'-c', 'core.fsmonitor=false',
|
|
45
64
|
'-c', `core.hooksPath=${options.hooksPath}`,
|
|
@@ -51,7 +70,7 @@ async function runGit(ctx, cwd, args, options, input) {
|
|
|
51
70
|
stdout: { maxBytes: GIT_COLLECT_BYTES },
|
|
52
71
|
stderr: { maxBytes: GIT_COLLECT_BYTES },
|
|
53
72
|
},
|
|
54
|
-
graceMs:
|
|
73
|
+
graceMs: GIT_TERMINATION_GRACE_MS,
|
|
55
74
|
signal: controller.signal,
|
|
56
75
|
env: {
|
|
57
76
|
// Repository routing must come from the authorized cwd, never ambient Git
|
|
@@ -90,23 +109,43 @@ async function runGit(ctx, cwd, args, options, input) {
|
|
|
90
109
|
}
|
|
91
110
|
}
|
|
92
111
|
const outcome = await handle.done;
|
|
112
|
+
let quiescent;
|
|
113
|
+
if (creation) {
|
|
114
|
+
let completed = false;
|
|
115
|
+
if (outcome.exitCode === 0 && !outcome.signal && !controller.signal.aborted && typeof handle.waitForExit === 'function') {
|
|
116
|
+
try {
|
|
117
|
+
completed = await handle.waitForExit(controller.signal);
|
|
118
|
+
}
|
|
119
|
+
catch { /* Preserve unless termination is confirmed below. */ }
|
|
120
|
+
}
|
|
121
|
+
if (completed && !controller.signal.aborted)
|
|
122
|
+
quiescent = true;
|
|
123
|
+
else {
|
|
124
|
+
quiescent = await settleCreationTree(handle);
|
|
125
|
+
if (outcome.exitCode === 0)
|
|
126
|
+
return { code: -1, stdout: '', stderr: hostMessage('repositoryInspectionFailed'), quiescent };
|
|
127
|
+
}
|
|
128
|
+
if (!quiescent)
|
|
129
|
+
return { code: -1, stdout: '', stderr: hostMessage('repositoryInspectionFailed'), quiescent: false };
|
|
130
|
+
}
|
|
131
|
+
clearTimeout(timeout);
|
|
93
132
|
const stdoutRead = handle.collected.stdout?.readFrom(0);
|
|
94
133
|
const stderrRead = handle.collected.stderr?.readFrom(0);
|
|
95
134
|
const stdout = stdoutRead?.text ?? '';
|
|
96
135
|
const stderr = stderrRead?.text ?? '';
|
|
97
136
|
if (stdoutRead?.lossy || stderrRead?.lossy) {
|
|
98
|
-
return { code: -1, stdout: '', stderr: hostMessage('repositoryInspectionFailed') };
|
|
137
|
+
return { code: -1, stdout: '', stderr: hostMessage('repositoryInspectionFailed'), quiescent };
|
|
99
138
|
}
|
|
100
139
|
if (outcome.signal === 'SIGTERM' || outcome.signal === 'SIGKILL' || controller.signal.aborted) {
|
|
101
|
-
return { code: -1, stdout, stderr: hostMessage('gitTimedOutMsAndWasTerminated', { p0: args.join(' '), p1: graceMs }) };
|
|
140
|
+
return { code: -1, stdout, stderr: hostMessage('gitTimedOutMsAndWasTerminated', { p0: args.join(' '), p1: graceMs }), quiescent };
|
|
102
141
|
}
|
|
103
|
-
return { code: outcome.exitCode ?? -1, stdout: stdout.trim(), stderr: stderr.trim() };
|
|
142
|
+
return { code: outcome.exitCode ?? -1, stdout: stdout.trim(), stderr: stderr.trim(), quiescent };
|
|
104
143
|
}
|
|
105
144
|
catch (error) {
|
|
106
145
|
if (error instanceof SessionCheckoutError)
|
|
107
146
|
throw error;
|
|
108
|
-
|
|
109
|
-
return { code: -1, stdout: '', stderr: error instanceof Error ? error.message : String(error) };
|
|
147
|
+
const quiescent = creation && handle ? await settleCreationTree(handle) : false;
|
|
148
|
+
return { code: -1, stdout: '', stderr: error instanceof Error ? error.message : String(error), quiescent };
|
|
110
149
|
}
|
|
111
150
|
finally {
|
|
112
151
|
clearTimeout(timeout);
|
|
@@ -156,6 +195,8 @@ async function hasGitMetadata(root) {
|
|
|
156
195
|
}
|
|
157
196
|
/** Build the `ctx.subprocess`-backed git port. */
|
|
158
197
|
export function createDshGitPort(ctx, options) {
|
|
198
|
+
validateGitTimeouts(options);
|
|
199
|
+
const projectSkills = options.projectSkills ?? new ProjectSkillStore(join(dirname(options.hooksPath), 'project-skills'));
|
|
159
200
|
const runSessionGit = (cwd, args, input) => runGit(ctx, cwd, args, options, input);
|
|
160
201
|
const runSessionGitChecked = (cwd, args) => runGitChecked(ctx, cwd, args, options);
|
|
161
202
|
const port = {
|
|
@@ -166,8 +207,17 @@ export function createDshGitPort(ctx, options) {
|
|
|
166
207
|
return null;
|
|
167
208
|
throw new SessionCheckoutError('git_operation_failed', hostMessage('repositoryInspectionFailed'));
|
|
168
209
|
}
|
|
169
|
-
|
|
170
|
-
|
|
210
|
+
// Both paths come from the same fresh Git invocation. Do not cache across
|
|
211
|
+
// operations: the worktree/common-directory identity is a safety boundary.
|
|
212
|
+
const paths = (await runSessionGitChecked(root, [
|
|
213
|
+
'rev-parse', '--path-format=absolute', '--git-common-dir', '--absolute-git-dir',
|
|
214
|
+
])).split('\n');
|
|
215
|
+
// Newlines are legal in POSIX paths; retain the unambiguous single-value
|
|
216
|
+
// reads when the multi-value output cannot be parsed safely.
|
|
217
|
+
const commonDir = paths.length === 2 ? paths[0]
|
|
218
|
+
: await runSessionGitChecked(root, ['rev-parse', '--path-format=absolute', '--git-common-dir']);
|
|
219
|
+
const gitDir = paths.length === 2 ? paths[1]
|
|
220
|
+
: await runSessionGitChecked(root, ['rev-parse', '--path-format=absolute', '--absolute-git-dir']);
|
|
171
221
|
const head = await runSessionGit(root, ['rev-parse', '--verify', '--quiet', 'HEAD^{commit}']);
|
|
172
222
|
let headOid = head.stdout;
|
|
173
223
|
if (head.code !== 0) {
|
|
@@ -204,15 +254,31 @@ export function createDshGitPort(ctx, options) {
|
|
|
204
254
|
},
|
|
205
255
|
status: async (root) => {
|
|
206
256
|
const output = await runSessionGitChecked(root, ['status', '--porcelain=v1', '-z', '--untracked-files=all']);
|
|
207
|
-
|
|
257
|
+
const carried = await projectSkills.scope(root);
|
|
258
|
+
return { dirty: hasDeliverableStatus(output, new Set(carried?.paths ?? []), carried?.directories) };
|
|
208
259
|
},
|
|
209
|
-
createDetachedWorktree: async (localRoot, managedRoot, baseOid) => {
|
|
210
|
-
await
|
|
260
|
+
createDetachedWorktree: async (localRoot, managedRoot, baseOid, saveEvidence) => {
|
|
261
|
+
const skills = await projectSkills.snapshot(localRoot);
|
|
262
|
+
const changed = await runSessionGitChecked(localRoot, ['diff', '--name-only', '-z', baseOid, '--', ...PROJECT_SKILL_ROOTS])
|
|
263
|
+
+ await runSessionGitChecked(localRoot, ['diff', '--cached', '--name-only', '-z', baseOid, '--', ...PROJECT_SKILL_ROOTS]);
|
|
264
|
+
if (changed)
|
|
265
|
+
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(', ')})`);
|
|
266
|
+
const deadline = Date.now() + gitTimeoutMs(['worktree', 'add'], options);
|
|
267
|
+
await createWorktree(localRoot, managedRoot, baseOid, (cwd, args, creating) => runGit(ctx, cwd, args, options, undefined, creating ? { deadline }
|
|
268
|
+
: args[0] === 'worktree' && ['move', 'remove'].includes(args[1] ?? '')
|
|
269
|
+
? { deadline: Date.now() + gitTimeoutMs(args, options) } : undefined), saveEvidence);
|
|
270
|
+
await projectSkills.carry(skills, managedRoot);
|
|
211
271
|
},
|
|
212
272
|
removeWorktree: async (localRoot, managedRoot) => {
|
|
213
273
|
// Git treats a reviewed-but-uncommitted final snapshot as modified/untracked;
|
|
214
274
|
// the caller has already verified checkout identity and the full fingerprint.
|
|
275
|
+
if (await projectSkills.paths(managedRoot)) {
|
|
276
|
+
const index = await runSessionGitChecked(managedRoot, ['ls-files', '--stage', '-z']);
|
|
277
|
+
const head = await runSessionGitChecked(managedRoot, ['ls-tree', '-r', '--name-only', '-z', 'HEAD']);
|
|
278
|
+
await projectSkills.assertRemovable(managedRoot, trackedSkillPaths(index, head));
|
|
279
|
+
}
|
|
215
280
|
await runSessionGitChecked(localRoot, ['worktree', 'remove', '--force', managedRoot]);
|
|
281
|
+
await projectSkills.forget(managedRoot);
|
|
216
282
|
},
|
|
217
283
|
retainApplyBase: async (localRoot, checkoutId, oid) => {
|
|
218
284
|
await runSessionGitChecked(localRoot, ['update-ref', applyBaseRef(checkoutId), oid]);
|
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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"}
|
|
@@ -81,9 +81,9 @@ export function initialCommitActions(inspect, run) {
|
|
|
81
81
|
// Git prepares the HEAD update and locks HEAD plus the resolved branch. Only
|
|
82
82
|
// after rechecking under those locks may the transaction publish the commit.
|
|
83
83
|
await checked(root, ['update-ref', '--stdin'], {
|
|
84
|
-
prepare: `start
|
|
85
|
-
update HEAD ${oid} ${'0'.repeat(oid.length)}
|
|
86
|
-
prepare
|
|
84
|
+
prepare: `start
|
|
85
|
+
update HEAD ${oid} ${'0'.repeat(oid.length)}
|
|
86
|
+
prepare
|
|
87
87
|
`,
|
|
88
88
|
async beforeCommit() {
|
|
89
89
|
const locked = await preflightInitialCommit(root);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface SkillRead {
|
|
2
|
+
path: string;
|
|
3
|
+
maxBytes: number;
|
|
4
|
+
}
|
|
5
|
+
export interface SkillBytes {
|
|
6
|
+
path: string;
|
|
7
|
+
content: Buffer;
|
|
8
|
+
mode: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function readSkillFiles(root: string, identity: string, files: readonly SkillRead[]): Promise<SkillBytes[]>;
|
|
11
|
+
export declare function createSkillDirectories(root: string, identity: string, directories: readonly string[]): Promise<void>;
|
|
12
|
+
export declare function createSkillFiles(root: string, identity: string, files: readonly SkillBytes[]): Promise<void>;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { constants } from 'node:fs';
|
|
2
|
+
import { lstat, mkdir, open } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
// These checks support trusted local creation, not atomic containment against
|
|
5
|
+
// another process maliciously replacing ancestors between filesystem calls.
|
|
6
|
+
async function checkRoot(root, expected) {
|
|
7
|
+
const stat = await lstat(root, { bigint: true });
|
|
8
|
+
if (!stat.isDirectory() || stat.isSymbolicLink() || `${stat.dev}:${stat.ino}:${stat.birthtimeNs}` !== expected) {
|
|
9
|
+
throw new Error('Project Skills: checkout directory changed');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
async function checkPath(root, path, createParents = false) {
|
|
13
|
+
const parts = path.split('/');
|
|
14
|
+
if (!['.dsh', '.agents', '.claude'].includes(parts[0]) || parts[1] !== 'skills'
|
|
15
|
+
|| parts.some(part => !part || part === '.' || part === '..' || /[\\:\x00-\x1f]/.test(part)))
|
|
16
|
+
throw new Error('Project Skills: invalid path');
|
|
17
|
+
let current = root;
|
|
18
|
+
for (const [index, part] of parts.entries()) {
|
|
19
|
+
current = join(current, part);
|
|
20
|
+
if (createParents && index < parts.length - 1) {
|
|
21
|
+
await mkdir(current).catch(error => { if (error.code !== 'EEXIST')
|
|
22
|
+
throw error; });
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const stat = await lstat(current);
|
|
26
|
+
if (stat.isSymbolicLink() || (index < parts.length - 1 ? !stat.isDirectory() : !stat.isFile() && !stat.isDirectory())) {
|
|
27
|
+
throw new Error('Project Skills: links and special files are not supported');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
if (createParents && index === parts.length - 1 && error.code === 'ENOENT')
|
|
32
|
+
return;
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export async function readSkillFiles(root, identity, files) {
|
|
38
|
+
const result = [];
|
|
39
|
+
let remaining = 64 * 1024 * 1024;
|
|
40
|
+
for (const file of files) {
|
|
41
|
+
await checkRoot(root, identity);
|
|
42
|
+
await checkPath(root, file.path);
|
|
43
|
+
const handle = await open(join(root, file.path), constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0));
|
|
44
|
+
try {
|
|
45
|
+
const stat = await handle.stat({ bigint: true });
|
|
46
|
+
const pathStat = await lstat(join(root, file.path), { bigint: true });
|
|
47
|
+
const limit = Math.min(file.maxBytes, remaining);
|
|
48
|
+
if (!stat.isFile() || pathStat.isSymbolicLink() || stat.ino !== pathStat.ino || stat.dev !== pathStat.dev || stat.size > BigInt(limit))
|
|
49
|
+
throw new Error('Project Skills: file changed or exceeds size limit');
|
|
50
|
+
const buffer = Buffer.alloc(limit + 1);
|
|
51
|
+
let size = 0;
|
|
52
|
+
while (size < buffer.length) {
|
|
53
|
+
const { bytesRead } = await handle.read(buffer, size, buffer.length - size, size);
|
|
54
|
+
if (!bytesRead)
|
|
55
|
+
break;
|
|
56
|
+
size += bytesRead;
|
|
57
|
+
}
|
|
58
|
+
if (size > limit)
|
|
59
|
+
throw new Error('Project Skills: file exceeds size limit');
|
|
60
|
+
remaining -= size;
|
|
61
|
+
result.push({ path: file.path, content: buffer.subarray(0, size), mode: Number(stat.mode & 511n) });
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
await handle.close();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
await checkRoot(root, identity);
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
export async function createSkillDirectories(root, identity, directories) {
|
|
71
|
+
for (const directory of directories) {
|
|
72
|
+
await checkRoot(root, identity);
|
|
73
|
+
// Validate and create components without a recursive mkdir following links.
|
|
74
|
+
await checkPath(root, `${directory}/.directory-check`, true);
|
|
75
|
+
await checkRoot(root, identity);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export async function createSkillFiles(root, identity, files) {
|
|
79
|
+
for (const file of files) {
|
|
80
|
+
await checkRoot(root, identity);
|
|
81
|
+
await checkPath(root, file.path, true);
|
|
82
|
+
const handle = await open(join(root, file.path), constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | (constants.O_NOFOLLOW ?? 0), file.mode);
|
|
83
|
+
try {
|
|
84
|
+
await handle.writeFile(file.content);
|
|
85
|
+
if (process.platform !== 'win32')
|
|
86
|
+
await handle.chmod(file.mode);
|
|
87
|
+
await handle.sync();
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
await handle.close();
|
|
91
|
+
}
|
|
92
|
+
await checkRoot(root, identity);
|
|
93
|
+
await checkPath(root, file.path);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=project-skill-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,25 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import type { SkillCandidate, SkillDefinition, SkillLookupOptions, SkillProvider, SkillProviderControl, SkillProviderObservation } from '@deepseek-ai/dsh-skill';
|
|
3
|
+
import type { SessionCheckoutRegistryPort } from '../ports.js';
|
|
4
|
+
/** Resolve against host-owned records, never a root claimed by a Skill file. */
|
|
5
|
+
export declare function managedSkillRoot(registry: SessionCheckoutRegistryPort): (cwd: string) => Promise<string | null>;
|
|
6
|
+
/** Additional project source only; native .dsh/.agents discovery remains unchanged. */
|
|
7
|
+
export declare class ClaudeProjectSkillProvider implements SkillProvider {
|
|
8
|
+
private readonly ctx;
|
|
9
|
+
private readonly control;
|
|
10
|
+
private readonly resolveRoot;
|
|
11
|
+
readonly name = "worktree-project-claude";
|
|
12
|
+
private readonly providers;
|
|
13
|
+
private operations;
|
|
14
|
+
private disposed;
|
|
15
|
+
private run;
|
|
16
|
+
constructor(ctx: Context, control: SkillProviderControl, resolveRoot: (cwd: string) => Promise<string | null>);
|
|
17
|
+
private provider;
|
|
18
|
+
list(options: SkillLookupOptions): Promise<SkillCandidate[] | SkillProviderObservation>;
|
|
19
|
+
private listNow;
|
|
20
|
+
get(candidate: SkillCandidate, options: SkillLookupOptions): Promise<SkillDefinition | undefined>;
|
|
21
|
+
private getNow;
|
|
22
|
+
observeHostMutation(path: string): void;
|
|
23
|
+
dispose(): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export declare function mountProjectSkillProvider(ctx: Context, registry: SessionCheckoutRegistryPort): void;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { FileSystemSkillProvider } from '@deepseek-ai/dsh-skill-filesystem';
|
|
2
|
+
import { lstat, readFile, realpath } from 'node:fs/promises';
|
|
3
|
+
import { isAbsolute, join, relative, resolve } from 'node:path';
|
|
4
|
+
import { assertSkillPath, assertSkillTree } from './project-skills.js';
|
|
5
|
+
const NAME = 'worktree-project-claude';
|
|
6
|
+
/** Resolve against host-owned records, never a root claimed by a Skill file. */
|
|
7
|
+
export function managedSkillRoot(registry) {
|
|
8
|
+
return async (cwd) => {
|
|
9
|
+
const canonical = await realpath(cwd);
|
|
10
|
+
for (const record of Object.values(registry.read().managedCheckouts)) {
|
|
11
|
+
if (record.phase !== 'ready')
|
|
12
|
+
continue;
|
|
13
|
+
const root = record.managedGitRoot;
|
|
14
|
+
const child = relative(root, canonical);
|
|
15
|
+
if (child.startsWith('..') || isAbsolute(child))
|
|
16
|
+
continue;
|
|
17
|
+
const marker = join(root, '.git');
|
|
18
|
+
const rootStat = await lstat(root);
|
|
19
|
+
if (!rootStat.isDirectory() || rootStat.isSymbolicLink() || relative(root, await realpath(root)) !== '')
|
|
20
|
+
return null;
|
|
21
|
+
const stat = await lstat(marker);
|
|
22
|
+
if (!stat.isFile() || stat.isSymbolicLink() || stat.size > 65536)
|
|
23
|
+
return null;
|
|
24
|
+
const text = (await readFile(marker, 'utf8')).trim();
|
|
25
|
+
if (!text.startsWith('gitdir: ') || await realpath(resolve(root, text.slice(8))) !== await realpath(record.gitDir))
|
|
26
|
+
return null;
|
|
27
|
+
const backlink = join(record.gitDir, 'gitdir');
|
|
28
|
+
const backlinkStat = await lstat(backlink);
|
|
29
|
+
if (!backlinkStat.isFile() || backlinkStat.isSymbolicLink() || backlinkStat.size > 65536)
|
|
30
|
+
return null;
|
|
31
|
+
if (resolve(record.gitDir, (await readFile(backlink, 'utf8')).trim()) !== resolve(marker))
|
|
32
|
+
return null;
|
|
33
|
+
return root;
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** Additional project source only; native .dsh/.agents discovery remains unchanged. */
|
|
39
|
+
export class ClaudeProjectSkillProvider {
|
|
40
|
+
ctx;
|
|
41
|
+
control;
|
|
42
|
+
resolveRoot;
|
|
43
|
+
name = NAME;
|
|
44
|
+
providers = new Map();
|
|
45
|
+
operations = Promise.resolve();
|
|
46
|
+
disposed = false;
|
|
47
|
+
run(operation) {
|
|
48
|
+
const result = this.operations.then(operation);
|
|
49
|
+
this.operations = result.then(() => { }, () => { });
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
constructor(ctx, control, resolveRoot) {
|
|
53
|
+
this.ctx = ctx;
|
|
54
|
+
this.control = control;
|
|
55
|
+
this.resolveRoot = resolveRoot;
|
|
56
|
+
}
|
|
57
|
+
async provider(root) {
|
|
58
|
+
const existing = this.providers.get(root);
|
|
59
|
+
if (existing)
|
|
60
|
+
return existing;
|
|
61
|
+
if (this.providers.size >= 32) {
|
|
62
|
+
const oldest = this.providers.entries().next().value;
|
|
63
|
+
this.providers.delete(oldest[0]);
|
|
64
|
+
await oldest[1].dispose();
|
|
65
|
+
}
|
|
66
|
+
const provider = new FileSystemSkillProvider(this.ctx, this.control, {
|
|
67
|
+
providerName: NAME, includeDefaultRoots: false, customSkillDirs: [join(root, '.claude', 'skills')],
|
|
68
|
+
watch: true, watchFollowSymlinks: false,
|
|
69
|
+
});
|
|
70
|
+
this.providers.set(root, provider);
|
|
71
|
+
return provider;
|
|
72
|
+
}
|
|
73
|
+
list(options) {
|
|
74
|
+
return this.run(() => this.listNow(options));
|
|
75
|
+
}
|
|
76
|
+
async listNow(options) {
|
|
77
|
+
if (this.disposed || !options.cwd || this.control.signal.aborted || options.signal?.aborted)
|
|
78
|
+
return [];
|
|
79
|
+
const root = await this.resolveRoot(options.cwd);
|
|
80
|
+
if (!root)
|
|
81
|
+
return [];
|
|
82
|
+
await assertSkillTree(root, '.claude/skills');
|
|
83
|
+
const observation = await (await this.provider(root)).list(options);
|
|
84
|
+
const candidates = Array.isArray(observation) ? observation : observation.candidates;
|
|
85
|
+
const result = [];
|
|
86
|
+
for (const candidate of candidates) {
|
|
87
|
+
if (!candidate.path)
|
|
88
|
+
continue;
|
|
89
|
+
const path = relative(root, candidate.path).split('\\').join('/');
|
|
90
|
+
await assertSkillPath(root, path);
|
|
91
|
+
result.push({ ...candidate, provider: NAME, source: 'project-claude', rank: 250, locator: { root, candidate } });
|
|
92
|
+
}
|
|
93
|
+
return Array.isArray(observation) ? result : { ...observation, candidates: result };
|
|
94
|
+
}
|
|
95
|
+
get(candidate, options) {
|
|
96
|
+
return this.run(() => this.getNow(candidate, options));
|
|
97
|
+
}
|
|
98
|
+
async getNow(candidate, options) {
|
|
99
|
+
if (this.disposed || !options.cwd || this.control.signal.aborted || options.signal?.aborted)
|
|
100
|
+
return undefined;
|
|
101
|
+
const root = await this.resolveRoot(options.cwd);
|
|
102
|
+
const locator = candidate.locator;
|
|
103
|
+
if (!root || locator?.root !== root || !locator.candidate?.path)
|
|
104
|
+
return undefined;
|
|
105
|
+
await assertSkillTree(root, '.claude/skills');
|
|
106
|
+
await assertSkillPath(root, relative(root, locator.candidate.path).split('\\').join('/'));
|
|
107
|
+
const skill = await (await this.provider(root)).get(locator.candidate, options);
|
|
108
|
+
return skill ? { ...skill, provider: NAME, source: 'project-claude' } : undefined;
|
|
109
|
+
}
|
|
110
|
+
observeHostMutation(path) {
|
|
111
|
+
if (!this.disposed)
|
|
112
|
+
for (const provider of this.providers.values())
|
|
113
|
+
provider.observeHostMutation(path);
|
|
114
|
+
}
|
|
115
|
+
async dispose() {
|
|
116
|
+
this.disposed = true;
|
|
117
|
+
await this.operations;
|
|
118
|
+
const providers = [...this.providers.values()];
|
|
119
|
+
this.providers.clear();
|
|
120
|
+
await Promise.all(providers.map(provider => provider.dispose()));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
export function mountProjectSkillProvider(ctx, registry) {
|
|
124
|
+
ctx.inject(['skills'], scoped => {
|
|
125
|
+
let provider;
|
|
126
|
+
scoped.skills.registerProvider(control => {
|
|
127
|
+
provider = new ClaudeProjectSkillProvider(scoped, control, managedSkillRoot(registry));
|
|
128
|
+
return provider;
|
|
129
|
+
});
|
|
130
|
+
scoped.on('fs/observed', (target, _observation, actor) => {
|
|
131
|
+
if (actor)
|
|
132
|
+
provider.observeHostMutation(target.displayPath);
|
|
133
|
+
});
|
|
134
|
+
scoped.effect(function* () { yield () => provider.dispose(); }, 'worktree project Skill compatibility');
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=project-skill-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-skill-provider.js","sourceRoot":"","sources":["../../src/adapters/project-skill-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare const PROJECT_SKILL_ROOTS: readonly [".dsh/skills", ".agents/skills", ".claude/skills"];
|
|
2
|
+
interface Entry {
|
|
3
|
+
path: string;
|
|
4
|
+
hash: string;
|
|
5
|
+
mode: number;
|
|
6
|
+
}
|
|
7
|
+
export interface SkillSnapshot {
|
|
8
|
+
directories?: string[];
|
|
9
|
+
files: Array<Entry & {
|
|
10
|
+
content: Buffer;
|
|
11
|
+
}>;
|
|
12
|
+
}
|
|
13
|
+
export interface CarriedSkillState {
|
|
14
|
+
paths: string[];
|
|
15
|
+
fingerprint: string;
|
|
16
|
+
modified: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function assertSkillTree(root: string, skillRoot: typeof PROJECT_SKILL_ROOTS[number]): Promise<void>;
|
|
19
|
+
/** Host-private provenance: never accept an exclusion list from the managed checkout. */
|
|
20
|
+
export declare class ProjectSkillStore {
|
|
21
|
+
private readonly directory;
|
|
22
|
+
constructor(directory: string);
|
|
23
|
+
private file;
|
|
24
|
+
snapshot(source: string): Promise<SkillSnapshot>;
|
|
25
|
+
private load;
|
|
26
|
+
carry(snapshot: SkillSnapshot, target: string): Promise<void>;
|
|
27
|
+
scope(root: string): Promise<{
|
|
28
|
+
paths: string[];
|
|
29
|
+
directories: string[];
|
|
30
|
+
} | null>;
|
|
31
|
+
paths(root: string): Promise<string[] | null>;
|
|
32
|
+
state(root: string, tracked?: ReadonlySet<string>): Promise<CarriedSkillState | null>;
|
|
33
|
+
assertRemovable(root: string, tracked: ReadonlySet<string>): Promise<void>;
|
|
34
|
+
forget(root: string): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
export declare function trackedSkillPaths(indexEntries: Buffer | string, headPaths?: Buffer | string): Set<string>;
|
|
37
|
+
/** Only ?? records are auxiliary; tracked edits, renames and deletions stay visible. */
|
|
38
|
+
export declare function hasDeliverableStatus(output: string, auxiliary: ReadonlySet<string>, directories?: readonly string[]): boolean;
|
|
39
|
+
export declare function assertSkillPath(root: string, path: string): Promise<void>;
|
|
40
|
+
export {};
|