@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.
- package/dist/ai.js +2 -2
- package/dist/{index-kghdnamr.js → index-d8q4kfjy.js} +1 -1
- package/dist/index-gxskhyra.js +69 -0
- package/dist/{index-rmaq3qc8.js → index-xbbfagnb.js} +744 -395
- package/dist/{index-3e4cs8s6.js → index-z9xk02sv.js} +650 -531
- package/dist/index.js +10 -4
- package/dist/mysql.js +122 -0
- package/dist/postgres.js +77 -0
- package/dist/sqlite.js +84 -3
- package/dist/types/relay/client.d.ts +6 -4
- package/dist/types/relay/index.d.ts +3 -1
- package/dist/types/relay/migration-errors.d.ts +4 -0
- package/dist/types/relay/mysql-migrations.d.ts +1 -0
- package/dist/types/relay/mysql.d.ts +13 -0
- package/dist/types/relay/operation.d.ts +60 -10
- package/dist/types/relay/postgres.d.ts +13 -0
- package/dist/types/relay/runtime-capability-policy.d.ts +19 -0
- package/dist/types/relay/runtime-database-adapter.d.ts +12 -0
- package/dist/types/relay/runtime-database.d.ts +21 -0
- package/dist/types/relay/runtime.d.ts +198 -0
- package/dist/types/relay/sqlite-runtime.d.ts +9 -0
- package/dist/types/relay/sqlite.d.ts +2 -0
- package/dist/types/runtime/address/address-resolution-service.d.ts +32 -10
- package/dist/types/runtime/agent/relay-compaction.d.ts +3 -2
- package/dist/types/runtime/child/child-fan-out-runtime.d.ts +2 -0
- package/dist/types/runtime/child/spawn-child-run-tool.d.ts +7 -0
- package/dist/types/runtime/model/language-model-service.d.ts +1 -0
- package/dist/types/runtime/runner/runner-runtime-service.d.ts +30 -30
- package/dist/types/runtime/workflow/definition-runtime.d.ts +2 -0
- package/dist/types/runtime/workflow/execution-workflow.d.ts +64 -20
- package/dist/types/schema/agent-schema.d.ts +220 -60
- package/dist/types/schema/child-orchestration-schema.d.ts +21 -0
- package/dist/types/schema/execution-schema.d.ts +74 -10
- package/dist/types/store-sql/workflow/workflow-definition-repository.d.ts +6 -2
- 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-
|
|
4
|
+
} from "./index-d8q4kfjy.js";
|
|
5
5
|
import {
|
|
6
6
|
Service,
|
|
7
7
|
exports_client,
|
|
8
8
|
exports_command,
|
|
9
|
-
exports_operation
|
|
10
|
-
|
|
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-
|
|
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
|
+
};
|
package/dist/postgres.js
ADDED
|
@@ -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
|
-
|
|
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-
|
|
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
|
|
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
|
+
};
|