@cotal-ai/manager 0.16.0 → 0.18.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 +2 -1
- package/dist/attach-endpoint.d.ts +53 -59
- package/dist/attach-endpoint.d.ts.map +1 -1
- package/dist/attach-endpoint.js +120 -244
- package/dist/attach-endpoint.js.map +1 -1
- package/dist/commands.js +88 -8
- package/dist/commands.js.map +1 -1
- package/dist/console/app.js +68 -30
- package/dist/console/index.html +3 -2
- package/dist/console/session-bundle.js +9736 -0
- package/dist/console-crypto-shim.d.ts +16 -0
- package/dist/console-crypto-shim.d.ts.map +1 -0
- package/dist/console-crypto-shim.js +20 -0
- package/dist/console-crypto-shim.js.map +1 -0
- package/dist/console-session-entry.d.ts +2 -0
- package/dist/console-session-entry.d.ts.map +1 -0
- package/dist/console-session-entry.js +26 -0
- package/dist/console-session-entry.js.map +1 -0
- package/dist/endpoint-evict.d.ts +29 -0
- package/dist/endpoint-evict.d.ts.map +1 -0
- package/dist/endpoint-evict.js +80 -0
- package/dist/endpoint-evict.js.map +1 -0
- package/dist/holder-liveness.d.ts +40 -0
- package/dist/holder-liveness.d.ts.map +1 -0
- package/dist/holder-liveness.js +98 -0
- package/dist/holder-liveness.js.map +1 -0
- package/dist/manager-service-contract.d.ts +132 -0
- package/dist/manager-service-contract.d.ts.map +1 -0
- package/dist/manager-service-contract.js +332 -0
- package/dist/manager-service-contract.js.map +1 -0
- package/dist/manager.d.ts +519 -22
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +2273 -262
- package/dist/manager.js.map +1 -1
- package/dist/reconcile-gate.d.ts +82 -0
- package/dist/reconcile-gate.d.ts.map +1 -0
- package/dist/reconcile-gate.js +118 -0
- package/dist/reconcile-gate.js.map +1 -0
- package/dist/runtime/pty.d.ts.map +1 -1
- package/dist/runtime/pty.js +15 -2
- package/dist/runtime/pty.js.map +1 -1
- package/dist/session/bridge.d.ts +63 -0
- package/dist/session/bridge.d.ts.map +1 -0
- package/dist/session/bridge.js +157 -0
- package/dist/session/bridge.js.map +1 -0
- package/dist/session/establish.d.ts +212 -0
- package/dist/session/establish.d.ts.map +1 -0
- package/dist/session/establish.js +174 -0
- package/dist/session/establish.js.map +1 -0
- package/dist/session/index.d.ts +12 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +15 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/plane.d.ts +120 -0
- package/dist/session/plane.d.ts.map +1 -0
- package/dist/session/plane.js +327 -0
- package/dist/session/plane.js.map +1 -0
- package/dist/static-lifecycle.d.ts +97 -0
- package/dist/static-lifecycle.d.ts.map +1 -0
- package/dist/static-lifecycle.js +262 -0
- package/dist/static-lifecycle.js.map +1 -0
- package/package.json +10 -6
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The manager's v0.4 SERVICE CONTRACT (control-surface P2 item 1): the §13.7 cluster document +
|
|
3
|
+
* compiled command contracts that let the manager register as an ordinary `service` endpoint and
|
|
4
|
+
* serve typed commands on the `ep.*` rails, dual-served beside its bespoke
|
|
5
|
+
* `ctl.<tier>.<owner>.<actor>` control subjects until 1d deletes those.
|
|
6
|
+
*
|
|
7
|
+
* This module is PURE DATA + schema (no broker, no barrier, no wire I/O): the content-addressed
|
|
8
|
+
* cluster document (the authority for every command's served shape) and the provenance-branded
|
|
9
|
+
* `compileContract` pairs each `EpCommandDef` must carry. The registration/serve WIRING lives in
|
|
10
|
+
* the manager (`registerManagerService`).
|
|
11
|
+
*
|
|
12
|
+
* REVISION 2 (slice 1b): the FULL op fan-out. Every served `ctl` op maps to a typed command; the
|
|
13
|
+
* v0.3 op names map onto the Appendix-B caller vocabulary where one exists (`start` -> `spawn`;
|
|
14
|
+
* the named `stop` -> `despawn` — on the v0.3 surface a named stop and a despawn are the same
|
|
15
|
+
* terminal; the self no-name `stop` -> `stop` with authz-mode `self`; the per-agent `status`
|
|
16
|
+
* read -> `inspect`, distinct from the 1a manager-level `status`). Targeting: `despawn`/`attach`
|
|
17
|
+
* ride owner mode (the target block names the agent's principal + lifecycle uid; the fresh
|
|
18
|
+
* resolver checks currency). `child` mode is DELIBERATELY NOT DECLARED anywhere — the panel's 1b
|
|
19
|
+
* gate requires a DURABLE spawner record before child mode exists, so it fails closed by absence
|
|
20
|
+
* until that record lands; own-child narrowing on despawn/attach meanwhile rides the SAME
|
|
21
|
+
* `authorizeNamedControl` policy the ctl privileged tier runs (in-memory spawner, identical
|
|
22
|
+
* source both doors). `ledger` mode is likewise absent (admin != ledger in static mode): every
|
|
23
|
+
* admin-class command is untargeted + capability-gated — the broker grant (who holds the
|
|
24
|
+
* request-publish row) stays the load-bearing tier boundary, exactly as the ctl cred layer is
|
|
25
|
+
* today; the 1c migration table names who mints which capability.
|
|
26
|
+
*
|
|
27
|
+
* Capability labels (describe/grant vocabulary, one per tier class):
|
|
28
|
+
* manager.read status / ps / inspect / models (read-only)
|
|
29
|
+
* manager.spawn spawn (privileged-grade creation)
|
|
30
|
+
* manager.lifecycle despawn / attach (owner-mode terminal/interactive)
|
|
31
|
+
* manager.self stop (self-mode halt; baseline)
|
|
32
|
+
* manager.persona definePersona (privileged-grade; ownership-checked)
|
|
33
|
+
* manager.admin purge / launch / resume family (operator instruments only)
|
|
34
|
+
*/
|
|
35
|
+
import { compileContract, contractDigest, VOID_SCHEMA, } from "@cotal-ai/core";
|
|
36
|
+
/** The manager's endpoint NAME — a core single-label name (needs OPERATOR name authority at
|
|
37
|
+
* registration; the manager holds the space signing seed, so it self-authorizes). */
|
|
38
|
+
export const MANAGER_ENDPOINT = "manager";
|
|
39
|
+
/** The manager cluster document's URN (§13.7 content-addressed authority). */
|
|
40
|
+
export const MANAGER_CLUSTER_URN = "ai.cotal.manager";
|
|
41
|
+
// ---- output/input schemas (closed unless the payload is genuinely open) ------------------------
|
|
42
|
+
/** The read-only manager-health output (1a). Manager-LEVEL — per-agent rows are `ps`/`inspect`. */
|
|
43
|
+
const STATUS_OUTPUT_SCHEMA = {
|
|
44
|
+
type: "object",
|
|
45
|
+
additionalProperties: false,
|
|
46
|
+
required: ["instanceId", "runtime", "agentCount", "uptimeMs"],
|
|
47
|
+
properties: {
|
|
48
|
+
/** The manager's stable service instance id (its per-process incarnation uid). */
|
|
49
|
+
instanceId: { type: "string" },
|
|
50
|
+
/** The runtime kind serving agents (pty/tmux/cmux/orca/herdr). */
|
|
51
|
+
runtime: { type: "string" },
|
|
52
|
+
/** How many agents this manager currently supervises. */
|
|
53
|
+
agentCount: { type: "integer", minimum: 0 },
|
|
54
|
+
/** Milliseconds since this manager process started serving. */
|
|
55
|
+
uptimeMs: { type: "integer", minimum: 0 },
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
/** One managed-agent row (`ps`/`inspect`), the ctl `list()` shape plus `lifecycleUid` — the
|
|
59
|
+
* coordinate an ep caller needs to build a targeted (`despawn`/`attach`) request. The two
|
|
60
|
+
* auth-health fields appear only on a user-mode agent whose bearer refresh is unhealthy; `role`
|
|
61
|
+
* only when the launch profile declared one (a role-less row serializes WITHOUT the key —
|
|
62
|
+
* `JSON.stringify` drops `undefined` — so pinning it required fails the responder's own reply). */
|
|
63
|
+
const AGENT_ROW_SCHEMA = {
|
|
64
|
+
type: "object",
|
|
65
|
+
additionalProperties: false,
|
|
66
|
+
required: ["name", "id", "agent", "space", "mode", "status", "uptimeMs", "mesh", "lifecycleUid"],
|
|
67
|
+
properties: {
|
|
68
|
+
name: { type: "string" },
|
|
69
|
+
id: { type: "string" },
|
|
70
|
+
role: { type: "string" },
|
|
71
|
+
agent: { type: "string" },
|
|
72
|
+
space: { type: "string" },
|
|
73
|
+
mode: { type: "string" },
|
|
74
|
+
status: { type: "string" },
|
|
75
|
+
uptimeMs: { type: "integer", minimum: 0 },
|
|
76
|
+
mesh: { type: "string" },
|
|
77
|
+
lifecycleUid: { type: "string" },
|
|
78
|
+
authHealth: { type: "string" },
|
|
79
|
+
authReason: { type: "string" },
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
const PS_OUTPUT_SCHEMA = { type: "array", items: AGENT_ROW_SCHEMA };
|
|
83
|
+
const INSPECT_INPUT_SCHEMA = {
|
|
84
|
+
type: "object", additionalProperties: false, required: ["name"],
|
|
85
|
+
properties: { name: { type: "string", minLength: 1 } },
|
|
86
|
+
};
|
|
87
|
+
/** `spawn` input: EXACTLY the ctl `start` op's coercion surface (manager.ts `opStart`, the 1b
|
|
88
|
+
* fidelity oracle) — same fields, same types, nothing extra. Deep semantics (empty `resume`,
|
|
89
|
+
* connector-specific launchOptions keys) stay in the SHARED handler/connector validation. */
|
|
90
|
+
const SPAWN_INPUT_SCHEMA = {
|
|
91
|
+
type: "object",
|
|
92
|
+
additionalProperties: false,
|
|
93
|
+
required: ["name"],
|
|
94
|
+
properties: {
|
|
95
|
+
name: { type: "string", minLength: 1 },
|
|
96
|
+
agent: { type: "string" },
|
|
97
|
+
role: { type: "string" },
|
|
98
|
+
config: { type: "string" },
|
|
99
|
+
identity: { type: "string" },
|
|
100
|
+
model: { type: "string" },
|
|
101
|
+
variant: { type: "string" },
|
|
102
|
+
launchOptions: { type: "object" },
|
|
103
|
+
resume: { type: "string" },
|
|
104
|
+
transcript: { type: "boolean" },
|
|
105
|
+
cwd: { type: "string" },
|
|
106
|
+
prompt: { type: "string" },
|
|
107
|
+
subscribe: { type: "array", items: { type: "string" } },
|
|
108
|
+
allowSubscribe: { type: "array", items: { type: "string" } },
|
|
109
|
+
allowPublish: { type: "array", items: { type: "string" } },
|
|
110
|
+
shareTools: { type: "string" },
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
/** `spawn` success output (P2 item 2): the ACTION ACCEPTANCE floor — the ALLOCATED agent identity
|
|
114
|
+
* (name + the owner/actor/uid addressing triple item 1 addresses by) plus the goal coordinates
|
|
115
|
+
* (goalId = the request id) and the executor coordinate (the manager incarnation its terminal
|
|
116
|
+
* fences on). No secret material (pin 7). The spawned identity + outcome ride the goal's progress +
|
|
117
|
+
* terminal, not this reply — the reply no longer blocks on the ~30s readiness wait. */
|
|
118
|
+
const SPAWN_OUTPUT_SCHEMA = {
|
|
119
|
+
type: "object",
|
|
120
|
+
additionalProperties: false,
|
|
121
|
+
required: ["name", "owner", "actor", "uid", "goalId", "fingerprint", "executor"],
|
|
122
|
+
properties: {
|
|
123
|
+
name: { type: "string" },
|
|
124
|
+
owner: { type: "string" },
|
|
125
|
+
actor: { type: "string" },
|
|
126
|
+
uid: { type: "string" },
|
|
127
|
+
goalId: { type: "string" },
|
|
128
|
+
fingerprint: { type: "string" },
|
|
129
|
+
executor: {
|
|
130
|
+
type: "object",
|
|
131
|
+
additionalProperties: false,
|
|
132
|
+
required: ["lifecycleUid", "epoch"],
|
|
133
|
+
properties: { lifecycleUid: { type: "string" }, epoch: { type: "integer", minimum: 0 } },
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
const GRACEFUL_INPUT_SCHEMA = {
|
|
138
|
+
type: "object", additionalProperties: false,
|
|
139
|
+
properties: { graceful: { type: "boolean" } },
|
|
140
|
+
};
|
|
141
|
+
const STOP_OUTPUT_SCHEMA = {
|
|
142
|
+
type: "object", additionalProperties: false, required: ["name", "stopped", "graceful"],
|
|
143
|
+
properties: { name: { type: "string" }, stopped: { type: "boolean" }, graceful: { type: "boolean" } },
|
|
144
|
+
};
|
|
145
|
+
// P2 item 6: attach returns the holder-bound §13.6 session GRANT, never a 127.0.0.1 ws:// URL. The
|
|
146
|
+
// grant is a signed, presenter-equality-bound offer (sessionId/subjects/serving/exp/sig) — non-bearer
|
|
147
|
+
// (a leak releases nothing) and never logged. The caller redeems it over the mesh (meshSessionTransport)
|
|
148
|
+
// with a per-session rails-only cred it mints itself. The object is signature-validated, not schema-shaped.
|
|
149
|
+
const ATTACH_OUTPUT_SCHEMA = {
|
|
150
|
+
type: "object", additionalProperties: false, required: ["grant"],
|
|
151
|
+
properties: { grant: { type: "object" } },
|
|
152
|
+
};
|
|
153
|
+
/** `models` output, NORMALIZED: always the full catalog list ({@link ManagerServiceHandlers}
|
|
154
|
+
* wraps the ctl op's single-or-array reply). Catalog rows stay OPEN — a connector's catalog may
|
|
155
|
+
* carry host-specific fields beyond the core `ConnectorModelCatalog` shape. */
|
|
156
|
+
const MODELS_INPUT_SCHEMA = {
|
|
157
|
+
type: "object", additionalProperties: false,
|
|
158
|
+
properties: { agent: { type: "string" }, refresh: { type: "boolean" } },
|
|
159
|
+
};
|
|
160
|
+
const MODELS_OUTPUT_SCHEMA = {
|
|
161
|
+
type: "object", additionalProperties: false, required: ["catalogs"],
|
|
162
|
+
properties: {
|
|
163
|
+
catalogs: {
|
|
164
|
+
type: "array",
|
|
165
|
+
items: {
|
|
166
|
+
type: "object",
|
|
167
|
+
required: ["agent", "supported", "models"],
|
|
168
|
+
properties: { agent: { type: "string" }, supported: { type: "boolean" }, models: { type: "array" }, error: { type: "string" } },
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
const PURGE_INPUT_SCHEMA = {
|
|
174
|
+
type: "object", additionalProperties: false,
|
|
175
|
+
properties: { includeDms: { type: "boolean" } },
|
|
176
|
+
};
|
|
177
|
+
const PURGE_OUTPUT_SCHEMA = {
|
|
178
|
+
type: "object", additionalProperties: false, required: ["chat"],
|
|
179
|
+
properties: { chat: { type: "integer", minimum: 0 }, dm: { type: "integer", minimum: 0 } },
|
|
180
|
+
};
|
|
181
|
+
const PERSONA_INPUT_SCHEMA = {
|
|
182
|
+
type: "object", additionalProperties: false, required: ["name", "persona"],
|
|
183
|
+
properties: { name: { type: "string", minLength: 1 }, persona: { type: "string", minLength: 1 }, model: { type: "string" } },
|
|
184
|
+
};
|
|
185
|
+
const PERSONA_OUTPUT_SCHEMA = {
|
|
186
|
+
type: "object", additionalProperties: false, required: ["name", "path"],
|
|
187
|
+
properties: { name: { type: "string" }, path: { type: "string" } },
|
|
188
|
+
};
|
|
189
|
+
/** `launch` input. `spec` is the OPTIONAL inline resolved launch spec a REMOTE manifest deploy
|
|
190
|
+
* pushes when the serving manager lives in another checkout or host (`spawn -f` / `up -f`; the
|
|
191
|
+
* local form still sends only the runId and the manager derives `.cotal/run/<runId>.json`
|
|
192
|
+
* itself). It is carried as an open object here for exactly the reason `inventory` is on
|
|
193
|
+
* RESUME_INPUT_SCHEMA: the deep, security-relevant validation is the shared handler parser
|
|
194
|
+
* (`parseLaunchSpec` — strict schema, safe names, policy re-validation, runId cross-check) and a
|
|
195
|
+
* second shallow copy of it here would drift. `additionalProperties: false` still holds, so no
|
|
196
|
+
* field reaches the handler that this contract did not name. */
|
|
197
|
+
const LAUNCH_INPUT_SCHEMA = {
|
|
198
|
+
type: "object", additionalProperties: false, required: ["runId", "name"],
|
|
199
|
+
properties: {
|
|
200
|
+
runId: { type: "string", minLength: 1 },
|
|
201
|
+
name: { type: "string", minLength: 1 },
|
|
202
|
+
spec: { type: "object" },
|
|
203
|
+
},
|
|
204
|
+
};
|
|
205
|
+
/** `launch` success output (P2 item 2, ruling 3): the SAME ACTION ACCEPTANCE floor as `spawn` - the
|
|
206
|
+
* allocated identity + goal coordinates. The manifest details (requested/runId/hash) that the
|
|
207
|
+
* pre-action reply carried are re-derivable by the deploy caller (it submitted the runId + name) and
|
|
208
|
+
* are not part of the goal acceptance; the spawned outcome rides the goal terminal. */
|
|
209
|
+
const LAUNCH_OUTPUT_SCHEMA = SPAWN_OUTPUT_SCHEMA;
|
|
210
|
+
// The resume/preservation family (admin maintenance coordination). Inputs pin the coordination
|
|
211
|
+
// keys; the INVENTORY payload and the plan/result outputs stay OPEN objects — their deep schema
|
|
212
|
+
// is the SHARED `parseResumeControlArgs`/plan validation in the handlers (the ctl parser is the
|
|
213
|
+
// single deep gate both doors run), and item 2's action model reshapes these surfaces anyway.
|
|
214
|
+
const ATTEMPT_INPUT_SCHEMA = {
|
|
215
|
+
type: "object", additionalProperties: false, required: ["attemptId"],
|
|
216
|
+
properties: { attemptId: { type: "string", minLength: 1 } },
|
|
217
|
+
};
|
|
218
|
+
const RESUME_INPUT_SCHEMA = {
|
|
219
|
+
type: "object", additionalProperties: false, required: ["attemptId", "inventory"],
|
|
220
|
+
properties: { attemptId: { type: "string", minLength: 1 }, inventory: { type: "object" } },
|
|
221
|
+
};
|
|
222
|
+
const FINALIZE_INPUT_SCHEMA = {
|
|
223
|
+
type: "object", additionalProperties: false, required: ["attemptId", "durableCommitToken"],
|
|
224
|
+
properties: { attemptId: { type: "string", minLength: 1 }, durableCommitToken: { type: "string", minLength: 1 } },
|
|
225
|
+
};
|
|
226
|
+
const OPEN_OBJECT_SCHEMA = { type: "object" };
|
|
227
|
+
const COMMIT_RESUME_OUTPUT_SCHEMA = {
|
|
228
|
+
type: "object", additionalProperties: false, required: ["attemptId", "state", "durableCommitToken"],
|
|
229
|
+
properties: { attemptId: { type: "string" }, state: { type: "string" }, durableCommitToken: { type: "string" } },
|
|
230
|
+
};
|
|
231
|
+
const ATTEMPT_STATE_OUTPUT_SCHEMA = {
|
|
232
|
+
type: "object", additionalProperties: false, required: ["attemptId", "state"],
|
|
233
|
+
properties: { attemptId: { type: "string" }, state: { type: "string" } },
|
|
234
|
+
};
|
|
235
|
+
const ROWS = [
|
|
236
|
+
{ name: "status", capability: "manager.read", input: VOID_SCHEMA, output: STATUS_OUTPUT_SCHEMA, targeted: false, handler: "status" },
|
|
237
|
+
{ name: "ps", capability: "manager.read", input: VOID_SCHEMA, output: PS_OUTPUT_SCHEMA, targeted: false, handler: "ps" },
|
|
238
|
+
{ name: "inspect", capability: "manager.read", input: INSPECT_INPUT_SCHEMA, output: AGENT_ROW_SCHEMA, targeted: false, handler: "inspect" },
|
|
239
|
+
{ name: "models", capability: "manager.read", input: MODELS_INPUT_SCHEMA, output: MODELS_OUTPUT_SCHEMA, targeted: false, handler: "models" },
|
|
240
|
+
{ name: "spawn", capability: "manager.spawn", input: SPAWN_INPUT_SCHEMA, output: SPAWN_OUTPUT_SCHEMA, targeted: false, handler: "spawn" },
|
|
241
|
+
// `owner` = the caller's own domain (the spawn capability's standing mint); `any` = the operator
|
|
242
|
+
// instrument's cross-agent reach (rev 3, the 1c admin-reach decision): the any-mode subject row
|
|
243
|
+
// is mintable only under operator policy (§13.2), so the broker grant is the tier boundary and
|
|
244
|
+
// the handler maps mode `any` to its admin authorization path — no wire synonym command.
|
|
245
|
+
{ name: "despawn", capability: "manager.lifecycle", input: GRACEFUL_INPUT_SCHEMA, output: STOP_OUTPUT_SCHEMA, targeted: true, modes: ["owner", "any"], handler: "despawn" },
|
|
246
|
+
{ name: "attach", capability: "manager.lifecycle", input: VOID_SCHEMA, output: ATTACH_OUTPUT_SCHEMA, targeted: true, modes: ["owner", "any"], handler: "attach" },
|
|
247
|
+
{ name: "stop", capability: "manager.self", input: GRACEFUL_INPUT_SCHEMA, output: STOP_OUTPUT_SCHEMA, targeted: true, modes: ["self"], handler: "stopSelf" },
|
|
248
|
+
{ name: "define-persona", capability: "manager.persona", input: PERSONA_INPUT_SCHEMA, output: PERSONA_OUTPUT_SCHEMA, targeted: false, handler: "definePersona" },
|
|
249
|
+
{ name: "purge", capability: "manager.admin", input: PURGE_INPUT_SCHEMA, output: PURGE_OUTPUT_SCHEMA, targeted: false, handler: "purge" },
|
|
250
|
+
{ name: "launch", capability: "manager.admin", input: LAUNCH_INPUT_SCHEMA, output: LAUNCH_OUTPUT_SCHEMA, targeted: false, handler: "launch" },
|
|
251
|
+
{ name: "resume-preserved", capability: "manager.admin", input: RESUME_INPUT_SCHEMA, output: OPEN_OBJECT_SCHEMA, targeted: false, handler: "resumePreserved" },
|
|
252
|
+
{ name: "commit-resume", capability: "manager.admin", input: ATTEMPT_INPUT_SCHEMA, output: COMMIT_RESUME_OUTPUT_SCHEMA, targeted: false, handler: "commitResume" },
|
|
253
|
+
{ name: "finalize-resume", capability: "manager.admin", input: FINALIZE_INPUT_SCHEMA, output: ATTEMPT_STATE_OUTPUT_SCHEMA, targeted: false, handler: "finalizeResume" },
|
|
254
|
+
{ name: "prepare-preservation", capability: "manager.admin", input: ATTEMPT_INPUT_SCHEMA, output: OPEN_OBJECT_SCHEMA, targeted: false, handler: "preparePreservation" },
|
|
255
|
+
{ name: "commit-preservation", capability: "manager.admin", input: ATTEMPT_INPUT_SCHEMA, output: OPEN_OBJECT_SCHEMA, targeted: false, handler: "commitPreservation" },
|
|
256
|
+
{ name: "abort-preservation", capability: "manager.admin", input: ATTEMPT_INPUT_SCHEMA, output: ATTEMPT_STATE_OUTPUT_SCHEMA, targeted: false, handler: "abortPreservation" },
|
|
257
|
+
];
|
|
258
|
+
const cc = (root) => compileContract({ root: root });
|
|
259
|
+
const COMPILED = Object.fromEntries(ROWS.map((r) => [r.name, { input: cc(r.input), output: cc(r.output) }]));
|
|
260
|
+
/** Per-command compiled contract pairs, exported for CALLERS (`epCall` pins the same digests the
|
|
261
|
+
* cluster document registers; the generic invoke CLI compiles these from the STORE instead). */
|
|
262
|
+
export const MANAGER_CONTRACTS = Object.freeze(COMPILED);
|
|
263
|
+
/** Every §13.7 contract artifact the manager PUBLISHES to the EPC store at registration (P2 item
|
|
264
|
+
* 1, 1c): each DISTINCT schema root plus its single-member closure manifest — the two artifacts
|
|
265
|
+
* a caller fetches at a command's input/output CLOSURE digest (`fetchContractClosure` walks
|
|
266
|
+
* manifest → root) to recompile the digest-matching validators. The cluster document + ITS
|
|
267
|
+
* manifest ride separately ({@link managerClusterArtifacts}). */
|
|
268
|
+
export function managerContractArtifactValues() {
|
|
269
|
+
const values = [];
|
|
270
|
+
const seen = new Set();
|
|
271
|
+
for (const r of ROWS) {
|
|
272
|
+
for (const source of [r.input, r.output]) {
|
|
273
|
+
const rootDigest = contractDigest(source);
|
|
274
|
+
if (seen.has(rootDigest))
|
|
275
|
+
continue;
|
|
276
|
+
seen.add(rootDigest);
|
|
277
|
+
values.push(source, { v: 1, root: rootDigest, members: [] });
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return values;
|
|
281
|
+
}
|
|
282
|
+
/** The 1a `status` pair, kept as a named export (existing callers/smokes). */
|
|
283
|
+
export const MANAGER_STATUS_CONTRACT = MANAGER_CONTRACTS.status;
|
|
284
|
+
/** The §13.7 cluster DOCUMENT: the content-addressed authority for the manager's served command
|
|
285
|
+
* surface. Revisions: 3 = the 1c any-mode despawn/attach admission; 4 = item-2's spawn-as-action;
|
|
286
|
+
* 5 = item-6's `attach` output flip (ws:// URL → the holder-bound §13.6 session grant).
|
|
287
|
+
*
|
|
288
|
+
* 6 = `launch` accepts the inline `spec` of a remote manifest deploy. The handler branch for it
|
|
289
|
+
* merged in ahead of the schema, so the compiled contract refused every request that carried the
|
|
290
|
+
* field and the feature was unreachable through this door (executed: the compiled input validator
|
|
291
|
+
* returned false for `{runId, name, spec}` while the CLI sends exactly that). ONE revision 6
|
|
292
|
+
* covers the whole branch: when the journal-action work lands, its `action` marker and
|
|
293
|
+
* `readinessDeadlineMs` declaration join THIS revision rather than minting a seventh. */
|
|
294
|
+
export function managerClusterDocument() {
|
|
295
|
+
return {
|
|
296
|
+
urn: MANAGER_CLUSTER_URN,
|
|
297
|
+
revision: 6,
|
|
298
|
+
attributes: [],
|
|
299
|
+
events: [],
|
|
300
|
+
commands: ROWS.map((r) => ({
|
|
301
|
+
name: r.name,
|
|
302
|
+
class: "ephemeral",
|
|
303
|
+
targeted: r.targeted,
|
|
304
|
+
...(r.modes ? { modes: r.modes } : {}),
|
|
305
|
+
capability: r.capability,
|
|
306
|
+
inputDigest: COMPILED[r.name].input.closureDigest,
|
|
307
|
+
outputDigest: COMPILED[r.name].output.closureDigest,
|
|
308
|
+
})),
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
/** The two-digest §13.7 content addressing for the manager document: the registered CLOSURE digest
|
|
312
|
+
* names a `{v:1, root:<artifactDigest>, members:[]}` manifest whose root names the DOCUMENT. Both
|
|
313
|
+
* artifacts are published to the `epc` store at their own digest; `clusterDigests` in the service
|
|
314
|
+
* spec carries the closure digest. Returned together so the manager publishes both then registers
|
|
315
|
+
* under the closure digest. */
|
|
316
|
+
export function managerClusterArtifacts() {
|
|
317
|
+
const document = managerClusterDocument();
|
|
318
|
+
const rootDigest = contractDigest(document);
|
|
319
|
+
const manifest = { v: 1, root: rootDigest, members: [] };
|
|
320
|
+
const closureDigest = contractDigest(manifest);
|
|
321
|
+
return { document, rootDigest, manifest, closureDigest };
|
|
322
|
+
}
|
|
323
|
+
/** Build the `EpCommandDef[]` `serveEndpoint` consumes: each command's provenance-branded compiled
|
|
324
|
+
* contracts (matching the document's pinned digests exactly) plus its handler. */
|
|
325
|
+
export function managerCommandDefs(handlers) {
|
|
326
|
+
return ROWS.map((r) => ({
|
|
327
|
+
command: r.name,
|
|
328
|
+
contract: COMPILED[r.name],
|
|
329
|
+
handler: (ctx) => handlers[r.handler](ctx),
|
|
330
|
+
}));
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=manager-service-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager-service-contract.js","sourceRoot":"","sources":["../src/manager-service-contract.ts"],"names":[],"mappings":"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"}
|