@relayfx/sdk 0.0.50 → 0.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 (155) hide show
  1. package/README.md +5 -0
  2. package/dist/ai.js +42 -17222
  3. package/dist/index-2xztzkfr.js +20596 -0
  4. package/dist/index-bcbbm5wt.js +137 -0
  5. package/dist/index-qgt9z94q.js +2443 -0
  6. package/dist/index.js +830 -18839
  7. package/dist/migrations/20260712120000_durable_inbox/migration.sql +9 -0
  8. package/dist/migrations/20260712140000_execution_state/migration.sql +5 -0
  9. package/dist/migrations/20260712150000_durable_entities/migration.sql +15 -0
  10. package/dist/migrations/20260712160000_ephemeral_presence/migration.sql +13 -0
  11. package/dist/migrations/20260712170000_topic_subscriptions/migration.sql +3 -0
  12. package/dist/migrations/20260712180000_child_fan_out/migration.sql +27 -0
  13. package/dist/migrations/20260712190000_workflow_definitions/migration.sql +3 -0
  14. package/dist/migrations/20260712200000_workflow_runtime/migration.sql +2 -0
  15. package/dist/migrations/mysql/0003_durable_inbox.sql +3 -0
  16. package/dist/migrations/mysql/0004_execution_state.sql +3 -0
  17. package/dist/migrations/mysql/0005_durable_entities.sql +13 -0
  18. package/dist/migrations/mysql/0006_ephemeral_presence.sql +12 -0
  19. package/dist/migrations/mysql/0007_topic_subscriptions.sql +1 -0
  20. package/dist/migrations/mysql/0008_child_fan_out.sql +26 -0
  21. package/dist/migrations/mysql/0009_workflow_definitions.sql +3 -0
  22. package/dist/migrations/mysql/0010_workflow_runtime.sql +3 -0
  23. package/dist/migrations/pg/20260712120000_durable_inbox/migration.sql +9 -0
  24. package/dist/migrations/pg/20260712140000_execution_state/migration.sql +5 -0
  25. package/dist/migrations/pg/20260712150000_durable_entities/migration.sql +15 -0
  26. package/dist/migrations/pg/20260712160000_ephemeral_presence/migration.sql +13 -0
  27. package/dist/migrations/pg/20260712170000_topic_subscriptions/migration.sql +3 -0
  28. package/dist/migrations/pg/20260712180000_child_fan_out/migration.sql +27 -0
  29. package/dist/migrations/pg/20260712190000_workflow_definitions/migration.sql +3 -0
  30. package/dist/migrations/pg/20260712200000_workflow_runtime/migration.sql +2 -0
  31. package/dist/migrations/sqlite/0003_durable_inbox.sql +9 -0
  32. package/dist/migrations/sqlite/0004_execution_state.sql +3 -0
  33. package/dist/migrations/sqlite/0005_durable_entities.sql +15 -0
  34. package/dist/migrations/sqlite/0006_ephemeral_presence.sql +12 -0
  35. package/dist/migrations/sqlite/0007_topic_subscriptions.sql +3 -0
  36. package/dist/migrations/sqlite/0008_child_fan_out.sql +27 -0
  37. package/dist/migrations/sqlite/0009_workflow_definitions.sql +3 -0
  38. package/dist/migrations/sqlite/0010_workflow_runtime.sql +3 -0
  39. package/dist/sqlite.js +737 -0
  40. package/dist/types/relay/adapter-outbox.d.ts +3 -3
  41. package/dist/types/relay/client.d.ts +335 -25
  42. package/dist/types/relay/command.d.ts +41 -0
  43. package/dist/types/relay/database.d.ts +1 -0
  44. package/dist/types/relay/index.d.ts +3 -2
  45. package/dist/types/relay/operation.d.ts +1082 -7
  46. package/dist/types/relay/sqlite-migrations.d.ts +54 -0
  47. package/dist/types/relay/sqlite-runtime.d.ts +10 -0
  48. package/dist/types/relay/sqlite.d.ts +29 -0
  49. package/dist/types/runtime/address/address-book-service.d.ts +4 -4
  50. package/dist/types/runtime/address/address-resolution-service.d.ts +1 -1
  51. package/dist/types/runtime/agent/agent-loop-service.d.ts +2 -2
  52. package/dist/types/runtime/agent/agent-registry-service.d.ts +1 -1
  53. package/dist/types/runtime/agent/relay-compaction.d.ts +1 -1
  54. package/dist/types/runtime/agent/relay-permissions.d.ts +1 -1
  55. package/dist/types/runtime/agent/relay-steering.d.ts +1 -1
  56. package/dist/types/runtime/child/child-fan-out-admission-service.d.ts +30 -0
  57. package/dist/types/runtime/child/child-fan-out-runtime.d.ts +34 -0
  58. package/dist/types/runtime/child/child-fan-out-transition-service.d.ts +25 -0
  59. package/dist/types/runtime/child/child-run-service.d.ts +1 -1
  60. package/dist/types/runtime/child/parent-notifier-service.d.ts +1 -1
  61. package/dist/types/runtime/cluster/execution-entity.d.ts +5 -3
  62. package/dist/types/runtime/entity/entity-instance-service.d.ts +67 -0
  63. package/dist/types/runtime/entity/entity-registry-service.d.ts +35 -0
  64. package/dist/types/runtime/envelope/envelope-service.d.ts +7 -3
  65. package/dist/types/runtime/execution/active-execution-registry.d.ts +12 -0
  66. package/dist/types/runtime/execution/event-log-service.d.ts +1 -1
  67. package/dist/types/runtime/execution/execution-service.d.ts +2 -1
  68. package/dist/types/runtime/execution/execution-watch-service.d.ts +32 -0
  69. package/dist/types/runtime/execution/session-stream-service.d.ts +33 -0
  70. package/dist/types/runtime/inbox/inbox-service.d.ts +76 -0
  71. package/dist/types/runtime/inbox/send-message-tool.d.ts +27 -0
  72. package/dist/types/runtime/inbox/wait-for-messages-tool.d.ts +34 -0
  73. package/dist/types/runtime/index.d.ts +18 -0
  74. package/dist/types/runtime/memory/memory-service.d.ts +1 -1
  75. package/dist/types/runtime/presence/presence-service.d.ts +30 -0
  76. package/dist/types/runtime/presence/presence-tool.d.ts +20 -0
  77. package/dist/types/runtime/runner/runner-runtime-service.d.ts +18 -18
  78. package/dist/types/runtime/schedule/scheduler-service.d.ts +1 -1
  79. package/dist/types/runtime/session/session-store-service.d.ts +1 -1
  80. package/dist/types/runtime/skill/skill-registry-service.d.ts +1 -1
  81. package/dist/types/runtime/state/execution-state-service.d.ts +57 -0
  82. package/dist/types/runtime/state/state-tools.d.ts +5 -0
  83. package/dist/types/runtime/tool/tool-runtime-service.d.ts +1 -1
  84. package/dist/types/runtime/topic/publish-to-topic-tool.d.ts +24 -0
  85. package/dist/types/runtime/topic/topic-service.d.ts +50 -0
  86. package/dist/types/runtime/wait/wait-service.d.ts +2 -1
  87. package/dist/types/runtime/wait/wait-signal.d.ts +1 -1
  88. package/dist/types/runtime/workflow/definition-runtime.d.ts +78 -0
  89. package/dist/types/runtime/workflow/execution-workflow.d.ts +7 -7
  90. package/dist/types/runtime/workspace/workspace-planner-service.d.ts +1 -1
  91. package/dist/types/schema/address-schema.d.ts +6 -6
  92. package/dist/types/schema/child-orchestration-schema.d.ts +393 -0
  93. package/dist/types/schema/entity-schema.d.ts +40 -0
  94. package/dist/types/schema/envelope-schema.d.ts +1 -0
  95. package/dist/types/schema/execution-schema.d.ts +2 -2
  96. package/dist/types/schema/ids-schema.d.ts +20 -0
  97. package/dist/types/schema/inbox-schema.d.ts +81 -0
  98. package/dist/types/schema/index.d.ts +7 -0
  99. package/dist/types/schema/presence-schema.d.ts +28 -0
  100. package/dist/types/schema/state-schema.d.ts +35 -0
  101. package/dist/types/schema/wait-schema.d.ts +98 -0
  102. package/dist/types/schema/workflow-schema.d.ts +2062 -0
  103. package/dist/types/store-sql/address/address-book-repository.d.ts +1 -1
  104. package/dist/types/store-sql/child/child-fan-out-repository.d.ts +53 -0
  105. package/dist/types/store-sql/database/database-service.d.ts +4 -18
  106. package/dist/types/store-sql/database/notification-bus.d.ts +2 -0
  107. package/dist/types/store-sql/database/sql-dialect.d.ts +13 -0
  108. package/dist/types/store-sql/entity/entity-repository.d.ts +36 -0
  109. package/dist/types/store-sql/envelope/envelope-repository.d.ts +1 -0
  110. package/dist/types/store-sql/execution/execution-event-repository.d.ts +2 -1
  111. package/dist/types/store-sql/execution/execution-repository.d.ts +12 -2
  112. package/dist/types/store-sql/inbox/inbox-repository.d.ts +56 -0
  113. package/dist/types/store-sql/index.d.ts +8 -0
  114. package/dist/types/store-sql/portable.d.ts +29 -0
  115. package/dist/types/store-sql/presence/presence-repository.d.ts +51 -0
  116. package/dist/types/store-sql/schema/relay-schema.d.ts +3064 -587
  117. package/dist/types/store-sql/state/execution-state-repository.d.ts +80 -0
  118. package/dist/types/store-sql/tenant/tenant-id.d.ts +0 -2
  119. package/dist/types/store-sql/topic/topic-repository.d.ts +44 -0
  120. package/dist/types/store-sql/workflow/workflow-definition-repository.d.ts +29 -0
  121. package/package.json +26 -4
  122. package/dist/migrations/20260701002839_sour_cerebro/snapshot.json +0 -1971
  123. package/dist/migrations/20260701041134_acoustic_hulk/snapshot.json +0 -2372
  124. package/dist/migrations/20260701160543_condemned_stryfe/snapshot.json +0 -2442
  125. package/dist/migrations/20260701220315_heavy_gorgon/snapshot.json +0 -2495
  126. package/dist/migrations/20260701225444_polite_lord_hawal/snapshot.json +0 -2821
  127. package/dist/migrations/20260702030128_flaky_misty_knight/snapshot.json +0 -2821
  128. package/dist/migrations/20260705003847_nervous_banshee/snapshot.json +0 -2954
  129. package/dist/migrations/20260705012626_common_stryfe/snapshot.json +0 -3378
  130. package/dist/migrations/20260705015420_sweet_captain_marvel/snapshot.json +0 -3485
  131. package/dist/migrations/20260705023041_chunky_scalphunter/snapshot.json +0 -3753
  132. package/dist/migrations/20260705030344_short_patriot/snapshot.json +0 -3873
  133. package/dist/migrations/20260705045546_heavy_ben_grimm/snapshot.json +0 -4193
  134. package/dist/migrations/20260706185931_regular_shadow_king/snapshot.json +0 -4844
  135. package/dist/migrations/20260706233300_equal_cyclops/snapshot.json +0 -4883
  136. package/dist/migrations/20260709030349_agent_id_rename/snapshot.json +0 -4883
  137. package/dist/migrations/20260709214238_faithful_black_widow/snapshot.json +0 -5426
  138. package/dist/migrations/20260709220016_fearless_aaron_stack/snapshot.json +0 -5426
  139. package/dist/migrations/pg/20260701002839_sour_cerebro/snapshot.json +0 -1971
  140. package/dist/migrations/pg/20260701041134_acoustic_hulk/snapshot.json +0 -2372
  141. package/dist/migrations/pg/20260701160543_condemned_stryfe/snapshot.json +0 -2442
  142. package/dist/migrations/pg/20260701220315_heavy_gorgon/snapshot.json +0 -2495
  143. package/dist/migrations/pg/20260701225444_polite_lord_hawal/snapshot.json +0 -2821
  144. package/dist/migrations/pg/20260702030128_flaky_misty_knight/snapshot.json +0 -2821
  145. package/dist/migrations/pg/20260705003847_nervous_banshee/snapshot.json +0 -2954
  146. package/dist/migrations/pg/20260705012626_common_stryfe/snapshot.json +0 -3378
  147. package/dist/migrations/pg/20260705015420_sweet_captain_marvel/snapshot.json +0 -3485
  148. package/dist/migrations/pg/20260705023041_chunky_scalphunter/snapshot.json +0 -3753
  149. package/dist/migrations/pg/20260705030344_short_patriot/snapshot.json +0 -3873
  150. package/dist/migrations/pg/20260705045546_heavy_ben_grimm/snapshot.json +0 -4193
  151. package/dist/migrations/pg/20260706185931_regular_shadow_king/snapshot.json +0 -4844
  152. package/dist/migrations/pg/20260706233300_equal_cyclops/snapshot.json +0 -4883
  153. package/dist/migrations/pg/20260709030349_agent_id_rename/snapshot.json +0 -4883
  154. package/dist/migrations/pg/20260709214238_faithful_black_widow/snapshot.json +0 -5426
  155. package/dist/migrations/pg/20260709220016_fearless_aaron_stack/snapshot.json +0 -5426
package/dist/sqlite.js ADDED
@@ -0,0 +1,737 @@
1
+ // @bun
2
+ import {
3
+ exports_client,
4
+ exports_operation
5
+ } from "./index-qgt9z94q.js";
6
+ import {
7
+ __export,
8
+ exports_activity_version_registry,
9
+ exports_address_book_service,
10
+ exports_address_resolution_service,
11
+ exports_address_schema,
12
+ exports_agent_loop_service,
13
+ exports_agent_registry_service,
14
+ exports_agent_schema,
15
+ exports_artifact_store_service,
16
+ exports_blob_store_service,
17
+ exports_child_fan_out_repository,
18
+ exports_child_fan_out_runtime,
19
+ exports_child_fan_out_transition_service,
20
+ exports_child_run_service,
21
+ exports_content_schema,
22
+ exports_definition_runtime,
23
+ exports_entity_schema,
24
+ exports_envelope_schema,
25
+ exports_envelope_service,
26
+ exports_event_log_service,
27
+ exports_execution_entity,
28
+ exports_execution_event_repository,
29
+ exports_execution_schema,
30
+ exports_execution_service,
31
+ exports_execution_workflow,
32
+ exports_ids_schema,
33
+ exports_language_model_service,
34
+ exports_model_call_policy,
35
+ exports_notification_bus,
36
+ exports_prompt_assembler_service,
37
+ exports_runner_runtime_service,
38
+ exports_schedule_schema,
39
+ exports_scheduler_service,
40
+ exports_schema_registry_service,
41
+ exports_shared_schema,
42
+ exports_skill_registry_service,
43
+ exports_skill_schema,
44
+ exports_tool_runtime_service,
45
+ exports_tool_schema,
46
+ exports_wait_service,
47
+ exports_workflow_definition_repository,
48
+ exports_workflow_schema
49
+ } from "./index-2xztzkfr.js";
50
+ // src/sqlite-runtime.ts
51
+ var exports_sqlite_runtime = {};
52
+ __export(exports_sqlite_runtime, {
53
+ workflowLayer: () => workflowLayer,
54
+ migrationsLayer: () => migrationsLayer,
55
+ layer: () => layer,
56
+ clientLayer: () => clientLayer,
57
+ childFanOutLayer: () => childFanOutLayer
58
+ });
59
+ import { layer as sqliteClientLayer } from "@effect/sql-sqlite-bun/SqliteClient";
60
+ import { layer as sqliteMigratorLayer, run as runSqliteMigrator } from "@effect/sql-sqlite-bun/SqliteMigrator";
61
+ import { Effect as Effect2, Layer } from "effect";
62
+ import { SqlClient as SqlClient2 } from "effect/unstable/sql/SqlClient";
63
+
64
+ // ../../migrations/sqlite/0001_baseline.sql
65
+ var _0001_baseline_default = `CREATE TABLE "relay_address_book_entries" (
66
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
67
+ "id" TEXT NOT NULL,
68
+ "address_id" TEXT NOT NULL,
69
+ "route_kind" TEXT NOT NULL,
70
+ "route_key" TEXT NOT NULL,
71
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
72
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
73
+ "updated_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
74
+ CONSTRAINT "pk_relay_address_book_entries" PRIMARY KEY ("tenant_id", "id")
75
+ );
76
+ --> statement-breakpoint
77
+ CREATE UNIQUE INDEX "uq_relay_address_book_address" ON "relay_address_book_entries" ("tenant_id", "address_id");
78
+ --> statement-breakpoint
79
+ CREATE TABLE "relay_agent_definitions" (
80
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
81
+ "id" TEXT NOT NULL,
82
+ "name" TEXT NOT NULL,
83
+ "current_revision" INTEGER NOT NULL,
84
+ "definition_json" TEXT NOT NULL,
85
+ "tool_input_schema_digests_json" TEXT NOT NULL DEFAULT '{}',
86
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
87
+ "updated_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
88
+ CONSTRAINT "pk_relay_agent_definitions" PRIMARY KEY ("tenant_id", "id")
89
+ );
90
+ --> statement-breakpoint
91
+ CREATE INDEX "idx_relay_agent_definitions_name" ON "relay_agent_definitions" ("tenant_id", "name");
92
+ --> statement-breakpoint
93
+ CREATE TABLE "relay_agent_revisions" (
94
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
95
+ "agent_id" TEXT NOT NULL,
96
+ "revision" INTEGER NOT NULL,
97
+ "name" TEXT NOT NULL,
98
+ "definition_json" TEXT NOT NULL,
99
+ "tool_input_schema_digests_json" TEXT NOT NULL DEFAULT '{}',
100
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
101
+ CONSTRAINT "pk_relay_agent_revisions" PRIMARY KEY ("tenant_id", "agent_id", "revision")
102
+ );
103
+ --> statement-breakpoint
104
+ CREATE INDEX "idx_relay_agent_revisions_definition" ON "relay_agent_revisions" ("tenant_id", "agent_id", "revision");
105
+ --> statement-breakpoint
106
+ CREATE TABLE "relay_skill_definitions" (
107
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
108
+ "id" TEXT NOT NULL,
109
+ "name" TEXT NOT NULL,
110
+ "current_revision" INTEGER NOT NULL,
111
+ "definition_json" TEXT NOT NULL,
112
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
113
+ "updated_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
114
+ CONSTRAINT "pk_relay_skill_definitions" PRIMARY KEY ("tenant_id", "id")
115
+ );
116
+ --> statement-breakpoint
117
+ CREATE INDEX "idx_relay_skill_definitions_name" ON "relay_skill_definitions" ("tenant_id", "name");
118
+ --> statement-breakpoint
119
+ CREATE TABLE "relay_skill_definition_revisions" (
120
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
121
+ "skill_definition_id" TEXT NOT NULL,
122
+ "revision" INTEGER NOT NULL,
123
+ "name" TEXT NOT NULL,
124
+ "definition_json" TEXT NOT NULL,
125
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
126
+ CONSTRAINT "pk_relay_skill_definition_revisions" PRIMARY KEY ("tenant_id", "skill_definition_id", "revision")
127
+ );
128
+ --> statement-breakpoint
129
+ CREATE INDEX "idx_relay_skill_definition_revisions_definition" ON "relay_skill_definition_revisions" ("tenant_id", "skill_definition_id", "revision");
130
+ --> statement-breakpoint
131
+ CREATE TABLE "relay_execution_skill_pins" (
132
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
133
+ "execution_id" TEXT NOT NULL,
134
+ "skill_definition_id" TEXT NOT NULL,
135
+ "skill_definition_revision" INTEGER NOT NULL,
136
+ "skill_definition_snapshot_json" TEXT NOT NULL,
137
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
138
+ CONSTRAINT "pk_relay_execution_skill_pins" PRIMARY KEY ("tenant_id", "execution_id", "skill_definition_id")
139
+ );
140
+ --> statement-breakpoint
141
+ CREATE INDEX "idx_relay_execution_skill_pins_execution" ON "relay_execution_skill_pins" ("tenant_id", "execution_id");
142
+ --> statement-breakpoint
143
+ CREATE TABLE "relay_agent_chats" (
144
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
145
+ "execution_id" TEXT NOT NULL,
146
+ "export_json" TEXT NOT NULL,
147
+ "updated_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
148
+ CONSTRAINT "pk_relay_agent_chats" PRIMARY KEY ("tenant_id", "execution_id")
149
+ );
150
+ --> statement-breakpoint
151
+ CREATE TABLE "relay_agent_compactions" (
152
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
153
+ "execution_id" TEXT NOT NULL,
154
+ "checkpoint_id" TEXT NOT NULL,
155
+ "summary" TEXT NOT NULL,
156
+ "first_kept_entry_id" TEXT NOT NULL,
157
+ "turn" INTEGER NOT NULL,
158
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
159
+ CONSTRAINT "pk_relay_agent_compactions" PRIMARY KEY ("tenant_id", "execution_id", "checkpoint_id")
160
+ );
161
+ --> statement-breakpoint
162
+ CREATE INDEX "idx_relay_agent_compactions_execution_turn" ON "relay_agent_compactions" ("tenant_id", "execution_id", "turn");
163
+ --> statement-breakpoint
164
+ CREATE TABLE "relay_memory_records" (
165
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
166
+ "id" TEXT NOT NULL,
167
+ "agent" TEXT NOT NULL,
168
+ "subject" TEXT NOT NULL,
169
+ "embedding" TEXT NOT NULL,
170
+ "parts_json" TEXT NOT NULL,
171
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
172
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
173
+ CONSTRAINT "pk_relay_memory_records" PRIMARY KEY ("tenant_id", "id")
174
+ );
175
+ --> statement-breakpoint
176
+ CREATE INDEX "idx_relay_memory_records_agent_subject" ON "relay_memory_records" ("tenant_id", "agent", "subject");
177
+ --> statement-breakpoint
178
+ CREATE TABLE "relay_permission_rules" (
179
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
180
+ "agent" TEXT NOT NULL,
181
+ "scope" TEXT NOT NULL,
182
+ "pattern" TEXT NOT NULL,
183
+ "rule_json" TEXT NOT NULL,
184
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
185
+ CONSTRAINT "pk_relay_permission_rules" PRIMARY KEY ("tenant_id", "agent", "scope", "pattern")
186
+ );
187
+ --> statement-breakpoint
188
+ CREATE INDEX "idx_relay_permission_rules_agent_scope" ON "relay_permission_rules" ("tenant_id", "agent", "scope");
189
+ --> statement-breakpoint
190
+ CREATE TABLE "relay_steering_messages" (
191
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
192
+ "execution_id" TEXT NOT NULL,
193
+ "kind" TEXT NOT NULL,
194
+ "sequence" INTEGER NOT NULL,
195
+ "content_json" TEXT NOT NULL,
196
+ "drain_id" TEXT,
197
+ "consumed_at" INTEGER,
198
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
199
+ CONSTRAINT "pk_relay_steering_messages" PRIMARY KEY ("tenant_id", "execution_id", "kind", "sequence")
200
+ );
201
+ --> statement-breakpoint
202
+ CREATE INDEX "idx_relay_steering_messages_unconsumed" ON "relay_steering_messages" ("tenant_id", "execution_id", "kind", "consumed_at", "sequence");
203
+ --> statement-breakpoint
204
+ CREATE INDEX "idx_relay_steering_messages_drain" ON "relay_steering_messages" ("tenant_id", "execution_id", "kind", "drain_id", "sequence");
205
+ --> statement-breakpoint
206
+ CREATE TABLE "relay_steering_drains" (
207
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
208
+ "execution_id" TEXT NOT NULL,
209
+ "kind" TEXT NOT NULL,
210
+ "drain_id" TEXT NOT NULL,
211
+ "message_sequences_json" TEXT NOT NULL DEFAULT '[]',
212
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
213
+ CONSTRAINT "pk_relay_steering_drains" PRIMARY KEY ("tenant_id", "execution_id", "kind", "drain_id")
214
+ );
215
+ --> statement-breakpoint
216
+ CREATE TABLE "relay_sessions" (
217
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
218
+ "id" TEXT NOT NULL,
219
+ "root_address_id" TEXT NOT NULL,
220
+ "leaf_entry_id" TEXT,
221
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
222
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
223
+ "updated_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
224
+ CONSTRAINT "pk_relay_sessions" PRIMARY KEY ("tenant_id", "id")
225
+ );
226
+ --> statement-breakpoint
227
+ CREATE INDEX "idx_relay_sessions_updated_id" ON "relay_sessions" ("tenant_id", "updated_at", "id");
228
+ --> statement-breakpoint
229
+ CREATE INDEX "idx_relay_sessions_root_updated_id" ON "relay_sessions" ("tenant_id", "root_address_id", "updated_at", "id");
230
+ --> statement-breakpoint
231
+ CREATE TABLE "relay_session_entries" (
232
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
233
+ "id" TEXT NOT NULL,
234
+ "session_id" TEXT NOT NULL,
235
+ "parent_id" TEXT,
236
+ "tag" TEXT NOT NULL,
237
+ "payload_json" TEXT NOT NULL,
238
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
239
+ CONSTRAINT "pk_relay_session_entries" PRIMARY KEY ("tenant_id", "id")
240
+ );
241
+ --> statement-breakpoint
242
+ CREATE INDEX "idx_relay_session_entries_session_created" ON "relay_session_entries" ("tenant_id", "session_id", "created_at", "id");
243
+ --> statement-breakpoint
244
+ CREATE INDEX "idx_relay_session_entries_session_parent" ON "relay_session_entries" ("tenant_id", "session_id", "parent_id");
245
+ --> statement-breakpoint
246
+ CREATE TABLE "relay_execution_context_epochs" (
247
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
248
+ "execution_id" TEXT NOT NULL,
249
+ "baseline" TEXT NOT NULL,
250
+ "dynamic_source_ids_json" TEXT NOT NULL DEFAULT '[]',
251
+ "opened_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
252
+ CONSTRAINT "pk_relay_execution_context_epochs" PRIMARY KEY ("tenant_id", "execution_id")
253
+ );
254
+ --> statement-breakpoint
255
+ CREATE TABLE "relay_executions" (
256
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
257
+ "id" TEXT NOT NULL,
258
+ "root_address_id" TEXT NOT NULL,
259
+ "session_id" TEXT,
260
+ "status" TEXT NOT NULL,
261
+ "agent_id" TEXT,
262
+ "agent_revision" INTEGER,
263
+ "agent_snapshot_json" TEXT,
264
+ "agent_tool_input_schema_digests_json" TEXT NOT NULL DEFAULT '{}',
265
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
266
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
267
+ "updated_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
268
+ CONSTRAINT "pk_relay_executions" PRIMARY KEY ("tenant_id", "id")
269
+ );
270
+ --> statement-breakpoint
271
+ CREATE INDEX "idx_relay_executions_root_status" ON "relay_executions" ("tenant_id", "root_address_id", "status");
272
+ --> statement-breakpoint
273
+ CREATE INDEX "idx_relay_executions_session_updated_id" ON "relay_executions" ("tenant_id", "session_id", "updated_at", "id");
274
+ --> statement-breakpoint
275
+ CREATE INDEX "idx_relay_executions_updated_id" ON "relay_executions" ("tenant_id", "updated_at", "id");
276
+ --> statement-breakpoint
277
+ CREATE INDEX "idx_relay_executions_root_status_updated_id" ON "relay_executions" ("tenant_id", "root_address_id", "status", "updated_at", "id");
278
+ --> statement-breakpoint
279
+ CREATE TABLE "relay_child_executions" (
280
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
281
+ "id" TEXT NOT NULL,
282
+ "execution_id" TEXT NOT NULL,
283
+ "address_id" TEXT NOT NULL,
284
+ "status" TEXT NOT NULL,
285
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
286
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
287
+ "updated_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
288
+ CONSTRAINT "pk_relay_child_executions" PRIMARY KEY ("tenant_id", "id")
289
+ );
290
+ --> statement-breakpoint
291
+ CREATE INDEX "idx_relay_child_executions_parent" ON "relay_child_executions" ("tenant_id", "execution_id");
292
+ --> statement-breakpoint
293
+ CREATE TABLE "relay_envelopes" (
294
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
295
+ "id" TEXT NOT NULL,
296
+ "execution_id" TEXT NOT NULL,
297
+ "from_address_id" TEXT NOT NULL,
298
+ "to_address_id" TEXT NOT NULL,
299
+ "content_json" TEXT NOT NULL,
300
+ "wait_json" TEXT,
301
+ "correlation_key" TEXT,
302
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
303
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
304
+ CONSTRAINT "pk_relay_envelopes" PRIMARY KEY ("tenant_id", "id")
305
+ );
306
+ --> statement-breakpoint
307
+ CREATE INDEX "idx_relay_envelopes_execution" ON "relay_envelopes" ("tenant_id", "execution_id", "created_at");
308
+ --> statement-breakpoint
309
+ CREATE INDEX "idx_relay_envelopes_to_address" ON "relay_envelopes" ("tenant_id", "to_address_id", "created_at");
310
+ --> statement-breakpoint
311
+ CREATE TABLE "relay_waits" (
312
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
313
+ "id" TEXT NOT NULL,
314
+ "execution_id" TEXT NOT NULL,
315
+ "envelope_id" TEXT,
316
+ "mode" TEXT NOT NULL,
317
+ "correlation_key" TEXT,
318
+ "state" TEXT NOT NULL DEFAULT 'open',
319
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
320
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
321
+ "resolved_at" INTEGER,
322
+ CONSTRAINT "pk_relay_waits" PRIMARY KEY ("tenant_id", "id")
323
+ );
324
+ --> statement-breakpoint
325
+ CREATE INDEX "idx_relay_waits_execution_state" ON "relay_waits" ("tenant_id", "execution_id", "state");
326
+ --> statement-breakpoint
327
+ CREATE TABLE "relay_workspace_leases" (
328
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
329
+ "id" TEXT NOT NULL,
330
+ "execution_id" TEXT NOT NULL,
331
+ "provider_key" TEXT NOT NULL,
332
+ "sandbox_ref" TEXT,
333
+ "latest_snapshot_ref" TEXT,
334
+ "status" TEXT NOT NULL,
335
+ "resume_strategy" TEXT NOT NULL,
336
+ "region" TEXT,
337
+ "request_json" TEXT,
338
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
339
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
340
+ "updated_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
341
+ CONSTRAINT "pk_relay_workspace_leases" PRIMARY KEY ("tenant_id", "id")
342
+ );
343
+ --> statement-breakpoint
344
+ CREATE UNIQUE INDEX "uq_relay_workspace_leases_active_execution" ON "relay_workspace_leases" ("tenant_id", "execution_id") WHERE "status" NOT IN ('released', 'failed');
345
+ --> statement-breakpoint
346
+ CREATE INDEX "idx_relay_workspace_leases_execution" ON "relay_workspace_leases" ("tenant_id", "execution_id");
347
+ --> statement-breakpoint
348
+ CREATE INDEX "idx_relay_workspace_leases_status_updated" ON "relay_workspace_leases" ("tenant_id", "status", "updated_at");
349
+ --> statement-breakpoint
350
+ CREATE TABLE "relay_workspace_snapshots" (
351
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
352
+ "id" TEXT NOT NULL,
353
+ "lease_id" TEXT NOT NULL,
354
+ "execution_id" TEXT NOT NULL,
355
+ "reason" TEXT NOT NULL,
356
+ "snapshot_ref" TEXT NOT NULL,
357
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
358
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
359
+ CONSTRAINT "pk_relay_workspace_snapshots" PRIMARY KEY ("tenant_id", "id")
360
+ );
361
+ --> statement-breakpoint
362
+ CREATE INDEX "idx_relay_workspace_snapshots_lease" ON "relay_workspace_snapshots" ("tenant_id", "lease_id", "created_at");
363
+ --> statement-breakpoint
364
+ CREATE INDEX "idx_relay_workspace_snapshots_execution" ON "relay_workspace_snapshots" ("tenant_id", "execution_id", "created_at");
365
+ --> statement-breakpoint
366
+ CREATE TABLE "relay_envelope_ready" (
367
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
368
+ "id" TEXT NOT NULL,
369
+ "envelope_id" TEXT NOT NULL,
370
+ "route_type" TEXT NOT NULL,
371
+ "route_key" TEXT NOT NULL,
372
+ "state" TEXT NOT NULL DEFAULT 'ready',
373
+ "available_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
374
+ "attempt" INTEGER NOT NULL DEFAULT 0,
375
+ "claim_owner" TEXT,
376
+ "claim_expires_at" INTEGER,
377
+ "last_error" TEXT,
378
+ "idempotency_key" TEXT,
379
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
380
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
381
+ "updated_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
382
+ "claimed_at" INTEGER,
383
+ "acknowledged_at" INTEGER,
384
+ CONSTRAINT "pk_relay_envelope_ready" PRIMARY KEY ("tenant_id", "id")
385
+ );
386
+ --> statement-breakpoint
387
+ CREATE INDEX "idx_relay_envelope_ready_state_available" ON "relay_envelope_ready" ("tenant_id", "state", "available_at");
388
+ --> statement-breakpoint
389
+ CREATE INDEX "idx_relay_envelope_ready_claim_expires" ON "relay_envelope_ready" ("tenant_id", "claim_expires_at");
390
+ --> statement-breakpoint
391
+ CREATE UNIQUE INDEX "uq_relay_envelope_ready_idempotency" ON "relay_envelope_ready" ("tenant_id", "idempotency_key");
392
+ --> statement-breakpoint
393
+ CREATE TABLE "relay_schedules" (
394
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
395
+ "id" TEXT NOT NULL,
396
+ "kind" TEXT NOT NULL,
397
+ "target_kind" TEXT NOT NULL,
398
+ "address_id" TEXT,
399
+ "wait_id" TEXT,
400
+ "cron_expr" TEXT,
401
+ "input_json" TEXT,
402
+ "state" TEXT NOT NULL DEFAULT 'active',
403
+ "next_run_at" INTEGER NOT NULL,
404
+ "attempt" INTEGER NOT NULL DEFAULT 0,
405
+ "claim_owner" TEXT,
406
+ "claim_expires_at" INTEGER,
407
+ "last_error" TEXT,
408
+ "idempotency_key" TEXT,
409
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
410
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
411
+ "updated_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
412
+ CONSTRAINT "pk_relay_schedules" PRIMARY KEY ("tenant_id", "id")
413
+ );
414
+ --> statement-breakpoint
415
+ CREATE INDEX "idx_relay_schedules_state_next_run" ON "relay_schedules" ("tenant_id", "state", "next_run_at");
416
+ --> statement-breakpoint
417
+ CREATE INDEX "idx_relay_schedules_claim_expires" ON "relay_schedules" ("tenant_id", "claim_expires_at");
418
+ --> statement-breakpoint
419
+ CREATE INDEX "idx_relay_schedules_wait" ON "relay_schedules" ("tenant_id", "wait_id");
420
+ --> statement-breakpoint
421
+ CREATE UNIQUE INDEX "uq_relay_schedules_idempotency" ON "relay_schedules" ("tenant_id", "idempotency_key");
422
+ --> statement-breakpoint
423
+ CREATE TABLE "relay_execution_events" (
424
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
425
+ "id" TEXT NOT NULL,
426
+ "execution_id" TEXT NOT NULL,
427
+ "child_execution_id" TEXT,
428
+ "type" TEXT NOT NULL,
429
+ "sequence" INTEGER NOT NULL,
430
+ "cursor" TEXT NOT NULL,
431
+ "content_json" TEXT,
432
+ "data_json" TEXT NOT NULL DEFAULT '{}',
433
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
434
+ CONSTRAINT "pk_relay_execution_events" PRIMARY KEY ("tenant_id", "id")
435
+ );
436
+ --> statement-breakpoint
437
+ CREATE INDEX "idx_relay_execution_events_execution" ON "relay_execution_events" ("tenant_id", "execution_id", "created_at");
438
+ --> statement-breakpoint
439
+ CREATE UNIQUE INDEX "uq_relay_execution_events_sequence" ON "relay_execution_events" ("tenant_id", "execution_id", "sequence");
440
+ --> statement-breakpoint
441
+ CREATE UNIQUE INDEX "uq_relay_execution_events_cursor" ON "relay_execution_events" ("tenant_id", "cursor");
442
+ --> statement-breakpoint
443
+ CREATE TABLE "relay_tool_calls" (
444
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
445
+ "id" TEXT NOT NULL,
446
+ "execution_id" TEXT NOT NULL,
447
+ "name" TEXT NOT NULL,
448
+ "input_json" TEXT NOT NULL,
449
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
450
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
451
+ CONSTRAINT "pk_relay_tool_calls" PRIMARY KEY ("tenant_id", "id")
452
+ );
453
+ --> statement-breakpoint
454
+ CREATE INDEX "idx_relay_tool_calls_execution" ON "relay_tool_calls" ("tenant_id", "execution_id", "created_at");
455
+ --> statement-breakpoint
456
+ CREATE TABLE "relay_tool_results" (
457
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
458
+ "tool_call_id" TEXT NOT NULL,
459
+ "output_json" TEXT NOT NULL,
460
+ "error" TEXT,
461
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
462
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
463
+ CONSTRAINT "pk_relay_tool_results" PRIMARY KEY ("tenant_id", "tool_call_id")
464
+ );
465
+ --> statement-breakpoint
466
+ CREATE TABLE "relay_route_attempts" (
467
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
468
+ "id" TEXT NOT NULL,
469
+ "envelope_ready_id" TEXT NOT NULL,
470
+ "route_key" TEXT NOT NULL,
471
+ "state" TEXT NOT NULL,
472
+ "detail" TEXT,
473
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
474
+ CONSTRAINT "pk_relay_route_attempts" PRIMARY KEY ("tenant_id", "id")
475
+ );
476
+ --> statement-breakpoint
477
+ CREATE INDEX "idx_relay_route_attempts_ready" ON "relay_route_attempts" ("tenant_id", "envelope_ready_id", "created_at");
478
+ --> statement-breakpoint
479
+ CREATE TABLE "relay_idempotency_keys" (
480
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
481
+ "id" TEXT NOT NULL,
482
+ "scope" TEXT NOT NULL,
483
+ "operation" TEXT NOT NULL,
484
+ "key" TEXT NOT NULL,
485
+ "result_json" TEXT,
486
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
487
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
488
+ "updated_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
489
+ "expires_at" INTEGER,
490
+ CONSTRAINT "pk_relay_idempotency_keys" PRIMARY KEY ("tenant_id", "id")
491
+ );
492
+ --> statement-breakpoint
493
+ CREATE UNIQUE INDEX "uq_relay_idempotency_scope_operation_key" ON "relay_idempotency_keys" ("tenant_id", "scope", "operation", "key");
494
+ `;
495
+
496
+ // ../../migrations/sqlite/0002_durable_tool_placement.sql
497
+ var _0002_durable_tool_placement_default = `CREATE TABLE "relay_tool_attempts" (
498
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
499
+ "id" TEXT NOT NULL,
500
+ "tool_call_id" TEXT NOT NULL,
501
+ "attempt_number" INTEGER NOT NULL,
502
+ "state" TEXT NOT NULL,
503
+ "worker_id" TEXT,
504
+ "claim_expires_at" INTEGER,
505
+ "error" TEXT,
506
+ "created_at" INTEGER NOT NULL DEFAULT (CAST(unixepoch('subsec') * 1000 AS INTEGER)),
507
+ "completed_at" INTEGER,
508
+ CONSTRAINT "pk_relay_tool_attempts" PRIMARY KEY ("tenant_id", "tool_call_id", "id")
509
+ );
510
+ --> statement-breakpoint
511
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "definition_json" TEXT;
512
+ --> statement-breakpoint
513
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "placement_kind" TEXT NOT NULL DEFAULT 'local';
514
+ --> statement-breakpoint
515
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "placement_key" TEXT;
516
+ --> statement-breakpoint
517
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "state" TEXT NOT NULL DEFAULT 'requested';
518
+ --> statement-breakpoint
519
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "wait_id" TEXT;
520
+ --> statement-breakpoint
521
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "idempotency_key" TEXT NOT NULL DEFAULT '';
522
+ --> statement-breakpoint
523
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "available_at" INTEGER NOT NULL DEFAULT 0;
524
+ --> statement-breakpoint
525
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "active_attempt_id" TEXT;
526
+ --> statement-breakpoint
527
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "claim_owner" TEXT;
528
+ --> statement-breakpoint
529
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "claimed_at" INTEGER;
530
+ --> statement-breakpoint
531
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "claim_expires_at" INTEGER;
532
+ --> statement-breakpoint
533
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "external_outcome_json" TEXT;
534
+ --> statement-breakpoint
535
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "external_outcome_at" INTEGER;
536
+ --> statement-breakpoint
537
+ ALTER TABLE "relay_tool_calls" ADD COLUMN "updated_at" INTEGER NOT NULL DEFAULT 0;
538
+ --> statement-breakpoint
539
+ UPDATE "relay_tool_calls"
540
+ SET "idempotency_key" = 'tool:' || length("tenant_id") || ':' || "tenant_id" || ':' ||
541
+ length("execution_id") || ':' || "execution_id" || ':' || length("id") || ':' || "id",
542
+ "available_at" = "created_at",
543
+ "updated_at" = "created_at",
544
+ "state" = CASE
545
+ WHEN EXISTS (
546
+ SELECT 1 FROM "relay_tool_results" result
547
+ WHERE result."tenant_id" = "relay_tool_calls"."tenant_id"
548
+ AND result."tool_call_id" = "relay_tool_calls"."id"
549
+ AND result."error" IS NULL
550
+ ) THEN 'completed'
551
+ WHEN EXISTS (
552
+ SELECT 1 FROM "relay_tool_results" result
553
+ WHERE result."tenant_id" = "relay_tool_calls"."tenant_id"
554
+ AND result."tool_call_id" = "relay_tool_calls"."id"
555
+ ) THEN 'failed'
556
+ ELSE 'requested'
557
+ END;
558
+ --> statement-breakpoint
559
+ CREATE UNIQUE INDEX "uq_relay_tool_attempts_number" ON "relay_tool_attempts" ("tenant_id", "tool_call_id", "attempt_number");
560
+ --> statement-breakpoint
561
+ CREATE INDEX "idx_relay_tool_attempts_call" ON "relay_tool_attempts" ("tenant_id", "tool_call_id", "attempt_number");
562
+ --> statement-breakpoint
563
+ CREATE INDEX "idx_relay_tool_calls_remote_claim" ON "relay_tool_calls" ("tenant_id", "placement_kind", "placement_key", "state", "available_at", "created_at", "id");
564
+ --> statement-breakpoint
565
+ CREATE INDEX "idx_relay_tool_calls_stale_claim" ON "relay_tool_calls" ("tenant_id", "state", "claim_expires_at");
566
+ --> statement-breakpoint
567
+ CREATE INDEX "idx_relay_tool_calls_client_pending" ON "relay_tool_calls" ("tenant_id", "placement_kind", "state", "created_at", "id");
568
+ `;
569
+
570
+ // ../../migrations/sqlite/0003_durable_inbox.sql
571
+ var _0003_durable_inbox_default = `CREATE TABLE relay_inbox_messages (tenant_id text NOT NULL, execution_id text NOT NULL, sequence integer NOT NULL, from_address_id text NOT NULL, envelope_id text, content_json text NOT NULL, reply_wait_id text, correlation_key text, idempotency_key text, drain_id text, consumed_at text, metadata_json text, created_at text NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT pk_relay_inbox_messages PRIMARY KEY (tenant_id, execution_id, sequence));
572
+ --> statement-breakpoint
573
+ CREATE UNIQUE INDEX uq_relay_inbox_messages_idempotency ON relay_inbox_messages (tenant_id, execution_id, idempotency_key);
574
+ --> statement-breakpoint
575
+ CREATE INDEX idx_relay_inbox_messages_unconsumed ON relay_inbox_messages (tenant_id, execution_id, consumed_at, sequence);
576
+ --> statement-breakpoint
577
+ CREATE INDEX idx_relay_inbox_messages_drain ON relay_inbox_messages (tenant_id, execution_id, drain_id, sequence);
578
+ --> statement-breakpoint
579
+ CREATE TABLE relay_inbox_drains (tenant_id text NOT NULL, execution_id text NOT NULL, drain_id text NOT NULL, message_sequences_json text NOT NULL, created_at text NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT pk_relay_inbox_drains PRIMARY KEY (tenant_id, execution_id, drain_id));
580
+ `;
581
+
582
+ // ../../migrations/sqlite/0004_execution_state.sql
583
+ var _0004_execution_state_default = `CREATE TABLE relay_execution_state (tenant_id text NOT NULL, execution_id text NOT NULL, state_key text NOT NULL, value_json text NOT NULL, version integer NOT NULL, created_at text NOT NULL, updated_at text NOT NULL, PRIMARY KEY (tenant_id, execution_id, state_key));
584
+ --> statement-breakpoint
585
+ CREATE TABLE relay_execution_state_ops (tenant_id text NOT NULL, execution_id text NOT NULL, idempotency_key text NOT NULL, state_key text NOT NULL, version integer NOT NULL, op text NOT NULL CHECK (op IN ('put','delete')), result_present integer NOT NULL, result_value_json text, result_created_at text, result_updated_at text, created_at text NOT NULL, PRIMARY KEY (tenant_id, execution_id, idempotency_key));
586
+ `;
587
+
588
+ // ../../migrations/sqlite/0005_durable_entities.sql
589
+ var _0005_durable_entities_default = `CREATE TABLE relay_entity_kinds (
590
+ tenant_id text NOT NULL DEFAULT 'tenant:system', kind text NOT NULL, agent_id text NOT NULL,
591
+ inbox_policy_json text, state_enabled integer, continue_as_new_after_turns integer,
592
+ metadata_json text NOT NULL DEFAULT '{}', created_at text NOT NULL DEFAULT CURRENT_TIMESTAMP,
593
+ updated_at text NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (tenant_id, kind)
594
+ );
595
+ --> statement-breakpoint
596
+ CREATE TABLE relay_entity_instances (
597
+ tenant_id text NOT NULL DEFAULT 'tenant:system', kind text NOT NULL, "key" text NOT NULL,
598
+ address_id text NOT NULL, execution_id text NOT NULL, generation integer NOT NULL,
599
+ status text NOT NULL, created_at text NOT NULL DEFAULT CURRENT_TIMESTAMP, destroyed_at text,
600
+ PRIMARY KEY (tenant_id, kind, "key")
601
+ );
602
+ --> statement-breakpoint
603
+ CREATE INDEX idx_relay_entity_instances_kind_status ON relay_entity_instances (tenant_id, kind, status);
604
+ `;
605
+
606
+ // ../../migrations/sqlite/0006_ephemeral_presence.sql
607
+ var _0006_ephemeral_presence_default = `CREATE TABLE "relay_presence" (
608
+ "tenant_id" TEXT NOT NULL DEFAULT 'system',
609
+ "id" TEXT NOT NULL,
610
+ "scope_kind" TEXT NOT NULL CHECK ("scope_kind" IN ('execution', 'session')),
611
+ "scope_id" TEXT NOT NULL,
612
+ "metadata_json" TEXT NOT NULL DEFAULT '{}',
613
+ "connected_at" INTEGER NOT NULL,
614
+ "expires_at" INTEGER NOT NULL,
615
+ CONSTRAINT "pk_relay_presence" PRIMARY KEY ("tenant_id", "id", "scope_kind", "scope_id")
616
+ );
617
+ --> statement-breakpoint
618
+ CREATE INDEX "idx_relay_presence_scope_expires" ON "relay_presence" ("tenant_id", "scope_kind", "scope_id", "expires_at");
619
+ `;
620
+
621
+ // ../../migrations/sqlite/0007_topic_subscriptions.sql
622
+ var _0007_topic_subscriptions_default = `CREATE TABLE relay_topic_subscriptions (tenant_id text NOT NULL, topic_address_id text NOT NULL, subscriber_execution_id text NOT NULL, metadata_json text, created_at text NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT pk_relay_topic_subscriptions PRIMARY KEY (tenant_id, topic_address_id, subscriber_execution_id));
623
+ --> statement-breakpoint
624
+ CREATE INDEX idx_relay_topic_subscriptions_subscriber ON relay_topic_subscriptions (tenant_id, subscriber_execution_id);
625
+ `;
626
+
627
+ // ../../migrations/sqlite/0008_child_fan_out.sql
628
+ var _0008_child_fan_out_default = "CREATE TABLE `relay_child_fan_outs` (\n `tenant_id` text NOT NULL DEFAULT 'system',\n `id` text NOT NULL,\n `parent_execution_id` text NOT NULL,\n `definition_json` text NOT NULL,\n `state` text NOT NULL DEFAULT 'joining',\n `satisfied_at` integer,\n `failed_at` integer,\n `cancelled_at` integer,\n `created_at` integer NOT NULL,\n PRIMARY KEY (`tenant_id`, `id`)\n);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_child_fan_outs_parent` ON `relay_child_fan_outs` (`tenant_id`, `parent_execution_id`);\n--> statement-breakpoint\nCREATE TABLE `relay_child_fan_out_members` (\n `tenant_id` text NOT NULL DEFAULT 'system',\n `fan_out_id` text NOT NULL,\n `child_execution_id` text NOT NULL,\n `ordinal` integer NOT NULL,\n `state` text NOT NULL DEFAULT 'queued',\n `output_json` text,\n `error` text,\n `completed_at` integer,\n PRIMARY KEY (`tenant_id`, `fan_out_id`, `child_execution_id`),\n UNIQUE (`tenant_id`, `fan_out_id`, `ordinal`)\n);\n";
629
+
630
+ // ../../migrations/sqlite/0009_workflow_definitions.sql
631
+ var _0009_workflow_definitions_default = `CREATE TABLE IF NOT EXISTS relay_workflow_definition_revisions (tenant_id TEXT NOT NULL, workflow_definition_id TEXT NOT NULL, revision INTEGER NOT NULL, digest TEXT NOT NULL, definition_json TEXT NOT NULL, created_at INTEGER NOT NULL, PRIMARY KEY (tenant_id, workflow_definition_id, revision), UNIQUE (tenant_id, workflow_definition_id, digest));
632
+ --> statement-breakpoint
633
+ CREATE TABLE IF NOT EXISTS relay_workflow_runs (tenant_id TEXT NOT NULL, execution_id TEXT NOT NULL, workflow_definition_id TEXT NOT NULL, workflow_definition_revision INTEGER NOT NULL, workflow_definition_digest TEXT NOT NULL, status TEXT NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, PRIMARY KEY (tenant_id, execution_id));
634
+ `;
635
+
636
+ // ../../migrations/sqlite/0010_workflow_runtime.sql
637
+ var _0010_workflow_runtime_default = `CREATE TABLE IF NOT EXISTS relay_workflow_operation_states (tenant_id TEXT NOT NULL, execution_id TEXT NOT NULL, operation_id TEXT NOT NULL, status TEXT NOT NULL, fan_out_id TEXT, decision INTEGER, output_json TEXT, attempt INTEGER, backoff_until INTEGER, compensation_operation_id TEXT, started_at INTEGER, completed_at INTEGER, updated_at INTEGER NOT NULL, PRIMARY KEY (tenant_id, execution_id, operation_id));
638
+ --> statement-breakpoint
639
+ CREATE TABLE IF NOT EXISTS relay_workflow_lifecycle_events (tenant_id TEXT NOT NULL, execution_id TEXT NOT NULL, sequence INTEGER NOT NULL, event_type TEXT NOT NULL, operation_id TEXT, data_json TEXT, created_at INTEGER NOT NULL, PRIMARY KEY (tenant_id, execution_id, sequence));
640
+ `;
641
+
642
+ // src/sqlite-migrations.ts
643
+ import { Effect } from "effect";
644
+ import { SqlClient } from "effect/unstable/sql/SqlClient";
645
+ var statements = (source) => source.split(/--> statement-breakpoint|;/).map((statement) => statement.trim()).filter((statement) => statement.length > 0);
646
+ var execute = (source) => Effect.gen(function* () {
647
+ const sql = yield* SqlClient;
648
+ for (const statement of statements(source)) {
649
+ yield* sql.unsafe(statement);
650
+ }
651
+ });
652
+ var migrations = [
653
+ { id: 1, name: "baseline", file: "0001_baseline.sql", source: _0001_baseline_default },
654
+ { id: 2, name: "durable_tool_placement", file: "0002_durable_tool_placement.sql", source: _0002_durable_tool_placement_default },
655
+ { id: 3, name: "durable_inbox", file: "0003_durable_inbox.sql", source: _0003_durable_inbox_default },
656
+ { id: 4, name: "execution_state", file: "0004_execution_state.sql", source: _0004_execution_state_default },
657
+ { id: 5, name: "durable_entities", file: "0005_durable_entities.sql", source: _0005_durable_entities_default },
658
+ { id: 6, name: "ephemeral_presence", file: "0006_ephemeral_presence.sql", source: _0006_ephemeral_presence_default },
659
+ { id: 7, name: "topic_subscriptions", file: "0007_topic_subscriptions.sql", source: _0007_topic_subscriptions_default },
660
+ { id: 8, name: "child_fan_out", file: "0008_child_fan_out.sql", source: _0008_child_fan_out_default },
661
+ { id: 9, name: "workflow_definitions", file: "0009_workflow_definitions.sql", source: _0009_workflow_definitions_default },
662
+ { id: 10, name: "workflow_runtime", file: "0010_workflow_runtime.sql", source: _0010_workflow_runtime_default }
663
+ ];
664
+ var loader = Effect.succeed(migrations.map(({ id, name, source }) => [id, name, Effect.succeed(execute(source))]));
665
+
666
+ // src/sqlite-runtime.ts
667
+ var clientLayer = (options) => sqliteClientLayer(options);
668
+ var migrationOptions = {
669
+ loader,
670
+ table: "relay_migrations"
671
+ };
672
+ var migrationsLayer = sqliteMigratorLayer(migrationOptions);
673
+ var layer = (options) => {
674
+ const client = clientLayer(options);
675
+ return Layer.effect(SqlClient2, Effect2.gen(function* () {
676
+ const sql = yield* SqlClient2;
677
+ yield* runSqliteMigrator(migrationOptions);
678
+ return sql;
679
+ })).pipe(Layer.provide(client));
680
+ };
681
+ var workflowLayer = (options, handlersLayer) => {
682
+ const sqlite = layer(options);
683
+ const repository = exports_workflow_definition_repository.layer.pipe(Layer.provideMerge(sqlite));
684
+ return exports_definition_runtime.layer.pipe(Layer.provideMerge(handlersLayer), Layer.provideMerge(repository));
685
+ };
686
+ var childFanOutLayer = (options, handlersLayer) => {
687
+ const sqlite = layer(options);
688
+ const repository = exports_child_fan_out_repository.layer.pipe(Layer.provideMerge(sqlite));
689
+ const events = exports_event_log_service.layerFromRepository.pipe(Layer.provide(exports_execution_event_repository.layer.pipe(Layer.provide(exports_notification_bus.inProcessLayer))), Layer.provideMerge(sqlite));
690
+ const transitions = exports_child_fan_out_transition_service.layer.pipe(Layer.provide(repository), Layer.provide(events));
691
+ return exports_child_fan_out_runtime.layer.pipe(Layer.provide(handlersLayer), Layer.provide(repository), Layer.provide(transitions));
692
+ };
693
+
694
+ // src/sqlite.ts
695
+ var relaySqlitePackage = "@relayfx/sdk/sqlite";
696
+ export {
697
+ relaySqlitePackage,
698
+ exports_definition_runtime as WorkflowDefinitionRuntime,
699
+ exports_workflow_schema as Workflow,
700
+ exports_wait_service as WaitService,
701
+ exports_tool_runtime_service as ToolRuntime,
702
+ exports_tool_schema as Tool,
703
+ exports_skill_registry_service as SkillRegistry,
704
+ exports_skill_schema as Skill,
705
+ exports_shared_schema as Shared,
706
+ exports_schema_registry_service as SchemaRegistry,
707
+ exports_scheduler_service as SchedulerService,
708
+ exports_schedule_schema as Schedule,
709
+ exports_sqlite_runtime as SQLite,
710
+ exports_runner_runtime_service as RunnerRuntime,
711
+ exports_prompt_assembler_service as PromptAssembler,
712
+ exports_operation as Operation,
713
+ exports_model_call_policy as ModelCallPolicy,
714
+ exports_language_model_service as LanguageModelService,
715
+ exports_ids_schema as Ids,
716
+ exports_execution_workflow as ExecutionWorkflow,
717
+ exports_execution_service as ExecutionService,
718
+ exports_execution_entity as ExecutionEntity,
719
+ exports_execution_schema as Execution,
720
+ exports_event_log_service as EventLog,
721
+ exports_envelope_service as EnvelopeService,
722
+ exports_envelope_schema as Envelope,
723
+ exports_entity_schema as Entity,
724
+ exports_content_schema as Content,
725
+ exports_client as Client,
726
+ exports_child_run_service as ChildRunService,
727
+ exports_child_fan_out_runtime as ChildFanOutRuntime,
728
+ exports_blob_store_service as BlobStore,
729
+ exports_artifact_store_service as ArtifactStore,
730
+ exports_agent_registry_service as AgentRegistry,
731
+ exports_agent_loop_service as AgentLoop,
732
+ exports_agent_schema as Agent,
733
+ exports_address_resolution_service as AddressResolution,
734
+ exports_address_book_service as AddressBook,
735
+ exports_address_schema as Address,
736
+ exports_activity_version_registry as ActivityVersionRegistry
737
+ };