swarm-mail 0.4.0 → 0.5.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.
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Memory Adapter - High-level API for semantic memory
3
+ *
4
+ * Combines Ollama embeddings + MemoryStore into a simple API matching
5
+ * the semantic-memory MCP tool interface.
6
+ *
7
+ * ## Key Features
8
+ * - Automatic embedding generation via Ollama
9
+ * - Semantic search with vector similarity
10
+ * - FTS fallback when Ollama unavailable
11
+ * - Graceful degradation
12
+ * - Decay calculation (90-day half-life)
13
+ *
14
+ * ## Usage
15
+ * ```typescript
16
+ * import { createMemoryAdapter } from './adapter.js';
17
+ * import { wrapPGlite } from '../pglite.js';
18
+ * import { PGlite } from '@electric-sql/pglite';
19
+ *
20
+ * const pglite = await PGlite.create({ dataDir: './db' });
21
+ * const db = wrapPGlite(pglite);
22
+ * const config = {
23
+ * ollamaHost: 'http://localhost:11434',
24
+ * ollamaModel: 'mxbai-embed-large',
25
+ * };
26
+ *
27
+ * const adapter = createMemoryAdapter(db, config);
28
+ *
29
+ * // Store with automatic embedding
30
+ * const { id } = await adapter.store("OAuth tokens need refresh buffer", {
31
+ * tags: "auth,tokens",
32
+ * metadata: JSON.stringify({ priority: "high" })
33
+ * });
34
+ *
35
+ * // Semantic search
36
+ * const results = await adapter.find("token refresh");
37
+ *
38
+ * // FTS fallback when Ollama down
39
+ * const results = await adapter.find("token refresh", { fts: true });
40
+ * ```
41
+ */
42
+ import type { DatabaseAdapter } from "../types/database.js";
43
+ import { type Memory, type SearchResult } from "./store.js";
44
+ import { type MemoryConfig } from "./ollama.js";
45
+ export type { MemoryConfig } from "./ollama.js";
46
+ export type { Memory, SearchResult } from "./store.js";
47
+ /**
48
+ * Options for storing a memory
49
+ */
50
+ export interface StoreOptions {
51
+ /** Collection name (default: "default") */
52
+ readonly collection?: string;
53
+ /** Comma-separated tags (e.g., "auth,tokens,oauth") */
54
+ readonly tags?: string;
55
+ /** JSON string with additional metadata */
56
+ readonly metadata?: string;
57
+ }
58
+ /**
59
+ * Options for searching memories
60
+ */
61
+ export interface FindOptions {
62
+ /** Maximum number of results (default: 10) */
63
+ readonly limit?: number;
64
+ /** Collection filter */
65
+ readonly collection?: string;
66
+ /** Return full content (default: false returns preview) */
67
+ readonly expand?: boolean;
68
+ /** Use full-text search instead of vector search (default: false) */
69
+ readonly fts?: boolean;
70
+ }
71
+ /**
72
+ * Health check result
73
+ */
74
+ export interface HealthStatus {
75
+ /** Whether Ollama is available */
76
+ readonly ollama: boolean;
77
+ /** Ollama model name (if available) */
78
+ readonly model?: string;
79
+ }
80
+ /**
81
+ * Create a memory adapter with high-level operations
82
+ *
83
+ * @param db - DatabaseAdapter for PGlite/PostgreSQL
84
+ * @param config - Ollama configuration
85
+ * @returns Memory adapter instance
86
+ */
87
+ export declare function createMemoryAdapter(db: DatabaseAdapter, config: MemoryConfig): {
88
+ /**
89
+ * Store a memory with automatic embedding generation
90
+ *
91
+ * @param information - Memory content
92
+ * @param options - Store options
93
+ * @returns Memory ID
94
+ * @throws Error if embedding generation fails or database operation fails
95
+ */
96
+ store(information: string, options?: StoreOptions): Promise<{
97
+ id: string;
98
+ }>;
99
+ /**
100
+ * Find memories by semantic similarity or full-text search
101
+ *
102
+ * @param query - Search query
103
+ * @param options - Search options
104
+ * @returns Search results with scores
105
+ */
106
+ find(query: string, options?: FindOptions): Promise<SearchResult[]>;
107
+ /**
108
+ * Get a specific memory by ID
109
+ *
110
+ * @param id - Memory ID
111
+ * @returns Memory or null if not found
112
+ */
113
+ get(id: string): Promise<Memory | null>;
114
+ /**
115
+ * Remove a memory
116
+ *
117
+ * @param id - Memory ID
118
+ */
119
+ remove(id: string): Promise<void>;
120
+ /**
121
+ * Validate/refresh a memory (reset decay timer)
122
+ *
123
+ * Updates the created_at timestamp to current time, effectively
124
+ * resetting the 90-day decay timer.
125
+ *
126
+ * @param id - Memory ID
127
+ * @throws Error if memory not found
128
+ */
129
+ validate(id: string): Promise<void>;
130
+ /**
131
+ * List all memories
132
+ *
133
+ * @param options - List options
134
+ * @returns Array of memories
135
+ */
136
+ list(options?: {
137
+ collection?: string;
138
+ }): Promise<Memory[]>;
139
+ /**
140
+ * Get database statistics
141
+ *
142
+ * @returns Memory and embedding counts
143
+ */
144
+ stats(): Promise<{
145
+ memories: number;
146
+ embeddings: number;
147
+ }>;
148
+ /**
149
+ * Check if Ollama is available
150
+ *
151
+ * @returns Health status
152
+ */
153
+ checkHealth(): Promise<HealthStatus>;
154
+ };
155
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/memory/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAqB,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAA0B,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAMxE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY;IAgEzE;;;;;;;OAOG;uBAEY,MAAM,YACV,YAAY,GACpB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IA0C1B;;;;;;OAMG;gBACe,MAAM,YAAW,WAAW,GAAQ,OAAO,CAAC,YAAY,EAAE,CAAC;IA0C7E;;;;;OAKG;YACW,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI7C;;;;OAIG;eACc,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC;;;;;;;;OAQG;iBACgB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAczC;;;;;OAKG;mBACiB;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpE;;;;OAIG;aACY,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAIhE;;;;OAIG;mBACkB,OAAO,CAAC,YAAY,CAAC;EAiB7C"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Memory Module - Semantic memory with vector embeddings
3
+ *
4
+ * Provides Ollama-based embedding generation and memory storage.
5
+ */
6
+ export { createMemoryAdapter, type FindOptions, type HealthStatus, type Memory, type MemoryConfig, type SearchResult, type StoreOptions, } from "./adapter.js";
7
+ export { getDefaultConfig, makeOllamaLive, Ollama, OllamaError, } from "./ollama.js";
8
+ export { createMemoryStore, EMBEDDING_DIM } from "./store.js";
9
+ export { memoryMigration, memoryMigrations } from "./migrations.js";
10
+ export { getDefaultLegacyPath, getMigrationStatus, legacyDatabaseExists, migrateLegacyMemories, type MigrationOptions, type MigrationResult, } from "./migrate-legacy.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACN,mBAAmB,EACnB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,GACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,MAAM,EACN,WAAW,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACpB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Legacy Semantic Memory Migration Tool
3
+ *
4
+ * Migrates memories from the standalone semantic-memory MCP server
5
+ * (~/.semantic-memory/memory) to the consolidated swarm-mail database.
6
+ *
7
+ * ## Usage
8
+ *
9
+ * ```typescript
10
+ * import { migrateLegacyMemories } from 'swarm-mail';
11
+ *
12
+ * const result = await migrateLegacyMemories({
13
+ * legacyPath: '~/.semantic-memory/memory',
14
+ * targetAdapter: swarmMailAdapter,
15
+ * dryRun: false,
16
+ * });
17
+ *
18
+ * console.log(`Migrated ${result.migrated} memories`);
19
+ * ```
20
+ *
21
+ * ## What Gets Migrated
22
+ *
23
+ * - All memories from the `memories` table
24
+ * - All embeddings from the `memory_embeddings` table
25
+ * - Metadata, collections, and timestamps preserved
26
+ *
27
+ * ## Conflict Handling
28
+ *
29
+ * - Duplicate IDs are skipped (existing memories take precedence)
30
+ * - Migration is idempotent - safe to run multiple times
31
+ *
32
+ * @module memory/migrate-legacy
33
+ */
34
+ import type { DatabaseAdapter } from "../types/database.js";
35
+ /**
36
+ * Migration options
37
+ */
38
+ export interface MigrationOptions {
39
+ /** Path to legacy semantic-memory database directory */
40
+ legacyPath?: string;
41
+ /** Target database adapter (from swarm-mail) */
42
+ targetDb: DatabaseAdapter;
43
+ /** If true, only report what would be migrated without making changes */
44
+ dryRun?: boolean;
45
+ /** Callback for progress updates */
46
+ onProgress?: (message: string) => void;
47
+ }
48
+ /**
49
+ * Migration result
50
+ */
51
+ export interface MigrationResult {
52
+ /** Number of memories successfully migrated */
53
+ migrated: number;
54
+ /** Number of memories skipped (already exist) */
55
+ skipped: number;
56
+ /** Number of memories that failed to migrate */
57
+ failed: number;
58
+ /** Error messages for failed migrations */
59
+ errors: string[];
60
+ /** Whether this was a dry run */
61
+ dryRun: boolean;
62
+ }
63
+ /**
64
+ * Default path to legacy semantic-memory database
65
+ */
66
+ export declare function getDefaultLegacyPath(): string;
67
+ /**
68
+ * Check if legacy database exists
69
+ */
70
+ export declare function legacyDatabaseExists(path?: string): boolean;
71
+ /**
72
+ * Migrate memories from legacy semantic-memory database
73
+ *
74
+ * @param options - Migration options
75
+ * @returns Migration result with counts and errors
76
+ */
77
+ export declare function migrateLegacyMemories(options: MigrationOptions): Promise<MigrationResult>;
78
+ /**
79
+ * Get migration status without actually migrating
80
+ *
81
+ * @param legacyPath - Path to legacy database
82
+ * @returns Count of memories that would be migrated
83
+ */
84
+ export declare function getMigrationStatus(legacyPath?: string): Promise<{
85
+ total: number;
86
+ withEmbeddings: number;
87
+ } | null>;
88
+ //# sourceMappingURL=migrate-legacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-legacy.d.ts","sourceRoot":"","sources":["../../src/memory/migrate-legacy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,QAAQ,EAAE,eAAe,CAAC;IAC1B,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC;CACjB;AAsBD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAG3D;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CA4I1B;AAwBD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAiC3D"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Memory Schema Migration
3
+ *
4
+ * Adds semantic memory tables to the shared PGLite database.
5
+ * This migration extends the existing swarm-mail schema.
6
+ *
7
+ * ## Migration Strategy
8
+ * - Migration v9 adds memory tables to existing swarm-mail schema (v0-v8)
9
+ * - Shares same PGLite database instance and migration system
10
+ * - Uses same schema_version table for tracking
11
+ *
12
+ * ## Tables Created
13
+ * - memories: Core memory records with content, metadata, collection
14
+ * - memory_embeddings: Vector embeddings for semantic search (pgvector)
15
+ *
16
+ * ## Indexes
17
+ * - HNSW index on embeddings for fast approximate nearest neighbor search
18
+ * - GIN index on content for full-text search
19
+ * - B-tree index on collection for filtering
20
+ *
21
+ * ## Design Notes
22
+ * - Uses TEXT for IDs (like hive/beads)
23
+ * - Uses TIMESTAMPTZ for timestamps (Postgres standard)
24
+ * - Uses JSONB for metadata (flexible key-value storage)
25
+ * - Uses vector(1024) for embeddings (mxbai-embed-large dimension)
26
+ * - CASCADE deletes for referential integrity
27
+ *
28
+ * @module memory/migrations
29
+ */
30
+ import type { Migration } from "../streams/migrations.js";
31
+ /**
32
+ * Migration v9: Add memory tables
33
+ *
34
+ * This migration is designed to be appended to the existing migrations array
35
+ * in src/streams/migrations.ts.
36
+ */
37
+ export declare const memoryMigration: Migration;
38
+ /**
39
+ * Export memory migrations array
40
+ */
41
+ export declare const memoryMigrations: Migration[];
42
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/memory/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,SAiD7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,EAAsB,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Ollama Embedding Service
3
+ *
4
+ * Provides embedding generation via local Ollama server.
5
+ * Uses Effect-TS patterns: Context.Tag for DI, Layer for instantiation.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { Ollama, makeOllamaLive } from './memory/ollama';
10
+ * import { Effect } from 'effect';
11
+ *
12
+ * const config = {
13
+ * ollamaHost: process.env.OLLAMA_HOST || 'http://localhost:11434',
14
+ * ollamaModel: process.env.OLLAMA_MODEL || 'mxbai-embed-large',
15
+ * };
16
+ *
17
+ * const program = Effect.gen(function* () {
18
+ * const ollama = yield* Ollama;
19
+ * const embedding = yield* ollama.embed("hello world");
20
+ * return embedding;
21
+ * });
22
+ *
23
+ * const layer = makeOllamaLive(config);
24
+ * const result = await Effect.runPromise(program.pipe(Effect.provide(layer)));
25
+ * ```
26
+ */
27
+ import { Context, Effect, Layer } from "effect";
28
+ import { Schema } from "effect";
29
+ /**
30
+ * Configuration for Ollama embedding service
31
+ */
32
+ export interface MemoryConfig {
33
+ /** Ollama server URL (default: http://localhost:11434) */
34
+ readonly ollamaHost: string;
35
+ /** Ollama model name (default: mxbai-embed-large) */
36
+ readonly ollamaModel: string;
37
+ }
38
+ declare const OllamaError_base: Schema.TaggedErrorClass<OllamaError, "OllamaError", {
39
+ readonly _tag: Schema.tag<"OllamaError">;
40
+ } & {
41
+ reason: typeof Schema.String;
42
+ }>;
43
+ /**
44
+ * Ollama operation failure
45
+ */
46
+ export declare class OllamaError extends OllamaError_base {
47
+ }
48
+ declare const Ollama_base: Context.TagClass<Ollama, "swarm-mail/Ollama", {
49
+ /** Generate embedding for a single text */
50
+ readonly embed: (text: string) => Effect.Effect<number[], OllamaError>;
51
+ /** Generate embeddings for multiple texts with controlled concurrency */
52
+ readonly embedBatch: (texts: string[], concurrency?: number) => Effect.Effect<number[][], OllamaError>;
53
+ /** Verify Ollama is running and model is available */
54
+ readonly checkHealth: () => Effect.Effect<void, OllamaError>;
55
+ }>;
56
+ /**
57
+ * Ollama service for generating embeddings from text.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const embedding = yield* Ollama.embed("hello world");
62
+ * // => number[] (1024 dims for mxbai-embed-large)
63
+ * ```
64
+ */
65
+ export declare class Ollama extends Ollama_base {
66
+ }
67
+ /**
68
+ * Create Ollama service layer from config.
69
+ *
70
+ * @param config - Memory configuration with ollamaHost and ollamaModel
71
+ * @returns Layer providing the Ollama service
72
+ */
73
+ export declare const makeOllamaLive: (config: MemoryConfig) => Layer.Layer<Ollama, never, never>;
74
+ /**
75
+ * Get default Ollama configuration from environment variables.
76
+ * Falls back to sensible defaults if env vars not set.
77
+ */
78
+ export declare const getDefaultConfig: () => MemoryConfig;
79
+ export {};
80
+ //# sourceMappingURL=ollama.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/memory/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAS,OAAO,EAAY,MAAM,EAAE,KAAK,EAAoB,MAAM,QAAQ,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC7B;;;;;;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,gBAGhC;CAAG;;IAkBF,2CAA2C;oBAC3B,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC;IACtE,yEAAyE;yBACpD,CACpB,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,CAAC,EAAE,MAAM,KAChB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,WAAW,CAAC;IAC3C,sDAAsD;0BAChC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC;;AApB9D;;;;;;;;GAQG;AACH,qBAAa,MAAO,SAAQ,WAazB;CAAG;AAcN;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,YAAY,sCA+FjD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAO,YAGlC,CAAC"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Memory Store - PGlite + pgvector operations
3
+ *
4
+ * Provides CRUD operations and semantic search for memories using
5
+ * an existing shared PGlite instance. Does NOT create its own database.
6
+ *
7
+ * ## Design Pattern
8
+ * - Accept DatabaseAdapter via factory parameter (dependency injection)
9
+ * - Share PGlite instance with other swarm-mail services
10
+ * - Schema migrations handled separately (by migrations task)
11
+ *
12
+ * ## Key Operations
13
+ * - store: Insert or update memory with embedding
14
+ * - search: Vector similarity search with threshold/limit/collection filters
15
+ * - ftsSearch: Full-text search with PostgreSQL FTS
16
+ * - list: List all memories, optionally filtered by collection
17
+ * - get: Retrieve single memory by ID
18
+ * - delete: Remove memory and its embedding
19
+ * - getStats: Memory and embedding counts
20
+ *
21
+ * ## Vector Search Query
22
+ * Uses pgvector's <=> operator for cosine distance, where:
23
+ * - 0 = identical vectors
24
+ * - 2 = opposite vectors
25
+ * - Score = 1 - distance (higher is more similar)
26
+ */
27
+ import type { DatabaseAdapter } from "../types/database.js";
28
+ /** Embedding dimension for mxbai-embed-large */
29
+ export declare const EMBEDDING_DIM = 1024;
30
+ /** Memory data structure */
31
+ export interface Memory {
32
+ readonly id: string;
33
+ readonly content: string;
34
+ readonly metadata: Record<string, unknown>;
35
+ readonly collection: string;
36
+ readonly createdAt: Date;
37
+ }
38
+ /** Search result with similarity score */
39
+ export interface SearchResult {
40
+ readonly memory: Memory;
41
+ readonly score: number;
42
+ readonly matchType: "vector" | "fts";
43
+ }
44
+ /** Search options for queries */
45
+ export interface SearchOptions {
46
+ readonly limit?: number;
47
+ readonly threshold?: number;
48
+ readonly collection?: string;
49
+ }
50
+ /**
51
+ * Create a memory store using a shared DatabaseAdapter
52
+ *
53
+ * @param db - DatabaseAdapter instance (shared PGLite, SQLite, PostgreSQL, etc.)
54
+ * @returns Memory store operations
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * import { wrapPGlite } from '../pglite.js';
59
+ * import { PGlite } from '@electric-sql/pglite';
60
+ * import { vector } from '@electric-sql/pglite/vector';
61
+ *
62
+ * const pglite = await PGlite.create({ dataDir: './db', extensions: { vector } });
63
+ * const db = wrapPGlite(pglite);
64
+ * const store = createMemoryStore(db);
65
+ *
66
+ * await store.store(memory, embedding);
67
+ * const results = await store.search(queryEmbedding);
68
+ * ```
69
+ */
70
+ export declare function createMemoryStore(db: DatabaseAdapter): {
71
+ /**
72
+ * Store a memory with its embedding
73
+ *
74
+ * Uses UPSERT (INSERT ... ON CONFLICT DO UPDATE) to handle both
75
+ * new memories and updates to existing ones atomically.
76
+ *
77
+ * @param memory - Memory to store
78
+ * @param embedding - 1024-dimensional vector
79
+ * @throws Error if database operation fails
80
+ */
81
+ store(memory: Memory, embedding: number[]): Promise<void>;
82
+ /**
83
+ * Vector similarity search
84
+ *
85
+ * Finds memories with embeddings similar to the query embedding.
86
+ * Uses cosine distance (<=> operator) with HNSW index for performance.
87
+ *
88
+ * @param queryEmbedding - 1024-dimensional query vector
89
+ * @param options - Search options (limit, threshold, collection)
90
+ * @returns Array of search results sorted by similarity (highest first)
91
+ */
92
+ search(queryEmbedding: number[], options?: SearchOptions): Promise<SearchResult[]>;
93
+ /**
94
+ * Full-text search
95
+ *
96
+ * Searches memory content using PostgreSQL's full-text search.
97
+ * Uses GIN index on to_tsvector('english', content) for performance.
98
+ *
99
+ * @param searchQuery - Text query string
100
+ * @param options - Search options (limit, collection)
101
+ * @returns Array of search results ranked by ts_rank
102
+ */
103
+ ftsSearch(searchQuery: string, options?: SearchOptions): Promise<SearchResult[]>;
104
+ /**
105
+ * List memories
106
+ *
107
+ * @param collection - Optional collection filter
108
+ * @returns Array of memories sorted by created_at DESC
109
+ */
110
+ list(collection?: string): Promise<Memory[]>;
111
+ /**
112
+ * Get a single memory by ID
113
+ *
114
+ * @param id - Memory ID
115
+ * @returns Memory or null if not found
116
+ */
117
+ get(id: string): Promise<Memory | null>;
118
+ /**
119
+ * Delete a memory
120
+ *
121
+ * Cascade delete handles memory_embeddings automatically.
122
+ *
123
+ * @param id - Memory ID
124
+ */
125
+ delete(id: string): Promise<void>;
126
+ /**
127
+ * Get database statistics
128
+ *
129
+ * @returns Memory and embedding counts
130
+ */
131
+ getStats(): Promise<{
132
+ memories: number;
133
+ embeddings: number;
134
+ }>;
135
+ };
136
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAM5D,gDAAgD;AAChD,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,4BAA4B;AAC5B,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,KAAK,CAAC;CACtC;AAED,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,eAAe;IAajD;;;;;;;;;OASG;kBACiB,MAAM,aAAa,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC/D;;;;;;;;;OASG;2BAEe,MAAM,EAAE,YACf,aAAa,GACrB,OAAO,CAAC,YAAY,EAAE,CAAC;IAkD1B;;;;;;;;;OASG;2BAEY,MAAM,YACV,aAAa,GACrB,OAAO,CAAC,YAAY,EAAE,CAAC;IAoC1B;;;;;OAKG;sBACqB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAelD;;;;;OAKG;YACW,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ7C;;;;;;OAMG;eACc,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC;;;;OAIG;gBACe,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;EActE"}
@@ -1 +1 @@
1
- {"version":3,"file":"pglite.d.ts","sourceRoot":"","sources":["../src/pglite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAM9C,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAIjE;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAQ1D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQjE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAkB5D;AAoHD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,YAAY,CAChC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAmD3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAS3B;AA0DD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,SAAS,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAM3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAUvD;AAGD,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"pglite.d.ts","sourceRoot":"","sources":["../src/pglite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAO9C,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAIjE;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAQ1D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQjE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAkB5D;AA0HD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,YAAY,CAChC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAmD3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAS3B;AA0DD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,SAAS,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAQ3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAUvD;AAGD,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -186,6 +186,8 @@ export declare const SubtaskOutcomeEventSchema: z.ZodObject<{
186
186
  error_count: z.ZodDefault<z.ZodNumber>;
187
187
  retry_count: z.ZodDefault<z.ZodNumber>;
188
188
  success: z.ZodBoolean;
189
+ scope_violation: z.ZodOptional<z.ZodBoolean>;
190
+ violation_files: z.ZodOptional<z.ZodArray<z.ZodString>>;
189
191
  }, z.core.$strip>;
190
192
  export declare const HumanFeedbackEventSchema: z.ZodObject<{
191
193
  id: z.ZodOptional<z.ZodNumber>;
@@ -389,6 +391,8 @@ export declare const AgentEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
389
391
  error_count: z.ZodDefault<z.ZodNumber>;
390
392
  retry_count: z.ZodDefault<z.ZodNumber>;
391
393
  success: z.ZodBoolean;
394
+ scope_violation: z.ZodOptional<z.ZodBoolean>;
395
+ violation_files: z.ZodOptional<z.ZodArray<z.ZodString>>;
392
396
  }, z.core.$strip>, z.ZodObject<{
393
397
  id: z.ZodOptional<z.ZodNumber>;
394
398
  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 +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;AAY9C;;;;;;;;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":"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 +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;AAMnD;;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,EAoUjC,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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "swarm-mail",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Event sourcing primitives for multi-agent coordination. Local-first, no external servers.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -27,7 +27,7 @@
27
27
  "license": "MIT",
28
28
  "scripts": {
29
29
  "build": "bun build ./src/index.ts --outdir ./dist --target node --external @electric-sql/pglite --external postgres && tsc",
30
- "test": "bun test src/streams/ --timeout 60000",
30
+ "test": "bun test src/streams/ src/memory/ src/hive/ --timeout 60000",
31
31
  "test:beads": "bun test src/beads/ --timeout 60000",
32
32
  "test:integration": "vitest run src/streams/**/*.integration-test.ts --testTimeout 60000",
33
33
  "test:all": "bun test src/ --timeout 60000",