@substrat-run/contracts 0.118.0 → 0.120.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/connection-health.d.ts +132 -0
- package/dist/connection-health.d.ts.map +1 -0
- package/dist/connection-health.js +132 -0
- package/dist/connection-health.js.map +1 -0
- package/dist/control-plane.d.ts +20 -1
- package/dist/control-plane.d.ts.map +1 -1
- package/dist/control-plane.js +26 -2
- package/dist/control-plane.js.map +1 -1
- package/dist/denial.d.ts +12 -0
- package/dist/denial.d.ts.map +1 -1
- package/dist/deploy.d.ts +68 -0
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +91 -1
- package/dist/deploy.js.map +1 -1
- package/dist/events.d.ts +42 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +26 -2
- package/dist/events.js.map +1 -1
- package/dist/ids.d.ts +1 -0
- package/dist/ids.d.ts.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +58 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +109 -3
- package/dist/manifest.js.map +1 -1
- package/dist/operations.d.ts +67 -0
- package/dist/operations.d.ts.map +1 -1
- package/dist/operations.js +111 -0
- package/dist/operations.js.map +1 -1
- package/dist/peer-transport.d.ts +81 -0
- package/dist/peer-transport.d.ts.map +1 -0
- package/dist/peer-transport.js +87 -0
- package/dist/peer-transport.js.map +1 -0
- package/dist/peer.d.ts +183 -0
- package/dist/peer.d.ts.map +1 -0
- package/dist/peer.js +155 -0
- package/dist/peer.js.map +1 -0
- package/dist/permission.d.ts +42 -1
- package/dist/permission.d.ts.map +1 -1
- package/dist/permission.js +36 -2
- package/dist/permission.js.map +1 -1
- package/dist/platform-request.d.ts +50 -0
- package/dist/platform-request.d.ts.map +1 -1
- package/dist/platform-request.js +53 -1
- package/dist/platform-request.js.map +1 -1
- package/dist/preview-client.d.ts +154 -0
- package/dist/preview-client.d.ts.map +1 -0
- package/dist/preview-client.js +157 -0
- package/dist/preview-client.js.map +1 -0
- package/dist/registry.d.ts +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +7 -0
- package/dist/registry.js.map +1 -1
- package/dist/routing.d.ts +1 -0
- package/dist/routing.d.ts.map +1 -1
- package/dist/routing.js +9 -0
- package/dist/routing.js.map +1 -1
- package/dist/vertical-events.d.ts +265 -0
- package/dist/vertical-events.d.ts.map +1 -0
- package/dist/vertical-events.js +167 -0
- package/dist/vertical-events.js.map +1 -0
- package/package.json +1 -1
package/dist/operations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* The hosted transport for a peer call (#1706, part 2) — how a deployed vertical reaches
|
|
4
|
+
* another vertical of the same tenant, and how the platform says WHICH vertical is calling.
|
|
5
|
+
*
|
|
6
|
+
* The shape, because every piece below only makes sense against it:
|
|
7
|
+
*
|
|
8
|
+
* 1. A vertical's harness fetches `PEER_CALL_URL`, naming the TARGET and the operation in the
|
|
9
|
+
* body. It names no caller: it has no way to.
|
|
10
|
+
* 2. The **egress worker** — which every dispatched `fetch` passes through — recognises that
|
|
11
|
+
* one reserved address and hands the call to the router, together with the dispatch
|
|
12
|
+
* parameters the ROUTER set when it dispatched the caller (`OUTBOUND_POLICY`: the calling
|
|
13
|
+
* vertical, its instance, its declared `calls`, and the depth). Nothing in the request is
|
|
14
|
+
* trusted for identity.
|
|
15
|
+
* 3. The **router** resolves the target in the caller's own tenant and dispatches the target's
|
|
16
|
+
* `/internal/vertical-invoke`, where the peer door admits it (part 1).
|
|
17
|
+
*
|
|
18
|
+
* **Why an address that does not resolve.** `*.substrat.internal` is in no DNS zone. A
|
|
19
|
+
* `fetch` egress cannot police — one made from inside a Durable Object, which Cloudflare's
|
|
20
|
+
* outbound workers do not intercept — therefore FAILS rather than leaving for the internet.
|
|
21
|
+
* The alternative, a real `*.substrat.run` name, would have left that call resolvable and
|
|
22
|
+
* routed it to the public router, where it would arrive with no identity. Failing closed at
|
|
23
|
+
* the socket is the better half of that choice, and it is pinned by a test.
|
|
24
|
+
*/
|
|
25
|
+
/** The one reserved host a peer call is addressed to. In no DNS zone, deliberately. */
|
|
26
|
+
export declare const PEER_CALL_HOST = "peer.substrat.internal";
|
|
27
|
+
/** The full address a peer call is made to. The caller never builds this by hand. */
|
|
28
|
+
export declare const PEER_CALL_URL = "https://peer.substrat.internal/invoke";
|
|
29
|
+
/** Is this destination the peer transport? An exact host match, never a suffix test. */
|
|
30
|
+
export declare const isPeerCallHost: (hostname: string) => boolean;
|
|
31
|
+
/**
|
|
32
|
+
* How deep a chain of SYNCHRONOUS peer calls may go: A calls B, which calls C…
|
|
33
|
+
*
|
|
34
|
+
* Its own constant, deliberately NOT shared with the cross-vertical event hop cap (#1705).
|
|
35
|
+
* The two bound different things — a call chain holds a request open at every hop and costs
|
|
36
|
+
* latency and an isolate each, while an event re-export chain is asynchronous and costs a
|
|
37
|
+
* delivery — so one number would couple two features that must move independently.
|
|
38
|
+
*/
|
|
39
|
+
export declare const PEER_CALL_DEPTH_MAX = 4;
|
|
40
|
+
/**
|
|
41
|
+
* What a caller puts in the body: the target and the operation, and nothing about itself.
|
|
42
|
+
*
|
|
43
|
+
* STRICT, and that is the contract: the caller is supplied by the platform from the dispatch
|
|
44
|
+
* it is running under, so a body that tried to name one would be refused rather than believed.
|
|
45
|
+
*/
|
|
46
|
+
export declare const peerCallRequest: z.ZodObject<{
|
|
47
|
+
vertical: z.ZodString;
|
|
48
|
+
operation: z.ZodString;
|
|
49
|
+
input: z.ZodOptional<z.ZodUnknown>;
|
|
50
|
+
idempotencyKey: z.ZodOptional<z.ZodString>;
|
|
51
|
+
}, z.core.$strict>;
|
|
52
|
+
export type PeerCallRequest = z.infer<typeof peerCallRequest>;
|
|
53
|
+
/** What the transport answers with. An operation may legitimately return nothing. */
|
|
54
|
+
export declare const peerCallResponse: z.ZodObject<{
|
|
55
|
+
result: z.ZodUnknown;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
export type PeerCallResponse = z.infer<typeof peerCallResponse>;
|
|
58
|
+
/**
|
|
59
|
+
* WHO is calling, as the platform knows it — the dispatch parameters the router sets, read by
|
|
60
|
+
* the egress worker and handed to the router's peer entrypoint. Never assembled from a request.
|
|
61
|
+
*
|
|
62
|
+
* `depth` is the chain position of the call now running: 0 for a call a person's request set
|
|
63
|
+
* off, 1 for a peer call made while serving a peer call, and so on.
|
|
64
|
+
*/
|
|
65
|
+
export declare const peerCaller: z.ZodObject<{
|
|
66
|
+
vertical: z.ZodString;
|
|
67
|
+
tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
|
|
68
|
+
scopeId: z.core.$ZodBranded<z.ZodString, "ScopeId", "out">;
|
|
69
|
+
calls: z.ZodNullable<z.ZodArray<z.ZodString>>;
|
|
70
|
+
depth: z.ZodNumber;
|
|
71
|
+
}, z.core.$strip>;
|
|
72
|
+
export type PeerCaller = z.infer<typeof peerCaller>;
|
|
73
|
+
/** May this caller call `target`, by its own declaration? A pre-`calls` version is unenforced. */
|
|
74
|
+
export declare const callsDeclares: (calls: readonly string[] | null, target: string) => boolean;
|
|
75
|
+
/** The refusal an undeclared target earns, worded for the builder who has to fix it. */
|
|
76
|
+
export declare const undeclaredCallMessage: (caller: string, target: string) => string;
|
|
77
|
+
/** The refusal a preview earns. It names the way to exercise the edge instead. */
|
|
78
|
+
export declare const previewCallerMessage: (vertical: string) => string;
|
|
79
|
+
/** The refusal a too-deep chain earns. */
|
|
80
|
+
export declare const callDepthMessage: (depth: number) => string;
|
|
81
|
+
//# sourceMappingURL=peer-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer-transport.d.ts","sourceRoot":"","sources":["../src/peer-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,uFAAuF;AACvF,eAAO,MAAM,cAAc,2BAA2B,CAAC;AAEvD,qFAAqF;AACrF,eAAO,MAAM,aAAa,0CAAqC,CAAC;AAEhE,wFAAwF;AACxF,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,OACP,CAAC;AAE5C;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;kBAOjB,CAAC;AACZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,qFAAqF;AACrF,eAAO,MAAM,gBAAgB;;iBAAoC,CAAC;AAClE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,UAAU;;;;;;iBAOrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,kGAAkG;AAClG,eAAO,MAAM,aAAa,UAAW,SAAS,MAAM,EAAE,GAAG,IAAI,UAAU,MAAM,KAAG,OACtC,CAAC;AAE3C,wFAAwF;AACxF,eAAO,MAAM,qBAAqB,WAAY,MAAM,UAAU,MAAM,KAAG,MAGX,CAAC;AAE7D,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,aAAc,MAAM,KAAG,MAId,CAAC;AAE3C,0CAA0C;AAC1C,eAAO,MAAM,gBAAgB,UAAW,MAAM,KAAG,MAGgC,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { scopeId, tenantId, verticalSlug } from './ids.js';
|
|
3
|
+
/**
|
|
4
|
+
* The hosted transport for a peer call (#1706, part 2) — how a deployed vertical reaches
|
|
5
|
+
* another vertical of the same tenant, and how the platform says WHICH vertical is calling.
|
|
6
|
+
*
|
|
7
|
+
* The shape, because every piece below only makes sense against it:
|
|
8
|
+
*
|
|
9
|
+
* 1. A vertical's harness fetches `PEER_CALL_URL`, naming the TARGET and the operation in the
|
|
10
|
+
* body. It names no caller: it has no way to.
|
|
11
|
+
* 2. The **egress worker** — which every dispatched `fetch` passes through — recognises that
|
|
12
|
+
* one reserved address and hands the call to the router, together with the dispatch
|
|
13
|
+
* parameters the ROUTER set when it dispatched the caller (`OUTBOUND_POLICY`: the calling
|
|
14
|
+
* vertical, its instance, its declared `calls`, and the depth). Nothing in the request is
|
|
15
|
+
* trusted for identity.
|
|
16
|
+
* 3. The **router** resolves the target in the caller's own tenant and dispatches the target's
|
|
17
|
+
* `/internal/vertical-invoke`, where the peer door admits it (part 1).
|
|
18
|
+
*
|
|
19
|
+
* **Why an address that does not resolve.** `*.substrat.internal` is in no DNS zone. A
|
|
20
|
+
* `fetch` egress cannot police — one made from inside a Durable Object, which Cloudflare's
|
|
21
|
+
* outbound workers do not intercept — therefore FAILS rather than leaving for the internet.
|
|
22
|
+
* The alternative, a real `*.substrat.run` name, would have left that call resolvable and
|
|
23
|
+
* routed it to the public router, where it would arrive with no identity. Failing closed at
|
|
24
|
+
* the socket is the better half of that choice, and it is pinned by a test.
|
|
25
|
+
*/
|
|
26
|
+
/** The one reserved host a peer call is addressed to. In no DNS zone, deliberately. */
|
|
27
|
+
export const PEER_CALL_HOST = 'peer.substrat.internal';
|
|
28
|
+
/** The full address a peer call is made to. The caller never builds this by hand. */
|
|
29
|
+
export const PEER_CALL_URL = `https://${PEER_CALL_HOST}/invoke`;
|
|
30
|
+
/** Is this destination the peer transport? An exact host match, never a suffix test. */
|
|
31
|
+
export const isPeerCallHost = (hostname) => hostname.toLowerCase() === PEER_CALL_HOST;
|
|
32
|
+
/**
|
|
33
|
+
* How deep a chain of SYNCHRONOUS peer calls may go: A calls B, which calls C…
|
|
34
|
+
*
|
|
35
|
+
* Its own constant, deliberately NOT shared with the cross-vertical event hop cap (#1705).
|
|
36
|
+
* The two bound different things — a call chain holds a request open at every hop and costs
|
|
37
|
+
* latency and an isolate each, while an event re-export chain is asynchronous and costs a
|
|
38
|
+
* delivery — so one number would couple two features that must move independently.
|
|
39
|
+
*/
|
|
40
|
+
export const PEER_CALL_DEPTH_MAX = 4;
|
|
41
|
+
/**
|
|
42
|
+
* What a caller puts in the body: the target and the operation, and nothing about itself.
|
|
43
|
+
*
|
|
44
|
+
* STRICT, and that is the contract: the caller is supplied by the platform from the dispatch
|
|
45
|
+
* it is running under, so a body that tried to name one would be refused rather than believed.
|
|
46
|
+
*/
|
|
47
|
+
export const peerCallRequest = z
|
|
48
|
+
.object({
|
|
49
|
+
vertical: verticalSlug,
|
|
50
|
+
operation: z.string().min(1),
|
|
51
|
+
input: z.unknown().optional(),
|
|
52
|
+
idempotencyKey: z.string().min(1).optional(),
|
|
53
|
+
})
|
|
54
|
+
.strict();
|
|
55
|
+
/** What the transport answers with. An operation may legitimately return nothing. */
|
|
56
|
+
export const peerCallResponse = z.object({ result: z.unknown() });
|
|
57
|
+
/**
|
|
58
|
+
* WHO is calling, as the platform knows it — the dispatch parameters the router sets, read by
|
|
59
|
+
* the egress worker and handed to the router's peer entrypoint. Never assembled from a request.
|
|
60
|
+
*
|
|
61
|
+
* `depth` is the chain position of the call now running: 0 for a call a person's request set
|
|
62
|
+
* off, 1 for a peer call made while serving a peer call, and so on.
|
|
63
|
+
*/
|
|
64
|
+
export const peerCaller = z.object({
|
|
65
|
+
vertical: verticalSlug,
|
|
66
|
+
tenantId,
|
|
67
|
+
scopeId,
|
|
68
|
+
/** The calling version's declared `substrat.calls`. `null` = a version that predates it. */
|
|
69
|
+
calls: z.array(verticalSlug).nullable(),
|
|
70
|
+
depth: z.number().int().min(0),
|
|
71
|
+
});
|
|
72
|
+
/** May this caller call `target`, by its own declaration? A pre-`calls` version is unenforced. */
|
|
73
|
+
export const callsDeclares = (calls, target) => calls === null || calls.includes(target);
|
|
74
|
+
/** The refusal an undeclared target earns, worded for the builder who has to fix it. */
|
|
75
|
+
export const undeclaredCallMessage = (caller, target) => `'${caller}' does not declare '${target}' in its outgoing calls. Add it to package.json ` +
|
|
76
|
+
`substrat.calls (e.g. ["${target}"]) and push a new version — the declaration is reviewed ` +
|
|
77
|
+
`at the admit checkpoint, like substrat.outbound (#1706).`;
|
|
78
|
+
/** The refusal a preview earns. It names the way to exercise the edge instead. */
|
|
79
|
+
export const previewCallerMessage = (vertical) => `peer calls are not available from a preview (the caller must be a primary, active scope), ` +
|
|
80
|
+
`so '${vertical}' cannot call another vertical from here. Test this edge locally with the ` +
|
|
81
|
+
`vertical broker (createLocalVerticalBroker from '@substrat-run/adapter-sqlite/vertical-broker'), ` +
|
|
82
|
+
`or install both verticals in a tenant.`;
|
|
83
|
+
/** The refusal a too-deep chain earns. */
|
|
84
|
+
export const callDepthMessage = (depth) => `peer call refused: this call is already ${depth} deep, and a chain may be at most ` +
|
|
85
|
+
`${PEER_CALL_DEPTH_MAX} (#1706). A chain that long is usually two verticals calling each ` +
|
|
86
|
+
`other in a loop; an event is the shape for work that does not need an answer.`;
|
|
87
|
+
//# sourceMappingURL=peer-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer-transport.js","sourceRoot":"","sources":["../src/peer-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,uFAAuF;AACvF,MAAM,CAAC,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAEvD,qFAAqF;AACrF,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,cAAc,SAAS,CAAC;AAEhE,wFAAwF;AACxF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAW,EAAE,CAC1D,QAAQ,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,QAAQ,EAAE,YAAY;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,qFAAqF;AACrF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAGlE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,QAAQ,EAAE,YAAY;IACtB,QAAQ;IACR,OAAO;IACP,4FAA4F;IAC5F,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAGH,kGAAkG;AAClG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAA+B,EAAE,MAAc,EAAW,EAAE,CACxF,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAE3C,wFAAwF;AACxF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,MAAc,EAAU,EAAE,CAC9E,IAAI,MAAM,uBAAuB,MAAM,kDAAkD;IACzF,0BAA0B,MAAM,2DAA2D;IAC3F,0DAA0D,CAAC;AAE7D,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAgB,EAAU,EAAE,CAC/D,4FAA4F;IAC5F,OAAO,QAAQ,4EAA4E;IAC3F,mGAAmG;IACnG,wCAAwC,CAAC;AAE3C,0CAA0C;AAC1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAU,EAAE,CACxD,2CAA2C,KAAK,oCAAoC;IACpF,GAAG,mBAAmB,oEAAoE;IAC1F,+EAA+E,CAAC"}
|
package/dist/peer.d.ts
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Peers (#1706): another vertical of the SAME tenant, calling this one's operations through the
|
|
4
|
+
* platform — with no token, no pasted API key, no hostname and no outbound allowlist entry.
|
|
5
|
+
*
|
|
6
|
+
* The shape of the whole mechanism, so the pieces below read in place:
|
|
7
|
+
*
|
|
8
|
+
* - **The target declares who may call it** — `peers` in its module manifest (`peerSpec`): the
|
|
9
|
+
* calling vertical's slug, the operations it may invoke, and the keys it holds while doing so.
|
|
10
|
+
* The keys are seated at provisioning as `vertical:<slug>` tuples, exactly as a schedule's are
|
|
11
|
+
* as `system:<module>` ones, and are rendered in the vertical's PERMISSIONS.md — so widening
|
|
12
|
+
* what another app may do is a reviewed permission diff, like any other widening.
|
|
13
|
+
* - **The platform says who is calling**, at a hop the caller cannot forge; the caller holds no
|
|
14
|
+
* credential that names it. On the pure host that hop is the local broker, in-process.
|
|
15
|
+
* - **The caller is an actor of its own** on the spine: `{ vertical, scope }` (`verticalActor`).
|
|
16
|
+
* - **Revocation is the next call.** A tenant's kill switch per (scope, peer) tombstones the
|
|
17
|
+
* peer's grants and blocks the seat (#1666's design, generalised), and a caller that is no
|
|
18
|
+
* longer a live primary instance in the tenant is refused by the platform before any door.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* WHO is calling: the calling vertical's registry slug, and the instance (scope) that called.
|
|
22
|
+
* The platform supplies it — never the request — and the target's door records it whole.
|
|
23
|
+
*/
|
|
24
|
+
export declare const verticalCaller: z.ZodObject<{
|
|
25
|
+
vertical: z.ZodString;
|
|
26
|
+
scope: z.core.$ZodBranded<z.ZodString, "ScopeId", "out">;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
export type VerticalCaller = z.infer<typeof verticalCaller>;
|
|
29
|
+
/** The most operations one peer entry may allow, and the most keys it may hold. */
|
|
30
|
+
export declare const PEER_OPERATIONS_MAX = 64;
|
|
31
|
+
export declare const PEER_PERMISSIONS_MAX = 32;
|
|
32
|
+
/**
|
|
33
|
+
* One declared peer — "vertical X, in this tenant, may invoke these operations holding these
|
|
34
|
+
* keys" — as a module manifest's `peers` entry.
|
|
35
|
+
*
|
|
36
|
+
* - `operations` is the door's allowlist, refused BEFORE the handler (not a K-35 denial: no key
|
|
37
|
+
* was checked). It may be EMPTY: a receive-only peer, which holds keys (e.g. the read permission
|
|
38
|
+
* an exported event is gated by, #1705) and may call nothing.
|
|
39
|
+
* - `permissions` is what `vertical:<slug>` holds on the scope while any of those operations runs,
|
|
40
|
+
* and it may NOT be empty: a peer entry that grants nothing declares nothing, and the right to
|
|
41
|
+
* receive is itself a key.
|
|
42
|
+
*
|
|
43
|
+
* Operation names are not checked against the module's own operations here: a vertical may allow
|
|
44
|
+
* an engine operation it composes, and the host's registry is what knows every name. An unknown
|
|
45
|
+
* name admits nothing (the door answers `not_found`, as for any caller), and `lint:permissions`
|
|
46
|
+
* reports it.
|
|
47
|
+
*/
|
|
48
|
+
export declare const peerSpec: z.ZodObject<{
|
|
49
|
+
vertical: z.ZodString;
|
|
50
|
+
operations: z.ZodArray<z.ZodString>;
|
|
51
|
+
permissions: z.ZodArray<z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">>;
|
|
52
|
+
}, z.core.$strip>;
|
|
53
|
+
export type PeerSpec = z.infer<typeof peerSpec>;
|
|
54
|
+
/** One instance of a vertical, as the directory resolves it for a tenant. */
|
|
55
|
+
export declare const verticalInstance: z.ZodObject<{
|
|
56
|
+
tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
|
|
57
|
+
scopeId: z.core.$ZodBranded<z.ZodString, "ScopeId", "out">;
|
|
58
|
+
vertical: z.ZodString;
|
|
59
|
+
}, z.core.$strip>;
|
|
60
|
+
export type VerticalInstance = z.infer<typeof verticalInstance>;
|
|
61
|
+
/**
|
|
62
|
+
* "The instance of vertical Y in tenant T" (#1706), as the directory answers it — the same answer
|
|
63
|
+
* everywhere it is asked (the control plane's directory, the pure host, the local broker), because
|
|
64
|
+
* all of them apply `resolveVerticalInstanceFrom` from the kernel.
|
|
65
|
+
*
|
|
66
|
+
* Only a PRIMARY (neither a fork nor a preview) and ACTIVE scope of that tenant is a candidate:
|
|
67
|
+
* - `resolved` — exactly one.
|
|
68
|
+
* - `not-installed` — none. The tenant has not installed Y, or only a preview/fork of it, or its
|
|
69
|
+
* instance is suspended or archived. One answer, deliberately: which of those it is belongs to
|
|
70
|
+
* the tenant's console, not to another app's error message.
|
|
71
|
+
* - `ambiguous` — more than one. Refused rather than guessed: a tenant may run two instances of
|
|
72
|
+
* one vertical, and picking one would route one app's data into the other. A binding that names
|
|
73
|
+
* the instance is what settles it (the auth-server pick's shape), not a tie-break rule.
|
|
74
|
+
*/
|
|
75
|
+
export declare const verticalResolution: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
76
|
+
outcome: z.ZodLiteral<"resolved">;
|
|
77
|
+
instance: z.ZodObject<{
|
|
78
|
+
tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
|
|
79
|
+
scopeId: z.core.$ZodBranded<z.ZodString, "ScopeId", "out">;
|
|
80
|
+
vertical: z.ZodString;
|
|
81
|
+
}, z.core.$strip>;
|
|
82
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
83
|
+
outcome: z.ZodLiteral<"not-installed">;
|
|
84
|
+
tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
|
|
85
|
+
vertical: z.ZodString;
|
|
86
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
87
|
+
outcome: z.ZodLiteral<"ambiguous">;
|
|
88
|
+
tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
|
|
89
|
+
vertical: z.ZodString;
|
|
90
|
+
count: z.ZodNumber;
|
|
91
|
+
}, z.core.$strip>], "outcome">;
|
|
92
|
+
export type VerticalResolution = z.infer<typeof verticalResolution>;
|
|
93
|
+
/**
|
|
94
|
+
* The per-(scope, peer) kill switch (#1706) — a tenant turning one calling vertical off on one
|
|
95
|
+
* scope, and back on, WITHOUT a push. `HostAdmin.revokeFromPeer` / `restoreToPeer`, the mirror of
|
|
96
|
+
* the schedule switch (#1666): OFF tombstones every grant `vertical:<slug>` holds on the scope and
|
|
97
|
+
* makes an OFF marker live, so neither a check nor a provisioning seat can give the peer anything
|
|
98
|
+
* back until `restoreToPeer`. `reason` lands in the admin log beside the actor.
|
|
99
|
+
*/
|
|
100
|
+
export declare const peerSwitch: z.ZodObject<{
|
|
101
|
+
vertical: z.ZodString;
|
|
102
|
+
node: z.ZodObject<{
|
|
103
|
+
tenantId: z.core.$ZodBranded<z.ZodString, "TenantId", "out">;
|
|
104
|
+
scopeId: z.core.$ZodBranded<z.ZodString, "ScopeId", "out">;
|
|
105
|
+
}, z.core.$strip>;
|
|
106
|
+
reason: z.ZodString;
|
|
107
|
+
}, z.core.$strip>;
|
|
108
|
+
export type PeerSwitch = z.infer<typeof peerSwitch>;
|
|
109
|
+
/**
|
|
110
|
+
* What the far end of the peer switch did in the scope's own storage — `held: false` when the
|
|
111
|
+
* scope holds neither a grant nor a marker for that peer (nothing was written). The same shape
|
|
112
|
+
* as the schedule switch's outcome, because it is the same statement underneath.
|
|
113
|
+
*/
|
|
114
|
+
export declare const peerSwitchOutcome: z.ZodObject<{
|
|
115
|
+
held: z.ZodBoolean;
|
|
116
|
+
changed: z.ZodBoolean;
|
|
117
|
+
permissions: z.ZodArray<z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">>;
|
|
118
|
+
}, z.core.$strip>;
|
|
119
|
+
export type PeerSwitchOutcome = z.infer<typeof peerSwitchOutcome>;
|
|
120
|
+
/** What `revokeFromPeer` / `restoreToPeer` answer: the position the switch is now in. */
|
|
121
|
+
export declare const peerSwitchResult: z.ZodObject<{
|
|
122
|
+
operationId: z.ZodString;
|
|
123
|
+
vertical: z.ZodString;
|
|
124
|
+
calls: z.ZodEnum<{
|
|
125
|
+
off: "off";
|
|
126
|
+
on: "on";
|
|
127
|
+
}>;
|
|
128
|
+
changed: z.ZodBoolean;
|
|
129
|
+
permissions: z.ZodArray<z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">>;
|
|
130
|
+
}, z.core.$strip>;
|
|
131
|
+
export type PeerSwitchResult = z.infer<typeof peerSwitchResult>;
|
|
132
|
+
/**
|
|
133
|
+
* One key of `ScopeHost.peerCovers`: does `vertical:<slug>` hold it at the scope node RIGHT NOW —
|
|
134
|
+
* the checker's own answer, so a peer switched off holds nothing.
|
|
135
|
+
*/
|
|
136
|
+
export declare const peerCoverage: z.ZodObject<{
|
|
137
|
+
permission: z.core.$ZodBranded<z.ZodString, "PermissionKey", "out">;
|
|
138
|
+
held: z.ZodBoolean;
|
|
139
|
+
}, z.core.$strip>;
|
|
140
|
+
export type PeerCoverage = z.infer<typeof peerCoverage>;
|
|
141
|
+
/**
|
|
142
|
+
* Where ONE peer stands on one scope (#1706) — the bare position, with no audit join: the
|
|
143
|
+
* honest answer a vertical's own deployment can give, since it holds no admin log.
|
|
144
|
+
*
|
|
145
|
+
* - `on`: a live grant and no OFF marker — its calls are admitted.
|
|
146
|
+
* - `off`: a live OFF marker. Every call is refused at the door until `restoreToPeer`.
|
|
147
|
+
* - `ungranted`: a row for this peer exists but nothing of it is live — its grants were
|
|
148
|
+
* tombstoned by something other than the switch (a raw write, a reconcile that dropped it),
|
|
149
|
+
* or the scope predates the manifest version that declares it. Quiet, not an error.
|
|
150
|
+
*
|
|
151
|
+
* A peer the scope holds no row for at all is simply absent from the list. "Not installed in
|
|
152
|
+
* this tenant" is a fact the DIRECTORY holds, not the scope's storage, and the surfaces that
|
|
153
|
+
* show a tenant its peers join the two.
|
|
154
|
+
*/
|
|
155
|
+
export declare const peerGrantsEntry: z.ZodObject<{
|
|
156
|
+
vertical: z.ZodString;
|
|
157
|
+
calls: z.ZodEnum<{
|
|
158
|
+
off: "off";
|
|
159
|
+
on: "on";
|
|
160
|
+
ungranted: "ungranted";
|
|
161
|
+
}>;
|
|
162
|
+
}, z.core.$strip>;
|
|
163
|
+
export type PeerGrantsEntry = z.infer<typeof peerGrantsEntry>;
|
|
164
|
+
/**
|
|
165
|
+
* The per-scope status read, as the control plane answers it: the position above, plus the
|
|
166
|
+
* one thing only the platform can add — while a peer is off, WHO switched it off, when and
|
|
167
|
+
* why, from the admin log's `revokeFromPeer` intent row still in force.
|
|
168
|
+
*/
|
|
169
|
+
export declare const peerGrantsStatusEntry: z.ZodObject<{
|
|
170
|
+
vertical: z.ZodString;
|
|
171
|
+
calls: z.ZodEnum<{
|
|
172
|
+
off: "off";
|
|
173
|
+
on: "on";
|
|
174
|
+
ungranted: "ungranted";
|
|
175
|
+
}>;
|
|
176
|
+
switchedOff: z.ZodNullable<z.ZodObject<{
|
|
177
|
+
actor: z.core.$ZodBranded<z.ZodString, "PlatformActorId", "out">;
|
|
178
|
+
reason: z.ZodString;
|
|
179
|
+
at: z.core.$ZodBranded<z.ZodString, "Instant", "out">;
|
|
180
|
+
}, z.core.$strip>>;
|
|
181
|
+
}, z.core.$strip>;
|
|
182
|
+
export type PeerGrantsStatusEntry = z.infer<typeof peerGrantsStatusEntry>;
|
|
183
|
+
//# sourceMappingURL=peer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../src/peer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;GAGG;AACH,eAAO,MAAM,cAAc;;;iBAAuD,CAAC;AACnF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAIvC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,QAAQ;;;;iBAenB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB;;;;iBAA0D,CAAC;AACxF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;8BAS7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE;;;;;;GAMG;AACH,eAAO,MAAM,UAAU;;;;;;;iBAIrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;iBAI5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,yFAAyF;AACzF,eAAO,MAAM,gBAAgB;;;;;;;;;iBAO3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,YAAY;;;iBAA6D,CAAC;AACvF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe;;;;;;;iBAG1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;iBAQhC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
package/dist/peer.js
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { instant, permissionKey, platformActorId, scopeId, tenantId, verticalSlug } from './ids.js';
|
|
3
|
+
/**
|
|
4
|
+
* Peers (#1706): another vertical of the SAME tenant, calling this one's operations through the
|
|
5
|
+
* platform — with no token, no pasted API key, no hostname and no outbound allowlist entry.
|
|
6
|
+
*
|
|
7
|
+
* The shape of the whole mechanism, so the pieces below read in place:
|
|
8
|
+
*
|
|
9
|
+
* - **The target declares who may call it** — `peers` in its module manifest (`peerSpec`): the
|
|
10
|
+
* calling vertical's slug, the operations it may invoke, and the keys it holds while doing so.
|
|
11
|
+
* The keys are seated at provisioning as `vertical:<slug>` tuples, exactly as a schedule's are
|
|
12
|
+
* as `system:<module>` ones, and are rendered in the vertical's PERMISSIONS.md — so widening
|
|
13
|
+
* what another app may do is a reviewed permission diff, like any other widening.
|
|
14
|
+
* - **The platform says who is calling**, at a hop the caller cannot forge; the caller holds no
|
|
15
|
+
* credential that names it. On the pure host that hop is the local broker, in-process.
|
|
16
|
+
* - **The caller is an actor of its own** on the spine: `{ vertical, scope }` (`verticalActor`).
|
|
17
|
+
* - **Revocation is the next call.** A tenant's kill switch per (scope, peer) tombstones the
|
|
18
|
+
* peer's grants and blocks the seat (#1666's design, generalised), and a caller that is no
|
|
19
|
+
* longer a live primary instance in the tenant is refused by the platform before any door.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* WHO is calling: the calling vertical's registry slug, and the instance (scope) that called.
|
|
23
|
+
* The platform supplies it — never the request — and the target's door records it whole.
|
|
24
|
+
*/
|
|
25
|
+
export const verticalCaller = z.object({ vertical: verticalSlug, scope: scopeId });
|
|
26
|
+
/** The most operations one peer entry may allow, and the most keys it may hold. */
|
|
27
|
+
export const PEER_OPERATIONS_MAX = 64;
|
|
28
|
+
export const PEER_PERMISSIONS_MAX = 32;
|
|
29
|
+
const noDuplicates = (items) => new Set(items).size === items.length;
|
|
30
|
+
/**
|
|
31
|
+
* One declared peer — "vertical X, in this tenant, may invoke these operations holding these
|
|
32
|
+
* keys" — as a module manifest's `peers` entry.
|
|
33
|
+
*
|
|
34
|
+
* - `operations` is the door's allowlist, refused BEFORE the handler (not a K-35 denial: no key
|
|
35
|
+
* was checked). It may be EMPTY: a receive-only peer, which holds keys (e.g. the read permission
|
|
36
|
+
* an exported event is gated by, #1705) and may call nothing.
|
|
37
|
+
* - `permissions` is what `vertical:<slug>` holds on the scope while any of those operations runs,
|
|
38
|
+
* and it may NOT be empty: a peer entry that grants nothing declares nothing, and the right to
|
|
39
|
+
* receive is itself a key.
|
|
40
|
+
*
|
|
41
|
+
* Operation names are not checked against the module's own operations here: a vertical may allow
|
|
42
|
+
* an engine operation it composes, and the host's registry is what knows every name. An unknown
|
|
43
|
+
* name admits nothing (the door answers `not_found`, as for any caller), and `lint:permissions`
|
|
44
|
+
* reports it.
|
|
45
|
+
*/
|
|
46
|
+
export const peerSpec = z.object({
|
|
47
|
+
vertical: verticalSlug,
|
|
48
|
+
operations: z
|
|
49
|
+
.array(z.string().min(1))
|
|
50
|
+
.max(PEER_OPERATIONS_MAX)
|
|
51
|
+
.refine(noDuplicates, { message: 'a peer lists each operation at most once' }),
|
|
52
|
+
permissions: z
|
|
53
|
+
.array(permissionKey)
|
|
54
|
+
.min(1, {
|
|
55
|
+
message: 'a peer holds at least one key — an entry that grants nothing declares nothing (a receive-only ' +
|
|
56
|
+
'peer names the key its deliveries are gated by)',
|
|
57
|
+
})
|
|
58
|
+
.max(PEER_PERMISSIONS_MAX)
|
|
59
|
+
.refine(noDuplicates, { message: 'a peer lists each permission at most once' }),
|
|
60
|
+
});
|
|
61
|
+
/** One instance of a vertical, as the directory resolves it for a tenant. */
|
|
62
|
+
export const verticalInstance = z.object({ tenantId, scopeId, vertical: verticalSlug });
|
|
63
|
+
/**
|
|
64
|
+
* "The instance of vertical Y in tenant T" (#1706), as the directory answers it — the same answer
|
|
65
|
+
* everywhere it is asked (the control plane's directory, the pure host, the local broker), because
|
|
66
|
+
* all of them apply `resolveVerticalInstanceFrom` from the kernel.
|
|
67
|
+
*
|
|
68
|
+
* Only a PRIMARY (neither a fork nor a preview) and ACTIVE scope of that tenant is a candidate:
|
|
69
|
+
* - `resolved` — exactly one.
|
|
70
|
+
* - `not-installed` — none. The tenant has not installed Y, or only a preview/fork of it, or its
|
|
71
|
+
* instance is suspended or archived. One answer, deliberately: which of those it is belongs to
|
|
72
|
+
* the tenant's console, not to another app's error message.
|
|
73
|
+
* - `ambiguous` — more than one. Refused rather than guessed: a tenant may run two instances of
|
|
74
|
+
* one vertical, and picking one would route one app's data into the other. A binding that names
|
|
75
|
+
* the instance is what settles it (the auth-server pick's shape), not a tie-break rule.
|
|
76
|
+
*/
|
|
77
|
+
export const verticalResolution = z.discriminatedUnion('outcome', [
|
|
78
|
+
z.object({ outcome: z.literal('resolved'), instance: verticalInstance }),
|
|
79
|
+
z.object({ outcome: z.literal('not-installed'), tenantId, vertical: verticalSlug }),
|
|
80
|
+
z.object({
|
|
81
|
+
outcome: z.literal('ambiguous'),
|
|
82
|
+
tenantId,
|
|
83
|
+
vertical: verticalSlug,
|
|
84
|
+
count: z.number().int().min(2),
|
|
85
|
+
}),
|
|
86
|
+
]);
|
|
87
|
+
/**
|
|
88
|
+
* The per-(scope, peer) kill switch (#1706) — a tenant turning one calling vertical off on one
|
|
89
|
+
* scope, and back on, WITHOUT a push. `HostAdmin.revokeFromPeer` / `restoreToPeer`, the mirror of
|
|
90
|
+
* the schedule switch (#1666): OFF tombstones every grant `vertical:<slug>` holds on the scope and
|
|
91
|
+
* makes an OFF marker live, so neither a check nor a provisioning seat can give the peer anything
|
|
92
|
+
* back until `restoreToPeer`. `reason` lands in the admin log beside the actor.
|
|
93
|
+
*/
|
|
94
|
+
export const peerSwitch = z.object({
|
|
95
|
+
vertical: verticalSlug,
|
|
96
|
+
node: z.object({ tenantId, scopeId }),
|
|
97
|
+
reason: z.string().trim().min(1).max(500),
|
|
98
|
+
});
|
|
99
|
+
/**
|
|
100
|
+
* What the far end of the peer switch did in the scope's own storage — `held: false` when the
|
|
101
|
+
* scope holds neither a grant nor a marker for that peer (nothing was written). The same shape
|
|
102
|
+
* as the schedule switch's outcome, because it is the same statement underneath.
|
|
103
|
+
*/
|
|
104
|
+
export const peerSwitchOutcome = z.object({
|
|
105
|
+
held: z.boolean(),
|
|
106
|
+
changed: z.boolean(),
|
|
107
|
+
permissions: z.array(permissionKey),
|
|
108
|
+
});
|
|
109
|
+
/** What `revokeFromPeer` / `restoreToPeer` answer: the position the switch is now in. */
|
|
110
|
+
export const peerSwitchResult = z.object({
|
|
111
|
+
operationId: z.string().min(1),
|
|
112
|
+
vertical: verticalSlug,
|
|
113
|
+
calls: z.enum(['on', 'off']),
|
|
114
|
+
changed: z.boolean(),
|
|
115
|
+
/** The grants this call tombstoned (off) or restored (on), by permission key. */
|
|
116
|
+
permissions: z.array(permissionKey),
|
|
117
|
+
});
|
|
118
|
+
/**
|
|
119
|
+
* One key of `ScopeHost.peerCovers`: does `vertical:<slug>` hold it at the scope node RIGHT NOW —
|
|
120
|
+
* the checker's own answer, so a peer switched off holds nothing.
|
|
121
|
+
*/
|
|
122
|
+
export const peerCoverage = z.object({ permission: permissionKey, held: z.boolean() });
|
|
123
|
+
/**
|
|
124
|
+
* Where ONE peer stands on one scope (#1706) — the bare position, with no audit join: the
|
|
125
|
+
* honest answer a vertical's own deployment can give, since it holds no admin log.
|
|
126
|
+
*
|
|
127
|
+
* - `on`: a live grant and no OFF marker — its calls are admitted.
|
|
128
|
+
* - `off`: a live OFF marker. Every call is refused at the door until `restoreToPeer`.
|
|
129
|
+
* - `ungranted`: a row for this peer exists but nothing of it is live — its grants were
|
|
130
|
+
* tombstoned by something other than the switch (a raw write, a reconcile that dropped it),
|
|
131
|
+
* or the scope predates the manifest version that declares it. Quiet, not an error.
|
|
132
|
+
*
|
|
133
|
+
* A peer the scope holds no row for at all is simply absent from the list. "Not installed in
|
|
134
|
+
* this tenant" is a fact the DIRECTORY holds, not the scope's storage, and the surfaces that
|
|
135
|
+
* show a tenant its peers join the two.
|
|
136
|
+
*/
|
|
137
|
+
export const peerGrantsEntry = z.object({
|
|
138
|
+
vertical: verticalSlug,
|
|
139
|
+
calls: z.enum(['on', 'off', 'ungranted']),
|
|
140
|
+
});
|
|
141
|
+
/**
|
|
142
|
+
* The per-scope status read, as the control plane answers it: the position above, plus the
|
|
143
|
+
* one thing only the platform can add — while a peer is off, WHO switched it off, when and
|
|
144
|
+
* why, from the admin log's `revokeFromPeer` intent row still in force.
|
|
145
|
+
*/
|
|
146
|
+
export const peerGrantsStatusEntry = peerGrantsEntry.extend({
|
|
147
|
+
switchedOff: z
|
|
148
|
+
.object({
|
|
149
|
+
actor: platformActorId,
|
|
150
|
+
reason: z.string(),
|
|
151
|
+
at: instant,
|
|
152
|
+
})
|
|
153
|
+
.nullable(),
|
|
154
|
+
});
|
|
155
|
+
//# sourceMappingURL=peer.js.map
|
package/dist/peer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer.js","sourceRoot":"","sources":["../src/peer.ts"],"names":[],"mappings":"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"}
|