@relayfx/sdk 0.0.50 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/README.md +5 -0
  2. package/dist/ai.js +42 -17222
  3. package/dist/index-2xztzkfr.js +20596 -0
  4. package/dist/index-bcbbm5wt.js +137 -0
  5. package/dist/index-qgt9z94q.js +2443 -0
  6. package/dist/index.js +830 -18839
  7. package/dist/migrations/20260712120000_durable_inbox/migration.sql +9 -0
  8. package/dist/migrations/20260712140000_execution_state/migration.sql +5 -0
  9. package/dist/migrations/20260712150000_durable_entities/migration.sql +15 -0
  10. package/dist/migrations/20260712160000_ephemeral_presence/migration.sql +13 -0
  11. package/dist/migrations/20260712170000_topic_subscriptions/migration.sql +3 -0
  12. package/dist/migrations/20260712180000_child_fan_out/migration.sql +27 -0
  13. package/dist/migrations/20260712190000_workflow_definitions/migration.sql +3 -0
  14. package/dist/migrations/20260712200000_workflow_runtime/migration.sql +2 -0
  15. package/dist/migrations/mysql/0003_durable_inbox.sql +3 -0
  16. package/dist/migrations/mysql/0004_execution_state.sql +3 -0
  17. package/dist/migrations/mysql/0005_durable_entities.sql +13 -0
  18. package/dist/migrations/mysql/0006_ephemeral_presence.sql +12 -0
  19. package/dist/migrations/mysql/0007_topic_subscriptions.sql +1 -0
  20. package/dist/migrations/mysql/0008_child_fan_out.sql +26 -0
  21. package/dist/migrations/mysql/0009_workflow_definitions.sql +3 -0
  22. package/dist/migrations/mysql/0010_workflow_runtime.sql +3 -0
  23. package/dist/migrations/pg/20260712120000_durable_inbox/migration.sql +9 -0
  24. package/dist/migrations/pg/20260712140000_execution_state/migration.sql +5 -0
  25. package/dist/migrations/pg/20260712150000_durable_entities/migration.sql +15 -0
  26. package/dist/migrations/pg/20260712160000_ephemeral_presence/migration.sql +13 -0
  27. package/dist/migrations/pg/20260712170000_topic_subscriptions/migration.sql +3 -0
  28. package/dist/migrations/pg/20260712180000_child_fan_out/migration.sql +27 -0
  29. package/dist/migrations/pg/20260712190000_workflow_definitions/migration.sql +3 -0
  30. package/dist/migrations/pg/20260712200000_workflow_runtime/migration.sql +2 -0
  31. package/dist/migrations/sqlite/0003_durable_inbox.sql +9 -0
  32. package/dist/migrations/sqlite/0004_execution_state.sql +3 -0
  33. package/dist/migrations/sqlite/0005_durable_entities.sql +15 -0
  34. package/dist/migrations/sqlite/0006_ephemeral_presence.sql +12 -0
  35. package/dist/migrations/sqlite/0007_topic_subscriptions.sql +3 -0
  36. package/dist/migrations/sqlite/0008_child_fan_out.sql +27 -0
  37. package/dist/migrations/sqlite/0009_workflow_definitions.sql +3 -0
  38. package/dist/migrations/sqlite/0010_workflow_runtime.sql +3 -0
  39. package/dist/sqlite.js +737 -0
  40. package/dist/types/relay/adapter-outbox.d.ts +3 -3
  41. package/dist/types/relay/client.d.ts +335 -25
  42. package/dist/types/relay/command.d.ts +41 -0
  43. package/dist/types/relay/database.d.ts +1 -0
  44. package/dist/types/relay/index.d.ts +3 -2
  45. package/dist/types/relay/operation.d.ts +1082 -7
  46. package/dist/types/relay/sqlite-migrations.d.ts +54 -0
  47. package/dist/types/relay/sqlite-runtime.d.ts +10 -0
  48. package/dist/types/relay/sqlite.d.ts +29 -0
  49. package/dist/types/runtime/address/address-book-service.d.ts +4 -4
  50. package/dist/types/runtime/address/address-resolution-service.d.ts +1 -1
  51. package/dist/types/runtime/agent/agent-loop-service.d.ts +2 -2
  52. package/dist/types/runtime/agent/agent-registry-service.d.ts +1 -1
  53. package/dist/types/runtime/agent/relay-compaction.d.ts +1 -1
  54. package/dist/types/runtime/agent/relay-permissions.d.ts +1 -1
  55. package/dist/types/runtime/agent/relay-steering.d.ts +1 -1
  56. package/dist/types/runtime/child/child-fan-out-admission-service.d.ts +30 -0
  57. package/dist/types/runtime/child/child-fan-out-runtime.d.ts +34 -0
  58. package/dist/types/runtime/child/child-fan-out-transition-service.d.ts +25 -0
  59. package/dist/types/runtime/child/child-run-service.d.ts +1 -1
  60. package/dist/types/runtime/child/parent-notifier-service.d.ts +1 -1
  61. package/dist/types/runtime/cluster/execution-entity.d.ts +5 -3
  62. package/dist/types/runtime/entity/entity-instance-service.d.ts +67 -0
  63. package/dist/types/runtime/entity/entity-registry-service.d.ts +35 -0
  64. package/dist/types/runtime/envelope/envelope-service.d.ts +7 -3
  65. package/dist/types/runtime/execution/active-execution-registry.d.ts +12 -0
  66. package/dist/types/runtime/execution/event-log-service.d.ts +1 -1
  67. package/dist/types/runtime/execution/execution-service.d.ts +2 -1
  68. package/dist/types/runtime/execution/execution-watch-service.d.ts +32 -0
  69. package/dist/types/runtime/execution/session-stream-service.d.ts +33 -0
  70. package/dist/types/runtime/inbox/inbox-service.d.ts +76 -0
  71. package/dist/types/runtime/inbox/send-message-tool.d.ts +27 -0
  72. package/dist/types/runtime/inbox/wait-for-messages-tool.d.ts +34 -0
  73. package/dist/types/runtime/index.d.ts +18 -0
  74. package/dist/types/runtime/memory/memory-service.d.ts +1 -1
  75. package/dist/types/runtime/presence/presence-service.d.ts +30 -0
  76. package/dist/types/runtime/presence/presence-tool.d.ts +20 -0
  77. package/dist/types/runtime/runner/runner-runtime-service.d.ts +18 -18
  78. package/dist/types/runtime/schedule/scheduler-service.d.ts +1 -1
  79. package/dist/types/runtime/session/session-store-service.d.ts +1 -1
  80. package/dist/types/runtime/skill/skill-registry-service.d.ts +1 -1
  81. package/dist/types/runtime/state/execution-state-service.d.ts +57 -0
  82. package/dist/types/runtime/state/state-tools.d.ts +5 -0
  83. package/dist/types/runtime/tool/tool-runtime-service.d.ts +1 -1
  84. package/dist/types/runtime/topic/publish-to-topic-tool.d.ts +24 -0
  85. package/dist/types/runtime/topic/topic-service.d.ts +50 -0
  86. package/dist/types/runtime/wait/wait-service.d.ts +2 -1
  87. package/dist/types/runtime/wait/wait-signal.d.ts +1 -1
  88. package/dist/types/runtime/workflow/definition-runtime.d.ts +78 -0
  89. package/dist/types/runtime/workflow/execution-workflow.d.ts +7 -7
  90. package/dist/types/runtime/workspace/workspace-planner-service.d.ts +1 -1
  91. package/dist/types/schema/address-schema.d.ts +6 -6
  92. package/dist/types/schema/child-orchestration-schema.d.ts +393 -0
  93. package/dist/types/schema/entity-schema.d.ts +40 -0
  94. package/dist/types/schema/envelope-schema.d.ts +1 -0
  95. package/dist/types/schema/execution-schema.d.ts +2 -2
  96. package/dist/types/schema/ids-schema.d.ts +20 -0
  97. package/dist/types/schema/inbox-schema.d.ts +81 -0
  98. package/dist/types/schema/index.d.ts +7 -0
  99. package/dist/types/schema/presence-schema.d.ts +28 -0
  100. package/dist/types/schema/state-schema.d.ts +35 -0
  101. package/dist/types/schema/wait-schema.d.ts +98 -0
  102. package/dist/types/schema/workflow-schema.d.ts +2062 -0
  103. package/dist/types/store-sql/address/address-book-repository.d.ts +1 -1
  104. package/dist/types/store-sql/child/child-fan-out-repository.d.ts +53 -0
  105. package/dist/types/store-sql/database/database-service.d.ts +4 -18
  106. package/dist/types/store-sql/database/notification-bus.d.ts +2 -0
  107. package/dist/types/store-sql/database/sql-dialect.d.ts +13 -0
  108. package/dist/types/store-sql/entity/entity-repository.d.ts +36 -0
  109. package/dist/types/store-sql/envelope/envelope-repository.d.ts +1 -0
  110. package/dist/types/store-sql/execution/execution-event-repository.d.ts +2 -1
  111. package/dist/types/store-sql/execution/execution-repository.d.ts +12 -2
  112. package/dist/types/store-sql/inbox/inbox-repository.d.ts +56 -0
  113. package/dist/types/store-sql/index.d.ts +8 -0
  114. package/dist/types/store-sql/portable.d.ts +29 -0
  115. package/dist/types/store-sql/presence/presence-repository.d.ts +51 -0
  116. package/dist/types/store-sql/schema/relay-schema.d.ts +3064 -587
  117. package/dist/types/store-sql/state/execution-state-repository.d.ts +80 -0
  118. package/dist/types/store-sql/tenant/tenant-id.d.ts +0 -2
  119. package/dist/types/store-sql/topic/topic-repository.d.ts +44 -0
  120. package/dist/types/store-sql/workflow/workflow-definition-repository.d.ts +29 -0
  121. package/package.json +26 -4
  122. package/dist/migrations/20260701002839_sour_cerebro/snapshot.json +0 -1971
  123. package/dist/migrations/20260701041134_acoustic_hulk/snapshot.json +0 -2372
  124. package/dist/migrations/20260701160543_condemned_stryfe/snapshot.json +0 -2442
  125. package/dist/migrations/20260701220315_heavy_gorgon/snapshot.json +0 -2495
  126. package/dist/migrations/20260701225444_polite_lord_hawal/snapshot.json +0 -2821
  127. package/dist/migrations/20260702030128_flaky_misty_knight/snapshot.json +0 -2821
  128. package/dist/migrations/20260705003847_nervous_banshee/snapshot.json +0 -2954
  129. package/dist/migrations/20260705012626_common_stryfe/snapshot.json +0 -3378
  130. package/dist/migrations/20260705015420_sweet_captain_marvel/snapshot.json +0 -3485
  131. package/dist/migrations/20260705023041_chunky_scalphunter/snapshot.json +0 -3753
  132. package/dist/migrations/20260705030344_short_patriot/snapshot.json +0 -3873
  133. package/dist/migrations/20260705045546_heavy_ben_grimm/snapshot.json +0 -4193
  134. package/dist/migrations/20260706185931_regular_shadow_king/snapshot.json +0 -4844
  135. package/dist/migrations/20260706233300_equal_cyclops/snapshot.json +0 -4883
  136. package/dist/migrations/20260709030349_agent_id_rename/snapshot.json +0 -4883
  137. package/dist/migrations/20260709214238_faithful_black_widow/snapshot.json +0 -5426
  138. package/dist/migrations/20260709220016_fearless_aaron_stack/snapshot.json +0 -5426
  139. package/dist/migrations/pg/20260701002839_sour_cerebro/snapshot.json +0 -1971
  140. package/dist/migrations/pg/20260701041134_acoustic_hulk/snapshot.json +0 -2372
  141. package/dist/migrations/pg/20260701160543_condemned_stryfe/snapshot.json +0 -2442
  142. package/dist/migrations/pg/20260701220315_heavy_gorgon/snapshot.json +0 -2495
  143. package/dist/migrations/pg/20260701225444_polite_lord_hawal/snapshot.json +0 -2821
  144. package/dist/migrations/pg/20260702030128_flaky_misty_knight/snapshot.json +0 -2821
  145. package/dist/migrations/pg/20260705003847_nervous_banshee/snapshot.json +0 -2954
  146. package/dist/migrations/pg/20260705012626_common_stryfe/snapshot.json +0 -3378
  147. package/dist/migrations/pg/20260705015420_sweet_captain_marvel/snapshot.json +0 -3485
  148. package/dist/migrations/pg/20260705023041_chunky_scalphunter/snapshot.json +0 -3753
  149. package/dist/migrations/pg/20260705030344_short_patriot/snapshot.json +0 -3873
  150. package/dist/migrations/pg/20260705045546_heavy_ben_grimm/snapshot.json +0 -4193
  151. package/dist/migrations/pg/20260706185931_regular_shadow_king/snapshot.json +0 -4844
  152. package/dist/migrations/pg/20260706233300_equal_cyclops/snapshot.json +0 -4883
  153. package/dist/migrations/pg/20260709030349_agent_id_rename/snapshot.json +0 -4883
  154. package/dist/migrations/pg/20260709214238_faithful_black_widow/snapshot.json +0 -5426
  155. package/dist/migrations/pg/20260709220016_fearless_aaron_stack/snapshot.json +0 -5426
@@ -1,7 +1,7 @@
1
1
  import { Ids, Shared } from "../../schema/index";
2
2
  import { Context, Effect, Layer, Schema } from "effect";
3
3
  import { SqlClient } from "effect/unstable/sql/SqlClient";
4
- export declare const RouteKind: Schema.Literals<readonly ["local-agent", "remote-relay", "local-adapter", "unavailable", "deferred-retry"]>;
4
+ export declare const RouteKind: Schema.Literals<readonly ["local-agent", "local-execution", "remote-relay", "local-adapter", "unavailable", "deferred-retry"]>;
5
5
  export type RouteKind = typeof RouteKind.Type;
6
6
  declare const AddressNotFound_base: Schema.Class<AddressNotFound, Schema.TaggedStruct<"AddressNotFound", {
7
7
  readonly address_id: Schema.brand<Schema.String, "Relay.AddressId"> & {
@@ -0,0 +1,53 @@
1
+ import { ChildOrchestration, Content, Ids } from "../../schema/index";
2
+ import { Context, Effect, Layer, Schema } from "effect";
3
+ import { SqlClient } from "effect/unstable/sql/SqlClient";
4
+ declare const ChildFanOutRepositoryError_base: Schema.Class<ChildFanOutRepositoryError, Schema.TaggedStruct<"ChildFanOutRepositoryError", {
5
+ readonly message: Schema.String;
6
+ }>, import("effect/Cause").YieldableError>;
7
+ export declare class ChildFanOutRepositoryError extends ChildFanOutRepositoryError_base {
8
+ }
9
+ declare const ChildFanOutConflict_base: Schema.Class<ChildFanOutConflict, Schema.TaggedStruct<"ChildFanOutConflict", {
10
+ readonly fan_out_id: Schema.brand<Schema.String, "Relay.ChildFanOutId"> & {
11
+ make: (input: unknown, options?: import("effect/SchemaAST").ParseOptions) => string & import("effect/Brand").Brand<"Relay.ChildFanOutId">;
12
+ };
13
+ }>, import("effect/Cause").YieldableError>;
14
+ export declare class ChildFanOutConflict extends ChildFanOutConflict_base {
15
+ }
16
+ export interface Interface {
17
+ readonly create: (definition: ChildOrchestration.FanOutDefinition) => Effect.Effect<ChildOrchestration.FanOutState, ChildFanOutConflict | ChildFanOutRepositoryError>;
18
+ readonly get: (id: Ids.ChildFanOutId) => Effect.Effect<ChildOrchestration.FanOutState | undefined, ChildFanOutRepositoryError>;
19
+ readonly claimAdmissions: (id: Ids.ChildFanOutId) => Effect.Effect<ReadonlyArray<ChildOrchestration.FanOutChild>, ChildFanOutRepositoryError>;
20
+ readonly recordTerminal: (input: RecordTerminalInput) => Effect.Effect<RecordTerminalResult | undefined, ChildFanOutRepositoryError>;
21
+ readonly cancel: (id: Ids.ChildFanOutId, cancelledAt: number) => Effect.Effect<CancelResult | undefined, ChildFanOutRepositoryError>;
22
+ readonly listNonTerminal: (parentExecutionId?: Ids.ExecutionId) => Effect.Effect<ReadonlyArray<ChildOrchestration.FanOutState>, ChildFanOutRepositoryError>;
23
+ }
24
+ export interface RecordTerminalInput {
25
+ readonly childExecutionId: Ids.ChildExecutionId;
26
+ readonly state: "completed" | "failed" | "cancelled";
27
+ readonly output: ReadonlyArray<Content.Part>;
28
+ readonly error?: string;
29
+ readonly completedAt: number;
30
+ }
31
+ export interface RecordTerminalResult {
32
+ readonly fanOut: ChildOrchestration.FanOutState;
33
+ readonly memberTransitioned: boolean;
34
+ readonly aggregateTransitioned: boolean;
35
+ readonly admitted: ReadonlyArray<ChildOrchestration.FanOutChild>;
36
+ }
37
+ export interface CancelResult {
38
+ readonly fanOut: ChildOrchestration.FanOutState;
39
+ readonly transitioned: boolean;
40
+ readonly activeChildExecutionIds: ReadonlyArray<Ids.ChildExecutionId>;
41
+ }
42
+ declare const Service_base: Context.ServiceClass<Service, "@relayfx/store-sql/ChildFanOutRepository", Interface>;
43
+ export declare class Service extends Service_base {
44
+ }
45
+ export declare const layer: Layer.Layer<Service, never, SqlClient>;
46
+ export declare const memoryLayer: Layer.Layer<Service, never, never>;
47
+ export declare const create: (definition: ChildOrchestration.FanOutDefinition) => Effect.Effect<ChildOrchestration.FanOutState, ChildFanOutRepositoryError | ChildFanOutConflict, Service>;
48
+ export declare const get: (id: string & import("effect/Brand").Brand<"Relay.ChildFanOutId">) => Effect.Effect<ChildOrchestration.FanOutState | undefined, ChildFanOutRepositoryError, Service>;
49
+ export declare const claimAdmissions: (id: string & import("effect/Brand").Brand<"Relay.ChildFanOutId">) => Effect.Effect<readonly ChildOrchestration.FanOutChild[], ChildFanOutRepositoryError, Service>;
50
+ export declare const recordTerminal: (input: RecordTerminalInput) => Effect.Effect<RecordTerminalResult | undefined, ChildFanOutRepositoryError, Service>;
51
+ export declare const cancel: (id: string & import("effect/Brand").Brand<"Relay.ChildFanOutId">, cancelledAt: number) => Effect.Effect<CancelResult | undefined, ChildFanOutRepositoryError, Service>;
52
+ export declare const listNonTerminal: (parentExecutionId?: (string & import("effect/Brand").Brand<"Relay.ExecutionId">) | undefined) => Effect.Effect<readonly ChildOrchestration.FanOutState[], ChildFanOutRepositoryError, Service>;
53
+ export {};
@@ -1,8 +1,7 @@
1
1
  import { PgClient } from "@effect/sql-pg/PgClient";
2
2
  import { EffectPgDatabase } from "drizzle-orm/effect-postgres";
3
3
  import type { EffectDrizzleQueryError } from "drizzle-orm/effect-core/errors";
4
- import { Config, Context, Effect, Layer, Schema } from "effect";
5
- import { SqlClient } from "effect/unstable/sql/SqlClient";
4
+ import { Config, Context, Effect, Layer } from "effect";
6
5
  import type { SqlError } from "effect/unstable/sql/SqlError";
7
6
  export type Drizzle = EffectPgDatabase & {
8
7
  readonly $client: PgClient;
@@ -12,26 +11,13 @@ export type DatabaseError = EffectDrizzleQueryError | SqlError;
12
11
  declare const Service_base: Context.ServiceClass<Service, "@relayfx/store-sql/Database", Drizzle>;
13
12
  export declare class Service extends Service_base {
14
13
  }
15
- export declare const toPgDate: (timestamp: number) => Date;
16
- export declare const fromPgDate: (timestamp: PgTimestamp) => number;
17
- export declare const fromNullablePgDate: (timestamp: PgTimestamp | null | undefined) => number | undefined;
14
+ export { fromDbTimestamp as fromPgDate, fromNullableDbTimestamp as fromNullablePgDate } from "./sql-dialect";
18
15
  export declare const pgTypeParsers: {
19
16
  getTypeParser: (typeId: number, format?: "text" | "binary") => any;
20
17
  };
21
- export declare const PgClientLive: Layer.Layer<PgClient | SqlClient, SqlError | Config.ConfigError, never>;
18
+ export declare const PgClientLive: Layer.Layer<import("effect/unstable/sql/SqlClient").SqlClient | PgClient, SqlError | Config.ConfigError, never>;
22
19
  export declare const layerFromPgClient: Layer.Layer<Service, never, PgClient>;
23
20
  export declare const layer: Layer.Layer<Service, SqlError | Config.ConfigError, never>;
24
21
  export declare const testLayer: (db: Drizzle) => Layer.Layer<Service, never, never>;
25
22
  export declare const check: () => Effect.Effect<void, EffectDrizzleQueryError, Service>;
26
- export declare const Dialect: Schema.Literals<readonly ["pg", "mysql", "sqlite"]>;
27
- export type Dialect = typeof Dialect.Type;
28
- export declare const dialect: Effect.Effect<Dialect, never, SqlClient>;
29
- export declare const MysqlClientLive: Layer.Layer<SqlClient | import("@effect/sql-mysql2/MysqlClient").MysqlClient, SqlError | Config.ConfigError, never>;
30
- export declare const SqliteClientLive: Layer.Layer<SqlClient | import("@effect/sql-sqlite-bun/SqliteClient").SqliteClient, Config.ConfigError, never>;
31
- export declare const timestampParam: (client: SqlClient, millis: number) => Date | number;
32
- export declare const fromDbTimestamp: (timestamp: PgTimestamp) => number;
33
- export declare const fromNullableDbTimestamp: (timestamp: PgTimestamp | null | undefined) => number | undefined;
34
- export declare const encodeJson: (value: unknown) => string;
35
- export declare const decodeJson: (value: unknown) => unknown;
36
- export declare const decodeBool: (value: unknown) => boolean;
37
- export {};
23
+ export { Dialect, decodeBool, decodeJson, dialect, encodeJson, fromDbTimestamp, fromNullableDbTimestamp, timestampParam, } from "./sql-dialect";
@@ -1,7 +1,9 @@
1
1
  import { Context, Effect, Layer, Stream } from "effect";
2
2
  import { SqlClient } from "effect/unstable/sql/SqlClient";
3
3
  import type { SqlError } from "effect/unstable/sql/SqlError";
4
+ export type Transport = "pg" | "in-process";
4
5
  export interface Interface {
6
+ readonly transport: Transport;
5
7
  readonly publish: (channel: string, payload: string) => Effect.Effect<void, SqlError>;
6
8
  readonly subscribe: (channel: string) => Stream.Stream<string, SqlError>;
7
9
  }
@@ -0,0 +1,13 @@
1
+ import { Effect, Schema } from "effect";
2
+ import { SqlClient } from "effect/unstable/sql/SqlClient";
3
+ export type DbTimestamp = Date | string | number;
4
+ export declare const Dialect: Schema.Literals<readonly ["pg", "mysql", "sqlite"]>;
5
+ export type Dialect = typeof Dialect.Type;
6
+ export declare const dialect: Effect.Effect<Dialect, never, SqlClient>;
7
+ export declare const toDbDate: (timestamp: number) => Date;
8
+ export declare const fromDbTimestamp: (timestamp: DbTimestamp) => number;
9
+ export declare const fromNullableDbTimestamp: (timestamp: DbTimestamp | null | undefined) => number | undefined;
10
+ export declare const timestampParam: (client: SqlClient, millis: number) => Date | number;
11
+ export declare const encodeJson: (value: unknown) => string;
12
+ export declare const decodeJson: (value: unknown) => unknown;
13
+ export declare const decodeBool: (value: unknown) => boolean;
@@ -0,0 +1,36 @@
1
+ import { Entity, Ids } from "../../schema/index";
2
+ import { Context, Effect, Layer, Schema } from "effect";
3
+ import { SqlClient } from "effect/unstable/sql/SqlClient";
4
+ declare const EntityRepositoryError_base: Schema.Class<EntityRepositoryError, Schema.TaggedStruct<"EntityRepositoryError", {
5
+ readonly message: Schema.String;
6
+ }>, import("effect/Cause").YieldableError>;
7
+ export declare class EntityRepositoryError extends EntityRepositoryError_base {
8
+ }
9
+ export interface CreateInstanceInput {
10
+ readonly kind: Ids.EntityKindName;
11
+ readonly key: Ids.EntityKey;
12
+ readonly addressId: Ids.AddressId;
13
+ readonly executionId: (generation: number) => Ids.ExecutionId;
14
+ readonly createdAt: number;
15
+ }
16
+ export interface Interface {
17
+ readonly putKind: (definition: Entity.KindDefinition) => Effect.Effect<Entity.KindDefinition, EntityRepositoryError>;
18
+ readonly getKind: (kind: Ids.EntityKindName) => Effect.Effect<Entity.KindDefinition | undefined, EntityRepositoryError>;
19
+ readonly listKinds: () => Effect.Effect<ReadonlyArray<Entity.KindDefinition>, EntityRepositoryError>;
20
+ readonly getOrCreate: (input: CreateInstanceInput) => Effect.Effect<Entity.Instance, EntityRepositoryError>;
21
+ readonly get: (kind: Ids.EntityKindName, key: Ids.EntityKey) => Effect.Effect<Entity.Instance | undefined, EntityRepositoryError>;
22
+ readonly destroy: (kind: Ids.EntityKindName, key: Ids.EntityKey, destroyedAt: number) => Effect.Effect<Entity.Instance | undefined, EntityRepositoryError>;
23
+ readonly list: (input: {
24
+ readonly kind?: Ids.EntityKindName;
25
+ readonly afterKind?: Ids.EntityKindName;
26
+ readonly afterKey?: string;
27
+ readonly limit?: number;
28
+ }) => Effect.Effect<ReadonlyArray<Entity.Instance>, EntityRepositoryError>;
29
+ }
30
+ declare const Service_base: Context.ServiceClass<Service, "@relayfx/store-sql/EntityRepository", Interface>;
31
+ export declare class Service extends Service_base {
32
+ }
33
+ export declare const layer: Layer.Layer<Service, never, SqlClient>;
34
+ export declare const memoryLayer: Layer.Layer<Service, never, never>;
35
+ export declare const testLayer: (implementation: Interface) => Layer.Layer<Service, never, never>;
36
+ export {};
@@ -135,6 +135,7 @@ export interface Interface {
135
135
  readonly acceptEnvelope: (input: AcceptEnvelopeInput) => Effect.Effect<Envelope.EnvelopeAccepted, EnvelopeRepositoryError>;
136
136
  readonly getEnvelope: (id: Ids.EnvelopeId) => Effect.Effect<Envelope.Envelope | undefined, EnvelopeRepositoryError>;
137
137
  readonly getWait: (id: Ids.WaitId) => Effect.Effect<WaitRecord | undefined, EnvelopeRepositoryError>;
138
+ readonly findOpenByCorrelation?: (executionId: Ids.ExecutionId, correlationKey: string) => Effect.Effect<WaitRecord | undefined, EnvelopeRepositoryError>;
138
139
  readonly createWait: (input: CreateWaitInput) => Effect.Effect<WaitRecord, EnvelopeRepositoryError>;
139
140
  readonly listWaits: (input: ListWaitsInput) => Effect.Effect<ReadonlyArray<WaitRecord>, EnvelopeRepositoryError>;
140
141
  readonly listAllWaits: (input: ListAllWaitsInput) => Effect.Effect<ReadonlyArray<WaitRecord>, EnvelopeRepositoryError>;
@@ -1,7 +1,7 @@
1
1
  import { Execution, Ids } from "../../schema/index";
2
2
  import { Context, Effect, Layer, Option, Schema, Stream } from "effect";
3
3
  import { SqlClient } from "effect/unstable/sql/SqlClient";
4
- import { Service as NotificationBusService } from "../database/notification-bus";
4
+ import { Service as NotificationBusService, type Transport } from "../database/notification-bus";
5
5
  export declare const executionEventsChannel = "relay_execution_events";
6
6
  declare const DuplicateExecutionEvent_base: Schema.Class<DuplicateExecutionEvent, Schema.TaggedStruct<"DuplicateExecutionEvent", {
7
7
  readonly execution_id: Schema.brand<Schema.String, "Relay.ExecutionId"> & {
@@ -63,6 +63,7 @@ export interface ListAfterSequenceInput {
63
63
  readonly limit: number;
64
64
  }
65
65
  export interface Interface {
66
+ readonly signalTransport: Transport;
66
67
  readonly append: (input: Execution.ExecutionEvent) => Effect.Effect<Execution.ExecutionEvent, DuplicateExecutionEvent | ExecutionEventOrderViolation | ExecutionEventRepositoryError>;
67
68
  readonly list: (input: ListInput) => Effect.Effect<ReadonlyArray<Execution.ExecutionEvent>, ExecutionEventCursorNotFound | ExecutionEventRepositoryError>;
68
69
  readonly findBySequenceOrCursor: (input: FindBySequenceOrCursorInput) => Effect.Effect<Option.Option<Execution.ExecutionEvent>, ExecutionEventRepositoryError>;
@@ -1,6 +1,7 @@
1
1
  import { Agent, Execution, Ids, Shared } from "../../schema/index";
2
- import { Context, Effect, Layer, Schema } from "effect";
2
+ import { Context, Effect, Layer, Schema, Stream } from "effect";
3
3
  import { SqlClient } from "effect/unstable/sql/SqlClient";
4
+ import { Service as NotificationBusService } from "../database/notification-bus";
4
5
  declare const ExecutionRepositoryError_base: Schema.Class<ExecutionRepositoryError, Schema.TaggedStruct<"ExecutionRepositoryError", {
5
6
  readonly message: Schema.String;
6
7
  }>, import("effect/Cause").YieldableError>;
@@ -66,11 +67,19 @@ export interface ListExecutionsResult {
66
67
  readonly records: ReadonlyArray<ExecutionRecord>;
67
68
  readonly nextCursor?: ExecutionCursor;
68
69
  }
70
+ export declare const executionsChangedChannel = "relay_executions_changed";
71
+ export interface ListChangedSinceInput {
72
+ readonly updatedAtAfter: number;
73
+ readonly limit?: number;
74
+ }
69
75
  export interface Interface {
70
76
  readonly create: (input: CreateExecutionInput) => Effect.Effect<ExecutionRecord, DuplicateExecution | ExecutionRepositoryError>;
71
77
  readonly get: (id: Ids.ExecutionId) => Effect.Effect<ExecutionRecord | undefined, ExecutionRepositoryError>;
72
78
  readonly list: (input: ListExecutionsInput) => Effect.Effect<ListExecutionsResult, ExecutionRepositoryError>;
73
79
  readonly transition: (input: TransitionExecutionInput) => Effect.Effect<ExecutionRecord, ExecutionNotFound | ExecutionRepositoryError>;
80
+ readonly notifyChanged: (record: ExecutionRecord) => Effect.Effect<void, ExecutionRepositoryError>;
81
+ readonly changedSignals: () => Stream.Stream<Ids.ExecutionId, ExecutionRepositoryError>;
82
+ readonly listChangedSince: (input: ListChangedSinceInput) => Effect.Effect<ReadonlyArray<ExecutionRecord>, ExecutionRepositoryError>;
74
83
  }
75
84
  declare const Service_base: Context.ServiceClass<Service, "@relayfx/store-sql/ExecutionRepository", Interface>;
76
85
  export declare class Service extends Service_base {
@@ -88,9 +97,10 @@ export declare const ExecutionRow: Schema.Struct<{
88
97
  readonly created_at: Schema.Union<readonly [Schema.Date, Schema.String, Schema.Number]>;
89
98
  readonly updated_at: Schema.Union<readonly [Schema.Date, Schema.String, Schema.Number]>;
90
99
  }>;
100
+ export declare const layerWithoutBus: Layer.Layer<Service, never, SqlClient | NotificationBusService>;
91
101
  export declare const layer: Layer.Layer<Service, never, SqlClient>;
92
102
  export declare const memoryLayer: Layer.Layer<Service, never, never>;
93
- export declare const testLayer: (implementation: Interface) => Layer.Layer<Service, never, never>;
103
+ export declare const testLayer: (implementation: Omit<Interface, "notifyChanged" | "changedSignals" | "listChangedSince"> & Partial<Pick<Interface, "notifyChanged" | "changedSignals" | "listChangedSince">>) => Layer.Layer<Service, never, never>;
94
104
  export declare const create: (input: CreateExecutionInput) => Effect.Effect<ExecutionRecord, ExecutionRepositoryError | DuplicateExecution, Service>;
95
105
  export declare const get: (id: string & import("effect/Brand").Brand<"Relay.ExecutionId">) => Effect.Effect<ExecutionRecord | undefined, ExecutionRepositoryError, Service>;
96
106
  export declare const list: (input: ListExecutionsInput) => Effect.Effect<ListExecutionsResult, ExecutionRepositoryError, Service>;
@@ -0,0 +1,56 @@
1
+ import { Ids, Inbox, Shared } from "../../schema/index";
2
+ import { Context, Effect, Layer, Schema } from "effect";
3
+ import { SqlClient } from "effect/unstable/sql/SqlClient";
4
+ import type { AcceptEnvelopeInput } from "../envelope/envelope-repository";
5
+ declare const InboxRepositoryError_base: Schema.Class<InboxRepositoryError, Schema.TaggedStruct<"InboxRepositoryError", {
6
+ readonly message: Schema.String;
7
+ }>, import("effect/Cause").YieldableError>;
8
+ export declare class InboxRepositoryError extends InboxRepositoryError_base {
9
+ }
10
+ export interface DeliverInput {
11
+ readonly acceptance?: AcceptEnvelopeInput;
12
+ readonly executionId: Ids.ExecutionId;
13
+ readonly from: Ids.AddressId;
14
+ readonly envelopeId?: Ids.EnvelopeId;
15
+ readonly content: Inbox.Message["content"];
16
+ readonly replyWaitId?: Ids.WaitId;
17
+ readonly correlationKey?: string;
18
+ readonly idempotencyKey?: string;
19
+ readonly metadata?: Shared.Metadata;
20
+ readonly createdAt: number;
21
+ }
22
+ export interface DeliverResult {
23
+ readonly message: Inbox.Message;
24
+ readonly deduplicated: boolean;
25
+ readonly eventSequence?: number;
26
+ }
27
+ export interface DrainInput {
28
+ readonly executionId: Ids.ExecutionId;
29
+ readonly drainId: string;
30
+ readonly maxBatch?: number;
31
+ readonly consumedAt: number;
32
+ readonly createdAt: number;
33
+ }
34
+ export interface ListInput {
35
+ readonly executionId: Ids.ExecutionId;
36
+ readonly includeConsumed?: boolean;
37
+ readonly afterSequence?: number;
38
+ readonly limit?: number;
39
+ }
40
+ export interface Interface {
41
+ readonly deliver: (input: DeliverInput) => Effect.Effect<DeliverResult, InboxRepositoryError>;
42
+ readonly drain: (input: DrainInput) => Effect.Effect<ReadonlyArray<Inbox.Message>, InboxRepositoryError>;
43
+ readonly countUndrained: (executionId: Ids.ExecutionId) => Effect.Effect<number, InboxRepositoryError>;
44
+ readonly list: (input: ListInput) => Effect.Effect<ReadonlyArray<Inbox.Message>, InboxRepositoryError>;
45
+ }
46
+ declare const Service_base: Context.ServiceClass<Service, "@relayfx/store-sql/InboxRepository", Interface>;
47
+ export declare class Service extends Service_base {
48
+ }
49
+ export declare const layer: Layer.Layer<Service, never, SqlClient>;
50
+ export declare const memoryLayer: Layer.Layer<Service, never, never>;
51
+ export declare const testLayer: (implementation: Interface) => Layer.Layer<Service, never, never>;
52
+ export declare const deliver: (input: DeliverInput) => Effect.Effect<DeliverResult, InboxRepositoryError, Service>;
53
+ export declare const drain: (input: DrainInput) => Effect.Effect<readonly Inbox.Message[], InboxRepositoryError, Service>;
54
+ export declare const countUndrained: (id: Ids.ExecutionId) => Effect.Effect<number, InboxRepositoryError, Service>;
55
+ export declare const list: (input: ListInput) => Effect.Effect<readonly Inbox.Message[], InboxRepositoryError, Service>;
56
+ export {};
@@ -2,16 +2,23 @@ export * as AddressBookRepository from "./address/address-book-repository";
2
2
  export * as AgentChatRepository from "./chat/agent-chat-repository";
3
3
  export * as AgentDefinitionRepository from "./agent/agent-definition-repository";
4
4
  export * as ChildExecutionRepository from "./child/child-execution-repository";
5
+ export * as ChildFanOutRepository from "./child/child-fan-out-repository";
5
6
  export * as ClusterRegistryRepository from "./cluster/cluster-registry-repository";
6
7
  export * as CompactionRepository from "./compaction/compaction-repository";
7
8
  export * as Database from "./database/database-service";
9
+ export * as SqlDialect from "./database/sql-dialect";
8
10
  export * as EnvelopeRepository from "./envelope/envelope-repository";
11
+ export * as EntityRepository from "./entity/entity-repository";
9
12
  export * as ExecutionEventRepository from "./execution/execution-event-repository";
10
13
  export * as ExecutionRepository from "./execution/execution-repository";
14
+ export * as ExecutionStateRepository from "./state/execution-state-repository";
11
15
  export * as IdempotencyRepository from "./idempotency/idempotency-repository";
16
+ export * as InboxRepository from "./inbox/inbox-repository";
17
+ export * as TopicRepository from "./topic/topic-repository";
12
18
  export * as MemoryRepository from "./memory/memory-repository";
13
19
  export * as NotificationBus from "./database/notification-bus";
14
20
  export * as PermissionRuleRepository from "./permission/permission-rule-repository";
21
+ export * as PresenceRepository from "./presence/presence-repository";
15
22
  export * as ContextEpochRepository from "./session/context-epoch-repository";
16
23
  export * as RelaySchema from "./schema/relay-schema";
17
24
  export * as ScheduleRepository from "./schedule/schedule-repository";
@@ -21,4 +28,5 @@ export * as SteeringRepository from "./steering/steering-repository";
21
28
  export * as ToolCallRepository from "./tool/tool-call-repository";
22
29
  export * as TenantId from "./tenant/tenant-id";
23
30
  export * as WorkspaceLeaseRepository from "./workspace/workspace-lease-repository";
31
+ export * as WorkflowDefinitionRepository from "./workflow/workflow-definition-repository";
24
32
  export declare const storeSqlPackage = "./index";
@@ -0,0 +1,29 @@
1
+ export * as AddressBookRepository from "./address/address-book-repository";
2
+ export * as AgentChatRepository from "./chat/agent-chat-repository";
3
+ export * as AgentDefinitionRepository from "./agent/agent-definition-repository";
4
+ export * as ChildExecutionRepository from "./child/child-execution-repository";
5
+ export * as ChildFanOutRepository from "./child/child-fan-out-repository";
6
+ export * as ClusterRegistryRepository from "./cluster/cluster-registry-repository";
7
+ export * as CompactionRepository from "./compaction/compaction-repository";
8
+ export * as ContextEpochRepository from "./session/context-epoch-repository";
9
+ export * as EnvelopeRepository from "./envelope/envelope-repository";
10
+ export * as EntityRepository from "./entity/entity-repository";
11
+ export * as ExecutionEventRepository from "./execution/execution-event-repository";
12
+ export * as ExecutionRepository from "./execution/execution-repository";
13
+ export * as ExecutionStateRepository from "./state/execution-state-repository";
14
+ export * as IdempotencyRepository from "./idempotency/idempotency-repository";
15
+ export * as InboxRepository from "./inbox/inbox-repository";
16
+ export * as TopicRepository from "./topic/topic-repository";
17
+ export * as MemoryRepository from "./memory/memory-repository";
18
+ export * as NotificationBus from "./database/notification-bus";
19
+ export * as PermissionRuleRepository from "./permission/permission-rule-repository";
20
+ export * as PresenceRepository from "./presence/presence-repository";
21
+ export * as ScheduleRepository from "./schedule/schedule-repository";
22
+ export * as SessionRepository from "./session/session-repository";
23
+ export * as SkillDefinitionRepository from "./skill/skill-definition-repository";
24
+ export * as SqlDialect from "./database/sql-dialect";
25
+ export * as SteeringRepository from "./steering/steering-repository";
26
+ export * as TenantId from "./tenant/tenant-id";
27
+ export * as ToolCallRepository from "./tool/tool-call-repository";
28
+ export * as WorkspaceLeaseRepository from "./workspace/workspace-lease-repository";
29
+ export * as WorkflowDefinitionRepository from "./workflow/workflow-definition-repository";
@@ -0,0 +1,51 @@
1
+ import { Presence, Shared } from "../../schema/index";
2
+ import { Context, Effect, Layer, Schema, Stream } from "effect";
3
+ import { SqlClient } from "effect/unstable/sql/SqlClient";
4
+ import { Service as NotificationBusService } from "../database/notification-bus";
5
+ export declare const presenceChangedChannel = "relay_presence";
6
+ declare const PresenceRepositoryError_base: Schema.Class<PresenceRepositoryError, Schema.TaggedStruct<"PresenceRepositoryError", {
7
+ readonly message: Schema.String;
8
+ }>, import("effect/Cause").YieldableError>;
9
+ export declare class PresenceRepositoryError extends PresenceRepositoryError_base {
10
+ }
11
+ export interface HeartbeatInput {
12
+ readonly id: string;
13
+ readonly scope: Presence.Scope;
14
+ readonly metadata?: Shared.Metadata;
15
+ readonly connectedAt: number;
16
+ readonly expiresAt: number;
17
+ }
18
+ export interface RemoveInput {
19
+ readonly id: string;
20
+ readonly scope: Presence.Scope;
21
+ }
22
+ export interface ScopeInput {
23
+ readonly kind: Presence.Scope["kind"];
24
+ readonly id: string;
25
+ }
26
+ export interface PresenceRecord {
27
+ readonly id: string;
28
+ readonly scope: Presence.Scope;
29
+ readonly metadata: Shared.Metadata;
30
+ readonly connectedAt: number;
31
+ readonly expiresAt: number;
32
+ }
33
+ export interface Interface {
34
+ readonly upsertHeartbeat: (input: HeartbeatInput) => Effect.Effect<void, PresenceRepositoryError>;
35
+ readonly remove: (input: RemoveInput) => Effect.Effect<void, PresenceRepositoryError>;
36
+ readonly listByScope: (scope: ScopeInput) => Effect.Effect<ReadonlyArray<PresenceRecord>, PresenceRepositoryError>;
37
+ readonly notifyChanged: (scope: ScopeInput) => Effect.Effect<void, PresenceRepositoryError>;
38
+ readonly changedSignals: (scope: ScopeInput) => Stream.Stream<void, PresenceRepositoryError>;
39
+ }
40
+ declare const Service_base: Context.ServiceClass<Service, "@relayfx/store-sql/PresenceRepository", Interface>;
41
+ export declare class Service extends Service_base {
42
+ }
43
+ export declare const layer: Layer.Layer<Service, never, SqlClient | NotificationBusService>;
44
+ export declare const memoryLayer: Layer.Layer<Service, never, never>;
45
+ export declare const testLayer: (implementation: Interface) => Layer.Layer<Service, never, never>;
46
+ export declare const upsertHeartbeat: (input: HeartbeatInput) => Effect.Effect<void, PresenceRepositoryError, Service>;
47
+ export declare const remove: (input: RemoveInput) => Effect.Effect<void, PresenceRepositoryError, Service>;
48
+ export declare const listByScope: (scope: ScopeInput) => Effect.Effect<readonly PresenceRecord[], PresenceRepositoryError, Service>;
49
+ export declare const notifyChanged: (scope: ScopeInput) => Effect.Effect<void, PresenceRepositoryError, Service>;
50
+ export declare const changedSignals: (scope: ScopeInput) => Stream.Stream<void, PresenceRepositoryError, Service>;
51
+ export {};