@relaycast/engine 5.1.1 → 6.0.1

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 (70) hide show
  1. package/dist/adapters/node/database.d.ts.map +1 -1
  2. package/dist/adapters/node/database.js +204 -27
  3. package/dist/adapters/node/database.js.map +1 -1
  4. package/dist/adapters/node/realtime.d.ts +29 -1
  5. package/dist/adapters/node/realtime.d.ts.map +1 -1
  6. package/dist/adapters/node/realtime.js +241 -50
  7. package/dist/adapters/node/realtime.js.map +1 -1
  8. package/dist/auth/tokenKind.d.ts +1 -1
  9. package/dist/auth/tokenKind.d.ts.map +1 -1
  10. package/dist/auth/tokenKind.js +4 -1
  11. package/dist/auth/tokenKind.js.map +1 -1
  12. package/dist/db/migrations/0028_node_providers.sql +55 -0
  13. package/dist/db/schema.d.ts +376 -0
  14. package/dist/db/schema.d.ts.map +1 -1
  15. package/dist/db/schema.js +59 -1
  16. package/dist/db/schema.js.map +1 -1
  17. package/dist/engine/action.d.ts +47 -1
  18. package/dist/engine/action.d.ts.map +1 -1
  19. package/dist/engine/action.js +342 -43
  20. package/dist/engine/action.js.map +1 -1
  21. package/dist/engine/delivery.d.ts.map +1 -1
  22. package/dist/engine/delivery.js +2 -1
  23. package/dist/engine/delivery.js.map +1 -1
  24. package/dist/engine/node.d.ts +71 -28
  25. package/dist/engine/node.d.ts.map +1 -1
  26. package/dist/engine/node.js +357 -189
  27. package/dist/engine/node.js.map +1 -1
  28. package/dist/engine/nodeContext.d.ts.map +1 -1
  29. package/dist/engine/nodeContext.js +17 -6
  30. package/dist/engine/nodeContext.js.map +1 -1
  31. package/dist/engine/nodeDeliver.d.ts.map +1 -1
  32. package/dist/engine/nodeDeliver.js +4 -1
  33. package/dist/engine/nodeDeliver.js.map +1 -1
  34. package/dist/engine/nodeLock.d.ts +2 -0
  35. package/dist/engine/nodeLock.d.ts.map +1 -0
  36. package/dist/engine/nodeLock.js +31 -0
  37. package/dist/engine/nodeLock.js.map +1 -0
  38. package/dist/engine/nodeProvider.d.ts +62 -0
  39. package/dist/engine/nodeProvider.d.ts.map +1 -0
  40. package/dist/engine/nodeProvider.js +256 -0
  41. package/dist/engine/nodeProvider.js.map +1 -0
  42. package/dist/engine/placement.d.ts +10 -0
  43. package/dist/engine/placement.d.ts.map +1 -1
  44. package/dist/engine/placement.js +10 -0
  45. package/dist/engine/placement.js.map +1 -1
  46. package/dist/engine/trigger.d.ts.map +1 -1
  47. package/dist/engine/trigger.js +17 -3
  48. package/dist/engine/trigger.js.map +1 -1
  49. package/dist/middleware/auth.d.ts +6 -0
  50. package/dist/middleware/auth.d.ts.map +1 -1
  51. package/dist/middleware/auth.js +6 -0
  52. package/dist/middleware/auth.js.map +1 -1
  53. package/dist/node-control.d.ts +1 -1
  54. package/dist/node-control.d.ts.map +1 -1
  55. package/dist/node-control.js +11 -1
  56. package/dist/node-control.js.map +1 -1
  57. package/dist/ports/auth.d.ts +1 -1
  58. package/dist/ports/auth.d.ts.map +1 -1
  59. package/dist/ports/realtime.d.ts +30 -2
  60. package/dist/ports/realtime.d.ts.map +1 -1
  61. package/dist/routes/deliveryRouting.d.ts.map +1 -1
  62. package/dist/routes/deliveryRouting.js +6 -1
  63. package/dist/routes/deliveryRouting.js.map +1 -1
  64. package/dist/routes/message.d.ts.map +1 -1
  65. package/dist/routes/message.js +44 -14
  66. package/dist/routes/message.js.map +1 -1
  67. package/dist/routes/node.d.ts.map +1 -1
  68. package/dist/routes/node.js +92 -3
  69. package/dist/routes/node.js.map +1 -1
  70. package/package.json +3 -3
@@ -407,6 +407,25 @@ export declare const agents: import("drizzle-orm/sqlite-core").SQLiteTableWithCo
407
407
  }, {}, {
408
408
  length: number | undefined;
409
409
  }>;
410
+ providerName: import("drizzle-orm/sqlite-core").SQLiteColumn<{
411
+ name: "provider_name";
412
+ tableName: "agents";
413
+ dataType: "string";
414
+ columnType: "SQLiteText";
415
+ data: string;
416
+ driverParam: string;
417
+ notNull: true;
418
+ hasDefault: true;
419
+ isPrimaryKey: false;
420
+ isAutoincrement: false;
421
+ hasRuntimeDefault: false;
422
+ enumValues: [string, ...string[]];
423
+ baseColumn: never;
424
+ identity: undefined;
425
+ generated: undefined;
426
+ }, {}, {
427
+ length: number | undefined;
428
+ }>;
410
429
  resumable: import("drizzle-orm/sqlite-core").SQLiteColumn<{
411
430
  name: "resumable";
412
431
  tableName: "agents";
@@ -596,6 +615,25 @@ export declare const nodes: import("drizzle-orm/sqlite-core").SQLiteTableWithCol
596
615
  }, {}, {
597
616
  length: number | undefined;
598
617
  }>;
618
+ machineId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
619
+ name: "machine_id";
620
+ tableName: "nodes";
621
+ dataType: "string";
622
+ columnType: "SQLiteText";
623
+ data: string;
624
+ driverParam: string;
625
+ notNull: false;
626
+ hasDefault: false;
627
+ isPrimaryKey: false;
628
+ isAutoincrement: false;
629
+ hasRuntimeDefault: false;
630
+ enumValues: [string, ...string[]];
631
+ baseColumn: never;
632
+ identity: undefined;
633
+ generated: undefined;
634
+ }, {}, {
635
+ length: number | undefined;
636
+ }>;
599
637
  kind: import("drizzle-orm/sqlite-core").SQLiteColumn<{
600
638
  name: "kind";
601
639
  tableName: "nodes";
@@ -680,6 +718,8 @@ export declare const nodes: import("drizzle-orm/sqlite-core").SQLiteTableWithCol
680
718
  data: {
681
719
  name: string;
682
720
  kind?: string | undefined;
721
+ global?: boolean | undefined;
722
+ queue?: boolean | undefined;
683
723
  metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
684
724
  }[];
685
725
  driverParam: string;
@@ -696,6 +736,8 @@ export declare const nodes: import("drizzle-orm/sqlite-core").SQLiteTableWithCol
696
736
  $type: {
697
737
  name: string;
698
738
  kind?: string | undefined;
739
+ global?: boolean | undefined;
740
+ queue?: boolean | undefined;
699
741
  metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
700
742
  }[];
701
743
  }>;
@@ -878,6 +920,287 @@ export declare const nodes: import("drizzle-orm/sqlite-core").SQLiteTableWithCol
878
920
  };
879
921
  dialect: "sqlite";
880
922
  }>;
923
+ /**
924
+ * A process attached to a broker-role node, keyed by provider `name`. Each
925
+ * provider registers a subset of the node's capabilities and executes their
926
+ * invokes over its own socket. `instanceId` is the connection epoch. Capability
927
+ * sets persist here so an offline node still displays its full manifest, and the
928
+ * per-provider liveness/capacity/load columns are aggregated onto the `nodes`
929
+ * row. Implicit direct nodes (per self-connected agent) do not use this table.
930
+ */
931
+ export declare const nodeProviders: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
932
+ name: "node_providers";
933
+ schema: undefined;
934
+ columns: {
935
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
936
+ name: "id";
937
+ tableName: "node_providers";
938
+ dataType: "string";
939
+ columnType: "SQLiteText";
940
+ data: string;
941
+ driverParam: string;
942
+ notNull: true;
943
+ hasDefault: false;
944
+ isPrimaryKey: true;
945
+ isAutoincrement: false;
946
+ hasRuntimeDefault: false;
947
+ enumValues: [string, ...string[]];
948
+ baseColumn: never;
949
+ identity: undefined;
950
+ generated: undefined;
951
+ }, {}, {
952
+ length: number | undefined;
953
+ }>;
954
+ workspaceId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
955
+ name: "workspace_id";
956
+ tableName: "node_providers";
957
+ dataType: "string";
958
+ columnType: "SQLiteText";
959
+ data: string;
960
+ driverParam: string;
961
+ notNull: true;
962
+ hasDefault: false;
963
+ isPrimaryKey: false;
964
+ isAutoincrement: false;
965
+ hasRuntimeDefault: false;
966
+ enumValues: [string, ...string[]];
967
+ baseColumn: never;
968
+ identity: undefined;
969
+ generated: undefined;
970
+ }, {}, {
971
+ length: number | undefined;
972
+ }>;
973
+ nodeId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
974
+ name: "node_id";
975
+ tableName: "node_providers";
976
+ dataType: "string";
977
+ columnType: "SQLiteText";
978
+ data: string;
979
+ driverParam: string;
980
+ notNull: true;
981
+ hasDefault: false;
982
+ isPrimaryKey: false;
983
+ isAutoincrement: false;
984
+ hasRuntimeDefault: false;
985
+ enumValues: [string, ...string[]];
986
+ baseColumn: never;
987
+ identity: undefined;
988
+ generated: undefined;
989
+ }, {}, {
990
+ length: number | undefined;
991
+ }>;
992
+ name: import("drizzle-orm/sqlite-core").SQLiteColumn<{
993
+ name: "name";
994
+ tableName: "node_providers";
995
+ dataType: "string";
996
+ columnType: "SQLiteText";
997
+ data: string;
998
+ driverParam: string;
999
+ notNull: true;
1000
+ hasDefault: false;
1001
+ isPrimaryKey: false;
1002
+ isAutoincrement: false;
1003
+ hasRuntimeDefault: false;
1004
+ enumValues: [string, ...string[]];
1005
+ baseColumn: never;
1006
+ identity: undefined;
1007
+ generated: undefined;
1008
+ }, {}, {
1009
+ length: number | undefined;
1010
+ }>;
1011
+ instanceId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1012
+ name: "instance_id";
1013
+ tableName: "node_providers";
1014
+ dataType: "string";
1015
+ columnType: "SQLiteText";
1016
+ data: string;
1017
+ driverParam: string;
1018
+ notNull: true;
1019
+ hasDefault: false;
1020
+ isPrimaryKey: false;
1021
+ isAutoincrement: false;
1022
+ hasRuntimeDefault: false;
1023
+ enumValues: [string, ...string[]];
1024
+ baseColumn: never;
1025
+ identity: undefined;
1026
+ generated: undefined;
1027
+ }, {}, {
1028
+ length: number | undefined;
1029
+ }>;
1030
+ capabilities: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1031
+ name: "capabilities";
1032
+ tableName: "node_providers";
1033
+ dataType: "json";
1034
+ columnType: "SQLiteTextJson";
1035
+ data: {
1036
+ name: string;
1037
+ kind?: string | undefined;
1038
+ global?: boolean | undefined;
1039
+ queue?: boolean | undefined;
1040
+ metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
1041
+ }[];
1042
+ driverParam: string;
1043
+ notNull: true;
1044
+ hasDefault: true;
1045
+ isPrimaryKey: false;
1046
+ isAutoincrement: false;
1047
+ hasRuntimeDefault: false;
1048
+ enumValues: undefined;
1049
+ baseColumn: never;
1050
+ identity: undefined;
1051
+ generated: undefined;
1052
+ }, {}, {
1053
+ $type: {
1054
+ name: string;
1055
+ kind?: string | undefined;
1056
+ global?: boolean | undefined;
1057
+ queue?: boolean | undefined;
1058
+ metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
1059
+ }[];
1060
+ }>;
1061
+ maxAgents: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1062
+ name: "max_agents";
1063
+ tableName: "node_providers";
1064
+ dataType: "number";
1065
+ columnType: "SQLiteInteger";
1066
+ data: number;
1067
+ driverParam: number;
1068
+ notNull: true;
1069
+ hasDefault: true;
1070
+ isPrimaryKey: false;
1071
+ isAutoincrement: false;
1072
+ hasRuntimeDefault: false;
1073
+ enumValues: undefined;
1074
+ baseColumn: never;
1075
+ identity: undefined;
1076
+ generated: undefined;
1077
+ }, {}, {}>;
1078
+ activeAgents: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1079
+ name: "active_agents";
1080
+ tableName: "node_providers";
1081
+ dataType: "number";
1082
+ columnType: "SQLiteInteger";
1083
+ data: number;
1084
+ driverParam: number;
1085
+ notNull: true;
1086
+ hasDefault: true;
1087
+ isPrimaryKey: false;
1088
+ isAutoincrement: false;
1089
+ hasRuntimeDefault: false;
1090
+ enumValues: undefined;
1091
+ baseColumn: never;
1092
+ identity: undefined;
1093
+ generated: undefined;
1094
+ }, {}, {}>;
1095
+ load: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1096
+ name: "load";
1097
+ tableName: "node_providers";
1098
+ dataType: "number";
1099
+ columnType: "SQLiteReal";
1100
+ data: number;
1101
+ driverParam: number;
1102
+ notNull: true;
1103
+ hasDefault: true;
1104
+ isPrimaryKey: false;
1105
+ isAutoincrement: false;
1106
+ hasRuntimeDefault: false;
1107
+ enumValues: undefined;
1108
+ baseColumn: never;
1109
+ identity: undefined;
1110
+ generated: undefined;
1111
+ }, {}, {}>;
1112
+ handlersLive: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1113
+ name: "handlers_live";
1114
+ tableName: "node_providers";
1115
+ dataType: "boolean";
1116
+ columnType: "SQLiteBoolean";
1117
+ data: boolean;
1118
+ driverParam: number;
1119
+ notNull: true;
1120
+ hasDefault: true;
1121
+ isPrimaryKey: false;
1122
+ isAutoincrement: false;
1123
+ hasRuntimeDefault: false;
1124
+ enumValues: undefined;
1125
+ baseColumn: never;
1126
+ identity: undefined;
1127
+ generated: undefined;
1128
+ }, {}, {}>;
1129
+ status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1130
+ name: "status";
1131
+ tableName: "node_providers";
1132
+ dataType: "string";
1133
+ columnType: "SQLiteText";
1134
+ data: string;
1135
+ driverParam: string;
1136
+ notNull: true;
1137
+ hasDefault: true;
1138
+ isPrimaryKey: false;
1139
+ isAutoincrement: false;
1140
+ hasRuntimeDefault: false;
1141
+ enumValues: [string, ...string[]];
1142
+ baseColumn: never;
1143
+ identity: undefined;
1144
+ generated: undefined;
1145
+ }, {}, {
1146
+ length: number | undefined;
1147
+ }>;
1148
+ version: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1149
+ name: "version";
1150
+ tableName: "node_providers";
1151
+ dataType: "string";
1152
+ columnType: "SQLiteText";
1153
+ data: string;
1154
+ driverParam: string;
1155
+ notNull: true;
1156
+ hasDefault: true;
1157
+ isPrimaryKey: false;
1158
+ isAutoincrement: false;
1159
+ hasRuntimeDefault: false;
1160
+ enumValues: [string, ...string[]];
1161
+ baseColumn: never;
1162
+ identity: undefined;
1163
+ generated: undefined;
1164
+ }, {}, {
1165
+ length: number | undefined;
1166
+ }>;
1167
+ lastHeartbeatAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1168
+ name: "last_heartbeat_at";
1169
+ tableName: "node_providers";
1170
+ dataType: "date";
1171
+ columnType: "SQLiteTimestamp";
1172
+ data: Date;
1173
+ driverParam: number;
1174
+ notNull: false;
1175
+ hasDefault: false;
1176
+ isPrimaryKey: false;
1177
+ isAutoincrement: false;
1178
+ hasRuntimeDefault: false;
1179
+ enumValues: undefined;
1180
+ baseColumn: never;
1181
+ identity: undefined;
1182
+ generated: undefined;
1183
+ }, {}, {}>;
1184
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1185
+ name: "created_at";
1186
+ tableName: "node_providers";
1187
+ dataType: "date";
1188
+ columnType: "SQLiteTimestamp";
1189
+ data: Date;
1190
+ driverParam: number;
1191
+ notNull: true;
1192
+ hasDefault: true;
1193
+ isPrimaryKey: false;
1194
+ isAutoincrement: false;
1195
+ hasRuntimeDefault: false;
1196
+ enumValues: undefined;
1197
+ baseColumn: never;
1198
+ identity: undefined;
1199
+ generated: undefined;
1200
+ }, {}, {}>;
1201
+ };
1202
+ dialect: "sqlite";
1203
+ }>;
881
1204
  export declare const observerTokens: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
882
1205
  name: "observer_tokens";
883
1206
  schema: undefined;
@@ -4819,6 +5142,59 @@ export declare const actions: import("drizzle-orm/sqlite-core").SQLiteTableWithC
4819
5142
  }, {}, {
4820
5143
  length: number | undefined;
4821
5144
  }>;
5145
+ handlerProvider: import("drizzle-orm/sqlite-core").SQLiteColumn<{
5146
+ name: "handler_provider";
5147
+ tableName: "actions";
5148
+ dataType: "string";
5149
+ columnType: "SQLiteText";
5150
+ data: string;
5151
+ driverParam: string;
5152
+ notNull: false;
5153
+ hasDefault: false;
5154
+ isPrimaryKey: false;
5155
+ isAutoincrement: false;
5156
+ hasRuntimeDefault: false;
5157
+ enumValues: [string, ...string[]];
5158
+ baseColumn: never;
5159
+ identity: undefined;
5160
+ generated: undefined;
5161
+ }, {}, {
5162
+ length: number | undefined;
5163
+ }>;
5164
+ isGlobal: import("drizzle-orm/sqlite-core").SQLiteColumn<{
5165
+ name: "is_global";
5166
+ tableName: "actions";
5167
+ dataType: "boolean";
5168
+ columnType: "SQLiteBoolean";
5169
+ data: boolean;
5170
+ driverParam: number;
5171
+ notNull: true;
5172
+ hasDefault: true;
5173
+ isPrimaryKey: false;
5174
+ isAutoincrement: false;
5175
+ hasRuntimeDefault: false;
5176
+ enumValues: undefined;
5177
+ baseColumn: never;
5178
+ identity: undefined;
5179
+ generated: undefined;
5180
+ }, {}, {}>;
5181
+ queue: import("drizzle-orm/sqlite-core").SQLiteColumn<{
5182
+ name: "queue";
5183
+ tableName: "actions";
5184
+ dataType: "boolean";
5185
+ columnType: "SQLiteBoolean";
5186
+ data: boolean;
5187
+ driverParam: number;
5188
+ notNull: true;
5189
+ hasDefault: true;
5190
+ isPrimaryKey: false;
5191
+ isAutoincrement: false;
5192
+ hasRuntimeDefault: false;
5193
+ enumValues: undefined;
5194
+ baseColumn: never;
5195
+ identity: undefined;
5196
+ generated: undefined;
5197
+ }, {}, {}>;
4822
5198
  inputSchema: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4823
5199
  name: "input_schema";
4824
5200
  tableName: "actions";
@@ -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
@@ -28,6 +28,10 @@ export const agents = sqliteTable('agents', {
28
28
  capabilities: text('capabilities', { mode: 'json' }).$type(),
29
29
  locationType: text('location_type').notNull().default('self_connected'),
30
30
  locationNodeId: text('location_node_id').references(() => nodes.id, { onDelete: 'set null' }),
31
+ // The node provider whose connection registered this agent. `deliver` frames
32
+ // route to that provider's socket. Defaults to the synthetic `default`
33
+ // provider (the broker) for agents registered before the provider model.
34
+ providerName: text('provider_name').notNull().default('default'),
31
35
  resumable: integer('resumable', { mode: 'boolean' }).notNull().default(false),
32
36
  sessionRef: text('session_ref'),
33
37
  originNodeId: text('origin_node_id').references(() => nodes.id, { onDelete: 'set null' }),
@@ -50,6 +54,9 @@ export const nodes = sqliteTable('nodes', {
50
54
  .references(() => workspaces.id, { onDelete: 'cascade' }),
51
55
  name: text('name').notNull(),
52
56
  tokenHash: text('token_hash').notNull().unique(),
57
+ // Physical machine grouping in fleet views and a placement input; never a
58
+ // capability scope. Null until a provider reports it on register.
59
+ machineId: text('machine_id'),
53
60
  kind: text('kind').notNull().default('ws'),
54
61
  role: text('role').notNull().default('broker'),
55
62
  deliveryAdapter: text('delivery_adapter').notNull().default('ws.node.v1'),
@@ -73,6 +80,40 @@ export const nodes = sqliteTable('nodes', {
73
80
  index('idx_nodes_status').on(table.workspaceId, table.status),
74
81
  ]);
75
82
  // ============================================
83
+ // Node Providers
84
+ // ============================================
85
+ /**
86
+ * A process attached to a broker-role node, keyed by provider `name`. Each
87
+ * provider registers a subset of the node's capabilities and executes their
88
+ * invokes over its own socket. `instanceId` is the connection epoch. Capability
89
+ * sets persist here so an offline node still displays its full manifest, and the
90
+ * per-provider liveness/capacity/load columns are aggregated onto the `nodes`
91
+ * row. Implicit direct nodes (per self-connected agent) do not use this table.
92
+ */
93
+ export const nodeProviders = sqliteTable('node_providers', {
94
+ id: text('id').primaryKey(),
95
+ workspaceId: text('workspace_id')
96
+ .notNull()
97
+ .references(() => workspaces.id, { onDelete: 'cascade' }),
98
+ nodeId: text('node_id')
99
+ .notNull()
100
+ .references(() => nodes.id, { onDelete: 'cascade' }),
101
+ name: text('name').notNull(),
102
+ instanceId: text('instance_id').notNull(),
103
+ capabilities: text('capabilities', { mode: 'json' }).$type().notNull().default([]),
104
+ maxAgents: integer('max_agents').notNull().default(0),
105
+ activeAgents: integer('active_agents').notNull().default(0),
106
+ load: real('load').notNull().default(0),
107
+ handlersLive: integer('handlers_live', { mode: 'boolean' }).notNull().default(false),
108
+ status: text('status').notNull().default('offline'),
109
+ version: text('version').notNull().default('unknown'),
110
+ lastHeartbeatAt: integer('last_heartbeat_at', { mode: 'timestamp' }),
111
+ createdAt: integer('created_at', { mode: 'timestamp' }).notNull().default(sql `(unixepoch())`),
112
+ }, (table) => [
113
+ uniqueIndex('node_providers_node_name_unique').on(table.workspaceId, table.nodeId, table.name),
114
+ index('idx_node_providers_node').on(table.workspaceId, table.nodeId),
115
+ ]);
116
+ // ============================================
76
117
  // Observer Tokens
77
118
  // ============================================
78
119
  export const observerTokens = sqliteTable('observer_tokens', {
@@ -565,13 +606,30 @@ export const actions = sqliteTable('actions', {
565
606
  handlerAgentId: text('handler_agent_id')
566
607
  .references(() => agents.id, { onDelete: 'cascade' }),
567
608
  handlerNodeId: text('handler_node_id').references(() => nodes.id, { onDelete: 'cascade' }),
609
+ // The provider (within handlerNodeId) that registered this action; dispatch
610
+ // resolves capability -> provider -> socket through it. Null for agent-hosted
611
+ // actions.
612
+ handlerProvider: text('handler_provider'),
613
+ // A node-scoped action may claim the workspace-global name so it resolves
614
+ // through `POST /v1/actions/:name/invoke`. At most one global alias per name.
615
+ isGlobal: integer('is_global', { mode: 'boolean' }).notNull().default(false),
616
+ // When true, an invoke whose provider is offline queues instead of failing
617
+ // fast (the per-provider offline queue).
618
+ queue: integer('queue', { mode: 'boolean' }).notNull().default(false),
568
619
  inputSchema: text('input_schema', { mode: 'json' }).$type().default({}),
569
620
  outputSchema: text('output_schema', { mode: 'json' }).$type().default({}),
570
621
  availableTo: text('available_to', { mode: 'json' }).$type(),
571
622
  isActive: integer('is_active', { mode: 'boolean' }).notNull().default(true),
572
623
  createdAt: integer('created_at', { mode: 'timestamp' }).notNull().default(sql `(unixepoch())`),
573
624
  }, (table) => [
574
- uniqueIndex('actions_workspace_name_unique').on(table.workspaceId, table.name),
625
+ // Node-scoped uniqueness: two nodes may both define `run-etl`. SQLite treats
626
+ // NULL handlerNodeId (agent-hosted) rows as distinct here, so agent-hosted
627
+ // uniqueness is enforced by the partial index below.
628
+ uniqueIndex('actions_workspace_node_name_unique').on(table.workspaceId, table.handlerNodeId, table.name),
629
+ // Agent-hosted actions (no node) keep one action per workspace name.
630
+ uniqueIndex('actions_workspace_agent_name_unique').on(table.workspaceId, table.name).where(sql `${table.handlerNodeId} IS NULL`),
631
+ // At most one node action may claim a given workspace-global alias.
632
+ uniqueIndex('actions_workspace_global_name_unique').on(table.workspaceId, table.name).where(sql `${table.isGlobal} = 1`),
575
633
  index('idx_actions_workspace').on(table.workspaceId),
576
634
  index('idx_actions_handler').on(table.handlerAgentId),
577
635
  index('idx_actions_node_handler').on(table.handlerNodeId),