@yu_robotics/remote-cli 1.6.102 → 1.6.105
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/dist/client/MessageHandler.d.ts +3 -0
- package/dist/client/MessageHandler.d.ts.map +1 -1
- package/dist/client/MessageHandler.js +101 -17
- package/dist/client/MessageHandler.js.map +1 -1
- package/dist/client/WebSocketClient.js +1 -1
- package/dist/client/WebSocketClient.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +1 -0
- package/dist/commands/start.js.map +1 -1
- package/dist/delegation/DelegatedWorkerLaneCleanup.d.ts +11 -0
- package/dist/delegation/DelegatedWorkerLaneCleanup.d.ts.map +1 -0
- package/dist/delegation/DelegatedWorkerLaneCleanup.js +91 -0
- package/dist/delegation/DelegatedWorkerLaneCleanup.js.map +1 -0
- package/dist/delegation/DelegatedWorkerSessionStore.d.ts +62 -0
- package/dist/delegation/DelegatedWorkerSessionStore.d.ts.map +1 -0
- package/dist/delegation/DelegatedWorkerSessionStore.js +276 -0
- package/dist/delegation/DelegatedWorkerSessionStore.js.map +1 -0
- package/dist/delegation/DelegationManager.d.ts +23 -3
- package/dist/delegation/DelegationManager.d.ts.map +1 -1
- package/dist/delegation/DelegationManager.js +259 -29
- package/dist/delegation/DelegationManager.js.map +1 -1
- package/dist/delegation/DelegationStatusFormatter.js +2 -2
- package/dist/delegation/DelegationStatusFormatter.js.map +1 -1
- package/dist/delegation/contract.d.ts +2 -2
- package/dist/delegation/contract.d.ts.map +1 -1
- package/dist/delegation/contract.js +2 -2
- package/dist/delegation/contract.js.map +1 -1
- package/dist/executor/ClaudePersistentExecutor.d.ts +7 -1
- package/dist/executor/ClaudePersistentExecutor.d.ts.map +1 -1
- package/dist/executor/ClaudePersistentExecutor.js +27 -1
- package/dist/executor/ClaudePersistentExecutor.js.map +1 -1
- package/dist/executor/CodexAppServerClient.d.ts +2 -0
- package/dist/executor/CodexAppServerClient.d.ts.map +1 -1
- package/dist/executor/CodexAppServerClient.js +63 -9
- package/dist/executor/CodexAppServerClient.js.map +1 -1
- package/dist/executor/CodexAppServerExecutor.d.ts +5 -0
- package/dist/executor/CodexAppServerExecutor.d.ts.map +1 -1
- package/dist/executor/CodexAppServerExecutor.js +23 -0
- package/dist/executor/CodexAppServerExecutor.js.map +1 -1
- package/dist/executor/IExecutor.d.ts +6 -0
- package/dist/executor/IExecutor.d.ts.map +1 -1
- package/dist/executor/PiExecutor.d.ts +6 -0
- package/dist/executor/PiExecutor.d.ts.map +1 -1
- package/dist/executor/PiExecutor.js +14 -0
- package/dist/executor/PiExecutor.js.map +1 -1
- package/dist/executor/index.js +3 -3
- package/dist/executor/index.js.map +1 -1
- package/dist/executor/pi/PiClient.d.ts +1 -0
- package/dist/executor/pi/PiClient.d.ts.map +1 -1
- package/dist/executor/pi/PiClient.js +9 -0
- package/dist/executor/pi/PiClient.js.map +1 -1
- package/dist/executor/pi/PiTypes.d.ts +2 -0
- package/dist/executor/pi/PiTypes.d.ts.map +1 -1
- package/dist/executor/pi/PiTypes.js.map +1 -1
- package/dist/thread/ThreadExecutorPool.d.ts.map +1 -1
- package/dist/thread/ThreadExecutorPool.js +10 -1
- package/dist/thread/ThreadExecutorPool.js.map +1 -1
- package/dist/thread/ThreadManager.d.ts +1 -1
- package/dist/thread/ThreadManager.d.ts.map +1 -1
- package/dist/thread/ThreadManager.js +2 -0
- package/dist/thread/ThreadManager.js.map +1 -1
- package/dist/thread/types.d.ts +6 -0
- package/dist/thread/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +17 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,91 @@
|
|
|
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.cleanupDelegatedWorkerLane = cleanupDelegatedWorkerLane;
|
|
7
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
8
|
+
const os_1 = __importDefault(require("os"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const DelegatedWorkerSessionStore_1 = require("./DelegatedWorkerSessionStore");
|
|
11
|
+
async function unlinkFile(file) {
|
|
12
|
+
try {
|
|
13
|
+
const stat = await promises_1.default.lstat(file);
|
|
14
|
+
if (!stat.isFile() && !stat.isSymbolicLink())
|
|
15
|
+
throw new Error(`Expected a file at ${file}`);
|
|
16
|
+
await promises_1.default.unlink(file);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
if (error.code !== 'ENOENT')
|
|
20
|
+
throw error;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function isInside(candidate, root) {
|
|
24
|
+
const relative = path_1.default.relative(root, candidate);
|
|
25
|
+
return relative !== '' && !relative.startsWith(`..${path_1.default.sep}`) && relative !== '..' && !path_1.default.isAbsolute(relative);
|
|
26
|
+
}
|
|
27
|
+
async function cleanupAtHome(lane, home) {
|
|
28
|
+
const root = path_1.default.join(home, '.remote-cli');
|
|
29
|
+
const id = lane.executorThreadId;
|
|
30
|
+
const pointer = (namespace) => path_1.default.join(root, `${namespace}-sessions`, `${id}.json`);
|
|
31
|
+
switch (lane.backend) {
|
|
32
|
+
case 'claude':
|
|
33
|
+
await Promise.all([
|
|
34
|
+
unlinkFile(pointer('claude')),
|
|
35
|
+
unlinkFile(path_1.default.join(root, 'claude-sandbox', `${id}.json`)),
|
|
36
|
+
unlinkFile(path_1.default.join(root, 'claude-approval', `${encodeURIComponent(id)}.sock`)),
|
|
37
|
+
]);
|
|
38
|
+
return;
|
|
39
|
+
case 'codex':
|
|
40
|
+
await Promise.all([
|
|
41
|
+
unlinkFile(pointer('codex')),
|
|
42
|
+
unlinkFile(path_1.default.join(root, 'codex-sandbox', `${id}.json`)),
|
|
43
|
+
]);
|
|
44
|
+
return;
|
|
45
|
+
case 'agy':
|
|
46
|
+
await unlinkFile(pointer('agy'));
|
|
47
|
+
await promises_1.default.rm(path_1.default.join(root, 'agy-homes', id), { recursive: true, force: true });
|
|
48
|
+
return;
|
|
49
|
+
case 'opencode':
|
|
50
|
+
case 'kimi':
|
|
51
|
+
case 'zcode':
|
|
52
|
+
await unlinkFile(pointer(lane.backend));
|
|
53
|
+
return;
|
|
54
|
+
case 'pi': {
|
|
55
|
+
const pointerPath = pointer('pi');
|
|
56
|
+
let sessionFile;
|
|
57
|
+
try {
|
|
58
|
+
const parsed = JSON.parse(await promises_1.default.readFile(pointerPath, 'utf8'));
|
|
59
|
+
if (typeof parsed.sessionFile === 'string')
|
|
60
|
+
sessionFile = parsed.sessionFile;
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
if (error.code !== 'ENOENT')
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
await unlinkFile(pointerPath);
|
|
67
|
+
if (!sessionFile)
|
|
68
|
+
return;
|
|
69
|
+
const store = path_1.default.join(root, 'pi-sessions', 'store');
|
|
70
|
+
const resolved = path_1.default.resolve(sessionFile);
|
|
71
|
+
if (isInside(resolved, store))
|
|
72
|
+
await unlinkFile(resolved);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Removes only local state belonging to a synthetic lane ID. It never starts a
|
|
79
|
+
* backend process and deliberately leaves provider-managed remote history alone.
|
|
80
|
+
*
|
|
81
|
+
* Backends historically use both `process.env.HOME` and `os.homedir()`. When
|
|
82
|
+
* they disagree, clear the lane from both locations; the synthetic ID prevents
|
|
83
|
+
* this from touching a direct user thread in either root.
|
|
84
|
+
*/
|
|
85
|
+
async function cleanupDelegatedWorkerLane(lane, home) {
|
|
86
|
+
if (!(0, DelegatedWorkerSessionStore_1.isWorkerLaneExecutorId)(lane.executorThreadId))
|
|
87
|
+
throw new Error('Invalid delegated worker executor ID');
|
|
88
|
+
const homes = home ? [home] : [...new Set([process.env.HOME, os_1.default.homedir()].filter((value) => Boolean(value)))];
|
|
89
|
+
await Promise.all(homes.map(candidate => cleanupAtHome(lane, candidate)));
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=DelegatedWorkerLaneCleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DelegatedWorkerLaneCleanup.js","sourceRoot":"","sources":["../../src/delegation/DelegatedWorkerLaneCleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type DelegationBackend } from './contract';
|
|
2
|
+
/** A persisted, isolated worker conversation owned by delegation rather than a direct thread. */
|
|
3
|
+
export type DelegatedWorkerLaneState = 'preparing' | 'running' | 'ready' | 'dirty';
|
|
4
|
+
export interface DelegatedWorkerLane {
|
|
5
|
+
id: string;
|
|
6
|
+
executorThreadId: string;
|
|
7
|
+
threadId: string;
|
|
8
|
+
backend: DelegationBackend;
|
|
9
|
+
workingDirectory: string;
|
|
10
|
+
workspaceGeneration: number;
|
|
11
|
+
state: DelegatedWorkerLaneState;
|
|
12
|
+
createdAt: number;
|
|
13
|
+
updatedAt: number;
|
|
14
|
+
cleanupPending?: boolean;
|
|
15
|
+
cleanupAttempts?: number;
|
|
16
|
+
cleanupError?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface DelegatedWorkerLaneIdentity {
|
|
19
|
+
threadId: string;
|
|
20
|
+
backend: DelegationBackend;
|
|
21
|
+
workingDirectory: string;
|
|
22
|
+
workspaceGeneration: number;
|
|
23
|
+
}
|
|
24
|
+
export interface DelegatedWorkerLaneAcquireResult {
|
|
25
|
+
lane: DelegatedWorkerLane;
|
|
26
|
+
reused: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Synthetic IDs never overlap with a user-facing thread UUID. Every backend
|
|
30
|
+
* stores its native pointer under this ID, keeping delegated work isolated.
|
|
31
|
+
*/
|
|
32
|
+
export declare function workerLaneExecutorId(laneId: string): string;
|
|
33
|
+
export declare function isWorkerLaneExecutorId(value: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Durable lane metadata. Native backend transcripts remain owned by each
|
|
36
|
+
* backend; this store only decides whether a native pointer is safe to reuse.
|
|
37
|
+
*/
|
|
38
|
+
export declare class DelegatedWorkerSessionStore {
|
|
39
|
+
private readonly directory;
|
|
40
|
+
private initialized?;
|
|
41
|
+
private readonly lanes;
|
|
42
|
+
private writes;
|
|
43
|
+
constructor(directory?: string);
|
|
44
|
+
initialize(): Promise<void>;
|
|
45
|
+
acquire(identity: DelegatedWorkerLaneIdentity): Promise<DelegatedWorkerLaneAcquireResult>;
|
|
46
|
+
markRunning(id: string): Promise<DelegatedWorkerLane>;
|
|
47
|
+
markReady(id: string): Promise<DelegatedWorkerLane>;
|
|
48
|
+
markDirty(id: string, error: string, cleanupPending?: boolean): Promise<DelegatedWorkerLane | undefined>;
|
|
49
|
+
markCleanupFailure(id: string, error: string): Promise<void>;
|
|
50
|
+
lanesForThread(threadId: string, backend?: DelegationBackend): Promise<DelegatedWorkerLane[]>;
|
|
51
|
+
cleanupCandidates(): Promise<DelegatedWorkerLane[]>;
|
|
52
|
+
invalidateGeneration(threadId: string, currentGeneration: number): Promise<DelegatedWorkerLane[]>;
|
|
53
|
+
markForReset(threadId: string, backend?: DelegationBackend): Promise<DelegatedWorkerLane[]>;
|
|
54
|
+
remove(id: string): Promise<void>;
|
|
55
|
+
private transition;
|
|
56
|
+
private load;
|
|
57
|
+
private assertIdentity;
|
|
58
|
+
private mutate;
|
|
59
|
+
private writeAndRemember;
|
|
60
|
+
private writeRecord;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=DelegatedWorkerSessionStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DelegatedWorkerSessionStore.d.ts","sourceRoot":"","sources":["../../src/delegation/DelegatedWorkerSessionStore.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKzE,iGAAiG;AACjG,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnF,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,wBAAwB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,mBAAmB,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE7D;AA4CD;;;GAGG;AACH,qBAAa,2BAA2B;IAK1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJtC,OAAO,CAAC,WAAW,CAAC,CAAgB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAChE,OAAO,CAAC,MAAM,CAAoC;gBAErB,SAAS,SAA+D;IAErG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,OAAO,CAAC,QAAQ,EAAE,2BAA2B,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAoCzF,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIrD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAInD,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,UAAQ,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAYtG,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAO7F,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAKnD,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAejG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAe3F,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YASzB,UAAU;YAaV,IAAI;IA2BlB,OAAO,CAAC,cAAc;YASR,MAAM;YAMN,gBAAgB;YAKhB,WAAW;CAY1B"}
|
|
@@ -0,0 +1,276 @@
|
|
|
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.DelegatedWorkerSessionStore = void 0;
|
|
7
|
+
exports.workerLaneExecutorId = workerLaneExecutorId;
|
|
8
|
+
exports.isWorkerLaneExecutorId = isWorkerLaneExecutorId;
|
|
9
|
+
const crypto_1 = require("crypto");
|
|
10
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
11
|
+
const os_1 = __importDefault(require("os"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const contract_1 = require("./contract");
|
|
14
|
+
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
15
|
+
const STATES = new Set(['preparing', 'running', 'ready', 'dirty']);
|
|
16
|
+
/**
|
|
17
|
+
* Synthetic IDs never overlap with a user-facing thread UUID. Every backend
|
|
18
|
+
* stores its native pointer under this ID, keeping delegated work isolated.
|
|
19
|
+
*/
|
|
20
|
+
function workerLaneExecutorId(laneId) {
|
|
21
|
+
if (!UUID_RE.test(laneId))
|
|
22
|
+
throw new Error('Invalid delegated worker lane ID');
|
|
23
|
+
return `delegate-lane-${laneId}`;
|
|
24
|
+
}
|
|
25
|
+
function isWorkerLaneExecutorId(value) {
|
|
26
|
+
return /^delegate-lane-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value);
|
|
27
|
+
}
|
|
28
|
+
function validTime(value) {
|
|
29
|
+
return typeof value === 'number' && Number.isFinite(value) && value >= 0;
|
|
30
|
+
}
|
|
31
|
+
function validGeneration(value) {
|
|
32
|
+
return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;
|
|
33
|
+
}
|
|
34
|
+
function clone(lane) {
|
|
35
|
+
return { ...lane };
|
|
36
|
+
}
|
|
37
|
+
function sameIdentity(lane, identity) {
|
|
38
|
+
return lane.threadId === identity.threadId
|
|
39
|
+
&& lane.backend === identity.backend
|
|
40
|
+
&& lane.workingDirectory === identity.workingDirectory
|
|
41
|
+
&& lane.workspaceGeneration === identity.workspaceGeneration;
|
|
42
|
+
}
|
|
43
|
+
function validateLane(value) {
|
|
44
|
+
if (!value || typeof value !== 'object')
|
|
45
|
+
return false;
|
|
46
|
+
const lane = value;
|
|
47
|
+
return typeof lane.id === 'string'
|
|
48
|
+
&& UUID_RE.test(lane.id)
|
|
49
|
+
&& lane.executorThreadId === workerLaneExecutorId(lane.id)
|
|
50
|
+
&& typeof lane.threadId === 'string'
|
|
51
|
+
&& lane.threadId.length > 0
|
|
52
|
+
&& lane.threadId.length <= 200
|
|
53
|
+
&& typeof lane.backend === 'string'
|
|
54
|
+
&& contract_1.DELEGATION_BACKENDS.includes(lane.backend)
|
|
55
|
+
&& typeof lane.workingDirectory === 'string'
|
|
56
|
+
&& path_1.default.isAbsolute(lane.workingDirectory)
|
|
57
|
+
&& validGeneration(lane.workspaceGeneration)
|
|
58
|
+
&& typeof lane.state === 'string'
|
|
59
|
+
&& STATES.has(lane.state)
|
|
60
|
+
&& validTime(lane.createdAt)
|
|
61
|
+
&& validTime(lane.updatedAt)
|
|
62
|
+
&& (lane.cleanupPending === undefined || typeof lane.cleanupPending === 'boolean')
|
|
63
|
+
&& (lane.cleanupAttempts === undefined || validGeneration(lane.cleanupAttempts))
|
|
64
|
+
&& (lane.cleanupError === undefined || typeof lane.cleanupError === 'string');
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Durable lane metadata. Native backend transcripts remain owned by each
|
|
68
|
+
* backend; this store only decides whether a native pointer is safe to reuse.
|
|
69
|
+
*/
|
|
70
|
+
class DelegatedWorkerSessionStore {
|
|
71
|
+
directory;
|
|
72
|
+
initialized;
|
|
73
|
+
lanes = new Map();
|
|
74
|
+
writes = Promise.resolve();
|
|
75
|
+
constructor(directory = path_1.default.join(os_1.default.homedir(), '.remote-cli', 'delegation-workers')) {
|
|
76
|
+
this.directory = directory;
|
|
77
|
+
}
|
|
78
|
+
initialize() {
|
|
79
|
+
return this.initialized ??= this.load();
|
|
80
|
+
}
|
|
81
|
+
async acquire(identity) {
|
|
82
|
+
this.assertIdentity(identity);
|
|
83
|
+
await this.initialize();
|
|
84
|
+
return this.mutate(async () => {
|
|
85
|
+
const ready = [...this.lanes.values()]
|
|
86
|
+
.filter(lane => lane.state === 'ready' && sameIdentity(lane, identity))
|
|
87
|
+
.sort((a, b) => b.updatedAt - a.updatedAt);
|
|
88
|
+
// A healthy execution path serializes acquisitions, so duplicate ready
|
|
89
|
+
// records indicate an interrupted or manually-corrupted history. Keep no
|
|
90
|
+
// ambiguous candidate resumable.
|
|
91
|
+
if (ready.length > 1) {
|
|
92
|
+
for (const duplicate of ready)
|
|
93
|
+
await this.writeAndRemember({ ...duplicate,
|
|
94
|
+
state: 'dirty', cleanupPending: true, updatedAt: Date.now(),
|
|
95
|
+
cleanupError: 'Multiple delegated worker lanes matched one identity.' });
|
|
96
|
+
}
|
|
97
|
+
else if (ready.length === 1) {
|
|
98
|
+
const lane = { ...ready[0], state: 'preparing', updatedAt: Date.now() };
|
|
99
|
+
await this.writeAndRemember(lane);
|
|
100
|
+
return { lane: clone(lane), reused: true };
|
|
101
|
+
}
|
|
102
|
+
const now = Date.now();
|
|
103
|
+
const id = (0, crypto_1.randomUUID)();
|
|
104
|
+
const lane = {
|
|
105
|
+
id,
|
|
106
|
+
executorThreadId: workerLaneExecutorId(id),
|
|
107
|
+
...identity,
|
|
108
|
+
state: 'preparing',
|
|
109
|
+
createdAt: now,
|
|
110
|
+
updatedAt: now,
|
|
111
|
+
};
|
|
112
|
+
await this.writeAndRemember(lane);
|
|
113
|
+
return { lane: clone(lane), reused: false };
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
async markRunning(id) {
|
|
117
|
+
return this.transition(id, 'running');
|
|
118
|
+
}
|
|
119
|
+
async markReady(id) {
|
|
120
|
+
return this.transition(id, 'ready', { cleanupPending: false, cleanupError: undefined });
|
|
121
|
+
}
|
|
122
|
+
async markDirty(id, error, cleanupPending = false) {
|
|
123
|
+
await this.initialize();
|
|
124
|
+
return this.mutate(async () => {
|
|
125
|
+
const lane = this.lanes.get(id);
|
|
126
|
+
if (!lane)
|
|
127
|
+
return undefined;
|
|
128
|
+
const next = { ...lane, state: 'dirty', cleanupPending,
|
|
129
|
+
cleanupError: error.slice(0, 4_000), updatedAt: Date.now() };
|
|
130
|
+
await this.writeAndRemember(next);
|
|
131
|
+
return clone(next);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
async markCleanupFailure(id, error) {
|
|
135
|
+
await this.initialize();
|
|
136
|
+
await this.mutate(async () => {
|
|
137
|
+
const lane = this.lanes.get(id);
|
|
138
|
+
if (!lane)
|
|
139
|
+
return;
|
|
140
|
+
await this.writeAndRemember({ ...lane, state: 'dirty', cleanupPending: true,
|
|
141
|
+
cleanupAttempts: (lane.cleanupAttempts ?? 0) + 1, cleanupError: error.slice(0, 4_000), updatedAt: Date.now() });
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
async lanesForThread(threadId, backend) {
|
|
145
|
+
await this.initialize();
|
|
146
|
+
return [...this.lanes.values()]
|
|
147
|
+
.filter(lane => lane.threadId === threadId && (!backend || lane.backend === backend))
|
|
148
|
+
.map(clone);
|
|
149
|
+
}
|
|
150
|
+
async cleanupCandidates() {
|
|
151
|
+
await this.initialize();
|
|
152
|
+
return [...this.lanes.values()].filter(lane => lane.state === 'dirty' && lane.cleanupPending).map(clone);
|
|
153
|
+
}
|
|
154
|
+
async invalidateGeneration(threadId, currentGeneration) {
|
|
155
|
+
await this.initialize();
|
|
156
|
+
return this.mutate(async () => {
|
|
157
|
+
const changed = [];
|
|
158
|
+
for (const lane of this.lanes.values()) {
|
|
159
|
+
if (lane.threadId !== threadId || lane.workspaceGeneration >= currentGeneration)
|
|
160
|
+
continue;
|
|
161
|
+
const next = { ...lane, state: 'dirty', cleanupPending: true,
|
|
162
|
+
cleanupError: 'Working directory changed; delegated worker context was invalidated.', updatedAt: Date.now() };
|
|
163
|
+
await this.writeAndRemember(next);
|
|
164
|
+
changed.push(clone(next));
|
|
165
|
+
}
|
|
166
|
+
return changed;
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
async markForReset(threadId, backend) {
|
|
170
|
+
await this.initialize();
|
|
171
|
+
return this.mutate(async () => {
|
|
172
|
+
const changed = [];
|
|
173
|
+
for (const lane of this.lanes.values()) {
|
|
174
|
+
if (lane.threadId !== threadId || (backend && lane.backend !== backend))
|
|
175
|
+
continue;
|
|
176
|
+
const next = { ...lane, state: 'dirty', cleanupPending: true,
|
|
177
|
+
cleanupError: 'Delegated worker context was reset.', updatedAt: Date.now() };
|
|
178
|
+
await this.writeAndRemember(next);
|
|
179
|
+
changed.push(clone(next));
|
|
180
|
+
}
|
|
181
|
+
return changed;
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
async remove(id) {
|
|
185
|
+
if (!UUID_RE.test(id))
|
|
186
|
+
throw new Error('Invalid delegated worker lane ID');
|
|
187
|
+
await this.initialize();
|
|
188
|
+
await this.mutate(async () => {
|
|
189
|
+
this.lanes.delete(id);
|
|
190
|
+
await promises_1.default.rm(path_1.default.join(this.directory, `${id}.json`), { force: true });
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
async transition(id, state, extra = {}) {
|
|
194
|
+
if (!UUID_RE.test(id))
|
|
195
|
+
throw new Error('Invalid delegated worker lane ID');
|
|
196
|
+
await this.initialize();
|
|
197
|
+
return this.mutate(async () => {
|
|
198
|
+
const lane = this.lanes.get(id);
|
|
199
|
+
if (!lane)
|
|
200
|
+
throw new Error('Delegated worker lane not found');
|
|
201
|
+
const next = { ...lane, ...extra, state, updatedAt: Date.now() };
|
|
202
|
+
await this.writeAndRemember(next);
|
|
203
|
+
return clone(next);
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
async load() {
|
|
207
|
+
await promises_1.default.mkdir(this.directory, { recursive: true, mode: 0o700 });
|
|
208
|
+
let names = [];
|
|
209
|
+
try {
|
|
210
|
+
names = await promises_1.default.readdir(this.directory);
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
for (const name of names) {
|
|
216
|
+
if (!UUID_RE.test(name.replace(/\.json$/, '')) || !name.endsWith('.json'))
|
|
217
|
+
continue;
|
|
218
|
+
const file = path_1.default.join(this.directory, name);
|
|
219
|
+
try {
|
|
220
|
+
const stat = await promises_1.default.stat(file);
|
|
221
|
+
if (stat.size > 64 * 1024)
|
|
222
|
+
continue;
|
|
223
|
+
const parsed = JSON.parse(await promises_1.default.readFile(file, 'utf8'));
|
|
224
|
+
if (!validateLane(parsed))
|
|
225
|
+
continue;
|
|
226
|
+
const lane = parsed;
|
|
227
|
+
// A process may have died between any write and terminal confirmation.
|
|
228
|
+
// Only a ready lane is resumable after a CLI restart.
|
|
229
|
+
if (lane.state !== 'ready') {
|
|
230
|
+
const dirty = { ...lane, state: 'dirty', cleanupPending: lane.cleanupPending === true,
|
|
231
|
+
cleanupError: lane.cleanupError ?? 'The CLI stopped before worker cleanup was confirmed.', updatedAt: Date.now() };
|
|
232
|
+
await this.writeRecord(dirty);
|
|
233
|
+
this.lanes.set(dirty.id, dirty);
|
|
234
|
+
}
|
|
235
|
+
else
|
|
236
|
+
this.lanes.set(lane.id, lane);
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
// A corrupt lane cannot become resumable.
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
assertIdentity(identity) {
|
|
244
|
+
if (!identity.threadId || identity.threadId.length > 200
|
|
245
|
+
|| !contract_1.DELEGATION_BACKENDS.includes(identity.backend)
|
|
246
|
+
|| !path_1.default.isAbsolute(identity.workingDirectory)
|
|
247
|
+
|| !validGeneration(identity.workspaceGeneration)) {
|
|
248
|
+
throw new Error('Invalid delegated worker lane identity');
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
async mutate(operation) {
|
|
252
|
+
const next = this.writes.catch(() => undefined).then(operation);
|
|
253
|
+
this.writes = next.then(() => undefined, () => undefined);
|
|
254
|
+
return next;
|
|
255
|
+
}
|
|
256
|
+
async writeAndRemember(lane) {
|
|
257
|
+
await this.writeRecord(lane);
|
|
258
|
+
this.lanes.set(lane.id, lane);
|
|
259
|
+
}
|
|
260
|
+
async writeRecord(lane) {
|
|
261
|
+
if (!validateLane(lane))
|
|
262
|
+
throw new Error('Invalid delegated worker lane record');
|
|
263
|
+
await promises_1.default.mkdir(this.directory, { recursive: true, mode: 0o700 });
|
|
264
|
+
const file = path_1.default.join(this.directory, `${lane.id}.json`);
|
|
265
|
+
const temporary = `${file}.${(0, crypto_1.randomUUID)()}.tmp`;
|
|
266
|
+
try {
|
|
267
|
+
await promises_1.default.writeFile(temporary, JSON.stringify(lane), { mode: 0o600 });
|
|
268
|
+
await promises_1.default.rename(temporary, file);
|
|
269
|
+
}
|
|
270
|
+
finally {
|
|
271
|
+
await promises_1.default.rm(temporary, { force: true }).catch(() => undefined);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
exports.DelegatedWorkerSessionStore = DelegatedWorkerSessionStore;
|
|
276
|
+
//# sourceMappingURL=DelegatedWorkerSessionStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DelegatedWorkerSessionStore.js","sourceRoot":"","sources":["../../src/delegation/DelegatedWorkerSessionStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,12 @@ import type { DirectoryGuard } from '../security/DirectoryGuard';
|
|
|
2
2
|
import type { BackendKey, ExecutorConfig } from '../types/config';
|
|
3
3
|
import type { Thread } from '../thread/types';
|
|
4
4
|
import type { IExecutor } from '../executor/IExecutor';
|
|
5
|
-
import type { ApprovalRequestInfo, ApprovalStatus, ToolUseInfo, ToolResultInfo } from '../types';
|
|
5
|
+
import type { ApprovalRequestInfo, ApprovalStatus, DelegationProgressInfo, ToolUseInfo, ToolResultInfo } from '../types';
|
|
6
6
|
import { createExecutor } from '../executor';
|
|
7
7
|
import { BackendRegistry } from './BackendRegistry';
|
|
8
8
|
import { DelegationStore, type DelegatedTaskRecord } from './DelegationStore';
|
|
9
|
-
import {
|
|
9
|
+
import { DelegatedWorkerSessionStore } from './DelegatedWorkerSessionStore';
|
|
10
|
+
import { type DelegationBackend, type DelegationHandler } from './contract';
|
|
10
11
|
export declare const DELEGATION_LIMITS: {
|
|
11
12
|
readonly launches: 12;
|
|
12
13
|
readonly concurrent: 3;
|
|
@@ -32,6 +33,8 @@ export interface DelegationParent {
|
|
|
32
33
|
onToolUse: (tool: ToolUseInfo) => void;
|
|
33
34
|
onToolResult: (result: ToolResultInfo) => void;
|
|
34
35
|
onNotice: (text: string) => void;
|
|
36
|
+
/** Returns true when the client accepted a nested worker-progress update for delivery. */
|
|
37
|
+
onProgress?: (progress: DelegationProgressInfo) => boolean;
|
|
35
38
|
onApproval: (request: ApprovalRequestInfo, executor: IExecutor) => boolean;
|
|
36
39
|
onApprovalResolved: (id: string, status: ApprovalStatus) => void;
|
|
37
40
|
isWorkspaceBusy?: (canonicalPath: string) => boolean;
|
|
@@ -64,13 +67,30 @@ export declare class DelegationManager {
|
|
|
64
67
|
private readonly cleanupMs;
|
|
65
68
|
readonly registry: BackendRegistry;
|
|
66
69
|
readonly store: DelegationStore;
|
|
70
|
+
readonly laneStore: DelegatedWorkerSessionStore;
|
|
67
71
|
private running;
|
|
68
72
|
private workspaces;
|
|
69
73
|
private scopes;
|
|
70
74
|
private readonly timeouts;
|
|
71
|
-
constructor(guard: DirectoryGuard, factory?: typeof createExecutor, registry?: BackendRegistry, store?: DelegationStore, timeoutInput?: TimeoutPolicyInput, cleanupMs?: number);
|
|
75
|
+
constructor(guard: DirectoryGuard, factory?: typeof createExecutor, registry?: BackendRegistry, store?: DelegationStore, timeoutInput?: TimeoutPolicyInput, cleanupMs?: number, laneStore?: DelegatedWorkerSessionStore);
|
|
72
76
|
begin(parent: DelegationParent): DelegationScope;
|
|
73
77
|
waitingExecutor(threadId: string): IExecutor | undefined;
|
|
78
|
+
hasActiveTasks(threadId: string): boolean;
|
|
79
|
+
/** Retry previously confirmed cleanup requests without touching uncertain interrupted workers. */
|
|
80
|
+
reconcilePendingWorkerLanes(): Promise<{
|
|
81
|
+
removed: number;
|
|
82
|
+
failed: number;
|
|
83
|
+
}>;
|
|
84
|
+
/** Remove all lanes older than the new workspace generation after a successful `/cd`. */
|
|
85
|
+
invalidateWorkspaceGeneration(threadId: string, currentGeneration: number): Promise<{
|
|
86
|
+
removed: number;
|
|
87
|
+
failed: number;
|
|
88
|
+
}>;
|
|
89
|
+
/** Forget one backend lane or all lanes for an idle parent thread. */
|
|
90
|
+
resetWorkerLanes(threadId: string, backend?: DelegationBackend): Promise<number>;
|
|
91
|
+
/** Thread deletion is executor-free so it works whether delegation is currently enabled or not. */
|
|
92
|
+
deleteWorkerLanes(threadId: string): Promise<number>;
|
|
93
|
+
private removeWorkerLanes;
|
|
74
94
|
blocksWorkspace(cwd: string, threadId: string): boolean;
|
|
75
95
|
cancelThread(threadId: string): Promise<void>;
|
|
76
96
|
destroy(): Promise<void>;
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"DelegationManager.d.ts","sourceRoot":"","sources":["../../src/delegation/DelegationManager.ts"],"names":[],"mappings":"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"}
|