@relaycast/engine 8.16.0 → 9.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.
Files changed (154) hide show
  1. package/dist/adapters/node/event-queue.d.ts +7 -2
  2. package/dist/adapters/node/event-queue.d.ts.map +1 -1
  3. package/dist/adapters/node/event-queue.js +19 -4
  4. package/dist/adapters/node/event-queue.js.map +1 -1
  5. package/dist/adapters/node/index.d.ts.map +1 -1
  6. package/dist/adapters/node/index.js +18 -2
  7. package/dist/adapters/node/index.js.map +1 -1
  8. package/dist/adapters/node/ssrf-fetch.d.ts +12 -0
  9. package/dist/adapters/node/ssrf-fetch.d.ts.map +1 -0
  10. package/dist/adapters/node/ssrf-fetch.js +81 -0
  11. package/dist/adapters/node/ssrf-fetch.js.map +1 -0
  12. package/dist/auth/index.d.ts +1 -0
  13. package/dist/auth/index.d.ts.map +1 -1
  14. package/dist/auth/index.js +16 -4
  15. package/dist/auth/index.js.map +1 -1
  16. package/dist/auth/workspaceExpiry.d.ts +28 -0
  17. package/dist/auth/workspaceExpiry.d.ts.map +1 -0
  18. package/dist/auth/workspaceExpiry.js +39 -0
  19. package/dist/auth/workspaceExpiry.js.map +1 -0
  20. package/dist/db/migrations/0062_direct_dm_idempotency.sql +20 -0
  21. package/dist/db/migrations/0063_node_rotation_recovery.sql +13 -0
  22. package/dist/db/migrations/0064_action_invocations_status_dispatched_index.sql +9 -0
  23. package/dist/db/migrations/0065_action_invocations_task_deadline_any_status.sql +10 -0
  24. package/dist/db/migrations/0066_action_invocations_status_sweep_ranges.sql +15 -0
  25. package/dist/db/migrations/0067_webhook_delivery_reliability.sql +37 -0
  26. package/dist/db/schema.d.ts +425 -0
  27. package/dist/db/schema.d.ts.map +1 -1
  28. package/dist/db/schema.js +68 -1
  29. package/dist/db/schema.js.map +1 -1
  30. package/dist/engine/a2aEgress.d.ts +10 -0
  31. package/dist/engine/a2aEgress.d.ts.map +1 -1
  32. package/dist/engine/a2aEgress.js +35 -3
  33. package/dist/engine/a2aEgress.js.map +1 -1
  34. package/dist/engine/attachments.d.ts.map +1 -1
  35. package/dist/engine/attachments.js +5 -3
  36. package/dist/engine/attachments.js.map +1 -1
  37. package/dist/engine/dm.d.ts +5 -1
  38. package/dist/engine/dm.d.ts.map +1 -1
  39. package/dist/engine/dm.js +139 -20
  40. package/dist/engine/dm.js.map +1 -1
  41. package/dist/engine/dmAll.d.ts +6 -0
  42. package/dist/engine/dmAll.d.ts.map +1 -1
  43. package/dist/engine/dmAll.js +51 -2
  44. package/dist/engine/dmAll.js.map +1 -1
  45. package/dist/engine/eventDelivery.d.ts +50 -1
  46. package/dist/engine/eventDelivery.d.ts.map +1 -1
  47. package/dist/engine/eventDelivery.js +435 -75
  48. package/dist/engine/eventDelivery.js.map +1 -1
  49. package/dist/engine/eventDispatch.d.ts.map +1 -1
  50. package/dist/engine/eventDispatch.js +2 -0
  51. package/dist/engine/eventDispatch.js.map +1 -1
  52. package/dist/engine/eventQueue.d.ts +3 -2
  53. package/dist/engine/eventQueue.d.ts.map +1 -1
  54. package/dist/engine/eventQueue.js +9 -4
  55. package/dist/engine/eventQueue.js.map +1 -1
  56. package/dist/engine/eventSubscription.d.ts +5 -0
  57. package/dist/engine/eventSubscription.d.ts.map +1 -1
  58. package/dist/engine/eventSubscription.js +4 -0
  59. package/dist/engine/eventSubscription.js.map +1 -1
  60. package/dist/engine/httpPushDispatch.d.ts +1 -0
  61. package/dist/engine/httpPushDispatch.d.ts.map +1 -1
  62. package/dist/engine/httpPushDispatch.js +21 -8
  63. package/dist/engine/httpPushDispatch.js.map +1 -1
  64. package/dist/engine/inboundWebhook.d.ts +4 -0
  65. package/dist/engine/inboundWebhook.d.ts.map +1 -1
  66. package/dist/engine/inboundWebhook.js +5 -0
  67. package/dist/engine/inboundWebhook.js.map +1 -1
  68. package/dist/engine/invocationCompletion.d.ts.map +1 -1
  69. package/dist/engine/invocationCompletion.js +2 -0
  70. package/dist/engine/invocationCompletion.js.map +1 -1
  71. package/dist/engine/messageMetadata.d.ts +4 -0
  72. package/dist/engine/messageMetadata.d.ts.map +1 -1
  73. package/dist/engine/messageMetadata.js +7 -1
  74. package/dist/engine/messageMetadata.js.map +1 -1
  75. package/dist/engine/node.d.ts +37 -7
  76. package/dist/engine/node.d.ts.map +1 -1
  77. package/dist/engine/node.js +107 -19
  78. package/dist/engine/node.js.map +1 -1
  79. package/dist/engine/nodeContext.d.ts +1 -0
  80. package/dist/engine/nodeContext.d.ts.map +1 -1
  81. package/dist/engine/nodeContext.js +1 -0
  82. package/dist/engine/nodeContext.js.map +1 -1
  83. package/dist/engine/nodeDeliver.d.ts +1 -0
  84. package/dist/engine/nodeDeliver.d.ts.map +1 -1
  85. package/dist/engine/nodeDeliver.js +1 -0
  86. package/dist/engine/nodeDeliver.js.map +1 -1
  87. package/dist/engine/sessionEvent.d.ts.map +1 -1
  88. package/dist/engine/sessionEvent.js +2 -0
  89. package/dist/engine/sessionEvent.js.map +1 -1
  90. package/dist/engine/workspace.d.ts +7 -0
  91. package/dist/engine/workspace.d.ts.map +1 -1
  92. package/dist/engine/workspace.js +11 -0
  93. package/dist/engine/workspace.js.map +1 -1
  94. package/dist/engine/wsAuth.d.ts +2 -1
  95. package/dist/engine/wsAuth.d.ts.map +1 -1
  96. package/dist/engine/wsAuth.js +27 -2
  97. package/dist/engine/wsAuth.js.map +1 -1
  98. package/dist/index.d.ts +4 -2
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +7 -2
  101. package/dist/index.js.map +1 -1
  102. package/dist/lib/serverTelemetry.d.ts +13 -2
  103. package/dist/lib/serverTelemetry.d.ts.map +1 -1
  104. package/dist/lib/serverTelemetry.js +4 -0
  105. package/dist/lib/serverTelemetry.js.map +1 -1
  106. package/dist/lib/ssrf.d.ts +16 -17
  107. package/dist/lib/ssrf.d.ts.map +1 -1
  108. package/dist/lib/ssrf.js +160 -46
  109. package/dist/lib/ssrf.js.map +1 -1
  110. package/dist/lib/standardWebhook.d.ts +15 -0
  111. package/dist/lib/standardWebhook.d.ts.map +1 -0
  112. package/dist/lib/standardWebhook.js +89 -0
  113. package/dist/lib/standardWebhook.js.map +1 -0
  114. package/dist/middleware/auth.d.ts.map +1 -1
  115. package/dist/middleware/auth.js +3 -2
  116. package/dist/middleware/auth.js.map +1 -1
  117. package/dist/middleware/idempotency.d.ts +15 -9
  118. package/dist/middleware/idempotency.d.ts.map +1 -1
  119. package/dist/middleware/idempotency.js +104 -58
  120. package/dist/middleware/idempotency.js.map +1 -1
  121. package/dist/ports/index.d.ts +6 -0
  122. package/dist/ports/index.d.ts.map +1 -1
  123. package/dist/routes/a2a.d.ts.map +1 -1
  124. package/dist/routes/a2a.js +15 -2
  125. package/dist/routes/a2a.js.map +1 -1
  126. package/dist/routes/action.js +1 -0
  127. package/dist/routes/action.js.map +1 -1
  128. package/dist/routes/agent.d.ts.map +1 -1
  129. package/dist/routes/agent.js +13 -2
  130. package/dist/routes/agent.js.map +1 -1
  131. package/dist/routes/deliveryRouting.d.ts.map +1 -1
  132. package/dist/routes/deliveryRouting.js +3 -2
  133. package/dist/routes/deliveryRouting.js.map +1 -1
  134. package/dist/routes/dm.d.ts.map +1 -1
  135. package/dist/routes/dm.js +70 -42
  136. package/dist/routes/dm.js.map +1 -1
  137. package/dist/routes/eventSubscription.d.ts.map +1 -1
  138. package/dist/routes/eventSubscription.js +64 -3
  139. package/dist/routes/eventSubscription.js.map +1 -1
  140. package/dist/routes/node.d.ts.map +1 -1
  141. package/dist/routes/node.js +53 -4
  142. package/dist/routes/node.js.map +1 -1
  143. package/dist/routes/reaction.js +2 -0
  144. package/dist/routes/reaction.js.map +1 -1
  145. package/dist/routes/receipt.js +1 -0
  146. package/dist/routes/receipt.js.map +1 -1
  147. package/dist/routes/webhookOutbox.d.ts +1 -0
  148. package/dist/routes/webhookOutbox.d.ts.map +1 -1
  149. package/dist/routes/webhookOutbox.js +9 -5
  150. package/dist/routes/webhookOutbox.js.map +1 -1
  151. package/dist/routes/workspace.d.ts.map +1 -1
  152. package/dist/routes/workspace.js +41 -7
  153. package/dist/routes/workspace.js.map +1 -1
  154. package/package.json +4 -4
@@ -1365,6 +1365,80 @@ export declare const nodes: import("drizzle-orm/sqlite-core").SQLiteTableWithCol
1365
1365
  }, {}, {
1366
1366
  length: number | undefined;
1367
1367
  }>;
1368
+ previousTokenHash: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1369
+ name: "previous_token_hash";
1370
+ tableName: "nodes";
1371
+ dataType: "string";
1372
+ columnType: "SQLiteText";
1373
+ data: string;
1374
+ driverParam: string;
1375
+ notNull: false;
1376
+ hasDefault: false;
1377
+ isPrimaryKey: false;
1378
+ isAutoincrement: false;
1379
+ hasRuntimeDefault: false;
1380
+ enumValues: [string, ...string[]];
1381
+ baseColumn: never;
1382
+ identity: undefined;
1383
+ generated: undefined;
1384
+ }, {}, {
1385
+ length: number | undefined;
1386
+ }>;
1387
+ previousTokenExpiresAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1388
+ name: "previous_token_expires_at";
1389
+ tableName: "nodes";
1390
+ dataType: "date";
1391
+ columnType: "SQLiteTimestamp";
1392
+ data: Date;
1393
+ driverParam: number;
1394
+ notNull: false;
1395
+ hasDefault: false;
1396
+ isPrimaryKey: false;
1397
+ isAutoincrement: false;
1398
+ hasRuntimeDefault: false;
1399
+ enumValues: undefined;
1400
+ baseColumn: never;
1401
+ identity: undefined;
1402
+ generated: undefined;
1403
+ }, {}, {}>;
1404
+ rotationIdempotencyKeyHash: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1405
+ name: "rotation_idempotency_key_hash";
1406
+ tableName: "nodes";
1407
+ dataType: "string";
1408
+ columnType: "SQLiteText";
1409
+ data: string;
1410
+ driverParam: string;
1411
+ notNull: false;
1412
+ hasDefault: false;
1413
+ isPrimaryKey: false;
1414
+ isAutoincrement: false;
1415
+ hasRuntimeDefault: false;
1416
+ enumValues: [string, ...string[]];
1417
+ baseColumn: never;
1418
+ identity: undefined;
1419
+ generated: undefined;
1420
+ }, {}, {
1421
+ length: number | undefined;
1422
+ }>;
1423
+ rotationRequestDigest: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1424
+ name: "rotation_request_digest";
1425
+ tableName: "nodes";
1426
+ dataType: "string";
1427
+ columnType: "SQLiteText";
1428
+ data: string;
1429
+ driverParam: string;
1430
+ notNull: false;
1431
+ hasDefault: false;
1432
+ isPrimaryKey: false;
1433
+ isAutoincrement: false;
1434
+ hasRuntimeDefault: false;
1435
+ enumValues: [string, ...string[]];
1436
+ baseColumn: never;
1437
+ identity: undefined;
1438
+ generated: undefined;
1439
+ }, {}, {
1440
+ length: number | undefined;
1441
+ }>;
1368
1442
  machineId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1369
1443
  name: "machine_id";
1370
1444
  tableName: "nodes";
@@ -4471,6 +4545,132 @@ export declare const messages: import("drizzle-orm/sqlite-core").SQLiteTableWith
4471
4545
  };
4472
4546
  dialect: "sqlite";
4473
4547
  }>;
4548
+ /**
4549
+ * Atomic DM idempotency claims. Cloudflare KV remains the fast replay cache,
4550
+ * while this D1 row is the concurrency authority across direct and A2A
4551
+ * routing: the claim and message share one admission batch. The response
4552
+ * snapshot is retained for the 24-hour claim lifetime so a replay returns the
4553
+ * exact public receipt even if mutable message context changes meanwhile.
4554
+ */
4555
+ export declare const directDmIdempotency: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
4556
+ name: "direct_dm_idempotency";
4557
+ schema: undefined;
4558
+ columns: {
4559
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4560
+ name: "id";
4561
+ tableName: "direct_dm_idempotency";
4562
+ dataType: "string";
4563
+ columnType: "SQLiteText";
4564
+ data: string;
4565
+ driverParam: string;
4566
+ notNull: true;
4567
+ hasDefault: false;
4568
+ isPrimaryKey: true;
4569
+ isAutoincrement: false;
4570
+ hasRuntimeDefault: false;
4571
+ enumValues: [string, ...string[]];
4572
+ baseColumn: never;
4573
+ identity: undefined;
4574
+ generated: undefined;
4575
+ }, {}, {
4576
+ length: number | undefined;
4577
+ }>;
4578
+ workspaceId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4579
+ name: "workspace_id";
4580
+ tableName: "direct_dm_idempotency";
4581
+ dataType: "string";
4582
+ columnType: "SQLiteText";
4583
+ data: string;
4584
+ driverParam: string;
4585
+ notNull: true;
4586
+ hasDefault: false;
4587
+ isPrimaryKey: false;
4588
+ isAutoincrement: false;
4589
+ hasRuntimeDefault: false;
4590
+ enumValues: [string, ...string[]];
4591
+ baseColumn: never;
4592
+ identity: undefined;
4593
+ generated: undefined;
4594
+ }, {}, {
4595
+ length: number | undefined;
4596
+ }>;
4597
+ messageId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4598
+ name: "message_id";
4599
+ tableName: "direct_dm_idempotency";
4600
+ dataType: "string";
4601
+ columnType: "SQLiteText";
4602
+ data: string;
4603
+ driverParam: string;
4604
+ notNull: true;
4605
+ hasDefault: false;
4606
+ isPrimaryKey: false;
4607
+ isAutoincrement: false;
4608
+ hasRuntimeDefault: false;
4609
+ enumValues: [string, ...string[]];
4610
+ baseColumn: never;
4611
+ identity: undefined;
4612
+ generated: undefined;
4613
+ }, {}, {
4614
+ length: number | undefined;
4615
+ }>;
4616
+ fingerprint: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4617
+ name: "fingerprint";
4618
+ tableName: "direct_dm_idempotency";
4619
+ dataType: "string";
4620
+ columnType: "SQLiteText";
4621
+ data: string;
4622
+ driverParam: string;
4623
+ notNull: true;
4624
+ hasDefault: false;
4625
+ isPrimaryKey: false;
4626
+ isAutoincrement: false;
4627
+ hasRuntimeDefault: false;
4628
+ enumValues: [string, ...string[]];
4629
+ baseColumn: never;
4630
+ identity: undefined;
4631
+ generated: undefined;
4632
+ }, {}, {
4633
+ length: number | undefined;
4634
+ }>;
4635
+ response: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4636
+ name: "response";
4637
+ tableName: "direct_dm_idempotency";
4638
+ dataType: "json";
4639
+ columnType: "SQLiteTextJson";
4640
+ data: Record<string, unknown>;
4641
+ driverParam: string;
4642
+ notNull: true;
4643
+ hasDefault: false;
4644
+ isPrimaryKey: false;
4645
+ isAutoincrement: false;
4646
+ hasRuntimeDefault: false;
4647
+ enumValues: undefined;
4648
+ baseColumn: never;
4649
+ identity: undefined;
4650
+ generated: undefined;
4651
+ }, {}, {
4652
+ $type: Record<string, unknown>;
4653
+ }>;
4654
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4655
+ name: "created_at";
4656
+ tableName: "direct_dm_idempotency";
4657
+ dataType: "date";
4658
+ columnType: "SQLiteTimestamp";
4659
+ data: Date;
4660
+ driverParam: number;
4661
+ notNull: true;
4662
+ hasDefault: true;
4663
+ isPrimaryKey: false;
4664
+ isAutoincrement: false;
4665
+ hasRuntimeDefault: false;
4666
+ enumValues: undefined;
4667
+ baseColumn: never;
4668
+ identity: undefined;
4669
+ generated: undefined;
4670
+ }, {}, {}>;
4671
+ };
4672
+ dialect: "sqlite";
4673
+ }>;
4474
4674
  export declare const messageSessions: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
4475
4675
  name: "message_sessions";
4476
4676
  schema: undefined;
@@ -6143,6 +6343,26 @@ export declare const eventSubscriptions: import("drizzle-orm/sqlite-core").SQLit
6143
6343
  }, {}, {
6144
6344
  length: number | undefined;
6145
6345
  }>;
6346
+ signatureScheme: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6347
+ name: "signature_scheme";
6348
+ tableName: "event_subscriptions";
6349
+ dataType: "string";
6350
+ columnType: "SQLiteText";
6351
+ data: "standard-webhooks" | "legacy";
6352
+ driverParam: string;
6353
+ notNull: true;
6354
+ hasDefault: true;
6355
+ isPrimaryKey: false;
6356
+ isAutoincrement: false;
6357
+ hasRuntimeDefault: false;
6358
+ enumValues: [string, ...string[]];
6359
+ baseColumn: never;
6360
+ identity: undefined;
6361
+ generated: undefined;
6362
+ }, {}, {
6363
+ length: number | undefined;
6364
+ $type: "standard-webhooks" | "legacy";
6365
+ }>;
6146
6366
  isActive: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6147
6367
  name: "is_active";
6148
6368
  tableName: "event_subscriptions";
@@ -8003,6 +8223,23 @@ export declare const pendingEvents: import("drizzle-orm/sqlite-core").SQLiteTabl
8003
8223
  identity: undefined;
8004
8224
  generated: undefined;
8005
8225
  }, {}, {}>;
8226
+ webhookInitialized: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8227
+ name: "webhook_initialized";
8228
+ tableName: "pending_events";
8229
+ dataType: "boolean";
8230
+ columnType: "SQLiteBoolean";
8231
+ data: boolean;
8232
+ driverParam: number;
8233
+ notNull: true;
8234
+ hasDefault: true;
8235
+ isPrimaryKey: false;
8236
+ isAutoincrement: false;
8237
+ hasRuntimeDefault: false;
8238
+ enumValues: undefined;
8239
+ baseColumn: never;
8240
+ identity: undefined;
8241
+ generated: undefined;
8242
+ }, {}, {}>;
8006
8243
  lastError: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8007
8244
  name: "last_error";
8008
8245
  tableName: "pending_events";
@@ -8076,6 +8313,194 @@ export declare const pendingEvents: import("drizzle-orm/sqlite-core").SQLiteTabl
8076
8313
  };
8077
8314
  dialect: "sqlite";
8078
8315
  }>;
8316
+ export declare const webhookDeliveries: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
8317
+ name: "webhook_deliveries";
8318
+ schema: undefined;
8319
+ columns: {
8320
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8321
+ name: "id";
8322
+ tableName: "webhook_deliveries";
8323
+ dataType: "string";
8324
+ columnType: "SQLiteText";
8325
+ data: string;
8326
+ driverParam: string;
8327
+ notNull: true;
8328
+ hasDefault: false;
8329
+ isPrimaryKey: true;
8330
+ isAutoincrement: false;
8331
+ hasRuntimeDefault: false;
8332
+ enumValues: [string, ...string[]];
8333
+ baseColumn: never;
8334
+ identity: undefined;
8335
+ generated: undefined;
8336
+ }, {}, {
8337
+ length: number | undefined;
8338
+ }>;
8339
+ eventId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8340
+ name: "event_id";
8341
+ tableName: "webhook_deliveries";
8342
+ dataType: "string";
8343
+ columnType: "SQLiteText";
8344
+ data: string;
8345
+ driverParam: string;
8346
+ notNull: true;
8347
+ hasDefault: false;
8348
+ isPrimaryKey: false;
8349
+ isAutoincrement: false;
8350
+ hasRuntimeDefault: false;
8351
+ enumValues: [string, ...string[]];
8352
+ baseColumn: never;
8353
+ identity: undefined;
8354
+ generated: undefined;
8355
+ }, {}, {
8356
+ length: number | undefined;
8357
+ }>;
8358
+ subscriptionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8359
+ name: "subscription_id";
8360
+ tableName: "webhook_deliveries";
8361
+ dataType: "string";
8362
+ columnType: "SQLiteText";
8363
+ data: string;
8364
+ driverParam: string;
8365
+ notNull: true;
8366
+ hasDefault: false;
8367
+ isPrimaryKey: false;
8368
+ isAutoincrement: false;
8369
+ hasRuntimeDefault: false;
8370
+ enumValues: [string, ...string[]];
8371
+ baseColumn: never;
8372
+ identity: undefined;
8373
+ generated: undefined;
8374
+ }, {}, {
8375
+ length: number | undefined;
8376
+ }>;
8377
+ status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8378
+ name: "status";
8379
+ tableName: "webhook_deliveries";
8380
+ dataType: "string";
8381
+ columnType: "SQLiteText";
8382
+ data: "pending" | "failed" | "succeeded" | "dead_letter";
8383
+ driverParam: string;
8384
+ notNull: true;
8385
+ hasDefault: true;
8386
+ isPrimaryKey: false;
8387
+ isAutoincrement: false;
8388
+ hasRuntimeDefault: false;
8389
+ enumValues: [string, ...string[]];
8390
+ baseColumn: never;
8391
+ identity: undefined;
8392
+ generated: undefined;
8393
+ }, {}, {
8394
+ length: number | undefined;
8395
+ $type: "pending" | "failed" | "succeeded" | "dead_letter";
8396
+ }>;
8397
+ attempts: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8398
+ name: "attempts";
8399
+ tableName: "webhook_deliveries";
8400
+ dataType: "number";
8401
+ columnType: "SQLiteInteger";
8402
+ data: number;
8403
+ driverParam: number;
8404
+ notNull: true;
8405
+ hasDefault: true;
8406
+ isPrimaryKey: false;
8407
+ isAutoincrement: false;
8408
+ hasRuntimeDefault: false;
8409
+ enumValues: undefined;
8410
+ baseColumn: never;
8411
+ identity: undefined;
8412
+ generated: undefined;
8413
+ }, {}, {}>;
8414
+ nextAttemptAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8415
+ name: "next_attempt_at";
8416
+ tableName: "webhook_deliveries";
8417
+ dataType: "date";
8418
+ columnType: "SQLiteTimestamp";
8419
+ data: Date;
8420
+ driverParam: number;
8421
+ notNull: true;
8422
+ hasDefault: true;
8423
+ isPrimaryKey: false;
8424
+ isAutoincrement: false;
8425
+ hasRuntimeDefault: false;
8426
+ enumValues: undefined;
8427
+ baseColumn: never;
8428
+ identity: undefined;
8429
+ generated: undefined;
8430
+ }, {}, {}>;
8431
+ lastError: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8432
+ name: "last_error";
8433
+ tableName: "webhook_deliveries";
8434
+ dataType: "string";
8435
+ columnType: "SQLiteText";
8436
+ data: string;
8437
+ driverParam: string;
8438
+ notNull: false;
8439
+ hasDefault: false;
8440
+ isPrimaryKey: false;
8441
+ isAutoincrement: false;
8442
+ hasRuntimeDefault: false;
8443
+ enumValues: [string, ...string[]];
8444
+ baseColumn: never;
8445
+ identity: undefined;
8446
+ generated: undefined;
8447
+ }, {}, {
8448
+ length: number | undefined;
8449
+ }>;
8450
+ lastStatus: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8451
+ name: "last_status";
8452
+ tableName: "webhook_deliveries";
8453
+ dataType: "number";
8454
+ columnType: "SQLiteInteger";
8455
+ data: number;
8456
+ driverParam: number;
8457
+ notNull: false;
8458
+ hasDefault: false;
8459
+ isPrimaryKey: false;
8460
+ isAutoincrement: false;
8461
+ hasRuntimeDefault: false;
8462
+ enumValues: undefined;
8463
+ baseColumn: never;
8464
+ identity: undefined;
8465
+ generated: undefined;
8466
+ }, {}, {}>;
8467
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8468
+ name: "created_at";
8469
+ tableName: "webhook_deliveries";
8470
+ dataType: "date";
8471
+ columnType: "SQLiteTimestamp";
8472
+ data: Date;
8473
+ driverParam: number;
8474
+ notNull: true;
8475
+ hasDefault: true;
8476
+ isPrimaryKey: false;
8477
+ isAutoincrement: false;
8478
+ hasRuntimeDefault: false;
8479
+ enumValues: undefined;
8480
+ baseColumn: never;
8481
+ identity: undefined;
8482
+ generated: undefined;
8483
+ }, {}, {}>;
8484
+ completedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8485
+ name: "completed_at";
8486
+ tableName: "webhook_deliveries";
8487
+ dataType: "date";
8488
+ columnType: "SQLiteTimestamp";
8489
+ data: Date;
8490
+ driverParam: number;
8491
+ notNull: false;
8492
+ hasDefault: false;
8493
+ isPrimaryKey: false;
8494
+ isAutoincrement: false;
8495
+ hasRuntimeDefault: false;
8496
+ enumValues: undefined;
8497
+ baseColumn: never;
8498
+ identity: undefined;
8499
+ generated: undefined;
8500
+ }, {}, {}>;
8501
+ };
8502
+ dialect: "sqlite";
8503
+ }>;
8079
8504
  /**
8080
8505
  * Durable, per-workspace log of every workspace stream event. `seq` is a
8081
8506
  * per-workspace monotonic cursor (from 1) assigned at insert; `payload` stores
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
package/dist/db/schema.js CHANGED
@@ -164,6 +164,14 @@ export const nodes = sqliteTable('nodes', {
164
164
  .references(() => workspaces.id, { onDelete: 'cascade' }),
165
165
  name: text('name').notNull(),
166
166
  tokenHash: text('token_hash').notNull().unique(),
167
+ // A successful idempotent rotation retains only the superseded token hash
168
+ // and request binding for a bounded recovery window. This lets a caller
169
+ // recover the replacement after a lost 201 without making the workspace
170
+ // key sufficient to rotate an established node.
171
+ previousTokenHash: text('previous_token_hash'),
172
+ previousTokenExpiresAt: integer('previous_token_expires_at', { mode: 'timestamp' }),
173
+ rotationIdempotencyKeyHash: text('rotation_idempotency_key_hash'),
174
+ rotationRequestDigest: text('rotation_request_digest'),
167
175
  // Physical machine grouping in fleet views and a placement input; never a
168
176
  // capability scope. Set at enrollment when the caller supplies it, and by a
169
177
  // provider on register; null when neither reports one.
@@ -199,6 +207,7 @@ export const nodes = sqliteTable('nodes', {
199
207
  index('idx_nodes_status_heartbeat').on(table.workspaceId, table.status, table.lastHeartbeatAt),
200
208
  index('idx_nodes_workspace_machine').on(table.workspaceId, table.machineId),
201
209
  index('idx_nodes_workspace_machine_proven').on(table.workspaceId, table.machineId, table.provenLiveAt),
210
+ index('idx_nodes_workspace_previous_token').on(table.workspaceId, table.previousTokenHash),
202
211
  ]);
203
212
  // ============================================
204
213
  // Node Providers
@@ -536,6 +545,26 @@ export const messages = sqliteTable('messages', {
536
545
  index('idx_messages_agent').on(table.agentId),
537
546
  index('idx_messages_workspace_session').on(table.workspaceId, table.sessionRef, sql `length(${table.id})`, table.id),
538
547
  ]);
548
+ /**
549
+ * Atomic DM idempotency claims. Cloudflare KV remains the fast replay cache,
550
+ * while this D1 row is the concurrency authority across direct and A2A
551
+ * routing: the claim and message share one admission batch. The response
552
+ * snapshot is retained for the 24-hour claim lifetime so a replay returns the
553
+ * exact public receipt even if mutable message context changes meanwhile.
554
+ */
555
+ export const directDmIdempotency = sqliteTable('direct_dm_idempotency', {
556
+ id: text('id').primaryKey(),
557
+ workspaceId: text('workspace_id')
558
+ .notNull()
559
+ .references(() => workspaces.id, { onDelete: 'cascade' }),
560
+ messageId: text('message_id').notNull(),
561
+ fingerprint: text('fingerprint').notNull(),
562
+ response: text('response', { mode: 'json' }).$type().notNull(),
563
+ createdAt: integer('created_at', { mode: 'timestamp' }).notNull().default(sql `(unixepoch())`),
564
+ }, (table) => [
565
+ index('idx_direct_dm_idempotency_workspace_created').on(table.workspaceId, table.createdAt),
566
+ index('idx_direct_dm_idempotency_retention').on(table.createdAt, table.id),
567
+ ]);
539
568
  // Durable, payload-free evidence that a session_ref existed in a workspace.
540
569
  // Message retention may remove every matching message; this ledger deliberately
541
570
  // survives that pruning so the resolver can report aged_out instead of guessing
@@ -780,6 +809,10 @@ export const eventSubscriptions = sqliteTable('event_subscriptions', {
780
809
  url: text('url').notNull(),
781
810
  headers: text('headers', { mode: 'json' }).$type(),
782
811
  secret: text('secret'),
812
+ signatureScheme: text('signature_scheme')
813
+ .$type()
814
+ .notNull()
815
+ .default('legacy'),
783
816
  isActive: integer('is_active', { mode: 'boolean' }).notNull().default(true),
784
817
  createdAt: integer('created_at', { mode: 'timestamp' }).notNull().default(sql `(unixepoch())`),
785
818
  }, (table) => [
@@ -1030,7 +1063,12 @@ export const pendingEvents = sqliteTable('pending_events', {
1030
1063
  payload: text('payload', { mode: 'json' }).notNull(),
1031
1064
  status: text('status').notNull().default('pending'),
1032
1065
  attempts: integer('attempts').notNull().default(0),
1033
- maxAttempts: integer('max_attempts').notNull().default(5),
1066
+ // Parent claims cover crashes and scheduling; per-subscriber retry limits
1067
+ // live on webhookDeliveries. Keep enough headroom that lease recovery
1068
+ // cannot exhaust the parent before a subscriber reaches its final attempt.
1069
+ // Settled parents remain for 24h delivery-health/replay retention.
1070
+ maxAttempts: integer('max_attempts').notNull().default(32),
1071
+ webhookInitialized: integer('webhook_initialized', { mode: 'boolean' }).notNull().default(false),
1034
1072
  lastError: text('last_error'),
1035
1073
  createdAt: integer('created_at', { mode: 'timestamp' }).notNull().default(sql `(unixepoch())`),
1036
1074
  processAfter: integer('process_after', { mode: 'timestamp' }).notNull().default(sql `(unixepoch())`),
@@ -1040,6 +1078,35 @@ export const pendingEvents = sqliteTable('pending_events', {
1040
1078
  index('idx_pending_events_workspace').on(table.workspaceId),
1041
1079
  ]);
1042
1080
  // ============================================
1081
+ // Per-subscriber Webhook Deliveries
1082
+ // ============================================
1083
+ export const webhookDeliveries = sqliteTable('webhook_deliveries', {
1084
+ id: text('id').primaryKey(),
1085
+ eventId: text('event_id')
1086
+ .notNull()
1087
+ .references(() => pendingEvents.id, { onDelete: 'cascade' }),
1088
+ subscriptionId: text('subscription_id')
1089
+ .notNull()
1090
+ .references(() => eventSubscriptions.id, { onDelete: 'cascade' }),
1091
+ status: text('status')
1092
+ .$type()
1093
+ .notNull()
1094
+ .default('pending'),
1095
+ attempts: integer('attempts').notNull().default(0),
1096
+ nextAttemptAt: integer('next_attempt_at', { mode: 'timestamp' })
1097
+ .notNull()
1098
+ .default(sql `(unixepoch())`),
1099
+ lastError: text('last_error'),
1100
+ lastStatus: integer('last_status'),
1101
+ createdAt: integer('created_at', { mode: 'timestamp' }).notNull().default(sql `(unixepoch())`),
1102
+ completedAt: integer('completed_at', { mode: 'timestamp' }),
1103
+ }, (table) => [
1104
+ uniqueIndex('webhook_deliveries_event_subscription_unique')
1105
+ .on(table.eventId, table.subscriptionId),
1106
+ index('idx_webhook_deliveries_due').on(table.status, table.nextAttemptAt),
1107
+ index('idx_webhook_deliveries_subscription').on(table.subscriptionId, table.createdAt),
1108
+ ]);
1109
+ // ============================================
1043
1110
  // Workspace Event Log (durable observer plane)
1044
1111
  // ============================================
1045
1112
  /**