@relaycast/engine 12.0.0 → 12.2.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.
Files changed (139) hide show
  1. package/dist/adapters/node/index.d.ts.map +1 -1
  2. package/dist/adapters/node/index.js +1 -0
  3. package/dist/adapters/node/index.js.map +1 -1
  4. package/dist/adapters/node/presence.d.ts +18 -0
  5. package/dist/adapters/node/presence.d.ts.map +1 -1
  6. package/dist/adapters/node/presence.js +82 -0
  7. package/dist/adapters/node/presence.js.map +1 -1
  8. package/dist/adapters/node/realtime.d.ts +4 -0
  9. package/dist/adapters/node/realtime.d.ts.map +1 -1
  10. package/dist/adapters/node/realtime.js +32 -5
  11. package/dist/adapters/node/realtime.js.map +1 -1
  12. package/dist/db/schema.d.ts +2 -2
  13. package/dist/engine/a2a.d.ts +3 -0
  14. package/dist/engine/a2a.d.ts.map +1 -1
  15. package/dist/engine/a2a.js +1 -0
  16. package/dist/engine/a2a.js.map +1 -1
  17. package/dist/engine/action.d.ts +14 -9
  18. package/dist/engine/action.d.ts.map +1 -1
  19. package/dist/engine/action.js +342 -80
  20. package/dist/engine/action.js.map +1 -1
  21. package/dist/engine/agent.d.ts +9 -3
  22. package/dist/engine/agent.d.ts.map +1 -1
  23. package/dist/engine/agent.js +58 -12
  24. package/dist/engine/agent.js.map +1 -1
  25. package/dist/engine/delivery.d.ts.map +1 -1
  26. package/dist/engine/delivery.js +9 -0
  27. package/dist/engine/delivery.js.map +1 -1
  28. package/dist/engine/deliveryWrites.d.ts +23 -0
  29. package/dist/engine/deliveryWrites.d.ts.map +1 -1
  30. package/dist/engine/deliveryWrites.js +50 -8
  31. package/dist/engine/deliveryWrites.js.map +1 -1
  32. package/dist/engine/eventDelivery.d.ts +1 -1
  33. package/dist/engine/groupDm.d.ts.map +1 -1
  34. package/dist/engine/groupDm.js +4 -0
  35. package/dist/engine/groupDm.js.map +1 -1
  36. package/dist/engine/inboundWebhook.d.ts.map +1 -1
  37. package/dist/engine/inboundWebhook.js +20 -4
  38. package/dist/engine/inboundWebhook.js.map +1 -1
  39. package/dist/engine/inbox.d.ts.map +1 -1
  40. package/dist/engine/inbox.js +17 -0
  41. package/dist/engine/inbox.js.map +1 -1
  42. package/dist/engine/invocationClaim.d.ts +32 -0
  43. package/dist/engine/invocationClaim.d.ts.map +1 -0
  44. package/dist/engine/invocationClaim.js +42 -0
  45. package/dist/engine/invocationClaim.js.map +1 -0
  46. package/dist/engine/message.d.ts.map +1 -1
  47. package/dist/engine/message.js +4 -0
  48. package/dist/engine/message.js.map +1 -1
  49. package/dist/engine/messageMetadata.d.ts +2 -0
  50. package/dist/engine/messageMetadata.d.ts.map +1 -1
  51. package/dist/engine/messageMetadata.js +3 -2
  52. package/dist/engine/messageMetadata.js.map +1 -1
  53. package/dist/engine/node.d.ts +59 -44
  54. package/dist/engine/node.d.ts.map +1 -1
  55. package/dist/engine/node.js +179 -26
  56. package/dist/engine/node.js.map +1 -1
  57. package/dist/engine/nodeLiveness.d.ts +34 -0
  58. package/dist/engine/nodeLiveness.d.ts.map +1 -0
  59. package/dist/engine/nodeLiveness.js +52 -0
  60. package/dist/engine/nodeLiveness.js.map +1 -0
  61. package/dist/engine/placement.d.ts.map +1 -1
  62. package/dist/engine/placement.js +15 -18
  63. package/dist/engine/placement.js.map +1 -1
  64. package/dist/engine/presence.d.ts +173 -1
  65. package/dist/engine/presence.d.ts.map +1 -1
  66. package/dist/engine/presence.js +112 -8
  67. package/dist/engine/presence.js.map +1 -1
  68. package/dist/engine/registrationAdmission.d.ts +40 -0
  69. package/dist/engine/registrationAdmission.d.ts.map +1 -0
  70. package/dist/engine/registrationAdmission.js +78 -0
  71. package/dist/engine/registrationAdmission.js.map +1 -0
  72. package/dist/engine/taskInvocation.d.ts +1 -1
  73. package/dist/engine/thread.d.ts.map +1 -1
  74. package/dist/engine/thread.js +8 -0
  75. package/dist/engine/thread.js.map +1 -1
  76. package/dist/engine/workspace.d.ts +26 -1
  77. package/dist/engine/workspace.d.ts.map +1 -1
  78. package/dist/engine/workspace.js +108 -7
  79. package/dist/engine/workspace.js.map +1 -1
  80. package/dist/engine/workspaceDrain.d.ts +38 -0
  81. package/dist/engine/workspaceDrain.d.ts.map +1 -0
  82. package/dist/engine/workspaceDrain.js +202 -0
  83. package/dist/engine/workspaceDrain.js.map +1 -0
  84. package/dist/engine.d.ts.map +1 -1
  85. package/dist/engine.js +31 -0
  86. package/dist/engine.js.map +1 -1
  87. package/dist/index.d.ts +6 -2
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +6 -1
  90. package/dist/index.js.map +1 -1
  91. package/dist/lib/engineDiagnostics.d.ts +26 -0
  92. package/dist/lib/engineDiagnostics.d.ts.map +1 -0
  93. package/dist/lib/engineDiagnostics.js +100 -0
  94. package/dist/lib/engineDiagnostics.js.map +1 -0
  95. package/dist/lib/httpError.d.ts.map +1 -1
  96. package/dist/lib/httpError.js +5 -1
  97. package/dist/lib/httpError.js.map +1 -1
  98. package/dist/middleware/admission.d.ts +7 -0
  99. package/dist/middleware/admission.d.ts.map +1 -1
  100. package/dist/middleware/admission.js +19 -1
  101. package/dist/middleware/admission.js.map +1 -1
  102. package/dist/middleware/rateLimit.d.ts.map +1 -1
  103. package/dist/middleware/rateLimit.js +8 -1
  104. package/dist/middleware/rateLimit.js.map +1 -1
  105. package/dist/ports/admission.d.ts +24 -3
  106. package/dist/ports/admission.d.ts.map +1 -1
  107. package/dist/ports/database.d.ts.map +1 -1
  108. package/dist/ports/database.js +6 -1
  109. package/dist/ports/database.js.map +1 -1
  110. package/dist/ports/diagnostics.d.ts +42 -0
  111. package/dist/ports/diagnostics.d.ts.map +1 -0
  112. package/dist/ports/diagnostics.js +13 -0
  113. package/dist/ports/diagnostics.js.map +1 -0
  114. package/dist/ports/index.d.ts +13 -1
  115. package/dist/ports/index.d.ts.map +1 -1
  116. package/dist/ports/index.js.map +1 -1
  117. package/dist/ports/nodeLiveness.d.ts +23 -0
  118. package/dist/ports/nodeLiveness.d.ts.map +1 -0
  119. package/dist/ports/nodeLiveness.js +12 -0
  120. package/dist/ports/nodeLiveness.js.map +1 -0
  121. package/dist/ports/presence.d.ts +21 -0
  122. package/dist/ports/presence.d.ts.map +1 -1
  123. package/dist/ports/realtime.d.ts +18 -0
  124. package/dist/ports/realtime.d.ts.map +1 -1
  125. package/dist/ports/realtime.js.map +1 -1
  126. package/dist/routes/a2a.d.ts.map +1 -1
  127. package/dist/routes/a2a.js +2 -0
  128. package/dist/routes/a2a.js.map +1 -1
  129. package/dist/routes/action.js +3 -0
  130. package/dist/routes/action.js.map +1 -1
  131. package/dist/routes/agent.d.ts.map +1 -1
  132. package/dist/routes/agent.js +5 -1
  133. package/dist/routes/agent.js.map +1 -1
  134. package/dist/routes/node.d.ts.map +1 -1
  135. package/dist/routes/node.js +2 -1
  136. package/dist/routes/node.js.map +1 -1
  137. package/dist/routes/workspace.js +10 -2
  138. package/dist/routes/workspace.js.map +1 -1
  139. package/package.json +3 -3
@@ -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":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AA8CpE,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,WAAW,GAAyB;IACxC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE;IACnC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE;IACrC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE;IACzC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE;IACvC,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE;IAC3C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE;IACtC,0EAA0E;IAC1E,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE;IACzC,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE;IAC7C,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE;IAC9C,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE;IACzC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE;IACpC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,2BAA2B,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;IACnH,2DAA2D;IAC3D,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,2BAA2B,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE;IAC7H,yEAAyE;IACzE,2BAA2B;IAC3B;QACE,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,2BAA2B;QAClC,KAAK,EAAE,mFAAmF;QAC1F,KAAK,EAAE,0BAA0B;QACjC,QAAQ,EAAE;YACR,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,YAAY,EAAE;YAC7C,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE;YACzC,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,EAAE,YAAY,EAAE;SACpD;KACF;IACD,2EAA2E;IAC3E,2BAA2B;IAC3B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;IAC9B,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,2BAA2B,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE;IACnI,qBAAqB;IACrB,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,2BAA2B,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE;IACtH,sEAAsE;IACtE,6EAA6E;IAC7E;QACE,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,GAAG;QACV,KAAK,EAAE;YACL,oEAAoE;YACpE,sEAAsE;YACtE,oEAAoE;YACpE,sEAAsE;SACvE,CAAC,IAAI,CAAC,OAAO,CAAC;KAChB;IACD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;CAC/B,CAAC;AAEF,+EAA+E;AAC/E,MAAM,UAAU,sBAAsB;IACpC,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvG,CAAC;AAED,oDAAoD;AAEpD;;;;;GAKG;AACH,SAAS,OAAO,CAAC,IAAe,EAAE,WAAmB,EAAE,MAAsB,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK;IAC/F,OAAO,GAAG,CAAA;aACC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;2BAC7B,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA,EAAE;MACrF,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA,EAAE;YAChD,KAAK;GACd,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAqC,EAAE,UAAsC,EAAE,KAAa;IAChH,OAAO,GAAG,CAAA;wBACY,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;YAChC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,UAAU;YACpC,KAAK;GACd,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,CAAC;AAEtD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,EAAM,EACN,WAAmB,EACnB,OAAO,GAAG,gCAAgC;IAE1C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,KAAK,GAAG,KAAK,EAAE,KAA6B,EAAE,EAAE;QACpD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAgB,GAAG,CAAA,8BAA8B,KAAK,GAAG,CAAC,CAAC;QACrF,IAAI,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5B,OAAO,IAAI,GAAG,OAAO,CAAC;IACxB,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,0EAA0E;QAC1E,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC9D,IAAI,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACvF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACxC,uEAAuE;YACvE,6DAA6D;YAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;YAC/D,IAAI,MAAM,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;QACjF,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oDAAoD;AACpD,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAAC;AACrD;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAiB9C,MAAM,YAAY,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAE3F,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAM,EACN,WAAmB,EACnB,UAAiC,EAAE;IAEnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,+BAA+B,CAAC,CAAC;IACxG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,0BAA0B,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1F,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,IAAI,QAAQ,CAAC;IAElD,4EAA4E;IAC5E,2CAA2C;IAC3C,MAAM,GAAG,GAAG,KAAK,EAAE,KAAa,EAAE,MAA8B,EAA0B,EAAE;QAC1F,IAAI,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAA,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,MAAM,eAAe,CAAC,CAAC;QACxG,MAAM,OAAO,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;QAChC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;QACvB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,oBAAoB,CAAC;gBACnB,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM;gBACvF,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO;aACrC,CAAC,CAAC;YACH,sEAAsE;YACtE,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;YACtC,IAAI,IAAI,GAAG,CAAC;gBAAE,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,SAAS,CAAC;YACR,IAAI,KAAK,EAAE;gBAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC9C,IAAI,OAAsB,CAAC;YAC3B,IAAI,QAAgB,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAiB,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChG,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;gBACtB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAA,IAAI,CAAC,CAAC;gBAC1D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClC,SAAS,CAAC;wBACR,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAA;kCACpB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,WAAW,WAAW;aACvG,CAAC,CAAC;wBACH,IAAI,OAAO,KAAK,IAAI;4BAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;wBACvD,IAAI,OAAO,GAAG,WAAW;4BAAE,MAAM;oBACnC,CAAC;gBACH,CAAC;gBACD,qEAAqE;gBACrE,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAA;8BACb,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;yBACxB,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA,EAAE;SAC1E,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;gBACrE,QAAQ,GAAG,OAAO,IAAI,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACvD,uEAAuE;YACvE,sEAAsE;YACtE,sEAAsE;YACtE,+DAA+D;YAC/D,wEAAwE;YACxE,4DAA4D;YAC5D,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK;gBAAE,MAAM;QACjE,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,UAAU,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA8CnD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CA+M3D"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAGA,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,CAyN3D"}
package/dist/engine.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { configureNodeLiveness } from './engine/nodeLiveness.js';
1
2
  import { safeTelemetrySink } from './ports/telemetry.js';
2
3
  import { NoopTelemetrySink } from './providers/noop-telemetry.js';
3
4
  import { Hono } from 'hono';
@@ -10,6 +11,7 @@ import { asCodedError, safeClientErrorMessage } from './lib/httpError.js';
10
11
  import { jsonError, jsonMalformedBody, jsonNotFound } from './lib/httpResponse.js';
11
12
  import { requiredOriginInfo } from './lib/origin.js';
12
13
  import { emitServerEvent } from './lib/serverTelemetry.js';
14
+ import { engineOperationOf, runWithEngineDiagnostics } from './lib/engineDiagnostics.js';
13
15
  import { runInBackground } from './routes/background.js';
14
16
  import { authenticateNodeWs, authenticateRealtimeWs, missingWsToken, queryOrBearerToken, } from './engine/wsAuth.js';
15
17
  // Route imports
@@ -55,6 +57,8 @@ import { routingRoutes } from './routes/routing.js';
55
57
  * no Durable Objects — those concerns belong to the adapter/entrypoint.
56
58
  */
57
59
  export function createEngine(deps) {
60
+ if (deps.nodeLiveness)
61
+ configureNodeLiveness(deps.db, deps.nodeLiveness);
58
62
  const runtime = {
59
63
  db: deps.db,
60
64
  realtime: deps.realtime,
@@ -72,6 +76,9 @@ export function createEngine(deps) {
72
76
  };
73
77
  const app = new Hono();
74
78
  // Inject the runtime first so the logger and all routes can read it.
79
+ // Each app's requests (and the background work they start) report to this
80
+ // app's own diagnostics sink, or to none: never another app's.
81
+ app.use('*', (_c, next) => runWithEngineDiagnostics(deps.diagnostics, next));
75
82
  app.use('*', engineContext(runtime));
76
83
  // Before CORS so a preflight, which returns without calling later
77
84
  // middleware, still carries the request id. exposeHeaders lets browser
@@ -200,12 +207,17 @@ export function createEngine(deps) {
200
207
  // Global error handler
201
208
  app.onError((err, c) => {
202
209
  const error = asCodedError(err);
210
+ // Where the failure happened, so a 5xx can be traced to a tenant, a caller
211
+ // and the engine operation in flight. Ids and route templates only: never a
212
+ // raw path, which can carry names.
213
+ const scope = errorScope(c, err);
203
214
  const logger = getRequestLogger(c, 'engine.on_error');
204
215
  logger.error('Unhandled request error', {
205
216
  error_code: error.code ?? 'internal_error',
206
217
  error_status: error.status ?? 500,
207
218
  path: c.req.path,
208
219
  method: c.req.method,
220
+ ...scope,
209
221
  ...toErrorDetails(error),
210
222
  });
211
223
  const status = error.status || 500;
@@ -216,6 +228,7 @@ export function createEngine(deps) {
216
228
  status_code: status,
217
229
  error_code: error.code ?? 'internal_error',
218
230
  request_id: c.get('requestId'),
231
+ ...scope,
219
232
  });
220
233
  }
221
234
  if (error.code === 'invalid_json' || err instanceof SyntaxError) {
@@ -234,4 +247,22 @@ export function createEngine(deps) {
234
247
  });
235
248
  return app;
236
249
  }
250
+ function errorScope(c, err) {
251
+ const scope = {};
252
+ const workspaceId = c.get('workspace')?.id;
253
+ const agentId = c.get('agent')?.id;
254
+ const operation = engineOperationOf(err);
255
+ // Hono reports the matched template (`/v1/channels/:name/messages`); `*` is
256
+ // a middleware match, not a route, so it is no better than nothing.
257
+ const route = c.req.routePath;
258
+ if (workspaceId)
259
+ scope.workspace_id = workspaceId;
260
+ if (agentId)
261
+ scope.agent_id = agentId;
262
+ if (operation)
263
+ scope.engine_operation = operation;
264
+ if (route && !route.includes('*'))
265
+ scope.route = route;
266
+ return scope;
267
+ }
237
268
  //# sourceMappingURL=engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,14 @@
1
+ export { configureNodeLiveness, inspectNodeLiveness } from './engine/nodeLiveness.js';
2
+ export type { NodeLivenessAuthority, NodeLivenessSnapshot } from './ports/nodeLiveness.js';
1
3
  export declare const SERVER_VERSION: "0.1.0";
2
4
  export { createEngine } from './engine.js';
3
5
  export type { AppEnv, AppVariables, EngineRuntime } from './env.js';
4
- export type { EngineDeps, EnginePorts, EngineProviders, EngineConfig, EngineLogRecord, EngineLogExport, EngineDb, EngineEvent, RealtimeBus, ConnectionRegistry, UpgradeArgs, PresenceTracker, RateLimiter, RateLimitResult, FileStorage, KeyValueStore, EventQueue, QueuedEvent, AuthProvider, AuthResult, AuthRequire, Workspace, Agent, AdmissionAction, AdmissionContext, AdmissionDenial, AdmissionHooks, TelemetrySink, TelemetryEvent, } from './ports/index.js';
6
+ export type { EngineDeps, EnginePorts, EngineProviders, EngineConfig, EngineLogRecord, EngineLogExport, EngineDb, EngineEvent, RealtimeBus, ConnectionRegistry, UpgradeArgs, PresenceTracker, RateLimiter, RateLimitResult, FileStorage, KeyValueStore, EventQueue, QueuedEvent, AuthProvider, AuthResult, AuthRequire, Workspace, Agent, AdmissionAction, AdmissionContext, AdmissionDenial, AdmissionHooks, RegistrationAdmissionAction, TelemetrySink, TelemetryEvent, } from './ports/index.js';
5
7
  export { observerAllowsEvent, type ObserverToken } from './engine/observerToken.js';
8
+ export { createRegistrationAdmission, type RegistrationAdmission, } from './engine/registrationAdmission.js';
6
9
  export { SqliteApiKeyAuthProvider, hashToken } from './auth/index.js';
7
10
  export { NoopTelemetrySink } from './providers/noop-telemetry.js';
11
+ export { configureEngineDiagnostics, currentEngineOperation, engineOperationOf, runWithEngineDiagnostics, } from './lib/engineDiagnostics.js';
8
12
  export { isValidStandardWebhookSecret, signStandardWebhook, verifyStandardWebhook, } from './lib/standardWebhook.js';
9
13
  export { getDb, healthCheck as dbHealthCheck } from './db/index.js';
10
14
  export type { Db } from './db/index.js';
@@ -30,7 +34,7 @@ export { pruneExpired, resolveEffectiveMessageRetention, DEFAULT_DELIVERY_TTL_DA
30
34
  export type { PruneOptions, PruneResult, RetentionDefaults } from './engine/retention.js';
31
35
  export type { RetentionCursorStore, RowidRetentionState } from './engine/rowidRetention.js';
32
36
  export type { WorkspaceRetentionSettings } from './db/schema.js';
33
- export { reapExpiredWorkspaces, drainFileCleanup, getWorkspaceExpiry, DEFAULT_WORKSPACE_REAP_LIMIT, DEFAULT_FILE_CLEANUP_LIMIT, } from './engine/workspace.js';
37
+ export { reapExpiredWorkspaces, reapWorkspace, drainFileCleanup, getWorkspaceExpiry, DEFAULT_WORKSPACE_REAP_LIMIT, DEFAULT_FILE_CLEANUP_LIMIT, } from './engine/workspace.js';
34
38
  export { isWorkspaceExpired, authenticateUnexpired, workspaceExpiredAuthResult, WORKSPACE_EXPIRED_CODE, WORKSPACE_EXPIRED_MESSAGE, } from './auth/workspaceExpiry.js';
35
39
  export { appendWorkspaceEvent, appendAndPublishWorkspaceEvent, listWorkspaceEvents, WORKSPACE_EVENT_LIST_DEFAULT_LIMIT, WORKSPACE_EVENT_LIST_MAX_LIMIT, } from './engine/workspaceEvents.js';
36
40
  export type { WorkspaceEventInput, WorkspaceEventRecord } from './engine/workspaceEvents.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export { configureNodeLiveness, inspectNodeLiveness } from './engine/nodeLiveness.js';
1
2
  export const SERVER_VERSION = '0.1.0';
2
3
  // The engine factory + the Hono Env type consumers extend.
3
4
  export { createEngine } from './engine.js';
@@ -5,9 +6,13 @@ export { createEngine } from './engine.js';
5
6
  // workspace stream. A realtime adapter that fans events out to observer sockets
6
7
  // must apply it per socket — the Cloudflare stream lives outside this package.
7
8
  export { observerAllowsEvent } from './engine/observerToken.js';
9
+ // Registration admission a host wires into its own node-control transport so
10
+ // `agent.register` frames are admitted like the HTTP registration routes.
11
+ export { createRegistrationAdmission, } from './engine/registrationAdmission.js';
8
12
  // OSS default providers (self-host). Cloud injects its own.
9
13
  export { SqliteApiKeyAuthProvider, hashToken } from './auth/index.js';
10
14
  export { NoopTelemetrySink } from './providers/noop-telemetry.js';
15
+ export { configureEngineDiagnostics, currentEngineOperation, engineOperationOf, runWithEngineDiagnostics, } from './lib/engineDiagnostics.js';
11
16
  export { isValidStandardWebhookSecret, signStandardWebhook, verifyStandardWebhook, } from './lib/standardWebhook.js';
12
17
  // Database helpers + schema for adapters and migrations.
13
18
  export { getDb, healthCheck as dbHealthCheck } from './db/index.js';
@@ -48,7 +53,7 @@ export { pruneExpired, resolveEffectiveMessageRetention, DEFAULT_DELIVERY_TTL_DA
48
53
  // non-null deadline as its deletion predicate. Hosts may call this from cron;
49
54
  // the Node adapter also runs it on its local maintenance interval. Blob cleanup
50
55
  // is a durable post-commit outbox: hosts must drain it from the same schedule.
51
- export { reapExpiredWorkspaces, drainFileCleanup, getWorkspaceExpiry, DEFAULT_WORKSPACE_REAP_LIMIT, DEFAULT_FILE_CLEANUP_LIMIT, } from './engine/workspace.js';
56
+ export { reapExpiredWorkspaces, reapWorkspace, drainFileCleanup, getWorkspaceExpiry, DEFAULT_WORKSPACE_REAP_LIMIT, DEFAULT_FILE_CLEANUP_LIMIT, } from './engine/workspace.js';
52
57
  // Expiry is enforced at authentication, not just by the reap. Hosts that
53
58
  // compose their own credential paths reuse these so an expired workspace stays
54
59
  // rejected whatever provider resolved it.
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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"}
@@ -0,0 +1,26 @@
1
+ import type { EngineDiagnostics, EngineOperationLabel, EngineOperationScope, EngineProgressSample } from '../ports/diagnostics.js';
2
+ /** The sink for maintenance callers that run outside an app's requests. */
3
+ export declare function configureEngineDiagnostics(next: EngineDiagnostics | undefined): void;
4
+ /** Run `fn` with `sink` as the diagnostics destination (`createEngine` does this per request). */
5
+ export declare function runWithEngineDiagnostics<T>(sink: EngineDiagnostics | undefined, fn: () => T): T;
6
+ /**
7
+ * The labelled operation the caller is running inside, if any. A host database
8
+ * wrapper uses this to attribute each statement's cost to an operation.
9
+ */
10
+ export declare function currentEngineOperation(): EngineOperationScope | undefined;
11
+ /** The operation an error was thrown inside, so the request error path can report it. */
12
+ export declare function engineOperationOf(error: unknown): EngineOperationLabel | undefined;
13
+ /**
14
+ * Give `to` the operation label of `from`, for code that wraps a thrown value
15
+ * in a new error (a plain-object rejection becomes an `Error`), so the request
16
+ * error path still reports the operation.
17
+ */
18
+ export declare function carryEngineOperation(from: unknown, to: object): void;
19
+ /**
20
+ * Run `fn` as a labelled operation: hosts see its duration and outcome, and any
21
+ * statement it issues can be attributed to it via `currentEngineOperation()`.
22
+ * The innermost label wins when operations nest.
23
+ */
24
+ export declare function withEngineOperation<T>(label: EngineOperationLabel, workspaceId: string | undefined, fn: () => Promise<T>): Promise<T>;
25
+ export declare function reportEngineProgress(sample: EngineProgressSample): void;
26
+ //# sourceMappingURL=engineDiagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engineDiagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/engineDiagnostics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAgBjC,2EAA2E;AAC3E,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI,CAEpF;AAED,kGAAkG;AAClG,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE/F;AAQD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,oBAAoB,GAAG,SAAS,CAEzE;AAED,yFAAyF;AACzF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS,CAElF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAGpE;AAYD;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,KAAK,EAAE,oBAAoB,EAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CA4BZ;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAGvE"}
@@ -0,0 +1,100 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ // Two sources of a sink, so separately configured apps never cross:
3
+ // - each app runs its requests inside `runWithEngineDiagnostics` with its own
4
+ // `deps.diagnostics` (or none), and work a request starts in the background
5
+ // inherits that scope;
6
+ // - `configureEngineDiagnostics` sets the host's own fallback, used by
7
+ // maintenance sweeps outside any request and by apps built without a sink.
8
+ // `createEngine` never sets it, so one app's sink cannot leak into another.
9
+ let fallback;
10
+ const appScope = new AsyncLocalStorage();
11
+ const operationScope = new AsyncLocalStorage();
12
+ // A WeakMap rather than a property: a frozen or non-extensible error must be
13
+ // rethrown untouched, never replaced by the TypeError a defineProperty raises.
14
+ const operationLabels = new WeakMap();
15
+ /** The sink for maintenance callers that run outside an app's requests. */
16
+ export function configureEngineDiagnostics(next) {
17
+ fallback = next;
18
+ }
19
+ /** Run `fn` with `sink` as the diagnostics destination (`createEngine` does this per request). */
20
+ export function runWithEngineDiagnostics(sink, fn) {
21
+ return appScope.run({ sink }, fn);
22
+ }
23
+ function activeSink() {
24
+ // An app's own sink wins; an app built without one reports to the sink the
25
+ // host configured explicitly, never to another app's.
26
+ return appScope.getStore()?.sink ?? fallback;
27
+ }
28
+ /**
29
+ * The labelled operation the caller is running inside, if any. A host database
30
+ * wrapper uses this to attribute each statement's cost to an operation.
31
+ */
32
+ export function currentEngineOperation() {
33
+ return operationScope.getStore();
34
+ }
35
+ /** The operation an error was thrown inside, so the request error path can report it. */
36
+ export function engineOperationOf(error) {
37
+ return typeof error === 'object' && error !== null ? operationLabels.get(error) : undefined;
38
+ }
39
+ /**
40
+ * Give `to` the operation label of `from`, for code that wraps a thrown value
41
+ * in a new error (a plain-object rejection becomes an `Error`), so the request
42
+ * error path still reports the operation.
43
+ */
44
+ export function carryEngineOperation(from, to) {
45
+ const label = engineOperationOf(from);
46
+ if (label !== undefined && !operationLabels.has(to))
47
+ operationLabels.set(to, label);
48
+ }
49
+ function isolate(callback) {
50
+ // A host callback must never alter engine behavior, sync or async.
51
+ try {
52
+ const pending = callback();
53
+ if (pending && typeof pending.then === 'function') {
54
+ void Promise.resolve(pending).catch(() => { });
55
+ }
56
+ }
57
+ catch { /* best effort */ }
58
+ }
59
+ /**
60
+ * Run `fn` as a labelled operation: hosts see its duration and outcome, and any
61
+ * statement it issues can be attributed to it via `currentEngineOperation()`.
62
+ * The innermost label wins when operations nest.
63
+ */
64
+ export async function withEngineOperation(label, workspaceId, fn) {
65
+ const context = workspaceId === undefined ? { label } : { label, workspaceId };
66
+ const sink = activeSink();
67
+ const start = performance.now();
68
+ try {
69
+ const result = await operationScope.run(context, fn);
70
+ if (sink?.operation) {
71
+ isolate(() => sink.operation({ ...context, durationMs: performance.now() - start, outcome: 'ok' }));
72
+ }
73
+ return result;
74
+ }
75
+ catch (caught) {
76
+ // A primitive cannot carry a label, so it leaves as the Error the request
77
+ // error path would turn it into anyway (see `asCodedError`).
78
+ const error = typeof caught === 'object' && caught !== null
79
+ ? caught
80
+ : new Error(typeof caught === 'string' ? caught : 'Unknown error');
81
+ if (!operationLabels.has(error))
82
+ operationLabels.set(error, label);
83
+ if (sink?.operation) {
84
+ const errorName = error instanceof Error ? error.name : undefined;
85
+ isolate(() => sink.operation({
86
+ ...context,
87
+ durationMs: performance.now() - start,
88
+ outcome: 'error',
89
+ ...(errorName ? { errorName } : {}),
90
+ }));
91
+ }
92
+ throw error;
93
+ }
94
+ }
95
+ export function reportEngineProgress(sample) {
96
+ const sink = activeSink();
97
+ if (sink?.progress)
98
+ isolate(() => sink.progress(sample));
99
+ }
100
+ //# sourceMappingURL=engineDiagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engineDiagnostics.js","sourceRoot":"","sources":["../../src/lib/engineDiagnostics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"httpError.d.ts","sourceRoot":"","sources":["../../src/lib/httpError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAMpC;;;;;GAKG;AACH,MAAM,WAAW,UAAW,SAAQ,KAAK;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CASrD;AAED,8FAA8F;AAC9F,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAEpF;AAQD,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAWjG;AAMD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,EACjB,MAAM,SAA6B,GAClC,MAAM,CAIR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO;;;;;;iXAgBrD"}
1
+ {"version":3,"file":"httpError.d.ts","sourceRoot":"","sources":["../../src/lib/httpError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAOpC;;;;;GAKG;AACH,MAAM,WAAW,UAAW,SAAQ,KAAK;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAYrD;AAED,8FAA8F;AAC9F,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAEpF;AAQD,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAWjG;AAMD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,EACjB,MAAM,SAA6B,GAClC,MAAM,CAIR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO;;;;;;iXAgBrD"}
@@ -1,3 +1,4 @@
1
+ import { carryEngineOperation } from './engineDiagnostics.js';
1
2
  import { jsonError, jsonMalformedBody } from './httpResponse.js';
2
3
  import { AdmissionDeniedError } from './admissionError.js';
3
4
  import { admissionDeniedResponse } from '../middleware/admission.js';
@@ -14,9 +15,12 @@ export function asCodedError(err) {
14
15
  const message = 'message' in err ? String(err.message) : 'Unknown error';
15
16
  const error = Object.assign(new Error(message), err);
16
17
  error.message = message;
18
+ carryEngineOperation(err, error);
17
19
  return error;
18
20
  }
19
- return new Error(typeof err === 'string' ? err : 'Unknown error');
21
+ const error = new Error(typeof err === 'string' ? err : 'Unknown error');
22
+ carryEngineOperation(err, error);
23
+ return error;
20
24
  }
21
25
  /** Build an `Error` carrying a stable `code` and HTTP `status` (no cast at the call site). */
22
26
  export function codedError(message, code, status) {
@@ -1 +1 @@
1
- {"version":3,"file":"httpError.js","sourceRoot":"","sources":["../../src/lib/httpError.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpError.js","sourceRoot":"","sources":["../../src/lib/httpError.ts"],"names":[],"mappings":"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"}