@relaycast/engine 4.1.6 → 5.0.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 (190) hide show
  1. package/dist/adapters/node/index.d.ts.map +1 -1
  2. package/dist/adapters/node/index.js +23 -1
  3. package/dist/adapters/node/index.js.map +1 -1
  4. package/dist/adapters/node/presence.d.ts +7 -3
  5. package/dist/adapters/node/presence.d.ts.map +1 -1
  6. package/dist/adapters/node/presence.js +10 -8
  7. package/dist/adapters/node/presence.js.map +1 -1
  8. package/dist/adapters/node/realtime.d.ts.map +1 -1
  9. package/dist/adapters/node/realtime.js +8 -3
  10. package/dist/adapters/node/realtime.js.map +1 -1
  11. package/dist/bin/serve.js +2 -4
  12. package/dist/bin/serve.js.map +1 -1
  13. package/dist/db/migrations/0021_node_delivery_contracts.sql +70 -0
  14. package/dist/db/migrations/0022_http_push_redrive.sql +13 -0
  15. package/dist/db/migrations/0023_direct_ws_nodes.sql +124 -0
  16. package/dist/db/migrations/0024_binding_workspace_constraints.sql +109 -0
  17. package/dist/db/schema.d.ts +339 -0
  18. package/dist/db/schema.d.ts.map +1 -1
  19. package/dist/db/schema.js +48 -1
  20. package/dist/db/schema.js.map +1 -1
  21. package/dist/engine/action.d.ts +0 -7
  22. package/dist/engine/action.d.ts.map +1 -1
  23. package/dist/engine/action.js +0 -7
  24. package/dist/engine/action.js.map +1 -1
  25. package/dist/engine/agent.d.ts.map +1 -1
  26. package/dist/engine/agent.js +7 -1
  27. package/dist/engine/agent.js.map +1 -1
  28. package/dist/engine/delivery.d.ts +24 -0
  29. package/dist/engine/delivery.d.ts.map +1 -1
  30. package/dist/engine/delivery.js +190 -74
  31. package/dist/engine/delivery.js.map +1 -1
  32. package/dist/engine/deliveryWrites.d.ts +5 -0
  33. package/dist/engine/deliveryWrites.d.ts.map +1 -1
  34. package/dist/engine/deliveryWrites.js +51 -11
  35. package/dist/engine/deliveryWrites.js.map +1 -1
  36. package/dist/engine/invocationCompletion.d.ts +1 -1
  37. package/dist/engine/invocationCompletion.d.ts.map +1 -1
  38. package/dist/engine/invocationCompletion.js +1 -16
  39. package/dist/engine/invocationCompletion.js.map +1 -1
  40. package/dist/engine/message.d.ts.map +1 -1
  41. package/dist/engine/message.js +1 -0
  42. package/dist/engine/message.js.map +1 -1
  43. package/dist/engine/node.d.ts +85 -0
  44. package/dist/engine/node.d.ts.map +1 -1
  45. package/dist/engine/node.js +473 -14
  46. package/dist/engine/node.js.map +1 -1
  47. package/dist/engine/nodeContext.d.ts +22 -0
  48. package/dist/engine/nodeContext.d.ts.map +1 -0
  49. package/dist/engine/nodeContext.js +104 -0
  50. package/dist/engine/nodeContext.js.map +1 -0
  51. package/dist/engine/thread.d.ts.map +1 -1
  52. package/dist/engine/thread.js +37 -17
  53. package/dist/engine/thread.js.map +1 -1
  54. package/dist/engine/wsAuth.d.ts +36 -0
  55. package/dist/engine/wsAuth.d.ts.map +1 -0
  56. package/dist/engine/wsAuth.js +57 -0
  57. package/dist/engine/wsAuth.js.map +1 -0
  58. package/dist/engine.d.ts.map +1 -1
  59. package/dist/engine.js +46 -74
  60. package/dist/engine.js.map +1 -1
  61. package/dist/entrypoints/node.d.ts.map +1 -1
  62. package/dist/entrypoints/node.js +27 -51
  63. package/dist/entrypoints/node.js.map +1 -1
  64. package/dist/index.d.ts +1 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +5 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/lib/httpError.d.ts +5 -1
  69. package/dist/lib/httpError.d.ts.map +1 -1
  70. package/dist/lib/httpError.js +9 -5
  71. package/dist/lib/httpError.js.map +1 -1
  72. package/dist/lib/httpQuery.d.ts +28 -0
  73. package/dist/lib/httpQuery.d.ts.map +1 -0
  74. package/dist/lib/httpQuery.js +32 -0
  75. package/dist/lib/httpQuery.js.map +1 -0
  76. package/dist/lib/httpResponse.d.ts +116 -0
  77. package/dist/lib/httpResponse.d.ts.map +1 -0
  78. package/dist/lib/httpResponse.js +65 -0
  79. package/dist/lib/httpResponse.js.map +1 -0
  80. package/dist/middleware/auth.d.ts.map +1 -1
  81. package/dist/middleware/auth.js +3 -2
  82. package/dist/middleware/auth.js.map +1 -1
  83. package/dist/middleware/idempotency.d.ts +30 -0
  84. package/dist/middleware/idempotency.d.ts.map +1 -1
  85. package/dist/middleware/idempotency.js +14 -0
  86. package/dist/middleware/idempotency.js.map +1 -1
  87. package/dist/middleware/planLimits.d.ts.map +1 -1
  88. package/dist/middleware/planLimits.js +2 -7
  89. package/dist/middleware/planLimits.js.map +1 -1
  90. package/dist/middleware/rateLimit.d.ts.map +1 -1
  91. package/dist/middleware/rateLimit.js +2 -7
  92. package/dist/middleware/rateLimit.js.map +1 -1
  93. package/dist/ports/index.d.ts +0 -14
  94. package/dist/ports/index.d.ts.map +1 -1
  95. package/dist/routes/a2a.d.ts.map +1 -1
  96. package/dist/routes/a2a.js +41 -83
  97. package/dist/routes/a2a.js.map +1 -1
  98. package/dist/routes/action.d.ts.map +1 -1
  99. package/dist/routes/action.js +32 -37
  100. package/dist/routes/action.js.map +1 -1
  101. package/dist/routes/agent.d.ts.map +1 -1
  102. package/dist/routes/agent.js +69 -73
  103. package/dist/routes/agent.js.map +1 -1
  104. package/dist/routes/certify.d.ts.map +1 -1
  105. package/dist/routes/certify.js +21 -35
  106. package/dist/routes/certify.js.map +1 -1
  107. package/dist/routes/channel.d.ts.map +1 -1
  108. package/dist/routes/channel.js +33 -71
  109. package/dist/routes/channel.js.map +1 -1
  110. package/dist/routes/console.d.ts.map +1 -1
  111. package/dist/routes/console.js +22 -32
  112. package/dist/routes/console.js.map +1 -1
  113. package/dist/routes/delivery.d.ts.map +1 -1
  114. package/dist/routes/delivery.js +22 -54
  115. package/dist/routes/delivery.js.map +1 -1
  116. package/dist/routes/deliveryRouting.d.ts +6 -0
  117. package/dist/routes/deliveryRouting.d.ts.map +1 -1
  118. package/dist/routes/deliveryRouting.js +289 -35
  119. package/dist/routes/deliveryRouting.js.map +1 -1
  120. package/dist/routes/directory.d.ts.map +1 -1
  121. package/dist/routes/directory.js +47 -63
  122. package/dist/routes/directory.js.map +1 -1
  123. package/dist/routes/dm.d.ts.map +1 -1
  124. package/dist/routes/dm.js +21 -42
  125. package/dist/routes/dm.js.map +1 -1
  126. package/dist/routes/eventSubscription.d.ts.map +1 -1
  127. package/dist/routes/eventSubscription.js +15 -21
  128. package/dist/routes/eventSubscription.js.map +1 -1
  129. package/dist/routes/fanout.d.ts +2 -1
  130. package/dist/routes/fanout.d.ts.map +1 -1
  131. package/dist/routes/fanout.js +25 -15
  132. package/dist/routes/fanout.js.map +1 -1
  133. package/dist/routes/file.d.ts.map +1 -1
  134. package/dist/routes/file.js +34 -40
  135. package/dist/routes/file.js.map +1 -1
  136. package/dist/routes/groupDm.d.ts.map +1 -1
  137. package/dist/routes/groupDm.js +23 -48
  138. package/dist/routes/groupDm.js.map +1 -1
  139. package/dist/routes/inboundWebhook.d.ts.map +1 -1
  140. package/dist/routes/inboundWebhook.js +17 -35
  141. package/dist/routes/inboundWebhook.js.map +1 -1
  142. package/dist/routes/inbox.d.ts.map +1 -1
  143. package/dist/routes/inbox.js +2 -1
  144. package/dist/routes/inbox.js.map +1 -1
  145. package/dist/routes/message.d.ts.map +1 -1
  146. package/dist/routes/message.js +39 -50
  147. package/dist/routes/message.js.map +1 -1
  148. package/dist/routes/node.d.ts.map +1 -1
  149. package/dist/routes/node.js +125 -12
  150. package/dist/routes/node.js.map +1 -1
  151. package/dist/routes/presence.d.ts.map +1 -1
  152. package/dist/routes/presence.js +4 -3
  153. package/dist/routes/presence.js.map +1 -1
  154. package/dist/routes/reaction.d.ts.map +1 -1
  155. package/dist/routes/reaction.js +10 -21
  156. package/dist/routes/reaction.js.map +1 -1
  157. package/dist/routes/receipt.d.ts.map +1 -1
  158. package/dist/routes/receipt.js +7 -15
  159. package/dist/routes/receipt.js.map +1 -1
  160. package/dist/routes/routing.d.ts.map +1 -1
  161. package/dist/routes/routing.js +38 -51
  162. package/dist/routes/routing.js.map +1 -1
  163. package/dist/routes/search.d.ts.map +1 -1
  164. package/dist/routes/search.js +15 -12
  165. package/dist/routes/search.js.map +1 -1
  166. package/dist/routes/systemPrompt.d.ts.map +1 -1
  167. package/dist/routes/systemPrompt.js +8 -13
  168. package/dist/routes/systemPrompt.js.map +1 -1
  169. package/dist/routes/thread.d.ts.map +1 -1
  170. package/dist/routes/thread.js +17 -35
  171. package/dist/routes/thread.js.map +1 -1
  172. package/dist/routes/trigger.d.ts.map +1 -1
  173. package/dist/routes/trigger.js +15 -14
  174. package/dist/routes/trigger.js.map +1 -1
  175. package/dist/routes/workspace.d.ts.map +1 -1
  176. package/dist/routes/workspace.js +39 -220
  177. package/dist/routes/workspace.js.map +1 -1
  178. package/package.json +3 -3
  179. package/dist/lib/fleetNodes.d.ts +0 -9
  180. package/dist/lib/fleetNodes.d.ts.map +0 -1
  181. package/dist/lib/fleetNodes.js +0 -66
  182. package/dist/lib/fleetNodes.js.map +0 -1
  183. package/dist/lib/workspaceStream.d.ts +0 -9
  184. package/dist/lib/workspaceStream.d.ts.map +0 -1
  185. package/dist/lib/workspaceStream.js +0 -53
  186. package/dist/lib/workspaceStream.js.map +0 -1
  187. package/dist/middleware/fleetNodes.d.ts +0 -10
  188. package/dist/middleware/fleetNodes.d.ts.map +0 -1
  189. package/dist/middleware/fleetNodes.js +0 -18
  190. package/dist/middleware/fleetNodes.js.map +0 -1
@@ -0,0 +1,109 @@
1
+ -- Additive follow-up for environments that already ran 0021 before
2
+ -- workspace-consistent binding constraints were introduced.
3
+
4
+ CREATE UNIQUE INDEX IF NOT EXISTS agents_workspace_id_unique
5
+ ON agents(workspace_id, id);
6
+
7
+ CREATE UNIQUE INDEX IF NOT EXISTS nodes_workspace_id_unique
8
+ ON nodes(workspace_id, id);
9
+
10
+ CREATE TABLE IF NOT EXISTS agent_node_bindings_constrained (
11
+ id TEXT PRIMARY KEY,
12
+ workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
13
+ agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
14
+ node_id TEXT NOT NULL REFERENCES nodes(id) ON DELETE CASCADE,
15
+ status TEXT NOT NULL DEFAULT 'active',
16
+ session_ref TEXT,
17
+ priority INTEGER NOT NULL DEFAULT 0,
18
+ created_at INTEGER NOT NULL DEFAULT (unixepoch()),
19
+ updated_at INTEGER,
20
+ FOREIGN KEY(workspace_id, agent_id) REFERENCES agents(workspace_id, id) ON DELETE CASCADE,
21
+ FOREIGN KEY(workspace_id, node_id) REFERENCES nodes(workspace_id, id) ON DELETE CASCADE,
22
+ UNIQUE(agent_id, node_id)
23
+ );
24
+
25
+ INSERT OR IGNORE INTO agent_node_bindings_constrained (
26
+ id,
27
+ workspace_id,
28
+ agent_id,
29
+ node_id,
30
+ status,
31
+ session_ref,
32
+ priority,
33
+ created_at,
34
+ updated_at
35
+ )
36
+ SELECT
37
+ b.id,
38
+ b.workspace_id,
39
+ b.agent_id,
40
+ b.node_id,
41
+ b.status,
42
+ b.session_ref,
43
+ b.priority,
44
+ b.created_at,
45
+ b.updated_at
46
+ FROM agent_node_bindings b
47
+ INNER JOIN agents a
48
+ ON a.workspace_id = b.workspace_id
49
+ AND a.id = b.agent_id
50
+ INNER JOIN nodes n
51
+ ON n.workspace_id = b.workspace_id
52
+ AND n.id = b.node_id;
53
+
54
+ DROP TABLE agent_node_bindings;
55
+
56
+ ALTER TABLE agent_node_bindings_constrained RENAME TO agent_node_bindings;
57
+
58
+ CREATE INDEX IF NOT EXISTS idx_agent_node_bindings_workspace
59
+ ON agent_node_bindings(workspace_id, status);
60
+
61
+ CREATE INDEX IF NOT EXISTS idx_agent_node_bindings_agent
62
+ ON agent_node_bindings(workspace_id, agent_id, status);
63
+
64
+ CREATE INDEX IF NOT EXISTS idx_agent_node_bindings_node
65
+ ON agent_node_bindings(workspace_id, node_id, status);
66
+
67
+ CREATE TRIGGER IF NOT EXISTS agent_node_bindings_workspace_agent_insert
68
+ BEFORE INSERT ON agent_node_bindings
69
+ WHEN NOT EXISTS (
70
+ SELECT 1 FROM agents a
71
+ WHERE a.workspace_id = NEW.workspace_id
72
+ AND a.id = NEW.agent_id
73
+ )
74
+ BEGIN
75
+ SELECT RAISE(ABORT, 'agent_node_bindings workspace/agent mismatch');
76
+ END;
77
+
78
+ CREATE TRIGGER IF NOT EXISTS agent_node_bindings_workspace_node_insert
79
+ BEFORE INSERT ON agent_node_bindings
80
+ WHEN NOT EXISTS (
81
+ SELECT 1 FROM nodes n
82
+ WHERE n.workspace_id = NEW.workspace_id
83
+ AND n.id = NEW.node_id
84
+ )
85
+ BEGIN
86
+ SELECT RAISE(ABORT, 'agent_node_bindings workspace/node mismatch');
87
+ END;
88
+
89
+ CREATE TRIGGER IF NOT EXISTS agent_node_bindings_workspace_agent_update
90
+ BEFORE UPDATE OF workspace_id, agent_id ON agent_node_bindings
91
+ WHEN NOT EXISTS (
92
+ SELECT 1 FROM agents a
93
+ WHERE a.workspace_id = NEW.workspace_id
94
+ AND a.id = NEW.agent_id
95
+ )
96
+ BEGIN
97
+ SELECT RAISE(ABORT, 'agent_node_bindings workspace/agent mismatch');
98
+ END;
99
+
100
+ CREATE TRIGGER IF NOT EXISTS agent_node_bindings_workspace_node_update
101
+ BEFORE UPDATE OF workspace_id, node_id ON agent_node_bindings
102
+ WHEN NOT EXISTS (
103
+ SELECT 1 FROM nodes n
104
+ WHERE n.workspace_id = NEW.workspace_id
105
+ AND n.id = NEW.node_id
106
+ )
107
+ BEGIN
108
+ SELECT RAISE(ABORT, 'agent_node_bindings workspace/node mismatch');
109
+ END;
@@ -586,6 +586,63 @@ export declare const nodes: import("drizzle-orm/sqlite-core").SQLiteTableWithCol
586
586
  }, {}, {
587
587
  length: number | undefined;
588
588
  }>;
589
+ kind: import("drizzle-orm/sqlite-core").SQLiteColumn<{
590
+ name: "kind";
591
+ tableName: "nodes";
592
+ dataType: "string";
593
+ columnType: "SQLiteText";
594
+ data: string;
595
+ driverParam: string;
596
+ notNull: true;
597
+ hasDefault: true;
598
+ isPrimaryKey: false;
599
+ isAutoincrement: false;
600
+ hasRuntimeDefault: false;
601
+ enumValues: [string, ...string[]];
602
+ baseColumn: never;
603
+ identity: undefined;
604
+ generated: undefined;
605
+ }, {}, {
606
+ length: number | undefined;
607
+ }>;
608
+ deliveryAdapter: import("drizzle-orm/sqlite-core").SQLiteColumn<{
609
+ name: "delivery_adapter";
610
+ tableName: "nodes";
611
+ dataType: "string";
612
+ columnType: "SQLiteText";
613
+ data: string;
614
+ driverParam: string;
615
+ notNull: true;
616
+ hasDefault: true;
617
+ isPrimaryKey: false;
618
+ isAutoincrement: false;
619
+ hasRuntimeDefault: false;
620
+ enumValues: [string, ...string[]];
621
+ baseColumn: never;
622
+ identity: undefined;
623
+ generated: undefined;
624
+ }, {}, {
625
+ length: number | undefined;
626
+ }>;
627
+ deliveryConfig: import("drizzle-orm/sqlite-core").SQLiteColumn<{
628
+ name: "delivery_config";
629
+ tableName: "nodes";
630
+ dataType: "json";
631
+ columnType: "SQLiteTextJson";
632
+ data: Record<string, unknown>;
633
+ driverParam: string;
634
+ notNull: false;
635
+ hasDefault: false;
636
+ isPrimaryKey: false;
637
+ isAutoincrement: false;
638
+ hasRuntimeDefault: false;
639
+ enumValues: undefined;
640
+ baseColumn: never;
641
+ identity: undefined;
642
+ generated: undefined;
643
+ }, {}, {
644
+ $type: Record<string, unknown>;
645
+ }>;
589
646
  capabilities: import("drizzle-orm/sqlite-core").SQLiteColumn<{
590
647
  name: "capabilities";
591
648
  tableName: "nodes";
@@ -792,6 +849,178 @@ export declare const nodes: import("drizzle-orm/sqlite-core").SQLiteTableWithCol
792
849
  };
793
850
  dialect: "sqlite";
794
851
  }>;
852
+ export declare const agentNodeBindings: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
853
+ name: "agent_node_bindings";
854
+ schema: undefined;
855
+ columns: {
856
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
857
+ name: "id";
858
+ tableName: "agent_node_bindings";
859
+ dataType: "string";
860
+ columnType: "SQLiteText";
861
+ data: string;
862
+ driverParam: string;
863
+ notNull: true;
864
+ hasDefault: false;
865
+ isPrimaryKey: true;
866
+ isAutoincrement: false;
867
+ hasRuntimeDefault: false;
868
+ enumValues: [string, ...string[]];
869
+ baseColumn: never;
870
+ identity: undefined;
871
+ generated: undefined;
872
+ }, {}, {
873
+ length: number | undefined;
874
+ }>;
875
+ workspaceId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
876
+ name: "workspace_id";
877
+ tableName: "agent_node_bindings";
878
+ dataType: "string";
879
+ columnType: "SQLiteText";
880
+ data: string;
881
+ driverParam: string;
882
+ notNull: true;
883
+ hasDefault: false;
884
+ isPrimaryKey: false;
885
+ isAutoincrement: false;
886
+ hasRuntimeDefault: false;
887
+ enumValues: [string, ...string[]];
888
+ baseColumn: never;
889
+ identity: undefined;
890
+ generated: undefined;
891
+ }, {}, {
892
+ length: number | undefined;
893
+ }>;
894
+ agentId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
895
+ name: "agent_id";
896
+ tableName: "agent_node_bindings";
897
+ dataType: "string";
898
+ columnType: "SQLiteText";
899
+ data: string;
900
+ driverParam: string;
901
+ notNull: true;
902
+ hasDefault: false;
903
+ isPrimaryKey: false;
904
+ isAutoincrement: false;
905
+ hasRuntimeDefault: false;
906
+ enumValues: [string, ...string[]];
907
+ baseColumn: never;
908
+ identity: undefined;
909
+ generated: undefined;
910
+ }, {}, {
911
+ length: number | undefined;
912
+ }>;
913
+ nodeId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
914
+ name: "node_id";
915
+ tableName: "agent_node_bindings";
916
+ dataType: "string";
917
+ columnType: "SQLiteText";
918
+ data: string;
919
+ driverParam: string;
920
+ notNull: true;
921
+ hasDefault: false;
922
+ isPrimaryKey: false;
923
+ isAutoincrement: false;
924
+ hasRuntimeDefault: false;
925
+ enumValues: [string, ...string[]];
926
+ baseColumn: never;
927
+ identity: undefined;
928
+ generated: undefined;
929
+ }, {}, {
930
+ length: number | undefined;
931
+ }>;
932
+ status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
933
+ name: "status";
934
+ tableName: "agent_node_bindings";
935
+ dataType: "string";
936
+ columnType: "SQLiteText";
937
+ data: string;
938
+ driverParam: string;
939
+ notNull: true;
940
+ hasDefault: true;
941
+ isPrimaryKey: false;
942
+ isAutoincrement: false;
943
+ hasRuntimeDefault: false;
944
+ enumValues: [string, ...string[]];
945
+ baseColumn: never;
946
+ identity: undefined;
947
+ generated: undefined;
948
+ }, {}, {
949
+ length: number | undefined;
950
+ }>;
951
+ sessionRef: import("drizzle-orm/sqlite-core").SQLiteColumn<{
952
+ name: "session_ref";
953
+ tableName: "agent_node_bindings";
954
+ dataType: "string";
955
+ columnType: "SQLiteText";
956
+ data: string;
957
+ driverParam: string;
958
+ notNull: false;
959
+ hasDefault: false;
960
+ isPrimaryKey: false;
961
+ isAutoincrement: false;
962
+ hasRuntimeDefault: false;
963
+ enumValues: [string, ...string[]];
964
+ baseColumn: never;
965
+ identity: undefined;
966
+ generated: undefined;
967
+ }, {}, {
968
+ length: number | undefined;
969
+ }>;
970
+ priority: import("drizzle-orm/sqlite-core").SQLiteColumn<{
971
+ name: "priority";
972
+ tableName: "agent_node_bindings";
973
+ dataType: "number";
974
+ columnType: "SQLiteInteger";
975
+ data: number;
976
+ driverParam: number;
977
+ notNull: true;
978
+ hasDefault: true;
979
+ isPrimaryKey: false;
980
+ isAutoincrement: false;
981
+ hasRuntimeDefault: false;
982
+ enumValues: undefined;
983
+ baseColumn: never;
984
+ identity: undefined;
985
+ generated: undefined;
986
+ }, {}, {}>;
987
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
988
+ name: "created_at";
989
+ tableName: "agent_node_bindings";
990
+ dataType: "date";
991
+ columnType: "SQLiteTimestamp";
992
+ data: Date;
993
+ driverParam: number;
994
+ notNull: true;
995
+ hasDefault: true;
996
+ isPrimaryKey: false;
997
+ isAutoincrement: false;
998
+ hasRuntimeDefault: false;
999
+ enumValues: undefined;
1000
+ baseColumn: never;
1001
+ identity: undefined;
1002
+ generated: undefined;
1003
+ }, {}, {}>;
1004
+ updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1005
+ name: "updated_at";
1006
+ tableName: "agent_node_bindings";
1007
+ dataType: "date";
1008
+ columnType: "SQLiteTimestamp";
1009
+ data: Date;
1010
+ driverParam: number;
1011
+ notNull: false;
1012
+ hasDefault: false;
1013
+ isPrimaryKey: false;
1014
+ isAutoincrement: false;
1015
+ hasRuntimeDefault: false;
1016
+ enumValues: undefined;
1017
+ baseColumn: never;
1018
+ identity: undefined;
1019
+ generated: undefined;
1020
+ }, {}, {}>;
1021
+ };
1022
+ dialect: "sqlite";
1023
+ }>;
795
1024
  export declare const a2aAgents: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
796
1025
  name: "a2a_agents";
797
1026
  schema: undefined;
@@ -5272,6 +5501,116 @@ export declare const deliveries: import("drizzle-orm/sqlite-core").SQLiteTableWi
5272
5501
  }, {}, {
5273
5502
  length: number | undefined;
5274
5503
  }>;
5504
+ routeNodeId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
5505
+ name: "route_node_id";
5506
+ tableName: "deliveries";
5507
+ dataType: "string";
5508
+ columnType: "SQLiteText";
5509
+ data: string;
5510
+ driverParam: string;
5511
+ notNull: false;
5512
+ hasDefault: false;
5513
+ isPrimaryKey: false;
5514
+ isAutoincrement: false;
5515
+ hasRuntimeDefault: false;
5516
+ enumValues: [string, ...string[]];
5517
+ baseColumn: never;
5518
+ identity: undefined;
5519
+ generated: undefined;
5520
+ }, {}, {
5521
+ length: number | undefined;
5522
+ }>;
5523
+ routeNodeKind: import("drizzle-orm/sqlite-core").SQLiteColumn<{
5524
+ name: "route_node_kind";
5525
+ tableName: "deliveries";
5526
+ dataType: "string";
5527
+ columnType: "SQLiteText";
5528
+ data: string;
5529
+ driverParam: string;
5530
+ notNull: false;
5531
+ hasDefault: false;
5532
+ isPrimaryKey: false;
5533
+ isAutoincrement: false;
5534
+ hasRuntimeDefault: false;
5535
+ enumValues: [string, ...string[]];
5536
+ baseColumn: never;
5537
+ identity: undefined;
5538
+ generated: undefined;
5539
+ }, {}, {
5540
+ length: number | undefined;
5541
+ }>;
5542
+ deliveryAdapter: import("drizzle-orm/sqlite-core").SQLiteColumn<{
5543
+ name: "delivery_adapter";
5544
+ tableName: "deliveries";
5545
+ dataType: "string";
5546
+ columnType: "SQLiteText";
5547
+ data: string;
5548
+ driverParam: string;
5549
+ notNull: false;
5550
+ hasDefault: false;
5551
+ isPrimaryKey: false;
5552
+ isAutoincrement: false;
5553
+ hasRuntimeDefault: false;
5554
+ enumValues: [string, ...string[]];
5555
+ baseColumn: never;
5556
+ identity: undefined;
5557
+ generated: undefined;
5558
+ }, {}, {
5559
+ length: number | undefined;
5560
+ }>;
5561
+ dispatchAttempts: import("drizzle-orm/sqlite-core").SQLiteColumn<{
5562
+ name: "dispatch_attempts";
5563
+ tableName: "deliveries";
5564
+ dataType: "number";
5565
+ columnType: "SQLiteInteger";
5566
+ data: number;
5567
+ driverParam: number;
5568
+ notNull: true;
5569
+ hasDefault: true;
5570
+ isPrimaryKey: false;
5571
+ isAutoincrement: false;
5572
+ hasRuntimeDefault: false;
5573
+ enumValues: undefined;
5574
+ baseColumn: never;
5575
+ identity: undefined;
5576
+ generated: undefined;
5577
+ }, {}, {}>;
5578
+ nextAttemptAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
5579
+ name: "next_attempt_at";
5580
+ tableName: "deliveries";
5581
+ dataType: "date";
5582
+ columnType: "SQLiteTimestamp";
5583
+ data: Date;
5584
+ driverParam: number;
5585
+ notNull: false;
5586
+ hasDefault: false;
5587
+ isPrimaryKey: false;
5588
+ isAutoincrement: false;
5589
+ hasRuntimeDefault: false;
5590
+ enumValues: undefined;
5591
+ baseColumn: never;
5592
+ identity: undefined;
5593
+ generated: undefined;
5594
+ }, {}, {}>;
5595
+ lastDispatchError: import("drizzle-orm/sqlite-core").SQLiteColumn<{
5596
+ name: "last_dispatch_error";
5597
+ tableName: "deliveries";
5598
+ dataType: "string";
5599
+ columnType: "SQLiteText";
5600
+ data: string;
5601
+ driverParam: string;
5602
+ notNull: false;
5603
+ hasDefault: false;
5604
+ isPrimaryKey: false;
5605
+ isAutoincrement: false;
5606
+ hasRuntimeDefault: false;
5607
+ enumValues: [string, ...string[]];
5608
+ baseColumn: never;
5609
+ identity: undefined;
5610
+ generated: undefined;
5611
+ }, {}, {
5612
+ length: number | undefined;
5613
+ }>;
5275
5614
  expiresAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
5276
5615
  name: "expires_at";
5277
5616
  tableName: "deliveries";
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBzB,CAAC;AAKF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCtB,CAAC;AAKF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBzB,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBpB,CAAC;AAKF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBzB,CAAC;AAKF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CtB,CAAC;AAKF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBzB,CAAC"}
package/dist/db/schema.js CHANGED
@@ -1,4 +1,4 @@
1
- import { sqliteTable, text, integer, real, index, uniqueIndex, primaryKey, } from 'drizzle-orm/sqlite-core';
1
+ import { sqliteTable, text, integer, real, index, uniqueIndex, primaryKey, foreignKey, } from 'drizzle-orm/sqlite-core';
2
2
  import { sql } from 'drizzle-orm';
3
3
  export const workspaces = sqliteTable('workspaces', {
4
4
  id: text('id').primaryKey(),
@@ -36,6 +36,7 @@ export const agents = sqliteTable('agents', {
36
36
  lastSeen: integer('last_seen', { mode: 'timestamp' }).notNull().default(sql `(unixepoch())`),
37
37
  }, (table) => [
38
38
  uniqueIndex('agents_workspace_name_unique').on(table.workspaceId, table.name),
39
+ uniqueIndex('agents_workspace_id_unique').on(table.workspaceId, table.id),
39
40
  index('idx_agents_workspace').on(table.workspaceId),
40
41
  index('idx_agents_token').on(table.tokenHash),
41
42
  ]);
@@ -49,6 +50,9 @@ export const nodes = sqliteTable('nodes', {
49
50
  .references(() => workspaces.id, { onDelete: 'cascade' }),
50
51
  name: text('name').notNull(),
51
52
  tokenHash: text('token_hash').notNull().unique(),
53
+ kind: text('kind').notNull().default('fleet_ws'),
54
+ deliveryAdapter: text('delivery_adapter').notNull().default('fleet.ws.v1'),
55
+ deliveryConfig: text('delivery_config', { mode: 'json' }).$type(),
52
56
  capabilities: text('capabilities', { mode: 'json' }).$type().notNull().default([]),
53
57
  maxAgents: integer('max_agents').notNull().default(0),
54
58
  activeAgents: integer('active_agents').notNull().default(0),
@@ -62,11 +66,47 @@ export const nodes = sqliteTable('nodes', {
62
66
  createdAt: integer('created_at', { mode: 'timestamp' }).notNull().default(sql `(unixepoch())`),
63
67
  }, (table) => [
64
68
  uniqueIndex('nodes_workspace_name_unique').on(table.workspaceId, table.name),
69
+ uniqueIndex('nodes_workspace_id_unique').on(table.workspaceId, table.id),
65
70
  index('idx_nodes_workspace').on(table.workspaceId),
66
71
  index('idx_nodes_token').on(table.tokenHash),
67
72
  index('idx_nodes_status').on(table.workspaceId, table.status),
68
73
  ]);
69
74
  // ============================================
75
+ // Agent Node Bindings
76
+ // ============================================
77
+ export const agentNodeBindings = sqliteTable('agent_node_bindings', {
78
+ id: text('id').primaryKey(),
79
+ workspaceId: text('workspace_id')
80
+ .notNull()
81
+ .references(() => workspaces.id, { onDelete: 'cascade' }),
82
+ agentId: text('agent_id')
83
+ .notNull()
84
+ .references(() => agents.id, { onDelete: 'cascade' }),
85
+ nodeId: text('node_id')
86
+ .notNull()
87
+ .references(() => nodes.id, { onDelete: 'cascade' }),
88
+ status: text('status').notNull().default('active'),
89
+ sessionRef: text('session_ref'),
90
+ priority: integer('priority').notNull().default(0),
91
+ createdAt: integer('created_at', { mode: 'timestamp' }).notNull().default(sql `(unixepoch())`),
92
+ updatedAt: integer('updated_at', { mode: 'timestamp' }),
93
+ }, (table) => [
94
+ uniqueIndex('agent_node_bindings_agent_node_unique').on(table.agentId, table.nodeId),
95
+ foreignKey({
96
+ columns: [table.workspaceId, table.agentId],
97
+ foreignColumns: [agents.workspaceId, agents.id],
98
+ name: 'agent_node_bindings_agent_workspace_fk',
99
+ }).onDelete('cascade'),
100
+ foreignKey({
101
+ columns: [table.workspaceId, table.nodeId],
102
+ foreignColumns: [nodes.workspaceId, nodes.id],
103
+ name: 'agent_node_bindings_node_workspace_fk',
104
+ }).onDelete('cascade'),
105
+ index('idx_agent_node_bindings_workspace').on(table.workspaceId, table.status),
106
+ index('idx_agent_node_bindings_agent').on(table.workspaceId, table.agentId, table.status),
107
+ index('idx_agent_node_bindings_node').on(table.workspaceId, table.nodeId, table.status),
108
+ ]);
109
+ // ============================================
70
110
  // A2A Agents
71
111
  // ============================================
72
112
  export const a2aAgents = sqliteTable('a2a_agents', {
@@ -603,6 +643,12 @@ export const deliveries = sqliteTable('deliveries', {
603
643
  seq: integer('seq').notNull().default(0),
604
644
  locationType: text('location_type').notNull().default('self_connected'),
605
645
  locationNodeId: text('location_node_id').references(() => nodes.id, { onDelete: 'set null' }),
646
+ routeNodeId: text('route_node_id').references(() => nodes.id, { onDelete: 'set null' }),
647
+ routeNodeKind: text('route_node_kind'),
648
+ deliveryAdapter: text('delivery_adapter'),
649
+ dispatchAttempts: integer('dispatch_attempts').notNull().default(0),
650
+ nextAttemptAt: integer('next_attempt_at', { mode: 'timestamp' }),
651
+ lastDispatchError: text('last_dispatch_error'),
606
652
  expiresAt: integer('expires_at', { mode: 'timestamp' }),
607
653
  deliveredAt: integer('delivered_at', { mode: 'timestamp' }),
608
654
  ackedAt: integer('acked_at', { mode: 'timestamp' }),
@@ -620,6 +666,7 @@ export const deliveries = sqliteTable('deliveries', {
620
666
  index('idx_deliveries_agent_status_seq').on(table.workspaceId, table.agentId, table.status, table.seq),
621
667
  index('idx_deliveries_expires').on(table.workspaceId, table.status, table.expiresAt),
622
668
  index('idx_deliveries_status').on(table.workspaceId, table.status, table.createdAt),
669
+ index('idx_deliveries_http_push_due').on(table.workspaceId, table.routeNodeKind, table.status, table.nextAttemptAt),
623
670
  ]);
624
671
  // ============================================
625
672
  // Pending Events (durable event queue)