@relaycast/engine 5.0.11 → 5.1.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/adapters/node/index.d.ts.map +1 -1
- package/dist/adapters/node/index.js +1 -0
- package/dist/adapters/node/index.js.map +1 -1
- package/dist/adapters/node/presence.d.ts +7 -0
- package/dist/adapters/node/presence.d.ts.map +1 -1
- package/dist/adapters/node/presence.js +14 -1
- package/dist/adapters/node/presence.js.map +1 -1
- package/dist/db/migrations/0027_workspace_event_log.sql +13 -0
- package/dist/db/schema.d.ts +126 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +22 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/engine/invocationCompletion.d.ts.map +1 -1
- package/dist/engine/invocationCompletion.js +3 -1
- package/dist/engine/invocationCompletion.js.map +1 -1
- package/dist/engine/observerToken.conflictDetection.test.d.ts +2 -0
- package/dist/engine/observerToken.conflictDetection.test.d.ts.map +1 -0
- package/dist/engine/observerToken.conflictDetection.test.js +106 -0
- package/dist/engine/observerToken.conflictDetection.test.js.map +1 -0
- package/dist/engine/observerToken.d.ts +45 -0
- package/dist/engine/observerToken.d.ts.map +1 -1
- package/dist/engine/observerToken.js +64 -7
- package/dist/engine/observerToken.js.map +1 -1
- package/dist/engine/retention.d.ts +5 -0
- package/dist/engine/retention.d.ts.map +1 -1
- package/dist/engine/retention.js +29 -2
- package/dist/engine/retention.js.map +1 -1
- package/dist/engine/workspaceEvents.d.ts +61 -0
- package/dist/engine/workspaceEvents.d.ts.map +1 -0
- package/dist/engine/workspaceEvents.js +108 -0
- package/dist/engine/workspaceEvents.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/routes/deliveryRouting.d.ts.map +1 -1
- package/dist/routes/deliveryRouting.js +2 -1
- package/dist/routes/deliveryRouting.js.map +1 -1
- package/dist/routes/fanout.d.ts.map +1 -1
- package/dist/routes/fanout.js +7 -9
- package/dist/routes/fanout.js.map +1 -1
- package/dist/routes/workspace.d.ts.map +1 -1
- package/dist/routes/workspace.js +96 -1
- package/dist/routes/workspace.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { isObserverTokenNameConflict } from './observerToken.js';
|
|
3
|
+
/**
|
|
4
|
+
* Regression coverage for the D1-vs-better-sqlite3 driver mismatch: a name-collision
|
|
5
|
+
* insert into `observer_tokens` must be recognized as a conflict (and converted to a
|
|
6
|
+
* clean 409) no matter which driver threw it, or which shape that driver used.
|
|
7
|
+
*
|
|
8
|
+
* The better-sqlite3 shape is exercised end-to-end (through the real HTTP route, against
|
|
9
|
+
* a real better-sqlite3-backed db) by
|
|
10
|
+
* `src/__tests__/conformance/observerToken.test.ts` — "returns a conflict for duplicate
|
|
11
|
+
* observer token names in one workspace". This file instead unit-tests the pure detection
|
|
12
|
+
* function directly against driver error shapes that can't be produced by the
|
|
13
|
+
* better-sqlite3 test harness at all, most importantly Cloudflare D1's, since we can't
|
|
14
|
+
* spin up a real D1 binding in this package's test suite.
|
|
15
|
+
*
|
|
16
|
+
* The D1 shape below (`.code === 'SQLITE_CONSTRAINT_UNIQUE'`, `.message` prefixed
|
|
17
|
+
* `D1_ERROR: UNIQUE constraint failed: ...`, and drizzle-orm's `.cause` wrapping) is not
|
|
18
|
+
* speculative — it mirrors the shape this engine already confirmed and handles in
|
|
19
|
+
* `engine/agent.ts`'s `isUniqueConstraintError` (added in PR #193 for the identical class
|
|
20
|
+
* of bug: a 409 unique-name conflict silently regressing to an uncaught 500 against D1).
|
|
21
|
+
*/
|
|
22
|
+
describe('isObserverTokenNameConflict', () => {
|
|
23
|
+
it('recognizes the better-sqlite3 shape (code + raw message)', () => {
|
|
24
|
+
expect(isObserverTokenNameConflict({
|
|
25
|
+
code: 'SQLITE_CONSTRAINT_UNIQUE',
|
|
26
|
+
message: 'UNIQUE constraint failed: observer_tokens.workspace_id, observer_tokens.name',
|
|
27
|
+
})).toBe(true);
|
|
28
|
+
});
|
|
29
|
+
it('recognizes the legacy better-sqlite3 code without SQLITE_CONSTRAINT_UNIQUE', () => {
|
|
30
|
+
expect(isObserverTokenNameConflict({
|
|
31
|
+
code: 'SQLITE_CONSTRAINT',
|
|
32
|
+
message: 'SQLITE_CONSTRAINT: UNIQUE constraint failed: observer_tokens.workspace_id, observer_tokens.name',
|
|
33
|
+
})).toBe(true);
|
|
34
|
+
});
|
|
35
|
+
it('recognizes the Cloudflare D1 shape (D1_ERROR-prefixed message, top level)', () => {
|
|
36
|
+
expect(isObserverTokenNameConflict({
|
|
37
|
+
code: 'SQLITE_CONSTRAINT_UNIQUE',
|
|
38
|
+
message: 'D1_ERROR: UNIQUE constraint failed: observer_tokens.workspace_id, observer_tokens.name: SQLITE_CONSTRAINT',
|
|
39
|
+
})).toBe(true);
|
|
40
|
+
});
|
|
41
|
+
it('recognizes D1 errors that drizzle-orm re-wraps under .cause', () => {
|
|
42
|
+
const d1Error = {
|
|
43
|
+
code: 'SQLITE_CONSTRAINT_UNIQUE',
|
|
44
|
+
message: 'D1_ERROR: UNIQUE constraint failed: observer_tokens.workspace_id, observer_tokens.name: SQLITE_CONSTRAINT',
|
|
45
|
+
};
|
|
46
|
+
const wrapped = {
|
|
47
|
+
message: 'Failed query: insert into "observer_tokens" ...',
|
|
48
|
+
cause: d1Error,
|
|
49
|
+
};
|
|
50
|
+
expect(isObserverTokenNameConflict(wrapped)).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
it('recognizes a generic case-insensitive "unique constraint" message with no recognizable code', () => {
|
|
53
|
+
expect(isObserverTokenNameConflict({
|
|
54
|
+
message: 'Unique Constraint Failed on observer_tokens',
|
|
55
|
+
})).toBe(true);
|
|
56
|
+
});
|
|
57
|
+
it('does not falsely match unrelated errors', () => {
|
|
58
|
+
expect(isObserverTokenNameConflict({ code: 'SQLITE_BUSY', message: 'database is locked' })).toBe(false);
|
|
59
|
+
expect(isObserverTokenNameConflict(new Error('workspace not found'))).toBe(false);
|
|
60
|
+
expect(isObserverTokenNameConflict({ message: 'Failed query', cause: { message: 'connection reset' } })).toBe(false);
|
|
61
|
+
});
|
|
62
|
+
it('does not recurse infinitely or throw on a self-referential .cause', () => {
|
|
63
|
+
const circular = { message: 'wrapped' };
|
|
64
|
+
circular.cause = circular;
|
|
65
|
+
expect(() => isObserverTokenNameConflict(circular)).not.toThrow();
|
|
66
|
+
expect(isObserverTokenNameConflict(circular)).toBe(false);
|
|
67
|
+
});
|
|
68
|
+
it('does not stack-overflow on a multi-step .cause cycle (A -> B -> A)', () => {
|
|
69
|
+
const a = { message: 'A' };
|
|
70
|
+
const b = { message: 'B' };
|
|
71
|
+
a.cause = b;
|
|
72
|
+
b.cause = a;
|
|
73
|
+
expect(() => isObserverTokenNameConflict(a)).not.toThrow();
|
|
74
|
+
// Neither message mentions a unique-constraint violation anywhere in the cycle, so
|
|
75
|
+
// walking the whole chain (without looping forever) must still land on `false` —
|
|
76
|
+
// not merely terminate.
|
|
77
|
+
expect(isObserverTokenNameConflict(a)).toBe(false);
|
|
78
|
+
expect(isObserverTokenNameConflict(b)).toBe(false);
|
|
79
|
+
});
|
|
80
|
+
it('still finds a real conflict when it precedes a multi-step .cause cycle', () => {
|
|
81
|
+
const tail = { message: 'tail' };
|
|
82
|
+
const conflict = {
|
|
83
|
+
code: 'SQLITE_CONSTRAINT_UNIQUE',
|
|
84
|
+
message: 'UNIQUE constraint failed: observer_tokens.workspace_id, observer_tokens.name',
|
|
85
|
+
cause: tail,
|
|
86
|
+
};
|
|
87
|
+
tail.cause = conflict;
|
|
88
|
+
expect(isObserverTokenNameConflict(conflict)).toBe(true);
|
|
89
|
+
});
|
|
90
|
+
it('does not misreport a non-unique constraint violation carrying the bare SQLITE_CONSTRAINT code', () => {
|
|
91
|
+
expect(isObserverTokenNameConflict({
|
|
92
|
+
code: 'SQLITE_CONSTRAINT',
|
|
93
|
+
message: 'FOREIGN KEY constraint failed',
|
|
94
|
+
})).toBe(false);
|
|
95
|
+
expect(isObserverTokenNameConflict({
|
|
96
|
+
code: 'SQLITE_CONSTRAINT',
|
|
97
|
+
message: 'NOT NULL constraint failed: observer_tokens.workspace_id',
|
|
98
|
+
})).toBe(false);
|
|
99
|
+
});
|
|
100
|
+
it('handles non-object and null inputs safely', () => {
|
|
101
|
+
expect(isObserverTokenNameConflict(null)).toBe(false);
|
|
102
|
+
expect(isObserverTokenNameConflict(undefined)).toBe(false);
|
|
103
|
+
expect(isObserverTokenNameConflict('some string error')).toBe(false);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
//# sourceMappingURL=observerToken.conflictDetection.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observerToken.conflictDetection.test.js","sourceRoot":"","sources":["../../src/engine/observerToken.conflictDetection.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,51 @@ export interface UpdateObserverTokenInput {
|
|
|
37
37
|
expires_at?: string | null;
|
|
38
38
|
}
|
|
39
39
|
export declare function normalizeObserverFilters(filters?: ObserverTokenFilters | null): ObserverTokenFilters;
|
|
40
|
+
/**
|
|
41
|
+
* Recognize a unique-constraint violation on the `observer_tokens` table (either the
|
|
42
|
+
* `observer_tokens_workspace_name_unique` index on (workspace_id, name), or the
|
|
43
|
+
* `observer_tokens_token_hash_unique` index) regardless of the underlying SQLite driver.
|
|
44
|
+
*
|
|
45
|
+
* Self-hosted engine deployments run on `better-sqlite3`, whose errors carry
|
|
46
|
+
* `.code === 'SQLITE_CONSTRAINT'` / `'SQLITE_CONSTRAINT_UNIQUE'` and a `.message` like
|
|
47
|
+
* `UNIQUE constraint failed: observer_tokens.workspace_id, observer_tokens.name`.
|
|
48
|
+
*
|
|
49
|
+
* The hosted engine (relaycast-cloud) runs on Cloudflare D1 via `drizzle-orm/d1`. D1
|
|
50
|
+
* throws the same `.code` values, but its `.message` is prefixed
|
|
51
|
+
* `D1_ERROR: UNIQUE constraint failed: ...`, and drizzle-orm may additionally re-wrap the
|
|
52
|
+
* original driver error underneath `.cause` instead of surfacing it at the top level. This
|
|
53
|
+
* is confirmed by this engine's own `engine/agent.ts` `isUniqueConstraintError`, added in
|
|
54
|
+
* PR #193 after the exact same class of bug: clean 409 "already exists" handling silently
|
|
55
|
+
* regressing to an uncaught 500 against D1 because the detection only matched
|
|
56
|
+
* better-sqlite3's shape.
|
|
57
|
+
*
|
|
58
|
+
* This walks the `.cause` chain and falls back to a broad, case-insensitive "unique
|
|
59
|
+
* constraint" message match — not just the exact index/column substrings — so a future
|
|
60
|
+
* shift in a driver's error format doesn't silently reopen this bug again. The walk is
|
|
61
|
+
* iterative (not recursive) and tracks every error object visited so far in a `WeakSet`,
|
|
62
|
+
* breaking on *any* revisit rather than only a direct `cause === self` self-reference —
|
|
63
|
+
* a multi-step cycle (`A -> B -> A`) would bypass a direct-reference-only guard and blow
|
|
64
|
+
* the call stack, turning the very check meant to prevent a 500 into one itself.
|
|
65
|
+
*
|
|
66
|
+
* `candidate.code === 'SQLITE_CONSTRAINT'` alone (the bare, non-extended SQLite result
|
|
67
|
+
* code, as opposed to `'SQLITE_CONSTRAINT_UNIQUE'`) is only treated as a match when the
|
|
68
|
+
* message also mentions "unique" — otherwise an unrelated constraint violation on this
|
|
69
|
+
* insert (e.g. a `FOREIGN KEY`/`NOT NULL` failure on `workspace_id`) could be misreported
|
|
70
|
+
* as a name conflict. In practice better-sqlite3 always throws the extended
|
|
71
|
+
* `SQLITE_CONSTRAINT_UNIQUE`/`_FOREIGNKEY`/`_NOTNULL`/`_CHECK` codes (verified locally
|
|
72
|
+
* against the installed better-sqlite3 version — FK, NOT NULL, and CHECK violations each
|
|
73
|
+
* throw their own distinct extended code, never the bare `SQLITE_CONSTRAINT`), and the D1
|
|
74
|
+
* shape confirmed via `engine/agent.ts` also uses the extended `_UNIQUE` code, so the bare
|
|
75
|
+
* code is not known to occur for any of these in the drivers this engine actually runs on
|
|
76
|
+
* today — this check is a defense-in-depth guard, not a fix for an observed false positive.
|
|
77
|
+
*
|
|
78
|
+
* The `observer_tokens` table does have a second unique index (`token_hash`), but a
|
|
79
|
+
* token-hash collision is a collision of a random 192-bit hex token's SHA-256 —
|
|
80
|
+
* astronomically unlikely — so treating any *unique*-constraint violation from this insert
|
|
81
|
+
* as a name conflict (as opposed to disambiguating which of the two unique indexes fired)
|
|
82
|
+
* is an acceptable, deliberately-broad trade-off against risking a silent 500.
|
|
83
|
+
*/
|
|
84
|
+
export declare function isObserverTokenNameConflict(err: unknown): boolean;
|
|
40
85
|
export declare function createObserverToken(db: Db, workspaceId: string, input: CreateObserverTokenInput): Promise<PublicObserverToken>;
|
|
41
86
|
export declare function listObserverTokens(db: Db, workspaceId: string): Promise<PublicObserverToken[]>;
|
|
42
87
|
export declare function getObserverToken(db: Db, workspaceId: string, id: string): Promise<PublicObserverToken | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observerToken.d.ts","sourceRoot":"","sources":["../../src/engine/observerToken.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAA8E,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7H,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAK5D,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AACnC,MAAM,MAAM,aAAa,GAAG,OAAO,cAAc,CAAC,YAAY,CAAC;AAG/D,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,MAAM,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAEhD,eAAO,MAAM,kBAAkB,aAAmC,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAcD,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI,GAAG,oBAAoB,CAUpG;
|
|
1
|
+
{"version":3,"file":"observerToken.d.ts","sourceRoot":"","sources":["../../src/engine/observerToken.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,13 +61,70 @@ function publicObserverToken(row, token) {
|
|
|
61
61
|
...(token ? { token } : {}),
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Recognize a unique-constraint violation on the `observer_tokens` table (either the
|
|
66
|
+
* `observer_tokens_workspace_name_unique` index on (workspace_id, name), or the
|
|
67
|
+
* `observer_tokens_token_hash_unique` index) regardless of the underlying SQLite driver.
|
|
68
|
+
*
|
|
69
|
+
* Self-hosted engine deployments run on `better-sqlite3`, whose errors carry
|
|
70
|
+
* `.code === 'SQLITE_CONSTRAINT'` / `'SQLITE_CONSTRAINT_UNIQUE'` and a `.message` like
|
|
71
|
+
* `UNIQUE constraint failed: observer_tokens.workspace_id, observer_tokens.name`.
|
|
72
|
+
*
|
|
73
|
+
* The hosted engine (relaycast-cloud) runs on Cloudflare D1 via `drizzle-orm/d1`. D1
|
|
74
|
+
* throws the same `.code` values, but its `.message` is prefixed
|
|
75
|
+
* `D1_ERROR: UNIQUE constraint failed: ...`, and drizzle-orm may additionally re-wrap the
|
|
76
|
+
* original driver error underneath `.cause` instead of surfacing it at the top level. This
|
|
77
|
+
* is confirmed by this engine's own `engine/agent.ts` `isUniqueConstraintError`, added in
|
|
78
|
+
* PR #193 after the exact same class of bug: clean 409 "already exists" handling silently
|
|
79
|
+
* regressing to an uncaught 500 against D1 because the detection only matched
|
|
80
|
+
* better-sqlite3's shape.
|
|
81
|
+
*
|
|
82
|
+
* This walks the `.cause` chain and falls back to a broad, case-insensitive "unique
|
|
83
|
+
* constraint" message match — not just the exact index/column substrings — so a future
|
|
84
|
+
* shift in a driver's error format doesn't silently reopen this bug again. The walk is
|
|
85
|
+
* iterative (not recursive) and tracks every error object visited so far in a `WeakSet`,
|
|
86
|
+
* breaking on *any* revisit rather than only a direct `cause === self` self-reference —
|
|
87
|
+
* a multi-step cycle (`A -> B -> A`) would bypass a direct-reference-only guard and blow
|
|
88
|
+
* the call stack, turning the very check meant to prevent a 500 into one itself.
|
|
89
|
+
*
|
|
90
|
+
* `candidate.code === 'SQLITE_CONSTRAINT'` alone (the bare, non-extended SQLite result
|
|
91
|
+
* code, as opposed to `'SQLITE_CONSTRAINT_UNIQUE'`) is only treated as a match when the
|
|
92
|
+
* message also mentions "unique" — otherwise an unrelated constraint violation on this
|
|
93
|
+
* insert (e.g. a `FOREIGN KEY`/`NOT NULL` failure on `workspace_id`) could be misreported
|
|
94
|
+
* as a name conflict. In practice better-sqlite3 always throws the extended
|
|
95
|
+
* `SQLITE_CONSTRAINT_UNIQUE`/`_FOREIGNKEY`/`_NOTNULL`/`_CHECK` codes (verified locally
|
|
96
|
+
* against the installed better-sqlite3 version — FK, NOT NULL, and CHECK violations each
|
|
97
|
+
* throw their own distinct extended code, never the bare `SQLITE_CONSTRAINT`), and the D1
|
|
98
|
+
* shape confirmed via `engine/agent.ts` also uses the extended `_UNIQUE` code, so the bare
|
|
99
|
+
* code is not known to occur for any of these in the drivers this engine actually runs on
|
|
100
|
+
* today — this check is a defense-in-depth guard, not a fix for an observed false positive.
|
|
101
|
+
*
|
|
102
|
+
* The `observer_tokens` table does have a second unique index (`token_hash`), but a
|
|
103
|
+
* token-hash collision is a collision of a random 192-bit hex token's SHA-256 —
|
|
104
|
+
* astronomically unlikely — so treating any *unique*-constraint violation from this insert
|
|
105
|
+
* as a name conflict (as opposed to disambiguating which of the two unique indexes fired)
|
|
106
|
+
* is an acceptable, deliberately-broad trade-off against risking a silent 500.
|
|
107
|
+
*/
|
|
108
|
+
export function isObserverTokenNameConflict(err) {
|
|
109
|
+
const visited = new WeakSet();
|
|
110
|
+
let current = err;
|
|
111
|
+
while (current && typeof current === 'object') {
|
|
112
|
+
if (visited.has(current))
|
|
113
|
+
return false;
|
|
114
|
+
visited.add(current);
|
|
115
|
+
const candidate = current;
|
|
116
|
+
const message = candidate.message ?? '';
|
|
117
|
+
const lowerMessage = message.toLowerCase();
|
|
118
|
+
const isNameIndexMessage = (message.includes('observer_tokens_workspace_name_unique')
|
|
119
|
+
|| message.includes('observer_tokens.workspace_id, observer_tokens.name'));
|
|
120
|
+
const isGenericUniqueViolation = (candidate.code === 'SQLITE_CONSTRAINT_UNIQUE'
|
|
121
|
+
|| lowerMessage.includes('unique constraint failed')
|
|
122
|
+
|| (candidate.code === 'SQLITE_CONSTRAINT' && lowerMessage.includes('unique')));
|
|
123
|
+
if (isNameIndexMessage || isGenericUniqueViolation)
|
|
124
|
+
return true;
|
|
125
|
+
current = candidate.cause;
|
|
126
|
+
}
|
|
127
|
+
return false;
|
|
71
128
|
}
|
|
72
129
|
function observerTokenNameConflict() {
|
|
73
130
|
throw codedError('Observer token name already exists in this workspace', 'observer_token_name_conflict', 409);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observerToken.js","sourceRoot":"","sources":["../../src/engine/observerToken.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"observerToken.js","sourceRoot":"","sources":["../../src/engine/observerToken.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@ type Db = ReturnType<typeof getDb>;
|
|
|
4
4
|
export declare const DEFAULT_DELIVERY_TTL_DAYS = 90;
|
|
5
5
|
/** Message logs are operational telemetry (duplicate bodies), pruned after 90 days by default. */
|
|
6
6
|
export declare const DEFAULT_MESSAGE_LOG_TTL_DAYS = 90;
|
|
7
|
+
/** Workspace event log rows are a reconciliation window, pruned after 30 days by default. */
|
|
8
|
+
export declare const DEFAULT_WORKSPACE_EVENT_TTL_DAYS = 30;
|
|
7
9
|
/**
|
|
8
10
|
* Deployment-wide TTL fallbacks, applied to workspaces without their own
|
|
9
11
|
* `workspaces.retention` settings. `null` disables pruning for that table.
|
|
@@ -15,6 +17,8 @@ export interface RetentionDefaults {
|
|
|
15
17
|
deliveryTtlDays?: number | null;
|
|
16
18
|
/** Default {@link DEFAULT_MESSAGE_LOG_TTL_DAYS}. */
|
|
17
19
|
messageLogTtlDays?: number | null;
|
|
20
|
+
/** Default {@link DEFAULT_WORKSPACE_EVENT_TTL_DAYS}. */
|
|
21
|
+
workspaceEventTtlDays?: number | null;
|
|
18
22
|
}
|
|
19
23
|
export interface PruneOptions {
|
|
20
24
|
/** Max rows deleted per table per batch (the SQL LIMIT). Default 200. */
|
|
@@ -32,6 +36,7 @@ export interface PruneResult {
|
|
|
32
36
|
deliveries: number;
|
|
33
37
|
messageLogs: number;
|
|
34
38
|
readReceipts: number;
|
|
39
|
+
workspaceEvents: number;
|
|
35
40
|
}
|
|
36
41
|
/**
|
|
37
42
|
* Delete expired rows in bounded batches.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../src/engine/retention.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../src/engine/retention.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAY5C,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AAInC,yFAAyF;AACzF,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,kGAAkG;AAClG,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,6FAA6F;AAC7F,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAenD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,wDAAwD;IACxD,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,oEAAoE;IACpE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,4DAA4D;AAC5D,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAyKxF"}
|
package/dist/engine/retention.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { and, eq, inArray, isNotNull, isNull, lt, notInArray, sql } from 'drizzle-orm';
|
|
2
|
-
import { deliveries, messageLogs, messages, readReceipts, workspaces, } from '../db/schema.js';
|
|
2
|
+
import { deliveries, messageLogs, messages, readReceipts, workspaceEvents, workspaces, } from '../db/schema.js';
|
|
3
3
|
import { snowflakeIdLowerBound } from './snowflake.js';
|
|
4
4
|
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
5
5
|
/** Settled deliveries are operational tracking rows, pruned after 90 days by default. */
|
|
6
6
|
export const DEFAULT_DELIVERY_TTL_DAYS = 90;
|
|
7
7
|
/** Message logs are operational telemetry (duplicate bodies), pruned after 90 days by default. */
|
|
8
8
|
export const DEFAULT_MESSAGE_LOG_TTL_DAYS = 90;
|
|
9
|
+
/** Workspace event log rows are a reconciliation window, pruned after 30 days by default. */
|
|
10
|
+
export const DEFAULT_WORKSPACE_EVENT_TTL_DAYS = 30;
|
|
9
11
|
const DEFAULT_BATCH_LIMIT = 200;
|
|
10
12
|
const DEFAULT_MAX_BATCHES = 5;
|
|
11
13
|
/**
|
|
@@ -69,6 +71,9 @@ export async function pruneExpired(db, opts = {}) {
|
|
|
69
71
|
messageLogTtlDays: opts.defaults?.messageLogTtlDays !== undefined
|
|
70
72
|
? opts.defaults.messageLogTtlDays
|
|
71
73
|
: DEFAULT_MESSAGE_LOG_TTL_DAYS,
|
|
74
|
+
workspaceEventTtlDays: opts.defaults?.workspaceEventTtlDays !== undefined
|
|
75
|
+
? opts.defaults.workspaceEventTtlDays
|
|
76
|
+
: DEFAULT_WORKSPACE_EVENT_TTL_DAYS,
|
|
72
77
|
};
|
|
73
78
|
// Workspaces with explicit settings get their own pass; everyone else is
|
|
74
79
|
// covered by one unscoped pass per table using the deployment default.
|
|
@@ -108,7 +113,7 @@ export async function pruneExpired(db, opts = {}) {
|
|
|
108
113
|
}
|
|
109
114
|
return total;
|
|
110
115
|
}
|
|
111
|
-
const result = { messages: 0, deliveries: 0, messageLogs: 0, readReceipts: 0 };
|
|
116
|
+
const result = { messages: 0, deliveries: 0, messageLogs: 0, readReceipts: 0, workspaceEvents: 0 };
|
|
112
117
|
// Messages — leaf-first so the self-referencing thread FK never breaks.
|
|
113
118
|
for (const pass of passes(defaults.messageTtlDays, (s) => s.message_ttl_days, messages.workspaceId)) {
|
|
114
119
|
result.messages += await drain(async () => {
|
|
@@ -154,6 +159,28 @@ export async function pruneExpired(db, opts = {}) {
|
|
|
154
159
|
return deleted.length;
|
|
155
160
|
});
|
|
156
161
|
}
|
|
162
|
+
// Workspace event log (durable observer plane; composite PK, batched via rowid).
|
|
163
|
+
// Each workspace's highest-seq row is always retained as the seq high-water
|
|
164
|
+
// mark: seq is assigned as MAX(seq)+1, so pruning a workspace to zero rows
|
|
165
|
+
// would reset the sequence and strand every persisted observer cursor (and
|
|
166
|
+
// confuse live-frame dedupe). One stale row per workspace is the cheap price.
|
|
167
|
+
for (const pass of passes(defaults.workspaceEventTtlDays, (s) => s.workspace_event_ttl_days, workspaceEvents.workspaceId)) {
|
|
168
|
+
result.workspaceEvents += await drain(async () => {
|
|
169
|
+
const batch = db
|
|
170
|
+
.select({ rowid: sql `rowid` })
|
|
171
|
+
.from(workspaceEvents)
|
|
172
|
+
.where(and(lt(workspaceEvents.createdAt, pass.cutoff), pass.scope, sql `${workspaceEvents.seq} < (
|
|
173
|
+
SELECT MAX(hw.seq) FROM workspace_events hw
|
|
174
|
+
WHERE hw.workspace_id = ${workspaceEvents.workspaceId}
|
|
175
|
+
)`))
|
|
176
|
+
.limit(batchLimit);
|
|
177
|
+
const deleted = await db
|
|
178
|
+
.delete(workspaceEvents)
|
|
179
|
+
.where(inArray(sql `rowid`, batch))
|
|
180
|
+
.returning({ seq: workspaceEvents.seq });
|
|
181
|
+
return deleted.length;
|
|
182
|
+
});
|
|
183
|
+
}
|
|
157
184
|
// Orphaned read receipts (referential garbage, always swept).
|
|
158
185
|
result.readReceipts += await drain(async () => {
|
|
159
186
|
const orphaned = db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention.js","sourceRoot":"","sources":["../../src/engine/retention.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAY,MAAM,aAAa,CAAC;AAGjG,OAAO,EACL,UAAU,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,UAAU,GAEX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAIvD,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,yFAAyF;AACzF,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAC5C,kGAAkG;AAClG,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"retention.js","sourceRoot":"","sources":["../../src/engine/retention.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { EngineDb } from '../ports/database.js';
|
|
2
|
+
/** Default page size for {@link listWorkspaceEvents}. */
|
|
3
|
+
export declare const WORKSPACE_EVENT_LIST_DEFAULT_LIMIT = 200;
|
|
4
|
+
/** Max page size for {@link listWorkspaceEvents}. */
|
|
5
|
+
export declare const WORKSPACE_EVENT_LIST_MAX_LIMIT = 500;
|
|
6
|
+
export interface WorkspaceEventInput {
|
|
7
|
+
type: string;
|
|
8
|
+
channelId?: string | null;
|
|
9
|
+
/** The exact `transformForClient(event)` frame published to the workspace stream (without `seq`). */
|
|
10
|
+
payload: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export interface WorkspaceEventRecord {
|
|
13
|
+
seq: number;
|
|
14
|
+
type: string;
|
|
15
|
+
channel_id: string | null;
|
|
16
|
+
payload: Record<string, unknown>;
|
|
17
|
+
created_at: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Append one event to the durable workspace event log. `seq` is per-workspace
|
|
21
|
+
* monotonic from 1, assigned inside the INSERT itself (same pattern as the
|
|
22
|
+
* deliveries mailbox `nextSeqSql`).
|
|
23
|
+
*
|
|
24
|
+
* Best-effort by contract: on any failure this logs a warning and returns
|
|
25
|
+
* `null` — callers still publish to the live stream and must never fail the
|
|
26
|
+
* request because the log append did.
|
|
27
|
+
*
|
|
28
|
+
* @returns The assigned seq, or `null` when the append failed.
|
|
29
|
+
*/
|
|
30
|
+
export declare function appendWorkspaceEvent(db: EngineDb, workspaceId: string, input: WorkspaceEventInput): Promise<number | null>;
|
|
31
|
+
/**
|
|
32
|
+
* List workspace events with `seq > since`, ordered by seq ascending.
|
|
33
|
+
* `latestSeq` is `MAX(seq)` for the workspace (0 when the log is empty), so
|
|
34
|
+
* clients can tell whether they are caught up.
|
|
35
|
+
*/
|
|
36
|
+
export declare function listWorkspaceEvents(db: EngineDb, workspaceId: string, opts?: {
|
|
37
|
+
since?: number;
|
|
38
|
+
limit?: number;
|
|
39
|
+
}): Promise<{
|
|
40
|
+
events: WorkspaceEventRecord[];
|
|
41
|
+
latestSeq: number;
|
|
42
|
+
}>;
|
|
43
|
+
interface WorkspaceStreamPublisher {
|
|
44
|
+
publishToWorkspaceStream(args: {
|
|
45
|
+
workspaceId: string;
|
|
46
|
+
event: Record<string, unknown>;
|
|
47
|
+
}): Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Shared "append + stamp + publish" path used by every workspace stream call
|
|
51
|
+
* site: append the frame to the durable log first, stamp the assigned seq onto
|
|
52
|
+
* the published frame as a top-level `seq` field, then publish. Both steps are
|
|
53
|
+
* best-effort — an append failure publishes the unstamped frame, and a publish
|
|
54
|
+
* failure is reported via `onPublishError` rather than thrown.
|
|
55
|
+
*/
|
|
56
|
+
export declare function appendAndPublishWorkspaceEvent(deps: {
|
|
57
|
+
db: EngineDb;
|
|
58
|
+
realtime: WorkspaceStreamPublisher;
|
|
59
|
+
}, workspaceId: string, input: WorkspaceEventInput, onPublishError?: (err: unknown) => void): Promise<void>;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=workspaceEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceEvents.d.ts","sourceRoot":"","sources":["../../src/engine/workspaceEvents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,yDAAyD;AACzD,eAAO,MAAM,kCAAkC,MAAM,CAAC;AACtD,qDAAqD;AACrD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,qGAAqG;IACrG,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB;AAUD;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBxB;AAcD;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5C,OAAO,CAAC;IAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA8BhE;AAED,UAAU,wBAAwB;IAChC,wBAAwB,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxG;AAED;;;;;;GAMG;AACH,wBAAsB,8BAA8B,CAClD,IAAI,EAAE;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAA;CAAE,EAC1D,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,mBAAmB,EAC1B,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GACtC,OAAO,CAAC,IAAI,CAAC,CAQf"}
|