@falai/agent 0.3.12 → 0.3.20

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 (51) hide show
  1. package/README.md +72 -0
  2. package/dist/adapters/MongoAdapter.d.ts +97 -0
  3. package/dist/adapters/MongoAdapter.d.ts.map +1 -0
  4. package/dist/adapters/MongoAdapter.js +163 -0
  5. package/dist/adapters/MongoAdapter.js.map +1 -0
  6. package/dist/adapters/PostgreSQLAdapter.d.ts +71 -0
  7. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  8. package/dist/adapters/PostgreSQLAdapter.js +256 -0
  9. package/dist/adapters/PostgreSQLAdapter.js.map +1 -0
  10. package/dist/adapters/RedisAdapter.d.ts +71 -0
  11. package/dist/adapters/RedisAdapter.d.ts.map +1 -0
  12. package/dist/adapters/RedisAdapter.js +226 -0
  13. package/dist/adapters/RedisAdapter.js.map +1 -0
  14. package/dist/adapters/index.d.ts +6 -0
  15. package/dist/adapters/index.d.ts.map +1 -1
  16. package/dist/adapters/index.js +3 -0
  17. package/dist/adapters/index.js.map +1 -1
  18. package/dist/cjs/adapters/MongoAdapter.d.ts +97 -0
  19. package/dist/cjs/adapters/MongoAdapter.d.ts.map +1 -0
  20. package/dist/cjs/adapters/MongoAdapter.js +167 -0
  21. package/dist/cjs/adapters/MongoAdapter.js.map +1 -0
  22. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +71 -0
  23. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  24. package/dist/cjs/adapters/PostgreSQLAdapter.js +260 -0
  25. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -0
  26. package/dist/cjs/adapters/RedisAdapter.d.ts +71 -0
  27. package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -0
  28. package/dist/cjs/adapters/RedisAdapter.js +230 -0
  29. package/dist/cjs/adapters/RedisAdapter.js.map +1 -0
  30. package/dist/cjs/adapters/index.d.ts +6 -0
  31. package/dist/cjs/adapters/index.d.ts.map +1 -1
  32. package/dist/cjs/adapters/index.js +7 -1
  33. package/dist/cjs/adapters/index.js.map +1 -1
  34. package/dist/cjs/index.d.ts +6 -0
  35. package/dist/cjs/index.d.ts.map +1 -1
  36. package/dist/cjs/index.js +7 -1
  37. package/dist/cjs/index.js.map +1 -1
  38. package/dist/index.d.ts +6 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +3 -0
  41. package/dist/index.js.map +1 -1
  42. package/docs/ADAPTERS.md +127 -0
  43. package/docs/API_REFERENCE.md +337 -0
  44. package/docs/PERSISTENCE.md +100 -6
  45. package/examples/redis-persistence.ts +89 -0
  46. package/package.json +22 -2
  47. package/src/adapters/MongoAdapter.ts +295 -0
  48. package/src/adapters/PostgreSQLAdapter.ts +417 -0
  49. package/src/adapters/RedisAdapter.ts +365 -0
  50. package/src/adapters/index.ts +18 -0
  51. package/src/index.ts +15 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EACV,QAAQ,EACR,aAAa,EACb,wBAAwB,GACzB,MAAM,qBAAqB,CAAC"}
@@ -3,7 +3,13 @@
3
3
  * Database adapters for persistence
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.PrismaAdapter = void 0;
6
+ 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
+ var RedisAdapter_1 = require("./RedisAdapter");
10
+ Object.defineProperty(exports, "RedisAdapter", { enumerable: true, get: function () { return RedisAdapter_1.RedisAdapter; } });
11
+ var MongoAdapter_1 = require("./MongoAdapter");
12
+ Object.defineProperty(exports, "MongoAdapter", { enumerable: true, get: function () { return MongoAdapter_1.MongoAdapter; } });
13
+ var PostgreSQLAdapter_1 = require("./PostgreSQLAdapter");
14
+ Object.defineProperty(exports, "PostgreSQLAdapter", { enumerable: true, get: function () { return PostgreSQLAdapter_1.PostgreSQLAdapter; } });
9
15
  //# 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"}
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"}
@@ -25,6 +25,12 @@ export { AnthropicProvider } from "./providers/AnthropicProvider";
25
25
  export type { AnthropicProviderOptions } from "./providers/AnthropicProvider";
26
26
  export { PrismaAdapter } from "./adapters/PrismaAdapter";
27
27
  export type { PrismaClient, FieldMappings, PrismaAdapterOptions, } from "./adapters/PrismaAdapter";
28
+ export { RedisAdapter } from "./adapters/RedisAdapter";
29
+ export type { RedisClient, RedisAdapterOptions } from "./adapters/RedisAdapter";
30
+ export { MongoAdapter } from "./adapters/MongoAdapter";
31
+ export type { MongoClient, MongoDatabase, MongoCollection, MongoAdapterOptions, } from "./adapters/MongoAdapter";
32
+ export { PostgreSQLAdapter } from "./adapters/PostgreSQLAdapter";
33
+ export type { PgClient, PgQueryResult, PostgreSQLAdapterOptions, } from "./adapters/PostgreSQLAdapter";
28
34
  export { END_ROUTE } from "./constants";
29
35
  export { generateRouteId, generateStateId, generateObservationId, generateToolId, } from "./utils/id";
30
36
  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":"AAAA;;;;GAIG;AAGH,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;AACrD,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,YAAY,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAG9E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,YAAY,EACV,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEzD,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,OAAO,GACR,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,aAAa,EACb,eAAe,EACf,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,YAAY,EACV,WAAW,IAAI,YAAY,EAC3B,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC"}
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.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.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; } });
@@ -43,6 +43,12 @@ Object.defineProperty(exports, "AnthropicProvider", { enumerable: true, get: fun
43
43
  // Adapters
44
44
  var PrismaAdapter_1 = require("./adapters/PrismaAdapter");
45
45
  Object.defineProperty(exports, "PrismaAdapter", { enumerable: true, get: function () { return PrismaAdapter_1.PrismaAdapter; } });
46
+ var RedisAdapter_1 = require("./adapters/RedisAdapter");
47
+ Object.defineProperty(exports, "RedisAdapter", { enumerable: true, get: function () { return RedisAdapter_1.RedisAdapter; } });
48
+ var MongoAdapter_1 = require("./adapters/MongoAdapter");
49
+ Object.defineProperty(exports, "MongoAdapter", { enumerable: true, get: function () { return MongoAdapter_1.MongoAdapter; } });
50
+ var PostgreSQLAdapter_1 = require("./adapters/PostgreSQLAdapter");
51
+ Object.defineProperty(exports, "PostgreSQLAdapter", { enumerable: true, get: function () { return PostgreSQLAdapter_1.PostgreSQLAdapter; } });
46
52
  // Constants
47
53
  var constants_1 = require("./constants");
48
54
  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;AAOtB,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;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"}
package/dist/index.d.ts CHANGED
@@ -25,6 +25,12 @@ export { AnthropicProvider } from "./providers/AnthropicProvider";
25
25
  export type { AnthropicProviderOptions } from "./providers/AnthropicProvider";
26
26
  export { PrismaAdapter } from "./adapters/PrismaAdapter";
27
27
  export type { PrismaClient, FieldMappings, PrismaAdapterOptions, } from "./adapters/PrismaAdapter";
28
+ export { RedisAdapter } from "./adapters/RedisAdapter";
29
+ export type { RedisClient, RedisAdapterOptions } from "./adapters/RedisAdapter";
30
+ export { MongoAdapter } from "./adapters/MongoAdapter";
31
+ export type { MongoClient, MongoDatabase, MongoCollection, MongoAdapterOptions, } from "./adapters/MongoAdapter";
32
+ export { PostgreSQLAdapter } from "./adapters/PostgreSQLAdapter";
33
+ export type { PgClient, PgQueryResult, PostgreSQLAdapterOptions, } from "./adapters/PostgreSQLAdapter";
28
34
  export { END_ROUTE } from "./constants";
29
35
  export { generateRouteId, generateStateId, generateObservationId, generateToolId, } from "./utils/id";
30
36
  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":"AAAA;;;;GAIG;AAGH,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;AACrD,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,YAAY,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAG9E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,YAAY,EACV,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEzD,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,OAAO,GACR,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,aAAa,EACb,eAAe,EACf,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,YAAY,EACV,WAAW,IAAI,YAAY,EAC3B,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,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;AACrD,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,YAAY,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAG9E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,YAAY,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,YAAY,EACV,QAAQ,EACR,aAAa,EACb,wBAAwB,GACzB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,YAAY,EACV,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEzD,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,OAAO,GACR,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,aAAa,EACb,eAAe,EACf,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,YAAY,EACV,WAAW,IAAI,YAAY,EAC3B,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -22,6 +22,9 @@ export { OpenRouterProvider } from "./providers/OpenRouterProvider";
22
22
  export { AnthropicProvider } from "./providers/AnthropicProvider";
23
23
  // Adapters
24
24
  export { PrismaAdapter } from "./adapters/PrismaAdapter";
25
+ export { RedisAdapter } from "./adapters/RedisAdapter";
26
+ export { MongoAdapter } from "./adapters/MongoAdapter";
27
+ export { PostgreSQLAdapter } from "./adapters/PostgreSQLAdapter";
25
28
  // Constants
26
29
  export { END_ROUTE } from "./constants";
27
30
  // 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;AAOzD,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;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"}
@@ -0,0 +1,127 @@
1
+ # Persistence Adapters Summary
2
+
3
+ All adapters follow the **provider pattern** - no dependencies required in the package, users install only what they need.
4
+
5
+ ## ✅ Implemented Adapters
6
+
7
+ ### 1. **PrismaAdapter**
8
+
9
+ - **Use case:** Type-safe ORM with migrations
10
+ - **Install:** `npm install @prisma/client`
11
+ - **Features:**
12
+ - Auto-migration support
13
+ - Custom field mappings
14
+ - Works with any Prisma-supported database
15
+
16
+ ### 2. **RedisAdapter**
17
+
18
+ - **Use case:** High-throughput, real-time apps
19
+ - **Install:** `npm install ioredis` or `npm install redis`
20
+ - **Features:**
21
+ - Fast in-memory storage
22
+ - Configurable TTLs
23
+ - Custom key prefixes
24
+
25
+ ### 3. **MongoAdapter**
26
+
27
+ - **Use case:** Flexible document storage
28
+ - **Install:** `npm install mongodb`
29
+ - **Features:**
30
+ - Schema-less design
31
+ - Custom collection names
32
+ - Native MongoDB queries
33
+
34
+ ### 4. **PostgreSQLAdapter**
35
+
36
+ - **Use case:** Raw SQL with custom schemas
37
+ - **Install:** `npm install pg`
38
+ - **Features:**
39
+ - Auto table/index creation
40
+ - Foreign key constraints
41
+ - Full SQL control
42
+
43
+ ## 🎯 Usage Pattern
44
+
45
+ All adapters follow the same simple pattern:
46
+
47
+ ```typescript
48
+ import { Agent, [Adapter]Adapter } from "@falai/agent";
49
+
50
+ const adapter = new [Adapter]Adapter({
51
+ client: yourClientInstance,
52
+ // ... adapter-specific options
53
+ });
54
+
55
+ const agent = new Agent({
56
+ persistence: {
57
+ adapter,
58
+ userId: "user_123",
59
+ autoSave: true,
60
+ },
61
+ });
62
+ ```
63
+
64
+ ## 🔌 Optional Dependencies
65
+
66
+ All database clients are **optional peer dependencies** - they won't be installed unless you explicitly add them:
67
+
68
+ ```json
69
+ {
70
+ "peerDependencies": {
71
+ "@prisma/client": "^6.0.0",
72
+ "ioredis": "^5.7.0",
73
+ "redis": "^4.6.0 || ^5.0.0",
74
+ "mongodb": "^6.0.0 || ^7.0.0",
75
+ "pg": "^8.11.0",
76
+ "mysql2": "^3.2.0"
77
+ },
78
+ "peerDependenciesMeta": {
79
+ "@prisma/client": { "optional": true },
80
+ "ioredis": { "optional": true },
81
+ "redis": { "optional": true },
82
+ "mongodb": { "optional": true },
83
+ "pg": { "optional": true },
84
+ "mysql2": { "optional": true }
85
+ }
86
+ }
87
+ ```
88
+
89
+ ## 🛠️ Creating Custom Adapters
90
+
91
+ Implement the `PersistenceAdapter` interface:
92
+
93
+ ```typescript
94
+ import type { PersistenceAdapter } from "@falai/agent";
95
+
96
+ export class MyCustomAdapter implements PersistenceAdapter {
97
+ sessionRepository: SessionRepository;
98
+ messageRepository: MessageRepository;
99
+
100
+ constructor(options: MyAdapterOptions) {
101
+ this.sessionRepository = new MySessionRepository(options);
102
+ this.messageRepository = new MyMessageRepository(options);
103
+ }
104
+
105
+ async initialize?(): Promise<void> {
106
+ // Optional: setup tables, indexes, etc.
107
+ }
108
+
109
+ async disconnect?(): Promise<void> {
110
+ // Optional: cleanup
111
+ }
112
+ }
113
+ ```
114
+
115
+ ## 📝 Type Safety
116
+
117
+ All adapters are fully typed with **zero `any` types** (except for Prisma's dynamic model access):
118
+
119
+ - Generic client interfaces
120
+ - Typed repository methods
121
+ - Full IDE autocomplete
122
+
123
+ ## 🚀 Coming Soon
124
+
125
+ - **MySQLAdapter**: Traditional relational database
126
+ - **ElasticsearchAdapter**: Full-text search integration
127
+ - **DynamoDBAdapter**: AWS serverless storage
@@ -672,6 +672,343 @@ const provider = new OpenRouterProvider({
672
672
 
673
673
  ---
674
674
 
675
+ ## Persistence Adapters
676
+
677
+ Optional persistence for auto-saving sessions and messages. All adapters implement the `PersistenceAdapter` interface.
678
+
679
+ ### `PersistenceManager`
680
+
681
+ Manages persistence operations for sessions and messages.
682
+
683
+ #### Constructor
684
+
685
+ ```typescript
686
+ new PersistenceManager(config: PersistenceConfig)
687
+
688
+ interface PersistenceConfig {
689
+ adapter: PersistenceAdapter;
690
+ autoSave?: boolean; // Default: true
691
+ userId?: string; // Optional: associate with user
692
+ }
693
+ ```
694
+
695
+ #### Methods
696
+
697
+ ##### `createSession(data: Partial<SessionData>): Promise<SessionData>`
698
+
699
+ Creates a new conversation session.
700
+
701
+ ```typescript
702
+ const session = await persistence.createSession({
703
+ userId: "user_123",
704
+ agentName: "Support Bot",
705
+ initialData: { channel: "web" },
706
+ });
707
+ ```
708
+
709
+ ##### `getSession(sessionId: string): Promise<SessionData | null>`
710
+
711
+ Retrieves a session by ID.
712
+
713
+ ##### `findActiveSession(userId: string): Promise<SessionData | null>`
714
+
715
+ Finds the active session for a user.
716
+
717
+ ##### `getUserSessions(userId: string, limit?: number): Promise<SessionData[]>`
718
+
719
+ Gets all sessions for a user.
720
+
721
+ ##### `updateSessionStatus(sessionId: string, status: SessionStatus): Promise<SessionData | null>`
722
+
723
+ Updates session status ("active" | "completed" | "abandoned").
724
+
725
+ ##### `saveMessage(data: Partial<MessageData>): Promise<MessageData>`
726
+
727
+ Saves a message to the database.
728
+
729
+ ```typescript
730
+ await persistence.saveMessage({
731
+ sessionId: session.id,
732
+ role: "user",
733
+ content: "Hello!",
734
+ });
735
+ ```
736
+
737
+ ##### `getSessionMessages(sessionId: string, limit?: number): Promise<MessageData[]>`
738
+
739
+ Gets all messages for a session.
740
+
741
+ ##### `loadSessionHistory(sessionId: string, limit?: number): Promise<Event[]>`
742
+
743
+ Loads session history in Event format for agent.respond().
744
+
745
+ ```typescript
746
+ const history = await persistence.loadSessionHistory(sessionId);
747
+ const response = await agent.respond({ history });
748
+ ```
749
+
750
+ ##### `completeSession(sessionId: string): Promise<SessionData | null>`
751
+
752
+ Marks a session as completed.
753
+
754
+ ##### `abandonSession(sessionId: string): Promise<SessionData | null>`
755
+
756
+ Marks a session as abandoned.
757
+
758
+ ---
759
+
760
+ ### `PrismaAdapter`
761
+
762
+ Type-safe ORM adapter with migrations support.
763
+
764
+ #### Constructor
765
+
766
+ ```typescript
767
+ new PrismaAdapter(options: PrismaAdapterOptions)
768
+
769
+ interface PrismaAdapterOptions {
770
+ prisma: PrismaClient;
771
+ autoMigrate?: boolean; // Default: false
772
+ tables?: {
773
+ sessions?: string; // Default: "AgentSession"
774
+ messages?: string; // Default: "AgentMessage"
775
+ };
776
+ fieldMappings?: FieldMappings; // Custom field names
777
+ }
778
+ ```
779
+
780
+ #### Example
781
+
782
+ ```typescript
783
+ import { PrismaAdapter } from "@falai/agent";
784
+ import { PrismaClient } from "@prisma/client";
785
+
786
+ const prisma = new PrismaClient();
787
+
788
+ const agent = new Agent({
789
+ persistence: {
790
+ adapter: new PrismaAdapter({
791
+ prisma,
792
+ autoMigrate: true, // Auto-run migrations
793
+ tables: {
794
+ sessions: "CustomSessions",
795
+ messages: "CustomMessages",
796
+ },
797
+ }),
798
+ userId: "user_123",
799
+ },
800
+ });
801
+ ```
802
+
803
+ **Schema Example:** See [examples/prisma-schema.example.prisma](../examples/prisma-schema.example.prisma)
804
+
805
+ **Full Example:** See [examples/prisma-persistence.ts](../examples/prisma-persistence.ts)
806
+
807
+ ---
808
+
809
+ ### `RedisAdapter`
810
+
811
+ Fast, in-memory persistence for high-throughput applications.
812
+
813
+ #### Constructor
814
+
815
+ ```typescript
816
+ new RedisAdapter(options: RedisAdapterOptions)
817
+
818
+ interface RedisAdapterOptions {
819
+ redis: RedisClient; // ioredis or redis client
820
+ keyPrefix?: string; // Default: "agent:"
821
+ sessionTTL?: number; // Default: 7 days (in seconds)
822
+ messageTTL?: number; // Default: 30 days (in seconds)
823
+ }
824
+ ```
825
+
826
+ #### Example
827
+
828
+ ```typescript
829
+ import { RedisAdapter } from "@falai/agent";
830
+ import Redis from "ioredis";
831
+
832
+ const redis = new Redis();
833
+
834
+ const agent = new Agent({
835
+ persistence: {
836
+ adapter: new RedisAdapter({
837
+ redis,
838
+ keyPrefix: "chat:",
839
+ sessionTTL: 24 * 60 * 60, // 24 hours
840
+ messageTTL: 7 * 24 * 60 * 60, // 7 days
841
+ }),
842
+ },
843
+ });
844
+ ```
845
+
846
+ **Install:** `npm install ioredis` or `npm install redis`
847
+
848
+ **Full Example:** See [examples/redis-persistence.ts](../examples/redis-persistence.ts)
849
+
850
+ ---
851
+
852
+ ### `MongoAdapter`
853
+
854
+ Document-based storage with flexible schema.
855
+
856
+ #### Constructor
857
+
858
+ ```typescript
859
+ new MongoAdapter(options: MongoAdapterOptions)
860
+
861
+ interface MongoAdapterOptions {
862
+ client: MongoClient;
863
+ databaseName: string;
864
+ collections?: {
865
+ sessions?: string; // Default: "agent_sessions"
866
+ messages?: string; // Default: "agent_messages"
867
+ };
868
+ }
869
+ ```
870
+
871
+ #### Example
872
+
873
+ ```typescript
874
+ import { MongoAdapter } from "@falai/agent";
875
+ import { MongoClient } from "mongodb";
876
+
877
+ const client = new MongoClient("mongodb://localhost:27017");
878
+ await client.connect();
879
+
880
+ const agent = new Agent({
881
+ persistence: {
882
+ adapter: new MongoAdapter({
883
+ client,
884
+ databaseName: "myapp",
885
+ collections: {
886
+ sessions: "chat_sessions",
887
+ messages: "chat_messages",
888
+ },
889
+ }),
890
+ },
891
+ });
892
+ ```
893
+
894
+ **Install:** `npm install mongodb`
895
+
896
+ ---
897
+
898
+ ### `PostgreSQLAdapter`
899
+
900
+ Raw SQL adapter with auto table/index creation.
901
+
902
+ #### Constructor
903
+
904
+ ```typescript
905
+ new PostgreSQLAdapter(options: PostgreSQLAdapterOptions)
906
+
907
+ interface PostgreSQLAdapterOptions {
908
+ client: PgClient; // pg client
909
+ tables?: {
910
+ sessions?: string; // Default: "agent_sessions"
911
+ messages?: string; // Default: "agent_messages"
912
+ };
913
+ }
914
+ ```
915
+
916
+ #### Methods
917
+
918
+ ##### `initialize(): Promise<void>`
919
+
920
+ Creates tables and indexes if they don't exist.
921
+
922
+ #### Example
923
+
924
+ ```typescript
925
+ import { PostgreSQLAdapter } from "@falai/agent";
926
+ import { Client } from "pg";
927
+
928
+ const client = new Client({
929
+ host: "localhost",
930
+ database: "myapp",
931
+ user: "postgres",
932
+ password: "password",
933
+ });
934
+ await client.connect();
935
+
936
+ const adapter = new PostgreSQLAdapter({ client });
937
+
938
+ // Auto-create tables
939
+ await adapter.initialize();
940
+
941
+ const agent = new Agent({
942
+ persistence: { adapter },
943
+ });
944
+ ```
945
+
946
+ **Install:** `npm install pg`
947
+
948
+ ---
949
+
950
+ ### Persistence Types
951
+
952
+ #### `SessionData`
953
+
954
+ ```typescript
955
+ interface SessionData {
956
+ id: string;
957
+ userId?: string;
958
+ agentName?: string;
959
+ status: SessionStatus; // "active" | "completed" | "abandoned"
960
+ currentRoute?: string;
961
+ currentState?: string;
962
+ collectedData?: Record<string, unknown>;
963
+ messageCount: number;
964
+ lastMessageAt?: Date;
965
+ completedAt?: Date;
966
+ createdAt: Date;
967
+ updatedAt: Date;
968
+ }
969
+ ```
970
+
971
+ #### `MessageData`
972
+
973
+ ```typescript
974
+ interface MessageData {
975
+ id: string;
976
+ sessionId: string;
977
+ userId?: string;
978
+ role: MessageRole; // "user" | "agent" | "system"
979
+ content: string;
980
+ route?: string;
981
+ state?: string;
982
+ toolCalls?: Array<{
983
+ toolName: string;
984
+ arguments: Record<string, unknown>;
985
+ result?: unknown;
986
+ }>;
987
+ event?: Event;
988
+ createdAt: Date;
989
+ }
990
+ ```
991
+
992
+ #### `PersistenceAdapter`
993
+
994
+ Interface for creating custom adapters:
995
+
996
+ ```typescript
997
+ interface PersistenceAdapter {
998
+ sessionRepository: SessionRepository;
999
+ messageRepository: MessageRepository;
1000
+ initialize?(): Promise<void>; // Optional: setup tables/indexes
1001
+ disconnect?(): Promise<void>; // Optional: cleanup
1002
+ }
1003
+ ```
1004
+
1005
+ **See Also:**
1006
+
1007
+ - [docs/PERSISTENCE.md](./PERSISTENCE.md) - Complete persistence guide
1008
+ - [docs/ADAPTERS.md](./ADAPTERS.md) - Adapter comparison and details
1009
+
1010
+ ---
1011
+
675
1012
  ### `PromptBuilder`
676
1013
 
677
1014
  Constructs prompts for AI generation.