@cotal-ai/cli 0.21.0 → 0.23.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/dist/commands/agents.d.ts +56 -1
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +382 -22
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/mint.d.ts.map +1 -1
- package/dist/commands/mint.js +19 -2
- package/dist/commands/mint.js.map +1 -1
- package/dist/commands/spawn.d.ts +0 -8
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +8 -15
- package/dist/commands/spawn.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/attach-client.d.ts +40 -1
- package/dist/lib/attach-client.d.ts.map +1 -1
- package/dist/lib/attach-client.js +109 -29
- package/dist/lib/attach-client.js.map +1 -1
- package/dist/lib/connect.d.ts +1 -1
- package/dist/lib/connect.d.ts.map +1 -1
- package/dist/lib/connect.js +1 -1
- package/dist/lib/connect.js.map +1 -1
- package/dist/lib/control.d.ts +14 -1
- package/dist/lib/control.d.ts.map +1 -1
- package/dist/lib/control.js +20 -5
- package/dist/lib/control.js.map +1 -1
- package/package.json +3 -3
|
@@ -71,13 +71,17 @@ export declare const attachFlags: readonly [{
|
|
|
71
71
|
readonly type: "string";
|
|
72
72
|
readonly value: "<instance>";
|
|
73
73
|
readonly description: "target a specific manager instance id (multi-manager space); default = class anycast";
|
|
74
|
+
}, {
|
|
75
|
+
readonly name: "no-reconnect";
|
|
76
|
+
readonly type: "boolean";
|
|
77
|
+
readonly description: "exit when the session ends instead of re-establishing it";
|
|
74
78
|
}];
|
|
75
79
|
/** `cotal input`: type into a seat without holding a terminal open. `--text` is a VALUE flag, so
|
|
76
80
|
* its argument is taken verbatim and may begin with `/` or `-` (`--text "/compact"`) - which is
|
|
77
81
|
* the point: a harness command is exactly the payload that would be eaten by a positional
|
|
78
82
|
* grammar. `--no-enter` is a declared boolean literally named `no-enter` rather than a negation
|
|
79
83
|
* of an `enter` flag: node's `parseArgs` does not negate under `strict`, and the CLI already
|
|
80
|
-
* spells this shape (`--no-open`, `--no-replay
|
|
84
|
+
* spells this shape (`--no-open`, `--no-replay`). */
|
|
81
85
|
export declare const inputFlags: readonly [{
|
|
82
86
|
readonly name: "space";
|
|
83
87
|
readonly type: "string";
|
|
@@ -116,6 +120,56 @@ export declare const inputFlags: readonly [{
|
|
|
116
120
|
export declare function managedAgentComplete(argv: string[]): CompletionResult;
|
|
117
121
|
export declare function stop(args: ParsedArgs): Promise<void>;
|
|
118
122
|
export declare function ps(args: ParsedArgs): Promise<void>;
|
|
123
|
+
/** What a caller should DO about a manager refusal. `denied` will not change by asking again;
|
|
124
|
+
* `gone` is the seat the manager no longer knows, so there is nothing left to attach to; anything
|
|
125
|
+
* else is worth another attempt. */
|
|
126
|
+
export type AttachRefusal = "denied" | "gone" | "transient";
|
|
127
|
+
/**
|
|
128
|
+
* Classify a refusal on the manager's error CODE, never on its wording. The wording is operator
|
|
129
|
+
* copy and changes; the code is the contract. Getting this wrong in either direction is a real
|
|
130
|
+
* failure: reading `permission-denied` as transient turns a refusal into an infinite retry loop
|
|
131
|
+
* against a manager that has already said no, and reading `not-found` as transient does the same
|
|
132
|
+
* to a seat that no longer exists.
|
|
133
|
+
*/
|
|
134
|
+
export declare function attachRefusal(code: string | undefined): AttachRefusal;
|
|
135
|
+
/**
|
|
136
|
+
* What a re-establishment TELLS the operator while it keeps trying, and what it keeps to itself.
|
|
137
|
+
* Returns the line to print, or undefined for silence.
|
|
138
|
+
*
|
|
139
|
+
* Only the MANAGER's own refusal is relayed, and only when it changes. An operator watching
|
|
140
|
+
* `reconnecting` for ten minutes cannot otherwise tell a sleeping laptop from a manager that is at
|
|
141
|
+
* its session ceiling, and the ceiling is the one a person can act on. Repeating a steady refusal
|
|
142
|
+
* on every attempt would bury it.
|
|
143
|
+
*
|
|
144
|
+
* A LOCAL failure to reach anything is deliberately silent: it is already what `connection lost,
|
|
145
|
+
* reconnecting` says, and the copy on this path is written for someone who just typed a command
|
|
146
|
+
* ("no mesh running at X - run `cotal up`"), which is the wrong thing to tell someone whose wifi
|
|
147
|
+
* dropped.
|
|
148
|
+
*/
|
|
149
|
+
export declare function reconnectNotice(est: {
|
|
150
|
+
fromManager?: true;
|
|
151
|
+
message: string;
|
|
152
|
+
}, alreadySaid: string): string | undefined;
|
|
153
|
+
/**
|
|
154
|
+
* The line an exit owes an operator about sessions this attach could not hand back, or nothing.
|
|
155
|
+
*
|
|
156
|
+
* Suppressed on `gone`, and that is not tidiness. That verdict exists because the manager answered
|
|
157
|
+
* `not-found`, which it only answers once the seat has been freed, and freeing a seat ends every
|
|
158
|
+
* session bound to it (`freeSlot` into `endForTarget`, on despawn, self-stop, reap and natural exit
|
|
159
|
+
* alike). The sessions this would name have already been collected, so naming them would be
|
|
160
|
+
* inventing work for someone who is about to close their terminal.
|
|
161
|
+
*/
|
|
162
|
+
export declare function heldSessionNotice(pending: number, verdict: AttachVerdict["kind"]): string | undefined;
|
|
163
|
+
/** How the attach finished, decided inside the loop and acted on outside it — so the terminal is
|
|
164
|
+
* always given back before anything prints or exits. */
|
|
165
|
+
type AttachVerdict = {
|
|
166
|
+
kind: "ended";
|
|
167
|
+
} | {
|
|
168
|
+
kind: "gone";
|
|
169
|
+
} | {
|
|
170
|
+
kind: "failed";
|
|
171
|
+
message: string;
|
|
172
|
+
};
|
|
119
173
|
export declare function attach(args: ParsedArgs): Promise<void>;
|
|
120
174
|
/**
|
|
121
175
|
* `cotal input --name <seat> --text <text> [--no-enter]`: deliver one line of text into a running
|
|
@@ -129,4 +183,5 @@ export declare function attach(args: ParsedArgs): Promise<void>;
|
|
|
129
183
|
* delivered.
|
|
130
184
|
*/
|
|
131
185
|
export declare function input(args: ParsedArgs): Promise<void>;
|
|
186
|
+
export {};
|
|
132
187
|
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkE,KAAK,gBAAgB,EAAkC,KAAK,UAAU,EAAqB,MAAM,gBAAgB,CAAC;AAuB3L,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;EAAgH,CAAC;AACvI,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;EAAkE,CAAC;AAKvF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAsI,CAAC;AAC/J;;;;;sDAKsD;AACtD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMiB,CAAC;AAEzC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAQrE;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB1D;AA8JD,wBAAsB,EAAE,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA2FxD;AAuDD;;qCAEqC;AACrC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE5D;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAIrE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE;IAAE,WAAW,CAAC,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGrH;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAIrG;AAiRD;yDACyD;AACzD,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhG,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B5D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB3D"}
|
package/dist/commands/agents.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { mintCreds, newIdentity, standaloneConnectOpts } from "@cotal-ai/core";
|
|
1
|
+
import { mintCreds, newIdentity, openSessionRail, standaloneConnectOpts } from "@cotal-ai/core";
|
|
2
2
|
import { authDir, findCotalRoot, loadMeshes, loadSpaceAuth, targetFlags } from "@cotal-ai/workspace";
|
|
3
3
|
import { connect } from "@nats-io/transport-node";
|
|
4
4
|
import { c } from "../ui.js";
|
|
5
5
|
import { askManager, scatterManager, failIfNotOk, resolveControlTarget, onInstanceOrExit } from "../lib/control.js";
|
|
6
|
-
import { attachClient, detachKey, meshSessionTransport } from "../lib/attach-client.js";
|
|
6
|
+
import { attachClient, detachKey, holdTerminal, isTransportEnd, meshSessionTransport } from "../lib/attach-client.js";
|
|
7
7
|
import { completingFlagValue } from "../lib/completion.js";
|
|
8
8
|
/**
|
|
9
9
|
* The manager's operator clients — thin control-plane request/reply commands (`stop`/`ps`/
|
|
@@ -19,13 +19,17 @@ const nameFlag = (what) => ({ name: "name", type: "string", value: "<n>", descri
|
|
|
19
19
|
const onFlag = { name: "on", type: "string", value: "<instance>", description: "target a specific manager instance id (multi-manager space); default = class anycast" };
|
|
20
20
|
export const stopFlags = [...targetFlags, nameFlag("managed agent to stop (required)"), onFlag];
|
|
21
21
|
export const psFlags = [...targetFlags, onFlag];
|
|
22
|
-
|
|
22
|
+
/** `--no-reconnect`: one session, exit when it ends, whatever ended it. The default reconnects,
|
|
23
|
+
* which is right for a person at a terminal and wrong for a script that wants a single run with a
|
|
24
|
+
* single exit code. */
|
|
25
|
+
const noReconnectFlag = { name: "no-reconnect", type: "boolean", description: "exit when the session ends instead of re-establishing it" };
|
|
26
|
+
export const attachFlags = [...targetFlags, nameFlag("managed agent to attach to (required)"), onFlag, noReconnectFlag];
|
|
23
27
|
/** `cotal input`: type into a seat without holding a terminal open. `--text` is a VALUE flag, so
|
|
24
28
|
* its argument is taken verbatim and may begin with `/` or `-` (`--text "/compact"`) - which is
|
|
25
29
|
* the point: a harness command is exactly the payload that would be eaten by a positional
|
|
26
30
|
* grammar. `--no-enter` is a declared boolean literally named `no-enter` rather than a negation
|
|
27
31
|
* of an `enter` flag: node's `parseArgs` does not negate under `strict`, and the CLI already
|
|
28
|
-
* spells this shape (`--no-open`, `--no-replay
|
|
32
|
+
* spells this shape (`--no-open`, `--no-replay`). */
|
|
29
33
|
export const inputFlags = [
|
|
30
34
|
...targetFlags,
|
|
31
35
|
nameFlag("managed agent to type into (required)"),
|
|
@@ -280,44 +284,400 @@ export async function ps(args) {
|
|
|
280
284
|
printAgentRow(r, " ");
|
|
281
285
|
}
|
|
282
286
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
287
|
+
/** Re-establishment backoff, in order; the last value is the cap and repeats forever. A seat that
|
|
288
|
+
* exists is worth waiting for — the operator asked to be attached to it, and the alternative is
|
|
289
|
+
* the terminal they walked away from being gone when they come back. */
|
|
290
|
+
const RECONNECT_BACKOFF_MS = [1_000, 2_000, 5_000, 10_000, 30_000];
|
|
291
|
+
/** How long any single wait on a LINK may take before the loop stops waiting on it. Neither
|
|
292
|
+
* `flush()` nor `drain()` carries a deadline of its own, and `connect`'s `timeout` covers only the
|
|
293
|
+
* dial: a link that half-opens AFTER connect (the exact slow death this command exists for) would
|
|
294
|
+
* otherwise pin the loop, and the detach key with it, until the connection's own heartbeat gave up
|
|
295
|
+
* around two minutes later. */
|
|
296
|
+
const LINK_DEADLINE_MS = 5_000;
|
|
297
|
+
/** Race a link round trip against a deadline, and answer `no` if the deadline wins. The timer is
|
|
298
|
+
* deliberately NOT unref'd: it is the only thing keeping the process alive while we wait on a
|
|
299
|
+
* socket that will never answer, and an unref'd one lets node empty its loop and abort the whole
|
|
300
|
+
* command on a pending await instead of finishing the wait and printing why. It is cleared as soon
|
|
301
|
+
* as either side settles, so a healthy link is never held open for the remainder of the deadline. */
|
|
302
|
+
const withDeadline = async (work, ms) => {
|
|
303
|
+
let timer;
|
|
304
|
+
const deadline = new Promise((r) => { timer = setTimeout(() => r(false), ms); });
|
|
305
|
+
try {
|
|
306
|
+
return await Promise.race([work, deadline]);
|
|
307
|
+
}
|
|
308
|
+
finally {
|
|
309
|
+
clearTimeout(timer);
|
|
288
310
|
}
|
|
311
|
+
};
|
|
312
|
+
/** Did a flush RETURN inside the deadline? That, and not the publish, is what says a frame left:
|
|
313
|
+
* publishing is a local buffer write. A rejection and a timeout are the same answer here, `no`. */
|
|
314
|
+
const flushed = (nc) => withDeadline(nc.flush().then(() => true, () => false), LINK_DEADLINE_MS);
|
|
315
|
+
/** Give a connection back, bounded. Draining is another flush, so a link that has already missed
|
|
316
|
+
* its deadline is closed outright instead of being asked to drain through the same dead socket.
|
|
317
|
+
* A drain that REJECTS has closed nothing either: it gives up inside that same flush, before the
|
|
318
|
+
* close it would have done, so a rejection means close it here or leak the socket. */
|
|
319
|
+
const closeLink = async (nc) => {
|
|
320
|
+
const drained = await withDeadline(nc.drain().then(() => true, () => false), LINK_DEADLINE_MS);
|
|
321
|
+
// The close gets the same deadline as everything else on this path. Tearing a socket down is
|
|
322
|
+
// local work and should not be able to wait at all, but "should not" is what the drain above was
|
|
323
|
+
// supposed to be too, and a bound that covers every wait but one is a bound with a footnote.
|
|
324
|
+
if (!drained)
|
|
325
|
+
await withDeadline(nc.close().then(() => true, () => true), LINK_DEADLINE_MS);
|
|
326
|
+
};
|
|
327
|
+
/** A session that ran at least this long counts as one that WORKED, whether or not the seat spoke.
|
|
328
|
+
* Below it, a link that comes up for the control round trip and dies again is a flap, and resetting
|
|
329
|
+
* the backoff on those re-mints a grant, a credential and a hand-back connection every second. */
|
|
330
|
+
const SESSION_WORKED_MS = 5_000;
|
|
331
|
+
/**
|
|
332
|
+
* Classify a refusal on the manager's error CODE, never on its wording. The wording is operator
|
|
333
|
+
* copy and changes; the code is the contract. Getting this wrong in either direction is a real
|
|
334
|
+
* failure: reading `permission-denied` as transient turns a refusal into an infinite retry loop
|
|
335
|
+
* against a manager that has already said no, and reading `not-found` as transient does the same
|
|
336
|
+
* to a seat that no longer exists.
|
|
337
|
+
*/
|
|
338
|
+
export function attachRefusal(code) {
|
|
339
|
+
if (code === "permission-denied")
|
|
340
|
+
return "denied";
|
|
341
|
+
if (code === "not-found")
|
|
342
|
+
return "gone";
|
|
343
|
+
return "transient";
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* What a re-establishment TELLS the operator while it keeps trying, and what it keeps to itself.
|
|
347
|
+
* Returns the line to print, or undefined for silence.
|
|
348
|
+
*
|
|
349
|
+
* Only the MANAGER's own refusal is relayed, and only when it changes. An operator watching
|
|
350
|
+
* `reconnecting` for ten minutes cannot otherwise tell a sleeping laptop from a manager that is at
|
|
351
|
+
* its session ceiling, and the ceiling is the one a person can act on. Repeating a steady refusal
|
|
352
|
+
* on every attempt would bury it.
|
|
353
|
+
*
|
|
354
|
+
* A LOCAL failure to reach anything is deliberately silent: it is already what `connection lost,
|
|
355
|
+
* reconnecting` says, and the copy on this path is written for someone who just typed a command
|
|
356
|
+
* ("no mesh running at X - run `cotal up`"), which is the wrong thing to tell someone whose wifi
|
|
357
|
+
* dropped.
|
|
358
|
+
*/
|
|
359
|
+
export function reconnectNotice(est, alreadySaid) {
|
|
360
|
+
if (!est.fromManager || est.message === alreadySaid)
|
|
361
|
+
return undefined;
|
|
362
|
+
return `[cotal: ${est.message}]`;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* The line an exit owes an operator about sessions this attach could not hand back, or nothing.
|
|
366
|
+
*
|
|
367
|
+
* Suppressed on `gone`, and that is not tidiness. That verdict exists because the manager answered
|
|
368
|
+
* `not-found`, which it only answers once the seat has been freed, and freeing a seat ends every
|
|
369
|
+
* session bound to it (`freeSlot` into `endForTarget`, on despawn, self-stop, reap and natural exit
|
|
370
|
+
* alike). The sessions this would name have already been collected, so naming them would be
|
|
371
|
+
* inventing work for someone who is about to close their terminal.
|
|
372
|
+
*/
|
|
373
|
+
export function heldSessionNotice(pending, verdict) {
|
|
374
|
+
if (pending < 1 || verdict === "gone")
|
|
375
|
+
return undefined;
|
|
376
|
+
const what = pending === 1 ? "a session" : `${pending} sessions`;
|
|
377
|
+
return `[cotal: the manager still holds ${what} from the lost link; each frees when the seat or the manager ends it]`;
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Ask the manager for a session and open it: a FRESH grant, a FRESH per-session caller credential,
|
|
381
|
+
* a FRESH connection, every time. Nothing is carried over from a previous attempt, so a reconnect
|
|
382
|
+
* re-runs the manager's whole authorization path (`serveGated` → `authorizeNamed` → a one-use
|
|
383
|
+
* holder-bound grant with its own TTL) exactly as the first attach did. A revoked or expired grant
|
|
384
|
+
* cannot be kept alive by reconnecting, because no grant is ever presented twice.
|
|
385
|
+
*/
|
|
386
|
+
async function establishAttachSession(v, on, reconnect, first) {
|
|
387
|
+
// A reconnect must never cross a path that can END THE PROCESS. The mesh resolve and its
|
|
388
|
+
// preflight are written to do exactly that ("no mesh running at X - run `cotal up`"), which is
|
|
389
|
+
// the right answer for a person who just typed a command and the wrong one for a link that is
|
|
390
|
+
// coming back. So a RE-ESTABLISHMENT asks for the throwing form and treats the refusal as the
|
|
391
|
+
// transient it is.
|
|
392
|
+
//
|
|
393
|
+
// Keyed off `first`, NOT off the reconnect flag, and the difference is user-visible. A refusal
|
|
394
|
+
// that escapes as an exception is rendered by the dispatcher's generic handler, which prints
|
|
395
|
+
// `✗ ${message}` over a sentence that already opens with `✗` and drops the refusal's hint line.
|
|
396
|
+
// The reconnect flag is on by DEFAULT, so keying on it sent the very first attach down that path
|
|
397
|
+
// and turned today's "no mesh running at X - run `cotal up`" into a double mark with no remedy.
|
|
398
|
+
// The first attempt is not a re-establishment and has nothing to survive for.
|
|
399
|
+
//
|
|
400
|
+
// `pinForTarget` is deliberately not crossed here: seat locality is resolved ONCE, before the
|
|
401
|
+
// loop, and the pin is carried in. It is the other step on this path that exits.
|
|
289
402
|
// Same reach routing as stop: static mesh → any-mode on the `control-caller-admin` instrument;
|
|
290
403
|
// user mesh → the operator's own bearer with owner reach, the manager deciding (own owner-domain
|
|
291
404
|
// passes with "spawn", cross-owner needs ledger "admin").
|
|
292
|
-
|
|
293
|
-
// the process, which only its host manager has.
|
|
294
|
-
const on = await pinForTarget(v, "cotal attach");
|
|
295
|
-
const t = await resolveControlTarget(v, "control-caller-admin", on);
|
|
405
|
+
const t = await resolveControlTarget(v, "control-caller-admin", on, first ? {} : { onRefusal: "throw" });
|
|
296
406
|
const reach = t.auth.bearer ? "owner" : "any";
|
|
297
407
|
const reply = await askManager(t.space, t.server, "attach", { name: v.name }, t.auth, reach, undefined, { instanceId: on });
|
|
298
|
-
|
|
408
|
+
if (!reply.ok)
|
|
409
|
+
return { ok: false, kind: attachRefusal(reply.code), message: reply.error ?? "error", fromManager: true };
|
|
299
410
|
// P2 item 6: the reply is the holder-bound §13.6 session GRANT (no ws:// URL). Redeem it over the
|
|
300
411
|
// mesh — mint a per-session, rails-only caller cred from the local space seed, connect, and drive
|
|
301
412
|
// the terminal through the session rail. USER mesh (bearer, no local seed): refuse LOUD — the
|
|
302
413
|
// 2-step user-mode redemption callout is the #29 follow-up, deliberately not wired here.
|
|
303
414
|
const { grant } = reply.data;
|
|
304
415
|
const auth = loadSpaceAuth(authDir(findCotalRoot()), t.space);
|
|
305
|
-
if (!auth)
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
416
|
+
if (!auth)
|
|
417
|
+
return {
|
|
418
|
+
ok: false, kind: "fatal",
|
|
419
|
+
message: "mesh attach needs the local space seed (static auth mesh); user-mode session redemption is the #29 callout follow-up, not wired yet",
|
|
420
|
+
};
|
|
309
421
|
const id = newIdentity();
|
|
310
422
|
const creds = await mintCreds(auth, id, "session-caller", {
|
|
311
423
|
sessionCaller: { endpoint: grant.endpoint, sessionId: grant.sessionId, epoch: grant.serving.epoch },
|
|
312
424
|
expiresAt: Math.floor(grant.exp / 1000), // grant.exp is ms (now+ttlMs); the JWT exp is seconds
|
|
313
425
|
});
|
|
314
|
-
|
|
315
|
-
|
|
426
|
+
// maxReconnectAttempts is the whole difference between the two modes, and it is deliberate.
|
|
427
|
+
// ONE-SHOT keeps the old -1: the NATS layer redials forever under a single session.
|
|
428
|
+
// RECONNECTING uses 0, because that redial is what breaks the attach rather than saving it — the
|
|
429
|
+
// session is already dead by the time the link comes back (the serving rail either kept
|
|
430
|
+
// advancing `seq` into a subject nobody was subscribed to, so the restored subscription faults
|
|
431
|
+
// with `gap`, or it stalled out and closed while this side was away, so nothing ever arrives
|
|
432
|
+
// again). Owning re-establishment here means the link coming back produces a real session with a
|
|
433
|
+
// real repaint, instead of a restored socket over a session that ended without us.
|
|
434
|
+
const nc = await connect({
|
|
435
|
+
servers: t.server,
|
|
436
|
+
...standaloneConnectOpts({ creds, tls: false }),
|
|
437
|
+
inboxPrefix: `_INBOX_${id.id}`,
|
|
438
|
+
maxReconnectAttempts: reconnect ? 0 : -1,
|
|
439
|
+
// Detection latency is part of the defect, not a detail of it. A laptop waking from sleep does
|
|
440
|
+
// not always get a socket error: the connection can sit half-open, and on the stock two-minute
|
|
441
|
+
// ping with two misses the client would not learn its link was dead for about four minutes,
|
|
442
|
+
// with the terminal frozen the whole time. Ten seconds puts that in tens of seconds. Only on
|
|
443
|
+
// the reconnecting path, so `--no-reconnect` keeps today's timing along with today's exit.
|
|
444
|
+
//
|
|
445
|
+
// NOT MEASURED by this change's suite, and said so rather than implied: the smoke severs the
|
|
446
|
+
// link by destroying sockets, so every number it prints is close detection. A fault model that
|
|
447
|
+
// half-opens a link is what would grade this line, and it does not exist here yet.
|
|
448
|
+
...(reconnect ? { pingInterval: 10_000 } : {}),
|
|
449
|
+
});
|
|
450
|
+
return { ok: true, nc, grant, creds, inbox: id.id, server: t.server };
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Tell the manager a session is over, so it gets its slot back.
|
|
454
|
+
*
|
|
455
|
+
* NOTHING on the serving side reaps a session whose caller went away while the seat is quiet: the
|
|
456
|
+
* rail's stall watchdog only arms once the send window FILLS (`endpoint-session-rail.ts`), an idle
|
|
457
|
+
* seat never fills it, and the bridge has no expiry timer of its own. Measured against a manager
|
|
458
|
+
* with an idle seat: 45s of dead link left the live-session count at 1, and the reconnect took it
|
|
459
|
+
* to 2 — one slot per outage, held until the seat or the manager ends it, against a ceiling of 64.
|
|
460
|
+
*
|
|
461
|
+
* The mechanism is the advisory close frame the rail already defines; the manager's bridge ends on
|
|
462
|
+
* it. It has to be published with THIS session's caller credential, the only one scoped to this
|
|
463
|
+
* session's subjects, so a re-establishment cannot send it on the abandoned session's behalf — a
|
|
464
|
+
* fresh session's credential covers a fresh session's subjects. Hence a short-lived connection
|
|
465
|
+
* minted from the credential the abandoned session already had.
|
|
466
|
+
*/
|
|
467
|
+
async function releaseAbandonedSession(s) {
|
|
468
|
+
const nc = await connect({
|
|
469
|
+
servers: s.server,
|
|
470
|
+
...standaloneConnectOpts({ creds: s.creds, tls: false }),
|
|
471
|
+
inboxPrefix: `_INBOX_${s.inbox}`,
|
|
472
|
+
maxReconnectAttempts: 0,
|
|
473
|
+
timeout: LINK_DEADLINE_MS,
|
|
474
|
+
// The same short ping the reconnecting session uses. This connection exists BECAUSE a link died,
|
|
475
|
+
// so it is the last one that should be left waiting on the stock two-minute heartbeat to find
|
|
476
|
+
// out that the replacement died too.
|
|
477
|
+
pingInterval: 10_000,
|
|
478
|
+
});
|
|
479
|
+
try {
|
|
480
|
+
// The rail is opened only because `close()` is the public way to speak the framing; no timers,
|
|
481
|
+
// and it tears itself down on the same call.
|
|
482
|
+
openSessionRail({ nc, grant: s.grant, role: "caller", onData: () => { }, idleCreditMs: 0, stallTimeoutMs: 0 }).close();
|
|
483
|
+
// Throwing is what keeps the record: the caller holds the session until a flush RETURNS.
|
|
484
|
+
if (!(await flushed(nc)))
|
|
485
|
+
throw new Error(`the close frame for session ${s.grant.sessionId} never left`);
|
|
486
|
+
}
|
|
487
|
+
finally {
|
|
488
|
+
await closeLink(nc);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
/** Watch stdin for the detach key while there is NO session reading it. Without this the key is
|
|
492
|
+
* dead for as long as a reconnect takes, which is exactly when an operator is most likely to give
|
|
493
|
+
* up and press it. Non-detach keystrokes are dropped: there is no seat to send them to, and
|
|
494
|
+
* buffering them would replay a burst into the agent on reconnect. */
|
|
495
|
+
function watchDetachKey(byte) {
|
|
496
|
+
const stdin = process.stdin;
|
|
497
|
+
let hit;
|
|
498
|
+
const pressed = new Promise((r) => { hit = r; });
|
|
499
|
+
const onData = (d) => { if (d.length === 1 && d[0] === byte)
|
|
500
|
+
hit(); };
|
|
501
|
+
stdin.on("data", onData);
|
|
502
|
+
stdin.resume();
|
|
503
|
+
return { pressed, stop: () => { stdin.off("data", onData); stdin.pause(); } };
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* The attach loop. One session at a time; when the LINK breaks and the operator did not detach, it
|
|
507
|
+
* re-establishes with backoff and keeps going, because the seat is still there and the terminal the
|
|
508
|
+
* operator walked away from should still be theirs when they come back.
|
|
509
|
+
*/
|
|
510
|
+
async function runAttachLoop(vv, pin, reconnect, key, hold) {
|
|
511
|
+
let first = true;
|
|
512
|
+
let attempt = 0; // consecutive re-establishment attempts since the last live session
|
|
513
|
+
// Sessions the manager still counts, waiting to be told. A LIST rather than one slot: a second
|
|
514
|
+
// link death before the first hand-back lands would overwrite the first and leak it with nothing
|
|
515
|
+
// said. It cannot grow without bound, because every entry needed a successful establishment, and
|
|
516
|
+
// successful establishments are exactly what the manager's own session ceiling counts.
|
|
517
|
+
const abandoned = [];
|
|
518
|
+
let saidWhy = ""; // the last transient refusal printed, so a steady reason prints once, not per attempt
|
|
519
|
+
// Give the manager its slots back. Oldest first, and one failure ends the round rather than
|
|
520
|
+
// skipping ahead, because the reason is the link and the link is the same for all of them.
|
|
521
|
+
const releaseAbandoned = async () => {
|
|
522
|
+
while (abandoned.length > 0) {
|
|
523
|
+
try {
|
|
524
|
+
await releaseAbandonedSession(abandoned[0]);
|
|
525
|
+
abandoned.shift();
|
|
526
|
+
}
|
|
527
|
+
catch {
|
|
528
|
+
break;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
};
|
|
532
|
+
// Every exit runs through here, so the one thing an operator cannot see for themselves is never
|
|
533
|
+
// swallowed. It TRIES first: an operator who detaches during the backoff may well be doing it
|
|
534
|
+
// because the link came back, and returning straight out would leave a slot held that one dial
|
|
535
|
+
// would have freed. The attempt is bounded exactly like every other, and what it could not
|
|
536
|
+
// deliver is what gets said. What to say, and when to say nothing, is `heldSessionNotice`.
|
|
537
|
+
const done = async (v) => {
|
|
538
|
+
if (v.kind !== "gone")
|
|
539
|
+
await releaseAbandoned();
|
|
540
|
+
const notice = heldSessionNotice(abandoned.length, v.kind);
|
|
541
|
+
if (notice)
|
|
542
|
+
console.error(c.dim(notice));
|
|
543
|
+
return v;
|
|
544
|
+
};
|
|
545
|
+
for (;;) {
|
|
546
|
+
if (!first) {
|
|
547
|
+
// Back off BEFORE the attempt, and stay interruptible: the detach key must work while we
|
|
548
|
+
// wait, not only while a session is up. The timer is CLEARED rather than left to the race,
|
|
549
|
+
// because losing a `Promise.race` does not stop a `setTimeout`: the detach is honoured at
|
|
550
|
+
// once, the terminal comes back and `detached from` prints, and then node holds the process
|
|
551
|
+
// open until the abandoned timer fires. On the 30s rung that is half a minute of a shell that
|
|
552
|
+
// has already said it detached and will not give the prompt back. Measured before this line
|
|
553
|
+
// existed: press to first output 0.1s, press to EXIT 27.0s with the next attempt 26.9s away,
|
|
554
|
+
// and 8.3s with it 8.1s away, tracking the rung rather than the work.
|
|
555
|
+
const ms = RECONNECT_BACKOFF_MS[Math.min(attempt, RECONNECT_BACKOFF_MS.length - 1)];
|
|
556
|
+
const watch = watchDetachKey(key.byte);
|
|
557
|
+
let timer;
|
|
558
|
+
const waited = new Promise((r) => { timer = setTimeout(() => r(false), ms); });
|
|
559
|
+
const detached = await Promise.race([waited, watch.pressed.then(() => true)]);
|
|
560
|
+
clearTimeout(timer);
|
|
561
|
+
watch.stop();
|
|
562
|
+
if (detached)
|
|
563
|
+
return await done({ kind: "ended" });
|
|
564
|
+
attempt++;
|
|
565
|
+
}
|
|
566
|
+
// Give the manager its slots back BEFORE claiming another one. The order is load-bearing at the
|
|
567
|
+
// ceiling: a client that claims first is refused by the very sessions it abandoned. A failure
|
|
568
|
+
// is retried on the next attempt and accounted for by `done` if it never lands.
|
|
569
|
+
await releaseAbandoned();
|
|
570
|
+
let est;
|
|
571
|
+
try {
|
|
572
|
+
est = await establishAttachSession(vv, pin, reconnect, first);
|
|
573
|
+
}
|
|
574
|
+
catch (e) {
|
|
575
|
+
// The FIRST attempt throws exactly as it always has — the CLI's top-level handler renders
|
|
576
|
+
// it. Only a reconnect turns a thrown establishment into another attempt.
|
|
577
|
+
if (first)
|
|
578
|
+
throw e;
|
|
579
|
+
est = { ok: false, kind: "transient", message: e.message };
|
|
580
|
+
}
|
|
581
|
+
if (!est.ok) {
|
|
582
|
+
// Nothing changes for the first attach: any refusal is the same loud exit as before.
|
|
583
|
+
if (first || est.kind === "fatal" || est.kind === "denied")
|
|
584
|
+
return await done({ kind: "failed", message: est.message });
|
|
585
|
+
if (est.kind === "gone")
|
|
586
|
+
return await done({ kind: "gone" });
|
|
587
|
+
const notice = reconnectNotice(est, saidWhy);
|
|
588
|
+
if (notice) {
|
|
589
|
+
saidWhy = est.message;
|
|
590
|
+
console.error(c.dim(notice));
|
|
591
|
+
}
|
|
592
|
+
continue; // transient: the manager or the link is unreachable right now
|
|
593
|
+
}
|
|
594
|
+
saidWhy = "";
|
|
595
|
+
if (first)
|
|
596
|
+
console.error(c.dim(`attached to ${vv.name} - ${key.label} to detach`));
|
|
597
|
+
else
|
|
598
|
+
console.error(c.dim("[cotal: reconnected]"));
|
|
599
|
+
first = false;
|
|
600
|
+
let outcome;
|
|
601
|
+
const startedAt = Date.now();
|
|
602
|
+
const transport = meshSessionTransport(est.nc, est.grant);
|
|
603
|
+
try {
|
|
604
|
+
// The manager replays its byte-exact backlog snapshot on every open (the `ready` handshake
|
|
605
|
+
// in session/bridge.ts), so the reconnected screen repaints through the path that already
|
|
606
|
+
// exists; there is no second backlog here.
|
|
607
|
+
outcome = await attachClient(transport, hold);
|
|
608
|
+
}
|
|
609
|
+
finally {
|
|
610
|
+
// Hand the session back. With the link still up that is one advisory frame over the
|
|
611
|
+
// connection already open (a rail that broke while the socket lived — a stall, a gap — is
|
|
612
|
+
// exactly this case, and it is idempotent after a detach has already closed it). The FLUSH is
|
|
613
|
+
// what decides whether it left, not the publish: a link can die between the closed-check and
|
|
614
|
+
// the frame, which is the same slow death this whole change is about. Only a flush that
|
|
615
|
+
// returned counts as handed back; anything else keeps the credential for the next attempt,
|
|
616
|
+
// and see releaseAbandonedSession for why no other credential can carry it.
|
|
617
|
+
let handedBack = false;
|
|
618
|
+
if (!est.nc.isClosed()) {
|
|
619
|
+
transport.close();
|
|
620
|
+
handedBack = await flushed(est.nc);
|
|
621
|
+
}
|
|
622
|
+
if (!handedBack && reconnect) {
|
|
623
|
+
abandoned.push({ grant: est.grant, creds: est.creds, inbox: est.inbox, server: est.server });
|
|
624
|
+
}
|
|
625
|
+
await closeLink(est.nc);
|
|
626
|
+
}
|
|
627
|
+
// The backoff resets on a session that WORKED, not on one that merely opened. `carried` is not
|
|
628
|
+
// enough on its own: a seat that has produced nothing has an empty backlog snapshot, so a
|
|
629
|
+
// perfectly healthy attach to a QUIET agent would never reset and would climb to the 30s cap
|
|
630
|
+
// over a few blips, which is the seat this whole change cares most about. A session that simply
|
|
631
|
+
// lasted is the other half of the same question.
|
|
632
|
+
if (outcome.carried || Date.now() - startedAt >= SESSION_WORKED_MS)
|
|
633
|
+
attempt = 0;
|
|
634
|
+
if (!reconnect) {
|
|
635
|
+
// One-shot: a faulted session still throws, so `--no-reconnect` exits the way it does today.
|
|
636
|
+
if (outcome.error)
|
|
637
|
+
throw outcome.error;
|
|
638
|
+
return await done({ kind: "ended" });
|
|
639
|
+
}
|
|
640
|
+
if (!isTransportEnd(outcome.reason)) {
|
|
641
|
+
// A faulted end this classification does not recognise is NOT a detach. Printing
|
|
642
|
+
// `detached from` over it would be the silent swallow this whole change exists to remove,
|
|
643
|
+
// so it exits non-zero carrying the fault. Every `fireEnd` site passes a reason today, so
|
|
644
|
+
// this is a guard against a future one that forgets, not a live path.
|
|
645
|
+
if (outcome.error)
|
|
646
|
+
return await done({ kind: "failed", message: outcome.error.message });
|
|
647
|
+
return await done({ kind: "ended" });
|
|
648
|
+
}
|
|
649
|
+
console.error(c.dim("[cotal: connection lost, reconnecting]"));
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
export async function attach(args) {
|
|
653
|
+
const v = args.values;
|
|
654
|
+
if (!v.name) {
|
|
655
|
+
console.error(c.red("--name is required"));
|
|
656
|
+
process.exit(1);
|
|
657
|
+
}
|
|
658
|
+
const reconnecting = v["no-reconnect"] !== true;
|
|
659
|
+
// Seat-locality first, exactly as `stop` does it: attaching to a seat means reaching the process,
|
|
660
|
+
// which only its host manager has. Resolved ONCE — the seat does not move between reconnects, and
|
|
661
|
+
// a manager that stops answering is a transient the loop already retries through.
|
|
662
|
+
const on = await pinForTarget(v, "cotal attach");
|
|
663
|
+
const detach = detachKey();
|
|
664
|
+
const hold = holdTerminal();
|
|
665
|
+
let verdict;
|
|
316
666
|
try {
|
|
317
|
-
await
|
|
667
|
+
verdict = await runAttachLoop(v, on, reconnecting, detach, hold);
|
|
318
668
|
}
|
|
319
669
|
finally {
|
|
320
|
-
|
|
670
|
+
// The terminal comes back before anything else happens, whatever ended the attach — including
|
|
671
|
+
// a throw out of the one-shot path, which is how `--no-reconnect` keeps its old exit.
|
|
672
|
+
hold.restore();
|
|
673
|
+
}
|
|
674
|
+
if (verdict.kind === "failed") {
|
|
675
|
+
console.error(c.red(`✗ ${verdict.message}`));
|
|
676
|
+
process.exit(1);
|
|
677
|
+
}
|
|
678
|
+
if (verdict.kind === "gone") {
|
|
679
|
+
console.error(c.dim(`\nseat ${v.name} is gone`));
|
|
680
|
+
return;
|
|
321
681
|
}
|
|
322
682
|
console.error(c.dim(`\ndetached from ${v.name}`));
|
|
323
683
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mint.d.ts","sourceRoot":"","sources":["../../src/commands/mint.ts"],"names":[],"mappings":"AAEA,OAAO,EAcL,KAAK,UAAU,EAGhB,MAAM,gBAAgB,CAAC;AAKxB;;;;oGAIoG;AACpG,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"mint.d.ts","sourceRoot":"","sources":["../../src/commands/mint.ts"],"names":[],"mappings":"AAEA,OAAO,EAcL,KAAK,UAAU,EAGhB,MAAM,gBAAgB,CAAC;AAKxB;;;;oGAIoG;AACpG,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmK1D"}
|