@yu_robotics/remote-cli 1.6.75 → 1.6.85

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 (111) hide show
  1. package/README.md +32 -1
  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 +136 -26
  5. package/dist/client/MessageHandler.js.map +1 -1
  6. package/dist/delegation/BackendRegistry.d.ts +22 -0
  7. package/dist/delegation/BackendRegistry.d.ts.map +1 -0
  8. package/dist/delegation/BackendRegistry.js +44 -0
  9. package/dist/delegation/BackendRegistry.js.map +1 -0
  10. package/dist/delegation/DelegationBridge.d.ts +14 -0
  11. package/dist/delegation/DelegationBridge.d.ts.map +1 -0
  12. package/dist/delegation/DelegationBridge.js +130 -0
  13. package/dist/delegation/DelegationBridge.js.map +1 -0
  14. package/dist/delegation/DelegationManager.d.ts +56 -0
  15. package/dist/delegation/DelegationManager.d.ts.map +1 -0
  16. package/dist/delegation/DelegationManager.js +346 -0
  17. package/dist/delegation/DelegationManager.js.map +1 -0
  18. package/dist/delegation/DelegationStore.d.ts +27 -0
  19. package/dist/delegation/DelegationStore.d.ts.map +1 -0
  20. package/dist/delegation/DelegationStore.js +114 -0
  21. package/dist/delegation/DelegationStore.js.map +1 -0
  22. package/dist/delegation/WorkerPolicy.d.ts +6 -0
  23. package/dist/delegation/WorkerPolicy.d.ts.map +1 -0
  24. package/dist/delegation/WorkerPolicy.js +35 -0
  25. package/dist/delegation/WorkerPolicy.js.map +1 -0
  26. package/dist/delegation/contract.d.ts +82 -0
  27. package/dist/delegation/contract.d.ts.map +1 -0
  28. package/dist/delegation/contract.js +68 -0
  29. package/dist/delegation/contract.js.map +1 -0
  30. package/dist/delegation/mcpServer.d.ts +2 -0
  31. package/dist/delegation/mcpServer.d.ts.map +1 -0
  32. package/dist/delegation/mcpServer.js +87 -0
  33. package/dist/delegation/mcpServer.js.map +1 -0
  34. package/dist/delegation/piExtension.d.ts +15 -0
  35. package/dist/delegation/piExtension.d.ts.map +1 -0
  36. package/dist/delegation/piExtension.js +42 -0
  37. package/dist/delegation/piExtension.js.map +1 -0
  38. package/dist/executor/AcpExecutor.d.ts +11 -0
  39. package/dist/executor/AcpExecutor.d.ts.map +1 -1
  40. package/dist/executor/AcpExecutor.js +77 -7
  41. package/dist/executor/AcpExecutor.js.map +1 -1
  42. package/dist/executor/AgyExecutor.d.ts +10 -0
  43. package/dist/executor/AgyExecutor.d.ts.map +1 -1
  44. package/dist/executor/AgyExecutor.js +82 -8
  45. package/dist/executor/AgyExecutor.js.map +1 -1
  46. package/dist/executor/ClaudePersistentExecutor.d.ts +5 -1
  47. package/dist/executor/ClaudePersistentExecutor.d.ts.map +1 -1
  48. package/dist/executor/ClaudePersistentExecutor.js +65 -38
  49. package/dist/executor/ClaudePersistentExecutor.js.map +1 -1
  50. package/dist/executor/CodexAppServerExecutor.d.ts +6 -0
  51. package/dist/executor/CodexAppServerExecutor.d.ts.map +1 -1
  52. package/dist/executor/CodexAppServerExecutor.js +26 -1
  53. package/dist/executor/CodexAppServerExecutor.js.map +1 -1
  54. package/dist/executor/CodexSandbox.d.ts +1 -1
  55. package/dist/executor/CodexSandbox.d.ts.map +1 -1
  56. package/dist/executor/CodexSandbox.js +5 -1
  57. package/dist/executor/CodexSandbox.js.map +1 -1
  58. package/dist/executor/IExecutor.d.ts +5 -0
  59. package/dist/executor/IExecutor.d.ts.map +1 -1
  60. package/dist/executor/KimiExecutor.d.ts +1 -0
  61. package/dist/executor/KimiExecutor.d.ts.map +1 -1
  62. package/dist/executor/KimiExecutor.js +1 -0
  63. package/dist/executor/KimiExecutor.js.map +1 -1
  64. package/dist/executor/OpenCodeExecutor.d.ts +1 -0
  65. package/dist/executor/OpenCodeExecutor.d.ts.map +1 -1
  66. package/dist/executor/OpenCodeExecutor.js +1 -0
  67. package/dist/executor/OpenCodeExecutor.js.map +1 -1
  68. package/dist/executor/PiExecutor.d.ts +7 -0
  69. package/dist/executor/PiExecutor.d.ts.map +1 -1
  70. package/dist/executor/PiExecutor.js +61 -12
  71. package/dist/executor/PiExecutor.js.map +1 -1
  72. package/dist/executor/ZCodeExecutor.d.ts +1 -0
  73. package/dist/executor/ZCodeExecutor.d.ts.map +1 -1
  74. package/dist/executor/ZCodeExecutor.js +1 -0
  75. package/dist/executor/ZCodeExecutor.js.map +1 -1
  76. package/dist/executor/acp/AcpClient.d.ts +11 -6
  77. package/dist/executor/acp/AcpClient.d.ts.map +1 -1
  78. package/dist/executor/acp/AcpClient.js +23 -7
  79. package/dist/executor/acp/AcpClient.js.map +1 -1
  80. package/dist/executor/acp/AcpTypes.d.ts +10 -0
  81. package/dist/executor/acp/AcpTypes.d.ts.map +1 -1
  82. package/dist/executor/agy/AgyDelegationConfig.d.ts +3 -0
  83. package/dist/executor/agy/AgyDelegationConfig.d.ts.map +1 -0
  84. package/dist/executor/agy/AgyDelegationConfig.js +105 -0
  85. package/dist/executor/agy/AgyDelegationConfig.js.map +1 -0
  86. package/dist/executor/index.d.ts +4 -1
  87. package/dist/executor/index.d.ts.map +1 -1
  88. package/dist/executor/index.js +10 -4
  89. package/dist/executor/index.js.map +1 -1
  90. package/dist/executor/pi/PiClient.d.ts +2 -0
  91. package/dist/executor/pi/PiClient.d.ts.map +1 -1
  92. package/dist/executor/pi/PiClient.js +43 -5
  93. package/dist/executor/pi/PiClient.js.map +1 -1
  94. package/dist/executor/pi/PiTypes.d.ts +3 -0
  95. package/dist/executor/pi/PiTypes.d.ts.map +1 -1
  96. package/dist/executor/pi/PiTypes.js +6 -0
  97. package/dist/executor/pi/PiTypes.js.map +1 -1
  98. package/dist/executor/zcode/ZCodeClient.d.ts +7 -3
  99. package/dist/executor/zcode/ZCodeClient.d.ts.map +1 -1
  100. package/dist/executor/zcode/ZCodeClient.js +13 -2
  101. package/dist/executor/zcode/ZCodeClient.js.map +1 -1
  102. package/dist/thread/ThreadExecutorPool.d.ts +7 -0
  103. package/dist/thread/ThreadExecutorPool.d.ts.map +1 -1
  104. package/dist/thread/ThreadExecutorPool.js +1 -0
  105. package/dist/thread/ThreadExecutorPool.js.map +1 -1
  106. package/dist/thread/ThreadManager.d.ts +1 -1
  107. package/dist/thread/ThreadManager.d.ts.map +1 -1
  108. package/dist/thread/ThreadManager.js.map +1 -1
  109. package/dist/thread/types.d.ts +4 -0
  110. package/dist/thread/types.d.ts.map +1 -1
  111. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DelegationBridge.js","sourceRoot":"","sources":["../../src/delegation/DelegationBridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { DirectoryGuard } from '../security/DirectoryGuard';
2
+ import type { BackendKey, ExecutorConfig } from '../types/config';
3
+ import type { Thread } from '../thread/types';
4
+ import type { IExecutor } from '../executor/IExecutor';
5
+ import type { ApprovalRequestInfo, ApprovalStatus, ToolUseInfo, ToolResultInfo } from '../types';
6
+ import { createExecutor } from '../executor';
7
+ import { BackendRegistry } from './BackendRegistry';
8
+ import { DelegationStore } from './DelegationStore';
9
+ import { type DelegationHandler } from './contract';
10
+ export declare const DELEGATION_LIMITS: {
11
+ readonly launches: 12;
12
+ readonly concurrent: 3;
13
+ readonly timeoutMs: number;
14
+ readonly resultBytes: number;
15
+ readonly streamBytes: number;
16
+ readonly calls: 500;
17
+ };
18
+ export declare function workspacesOverlap(first: string, second: string): boolean;
19
+ export interface DelegationParent {
20
+ thread: Thread;
21
+ messageId: string;
22
+ backend: BackendKey;
23
+ config: ExecutorConfig;
24
+ cwd: string;
25
+ onToolUse: (tool: ToolUseInfo) => void;
26
+ onToolResult: (result: ToolResultInfo) => void;
27
+ onNotice: (text: string) => void;
28
+ onApproval: (request: ApprovalRequestInfo, executor: IExecutor) => boolean;
29
+ onApprovalResolved: (id: string, status: ApprovalStatus) => void;
30
+ isWorkspaceBusy?: (canonicalPath: string) => boolean;
31
+ }
32
+ export interface DelegationScope {
33
+ invoke: DelegationHandler;
34
+ isClosed(): boolean;
35
+ close(): Promise<void>;
36
+ waitingExecutor(): IExecutor | undefined;
37
+ }
38
+ /** Owns children independently of the user-thread queue and primary executor pool. */
39
+ export declare class DelegationManager {
40
+ private readonly guard;
41
+ private readonly factory;
42
+ private readonly timeoutMs;
43
+ private readonly cleanupMs;
44
+ readonly registry: BackendRegistry;
45
+ readonly store: DelegationStore;
46
+ private running;
47
+ private workspaces;
48
+ private scopes;
49
+ constructor(guard: DirectoryGuard, factory?: typeof createExecutor, registry?: BackendRegistry, store?: DelegationStore, timeoutMs?: number, cleanupMs?: number);
50
+ begin(parent: DelegationParent): DelegationScope;
51
+ waitingExecutor(threadId: string): IExecutor | undefined;
52
+ blocksWorkspace(cwd: string, threadId: string): boolean;
53
+ cancelThread(threadId: string): Promise<void>;
54
+ destroy(): Promise<void>;
55
+ }
56
+ //# sourceMappingURL=DelegationManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DelegationManager.d.ts","sourceRoot":"","sources":["../../src/delegation/DelegationManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAA4B,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGjG,eAAO,MAAM,iBAAiB;;;;;;;CAC0C,CAAC;AAEzE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAMxE;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,UAAU,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,YAAY,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,KAAK,OAAO,CAAC;IAC3E,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IACjE,eAAe,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;CACtD;AAaD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,IAAI,OAAO,CAAC;IACpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,eAAe,IAAI,SAAS,GAAG,SAAS,CAAC;CAC1C;AAoBD,sFAAsF;AACtF,qBAAa,iBAAiB;IAOhB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAV5B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,MAAM,CAAsC;gBAEvB,KAAK,EAAE,cAAc,EAC/B,OAAO,GAAE,OAAO,cAA+B,EAChE,QAAQ,kBAAwB,EAAE,KAAK,kBAAwB,EAC9C,SAAS,SAA8B,EACvC,SAAS,SAAS;IAGrC,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe;IAqNhD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IACxD,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAKjD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAC/B"}
@@ -0,0 +1,346 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DelegationManager = exports.DELEGATION_LIMITS = void 0;
7
+ exports.workspacesOverlap = workspacesOverlap;
8
+ const crypto_1 = require("crypto");
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const ThreadExecutorPool_1 = require("../thread/ThreadExecutorPool");
12
+ const executor_1 = require("../executor");
13
+ const BackendRegistry_1 = require("./BackendRegistry");
14
+ const DelegationStore_1 = require("./DelegationStore");
15
+ const contract_1 = require("./contract");
16
+ const WorkerPolicy_1 = require("./WorkerPolicy");
17
+ exports.DELEGATION_LIMITS = { launches: 12, concurrent: 3, timeoutMs: 30 * 60_000,
18
+ resultBytes: 32 * 1024, streamBytes: 256 * 1024, calls: 500 };
19
+ function workspacesOverlap(first, second) {
20
+ const contains = (root, candidate) => {
21
+ const relative = path_1.default.relative(root, candidate);
22
+ return relative === '' || (relative !== '..' && !relative.startsWith(`..${path_1.default.sep}`) && !path_1.default.isAbsolute(relative));
23
+ };
24
+ return contains(first, second) || contains(second, first);
25
+ }
26
+ function bounded(text, limit) {
27
+ const buffer = Buffer.from(text);
28
+ if (buffer.length <= limit)
29
+ return { text, truncated: false };
30
+ const marker = '\n[Output truncated]';
31
+ let end = limit - Buffer.byteLength(marker);
32
+ while (end > 0 && (buffer[end] & 0xc0) === 0x80)
33
+ end--;
34
+ return { text: buffer.subarray(0, end).toString('utf8') + marker, truncated: true };
35
+ }
36
+ async function deadline(operation, milliseconds) {
37
+ let timer;
38
+ try {
39
+ return await Promise.race([Promise.resolve().then(operation), new Promise((_, reject) => {
40
+ timer = setTimeout(() => reject(new Error('Worker cleanup timed out')), milliseconds);
41
+ })]);
42
+ }
43
+ finally {
44
+ clearTimeout(timer);
45
+ }
46
+ }
47
+ /** Owns children independently of the user-thread queue and primary executor pool. */
48
+ class DelegationManager {
49
+ guard;
50
+ factory;
51
+ timeoutMs;
52
+ cleanupMs;
53
+ registry;
54
+ store;
55
+ running = 0;
56
+ workspaces = new Map();
57
+ scopes = new Map();
58
+ constructor(guard, factory = executor_1.createExecutor, registry = new BackendRegistry_1.BackendRegistry(), store = new DelegationStore_1.DelegationStore(), timeoutMs = exports.DELEGATION_LIMITS.timeoutMs, cleanupMs = 10_000) {
59
+ this.guard = guard;
60
+ this.factory = factory;
61
+ this.timeoutMs = timeoutMs;
62
+ this.cleanupMs = cleanupMs;
63
+ this.registry = registry;
64
+ this.store = store;
65
+ }
66
+ begin(parent) {
67
+ if (this.scopes.has(parent.thread.id))
68
+ throw new Error('This thread already owns a delegation turn');
69
+ const tasks = new Map();
70
+ const calls = new Map();
71
+ let closed = false;
72
+ let launches = 0;
73
+ let starting = false;
74
+ const cwd = fs_1.default.realpathSync(this.guard.resolveWorkingDirectory(parent.cwd));
75
+ this.guard.resolveWorkingDirectory(cwd);
76
+ const getTask = (value) => {
77
+ const task = typeof value === 'string' ? tasks.get(value) : undefined;
78
+ if (!task)
79
+ throw new Error('Task does not belong to this parent request');
80
+ return task;
81
+ };
82
+ const view = (task) => ({ taskId: task.record.id, backend: task.record.backend,
83
+ state: task.record.finishedAt ? task.record.state : 'running',
84
+ output: task.record.finishedAt ? task.record.output : undefined,
85
+ error: task.record.finishedAt ? task.record.error : undefined,
86
+ truncated: task.record.truncated ?? false });
87
+ const save = (task) => this.store.write(task.record).catch(error => {
88
+ console.warn('[Delegation] Could not persist task state:', error instanceof Error ? error.message : 'Storage failure');
89
+ });
90
+ const notify = (send) => {
91
+ try {
92
+ send();
93
+ }
94
+ catch {
95
+ console.warn('[Delegation] Progress could not be delivered');
96
+ }
97
+ };
98
+ const stop = (task) => task.stop ??= (async () => {
99
+ if (!task.executor)
100
+ return;
101
+ try {
102
+ try {
103
+ await deadline(() => task.executor.abort(), Math.min(2000, this.cleanupMs));
104
+ }
105
+ catch { /* Force cleanup still runs. */ }
106
+ await deadline(async () => { await task.executor.destroy(); await task.executor.waitForExit?.(); }, this.cleanupMs);
107
+ }
108
+ finally {
109
+ task.interrupt();
110
+ }
111
+ })();
112
+ const cancel = async (task) => {
113
+ if (task.record.state === 'running') {
114
+ task.record.state = 'cancelled';
115
+ task.record.error = 'Cancelled; edits already made were not undone.';
116
+ await stop(task).catch(() => undefined);
117
+ }
118
+ await task.done;
119
+ return view(task);
120
+ };
121
+ const run = async (task, configuration, objective) => {
122
+ const backend = task.record.backend;
123
+ let bytes = 0;
124
+ try {
125
+ if (task.record.state !== 'running')
126
+ return;
127
+ const childId = `delegate-${task.record.id}`;
128
+ task.executor = this.factory(this.guard, configuration, cwd, childId, (0, ThreadExecutorPool_1.resolveThreadModel)(parent.thread, configuration), parent.thread.efforts?.[backend], { lifecycleHooks: false, delegationWorker: true });
129
+ if (fs_1.default.realpathSync(task.executor.getCurrentWorkingDirectory()) !== cwd) {
130
+ throw new Error('Worker refused the delegated workspace; refusing a fallback directory');
131
+ }
132
+ // Native session IDs are distinct; policy was resolved against the real
133
+ // parent thread before passing the synthetic child identity to the factory.
134
+ task.timer = setTimeout(() => {
135
+ if (task.record.state !== 'running')
136
+ return;
137
+ task.record.state = 'timed_out';
138
+ task.record.error = 'Delegated task timed out';
139
+ void stop(task).catch(() => undefined);
140
+ }, this.timeoutMs);
141
+ const count = (text) => {
142
+ bytes += Buffer.byteLength(text);
143
+ if (bytes > exports.DELEGATION_LIMITS.streamBytes && task.record.state === 'running') {
144
+ task.record.state = 'failed';
145
+ task.record.error = 'Delegated output exceeded the capture limit';
146
+ void stop(task).catch(() => undefined);
147
+ }
148
+ };
149
+ const result = await Promise.race([task.interrupted, task.executor.execute(`You are executing one delegated task in an independent session. Complete only this objective and return a concise result with verification and remaining issues. Do not delegate to other agents.\n\n${objective}`, {
150
+ timeout: this.timeoutMs,
151
+ onStream: text => {
152
+ count(text);
153
+ queueMicrotask(() => {
154
+ if (!closed && task.record.state === 'running' && task.executor?.isWaitingInput?.()) {
155
+ notify(() => parent.onNotice(`\n[${backend} delegated task]\n${bounded(text, 4000).text}`));
156
+ }
157
+ });
158
+ },
159
+ onToolResult: result => count(result.content),
160
+ onApprovalRequest: request => !closed && task.record.state === 'running' && parent.onApproval({ ...request,
161
+ description: `[${backend} delegated task] ${request.description}`, canRemember: false }, task.executor),
162
+ onApprovalResolved: parent.onApprovalResolved,
163
+ })]);
164
+ if (task.record.state === 'running') {
165
+ const output = bounded(result.output ?? '', exports.DELEGATION_LIMITS.resultBytes);
166
+ task.record.state = result.success ? 'succeeded' : 'failed';
167
+ task.record.output = output.text;
168
+ task.record.truncated = output.truncated;
169
+ if (result.error)
170
+ task.record.error = bounded(result.error, 4000).text;
171
+ }
172
+ }
173
+ catch (error) {
174
+ if (task.record.state === 'running') {
175
+ task.record.state = 'failed';
176
+ task.record.error = bounded(error instanceof Error ? error.message : 'Worker failed', 4000).text;
177
+ }
178
+ this.registry.invalidate();
179
+ }
180
+ finally {
181
+ clearTimeout(task.timer);
182
+ let cleaned = false;
183
+ try {
184
+ if (task.stop)
185
+ await task.stop;
186
+ else if (task.executor)
187
+ await deadline(async () => { await task.executor.destroy(); await task.executor.waitForExit?.(); }, this.cleanupMs);
188
+ cleaned = true;
189
+ }
190
+ catch (error) {
191
+ task.record.state = 'interrupted';
192
+ task.record.error = 'Worker cleanup could not be confirmed. This workspace is blocked until the worker is stopped and the CLI restarts.';
193
+ console.warn('[Delegation] Worker cleanup failed:', error instanceof Error ? error.message : 'Cleanup failure');
194
+ }
195
+ if (cleaned) {
196
+ await task.executor?.deleteThreadData?.(`delegate-${task.record.id}`).catch(() => undefined);
197
+ this.running--;
198
+ this.workspaces.delete(cwd);
199
+ }
200
+ else
201
+ this.workspaces.set(cwd, `quarantined:${parent.thread.id}`);
202
+ task.record.finishedAt = Date.now();
203
+ await save(task);
204
+ await this.store.prune().catch(() => undefined);
205
+ notify(() => parent.onToolResult({ tool_use_id: task.record.id, content: JSON.stringify(view(task)), is_error: task.record.state !== 'succeeded' }));
206
+ notify(() => parent.onNotice(`\nDelegated ${backend} task ${task.record.state}.\n`));
207
+ task.settle();
208
+ }
209
+ };
210
+ const invoke = async (name, args, callId) => {
211
+ if (closed)
212
+ throw new Error('Delegation turn has ended');
213
+ if (!callId || callId.length > 200)
214
+ throw new Error('Invalid tool call ID');
215
+ const signature = JSON.stringify({ name, args });
216
+ const existing = calls.get(callId);
217
+ if (existing) {
218
+ if (existing.signature !== signature)
219
+ throw new Error('Tool call ID was reused with different arguments');
220
+ return existing.result;
221
+ }
222
+ if (calls.size >= exports.DELEGATION_LIMITS.calls)
223
+ throw new Error('Delegation tool-call limit reached');
224
+ const result = (async () => {
225
+ if (name === 'remote_cli_list_backends') {
226
+ const backends = await this.registry.list(parent.config);
227
+ return { backends: backends.map(item => {
228
+ try {
229
+ (0, WorkerPolicy_1.workerConfiguration)(parent.config, this.guard, parent.thread.id, parent.backend, item.backend, 'inherit');
230
+ return item;
231
+ }
232
+ catch (error) {
233
+ return { ...item, worker: false, reason: error.message };
234
+ }
235
+ }), workspace: cwd, maxConcurrentChildren: 1 };
236
+ }
237
+ if (name === 'remote_cli_result') {
238
+ const task = getTask(args.taskId);
239
+ const seconds = args.waitSeconds ?? 25;
240
+ if (typeof seconds !== 'number' || !Number.isFinite(seconds) || seconds < 0 || seconds > 25)
241
+ throw new Error('waitSeconds must be between 0 and 25');
242
+ if (!task.record.finishedAt && seconds > 0) {
243
+ let timer;
244
+ try {
245
+ await Promise.race([task.done, new Promise(resolve => { timer = setTimeout(resolve, seconds * 1000); })]);
246
+ }
247
+ finally {
248
+ clearTimeout(timer);
249
+ }
250
+ }
251
+ return view(task);
252
+ }
253
+ if (name === 'remote_cli_cancel')
254
+ return cancel(getTask(args.taskId));
255
+ if (name !== 'remote_cli_delegate')
256
+ throw new Error('Unknown delegation tool');
257
+ if (starting || [...tasks.values()].some(task => !task.record.finishedAt))
258
+ throw new Error('Wait for the current delegated task before starting another');
259
+ if (launches >= exports.DELEGATION_LIMITS.launches)
260
+ throw new Error('Delegated task limit reached');
261
+ if (!contract_1.DELEGATION_BACKENDS.includes(args.backend))
262
+ throw new Error('Unsupported worker backend');
263
+ if (typeof args.objective !== 'string' || !args.objective.trim() || args.objective.length > 24_000)
264
+ throw new Error('objective must contain 1 to 24000 characters');
265
+ const objective = args.objective;
266
+ const mode = args.mode ?? 'inherit';
267
+ if (mode !== 'inherit' && mode !== 'read_only')
268
+ throw new Error('Unsupported execution mode');
269
+ const backend = args.backend;
270
+ starting = true;
271
+ try {
272
+ const configuration = (0, WorkerPolicy_1.workerConfiguration)(parent.config, this.guard, parent.thread.id, parent.backend, backend, mode);
273
+ const available = await this.registry.get(backend, parent.config);
274
+ if (!available.installed)
275
+ throw new Error(`${backend}: ${available.reason}`);
276
+ await this.store.initialize();
277
+ if (closed)
278
+ throw new Error('Delegation turn has ended');
279
+ if (this.running >= exports.DELEGATION_LIMITS.concurrent
280
+ || [...this.workspaces.keys()].some(active => workspacesOverlap(active, cwd))
281
+ || parent.isWorkspaceBusy?.(cwd))
282
+ throw new Error('Delegation capacity or workspace is busy; wait before retrying');
283
+ launches++;
284
+ this.running++;
285
+ this.workspaces.set(cwd, parent.thread.id);
286
+ let settle;
287
+ let interrupt;
288
+ const interrupted = new Promise(resolve => { interrupt = () => resolve({ success: false }); });
289
+ const task = { record: { id: (0, crypto_1.randomUUID)(), threadId: parent.thread.id,
290
+ parentMessageId: parent.messageId, backend, objective: objective.slice(0, 1000),
291
+ state: 'running', startedAt: Date.now() }, done: new Promise(resolve => { settle = resolve; }), settle, interrupted, interrupt };
292
+ tasks.set(task.record.id, task);
293
+ try {
294
+ await this.store.write(task.record);
295
+ }
296
+ catch (error) {
297
+ tasks.delete(task.record.id);
298
+ this.running--;
299
+ this.workspaces.delete(cwd);
300
+ launches--;
301
+ task.settle();
302
+ throw error;
303
+ }
304
+ if (closed) {
305
+ task.record.state = 'cancelled';
306
+ }
307
+ notify(() => parent.onToolUse({ id: task.record.id, name: 'Task', input: {
308
+ description: `${backend}: ${objective.slice(0, 120)}`, prompt: objective.slice(0, 1000), subagent_type: backend,
309
+ } }));
310
+ void run(task, configuration, objective).catch(() => undefined);
311
+ return view(task);
312
+ }
313
+ finally {
314
+ starting = false;
315
+ }
316
+ })();
317
+ calls.set(callId, { signature, result });
318
+ return result;
319
+ };
320
+ const scope = {
321
+ invoke,
322
+ isClosed: () => closed,
323
+ waitingExecutor: () => [...tasks.values()].find(task => task.executor?.isWaitingInput?.())?.executor,
324
+ close: async () => {
325
+ closed = true;
326
+ await Promise.allSettled([...tasks.values()].map(cancel));
327
+ // A version probe may still be pending. Its closed check prevents launch.
328
+ if (this.scopes.get(parent.thread.id) === scope)
329
+ this.scopes.delete(parent.thread.id);
330
+ },
331
+ };
332
+ this.scopes.set(parent.thread.id, scope);
333
+ return scope;
334
+ }
335
+ waitingExecutor(threadId) { return this.scopes.get(threadId)?.waitingExecutor(); }
336
+ blocksWorkspace(cwd, threadId) {
337
+ if (this.workspaces.size === 0)
338
+ return false;
339
+ const canonical = fs_1.default.realpathSync(cwd);
340
+ return [...this.workspaces].some(([active, owner]) => owner !== threadId && workspacesOverlap(active, canonical));
341
+ }
342
+ async cancelThread(threadId) { await this.scopes.get(threadId)?.close(); }
343
+ async destroy() { await Promise.allSettled([...this.scopes.values()].map(scope => scope.close())); }
344
+ }
345
+ exports.DelegationManager = DelegationManager;
346
+ //# sourceMappingURL=DelegationManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DelegationManager.js","sourceRoot":"","sources":["../../src/delegation/DelegationManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export interface DelegatedTaskRecord {
2
+ id: string;
3
+ threadId: string;
4
+ parentMessageId: string;
5
+ backend: string;
6
+ objective: string;
7
+ state: 'running' | 'succeeded' | 'failed' | 'cancelled' | 'timed_out' | 'interrupted';
8
+ startedAt: number;
9
+ finishedAt?: number;
10
+ output?: string;
11
+ error?: string;
12
+ truncated?: boolean;
13
+ }
14
+ /** Small atomic records; backend transcripts remain owned by their native CLIs. */
15
+ export declare class DelegationStore {
16
+ private readonly directory;
17
+ private initialized?;
18
+ private writes;
19
+ private pruning;
20
+ constructor(directory?: string);
21
+ initialize(): Promise<void>;
22
+ private reconcile;
23
+ write(record: DelegatedTaskRecord): Promise<void>;
24
+ prune(): Promise<void>;
25
+ deleteThread(threadId: string): Promise<void>;
26
+ }
27
+ //# sourceMappingURL=DelegationStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DelegationStore.d.ts","sourceRoot":"","sources":["../../src/delegation/DelegationStore.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;IACtF,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,mFAAmF;AACnF,qBAAa,eAAe;IAId,OAAO,CAAC,QAAQ,CAAC,SAAS;IAHtC,OAAO,CAAC,WAAW,CAAC,CAAgB;IACpC,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,OAAO,CAAoC;gBACtB,SAAS,SAAuD;IAE7F,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAIb,SAAS;IAsBvB,KAAK,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBhB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUpD"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DelegationStore = void 0;
7
+ const promises_1 = __importDefault(require("fs/promises"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const os_1 = __importDefault(require("os"));
10
+ const crypto_1 = require("crypto");
11
+ /** Small atomic records; backend transcripts remain owned by their native CLIs. */
12
+ class DelegationStore {
13
+ directory;
14
+ initialized;
15
+ writes = new Map();
16
+ pruning = Promise.resolve();
17
+ constructor(directory = path_1.default.join(os_1.default.homedir(), '.remote-cli', 'delegation')) {
18
+ this.directory = directory;
19
+ }
20
+ initialize() {
21
+ return this.initialized ??= this.reconcile();
22
+ }
23
+ async reconcile() {
24
+ await promises_1.default.mkdir(this.directory, { recursive: true, mode: 0o700 });
25
+ const files = (await promises_1.default.readdir(this.directory)).filter(name => /^[a-f0-9-]+\.json$/.test(name));
26
+ const retained = [];
27
+ for (const name of files) {
28
+ try {
29
+ const file = path_1.default.join(this.directory, name);
30
+ const stat = await promises_1.default.stat(file);
31
+ if (stat.size > 128 * 1024) {
32
+ await promises_1.default.unlink(file);
33
+ continue;
34
+ }
35
+ const record = JSON.parse(await promises_1.default.readFile(file, 'utf8'));
36
+ if (Date.now() - record.startedAt > 7 * 86400_000) {
37
+ await promises_1.default.unlink(file);
38
+ continue;
39
+ }
40
+ if (record.state === 'running') {
41
+ await this.write({ ...record, state: 'interrupted', finishedAt: Date.now(),
42
+ error: 'The CLI stopped before confirming completion. Work was not automatically repeated.' });
43
+ }
44
+ retained.push({ name, time: record.startedAt });
45
+ }
46
+ catch { /* A corrupt record cannot resurrect work. */ }
47
+ }
48
+ retained.sort((a, b) => b.time - a.time);
49
+ await Promise.all(retained.slice(200).map(file => promises_1.default.unlink(path_1.default.join(this.directory, file.name)).catch(() => undefined)));
50
+ }
51
+ write(record) {
52
+ const snapshot = JSON.stringify(record);
53
+ if (!/^[a-f0-9-]+$/.test(record.id) || Buffer.byteLength(snapshot) > 128 * 1024) {
54
+ return Promise.reject(new Error('Invalid or oversized delegation record'));
55
+ }
56
+ const pending = (this.writes.get(record.id) ?? Promise.resolve()).catch(() => undefined).then(async () => {
57
+ await promises_1.default.mkdir(this.directory, { recursive: true, mode: 0o700 });
58
+ const file = path_1.default.join(this.directory, `${record.id}.json`);
59
+ const temporary = `${file}.${(0, crypto_1.randomUUID)()}.tmp`;
60
+ try {
61
+ await promises_1.default.writeFile(temporary, snapshot, { mode: 0o600 });
62
+ await promises_1.default.rename(temporary, file);
63
+ }
64
+ finally {
65
+ await promises_1.default.unlink(temporary).catch(() => undefined);
66
+ }
67
+ });
68
+ this.writes.set(record.id, pending);
69
+ void pending.finally(() => { if (this.writes.get(record.id) === pending)
70
+ this.writes.delete(record.id); }).catch(() => undefined);
71
+ return pending;
72
+ }
73
+ prune() {
74
+ this.pruning = this.pruning.catch(() => undefined).then(async () => {
75
+ const terminal = [];
76
+ for (const name of await promises_1.default.readdir(this.directory)) {
77
+ if (!/^[a-f0-9-]+\.json$/.test(name))
78
+ continue;
79
+ const file = path_1.default.join(this.directory, name);
80
+ try {
81
+ const record = JSON.parse(await promises_1.default.readFile(file, 'utf8'));
82
+ if (record.state !== 'running')
83
+ terminal.push({ file, time: record.startedAt });
84
+ }
85
+ catch { /* Ignore an in-flight replacement or unrelated corrupt record. */ }
86
+ }
87
+ terminal.sort((a, b) => b.time - a.time);
88
+ await Promise.all(terminal.filter((record, index) => index >= 200 || Date.now() - record.time > 7 * 86400_000)
89
+ .map(record => promises_1.default.unlink(record.file).catch(() => undefined)));
90
+ });
91
+ return this.pruning;
92
+ }
93
+ async deleteThread(threadId) {
94
+ try {
95
+ await promises_1.default.access(this.directory);
96
+ }
97
+ catch {
98
+ return;
99
+ }
100
+ await Promise.allSettled(this.writes.values());
101
+ for (const name of await promises_1.default.readdir(this.directory)) {
102
+ if (!/^[a-f0-9-]+\.json$/.test(name))
103
+ continue;
104
+ const file = path_1.default.join(this.directory, name);
105
+ try {
106
+ if (JSON.parse(await promises_1.default.readFile(file, 'utf8')).threadId === threadId)
107
+ await promises_1.default.unlink(file);
108
+ }
109
+ catch { /* Ignore unrelated or corrupt records. */ }
110
+ }
111
+ }
112
+ }
113
+ exports.DelegationStore = DelegationStore;
114
+ //# sourceMappingURL=DelegationStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DelegationStore.js","sourceRoot":"","sources":["../../src/delegation/DelegationStore.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA6B;AAC7B,gDAAwB;AACxB,4CAAoB;AACpB,mCAAoC;AAgBpC,mFAAmF;AACnF,MAAa,eAAe;IAIG;IAHrB,WAAW,CAAiB;IAC5B,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC1C,OAAO,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IACnD,YAA6B,YAAY,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,YAAY,CAAC;QAAhE,cAAS,GAAT,SAAS,CAAuD;IAAG,CAAC;IAEjG,UAAU;QACR,OAAO,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/C,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,MAAM,kBAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,CAAC,MAAM,kBAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjG,MAAM,QAAQ,GAA0C,EAAE,CAAC;QAC3D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC7C,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;oBAAC,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAChE,MAAM,MAAM,GAAwB,IAAI,CAAC,KAAK,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChF,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,EAAE,CAAC;oBAAC,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACvF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;wBACxE,KAAK,EAAE,oFAAoF,EAAE,CAAC,CAAC;gBACnG,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;QAC3D,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAE,CAAC,MAAM,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7H,CAAC;IAED,KAAK,CAAC,MAA2B;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;YAChF,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACvG,MAAM,kBAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACjE,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5D,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,IAAA,mBAAU,GAAE,MAAM,CAAC;YAChD,IAAI,CAAC;gBAAC,MAAM,kBAAE,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAAC,MAAM,kBAAE,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAAC,CAAC;oBAC3F,CAAC;gBAAC,MAAM,kBAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACpC,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,OAAO;YAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAClI,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACjE,MAAM,QAAQ,GAA0C,EAAE,CAAC;YAC3D,KAAK,MAAM,IAAI,IAAI,MAAM,kBAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAC/C,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC7C,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAwB,CAAC;oBAClF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;wBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;gBAClF,CAAC;gBAAC,MAAM,CAAC,CAAC,kEAAkE,CAAC,CAAC;YAChF,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC;iBAC3G,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,kBAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,IAAI,CAAC;YAAC,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC;QAC1D,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,MAAM,kBAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC/C,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC;gBAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ;oBAAE,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YACrG,MAAM,CAAC,CAAC,0CAA0C,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF;AA7ED,0CA6EC"}
@@ -0,0 +1,6 @@
1
+ import type { ExecutorConfig, BackendKey } from '../types/config';
2
+ import type { DirectoryGuard } from '../security/DirectoryGuard';
3
+ import type { DelegationBackend } from './contract';
4
+ /** Resolve saved authorization using the real thread before creating a child session ID. */
5
+ export declare function workerConfiguration(config: ExecutorConfig, guard: DirectoryGuard, threadId: string, parent: BackendKey, target: DelegationBackend, mode: 'inherit' | 'read_only'): ExecutorConfig;
6
+ //# sourceMappingURL=WorkerPolicy.d.ts.map
@@ -0,0 +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,4FAA4F;AAC5F,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"}