swarm-mail 1.2.2 → 1.3.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 (140) hide show
  1. package/dist/adapter.d.ts +2 -2
  2. package/dist/db/client.d.ts +68 -0
  3. package/dist/db/client.d.ts.map +1 -0
  4. package/dist/db/drizzle.d.ts +24 -0
  5. package/dist/db/drizzle.d.ts.map +1 -0
  6. package/dist/db/index.d.ts +25 -0
  7. package/dist/db/index.d.ts.map +1 -0
  8. package/dist/db/migrate.d.ts +81 -0
  9. package/dist/db/migrate.d.ts.map +1 -0
  10. package/dist/db/schema/hive.d.ts +1596 -0
  11. package/dist/db/schema/hive.d.ts.map +1 -0
  12. package/dist/db/schema/index.d.ts +12 -0
  13. package/dist/db/schema/index.d.ts.map +1 -0
  14. package/dist/db/schema/memory.d.ts +214 -0
  15. package/dist/db/schema/memory.d.ts.map +1 -0
  16. package/dist/db/schema/streams.d.ts +1601 -0
  17. package/dist/db/schema/streams.d.ts.map +1 -0
  18. package/dist/hive/adapter.d.ts +8 -8
  19. package/dist/hive/adapter.d.ts.map +1 -1
  20. package/dist/hive/dependencies-drizzle.d.ts +31 -0
  21. package/dist/hive/dependencies-drizzle.d.ts.map +1 -0
  22. package/dist/hive/dependencies.d.ts.map +1 -1
  23. package/dist/hive/flush-manager.d.ts +2 -1
  24. package/dist/hive/flush-manager.d.ts.map +1 -1
  25. package/dist/hive/jsonl.d.ts.map +1 -1
  26. package/dist/hive/migrations.d.ts +23 -3
  27. package/dist/hive/migrations.d.ts.map +1 -1
  28. package/dist/hive/projections-drizzle.d.ts +43 -0
  29. package/dist/hive/projections-drizzle.d.ts.map +1 -0
  30. package/dist/hive/projections.d.ts +8 -0
  31. package/dist/hive/projections.d.ts.map +1 -1
  32. package/dist/hive/queries-drizzle.d.ts +52 -0
  33. package/dist/hive/queries-drizzle.d.ts.map +1 -0
  34. package/dist/hive/queries.d.ts +38 -0
  35. package/dist/hive/queries.d.ts.map +1 -1
  36. package/dist/hive/store.d.ts +36 -14
  37. package/dist/hive/store.d.ts.map +1 -1
  38. package/dist/index.d.ts +34 -18
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +83666 -38455
  41. package/dist/libsql.convenience.d.ts +155 -0
  42. package/dist/libsql.convenience.d.ts.map +1 -0
  43. package/dist/libsql.d.ts +93 -0
  44. package/dist/libsql.d.ts.map +1 -0
  45. package/dist/memory/adapter.d.ts +6 -7
  46. package/dist/memory/adapter.d.ts.map +1 -1
  47. package/dist/memory/libsql-schema.d.ts +83 -0
  48. package/dist/memory/libsql-schema.d.ts.map +1 -0
  49. package/dist/memory/migrate-legacy.d.ts +3 -0
  50. package/dist/memory/migrate-legacy.d.ts.map +1 -1
  51. package/dist/memory/migrations.d.ts +11 -0
  52. package/dist/memory/migrations.d.ts.map +1 -1
  53. package/dist/memory/store.d.ts +39 -31
  54. package/dist/memory/store.d.ts.map +1 -1
  55. package/dist/memory/test-utils.d.ts +59 -0
  56. package/dist/memory/test-utils.d.ts.map +1 -0
  57. package/dist/migrate-pglite-to-libsql.d.ts +73 -0
  58. package/dist/migrate-pglite-to-libsql.d.ts.map +1 -0
  59. package/dist/pglite.d.ts +8 -170
  60. package/dist/pglite.d.ts.map +1 -1
  61. package/dist/streams/agent-mail.d.ts +13 -0
  62. package/dist/streams/agent-mail.d.ts.map +1 -1
  63. package/dist/streams/auto-migrate.d.ts +182 -0
  64. package/dist/streams/auto-migrate.d.ts.map +1 -0
  65. package/dist/streams/effect/ask.d.ts +5 -4
  66. package/dist/streams/effect/ask.d.ts.map +1 -1
  67. package/dist/streams/effect/cursor.d.ts +3 -2
  68. package/dist/streams/effect/cursor.d.ts.map +1 -1
  69. package/dist/streams/effect/deferred.d.ts +12 -9
  70. package/dist/streams/effect/deferred.d.ts.map +1 -1
  71. package/dist/streams/effect/lock.d.ts +13 -11
  72. package/dist/streams/effect/lock.d.ts.map +1 -1
  73. package/dist/streams/effect/mailbox.d.ts +3 -2
  74. package/dist/streams/effect/mailbox.d.ts.map +1 -1
  75. package/dist/streams/events.d.ts +4 -0
  76. package/dist/streams/events.d.ts.map +1 -1
  77. package/dist/streams/index.d.ts +20 -74
  78. package/dist/streams/index.d.ts.map +1 -1
  79. package/dist/streams/libsql-schema.d.ts +77 -0
  80. package/dist/streams/libsql-schema.d.ts.map +1 -0
  81. package/dist/streams/migrations.d.ts +8 -8
  82. package/dist/streams/migrations.d.ts.map +1 -1
  83. package/dist/streams/projections-drizzle.d.ts +175 -0
  84. package/dist/streams/projections-drizzle.d.ts.map +1 -0
  85. package/dist/streams/projections.d.ts +9 -0
  86. package/dist/streams/projections.d.ts.map +1 -1
  87. package/dist/streams/store-drizzle.d.ts +96 -0
  88. package/dist/streams/store-drizzle.d.ts.map +1 -0
  89. package/dist/streams/store.d.ts +23 -0
  90. package/dist/streams/store.d.ts.map +1 -1
  91. package/dist/streams/swarm-mail.d.ts +9 -0
  92. package/dist/streams/swarm-mail.d.ts.map +1 -1
  93. package/dist/test-libsql.d.ts +76 -0
  94. package/dist/test-libsql.d.ts.map +1 -0
  95. package/dist/types/adapter.d.ts +3 -3
  96. package/dist/types/database.d.ts +12 -12
  97. package/dist/types/hive-adapter.d.ts +5 -5
  98. package/package.json +5 -5
  99. package/dist/beads/adapter.d.ts +0 -38
  100. package/dist/beads/adapter.d.ts.map +0 -1
  101. package/dist/beads/blocked-cache.d.ts +0 -21
  102. package/dist/beads/blocked-cache.d.ts.map +0 -1
  103. package/dist/beads/comments.d.ts +0 -21
  104. package/dist/beads/comments.d.ts.map +0 -1
  105. package/dist/beads/dependencies.d.ts +0 -58
  106. package/dist/beads/dependencies.d.ts.map +0 -1
  107. package/dist/beads/events.d.ts +0 -163
  108. package/dist/beads/events.d.ts.map +0 -1
  109. package/dist/beads/flush-manager.d.ts +0 -71
  110. package/dist/beads/flush-manager.d.ts.map +0 -1
  111. package/dist/beads/index.d.ts +0 -25
  112. package/dist/beads/index.d.ts.map +0 -1
  113. package/dist/beads/jsonl.d.ts +0 -103
  114. package/dist/beads/jsonl.d.ts.map +0 -1
  115. package/dist/beads/labels.d.ts +0 -21
  116. package/dist/beads/labels.d.ts.map +0 -1
  117. package/dist/beads/merge.d.ts +0 -99
  118. package/dist/beads/merge.d.ts.map +0 -1
  119. package/dist/beads/migrations.d.ts +0 -41
  120. package/dist/beads/migrations.d.ts.map +0 -1
  121. package/dist/beads/operations.d.ts +0 -56
  122. package/dist/beads/operations.d.ts.map +0 -1
  123. package/dist/beads/projections.d.ts +0 -103
  124. package/dist/beads/projections.d.ts.map +0 -1
  125. package/dist/beads/queries.d.ts +0 -77
  126. package/dist/beads/queries.d.ts.map +0 -1
  127. package/dist/beads/store.d.ts +0 -98
  128. package/dist/beads/store.d.ts.map +0 -1
  129. package/dist/beads/validation.d.ts +0 -75
  130. package/dist/beads/validation.d.ts.map +0 -1
  131. package/dist/daemon.d.ts +0 -161
  132. package/dist/daemon.d.ts.map +0 -1
  133. package/dist/socket-adapter.d.ts +0 -78
  134. package/dist/socket-adapter.d.ts.map +0 -1
  135. package/dist/streams/debug.d.ts +0 -173
  136. package/dist/streams/debug.d.ts.map +0 -1
  137. package/dist/test-server.d.ts +0 -64
  138. package/dist/test-server.d.ts.map +0 -1
  139. package/dist/types/beads-adapter.d.ts +0 -397
  140. package/dist/types/beads-adapter.d.ts.map +0 -1
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * @example
8
8
  * ```typescript
9
- * const response = await DurableDeferred.create<Response>({ ttlSeconds: 60 })
9
+ * const response = await DurableDeferred.create<Response>({ ttlSeconds: 60, db })
10
10
  * await actor.append({ payload: message, replyTo: response.url })
11
11
  * return response.value // blocks until resolved or timeout
12
12
  * ```
@@ -18,6 +18,7 @@
18
18
  * - Cleans up expired entries automatically
19
19
  */
20
20
  import { Context, Effect, Layer } from "effect";
21
+ import type { DatabaseAdapter } from "../../types/database";
21
22
  /**
22
23
  * Timeout error when deferred expires before resolution
23
24
  */
@@ -50,8 +51,8 @@ export interface DeferredHandle<T> {
50
51
  export interface DeferredConfig {
51
52
  /** Time-to-live in seconds before timeout */
52
53
  readonly ttlSeconds: number;
53
- /** Optional project path for database isolation */
54
- readonly projectPath?: string;
54
+ /** Database adapter for storage */
55
+ readonly db: DatabaseAdapter;
55
56
  }
56
57
  declare const DurableDeferred_base: Context.TagClass<DurableDeferred, "DurableDeferred", {
57
58
  /**
@@ -65,19 +66,21 @@ declare const DurableDeferred_base: Context.TagClass<DurableDeferred, "DurableDe
65
66
  *
66
67
  * @param url - Deferred identifier
67
68
  * @param value - Resolution value
69
+ * @param db - Database adapter
68
70
  */
69
- readonly resolve: <T>(url: string, value: T, projectPath?: string) => Effect.Effect<void, NotFoundError>;
71
+ readonly resolve: <T>(url: string, value: T, db: DatabaseAdapter) => Effect.Effect<void, NotFoundError>;
70
72
  /**
71
73
  * Reject a deferred with an error
72
74
  *
73
75
  * @param url - Deferred identifier
74
76
  * @param error - Error to reject with
77
+ * @param db - Database adapter
75
78
  */
76
- readonly reject: (url: string, error: Error, projectPath?: string) => Effect.Effect<void, NotFoundError>;
79
+ readonly reject: (url: string, error: Error, db: DatabaseAdapter) => Effect.Effect<void, NotFoundError>;
77
80
  /**
78
81
  * Await a deferred's resolution (internal - use handle.value instead)
79
82
  */
80
- readonly await: <T>(url: string, ttlSeconds: number, projectPath?: string) => Effect.Effect<T, TimeoutError | NotFoundError>;
83
+ readonly await: <T>(url: string, ttlSeconds: number, db: DatabaseAdapter) => Effect.Effect<T, TimeoutError | NotFoundError>;
81
84
  }>;
82
85
  /**
83
86
  * DurableDeferred service for distributed promises
@@ -95,14 +98,14 @@ export declare function createDeferred<T>(config: DeferredConfig): Effect.Effect
95
98
  /**
96
99
  * Resolve a deferred
97
100
  */
98
- export declare function resolveDeferred<T>(url: string, value: T, projectPath?: string): Effect.Effect<void, NotFoundError, DurableDeferred>;
101
+ export declare function resolveDeferred<T>(url: string, value: T, db: DatabaseAdapter): Effect.Effect<void, NotFoundError, DurableDeferred>;
99
102
  /**
100
103
  * Reject a deferred
101
104
  */
102
- export declare function rejectDeferred(url: string, error: Error, projectPath?: string): Effect.Effect<void, NotFoundError, DurableDeferred>;
105
+ export declare function rejectDeferred(url: string, error: Error, db: DatabaseAdapter): Effect.Effect<void, NotFoundError, DurableDeferred>;
103
106
  /**
104
107
  * Cleanup expired deferred entries (call periodically)
105
108
  */
106
- export declare function cleanupDeferreds(projectPath?: string): Effect.Effect<number>;
109
+ export declare function cleanupDeferreds(db: DatabaseAdapter): Effect.Effect<number>;
107
110
  export {};
108
111
  //# sourceMappingURL=deferred.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deferred.d.ts","sourceRoot":"","sources":["../../../src/streams/effect/deferred.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAsB,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAQpE;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAGnB,GAAG,EAAE,MAAM;aACX,UAAU,EAAE,MAAM;IAHpC,QAAQ,CAAC,IAAI,kBAAkB;gBAEb,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM;CAIrC;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAEV,GAAG,EAAE,MAAM;IADvC,QAAQ,CAAC,IAAI,mBAAmB;gBACJ,GAAG,EAAE,MAAM;CAGxC;AAMD;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,8CAA8C;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,mDAAmD;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;;IAYG;;;;OAIG;qBACc,CAAC,CAAC,EACjB,MAAM,EAAE,cAAc,KACnB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAErC;;;;;OAKG;sBACe,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,WAAW,CAAC,EAAE,MAAM,KACjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;IAEvC;;;;;OAKG;qBACc,CACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,WAAW,CAAC,EAAE,MAAM,KACjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;IAEvC;;OAEG;oBACa,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,KACjB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;;AA9CvD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,oBA6ClC;CAAG;AAkQN;;GAEG;AACH,eAAO,MAAM,mBAAmB,4CAK9B,CAAC;AAMH;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,MAAM,EAAE,cAAc,GACrB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAK1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,CAKrD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,CAKrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAE5E"}
1
+ {"version":3,"file":"deferred.d.ts","sourceRoot":"","sources":["../../../src/streams/effect/deferred.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAsB,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAM5D;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAGnB,GAAG,EAAE,MAAM;aACX,UAAU,EAAE,MAAM;IAHpC,QAAQ,CAAC,IAAI,kBAAkB;gBAEb,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM;CAIrC;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAEV,GAAG,EAAE,MAAM;IADvC,QAAQ,CAAC,IAAI,mBAAmB;gBACJ,GAAG,EAAE,MAAM;CAGxC;AAMD;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,8CAA8C;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,mCAAmC;IACnC,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;CAC9B;;IAYG;;;;OAIG;qBACc,CAAC,CAAC,EACjB,MAAM,EAAE,cAAc,KACnB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAErC;;;;;;OAMG;sBACe,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,EAAE,EAAE,eAAe,KAChB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;IAEvC;;;;;;OAMG;qBACc,CACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,eAAe,KAChB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;IAEvC;;OAEG;oBACa,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,eAAe,KAChB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;;AAhDvD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,oBA+ClC;CAAG;AAiQN;;GAEG;AACH,eAAO,MAAM,mBAAmB,4CAK9B,CAAC;AAMH;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,MAAM,EAAE,cAAc,GACrB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAK1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,EAAE,EAAE,eAAe,GAClB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,CAKrD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,eAAe,GAClB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,CAKrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAE3E"}
@@ -8,9 +8,9 @@
8
8
  *
9
9
  * @example
10
10
  * ```typescript
11
- * // Using Effect API
11
+ * // Using Effect API with DatabaseAdapter
12
12
  * const program = Effect.gen(function* (_) {
13
- * const lock = yield* _(acquireLock("my-resource", { ttlSeconds: 30 }))
13
+ * const lock = yield* _(acquireLock("my-resource", { ttlSeconds: 30, db }))
14
14
  * try {
15
15
  * // Critical section
16
16
  * } finally {
@@ -21,11 +21,12 @@
21
21
  * // Or use withLock helper
22
22
  * const program = Effect.gen(function* (_) {
23
23
  * const lock = yield* _(DurableLock)
24
- * yield* _(lock.withLock("my-resource", Effect.succeed(42)))
24
+ * yield* _(lock.withLock("my-resource", Effect.succeed(42), { db }))
25
25
  * }).pipe(Effect.provide(DurableLockLive))
26
26
  * ```
27
27
  */
28
28
  import { Context, Effect, Layer } from "effect";
29
+ import type { DatabaseAdapter } from "../../types/database";
29
30
  /**
30
31
  * Configuration for lock acquisition
31
32
  */
@@ -46,9 +47,10 @@ export interface LockConfig {
46
47
  */
47
48
  baseDelayMs?: number;
48
49
  /**
49
- * Project path for database instance
50
+ * Database adapter for lock storage
51
+ * Required for all operations
50
52
  */
51
- projectPath?: string;
53
+ db: DatabaseAdapter;
52
54
  /**
53
55
  * Custom holder ID (defaults to generated UUID)
54
56
  */
@@ -98,19 +100,19 @@ declare const DurableLock_base: Context.TagClass<DurableLock, "DurableLock", {
98
100
  *
99
101
  * Retries with exponential backoff on contention.
100
102
  */
101
- readonly acquire: (resource: string, config?: LockConfig) => Effect.Effect<LockHandle, LockError>;
103
+ readonly acquire: (resource: string, config: LockConfig) => Effect.Effect<LockHandle, LockError>;
102
104
  /**
103
105
  * Release a lock
104
106
  *
105
107
  * Only succeeds if the holder matches.
106
108
  */
107
- readonly release: (resource: string, holder: string, projectPath?: string) => Effect.Effect<void, LockError>;
109
+ readonly release: (resource: string, holder: string, db: DatabaseAdapter) => Effect.Effect<void, LockError>;
108
110
  /**
109
111
  * Execute an effect with automatic lock acquisition and release
110
112
  *
111
113
  * Guarantees lock release even on error (Effect.ensuring).
112
114
  */
113
- readonly withLock: <A, E, R>(resource: string, effect: Effect.Effect<A, E, R>, config?: LockConfig) => Effect.Effect<A, E | LockError, R | DurableLock>;
115
+ readonly withLock: <A, E, R>(resource: string, effect: Effect.Effect<A, E, R>, config: LockConfig) => Effect.Effect<A, E | LockError, R | DurableLock>;
114
116
  }>;
115
117
  /**
116
118
  * DurableLock service for distributed mutual exclusion
@@ -124,14 +126,14 @@ export declare const DurableLockLive: Layer.Layer<DurableLock, never, never>;
124
126
  /**
125
127
  * Acquire a lock (convenience Effect wrapper)
126
128
  */
127
- export declare function acquireLock(resource: string, config?: LockConfig): Effect.Effect<LockHandle, LockError, DurableLock>;
129
+ export declare function acquireLock(resource: string, config: LockConfig): Effect.Effect<LockHandle, LockError, DurableLock>;
128
130
  /**
129
131
  * Release a lock (convenience Effect wrapper)
130
132
  */
131
- export declare function releaseLock(resource: string, holder: string, projectPath?: string): Effect.Effect<void, LockError, DurableLock>;
133
+ export declare function releaseLock(resource: string, holder: string, db: DatabaseAdapter): Effect.Effect<void, LockError, DurableLock>;
132
134
  /**
133
135
  * Execute with lock (convenience Effect wrapper)
134
136
  */
135
- export declare function withLock<A, E, R>(resource: string, effect: Effect.Effect<A, E, R>, config?: LockConfig): Effect.Effect<A, E | LockError, R | DurableLock>;
137
+ export declare function withLock<A, E, R>(resource: string, effect: Effect.Effect<A, E, R>, config: LockConfig): Effect.Effect<A, E | LockError, R | DurableLock>;
136
138
  export {};
137
139
  //# sourceMappingURL=lock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../src/streams/effect/lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../src/streams/effect/lock.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,7 @@
29
29
  */
30
30
  import { Context, Effect, Layer } from "effect";
31
31
  import { DurableCursor } from "./cursor";
32
+ import type { DatabaseAdapter } from "../../types/database";
32
33
  /**
33
34
  * Envelope wrapping a message with metadata
34
35
  */
@@ -54,8 +55,8 @@ export interface MailboxConfig {
54
55
  readonly agent: string;
55
56
  /** Project key for scoping messages */
56
57
  readonly projectKey: string;
57
- /** Optional project path for database location */
58
- readonly projectPath?: string;
58
+ /** Database adapter for mailbox storage */
59
+ readonly db: DatabaseAdapter;
59
60
  /** Batch size for reading messages (default: 100) */
60
61
  readonly batchSize?: number;
61
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox.d.ts","sourceRoot":"","sources":["../../../src/streams/effect/mailbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAC;AAQtD;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,OAAO;IACnC,sBAAsB;IACtB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,mDAAmD;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,iBAAiB;IACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EACf,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EACrB,QAAQ,EAAE;QACR,OAAO,EAAE,CAAC,CAAC;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;KACnD,KACE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,OAAO,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CACrE;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,CACf,MAAM,EAAE,aAAa,KAClB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;CACnD;;AAMD;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAGjC;CAAG;AAwMN;;GAEG;AACH,eAAO,MAAM,kBAAkB,2CAE7B,CAAC"}
1
+ {"version":3,"file":"mailbox.d.ts","sourceRoot":"","sources":["../../../src/streams/effect/mailbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAC;AAGtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAM5D;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,OAAO;IACnC,sBAAsB;IACtB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,mDAAmD;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,iBAAiB;IACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EACf,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EACrB,QAAQ,EAAE;QACR,OAAO,EAAE,CAAC,CAAC;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;KACnD,KACE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,OAAO,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CACrE;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,CACf,MAAM,EAAE,aAAa,KAClB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;CACnD;;AAMD;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAGjC;CAAG;AAyMN;;GAEG;AACH,eAAO,MAAM,kBAAkB,2CAE7B,CAAC"}
@@ -91,6 +91,7 @@ export declare const FileReservedEventSchema: z.ZodObject<{
91
91
  exclusive: z.ZodDefault<z.ZodBoolean>;
92
92
  ttl_seconds: z.ZodDefault<z.ZodNumber>;
93
93
  expires_at: z.ZodNumber;
94
+ lock_holder_ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
94
95
  }, z.core.$strip>;
95
96
  export declare const FileReleasedEventSchema: z.ZodObject<{
96
97
  id: z.ZodOptional<z.ZodNumber>;
@@ -101,6 +102,7 @@ export declare const FileReleasedEventSchema: z.ZodObject<{
101
102
  agent_name: z.ZodString;
102
103
  paths: z.ZodOptional<z.ZodArray<z.ZodString>>;
103
104
  reservation_ids: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
105
+ lock_holder_ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
104
106
  }, z.core.$strip>;
105
107
  export declare const TaskStartedEventSchema: z.ZodObject<{
106
108
  id: z.ZodOptional<z.ZodNumber>;
@@ -303,6 +305,7 @@ export declare const AgentEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
303
305
  exclusive: z.ZodDefault<z.ZodBoolean>;
304
306
  ttl_seconds: z.ZodDefault<z.ZodNumber>;
305
307
  expires_at: z.ZodNumber;
308
+ lock_holder_ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
306
309
  }, z.core.$strip>, z.ZodObject<{
307
310
  id: z.ZodOptional<z.ZodNumber>;
308
311
  project_key: z.ZodString;
@@ -312,6 +315,7 @@ export declare const AgentEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
312
315
  agent_name: z.ZodString;
313
316
  paths: z.ZodOptional<z.ZodArray<z.ZodString>>;
314
317
  reservation_ids: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
318
+ lock_holder_ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
315
319
  }, z.core.$strip>, z.ZodObject<{
316
320
  id: z.ZodOptional<z.ZodNumber>;
317
321
  project_key: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/streams/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/streams/events.ts"],"names":[],"mappings":"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"}
@@ -1,38 +1,3 @@
1
- /**
2
- * SwarmMail Event Store - PGLite-based event sourcing
3
- *
4
- * ## Thread Safety
5
- *
6
- * PGLite runs in-process as a single-threaded SQLite-compatible database.
7
- * While Node.js is single-threaded, async operations can interleave.
8
- *
9
- * **Concurrency Model:**
10
- * - Single PGLite instance per project (singleton pattern via LRU cache)
11
- * - Transactions provide isolation for multi-statement operations
12
- * - appendEvents uses BEGIN/COMMIT for atomic event batches
13
- * - Concurrent reads are safe (no locks needed)
14
- * - Concurrent writes are serialized by PGLite internally
15
- *
16
- * **Race Condition Mitigations:**
17
- * - File reservations use INSERT with conflict detection
18
- * - Sequence numbers are auto-incremented by database
19
- * - Materialized views updated within same transaction as events
20
- * - Pending instance promises prevent duplicate initialization
21
- *
22
- * **Known Limitations:**
23
- * - No distributed locking (single-process only)
24
- * - Large transactions may block other operations
25
- * - No connection pooling (embedded database)
26
- *
27
- * ## Database Setup
28
- *
29
- * Embedded PostgreSQL database for event sourcing.
30
- * No external server required - runs in-process.
31
- *
32
- * Database location: .opencode/streams.db (project-local)
33
- * or ~/.opencode/streams.db (global fallback)
34
- */
35
- import { PGlite } from "@electric-sql/pglite";
36
1
  /**
37
2
  * Wrap a promise with a timeout
38
3
  *
@@ -53,54 +18,35 @@ export declare function withTimeout<T>(promise: Promise<T>, ms: number, operatio
53
18
  */
54
19
  export declare function withTiming<T>(operation: string, fn: () => Promise<T>): Promise<T>;
55
20
  /**
56
- * Get the database path for a project
21
+ * Get the database path for SwarmMail
22
+ *
23
+ * Always returns global ~/.config/swarm-tools/swarm.db
24
+ * The projectPath parameter is kept for backward compatibility but ignored.
57
25
  *
58
- * Prefers project-local .opencode/streams.db
59
- * Falls back to global ~/.opencode/streams.db
26
+ * @param projectPath - Deprecated, kept for backward compatibility but ignored
27
+ * @returns Path to global swarm-tools database
60
28
  */
61
29
  export declare function getDatabasePath(projectPath?: string): string;
62
30
  /**
63
- * Get or create a PGLite instance for the given path
31
+ * Get paths to old project-local databases for migration detection
64
32
  *
65
- * If initialization fails, falls back to in-memory database and marks instance as degraded.
33
+ * Returns paths that should be checked for existing data that needs migration:
34
+ * - libsql: Old libSQL database at {projectPath}/.opencode/streams.db
35
+ * - pglite: Old PGlite database directory at {projectPath}/.opencode/streams/
66
36
  *
67
- * Uses Promise-based caching to prevent race conditions when multiple concurrent
68
- * calls occur before the first one completes.
69
- */
70
- export declare function getDatabase(projectPath?: string): Promise<PGlite>;
71
- /**
72
- * Close a database instance
73
- */
74
- export declare function closeDatabase(projectPath?: string): Promise<void>;
75
- /**
76
- * Close all database instances
77
- */
78
- export declare function closeAllDatabases(): Promise<void>;
79
- /**
80
- * Reset database for testing - clears all data but keeps schema
81
- */
82
- export declare function resetDatabase(projectPath?: string): Promise<void>;
83
- /**
84
- * Check if the database is healthy
85
- *
86
- * Returns false if database is in degraded mode (using in-memory fallback)
87
- */
88
- export declare function isDatabaseHealthy(projectPath?: string): Promise<boolean>;
89
- /**
90
- * Get database statistics
37
+ * @param projectPath - Project directory path
38
+ * @returns Object with paths to check for migration
91
39
  */
92
- export declare function getDatabaseStats(projectPath?: string): Promise<{
93
- events: number;
94
- agents: number;
95
- messages: number;
96
- reservations: number;
97
- }>;
98
- export { PGlite };
40
+ export declare function getOldProjectDbPaths(projectPath: string): {
41
+ libsql: string;
42
+ pglite: string;
43
+ };
99
44
  export * from "./agent-mail";
100
- export * from "./debug";
101
45
  export * from "./events";
102
46
  export * from "./migrations";
103
- export * from "./projections";
104
- export * from "./store";
47
+ export type { Agent, Conflict, EvalRecord, EvalStats, InboxOptions, Message, Reservation, } from "./projections-drizzle";
48
+ export { checkConflicts, getActiveReservations, getAgent, getAgents, getEvalRecords, getEvalStats, getInbox, getMessage, getThreadMessages, } from "./projections-drizzle";
49
+ export { clearAdapterCache } from "./store";
50
+ export { appendEvent, getLatestSequence, readEvents, } from "./store-drizzle";
105
51
  export * from "./swarm-mail";
106
52
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/streams/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAa9C;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,CAAC,CAQZ;AASD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAYZ;AAwBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAkB5D;AA2DD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BvE;AAuFD;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWvE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CASvD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWvE;AAwHD;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CAqBlB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAkBD;AAuCD,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/streams/index.ts"],"names":[],"mappings":"AAkBA;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAClC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,CAAC,CAQZ;AASD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,CAAC,EACjC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAClB,OAAO,CAAC,CAAC,CAAC,CAYZ;AAMD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAM5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CACf,CAMA;AAMD,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,YAAY,EACX,KAAK,EACL,QAAQ,EACR,UAAU,EACV,SAAS,EACT,YAAY,EACZ,OAAO,EACP,WAAW,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACN,cAAc,EACd,qBAAqB,EACrB,QAAQ,EACR,SAAS,EACT,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,iBAAiB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAG5C,OAAO,EACN,WAAW,EACX,iBAAiB,EACjB,UAAU,GACV,MAAM,iBAAiB,CAAC;AAGzB,cAAc,cAAc,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * libSQL Streams Schema - Event Store Tables and Indexes
3
+ *
4
+ * Provides table creation and index DDL for event store.
5
+ *
6
+ * ## Schema Source of Truth
7
+ * - **Table structure**: db/schema/streams.ts (Drizzle schema)
8
+ * - **Index DDL**: This file (Drizzle doesn't auto-create indexes)
9
+ *
10
+ * ## Synchronization
11
+ * Table definitions MUST match db/schema/streams.ts exactly.
12
+ * Changes to table structures should be made in db/schema/streams.ts first,
13
+ * then reflected here.
14
+ *
15
+ * ## Key Differences from PostgreSQL
16
+ *
17
+ * | PostgreSQL | libSQL |
18
+ * |---------------------|-------------------------------------|
19
+ * | `SERIAL` | `INTEGER PRIMARY KEY AUTOINCREMENT` |
20
+ * | `JSONB` | `TEXT` (JSON stored as string) |
21
+ * | `TIMESTAMP` | `TEXT` (ISO 8601 string) |
22
+ * | `BOOLEAN` | `INTEGER` (0/1) |
23
+ * | `CURRENT_TIMESTAMP` | `datetime('now')` |
24
+ * | `BIGINT` | `INTEGER` |
25
+ *
26
+ * @module streams/libsql-schema
27
+ */
28
+ import type { DatabaseAdapter } from "../types/database.js";
29
+ /**
30
+ * Create libSQL event store schema
31
+ *
32
+ * Creates all tables, indexes, and constraints for the event store:
33
+ * - events (append-only log)
34
+ * - agents (materialized view)
35
+ * - messages (materialized view)
36
+ * - message_recipients (many-to-many)
37
+ * - reservations (file locks)
38
+ * - locks (distributed mutex)
39
+ * - cursors (stream positions)
40
+ *
41
+ * Idempotent - safe to call multiple times.
42
+ *
43
+ * @param db - DatabaseAdapter instance (must be libSQL-backed)
44
+ * @throws Error if schema creation fails
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * import { createLibSQLAdapter } from "../libsql.js";
49
+ * import { createLibSQLStreamsSchema } from "./libsql-schema.js";
50
+ *
51
+ * const db = await createLibSQLAdapter({ url: ":memory:" });
52
+ * await createLibSQLStreamsSchema(db);
53
+ * ```
54
+ */
55
+ export declare function createLibSQLStreamsSchema(db: DatabaseAdapter): Promise<void>;
56
+ /**
57
+ * Drop libSQL event store schema
58
+ *
59
+ * Removes all tables and indexes created by createLibSQLStreamsSchema.
60
+ * Useful for tests and cleanup.
61
+ *
62
+ * @param db - libSQL client instance
63
+ */
64
+ export declare function dropLibSQLStreamsSchema(db: DatabaseAdapter): Promise<void>;
65
+ /**
66
+ * Verify libSQL event store schema exists and is valid
67
+ *
68
+ * Checks for:
69
+ * - All required tables
70
+ * - Required columns on each table
71
+ * - Key indexes
72
+ *
73
+ * @param db - libSQL client instance
74
+ * @returns True if schema is valid, false otherwise
75
+ */
76
+ export declare function validateLibSQLStreamsSchema(db: DatabaseAdapter): Promise<boolean>;
77
+ //# sourceMappingURL=libsql-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"libsql-schema.d.ts","sourceRoot":"","sources":["../../src/streams/libsql-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,yBAAyB,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAoOlF;AAED;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAShF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,2BAA2B,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAkCvF"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Schema Migration System
3
3
  *
4
- * Handles database schema evolution for the PGLite event store.
4
+ * Handles database schema evolution for the event store.
5
5
  *
6
6
  * ## How It Works
7
7
  *
@@ -40,7 +40,7 @@
40
40
  *
41
41
  * @module migrations
42
42
  */
43
- import type { PGlite } from "@electric-sql/pglite";
43
+ import type { DatabaseAdapter } from "../types/database.js";
44
44
  /**
45
45
  * A database migration definition.
46
46
  */
@@ -65,18 +65,18 @@ export declare const migrations: Migration[];
65
65
  *
66
66
  * Returns -1 if no migrations have been applied (allows version 0 migrations)
67
67
  */
68
- export declare function getCurrentVersion(db: PGlite): Promise<number>;
68
+ export declare function getCurrentVersion(db: DatabaseAdapter): Promise<number>;
69
69
  /**
70
70
  * Get all applied migrations
71
71
  */
72
- export declare function getAppliedMigrations(db: PGlite): Promise<SchemaVersion[]>;
72
+ export declare function getAppliedMigrations(db: DatabaseAdapter): Promise<SchemaVersion[]>;
73
73
  /**
74
74
  * Run all pending migrations
75
75
  *
76
76
  * Idempotent - safe to run multiple times.
77
77
  * Only runs migrations that haven't been applied yet.
78
78
  */
79
- export declare function runMigrations(db: PGlite): Promise<{
79
+ export declare function runMigrations(db: DatabaseAdapter): Promise<{
80
80
  applied: number[];
81
81
  current: number;
82
82
  }>;
@@ -86,17 +86,17 @@ export declare function runMigrations(db: PGlite): Promise<{
86
86
  * WARNING: This will DROP tables and LOSE DATA.
87
87
  * Only use for testing or emergency recovery.
88
88
  */
89
- export declare function rollbackTo(db: PGlite, targetVersion: number): Promise<{
89
+ export declare function rollbackTo(db: DatabaseAdapter, targetVersion: number): Promise<{
90
90
  rolledBack: number[];
91
91
  current: number;
92
92
  }>;
93
93
  /**
94
94
  * Check if a specific migration has been applied
95
95
  */
96
- export declare function isMigrationApplied(db: PGlite, version: number): Promise<boolean>;
96
+ export declare function isMigrationApplied(db: DatabaseAdapter, version: number): Promise<boolean>;
97
97
  /**
98
98
  * Get pending migrations (not yet applied)
99
99
  */
100
- export declare function getPendingMigrations(db: PGlite): Promise<Migration[]>;
100
+ export declare function getPendingMigrations(db: DatabaseAdapter): Promise<Migration[]>;
101
101
  export {};
102
102
  //# sourceMappingURL=migrations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/streams/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAQnD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAMD,eAAO,MAAM,UAAU,EAAE,SAAS,EAwUjC,CAAC;AAmBF;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUnE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,aAAa,EAAE,CAAC,CAgB1B;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACvD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAmDD;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CA4CD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CASlB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAK3E"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/streams/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAQ5D;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAMD,eAAO,MAAM,UAAU,EAAE,SAAS,EAwUjC,CAAC;AAmBF;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAU5E;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,eAAe,GAClB,OAAO,CAAC,aAAa,EAAE,CAAC,CAgB1B;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC;IAChE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAmDD;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,eAAe,EACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CA4CD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,eAAe,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CASlB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAKpF"}