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.
Files changed (94) hide show
  1. package/CHANGELOG.md +405 -353
  2. package/LICENSE +21 -21
  3. package/NOTICE +16 -14
  4. package/README.en.md +169 -168
  5. package/README.md +169 -168
  6. package/cordis.patch.yml +11 -11
  7. package/docs/i18n.md +63 -63
  8. package/lib/adapters/git-options.d.ts +9 -0
  9. package/lib/adapters/git-options.js +19 -0
  10. package/lib/adapters/git-options.js.map +1 -0
  11. package/lib/adapters/git.d.ts +4 -1
  12. package/lib/adapters/git.js +87 -21
  13. package/lib/adapters/git.js.map +1 -1
  14. package/lib/adapters/initial-commit.js +3 -3
  15. package/lib/adapters/project-skill-io.d.ts +12 -0
  16. package/lib/adapters/project-skill-io.js +96 -0
  17. package/lib/adapters/project-skill-io.js.map +1 -0
  18. package/lib/adapters/project-skill-provider.d.ts +25 -0
  19. package/lib/adapters/project-skill-provider.js +137 -0
  20. package/lib/adapters/project-skill-provider.js.map +1 -0
  21. package/lib/adapters/project-skills.d.ts +40 -0
  22. package/lib/adapters/project-skills.js +285 -0
  23. package/lib/adapters/project-skills.js.map +1 -0
  24. package/lib/adapters/registry.js +13 -2
  25. package/lib/adapters/registry.js.map +1 -1
  26. package/lib/adapters/worktree-creation.d.ts +11 -0
  27. package/lib/adapters/worktree-creation.js +321 -0
  28. package/lib/adapters/worktree-creation.js.map +1 -0
  29. package/lib/client/actions.d.ts +21 -3
  30. package/lib/client/actions.js +23 -3
  31. package/lib/client/actions.js.map +1 -1
  32. package/lib/client/console-remote/index.js +36 -8
  33. package/lib/client/console-remote/index.js.map +1 -1
  34. package/lib/client/index.js +1 -0
  35. package/lib/client/index.js.map +1 -1
  36. package/lib/client/pre-session/controller.d.ts +1 -1
  37. package/lib/client/pre-session/controller.js +33 -18
  38. package/lib/client/pre-session/controller.js.map +1 -1
  39. package/lib/client/review-console/recovery-continuation.d.ts +1 -1
  40. package/lib/client/review-console/recovery-continuation.js +9 -4
  41. package/lib/client/review-console/recovery-continuation.js.map +1 -1
  42. package/lib/client/review-console/review-console.styles.js +190 -190
  43. package/lib/client/styles.js +146 -140
  44. package/lib/client/styles.js.map +1 -1
  45. package/lib/client/target-console/target-console.styles.js +155 -155
  46. package/lib/client/workspace-sidebar/index.d.ts +11 -2
  47. package/lib/client/workspace-sidebar/index.js +50 -8
  48. package/lib/client/workspace-sidebar/index.js.map +1 -1
  49. package/lib/client.js +7624 -161
  50. package/lib/console-contract.d.ts +2 -0
  51. package/lib/console-contract.js.map +1 -1
  52. package/lib/console-host/control-plane.js +12 -8
  53. package/lib/console-host/control-plane.js.map +1 -1
  54. package/lib/console-host/review-diff.d.ts +2 -1
  55. package/lib/console-host/review-diff.js +23 -2
  56. package/lib/console-host/review-diff.js.map +1 -1
  57. package/lib/console-host/service.js +4 -2
  58. package/lib/console-host/service.js.map +1 -1
  59. package/lib/console-remote/descriptors.js +8 -3
  60. package/lib/console-remote/descriptors.js.map +1 -1
  61. package/lib/console-remote/schemas.js +1 -0
  62. package/lib/console-remote/schemas.js.map +1 -1
  63. package/lib/creation-failure.d.ts +5 -0
  64. package/lib/creation-failure.js +10 -0
  65. package/lib/creation-failure.js.map +1 -0
  66. package/lib/host-compat.d.ts +4 -0
  67. package/lib/host-compat.js +23 -0
  68. package/lib/host-compat.js.map +1 -0
  69. package/lib/i18n/client-messages.d.ts +4 -0
  70. package/lib/i18n/client-messages.js +4 -0
  71. package/lib/i18n/client-messages.js.map +1 -1
  72. package/lib/index.d.ts +31 -2
  73. package/lib/index.js +12 -12
  74. package/lib/index.js.map +1 -1
  75. package/lib/ports.d.ts +15 -1
  76. package/lib/session-checkout-apply.d.ts +2 -0
  77. package/lib/session-checkout-apply.js +52 -36
  78. package/lib/session-checkout-apply.js.map +1 -1
  79. package/lib/session-checkout-module.js +58 -4
  80. package/lib/session-checkout-module.js.map +1 -1
  81. package/lib/workspace-provider-lifecycle.d.ts +2 -1
  82. package/lib/workspace-provider-lifecycle.js +6 -1
  83. package/lib/workspace-provider-lifecycle.js.map +1 -1
  84. package/package.json +151 -143
  85. package/scripts/check-publish.mjs +238 -235
  86. package/scripts/check-workspace-sidebar-version.mjs +18 -14
  87. package/scripts/clean-lib.mjs +7 -7
  88. package/scripts/dev-dsh-lib.mjs +547 -509
  89. package/scripts/dev-dsh.mjs +98 -95
  90. package/scripts/dsh-source-runner.mjs +20 -14
  91. package/scripts/workspace-sidebar-upstream-alpha.mjs +102 -0
  92. package/scripts/workspace-sidebar-upstream-next.mjs +134 -0
  93. package/scripts/workspace-sidebar-upstream.d.mts +8 -8
  94. package/scripts/workspace-sidebar-upstream.mjs +162 -162
@@ -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
- /** Ordinary git commands keep a 10s cap; worktree removal gets 5 minutes on Windows. */
18
- const GIT_COMMAND_TIMEOUT_MS = 30_000;
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 gitTimeoutMs(args) {
23
- return args[0] === 'worktree' && args[1] === 'remove'
24
- ? WORKTREE_REMOVE_TIMEOUT_MS
25
- : GIT_COMMAND_TIMEOUT_MS;
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
- const handle = ctx.subprocess.spawn({
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: GIT_COMMAND_TIMEOUT_MS,
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
- // Synchronous spawn failure (git missing from PATH): report as a failed command.
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
- const commonDir = await runSessionGitChecked(root, ['rev-parse', '--path-format=absolute', '--git-common-dir']);
170
- const gitDir = await runSessionGitChecked(root, ['rev-parse', '--path-format=absolute', '--absolute-git-dir']);
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
- return { dirty: output.length > 0 };
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 runSessionGitChecked(localRoot, ['worktree', 'add', '--detach', managedRoot, baseOid]);
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]);
@@ -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":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAA;AAE3E,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE/D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAEtE,MAAM,IAAI,GAAG,yBAAyB,CAAA;AAEtC,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,QAAqC;IACpE,OAAO,KAAK,EAAC,GAAG,EAAC,EAAE;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAA;QACrC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrE,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO;gBAAE,SAAQ;YACtC,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAA;YAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;YACvC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC;gBAAE,SAAQ;YACzD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA;YAClC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,cAAc,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;gBAAE,OAAO,IAAI,CAAA;YACpH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAA;YAChC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK;gBAAE,OAAO,IAAI,CAAA;YAC7E,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YACpD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC/H,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YAC9C,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC1C,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,YAAY,CAAC,cAAc,EAAE,IAAI,YAAY,CAAC,IAAI,GAAG,KAAK;gBAAE,OAAO,IAAI,CAAA;YACrG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAA;YACtG,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;AACH,CAAC;AAED,uFAAuF;AACvF,MAAM,OAAO,0BAA0B;IAUR;IAA+B;IACzC;IAVV,IAAI,GAAG,IAAI,CAAA;IACH,SAAS,GAAG,IAAI,GAAG,EAAmC,CAAA;IAC/D,UAAU,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAA;IAC7C,QAAQ,GAAG,KAAK,CAAA;IAChB,GAAG,CAAI,SAA2B;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC9C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACjD,OAAO,MAAM,CAAA;IACf,CAAC;IACD,YAA6B,GAAY,EAAmB,OAA6B,EACtE,WAAoD;QAD1C,QAAG,GAAH,GAAG,CAAS;QAAmB,YAAO,GAAP,OAAO,CAAsB;QACtE,gBAAW,GAAX,WAAW,CAAyC;IAAG,CAAC;IACnE,KAAK,CAAC,QAAQ,CAAC,IAAY;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAA;QAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAA;YACrD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QAC3B,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;YACnE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAClG,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK;SACxC,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAClC,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,IAAI,CAAC,OAA2B;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9C,CAAC;IACO,KAAK,CAAC,OAAO,CAAC,OAA2B;QAC/C,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,OAAO,EAAE,CAAA;QACtG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAChD,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAA;QACpB,MAAM,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;QAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACnE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAA;QACpF,MAAM,MAAM,GAAqB,EAAE,CAAA;QACnC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,IAAI;gBAAE,SAAQ;YAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACjE,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACjC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAoB,EAAE,CAAC,CAAA;QACpI,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;IACrF,CAAC;IACD,GAAG,CAAC,SAAyB,EAAE,OAA2B;QACxD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IACxD,CAAC;IACO,KAAK,CAAC,MAAM,CAAC,SAAyB,EAAE,OAA2B;QACzE,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,OAAO,SAAS,CAAA;QAC7G,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAChD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAkB,CAAA;QAC5C,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAAE,OAAO,SAAS,CAAA;QACjF,MAAM,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;QAC7C,MAAM,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACzF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAC/E,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IACnF,CAAC;IACD,mBAAmB,CAAC,IAAY;QAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;gBAAE,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;IACxG,CAAC;IACD,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,MAAM,IAAI,CAAC,UAAU,CAAA;QACrB,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;QAC9C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACtB,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAClE,CAAC;CACF;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAY,EAAE,QAAqC;IAC3F,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE;QAC9B,IAAI,QAAoC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;YACvC,QAAQ,GAAG,IAAI,0BAA0B,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAA;YACtF,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE;YACvD,IAAI,KAAK;gBAAE,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,EAAE,sCAAsC,CAAC,CAAA;IACxG,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -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 {};