swarm-mail 1.2.1 → 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 +83673 -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 +11 -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
package/dist/adapter.d.ts CHANGED
@@ -12,10 +12,10 @@
12
12
  *
13
13
  * ## Usage
14
14
  * ```typescript
15
- * import { createPGLiteAdapter } from '@opencode/swarm-mail/adapters/pglite';
15
+ * import { createLibSQLAdapter } from '@opencode/swarm-mail/adapters/libsql';
16
16
  * import { createSwarmMailAdapter } from '@opencode/swarm-mail';
17
17
  *
18
- * const dbAdapter = createPGLiteAdapter({ path: './streams.db' });
18
+ * const dbAdapter = createLibSQLAdapter({ path: './streams.db' });
19
19
  * const swarmMail = createSwarmMailAdapter(dbAdapter, '/path/to/project');
20
20
  *
21
21
  * // Use the adapter
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Unified database client for swarm-mail.
3
+ *
4
+ * Wraps libSQL with Drizzle ORM and handles:
5
+ * - Schema initialization (CREATE TABLE IF NOT EXISTS)
6
+ * - Singleton pattern for production use
7
+ * - In-memory instances for testing
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * // Production - singleton
12
+ * const db = await getDb("file:./swarm.db");
13
+ *
14
+ * // Testing - fresh instance
15
+ * const db = await createInMemoryDb();
16
+ * ```
17
+ */
18
+ import type { LibSQLDatabase } from "drizzle-orm/libsql";
19
+ import * as schema from "./schema/index.js";
20
+ /**
21
+ * Drizzle database instance type with full schema
22
+ */
23
+ export type SwarmDb = LibSQLDatabase<typeof schema>;
24
+ /**
25
+ * Create an in-memory database instance.
26
+ *
27
+ * Creates a fresh instance on each call - ideal for testing.
28
+ *
29
+ * @returns Fresh Drizzle database instance
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * const db = await createInMemoryDb();
34
+ * await db.insert(messages).values({ ... });
35
+ * ```
36
+ */
37
+ export declare function createInMemoryDb(): Promise<SwarmDb>;
38
+ /**
39
+ * Get the singleton database instance.
40
+ *
41
+ * Creates the instance on first call, returns cached instance on subsequent calls.
42
+ * Defaults to in-memory if no path provided.
43
+ *
44
+ * @param path - Database file path (optional). If omitted, uses in-memory.
45
+ * @returns Singleton Drizzle database instance
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * // In-memory (default)
50
+ * const db = await getDb();
51
+ *
52
+ * // File-based
53
+ * const db = await getDb("file:./swarm.db");
54
+ * ```
55
+ */
56
+ export declare function getDb(path?: string): Promise<SwarmDb>;
57
+ /**
58
+ * Close and cleanup database connection.
59
+ *
60
+ * Closes the underlying libSQL client and clears singleton.
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * await closeDb();
65
+ * ```
66
+ */
67
+ export declare function closeDb(): Promise<void>;
68
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC;AA6BpD;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAOzD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAU3D;AAED;;;;;;;;;GASG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAM7C"}
@@ -0,0 +1,24 @@
1
+ import type { Client } from "@libsql/client";
2
+ import * as schema from "./schema/index.js";
3
+ /**
4
+ * Creates a Drizzle ORM client from a libSQL client instance.
5
+ *
6
+ * @param client - libSQL client (from createClient)
7
+ * @returns Drizzle database instance with schema
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { createClient } from "@libsql/client";
12
+ * import { createDrizzleClient } from "./drizzle.js";
13
+ *
14
+ * const client = createClient({ url: ":memory:" });
15
+ * const db = createDrizzleClient(client);
16
+ *
17
+ * await db.select().from(schema.messages);
18
+ * ```
19
+ */
20
+ export declare function createDrizzleClient(client: Client): import("drizzle-orm/libsql").LibSQLDatabase<typeof schema> & {
21
+ $client: Client;
22
+ };
23
+ export type DrizzleClient = ReturnType<typeof createDrizzleClient>;
24
+ //# sourceMappingURL=drizzle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drizzle.d.ts","sourceRoot":"","sources":["../../src/db/drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM;;EAEjD;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Database module - unified libSQL + Drizzle client
3
+ *
4
+ * Exports:
5
+ * - Database client (getDb, createInMemoryDb, closeDb)
6
+ * - Database types (SwarmDb)
7
+ * - Drizzle schemas (re-exported from schema/index.ts)
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { getDb, createInMemoryDb } from "swarm-mail/db";
12
+ *
13
+ * // Production
14
+ * const db = await getDb("file:./swarm.db");
15
+ *
16
+ * // Testing
17
+ * const db = await createInMemoryDb();
18
+ * ```
19
+ */
20
+ export { closeDb, createInMemoryDb, getDb } from "./client.js";
21
+ export type { SwarmDb } from "./client.js";
22
+ export { createDrizzleClient } from "./drizzle.js";
23
+ export type { DrizzleClient } from "./drizzle.js";
24
+ export * as schema from "./schema/index.js";
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Drizzle migration runner with schema validation.
3
+ *
4
+ * Validates actual database schema matches Drizzle schema definitions.
5
+ * Detects and fixes schema drift (missing columns, wrong types).
6
+ *
7
+ * ## Strategy
8
+ *
9
+ * 1. **ALTER TABLE for missing columns** - Safe, preserves data
10
+ * 2. **DROP + CREATE for wrong types** - Only if table is empty
11
+ * 3. **Error for type mismatches with data** - Manual intervention required
12
+ *
13
+ * ## Usage
14
+ *
15
+ * ```typescript
16
+ * import { migrateDatabase, validateSchema } from "./migrate.js";
17
+ * import { eventsTable, messagesTable } from "./schema/index.js";
18
+ *
19
+ * // Validate schema
20
+ * const validation = await validateSchema(client, { eventsTable, messagesTable });
21
+ * if (!validation.valid) {
22
+ * console.error("Schema issues:", validation.issues);
23
+ * }
24
+ *
25
+ * // Apply migrations
26
+ * await migrateDatabase(client, { eventsTable, messagesTable });
27
+ * ```
28
+ *
29
+ * @module db/migrate
30
+ */
31
+ import type { Client } from "@libsql/client";
32
+ import type { SQLiteTableWithColumns } from "drizzle-orm/sqlite-core";
33
+ /**
34
+ * Schema validation issue types
35
+ */
36
+ export type SchemaIssueType = "missing_column" | "wrong_column_type" | "missing_table";
37
+ /**
38
+ * Schema validation issue
39
+ */
40
+ export interface SchemaIssue {
41
+ table: string;
42
+ type: SchemaIssueType;
43
+ column?: string;
44
+ expected?: string;
45
+ actual?: string;
46
+ message: string;
47
+ }
48
+ /**
49
+ * Schema validation result
50
+ */
51
+ export interface SchemaValidationResult {
52
+ valid: boolean;
53
+ issues: SchemaIssue[];
54
+ }
55
+ /**
56
+ * Validates database schema against Drizzle schema definitions.
57
+ *
58
+ * Checks for:
59
+ * - Missing tables
60
+ * - Missing columns
61
+ * - Wrong column types
62
+ *
63
+ * @param client - libSQL client
64
+ * @param tables - Record of Drizzle table definitions
65
+ * @returns Validation result with issues
66
+ */
67
+ export declare function validateSchema(client: Client, tables: Record<string, SQLiteTableWithColumns<any>>): Promise<SchemaValidationResult>;
68
+ /**
69
+ * Applies migrations to fix schema drift.
70
+ *
71
+ * Strategy:
72
+ * - Missing columns → ALTER TABLE ADD COLUMN
73
+ * - Wrong types (empty table) → DROP + CREATE
74
+ * - Wrong types (with data) → Error (manual migration required)
75
+ *
76
+ * @param client - libSQL client
77
+ * @param tables - Record of Drizzle table definitions
78
+ * @throws Error if table has data and needs type change
79
+ */
80
+ export declare function migrateDatabase(client: Client, tables: Record<string, SQLiteTableWithColumns<any>>): Promise<void>;
81
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGtE;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,gBAAgB,GAChB,mBAAmB,GACnB,eAAe,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAcD;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,GAClD,OAAO,CAAC,sBAAsB,CAAC,CAiFjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,CAqEf"}