@substrat-run/control-plane-api 0.168.0 → 0.170.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/api.d.ts +6 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +23 -12
- package/dist/api.js.map +1 -1
- package/dist/connection-binding-relay.d.ts +44 -0
- package/dist/connection-binding-relay.d.ts.map +1 -0
- package/dist/connection-binding-relay.js +202 -0
- package/dist/connection-binding-relay.js.map +1 -0
- package/dist/connection-relay.d.ts +20 -3
- package/dist/connection-relay.d.ts.map +1 -1
- package/dist/connection-relay.js +28 -3
- package/dist/connection-relay.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/source-builds.d.ts.map +1 -1
- package/dist/source-builds.js +37 -30
- package/dist/source-builds.js.map +1 -1
- package/dist/vertical-client.d.ts +10 -0
- package/dist/vertical-client.d.ts.map +1 -1
- package/dist/vertical-client.js +12 -0
- package/dist/vertical-client.js.map +1 -1
- package/dist/vertical-connectors.d.ts +1 -1
- package/dist/vertical-connectors.d.ts.map +1 -1
- package/dist/vertical-connectors.js +20 -5
- package/dist/vertical-connectors.js.map +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type ConnectionLandingOptionsInput, type ScopeHost } from '@substrat-run/kernel';
|
|
2
|
+
import { type Connection, type ConnectionBindingsResult, type ConnectionBindResult, type ConnectionUnbindResult, type PlatformActorId } from '@substrat-run/contracts';
|
|
3
|
+
import type { ConnectionScopeBinding } from '@substrat-run/control-plane-client';
|
|
4
|
+
/**
|
|
5
|
+
* The binding relays (#2732): `/internal/connections/bind` and `/internal/connections/unbind`, how a
|
|
6
|
+
* scope binds its OWN connection (one made with the upsert relay's `owner: 'scope'`) to itself, with
|
|
7
|
+
* its own options, and unbinds it again, from the vertical's own screen; and
|
|
8
|
+
* `/internal/connections/bindings`, how it reads those bindings back with their sweep status.
|
|
9
|
+
*
|
|
10
|
+
* The same shape as the upsert relay (connections.md §3.5.2): the vertical's operation is the
|
|
11
|
+
* authorizing act (`ctx.check`), and its worker makes the call. What is bound is never the
|
|
12
|
+
* caller's to name:
|
|
13
|
+
*
|
|
14
|
+
* - **The vertical is the directory's**, re-derived from the scope's record.
|
|
15
|
+
* - **The connection is the scope's own.** It is live, of that (tenant, vertical), and owned by the
|
|
16
|
+
* named scope. Any other answers exactly as an unknown connection does.
|
|
17
|
+
* - **The landing is the running version's.** It is the `on-request` landing that version declares
|
|
18
|
+
* for the provider, so the operation and key come from the declaration (as the connector pass
|
|
19
|
+
* reads one), and the options are the scope's, validated by the connector's own bind.
|
|
20
|
+
* - **Binding grants the declared key on that one scope**, in the pass's order. **Unbinding** takes
|
|
21
|
+
* it back there (`revokeFromConnection`) and drops the binding; what the scope landed stays.
|
|
22
|
+
*/
|
|
23
|
+
export interface ConnectionBindingRelayOptions {
|
|
24
|
+
/** Whether the call's caller was established as the scope it names. Every call here requires it. */
|
|
25
|
+
proven: boolean;
|
|
26
|
+
/** The connector pass's own reader and binders, so a scope binds as the pass would. */
|
|
27
|
+
landings: ConnectionLandingOptionsInput;
|
|
28
|
+
}
|
|
29
|
+
export declare function relayConnectionBind(host: ScopeHost, actor: PlatformActorId, body: unknown, options: ConnectionBindingRelayOptions): Promise<ConnectionBindResult>;
|
|
30
|
+
/**
|
|
31
|
+
* `/internal/connections/bindings`: the scope's own connections bound to it, with the last `ok` and
|
|
32
|
+
* the last `failed` sweep of each. The sweep record is per connection, and a scope's own connection
|
|
33
|
+
* is bound only to its scope, so the record is that binding's. Its `error` is the tenant-readable
|
|
34
|
+
* line the pass writes; the provider's answer stays on staff's row.
|
|
35
|
+
*/
|
|
36
|
+
export declare function relayConnectionBindings(host: ScopeHost, actor: PlatformActorId, body: unknown, options: Pick<ConnectionBindingRelayOptions, 'proven'> & {
|
|
37
|
+
/**
|
|
38
|
+
* The bindings a connection holds as its connector stored them (the inspection route's read),
|
|
39
|
+
* so the options are the ones the bind answered. Undefined for a provider that binds none.
|
|
40
|
+
*/
|
|
41
|
+
bindings: (host: ScopeHost, connection: Connection) => Promise<readonly ConnectionScopeBinding[]> | undefined;
|
|
42
|
+
}): Promise<ConnectionBindingsResult>;
|
|
43
|
+
export declare function relayConnectionUnbind(host: ScopeHost, actor: PlatformActorId, body: unknown, options: ConnectionBindingRelayOptions): Promise<ConnectionUnbindResult>;
|
|
44
|
+
//# sourceMappingURL=connection-binding-relay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-binding-relay.d.ts","sourceRoot":"","sources":["../src/connection-binding-relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,6BAA6B,EAClC,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EASL,KAAK,UAAU,EACf,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EAErB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAIjF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,6BAA6B;IAC5C,oGAAoG;IACpG,MAAM,EAAE,OAAO,CAAC;IAChB,uFAAuF;IACvF,QAAQ,EAAE,6BAA6B,CAAC;CACzC;AA0DD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,oBAAoB,CAAC,CAwF/B;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,GAAG;IACvD;;;OAGG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAAC,GAAG,SAAS,CAAC;CAC/G,GACA,OAAO,CAAC,wBAAwB,CAAC,CA6BnC;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,sBAAsB,CAAC,CAqBjC"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { binderOf, ConnectorRevokeUnsupported, isPrimaryScope, onRequestLandingFor, ulid, } from '@substrat-run/kernel';
|
|
2
|
+
import { permissionKey, connectionBindRequest, connectionBindResult, connectionUnbindRequest, connectionUnbindResult, connectionBindingsRequest, connectionBindingsResult, isVerticalConnectorProvider, } from '@substrat-run/contracts';
|
|
3
|
+
import { ConnectionRelayError, PREVIEW_CONNECTIONS_REFUSAL, PROVEN_CALLER_REFUSAL } from './connection-relay.js';
|
|
4
|
+
import { connectionBindingOptions } from './connection-binding-options.js';
|
|
5
|
+
/** The fixed fields of a binding as a binder answers it; the rest are its options. */
|
|
6
|
+
const FIXED = new Set(['tenantId', 'scopeId', 'vertical', 'operation', 'permission', 'boundAt', 'connectionId', 'externalAccountRef', 'grantPreflighted', 'permissionHeld']);
|
|
7
|
+
function parsed(schema, body, what) {
|
|
8
|
+
const r = schema.safeParse(body);
|
|
9
|
+
if (r.success)
|
|
10
|
+
return r.data;
|
|
11
|
+
const first = r.error.issues[0];
|
|
12
|
+
throw new ConnectionRelayError(`invalid ${what} request: ${first ? `${first.path.join('.') || '(root)'} — ${first.message}` : 'malformed body'}`, 400);
|
|
13
|
+
}
|
|
14
|
+
/** A binding's inspection notes, never its options. */
|
|
15
|
+
const INSPECTION = new Set(['permissionInspectionError', 'auditWarning']);
|
|
16
|
+
/** The named scope, for a caller proven to be it, of a vertical, and primary; or the refusal. */
|
|
17
|
+
async function primaryScope(host, actor, input, options) {
|
|
18
|
+
if (!options.proven)
|
|
19
|
+
throw new ConnectionRelayError(PROVEN_CALLER_REFUSAL, 403);
|
|
20
|
+
const scope = await host.admin.getScopeRecord(actor, input.tenantId, input.scopeId);
|
|
21
|
+
if (!scope?.vertical)
|
|
22
|
+
throw new ConnectionRelayError('scope has no vertical bound', 404);
|
|
23
|
+
if (!isPrimaryScope(scope))
|
|
24
|
+
throw new ConnectionRelayError(PREVIEW_CONNECTIONS_REFUSAL, 403);
|
|
25
|
+
return { ...scope, vertical: scope.vertical };
|
|
26
|
+
}
|
|
27
|
+
/** The scope, its own connection and the provider's binder, or the refusal. All both relays need. */
|
|
28
|
+
async function ownConnection(host, actor, input, options) {
|
|
29
|
+
const scope = await primaryScope(host, actor, input, options);
|
|
30
|
+
const connection = (await host.admin.listConnections(actor, { tenantId: input.tenantId, vertical: scope.vertical, ownerScopeId: input.scopeId })).find((c) => c.id === input.connectionId);
|
|
31
|
+
if (!connection)
|
|
32
|
+
throw new ConnectionRelayError('unknown connection', 404);
|
|
33
|
+
const binder = binderOf(options.landings, connection);
|
|
34
|
+
if (!binder)
|
|
35
|
+
throw new ConnectionRelayError(`no scope binding registered for provider '${connection.provider}'`, 501);
|
|
36
|
+
return { scope, connection, binder };
|
|
37
|
+
}
|
|
38
|
+
const said = (err) => (err instanceof Error ? err.message : String(err));
|
|
39
|
+
/** `revokeFromConnection`, with a deployment that cannot take it answered as the relay's 503. */
|
|
40
|
+
async function revokeHere(host, actor, revoke) {
|
|
41
|
+
try {
|
|
42
|
+
await host.admin.revokeFromConnection(actor, revoke);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
if (err instanceof ConnectorRevokeUnsupported)
|
|
46
|
+
throw new ConnectionRelayError(err.message, 503);
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export async function relayConnectionBind(host, actor, body, options) {
|
|
51
|
+
const input = parsed(connectionBindRequest, body, 'connection bind');
|
|
52
|
+
const { scope, connection, binder } = await ownConnection(host, actor, input, options);
|
|
53
|
+
if (scope.status !== 'active')
|
|
54
|
+
throw new ConnectionRelayError(`scope ${scope.id} is ${scope.status}, not active`, 409);
|
|
55
|
+
const declared = await onRequestLandingFor(host.admin, actor, options.landings.read, scope, connection.provider);
|
|
56
|
+
if ('refused' in declared)
|
|
57
|
+
throw new ConnectionRelayError(declared.refused, 409);
|
|
58
|
+
const { landing } = declared;
|
|
59
|
+
const current = (await binder.list(host, connection)).find((b) => b.scopeId === scope.id);
|
|
60
|
+
// The declaration's options fill only what the binding does not hold yet, and the scope's own
|
|
61
|
+
// override both: a rebind keeps the scope's options, never resetting them to the defaults.
|
|
62
|
+
const defaults = Object.fromEntries(Object.entries(landing.options ?? {}).filter(([k]) => !current || !(k in current)));
|
|
63
|
+
let bindingOptions;
|
|
64
|
+
try {
|
|
65
|
+
bindingOptions = binder.options ? binder.options({ ...defaults, ...input.options }, current) : { ...defaults, ...input.options };
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
throw new ConnectionRelayError(said(err), 422);
|
|
69
|
+
}
|
|
70
|
+
const target = { ...bindingOptions, tenantId: scope.tenantId, scopeId: scope.id, vertical: connection.vertical, operation: landing.operation, permission: landing.permission };
|
|
71
|
+
const refused = (err) => new ConnectionRelayError(`the ${connection.provider} connector refused the binding: ${said(err)}`, 422);
|
|
72
|
+
const node = { tenantId: scope.tenantId, scopeId: scope.id };
|
|
73
|
+
// A rebind under a landing whose key changed takes the binding's previous key back FIRST, while
|
|
74
|
+
// the binding still records it: a revoke that fails then changes nothing and the scope can ask
|
|
75
|
+
// again, where one after the new bind could leave a key nothing records. Only once the options
|
|
76
|
+
// passed, so a refused option never touches the working binding.
|
|
77
|
+
if (current && current.permission !== landing.permission) {
|
|
78
|
+
await revokeHere(host, actor, { connectionId: connection.id, permission: permissionKey.parse(current.permission), node, revokedBy: input.boundBy });
|
|
79
|
+
}
|
|
80
|
+
// The landing pass's order: a binder that stages its binding before the grant does so, and the
|
|
81
|
+
// grant follows; otherwise the grant comes first and the connector's bind checks it is held. A
|
|
82
|
+
// refusal at any step leaves nothing this call added: a key it granted is taken back, a binding
|
|
83
|
+
// it staged is dropped.
|
|
84
|
+
let bound;
|
|
85
|
+
if (binder.bindBeforeGrant) {
|
|
86
|
+
try {
|
|
87
|
+
bound = await binder.bindBeforeGrant(host, connection, target);
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
throw refused(err);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const held = await host.connectionGrantsInScope(scope.tenantId, scope.id);
|
|
94
|
+
const granted = !held.some((g) => g.connectionId === connection.id && g.permission === landing.permission);
|
|
95
|
+
if (granted) {
|
|
96
|
+
try {
|
|
97
|
+
await host.admin.grantToConnection(actor, { connectionId: connection.id, permission: landing.permission, node, grantedBy: actor });
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
if (binder.bindBeforeGrant && !current)
|
|
101
|
+
await binder.unbind?.(host, connection, scope.id);
|
|
102
|
+
throw new ConnectionRelayError(`the landing key '${landing.permission}' cannot be granted to this connection: ${said(err)}`, 409);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (!binder.bindBeforeGrant) {
|
|
106
|
+
try {
|
|
107
|
+
bound = await binder.bind(host, connection, target);
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
// Unless the binding the scope keeps records this very key, the key has nothing to land for:
|
|
111
|
+
// take it back whoever granted it (the revoke is idempotent), so a retry after a revoke that
|
|
112
|
+
// failed clears it. The connector's reason stays in the answer even when that fails.
|
|
113
|
+
if (granted || current?.permission !== landing.permission) {
|
|
114
|
+
try {
|
|
115
|
+
await host.admin.revokeFromConnection(actor, { connectionId: connection.id, permission: landing.permission, node, revokedBy: input.boundBy });
|
|
116
|
+
}
|
|
117
|
+
catch (revokeErr) {
|
|
118
|
+
throw new ConnectionRelayError(`${refused(err).message}; taking the landing key back failed, ask again: ${said(revokeErr)}`, 503);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
throw refused(err);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
await host.admin.recordConnectionBindingChange(actor, {
|
|
125
|
+
phase: 'applied',
|
|
126
|
+
tenantId: scope.tenantId,
|
|
127
|
+
scopeId: scope.id,
|
|
128
|
+
operationId: ulid(),
|
|
129
|
+
connectionId: connection.id,
|
|
130
|
+
provider: connection.provider,
|
|
131
|
+
operation: landing.operation,
|
|
132
|
+
permission: landing.permission,
|
|
133
|
+
requestedBy: input.boundBy,
|
|
134
|
+
});
|
|
135
|
+
// The options as the connector stored them, when its bind answers the binding; otherwise the
|
|
136
|
+
// validated options it was handed.
|
|
137
|
+
const answered = bound !== null && typeof bound === 'object' ? bound : undefined;
|
|
138
|
+
return connectionBindResult.parse({
|
|
139
|
+
connectionId: connection.id,
|
|
140
|
+
scopeId: scope.id,
|
|
141
|
+
options: answered ? Object.fromEntries(Object.entries(answered).filter(([k]) => !FIXED.has(k))) : bindingOptions,
|
|
142
|
+
boundAt: typeof answered?.boundAt === 'string' ? answered.boundAt : new Date().toISOString(),
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* `/internal/connections/bindings`: the scope's own connections bound to it, with the last `ok` and
|
|
147
|
+
* the last `failed` sweep of each. The sweep record is per connection, and a scope's own connection
|
|
148
|
+
* is bound only to its scope, so the record is that binding's. Its `error` is the tenant-readable
|
|
149
|
+
* line the pass writes; the provider's answer stays on staff's row.
|
|
150
|
+
*/
|
|
151
|
+
export async function relayConnectionBindings(host, actor, body, options) {
|
|
152
|
+
const input = parsed(connectionBindingsRequest, body, 'connection bindings');
|
|
153
|
+
const scope = await primaryScope(host, actor, input, options);
|
|
154
|
+
const own = await host.admin.listConnections(actor, { tenantId: scope.tenantId, vertical: scope.vertical, ownerScopeId: scope.id });
|
|
155
|
+
const listed = await Promise.all(own.map(async (connection) => {
|
|
156
|
+
const binding = (await options.bindings(host, connection))?.find((b) => b.scopeId === scope.id);
|
|
157
|
+
if (!binding)
|
|
158
|
+
return [];
|
|
159
|
+
// Only this binding's sweeps: a period before an unbind and rebind is not its record.
|
|
160
|
+
const last = async (outcome) => (await host.admin.listSweepRuns(actor, { kind: 'connector', unit: connection.id, tenantId: scope.tenantId, outcome, since: binding.boundAt, limit: 1 }))[0];
|
|
161
|
+
const [ok, failed] = await Promise.all([last('ok'), last('failed')]);
|
|
162
|
+
const stored = Object.fromEntries(Object.entries(binding).filter(([k]) => !FIXED.has(k) && !INSPECTION.has(k)));
|
|
163
|
+
return [{
|
|
164
|
+
connectionId: connection.id,
|
|
165
|
+
provider: connection.provider,
|
|
166
|
+
status: connection.status,
|
|
167
|
+
// A vertical connector's options are what its own bind stored. A built-in's record also
|
|
168
|
+
// holds its sync cursor, so it is cut to the provider's options.
|
|
169
|
+
options: isVerticalConnectorProvider(connection.provider) ? stored : connectionBindingOptions(connection.provider).strip().parse(stored),
|
|
170
|
+
boundAt: binding.boundAt,
|
|
171
|
+
lastSyncedAt: ok?.at ?? null,
|
|
172
|
+
// The pass writes a failed row's `error` in the platform's words; the provider's own answer
|
|
173
|
+
// is filed on staff's row under the reference that line names.
|
|
174
|
+
lastError: failed?.error ? { at: failed.at, message: failed.error } : null,
|
|
175
|
+
}];
|
|
176
|
+
}));
|
|
177
|
+
return connectionBindingsResult.parse({ bindings: listed.flat() });
|
|
178
|
+
}
|
|
179
|
+
export async function relayConnectionUnbind(host, actor, body, options) {
|
|
180
|
+
const input = parsed(connectionUnbindRequest, body, 'connection unbind');
|
|
181
|
+
// Ownership alone: a version that has since dropped the landing, or changed its key or mode,
|
|
182
|
+
// still lets the scope take back what it holds.
|
|
183
|
+
const { scope, connection, binder } = await ownConnection(host, actor, input, options);
|
|
184
|
+
if (!binder.unbind)
|
|
185
|
+
throw new ConnectionRelayError(`'${connection.provider}' bindings cannot be removed through the relay`, 501);
|
|
186
|
+
// The key the binding itself records, first: whatever version wrote it, and never a standing
|
|
187
|
+
// grant the connection holds for another reason. A deployment that cannot take the revoke leaves
|
|
188
|
+
// the binding as it was. The revoke is audited on its own row (with `revokedBy`), when it moved:
|
|
189
|
+
// a binding change is a bind's record.
|
|
190
|
+
const binding = (await binder.list(host, connection)).find((b) => b.scopeId === scope.id);
|
|
191
|
+
if (binding) {
|
|
192
|
+
await revokeHere(host, actor, {
|
|
193
|
+
connectionId: connection.id,
|
|
194
|
+
permission: permissionKey.parse(binding.permission),
|
|
195
|
+
node: { tenantId: scope.tenantId, scopeId: scope.id },
|
|
196
|
+
revokedBy: input.unboundBy,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
await binder.unbind(host, connection, scope.id);
|
|
200
|
+
return connectionUnbindResult.parse({ connectionId: connection.id, scopeId: scope.id, unbound: true });
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=connection-binding-relay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-binding-relay.js","sourceRoot":"","sources":["../src/connection-binding-relay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ScopeHost } from '@substrat-run/kernel';
|
|
1
|
+
import { type ConnectionLandingOptionsInput, type ScopeHost } from '@substrat-run/kernel';
|
|
2
2
|
import { type ConnectionProbe, type ConnectionRelayResult, type PlatformActorId, type ScopeId, type TenantId, type VerticalConnectorDeclaration } from '@substrat-run/contracts';
|
|
3
3
|
/**
|
|
4
4
|
* The connection relay (connections.md §3.5.2) — the credential half of #574's routed
|
|
@@ -31,7 +31,7 @@ export declare class ConnectionRelayError extends Error {
|
|
|
31
31
|
* 500 (what an unrecognised throw collapses to) sent an operator looking for a bug
|
|
32
32
|
* in the credential or the relay, when the plane knew at boot that it had no key.
|
|
33
33
|
*/
|
|
34
|
-
readonly status: 400 | 403 | 404 | 409 | 422 | 503;
|
|
34
|
+
readonly status: 400 | 403 | 404 | 409 | 422 | 501 | 503;
|
|
35
35
|
/** The provider's own answer, when the refusal came from a pre-flight probe (#605). */
|
|
36
36
|
readonly probe?: ConnectionProbe | undefined;
|
|
37
37
|
constructor(message: string,
|
|
@@ -41,7 +41,7 @@ export declare class ConnectionRelayError extends Error {
|
|
|
41
41
|
* 500 (what an unrecognised throw collapses to) sent an operator looking for a bug
|
|
42
42
|
* in the credential or the relay, when the plane knew at boot that it had no key.
|
|
43
43
|
*/
|
|
44
|
-
status: 400 | 403 | 404 | 409 | 422 | 503,
|
|
44
|
+
status: 400 | 403 | 404 | 409 | 422 | 501 | 503,
|
|
45
45
|
/** The provider's own answer, when the refusal came from a pre-flight probe (#605). */
|
|
46
46
|
probe?: ConnectionProbe | undefined);
|
|
47
47
|
}
|
|
@@ -106,10 +106,27 @@ export type VerticalConnectorDeclarationOf = (provider: string, context: {
|
|
|
106
106
|
}>;
|
|
107
107
|
/** What a preview or a fork is told when it asks to change a connection (#2005). */
|
|
108
108
|
export declare const PREVIEW_CONNECTIONS_REFUSAL = "previews and forks cannot change a tenant's connections: this scope is a preview or a fork";
|
|
109
|
+
/**
|
|
110
|
+
* #2732: what a scope's own connection, its bind and its unbind answer a call whose caller was not
|
|
111
|
+
* established as the scope it names: they must be made from the vertical's worker, on the request
|
|
112
|
+
* it is serving.
|
|
113
|
+
*/
|
|
114
|
+
export declare const PROVEN_CALLER_REFUSAL = "a scope's own connection is changed only by that scope: make this call from the vertical's worker, on the request it is serving";
|
|
109
115
|
export declare function relayConnectionUpsert(host: ScopeHost, actor: PlatformActorId, body: unknown, options?: {
|
|
110
116
|
probeCandidate?: ConnectionCandidateProbe;
|
|
111
117
|
prepareCandidate?: ConnectionCandidatePreparer;
|
|
112
118
|
/** Required for a dotted provider: a host without it refuses one. */
|
|
113
119
|
declarationOf?: VerticalConnectorDeclarationOf;
|
|
120
|
+
/**
|
|
121
|
+
* #2732: what an `owner: 'scope'` upsert is held to; a host without them refuses one. `proven`
|
|
122
|
+
* is whether the call's caller was established as the scope it names. `scopeOwnable` says a
|
|
123
|
+
* provider's connector opens a scope's own connection. `readLandings` reads a version's
|
|
124
|
+
* declared landings, as the connector pass does.
|
|
125
|
+
*/
|
|
126
|
+
scopeOwned?: {
|
|
127
|
+
proven: boolean;
|
|
128
|
+
scopeOwnable: (provider: string) => boolean;
|
|
129
|
+
readLandings: ConnectionLandingOptionsInput['read'];
|
|
130
|
+
};
|
|
114
131
|
}): Promise<ConnectionRelayResult>;
|
|
115
132
|
//# sourceMappingURL=connection-relay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-relay.d.ts","sourceRoot":"","sources":["../src/connection-relay.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"connection-relay.d.ts","sourceRoot":"","sources":["../src/connection-relay.ts"],"names":[],"mappings":"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"}
|
package/dist/connection-relay.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isPrimaryScope, ulid } from '@substrat-run/kernel';
|
|
1
|
+
import { isPrimaryScope, onRequestLandingFor, ulid } from '@substrat-run/kernel';
|
|
2
2
|
import { instant, connectionId, connectionRelayRequest, isVerticalConnectorProvider, } from '@substrat-run/contracts';
|
|
3
3
|
/**
|
|
4
4
|
* The connection relay (connections.md §3.5.2) — the credential half of #574's routed
|
|
@@ -45,6 +45,12 @@ export class ConnectionRelayError extends Error {
|
|
|
45
45
|
}
|
|
46
46
|
/** What a preview or a fork is told when it asks to change a connection (#2005). */
|
|
47
47
|
export const PREVIEW_CONNECTIONS_REFUSAL = "previews and forks cannot change a tenant's connections: this scope is a preview or a fork";
|
|
48
|
+
/**
|
|
49
|
+
* #2732: what a scope's own connection, its bind and its unbind answer a call whose caller was not
|
|
50
|
+
* established as the scope it names: they must be made from the vertical's worker, on the request
|
|
51
|
+
* it is serving.
|
|
52
|
+
*/
|
|
53
|
+
export const PROVEN_CALLER_REFUSAL = "a scope's own connection is changed only by that scope: make this call from the vertical's worker, on the request it is serving";
|
|
48
54
|
export async function relayConnectionUpsert(host, actor, body, options = {}) {
|
|
49
55
|
const parsed = connectionRelayRequest.safeParse(body);
|
|
50
56
|
if (!parsed.success) {
|
|
@@ -76,6 +82,22 @@ export async function relayConnectionUpsert(host, actor, body, options = {}) {
|
|
|
76
82
|
throw new ConnectionRelayError(PREVIEW_CONNECTIONS_REFUSAL, 403);
|
|
77
83
|
}
|
|
78
84
|
const vertical = rec.vertical;
|
|
85
|
+
// #2732: a scope's own connection is for a provider its running version lands on request, and one
|
|
86
|
+
// whose connector opens a scope's own connection; refused before the probe and the store.
|
|
87
|
+
const owner = input.owner === 'scope' ? input.scopeId : null;
|
|
88
|
+
if (owner) {
|
|
89
|
+
const held = options.scopeOwned;
|
|
90
|
+
if (!held)
|
|
91
|
+
throw new ConnectionRelayError("this deployment is not configured for a scope's own connections", 503);
|
|
92
|
+
if (!held.proven)
|
|
93
|
+
throw new ConnectionRelayError(PROVEN_CALLER_REFUSAL, 403);
|
|
94
|
+
if (!held.scopeOwnable(input.provider)) {
|
|
95
|
+
throw new ConnectionRelayError(`'${input.provider}' connections are the tenant's: its connector does not open a scope's own`, 409);
|
|
96
|
+
}
|
|
97
|
+
const declared = await onRequestLandingFor(host.admin, actor, held.readLandings, rec, input.provider);
|
|
98
|
+
if ('refused' in declared)
|
|
99
|
+
throw new ConnectionRelayError(declared.refused, 409);
|
|
100
|
+
}
|
|
79
101
|
// A vertical-defined provider's standing grants are what its vertical's serving version declares,
|
|
80
102
|
// never what the caller sends (a dashboard door reads the latest push, which may not serve yet).
|
|
81
103
|
// Refused before the probe and the store when that version declares no such connector.
|
|
@@ -93,11 +115,13 @@ export async function relayConnectionUpsert(host, actor, body, options = {}) {
|
|
|
93
115
|
// live row for this key — rotation is what revives them. The account leg matches
|
|
94
116
|
// exactly (absent matches absent): a multi-account provider's second account is a new
|
|
95
117
|
// connection, not a rotation of the first. Read before the probe because a provider that
|
|
96
|
-
// finishes its own credential (#2100) needs the one this upsert would replace.
|
|
118
|
+
// finishes its own credential (#2100) needs the one this upsert would replace. The owner is
|
|
119
|
+
// part of the key (#2732), so a scope rotates only its own and a tenant upsert only the tenant's.
|
|
97
120
|
const live = (await host.admin.listConnections(actor, {
|
|
98
121
|
tenantId: input.tenantId,
|
|
99
122
|
vertical,
|
|
100
123
|
provider: input.provider,
|
|
124
|
+
ownerScopeId: owner,
|
|
101
125
|
})).filter((c) => c.externalAccountRef === (input.externalAccountRef ?? null));
|
|
102
126
|
// #2100: the platform's half of the credential, made here — before the probe, so what is
|
|
103
127
|
// probed is exactly what is stored.
|
|
@@ -106,7 +130,7 @@ export async function relayConnectionUpsert(host, actor, body, options = {}) {
|
|
|
106
130
|
const prepare = options.prepareCandidate?.(input.provider);
|
|
107
131
|
if (prepare) {
|
|
108
132
|
const previous = live.length === 1
|
|
109
|
-
? (await host.admin.openConnection(input.tenantId, vertical, input.provider, input.externalAccountRef))?.secret
|
|
133
|
+
? (await host.admin.openConnection(input.tenantId, vertical, input.provider, input.externalAccountRef, owner ?? undefined))?.secret
|
|
110
134
|
: undefined;
|
|
111
135
|
const prepared = await prepare(input.secret, previous);
|
|
112
136
|
secret = prepared.secret;
|
|
@@ -141,6 +165,7 @@ export async function relayConnectionUpsert(host, actor, body, options = {}) {
|
|
|
141
165
|
// §3.5.1 — the authorizing tenant principal, proven by the vertical's own
|
|
142
166
|
// `ctx.check` before the secret ever left the operation.
|
|
143
167
|
createdBy: input.createdBy,
|
|
168
|
+
...(owner ? { ownerScopeId: owner } : {}),
|
|
144
169
|
});
|
|
145
170
|
created = true;
|
|
146
171
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-relay.js","sourceRoot":"","sources":["../src/connection-relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"connection-relay.js","sourceRoot":"","sources":["../src/connection-relay.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { createControlPlaneApi, tenantCredentialPin, CLI_MIN_VERSION_HEADER, CLI_LATEST_VERSION_HEADER, } from './api.js';
|
|
2
2
|
export type { ControlPlaneApiOptions, ConnectionInspector } from './api.js';
|
|
3
3
|
export { DEV_ACTOR_HEADER, SERVICE_TOKEN_HEADER, TENANT_HEADER, UNSAFE_devPlatformActorAuth, sessionPlatformAuth, staffAllowlist, serviceTokenAuth, firstPlatformActorAuth, firstBuilderAuth, confinedTenant, } from './auth.js';
|
|
4
|
-
export { relayConnectionUpsert, ConnectionRelayError, PREVIEW_CONNECTIONS_REFUSAL } from './connection-relay.js';
|
|
4
|
+
export { relayConnectionUpsert, ConnectionRelayError, PREVIEW_CONNECTIONS_REFUSAL, PROVEN_CALLER_REFUSAL } from './connection-relay.js';
|
|
5
|
+
export { relayConnectionBind, relayConnectionBindings, relayConnectionUnbind, type ConnectionBindingRelayOptions } from './connection-binding-relay.js';
|
|
5
6
|
export type { ConnectionCandidateContext, ConnectionCandidatePrepare, ConnectionCandidatePreparer, ConnectionCandidateProbe, VerticalConnectorDeclarationOf } from './connection-relay.js';
|
|
6
7
|
export { signConnectState, verifyConnectState, ConnectStateError } from './connect-state.js';
|
|
7
8
|
export type { ConnectStateClaim } from './connect-state.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAExI,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,KAAK,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AACxJ,YAAY,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAC3L,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC7F,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3H,OAAO,EACL,yBAAyB,EACzB,KAAK,4BAA4B,EACjC,KAAK,8BAA8B,GACpC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACxF,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,SAAS,GACV,MAAM,WAAW,CAAC;AAGnB,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,8BAA8B,EAC9B,WAAW,EACX,cAAc,EACd,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EACL,cAAc,EACd,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EACL,8BAA8B,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,qBAAqB,EACjJ,8BAA8B,EAAE,sBAAsB,GACvD,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,eAAe,EAAE,yBAAyB,EAAE,KAAK,gBAAgB,GAClE,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACxH,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACxG,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxJ,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,SAAS,EACd,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,8BAA8B,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,wBAAwB,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,8BAA8B,EAC9B,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,sBAAsB,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,6BAA6B,EAC7B,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACjH,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,kCAAkC,EAClC,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvG,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClI,OAAO,EACL,+BAA+B,EAC/B,WAAW,EACX,cAAc,EACd,yBAAyB,EACzB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACpG,YAAY,EACV,yBAAyB,EACzB,gCAAgC,EAChC,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,UAAU,EACV,WAAW,EACX,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACpF,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE5H,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC9F,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpI,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1G,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtI,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,4BAA4B,EAI5B,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAI7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAM3F,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3E,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACnG,YAAY,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG/F,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEvH,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7G,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { createControlPlaneApi, tenantCredentialPin, CLI_MIN_VERSION_HEADER, CLI_LATEST_VERSION_HEADER, } from './api.js';
|
|
2
2
|
export { DEV_ACTOR_HEADER, SERVICE_TOKEN_HEADER, TENANT_HEADER, UNSAFE_devPlatformActorAuth, sessionPlatformAuth, staffAllowlist, serviceTokenAuth, firstPlatformActorAuth, firstBuilderAuth, confinedTenant, } from './auth.js';
|
|
3
|
-
export { relayConnectionUpsert, ConnectionRelayError, PREVIEW_CONNECTIONS_REFUSAL } from './connection-relay.js';
|
|
3
|
+
export { relayConnectionUpsert, ConnectionRelayError, PREVIEW_CONNECTIONS_REFUSAL, PROVEN_CALLER_REFUSAL } from './connection-relay.js';
|
|
4
|
+
// #2732: a scope binds its own connection to itself, unbinds it, and reads its bindings' status.
|
|
5
|
+
export { relayConnectionBind, relayConnectionBindings, relayConnectionUnbind } from './connection-binding-relay.js';
|
|
4
6
|
export { signConnectState, verifyConnectState, ConnectStateError } from './connect-state.js';
|
|
5
7
|
export { relayConnectUrl, ConnectUrlRelayError } from './connect-url.js';
|
|
6
8
|
export { relayConnectLinkMint, relayConnectLinkList, relayConnectLinkRevoke, connectLinkViewOf } from './connect-links.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-builds.d.ts","sourceRoot":"","sources":["../src/source-builds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGvG,iGAAiG;AACjG,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"source-builds.d.ts","sourceRoot":"","sources":["../src/source-builds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGvG,iGAAiG;AACjG,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,kBAAkB,CA2CrJ"}
|
package/dist/source-builds.js
CHANGED
|
@@ -10,39 +10,46 @@ export function sourceBuildService(service, token) {
|
|
|
10
10
|
headers: { ...Object.fromEntries(new Headers(init?.headers)), 'x-service-token': token, 'x-substrat-tenant': tenantId },
|
|
11
11
|
}));
|
|
12
12
|
};
|
|
13
|
+
const release = async (sent, revision) => {
|
|
14
|
+
const response = await sent;
|
|
15
|
+
if (!response.ok) {
|
|
16
|
+
const problem = await response.json().catch(() => null);
|
|
17
|
+
throw new ControlPlaneError(response.status, problem?.detail ?? 'platform build service failed');
|
|
18
|
+
}
|
|
19
|
+
let form;
|
|
20
|
+
try {
|
|
21
|
+
form = await response.formData();
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
throw new ControlPlaneError(502, 'build service returned an invalid multipart release');
|
|
25
|
+
}
|
|
26
|
+
const result = form.get('buildResult');
|
|
27
|
+
if (typeof result !== 'string')
|
|
28
|
+
throw new ControlPlaneError(502, 'build service returned no release identity');
|
|
29
|
+
let decoded;
|
|
30
|
+
try {
|
|
31
|
+
decoded = JSON.parse(result);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
throw new ControlPlaneError(502, 'build service returned an invalid release identity');
|
|
35
|
+
}
|
|
36
|
+
const metadata = sourceBuildResult.safeParse(decoded);
|
|
37
|
+
if (!metadata.success)
|
|
38
|
+
throw new ControlPlaneError(502, 'build service returned an invalid release identity');
|
|
39
|
+
if (revision && metadata.data.revision !== revision)
|
|
40
|
+
throw new ControlPlaneError(502, 'build service did not build the requested source revision');
|
|
41
|
+
form.delete('buildResult');
|
|
42
|
+
return { form, ...metadata.data };
|
|
43
|
+
};
|
|
13
44
|
return {
|
|
14
|
-
async
|
|
15
|
-
|
|
45
|
+
// Not async: an async frame keeps its locals alive across every await, so `input` and its
|
|
46
|
+
// serialisation would be held for the whole build. Here the request, snapshot and all, is
|
|
47
|
+
// serialised once into the outgoing body, and only the response and the revision wait.
|
|
48
|
+
build(tenantId, slug, input) {
|
|
49
|
+
const sent = request(tenantId, 'build', {
|
|
16
50
|
method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ slug, request: input }),
|
|
17
51
|
});
|
|
18
|
-
|
|
19
|
-
const problem = await response.json().catch(() => null);
|
|
20
|
-
throw new ControlPlaneError(response.status, problem?.detail ?? 'platform build service failed');
|
|
21
|
-
}
|
|
22
|
-
let form;
|
|
23
|
-
try {
|
|
24
|
-
form = await response.formData();
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
throw new ControlPlaneError(502, 'build service returned an invalid multipart release');
|
|
28
|
-
}
|
|
29
|
-
const result = form.get('buildResult');
|
|
30
|
-
if (typeof result !== 'string')
|
|
31
|
-
throw new ControlPlaneError(502, 'build service returned no release identity');
|
|
32
|
-
let decoded;
|
|
33
|
-
try {
|
|
34
|
-
decoded = JSON.parse(result);
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
throw new ControlPlaneError(502, 'build service returned an invalid release identity');
|
|
38
|
-
}
|
|
39
|
-
const metadata = sourceBuildResult.safeParse(decoded);
|
|
40
|
-
if (!metadata.success)
|
|
41
|
-
throw new ControlPlaneError(502, 'build service returned an invalid release identity');
|
|
42
|
-
if (input.revision && metadata.data.revision !== input.revision)
|
|
43
|
-
throw new ControlPlaneError(502, 'build service did not build the requested source revision');
|
|
44
|
-
form.delete('buildResult');
|
|
45
|
-
return { form, ...metadata.data };
|
|
52
|
+
return release(sent, input.revision);
|
|
46
53
|
},
|
|
47
54
|
async projects(tenantId, input) {
|
|
48
55
|
return request(tenantId, 'projects', {
|