@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.
- package/README.md +8 -6
- package/dist/adapters/MemoryAdapter.d.ts +47 -0
- package/dist/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/adapters/MemoryAdapter.js +178 -0
- package/dist/adapters/MemoryAdapter.js.map +1 -0
- package/dist/adapters/SQLiteAdapter.d.ts +69 -0
- package/dist/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/adapters/SQLiteAdapter.js +307 -0
- package/dist/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts +3 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +2 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/cjs/adapters/MemoryAdapter.d.ts +47 -0
- package/dist/cjs/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/cjs/adapters/MemoryAdapter.js +182 -0
- package/dist/cjs/adapters/MemoryAdapter.js.map +1 -0
- package/dist/cjs/adapters/SQLiteAdapter.d.ts +69 -0
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/cjs/adapters/SQLiteAdapter.js +311 -0
- package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/cjs/adapters/index.d.ts +3 -0
- package/dist/cjs/adapters/index.d.ts.map +1 -1
- package/dist/cjs/adapters/index.js +5 -1
- package/dist/cjs/adapters/index.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +5 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/docs/ADAPTERS.md +27 -3
- package/docs/API_REFERENCE.md +111 -0
- package/docs/PERSISTENCE.md +76 -0
- package/package.json +6 -2
- package/src/adapters/MemoryAdapter.ts +245 -0
- package/src/adapters/SQLiteAdapter.ts +449 -0
- package/src/adapters/index.ts +9 -0
- 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"}
|
package/dist/cjs/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";
|
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;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;
|
|
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; } });
|
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;AAMtB,wDAAuD;AAA9C,4GAAA,YAAY,OAAA;AAErB,wDAAuD;AAA9C,4GAAA,YAAY,OAAA;AAOrB,kEAAiE;AAAxD,sHAAA,iBAAiB,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";
|
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;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;
|
|
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;
|
|
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!
|
package/docs/API_REFERENCE.md
CHANGED
|
@@ -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`
|
package/docs/PERSISTENCE.md
CHANGED
|
@@ -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.
|
|
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
|
+
}
|