@relayfx/sdk 0.2.13 → 0.2.15

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 (35) hide show
  1. package/dist/ai.js +2 -2
  2. package/dist/{index-kghdnamr.js → index-d8q4kfjy.js} +1 -1
  3. package/dist/index-gxskhyra.js +69 -0
  4. package/dist/{index-rmaq3qc8.js → index-xbbfagnb.js} +744 -395
  5. package/dist/{index-3e4cs8s6.js → index-z9xk02sv.js} +650 -531
  6. package/dist/index.js +10 -4
  7. package/dist/mysql.js +122 -0
  8. package/dist/postgres.js +77 -0
  9. package/dist/sqlite.js +84 -3
  10. package/dist/types/relay/client.d.ts +6 -4
  11. package/dist/types/relay/index.d.ts +3 -1
  12. package/dist/types/relay/migration-errors.d.ts +4 -0
  13. package/dist/types/relay/mysql-migrations.d.ts +1 -0
  14. package/dist/types/relay/mysql.d.ts +13 -0
  15. package/dist/types/relay/operation.d.ts +60 -10
  16. package/dist/types/relay/postgres.d.ts +13 -0
  17. package/dist/types/relay/runtime-capability-policy.d.ts +19 -0
  18. package/dist/types/relay/runtime-database-adapter.d.ts +12 -0
  19. package/dist/types/relay/runtime-database.d.ts +21 -0
  20. package/dist/types/relay/runtime.d.ts +198 -0
  21. package/dist/types/relay/sqlite-runtime.d.ts +9 -0
  22. package/dist/types/relay/sqlite.d.ts +2 -0
  23. package/dist/types/runtime/address/address-resolution-service.d.ts +32 -10
  24. package/dist/types/runtime/agent/relay-compaction.d.ts +3 -2
  25. package/dist/types/runtime/child/child-fan-out-runtime.d.ts +2 -0
  26. package/dist/types/runtime/child/spawn-child-run-tool.d.ts +7 -0
  27. package/dist/types/runtime/model/language-model-service.d.ts +1 -0
  28. package/dist/types/runtime/runner/runner-runtime-service.d.ts +30 -30
  29. package/dist/types/runtime/workflow/definition-runtime.d.ts +2 -0
  30. package/dist/types/runtime/workflow/execution-workflow.d.ts +64 -20
  31. package/dist/types/schema/agent-schema.d.ts +220 -60
  32. package/dist/types/schema/child-orchestration-schema.d.ts +21 -0
  33. package/dist/types/schema/execution-schema.d.ts +74 -10
  34. package/dist/types/store-sql/workflow/workflow-definition-repository.d.ts +6 -2
  35. package/package.json +11 -2
package/dist/index.js CHANGED
@@ -1,13 +1,15 @@
1
1
  // @bun
2
2
  import {
3
3
  exports_language_model_registration
4
- } from "./index-kghdnamr.js";
4
+ } from "./index-d8q4kfjy.js";
5
5
  import {
6
6
  Service,
7
7
  exports_client,
8
8
  exports_command,
9
- exports_operation
10
- } from "./index-rmaq3qc8.js";
9
+ exports_operation,
10
+ exports_runtime,
11
+ makeDatabaseIdentity
12
+ } from "./index-xbbfagnb.js";
11
13
  import {
12
14
  Dialect,
13
15
  __export,
@@ -28,6 +30,7 @@ import {
28
30
  exports_child_run_service,
29
31
  exports_content_schema,
30
32
  exports_definition_runtime,
33
+ exports_embedding_model_service,
31
34
  exports_entity_schema,
32
35
  exports_envelope_schema,
33
36
  exports_envelope_service,
@@ -59,7 +62,7 @@ import {
59
62
  fromDbTimestamp,
60
63
  fromNullableDbTimestamp,
61
64
  timestampParam
62
- } from "./index-3e4cs8s6.js";
65
+ } from "./index-z9xk02sv.js";
63
66
 
64
67
  // src/adapter-outbox.ts
65
68
  var exports_adapter_outbox = {};
@@ -912,6 +915,7 @@ var run = Effect3.fn("ToolWorker.run")(function* (options) {
912
915
  var relayPackage = "@relayfx/sdk";
913
916
  export {
914
917
  relayPackage,
918
+ makeDatabaseIdentity,
915
919
  exports_definition_runtime as WorkflowDefinitionRuntime,
916
920
  exports_workflow_schema as Workflow,
917
921
  exports_wait_schema as Waits,
@@ -926,6 +930,7 @@ export {
926
930
  exports_schema_registry_service as SchemaRegistry,
927
931
  exports_scheduler_service as SchedulerService,
928
932
  exports_schedule_schema as Schedule,
933
+ exports_runtime as Runtime,
929
934
  exports_runner_runtime_service as RunnerRuntime,
930
935
  exports_relay_schema as RelaySchema,
931
936
  exports_prompt_assembler_service as PromptAssembler,
@@ -945,6 +950,7 @@ export {
945
950
  exports_envelope_service as EnvelopeService,
946
951
  exports_envelope_schema as Envelope,
947
952
  exports_entity_schema as Entity,
953
+ exports_embedding_model_service as EmbeddingModelService,
948
954
  exports_database as Database,
949
955
  exports_content_schema as Content,
950
956
  exports_command as Command,
package/dist/mysql.js ADDED
@@ -0,0 +1,122 @@
1
+ // @bun
2
+ import {
3
+ normalizeClientLayer,
4
+ normalizeMigrationCause,
5
+ runtimeDatabaseLayer
6
+ } from "./index-gxskhyra.js";
7
+ import"./index-xbbfagnb.js";
8
+ import"./index-z9xk02sv.js";
9
+
10
+ // src/mysql.ts
11
+ import { Effect } from "effect";
12
+ import { SqlClient } from "effect/unstable/sql/SqlClient";
13
+
14
+ // ../../migrations/mysql/0001_baseline.sql
15
+ var _0001_baseline_default = "CREATE TABLE `relay_address_book_entries` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`address_id` VARCHAR(191) NOT NULL,\n\t`route_kind` TEXT NOT NULL,\n\t`route_key` TEXT NOT NULL,\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_address_book_entries` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE UNIQUE INDEX `uq_relay_address_book_address` ON `relay_address_book_entries` (`tenant_id`, `address_id`);\n--> statement-breakpoint\nCREATE TABLE `relay_agent_definitions` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`name` VARCHAR(191) NOT NULL,\n\t`current_revision` INT NOT NULL,\n\t`definition_json` JSON NOT NULL,\n\t`tool_input_schema_digests_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_agent_definitions` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_agent_definitions_name` ON `relay_agent_definitions` (`tenant_id`, `name`);\n--> statement-breakpoint\nCREATE TABLE `relay_agent_revisions` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`agent_id` VARCHAR(191) NOT NULL,\n\t`revision` INT NOT NULL,\n\t`name` TEXT NOT NULL,\n\t`definition_json` JSON NOT NULL,\n\t`tool_input_schema_digests_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_agent_revisions` PRIMARY KEY (`tenant_id`, `agent_id`, `revision`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_agent_revisions_definition` ON `relay_agent_revisions` (`tenant_id`, `agent_id`, `revision`);\n--> statement-breakpoint\nCREATE TABLE `relay_skill_definitions` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`name` VARCHAR(191) NOT NULL,\n\t`current_revision` INT NOT NULL,\n\t`definition_json` JSON NOT NULL,\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_skill_definitions` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_skill_definitions_name` ON `relay_skill_definitions` (`tenant_id`, `name`);\n--> statement-breakpoint\nCREATE TABLE `relay_skill_definition_revisions` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`skill_definition_id` VARCHAR(191) NOT NULL,\n\t`revision` INT NOT NULL,\n\t`name` TEXT NOT NULL,\n\t`definition_json` JSON NOT NULL,\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_skill_definition_revisions` PRIMARY KEY (`tenant_id`, `skill_definition_id`, `revision`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_skill_definition_revisions_definition` ON `relay_skill_definition_revisions` (`tenant_id`, `skill_definition_id`, `revision`);\n--> statement-breakpoint\nCREATE TABLE `relay_execution_skill_pins` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`execution_id` VARCHAR(191) NOT NULL,\n\t`skill_definition_id` VARCHAR(191) NOT NULL,\n\t`skill_definition_revision` INT NOT NULL,\n\t`skill_definition_snapshot_json` JSON NOT NULL,\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_execution_skill_pins` PRIMARY KEY (`tenant_id`, `execution_id`, `skill_definition_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_execution_skill_pins_execution` ON `relay_execution_skill_pins` (`tenant_id`, `execution_id`);\n--> statement-breakpoint\nCREATE TABLE `relay_agent_chats` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`execution_id` VARCHAR(191) NOT NULL,\n\t`export_json` JSON NOT NULL,\n\t`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_agent_chats` PRIMARY KEY (`tenant_id`, `execution_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE TABLE `relay_agent_compactions` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`execution_id` VARCHAR(191) NOT NULL,\n\t`checkpoint_id` VARCHAR(191) NOT NULL,\n\t`summary` TEXT NOT NULL,\n\t`first_kept_entry_id` TEXT NOT NULL,\n\t`turn` INT NOT NULL,\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_agent_compactions` PRIMARY KEY (`tenant_id`, `execution_id`, `checkpoint_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_agent_compactions_execution_turn` ON `relay_agent_compactions` (`tenant_id`, `execution_id`, `turn`);\n--> statement-breakpoint\nCREATE TABLE `relay_memory_records` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`agent` VARCHAR(191) NOT NULL,\n\t`subject` VARCHAR(191) NOT NULL,\n\t`embedding` JSON NOT NULL,\n\t`parts_json` JSON NOT NULL,\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_memory_records` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_memory_records_agent_subject` ON `relay_memory_records` (`tenant_id`, `agent`, `subject`);\n--> statement-breakpoint\nCREATE TABLE `relay_permission_rules` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`agent` VARCHAR(191) NOT NULL,\n\t`scope` VARCHAR(191) NOT NULL,\n\t`pattern` VARCHAR(191) NOT NULL,\n\t`rule_json` JSON NOT NULL,\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_permission_rules` PRIMARY KEY (`tenant_id`, `agent`, `scope`, `pattern`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_permission_rules_agent_scope` ON `relay_permission_rules` (`tenant_id`, `agent`, `scope`);\n--> statement-breakpoint\nCREATE TABLE `relay_steering_messages` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`execution_id` VARCHAR(191) NOT NULL,\n\t`kind` VARCHAR(191) NOT NULL,\n\t`sequence` INT NOT NULL,\n\t`content_json` JSON NOT NULL,\n\t`drain_id` VARCHAR(191),\n\t`consumed_at` DATETIME(3),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_steering_messages` PRIMARY KEY (`tenant_id`, `execution_id`, `kind`, `sequence`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_steering_messages_unconsumed` ON `relay_steering_messages` (`tenant_id`, `execution_id`, `kind`, `consumed_at`, `sequence`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_steering_messages_drain` ON `relay_steering_messages` (`tenant_id`, `execution_id`, `kind`, `drain_id`, `sequence`);\n--> statement-breakpoint\nCREATE TABLE `relay_steering_drains` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`execution_id` VARCHAR(191) NOT NULL,\n\t`kind` VARCHAR(191) NOT NULL,\n\t`drain_id` VARCHAR(191) NOT NULL,\n\t`message_sequences_json` JSON NOT NULL DEFAULT ('[]'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_steering_drains` PRIMARY KEY (`tenant_id`, `execution_id`, `kind`, `drain_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE TABLE `relay_sessions` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`root_address_id` VARCHAR(191) NOT NULL,\n\t`leaf_entry_id` TEXT,\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_sessions` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_sessions_updated_id` ON `relay_sessions` (`tenant_id`, `updated_at`, `id`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_sessions_root_updated_id` ON `relay_sessions` (`tenant_id`, `root_address_id`, `updated_at`, `id`);\n--> statement-breakpoint\nCREATE TABLE `relay_session_entries` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`session_id` VARCHAR(191) NOT NULL,\n\t`parent_id` VARCHAR(191),\n\t`tag` TEXT NOT NULL,\n\t`payload_json` JSON NOT NULL,\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_session_entries` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_session_entries_session_created` ON `relay_session_entries` (`tenant_id`, `session_id`, `created_at`, `id`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_session_entries_session_parent` ON `relay_session_entries` (`tenant_id`, `session_id`, `parent_id`);\n--> statement-breakpoint\nCREATE TABLE `relay_execution_context_epochs` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`execution_id` VARCHAR(191) NOT NULL,\n\t`baseline` TEXT NOT NULL,\n\t`dynamic_source_ids_json` JSON NOT NULL DEFAULT ('[]'),\n\t`opened_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_execution_context_epochs` PRIMARY KEY (`tenant_id`, `execution_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE TABLE `relay_executions` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`root_address_id` VARCHAR(191) NOT NULL,\n\t`session_id` VARCHAR(191),\n\t`status` VARCHAR(191) NOT NULL,\n\t`agent_id` TEXT,\n\t`agent_revision` INT,\n\t`agent_snapshot_json` JSON,\n\t`agent_tool_input_schema_digests_json` JSON NOT NULL DEFAULT ('{}'),\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_executions` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_executions_root_status` ON `relay_executions` (`tenant_id`, `root_address_id`, `status`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_executions_session_updated_id` ON `relay_executions` (`tenant_id`, `session_id`, `updated_at`, `id`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_executions_updated_id` ON `relay_executions` (`tenant_id`, `updated_at`, `id`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_executions_root_status_updated_id` ON `relay_executions` (`tenant_id`, `root_address_id`, `status`, `updated_at`, `id`);\n--> statement-breakpoint\nCREATE TABLE `relay_child_executions` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`execution_id` VARCHAR(191) NOT NULL,\n\t`address_id` TEXT NOT NULL,\n\t`status` TEXT NOT NULL,\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_child_executions` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_child_executions_parent` ON `relay_child_executions` (`tenant_id`, `execution_id`);\n--> statement-breakpoint\nCREATE TABLE `relay_envelopes` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`execution_id` VARCHAR(191) NOT NULL,\n\t`from_address_id` TEXT NOT NULL,\n\t`to_address_id` VARCHAR(191) NOT NULL,\n\t`content_json` JSON NOT NULL,\n\t`wait_json` JSON,\n\t`correlation_key` TEXT,\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_envelopes` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_envelopes_execution` ON `relay_envelopes` (`tenant_id`, `execution_id`, `created_at`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_envelopes_to_address` ON `relay_envelopes` (`tenant_id`, `to_address_id`, `created_at`);\n--> statement-breakpoint\nCREATE TABLE `relay_waits` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`execution_id` VARCHAR(191) NOT NULL,\n\t`envelope_id` TEXT,\n\t`mode` TEXT NOT NULL,\n\t`correlation_key` TEXT,\n\t`state` VARCHAR(191) NOT NULL DEFAULT 'open',\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`resolved_at` DATETIME(3),\n\tCONSTRAINT `pk_relay_waits` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_waits_execution_state` ON `relay_waits` (`tenant_id`, `execution_id`, `state`);\n--> statement-breakpoint\nCREATE TABLE `relay_workspace_leases` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`execution_id` VARCHAR(191) NOT NULL,\n\t`provider_key` TEXT NOT NULL,\n\t`sandbox_ref` TEXT,\n\t`latest_snapshot_ref` TEXT,\n\t`status` VARCHAR(191) NOT NULL,\n\t`resume_strategy` TEXT NOT NULL,\n\t`region` TEXT,\n\t`request_json` JSON,\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_workspace_leases` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `uq_relay_workspace_leases_active_execution` ON `relay_workspace_leases` (`tenant_id`, `execution_id`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_workspace_leases_execution` ON `relay_workspace_leases` (`tenant_id`, `execution_id`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_workspace_leases_status_updated` ON `relay_workspace_leases` (`tenant_id`, `status`, `updated_at`);\n--> statement-breakpoint\nCREATE TABLE `relay_workspace_snapshots` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`lease_id` VARCHAR(191) NOT NULL,\n\t`execution_id` VARCHAR(191) NOT NULL,\n\t`reason` TEXT NOT NULL,\n\t`snapshot_ref` TEXT NOT NULL,\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_workspace_snapshots` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_workspace_snapshots_lease` ON `relay_workspace_snapshots` (`tenant_id`, `lease_id`, `created_at`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_workspace_snapshots_execution` ON `relay_workspace_snapshots` (`tenant_id`, `execution_id`, `created_at`);\n--> statement-breakpoint\nCREATE TABLE `relay_envelope_ready` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`envelope_id` TEXT NOT NULL,\n\t`route_type` TEXT NOT NULL,\n\t`route_key` TEXT NOT NULL,\n\t`state` VARCHAR(191) NOT NULL DEFAULT 'ready',\n\t`available_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`attempt` INT NOT NULL DEFAULT 0,\n\t`claim_owner` TEXT,\n\t`claim_expires_at` DATETIME(3),\n\t`last_error` TEXT,\n\t`idempotency_key` VARCHAR(191),\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`claimed_at` DATETIME(3),\n\t`acknowledged_at` DATETIME(3),\n\tCONSTRAINT `pk_relay_envelope_ready` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_envelope_ready_state_available` ON `relay_envelope_ready` (`tenant_id`, `state`, `available_at`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_envelope_ready_claim_expires` ON `relay_envelope_ready` (`tenant_id`, `claim_expires_at`);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `uq_relay_envelope_ready_idempotency` ON `relay_envelope_ready` (`tenant_id`, `idempotency_key`);\n--> statement-breakpoint\nCREATE TABLE `relay_schedules` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`kind` TEXT NOT NULL,\n\t`target_kind` TEXT NOT NULL,\n\t`address_id` TEXT,\n\t`wait_id` VARCHAR(191),\n\t`cron_expr` TEXT,\n\t`input_json` JSON,\n\t`state` VARCHAR(191) NOT NULL DEFAULT 'active',\n\t`next_run_at` DATETIME(3) NOT NULL,\n\t`attempt` INT NOT NULL DEFAULT 0,\n\t`claim_owner` TEXT,\n\t`claim_expires_at` DATETIME(3),\n\t`last_error` TEXT,\n\t`idempotency_key` VARCHAR(191),\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_schedules` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_schedules_state_next_run` ON `relay_schedules` (`tenant_id`, `state`, `next_run_at`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_schedules_claim_expires` ON `relay_schedules` (`tenant_id`, `claim_expires_at`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_schedules_wait` ON `relay_schedules` (`tenant_id`, `wait_id`);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `uq_relay_schedules_idempotency` ON `relay_schedules` (`tenant_id`, `idempotency_key`);\n--> statement-breakpoint\nCREATE TABLE `relay_execution_events` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`execution_id` VARCHAR(191) NOT NULL,\n\t`child_execution_id` TEXT,\n\t`type` TEXT NOT NULL,\n\t`sequence` INT NOT NULL,\n\t`cursor` VARCHAR(191) NOT NULL,\n\t`content_json` JSON,\n\t`data_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_execution_events` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_execution_events_execution` ON `relay_execution_events` (`tenant_id`, `execution_id`, `created_at`);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `uq_relay_execution_events_sequence` ON `relay_execution_events` (`tenant_id`, `execution_id`, `sequence`);\n--> statement-breakpoint\nCREATE UNIQUE INDEX `uq_relay_execution_events_cursor` ON `relay_execution_events` (`tenant_id`, `cursor`);\n--> statement-breakpoint\nCREATE TABLE `relay_tool_calls` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`execution_id` VARCHAR(191) NOT NULL,\n\t`name` TEXT NOT NULL,\n\t`input_json` JSON NOT NULL,\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_tool_calls` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_tool_calls_execution` ON `relay_tool_calls` (`tenant_id`, `execution_id`, `created_at`);\n--> statement-breakpoint\nCREATE TABLE `relay_tool_results` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`tool_call_id` VARCHAR(191) NOT NULL,\n\t`output_json` JSON NOT NULL,\n\t`error` TEXT,\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_tool_results` PRIMARY KEY (`tenant_id`, `tool_call_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE TABLE `relay_route_attempts` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`envelope_ready_id` VARCHAR(191) NOT NULL,\n\t`route_key` TEXT NOT NULL,\n\t`state` TEXT NOT NULL,\n\t`detail` TEXT,\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\tCONSTRAINT `pk_relay_route_attempts` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE INDEX `idx_relay_route_attempts_ready` ON `relay_route_attempts` (`tenant_id`, `envelope_ready_id`, `created_at`);\n--> statement-breakpoint\nCREATE TABLE `relay_idempotency_keys` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`scope` VARCHAR(191) NOT NULL,\n\t`operation` VARCHAR(191) NOT NULL,\n\t`key` VARCHAR(191) NOT NULL,\n\t`result_json` JSON,\n\t`metadata_json` JSON NOT NULL DEFAULT ('{}'),\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`expires_at` DATETIME(3),\n\tCONSTRAINT `pk_relay_idempotency_keys` PRIMARY KEY (`tenant_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nCREATE UNIQUE INDEX `uq_relay_idempotency_scope_operation_key` ON `relay_idempotency_keys` (`tenant_id`, `scope`, `operation`, `key`);\n";
16
+
17
+ // ../../migrations/mysql/0002_durable_tool_placement.sql
18
+ var _0002_durable_tool_placement_default = "CREATE TABLE `relay_tool_attempts` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`tool_call_id` VARCHAR(191) NOT NULL,\n\t`attempt_number` INT NOT NULL,\n\t`state` VARCHAR(32) NOT NULL,\n\t`worker_id` VARCHAR(191),\n\t`claim_expires_at` DATETIME(3),\n\t`error` TEXT,\n\t`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\t`completed_at` DATETIME(3),\n\tCONSTRAINT `pk_relay_tool_attempts` PRIMARY KEY (`tenant_id`, `tool_call_id`, `id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `definition_json` JSON;\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `placement_kind` VARCHAR(32) NOT NULL DEFAULT 'local';\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `placement_key` VARCHAR(191);\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `state` VARCHAR(32) NOT NULL DEFAULT 'requested';\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `wait_id` VARCHAR(191);\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `idempotency_key` TEXT;\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `available_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3);\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `active_attempt_id` VARCHAR(191);\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `claim_owner` VARCHAR(191);\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `claimed_at` DATETIME(3);\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `claim_expires_at` DATETIME(3);\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `external_outcome_json` JSON;\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `external_outcome_at` DATETIME(3);\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` ADD COLUMN `updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3);\n--> statement-breakpoint\nUPDATE `relay_tool_calls`\nSET `idempotency_key` = CONCAT(\n\t\t'tool:', CHAR_LENGTH(`tenant_id`), ':', `tenant_id`, ':',\n\t\tCHAR_LENGTH(`execution_id`), ':', `execution_id`, ':', CHAR_LENGTH(`id`), ':', `id`\n\t),\n\t`available_at` = `created_at`,\n\t`updated_at` = `created_at`,\n\t`state` = CASE\n\t\tWHEN EXISTS (\n\t\t\tSELECT 1 FROM `relay_tool_results` result\n\t\t\tWHERE result.`tenant_id` = `relay_tool_calls`.`tenant_id`\n\t\t\t\tAND result.`tool_call_id` = `relay_tool_calls`.`id`\n\t\t\t\tAND result.`error` IS NULL\n\t\t) THEN 'completed'\n\t\tWHEN EXISTS (\n\t\t\tSELECT 1 FROM `relay_tool_results` result\n\t\t\tWHERE result.`tenant_id` = `relay_tool_calls`.`tenant_id`\n\t\t\t\tAND result.`tool_call_id` = `relay_tool_calls`.`id`\n\t\t) THEN 'failed'\n\t\tELSE 'requested'\n\tEND;\n--> statement-breakpoint\nALTER TABLE `relay_tool_calls` MODIFY COLUMN `idempotency_key` TEXT NOT NULL;\n--> statement-breakpoint\nCREATE UNIQUE INDEX `uq_relay_tool_attempts_number` ON `relay_tool_attempts` (`tenant_id`, `tool_call_id`, `attempt_number`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_tool_attempts_call` ON `relay_tool_attempts` (`tenant_id`, `tool_call_id`, `attempt_number`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_tool_calls_remote_claim` ON `relay_tool_calls` (`tenant_id`, `placement_kind`, `placement_key`, `state`, `available_at`, `created_at`, `id`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_tool_calls_stale_claim` ON `relay_tool_calls` (`tenant_id`, `state`, `claim_expires_at`);\n--> statement-breakpoint\nCREATE INDEX `idx_relay_tool_calls_client_pending` ON `relay_tool_calls` (`tenant_id`, `placement_kind`, `state`, `created_at`, `id`);\n";
19
+
20
+ // ../../migrations/mysql/0003_durable_inbox.sql
21
+ var _0003_durable_inbox_default = `CREATE TABLE relay_inbox_messages (tenant_id varchar(191) NOT NULL, execution_id varchar(191) NOT NULL, sequence integer NOT NULL, from_address_id varchar(191) NOT NULL, envelope_id varchar(191), content_json json NOT NULL, reply_wait_id varchar(191), correlation_key text, idempotency_key varchar(191), drain_id varchar(191), consumed_at DATETIME(3), metadata_json json, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (tenant_id, execution_id, sequence), UNIQUE KEY uq_relay_inbox_messages_idempotency (tenant_id, execution_id, idempotency_key), KEY idx_relay_inbox_messages_unconsumed (tenant_id, execution_id, consumed_at, sequence), KEY idx_relay_inbox_messages_drain (tenant_id, execution_id, drain_id, sequence));
22
+ --> statement-breakpoint
23
+ CREATE TABLE relay_inbox_drains (tenant_id varchar(191) NOT NULL, execution_id varchar(191) NOT NULL, drain_id varchar(191) NOT NULL, message_sequences_json json NOT NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (tenant_id, execution_id, drain_id));
24
+ `;
25
+
26
+ // ../../migrations/mysql/0004_execution_state.sql
27
+ var _0004_execution_state_default = `CREATE TABLE relay_execution_state (tenant_id varchar(191) NOT NULL, execution_id varchar(191) NOT NULL, state_key varchar(191) NOT NULL, value_json json NOT NULL, version integer NOT NULL, created_at DATETIME(3) NOT NULL, updated_at DATETIME(3) NOT NULL, PRIMARY KEY (tenant_id, execution_id, state_key));
28
+ --> statement-breakpoint
29
+ CREATE TABLE relay_execution_state_ops (tenant_id varchar(191) NOT NULL, execution_id varchar(191) NOT NULL, idempotency_key varchar(191) NOT NULL, state_key varchar(191) NOT NULL, version integer NOT NULL, op varchar(10) NOT NULL, result_present boolean NOT NULL, result_value_json json NULL, result_created_at DATETIME(3) NULL, result_updated_at DATETIME(3) NULL, created_at DATETIME(3) NOT NULL, PRIMARY KEY (tenant_id, execution_id, idempotency_key), INDEX idx_relay_execution_state_ops_version (tenant_id, execution_id, state_key, version));
30
+ `;
31
+
32
+ // ../../migrations/mysql/0005_durable_entities.sql
33
+ var _0005_durable_entities_default = `CREATE TABLE relay_entity_kinds (
34
+ tenant_id varchar(255) NOT NULL DEFAULT 'tenant:system', kind varchar(255) NOT NULL, agent_id varchar(255) NOT NULL,
35
+ inbox_policy_json json, state_enabled integer, continue_as_new_after_turns integer,
36
+ metadata_json json NOT NULL, created_at timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
37
+ updated_at timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (tenant_id, kind)
38
+ );
39
+ --> statement-breakpoint
40
+ CREATE TABLE relay_entity_instances (
41
+ tenant_id varchar(255) NOT NULL DEFAULT 'tenant:system', kind varchar(255) NOT NULL, \`key\` varchar(255) NOT NULL,
42
+ address_id varchar(255) NOT NULL, execution_id varchar(255) NOT NULL, generation integer NOT NULL,
43
+ status varchar(32) NOT NULL, created_at timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), destroyed_at timestamp(3),
44
+ PRIMARY KEY (tenant_id, kind, \`key\`), INDEX idx_relay_entity_instances_kind_status (tenant_id, kind, status)
45
+ );
46
+ `;
47
+
48
+ // ../../migrations/mysql/0006_ephemeral_presence.sql
49
+ var _0006_ephemeral_presence_default = "CREATE TABLE `relay_presence` (\n\t`tenant_id` VARCHAR(191) NOT NULL DEFAULT 'system',\n\t`id` VARCHAR(191) NOT NULL,\n\t`scope_kind` VARCHAR(16) NOT NULL,\n\t`scope_id` VARCHAR(191) NOT NULL,\n\t`metadata_json` JSON NOT NULL,\n\t`connected_at` DATETIME(3) NOT NULL,\n\t`expires_at` DATETIME(3) NOT NULL,\n\tCONSTRAINT `pk_relay_presence` PRIMARY KEY (`tenant_id`, `id`, `scope_kind`, `scope_id`),\n\tCONSTRAINT `chk_relay_presence_scope_kind` CHECK (`scope_kind` IN ('execution', 'session')),\n\tINDEX `idx_relay_presence_scope_expires` (`tenant_id`, `scope_kind`, `scope_id`, `expires_at`)\n);\n";
50
+
51
+ // ../../migrations/mysql/0007_topic_subscriptions.sql
52
+ var _0007_topic_subscriptions_default = `CREATE TABLE relay_topic_subscriptions (tenant_id varchar(191) NOT NULL, topic_address_id varchar(191) NOT NULL, subscriber_execution_id varchar(191) NOT NULL, metadata_json json, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (tenant_id, topic_address_id, subscriber_execution_id), KEY idx_relay_topic_subscriptions_subscriber (tenant_id, subscriber_execution_id));
53
+ `;
54
+
55
+ // ../../migrations/mysql/0008_child_fan_out.sql
56
+ var _0008_child_fan_out_default = "CREATE TABLE `relay_child_fan_outs` (\n `tenant_id` varchar(191) NOT NULL DEFAULT 'system',\n `id` varchar(191) NOT NULL,\n `parent_execution_id` varchar(191) NOT NULL,\n `definition_json` json NOT NULL,\n `state` varchar(32) NOT NULL DEFAULT 'joining',\n `satisfied_at` datetime(3),\n `failed_at` datetime(3),\n `cancelled_at` datetime(3),\n `created_at` datetime(3) NOT NULL,\n PRIMARY KEY (`tenant_id`, `id`),\n INDEX `idx_relay_child_fan_outs_parent` (`tenant_id`, `parent_execution_id`)\n);\n--> statement-breakpoint\nCREATE TABLE `relay_child_fan_out_members` (\n `tenant_id` varchar(191) NOT NULL DEFAULT 'system',\n `fan_out_id` varchar(191) NOT NULL,\n `child_execution_id` varchar(191) NOT NULL,\n `ordinal` integer NOT NULL,\n `state` varchar(32) NOT NULL DEFAULT 'queued',\n `output_json` json,\n `error` text,\n `completed_at` datetime(3),\n PRIMARY KEY (`tenant_id`, `fan_out_id`, `child_execution_id`),\n UNIQUE KEY `uq_relay_child_fan_out_member_ordinal` (`tenant_id`, `fan_out_id`, `ordinal`)\n);\n";
57
+
58
+ // ../../migrations/mysql/0009_workflow_definitions.sql
59
+ var _0009_workflow_definitions_default = `CREATE TABLE IF NOT EXISTS relay_workflow_definition_revisions (tenant_id VARCHAR(255) NOT NULL, workflow_definition_id VARCHAR(255) NOT NULL, revision INT NOT NULL, digest VARCHAR(255) NOT NULL, definition_json JSON NOT NULL, created_at DATETIME(3) NOT NULL, PRIMARY KEY (tenant_id, workflow_definition_id, revision), UNIQUE KEY uq_relay_workflow_definition_digest (tenant_id, workflow_definition_id, digest));
60
+ --> statement-breakpoint
61
+ CREATE TABLE IF NOT EXISTS relay_workflow_runs (tenant_id VARCHAR(255) NOT NULL, execution_id VARCHAR(255) NOT NULL, workflow_definition_id VARCHAR(255) NOT NULL, workflow_definition_revision INT NOT NULL, workflow_definition_digest VARCHAR(255) NOT NULL, status VARCHAR(32) NOT NULL, created_at DATETIME(3) NOT NULL, updated_at DATETIME(3) NOT NULL, PRIMARY KEY (tenant_id, execution_id));
62
+ `;
63
+
64
+ // ../../migrations/mysql/0010_workflow_runtime.sql
65
+ var _0010_workflow_runtime_default = `CREATE TABLE IF NOT EXISTS relay_workflow_operation_states (tenant_id VARCHAR(255) NOT NULL, execution_id VARCHAR(255) NOT NULL, operation_id VARCHAR(255) NOT NULL, status VARCHAR(32) NOT NULL, fan_out_id VARCHAR(255), decision BOOLEAN, output_json JSON, attempt INTEGER, backoff_until DATETIME(3), compensation_operation_id VARCHAR(255), started_at DATETIME(3), completed_at DATETIME(3), updated_at DATETIME(3) NOT NULL, PRIMARY KEY (tenant_id, execution_id, operation_id));
66
+ --> statement-breakpoint
67
+ CREATE TABLE IF NOT EXISTS relay_workflow_lifecycle_events (tenant_id VARCHAR(255) NOT NULL, execution_id VARCHAR(255) NOT NULL, sequence INT NOT NULL, event_type VARCHAR(64) NOT NULL, operation_id VARCHAR(255), data_json JSON, created_at DATETIME(3) NOT NULL, PRIMARY KEY (tenant_id, execution_id, sequence));
68
+ `;
69
+
70
+ // src/mysql-migrations.ts
71
+ var migrations = [
72
+ [1, "baseline", _0001_baseline_default],
73
+ [2, "durable_tool_placement", _0002_durable_tool_placement_default],
74
+ [3, "durable_inbox", _0003_durable_inbox_default],
75
+ [4, "execution_state", _0004_execution_state_default],
76
+ [5, "durable_entities", _0005_durable_entities_default],
77
+ [6, "ephemeral_presence", _0006_ephemeral_presence_default],
78
+ [7, "topic_subscriptions", _0007_topic_subscriptions_default],
79
+ [8, "child_fan_out", _0008_child_fan_out_default],
80
+ [9, "workflow_definitions", _0009_workflow_definitions_default],
81
+ [10, "workflow_runtime", _0010_workflow_runtime_default]
82
+ ];
83
+
84
+ // src/mysql.ts
85
+ var runtimeDatabaseLayer2 = (options) => runtimeDatabaseLayer({
86
+ ...options,
87
+ dialect: "mysql",
88
+ ownership: "shared-multi-node",
89
+ schemaHead: String(migrations.at(-1)?.[0]),
90
+ schema: verifySchema
91
+ });
92
+ var verifySchema = Effect.gen(function* () {
93
+ const sql = yield* SqlClient;
94
+ const rows = yield* sql`SELECT migration_id, name FROM relay_migrations ORDER BY migration_id`;
95
+ const actual = rows.map((row) => `${row.migration_id}:${row.name}`).join(",");
96
+ const expected = migrations.map(([id, name]) => `${id}:${name}`).join(",");
97
+ if (actual !== expected)
98
+ return yield* Effect.fail(new Error(`expected ${expected}; actual ${actual}`));
99
+ }).pipe((effect) => normalizeMigrationCause(effect, "mysql", "verify"));
100
+ var runMigrations = Effect.gen(function* () {
101
+ const sql = yield* SqlClient;
102
+ yield* sql`CREATE TABLE IF NOT EXISTS relay_migrations (migration_id INTEGER UNSIGNED NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, name VARCHAR(255) NOT NULL, PRIMARY KEY (migration_id))`;
103
+ const rows = yield* sql`SELECT migration_id, name FROM relay_migrations ORDER BY migration_id`;
104
+ const current = rows.map((row) => [Number(row.migration_id), row.name]);
105
+ const expectedPrefix = migrations.slice(0, current.length).map(([id, name]) => [id, name]);
106
+ if (JSON.stringify(current) !== JSON.stringify(expectedPrefix)) {
107
+ return yield* Effect.fail(new Error(`migration history is not a packaged manifest prefix`));
108
+ }
109
+ for (const [id, name, source] of migrations.slice(current.length)) {
110
+ for (const statement of source.split("--> statement-breakpoint").map((value) => value.trim()).filter(Boolean)) {
111
+ yield* sql.unsafe(statement);
112
+ }
113
+ yield* sql`INSERT INTO relay_migrations (migration_id, name) VALUES (${id}, ${name})`;
114
+ }
115
+ });
116
+ var migrate = (options) => normalizeMigrationCause(runMigrations, "mysql", "apply").pipe(Effect.andThen(normalizeMigrationCause(verifySchema, "mysql", "verify")), Effect.provide(normalizeClientLayer(options.clientLayer)), Effect.asVoid);
117
+ var MySQL = { runtimeDatabaseLayer: runtimeDatabaseLayer2, migrate };
118
+ export {
119
+ runtimeDatabaseLayer2 as runtimeDatabaseLayer,
120
+ migrate,
121
+ MySQL
122
+ };
@@ -0,0 +1,77 @@
1
+ // @bun
2
+ import {
3
+ normalizeClientLayer,
4
+ normalizeMigrationCause,
5
+ runtimeDatabaseLayer
6
+ } from "./index-gxskhyra.js";
7
+ import"./index-xbbfagnb.js";
8
+ import"./index-z9xk02sv.js";
9
+
10
+ // src/postgres.ts
11
+ import { PgClient } from "@effect/sql-pg/PgClient";
12
+ import { makeWithDefaults } from "drizzle-orm/effect-postgres";
13
+ import { migrate as runDrizzleMigrator } from "drizzle-orm/effect-postgres/migrator";
14
+ import { Effect } from "effect";
15
+ import { SqlClient } from "effect/unstable/sql/SqlClient";
16
+ import { existsSync } from "fs";
17
+ import { fileURLToPath } from "url";
18
+ var schemaHead = "20260712200000_workflow_runtime";
19
+ var migrationNames = [
20
+ "20260701002839_sour_cerebro",
21
+ "20260701041134_acoustic_hulk",
22
+ "20260701160543_condemned_stryfe",
23
+ "20260701220315_heavy_gorgon",
24
+ "20260701225444_polite_lord_hawal",
25
+ "20260702030128_flaky_misty_knight",
26
+ "20260705003847_nervous_banshee",
27
+ "20260705012626_common_stryfe",
28
+ "20260705015420_sweet_captain_marvel",
29
+ "20260705023041_chunky_scalphunter",
30
+ "20260705030344_short_patriot",
31
+ "20260705045546_heavy_ben_grimm",
32
+ "20260706185931_regular_shadow_king",
33
+ "20260706233300_equal_cyclops",
34
+ "20260709030349_agent_id_rename",
35
+ "20260709214238_faithful_black_widow",
36
+ "20260709220016_fearless_aaron_stack",
37
+ "20260712120000_durable_inbox",
38
+ "20260712140000_execution_state",
39
+ "20260712150000_durable_entities",
40
+ "20260712160000_ephemeral_presence",
41
+ "20260712170000_topic_subscriptions",
42
+ "20260712180000_child_fan_out",
43
+ "20260712190000_workflow_definitions",
44
+ schemaHead
45
+ ];
46
+ var migrationsFolder = () => {
47
+ const packaged = fileURLToPath(new URL("./migrations/pg", import.meta.url));
48
+ return existsSync(packaged) ? packaged : fileURLToPath(new URL("../../../migrations/pg", import.meta.url));
49
+ };
50
+ var verifySchema = Effect.gen(function* () {
51
+ const sql = yield* SqlClient;
52
+ const rows = yield* sql`SELECT name FROM drizzle.__drizzle_migrations ORDER BY id`;
53
+ const actual = rows.map((row) => row.name).join(",");
54
+ const expected = migrationNames.join(",");
55
+ if (actual !== expected) {
56
+ return yield* Effect.fail(new Error(`expected ${expected}; actual ${actual}`));
57
+ }
58
+ }).pipe((effect) => normalizeMigrationCause(effect, "pg", "verify"));
59
+ var runtimeDatabaseLayer2 = (options) => runtimeDatabaseLayer({
60
+ ...options,
61
+ dialect: "pg",
62
+ ownership: "shared-multi-node",
63
+ schemaHead,
64
+ schema: verifySchema
65
+ });
66
+ var migrate = (options) => normalizeMigrationCause(Effect.gen(function* () {
67
+ const sql = yield* SqlClient;
68
+ const pg = sql;
69
+ const database = yield* makeWithDefaults().pipe(Effect.provideService(PgClient, pg));
70
+ yield* runDrizzleMigrator(database, { migrationsFolder: migrationsFolder() });
71
+ }), "pg", "apply").pipe(Effect.andThen(normalizeMigrationCause(verifySchema, "pg", "verify")), Effect.provide(normalizeClientLayer(options.clientLayer)), Effect.asVoid);
72
+ var Postgres = { runtimeDatabaseLayer: runtimeDatabaseLayer2, migrate };
73
+ export {
74
+ runtimeDatabaseLayer2 as runtimeDatabaseLayer,
75
+ migrate,
76
+ Postgres
77
+ };
package/dist/sqlite.js CHANGED
@@ -1,8 +1,20 @@
1
1
  // @bun
2
2
  import {
3
+ normalizeMigrationCause,
4
+ runtimeDatabaseLayer
5
+ } from "./index-gxskhyra.js";
6
+ import {
7
+ DatabaseAlreadyOwned,
8
+ DatabaseDialect,
9
+ RuntimeConfigurationError,
10
+ RuntimeMigrationError,
11
+ RuntimeTopologyError,
12
+ SchemaHeadMismatch,
3
13
  exports_client,
4
- exports_operation
5
- } from "./index-rmaq3qc8.js";
14
+ exports_operation,
15
+ exports_runtime,
16
+ makeDatabaseIdentity
17
+ } from "./index-xbbfagnb.js";
6
18
  import {
7
19
  __export,
8
20
  exports_activity_version_registry,
@@ -20,6 +32,7 @@ import {
20
32
  exports_child_run_service,
21
33
  exports_content_schema,
22
34
  exports_definition_runtime,
35
+ exports_embedding_model_service,
23
36
  exports_entity_schema,
24
37
  exports_envelope_schema,
25
38
  exports_envelope_service,
@@ -46,11 +59,12 @@ import {
46
59
  exports_wait_service,
47
60
  exports_workflow_definition_repository,
48
61
  exports_workflow_schema
49
- } from "./index-3e4cs8s6.js";
62
+ } from "./index-z9xk02sv.js";
50
63
  // src/sqlite-runtime.ts
51
64
  var exports_sqlite_runtime = {};
52
65
  __export(exports_sqlite_runtime, {
53
66
  workflowLayer: () => workflowLayer,
67
+ runtimeDatabaseLayer: () => runtimeDatabaseLayer2,
54
68
  migrationsLayer: () => migrationsLayer,
55
69
  layer: () => layer,
56
70
  clientLayer: () => clientLayer,
@@ -60,6 +74,8 @@ import { layer as sqliteClientLayer } from "@effect/sql-sqlite-bun/SqliteClient"
60
74
  import { layer as sqliteMigratorLayer, run as runSqliteMigrator } from "@effect/sql-sqlite-bun/SqliteMigrator";
61
75
  import { Effect as Effect2, Layer } from "effect";
62
76
  import { SqlClient as SqlClient2 } from "effect/unstable/sql/SqlClient";
77
+ import { dirname, resolve } from "path";
78
+ import { realpathSync } from "fs";
63
79
 
64
80
  // ../../migrations/sqlite/0001_baseline.sql
65
81
  var _0001_baseline_default = `CREATE TABLE "relay_address_book_entries" (
@@ -665,6 +681,69 @@ var loader = Effect.succeed(migrations.map(({ id, name, source }) => [id, name,
665
681
 
666
682
  // src/sqlite-runtime.ts
667
683
  var clientLayer = (options) => sqliteClientLayer(options);
684
+ var memoryIdentity = 0;
685
+ var ownedDatabases = new Set;
686
+ var canonicalFilename = (filename) => {
687
+ const absolute = resolve(filename);
688
+ try {
689
+ return realpathSync(absolute);
690
+ } catch {
691
+ try {
692
+ return resolve(realpathSync(dirname(absolute)), absolute.slice(dirname(absolute).length + 1));
693
+ } catch {
694
+ return absolute;
695
+ }
696
+ }
697
+ };
698
+ var runtimeDatabaseLayer2 = (options) => {
699
+ if (options.filename.length === 0) {
700
+ return Object.assign(Layer.effectContext(Effect2.fail(new RuntimeConfigurationError({
701
+ setting: "filename",
702
+ nextAction: "provide-setting",
703
+ cause: { _tag: "ConfigFailure", reason: "SQLite Runtime requires a non-empty filename" }
704
+ }))), { [DatabaseDialect]: "sqlite" });
705
+ }
706
+ const filename = options.filename === ":memory:" ? options.filename : canonicalFilename(options.filename);
707
+ const identity = options.filename === ":memory:" ? `sqlite:memory:${memoryIdentity++}` : `sqlite:file:${filename}`;
708
+ const databaseIdentity = makeDatabaseIdentity(identity);
709
+ const acquireSchema = Effect2.gen(function* () {
710
+ yield* runSqliteMigrator(migrationOptions).pipe((effect) => normalizeMigrationCause(effect, "sqlite", "apply"));
711
+ const sql = yield* SqlClient2;
712
+ const rows = yield* sql`SELECT migration_id, name FROM relay_migrations ORDER BY migration_id`.pipe((effect) => normalizeMigrationCause(effect, "sqlite", "verify"));
713
+ const actual = rows.map((row) => `${row.migration_id}:${row.name}`).join(",");
714
+ const expected = migrations.map((migration) => `${migration.id}:${migration.name}`).join(",");
715
+ if (actual !== expected) {
716
+ return yield* new RuntimeMigrationError({
717
+ dialect: "sqlite",
718
+ phase: "verify",
719
+ nextAction: "run-compatible-release",
720
+ cause: new SchemaHeadMismatch({ expected, actual })
721
+ });
722
+ }
723
+ });
724
+ const database = runtimeDatabaseLayer({
725
+ dialect: "sqlite",
726
+ clientLayer: clientLayer({ ...options, filename }),
727
+ databaseIdentity,
728
+ ownership: "runtime-exclusive",
729
+ schemaHead: String(migrations.at(-1)?.id ?? 0),
730
+ schema: acquireSchema
731
+ });
732
+ const ownership = Layer.effectDiscard(Effect2.acquireRelease(Effect2.suspend(() => {
733
+ if (ownedDatabases.has(identity)) {
734
+ return Effect2.fail(new RuntimeTopologyError({
735
+ dialect: "sqlite",
736
+ role: "embedded",
737
+ nextAction: "reuse-runtime",
738
+ cause: new DatabaseAlreadyOwned({ databaseIdentity })
739
+ }));
740
+ }
741
+ ownedDatabases.add(identity);
742
+ return Effect2.void;
743
+ }), () => Effect2.sync(() => ownedDatabases.delete(identity))));
744
+ const ownedDatabase = database.pipe(Layer.provideMerge(ownership));
745
+ return Object.assign(ownedDatabase, { [DatabaseDialect]: "sqlite" });
746
+ };
668
747
  var migrationOptions = {
669
748
  loader,
670
749
  table: "relay_migrations"
@@ -707,6 +786,7 @@ export {
707
786
  exports_scheduler_service as SchedulerService,
708
787
  exports_schedule_schema as Schedule,
709
788
  exports_sqlite_runtime as SQLite,
789
+ exports_runtime as Runtime,
710
790
  exports_runner_runtime_service as RunnerRuntime,
711
791
  exports_prompt_assembler_service as PromptAssembler,
712
792
  exports_operation as Operation,
@@ -721,6 +801,7 @@ export {
721
801
  exports_envelope_service as EnvelopeService,
722
802
  exports_envelope_schema as Envelope,
723
803
  exports_entity_schema as Entity,
804
+ exports_embedding_model_service as EmbeddingModelService,
724
805
  exports_content_schema as Content,
725
806
  exports_client as Client,
726
807
  exports_child_run_service as ChildRunService,
@@ -11,6 +11,7 @@ import { AwaitWaitInput, WaitOutcome } from "./operation";
11
11
  import { FollowExecutionInput, FollowExecutionItem } from "./operation";
12
12
  import { CommandReplyInvalid, CommandTimedOut, EntityNotFound } from "./command";
13
13
  import type { Command } from "./command";
14
+ import { type RuntimeCapabilityUnavailable } from "./runtime-capability-policy";
14
15
  declare const ClientError_base: Schema.Class<ClientError, Schema.TaggedStruct<"ClientError", {
15
16
  readonly message: Schema.String;
16
17
  }>, import("effect/Cause").YieldableError>;
@@ -104,7 +105,7 @@ export interface Interface {
104
105
  readonly registerWorkflowDefinition: (input: Workflow.RegisterDefinitionPayload) => Effect.Effect<Workflow.DefinitionRegistered, ClientError>;
105
106
  readonly getWorkflowDefinitionRevision: (id: Ids.WorkflowDefinitionId, revision?: Workflow.DefinitionRevision) => Effect.Effect<Workflow.DefinitionRevisionRecord | undefined, ClientError>;
106
107
  readonly listWorkflowDefinitionRevisions: (id: Ids.WorkflowDefinitionId) => Effect.Effect<Workflow.DefinitionRevisionList, ClientError>;
107
- readonly startWorkflowRun: (input: Workflow.StartRunPayload) => Effect.Effect<Workflow.RunRecord, ClientError>;
108
+ readonly startWorkflowRun: (input: Workflow.StartRunPayload) => Effect.Effect<Workflow.RunRecord, ClientError | RuntimeCapabilityUnavailable>;
108
109
  readonly inspectWorkflowRun: (id: Ids.ExecutionId) => Effect.Effect<Workflow.RunRecord | undefined, ClientError>;
109
110
  readonly replayWorkflowRun: (id: Ids.ExecutionId) => Effect.Effect<ReadonlyArray<Workflow.LifecycleEvent>, ClientError>;
110
111
  readonly cancelWorkflowRun: (id: Ids.ExecutionId) => Effect.Effect<Workflow.RunRecord | undefined, ClientError>;
@@ -163,7 +164,7 @@ export interface Interface {
163
164
  readonly listToolAttempts: (input: ListToolAttemptsInput) => Effect.Effect<ToolAttemptList, ClientError>;
164
165
  readonly submitInboundEnvelope: (input: SubmitInboundEnvelopeInput) => Effect.Effect<SubmitInboundEnvelopeAccepted, WaitKindMismatch | ClientError>;
165
166
  readonly spawnChildRun: (input: SpawnChildRunInput) => Effect.Effect<Execution.ChildRunAccepted, ClientError>;
166
- readonly createChildFanOut: (input: CreateChildFanOutInput) => Effect.Effect<ChildOrchestration.FanOutState, ClientError>;
167
+ readonly createChildFanOut: (input: CreateChildFanOutInput) => Effect.Effect<ChildOrchestration.FanOutState, ClientError | RuntimeCapabilityUnavailable>;
167
168
  readonly cancelChildFanOut: (input: CancelChildFanOutInput) => Effect.Effect<CancelChildFanOutResult, ClientError>;
168
169
  readonly inspectChildFanOut: (input: InspectChildFanOutInput) => Effect.Effect<InspectChildFanOutResult, ClientError>;
169
170
  readonly claimEnvelopeReady: (input: ClaimEnvelopeReadyInput) => Effect.Effect<EnvelopeReadyLease | null, ClientError>;
@@ -182,7 +183,8 @@ export interface FollowExecutionDependencies {
182
183
  readonly streamExecution: (input: StreamExecutionInput) => Stream.Stream<Execution.ExecutionEvent, EventLogCursorNotFound | ClientError>;
183
184
  }
184
185
  export declare const followExecutionFrom: (dependencies: FollowExecutionDependencies) => (input: FollowExecutionInput) => Stream.Stream<FollowExecutionItem, EventLogCursorNotFound | ClientError>;
185
- export declare const layerFromRuntime: Layer.Layer<Service, never, AgentRegistry.Service | EntityRegistry.Service | EntityInstanceService.Service | AddressBook.Service | ExecutionService.Service | EnvelopeService.Service | WaitService.Service | EventLog.Service | SessionStream.Service | ExecutionWatch.Service | ExecutionState.Service | PresenceService.Service | EnvelopeRepository.Service | ExecutionRepository.Service | InboxRepository.Service | TopicService.Service | ToolCallRepository.Service | ChildExecutionRepository.Service | ChildFanOutRepository.Service | SessionRepository.Service | SteeringRepository.Service | ClusterRegistryRepository.Service | ScheduleRepository.Service | SkillRegistry.Service | ToolTransitionCoordinator.Service | WorkflowDefinitionRepository.Service | Sharding.Sharding | ShardingConfig.ShardingConfig>;
186
+ export type RuntimeRequirements = AgentRegistry.Service | EntityRegistry.Service | EntityInstanceService.Service | AddressBook.Service | ExecutionService.Service | EnvelopeService.Service | WaitService.Service | EventLog.Service | SessionStream.Service | ExecutionWatch.Service | ExecutionState.Service | PresenceService.Service | EnvelopeRepository.Service | ExecutionRepository.Service | InboxRepository.Service | TopicService.Service | ToolCallRepository.Service | ChildExecutionRepository.Service | ChildFanOutRepository.Service | SessionRepository.Service | SteeringRepository.Service | ClusterRegistryRepository.Service | ScheduleRepository.Service | SkillRegistry.Service | ToolTransitionCoordinator.Service | WorkflowDefinitionRepository.Service | Sharding.Sharding | ShardingConfig.ShardingConfig;
187
+ export declare const layerFromRuntime: Layer.Layer<Service, never, RuntimeRequirements>;
186
188
  export declare const testLayer: (implementation: Omit<Interface, "registerWorkflowDefinition" | "getWorkflowDefinitionRevision" | "listWorkflowDefinitionRevisions" | "startWorkflowRun" | "inspectWorkflowRun" | "replayWorkflowRun" | "cancelWorkflowRun" | "streamSession" | "watchExecutions" | "getPresence" | "watchPresence" | "registerEntityKind" | "getOrCreateEntity" | "getEntity" | "destroyEntity" | "listEntities" | "followExecution"> & Partial<Interface>) => Layer.Layer<Service, never, never>;
187
189
  export declare const registerAgentDefinition: (input: Agent.RegisterDefinitionPayload) => Effect.Effect<Agent.DefinitionRegistered, ClientError, Service>;
188
190
  export declare const registerEntityKind: (input: Entity.KindDefinition) => Effect.Effect<Entity.KindDefinition, ClientError, Service>;
@@ -461,7 +463,7 @@ export declare const releaseToolWork: (input: ReleaseToolWorkInput) => Effect.Ef
461
463
  export declare const listToolAttempts: (input: ListToolAttemptsInput) => Effect.Effect<ToolAttemptList, ClientError, Service>;
462
464
  export declare const submitInboundEnvelope: (input: SubmitInboundEnvelopeInput) => Effect.Effect<SubmitInboundEnvelopeAccepted, ClientError | WaitKindMismatch, Service>;
463
465
  export declare const spawnChildRun: (input: SpawnChildRunInput) => Effect.Effect<Execution.ChildRunAccepted, ClientError, Service>;
464
- export declare const createChildFanOut: (input: CreateChildFanOutInput) => Effect.Effect<ChildOrchestration.FanOutState, ClientError, Service>;
466
+ export declare const createChildFanOut: (input: CreateChildFanOutInput) => Effect.Effect<ChildOrchestration.FanOutState, RuntimeCapabilityUnavailable | ClientError, Service>;
465
467
  export declare const cancelChildFanOut: (input: CancelChildFanOutInput) => Effect.Effect<CancelChildFanOutResult, ClientError, Service>;
466
468
  export declare const inspectChildFanOut: (input: InspectChildFanOutInput) => Effect.Effect<InspectChildFanOutResult, ClientError, Service>;
467
469
  export declare const claimEnvelopeReady: (input: ClaimEnvelopeReadyInput) => Effect.Effect<EnvelopeReadyLease | null, ClientError, Service>;
@@ -4,8 +4,10 @@ export * as Command from "./command";
4
4
  export * as Database from "./database";
5
5
  export * as Operation from "./operation";
6
6
  export * as ToolWorker from "./tool-worker";
7
+ export * as Runtime from "./runtime";
8
+ export { makeDatabaseIdentity, type DatabaseIdentity } from "./runtime";
7
9
  export { Address, Agent, Content, Entity, Envelope, Execution, Ids, Presence, Schedule, Shared, Skill, Tool, Waits, Workflow, } from "../schema/index";
8
- export { AddressBook, AddressResolution, AgentLoop, AgentRegistry, ActivityVersionRegistry, ArtifactStore, BlobStore, ChildRunService, ChildFanOutRuntime, EnvelopeService, EventLog, ExecutionEntity, ExecutionService, ExecutionWorkflow, LanguageModelService, ModelCallPolicy, PresenceService, PresenceTool, PromptAssembler, SchedulerService, SchemaRegistry, SkillRegistry, ToolRuntime, WaitService, WorkflowDefinitionRuntime, } from "../runtime/index";
10
+ export { AddressBook, AddressResolution, AgentLoop, AgentRegistry, ActivityVersionRegistry, ArtifactStore, BlobStore, ChildRunService, ChildFanOutRuntime, EnvelopeService, EventLog, ExecutionEntity, ExecutionService, ExecutionWorkflow, EmbeddingModelService, LanguageModelService, ModelCallPolicy, PresenceService, PresenceTool, PromptAssembler, SchedulerService, SchemaRegistry, SkillRegistry, ToolRuntime, WaitService, WorkflowDefinitionRuntime, } from "../runtime/index";
9
11
  export { RunnerRuntime } from "../runtime/index";
10
12
  export { LanguageModelRegistration } from "../ai/index";
11
13
  export { RelaySchema, SkillDefinitionRepository } from "../store-sql/index";
@@ -0,0 +1,4 @@
1
+ import { Effect } from "effect";
2
+ import { RuntimeMigrationError, type Dialect } from "./runtime";
3
+ export declare const migrationFailure: (dialect: Dialect, phase: "apply" | "verify", cause: unknown) => RuntimeMigrationError;
4
+ export declare const normalizeMigrationCause: <A, E, R>(effect: Effect.Effect<A, E, R>, dialect: Dialect, phase: "apply" | "verify") => Effect.Effect<A, RuntimeMigrationError, R>;
@@ -0,0 +1 @@
1
+ export declare const migrations: readonly [readonly [1, "baseline", string], readonly [2, "durable_tool_placement", string], readonly [3, "durable_inbox", string], readonly [4, "execution_state", string], readonly [5, "durable_entities", string], readonly [6, "ephemeral_presence", string], readonly [7, "topic_subscriptions", string], readonly [8, "child_fan_out", string], readonly [9, "workflow_definitions", string], readonly [10, "workflow_runtime", string]];
@@ -0,0 +1,13 @@
1
+ import { Effect, type Layer } from "effect";
2
+ import { SqlClient } from "effect/unstable/sql/SqlClient";
3
+ import type { DatabaseIdentity, DatabaseLayer, RuntimeConfigurationError, RuntimeMigrationError } from "./runtime";
4
+ export interface MySQLRuntimeDatabaseOptions<E, R> {
5
+ readonly clientLayer: Layer.Layer<SqlClient, E, R>;
6
+ readonly databaseIdentity: DatabaseIdentity;
7
+ }
8
+ export declare const runtimeDatabaseLayer: <E, R>(options: MySQLRuntimeDatabaseOptions<E, R>) => DatabaseLayer<"mysql", RuntimeConfigurationError | RuntimeMigrationError, R>;
9
+ export declare const migrate: <E, R>(options: MySQLRuntimeDatabaseOptions<E, R>) => Effect.Effect<void, RuntimeConfigurationError | RuntimeMigrationError, R>;
10
+ export declare const MySQL: {
11
+ readonly runtimeDatabaseLayer: typeof runtimeDatabaseLayer;
12
+ readonly migrate: typeof migrate;
13
+ };