agl 40.5.0 → 40.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changelog.md +16 -0
- package/dist_serve/bundle.js +598 -598
- package/dist_serve/bundle.js.map +2 -2
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/aglapi/aglapisurface.document.js +2 -2
- package/dist_ts/classes.aglhome.d.ts +5 -0
- package/dist_ts/classes.aglhome.js +2 -1
- package/dist_ts/classes.authstore.js +5 -1
- package/dist_ts/classes.controller.js +11 -2
- package/dist_ts/classes.inferencegateway.d.ts +35 -1
- package/dist_ts/classes.inferencegateway.js +86 -26
- package/dist_ts/classes.inferenceservice.d.ts +4 -2
- package/dist_ts/classes.inferenceservice.js +5 -4
- package/dist_ts/classes.proxycontrol.d.ts +58 -4
- package/dist_ts/classes.proxycontrol.js +23 -44
- package/dist_ts/classes.proxycontrolclient.d.ts +15 -5
- package/dist_ts/classes.proxycontrolclient.js +67 -17
- package/dist_ts/classes.proxydaemon.d.ts +22 -3
- package/dist_ts/classes.proxydaemon.js +73 -12
- package/dist_ts/classes.proxyleaseholder.d.ts +43 -14
- package/dist_ts/classes.proxyleaseholder.js +66 -22
- package/dist_ts/classes.proxystore.d.ts +9 -0
- package/dist_ts/classes.proxystore.js +15 -7
- package/dist_ts/classes.workercallerbindings.d.ts +66 -0
- package/dist_ts/classes.workercallerbindings.js +211 -0
- package/dist_ts/classes.workercallers.d.ts +63 -2
- package/dist_ts/classes.workercallers.js +430 -65
- package/dist_ts/fleet/classes.workerlaunches.d.ts +12 -5
- package/dist_ts/fleet/classes.workerlaunches.js +25 -19
- package/dist_ts/fleet/classes.workers.d.ts +17 -0
- package/dist_ts/fleet/classes.workers.js +74 -1
- package/dist_ts/functions.inferencecli.d.ts +3 -2
- package/dist_ts/functions.inferencecli.js +67 -5
- package/dist_ts/functions.inferencecliarguments.d.ts +6 -2
- package/dist_ts/functions.inferencecliarguments.js +29 -2
- package/dist_ts/functions.inferencelaunch.d.ts +24 -0
- package/dist_ts/functions.inferencelaunch.js +42 -2
- package/dist_ts/functions.proxycontract.d.ts +11 -0
- package/dist_ts/functions.proxycontract.js +12 -1
- package/dist_ts/functions.proxysocket.d.ts +6 -0
- package/dist_ts/functions.proxysocket.js +46 -0
- package/dist_ts/functions.workerprocessproof.d.ts +6 -0
- package/dist_ts/functions.workerprocessproof.js +28 -4
- package/dist_ts_authswitch/authority-contract.d.ts +30 -5
- package/dist_ts_authswitch/authority-contract.js +7 -1
- package/dist_ts_authswitch/classes.authoritycli.js +6 -2
- package/dist_ts_authswitch/classes.authorityclient.js +15 -5
- package/dist_ts_authswitch/classes.claudenative.d.ts +7 -1
- package/dist_ts_authswitch/classes.claudenative.js +21 -6
- package/dist_ts_authswitch/classes.claudesignin.d.ts +14 -2
- package/dist_ts_authswitch/classes.claudesignin.js +68 -22
- package/dist_ts_authswitch/classes.codexmanaged.d.ts +8 -0
- package/dist_ts_authswitch/classes.codexmanaged.js +33 -18
- package/dist_ts_authswitch/classes.harnessprocesses.d.ts +8 -0
- package/dist_ts_authswitch/classes.harnessprocesses.js +41 -9
- package/dist_ts_interfaces/interfaces.d.ts +1 -1
- package/dist_ts_interfaces/interfaces.js +1 -1
- package/dist_ts_interfaces/workercallers.d.ts +43 -4
- package/package.json +1 -1
- package/readme.md +103 -14
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/aglapi/aglapisurface.document.ts +2 -2
- package/ts/classes.aglhome.ts +6 -0
- package/ts/classes.authstore.ts +4 -0
- package/ts/classes.controller.ts +10 -1
- package/ts/classes.inferencegateway.ts +104 -23
- package/ts/classes.inferenceservice.ts +6 -3
- package/ts/classes.proxycontrol.ts +76 -39
- package/ts/classes.proxycontrolclient.ts +72 -20
- package/ts/classes.proxydaemon.ts +85 -15
- package/ts/classes.proxyleaseholder.ts +84 -28
- package/ts/classes.proxystore.ts +16 -5
- package/ts/classes.workercallerbindings.ts +147 -0
- package/ts/classes.workercallers.ts +410 -59
- package/ts/fleet/classes.workerlaunches.ts +23 -15
- package/ts/fleet/classes.workers.ts +51 -1
- package/ts/functions.inferencecli.ts +61 -7
- package/ts/functions.inferencecliarguments.ts +32 -1
- package/ts/functions.inferencelaunch.ts +49 -2
- package/ts/functions.proxycontract.ts +12 -0
- package/ts/functions.proxysocket.ts +39 -0
- package/ts/functions.workerprocessproof.ts +27 -4
- package/ts_authswitch/authority-contract.ts +34 -5
- package/ts_authswitch/classes.authoritycli.ts +5 -1
- package/ts_authswitch/classes.authorityclient.ts +25 -9
- package/ts_authswitch/classes.claudenative.ts +23 -7
- package/ts_authswitch/classes.claudesignin.ts +70 -23
- package/ts_authswitch/classes.codexmanaged.ts +30 -16
- package/ts_authswitch/classes.harnessprocesses.ts +39 -8
- package/ts_authswitch/native-contracts.md +1 -1
- package/ts_interfaces/interfaces.ts +1 -1
- package/ts_interfaces/workercallers.ts +32 -4
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/accounts.plugins.ts +5 -1
- package/ts_web/classes.accountsreadmodel.ts +4 -1
|
@@ -19,12 +19,15 @@ type TRevokeReason = Parameters<IFleetWorkerCallerHooks['revokeWorkerCaller']>[0
|
|
|
19
19
|
/**
|
|
20
20
|
* The verified caller launch each fleet worker's native process holds. Every native start, revival or relaunch gets a
|
|
21
21
|
* fresh launch that replaces the worker's previous one, and the process proves it holds it once the fleet identified
|
|
22
|
-
* the process.
|
|
23
|
-
* a
|
|
22
|
+
* the process. The controller keeps a Claude launch's binding to its background job (never a credential): a process
|
|
23
|
+
* Claude Code starts for the same job later, and a bridge that outlived a controller restart, prove themselves again
|
|
24
|
+
* when they enroll. Codex launches stay in memory and are bound again before the next dispatch.
|
|
24
25
|
*/
|
|
25
26
|
export declare class FleetWorkerLaunches {
|
|
26
27
|
private readonly options;
|
|
27
28
|
private readonly launches;
|
|
29
|
+
/** Workers whose launch this fleet revoked and did not prepare again: the controller holds none for them to revoke. */
|
|
30
|
+
private readonly revoked;
|
|
28
31
|
private readonly codexRuntimes;
|
|
29
32
|
constructor(options: IFleetWorkerLaunchesOptions);
|
|
30
33
|
/** The owner part of a worker id, `${owner}:${name}`: the launch's project. */
|
|
@@ -43,8 +46,9 @@ export declare class FleetWorkerLaunches {
|
|
|
43
46
|
*/
|
|
44
47
|
prepareClaude(worker: IFleetWorker): Promise<string>;
|
|
45
48
|
/**
|
|
46
|
-
* Binds the worker's Claude launch to the background job the inventory shows for `nativeId
|
|
47
|
-
* already exited
|
|
49
|
+
* Binds the worker's Claude launch to the background job the inventory shows for `nativeId`, and to the job's process.
|
|
50
|
+
* A job whose process already exited (a quick turn) is bound without one: the process Claude Code continues the job
|
|
51
|
+
* in later proves itself when its bridge enrolls.
|
|
48
52
|
*/
|
|
49
53
|
bindClaude(worker: IFleetWorker, nativeId: string, agent: {
|
|
50
54
|
id?: string;
|
|
@@ -58,7 +62,10 @@ export declare class FleetWorkerLaunches {
|
|
|
58
62
|
bindCodex(worker: IFleetWorker, nativeId: string): Promise<void>;
|
|
59
63
|
/** The fleet's Codex connection of `supervisorGeneration`, while the fleet still uses it. */
|
|
60
64
|
codexRuntime(supervisorGeneration: string): IFleetCodexCallerRuntime | undefined;
|
|
61
|
-
/**
|
|
65
|
+
/**
|
|
66
|
+
* Revokes the worker's current launch for good: the worker stopped or is archived, its launch failed, or another
|
|
67
|
+
* replaces it. That is also a launch the controller kept from before its restart, which this fleet never prepared.
|
|
68
|
+
*/
|
|
62
69
|
revoke(worker: IFleetWorker, reason: TRevokeReason): Promise<void>;
|
|
63
70
|
/** Revokes the worker's launch and removes its overlay, if it has one, once the worker is archived. */
|
|
64
71
|
retire(worker: IFleetWorker): Promise<void>;
|
|
@@ -3,12 +3,15 @@ import { readWorkerProcessSnapshot } from '../functions.workerprocessproof.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* The verified caller launch each fleet worker's native process holds. Every native start, revival or relaunch gets a
|
|
5
5
|
* fresh launch that replaces the worker's previous one, and the process proves it holds it once the fleet identified
|
|
6
|
-
* the process.
|
|
7
|
-
* a
|
|
6
|
+
* the process. The controller keeps a Claude launch's binding to its background job (never a credential): a process
|
|
7
|
+
* Claude Code starts for the same job later, and a bridge that outlived a controller restart, prove themselves again
|
|
8
|
+
* when they enroll. Codex launches stay in memory and are bound again before the next dispatch.
|
|
8
9
|
*/
|
|
9
10
|
export class FleetWorkerLaunches {
|
|
10
11
|
options;
|
|
11
12
|
launches = new Map();
|
|
13
|
+
/** Workers whose launch this fleet revoked and did not prepare again: the controller holds none for them to revoke. */
|
|
14
|
+
revoked = new Set();
|
|
12
15
|
codexRuntimes = new Map();
|
|
13
16
|
constructor(options) {
|
|
14
17
|
this.options = options;
|
|
@@ -24,7 +27,10 @@ export class FleetWorkerLaunches {
|
|
|
24
27
|
return plugins.path.join(this.options.overlays, `${plugins.crypto.createHash('sha256').update(worker.id).digest('base64url')}.json`);
|
|
25
28
|
}
|
|
26
29
|
async prepare(worker, launch) {
|
|
27
|
-
|
|
30
|
+
// The controller replaces any other launch of the worker as it prepares this one, also one it kept from before a restart.
|
|
31
|
+
if (this.launches.has(worker.id))
|
|
32
|
+
await this.revoke(worker, 'replacement');
|
|
33
|
+
this.revoked.delete(worker.id);
|
|
28
34
|
const ready = await this.options.hooks().prepareWorkerCaller(launch);
|
|
29
35
|
this.launches.set(worker.id, { launchId: launch.launchId, projectId: launch.projectId, harnessId: launch.harnessId, bound: false,
|
|
30
36
|
...(launch.harnessId === 'codex' ? { supervisorGeneration: launch.codexOrigin.supervisorGeneration } : {}) });
|
|
@@ -47,7 +53,7 @@ export class FleetWorkerLaunches {
|
|
|
47
53
|
* this start and at every later wake. Returns the overlay's path.
|
|
48
54
|
*/
|
|
49
55
|
async prepareClaude(worker) {
|
|
50
|
-
const ready = await this.prepare(worker, { launchId: plugins.crypto.randomUUID(), projectId: this.project(worker), harnessId: 'claude' });
|
|
56
|
+
const ready = await this.prepare(worker, { launchId: plugins.crypto.randomUUID(), projectId: this.project(worker), workerId: worker.id, harnessId: 'claude' });
|
|
51
57
|
try {
|
|
52
58
|
if (!ready.claudeMcpConfig)
|
|
53
59
|
throw new Error('The Claude caller launch has no MCP configuration.');
|
|
@@ -68,23 +74,21 @@ export class FleetWorkerLaunches {
|
|
|
68
74
|
}
|
|
69
75
|
}
|
|
70
76
|
/**
|
|
71
|
-
* Binds the worker's Claude launch to the background job the inventory shows for `nativeId
|
|
72
|
-
* already exited
|
|
77
|
+
* Binds the worker's Claude launch to the background job the inventory shows for `nativeId`, and to the job's process.
|
|
78
|
+
* A job whose process already exited (a quick turn) is bound without one: the process Claude Code continues the job
|
|
79
|
+
* in later proves itself when its bridge enrolls.
|
|
73
80
|
*/
|
|
74
81
|
async bindClaude(worker, nativeId, agent) {
|
|
75
82
|
const launch = this.launches.get(worker.id);
|
|
76
83
|
if (!launch || launch.harnessId !== 'claude' || launch.bound)
|
|
77
84
|
throw new Error('The Claude worker has no prepared caller launch.');
|
|
78
|
-
if (agent.pid === undefined) {
|
|
79
|
-
await this.revoke(worker, 'stop');
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
85
|
try {
|
|
83
86
|
if (!agent.id)
|
|
84
87
|
throw new Error('The Claude background job has no agent id.');
|
|
85
|
-
const
|
|
88
|
+
const claudeProcess = agent.pid === undefined ? undefined
|
|
89
|
+
: { jobId: agent.id, pid: agent.pid, startTicks: (await readWorkerProcessSnapshot(agent.pid)).startTicks };
|
|
86
90
|
await this.options.hooks().bindWorkerCaller({ launchId: launch.launchId, projectId: launch.projectId, harnessId: 'claude', nativeSessionId: nativeId,
|
|
87
|
-
expectedBindingRevision: 0,
|
|
91
|
+
expectedBindingRevision: 0, claudeJobId: agent.id, ...(claudeProcess ? { claudeProcess } : {}) });
|
|
88
92
|
launch.bound = true;
|
|
89
93
|
}
|
|
90
94
|
catch (error) {
|
|
@@ -104,7 +108,7 @@ export class FleetWorkerLaunches {
|
|
|
104
108
|
for (const [generation, known] of this.codexRuntimes)
|
|
105
109
|
if (!known.isCurrent())
|
|
106
110
|
this.codexRuntimes.delete(generation);
|
|
107
|
-
const ready = await this.prepare(worker, { launchId: plugins.crypto.randomUUID(), projectId: this.project(worker), harnessId: 'codex',
|
|
111
|
+
const ready = await this.prepare(worker, { launchId: plugins.crypto.randomUUID(), projectId: this.project(worker), workerId: worker.id, harnessId: 'codex',
|
|
108
112
|
codexOrigin: { source: 'fleet', supervisorGeneration: runtime.supervisor.generation } });
|
|
109
113
|
if (!ready.codexConfig) {
|
|
110
114
|
await this.revoke(worker, 'failure');
|
|
@@ -131,13 +135,15 @@ export class FleetWorkerLaunches {
|
|
|
131
135
|
const runtime = this.codexRuntimes.get(supervisorGeneration);
|
|
132
136
|
return runtime?.isCurrent() ? runtime : undefined;
|
|
133
137
|
}
|
|
134
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* Revokes the worker's current launch for good: the worker stopped or is archived, its launch failed, or another
|
|
140
|
+
* replaces it. That is also a launch the controller kept from before its restart, which this fleet never prepared.
|
|
141
|
+
*/
|
|
135
142
|
async revoke(worker, reason) {
|
|
136
|
-
|
|
137
|
-
if (!launch)
|
|
143
|
+
if (!this.launches.delete(worker.id) && this.revoked.has(worker.id))
|
|
138
144
|
return;
|
|
139
|
-
this.
|
|
140
|
-
|
|
145
|
+
await this.options.hooks().revokeWorkerCaller({ workerId: worker.id, reason });
|
|
146
|
+
this.revoked.add(worker.id);
|
|
141
147
|
}
|
|
142
148
|
/** Revokes the worker's launch and removes its overlay, if it has one, once the worker is archived. */
|
|
143
149
|
async retire(worker) {
|
|
@@ -145,4 +151,4 @@ export class FleetWorkerLaunches {
|
|
|
145
151
|
await plugins.fs.promises.rm(this.overlay(worker), { force: true });
|
|
146
152
|
}
|
|
147
153
|
}
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy53b3JrZXJsYXVuY2hlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ZsZWV0L2NsYXNzZXMud29ya2VybGF1bmNoZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFLekMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFrQi9FOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFLRCxPQUFPO0lBSm5CLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztJQUN2RCx1SEFBdUg7SUFDdEcsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDNUIsYUFBYSxHQUFHLElBQUksR0FBRyxFQUFvQyxDQUFDO0lBQzdFLFlBQTZCLE9BQW9DO3VCQUFwQyxPQUFPO0lBQWdDLENBQUM7SUFDckUsK0VBQStFO0lBQ3ZFLE9BQU8sQ0FBQyxNQUFvQjtRQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDbkcsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsNEZBQTRGO0lBQ3JGLE9BQU8sQ0FBQyxNQUFvQjtRQUNqQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENB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
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type IWorkerClaudeJobRequest, type TWorkerClaudeJobObservation } from '../../dist_ts_interfaces/index.js';
|
|
1
2
|
import type { IFleetWorker, IFleetWorkerJob, IFleetNativeMessageReceipt, TFleetEventKind, TFleetWorkerAction, TFleetWorkerRequest, TFleetWorkerResponse } from '../../dist_ts_interfaces/fleetworkers.js';
|
|
2
3
|
import type { IFleetConfiguration, IFleetOperation, IFleetTicketSync } from '../../dist_ts_interfaces/fleet.js';
|
|
3
4
|
import type { ITicketActor } from '../../dist_ts_interfaces/tickets.js';
|
|
@@ -74,6 +75,10 @@ export declare class FleetWorkers {
|
|
|
74
75
|
private lastLoad;
|
|
75
76
|
private readonly controllerId;
|
|
76
77
|
private holder?;
|
|
78
|
+
/** The chain the caller job re-proofs read their inventories on, one at a time. */
|
|
79
|
+
private callerJobs;
|
|
80
|
+
/** Set once the controller began to stop: no new worker job is admitted. */
|
|
81
|
+
private admissionClosed;
|
|
77
82
|
constructor(options?: IFleetWorkersOptions);
|
|
78
83
|
start(): void;
|
|
79
84
|
/** Names for upgrade diagnostics from durable bindings; no native poll or transcript read. */
|
|
@@ -124,6 +129,12 @@ export declare class FleetWorkers {
|
|
|
124
129
|
private view;
|
|
125
130
|
/** The host's Claude Code sessions of the profile home `home` (the default home when absent), read at most `maxAgeMs` ago. */
|
|
126
131
|
nativeAgents(home: string | undefined, maxAgeMs: number): Promise<IFleetNativeAgent[]>;
|
|
132
|
+
/**
|
|
133
|
+
* What a fresh inventory shows of the Claude background job a worker's caller launch is bound to, for the controller
|
|
134
|
+
* to prove the job's next process. One read at a time, however many bridges ask.
|
|
135
|
+
*/
|
|
136
|
+
observeCallerJob(request: IWorkerClaudeJobRequest): Promise<TWorkerClaudeJobObservation>;
|
|
137
|
+
private readCallerJob;
|
|
127
138
|
/** The newest root threads on the host's shared Codex app-server, read at most `maxAgeMs` ago. */
|
|
128
139
|
nativeThreads(maxAgeMs: number): Promise<IFleetNativeThread[]>;
|
|
129
140
|
private admitJob;
|
|
@@ -185,5 +196,11 @@ export declare class FleetWorkers {
|
|
|
185
196
|
/** Starts `worker`'s native session with the prompt `start`, or launches it through `start`, and binds the session under the dispatch fence. */
|
|
186
197
|
private startNative;
|
|
187
198
|
private mutate;
|
|
199
|
+
/**
|
|
200
|
+
* Admits no new worker job and lets the running ones finish, for at most `waitMs`; the ones still running then are
|
|
201
|
+
* aborted and settle. The controller calls it before it tears down the caller hooks the jobs prepare, bind and
|
|
202
|
+
* revoke launches through, so no job meets them gone.
|
|
203
|
+
*/
|
|
204
|
+
closeAdmission(waitMs?: number): Promise<void>;
|
|
188
205
|
close(): Promise<void>;
|
|
189
206
|
}
|