@cotal-ai/auth 0.91.0 → 0.92.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/authority-client.d.ts +70 -3
- package/dist/authority-client.d.ts.map +1 -1
- package/dist/authority-client.js +109 -8
- package/dist/authority-client.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +37 -10
- package/dist/commands.js.map +1 -1
- package/dist/manager-authority.d.ts +59 -3
- package/dist/manager-authority.d.ts.map +1 -1
- package/dist/manager-authority.js +185 -4
- package/dist/manager-authority.js.map +1 -1
- package/dist/native-service-gate.d.ts +14 -3
- package/dist/native-service-gate.d.ts.map +1 -1
- package/dist/native-service-gate.js +34 -20
- package/dist/native-service-gate.js.map +1 -1
- package/dist/native-service-name.d.ts +7 -0
- package/dist/native-service-name.d.ts.map +1 -1
- package/dist/native-service-name.js +15 -6
- package/dist/native-service-name.js.map +1 -1
- package/dist/platform-control.d.ts.map +1 -1
- package/dist/platform-control.js +1 -0
- package/dist/platform-control.js.map +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +8 -0
- package/dist/provider.js.map +1 -1
- package/dist/run-cancel-observation.d.ts +50 -0
- package/dist/run-cancel-observation.d.ts.map +1 -0
- package/dist/run-cancel-observation.js +146 -0
- package/dist/run-cancel-observation.js.map +1 -0
- package/dist/service-custody.d.ts +29 -20
- package/dist/service-custody.d.ts.map +1 -1
- package/dist/service-custody.js +37 -167
- package/dist/service-custody.js.map +1 -1
- package/dist/service-endpoint-authority.d.ts +70 -0
- package/dist/service-endpoint-authority.d.ts.map +1 -0
- package/dist/service-endpoint-authority.js +257 -0
- package/dist/service-endpoint-authority.js.map +1 -0
- package/dist/service-host-contract.d.ts +158 -16
- package/dist/service-host-contract.d.ts.map +1 -1
- package/dist/service-host-contract.js +330 -1
- package/dist/service-host-contract.js.map +1 -1
- package/dist/service-host-ops.d.ts +550 -0
- package/dist/service-host-ops.d.ts.map +1 -0
- package/dist/service-host-ops.js +2180 -0
- package/dist/service-host-ops.js.map +1 -0
- package/dist/service-write.d.ts +141 -0
- package/dist/service-write.d.ts.map +1 -0
- package/dist/service-write.js +179 -0
- package/dist/service-write.js.map +1 -0
- package/dist/service.d.ts +54 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +313 -14
- package/dist/service.js.map +1 -1
- package/package.json +9 -4
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/** The public service endpoint authority door (`/service-endpoint-authority`, SPEC 13.1): the account
|
|
2
|
+
* info read; register through its proposal and registration phases; activate, renew and ready; and
|
|
3
|
+
* instance and operation status, over the service host engine. The face verifies every proof; this
|
|
4
|
+
* module never sees a proof secret, and it signs serving material only with the bounds the engine
|
|
5
|
+
* returned for the current registration. Revoke and the Describe view stay unsupported. */
|
|
6
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
7
|
+
import { EpEnvelopeError, GOVERNED_TRAIT_URNS, SERVICE_ACCESS_TTL_SECONDS, SERVICE_RENEWAL_TTL_SECONDS, canonicalJson, contractDigest, serviceAuthorityRequestDigest, serviceWitnessDigest, verifyClusterManifest, verifyClusterRoot, } from "@cotal-ai/core";
|
|
8
|
+
import { serviceHostOperationId, serviceRegisterHostRequest } from "./service-host-ops.js";
|
|
9
|
+
export const SERVICE_ENDPOINT_AUTHORITY_PATH = "/service-endpoint-authority";
|
|
10
|
+
export function serviceAuthorityInfo(door) {
|
|
11
|
+
return { v: 1, kind: "service-endpoint-authority-info", space: door.space, accountPublicKey: door.accountPublicKey };
|
|
12
|
+
}
|
|
13
|
+
/** The engine request id of one public request: the full public idempotency key (account, space,
|
|
14
|
+
* derived owner, endpoint, instance, operation, requestId), so another owner's or selector's equal
|
|
15
|
+
* requestId never reaches this request's binding. */
|
|
16
|
+
export function serviceAuthorityEngineRequestId(door, owner, request, operation, requestId) {
|
|
17
|
+
const key = canonicalJson(["cotal-service-endpoint-authority", 1, door.accountPublicKey, door.space, owner, request.endpoint, request.instanceId, operation, requestId]);
|
|
18
|
+
return createHash("sha256").update(key, "utf8").digest("hex").slice(0, 32);
|
|
19
|
+
}
|
|
20
|
+
/** Why a submitted closure set is refused. Nothing is admitted from a refused set. */
|
|
21
|
+
export class ServiceRegistrationRefusal extends Error {
|
|
22
|
+
reason;
|
|
23
|
+
constructor(reason, detail) {
|
|
24
|
+
super(detail);
|
|
25
|
+
this.reason = reason;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** Compile the submitted closures into the proposal's command surface. Each cluster digest names its
|
|
29
|
+
* manifest artifact and that manifest's root names the cluster document, both verified by content
|
|
30
|
+
* digest. Every submitted artifact must belong to a declared closure, and the commands are only what
|
|
31
|
+
* the verified documents declare. This cut admits ephemeral commands without governed traits only. */
|
|
32
|
+
export function compileServiceRegistration(registration) {
|
|
33
|
+
const refuse = (reason, detail) => { throw new ServiceRegistrationRefusal(reason, detail); };
|
|
34
|
+
const byDigest = new Map(registration.contractArtifacts.map((a) => [contractDigest(a), a]));
|
|
35
|
+
const used = new Set(), names = new Set(), commands = [];
|
|
36
|
+
for (const closure of registration.clusterDigests) {
|
|
37
|
+
const manifest = byDigest.get(closure);
|
|
38
|
+
if (manifest === undefined)
|
|
39
|
+
refuse("closure-invalid", `the closure ${closure} has no submitted manifest`);
|
|
40
|
+
let document;
|
|
41
|
+
try {
|
|
42
|
+
const { root } = verifyClusterManifest(closure, manifest);
|
|
43
|
+
if (!byDigest.has(root))
|
|
44
|
+
refuse("closure-invalid", `the closure ${closure} has no submitted root document`);
|
|
45
|
+
document = verifyClusterRoot(root, byDigest.get(root));
|
|
46
|
+
used.add(closure);
|
|
47
|
+
used.add(root);
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
if (e instanceof ServiceRegistrationRefusal)
|
|
51
|
+
throw e;
|
|
52
|
+
return refuse("closure-invalid", e instanceof Error ? e.message : String(e));
|
|
53
|
+
}
|
|
54
|
+
for (const c of document.commands) {
|
|
55
|
+
if (c.class !== "ephemeral")
|
|
56
|
+
refuse("unsupported-runtime", `command ${c.name} is ${c.class}-class; only ephemeral commands are served`);
|
|
57
|
+
// Governed traits need enforcement hooks this host does not run yet.
|
|
58
|
+
const governed = (c.traits ?? []).filter((t) => GOVERNED_TRAIT_URNS.includes(t));
|
|
59
|
+
if (governed.length)
|
|
60
|
+
refuse("unsupported-runtime", `command ${c.name} declares the governed trait ${governed[0]}; governed commands are not served`);
|
|
61
|
+
if (names.has(c.name))
|
|
62
|
+
refuse("closure-invalid", `command ${c.name} is declared by more than one closure`);
|
|
63
|
+
names.add(c.name);
|
|
64
|
+
commands.push({ name: c.name, clusterDigest: closure, class: c.class, targeted: c.targeted, modes: [...(c.modes ?? [])], capability: c.capability,
|
|
65
|
+
inputDigest: c.inputDigest, outputDigest: c.outputDigest, traits: [...(c.traits ?? [])] });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (used.size !== byDigest.size)
|
|
69
|
+
refuse("closure-invalid", "an artifact belongs to no declared closure");
|
|
70
|
+
commands.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
|
|
71
|
+
return { clusterDigests: [...registration.clusterDigests], commands };
|
|
72
|
+
}
|
|
73
|
+
const STATUS = {
|
|
74
|
+
unauthenticated: 401, "proof-mismatch": 401, "rate-limited": 429, "resource-exhausted": 429,
|
|
75
|
+
conflict: 409, "selector-pending": 409, "selector-bound": 409, expired: 409, "proposal-refused": 409, "proposal-expired": 409, "approval-revoked": 409,
|
|
76
|
+
"approval-mismatch": 409, "registration-active": 409, "registration-pending": 409, "stale-witness": 409, "root-revoked": 409,
|
|
77
|
+
"bad-request": 422, "closure-invalid": 422, "unsupported-runtime": 422, unsupported: 422,
|
|
78
|
+
};
|
|
79
|
+
const echoOf = (r) => ({ v: r.v, kind: r.kind, operation: r.operation, requestId: r.requestId, space: r.space, accountPublicKey: r.accountPublicKey, endpoint: r.endpoint, instanceId: r.instanceId });
|
|
80
|
+
/** A `denied` protocol result with its HTTP status: 401 bad proof, 409 conflict or a closed proposal,
|
|
81
|
+
* 422 refused input, 429 a bound, 403 every other authority refusal. */
|
|
82
|
+
export function serviceAuthorityDenied(request, reason) {
|
|
83
|
+
return { status: STATUS[reason] ?? 403, body: { ...echoOf(request), state: "denied", reason } };
|
|
84
|
+
}
|
|
85
|
+
const unknown = (detail) => ({ status: 503, body: { error: `service endpoint authority: ${detail}; the request may be bound, so retain its request identity` } });
|
|
86
|
+
/** Answer one parsed request for its verified caller. The face has already checked the account,
|
|
87
|
+
* space and the proof matrix; for a service proof it checked the signature and that the proof
|
|
88
|
+
* binds the request's witness. */
|
|
89
|
+
export async function answerServiceAuthority(door, request, caller) {
|
|
90
|
+
const echo = echoOf(request), startedAt = Math.floor(Date.now() / 1000);
|
|
91
|
+
const owner = caller.kind === "idp" ? caller.owner : caller.witness.principal.owner;
|
|
92
|
+
const reply = (status, arm) => ({ status, body: { ...echo, ...arm } });
|
|
93
|
+
const deny = (reason) => serviceAuthorityDenied(request, reason);
|
|
94
|
+
if (caller.kind === "service" && "witness" in request && serviceWitnessDigest(request.witness) !== serviceWitnessDigest(caller.witness))
|
|
95
|
+
return deny("proof-mismatch");
|
|
96
|
+
const host = async (operation, input) => door.engine.handle({ v: 1, kind: "service-endpoint-host", requestId: randomBytes(16).toString("hex"), operation, input, granter: { kind: "owner", owner } });
|
|
97
|
+
/** A read the engine refused: the owner's authority or an unavailable read, never absence. */
|
|
98
|
+
const readRefusal = (r) => (r.state === "denied" && r.reason === "permission-denied" ? deny("permission-denied") : unknown(`the ${r.operation} was not answered`));
|
|
99
|
+
const engineRequestId = (operation, requestId) => serviceAuthorityEngineRequestId(door, owner, request, operation, requestId);
|
|
100
|
+
const served = (r) => r.state === "denied" ? deny(r.reason) : r.state === "unavailable" ? unknown(r.detail) : undefined;
|
|
101
|
+
async function proposalNow(proposalId) {
|
|
102
|
+
const p = await host("proposal-read", { proposalId });
|
|
103
|
+
if (p.state !== "present")
|
|
104
|
+
return { kind: "reply", reply: p.state === "absent" ? unknown("the completed register's proposal is not readable") : readRefusal(p) };
|
|
105
|
+
const v = p.record.value;
|
|
106
|
+
// An undecided proposal past its expiry can no longer be approved: it reads as expired once its
|
|
107
|
+
// whole expiry second has passed, so this never reports expired before the engine would refuse.
|
|
108
|
+
// An approving proposal keeps its answer here; its decision settles it.
|
|
109
|
+
if (!("register" in v))
|
|
110
|
+
return v.state === "proposed" && Date.now() >= (v.expiresAt + 1) * 1000
|
|
111
|
+
? { kind: "closed", state: "expired", reason: "expired" } : { kind: "proposed", proposalDigest: v.proposalDigest };
|
|
112
|
+
if (v.state !== "approved")
|
|
113
|
+
return { kind: "closed", state: v.state, reason: v.reason ?? v.state };
|
|
114
|
+
const s = await door.engine.serviceState(owner, request.endpoint, request.instanceId);
|
|
115
|
+
if (s.state === "approved" && s.proposalId === proposalId && s.approvalDigest === v.approvalDigest)
|
|
116
|
+
return s.registrationRequestId === null ? { kind: "approved", approvalDigest: s.approvalDigest } : { kind: "superseded", current: s.registrationRequestId };
|
|
117
|
+
if (s.state === "revoking" && s.proposalId === proposalId)
|
|
118
|
+
return { kind: "revoking", operationId: s.operationId, phase: s.denyNew === "landed" ? "deny-new-landed" : "deny-new-pending" };
|
|
119
|
+
return { kind: "reply", reply: unknown("the approved assignment's current state is not readable") };
|
|
120
|
+
}
|
|
121
|
+
if (request.operation === "register") {
|
|
122
|
+
let compiled;
|
|
123
|
+
try {
|
|
124
|
+
compiled = compileServiceRegistration(request.registration);
|
|
125
|
+
}
|
|
126
|
+
catch (e) {
|
|
127
|
+
if (e instanceof ServiceRegistrationRefusal)
|
|
128
|
+
return deny(e.reason);
|
|
129
|
+
throw e;
|
|
130
|
+
}
|
|
131
|
+
const requestId = engineRequestId("register", request.requestId), operationId = serviceHostOperationId(door.space, requestId);
|
|
132
|
+
const requestDigest = serviceAuthorityRequestDigest(request);
|
|
133
|
+
// Past approval the owner's assignment decides: its registration phase writes an intent and
|
|
134
|
+
// runs the native registration. Before it, the proposal phase admits or replays the proposal.
|
|
135
|
+
const phase = await door.engine.serviceState(owner, request.endpoint, request.instanceId);
|
|
136
|
+
if (phase.state === "unavailable")
|
|
137
|
+
return unknown("the selector's assignment is not readable");
|
|
138
|
+
if (phase.state === "approved" || phase.state === "revoking") {
|
|
139
|
+
const r = await door.engine.serve({ operation: "register", caller: "owner", owner, endpoint: request.endpoint, instanceId: request.instanceId,
|
|
140
|
+
requestId: request.requestId, requestDigest, engineRequestId: requestId,
|
|
141
|
+
witness: request.expected.state === "registered" ? request.expected.witness : null,
|
|
142
|
+
register: { ...compiled, artifacts: request.registration.contractArtifacts } });
|
|
143
|
+
if (r.state === "registered")
|
|
144
|
+
return reply(200, { state: "registered", witness: r.witness, snapshot: r.snapshot });
|
|
145
|
+
return served(r) ?? unknown(`register answered ${r.state}`);
|
|
146
|
+
}
|
|
147
|
+
if (request.expected.state !== "unregistered")
|
|
148
|
+
return deny("conflict");
|
|
149
|
+
let r;
|
|
150
|
+
try {
|
|
151
|
+
r = await door.engine.register(serviceRegisterHostRequest({ owner, endpoint: request.endpoint, instanceId: request.instanceId, engineRequestId: requestId,
|
|
152
|
+
requestId: request.requestId, requestDigest, ...compiled }));
|
|
153
|
+
}
|
|
154
|
+
catch (e) {
|
|
155
|
+
if (e instanceof EpEnvelopeError && e.code === "bad-request")
|
|
156
|
+
return deny("bad-request");
|
|
157
|
+
throw e;
|
|
158
|
+
}
|
|
159
|
+
const required = (proposalId, proposalDigest) => reply(202, { state: "approval-required", proposalId, proposalDigest });
|
|
160
|
+
switch (r.state) {
|
|
161
|
+
case "registered": {
|
|
162
|
+
if (r.outcome === "applied")
|
|
163
|
+
return required(r.proposalId, r.proposalDigest);
|
|
164
|
+
const now = await proposalNow(r.proposalId);
|
|
165
|
+
switch (now.kind) {
|
|
166
|
+
case "proposed": return required(r.proposalId, now.proposalDigest);
|
|
167
|
+
case "closed": return deny(now.state === "expired" ? "proposal-expired" : "proposal-refused");
|
|
168
|
+
// Approved since the phase read: a replay enters the registration phase.
|
|
169
|
+
case "approved": return reply(202, { state: "pending", operationId, phase: "approved-unregistered" });
|
|
170
|
+
case "superseded": return deny("conflict");
|
|
171
|
+
case "revoking": return deny("approval-revoked");
|
|
172
|
+
case "reply": return now.reply;
|
|
173
|
+
}
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
case "refused": return deny(r.reason);
|
|
177
|
+
case "denied": return r.reason === "unavailable" ? unknown("register admission was unavailable") : deny(r.reason);
|
|
178
|
+
case "held": return r.reason === "permission-denied" && r.phase === "authorize" ? deny("permission-denied") : unknown(`register held (${r.reason} at ${r.phase})`);
|
|
179
|
+
case "pending": return unknown(`register pending at ${r.phase}`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (request.operation === "activate" || request.operation === "renew" || request.operation === "ready") {
|
|
183
|
+
if (request.operation !== "ready" && door.material === undefined)
|
|
184
|
+
return deny("unsupported");
|
|
185
|
+
const r = await door.engine.serve({ operation: request.operation, caller: caller.kind === "idp" ? "owner" : "service", owner,
|
|
186
|
+
endpoint: request.endpoint, instanceId: request.instanceId, requestId: request.requestId, requestDigest: serviceAuthorityRequestDigest(request),
|
|
187
|
+
engineRequestId: engineRequestId(request.operation, request.requestId), witness: request.witness });
|
|
188
|
+
if (r.state === "ready")
|
|
189
|
+
return reply(200, { state: "ready", witness: r.witness, reportedAt: r.reportedAt });
|
|
190
|
+
if (r.state !== "current")
|
|
191
|
+
return served(r) ?? unknown(`${request.operation} answered ${r.state}`);
|
|
192
|
+
// Bounds fixed at admission: never extended by a late answer.
|
|
193
|
+
const cap = (ttl) => Math.min(startedAt + ttl, r.rootExpiresAt, r.approvalExpiresAt ?? Number.MAX_SAFE_INTEGER);
|
|
194
|
+
const accessExpiresAt = cap(SERVICE_ACCESS_TTL_SECONDS), renewalExpiresAt = cap(SERVICE_RENEWAL_TTL_SECONDS);
|
|
195
|
+
if (accessExpiresAt <= Math.floor(Date.now() / 1000))
|
|
196
|
+
return deny("expired");
|
|
197
|
+
let accessBearer, renewalProof;
|
|
198
|
+
try {
|
|
199
|
+
accessBearer = await door.material.issueServiceAccess({ witness: r.witness, expiresAt: accessExpiresAt });
|
|
200
|
+
renewalProof = await door.material.issueServiceRenewal({ witness: r.witness, expiresAt: renewalExpiresAt });
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// Only a fixed expiry that has passed is expired. Any other failure to mint leaves the current
|
|
204
|
+
// registration with no material, so it is unknown and a replay mints replacement material.
|
|
205
|
+
if (accessExpiresAt <= Math.floor(Date.now() / 1000))
|
|
206
|
+
return deny("expired");
|
|
207
|
+
return unknown(`the ${request.operation} material was not minted`);
|
|
208
|
+
}
|
|
209
|
+
return reply(200, { state: "credential", witness: r.witness, duty: "serve", accessBearer, accessExpiresAt, renewalProof, renewalExpiresAt, snapshot: r.snapshot });
|
|
210
|
+
}
|
|
211
|
+
if (request.operation === "status") {
|
|
212
|
+
const status = (s) => reply(200, { state: "status", status: s });
|
|
213
|
+
const target = request.target;
|
|
214
|
+
if (target.kind === "operation" && target.operation === "revoke")
|
|
215
|
+
return deny("unsupported");
|
|
216
|
+
const answer = await door.engine.serveStatus({ owner, endpoint: request.endpoint, instanceId: request.instanceId,
|
|
217
|
+
reader: caller.kind === "idp" ? { kind: "owner" } : { kind: "service", witness: caller.witness },
|
|
218
|
+
target: target.kind === "instance" ? { kind: "instance" } : { kind: "operation", operation: target.operation, engineRequestId: engineRequestId(target.operation, target.requestId) } });
|
|
219
|
+
if (answer.kind === "status")
|
|
220
|
+
return status(answer.status);
|
|
221
|
+
if (answer.kind === "not-found")
|
|
222
|
+
return deny("not-found");
|
|
223
|
+
if (answer.kind === "denied")
|
|
224
|
+
return deny(answer.reason);
|
|
225
|
+
if (answer.kind === "unavailable")
|
|
226
|
+
return unknown(answer.detail);
|
|
227
|
+
// A register with no intent answers from its proposal-phase operation record.
|
|
228
|
+
const operationId = serviceHostOperationId(door.space, engineRequestId("register", target.requestId));
|
|
229
|
+
const op = await host("operation-read", { operationId });
|
|
230
|
+
if (op.state === "absent")
|
|
231
|
+
return deny("not-found");
|
|
232
|
+
if (op.state !== "present")
|
|
233
|
+
return readRefusal(op);
|
|
234
|
+
const v = op.record.value;
|
|
235
|
+
const progress = "outcome" in v ? v.outcome : v.progress, proposalId = v.projection.proposalId;
|
|
236
|
+
if (v.operation !== "register" || proposalId === null)
|
|
237
|
+
return deny("not-found");
|
|
238
|
+
if (progress.state === "pending" || progress.state === "held")
|
|
239
|
+
return status({ state: "registering", operationId, phase: progress.phase });
|
|
240
|
+
if (progress.state === "refused")
|
|
241
|
+
return status({ state: "refused", proposalId, reason: progress.reason });
|
|
242
|
+
if (progress.state === "superseded")
|
|
243
|
+
return status({ state: "refused", proposalId, reason: "superseded" });
|
|
244
|
+
const now = await proposalNow(proposalId);
|
|
245
|
+
switch (now.kind) {
|
|
246
|
+
case "proposed": return status({ state: "proposed", proposalId, proposalDigest: now.proposalDigest });
|
|
247
|
+
case "closed": return status({ state: "refused", proposalId, reason: now.reason });
|
|
248
|
+
case "approved": return status({ state: "approved-unregistered", approvalDigest: now.approvalDigest });
|
|
249
|
+
case "superseded": return status({ state: "superseded", registrationRequestId: target.requestId, currentRegistrationRequestId: now.current });
|
|
250
|
+
case "revoking": return status({ state: "revoking", operationId: now.operationId, phase: now.phase });
|
|
251
|
+
case "reply": return now.reply;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// revoke and describe-view need terminal retirement and caller policy, which this cut does not run.
|
|
255
|
+
return deny("unsupported");
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=service-endpoint-authority.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-endpoint-authority.js","sourceRoot":"","sources":["../src/service-endpoint-authority.ts"],"names":[],"mappings":"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"}
|
|
@@ -91,7 +91,31 @@ export interface ServiceProposalView {
|
|
|
91
91
|
name: string;
|
|
92
92
|
}>;
|
|
93
93
|
nameBinding: ServiceNameView | null;
|
|
94
|
+
/** The approving operation and its immutable assignment coordinate, or null while proposed. */
|
|
95
|
+
decision: {
|
|
96
|
+
operationId: string;
|
|
97
|
+
assignmentDigest: string;
|
|
98
|
+
} | null;
|
|
94
99
|
}
|
|
100
|
+
/** A terminal proposal: the compact retained tombstone. It carries no commands or cluster digests. */
|
|
101
|
+
export interface ServiceProposalTombstoneView {
|
|
102
|
+
proposalId: string;
|
|
103
|
+
proposalDigest: string;
|
|
104
|
+
owner: string;
|
|
105
|
+
endpoint: string;
|
|
106
|
+
instanceId: string;
|
|
107
|
+
register: {
|
|
108
|
+
requestId: string;
|
|
109
|
+
requestDigest: string;
|
|
110
|
+
operationId: string;
|
|
111
|
+
};
|
|
112
|
+
state: "approved" | "refused" | "expired";
|
|
113
|
+
operationId: string | null;
|
|
114
|
+
approvalDigest: string | null;
|
|
115
|
+
reason: ServiceProposalCloseReason | null;
|
|
116
|
+
at: number;
|
|
117
|
+
}
|
|
118
|
+
export type ServiceProposalCloseReason = "owner" | "operator" | "revoked" | "expired" | "selector-bound" | "restore" | "custody-refused";
|
|
95
119
|
export interface ServiceInstanceView {
|
|
96
120
|
assignmentDigest: string;
|
|
97
121
|
principal: ServicePrincipal;
|
|
@@ -106,13 +130,36 @@ export interface ServiceInstanceView {
|
|
|
106
130
|
witness: ServiceRegistrationWitness | null;
|
|
107
131
|
nameBinding: ServiceNameView | null;
|
|
108
132
|
}
|
|
109
|
-
export declare const SERVICE_HOST_REASONS: readonly ["bad-request", "unauthenticated", "permission-denied", "conflict", "not-found", "expired", "resource-exhausted", "unsupported", "unavailable", "admission-held", "name-bound", "name-claim-required", "registration-active", "stale-witness"];
|
|
133
|
+
export declare const SERVICE_HOST_REASONS: readonly ["bad-request", "unauthenticated", "permission-denied", "conflict", "not-found", "expired", "resource-exhausted", "unsupported", "unavailable", "admission-held", "name-bound", "name-claim-required", "registration-active", "stale-witness", "admission-closed", "selector-pending", "selector-bound", "name-owned", "approval-in-progress"];
|
|
110
134
|
export type ServiceHostReason = (typeof SERVICE_HOST_REASONS)[number];
|
|
135
|
+
/** Why a bound operation ended without its effect. A closed proposal's reason is carried through. */
|
|
136
|
+
export declare const SERVICE_OPERATION_REFUSALS: readonly ["conflict", "expired", "revoked", "superseded", "custody-refused", "admission-closed", "resource-exhausted", "selector-pending", "selector-bound", "name-owned", "restore", "owner", "operator"];
|
|
137
|
+
export type ServiceOperationRefusal = (typeof SERVICE_OPERATION_REFUSALS)[number];
|
|
138
|
+
/** Whether this assignment's endpoint gate shows committed deny-new, from a leader read; unknown when that read
|
|
139
|
+
* failed or found another assignment's gate row at the key. An already fenced assignment reports landed. */
|
|
140
|
+
export type ServiceDenyNew = "landed" | "not-landed" | "unknown";
|
|
141
|
+
/** A bookkeeping write whose outcome was not observed. Replays retry it; only a read clears it. */
|
|
142
|
+
export type ServiceHostDebt = {
|
|
143
|
+
kind: "capacity-release" | "proposal-close";
|
|
144
|
+
proposalId: string;
|
|
145
|
+
};
|
|
146
|
+
/** `applied` when this invocation observed the effect land; `recorded` when it returns a stored result. */
|
|
147
|
+
export type ServiceHostOutcome = "applied" | "recorded";
|
|
148
|
+
/** The immutable subject an operation was admitted for; owner-scoped reads authorize against it. */
|
|
149
|
+
export interface ServiceOperationProjection {
|
|
150
|
+
subjectOwner: string;
|
|
151
|
+
endpoint: string;
|
|
152
|
+
instanceId: string;
|
|
153
|
+
proposalId: string | null;
|
|
154
|
+
}
|
|
155
|
+
export type ServiceOperationKind = "register" | "decide" | "revoke";
|
|
111
156
|
export interface ServiceOperationView {
|
|
112
157
|
operationId: string;
|
|
113
158
|
requestDigest: string;
|
|
159
|
+
operation: ServiceOperationKind;
|
|
114
160
|
target: ({
|
|
115
161
|
kind: "service";
|
|
162
|
+
assignmentDigest: string | null;
|
|
116
163
|
} & ServiceSelector) | {
|
|
117
164
|
kind: "caller";
|
|
118
165
|
grantee: ServicePrincipal;
|
|
@@ -123,16 +170,42 @@ export interface ServiceOperationView {
|
|
|
123
170
|
kind: "name";
|
|
124
171
|
endpoint: string;
|
|
125
172
|
};
|
|
173
|
+
projection: ServiceOperationProjection;
|
|
126
174
|
progress: {
|
|
127
175
|
state: "pending";
|
|
128
176
|
phase: string;
|
|
129
177
|
notBefore?: number;
|
|
178
|
+
} | {
|
|
179
|
+
state: "held";
|
|
180
|
+
reason: string;
|
|
181
|
+
phase: string;
|
|
130
182
|
} | {
|
|
131
183
|
state: "complete";
|
|
132
184
|
resultDigest: string;
|
|
133
185
|
} | {
|
|
134
186
|
state: "refused";
|
|
135
|
-
reason:
|
|
187
|
+
reason: ServiceOperationRefusal;
|
|
188
|
+
} | {
|
|
189
|
+
state: "superseded";
|
|
190
|
+
boundOperationId: string;
|
|
191
|
+
};
|
|
192
|
+
debt: ServiceHostDebt[];
|
|
193
|
+
}
|
|
194
|
+
/** A compacted operation: its binding, subject and outcome. The plan is gone and nothing revives it. */
|
|
195
|
+
export interface ServiceOperationTerminalView {
|
|
196
|
+
operationId: string;
|
|
197
|
+
requestDigest: string;
|
|
198
|
+
operation: ServiceOperationKind;
|
|
199
|
+
projection: ServiceOperationProjection;
|
|
200
|
+
outcome: {
|
|
201
|
+
state: "complete";
|
|
202
|
+
resultDigest: string;
|
|
203
|
+
} | {
|
|
204
|
+
state: "refused";
|
|
205
|
+
reason: ServiceOperationRefusal;
|
|
206
|
+
} | {
|
|
207
|
+
state: "superseded";
|
|
208
|
+
boundOperationId: string;
|
|
136
209
|
};
|
|
137
210
|
}
|
|
138
211
|
export interface ServiceCallerPolicyView {
|
|
@@ -230,14 +303,40 @@ type PageResult<T> = {
|
|
|
230
303
|
records: Versioned<T>[];
|
|
231
304
|
nextCursor: string | null;
|
|
232
305
|
};
|
|
306
|
+
/** The immutable facts an approval fixed. `approvedGateRevision` is the endpoint-gate revision
|
|
307
|
+
* this approval's own CAS wrote, or null when that write was not observed; a later revision
|
|
308
|
+
* never stands in for it. Current instance state is a separate read. */
|
|
309
|
+
export interface ServiceApprovalResult {
|
|
310
|
+
proposalId: string;
|
|
311
|
+
proposalDigest: string;
|
|
312
|
+
operationId: string;
|
|
313
|
+
assignment: {
|
|
314
|
+
endpoint: string;
|
|
315
|
+
instanceId: string;
|
|
316
|
+
assignmentDigest: string;
|
|
317
|
+
lifecycleUid: string;
|
|
318
|
+
};
|
|
319
|
+
approvalDigest: string;
|
|
320
|
+
approvalExpiresAt: number | null;
|
|
321
|
+
callerCeiling: EpCapability[];
|
|
322
|
+
nameAuthorityRevision: number;
|
|
323
|
+
rootCredentialId: string;
|
|
324
|
+
rootExpiresAt: number;
|
|
325
|
+
approvedGateRevision: number | null;
|
|
326
|
+
}
|
|
327
|
+
/** The decision's own completion. A bound decide that ended without its effect is the separate
|
|
328
|
+
* `refused` arm, which always carries `operationId` and `reason`. */
|
|
233
329
|
export type DecideResult = {
|
|
234
330
|
state: "approved";
|
|
235
|
-
|
|
236
|
-
|
|
331
|
+
outcome: ServiceHostOutcome;
|
|
332
|
+
approval: ServiceApprovalResult;
|
|
333
|
+
debt?: ServiceHostDebt[];
|
|
237
334
|
} | {
|
|
238
335
|
state: "refused";
|
|
239
|
-
|
|
336
|
+
outcome: ServiceHostOutcome;
|
|
337
|
+
proposal: ServiceProposalTombstoneView;
|
|
240
338
|
revision: number;
|
|
339
|
+
debt?: ServiceHostDebt[];
|
|
241
340
|
};
|
|
242
341
|
export type NameBindResult = {
|
|
243
342
|
state: "bound";
|
|
@@ -258,11 +357,11 @@ export type QuarantineRestoredResult = {
|
|
|
258
357
|
inventoryDigest: string;
|
|
259
358
|
};
|
|
260
359
|
interface ServiceHostOutputs {
|
|
261
|
-
"proposal-read": ReadResult<ServiceProposalView>;
|
|
360
|
+
"proposal-read": ReadResult<ServiceProposalView | ServiceProposalTombstoneView>;
|
|
262
361
|
"proposal-list": PageResult<ServiceProposalView>;
|
|
263
362
|
"instance-read": ReadResult<ServiceInstanceView>;
|
|
264
363
|
"instance-list": PageResult<ServiceInstanceView>;
|
|
265
|
-
"operation-read": ReadResult<ServiceOperationView>;
|
|
364
|
+
"operation-read": ReadResult<ServiceOperationView | ServiceOperationTerminalView>;
|
|
266
365
|
"name-read": ReadResult<ServiceNameView>;
|
|
267
366
|
"decide": DecideResult;
|
|
268
367
|
"name-bind": NameBindResult;
|
|
@@ -287,6 +386,43 @@ interface ServiceHostOutputs {
|
|
|
287
386
|
revision: number;
|
|
288
387
|
};
|
|
289
388
|
}
|
|
389
|
+
/** Non-completion arms. `denied` means this invocation wrote nothing and no operation is bound to
|
|
390
|
+
* the request (or the request conflicts with one): either the request can never bind, or this
|
|
391
|
+
* invocation's own read found no binding. That read is point-in-time; another invocation of the
|
|
392
|
+
* same request already in flight can still bind it later. Every other arm names the operation the
|
|
393
|
+
* request is or may be bound to; `held` by itself implies neither a binding nor an authorized
|
|
394
|
+
* granter, and none of them means the request was not executed. */
|
|
395
|
+
export type ServiceHostPending = {
|
|
396
|
+
state: "pending";
|
|
397
|
+
operationId: string;
|
|
398
|
+
phase: string;
|
|
399
|
+
notBefore?: number;
|
|
400
|
+
assignmentDigest?: string;
|
|
401
|
+
denyNew?: ServiceDenyNew;
|
|
402
|
+
root?: "none" | "revoked" | "retained-stamped";
|
|
403
|
+
debt?: ServiceHostDebt[];
|
|
404
|
+
};
|
|
405
|
+
export type ServiceHostHeld = {
|
|
406
|
+
state: "held";
|
|
407
|
+
operationId: string;
|
|
408
|
+
reason: string;
|
|
409
|
+
phase: string;
|
|
410
|
+
assignmentDigest?: string;
|
|
411
|
+
denyNew?: ServiceDenyNew;
|
|
412
|
+
debt?: ServiceHostDebt[];
|
|
413
|
+
};
|
|
414
|
+
export type ServiceHostRefused = {
|
|
415
|
+
state: "refused";
|
|
416
|
+
operationId: string;
|
|
417
|
+
reason: ServiceOperationRefusal;
|
|
418
|
+
boundOperationId?: string;
|
|
419
|
+
debt?: ServiceHostDebt[];
|
|
420
|
+
};
|
|
421
|
+
export type ServiceHostDenied = {
|
|
422
|
+
state: "denied";
|
|
423
|
+
reason: ServiceHostReason;
|
|
424
|
+
boundOperationId?: string;
|
|
425
|
+
};
|
|
290
426
|
export type ServiceHostResult = {
|
|
291
427
|
[K in ServiceHostOperation]: {
|
|
292
428
|
v: 1;
|
|
@@ -295,18 +431,24 @@ export type ServiceHostResult = {
|
|
|
295
431
|
requestId: string;
|
|
296
432
|
space: string;
|
|
297
433
|
accountPublicKey: string;
|
|
298
|
-
} & (ServiceHostOutputs[K] |
|
|
299
|
-
state: "pending";
|
|
300
|
-
operationId: string;
|
|
301
|
-
phase: string;
|
|
302
|
-
notBefore?: number;
|
|
303
|
-
} | {
|
|
304
|
-
state: "denied";
|
|
305
|
-
reason: ServiceHostReason;
|
|
306
|
-
});
|
|
434
|
+
} & (ServiceHostOutputs[K] | ServiceHostPending | ServiceHostHeld | ServiceHostRefused | ServiceHostDenied);
|
|
307
435
|
}[ServiceHostOperation];
|
|
308
436
|
export type ServiceEndpointHost = (request: ServiceHostRequest) => Promise<ServiceHostResult>;
|
|
309
437
|
/** Structural admission only. The host still authenticates its capability and resolves current authority. */
|
|
310
438
|
export declare function parseServiceHostRequest(raw: unknown): ServiceHostRequest;
|
|
439
|
+
/** Commands of one proposal: well formed, at most 128, unique and sorted by name. */
|
|
440
|
+
export declare function parseServiceProposalCommands(raw: unknown): Array<EpCommandAuthority & {
|
|
441
|
+
name: string;
|
|
442
|
+
}>;
|
|
443
|
+
/** Cluster digests of one proposal: canonical, at most 32, unique, in submitted order. */
|
|
444
|
+
export declare function parseServiceProposalClusters(raw: unknown): string[];
|
|
445
|
+
export declare function parseServiceProposalView(raw: unknown): ServiceProposalView;
|
|
446
|
+
export declare function parseServiceProposalTombstoneView(raw: unknown): ServiceProposalTombstoneView;
|
|
447
|
+
export declare function parseServiceOperationView(raw: unknown): ServiceOperationView;
|
|
448
|
+
export declare function parseServiceOperationTerminalView(raw: unknown): ServiceOperationTerminalView;
|
|
449
|
+
export declare function parseServiceApprovalResult(raw: unknown): ServiceApprovalResult;
|
|
450
|
+
/** Closed parser for the results of the operations this slice serves (decide, revoke, name-bind,
|
|
451
|
+
* operation-read, proposal-read) and for the shared arms of every operation. */
|
|
452
|
+
export declare function parseServiceHostResult(raw: unknown): ServiceHostResult;
|
|
311
453
|
export {};
|
|
312
454
|
//# sourceMappingURL=service-host-contract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-host-contract.d.ts","sourceRoot":"","sources":["../src/service-host-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,0BAA0B,EACnG,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,sBAAsB;IACrC,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,iGAAiG;IACjG,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1G,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AACvE,MAAM,MAAM,eAAe,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG;IAAE,SAAS,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAC1F,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,qBAAqB,EAAE,MAAM,CAAA;CAAE,GAC/F;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAClF,MAAM,MAAM,iBAAiB,GACzB;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,GACnB;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,GACpE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACxG;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAClE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,gHAAgH;AAChH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,kBAAkB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,GAAG,uBAAuB,GAAG,aAAa,GAAG,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IAClH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAC3C,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,oBAAoB,yPAItB,CAAC;AACZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,CAAC;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,GAAG,eAAe,CAAC,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,gBAAgB,CAAA;KAAE,GAC7F;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E,QAAQ,EACJ;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAC3C;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAA;KAAE,CAAC;CACrD;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,8FAA8F;IAC9F,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED,UAAU,gBAAgB;IAAG,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACzF,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,eAAe,EAAE,gBAAgB,CAAC;IAClC,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,gBAAgB,CAAC;IAClC,gBAAgB,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,WAAW,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,QAAQ,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,wBAAwB,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAC;QAC7F,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC;QAAC,aAAa,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IAClE,WAAW,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IACnG,QAAQ,EAAE,eAAe,GAAG;QAAE,wBAAwB,EAAE,MAAM,CAAC;QAC7D,KAAK,EAAE,eAAe,GAAG,oBAAoB,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,kBAAkB,CAAA;KAAE,CAAC;IACnH,oBAAoB,EAAE;QAAE,OAAO,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CAAC;IACrF,oBAAoB,EAAE,gBAAgB,GAAG;QAAE,OAAO,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CAAC;IAC7E,cAAc,EAAE;QAAE,OAAO,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,eAAe,GAAG;YAAE,cAAc,EAAE,MAAM,CAAA;SAAE,CAAC;QACjG,YAAY,EAAE,YAAY,EAAE,CAAC;QAAC,sBAAsB,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,eAAe,EAAE;QAAE,OAAO,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,sBAAsB,EAAE,MAAM,CAAA;KAAE,CAAC;IAChG,qBAAqB,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,gBAAgB,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,0BAA0B,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7E;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,iBAAiB,CAAC;AAC3D,MAAM,MAAM,kBAAkB,GAAG;KAAG,CAAC,IAAI,oBAAoB,GAAG;QAC9D,CAAC,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,uBAAuB,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,CAAC;QACrE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO,EAAE,kBAAkB,CAAC;KAC1D;CAAE,CAAC,oBAAoB,CAAC,CAAC;AAE1B,KAAK,SAAS,CAAC,CAAC,IAAI;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AACnD,KAAK,UAAU,CAAC,CAAC,IAAI;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AACtF,KAAK,UAAU,CAAC,CAAC,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAC3F,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC/F;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AACxE,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC;AAC1E,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/F,MAAM,MAAM,wBAAwB,GAAG;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IACjG,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC;AACxF,UAAU,kBAAkB;IAC1B,eAAe,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;IACjD,eAAe,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;IACjD,eAAe,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;IACjD,eAAe,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;IACjD,gBAAgB,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACnD,WAAW,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;IACzC,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,cAAc,CAAC;IAC5B,QAAQ,EAAE,YAAY,CAAC;IACvB,oBAAoB,EAAE,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC1D,oBAAoB,EAAE,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC1D,cAAc,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,kBAAkB,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAClF,eAAe,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9F,qBAAqB,EAAE,wBAAwB,CAAC;IAChD,gBAAgB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1E;AACD,MAAM,MAAM,iBAAiB,GAAG;KAAG,CAAC,IAAI,oBAAoB,GAAG;QAC7D,CAAC,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,uBAAuB,CAAC;QAAC,SAAS,EAAE,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;KAC/G,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACvG;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAA;KAAE,CAAC;CAAE,CAAC,oBAAoB,CAAC,CAAC;AAE1E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAiC9F,6GAA6G;AAC7G,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CA4CxE"}
|
|
1
|
+
{"version":3,"file":"service-host-contract.d.ts","sourceRoot":"","sources":["../src/service-host-contract.ts"],"names":[],"mappings":"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"}
|