@yu_robotics/remote-cli 1.6.139 → 1.6.145

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 (68) hide show
  1. package/README.md +53 -13
  2. package/dist/client/MessageHandler.d.ts +2 -0
  3. package/dist/client/MessageHandler.d.ts.map +1 -1
  4. package/dist/client/MessageHandler.js +86 -9
  5. package/dist/client/MessageHandler.js.map +1 -1
  6. package/dist/client/WebSocketClient.d.ts.map +1 -1
  7. package/dist/client/WebSocketClient.js +1 -0
  8. package/dist/client/WebSocketClient.js.map +1 -1
  9. package/dist/delegation/DelegatedWorkspaceManager.d.ts.map +1 -1
  10. package/dist/delegation/DelegatedWorkspaceManager.js +38 -4
  11. package/dist/delegation/DelegatedWorkspaceManager.js.map +1 -1
  12. package/dist/delegation/DelegationManager.d.ts +4 -0
  13. package/dist/delegation/DelegationManager.d.ts.map +1 -1
  14. package/dist/delegation/DelegationManager.js +195 -93
  15. package/dist/delegation/DelegationManager.js.map +1 -1
  16. package/dist/delegation/DelegationStatusFormatter.d.ts.map +1 -1
  17. package/dist/delegation/DelegationStatusFormatter.js +6 -5
  18. package/dist/delegation/DelegationStatusFormatter.js.map +1 -1
  19. package/dist/delegation/GitCheckpoint.d.ts +10 -2
  20. package/dist/delegation/GitCheckpoint.d.ts.map +1 -1
  21. package/dist/delegation/GitCheckpoint.js +286 -41
  22. package/dist/delegation/GitCheckpoint.js.map +1 -1
  23. package/dist/delegation/WorkerPolicy.d.ts +4 -1
  24. package/dist/delegation/WorkerPolicy.d.ts.map +1 -1
  25. package/dist/delegation/WorkerPolicy.js +17 -8
  26. package/dist/delegation/WorkerPolicy.js.map +1 -1
  27. package/dist/delegation/contract.d.ts +2 -2
  28. package/dist/delegation/contract.d.ts.map +1 -1
  29. package/dist/delegation/contract.js +3 -3
  30. package/dist/delegation/contract.js.map +1 -1
  31. package/dist/executor/AcpExecutor.d.ts +1 -0
  32. package/dist/executor/AcpExecutor.d.ts.map +1 -1
  33. package/dist/executor/AcpExecutor.js +21 -1
  34. package/dist/executor/AcpExecutor.js.map +1 -1
  35. package/dist/executor/Activity.d.ts +39 -0
  36. package/dist/executor/Activity.d.ts.map +1 -0
  37. package/dist/executor/Activity.js +266 -0
  38. package/dist/executor/Activity.js.map +1 -0
  39. package/dist/executor/AgyExecutor.d.ts +1 -0
  40. package/dist/executor/AgyExecutor.d.ts.map +1 -1
  41. package/dist/executor/AgyExecutor.js +8 -0
  42. package/dist/executor/AgyExecutor.js.map +1 -1
  43. package/dist/executor/ClaudePersistentExecutor.d.ts +4 -1
  44. package/dist/executor/ClaudePersistentExecutor.d.ts.map +1 -1
  45. package/dist/executor/ClaudePersistentExecutor.js +8 -0
  46. package/dist/executor/ClaudePersistentExecutor.js.map +1 -1
  47. package/dist/executor/CodexAppServerExecutor.d.ts +1 -0
  48. package/dist/executor/CodexAppServerExecutor.d.ts.map +1 -1
  49. package/dist/executor/CodexAppServerExecutor.js +33 -9
  50. package/dist/executor/CodexAppServerExecutor.js.map +1 -1
  51. package/dist/executor/IExecutor.d.ts +3 -1
  52. package/dist/executor/IExecutor.d.ts.map +1 -1
  53. package/dist/executor/PiExecutor.d.ts +1 -0
  54. package/dist/executor/PiExecutor.d.ts.map +1 -1
  55. package/dist/executor/PiExecutor.js +10 -0
  56. package/dist/executor/PiExecutor.js.map +1 -1
  57. package/dist/executor/index.d.ts +1 -0
  58. package/dist/executor/index.d.ts.map +1 -1
  59. package/dist/executor/index.js +7 -1
  60. package/dist/executor/index.js.map +1 -1
  61. package/dist/maintenance/release-notes.json +1 -1
  62. package/dist/types/index.d.ts +12 -1
  63. package/dist/types/index.d.ts.map +1 -1
  64. package/dist/utils/ActivityProgress.d.ts +20 -0
  65. package/dist/utils/ActivityProgress.d.ts.map +1 -0
  66. package/dist/utils/ActivityProgress.js +69 -0
  67. package/dist/utils/ActivityProgress.js.map +1 -0
  68. package/package.json +1 -1
@@ -7,6 +7,7 @@ exports.GitCommandError = exports.GIT_OID = exports.CHECKPOINT_LIMITS = void 0;
7
7
  exports.runGit = runGit;
8
8
  exports.gitText = gitText;
9
9
  exports.checkpointRevision = checkpointRevision;
10
+ exports.importGitTree = importGitTree;
10
11
  exports.createCheckpointCommit = createCheckpointCommit;
11
12
  exports.captureCheckpoint = captureCheckpoint;
12
13
  const child_process_1 = require("child_process");
@@ -28,13 +29,19 @@ class GitCommandError extends Error {
28
29
  }
29
30
  }
30
31
  exports.GitCommandError = GitCommandError;
32
+ function gitEnvironment(extra = {}) {
33
+ const inherited = Object.fromEntries(Object.entries(process.env).filter(([name]) => !name.startsWith('GIT_')));
34
+ return { ...inherited, LC_ALL: 'C', ...extra };
35
+ }
36
+ function gitArguments(args) {
37
+ return ['-c', 'core.hooksPath=' + (process.platform === 'win32' ? 'NUL' : '/dev/null'),
38
+ '-c', 'core.fsmonitor=false', '-c', 'gc.auto=0', '-c', 'maintenance.auto=false', ...args];
39
+ }
31
40
  /** Fixed argv only; neither a shell nor the user's Git environment selects the repository. */
32
41
  async function runGit(cwd, args, input, extraEnv = {}) {
33
- const env = Object.fromEntries(Object.entries(process.env).filter(([name]) => !name.startsWith('GIT_')));
34
42
  return new Promise((resolve, reject) => {
35
- const child = (0, child_process_1.spawn)('git', ['-c', 'core.hooksPath=' + (process.platform === 'win32' ? 'NUL' : '/dev/null'),
36
- '-c', 'core.fsmonitor=false', '-c', 'gc.auto=0', '-c', 'maintenance.auto=false', ...args], {
37
- cwd, env: { ...env, LC_ALL: 'C', ...extraEnv }, stdio: ['pipe', 'pipe', 'pipe'],
43
+ const child = (0, child_process_1.spawn)('git', gitArguments(args), {
44
+ cwd, env: gitEnvironment(extraEnv), stdio: ['pipe', 'pipe', 'pipe'],
38
45
  });
39
46
  const chunks = [];
40
47
  let size = 0;
@@ -73,19 +80,98 @@ async function runGit(cwd, args, input, extraEnv = {}) {
73
80
  async function gitText(cwd, args, input, env) {
74
81
  return (await runGit(cwd, args, input, env)).toString('utf8').trim();
75
82
  }
76
- function checkpointRevision(head, tree, index) {
77
- return (0, crypto_1.createHash)('sha256').update(head).update('\0').update(tree).update('\0').update(index).digest('hex');
83
+ function checkpointRevision(head, tree, index, repositories = []) {
84
+ const hash = (0, crypto_1.createHash)('sha256').update(head).update('\0').update(tree).update('\0').update(index);
85
+ if (repositories.length)
86
+ hash.update('\0repositories\0').update(JSON.stringify(repositories));
87
+ return hash.digest('hex');
88
+ }
89
+ /** Transfer local objects through a pipe, without buffering repository contents or fetching a remote. */
90
+ async function importGitTree(source, destination, tree) {
91
+ if (!exports.GIT_OID.test(tree))
92
+ throw new Error('Invalid nested checkpoint tree');
93
+ if (await gitText(source, ['rev-parse', '--show-object-format']) !== await gitText(destination, ['rev-parse', '--show-object-format'])) {
94
+ throw new Error('Nested repository uses a different Git object format');
95
+ }
96
+ const objects = await promises_1.default.realpath(path_1.default.resolve(destination, await gitText(destination, ['rev-parse', '--git-path', 'objects'])));
97
+ const incoming = await promises_1.default.mkdtemp(path_1.default.join(objects, 'tmp_objdir-incoming-'));
98
+ try {
99
+ await promises_1.default.mkdir(path_1.default.join(incoming, 'pack'));
100
+ const published = path_1.default.join(objects, 'pack');
101
+ await promises_1.default.mkdir(published, { recursive: true });
102
+ await transferGitTree(source, destination, tree, {
103
+ GIT_OBJECT_DIRECTORY: incoming,
104
+ GIT_ALTERNATE_OBJECT_DIRECTORIES: JSON.stringify(objects),
105
+ });
106
+ const files = await promises_1.default.readdir(path_1.default.join(incoming, 'pack'));
107
+ if (!files.some(file => file.endsWith('.pack')) || !files.some(file => file.endsWith('.idx'))
108
+ || files.some(file => !/^pack-(?:[a-f0-9]{40}|[a-f0-9]{64})\.(?:pack|idx|rev)$/.test(file))) {
109
+ throw new Error('Nested Git transfer produced an incomplete pack');
110
+ }
111
+ // Only complete packs leave quarantine. Publish indexes last so Git never
112
+ // discovers a pack while its bytes are still being received or promoted.
113
+ files.sort((left, right) => Number(left.endsWith('.idx')) - Number(right.endsWith('.idx')));
114
+ for (const file of files)
115
+ await promises_1.default.rename(path_1.default.join(incoming, 'pack', file), path_1.default.join(published, file));
116
+ }
117
+ finally {
118
+ // transferGitTree settles only after both children exit. Remove only this
119
+ // operation's quarantine, never sweep another process's temporary packs.
120
+ await promises_1.default.rm(incoming, { recursive: true, force: true });
121
+ }
122
+ }
123
+ async function transferGitTree(source, destination, tree, receiveEnv) {
124
+ await new Promise((resolve, reject) => {
125
+ const pack = (0, child_process_1.spawn)('git', gitArguments(['pack-objects', '--compression=1', '--window=0', '--threads=1', '--stdout', '--revs']), {
126
+ cwd: source, env: gitEnvironment(), stdio: ['pipe', 'pipe', 'pipe'],
127
+ });
128
+ const unpack = (0, child_process_1.spawn)('git', gitArguments(['index-pack', '--threads=1', '--stdin']), {
129
+ cwd: destination, env: gitEnvironment(receiveEnv), stdio: ['pipe', 'pipe', 'pipe'],
130
+ });
131
+ let closed = 0;
132
+ let failure;
133
+ let killTimer;
134
+ const stop = (error) => {
135
+ failure ??= error;
136
+ pack.kill('SIGTERM');
137
+ unpack.kill('SIGTERM');
138
+ killTimer ??= setTimeout(() => { pack.kill('SIGKILL'); unpack.kill('SIGKILL'); }, 500);
139
+ };
140
+ const timer = setTimeout(() => stop(new Error('Nested Git object transfer timed out')), exports.CHECKPOINT_LIMITS.commandMs);
141
+ for (const [name, child] of [['pack-objects', pack], ['index-pack', unpack]]) {
142
+ let detail = '';
143
+ child.stderr.on('data', (chunk) => { detail = (detail + chunk.toString('utf8')).slice(-2000); });
144
+ child.on('error', stop);
145
+ child.stdin.on('error', () => { });
146
+ child.on('close', code => {
147
+ if (code !== 0)
148
+ stop(new GitCommandError(name, code, detail.trim()));
149
+ if (++closed === 2) {
150
+ clearTimeout(timer);
151
+ clearTimeout(killTimer);
152
+ if (failure)
153
+ reject(failure);
154
+ else
155
+ resolve();
156
+ }
157
+ });
158
+ }
159
+ unpack.stdout.resume();
160
+ pack.stdout.pipe(unpack.stdin);
161
+ pack.stdin.end(`${tree}\n`);
162
+ });
78
163
  }
79
164
  async function readIndex(root) {
80
165
  const file = path_1.default.resolve(root, await gitText(root, ['rev-parse', '--git-path', 'index']));
81
166
  try {
82
- if ((await promises_1.default.stat(file)).size > exports.CHECKPOINT_LIMITS.outputBytes)
167
+ const stat = await promises_1.default.stat(file);
168
+ if (stat.size > exports.CHECKPOINT_LIMITS.outputBytes)
83
169
  throw new Error('Git index exceeds the checkpoint limit');
84
- return await promises_1.default.readFile(file);
170
+ return { bytes: await promises_1.default.readFile(file), mtime: stat.mtime };
85
171
  }
86
172
  catch (error) {
87
173
  if (error.code === 'ENOENT')
88
- return Buffer.alloc(0);
174
+ return { bytes: Buffer.alloc(0) };
89
175
  throw error;
90
176
  }
91
177
  }
@@ -103,42 +189,118 @@ function sensitiveUntracked(file) {
103
189
  || /^\.env(?:\.|$)/.test(name) && !/^\.env\.(?:example|sample|template)$/.test(name)
104
190
  || /\.(?:pem|key|p12|pfx)$/.test(name);
105
191
  }
106
- async function validateFiles(root) {
107
- const untracked = entries(await runGit(root, ['ls-files', '-z', '--others', '--exclude-standard']));
108
- if (untracked.some(sensitiveUntracked)) {
109
- throw new Error('Untracked credential/config files prevent a safe checkpoint. Exclude them with Git ignore rules before delegating.');
192
+ function relativeName(scope, root, file) {
193
+ return path_1.default.relative(scope, path_1.default.join(root, file)).split(path_1.default.sep).join('/');
194
+ }
195
+ function within(directory, target) {
196
+ const relative = path_1.default.relative(directory, target);
197
+ return !path_1.default.isAbsolute(relative) && relative !== '..' && !relative.startsWith(`..${path_1.default.sep}`);
198
+ }
199
+ async function nestedGitDirectory(root, scope, ancestors) {
200
+ const metadata = await promises_1.default.lstat(path_1.default.join(root, '.git'));
201
+ const name = JSON.stringify(path_1.default.relative(scope, root).split(path_1.default.sep).join('/'));
202
+ if (metadata.isSymbolicLink() || !metadata.isFile() && !metadata.isDirectory()) {
203
+ throw new Error(`Unsupported nested Git metadata at ${name}`);
204
+ }
205
+ const gitDirectory = await promises_1.default.realpath(await gitText(root, ['rev-parse', '--absolute-git-dir']));
206
+ const common = await promises_1.default.realpath(path_1.default.resolve(root, await gitText(root, ['rev-parse', '--git-common-dir'])));
207
+ if (ancestors.includes(common))
208
+ throw new Error(`Nested worktree shares an ancestor repository at ${name}; exclude it before delegating`);
209
+ const embedded = metadata.isDirectory() && gitDirectory === await promises_1.default.realpath(path_1.default.join(root, '.git'));
210
+ const submodule = metadata.isFile() && ancestors.some(parent => within(path_1.default.join(parent, 'modules'), gitDirectory));
211
+ if ((!embedded && !submodule) || common !== gitDirectory) {
212
+ throw new Error(`Nested Git metadata is outside the permitted repository boundary at ${name}; manual recovery is required`);
213
+ }
214
+ if (await promises_1.default.realpath(await gitText(root, ['rev-parse', '--show-toplevel'])) !== root) {
215
+ throw new Error(`Nested Git repository root does not match ${name}`);
216
+ }
217
+ return gitDirectory;
218
+ }
219
+ async function validateNestedConfig(root) {
220
+ try {
221
+ const configured = await gitText(root, ['config', '--show-scope', '--name-only', '--get-regexp',
222
+ '^(filter\\..*\\.(clean|smudge|process)|extensions\\.partialclone|remote\\..*\\.promisor)$']);
223
+ // Global filters are already trusted by the selected outer repository. Do
224
+ // not discover and execute additional commands from nested-local config.
225
+ if (configured.split('\n').some(line => /^(local|worktree)\s/.test(line) || /\s(?:extensions\.partialclone|remote\..*\.promisor)$/.test(line))) {
226
+ throw new Error('Nested repository filters or partial-clone configuration require manual recovery');
227
+ }
228
+ }
229
+ catch (error) {
230
+ if (!(error instanceof GitCommandError && error.code === 1))
231
+ throw error;
232
+ }
233
+ }
234
+ async function validateFiles(root, scope, ancestors, env) {
235
+ const untracked = entries(await runGit(root, ['ls-files', '-z', '--others', '--exclude-standard'], undefined, env));
236
+ const sensitive = untracked.find(sensitiveUntracked);
237
+ if (sensitive) {
238
+ throw new Error(`Untracked credential/config file ${JSON.stringify(relativeName(scope, root, sensitive))} prevents a safe checkpoint. Exclude it with Git ignore rules before delegating.`);
110
239
  }
111
- const files = [...new Set(entries(await runGit(root, ['ls-files', '-z', '--cached'])).concat(untracked))];
240
+ const staged = entries(await runGit(root, ['ls-files', '--stage', '-z'], undefined, env));
241
+ const cached = staged.map(entry => entry.slice(entry.indexOf('\t') + 1));
242
+ const gitlinks = new Set(staged.filter(entry => entry.startsWith('160000 ')).map(entry => entry.slice(entry.indexOf('\t') + 1)));
243
+ const files = [...new Set(cached.concat(untracked.map(file => file.replace(/\/$/, ''))))];
112
244
  const parents = new Set();
245
+ const checked = new Set();
246
+ const repositories = new Set();
247
+ const plainDirectories = [];
248
+ const checkRepository = async (directory) => {
249
+ if (directory === '.' || checked.has(directory))
250
+ return;
251
+ checked.add(directory);
252
+ const absolute = path_1.default.join(root, directory);
253
+ try {
254
+ await promises_1.default.lstat(path_1.default.join(absolute, '.git'));
255
+ }
256
+ catch (error) {
257
+ if (['ENOENT', 'ENOTDIR'].includes(error.code ?? ''))
258
+ return;
259
+ throw error;
260
+ }
261
+ await nestedGitDirectory(absolute, scope, ancestors);
262
+ repositories.add(directory);
263
+ };
113
264
  for (const file of files) {
114
265
  if (!file || path_1.default.isAbsolute(file) || file.split('/').some(part => part === '..' || part.toLowerCase() === '.git')) {
115
266
  throw new Error('Unsafe path in the Git checkpoint');
116
267
  }
117
- let parent = path_1.default.dirname(file);
268
+ let parent = path_1.default.posix.dirname(file);
118
269
  while (parent !== '.' && !parents.has(parent)) {
119
270
  parents.add(parent);
120
271
  try {
121
- if ((await promises_1.default.lstat(path_1.default.join(root, parent))).isSymbolicLink())
122
- throw new Error('Checkpoint paths cannot cross a symbolic-link directory');
272
+ if ((await promises_1.default.lstat(path_1.default.join(root, parent))).isSymbolicLink()) {
273
+ throw new Error(`Checkpoint paths cannot cross a symbolic-link directory: ${JSON.stringify(relativeName(scope, root, parent))}`);
274
+ }
275
+ await checkRepository(parent);
123
276
  }
124
277
  catch (error) {
125
- if (error.code !== 'ENOENT')
278
+ if (!['ENOENT', 'ENOTDIR'].includes(error.code ?? ''))
126
279
  throw error;
127
280
  }
128
- parent = path_1.default.dirname(parent);
281
+ parent = path_1.default.posix.dirname(parent);
129
282
  }
130
283
  try {
131
284
  const stat = await promises_1.default.lstat(path_1.default.join(root, file));
132
- if (!stat.isFile() && !stat.isSymbolicLink())
133
- throw new Error('Submodules and special files are not supported by Git worktree checkpoints');
285
+ if (stat.isDirectory()) {
286
+ await checkRepository(file);
287
+ // Git also lists the old path when an ordinary tracked file becomes a directory.
288
+ if (gitlinks.has(file) && !repositories.has(file) && (await promises_1.default.readdir(path_1.default.join(root, file))).length) {
289
+ plainDirectories.push(file);
290
+ }
291
+ }
292
+ else if (!stat.isFile() && !stat.isSymbolicLink()) {
293
+ const kind = stat.isFIFO() ? 'FIFO' : stat.isSocket() ? 'socket' : 'device or special file';
294
+ throw new Error(`Unsupported checkpoint entry ${JSON.stringify(relativeName(scope, root, file))}: ${kind}`);
295
+ }
134
296
  if (stat.isSymbolicLink()) {
135
297
  const target = await promises_1.default.readlink(path_1.default.join(root, file));
136
- const resolved = path_1.default.relative(root, path_1.default.resolve(root, path_1.default.dirname(file), target));
298
+ const resolved = path_1.default.relative(scope, path_1.default.resolve(root, path_1.default.dirname(file), target));
137
299
  if (path_1.default.isAbsolute(target) || resolved === '..' || resolved.startsWith(`..${path_1.default.sep}`) || path_1.default.isAbsolute(resolved)) {
138
- throw new Error('Checkpoint symbolic links must remain relative and inside the repository');
300
+ throw new Error(`Checkpoint symbolic links must remain relative and inside the repository: ${JSON.stringify(relativeName(scope, root, file))}`);
139
301
  }
140
302
  try {
141
- const canonical = path_1.default.relative(root, await promises_1.default.realpath(path_1.default.join(root, file)));
303
+ const canonical = path_1.default.relative(scope, await promises_1.default.realpath(path_1.default.join(root, file)));
142
304
  if (canonical === '..' || canonical.startsWith(`..${path_1.default.sep}`) || path_1.default.isAbsolute(canonical)) {
143
305
  throw new Error('Checkpoint symbolic-link chain escapes the repository');
144
306
  }
@@ -150,10 +312,12 @@ async function validateFiles(root) {
150
312
  }
151
313
  }
152
314
  catch (error) {
153
- if (error.code !== 'ENOENT')
315
+ if (!['ENOENT', 'ENOTDIR'].includes(error.code ?? ''))
154
316
  throw error;
155
317
  }
156
318
  }
319
+ const nested = [...repositories].sort().filter(directory => ![...repositories].some(other => directory.startsWith(`${other}/`)));
320
+ return { cached, repositories: nested, plainDirectories };
157
321
  }
158
322
  /** Validate the captured entries after Git filters and filesystem changes. */
159
323
  async function validateTree(root, tree) {
@@ -161,7 +325,8 @@ async function validateTree(root, tree) {
161
325
  for (const file of files) {
162
326
  const header = file.slice(0, file.indexOf('\t')).trim().split(/\s+/);
163
327
  const size = Number(header[3]);
164
- if (header[1] !== 'blob' || !Number.isSafeInteger(size) || size < 0) {
328
+ const gitlink = header[0] === '160000' && header[1] === 'commit' && exports.GIT_OID.test(header[2]);
329
+ if (!gitlink && (!/^(100644|100755|120000)$/.test(header[0]) || header[1] !== 'blob' || !Number.isSafeInteger(size) || size < 0)) {
165
330
  throw new Error('Checkpoint tree contains an unsupported entry');
166
331
  }
167
332
  }
@@ -177,37 +342,117 @@ async function createCheckpointCommit(root, tree, parent, label) {
177
342
  throw new Error('Git returned an invalid checkpoint commit');
178
343
  return commit;
179
344
  }
180
- /** Captures working files, including staged/unstaged/untracked input, without writing the user's index. */
181
- async function captureCheckpoint(root) {
182
- const head = await gitText(root, ['rev-parse', '--verify', 'HEAD']);
183
- if (!exports.GIT_OID.test(head))
184
- throw new Error('Git worktree delegation requires an initial commit');
345
+ async function checkpointHead(root, nested) {
346
+ try {
347
+ return await gitText(root, ['rev-parse', '--verify', 'HEAD']);
348
+ }
349
+ catch (error) {
350
+ if (nested && error instanceof GitCommandError) {
351
+ const branch = await gitText(root, ['symbolic-ref', '-q', 'HEAD']);
352
+ try {
353
+ await runGit(root, ['show-ref', '--verify', '--quiet', branch]);
354
+ }
355
+ catch (missing) {
356
+ if (missing instanceof GitCommandError && missing.code === 1)
357
+ return '';
358
+ }
359
+ }
360
+ throw new Error(`Git checkpoint requires a usable HEAD${nested ? '' : ' and an initial commit'}`);
361
+ }
362
+ }
363
+ async function validateIndexFlags(root, env) {
364
+ const flags = entries(await runGit(root, ['ls-files', '-v', '-z'], undefined, env));
365
+ // Preserve the source index and never guess whether sparse absences are deletions.
366
+ if (flags.some(entry => /^[a-zS] /.test(entry))) {
367
+ throw new Error('Git checkpoints cannot include assume-unchanged or skip-worktree entries. Resolve those flags and sparse checkouts explicitly before delegating.');
368
+ }
369
+ }
370
+ async function captureTree(root, scope, nested, imported, ancestors) {
371
+ if (nested)
372
+ await validateNestedConfig(root);
373
+ const head = await checkpointHead(root, nested);
185
374
  if ((await runGit(root, ['ls-files', '-u', '-z'])).length)
186
375
  throw new Error('Resolve the existing Git index conflicts before delegating');
187
376
  const originalIndex = await readIndex(root);
188
- await validateFiles(root);
377
+ let inventory = await validateFiles(root, scope, ancestors);
189
378
  const directory = await promises_1.default.mkdtemp(path_1.default.join(os_1.default.tmpdir(), 'remote-cli-checkpoint-'));
190
379
  try {
191
380
  const env = { GIT_INDEX_FILE: path_1.default.join(directory, 'index') };
192
- if (originalIndex.length)
193
- await promises_1.default.writeFile(env.GIT_INDEX_FILE, originalIndex, { mode: 0o600 });
381
+ if (originalIndex.bytes.length) {
382
+ await promises_1.default.writeFile(env.GIT_INDEX_FILE, originalIndex.bytes, { mode: 0o600 });
383
+ // Git's racy-clean check compares file times with the index's own time.
384
+ // A fresh copy timestamp can incorrectly bless same-size stale entries.
385
+ if (originalIndex.mtime)
386
+ await promises_1.default.utimes(env.GIT_INDEX_FILE, originalIndex.mtime, originalIndex.mtime);
387
+ }
194
388
  else
195
- await runGit(root, ['read-tree', head], undefined, env);
196
- await runGit(root, ['add', '--all', '--', '.'], undefined, env);
389
+ await runGit(root, head ? ['read-tree', head] : ['read-tree', '--empty'], undefined, env);
390
+ await validateIndexFlags(root, env);
391
+ for (;;) {
392
+ const replaced = inventory.repositories.concat(inventory.plainDirectories);
393
+ const removed = inventory.cached.filter(file => replaced.some(directory => file === directory || file.startsWith(`${directory}/`)));
394
+ if (!removed.length)
395
+ break;
396
+ await runGit(root, ['update-index', '--force-remove', '-z', '--stdin'], `${removed.join('\0')}\0`, env);
397
+ // Replacing a gitlink can expose more embedded repositories. Preserve
398
+ // earlier discoveries even if outer ignore rules now hide their paths.
399
+ const next = await validateFiles(root, scope, ancestors, env);
400
+ const discovered = [...new Set([...inventory.repositories, ...next.repositories])].sort();
401
+ inventory = { ...next, repositories: discovered.filter(directory => !discovered.some(other => directory.startsWith(`${other}/`))) };
402
+ }
403
+ await runGit(root, ['add', '--all', '--', '.', ...inventory.repositories.map(directory => `:(top,exclude,literal)${directory}`)], undefined, env);
404
+ const repositories = [];
405
+ for (const relative of inventory.repositories) {
406
+ const child = path_1.default.join(root, relative);
407
+ try {
408
+ const gitDirectory = await nestedGitDirectory(child, scope, ancestors);
409
+ const snapshot = await captureTree(child, scope, true, imported, [...ancestors, gitDirectory]);
410
+ const transfer = JSON.stringify([root, snapshot.tree]);
411
+ if (!imported.has(transfer)) {
412
+ await importGitTree(child, root, snapshot.tree);
413
+ imported.add(transfer);
414
+ }
415
+ await runGit(root, ['read-tree', `--prefix=${relative}/`, snapshot.tree], undefined, env);
416
+ const metadata = await promises_1.default.stat(gitDirectory);
417
+ repositories.push({ path: relative, identity: (0, crypto_1.createHash)('sha256')
418
+ .update(JSON.stringify([gitDirectory, metadata.dev, metadata.ino, metadata.birthtimeMs])).digest('hex'),
419
+ revision: checkpointRevision(snapshot.head, snapshot.tree, snapshot.index, snapshot.repositories) });
420
+ repositories.push(...snapshot.repositories.map(repository => ({ ...repository, path: `${relative}/${repository.path}` })));
421
+ }
422
+ catch (error) {
423
+ throw new Error(`Nested checkpoint ${JSON.stringify(relativeName(scope, root, relative))} failed: ${error.message}`);
424
+ }
425
+ }
197
426
  const tree = await gitText(root, ['write-tree'], undefined, env);
198
- await runGit(root, ['add', '--all', '--', '.'], undefined, env);
199
- if (tree !== await gitText(root, ['write-tree'], undefined, env)
200
- || head !== await gitText(root, ['rev-parse', 'HEAD']) || !originalIndex.equals(await readIndex(root))) {
427
+ if (head !== await checkpointHead(root, nested) || !originalIndex.bytes.equals((await readIndex(root)).bytes)) {
201
428
  throw new Error('Workspace changed while its checkpoint was being captured; retry after edits stop');
202
429
  }
203
430
  if (!exports.GIT_OID.test(tree))
204
431
  throw new Error('Git returned an invalid checkpoint tree');
205
432
  await validateTree(root, tree);
206
- return { head, tree, commit: await createCheckpointCommit(root, tree, head, `Remote CLI input checkpoint ${(0, crypto_1.randomUUID)()}`),
207
- revision: checkpointRevision(head, tree, originalIndex) };
433
+ return { head, tree, index: originalIndex.bytes, repositories };
208
434
  }
209
435
  finally {
210
436
  await promises_1.default.rm(directory, { recursive: true, force: true });
211
437
  }
212
438
  }
439
+ /** Flatten nested working files in private trees; never alter any source HEAD or index. */
440
+ async function captureCheckpoint(root) {
441
+ root = await promises_1.default.realpath(root);
442
+ // Reuse only transfers completed in this capture, never just an existing tree
443
+ // object that could still reference missing descendants in the object store.
444
+ const imported = new Set();
445
+ const common = await promises_1.default.realpath(path_1.default.resolve(root, await gitText(root, ['rev-parse', '--git-common-dir'])));
446
+ const gitDirectory = await promises_1.default.realpath(await gitText(root, ['rev-parse', '--absolute-git-dir']));
447
+ const ancestors = [...new Set([common, gitDirectory])];
448
+ const first = await captureTree(root, root, false, imported, ancestors);
449
+ const second = await captureTree(root, root, false, imported, ancestors);
450
+ const revision = checkpointRevision(first.head, first.tree, first.index, first.repositories);
451
+ if (revision !== checkpointRevision(second.head, second.tree, second.index, second.repositories)) {
452
+ throw new Error('Workspace changed while its checkpoint was being captured; retry after edits stop');
453
+ }
454
+ return { head: first.head, tree: first.tree,
455
+ commit: await createCheckpointCommit(root, first.tree, first.head, `Remote CLI input checkpoint ${(0, crypto_1.randomUUID)()}`),
456
+ revision, ...(first.repositories.length ? { repositories: first.repositories } : {}) };
457
+ }
213
458
  //# sourceMappingURL=GitCheckpoint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GitCheckpoint.js","sourceRoot":"","sources":["../../src/delegation/GitCheckpoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GitCheckpoint.js","sourceRoot":"","sources":["../../src/delegation/GitCheckpoint.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  import type { ExecutorConfig, BackendKey } from '../types/config';
2
2
  import type { DirectoryGuard } from '../security/DirectoryGuard';
3
3
  import type { DelegationBackend } from './contract';
4
- /** Resolve cross-backend workers without weakening the coordinator's sandbox or saved settings. */
4
+ import type { BackendAvailability } from './BackendRegistry';
5
+ /** Resolve independent workers without weakening the coordinator's sandbox or saved settings. */
5
6
  export declare function workerConfiguration(config: ExecutorConfig, guard: DirectoryGuard, threadId: string, parent: BackendKey, target: DelegationBackend, mode: 'inherit' | 'read_only'): ExecutorConfig;
7
+ /** Keep menu and tool discovery subject to the same admission policy. */
8
+ export declare function workerAvailability(config: ExecutorConfig, guard: DirectoryGuard, threadId: string, parent: BackendKey, item: BackendAvailability): BackendAvailability;
6
9
  //# sourceMappingURL=WorkerPolicy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerPolicy.d.ts","sourceRoot":"","sources":["../../src/delegation/WorkerPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAA2C,MAAM,iBAAiB,CAAC;AAC3G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKpD,mGAAmG;AACnG,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EACnF,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,GAAG,WAAW,GACvD,cAAc,CAyBhB"}
1
+ {"version":3,"file":"WorkerPolicy.d.ts","sourceRoot":"","sources":["../../src/delegation/WorkerPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAA2C,MAAM,iBAAiB,CAAC;AAC3G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAK7D,iGAAiG;AACjG,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EACnF,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,GAAG,WAAW,GACvD,cAAc,CAsBhB;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EACnF,IAAI,EAAE,mBAAmB,GACxB,mBAAmB,CAKrB"}
@@ -1,25 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.workerConfiguration = workerConfiguration;
4
+ exports.workerAvailability = workerAvailability;
4
5
  const CodexSandbox_1 = require("../executor/CodexSandbox");
5
6
  const ClaudeSandbox_1 = require("../executor/claude/ClaudeSandbox");
6
7
  const restricted = (policy) => policy?.mode === 'read-only' || policy?.mode === 'workspace-write';
7
- /** Resolve cross-backend workers without weakening the coordinator's sandbox or saved settings. */
8
+ /** Resolve independent workers without weakening the coordinator's sandbox or saved settings. */
8
9
  function workerConfiguration(config, guard, threadId, parent, target, mode) {
9
- if (parent === target) {
10
- throw new Error('Same-backend delegation is disabled. Use the current backend directly or its native subagents, if supported.');
11
- }
12
10
  const read = (backend) => backend === 'codex'
13
11
  ? new CodexSandbox_1.CodexSandbox(guard, config.codex?.sandbox, threadId).getConfig()
14
12
  : backend === 'claude' ? new ClaudeSandbox_1.ClaudeSandbox(guard, config.claude?.sandbox, threadId).getConfig() : undefined;
15
13
  const parentPolicy = read(parent);
16
- // Native policies have different enforcement semantics. Do not silently translate
17
- // a restricted parent into another backend's weaker or differently scoped policy.
14
+ // A separate worker identity/worktree needs a scope-aware policy even on the
15
+ // same backend. Do not silently weaken or translate a restricted parent policy.
18
16
  if (restricted(parentPolicy)) {
19
- throw new Error('Cross-backend delegation is unavailable while the coordinator sandbox is enabled; sandbox equivalence is not guaranteed.');
17
+ throw new Error('Managed delegation is unavailable while the coordinator sandbox is enabled; sandbox equivalence is not guaranteed.');
20
18
  }
21
19
  if (mode === 'read_only') {
22
- throw new Error('Cross-backend delegation supports inherit mode only. Use inherit and describe any no-write requirement in the objective; an unrestricted coordinator cannot enable a worker sandbox.');
20
+ throw new Error('Managed delegation supports inherit mode only. Use inherit and describe any no-write requirement in the objective; an unrestricted coordinator cannot enable a worker sandbox.');
23
21
  }
24
22
  // A target backend's settings apply when it is the coordinator, not to a
25
23
  // temporary worker launched by an unrestricted coordinator.
@@ -32,4 +30,15 @@ function workerConfiguration(config, guard, threadId, parent, target, mode) {
32
30
  }
33
31
  return result;
34
32
  }
33
+ /** Keep menu and tool discovery subject to the same admission policy. */
34
+ function workerAvailability(config, guard, threadId, parent, item) {
35
+ try {
36
+ workerConfiguration(config, guard, threadId, parent, item.backend, 'inherit');
37
+ }
38
+ catch (error) {
39
+ return { ...item, worker: false, readOnly: false, reason: error.message };
40
+ }
41
+ // read_only remains recognized by the schema but is unavailable under this policy.
42
+ return { ...item, readOnly: false };
43
+ }
35
44
  //# sourceMappingURL=WorkerPolicy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerPolicy.js","sourceRoot":"","sources":["../../src/delegation/WorkerPolicy.ts"],"names":[],"mappings":";;AAUA,kDA4BC;AApCD,2DAAwD;AACxD,oEAAiE;AAIjE,MAAM,UAAU,GAAG,CAAC,MAAe,EAAW,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,WAAW,IAAI,MAAM,EAAE,IAAI,KAAK,iBAAiB,CAAC;AAEpH,mGAAmG;AACnG,SAAgB,mBAAmB,CACjC,MAAsB,EAAE,KAAqB,EAAE,QAAgB,EAAE,MAAkB,EACnF,MAAyB,EAAE,IAA6B;IAExD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,8GAA8G,CAAC,CAAC;IAClI,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,OAAmB,EAAsB,EAAE,CAAC,OAAO,KAAK,OAAO;QAC3E,CAAC,CAAC,IAAI,2BAAY,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,SAAS,EAAE;QACtE,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,6BAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9G,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,kFAAkF;IAClF,kFAAkF;IAClF,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,0HAA0H,CAAC,CAAC;IAC9I,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,sLAAsL,CAAC,CAAC;IAC1M,CAAC;IACD,yEAAyE;IACzE,4DAA4D;IAC5D,MAAM,MAAM,GAAmB,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACvG,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,CAAC;IAC9E,CAAC;SAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,CAAC;IAChF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"WorkerPolicy.js","sourceRoot":"","sources":["../../src/delegation/WorkerPolicy.ts"],"names":[],"mappings":";;AAWA,kDAyBC;AAGD,gDAQC;AA7CD,2DAAwD;AACxD,oEAAiE;AAKjE,MAAM,UAAU,GAAG,CAAC,MAAe,EAAW,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,WAAW,IAAI,MAAM,EAAE,IAAI,KAAK,iBAAiB,CAAC;AAEpH,iGAAiG;AACjG,SAAgB,mBAAmB,CACjC,MAAsB,EAAE,KAAqB,EAAE,QAAgB,EAAE,MAAkB,EACnF,MAAyB,EAAE,IAA6B;IAExD,MAAM,IAAI,GAAG,CAAC,OAAmB,EAAsB,EAAE,CAAC,OAAO,KAAK,OAAO;QAC3E,CAAC,CAAC,IAAI,2BAAY,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,SAAS,EAAE;QACtE,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,6BAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9G,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,6EAA6E;IAC7E,gFAAgF;IAChF,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,oHAAoH,CAAC,CAAC;IACxI,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,gLAAgL,CAAC,CAAC;IACpM,CAAC;IACD,yEAAyE;IACzE,4DAA4D;IAC5D,MAAM,MAAM,GAAmB,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACvG,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,CAAC;IAC9E,CAAC;SAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,CAAC;IAChF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yEAAyE;AACzE,SAAgB,kBAAkB,CAChC,MAAsB,EAAE,KAAqB,EAAE,QAAgB,EAAE,MAAkB,EACnF,IAAyB;IAEzB,IAAI,CAAC;QAAC,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAAC,CAAC;IACtF,OAAO,KAAK,EAAE,CAAC;QAAC,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IACvG,mFAAmF;IACnF,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACtC,CAAC"}
@@ -26,7 +26,7 @@ export declare const DELEGATION_TOOLS: readonly [{
26
26
  readonly destructiveHint: true;
27
27
  readonly openWorldHint: true;
28
28
  };
29
- readonly description: "Accept an independent managed task on a different backend. Git workspaces use isolated, reusable worker worktrees and may run concurrently; non-Git directories use the shared workspace in FIFO order. Discover scheduling with remote_cli_list_backends. Git input includes nonignored working changes; ignored dependencies are not copied. Completion does not integrate file changes: inspect then explicitly apply or retain artifacts with remote_cli_integrate after all accepted workers finish. Worktrees are not an OS sandbox. The cumulative limit is 12 accepted tasks, including failed/cancelled tasks; queue waits expire after one hour. Same-backend delegation is rejected; use the current backend directly or its native subagents. Pass self-contained context and acceptance criteria; workers never inherit the coordinator conversation. A reused lane retains only its own previous conversation, not sibling results, and starts each Git task on a fresh baseline. Use inherit, including research; put no-write requirements in the objective. In shared-workspace mode do not edit concurrently with a worker. Use remote_cli_result for status; if you return after submitting tasks, Remote CLI waits and resumes this coordinator. Workers cannot delegate again.";
29
+ readonly description: "Accept an independent managed task on any eligible installed backend, including the coordinator backend. Same-backend workers use independent sessions, never the coordinator conversation. Prefer a different backend when independent cross-review is needed. Git workspaces use isolated, reusable worker worktrees and may run concurrently; non-Git directories use the shared workspace in FIFO order. Discover scheduling with remote_cli_list_backends. Git input includes nonignored working changes. Initialized local submodules and embedded repositories provide working files only; nested Git metadata/history and ignored dependencies are not copied. Uninitialized submodule paths remain empty. Completion does not integrate file changes: inspect then explicitly apply or retain artifacts with remote_cli_integrate after all accepted workers finish. Worktrees are not an OS sandbox. The cumulative limit is 12 accepted tasks, including failed/cancelled tasks; queue waits expire after one hour. Pass self-contained context and acceptance criteria; workers never inherit the coordinator conversation. A reused lane retains only its own previous conversation, not sibling results, and starts each Git task on a fresh baseline. Use inherit, including research; put no-write requirements in the objective. In shared-workspace mode do not edit concurrently with a worker. Use remote_cli_result for status; if you return after submitting tasks, Remote CLI waits and resumes this coordinator. Workers cannot delegate again.";
30
30
  readonly inputSchema: {
31
31
  type: string;
32
32
  properties: Record<string, unknown>;
@@ -75,7 +75,7 @@ export declare const DELEGATION_TOOLS: readonly [{
75
75
  additionalProperties: boolean;
76
76
  };
77
77
  }];
78
- export declare const DELEGATION_INSTRUCTIONS = "Remote CLI delegation is enabled for this turn. Use remote_cli_list_backends to discover workers and scheduling. Delegate managed tasks only to a different backend and provide self-contained context. Git workers run in isolated reusable worktrees, potentially concurrently; non-Git workers run serially in the shared directory. A queued task is not running. Git task completion does not integrate edits: after all accepted workers finish, use remote_cli_integrate to inspect and explicitly apply or retain each artifact, then verify the combined result. No automatic merge, commit, push, or Git initialization occurs. Worktrees are not an OS sandbox. Reused lanes retain their own conversation but each Git task starts on a fresh baseline; do not assume sibling or previous edits are present. Use remote_cli_result for status; returning after submission waits for terminal results and resumes this coordinator. Use inherit, including research; put no-write requirements in the objective. Sandboxed coordinators cannot delegate across backends; unrestricted coordinators must not request read_only. The current thread and backend own the answer and delivery. In shared-workspace mode do not write concurrently with a worker. Workers cannot delegate recursively or inherit this coordinator conversation.";
78
+ export declare const DELEGATION_INSTRUCTIONS = "Remote CLI delegation is enabled for this turn. Use remote_cli_list_backends to discover workers and scheduling. Delegate managed tasks to any eligible installed backend, including the coordinator backend, and provide self-contained context. Same-backend workers use independent sessions, never this coordinator conversation. Prefer a different backend when independent cross-review is needed. Git workers run in isolated reusable worktrees, potentially concurrently; non-Git workers run serially in the shared directory. A queued task is not running. Git task completion does not integrate edits: after all accepted workers finish, use remote_cli_integrate to inspect and explicitly apply or retain each artifact, then verify the combined result. No automatic merge, commit, push, or Git initialization occurs. Worktrees are not an OS sandbox. Reused lanes retain their own conversation but each Git task starts on a fresh baseline; do not assume sibling or previous edits are present. Use remote_cli_result for status; returning after submission waits for terminal results and resumes this coordinator. Use inherit, including research; put no-write requirements in the objective. Sandboxed coordinators cannot launch managed workers, including on the same backend; unrestricted coordinators must not request read_only. The current thread and backend own the answer and delivery. In shared-workspace mode do not write concurrently with a worker. Workers cannot delegate recursively or inherit this coordinator conversation.";
79
79
  export declare function sameConnection(a?: DelegationConnection, b?: DelegationConnection): boolean;
80
80
  export declare function delegationEnvironment(connection: DelegationConnection): Record<string, string>;
81
81
  export declare function delegationMcpConfig(connection: DelegationConnection): {