@relaycast/engine 12.0.0 → 12.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 +18 -0
- package/dist/adapters/node/presence.d.ts.map +1 -1
- package/dist/adapters/node/presence.js +82 -0
- package/dist/adapters/node/presence.js.map +1 -1
- package/dist/adapters/node/realtime.d.ts +4 -0
- package/dist/adapters/node/realtime.d.ts.map +1 -1
- package/dist/adapters/node/realtime.js +32 -5
- package/dist/adapters/node/realtime.js.map +1 -1
- package/dist/db/schema.d.ts +2 -2
- package/dist/engine/a2a.d.ts +3 -0
- package/dist/engine/a2a.d.ts.map +1 -1
- package/dist/engine/a2a.js +1 -0
- package/dist/engine/a2a.js.map +1 -1
- package/dist/engine/action.d.ts +14 -9
- package/dist/engine/action.d.ts.map +1 -1
- package/dist/engine/action.js +335 -74
- package/dist/engine/action.js.map +1 -1
- package/dist/engine/agent.d.ts +9 -3
- package/dist/engine/agent.d.ts.map +1 -1
- package/dist/engine/agent.js +21 -3
- package/dist/engine/agent.js.map +1 -1
- package/dist/engine/delivery.d.ts.map +1 -1
- package/dist/engine/delivery.js +4 -0
- package/dist/engine/delivery.js.map +1 -1
- package/dist/engine/eventDelivery.d.ts +1 -1
- package/dist/engine/inboundWebhook.d.ts.map +1 -1
- package/dist/engine/inboundWebhook.js +12 -3
- package/dist/engine/inboundWebhook.js.map +1 -1
- package/dist/engine/inbox.d.ts.map +1 -1
- package/dist/engine/inbox.js +17 -0
- package/dist/engine/inbox.js.map +1 -1
- package/dist/engine/invocationClaim.d.ts +32 -0
- package/dist/engine/invocationClaim.d.ts.map +1 -0
- package/dist/engine/invocationClaim.js +42 -0
- package/dist/engine/invocationClaim.js.map +1 -0
- package/dist/engine/messageMetadata.d.ts +2 -0
- package/dist/engine/messageMetadata.d.ts.map +1 -1
- package/dist/engine/messageMetadata.js +3 -2
- package/dist/engine/messageMetadata.js.map +1 -1
- package/dist/engine/node.d.ts +12 -2
- package/dist/engine/node.d.ts.map +1 -1
- package/dist/engine/node.js +83 -4
- package/dist/engine/node.js.map +1 -1
- package/dist/engine/presence.d.ts +173 -1
- package/dist/engine/presence.d.ts.map +1 -1
- package/dist/engine/presence.js +81 -4
- package/dist/engine/presence.js.map +1 -1
- package/dist/engine/registrationAdmission.d.ts +40 -0
- package/dist/engine/registrationAdmission.d.ts.map +1 -0
- package/dist/engine/registrationAdmission.js +78 -0
- package/dist/engine/registrationAdmission.js.map +1 -0
- package/dist/engine/taskInvocation.d.ts +1 -1
- package/dist/engine/workspace.d.ts +26 -1
- package/dist/engine/workspace.d.ts.map +1 -1
- package/dist/engine/workspace.js +108 -7
- package/dist/engine/workspace.js.map +1 -1
- package/dist/engine/workspaceDrain.d.ts +38 -0
- package/dist/engine/workspaceDrain.d.ts.map +1 -0
- package/dist/engine/workspaceDrain.js +202 -0
- package/dist/engine/workspaceDrain.js.map +1 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +28 -0
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/engineDiagnostics.d.ts +26 -0
- package/dist/lib/engineDiagnostics.d.ts.map +1 -0
- package/dist/lib/engineDiagnostics.js +100 -0
- package/dist/lib/engineDiagnostics.js.map +1 -0
- package/dist/lib/httpError.d.ts.map +1 -1
- package/dist/lib/httpError.js +5 -1
- package/dist/lib/httpError.js.map +1 -1
- package/dist/middleware/admission.d.ts +7 -0
- package/dist/middleware/admission.d.ts.map +1 -1
- package/dist/middleware/admission.js +19 -1
- package/dist/middleware/admission.js.map +1 -1
- package/dist/middleware/rateLimit.d.ts.map +1 -1
- package/dist/middleware/rateLimit.js +8 -1
- package/dist/middleware/rateLimit.js.map +1 -1
- package/dist/ports/admission.d.ts +24 -3
- package/dist/ports/admission.d.ts.map +1 -1
- package/dist/ports/diagnostics.d.ts +42 -0
- package/dist/ports/diagnostics.d.ts.map +1 -0
- package/dist/ports/diagnostics.js +13 -0
- package/dist/ports/diagnostics.js.map +1 -0
- package/dist/ports/index.d.ts +9 -1
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js.map +1 -1
- package/dist/ports/presence.d.ts +14 -0
- package/dist/ports/presence.d.ts.map +1 -1
- package/dist/ports/realtime.d.ts +18 -0
- package/dist/ports/realtime.d.ts.map +1 -1
- package/dist/ports/realtime.js.map +1 -1
- package/dist/routes/a2a.d.ts.map +1 -1
- package/dist/routes/a2a.js +2 -0
- package/dist/routes/a2a.js.map +1 -1
- package/dist/routes/action.js +3 -0
- package/dist/routes/action.js.map +1 -1
- package/dist/routes/agent.d.ts.map +1 -1
- package/dist/routes/agent.js +5 -1
- package/dist/routes/agent.js.map +1 -1
- package/dist/routes/node.d.ts.map +1 -1
- package/dist/routes/node.js +2 -1
- package/dist/routes/node.js.map +1 -1
- package/dist/routes/workspace.js +10 -2
- package/dist/routes/workspace.js.map +1 -1
- package/package.json +3 -3
package/dist/engine/workspace.js
CHANGED
|
@@ -7,6 +7,8 @@ import { codedError } from '../lib/httpError.js';
|
|
|
7
7
|
import { D1WriteRetryExhaustedError, retryD1Write } from '../lib/d1Retry.js';
|
|
8
8
|
import { runAtomicWrites } from '../ports/database.js';
|
|
9
9
|
import { resolveEffectiveMessageRetention } from './retention.js';
|
|
10
|
+
import { reportEngineProgress, withEngineOperation } from '../lib/engineDiagnostics.js';
|
|
11
|
+
import { drainWorkspaceRows, exceedsAtomicDeleteSize, WORKSPACE_DRAIN_MAX_DURATION_MS, } from './workspaceDrain.js';
|
|
10
12
|
export const DEFAULT_WORKSPACE_REAP_LIMIT = 25;
|
|
11
13
|
export const DEFAULT_FILE_CLEANUP_LIMIT = 90;
|
|
12
14
|
const MAX_FILE_CLEANUP_LIMIT = 90;
|
|
@@ -456,12 +458,20 @@ export async function updateWorkspace(db, workspaceId, updates, deploymentMessag
|
|
|
456
458
|
return null;
|
|
457
459
|
return getWorkspace(db, updated.id, deploymentMessageTtlDays);
|
|
458
460
|
}
|
|
459
|
-
|
|
460
|
-
if (workspaceIds.length === 0)
|
|
461
|
-
return [];
|
|
461
|
+
function requireDeletableStorage(storage) {
|
|
462
462
|
if (typeof storage.deleteObjects !== 'function') {
|
|
463
463
|
throw codedError('The configured file storage cannot delete workspace objects', 'file_storage_delete_unsupported', 503);
|
|
464
464
|
}
|
|
465
|
+
}
|
|
466
|
+
async function deleteWorkspaceBatch(db, storage, workspaceIds) {
|
|
467
|
+
if (workspaceIds.length === 0)
|
|
468
|
+
return [];
|
|
469
|
+
return withEngineOperation('workspace.delete', workspaceIds.length === 1 ? workspaceIds[0] : undefined, () => deleteWorkspaceBatchUnlabeled(db, storage, workspaceIds));
|
|
470
|
+
}
|
|
471
|
+
async function deleteWorkspaceBatchUnlabeled(db, storage, workspaceIds) {
|
|
472
|
+
if (workspaceIds.length === 0)
|
|
473
|
+
return [];
|
|
474
|
+
requireDeletableStorage(storage);
|
|
465
475
|
// Deleting the workspace cascades its file rows. Migration 0037's file
|
|
466
476
|
// trigger writes each storage key to the durable cleanup outbox in this same
|
|
467
477
|
// transaction, so database rollback can never strand retained rows whose
|
|
@@ -635,8 +645,65 @@ export async function drainFileCleanup(db, storage, options = {}) {
|
|
|
635
645
|
.limit(limit);
|
|
636
646
|
return (await deleteCleanupRows(db, storage, rows, now)).settled;
|
|
637
647
|
}
|
|
638
|
-
|
|
639
|
-
|
|
648
|
+
/**
|
|
649
|
+
* Delete a workspace.
|
|
650
|
+
*
|
|
651
|
+
* A workspace small enough to delete in one transaction keeps the atomic
|
|
652
|
+
* contract: everything is removed (or nothing, on failure) before this
|
|
653
|
+
* returns. A larger one would hold the shared database for the whole cascade,
|
|
654
|
+
* so it is tombstoned instead: the existing expiry deadline is pulled forward
|
|
655
|
+
* to now, which every credential path already rejects (`workspace_expired`),
|
|
656
|
+
* and its data is removed by bounded drains (`reapWorkspace`, the reaper).
|
|
657
|
+
* Returns `deferred: true` when data removal continues in the background.
|
|
658
|
+
*/
|
|
659
|
+
export async function deleteWorkspace(db, storage, workspaceId, options = {}) {
|
|
660
|
+
requireDeletableStorage(storage);
|
|
661
|
+
if (!(await exceedsAtomicDeleteSize(db, workspaceId))) {
|
|
662
|
+
await deleteWorkspaceBatch(db, storage, [workspaceId]);
|
|
663
|
+
return { deferred: false };
|
|
664
|
+
}
|
|
665
|
+
const now = options.now ?? new Date();
|
|
666
|
+
await retryD1Write(() => runAtomicWrites(db, (writeDb) => [
|
|
667
|
+
// Pulling a deadline forward never pushes a nearer one back.
|
|
668
|
+
writeDb
|
|
669
|
+
.update(workspaces)
|
|
670
|
+
.set({ expiresAt: now })
|
|
671
|
+
.where(and(eq(workspaces.id, workspaceId), or(isNull(workspaces.expiresAt), gt(workspaces.expiresAt, now)))),
|
|
672
|
+
// As the atomic delete does: a keyed create replay must not hand back the
|
|
673
|
+
// key of a workspace that no longer authenticates.
|
|
674
|
+
writeDb
|
|
675
|
+
.update(workspaceCreateIdempotency)
|
|
676
|
+
.set({ status: 'terminalized', terminalizedAt: now })
|
|
677
|
+
.where(eq(workspaceCreateIdempotency.workspaceId, workspaceId)),
|
|
678
|
+
], { requireAtomic: true }));
|
|
679
|
+
reportEngineProgress({ operation: 'workspace.delete', workspaceId, phase: 'started' });
|
|
680
|
+
return { deferred: true };
|
|
681
|
+
}
|
|
682
|
+
/**
|
|
683
|
+
* Drain one workspace within a time budget (only when it is too large to
|
|
684
|
+
* delete atomically), then delete it once its bulk rows are gone. Returns true when the workspace row was deleted. Safe to call
|
|
685
|
+
* repeatedly and concurrently with the reaper: every step is idempotent.
|
|
686
|
+
*/
|
|
687
|
+
export async function reapWorkspace(db, storage, workspaceId, options = {}) {
|
|
688
|
+
return reapClassifiedWorkspace(db, storage, workspaceId, undefined, options);
|
|
689
|
+
}
|
|
690
|
+
/** `reapWorkspace` for a caller that already probed the size (`large`), or not (`undefined`). */
|
|
691
|
+
async function reapClassifiedWorkspace(db, storage, workspaceId, large, options = {}) {
|
|
692
|
+
return withEngineOperation('workspace.delete', workspaceId, async () => {
|
|
693
|
+
// Before any row changes, as the atomic delete has always done.
|
|
694
|
+
requireDeletableStorage(storage);
|
|
695
|
+
// A small workspace keeps the atomic delete; only a large one is drained.
|
|
696
|
+
if (large ?? await exceedsAtomicDeleteSize(db, workspaceId)) {
|
|
697
|
+
const drained = await drainWorkspaceRows(db, workspaceId, options);
|
|
698
|
+
if (!drained.complete)
|
|
699
|
+
return false;
|
|
700
|
+
}
|
|
701
|
+
const deleted = await deleteWorkspaceBatch(db, storage, [workspaceId]);
|
|
702
|
+
if (deleted.length > 0) {
|
|
703
|
+
reportEngineProgress({ operation: 'workspace.delete', workspaceId, phase: 'completed', remaining: 0 });
|
|
704
|
+
}
|
|
705
|
+
return deleted.length > 0;
|
|
706
|
+
});
|
|
640
707
|
}
|
|
641
708
|
/**
|
|
642
709
|
* Delete a bounded batch of workspaces whose callers explicitly opted into an
|
|
@@ -661,7 +728,41 @@ export async function reapExpiredWorkspaces(db, storage, options = {}) {
|
|
|
661
728
|
.limit(limit);
|
|
662
729
|
if (expired.length === 0)
|
|
663
730
|
return [];
|
|
664
|
-
|
|
665
|
-
|
|
731
|
+
// One wall-clock budget across the whole batch. Small workspaces go first
|
|
732
|
+
// (one atomic delete each); the rest of the budget is split evenly across
|
|
733
|
+
// the large ones. A huge tenant therefore cannot take more than its share of
|
|
734
|
+
// the budget (at the drain's duty cycle) of database time, and every drain
|
|
735
|
+
// call it is given deletes at least one page, however short its slice.
|
|
736
|
+
const clock = options.clock ?? Date.now;
|
|
737
|
+
const deadline = clock() + (options.maxDurationMs ?? WORKSPACE_DRAIN_MAX_DURATION_MS);
|
|
738
|
+
// Classifying (and atomically deleting small ones) may use at most half the
|
|
739
|
+
// budget, so the large workspaces found always get the other half: probes
|
|
740
|
+
// alone can never consume every call while nothing is deleted.
|
|
741
|
+
const classifyUntil = clock() + (deadline - clock()) / 2;
|
|
742
|
+
const reaped = [];
|
|
743
|
+
const large = [];
|
|
744
|
+
for (const { id } of expired) {
|
|
745
|
+
if (large.length > 0 && clock() >= classifyUntil)
|
|
746
|
+
break;
|
|
747
|
+
if (clock() >= deadline)
|
|
748
|
+
return reaped;
|
|
749
|
+
if (await exceedsAtomicDeleteSize(db, id))
|
|
750
|
+
large.push(id);
|
|
751
|
+
else if (await reapClassifiedWorkspace(db, storage, id, false))
|
|
752
|
+
reaped.push(id);
|
|
753
|
+
}
|
|
754
|
+
for (const [index, id] of large.entries()) {
|
|
755
|
+
// One slow probe can spend the whole budget. The first large workspace
|
|
756
|
+
// still gets its drain call, which deletes at least one page however
|
|
757
|
+
// short its slice; otherwise every tick would re-probe and never drain.
|
|
758
|
+
const remaining = deadline - clock();
|
|
759
|
+
if (remaining <= 0 && index > 0)
|
|
760
|
+
break;
|
|
761
|
+
const slice = clock() + Math.max(0, remaining) / (large.length - index);
|
|
762
|
+
const drain = { dutyCycle: options.dutyCycle, sleep: options.sleep, now: clock, deadline: slice };
|
|
763
|
+
if (await reapClassifiedWorkspace(db, storage, id, true, drain))
|
|
764
|
+
reaped.push(id);
|
|
765
|
+
}
|
|
766
|
+
return reaped;
|
|
666
767
|
}
|
|
667
768
|
//# sourceMappingURL=workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/engine/workspace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/engine/workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Db } from '../db/index.js';
|
|
2
|
+
/** Tables the drain pages through, children included (for coverage checks). */
|
|
3
|
+
export declare function drainedWorkspaceTables(): string[];
|
|
4
|
+
/**
|
|
5
|
+
* Bulk rows above which a workspace is too large to delete in one atomic
|
|
6
|
+
* transaction. Below it, deletion keeps its atomic contract (all or nothing,
|
|
7
|
+
* storage failures reported synchronously); above it, the workspace is
|
|
8
|
+
* tombstoned and drained in bounded steps.
|
|
9
|
+
*/
|
|
10
|
+
export declare const WORKSPACE_ATOMIC_DELETE_MAX_ROWS = 2000;
|
|
11
|
+
/**
|
|
12
|
+
* True when the workspace holds more than `maxRows` bulk rows. Each probe is an
|
|
13
|
+
* index range capped at the remaining allowance, so the check itself is
|
|
14
|
+
* bounded no matter how large the tenant is.
|
|
15
|
+
*/
|
|
16
|
+
export declare function exceedsAtomicDeleteSize(db: Db, workspaceId: string, maxRows?: number): Promise<boolean>;
|
|
17
|
+
/** Default wall-clock budget for one drain call. */
|
|
18
|
+
export declare const WORKSPACE_DRAIN_MAX_DURATION_MS = 2000;
|
|
19
|
+
/**
|
|
20
|
+
* Fraction of wall time spent in drain statements; the rest is idle. At 0.5
|
|
21
|
+
* every statement is followed by a pause as long as it took.
|
|
22
|
+
*/
|
|
23
|
+
export declare const WORKSPACE_DRAIN_DUTY_CYCLE = 0.5;
|
|
24
|
+
export interface WorkspaceDrainOptions {
|
|
25
|
+
/** Absolute wall-clock deadline (ms since epoch); overrides maxDurationMs. */
|
|
26
|
+
deadline?: number;
|
|
27
|
+
maxDurationMs?: number;
|
|
28
|
+
dutyCycle?: number;
|
|
29
|
+
now?: () => number;
|
|
30
|
+
sleep?: (ms: number) => Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export interface WorkspaceDrainResult {
|
|
33
|
+
/** True when every bulk table is empty for this workspace. */
|
|
34
|
+
complete: boolean;
|
|
35
|
+
rows: number;
|
|
36
|
+
}
|
|
37
|
+
export declare function drainWorkspaceRows(db: Db, workspaceId: string, options?: WorkspaceDrainOptions): Promise<WorkspaceDrainResult>;
|
|
38
|
+
//# sourceMappingURL=workspaceDrain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceDrain.d.ts","sourceRoot":"","sources":["../../src/engine/workspaceDrain.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAoGzC,+EAA+E;AAC/E,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD;AA2BD;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,OAAQ,CAAC;AAEtD;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,OAAO,SAAmC,GACzC,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAED,oDAAoD;AACpD,eAAO,MAAM,+BAA+B,OAAQ,CAAC;AACrD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,8DAA8D;IAC9D,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAID,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAyE/B"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { sql } from 'drizzle-orm';
|
|
2
|
+
import { reportEngineProgress } from '../lib/engineDiagnostics.js';
|
|
3
|
+
import { D1_SAFE_IN_QUERY_CHUNK_SIZE } from '../lib/queryChunks.js';
|
|
4
|
+
const CHILD_CHUNK = 500;
|
|
5
|
+
const DRAIN_STEPS = [
|
|
6
|
+
{ table: 'deliveries', chunk: 500 },
|
|
7
|
+
{ table: 'message_logs', chunk: 500 },
|
|
8
|
+
{ table: 'workspace_events', chunk: 500 },
|
|
9
|
+
{ table: 'session_events', chunk: 500 },
|
|
10
|
+
{ table: 'action_invocations', chunk: 500 },
|
|
11
|
+
{ table: 'usage_records', chunk: 500 },
|
|
12
|
+
// Append-only history that outlives message retention and agent deletion.
|
|
13
|
+
{ table: 'message_sessions', chunk: 500 },
|
|
14
|
+
{ table: 'agent_identity_audit', chunk: 500 },
|
|
15
|
+
{ table: 'direct_dm_idempotency', chunk: 500 },
|
|
16
|
+
{ table: 'routing_failures', chunk: 500 },
|
|
17
|
+
{ table: 'a2a_inbound', chunk: 500 },
|
|
18
|
+
{ table: 'a2a_egress', chunk: D1_SAFE_IN_QUERY_CHUNK_SIZE, children: [{ table: 'a2a_egress_context', key: 'id' }] },
|
|
19
|
+
// One webhook delivery per (event, matching subscription).
|
|
20
|
+
{ table: 'pending_events', chunk: D1_SAFE_IN_QUERY_CHUNK_SIZE, children: [{ table: 'webhook_deliveries', key: 'event_id' }] },
|
|
21
|
+
// Per-message fan-out (one receipt per reader). Deleting a message fires
|
|
22
|
+
// the FTS delete triggers.
|
|
23
|
+
{
|
|
24
|
+
table: 'messages',
|
|
25
|
+
chunk: D1_SAFE_IN_QUERY_CHUNK_SIZE,
|
|
26
|
+
where: 'NOT EXISTS (SELECT 1 FROM messages replies WHERE replies.thread_id = messages.id)',
|
|
27
|
+
order: 'length(id) DESC, id DESC',
|
|
28
|
+
children: [
|
|
29
|
+
{ table: 'read_receipts', key: 'message_id' },
|
|
30
|
+
{ table: 'reactions', key: 'message_id' },
|
|
31
|
+
{ table: 'message_attachments', key: 'message_id' },
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
// Each file row enqueues its blob in the durable cleanup outbox (trigger),
|
|
35
|
+
// which the reaper drains.
|
|
36
|
+
{ table: 'files', chunk: 200 },
|
|
37
|
+
{ table: 'dm_conversations', chunk: D1_SAFE_IN_QUERY_CHUNK_SIZE, children: [{ table: 'dm_participants', key: 'conversation_id' }] },
|
|
38
|
+
// Cascades webhooks.
|
|
39
|
+
{ table: 'channels', chunk: D1_SAFE_IN_QUERY_CHUNK_SIZE, children: [{ table: 'channel_members', key: 'channel_id' }] },
|
|
40
|
+
// Last of the bulk tables: messages, channels and files are NO ACTION
|
|
41
|
+
// references to agents, so an agent still referenced is left to the cascade.
|
|
42
|
+
{
|
|
43
|
+
table: 'agents',
|
|
44
|
+
chunk: 200,
|
|
45
|
+
where: [
|
|
46
|
+
'NOT EXISTS (SELECT 1 FROM messages m WHERE m.agent_id = agents.id)',
|
|
47
|
+
'NOT EXISTS (SELECT 1 FROM channels c WHERE c.created_by = agents.id)',
|
|
48
|
+
'NOT EXISTS (SELECT 1 FROM files f WHERE f.uploaded_by = agents.id)',
|
|
49
|
+
'NOT EXISTS (SELECT 1 FROM webhooks w WHERE w.created_by = agents.id)',
|
|
50
|
+
].join(' AND '),
|
|
51
|
+
},
|
|
52
|
+
{ table: 'nodes', chunk: 200 },
|
|
53
|
+
];
|
|
54
|
+
/** Tables the drain pages through, children included (for coverage checks). */
|
|
55
|
+
export function drainedWorkspaceTables() {
|
|
56
|
+
return DRAIN_STEPS.flatMap(step => [step.table, ...(step.children ?? []).map(child => child.table)]);
|
|
57
|
+
}
|
|
58
|
+
// Names below are the constants above, never input.
|
|
59
|
+
/**
|
|
60
|
+
* One page of `step` in this workspace, as `column` values. The child deletes
|
|
61
|
+
* and the parent delete of a round embed this exact subquery (ids are not
|
|
62
|
+
* bound: a page would exceed D1's 100-parameter limit), so they see the same
|
|
63
|
+
* rows. Its LIMIT bounds the parent search.
|
|
64
|
+
*/
|
|
65
|
+
function pageSql(step, workspaceId, column, limit = step.chunk) {
|
|
66
|
+
return sql `
|
|
67
|
+
SELECT ${sql.raw(column)} FROM ${sql.raw(step.table)}
|
|
68
|
+
WHERE workspace_id = ${workspaceId}${step.where ? sql.raw(` AND ${step.where}`) : sql ``}
|
|
69
|
+
${step.order ? sql.raw(`ORDER BY ${step.order}`) : sql ``}
|
|
70
|
+
LIMIT ${limit}
|
|
71
|
+
`;
|
|
72
|
+
}
|
|
73
|
+
function childPageSql(child, parentPage, limit) {
|
|
74
|
+
return sql `
|
|
75
|
+
SELECT rowid FROM ${sql.raw(child.table)}
|
|
76
|
+
WHERE ${sql.raw(child.key)} IN (${parentPage})
|
|
77
|
+
LIMIT ${limit}
|
|
78
|
+
`;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Bulk rows above which a workspace is too large to delete in one atomic
|
|
82
|
+
* transaction. Below it, deletion keeps its atomic contract (all or nothing,
|
|
83
|
+
* storage failures reported synchronously); above it, the workspace is
|
|
84
|
+
* tombstoned and drained in bounded steps.
|
|
85
|
+
*/
|
|
86
|
+
export const WORKSPACE_ATOMIC_DELETE_MAX_ROWS = 2_000;
|
|
87
|
+
/**
|
|
88
|
+
* True when the workspace holds more than `maxRows` bulk rows. Each probe is an
|
|
89
|
+
* index range capped at the remaining allowance, so the check itself is
|
|
90
|
+
* bounded no matter how large the tenant is.
|
|
91
|
+
*/
|
|
92
|
+
export async function exceedsAtomicDeleteSize(db, workspaceId, maxRows = WORKSPACE_ATOMIC_DELETE_MAX_ROWS) {
|
|
93
|
+
let seen = 0;
|
|
94
|
+
const count = async (query) => {
|
|
95
|
+
const [row] = await db.all(sql `SELECT count(*) AS n FROM (${query})`);
|
|
96
|
+
seen += Number(row?.n ?? 0);
|
|
97
|
+
return seen > maxRows;
|
|
98
|
+
};
|
|
99
|
+
for (const step of DRAIN_STEPS) {
|
|
100
|
+
// Unguarded, unordered: the probe counts rows, it does not choose a page.
|
|
101
|
+
const plain = { ...step, where: undefined, order: undefined };
|
|
102
|
+
if (await count(pageSql(plain, workspaceId, 'rowid', maxRows - seen + 1)))
|
|
103
|
+
return true;
|
|
104
|
+
for (const child of step.children ?? []) {
|
|
105
|
+
// Children of at most the first maxRows + 1 parents: if there are more
|
|
106
|
+
// parents than that, the parent count above already decided.
|
|
107
|
+
const parents = pageSql(plain, workspaceId, 'id', maxRows + 1);
|
|
108
|
+
if (await count(childPageSql(child, parents, maxRows - seen + 1)))
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
/** Default wall-clock budget for one drain call. */
|
|
115
|
+
export const WORKSPACE_DRAIN_MAX_DURATION_MS = 2_000;
|
|
116
|
+
/**
|
|
117
|
+
* Fraction of wall time spent in drain statements; the rest is idle. At 0.5
|
|
118
|
+
* every statement is followed by a pause as long as it took.
|
|
119
|
+
*/
|
|
120
|
+
export const WORKSPACE_DRAIN_DUTY_CYCLE = 0.5;
|
|
121
|
+
const defaultSleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
122
|
+
export async function drainWorkspaceRows(db, workspaceId, options = {}) {
|
|
123
|
+
const now = options.now ?? Date.now;
|
|
124
|
+
const sleep = options.sleep ?? defaultSleep;
|
|
125
|
+
const deadline = options.deadline ?? now() + (options.maxDurationMs ?? WORKSPACE_DRAIN_MAX_DURATION_MS);
|
|
126
|
+
const duty = Math.min(Math.max(options.dutyCycle ?? WORKSPACE_DRAIN_DUTY_CYCLE, 0.05), 1);
|
|
127
|
+
let rows = 0;
|
|
128
|
+
// The deadline stops a call only once it has deleted something. Every call
|
|
129
|
+
// re-checks the already-empty tables first; were those cheap probes allowed
|
|
130
|
+
// to spend a short slice (the reaper splits its budget across workspaces),
|
|
131
|
+
// a call could end before reaching the rows left, and every later call the
|
|
132
|
+
// same way. The overrun is bounded: at most one probe per step plus a page.
|
|
133
|
+
const spent = () => rows > 0 && now() >= deadline;
|
|
134
|
+
// One paced, deadline-checked statement. Returns rows deleted, or null when
|
|
135
|
+
// the budget is spent before it could run.
|
|
136
|
+
const run = async (table, rowids) => {
|
|
137
|
+
if (spent())
|
|
138
|
+
return null;
|
|
139
|
+
const started = now();
|
|
140
|
+
const deleted = await db.all(sql `DELETE FROM ${sql.raw(table)} WHERE rowid IN (${rowids}) RETURNING 1`);
|
|
141
|
+
const elapsed = now() - started;
|
|
142
|
+
rows += deleted.length;
|
|
143
|
+
if (deleted.length > 0) {
|
|
144
|
+
reportEngineProgress({
|
|
145
|
+
operation: 'workspace.delete', workspaceId, phase: 'batch', table, rows: deleted.length,
|
|
146
|
+
remaining: null, durationMs: elapsed,
|
|
147
|
+
});
|
|
148
|
+
// Every page that deleted rows is paced, a table's last one included.
|
|
149
|
+
const idle = elapsed * (1 / duty - 1);
|
|
150
|
+
if (idle > 0)
|
|
151
|
+
await sleep(Math.min(idle, Math.max(0, deadline - now())));
|
|
152
|
+
}
|
|
153
|
+
return deleted.length;
|
|
154
|
+
};
|
|
155
|
+
for (const step of DRAIN_STEPS) {
|
|
156
|
+
for (;;) {
|
|
157
|
+
if (spent())
|
|
158
|
+
return { complete: false, rows };
|
|
159
|
+
let deleted;
|
|
160
|
+
let pageSize;
|
|
161
|
+
if (step.children) {
|
|
162
|
+
const ids = (await db.all(pageSql(step, workspaceId, 'id'))).map(row => row.id);
|
|
163
|
+
pageSize = ids.length;
|
|
164
|
+
if (ids.length === 0)
|
|
165
|
+
break;
|
|
166
|
+
const page = sql.join(ids.map(id => sql `${id}`), sql `, `);
|
|
167
|
+
for (const child of step.children) {
|
|
168
|
+
for (;;) {
|
|
169
|
+
const removed = await run(child.table, sql `
|
|
170
|
+
SELECT rowid FROM ${sql.raw(child.table)} WHERE ${sql.raw(child.key)} IN (${page}) LIMIT ${CHILD_CHUNK}
|
|
171
|
+
`);
|
|
172
|
+
if (removed === null)
|
|
173
|
+
return { complete: false, rows };
|
|
174
|
+
if (removed < CHILD_CHUNK)
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Exactly the parents whose children were drained, guard re-checked.
|
|
179
|
+
deleted = await run(step.table, sql `
|
|
180
|
+
SELECT rowid FROM ${sql.raw(step.table)}
|
|
181
|
+
WHERE id IN (${page})${step.where ? sql.raw(` AND ${step.where}`) : sql ``}
|
|
182
|
+
`);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
deleted = await run(step.table, pageSql(step, workspaceId, 'rowid'));
|
|
186
|
+
pageSize = deleted ?? 0;
|
|
187
|
+
}
|
|
188
|
+
if (deleted === null)
|
|
189
|
+
return { complete: false, rows };
|
|
190
|
+
// Unguarded: a short page means the table is empty. Guarded (messages,
|
|
191
|
+
// agents): a short page can still precede rows the guard held back (a
|
|
192
|
+
// root behind its replies), so only an empty page ends the step; rows
|
|
193
|
+
// the guard holds back for good are left to the final cascade.
|
|
194
|
+
// A page an overlapping drain already removed (deleted 0 of a non-empty
|
|
195
|
+
// page) is not the end: the next round reads the next page.
|
|
196
|
+
if (step.where ? pageSize === 0 : pageSize < step.chunk)
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return { complete: true, rows };
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=workspaceDrain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceDrain.js","sourceRoot":"","sources":["../../src/engine/workspaceDrain.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAI1C,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,UAAU,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA+CnD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAwN3D"}
|
package/dist/engine.js
CHANGED
|
@@ -10,6 +10,7 @@ import { asCodedError, safeClientErrorMessage } from './lib/httpError.js';
|
|
|
10
10
|
import { jsonError, jsonMalformedBody, jsonNotFound } from './lib/httpResponse.js';
|
|
11
11
|
import { requiredOriginInfo } from './lib/origin.js';
|
|
12
12
|
import { emitServerEvent } from './lib/serverTelemetry.js';
|
|
13
|
+
import { engineOperationOf, runWithEngineDiagnostics } from './lib/engineDiagnostics.js';
|
|
13
14
|
import { runInBackground } from './routes/background.js';
|
|
14
15
|
import { authenticateNodeWs, authenticateRealtimeWs, missingWsToken, queryOrBearerToken, } from './engine/wsAuth.js';
|
|
15
16
|
// Route imports
|
|
@@ -72,6 +73,9 @@ export function createEngine(deps) {
|
|
|
72
73
|
};
|
|
73
74
|
const app = new Hono();
|
|
74
75
|
// Inject the runtime first so the logger and all routes can read it.
|
|
76
|
+
// Each app's requests (and the background work they start) report to this
|
|
77
|
+
// app's own diagnostics sink, or to none: never another app's.
|
|
78
|
+
app.use('*', (_c, next) => runWithEngineDiagnostics(deps.diagnostics, next));
|
|
75
79
|
app.use('*', engineContext(runtime));
|
|
76
80
|
// Before CORS so a preflight, which returns without calling later
|
|
77
81
|
// middleware, still carries the request id. exposeHeaders lets browser
|
|
@@ -200,12 +204,17 @@ export function createEngine(deps) {
|
|
|
200
204
|
// Global error handler
|
|
201
205
|
app.onError((err, c) => {
|
|
202
206
|
const error = asCodedError(err);
|
|
207
|
+
// Where the failure happened, so a 5xx can be traced to a tenant, a caller
|
|
208
|
+
// and the engine operation in flight. Ids and route templates only: never a
|
|
209
|
+
// raw path, which can carry names.
|
|
210
|
+
const scope = errorScope(c, err);
|
|
203
211
|
const logger = getRequestLogger(c, 'engine.on_error');
|
|
204
212
|
logger.error('Unhandled request error', {
|
|
205
213
|
error_code: error.code ?? 'internal_error',
|
|
206
214
|
error_status: error.status ?? 500,
|
|
207
215
|
path: c.req.path,
|
|
208
216
|
method: c.req.method,
|
|
217
|
+
...scope,
|
|
209
218
|
...toErrorDetails(error),
|
|
210
219
|
});
|
|
211
220
|
const status = error.status || 500;
|
|
@@ -216,6 +225,7 @@ export function createEngine(deps) {
|
|
|
216
225
|
status_code: status,
|
|
217
226
|
error_code: error.code ?? 'internal_error',
|
|
218
227
|
request_id: c.get('requestId'),
|
|
228
|
+
...scope,
|
|
219
229
|
});
|
|
220
230
|
}
|
|
221
231
|
if (error.code === 'invalid_json' || err instanceof SyntaxError) {
|
|
@@ -234,4 +244,22 @@ export function createEngine(deps) {
|
|
|
234
244
|
});
|
|
235
245
|
return app;
|
|
236
246
|
}
|
|
247
|
+
function errorScope(c, err) {
|
|
248
|
+
const scope = {};
|
|
249
|
+
const workspaceId = c.get('workspace')?.id;
|
|
250
|
+
const agentId = c.get('agent')?.id;
|
|
251
|
+
const operation = engineOperationOf(err);
|
|
252
|
+
// Hono reports the matched template (`/v1/channels/:name/messages`); `*` is
|
|
253
|
+
// a middleware match, not a route, so it is no better than nothing.
|
|
254
|
+
const route = c.req.routePath;
|
|
255
|
+
if (workspaceId)
|
|
256
|
+
scope.workspace_id = workspaceId;
|
|
257
|
+
if (agentId)
|
|
258
|
+
scope.agent_id = agentId;
|
|
259
|
+
if (operation)
|
|
260
|
+
scope.engine_operation = operation;
|
|
261
|
+
if (route && !route.includes('*'))
|
|
262
|
+
scope.route = route;
|
|
263
|
+
return scope;
|
|
264
|
+
}
|
|
237
265
|
//# sourceMappingURL=engine.js.map
|