@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.
- package/README.md +72 -0
- package/dist/adapters/MongoAdapter.d.ts +97 -0
- package/dist/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/adapters/MongoAdapter.js +163 -0
- package/dist/adapters/MongoAdapter.js.map +1 -0
- package/dist/adapters/PostgreSQLAdapter.d.ts +71 -0
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/adapters/PostgreSQLAdapter.js +256 -0
- package/dist/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/adapters/RedisAdapter.d.ts +71 -0
- package/dist/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/adapters/RedisAdapter.js +226 -0
- package/dist/adapters/RedisAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts +6 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +3 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/cjs/adapters/MongoAdapter.d.ts +97 -0
- package/dist/cjs/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/cjs/adapters/MongoAdapter.js +167 -0
- package/dist/cjs/adapters/MongoAdapter.js.map +1 -0
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +71 -0
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/cjs/adapters/PostgreSQLAdapter.js +260 -0
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/cjs/adapters/RedisAdapter.d.ts +71 -0
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/cjs/adapters/RedisAdapter.js +230 -0
- package/dist/cjs/adapters/RedisAdapter.js.map +1 -0
- package/dist/cjs/adapters/index.d.ts +6 -0
- package/dist/cjs/adapters/index.d.ts.map +1 -1
- package/dist/cjs/adapters/index.js +7 -1
- package/dist/cjs/adapters/index.js.map +1 -1
- package/dist/cjs/index.d.ts +6 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +7 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/docs/ADAPTERS.md +127 -0
- package/docs/API_REFERENCE.md +337 -0
- package/docs/PERSISTENCE.md +100 -6
- package/examples/redis-persistence.ts +89 -0
- package/package.json +22 -2
- package/src/adapters/MongoAdapter.ts +295 -0
- package/src/adapters/PostgreSQLAdapter.ts +417 -0
- package/src/adapters/RedisAdapter.ts +365 -0
- package/src/adapters/index.ts +18 -0
- 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"}
|
package/dist/cjs/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";
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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; } });
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -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;
|
|
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
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;
|
|
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"}
|
package/docs/ADAPTERS.md
ADDED
|
@@ -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
|
package/docs/API_REFERENCE.md
CHANGED
|
@@ -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.
|