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
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { createReadStream } from 'node:fs';
|
|
3
|
+
import { lstat, mkdir, readdir, readFile, realpath, rmdir, readlink } from 'node:fs/promises';
|
|
4
|
+
import { dirname, join, resolve, relative, isAbsolute } from 'node:path';
|
|
5
|
+
import { WorktreeCreationFailure } from '../creation-failure.js';
|
|
6
|
+
import { createNodeFilesPort } from './files.js';
|
|
7
|
+
const files = createNodeFilesPort();
|
|
8
|
+
const samePath = (a, b) => process.platform === 'win32'
|
|
9
|
+
? resolve(a).toLowerCase() === resolve(b).toLowerCase() : resolve(a) === resolve(b);
|
|
10
|
+
const sameIdentity = (a, b) => a !== null && JSON.stringify(a) === JSON.stringify(b);
|
|
11
|
+
/** Registration is short; the expensive checkout runs only after its ownership proof is durable. */
|
|
12
|
+
export async function createWorktree(localRoot, target, baseOid, run, saveEvidence = () => { }) {
|
|
13
|
+
let evidence;
|
|
14
|
+
let failure;
|
|
15
|
+
let registered = false;
|
|
16
|
+
let claimed = false;
|
|
17
|
+
let originalMetadata = [];
|
|
18
|
+
const checked = async (cwd, args, creating = true) => {
|
|
19
|
+
const result = await run(cwd, args, creating);
|
|
20
|
+
if (result.code !== 0) {
|
|
21
|
+
failure = result;
|
|
22
|
+
throw new Error(result.stderr || `git ${args.join(' ')} failed`);
|
|
23
|
+
}
|
|
24
|
+
return result.stdout;
|
|
25
|
+
};
|
|
26
|
+
try {
|
|
27
|
+
const commonDir = await realpath(await checked(localRoot, ['rev-parse', '--path-format=absolute', '--git-common-dir']));
|
|
28
|
+
const parent = await realpath(dirname(target));
|
|
29
|
+
if (!samePath(parent, dirname(target)))
|
|
30
|
+
throw new Error('Worktree parent path changed');
|
|
31
|
+
const parentIdentity = await files.inspectDirectoryIdentity(parent);
|
|
32
|
+
const commonIdentity = await files.inspectDirectoryIdentity(commonDir);
|
|
33
|
+
if (!parentIdentity || !commonIdentity)
|
|
34
|
+
throw new Error('Worktree parent identity cannot be verified');
|
|
35
|
+
try {
|
|
36
|
+
originalMetadata = (await readdir(join(commonDir, 'worktrees'))).sort();
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (error.code !== 'ENOENT')
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
await mkdir(target); // Exclusive: an existing directory, including an empty one, is not this attempt's.
|
|
43
|
+
claimed = true;
|
|
44
|
+
const rootIdentity = await files.inspectDirectoryIdentity(target);
|
|
45
|
+
if (!rootIdentity)
|
|
46
|
+
throw new Error('Worktree directory identity cannot be verified');
|
|
47
|
+
evidence = { root: target, rootIdentity, parentIdentity, commonDir, commonIdentity, lockReason: `dsh-create-${randomUUID()}` };
|
|
48
|
+
saveEvidence(evidence);
|
|
49
|
+
await checked(localRoot, ['worktree', 'add', '--detach', '--no-checkout', '--lock', '--reason', evidence.lockReason, target, baseOid]);
|
|
50
|
+
const gitDir = await realpath(await checked(target, ['rev-parse', '--absolute-git-dir']));
|
|
51
|
+
const gitIdentity = await files.inspectDirectoryIdentity(gitDir);
|
|
52
|
+
if (!gitIdentity)
|
|
53
|
+
throw new Error('Worktree metadata identity cannot be verified');
|
|
54
|
+
evidence = { ...evidence, gitDir, gitIdentity, metadataFingerprint: await metadataFingerprint(gitDir) };
|
|
55
|
+
saveEvidence(evidence);
|
|
56
|
+
registered = true;
|
|
57
|
+
await verifyIdentity(evidence, baseOid);
|
|
58
|
+
// read-tree publishes a complete index before any worktree file is written.
|
|
59
|
+
// checkout-index without -f never overwrites a file supplied by another writer.
|
|
60
|
+
const sparse = await checked(target, ['config', '--bool', '--get', 'core.sparseCheckout']).catch(error => {
|
|
61
|
+
if (failure?.code === 1) {
|
|
62
|
+
failure = undefined;
|
|
63
|
+
return 'false';
|
|
64
|
+
}
|
|
65
|
+
throw error;
|
|
66
|
+
});
|
|
67
|
+
if (sparse === 'true') {
|
|
68
|
+
// Match native worktree add's sparse checkout semantics. A failed reset
|
|
69
|
+
// may retain an index lock and therefore cannot be automatically removed.
|
|
70
|
+
await checked(target, ['reset', '--hard', '--no-recurse-submodules', baseOid]);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
await checked(target, ['read-tree', baseOid]);
|
|
74
|
+
evidence = { ...evidence, indexFingerprint: createHash('sha256').update(await readFile(join(gitDir, 'index'))).digest('hex') };
|
|
75
|
+
await saveEvidence(evidence);
|
|
76
|
+
await checked(target, ['checkout-index', '--all']);
|
|
77
|
+
}
|
|
78
|
+
await verifyIdentity(evidence, baseOid);
|
|
79
|
+
await checked(localRoot, ['worktree', 'unlock', target]);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
83
|
+
if (!claimed)
|
|
84
|
+
throw new WorktreeCreationFailure(message, true);
|
|
85
|
+
if (evidence && !registered && failure?.quiescent === true) {
|
|
86
|
+
try {
|
|
87
|
+
const listed = await run(localRoot, ['worktree', 'list', '--porcelain', '-z']);
|
|
88
|
+
let metadata = [];
|
|
89
|
+
try {
|
|
90
|
+
metadata = (await readdir(join(evidence.commonDir, 'worktrees'))).sort();
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (error.code !== 'ENOENT')
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
const registeredRoot = listed.stdout.split('\0').some(part => part.startsWith('worktree ') && samePath(part.slice(9), target));
|
|
97
|
+
if (listed.code === 0 && !registeredRoot && JSON.stringify(metadata) === JSON.stringify(originalMetadata)
|
|
98
|
+
&& sameIdentity(await files.inspectDirectoryIdentity(target), evidence.rootIdentity)
|
|
99
|
+
&& sameIdentity(await files.inspectDirectoryIdentity(dirname(target)), evidence.parentIdentity)
|
|
100
|
+
&& sameIdentity(await files.inspectDirectoryIdentity(evidence.commonDir), evidence.commonIdentity)
|
|
101
|
+
&& (await readdir(target)).length === 0) {
|
|
102
|
+
await rmdir(target);
|
|
103
|
+
throw new WorktreeCreationFailure(message, true);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (cleanupError) {
|
|
107
|
+
if (cleanupError instanceof WorktreeCreationFailure)
|
|
108
|
+
throw cleanupError;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// A timeout in registration (including Git's initializing/index locks), a lost
|
|
112
|
+
// process-tree observation or missing durable identity is never deletion authority.
|
|
113
|
+
if (evidence && registered && failure?.quiescent === true) {
|
|
114
|
+
try {
|
|
115
|
+
await verifyIdentity(evidence, baseOid);
|
|
116
|
+
await verifyRollbackMetadata(evidence, baseOid);
|
|
117
|
+
await verifyUnmodified(evidence.root, baseOid, run);
|
|
118
|
+
const quarantinePath = `${target}.failed-${randomUUID()}`;
|
|
119
|
+
evidence = { ...evidence, quarantinePath };
|
|
120
|
+
saveEvidence(evidence);
|
|
121
|
+
// Unlike worktree repair (which also scans other registrations), move
|
|
122
|
+
// updates only this checkout's backlink and keeps its directory object.
|
|
123
|
+
const moved = await run(localRoot, ['worktree', 'move', '--force', '--force', target, quarantinePath]);
|
|
124
|
+
if (moved.code !== 0)
|
|
125
|
+
throw new Error(moved.stderr);
|
|
126
|
+
evidence = { ...evidence, root: quarantinePath, indexFingerprint: createHash('sha256').update(await readFile(join(evidence.gitDir, 'index'))).digest('hex') };
|
|
127
|
+
saveEvidence(evidence);
|
|
128
|
+
await verifyIdentity(evidence, baseOid);
|
|
129
|
+
await verifyRollbackMetadata(evidence, baseOid);
|
|
130
|
+
await verifyUnmodified(quarantinePath, baseOid, run);
|
|
131
|
+
await verifyIdentity(evidence, baseOid);
|
|
132
|
+
await verifyRollbackMetadata(evidence, baseOid);
|
|
133
|
+
const removed = await run(localRoot, ['worktree', 'remove', '--force', '--force', quarantinePath]);
|
|
134
|
+
if (removed.code !== 0)
|
|
135
|
+
throw new Error(removed.stderr);
|
|
136
|
+
if (files.exists(quarantinePath) || files.exists(evidence.gitDir))
|
|
137
|
+
throw new Error('Worktree rollback incomplete');
|
|
138
|
+
throw new WorktreeCreationFailure(message, true);
|
|
139
|
+
}
|
|
140
|
+
catch (rollbackError) {
|
|
141
|
+
if (rollbackError instanceof WorktreeCreationFailure)
|
|
142
|
+
throw rollbackError;
|
|
143
|
+
throw new WorktreeCreationFailure(`${message}; ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`, false);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
throw new WorktreeCreationFailure(`${message}${evidence?.quarantinePath ? ` (${evidence.quarantinePath})` : ''}`, false);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async function verifyIdentity(e, baseOid) {
|
|
150
|
+
const fail = () => { throw new Error('Failed creation identity changed; residue preserved'); };
|
|
151
|
+
if (!e.gitDir || !e.gitIdentity)
|
|
152
|
+
return fail();
|
|
153
|
+
if (!sameIdentity(await files.inspectDirectoryIdentity(e.root), e.rootIdentity)
|
|
154
|
+
|| !sameIdentity(await files.inspectDirectoryIdentity(dirname(e.root)), e.parentIdentity)
|
|
155
|
+
|| !sameIdentity(await files.inspectDirectoryIdentity(e.commonDir), e.commonIdentity)
|
|
156
|
+
|| !sameIdentity(await files.inspectDirectoryIdentity(e.gitDir), e.gitIdentity))
|
|
157
|
+
return fail();
|
|
158
|
+
const child = relative(join(e.commonDir, 'worktrees'), e.gitDir);
|
|
159
|
+
if (!child || child.includes('..') || isAbsolute(child) || child.includes('/') || child.includes('\\'))
|
|
160
|
+
return fail();
|
|
161
|
+
const text = async (path) => {
|
|
162
|
+
const stat = await lstat(path);
|
|
163
|
+
if (!stat.isFile() || stat.isSymbolicLink())
|
|
164
|
+
return fail();
|
|
165
|
+
return (await readFile(path, 'utf8')).trim();
|
|
166
|
+
};
|
|
167
|
+
const pointer = await text(join(e.root, '.git'));
|
|
168
|
+
if (!pointer.startsWith('gitdir: ') || !samePath(resolve(e.root, pointer.slice(8)), e.gitDir)
|
|
169
|
+
|| !samePath(await text(join(e.gitDir, 'gitdir')), join(e.root, '.git'))
|
|
170
|
+
|| !samePath(resolve(e.gitDir, await text(join(e.gitDir, 'commondir'))), e.commonDir)
|
|
171
|
+
|| await text(join(e.gitDir, 'HEAD')) !== baseOid
|
|
172
|
+
|| await text(join(e.gitDir, 'locked')) !== e.lockReason)
|
|
173
|
+
return fail();
|
|
174
|
+
// Never break an index lock, including an interrupted read-tree's lock.
|
|
175
|
+
if ((await readdir(e.gitDir)).some(name => name.endsWith('.lock')))
|
|
176
|
+
return fail();
|
|
177
|
+
}
|
|
178
|
+
async function verifyRollbackMetadata(e, baseOid) {
|
|
179
|
+
if (!e.gitDir || !e.metadataFingerprint || await metadataFingerprint(e.gitDir) !== e.metadataFingerprint)
|
|
180
|
+
throw new Error('Creation metadata changed');
|
|
181
|
+
if (!e.indexFingerprint || createHash('sha256').update(await readFile(join(e.gitDir, 'index'))).digest('hex') !== e.indexFingerprint)
|
|
182
|
+
throw new Error(`Creation index bytes changed at ${e.root}`);
|
|
183
|
+
for (const name of ['index', 'ORIG_HEAD']) {
|
|
184
|
+
try {
|
|
185
|
+
const path = join(e.gitDir, name), stat = await lstat(path);
|
|
186
|
+
if (!stat.isFile() || stat.isSymbolicLink())
|
|
187
|
+
throw new Error('Unexpected creation metadata object');
|
|
188
|
+
if (name === 'ORIG_HEAD' && (await readFile(path, 'utf8')).trim() !== baseOid)
|
|
189
|
+
throw new Error('Creation ORIG_HEAD changed');
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
if (error.code !== 'ENOENT')
|
|
193
|
+
throw error;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
async function metadataFingerprint(gitDir) {
|
|
198
|
+
const hash = createHash('sha256');
|
|
199
|
+
async function walk(path, prefix = '') {
|
|
200
|
+
for (const name of (await readdir(path)).sort()) {
|
|
201
|
+
// Git updates these during checkout or single-target move. Their semantic
|
|
202
|
+
// contents and pointer are checked separately; every other byte is immutable.
|
|
203
|
+
if (!prefix && ['index', 'gitdir', 'ORIG_HEAD'].includes(name))
|
|
204
|
+
continue;
|
|
205
|
+
const entry = join(path, name);
|
|
206
|
+
const stat = await lstat(entry);
|
|
207
|
+
const key = `${prefix}${name}`;
|
|
208
|
+
const allowed = stat.isDirectory() ? ['refs', 'logs', 'info'] : ['HEAD', 'commondir', 'locked', 'config.worktree', 'logs/HEAD', 'info/sparse-checkout'];
|
|
209
|
+
if (!allowed.includes(key))
|
|
210
|
+
throw new Error('Unknown creation metadata');
|
|
211
|
+
hash.update(`${key}\0`);
|
|
212
|
+
if (stat.isSymbolicLink())
|
|
213
|
+
throw new Error('Unexpected metadata symlink');
|
|
214
|
+
if (stat.isDirectory()) {
|
|
215
|
+
hash.update('directory\0');
|
|
216
|
+
await walk(entry, `${prefix}${name}/`);
|
|
217
|
+
}
|
|
218
|
+
else if (stat.isFile() && stat.size <= 1_048_576) {
|
|
219
|
+
hash.update(`file:${stat.size}\0`);
|
|
220
|
+
hash.update(await readFile(entry));
|
|
221
|
+
}
|
|
222
|
+
else
|
|
223
|
+
throw new Error('Unexpected metadata object');
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
await walk(gitDir);
|
|
227
|
+
return hash.digest('hex');
|
|
228
|
+
}
|
|
229
|
+
async function verifyUnmodified(root, baseOid, run) {
|
|
230
|
+
const checked = async (args) => {
|
|
231
|
+
const result = await run(root, args);
|
|
232
|
+
if (result.code !== 0)
|
|
233
|
+
throw new Error(result.stderr);
|
|
234
|
+
return result.stdout;
|
|
235
|
+
};
|
|
236
|
+
// The complete index must still equal the authorized base. No skip-worktree / assume-unchanged shortcuts.
|
|
237
|
+
const entries = await checked(['ls-files', '--stage', '-z']);
|
|
238
|
+
if (entries.split('\0').some(line => line.startsWith('160000 ')))
|
|
239
|
+
throw new Error('Submodule creation residue must be preserved');
|
|
240
|
+
// Clean filters and working-tree encodings may discard bytes while comparing.
|
|
241
|
+
// Such a semantic comparison cannot authorize deleting a failed checkout.
|
|
242
|
+
const paths = entries.split('\0').filter(Boolean).map(line => line.slice(line.indexOf('\t') + 1));
|
|
243
|
+
const tracked = new Set(paths);
|
|
244
|
+
const directories = new Set();
|
|
245
|
+
for (const path of paths) {
|
|
246
|
+
const segments = path.split('/');
|
|
247
|
+
for (let i = 1; i < segments.length; i++)
|
|
248
|
+
directories.add(segments.slice(0, i).join('/'));
|
|
249
|
+
}
|
|
250
|
+
const inspectEntries = async (directory, prefix = '') => {
|
|
251
|
+
for (const entry of await readdir(directory, { withFileTypes: true })) {
|
|
252
|
+
if (!prefix && entry.name === '.git')
|
|
253
|
+
continue;
|
|
254
|
+
const path = `${prefix}${entry.name}`;
|
|
255
|
+
if (entry.isDirectory()) {
|
|
256
|
+
if (!directories.has(path))
|
|
257
|
+
throw new Error('Unknown creation directory; preserved');
|
|
258
|
+
await inspectEntries(join(directory, entry.name), `${path}/`);
|
|
259
|
+
}
|
|
260
|
+
else if (!tracked.has(path))
|
|
261
|
+
throw new Error('Unknown creation contents; preserved');
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
await inspectEntries(root);
|
|
265
|
+
for (let i = 0; i < paths.length; i += 100) {
|
|
266
|
+
const attributes = await checked(['check-attr', '-z', 'filter', 'working-tree-encoding', '--', ...paths.slice(i, i + 100)]);
|
|
267
|
+
const fields = attributes.split('\0');
|
|
268
|
+
for (let j = 2; j < fields.length; j += 3) {
|
|
269
|
+
if (fields[j] !== 'unspecified' && fields[j] !== 'unset')
|
|
270
|
+
throw new Error('Checkout conversions require preservation');
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
for (const line of entries.split('\0').filter(Boolean)) {
|
|
274
|
+
const match = /^(\d+) ([0-9a-f]+) 0\t([\s\S]+)$/.exec(line);
|
|
275
|
+
if (!match)
|
|
276
|
+
throw new Error('Unexpected creation index entry');
|
|
277
|
+
const [, mode, oid, path] = match;
|
|
278
|
+
const absolute = resolve(root, path);
|
|
279
|
+
if (!absolute.startsWith(`${resolve(root)}${process.platform === 'win32' ? '\\' : '/'}`))
|
|
280
|
+
throw new Error('Invalid checkout path');
|
|
281
|
+
try {
|
|
282
|
+
const stat = await lstat(absolute);
|
|
283
|
+
const hash = createHash(oid.length === 64 ? 'sha256' : 'sha1');
|
|
284
|
+
if (mode === '120000' && stat.isSymbolicLink()) {
|
|
285
|
+
const bytes = Buffer.from(await readlink(absolute));
|
|
286
|
+
hash.update(`blob ${bytes.length}\0`).update(bytes);
|
|
287
|
+
}
|
|
288
|
+
else if (stat.isFile() && !stat.isSymbolicLink()) {
|
|
289
|
+
hash.update(`blob ${stat.size}\0`);
|
|
290
|
+
let size = 0;
|
|
291
|
+
for await (const chunk of createReadStream(absolute)) {
|
|
292
|
+
hash.update(chunk);
|
|
293
|
+
size += chunk.length;
|
|
294
|
+
}
|
|
295
|
+
if (size !== stat.size)
|
|
296
|
+
throw new Error('Checkout file changed while checking');
|
|
297
|
+
}
|
|
298
|
+
else
|
|
299
|
+
throw new Error('Unexpected checkout filesystem object');
|
|
300
|
+
if (hash.digest('hex') !== oid)
|
|
301
|
+
throw new Error('Checkout bytes require preservation');
|
|
302
|
+
}
|
|
303
|
+
catch (error) {
|
|
304
|
+
if (error.code !== 'ENOENT')
|
|
305
|
+
throw error;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
const staged = await checked(['diff-index', '--cached', '--name-only', baseOid, '--']);
|
|
309
|
+
const flags = await checked(['ls-files', '-v', '-z']);
|
|
310
|
+
if (staged || flags.split('\0').some(line => line && !line.startsWith('H ')))
|
|
311
|
+
throw new Error(`Creation index entries changed: ${staged} / ${flags}`);
|
|
312
|
+
const unknown = await checked(['ls-files', '--others', '-z']); // includes ignored files
|
|
313
|
+
const changed = await checked(['diff', '--no-ext-diff', '--no-textconv', '--name-status', '-z', baseOid, '--']);
|
|
314
|
+
if (unknown)
|
|
315
|
+
throw new Error('Unknown creation contents; preserved');
|
|
316
|
+
const parts = changed.split('\0').filter(Boolean);
|
|
317
|
+
for (let i = 0; i < parts.length; i += 2)
|
|
318
|
+
if (parts[i] !== 'D' || !parts[i + 1])
|
|
319
|
+
throw new Error('Modified creation contents; preserved');
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=worktree-creation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-creation.js","sourceRoot":"","sources":["../../src/adapters/worktree-creation.ts"],"names":[],"mappings":"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"}
|
package/lib/client/actions.d.ts
CHANGED
|
@@ -56,14 +56,24 @@ export interface ClientSessions {
|
|
|
56
56
|
ids: string[];
|
|
57
57
|
byId: Record<string, {
|
|
58
58
|
cwd?: string;
|
|
59
|
+
retainedBy?: {
|
|
60
|
+
mainView?: number;
|
|
61
|
+
};
|
|
59
62
|
} | undefined>;
|
|
60
63
|
}>;
|
|
61
|
-
/**
|
|
64
|
+
/** Creates a catalogued Session identity; newer Hosts require retaining it before borrowing a binding. */
|
|
62
65
|
create(input: {
|
|
63
66
|
workspaceId: string;
|
|
64
67
|
sessionId: string;
|
|
65
68
|
}): Promise<string>;
|
|
66
|
-
open
|
|
69
|
+
/** Newer Session Controller retains the target through initial open and the callback's handoff. */
|
|
70
|
+
using?<T>(sessionId: string, options: {
|
|
71
|
+
source: 'controllerOperation';
|
|
72
|
+
}, operation: (reference: {
|
|
73
|
+
binding: ClientSessionBinding;
|
|
74
|
+
}) => T | Promise<T>): Promise<T>;
|
|
75
|
+
/** Legacy Session Controller navigation (removed when UI Workspace owns selection). */
|
|
76
|
+
open?(sessionId: string): void;
|
|
67
77
|
binding(sessionId: string): ClientSessionBinding | undefined;
|
|
68
78
|
}
|
|
69
79
|
export interface ClientWorkspaces {
|
|
@@ -76,6 +86,10 @@ export interface ClientWorkspaces {
|
|
|
76
86
|
openPath(path: string): Promise<void>;
|
|
77
87
|
}
|
|
78
88
|
export interface WorktreeClientServices {
|
|
89
|
+
/** UI Workspace owns navigation on Harness 0.1.6 and newer. */
|
|
90
|
+
uiWorkspace?: {
|
|
91
|
+
openSession(sessionId: string): void;
|
|
92
|
+
};
|
|
79
93
|
locale?: unknown;
|
|
80
94
|
sessions: ClientSessions;
|
|
81
95
|
workspaces: ClientWorkspaces;
|
|
@@ -110,8 +124,12 @@ export interface PreSessionWorktreeServices extends WorktreeClientServices {
|
|
|
110
124
|
};
|
|
111
125
|
};
|
|
112
126
|
}
|
|
127
|
+
/** Prefer the UI owner of navigation; refuse to silently lose a target selection. */
|
|
128
|
+
export declare function navigateToSession(services: Pick<WorktreeClientServices, 'sessions' | 'uiWorkspace' | 'locale'>, sessionId: string): void;
|
|
129
|
+
/** Resolve the sole visible main Session across the legacy selection and new retainedBy contract. */
|
|
130
|
+
export declare function selectedSessionId(snapshot: ReturnType<ClientSessions['list']['getSnapshot']>): string | undefined;
|
|
113
131
|
/** Open a Session only when the Harness list proves both its identity and cwd. */
|
|
114
|
-
export declare function openExistingSession(services: Pick<WorktreeClientServices, 'sessions' | 'locale'>, sessionId: string, expectedCwd: string): boolean;
|
|
132
|
+
export declare function openExistingSession(services: Pick<WorktreeClientServices, 'sessions' | 'locale' | 'uiWorkspace'>, sessionId: string, expectedCwd: string): boolean;
|
|
115
133
|
/** Idempotently register the managed root, create the preallocated Session, and navigate. */
|
|
116
134
|
export declare function openIsolatedTarget(services: WorktreeClientServices, payload: IsolatedTargetLocation, isActive?: () => boolean): Promise<void>;
|
|
117
135
|
/**
|
package/lib/client/actions.js
CHANGED
|
@@ -7,12 +7,32 @@ function samePath(left, right) {
|
|
|
7
7
|
? normalizedLeft.toLowerCase() === normalizedRight.toLowerCase()
|
|
8
8
|
: normalizedLeft === normalizedRight;
|
|
9
9
|
}
|
|
10
|
+
/** Prefer the UI owner of navigation; refuse to silently lose a target selection. */
|
|
11
|
+
export function navigateToSession(services, sessionId) {
|
|
12
|
+
if (services.uiWorkspace?.openSession)
|
|
13
|
+
services.uiWorkspace.openSession(sessionId);
|
|
14
|
+
else if (services.sessions.open)
|
|
15
|
+
services.sessions.open(sessionId);
|
|
16
|
+
else
|
|
17
|
+
throw new Error(translatorForServices(services)('harness.session.navigation.unavailable'));
|
|
18
|
+
}
|
|
19
|
+
/** Resolve the sole visible main Session across the legacy selection and new retainedBy contract. */
|
|
20
|
+
export function selectedSessionId(snapshot) {
|
|
21
|
+
const retained = Object.entries(snapshot.byId ?? {})
|
|
22
|
+
.filter(([, summary]) => (summary?.retainedBy?.mainView ?? 0) > 0)
|
|
23
|
+
.map(([id]) => id);
|
|
24
|
+
if (retained.length > 1)
|
|
25
|
+
return undefined;
|
|
26
|
+
if (snapshot.current && retained.length === 1 && retained[0] !== snapshot.current)
|
|
27
|
+
return undefined;
|
|
28
|
+
return snapshot.current || retained[0];
|
|
29
|
+
}
|
|
10
30
|
/** Open a Session only when the Harness list proves both its identity and cwd. */
|
|
11
31
|
export function openExistingSession(services, sessionId, expectedCwd) {
|
|
12
32
|
const summary = services.sessions.list.getSnapshot().byId[sessionId];
|
|
13
33
|
if (summary?.cwd === undefined || !samePath(summary.cwd, expectedCwd))
|
|
14
34
|
return false;
|
|
15
|
-
services
|
|
35
|
+
navigateToSession(services, sessionId);
|
|
16
36
|
return true;
|
|
17
37
|
}
|
|
18
38
|
async function waitForProjectedSessionPath(services, sessionId, expectedCwd, isActive) {
|
|
@@ -87,7 +107,7 @@ export async function openIsolatedTarget(services, payload, isActive = () => tru
|
|
|
87
107
|
return;
|
|
88
108
|
if (!isActive())
|
|
89
109
|
return;
|
|
90
|
-
services
|
|
110
|
+
navigateToSession(services, sessionId);
|
|
91
111
|
}
|
|
92
112
|
/**
|
|
93
113
|
* Inspect a path-free Host authorization, verify exact checkout/owner identity,
|
|
@@ -128,7 +148,7 @@ export function prefillSessionDraft(services, sessionId, text) {
|
|
|
128
148
|
/** Submit an exact review-card acceptance as an explicit user command. */
|
|
129
149
|
export async function finalizeCurrentSession(services, reviewId, revision, retention) {
|
|
130
150
|
const t = translatorForServices(services);
|
|
131
|
-
const sessionId = services.sessions.list.getSnapshot()
|
|
151
|
+
const sessionId = selectedSessionId(services.sessions.list.getSnapshot());
|
|
132
152
|
if (!sessionId)
|
|
133
153
|
throw new Error(t("no.session.is.currently.selected"));
|
|
134
154
|
const binding = services.sessions.binding(sessionId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/client/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/client/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ import contribution from '../../console-remote/remote.js';
|
|
|
5
5
|
import { apply as applyToolViews, inject as toolViewInject } from '../index.js';
|
|
6
6
|
import { registerManagedWorkspaceSidebar } from '../workspace-sidebar/index.js';
|
|
7
7
|
import { inject as officialWorkspaceInject } from 'virtual:dsh-official-workspace-client';
|
|
8
|
+
import { apply as applyNextWorkspace, inject as nextWorkspaceInject } from 'virtual:dsh-official-workspace-client-next';
|
|
9
|
+
import { apply as applyAlphaWorkspace, inject as alphaWorkspaceInject } from 'virtual:dsh-official-workspace-client-alpha';
|
|
8
10
|
import { createWorktreeConsoleRemoteAdapter } from './adapter.js';
|
|
9
11
|
export { createWorktreeConsoleRemoteAdapter } from './adapter.js';
|
|
10
12
|
/**
|
|
@@ -23,13 +25,39 @@ export async function apply(ctx) {
|
|
|
23
25
|
throw new Error(createTranslator(transportMessages, getLanguage())('mountFailed'));
|
|
24
26
|
const adapter = createWorktreeConsoleRemoteAdapter(remote, getLanguage);
|
|
25
27
|
ctx.provide('worktreeConsole', adapter);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
const mountTools = (workspaceCtx) => {
|
|
29
|
+
// Conversation-dependent views are below their UI Workspace provider;
|
|
30
|
+
// a sibling fiber could not safely assume the navigation service exists.
|
|
31
|
+
workspaceCtx.inject(toolViewInject, child => {
|
|
32
|
+
applyToolViews(child, adapter);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
// All three official Browser generations declare the same top-level Slot.
|
|
36
|
+
// Pick exactly one based on the Host-resolved package version, not timing of
|
|
37
|
+
// Client services (shortcuts is absent in alpha and late to start in rc.2).
|
|
38
|
+
const topology = await adapter.sidebarTopology();
|
|
39
|
+
if (!topology.ok)
|
|
40
|
+
throw new Error('Could not identify the installed Host Workspace generation.');
|
|
41
|
+
const flavor = topology.value.workspaceClientFlavor;
|
|
42
|
+
if (flavor === 'legacy') {
|
|
43
|
+
if (typeof ctx.get('sessions').open !== 'function') {
|
|
44
|
+
throw new Error('Legacy Workspace Browser requires sessions.open().');
|
|
45
|
+
}
|
|
46
|
+
registerManagedWorkspaceSidebar(ctx, adapter);
|
|
47
|
+
mountTools(ctx);
|
|
48
|
+
}
|
|
49
|
+
else if (flavor === 'alpha' || flavor === 'next') {
|
|
50
|
+
const [required, applyWorkspace] = flavor === 'alpha'
|
|
51
|
+
? [alphaWorkspaceInject, applyAlphaWorkspace]
|
|
52
|
+
: [nextWorkspaceInject, applyNextWorkspace];
|
|
53
|
+
ctx.inject(required, child => {
|
|
54
|
+
registerManagedWorkspaceSidebar(child, adapter, applyWorkspace);
|
|
55
|
+
mountTools(child);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Host lifecycle leaves the official provider enabled in this case.
|
|
60
|
+
mountTools(ctx);
|
|
61
|
+
}
|
|
34
62
|
}
|
|
35
63
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/console-remote/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAIpE,OAAO,YAAwC,MAAM,gCAAgC,CAAA;AACrF,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAA;AAC/E,OAAO,EAAE,MAAM,IAAI,uBAAuB,EAAE,MAAM,uCAAuC,CAAA;AACzF,OAAO,EAAE,kCAAkC,EAAE,MAAM,cAAc,CAAA;AAEjE,OAAO,EAAE,kCAAkC,EAAE,MAAM,cAAc,CAAA;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAA;AAYlD,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,GAAyB;IACnD,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IAC3D,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAA;IAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAkC,CAAA;IAC7E,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC/D,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAA;IAC5G,MAAM,OAAO,GAAG,kCAAkC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACvE,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAEvC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/console-remote/index.ts"],"names":[],"mappings":"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"}
|
package/lib/client/index.js
CHANGED
package/lib/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { WorktreeConsoleAdapter, WorktreeConsoleTargetDetails } from '../../console-contract.js';
|
|
2
|
-
import type
|
|
2
|
+
import { type PreSessionWorktreeServices } from '../actions.js';
|
|
3
3
|
export interface PreSessionDraftState {
|
|
4
4
|
readonly draft: string;
|
|
5
5
|
readonly imageIds: readonly string[];
|