@falai/agent 0.3.20 → 0.3.21

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 (41) hide show
  1. package/README.md +8 -6
  2. package/dist/adapters/MemoryAdapter.d.ts +47 -0
  3. package/dist/adapters/MemoryAdapter.d.ts.map +1 -0
  4. package/dist/adapters/MemoryAdapter.js +178 -0
  5. package/dist/adapters/MemoryAdapter.js.map +1 -0
  6. package/dist/adapters/SQLiteAdapter.d.ts +69 -0
  7. package/dist/adapters/SQLiteAdapter.d.ts.map +1 -0
  8. package/dist/adapters/SQLiteAdapter.js +307 -0
  9. package/dist/adapters/SQLiteAdapter.js.map +1 -0
  10. package/dist/adapters/index.d.ts +3 -0
  11. package/dist/adapters/index.d.ts.map +1 -1
  12. package/dist/adapters/index.js +2 -0
  13. package/dist/adapters/index.js.map +1 -1
  14. package/dist/cjs/adapters/MemoryAdapter.d.ts +47 -0
  15. package/dist/cjs/adapters/MemoryAdapter.d.ts.map +1 -0
  16. package/dist/cjs/adapters/MemoryAdapter.js +182 -0
  17. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -0
  18. package/dist/cjs/adapters/SQLiteAdapter.d.ts +69 -0
  19. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -0
  20. package/dist/cjs/adapters/SQLiteAdapter.js +311 -0
  21. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -0
  22. package/dist/cjs/adapters/index.d.ts +3 -0
  23. package/dist/cjs/adapters/index.d.ts.map +1 -1
  24. package/dist/cjs/adapters/index.js +5 -1
  25. package/dist/cjs/adapters/index.js.map +1 -1
  26. package/dist/cjs/index.d.ts +3 -0
  27. package/dist/cjs/index.d.ts.map +1 -1
  28. package/dist/cjs/index.js +5 -1
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/index.d.ts +3 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +2 -0
  33. package/dist/index.js.map +1 -1
  34. package/docs/ADAPTERS.md +27 -3
  35. package/docs/API_REFERENCE.md +111 -0
  36. package/docs/PERSISTENCE.md +76 -0
  37. package/package.json +6 -2
  38. package/src/adapters/MemoryAdapter.ts +245 -0
  39. package/src/adapters/SQLiteAdapter.ts +449 -0
  40. package/src/adapters/index.ts +9 -0
  41. package/src/index.ts +7 -0
@@ -3,7 +3,7 @@
3
3
  * Database adapters for persistence
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.PostgreSQLAdapter = exports.MongoAdapter = exports.RedisAdapter = exports.PrismaAdapter = void 0;
6
+ exports.MemoryAdapter = exports.SQLiteAdapter = exports.PostgreSQLAdapter = exports.MongoAdapter = exports.RedisAdapter = exports.PrismaAdapter = void 0;
7
7
  var PrismaAdapter_1 = require("./PrismaAdapter");
8
8
  Object.defineProperty(exports, "PrismaAdapter", { enumerable: true, get: function () { return PrismaAdapter_1.PrismaAdapter; } });
9
9
  var RedisAdapter_1 = require("./RedisAdapter");
@@ -12,4 +12,8 @@ var MongoAdapter_1 = require("./MongoAdapter");
12
12
  Object.defineProperty(exports, "MongoAdapter", { enumerable: true, get: function () { return MongoAdapter_1.MongoAdapter; } });
13
13
  var PostgreSQLAdapter_1 = require("./PostgreSQLAdapter");
14
14
  Object.defineProperty(exports, "PostgreSQLAdapter", { enumerable: true, get: function () { return PostgreSQLAdapter_1.PostgreSQLAdapter; } });
15
+ var SQLiteAdapter_1 = require("./SQLiteAdapter");
16
+ Object.defineProperty(exports, "SQLiteAdapter", { enumerable: true, get: function () { return SQLiteAdapter_1.SQLiteAdapter; } });
17
+ var MemoryAdapter_1 = require("./MemoryAdapter");
18
+ Object.defineProperty(exports, "MemoryAdapter", { enumerable: true, get: function () { return MemoryAdapter_1.MemoryAdapter; } });
15
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAOtB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAGrB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAQrB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAOtB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAGrB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAQrB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAO1B,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAOtB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA"}
@@ -31,6 +31,9 @@ export { MongoAdapter } from "./adapters/MongoAdapter";
31
31
  export type { MongoClient, MongoDatabase, MongoCollection, MongoAdapterOptions, } from "./adapters/MongoAdapter";
32
32
  export { PostgreSQLAdapter } from "./adapters/PostgreSQLAdapter";
33
33
  export type { PgClient, PgQueryResult, PostgreSQLAdapterOptions, } from "./adapters/PostgreSQLAdapter";
34
+ export { SQLiteAdapter } from "./adapters/SQLiteAdapter";
35
+ export type { SqliteDatabase, SqliteStatement, SQLiteAdapterOptions, } from "./adapters/SQLiteAdapter";
36
+ export { MemoryAdapter } from "./adapters/MemoryAdapter";
34
37
  export { END_ROUTE } from "./constants";
35
38
  export { generateRouteId, generateStateId, generateObservationId, generateToolId, } from "./utils/id";
36
39
  export type { AgentOptions, Term, Guideline, Capability, GuidelineMatch, ContextLifecycleHooks, ContextProvider, } from "./types/agent";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/cjs/index.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * A strongly-typed, modular agent framework with route DSL and AI provider strategy
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.SectionStatus = exports.EventSource = exports.EventKind = exports.CompositionMode = exports.generateToolId = exports.generateObservationId = exports.generateStateId = exports.generateRouteId = exports.END_ROUTE = exports.PostgreSQLAdapter = exports.MongoAdapter = exports.RedisAdapter = exports.PrismaAdapter = exports.AnthropicProvider = exports.OpenRouterProvider = exports.OpenAIProvider = exports.GeminiProvider = exports.PersistenceManager = exports.BuiltInSection = exports.PromptBuilder = exports.createToolEvent = exports.createMessageEvent = exports.adaptEvent = exports.DomainRegistry = exports.defineTool = exports.Observation = exports.Transition = exports.State = exports.Route = exports.Agent = void 0;
8
+ exports.SectionStatus = exports.EventSource = exports.EventKind = exports.CompositionMode = exports.generateToolId = exports.generateObservationId = exports.generateStateId = exports.generateRouteId = exports.END_ROUTE = exports.MemoryAdapter = exports.SQLiteAdapter = exports.PostgreSQLAdapter = exports.MongoAdapter = exports.RedisAdapter = exports.PrismaAdapter = exports.AnthropicProvider = exports.OpenRouterProvider = exports.OpenAIProvider = exports.GeminiProvider = exports.PersistenceManager = exports.BuiltInSection = exports.PromptBuilder = exports.createToolEvent = exports.createMessageEvent = exports.adaptEvent = exports.DomainRegistry = exports.defineTool = exports.Observation = exports.Transition = exports.State = exports.Route = exports.Agent = void 0;
9
9
  // Core
10
10
  var Agent_1 = require("./core/Agent");
11
11
  Object.defineProperty(exports, "Agent", { enumerable: true, get: function () { return Agent_1.Agent; } });
@@ -49,6 +49,10 @@ var MongoAdapter_1 = require("./adapters/MongoAdapter");
49
49
  Object.defineProperty(exports, "MongoAdapter", { enumerable: true, get: function () { return MongoAdapter_1.MongoAdapter; } });
50
50
  var PostgreSQLAdapter_1 = require("./adapters/PostgreSQLAdapter");
51
51
  Object.defineProperty(exports, "PostgreSQLAdapter", { enumerable: true, get: function () { return PostgreSQLAdapter_1.PostgreSQLAdapter; } });
52
+ var SQLiteAdapter_1 = require("./adapters/SQLiteAdapter");
53
+ Object.defineProperty(exports, "SQLiteAdapter", { enumerable: true, get: function () { return SQLiteAdapter_1.SQLiteAdapter; } });
54
+ var MemoryAdapter_1 = require("./adapters/MemoryAdapter");
55
+ Object.defineProperty(exports, "MemoryAdapter", { enumerable: true, get: function () { return MemoryAdapter_1.MemoryAdapter; } });
52
56
  // Constants
53
57
  var constants_1 = require("./constants");
54
58
  Object.defineProperty(exports, "END_ROUTE", { enumerable: true, get: function () { return constants_1.END_ROUTE; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,OAAO;AACP,sCAAqC;AAA5B,8FAAA,KAAK,OAAA;AACd,sCAAqC;AAA5B,8FAAA,KAAK,OAAA;AACd,sCAAqC;AAA5B,8FAAA,KAAK,OAAA;AACd,gDAA+C;AAAtC,wGAAA,UAAU,OAAA;AACnB,kDAAiD;AAAxC,0GAAA,WAAW,OAAA;AACpB,oCAAyC;AAAhC,kGAAA,UAAU,OAAA;AACnB,wDAAuD;AAA9C,gHAAA,cAAc,OAAA;AACvB,wCAAgF;AAAvE,oGAAA,UAAU,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AAAE,yGAAA,eAAe,OAAA;AACxD,sDAAqD;AAA5C,8GAAA,aAAa,OAAA;AAEtB,sDAAsD;AAA7C,+GAAA,cAAc,OAAA;AACvB,gEAA+D;AAAtD,wHAAA,kBAAkB,OAAA;AAE3B,YAAY;AACZ,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AAEvB,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AAEvB,qEAAoE;AAA3D,wHAAA,kBAAkB,OAAA;AAE3B,mEAAkE;AAAzD,sHAAA,iBAAiB,OAAA;AAG1B,WAAW;AACX,0DAAyD;AAAhD,8GAAA,aAAa,OAAA;AAMtB,wDAAuD;AAA9C,4GAAA,YAAY,OAAA;AAErB,wDAAuD;AAA9C,4GAAA,YAAY,OAAA;AAOrB,kEAAiE;AAAxD,sHAAA,iBAAiB,OAAA;AAO1B,YAAY;AACZ,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,QAAQ;AACR,iCAKoB;AAJlB,qGAAA,eAAe,OAAA;AACf,qGAAA,eAAe,OAAA;AACf,2GAAA,qBAAqB,OAAA;AACrB,oGAAA,cAAc,OAAA;AAahB,uCAAgD;AAAvC,wGAAA,eAAe,OAAA;AAUxB,2CAAyD;AAAhD,oGAAA,SAAS,OAAA;AAAE,sGAAA,WAAW,OAAA;AA8B/B,yCAA+C;AAAtC,uGAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,OAAO;AACP,sCAAqC;AAA5B,8FAAA,KAAK,OAAA;AACd,sCAAqC;AAA5B,8FAAA,KAAK,OAAA;AACd,sCAAqC;AAA5B,8FAAA,KAAK,OAAA;AACd,gDAA+C;AAAtC,wGAAA,UAAU,OAAA;AACnB,kDAAiD;AAAxC,0GAAA,WAAW,OAAA;AACpB,oCAAyC;AAAhC,kGAAA,UAAU,OAAA;AACnB,wDAAuD;AAA9C,gHAAA,cAAc,OAAA;AACvB,wCAAgF;AAAvE,oGAAA,UAAU,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AAAE,yGAAA,eAAe,OAAA;AACxD,sDAAqD;AAA5C,8GAAA,aAAa,OAAA;AAEtB,sDAAsD;AAA7C,+GAAA,cAAc,OAAA;AACvB,gEAA+D;AAAtD,wHAAA,kBAAkB,OAAA;AAE3B,YAAY;AACZ,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AAEvB,6DAA4D;AAAnD,gHAAA,cAAc,OAAA;AAEvB,qEAAoE;AAA3D,wHAAA,kBAAkB,OAAA;AAE3B,mEAAkE;AAAzD,sHAAA,iBAAiB,OAAA;AAG1B,WAAW;AACX,0DAAyD;AAAhD,8GAAA,aAAa,OAAA;AAMtB,wDAAuD;AAA9C,4GAAA,YAAY,OAAA;AAErB,wDAAuD;AAA9C,4GAAA,YAAY,OAAA;AAOrB,kEAAiE;AAAxD,sHAAA,iBAAiB,OAAA;AAM1B,0DAAyD;AAAhD,8GAAA,aAAa,OAAA;AAMtB,0DAAyD;AAAhD,8GAAA,aAAa,OAAA;AAEtB,YAAY;AACZ,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,QAAQ;AACR,iCAKoB;AAJlB,qGAAA,eAAe,OAAA;AACf,qGAAA,eAAe,OAAA;AACf,2GAAA,qBAAqB,OAAA;AACrB,oGAAA,cAAc,OAAA;AAahB,uCAAgD;AAAvC,wGAAA,eAAe,OAAA;AAUxB,2CAAyD;AAAhD,oGAAA,SAAS,OAAA;AAAE,sGAAA,WAAW,OAAA;AA8B/B,yCAA+C;AAAtC,uGAAA,aAAa,OAAA"}
package/dist/index.d.ts CHANGED
@@ -31,6 +31,9 @@ export { MongoAdapter } from "./adapters/MongoAdapter";
31
31
  export type { MongoClient, MongoDatabase, MongoCollection, MongoAdapterOptions, } from "./adapters/MongoAdapter";
32
32
  export { PostgreSQLAdapter } from "./adapters/PostgreSQLAdapter";
33
33
  export type { PgClient, PgQueryResult, PostgreSQLAdapterOptions, } from "./adapters/PostgreSQLAdapter";
34
+ export { SQLiteAdapter } from "./adapters/SQLiteAdapter";
35
+ export type { SqliteDatabase, SqliteStatement, SQLiteAdapterOptions, } from "./adapters/SQLiteAdapter";
36
+ export { MemoryAdapter } from "./adapters/MemoryAdapter";
34
37
  export { END_ROUTE } from "./constants";
35
38
  export { generateRouteId, generateStateId, generateObservationId, generateToolId, } from "./utils/id";
36
39
  export type { AgentOptions, Term, Guideline, Capability, GuidelineMatch, ContextLifecycleHooks, ContextProvider, } from "./types/agent";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -25,6 +25,8 @@ export { PrismaAdapter } from "./adapters/PrismaAdapter";
25
25
  export { RedisAdapter } from "./adapters/RedisAdapter";
26
26
  export { MongoAdapter } from "./adapters/MongoAdapter";
27
27
  export { PostgreSQLAdapter } from "./adapters/PostgreSQLAdapter";
28
+ export { SQLiteAdapter } from "./adapters/SQLiteAdapter";
29
+ export { MemoryAdapter } from "./adapters/MemoryAdapter";
28
30
  // Constants
29
31
  export { END_ROUTE } from "./constants";
30
32
  // Utils
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO;AACP,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAOvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAOjE,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,QAAQ;AACR,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,cAAc,GACf,MAAM,YAAY,CAAC;AAYpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAUhD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA8BzD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO;AACP,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAOvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAMjE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,QAAQ;AACR,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,cAAc,GACf,MAAM,YAAY,CAAC;AAYpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAUhD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA8BzD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
package/docs/ADAPTERS.md CHANGED
@@ -40,6 +40,26 @@ All adapters follow the **provider pattern** - no dependencies required in the p
40
40
  - Foreign key constraints
41
41
  - Full SQL control
42
42
 
43
+ ### 5. **SQLiteAdapter**
44
+
45
+ - **Use case:** Lightweight local database
46
+ - **Install:** `npm install better-sqlite3`
47
+ - **Features:**
48
+ - File-based database
49
+ - Perfect for local development
50
+ - Auto table/index creation
51
+ - Zero configuration
52
+
53
+ ### 6. **MemoryAdapter**
54
+
55
+ - **Use case:** Testing & development
56
+ - **Install:** Built-in (no dependencies required) ✨
57
+ - **Features:**
58
+ - In-memory storage
59
+ - No setup required
60
+ - Perfect for unit tests
61
+ - Data snapshot/clear utilities
62
+
43
63
  ## 🎯 Usage Pattern
44
64
 
45
65
  All adapters follow the same simple pattern:
@@ -73,7 +93,8 @@ All database clients are **optional peer dependencies** - they won't be installe
73
93
  "redis": "^4.6.0 || ^5.0.0",
74
94
  "mongodb": "^6.0.0 || ^7.0.0",
75
95
  "pg": "^8.11.0",
76
- "mysql2": "^3.2.0"
96
+ "mysql2": "^3.2.0",
97
+ "better-sqlite3": "^11.0.0 || ^12.0.0"
77
98
  },
78
99
  "peerDependenciesMeta": {
79
100
  "@prisma/client": { "optional": true },
@@ -81,7 +102,8 @@ All database clients are **optional peer dependencies** - they won't be installe
81
102
  "redis": { "optional": true },
82
103
  "mongodb": { "optional": true },
83
104
  "pg": { "optional": true },
84
- "mysql2": { "optional": true }
105
+ "mysql2": { "optional": true },
106
+ "better-sqlite3": { "optional": true }
85
107
  }
86
108
  }
87
109
  ```
@@ -122,6 +144,8 @@ All adapters are fully typed with **zero `any` types** (except for Prisma's dyna
122
144
 
123
145
  ## 🚀 Coming Soon
124
146
 
125
- - **MySQLAdapter**: Traditional relational database
147
+ - **MySQLAdapter**: Traditional relational database (similar to PostgreSQL)
126
148
  - **ElasticsearchAdapter**: Full-text search integration
127
149
  - **DynamoDBAdapter**: AWS serverless storage
150
+
151
+ All adapters are production-ready and fully tested!
@@ -947,6 +947,117 @@ const agent = new Agent({
947
947
 
948
948
  ---
949
949
 
950
+ ### `SQLiteAdapter`
951
+
952
+ Lightweight, file-based database for local development.
953
+
954
+ #### Constructor
955
+
956
+ ```typescript
957
+ new SQLiteAdapter(options: SQLiteAdapterOptions)
958
+
959
+ interface SQLiteAdapterOptions {
960
+ db: SqliteDatabase; // better-sqlite3 database
961
+ tables?: {
962
+ sessions?: string; // Default: "agent_sessions"
963
+ messages?: string; // Default: "agent_messages"
964
+ };
965
+ }
966
+ ```
967
+
968
+ #### Methods
969
+
970
+ ##### `initialize(): Promise<void>`
971
+
972
+ Creates tables and indexes if they don't exist.
973
+
974
+ #### Example
975
+
976
+ ```typescript
977
+ import { SQLiteAdapter } from "@falai/agent";
978
+ import Database from "better-sqlite3";
979
+
980
+ const db = new Database("agent.db");
981
+ const adapter = new SQLiteAdapter({ db });
982
+
983
+ // Auto-create tables
984
+ await adapter.initialize();
985
+
986
+ const agent = new Agent({
987
+ persistence: { adapter },
988
+ });
989
+ ```
990
+
991
+ **Install:** `npm install better-sqlite3`
992
+
993
+ **Perfect for:** Local development, testing, desktop apps, single-user applications
994
+
995
+ ---
996
+
997
+ ### `MemoryAdapter`
998
+
999
+ Zero-dependency in-memory storage for testing and development.
1000
+
1001
+ #### Constructor
1002
+
1003
+ ```typescript
1004
+ new MemoryAdapter();
1005
+ ```
1006
+
1007
+ No options needed - it's ready to go! ✨
1008
+
1009
+ #### Methods
1010
+
1011
+ ##### `clear(): void`
1012
+
1013
+ Clears all stored data (useful for testing).
1014
+
1015
+ ##### `getSnapshot(): { sessions: SessionData[]; messages: MessageData[] }`
1016
+
1017
+ Returns a snapshot of all data (useful for debugging/testing).
1018
+
1019
+ #### Example
1020
+
1021
+ ```typescript
1022
+ import { MemoryAdapter } from "@falai/agent";
1023
+
1024
+ const adapter = new MemoryAdapter();
1025
+
1026
+ const agent = new Agent({
1027
+ persistence: { adapter },
1028
+ });
1029
+
1030
+ // Perfect for unit tests!
1031
+ ```
1032
+
1033
+ **Testing Example:**
1034
+
1035
+ ```typescript
1036
+ describe("Agent", () => {
1037
+ const adapter = new MemoryAdapter();
1038
+
1039
+ afterEach(() => {
1040
+ adapter.clear(); // Reset between tests
1041
+ });
1042
+
1043
+ it("should persist messages", async () => {
1044
+ const agent = new Agent({
1045
+ persistence: { adapter },
1046
+ });
1047
+
1048
+ // ... test logic ...
1049
+
1050
+ const { sessions, messages } = adapter.getSnapshot();
1051
+ expect(sessions).toHaveLength(1);
1052
+ expect(messages).toHaveLength(2);
1053
+ });
1054
+ });
1055
+ ```
1056
+
1057
+ **No installation required** - built into the framework!
1058
+
1059
+ ---
1060
+
950
1061
  ### Persistence Types
951
1062
 
952
1063
  #### `SessionData`
@@ -511,3 +511,79 @@ const agent = new Agent({
511
511
  **Install:** `npm install pg`
512
512
 
513
513
  **Note:** PostgreSQL adapter includes `initialize()` method to auto-create tables with proper indexes and foreign keys.
514
+
515
+ ### SQLite
516
+
517
+ Lightweight, file-based database for local development:
518
+
519
+ ```typescript
520
+ import { SQLiteAdapter } from "@falai/agent";
521
+ import Database from "better-sqlite3";
522
+
523
+ const db = new Database("agent.db");
524
+
525
+ const adapter = new SQLiteAdapter({ db });
526
+
527
+ // Auto-create tables
528
+ await adapter.initialize();
529
+
530
+ const agent = new Agent({
531
+ persistence: { adapter },
532
+ });
533
+ ```
534
+
535
+ **Install:** `npm install better-sqlite3`
536
+
537
+ **Perfect for:**
538
+
539
+ - Local development
540
+ - Testing
541
+ - Desktop applications
542
+ - Single-user apps
543
+
544
+ ### Memory (Built-in)
545
+
546
+ Zero-dependency in-memory storage for testing:
547
+
548
+ ```typescript
549
+ import { MemoryAdapter } from "@falai/agent";
550
+
551
+ const agent = new Agent({
552
+ persistence: {
553
+ adapter: new MemoryAdapter(),
554
+ userId: "test_user",
555
+ },
556
+ });
557
+
558
+ // Perfect for unit tests - no database setup required!
559
+ ```
560
+
561
+ **Features:**
562
+
563
+ - No installation required ✨
564
+ - Perfect for testing
565
+ - Data snapshot for debugging
566
+ - Clear method for test cleanup
567
+
568
+ **Example test:**
569
+
570
+ ```typescript
571
+ describe("Agent persistence", () => {
572
+ const adapter = new MemoryAdapter();
573
+
574
+ afterEach(() => {
575
+ adapter.clear(); // Clean state between tests
576
+ });
577
+
578
+ it("should save session", async () => {
579
+ const agent = new Agent({
580
+ persistence: { adapter },
581
+ });
582
+
583
+ // Test your logic...
584
+
585
+ const snapshot = adapter.getSnapshot();
586
+ expect(snapshot.sessions).toHaveLength(1);
587
+ });
588
+ });
589
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@falai/agent",
3
- "version": "0.3.20",
3
+ "version": "0.3.21",
4
4
  "description": "Standalone, strongly-typed AI Agent framework with route DSL and AI provider strategy",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -87,7 +87,8 @@
87
87
  "redis": "^4.6.0 || ^5.0.0",
88
88
  "mongodb": "^6.0.0 || ^7.0.0",
89
89
  "pg": "^8.11.0",
90
- "mysql2": "^3.2.0"
90
+ "mysql2": "^3.2.0",
91
+ "better-sqlite3": "^11.0.0 || ^12.0.0"
91
92
  },
92
93
  "peerDependenciesMeta": {
93
94
  "@prisma/client": {
@@ -107,6 +108,9 @@
107
108
  },
108
109
  "mysql2": {
109
110
  "optional": true
111
+ },
112
+ "better-sqlite3": {
113
+ "optional": true
110
114
  }
111
115
  }
112
116
  }
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Memory adapter for persistence
3
+ * In-memory storage for testing and development (no database required)
4
+ */
5
+
6
+ import type {
7
+ SessionRepository,
8
+ MessageRepository,
9
+ SessionData,
10
+ MessageData,
11
+ SessionStatus,
12
+ PersistenceAdapter,
13
+ } from "../types/persistence";
14
+
15
+ /**
16
+ * Memory Adapter - Provider-style API for in-memory persistence
17
+ *
18
+ * Perfect for:
19
+ * - Testing
20
+ * - Development
21
+ * - Prototyping
22
+ * - No database setup required
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * import { Agent, MemoryAdapter } from '@falai/agent';
27
+ *
28
+ * const agent = new Agent({
29
+ * name: "My Agent",
30
+ * ai: provider,
31
+ * persistence: {
32
+ * adapter: new MemoryAdapter(),
33
+ * userId: "user_123",
34
+ * },
35
+ * });
36
+ * ```
37
+ */
38
+ export class MemoryAdapter implements PersistenceAdapter {
39
+ public readonly sessionRepository: SessionRepository;
40
+ public readonly messageRepository: MessageRepository;
41
+ private sessions: Map<string, SessionData>;
42
+ private messages: Map<string, MessageData>;
43
+
44
+ constructor() {
45
+ this.sessions = new Map();
46
+ this.messages = new Map();
47
+
48
+ this.sessionRepository = new MemorySessionRepository(this.sessions);
49
+ this.messageRepository = new MemoryMessageRepository(this.messages);
50
+ }
51
+
52
+ /**
53
+ * Clear all data (useful for testing)
54
+ */
55
+ clear(): void {
56
+ this.sessions.clear();
57
+ this.messages.clear();
58
+ }
59
+
60
+ /**
61
+ * Get data snapshot (useful for debugging)
62
+ */
63
+ getSnapshot(): {
64
+ sessions: SessionData[];
65
+ messages: MessageData[];
66
+ } {
67
+ return {
68
+ sessions: Array.from(this.sessions.values()),
69
+ messages: Array.from(this.messages.values()),
70
+ };
71
+ }
72
+ }
73
+
74
+ /**
75
+ * Memory Session Repository
76
+ */
77
+ class MemorySessionRepository implements SessionRepository {
78
+ constructor(private sessions: Map<string, SessionData>) {}
79
+
80
+ async create(
81
+ data: Omit<SessionData, "id" | "createdAt" | "updatedAt">
82
+ ): Promise<SessionData> {
83
+ const id = `session_${Date.now()}_${Math.random().toString(36).slice(2)}`;
84
+ const now = new Date();
85
+
86
+ const session: SessionData = {
87
+ ...data,
88
+ id,
89
+ status: data.status || "active",
90
+ messageCount: data.messageCount || 0,
91
+ createdAt: now,
92
+ updatedAt: now,
93
+ };
94
+
95
+ this.sessions.set(id, session);
96
+ return Promise.resolve(session);
97
+ }
98
+
99
+ async findById(id: string): Promise<SessionData | null> {
100
+ const session = this.sessions.get(id) || null;
101
+ return Promise.resolve(session);
102
+ }
103
+
104
+ async findActiveByUserId(userId: string): Promise<SessionData | null> {
105
+ const sessions = Array.from(this.sessions.values())
106
+ .filter((s) => s.userId === userId && s.status === "active")
107
+ .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
108
+
109
+ return Promise.resolve(sessions[0] || null);
110
+ }
111
+
112
+ async findByUserId(userId: string, limit = 100): Promise<SessionData[]> {
113
+ const sessions = Array.from(this.sessions.values())
114
+ .filter((s) => s.userId === userId)
115
+ .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime())
116
+ .slice(0, limit);
117
+ return Promise.resolve(sessions);
118
+ }
119
+
120
+ async update(
121
+ id: string,
122
+ data: Partial<Omit<SessionData, "id" | "createdAt">>
123
+ ): Promise<SessionData | null> {
124
+ const existing = this.sessions.get(id);
125
+ if (!existing) return null;
126
+
127
+ const updated: SessionData = {
128
+ ...existing,
129
+ ...data,
130
+ updatedAt: new Date(),
131
+ };
132
+
133
+ this.sessions.set(id, updated);
134
+ return Promise.resolve(updated);
135
+ }
136
+
137
+ async updateStatus(
138
+ id: string,
139
+ status: SessionStatus,
140
+ completedAt?: Date
141
+ ): Promise<SessionData | null> {
142
+ return await this.update(id, { status, completedAt });
143
+ }
144
+
145
+ async updateCollectedData(
146
+ id: string,
147
+ collectedData: Record<string, unknown>
148
+ ): Promise<SessionData | null> {
149
+ return await this.update(id, { collectedData });
150
+ }
151
+
152
+ async updateRouteState(
153
+ id: string,
154
+ route?: string,
155
+ state?: string
156
+ ): Promise<SessionData | null> {
157
+ return await this.update(id, {
158
+ currentRoute: route,
159
+ currentState: state,
160
+ });
161
+ }
162
+
163
+ async incrementMessageCount(id: string): Promise<SessionData | null> {
164
+ const session = this.sessions.get(id);
165
+ if (!session) return null;
166
+
167
+ return await this.update(id, {
168
+ messageCount: (session.messageCount || 0) + 1,
169
+ lastMessageAt: new Date(),
170
+ });
171
+ }
172
+
173
+ async delete(id: string): Promise<boolean> {
174
+ const result = this.sessions.delete(id);
175
+ return Promise.resolve(result);
176
+ }
177
+ }
178
+
179
+ /**
180
+ * Memory Message Repository
181
+ */
182
+ class MemoryMessageRepository implements MessageRepository {
183
+ constructor(private messages: Map<string, MessageData>) {}
184
+
185
+ async create(
186
+ data: Omit<MessageData, "id" | "createdAt">
187
+ ): Promise<MessageData> {
188
+ const id = `msg_${Date.now()}_${Math.random().toString(36).slice(2)}`;
189
+ const message: MessageData = {
190
+ ...data,
191
+ id,
192
+ createdAt: new Date(),
193
+ };
194
+
195
+ this.messages.set(id, message);
196
+ return Promise.resolve(message);
197
+ }
198
+
199
+ async findById(id: string): Promise<MessageData | null> {
200
+ const message = this.messages.get(id) || null;
201
+ return Promise.resolve(message);
202
+ }
203
+
204
+ async findBySessionId(
205
+ sessionId: string,
206
+ limit = 1000
207
+ ): Promise<MessageData[]> {
208
+ const messages = Array.from(this.messages.values())
209
+ .filter((m) => m.sessionId === sessionId)
210
+ .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())
211
+ .slice(0, limit);
212
+ return Promise.resolve(messages);
213
+ }
214
+
215
+ async findByUserId(userId: string, limit = 100): Promise<MessageData[]> {
216
+ const messages = Array.from(this.messages.values())
217
+ .filter((m) => m.userId === userId)
218
+ .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime())
219
+ .slice(0, limit);
220
+ return Promise.resolve(messages);
221
+ }
222
+
223
+ async delete(id: string): Promise<boolean> {
224
+ const result = this.messages.delete(id);
225
+ return Promise.resolve(result);
226
+ }
227
+
228
+ async deleteBySessionId(sessionId: string): Promise<number> {
229
+ const toDelete = Array.from(this.messages.values()).filter(
230
+ (m) => m.sessionId === sessionId
231
+ );
232
+
233
+ toDelete.forEach((m) => this.messages.delete(m.id));
234
+ return Promise.resolve(toDelete.length);
235
+ }
236
+
237
+ async deleteByUserId(userId: string): Promise<number> {
238
+ const toDelete = Array.from(this.messages.values()).filter(
239
+ (m) => m.userId === userId
240
+ );
241
+
242
+ toDelete.forEach((m) => this.messages.delete(m.id));
243
+ return Promise.resolve(toDelete.length);
244
+ }
245
+ }