@cotal-ai/manager 0.11.6 → 0.13.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/README.md +42 -0
- package/dist/commands.js +27 -4
- package/dist/commands.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/launch.d.ts +6 -1
- package/dist/launch.d.ts.map +1 -1
- package/dist/launch.js +12 -2
- package/dist/launch.js.map +1 -1
- package/dist/manager.d.ts +257 -3
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +1443 -46
- package/dist/manager.js.map +1 -1
- package/dist/resume.d.ts +17 -0
- package/dist/resume.d.ts.map +1 -0
- package/dist/resume.js +142 -0
- package/dist/resume.js.map +1 -0
- package/dist/runtime/pty.d.ts.map +1 -1
- package/dist/runtime/pty.js +11 -0
- package/dist/runtime/pty.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -12,3 +12,45 @@ each other; they meet at runtime over NATS.
|
|
|
12
12
|
|
|
13
13
|
See [docs/architecture.md](../../docs/architecture.md) (*Manager*) and the
|
|
14
14
|
[root AGENTS.md](../../AGENTS.md) for the tier rules.
|
|
15
|
+
|
|
16
|
+
## Maintenance API
|
|
17
|
+
|
|
18
|
+
The admin control operations `preparePreservation {attemptId}` and
|
|
19
|
+
`commitPreservation {attemptId}` form a crash-safe handshake. Prepare fences new lifecycle/control
|
|
20
|
+
work, waits for already accepted work, and returns a `cotal-manager-resume/v1` non-secret inventory
|
|
21
|
+
without stopping a child. The coordinator must fsync that inventory into its locked maintenance
|
|
22
|
+
attempt before commit hard-stops and authoritatively awaits managed children without deprovisioning.
|
|
23
|
+
A failed child stop returns `ok: false` with the inventory and per-agent failures; callers must not
|
|
24
|
+
publish a completed maintenance cut. `abortPreservation {attemptId}` returns an abandoned prepare to
|
|
25
|
+
active mode only before commit starts. Runtime providers must implement `AgentHandle.waitForExit()`;
|
|
26
|
+
otherwise commit fails closed instead of guessing that the child is gone.
|
|
27
|
+
|
|
28
|
+
Library composition roots can call `Manager.preserveState({ attemptId, persistInventory })` and later use
|
|
29
|
+
`Manager.resumePreserved()` on a fresh active manager. The complete inventory is preflighted before
|
|
30
|
+
the first child launches. Static and open entries reuse and validate the exact retained principal.
|
|
31
|
+
User-auth entries are validated internally through `resolveAuthProvider().validateRetainedAgent()`;
|
|
32
|
+
the manager never calls `grantAgent` or provisions a replacement identity. Ordinary
|
|
33
|
+
`Manager.stop()` remains destructive while the manager is active.
|
|
34
|
+
|
|
35
|
+
After restore, start the manager with `supervise --resume-attempt <id>`, wait for normal manager
|
|
36
|
+
readiness, then send the admin control request:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{"op":"resumePreserved","args":{"attemptId":"<id>","inventory":{"version":"cotal-manager-resume/v1","space":"<space>","createdAt":"<iso>","agents":[]}}}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The request is limited to 512 KiB and parsed with strict nested schemas; unknown fields are rejected.
|
|
43
|
+
The reply carries the attempt id, `state: "awaitingCommit"`, and one result per inventory agent.
|
|
44
|
+
Activated agents remain cleanup-suppressed and ordinary lifecycle work stays fenced. `commitResume`
|
|
45
|
+
revalidates every exact retained handle, principal, presence entry, file, static credential, and user
|
|
46
|
+
authority row, then returns `state: "awaitingFinalize"` plus a `durableCommitToken`; it deliberately
|
|
47
|
+
does not release the fence or cleanup suppression. The coordinator must durably record that result
|
|
48
|
+
before echoing its token in the separate admin request:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{"op":"finalizeResume","args":{"attemptId":"<id>","durableCommitToken":"<64 lowercase hex chars>"}}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Only token-bound finalization releases ordinary destructive lifecycle semantics. Both operations are
|
|
55
|
+
same-attempt idempotent. A manager signal or lease loss after commit but before finalization remains
|
|
56
|
+
retention-safe, while failed or partial activation cannot be committed or finalized.
|
package/dist/commands.js
CHANGED
|
@@ -32,6 +32,14 @@ async function runManager(args, defaultRuntime) {
|
|
|
32
32
|
// before the manager comes up or any agent is spawned.
|
|
33
33
|
const roster = v.roster ? loadRoster(v.roster) : [];
|
|
34
34
|
const launchSpec = v.launch ? loadLaunchSpec(v.launch) : undefined;
|
|
35
|
+
if (v["resume-attempt"] && (v.roster || v.launch || v.spawn)) {
|
|
36
|
+
console.error(c.red("✗ --resume-attempt cannot be combined with --roster, --launch, or --spawn; retained agents resume only through the attempt-bound admin control op"));
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
if (v["resume-commit-token"] && !v["resume-attempt"]) {
|
|
40
|
+
console.error(c.red("✗ --resume-commit-token requires --resume-attempt"));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
35
43
|
if (!(await isReachable(server))) {
|
|
36
44
|
console.error(c.red(`Can't reach NATS at ${server}. Run: cotal up`));
|
|
37
45
|
process.exit(1);
|
|
@@ -45,7 +53,15 @@ async function runManager(args, defaultRuntime) {
|
|
|
45
53
|
// The published-binary supervisor resolves connectors from the operator manifest (seeded +
|
|
46
54
|
// `ext add`ed), NOT from static imports — `bin/cotal.ts` no longer registers any. A direct
|
|
47
55
|
// library `Manager` keeps the registry-only default (opt-in preserved).
|
|
48
|
-
mgr = new Manager({
|
|
56
|
+
mgr = new Manager({
|
|
57
|
+
space,
|
|
58
|
+
servers: server,
|
|
59
|
+
runtime,
|
|
60
|
+
consolePort,
|
|
61
|
+
installedExtensions: true,
|
|
62
|
+
resumeAttemptId: v["resume-attempt"],
|
|
63
|
+
resumeDurableCommitToken: v["resume-commit-token"],
|
|
64
|
+
});
|
|
49
65
|
}
|
|
50
66
|
catch (e) {
|
|
51
67
|
console.error(c.red(`✗ ${e.message}`));
|
|
@@ -58,7 +74,12 @@ async function runManager(args, defaultRuntime) {
|
|
|
58
74
|
c.dim("\n spawn: cotal spawn --detach <persona> · stop: cotal stop --name <n> (Ctrl-C to shut down)"));
|
|
59
75
|
// Register shutdown handlers before any spawning, so a Ctrl-C during the (possibly slow,
|
|
60
76
|
// staggered) boot tears the manager and its spawned teammates down rather than orphaning them.
|
|
61
|
-
const shutdown = () => void mgr.stop()
|
|
77
|
+
const shutdown = () => void mgr.stop()
|
|
78
|
+
.then(() => process.exit(0))
|
|
79
|
+
.catch((e) => {
|
|
80
|
+
process.exitCode = 1;
|
|
81
|
+
console.error(c.red(`✗ ${e.message}`));
|
|
82
|
+
});
|
|
62
83
|
process.on("SIGINT", shutdown);
|
|
63
84
|
process.on("SIGTERM", shutdown);
|
|
64
85
|
// Declarative boot: bring up each rostered agent through the same spawn path as a detached spawn.
|
|
@@ -111,7 +132,7 @@ async function runManager(args, defaultRuntime) {
|
|
|
111
132
|
console.error(c.red(`✗ ${la.name}: ${e.message}`));
|
|
112
133
|
continue;
|
|
113
134
|
}
|
|
114
|
-
const reply = await mgr.startAgent(launchAgentToStartOpts(la, configPath, launchSpec.owner));
|
|
135
|
+
const reply = await mgr.startAgent(launchAgentToStartOpts(la, configPath, launchSpec.owner, launchSpec.runId));
|
|
115
136
|
if (!reply.ok) {
|
|
116
137
|
console.error(c.red(`✗ ${la.name}: ${reply.error}`));
|
|
117
138
|
continue;
|
|
@@ -133,7 +154,7 @@ const managerCommands = [
|
|
|
133
154
|
kind: "command",
|
|
134
155
|
name: "supervise",
|
|
135
156
|
group: "Manager",
|
|
136
|
-
summary: "run a manager - [--runtime <name>] (default pty; extension runtimes are explicit-only) [--space <s>] [--server <url>] [--console-port <n>] [--roster <file>] [--launch <spec>]",
|
|
157
|
+
summary: "run a manager - [--runtime <name>] (default pty; extension runtimes are explicit-only) [--space <s>] [--server <url>] [--console-port <n>] [--roster <file>] [--launch <spec>] [--resume-attempt <id>]",
|
|
137
158
|
flags: [
|
|
138
159
|
{ name: "space", type: "string", value: "<s>", description: "space to supervise (default: this folder's auth space)" },
|
|
139
160
|
{ name: "server", type: "string", value: "<url>", description: "broker URL (default: the local mesh)" },
|
|
@@ -141,6 +162,8 @@ const managerCommands = [
|
|
|
141
162
|
{ name: "console-port", type: "string", value: "<n>", description: "protocol-console port" },
|
|
142
163
|
{ name: "roster", type: "string", value: "<file>", description: "declarative roster to boot at startup" },
|
|
143
164
|
{ name: "launch", type: "string", value: "<spec>", description: "resolved mesh-manifest launch spec (cotal up -f / spawn -f)" },
|
|
165
|
+
{ name: "resume-attempt", type: "string", value: "<id>", description: "maintenance restore attempt accepted by resumePreserved" },
|
|
166
|
+
{ name: "resume-commit-token", type: "string", value: "<token>", description: "durable resume commit evidence for crash recovery" },
|
|
144
167
|
{ name: "spawn", type: "string", value: "<names>", description: "comma-separated personas to pre-spawn at startup" },
|
|
145
168
|
],
|
|
146
169
|
requiredExtensions: (args) => {
|
package/dist/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,cAAc,EACd,aAAa,EACb,QAAQ,GAGT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAoB,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,SAAS,CAAC;AAI5B;qGACqG;AACrG,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC,CAAC,KAAK,IAAI,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,IAAI,aAAa,CAAC;AACpF,CAAC;AAED;;;;;;8FAM8F;AAC9F,wFAAwF;AACxF,0FAA0F;AAC1F,wBAAwB;AACxB,KAAK,UAAU,UAAU,CAAC,IAAgB,EAAE,cAA2B;IACrE,MAAM,CAAC,GAAG,IAAI,CAAC,MAAgB,CAAC;IAChC,IAAI,OAAO,GAAG,cAAc,CAAC;IAC7B,IAAI,cAAc,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAC3C,OAAO,GAAG,CAAC,CAAC,OAAsB,CAAC;IACrC,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,cAAc,CAAC;IAC1C,kGAAkG;IAClG,uDAAuD;IACvD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,MAAM,iBAAiB,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,oGAAoG;IACpG,iGAAiG;IACjG,0DAA0D;IAC1D,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,2FAA2F;QAC3F,2FAA2F;QAC3F,wEAAwE;QACxE,GAAG,GAAG,IAAI,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import "./commands.js";
|
|
2
|
-
export { Manager, READINESS_TIMEOUT_MS, type ManagerOptions } from "./manager.js";
|
|
2
|
+
export { Manager, READINESS_TIMEOUT_MS, type ManagerOptions, type ManagerMaintenanceState, type ManagerResumeIdentity, type ManagerResumeAgent, type ManagerResumeInventory, type ManagerResumeResult, type ManagerPreserveFailure, type ManagerPreservationPlan, type ManagerPreserveOptions, type ManagerPreserveResult, } from "./manager.js";
|
|
3
|
+
export { parseResumeControlArgs, parseResumeCommitArgs, parseResumeFinalizeArgs, MAX_RESUME_CONTROL_BYTES, MAX_RESUME_COMMIT_BYTES, type ResumeControlArgs, } from "./resume.js";
|
|
3
4
|
export { createRuntime } from "./runtime/index.js";
|
|
4
5
|
export type { Runtime, AgentHandle, AttachSession, RuntimeKind, RuntimeMode } from "./runtime/index.js";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAEvB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAEvB,OAAO,EACL,OAAO,EACP,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import "./commands.js"; // self-registers the control-plane commands on import
|
|
2
|
-
export { Manager, READINESS_TIMEOUT_MS } from "./manager.js";
|
|
2
|
+
export { Manager, READINESS_TIMEOUT_MS, } from "./manager.js";
|
|
3
|
+
export { parseResumeControlArgs, parseResumeCommitArgs, parseResumeFinalizeArgs, MAX_RESUME_CONTROL_BYTES, MAX_RESUME_COMMIT_BYTES, } from "./resume.js";
|
|
3
4
|
export { createRuntime } from "./runtime/index.js";
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC,CAAC,sDAAsD;AAE9E,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC,CAAC,sDAAsD;AAE9E,OAAO,EACL,OAAO,EACP,oBAAoB,GAWrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,GAExB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/launch.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare function launchSpecForRun(root: string, runId: string): MeshLaunc
|
|
|
15
15
|
export declare function materializePersona(root: string, runId: string, a: MeshLaunchAgent): string;
|
|
16
16
|
/** Build the manager spawn opts for a launch agent: identity/role/model/variant + the resolved object
|
|
17
17
|
* (which carries the ACL authority) + the materialized configPath. */
|
|
18
|
-
export declare function launchAgentToStartOpts(a: MeshLaunchAgent, configPath: string, owner?: string): {
|
|
18
|
+
export declare function launchAgentToStartOpts(a: MeshLaunchAgent, configPath: string, owner?: string, runId?: string): {
|
|
19
19
|
name: string;
|
|
20
20
|
agent: string;
|
|
21
21
|
role?: string;
|
|
@@ -24,5 +24,10 @@ export declare function launchAgentToStartOpts(a: MeshLaunchAgent, configPath: s
|
|
|
24
24
|
config: string;
|
|
25
25
|
resolved: MeshLaunchAgent;
|
|
26
26
|
owner?: string;
|
|
27
|
+
launchRef?: {
|
|
28
|
+
runId: string;
|
|
29
|
+
requested: string;
|
|
30
|
+
hash: string;
|
|
31
|
+
};
|
|
27
32
|
};
|
|
28
33
|
//# sourceMappingURL=launch.d.ts.map
|
package/dist/launch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyH,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAmDlM;qGACqG;AACrG,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAe3D;AAED;;;;;kFAKkF;AAClF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAe5E;AA+BD;;wGAEwG;AACxG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAkB1F;AAED;uEACuE;AACvE,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG;
|
|
1
|
+
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyH,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAmDlM;qGACqG;AACrG,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAe3D;AAED;;;;;kFAKkF;AAClF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAe5E;AA+BD;;wGAEwG;AACxG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAkB1F;AAED;uEACuE;AACvE,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG;IAC9G,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE,CAYA"}
|
package/dist/launch.js
CHANGED
|
@@ -155,8 +155,18 @@ export function materializePersona(root, runId, a) {
|
|
|
155
155
|
}
|
|
156
156
|
/** Build the manager spawn opts for a launch agent: identity/role/model/variant + the resolved object
|
|
157
157
|
* (which carries the ACL authority) + the materialized configPath. */
|
|
158
|
-
export function launchAgentToStartOpts(a, configPath, owner) {
|
|
159
|
-
return {
|
|
158
|
+
export function launchAgentToStartOpts(a, configPath, owner, runId) {
|
|
159
|
+
return {
|
|
160
|
+
name: a.name,
|
|
161
|
+
agent: a.agent,
|
|
162
|
+
role: a.role,
|
|
163
|
+
model: a.model,
|
|
164
|
+
variant: a.variant,
|
|
165
|
+
config: configPath,
|
|
166
|
+
resolved: a,
|
|
167
|
+
owner,
|
|
168
|
+
launchRef: runId ? { runId, requested: a.name, hash: a.hash } : undefined,
|
|
169
|
+
};
|
|
160
170
|
}
|
|
161
171
|
/** Quote a frontmatter scalar so the agent-file parser reads it back unchanged (it strips a matching
|
|
162
172
|
* outer quote pair). Plain tokens pass through; anything with structural chars is double-quoted. */
|
package/dist/launch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"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"}
|
package/dist/manager.d.ts
CHANGED
|
@@ -18,11 +18,132 @@ export interface ManagerOptions {
|
|
|
18
18
|
workspaceRoot?: string;
|
|
19
19
|
/** Port for the console + attach HTTP/WS endpoint (loopback). 0 → ephemeral. */
|
|
20
20
|
consolePort?: number;
|
|
21
|
+
/** Internal/test override for the preservation child-exit deadline. */
|
|
22
|
+
preserveStopTimeoutMs?: number;
|
|
23
|
+
/** Restore attempt this fresh manager will accept for the admin resumePreserved control op. */
|
|
24
|
+
resumeAttemptId?: string;
|
|
25
|
+
/** Fsynced coordinator evidence recovered after commit but before finalize. */
|
|
26
|
+
resumeDurableCommitToken?: string;
|
|
21
27
|
/** Resolve connectors from the installed `cotal ext` manifest (lazy import + live-remove honored),
|
|
22
28
|
* as the published binary does. A library composition leaves this off and resolves only what its
|
|
23
29
|
* composition root imported — a direct `new Manager()` never implicitly reads the machine manifest. */
|
|
24
30
|
installedExtensions?: boolean;
|
|
25
31
|
}
|
|
32
|
+
export type ManagerMaintenanceState = "active" | "preserving" | "preserved";
|
|
33
|
+
export type ManagerResumeIdentity = {
|
|
34
|
+
mode: "open";
|
|
35
|
+
id: string;
|
|
36
|
+
lifecycleUid: string;
|
|
37
|
+
} | {
|
|
38
|
+
mode: "static";
|
|
39
|
+
id: string;
|
|
40
|
+
lifecycleUid: string;
|
|
41
|
+
credential: {
|
|
42
|
+
kind: "file";
|
|
43
|
+
path: string;
|
|
44
|
+
sha256: string;
|
|
45
|
+
};
|
|
46
|
+
} | {
|
|
47
|
+
mode: "user";
|
|
48
|
+
owner: string;
|
|
49
|
+
actor: string;
|
|
50
|
+
lifecycleUid: string;
|
|
51
|
+
actorToken: {
|
|
52
|
+
kind: "file";
|
|
53
|
+
path: string;
|
|
54
|
+
sha256: string;
|
|
55
|
+
};
|
|
56
|
+
sentinelCredential: {
|
|
57
|
+
kind: "file";
|
|
58
|
+
path: string;
|
|
59
|
+
sha256: string;
|
|
60
|
+
};
|
|
61
|
+
health: {
|
|
62
|
+
kind: "file";
|
|
63
|
+
path: string;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
export interface ManagerResumeAgent {
|
|
67
|
+
space: string;
|
|
68
|
+
name: string;
|
|
69
|
+
role?: string;
|
|
70
|
+
identity: ManagerResumeIdentity;
|
|
71
|
+
launch: {
|
|
72
|
+
connector: string;
|
|
73
|
+
runtime: string;
|
|
74
|
+
cwd: string;
|
|
75
|
+
source: {
|
|
76
|
+
kind: "persona";
|
|
77
|
+
ref: string;
|
|
78
|
+
configPath: string;
|
|
79
|
+
configSha256: string;
|
|
80
|
+
} | {
|
|
81
|
+
kind: "manifest";
|
|
82
|
+
runId?: string;
|
|
83
|
+
requested: string;
|
|
84
|
+
hash: string;
|
|
85
|
+
configPath: string;
|
|
86
|
+
configSha256: string;
|
|
87
|
+
manifestSha256?: string;
|
|
88
|
+
};
|
|
89
|
+
model?: string;
|
|
90
|
+
variant?: string;
|
|
91
|
+
subscribe?: string[];
|
|
92
|
+
allowSubscribe: string[];
|
|
93
|
+
allowPublish?: string[];
|
|
94
|
+
capabilities?: string[];
|
|
95
|
+
transcript: boolean;
|
|
96
|
+
shareTools?: string;
|
|
97
|
+
/** Original connector fork source, not a captured id for the currently running host session. */
|
|
98
|
+
forkSource?: string;
|
|
99
|
+
/** Values are deliberately not persisted: connector launch options are opaque and may be secrets. */
|
|
100
|
+
unresolvedLaunchOptionKeys?: string[];
|
|
101
|
+
};
|
|
102
|
+
/** Host-local files that must survive the maintenance cut, including `.cotal/run` artifacts. */
|
|
103
|
+
dependencies: string[];
|
|
104
|
+
spawner: string;
|
|
105
|
+
/** User-auth ledger delegation parent; distinct from manager process-ownership spawner. */
|
|
106
|
+
authorityParent?: string;
|
|
107
|
+
startedAt: string;
|
|
108
|
+
}
|
|
109
|
+
export interface ManagerResumeInventory {
|
|
110
|
+
version: "cotal-manager-resume/v1";
|
|
111
|
+
space: string;
|
|
112
|
+
createdAt: string;
|
|
113
|
+
agents: ManagerResumeAgent[];
|
|
114
|
+
}
|
|
115
|
+
export interface ManagerPreserveFailure {
|
|
116
|
+
name: string;
|
|
117
|
+
id: string;
|
|
118
|
+
error: string;
|
|
119
|
+
}
|
|
120
|
+
export interface ManagerPreserveResult {
|
|
121
|
+
ok: boolean;
|
|
122
|
+
attemptId: string;
|
|
123
|
+
state: Exclude<ManagerMaintenanceState, "active">;
|
|
124
|
+
inventory: ManagerResumeInventory;
|
|
125
|
+
failures: ManagerPreserveFailure[];
|
|
126
|
+
}
|
|
127
|
+
export interface ManagerPreservationPlan {
|
|
128
|
+
ok: boolean;
|
|
129
|
+
attemptId: string;
|
|
130
|
+
state: "prepared" | "preserved";
|
|
131
|
+
inventory: ManagerResumeInventory;
|
|
132
|
+
failures: ManagerPreserveFailure[];
|
|
133
|
+
}
|
|
134
|
+
export interface ManagerPreserveOptions {
|
|
135
|
+
attemptId: string;
|
|
136
|
+
/** Must verify the coordinator's locked attempt and durably fsync the inventory before resolving. */
|
|
137
|
+
persistInventory(inventory: ManagerResumeInventory): Promise<void>;
|
|
138
|
+
}
|
|
139
|
+
export interface ManagerResumeResult {
|
|
140
|
+
ok: boolean;
|
|
141
|
+
agents: Array<{
|
|
142
|
+
name: string;
|
|
143
|
+
reply: ControlReply;
|
|
144
|
+
}>;
|
|
145
|
+
error?: string;
|
|
146
|
+
}
|
|
26
147
|
/** A spawn request, typed. The control-plane `start` op parses one of these out of an
|
|
27
148
|
* untyped request; roster boot constructs them directly. Both funnel into {@link Manager.startAgent}. */
|
|
28
149
|
export interface StartAgentOpts {
|
|
@@ -80,6 +201,12 @@ export interface StartAgentOpts {
|
|
|
80
201
|
* workspaceRoot. Lets different agents run in different repos/folders. A relative path is
|
|
81
202
|
* resolved against the manager's workspace root. Omitted → the agent uses workspaceRoot. */
|
|
82
203
|
cwd?: string;
|
|
204
|
+
/** Internal resolved-manifest provenance used by the preservation inventory. */
|
|
205
|
+
launchRef?: {
|
|
206
|
+
runId: string;
|
|
207
|
+
requested: string;
|
|
208
|
+
hash: string;
|
|
209
|
+
};
|
|
83
210
|
}
|
|
84
211
|
/**
|
|
85
212
|
* The agent supervisor: a long-lived mesh node that owns agent process lifecycle.
|
|
@@ -95,6 +222,7 @@ export declare class Manager {
|
|
|
95
222
|
/** See {@link ManagerOptions.installedExtensions}. */
|
|
96
223
|
private readonly installedExtensions;
|
|
97
224
|
private readonly runtime;
|
|
225
|
+
private readonly preserveStopTimeoutMs;
|
|
98
226
|
private readonly agents;
|
|
99
227
|
/** Names whose spawn is in flight (reserved synchronously before the provision await) — counted
|
|
100
228
|
* toward the ceiling so two concurrent same-name spawns can't both pass the gate (P4a). */
|
|
@@ -102,6 +230,29 @@ export declare class Manager {
|
|
|
102
230
|
/** Expiry stamps (`startedAt + MIN_LIFETIME`) for slots that freed while still young — a
|
|
103
231
|
* count-only, lazily-pruned recycle floor (P4c). Pruned + summed into the ceiling gate. */
|
|
104
232
|
private cooling;
|
|
233
|
+
/** Names RESERVED PENDING RETIREMENT (#29 piece 3): a despawned agent's name stays held until
|
|
234
|
+
* the auth plane confirms its lifecycle's retirement TERMINAL over the auth-admin rail — the
|
|
235
|
+
* alias-reuse gate that closes the same-name despawn→respawn race at its root. An UNCERTAIN
|
|
236
|
+
* outcome (rail down, timeout) keeps the hold with the last attempt's copy; a same-name spawn
|
|
237
|
+
* refuses legibly AND re-fires the request. In-memory: across a manager restart the durable
|
|
238
|
+
* truth is the auth-side lifecycle head itself (an unretired head refuses issuance — the
|
|
239
|
+
* named residual this belt narrows, not replaces). */
|
|
240
|
+
private retiring;
|
|
241
|
+
/** SINGLE-FLIGHT guard for {@link requestRetirement} (audit #1): one in-flight rail round-trip per
|
|
242
|
+
* (name, lifecycleUid). The detached `deprovision` call and every same-name-spawn nudge for THAT
|
|
243
|
+
* lifecycle JOIN the same promise instead of stacking independent requests that dual-enter the
|
|
244
|
+
* barrier; a fresh trigger after it settles re-drives. Keyed by (name, uid) — NOT name alone — so a
|
|
245
|
+
* same-name SUCCESSOR (which can spawn after the hold clears but before this flight's `nc.close`
|
|
246
|
+
* yield settles) never joins the predecessor's rail request and skips its own retirement. */
|
|
247
|
+
private retiringFlight;
|
|
248
|
+
/** SINGLE-FLIGHT guard for {@link deprovision} (INT-2/C): one in-flight teardown per
|
|
249
|
+
* (name, lifecycleUid). The detached freeSlot teardown and every same-name-spawn nudge that
|
|
250
|
+
* re-drives it JOIN one promise instead of launching a SECOND, concurrent teardown. Without it,
|
|
251
|
+
* two teardowns race the NAME-KEYED ledger revoke: once the first frees the alias and a successor
|
|
252
|
+
* mints its own row, the second's delayed revoke (which carries no lifecycle coordinate) would
|
|
253
|
+
* delete the SUCCESSOR's standing authority. Keyed by (name, uid) so a later same-name lifecycle
|
|
254
|
+
* gets its own flight; a fresh trigger after settle re-drives only if the hold still stands. */
|
|
255
|
+
private deprovisioningFlight;
|
|
105
256
|
private readonly attach;
|
|
106
257
|
private ep;
|
|
107
258
|
/** Space trust material when the mesh runs in auth mode (`.cotal/auth` present);
|
|
@@ -119,6 +270,29 @@ export declare class Manager {
|
|
|
119
270
|
private leaseTimer?;
|
|
120
271
|
/** The class-2 renewal owner's half-TTL schedule (D5 slice 5); armed only on auth meshes. */
|
|
121
272
|
private credRenewTimer?;
|
|
273
|
+
private maintenanceState;
|
|
274
|
+
private lifecycleInFlight;
|
|
275
|
+
private lifecycleDrainWaiters;
|
|
276
|
+
private preservationTask?;
|
|
277
|
+
private preparationTask?;
|
|
278
|
+
private preservationGeneration;
|
|
279
|
+
private preservationAttemptId?;
|
|
280
|
+
private preservationStarted;
|
|
281
|
+
private preservationFailures;
|
|
282
|
+
private unverifiedStops;
|
|
283
|
+
private preservationInventory?;
|
|
284
|
+
private resumeAttemptId?;
|
|
285
|
+
private resumeInventoryDigest?;
|
|
286
|
+
private resumeInventory?;
|
|
287
|
+
private resumeTask?;
|
|
288
|
+
private resumeResult?;
|
|
289
|
+
private resumeRequired;
|
|
290
|
+
private resumeAwaitingCommit;
|
|
291
|
+
private resumeCommitted;
|
|
292
|
+
private resumeCommitTask?;
|
|
293
|
+
private resumeFinalized;
|
|
294
|
+
private resumeDurableCommitToken?;
|
|
295
|
+
private readonly resumedAgentNames;
|
|
122
296
|
constructor(opts: ManagerOptions);
|
|
123
297
|
get runtimeKind(): string;
|
|
124
298
|
/** The console page URL (manager-hosted, loopback). */
|
|
@@ -131,6 +305,35 @@ export declare class Manager {
|
|
|
131
305
|
* (no responder) is recorded honestly: the daemon's 75% source re-read remains the adoption backstop.
|
|
132
306
|
* Never throws — renewal failure must be LOUD (log + record), not fatal to the supervisor. */
|
|
133
307
|
private renewDaemonCreds;
|
|
308
|
+
/** Admit one lifecycle/control operation while active. The synchronous increment is the fence:
|
|
309
|
+
* preserveState flips state before its first await, so work is either counted or rejected. */
|
|
310
|
+
private beginLifecycle;
|
|
311
|
+
private releaseLifecycle;
|
|
312
|
+
/** A cleanup spawned by accepted active-mode work is part of that work for maintenance draining,
|
|
313
|
+
* even where the ordinary control reply remains fire-and-forget. */
|
|
314
|
+
private trackDeprovision;
|
|
315
|
+
private awaitLifecycleDrain;
|
|
316
|
+
private maintenanceError;
|
|
317
|
+
/** Fence and build the inventory without stopping a child. The coordinator must durably persist
|
|
318
|
+
* this exact plan before calling commitPreservation with the same attempt id. */
|
|
319
|
+
preparePreservation(attemptId: string): Promise<ManagerPreservationPlan>;
|
|
320
|
+
private assertPreservationGeneration;
|
|
321
|
+
private runPreparation;
|
|
322
|
+
/** Stop children only after the coordinator has persisted the prepared inventory. Same-attempt
|
|
323
|
+
* retries are idempotent; a different attempt is refused. */
|
|
324
|
+
commitPreservation(attemptId: string): Promise<ManagerPreserveResult>;
|
|
325
|
+
/** Recover an abandoned prepare before any child stop. Once commit begins, preservation is
|
|
326
|
+
* irreversible and remains fenced until the coordinator records failure/recourse. */
|
|
327
|
+
abortPreservation(attemptId: string): void;
|
|
328
|
+
/** In-process convenience that preserves the crash barrier by awaiting durable persistence between
|
|
329
|
+
* prepare and commit. Wire callers use the explicit two-phase admin operations. */
|
|
330
|
+
preserveState(opts: ManagerPreserveOptions): Promise<ManagerPreserveResult>;
|
|
331
|
+
private runPreservation;
|
|
332
|
+
private awaitHandleExit;
|
|
333
|
+
private inventoryReferenceError;
|
|
334
|
+
private fileDigest;
|
|
335
|
+
private fileDigestOrEmpty;
|
|
336
|
+
private resumeEntry;
|
|
134
337
|
/** Tear down every managed agent's footprint — the shared teardown for EVERY manager-exit path (#159
|
|
135
338
|
* B2): graceful {@link stop} AND the fail-closed lease-loss exit ({@link renewLease}). A manager exit is
|
|
136
339
|
* a mass agent-exit, and without this its agents' footprints (creds files + `dm_`/`dlv_` durables + ACL
|
|
@@ -141,6 +344,7 @@ export declare class Manager {
|
|
|
141
344
|
* touches NEITHER the lease NOR the endpoints — the caller owns those (and lease loss must NOT release
|
|
142
345
|
* the key, which may now belong to a replacement holder). */
|
|
143
346
|
private teardownManagedAgents;
|
|
347
|
+
private stopRetainedAgentsOnExit;
|
|
144
348
|
stop(): Promise<void>;
|
|
145
349
|
/** Refresh the singleton lease before the bucket TTL expires it. On loss (missed the TTL, or another
|
|
146
350
|
* manager took over after a gap) FAIL CLOSED: stop serving control at once so we can't double-process
|
|
@@ -148,6 +352,8 @@ export declare class Manager {
|
|
|
148
352
|
* while we'd still be serving) and do NOT release the key — it now belongs to that replacement. */
|
|
149
353
|
private renewLease;
|
|
150
354
|
private handle;
|
|
355
|
+
private commitResumeActivation;
|
|
356
|
+
private handleActive;
|
|
151
357
|
/** Collapsed despawn/attach authorization (P4b). The caller already reached the privileged or
|
|
152
358
|
* admin tier (cred-gated). On the admin tier any named target is allowed (operator). On the
|
|
153
359
|
* privileged tier a named target is allowed if it's the caller's OWN child (`spawner ==
|
|
@@ -162,6 +368,7 @@ export declare class Manager {
|
|
|
162
368
|
* key), so the wire form derives under DEV_OWNER. Every comparison against an AUTHENTICATED wire
|
|
163
369
|
* id (presence card.id, control from.id) must go through this, never raw `a.id`. */
|
|
164
370
|
private managedPrincipal;
|
|
371
|
+
private resumeLivenessErrors;
|
|
165
372
|
/** Self-despawn (P2b): stop the managed agent whose id == the authenticated caller. The
|
|
166
373
|
* no-name self-op can only ever resolve to the caller's OWN managed entry (ids are unique
|
|
167
374
|
* per spawn + non-forgeable in auth mode), never a peer — so it's structurally incapable of
|
|
@@ -181,6 +388,16 @@ export declare class Manager {
|
|
|
181
388
|
* footprint, nor (in `reapChildrenOf`) abort the reap of later siblings. The failure is logged loudly,
|
|
182
389
|
* never swallowed silently. Being the single stop chokepoint, guarding here covers all callers at once. */
|
|
183
390
|
private stopHandle;
|
|
391
|
+
/** Keep an accepted stop inside the lifecycle drain until the runtime proves the child is gone,
|
|
392
|
+
* so a maintenance prepare can never fence ahead of a child that is still dying.
|
|
393
|
+
*
|
|
394
|
+
* An operator-accepted stop frees its slot at once: `stop` replying ✓ means `ps` no longer lists
|
|
395
|
+
* the agent. That cannot omit a still-live child from a cut, because runPreparation drains the
|
|
396
|
+
* lifecycle BEFORE it reads the roster — the exit proof below is what closes the race, not the
|
|
397
|
+
* slot lingering. A recursive reap (`requireAuthoritativeExit`) instead keeps the slot until the
|
|
398
|
+
* wait proves exit: nobody asked for those children to be gone, so they stay managed until the
|
|
399
|
+
* runtime says otherwise, and a runtime that cannot prove exit records an unverified stop. */
|
|
400
|
+
private trackStoppedHandle;
|
|
184
401
|
/** USER-MODE spawn provisioning (the gate-1 counterpart to the static mint block): resolve the
|
|
185
402
|
* OWNER (ctl caller's principal, or the manifest's stamped owner — never a payload field),
|
|
186
403
|
* pre-create the principal-keyed durables + ACL row on the ephemeral provisioner, author the
|
|
@@ -209,9 +426,29 @@ export declare class Manager {
|
|
|
209
426
|
* is the separate per-user-auth work, not this. Tearing down the durables + ACL row still shrinks the
|
|
210
427
|
* delivery surface a stale copy could use. */
|
|
211
428
|
private deprovision;
|
|
212
|
-
/**
|
|
213
|
-
|
|
214
|
-
|
|
429
|
+
/** The actual footprint teardown (wrapped by {@link deprovision}'s single-flight). */
|
|
430
|
+
private driveDeprovision;
|
|
431
|
+
/** Request the auth-side retirement of a departed agent's lifecycle (#29 piece 3): an ephemeral
|
|
432
|
+
* `retirement-requester` credential (request + reply only), the generic `retireLifecycle` op,
|
|
433
|
+
* a STABLE opId (derived from the lifecycleUid, so every retry re-drives the SAME operation),
|
|
434
|
+
* and the four-outcome handling in operator vocabulary. */
|
|
435
|
+
private requestRetirement;
|
|
436
|
+
/** The rail round-trip for one retirement (wrapped by {@link requestRetirement}'s single-flight). */
|
|
437
|
+
private driveRetirement;
|
|
438
|
+
/** The teardown's ASYNC BROKER PHASE: mint the ephemeral target-pinned deprovisioner cred and
|
|
439
|
+
* delete the agent's broker footprint (dm_/dlv_ durables + read-ACL row). Split from
|
|
440
|
+
* {@link deprovision} because it runs LAST in the ordered teardown chain — after the creds/secret
|
|
441
|
+
* shred and the awaited ledger revoke, which precede it in that same single-flighted chain (the
|
|
442
|
+
* revoke is awaited and can be deliberately slow, so it is not merely a synchronous prefix). The name
|
|
443
|
+
* is NOT freed while any teardown phase is still in flight — the hold clears only after the
|
|
444
|
+
* standing-authority revoke AND the lifecycle retirement both confirm (see {@link driveRetirement}) —
|
|
445
|
+
* but the deletes here are still lifecycle-uid-pinned so even a replayed/stale teardown can never
|
|
446
|
+
* reach a same-name successor's footprint (its names embed a different uid). */
|
|
447
|
+
private deprovisionBroker;
|
|
448
|
+
/** Reap a parent's children on its exit (P4b). Every descendant remains managed until the runtime's
|
|
449
|
+
* authoritative wait proves exit; the wait participates in the lifecycle drain, so preservation can
|
|
450
|
+
* never omit a child that may still be alive. Recursive descendants are scheduled before their parent
|
|
451
|
+
* slot can disappear. */
|
|
215
452
|
private reapChildrenOf;
|
|
216
453
|
/** A managed agent's process exited on its own (crash, /exit, finished). Free its slot
|
|
217
454
|
* (rate-floored — exit-driven churn counts) and reap any children it spawned. Idempotent via
|
|
@@ -275,6 +512,23 @@ export declare class Manager {
|
|
|
275
512
|
* defaulting to the manager's own id for roster/pre-spawn — recorded for the spawner
|
|
276
513
|
* ledger (own-children despawn + reap-on-parent-exit). */
|
|
277
514
|
startAgent(opts: StartAgentOpts, spawner?: string): Promise<ControlReply>;
|
|
515
|
+
private startAgentActive;
|
|
516
|
+
/** Preflight the whole inventory before launching its first process, then adopt each exact retained
|
|
517
|
+
* principal without provisioning. A later runtime launch failure is reported per-agent, but malformed
|
|
518
|
+
* or missing inventory material can never produce a partially resumed set. */
|
|
519
|
+
resumePreserved(inventory: ManagerResumeInventory): Promise<ManagerResumeResult>;
|
|
520
|
+
/** Re-read every retained identity input and its current authority without provisioning. This runs
|
|
521
|
+
* during whole-inventory preflight, immediately before each individual spawn, and at commit. */
|
|
522
|
+
private validateRetainedAuthority;
|
|
523
|
+
/** Validate/relaunch one retained inventory entry. Called only through resumePreserved so all
|
|
524
|
+
* records pass the same preflight before the first child is exposed. */
|
|
525
|
+
private resumePreservedAgent;
|
|
526
|
+
private launchPreparedResume;
|
|
527
|
+
private probeStaticCredential;
|
|
528
|
+
/** An uncertain resume remains non-destructive until exact-principal AND exact-incarnation presence
|
|
529
|
+
* arrives later. Same predicate as the readiness fence: a principal-only match would let a
|
|
530
|
+
* wrong/absent-uid presence under the reused alias clear cleanup suppression on another incarnation. */
|
|
531
|
+
private watchResumeAdoption;
|
|
278
532
|
/** #159 B1: wait for a detached launch to reach a REAL outcome before replying — never a liveness-
|
|
279
533
|
* inferring timer. Races three:
|
|
280
534
|
* • the assigned id joins presence (live) → **started** — the honest signal (the manager owns mesh
|