@substrat-run/adapter-sqlite 0.8.0 → 0.10.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/checker.d.ts.map +1 -1
- package/dist/checker.js +13 -7
- package/dist/checker.js.map +1 -1
- package/dist/index.d.ts +72 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +508 -26
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/checker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EASL,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAiB9D,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC7B,kFAAkF;IAClF,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;IACxD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;CACpE;AAgBD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,iBAAiB,CAkKvE"}
|
package/dist/checker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { objectRef, } from '@substrat-run/contracts';
|
|
1
|
+
import { objectRef, subjectRef, } from '@substrat-run/contracts';
|
|
2
2
|
/**
|
|
3
3
|
* The built-in constrained relationship-tuple evaluator (design doc §4.2,
|
|
4
4
|
* plan D-23). Fixed four-rule algebra — role expansion, tenancy-tree
|
|
@@ -32,15 +32,21 @@ export function createTupleChecker(deps) {
|
|
|
32
32
|
// `expires_at`, so there is one definition of "live" rather than two.
|
|
33
33
|
const live = (row, now) => (row.expires_at === null || row.expires_at > now) && row.revoked_at === null;
|
|
34
34
|
return {
|
|
35
|
-
async check(
|
|
35
|
+
async check(subject, permission, node, entity) {
|
|
36
36
|
const now = new Date().toISOString();
|
|
37
37
|
const deny = { allowed: false, checked: permission, node };
|
|
38
38
|
const scopeDb = node.scopeId ? deps.scopeDb(node.scopeId) : undefined;
|
|
39
|
-
// Rule 4 — membership: the subject set is the
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
// Rule 4 — membership: the subject set is the caller plus its orgs.
|
|
40
|
+
//
|
|
41
|
+
// A CONNECTION has no memberships and never will: it is not a person and
|
|
42
|
+
// does not belong to an org, so the membership expansion is skipped
|
|
43
|
+
// rather than returning nothing. Its authority is exactly the grants
|
|
44
|
+
// written against `connection:<id>` — narrow by construction (#97).
|
|
45
|
+
const selfRef = subjectRef(subject);
|
|
46
|
+
const subjects = [{ ref: selfRef }];
|
|
47
|
+
for (const m of subject.kind === 'principal'
|
|
48
|
+
? tenantTuples(node.tenantId, selfRef, 'member')
|
|
49
|
+
: []) {
|
|
44
50
|
if (m.relation === 'member' && live(m, now)) {
|
|
45
51
|
subjects.push({ ref: m.object, via: t(m.subject, m.relation, m.object) });
|
|
46
52
|
}
|
package/dist/checker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,
|
|
1
|
+
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,25 @@
|
|
|
1
|
-
import { type PlatformActorId, type PrincipalId, type ScopeId, type TenantId } from '@substrat-run/contracts';
|
|
2
|
-
import { type ExecutorHandler, type HostAdmin, type ModuleRegistration, type OperationHandler, type PermissionChecker, type ProvisionScopeInput, type ScopeHost, type ScopeStub } from '@substrat-run/kernel';
|
|
1
|
+
import { type ConnectionId, type PlatformActorId, type PrincipalId, type ScopeId, type TenantId } from '@substrat-run/contracts';
|
|
2
|
+
import { type ExecutorDeadLetter, type ExecutorDrainReport, type ExecutorHandler, type ExecutorRetryPolicy, type ConnectorHandler, type ConnectorOptions, type FetchLike, type SecretBox, type HostAdmin, type ModuleRegistration, type OperationHandler, type PermissionChecker, type ProvisionScopeInput, type ScopeHost, type ScopeStub } from '@substrat-run/kernel';
|
|
3
3
|
export interface SqliteScopeHostOptions {
|
|
4
4
|
/** Directory holding one SQLite file per scope plus the directory database. */
|
|
5
5
|
dir: string;
|
|
6
6
|
/** Defaults to the built-in tuple checker (deny-by-default on empty tuples). */
|
|
7
7
|
checker?: PermissionChecker;
|
|
8
|
+
/**
|
|
9
|
+
* Seals per-tenant credentials at rest (#101). Omitted, the host refuses to
|
|
10
|
+
* store one at all rather than storing it in the clear — every other surface
|
|
11
|
+
* keeps working, so a deployment that uses no connectors needs no key.
|
|
12
|
+
*/
|
|
13
|
+
secretBox?: SecretBox;
|
|
14
|
+
/**
|
|
15
|
+
* Egress for connectors. Defaults to the runtime's `fetch`.
|
|
16
|
+
*
|
|
17
|
+
* Injectable so a test or a dev server can stand a provider up in memory —
|
|
18
|
+
* which is the only way to exercise a connector end to end before real API
|
|
19
|
+
* credentials exist, and remains the way to test failure paths a real
|
|
20
|
+
* provider will not produce on demand.
|
|
21
|
+
*/
|
|
22
|
+
fetch?: FetchLike;
|
|
8
23
|
}
|
|
9
24
|
export declare class SqliteScopeHost implements ScopeHost {
|
|
10
25
|
readonly admin: HostAdmin;
|
|
@@ -35,12 +50,38 @@ export declare class SqliteScopeHost implements ScopeHost {
|
|
|
35
50
|
*/
|
|
36
51
|
private causedBy;
|
|
37
52
|
private readonly systemPrincipal;
|
|
53
|
+
private readonly secretBox;
|
|
54
|
+
private readonly fetchImpl;
|
|
38
55
|
constructor(options: SqliteScopeHostOptions);
|
|
39
|
-
registerExecutor(id: string, eventType: string, handler: ExecutorHandler): void;
|
|
56
|
+
registerExecutor(id: string, eventType: string, handler: ExecutorHandler, retry?: ExecutorRetryPolicy): void;
|
|
57
|
+
registerConnector(id: string, eventType: string, handler: ConnectorHandler, options?: ConnectorOptions): void;
|
|
58
|
+
/**
|
|
59
|
+
* Build the context a connector runs with. Tenant and vertical are AMBIENT —
|
|
60
|
+
* taken from the event's scope, never from an argument — so a connector cannot
|
|
61
|
+
* reach a credential another vertical connected even by accident.
|
|
62
|
+
*/
|
|
63
|
+
private connectorContext;
|
|
40
64
|
registerModule(registration: ModuleRegistration): void;
|
|
41
65
|
defineOperation<I, O>(name: string, handler: OperationHandler<I, O>): void;
|
|
42
66
|
provisionScope(actor: PlatformActorId, input: ProvisionScopeInput): Promise<void>;
|
|
43
67
|
getScope(principal: PrincipalId, tenantId: TenantId, scopeId: ScopeId): Promise<ScopeStub>;
|
|
68
|
+
/**
|
|
69
|
+
* A scope stub whose authority is a CONNECTION (#97).
|
|
70
|
+
*
|
|
71
|
+
* Three gates, all inherited from what the connection already is rather than
|
|
72
|
+
* declared again: the connection must be live, the scope must belong to its
|
|
73
|
+
* tenant, and the scope must run its vertical. A leaked provider token
|
|
74
|
+
* therefore reaches exactly the scopes that connection was for — the
|
|
75
|
+
* isolation the (tenant, vertical, provider) key already asserts, enforced at
|
|
76
|
+
* the only door that could have widened it.
|
|
77
|
+
*
|
|
78
|
+
* What the connection may then DO is an ordinary permission check against
|
|
79
|
+
* `connection:<id>` grants. One enforcement path, one place to read it, one
|
|
80
|
+
* way to revoke it.
|
|
81
|
+
*/
|
|
82
|
+
getConnectorScope(connectionId: ConnectionId, scopeId: ScopeId): Promise<ScopeStub>;
|
|
83
|
+
/** The stub body, shared by the principal and connection doors. */
|
|
84
|
+
private buildStub;
|
|
44
85
|
private runGuards;
|
|
45
86
|
close(): Promise<void>;
|
|
46
87
|
/**
|
|
@@ -53,11 +94,29 @@ export declare class SqliteScopeHost implements ScopeHost {
|
|
|
53
94
|
* atomicity that matters already happened — the event only exists because the
|
|
54
95
|
* emitting transaction committed.
|
|
55
96
|
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
97
|
+
* **Failure is contained here (#100), three ways.** A throwing handler used to
|
|
98
|
+
* escape `invoke()` after COMMIT, so a caller saw an error for work that had in
|
|
99
|
+
* fact succeeded; it now records a failed attempt and returns. Failures back off
|
|
100
|
+
* rather than re-running on every dispatch, so a permanently-poisoned event no
|
|
101
|
+
* longer re-runs its side effects at request rate. And each event and each
|
|
102
|
+
* executor is isolated, so one bad delivery cannot wedge the ones behind it —
|
|
103
|
+
* which the old `ORDER BY o.id` loop did, permanently.
|
|
104
|
+
*
|
|
105
|
+
* At-least-once still requires idempotent handlers. Retry is the backstop, not a
|
|
106
|
+
* substitute.
|
|
59
107
|
*/
|
|
60
108
|
private dispatchExecutors;
|
|
109
|
+
/**
|
|
110
|
+
* Journal one executor attempt. Returns true when this attempt was the last one
|
|
111
|
+
* — i.e. the delivery is now dead-lettered.
|
|
112
|
+
*
|
|
113
|
+
* Written AFTER the handler ran, so a crash mid-effect retries rather than
|
|
114
|
+
* silently marking success. Claiming first would make delivery at-most-once and
|
|
115
|
+
* lose an effect on any crash in between.
|
|
116
|
+
*/
|
|
117
|
+
private recordExecutorDelivery;
|
|
118
|
+
drainDue(tenantId: TenantId, scopeId: ScopeId): Promise<ExecutorDrainReport>;
|
|
119
|
+
executorDeadLetters(tenantId: TenantId, scopeId: ScopeId): Promise<ExecutorDeadLetter[]>;
|
|
61
120
|
private dispatch;
|
|
62
121
|
private parseOutboxRow;
|
|
63
122
|
/**
|
|
@@ -75,6 +134,8 @@ export declare class SqliteScopeHost implements ScopeHost {
|
|
|
75
134
|
* asked, capped so one query cannot write an unbounded row.
|
|
76
135
|
*/
|
|
77
136
|
private recordAccess;
|
|
137
|
+
/** Load a connection or fail loudly — update/revoke must not silently no-op. */
|
|
138
|
+
private connectionRow;
|
|
78
139
|
private recordAdmin;
|
|
79
140
|
private tenantHoldsEntitlement;
|
|
80
141
|
private buildAdmin;
|
|
@@ -119,6 +180,11 @@ export declare class SqliteScopeHost implements ScopeHost {
|
|
|
119
180
|
private ensureAdminLogTenantNullable;
|
|
120
181
|
private ensureDirectoryColumns;
|
|
121
182
|
private loadRoles;
|
|
183
|
+
/**
|
|
184
|
+
* `subject` decides BOTH the permission check and the event actor, so the two
|
|
185
|
+
* can never disagree about who acted (#97). `overrideActor` remains for the
|
|
186
|
+
* system-actor path, where the acting module is the honest answer.
|
|
187
|
+
*/
|
|
122
188
|
private operationContext;
|
|
123
189
|
private applyPendingMigrations;
|
|
124
190
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { mkdirSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import Database from 'better-sqlite3';
|
|
4
|
-
import { accessLogEntry, adminLogEntry, createTenantInput, domainEvent, domainEventInput, eventId, identityLink, identityPool, instant, moduleManifest, createOrgInput, promotionAcknowledgement, bindHostnameInput, hostnameBinding, publishVersionInput, routeTarget, registerVerticalInput, vertical as verticalSchema, verticalChannel, verticalVersion, objectRef, org as orgSchema, orgMembership, principalId, resolvedIdentity, roleDefinition, scope as scopeSchema, tenant as tenantSchema, tenantRole, } from '@substrat-run/contracts';
|
|
5
|
-
import { resolveScopeRecord, ulid, } from '@substrat-run/kernel';
|
|
4
|
+
import { accessLogEntry, adminLogEntry, createTenantInput, domainEvent, domainEventInput, eventId, identityLink, identityPool, instant, connection, connectionGrant, connectionSecret, subjectRef, createConnectionInput, moduleManifest, createOrgInput, promotionAcknowledgement, bindHostnameInput, hostnameBinding, publishVersionInput, routeTarget, registerVerticalInput, vertical as verticalSchema, verticalChannel, verticalVersion, objectRef, org as orgSchema, orgMembership, principalId, resolvedIdentity, roleDefinition, scope as scopeSchema, tenant as tenantSchema, tenantRole, } from '@substrat-run/contracts';
|
|
5
|
+
import { asPrincipal, resolveScopeRecord, ulid, backoffAt, resolveRetryPolicy, unconfiguredSecretBox, } from '@substrat-run/kernel';
|
|
6
6
|
import { ScopeActor } from './actor.js';
|
|
7
7
|
import { createTupleChecker } from './checker.js';
|
|
8
8
|
const KERNEL_DDL = `
|
|
@@ -41,11 +41,39 @@ const KERNEL_DDL = `
|
|
|
41
41
|
CREATE TABLE IF NOT EXISTS _substrat_deliveries (
|
|
42
42
|
event_id TEXT NOT NULL,
|
|
43
43
|
consumer_module TEXT NOT NULL,
|
|
44
|
+
-- For a TERMINAL row this is when it was delivered (or dead-lettered). For a
|
|
45
|
+
-- row still retrying it is when it was last ATTEMPTED. The column predates
|
|
46
|
+
-- retry state (#100) and is NOT NULL, so it carries both readings rather than
|
|
47
|
+
-- forcing a table rebuild on every deployed scope.
|
|
44
48
|
delivered_at TEXT NOT NULL,
|
|
45
49
|
error TEXT,
|
|
50
|
+
-- Retry state, executors only (#100). Consumers leave both at their defaults
|
|
51
|
+
-- and keep the semantics they always had: a row means "do not deliver again".
|
|
52
|
+
-- next_attempt_at IS NOT NULL -> pending, due at that time
|
|
53
|
+
-- next_attempt_at IS NULL -> terminal: error IS NULL delivered, else dead
|
|
54
|
+
attempts INTEGER NOT NULL DEFAULT 0,
|
|
55
|
+
next_attempt_at TEXT,
|
|
46
56
|
PRIMARY KEY (event_id, consumer_module)
|
|
47
57
|
);
|
|
48
58
|
`;
|
|
59
|
+
/** Row → contract shape. Never reads the secrets table — that is the point of the split. */
|
|
60
|
+
const toConnection = (r) => connection.parse({
|
|
61
|
+
id: r.id,
|
|
62
|
+
tenantId: r.tenant_id,
|
|
63
|
+
vertical: r.vertical,
|
|
64
|
+
provider: r.provider,
|
|
65
|
+
label: r.label,
|
|
66
|
+
status: r.status,
|
|
67
|
+
externalAccountRef: r.external_account_ref,
|
|
68
|
+
scopes: JSON.parse(r.scopes),
|
|
69
|
+
expiresAt: r.expires_at,
|
|
70
|
+
lastOkAt: r.last_ok_at,
|
|
71
|
+
lastError: r.last_error,
|
|
72
|
+
lastErrorAt: r.last_error_at,
|
|
73
|
+
createdBy: r.created_by,
|
|
74
|
+
createdAt: r.created_at,
|
|
75
|
+
revokedAt: r.revoked_at,
|
|
76
|
+
});
|
|
49
77
|
/**
|
|
50
78
|
* The four migration-health columns → the contract's nullable `migrationFailure`.
|
|
51
79
|
* All-null is the healthy case (never attempted, or the last attempt succeeded and
|
|
@@ -105,7 +133,11 @@ export class SqliteScopeHost {
|
|
|
105
133
|
*/
|
|
106
134
|
causedBy = null;
|
|
107
135
|
systemPrincipal = principalId.parse(ulid());
|
|
136
|
+
secretBox;
|
|
137
|
+
fetchImpl;
|
|
108
138
|
constructor(options) {
|
|
139
|
+
this.secretBox = options.secretBox ?? unconfiguredSecretBox;
|
|
140
|
+
this.fetchImpl = options.fetch ?? ((input, init) => globalThis.fetch(input, init));
|
|
109
141
|
this.dir = options.dir;
|
|
110
142
|
mkdirSync(this.dir, { recursive: true });
|
|
111
143
|
this.directory = new Database(join(this.dir, '_directory.sqlite'));
|
|
@@ -255,6 +287,41 @@ export class SqliteScopeHost {
|
|
|
255
287
|
tenant_id TEXT,
|
|
256
288
|
created_at TEXT NOT NULL
|
|
257
289
|
);
|
|
290
|
+
-- The integrations hub (#101). Keyed on (tenant, vertical, provider): a
|
|
291
|
+
-- vertical is a blast-radius boundary (D-30) and verticals are built by
|
|
292
|
+
-- different companies (D-33), so one vendor's host code must not reach a
|
|
293
|
+
-- credential another vendor connected.
|
|
294
|
+
CREATE TABLE IF NOT EXISTS _substrat_connections (
|
|
295
|
+
id TEXT PRIMARY KEY,
|
|
296
|
+
tenant_id TEXT NOT NULL,
|
|
297
|
+
vertical TEXT NOT NULL,
|
|
298
|
+
provider TEXT NOT NULL,
|
|
299
|
+
label TEXT NOT NULL,
|
|
300
|
+
status TEXT NOT NULL,
|
|
301
|
+
external_account_ref TEXT,
|
|
302
|
+
scopes TEXT NOT NULL,
|
|
303
|
+
expires_at TEXT,
|
|
304
|
+
last_ok_at TEXT,
|
|
305
|
+
last_error TEXT,
|
|
306
|
+
last_error_at TEXT,
|
|
307
|
+
created_by TEXT NOT NULL,
|
|
308
|
+
created_at TEXT NOT NULL,
|
|
309
|
+
revoked_at TEXT
|
|
310
|
+
);
|
|
311
|
+
-- One LIVE connection per (tenant, vertical, provider). Revoked rows are
|
|
312
|
+
-- kept as evidence (K-21's tombstone rule) and must not block a successor,
|
|
313
|
+
-- which is why the index is partial rather than a table constraint.
|
|
314
|
+
CREATE UNIQUE INDEX IF NOT EXISTS _substrat_connections_live
|
|
315
|
+
ON _substrat_connections (tenant_id, vertical, provider)
|
|
316
|
+
WHERE revoked_at IS NULL;
|
|
317
|
+
-- Sealed credentials, in their own table so that reading a connection's
|
|
318
|
+
-- METADATA never touches ciphertext. Nothing above SecretBox sees plaintext.
|
|
319
|
+
CREATE TABLE IF NOT EXISTS _substrat_connection_secrets (
|
|
320
|
+
connection_id TEXT PRIMARY KEY,
|
|
321
|
+
key_id TEXT NOT NULL,
|
|
322
|
+
ciphertext TEXT NOT NULL,
|
|
323
|
+
updated_at TEXT NOT NULL
|
|
324
|
+
);
|
|
258
325
|
CREATE TABLE IF NOT EXISTS _substrat_identities (
|
|
259
326
|
provider TEXT NOT NULL,
|
|
260
327
|
external_id TEXT NOT NULL,
|
|
@@ -329,10 +396,85 @@ export class SqliteScopeHost {
|
|
|
329
396
|
});
|
|
330
397
|
this.admin = this.buildAdmin();
|
|
331
398
|
}
|
|
332
|
-
registerExecutor(id, eventType, handler) {
|
|
399
|
+
registerExecutor(id, eventType, handler, retry) {
|
|
333
400
|
if (this.executors.has(id))
|
|
334
401
|
throw new Error(`executor '${id}' is already registered`);
|
|
335
|
-
this.executors.set(id, {
|
|
402
|
+
this.executors.set(id, {
|
|
403
|
+
kind: 'executor',
|
|
404
|
+
eventType,
|
|
405
|
+
handler,
|
|
406
|
+
retry: resolveRetryPolicy(retry),
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
registerConnector(id, eventType, handler, options) {
|
|
410
|
+
if (this.executors.has(id))
|
|
411
|
+
throw new Error(`executor '${id}' is already registered`);
|
|
412
|
+
this.executors.set(id, {
|
|
413
|
+
kind: 'connector',
|
|
414
|
+
eventType,
|
|
415
|
+
handler,
|
|
416
|
+
retry: resolveRetryPolicy(options),
|
|
417
|
+
timeoutMs: options?.timeoutMs ?? 30_000,
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Build the context a connector runs with. Tenant and vertical are AMBIENT —
|
|
422
|
+
* taken from the event's scope, never from an argument — so a connector cannot
|
|
423
|
+
* reach a credential another vertical connected even by accident.
|
|
424
|
+
*/
|
|
425
|
+
connectorContext(rt, timeoutMs) {
|
|
426
|
+
const vertical = this.directory
|
|
427
|
+
.prepare('SELECT vertical FROM scopes WHERE scope_id = ?')
|
|
428
|
+
.get(rt.scopeId)?.vertical ?? null;
|
|
429
|
+
const admin = this.admin;
|
|
430
|
+
const fetchImpl = this.fetchImpl;
|
|
431
|
+
return {
|
|
432
|
+
admin,
|
|
433
|
+
tenantId: rt.tenantId,
|
|
434
|
+
scopeId: rt.scopeId,
|
|
435
|
+
vertical: vertical ?? '',
|
|
436
|
+
connection: async (provider) => {
|
|
437
|
+
if (!vertical) {
|
|
438
|
+
throw new Error(`scope ${rt.scopeId} is bound to no vertical, so it has no connection namespace — ` +
|
|
439
|
+
`provision it with a vertical before using connectors`);
|
|
440
|
+
}
|
|
441
|
+
const open = await admin.openConnection(rt.tenantId, vertical, provider);
|
|
442
|
+
if (!open) {
|
|
443
|
+
throw new Error(`no live '${provider}' connection for tenant ${rt.tenantId} / vertical '${vertical}'`);
|
|
444
|
+
}
|
|
445
|
+
return {
|
|
446
|
+
...open,
|
|
447
|
+
fetch: async (input, init) => {
|
|
448
|
+
try {
|
|
449
|
+
const res = await fetchImpl(input, {
|
|
450
|
+
...init,
|
|
451
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
452
|
+
});
|
|
453
|
+
// A 5xx is the provider failing; a 4xx is usually us. Both are
|
|
454
|
+
// worth recording, because "the connection stopped working" is the
|
|
455
|
+
// question a health view answers.
|
|
456
|
+
if (!res.ok) {
|
|
457
|
+
await admin.recordConnectionUse(open.id, {
|
|
458
|
+
ok: false,
|
|
459
|
+
error: `HTTP ${res.status} from ${provider}`,
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
await admin.recordConnectionUse(open.id, { ok: true });
|
|
464
|
+
}
|
|
465
|
+
return res;
|
|
466
|
+
}
|
|
467
|
+
catch (err) {
|
|
468
|
+
await admin.recordConnectionUse(open.id, {
|
|
469
|
+
ok: false,
|
|
470
|
+
error: err instanceof Error ? err.message : String(err),
|
|
471
|
+
});
|
|
472
|
+
throw err;
|
|
473
|
+
}
|
|
474
|
+
},
|
|
475
|
+
};
|
|
476
|
+
},
|
|
477
|
+
};
|
|
336
478
|
}
|
|
337
479
|
registerModule(registration) {
|
|
338
480
|
const manifest = moduleManifest.parse(registration.manifest);
|
|
@@ -449,7 +591,9 @@ export class SqliteScopeHost {
|
|
|
449
591
|
.prepare(`INSERT INTO scopes
|
|
450
592
|
(scope_id, tenant_id, parent_scope_id, slug, kind, name, vertical,
|
|
451
593
|
storage_shape, jurisdiction, status, created_at)
|
|
452
|
-
|
|
594
|
+
-- 'provisioning', not 'active' (K-31): the directory row exists before the
|
|
595
|
+
-- vertical has created the scope DO, and only activateScope says it has.
|
|
596
|
+
VALUES (?, ?, NULL, ?, ?, ?, ?, ?, ?, 'provisioning', ?)`)
|
|
453
597
|
.run(input.scopeId, input.tenantId, record.slug, record.kind, record.name, record.vertical, record.storageShape, record.jurisdiction, new Date().toISOString());
|
|
454
598
|
}
|
|
455
599
|
const rt = this.runtime(input.tenantId, input.scopeId);
|
|
@@ -480,12 +624,70 @@ export class SqliteScopeHost {
|
|
|
480
624
|
if (tenantRow.status !== 'active') {
|
|
481
625
|
throw new Error(`tenant not active (status: ${tenantRow.status}): ${tenantId}`);
|
|
482
626
|
}
|
|
483
|
-
|
|
627
|
+
// `provisioning` is handled BELOW rather than here, because a scope that never
|
|
628
|
+
// finished setting up should still retry its migrations when touched — that lazy
|
|
629
|
+
// retry, and the attempt counter a sweep backs off from, are the only self-healing
|
|
630
|
+
// there is until #49 exists. `suspended` and `archived` are different: they are
|
|
631
|
+
// deliberate states, and running migrations for them would be work on behalf of a
|
|
632
|
+
// request that is going to be refused anyway.
|
|
633
|
+
if (row.status !== 'active' && row.status !== 'provisioning') {
|
|
484
634
|
throw new Error(`scope not active (status: ${row.status}): ${scopeId}`);
|
|
485
635
|
}
|
|
486
636
|
const rt = this.runtime(tenantId, scopeId);
|
|
487
637
|
await this.applyPendingMigrations(rt);
|
|
488
|
-
|
|
638
|
+
if (row.status !== 'active') {
|
|
639
|
+
// Migrations passed and it is still `provisioning`, so nothing has confirmed
|
|
640
|
+
// the scope exists on the vertical's side (K-31). Refused, but only after the
|
|
641
|
+
// retry above has had its chance — and if THAT is what failed, it threw with
|
|
642
|
+
// the migration's own message, which is the one an operator needs.
|
|
643
|
+
throw new Error(`scope not active (status: ${row.status}): ${scopeId}`);
|
|
644
|
+
}
|
|
645
|
+
return this.buildStub(tenantId, scopeId, rt, asPrincipal(principal));
|
|
646
|
+
}
|
|
647
|
+
/**
|
|
648
|
+
* A scope stub whose authority is a CONNECTION (#97).
|
|
649
|
+
*
|
|
650
|
+
* Three gates, all inherited from what the connection already is rather than
|
|
651
|
+
* declared again: the connection must be live, the scope must belong to its
|
|
652
|
+
* tenant, and the scope must run its vertical. A leaked provider token
|
|
653
|
+
* therefore reaches exactly the scopes that connection was for — the
|
|
654
|
+
* isolation the (tenant, vertical, provider) key already asserts, enforced at
|
|
655
|
+
* the only door that could have widened it.
|
|
656
|
+
*
|
|
657
|
+
* What the connection may then DO is an ordinary permission check against
|
|
658
|
+
* `connection:<id>` grants. One enforcement path, one place to read it, one
|
|
659
|
+
* way to revoke it.
|
|
660
|
+
*/
|
|
661
|
+
async getConnectorScope(connectionId, scopeId) {
|
|
662
|
+
const conn = this.connectionRow(connectionId);
|
|
663
|
+
if (conn.revoked_at) {
|
|
664
|
+
throw new Error(`connection ${connectionId} is revoked`);
|
|
665
|
+
}
|
|
666
|
+
const scope = this.directory
|
|
667
|
+
.prepare('SELECT tenant_id, vertical, status FROM scopes WHERE scope_id = ?')
|
|
668
|
+
.get(scopeId);
|
|
669
|
+
if (!scope || scope.tenant_id !== conn.tenant_id) {
|
|
670
|
+
// Same wording as the principal path: a scope in another tenant is
|
|
671
|
+
// indistinguishable from one that does not exist.
|
|
672
|
+
throw new Error(`unknown scope for connection: ${scopeId}`);
|
|
673
|
+
}
|
|
674
|
+
if (scope.vertical !== conn.vertical) {
|
|
675
|
+
throw new Error(`connection ${connectionId} is for vertical '${conn.vertical}' and scope ${scopeId} ` +
|
|
676
|
+
`runs '${scope.vertical ?? 'none'}'`);
|
|
677
|
+
}
|
|
678
|
+
if (scope.status !== 'active') {
|
|
679
|
+
throw new Error(`scope not active (status: ${scope.status}): ${scopeId}`);
|
|
680
|
+
}
|
|
681
|
+
const rt = this.runtime(conn.tenant_id, scopeId);
|
|
682
|
+
await this.applyPendingMigrations(rt);
|
|
683
|
+
return this.buildStub(conn.tenant_id, scopeId, rt, {
|
|
684
|
+
kind: 'connection',
|
|
685
|
+
id: connectionId,
|
|
686
|
+
});
|
|
687
|
+
}
|
|
688
|
+
/** The stub body, shared by the principal and connection doors. */
|
|
689
|
+
buildStub(tenantId, scopeId, rt, subject) {
|
|
690
|
+
const ctx = this.operationContext(rt, subject);
|
|
489
691
|
const operations = this.operations;
|
|
490
692
|
return {
|
|
491
693
|
tenantId,
|
|
@@ -572,36 +774,119 @@ export class SqliteScopeHost {
|
|
|
572
774
|
* atomicity that matters already happened — the event only exists because the
|
|
573
775
|
* emitting transaction committed.
|
|
574
776
|
*
|
|
575
|
-
*
|
|
576
|
-
*
|
|
577
|
-
*
|
|
777
|
+
* **Failure is contained here (#100), three ways.** A throwing handler used to
|
|
778
|
+
* escape `invoke()` after COMMIT, so a caller saw an error for work that had in
|
|
779
|
+
* fact succeeded; it now records a failed attempt and returns. Failures back off
|
|
780
|
+
* rather than re-running on every dispatch, so a permanently-poisoned event no
|
|
781
|
+
* longer re-runs its side effects at request rate. And each event and each
|
|
782
|
+
* executor is isolated, so one bad delivery cannot wedge the ones behind it —
|
|
783
|
+
* which the old `ORDER BY o.id` loop did, permanently.
|
|
784
|
+
*
|
|
785
|
+
* At-least-once still requires idempotent handlers. Retry is the backstop, not a
|
|
786
|
+
* substitute.
|
|
578
787
|
*/
|
|
579
788
|
async dispatchExecutors(rt) {
|
|
789
|
+
const report = {
|
|
790
|
+
attempted: 0,
|
|
791
|
+
delivered: 0,
|
|
792
|
+
retrying: 0,
|
|
793
|
+
deadLettered: 0,
|
|
794
|
+
};
|
|
795
|
+
const now = new Date().toISOString();
|
|
580
796
|
for (const [id, executor] of this.executors) {
|
|
581
797
|
const deliveryId = `executor:${id}`;
|
|
798
|
+
// Due = never attempted, or retrying and past its next attempt time.
|
|
799
|
+
// Terminal rows (next_attempt_at IS NULL) are excluded by the join.
|
|
582
800
|
const rows = rt.db
|
|
583
|
-
.prepare(`SELECT
|
|
801
|
+
.prepare(`SELECT o.* FROM _substrat_outbox o
|
|
802
|
+
LEFT JOIN _substrat_deliveries d
|
|
803
|
+
ON d.event_id = o.id AND d.consumer_module = ?
|
|
584
804
|
WHERE o.type = ?
|
|
585
|
-
AND
|
|
586
|
-
|
|
587
|
-
WHERE d.event_id = o.id AND d.consumer_module = ?
|
|
588
|
-
)
|
|
805
|
+
AND (d.event_id IS NULL
|
|
806
|
+
OR (d.next_attempt_at IS NOT NULL AND d.next_attempt_at <= ?))
|
|
589
807
|
ORDER BY o.id`)
|
|
590
|
-
.all(executor.eventType,
|
|
808
|
+
.all(deliveryId, executor.eventType, now);
|
|
591
809
|
for (const row of rows) {
|
|
592
810
|
const event = this.parseOutboxRow(row);
|
|
811
|
+
report.attempted += 1;
|
|
593
812
|
this.causedBy = event.id;
|
|
594
813
|
try {
|
|
595
|
-
|
|
814
|
+
if (executor.kind === 'connector') {
|
|
815
|
+
await executor.handler(this.connectorContext(rt, executor.timeoutMs), event);
|
|
816
|
+
}
|
|
817
|
+
else {
|
|
818
|
+
await executor.handler(this.admin, event);
|
|
819
|
+
}
|
|
820
|
+
this.recordExecutorDelivery(rt, row.id, deliveryId, null, executor.retry);
|
|
821
|
+
report.delivered += 1;
|
|
822
|
+
}
|
|
823
|
+
catch (err) {
|
|
824
|
+
const dead = this.recordExecutorDelivery(rt, row.id, deliveryId, err instanceof Error ? (err.stack ?? err.message) : String(err), executor.retry);
|
|
825
|
+
if (dead)
|
|
826
|
+
report.deadLettered += 1;
|
|
827
|
+
else
|
|
828
|
+
report.retrying += 1;
|
|
596
829
|
}
|
|
597
830
|
finally {
|
|
598
831
|
this.causedBy = null;
|
|
599
832
|
}
|
|
600
|
-
rt.db
|
|
601
|
-
.prepare('INSERT OR IGNORE INTO _substrat_deliveries (event_id, consumer_module, delivered_at) VALUES (?, ?, ?)')
|
|
602
|
-
.run(row.id, deliveryId, new Date().toISOString());
|
|
603
833
|
}
|
|
604
834
|
}
|
|
835
|
+
return report;
|
|
836
|
+
}
|
|
837
|
+
/**
|
|
838
|
+
* Journal one executor attempt. Returns true when this attempt was the last one
|
|
839
|
+
* — i.e. the delivery is now dead-lettered.
|
|
840
|
+
*
|
|
841
|
+
* Written AFTER the handler ran, so a crash mid-effect retries rather than
|
|
842
|
+
* silently marking success. Claiming first would make delivery at-most-once and
|
|
843
|
+
* lose an effect on any crash in between.
|
|
844
|
+
*/
|
|
845
|
+
recordExecutorDelivery(rt, eventId, deliveryId, error, retry) {
|
|
846
|
+
const prior = rt.db
|
|
847
|
+
.prepare('SELECT attempts FROM _substrat_deliveries WHERE event_id = ? AND consumer_module = ?')
|
|
848
|
+
.get(eventId, deliveryId)?.attempts ?? 0;
|
|
849
|
+
const attempts = prior + 1;
|
|
850
|
+
const exhausted = attempts >= retry.maxAttempts;
|
|
851
|
+
// Terminal on success or on exhaustion; otherwise schedule the next attempt.
|
|
852
|
+
const nextAttemptAt = error === null || exhausted ? null : backoffAt(attempts, retry, new Date());
|
|
853
|
+
rt.db
|
|
854
|
+
.prepare(`INSERT INTO _substrat_deliveries
|
|
855
|
+
(event_id, consumer_module, delivered_at, error, attempts, next_attempt_at)
|
|
856
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
857
|
+
ON CONFLICT (event_id, consumer_module) DO UPDATE SET
|
|
858
|
+
delivered_at = excluded.delivered_at,
|
|
859
|
+
error = excluded.error,
|
|
860
|
+
attempts = excluded.attempts,
|
|
861
|
+
next_attempt_at = excluded.next_attempt_at`)
|
|
862
|
+
.run(eventId, deliveryId, new Date().toISOString(), error, attempts, nextAttemptAt);
|
|
863
|
+
return error !== null && exhausted;
|
|
864
|
+
}
|
|
865
|
+
async drainDue(tenantId, scopeId) {
|
|
866
|
+
const rt = this.runtime(tenantId, scopeId);
|
|
867
|
+
await this.applyPendingMigrations(rt);
|
|
868
|
+
return rt.actor.enqueue(() => this.dispatchExecutors(rt));
|
|
869
|
+
}
|
|
870
|
+
async executorDeadLetters(tenantId, scopeId) {
|
|
871
|
+
const rt = this.runtime(tenantId, scopeId);
|
|
872
|
+
await this.applyPendingMigrations(rt);
|
|
873
|
+
const rows = rt.db
|
|
874
|
+
.prepare(`SELECT d.event_id, d.consumer_module, d.attempts, d.error, d.delivered_at, o.type
|
|
875
|
+
FROM _substrat_deliveries d
|
|
876
|
+
JOIN _substrat_outbox o ON o.id = d.event_id
|
|
877
|
+
WHERE d.consumer_module LIKE 'executor:%'
|
|
878
|
+
AND d.error IS NOT NULL
|
|
879
|
+
AND d.next_attempt_at IS NULL
|
|
880
|
+
ORDER BY d.event_id`)
|
|
881
|
+
.all();
|
|
882
|
+
return rows.map((r) => ({
|
|
883
|
+
eventId: r.event_id,
|
|
884
|
+
executorId: r.consumer_module.slice('executor:'.length),
|
|
885
|
+
eventType: r.type,
|
|
886
|
+
attempts: r.attempts,
|
|
887
|
+
error: r.error,
|
|
888
|
+
lastAttemptAt: r.delivered_at,
|
|
889
|
+
}));
|
|
605
890
|
}
|
|
606
891
|
async dispatch(rt) {
|
|
607
892
|
for (let round = 0; round < 50; round++) {
|
|
@@ -619,7 +904,7 @@ export class SqliteScopeHost {
|
|
|
619
904
|
.all(consumer.eventType, mod.id);
|
|
620
905
|
for (const row of rows) {
|
|
621
906
|
const event = this.parseOutboxRow(row);
|
|
622
|
-
const ctx = this.operationContext(rt, this.systemPrincipal, {
|
|
907
|
+
const ctx = this.operationContext(rt, asPrincipal(this.systemPrincipal), {
|
|
623
908
|
system: mod.id,
|
|
624
909
|
});
|
|
625
910
|
rt.db.exec('BEGIN IMMEDIATE');
|
|
@@ -688,6 +973,15 @@ export class SqliteScopeHost {
|
|
|
688
973
|
VALUES (?, ?, ?, ?, ?, ?, ?, NULL, ?)`)
|
|
689
974
|
.run(ulid(), actor, method, target.tenantId ?? null, target.scopeId ?? null, summary, resultCount, new Date().toISOString());
|
|
690
975
|
}
|
|
976
|
+
/** Load a connection or fail loudly — update/revoke must not silently no-op. */
|
|
977
|
+
connectionRow(id) {
|
|
978
|
+
const row = this.directory
|
|
979
|
+
.prepare('SELECT * FROM _substrat_connections WHERE id = ?')
|
|
980
|
+
.get(id);
|
|
981
|
+
if (!row)
|
|
982
|
+
throw new Error(`connection not found: ${id}`);
|
|
983
|
+
return row;
|
|
984
|
+
}
|
|
691
985
|
recordAdmin(actor, action, target, before, after) {
|
|
692
986
|
this.directory
|
|
693
987
|
.prepare(`INSERT INTO _substrat_admin_log
|
|
@@ -913,6 +1207,39 @@ export class SqliteScopeHost {
|
|
|
913
1207
|
writeGrant(`principal:${grant.principalId}`, grant.permission, grant.node, grant.entity, grant.expiresAt);
|
|
914
1208
|
this.recordAdmin(actor, 'grant', { tenantId: grant.node.tenantId, scopeId: grant.node.scopeId }, null, grant);
|
|
915
1209
|
},
|
|
1210
|
+
grantToConnection: async (actor, raw) => {
|
|
1211
|
+
const grant = connectionGrant.parse(raw);
|
|
1212
|
+
const conn = this.connectionRow(grant.connectionId);
|
|
1213
|
+
if (conn.revoked_at) {
|
|
1214
|
+
throw new Error(`connection ${grant.connectionId} is revoked — grant nothing to it`);
|
|
1215
|
+
}
|
|
1216
|
+
// The grant may not reach outside what the connection already is. A
|
|
1217
|
+
// connection is keyed (tenant, vertical, provider); letting it hold a
|
|
1218
|
+
// permission in another tenant would make the key decorative.
|
|
1219
|
+
if (conn.tenant_id !== grant.node.tenantId) {
|
|
1220
|
+
throw new Error(`connection ${grant.connectionId} belongs to tenant ${conn.tenant_id} and cannot ` +
|
|
1221
|
+
`be granted anything in ${grant.node.tenantId}`);
|
|
1222
|
+
}
|
|
1223
|
+
if (grant.node.scopeId) {
|
|
1224
|
+
const scope = this.directory
|
|
1225
|
+
.prepare('SELECT tenant_id, vertical FROM scopes WHERE scope_id = ?')
|
|
1226
|
+
.get(grant.node.scopeId);
|
|
1227
|
+
if (!scope || scope.tenant_id !== grant.node.tenantId) {
|
|
1228
|
+
throw new Error(`unknown scope ${grant.node.scopeId} in tenant ${grant.node.tenantId}`);
|
|
1229
|
+
}
|
|
1230
|
+
if (scope.vertical !== conn.vertical) {
|
|
1231
|
+
throw new Error(`connection ${grant.connectionId} is for vertical '${conn.vertical}' and scope ` +
|
|
1232
|
+
`${grant.node.scopeId} runs '${scope.vertical ?? 'none'}'`);
|
|
1233
|
+
}
|
|
1234
|
+
}
|
|
1235
|
+
writeGrant(subjectRef({ kind: 'connection', id: grant.connectionId }), grant.permission, grant.node, undefined, grant.expiresAt);
|
|
1236
|
+
this.recordAdmin(actor, 'grantToConnection', { tenantId: grant.node.tenantId, scopeId: grant.node.scopeId, vertical: conn.vertical }, null, {
|
|
1237
|
+
connectionId: grant.connectionId,
|
|
1238
|
+
provider: conn.provider,
|
|
1239
|
+
permission: grant.permission,
|
|
1240
|
+
node: grant.node,
|
|
1241
|
+
});
|
|
1242
|
+
},
|
|
916
1243
|
grantToOrg: async (actor, orgId, permission, node, entity) => {
|
|
917
1244
|
// The org must exist in the node's tenant. A grant to a phantom org is
|
|
918
1245
|
// worse than an error: it looks applied, resolves for nobody, and shows up
|
|
@@ -1303,6 +1630,19 @@ export class SqliteScopeHost {
|
|
|
1303
1630
|
return undefined;
|
|
1304
1631
|
return mapScope(r);
|
|
1305
1632
|
},
|
|
1633
|
+
activateScope: async (actor, tenantId, scopeId) => {
|
|
1634
|
+
// Idempotent on `active`, unaudited because nothing changed. Provisioning is
|
|
1635
|
+
// a two-phase creation that the reconciliation sweep re-runs (K-31), so a
|
|
1636
|
+
// retry of an already-finished instance must converge rather than throw.
|
|
1637
|
+
// Every OTHER state still refuses: reviving a suspended scope through here
|
|
1638
|
+
// would route around unsuspend and its audit entry.
|
|
1639
|
+
const current = this.directory
|
|
1640
|
+
.prepare('SELECT status FROM scopes WHERE scope_id = ? AND tenant_id = ?')
|
|
1641
|
+
.get(scopeId, tenantId);
|
|
1642
|
+
if (current?.status === 'active')
|
|
1643
|
+
return;
|
|
1644
|
+
await transitionScope(actor, 'activateScope', tenantId, scopeId, ['provisioning'], 'active');
|
|
1645
|
+
},
|
|
1306
1646
|
suspendScope: async (actor, tenantId, scopeId) => transitionScope(actor, 'suspendScope', tenantId, scopeId, ['active'], 'suspended'),
|
|
1307
1647
|
unsuspendScope: async (actor, tenantId, scopeId) => transitionScope(actor, 'unsuspendScope', tenantId, scopeId, ['suspended'], 'active'),
|
|
1308
1648
|
archiveScope: async (actor, tenantId, scopeId) => transitionScope(actor, 'archiveScope', tenantId, scopeId, ['active', 'suspended'], 'archived'),
|
|
@@ -1374,6 +1714,135 @@ export class SqliteScopeHost {
|
|
|
1374
1714
|
this.recordAccess(actor, 'listIdentityTenants', {}, { provider }, tenants.length);
|
|
1375
1715
|
return tenants;
|
|
1376
1716
|
},
|
|
1717
|
+
// -- the integrations hub (#101) ---------------------------------------
|
|
1718
|
+
createConnection: async (actor, raw) => {
|
|
1719
|
+
const input = createConnectionInput.parse(raw);
|
|
1720
|
+
const sealed = await this.secretBox.seal(JSON.stringify(input.secret));
|
|
1721
|
+
const now = new Date().toISOString();
|
|
1722
|
+
try {
|
|
1723
|
+
this.directory
|
|
1724
|
+
.prepare(`INSERT INTO _substrat_connections
|
|
1725
|
+
(id, tenant_id, vertical, provider, label, status, external_account_ref,
|
|
1726
|
+
scopes, expires_at, last_ok_at, last_error, last_error_at,
|
|
1727
|
+
created_by, created_at, revoked_at)
|
|
1728
|
+
VALUES (?, ?, ?, ?, ?, 'active', ?, ?, ?, NULL, NULL, NULL, ?, ?, NULL)`)
|
|
1729
|
+
.run(input.id, input.tenantId, input.vertical, input.provider, input.label, input.externalAccountRef ?? null, JSON.stringify(input.scopes), input.expiresAt ?? null, actor, now);
|
|
1730
|
+
}
|
|
1731
|
+
catch (err) {
|
|
1732
|
+
if (/UNIQUE constraint failed/i.test(err.message)) {
|
|
1733
|
+
throw new Error(`tenant ${input.tenantId} already has a live '${input.provider}' connection ` +
|
|
1734
|
+
`for vertical '${input.vertical}' — revoke it before connecting another`);
|
|
1735
|
+
}
|
|
1736
|
+
throw err;
|
|
1737
|
+
}
|
|
1738
|
+
this.directory
|
|
1739
|
+
.prepare(`INSERT INTO _substrat_connection_secrets (connection_id, key_id, ciphertext, updated_at)
|
|
1740
|
+
VALUES (?, ?, ?, ?)`)
|
|
1741
|
+
.run(input.id, sealed.keyId, sealed.ciphertext, now);
|
|
1742
|
+
// METADATA ONLY. `_substrat_admin_log` is append-only, so a credential
|
|
1743
|
+
// written here could never be removed — the redaction is the point, and
|
|
1744
|
+
// it is structural rather than a rule someone has to remember.
|
|
1745
|
+
this.recordAdmin(actor, 'createConnection', { tenantId: input.tenantId, vertical: input.vertical }, null, {
|
|
1746
|
+
id: input.id,
|
|
1747
|
+
provider: input.provider,
|
|
1748
|
+
label: input.label,
|
|
1749
|
+
scopes: input.scopes,
|
|
1750
|
+
externalAccountRef: input.externalAccountRef ?? null,
|
|
1751
|
+
});
|
|
1752
|
+
},
|
|
1753
|
+
listConnections: async (actor, filter) => {
|
|
1754
|
+
const f = filter ?? {};
|
|
1755
|
+
const where = [];
|
|
1756
|
+
const params = [];
|
|
1757
|
+
if (f.tenantId)
|
|
1758
|
+
(where.push('tenant_id = ?'), params.push(f.tenantId));
|
|
1759
|
+
if (f.vertical)
|
|
1760
|
+
(where.push('vertical = ?'), params.push(f.vertical));
|
|
1761
|
+
if (f.provider)
|
|
1762
|
+
(where.push('provider = ?'), params.push(f.provider));
|
|
1763
|
+
if (!f.includeRevoked)
|
|
1764
|
+
where.push('revoked_at IS NULL');
|
|
1765
|
+
const rows = this.directory
|
|
1766
|
+
.prepare(`SELECT * FROM _substrat_connections
|
|
1767
|
+
${where.length ? `WHERE ${where.join(' AND ')}` : ''}
|
|
1768
|
+
ORDER BY tenant_id, vertical, provider`)
|
|
1769
|
+
.all(...params);
|
|
1770
|
+
this.recordAccess(actor, 'listConnections', {}, f, rows.length);
|
|
1771
|
+
return rows.map(toConnection);
|
|
1772
|
+
},
|
|
1773
|
+
updateConnectionSecret: async (actor, id, secret, expiresAt) => {
|
|
1774
|
+
const row = this.connectionRow(id);
|
|
1775
|
+
const sealed = await this.secretBox.seal(JSON.stringify(connectionSecret.parse(secret)));
|
|
1776
|
+
const now = new Date().toISOString();
|
|
1777
|
+
this.directory
|
|
1778
|
+
.prepare(`UPDATE _substrat_connection_secrets
|
|
1779
|
+
SET key_id = ?, ciphertext = ?, updated_at = ? WHERE connection_id = ?`)
|
|
1780
|
+
.run(sealed.keyId, sealed.ciphertext, now, id);
|
|
1781
|
+
// A refresh revives a connection that had lapsed or errored.
|
|
1782
|
+
this.directory
|
|
1783
|
+
.prepare(`UPDATE _substrat_connections
|
|
1784
|
+
SET status = 'active', expires_at = ?, last_error = NULL, last_error_at = NULL
|
|
1785
|
+
WHERE id = ?`)
|
|
1786
|
+
.run(expiresAt ?? row.expires_at, id);
|
|
1787
|
+
// The event, never the token. "Rotated at T" is the auditable fact.
|
|
1788
|
+
this.recordAdmin(actor, 'updateConnectionSecret', { tenantId: row.tenant_id, vertical: row.vertical }, null, { id, provider: row.provider, rotatedAt: now, expiresAt: expiresAt ?? row.expires_at });
|
|
1789
|
+
},
|
|
1790
|
+
revokeConnection: async (actor, id) => {
|
|
1791
|
+
const row = this.connectionRow(id);
|
|
1792
|
+
if (row.revoked_at)
|
|
1793
|
+
return; // idempotent, and a no-op is not audited
|
|
1794
|
+
const now = new Date().toISOString();
|
|
1795
|
+
this.directory
|
|
1796
|
+
.prepare(`UPDATE _substrat_connections SET status = 'revoked', revoked_at = ? WHERE id = ?`)
|
|
1797
|
+
.run(now, id);
|
|
1798
|
+
// The sealed blob goes NOW. A tombstoned connection is evidence that a
|
|
1799
|
+
// grant existed (K-21); keeping the usable credential would make it a
|
|
1800
|
+
// liability instead. The row says what happened; the secret does not.
|
|
1801
|
+
this.directory
|
|
1802
|
+
.prepare('DELETE FROM _substrat_connection_secrets WHERE connection_id = ?')
|
|
1803
|
+
.run(id);
|
|
1804
|
+
this.recordAdmin(actor, 'revokeConnection', { tenantId: row.tenant_id, vertical: row.vertical }, { status: row.status }, { id, provider: row.provider, status: 'revoked', revokedAt: now });
|
|
1805
|
+
},
|
|
1806
|
+
openConnection: async (tenantId, vertical, provider) => {
|
|
1807
|
+
const row = this.directory
|
|
1808
|
+
.prepare(`SELECT * FROM _substrat_connections
|
|
1809
|
+
WHERE tenant_id = ? AND vertical = ? AND provider = ? AND revoked_at IS NULL`)
|
|
1810
|
+
.get(tenantId, vertical, provider);
|
|
1811
|
+
if (!row)
|
|
1812
|
+
return undefined;
|
|
1813
|
+
const sealed = this.directory
|
|
1814
|
+
.prepare('SELECT key_id, ciphertext FROM _substrat_connection_secrets WHERE connection_id = ?')
|
|
1815
|
+
.get(row.id);
|
|
1816
|
+
if (!sealed)
|
|
1817
|
+
return undefined; // revoked mid-flight, or never sealed
|
|
1818
|
+
const secret = connectionSecret.parse(JSON.parse(await this.secretBox.open({ keyId: sealed.key_id, ciphertext: sealed.ciphertext })));
|
|
1819
|
+
return {
|
|
1820
|
+
id: row.id,
|
|
1821
|
+
tenantId: row.tenant_id,
|
|
1822
|
+
vertical: row.vertical,
|
|
1823
|
+
provider: row.provider,
|
|
1824
|
+
secret,
|
|
1825
|
+
expiresAt: row.expires_at,
|
|
1826
|
+
};
|
|
1827
|
+
},
|
|
1828
|
+
recordConnectionUse: async (id, outcome) => {
|
|
1829
|
+
const now = new Date().toISOString();
|
|
1830
|
+
if (outcome.ok) {
|
|
1831
|
+
this.directory
|
|
1832
|
+
.prepare(`UPDATE _substrat_connections
|
|
1833
|
+
SET last_ok_at = ?, last_error = NULL, last_error_at = NULL,
|
|
1834
|
+
status = CASE WHEN status = 'error' THEN 'active' ELSE status END
|
|
1835
|
+
WHERE id = ?`)
|
|
1836
|
+
.run(now, id);
|
|
1837
|
+
return;
|
|
1838
|
+
}
|
|
1839
|
+
this.directory
|
|
1840
|
+
.prepare(`UPDATE _substrat_connections
|
|
1841
|
+
SET last_error = ?, last_error_at = ?,
|
|
1842
|
+
status = CASE WHEN status = 'revoked' THEN status ELSE 'error' END
|
|
1843
|
+
WHERE id = ?`)
|
|
1844
|
+
.run(outcome.error.slice(0, 2000), now, id);
|
|
1845
|
+
},
|
|
1377
1846
|
linkIdentity: async (actor, input) => {
|
|
1378
1847
|
const parsed = identityLink.parse(input);
|
|
1379
1848
|
requirePoolServes(parsed.provider, parsed.tenantId);
|
|
@@ -1658,7 +2127,13 @@ export class SqliteScopeHost {
|
|
|
1658
2127
|
}
|
|
1659
2128
|
}
|
|
1660
2129
|
// -------------------------------------------------------------------------
|
|
1661
|
-
|
|
2130
|
+
/**
|
|
2131
|
+
* `subject` decides BOTH the permission check and the event actor, so the two
|
|
2132
|
+
* can never disagree about who acted (#97). `overrideActor` remains for the
|
|
2133
|
+
* system-actor path, where the acting module is the honest answer.
|
|
2134
|
+
*/
|
|
2135
|
+
operationContext(rt, subject, overrideActor) {
|
|
2136
|
+
const principal = subject.id;
|
|
1662
2137
|
const checker = this.checker;
|
|
1663
2138
|
const relations = this.relations;
|
|
1664
2139
|
return {
|
|
@@ -1674,7 +2149,8 @@ export class SqliteScopeHost {
|
|
|
1674
2149
|
occurredAt: instant.parse(new Date().toISOString()),
|
|
1675
2150
|
tenantId: rt.tenantId,
|
|
1676
2151
|
scopeId: rt.scopeId,
|
|
1677
|
-
actor:
|
|
2152
|
+
actor: overrideActor ??
|
|
2153
|
+
(subject.kind === 'connection' ? { connection: subject.id } : principal),
|
|
1678
2154
|
});
|
|
1679
2155
|
rt.db
|
|
1680
2156
|
.prepare(`INSERT INTO _substrat_outbox
|
|
@@ -1683,18 +2159,18 @@ export class SqliteScopeHost {
|
|
|
1683
2159
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
1684
2160
|
.run(full.id, full.type, full.schemaVersion, full.occurredAt, full.tenantId, full.scopeId, JSON.stringify(full.actor), full.entity.entityType, full.entity.entityId, full.piiClass, full.subjectId ?? null, full.payload === undefined ? null : JSON.stringify(full.payload));
|
|
1685
2161
|
},
|
|
1686
|
-
check: (permission, entity) =>
|
|
2162
|
+
check: (permission, entity) => overrideActor
|
|
1687
2163
|
? Promise.resolve({
|
|
1688
2164
|
allowed: true,
|
|
1689
2165
|
proof: [
|
|
1690
2166
|
{
|
|
1691
|
-
subject: objectRef.parse(`system:${
|
|
2167
|
+
subject: objectRef.parse(`system:${overrideActor.system.replace(/[^a-zA-Z0-9_.-]/g, '-')}`),
|
|
1692
2168
|
relation: `granted:${permission}`,
|
|
1693
2169
|
object: objectRef.parse(`scope:${rt.scopeId}`),
|
|
1694
2170
|
},
|
|
1695
2171
|
],
|
|
1696
2172
|
})
|
|
1697
|
-
: checker.check(
|
|
2173
|
+
: checker.check(subject, permission, { tenantId: rt.tenantId, scopeId: rt.scopeId }, entity),
|
|
1698
2174
|
link: (child, parent) => {
|
|
1699
2175
|
const allowed = relations.get(child.entityType);
|
|
1700
2176
|
if (!allowed?.has(parent.entityType)) {
|
|
@@ -1798,6 +2274,12 @@ export class SqliteScopeHost {
|
|
|
1798
2274
|
// KERNEL_DDL is all IF NOT EXISTS, so a scope DB created before K-21 keeps the
|
|
1799
2275
|
// old shape — ALTER the tombstone in.
|
|
1800
2276
|
this.ensureColumn(db, '_substrat_tuples', 'revoked_at', 'revoked_at TEXT');
|
|
2277
|
+
// Executor retry state (#100), same reasoning: scopes provisioned before it
|
|
2278
|
+
// already have the table. Defaults read as "terminal", which is exactly right
|
|
2279
|
+
// for the rows already there — every one of them is a completed delivery or a
|
|
2280
|
+
// consumer dead-letter.
|
|
2281
|
+
this.ensureColumn(db, '_substrat_deliveries', 'attempts', 'attempts INTEGER NOT NULL DEFAULT 0');
|
|
2282
|
+
this.ensureColumn(db, '_substrat_deliveries', 'next_attempt_at', 'next_attempt_at TEXT');
|
|
1801
2283
|
const appliedMigrations = new Set(db.prepare('SELECT module_id, version FROM _substrat_migrations').all().map((r) => `${r.module_id}@${r.version}`));
|
|
1802
2284
|
const created = { tenantId, scopeId, db, actor: new ScopeActor(), appliedMigrations };
|
|
1803
2285
|
this.scopes.set(key, created);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@substrat-run/adapter-sqlite",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Pure-SQLite scope host — real kernel semantics with no Cloudflare dependency (D-14): local dev, CI, self-host/escrow",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"repository": {
|
|
@@ -23,14 +23,14 @@
|
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"better-sqlite3": "^12.0.0",
|
|
26
|
-
"@substrat-run/kernel": "^0.
|
|
27
|
-
"@substrat-run/contracts": "^0.
|
|
26
|
+
"@substrat-run/kernel": "^0.10.0",
|
|
27
|
+
"@substrat-run/contracts": "^0.10.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/better-sqlite3": "^7.6.0",
|
|
31
31
|
"typescript": "^5.6.0",
|
|
32
32
|
"vitest": "^3.0.0",
|
|
33
|
-
"@substrat-run/contract-tests": "^0.
|
|
33
|
+
"@substrat-run/contract-tests": "^0.10.0"
|
|
34
34
|
},
|
|
35
35
|
"publishConfig": {
|
|
36
36
|
"access": "public"
|