@relayfx/sdk 0.0.49 → 0.1.0

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