@ixo/common 1.1.41 → 1.1.43
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/.turbo/turbo-build.log +1 -4
- package/dist/ai/semantic-router-factory/create-semantic-router.js.map +1 -1
- package/dist/ai/utils/load-file.d.ts.map +1 -1
- package/dist/ai/utils/load-file.js +42 -3
- package/dist/ai/utils/load-file.js.map +1 -1
- package/dist/services/env/env.service.js.map +1 -1
- package/dist/services/memory-engine/memory-engine.service.d.ts +5 -4
- package/dist/services/memory-engine/memory-engine.service.d.ts.map +1 -1
- package/dist/services/memory-engine/memory-engine.service.js +75 -98
- package/dist/services/memory-engine/memory-engine.service.js.map +1 -1
- package/dist/services/session-manager/dto.d.ts +0 -5
- package/dist/services/session-manager/dto.d.ts.map +1 -1
- package/dist/services/session-manager/dto.js +0 -30
- package/dist/services/session-manager/dto.js.map +1 -1
- package/dist/services/session-manager/session-manager.service.d.ts +1 -3
- package/dist/services/session-manager/session-manager.service.d.ts.map +1 -1
- package/dist/services/session-manager/session-manager.service.js +11 -26
- package/dist/services/session-manager/session-manager.service.js.map +1 -1
- package/package.json +21 -17
- package/src/ai/semantic-router-factory/create-semantic-router.ts +1 -1
- package/src/ai/utils/load-file.ts +52 -3
- package/src/services/env/env.service.ts +3 -3
- package/src/services/memory-engine/memory-engine.service.ts +146 -114
- package/src/services/session-manager/dto.ts +0 -20
- package/src/services/session-manager/session-manager.service.ts +25 -30
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -5,11 +5,9 @@ import { getChatOpenAiModel, getLLMProvider, getOpenRouterChatModel, getProvider
|
|
|
5
5
|
export class SessionManagerService {
|
|
6
6
|
syncService;
|
|
7
7
|
matrixManger;
|
|
8
|
-
|
|
9
|
-
constructor(syncService, matrixManger = MatrixManager.getInstance(), memoryEngineService) {
|
|
8
|
+
constructor(syncService, matrixManger = MatrixManager.getInstance()) {
|
|
10
9
|
this.syncService = syncService;
|
|
11
10
|
this.matrixManger = matrixManger;
|
|
12
|
-
this.memoryEngineService = memoryEngineService;
|
|
13
11
|
}
|
|
14
12
|
getSessionsStateKey({ oracleEntityDid, }) {
|
|
15
13
|
return `${oracleEntityDid}_sessions`;
|
|
@@ -255,27 +253,6 @@ ___________________________________________________________
|
|
|
255
253
|
roomId,
|
|
256
254
|
isOracleAdmin: true,
|
|
257
255
|
}));
|
|
258
|
-
let userContext;
|
|
259
|
-
if (this.memoryEngineService &&
|
|
260
|
-
(createSessionDto.ucanInvocation ||
|
|
261
|
-
(createSessionDto.oracleToken && createSessionDto.userToken))) {
|
|
262
|
-
try {
|
|
263
|
-
Logger.debug('Gathering user context from Memory Engine');
|
|
264
|
-
userContext = await this.memoryEngineService.gatherUserContext({
|
|
265
|
-
oracleDid: createSessionDto.oracleDid,
|
|
266
|
-
roomId,
|
|
267
|
-
oracleToken: createSessionDto.oracleToken ?? '',
|
|
268
|
-
userToken: createSessionDto.userToken ?? '',
|
|
269
|
-
oracleHomeServer: createSessionDto.oracleHomeServer ?? '',
|
|
270
|
-
userHomeServer: createSessionDto.userHomeServer ?? '',
|
|
271
|
-
ucanInvocation: createSessionDto.ucanInvocation,
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
catch (error) {
|
|
275
|
-
Logger.error('Failed to gather user context:', error);
|
|
276
|
-
throw error;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
256
|
const session = await this.syncSessionSet({
|
|
280
257
|
sessionId: eventId,
|
|
281
258
|
oracleName: createSessionDto.oracleName,
|
|
@@ -284,14 +261,22 @@ ___________________________________________________________
|
|
|
284
261
|
oracleDid: createSessionDto.oracleDid,
|
|
285
262
|
messages: [],
|
|
286
263
|
roomId,
|
|
287
|
-
userContext,
|
|
288
264
|
slackThreadTs: createSessionDto.slackThreadTs,
|
|
289
265
|
});
|
|
290
266
|
return session;
|
|
291
267
|
}
|
|
292
268
|
async deleteSession(deleteSessionDto) {
|
|
293
269
|
const db = await this.syncService.getUserDatabase(deleteSessionDto.did);
|
|
294
|
-
|
|
270
|
+
const { sessionId } = deleteSessionDto;
|
|
271
|
+
const checkpointerTables = db
|
|
272
|
+
.prepare(`SELECT name FROM sqlite_master WHERE type = 'table' AND name IN ('checkpoints', 'writes', 'messages')`)
|
|
273
|
+
.all();
|
|
274
|
+
db.transaction(() => {
|
|
275
|
+
db.prepare('DELETE FROM sessions WHERE session_id = ?').run(sessionId);
|
|
276
|
+
for (const { name } of checkpointerTables) {
|
|
277
|
+
db.prepare(`DELETE FROM ${name} WHERE thread_id = ?`).run(sessionId);
|
|
278
|
+
}
|
|
279
|
+
})();
|
|
295
280
|
}
|
|
296
281
|
}
|
|
297
282
|
//# sourceMappingURL=session-manager.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.service.js","sourceRoot":"","sources":["../../../src/services/session-manager/session-manager.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAE7E,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-manager.service.js","sourceRoot":"","sources":["../../../src/services/session-manager/session-manager.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAE7E,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAe3B,MAAM,OAAO,qBAAqB;IAEb;IACD;IAFlB,YACmB,WAAiC,EAClC,eAAe,aAAa,CAAC,WAAW,EAAE;QADzC,gBAAW,GAAX,WAAW,CAAsB;QAClC,iBAAY,GAAZ,YAAY,CAA8B;IACzD,CAAC;IAEG,mBAAmB,CAAC,EACzB,eAAe,GAGhB;QACC,OAAO,GAAG,eAAe,WAAW,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,EAC/B,QAAQ,GAGT;QACC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QAEnC,MAAM,GAAG,GACP,QAAQ,KAAK,YAAY;YACvB,CAAC,CAAC,sBAAsB,CAAC;gBACrB,KAAK,EAAE,kCAAkC;gBACzC,WAAW,EAAE,GAAG;gBAChB,OAAO,EAAE,MAAM;aAChB,CAAC;YACJ,CAAC,CAAC,kBAAkB,CAAC;gBACjB,KAAK,EAAE,uCAAuC;gBAC9C,WAAW,EAAE,GAAG;gBAChB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,MAAM;gBACf,aAAa,EAAE;oBACb,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB;aACF,CAAC,CAAC;QACT,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2CE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;;OAEtB,CACF,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,EACpC,SAAS,EACT,GAAG,EACH,kBAAkB,GAKnB;QACC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACvD,EAAE,CAAC,OAAO,CACR,mEAAmE,CACpE,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,EAC1B,SAAS,EACT,GAAG,EACH,QAAQ,EACR,eAAe,EACf,UAAU,EACV,MAAM,EACN,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,aAAa,GAYd;QACC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAEvD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAErE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,OAAO,GAAgB;gBAC3B,SAAS;gBACT,UAAU;gBACV,KAAK,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC;oBACnC,QAAQ;iBACT,CAAC;gBACF,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACvC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,eAAe;gBACf,SAAS;gBACT,WAAW;gBACX,MAAM;gBACN,aAAa;aACd,CAAC;YAGF,EAAE,CAAC,OAAO,CACR;;;;;;;OAOD,CACA,CAAC,GAAG,CACH,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,KAAK,IAAI,IAAI,EACrB,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,kBAAkB,IAAI,IAAI,EAClC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAChE,OAAO,CAAC,MAAM,IAAI,IAAI,EACtB,OAAO,CAAC,aAAa,IAAI,IAAI,CAC9B,CAAC;YAEF,OAAO,OAAO,CAAC;QACjB,CAAC;QAID,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;QAC/C,MAAM,gBAAgB,GACpB,CAAC,eAAe,CAAC,KAAK;YACtB,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,UAAU;YAClD,CAAC,eAAe,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjE,MAAM,gBAAgB,GAAG,iBAAiB,IAAI,gBAAgB,CAAC;QAC/D,MAAM,KAAK,GAAG,gBAAgB;YAC5B,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC;gBAC5B,QAAQ;aACT,CAAC;YACJ,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC;QAE1B,IAAI,gBAAgB,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC,YAAY;iBACd,WAAW,CAAC;gBACX,SAAS,EAAE,SAAS;gBACpB,MAAM;gBACN,OAAO,EAAE,KAAK;gBACd,aAAa,EAAE,IAAI;aACpB,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACP,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,cAAc,GAAgB;YAClC,GAAG,eAAe;YAClB,KAAK;YACL,aAAa;YACb,kBAAkB;YAClB,aAAa;SACd,CAAC;QAEF,EAAE,CAAC,OAAO,CACR;;;;KAID,CACA,CAAC,GAAG,CACH,cAAc,CAAC,KAAK,IAAI,IAAI,EAC5B,aAAa,EACb,cAAc,CAAC,kBAAkB,IAAI,IAAI,EACzC,cAAc,CAAC,aAAa,IAAI,IAAI,EACpC,SAAS,CACV,CAAC;QAEF,OAAO,cAAc,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,SAAiB,EACjB,GAAW,EACX,kBAA2B,IAAI;QAE/B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,EAAE;aACX,OAAO,CACN;;;;;8BAKsB,CACvB;aACA,GAAG,CAAC,SAAS,CAcH,CAAC;QAEd,MAAM,eAAe,GAAG,GAAG;YACzB,CAAC,CAAC;gBACE,SAAS,EAAE,GAAG,CAAC,UAAU;gBACzB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;gBAC7B,aAAa,EAAE,GAAG,CAAC,eAAe;gBAClC,SAAS,EAAE,GAAG,CAAC,UAAU;gBACzB,UAAU,EAAE,GAAG,CAAC,WAAW;gBAC3B,SAAS,EAAE,GAAG,CAAC,UAAU;gBACzB,eAAe,EAAE,GAAG,CAAC,iBAAiB;gBACtC,kBAAkB,EAAE,GAAG,CAAC,oBAAoB,IAAI,SAAS;gBACzD,WAAW,EAAE,GAAG,CAAC,YAAY;oBAC3B,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAqB;oBACnD,CAAC,CAAC,SAAS;gBACb,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;gBAChC,aAAa,EAAE,GAAG,CAAC,eAAe,IAAI,SAAS;aAChD;YACH,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,eAAoC;QAEpC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAGvE,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC;QAG3C,MAAM,aAAa,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC;QAC/C,MAAM,GAAG,GAAG,aAAa;YACvB,CAAC,CAAC;;;;;;;;0BAQkB;YACpB,CAAC,CAAC;;;;;;;0BAOkB,CAAC;QAEvB,MAAM,MAAM,GAAG,aAAa;YAC1B,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;YACzC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEpB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAaxC,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAkB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACjD,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;YAC7B,aAAa,EAAE,GAAG,CAAC,eAAe;YAClC,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,eAAe,EAAE,GAAG,CAAC,iBAAiB;YACtC,kBAAkB,EAAE,GAAG,CAAC,oBAAoB,IAAI,SAAS;YACzD,WAAW,EAAE,GAAG,CAAC,YAAY;gBAC3B,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAqB;gBACnD,CAAC,CAAC,SAAS;YACb,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;YAChC,aAAa,EAAE,GAAG,CAAC,eAAe,IAAI,SAAS;SAChD,CAAC,CAAC,CAAC;QAEJ,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,gBAAsC,EACtC,eAAwB;QAExB,MAAM,cAAc,GAClB,gBAAgB,CAAC,UAAU;YAC3B,CAAC,MAAM,gCAAgC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAIjE,IAAI,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC;gBACrE,OAAO,EAAE,gBAAgB,CAAC,GAAG;gBAC7B,eAAe,EAAE,gBAAgB,CAAC,eAAe;gBACjD,cAAc;aACf,CAAC,CAAC;YACH,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,OAAO,GACX,eAAe;YACf,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;gBACnC,OAAO,EAAE,0BAA0B;gBACnC,MAAM;gBACN,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC,CAAC;QAON,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;YACxC,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,gBAAgB,CAAC,UAAU;YACvC,GAAG,EAAE,gBAAgB,CAAC,GAAG;YACzB,eAAe,EAAE,gBAAgB,CAAC,eAAe;YACjD,SAAS,EAAE,gBAAgB,CAAC,SAAS;YACrC,QAAQ,EAAE,EAAE;YACZ,MAAM;YACN,aAAa,EAAE,gBAAgB,CAAC,aAAa;SAC9C,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,gBAAsC;QAEtC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACxE,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC;QAOvC,MAAM,kBAAkB,GAAG,EAAE;aAC1B,OAAO,CAGN,uGAAuG,CAAC;aACzG,GAAG,EAAE,CAAC;QAET,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvE,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,kBAAkB,EAAE,CAAC;gBAC1C,EAAE,CAAC,OAAO,CAAC,eAAe,IAAI,sBAAsB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ixo/common",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.43",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/ixoworld/qiforge.git"
|
|
11
|
+
},
|
|
8
12
|
"type": "module",
|
|
9
13
|
"main": "dist/index.js",
|
|
10
14
|
"types": "dist/index.d.ts",
|
|
@@ -24,7 +28,7 @@
|
|
|
24
28
|
}
|
|
25
29
|
},
|
|
26
30
|
"devDependencies": {
|
|
27
|
-
"@langchain/langgraph-checkpoint-validation": "
|
|
31
|
+
"@langchain/langgraph-checkpoint-validation": "1.0.9",
|
|
28
32
|
"@testcontainers/postgresql": "^10.16.0",
|
|
29
33
|
"@types/better-sqlite3": "^7.6.13",
|
|
30
34
|
"@types/node": "^22.7.3",
|
|
@@ -32,22 +36,22 @@
|
|
|
32
36
|
"better-sqlite3": "^12.9.0",
|
|
33
37
|
"testcontainers": "^10.16.0",
|
|
34
38
|
"typescript": "^5.3.3",
|
|
39
|
+
"@ixo/oracles-events": "^1.0.5",
|
|
35
40
|
"@ixo/eslint-config": "2.0.0",
|
|
36
|
-
"@ixo/
|
|
37
|
-
"@ixo/typescript-config": "1.0.0"
|
|
38
|
-
"@ixo/vitest-config": "1.0.0"
|
|
41
|
+
"@ixo/vitest-config": "1.0.0",
|
|
42
|
+
"@ixo/typescript-config": "1.0.0"
|
|
39
43
|
},
|
|
40
44
|
"dependencies": {
|
|
41
45
|
"@cosmjs/proto-signing": "^0.33.0",
|
|
42
46
|
"@cosmjs/stargate": "^0.33.0",
|
|
43
47
|
"@ixo/impactxclient-sdk": "^2.3.1",
|
|
44
|
-
"@langchain/community": "
|
|
45
|
-
"@langchain/core": "
|
|
46
|
-
"@langchain/langgraph": "
|
|
47
|
-
"@langchain/langgraph-checkpoint": "
|
|
48
|
-
"@langchain/langgraph-checkpoint-sqlite": "
|
|
49
|
-
"@langchain/openai": "
|
|
50
|
-
"@langchain/textsplitters": "
|
|
48
|
+
"@langchain/community": "1.1.28",
|
|
49
|
+
"@langchain/core": "1.1.48",
|
|
50
|
+
"@langchain/langgraph": "1.3.2",
|
|
51
|
+
"@langchain/langgraph-checkpoint": "1.0.2",
|
|
52
|
+
"@langchain/langgraph-checkpoint-sqlite": "1.0.1",
|
|
53
|
+
"@langchain/openai": "1.4.7",
|
|
54
|
+
"@langchain/textsplitters": "1.0.1",
|
|
51
55
|
"@tavily/core": "0.7.2",
|
|
52
56
|
"axios": "^1.7.9",
|
|
53
57
|
"axios-retry": "^4.5.0",
|
|
@@ -56,18 +60,18 @@
|
|
|
56
60
|
"dotenv": "^16.4.5",
|
|
57
61
|
"duck-duck-scrape": "^2.2.5",
|
|
58
62
|
"html-to-text": "9.0.5",
|
|
59
|
-
"langchain": "
|
|
63
|
+
"langchain": "1.4.2",
|
|
60
64
|
"langsmith": "^0.5.25",
|
|
61
65
|
"mammoth": "1.12.0",
|
|
66
|
+
"node-emoji": "^2.2.0",
|
|
62
67
|
"openai": "^6.34.0",
|
|
63
|
-
"
|
|
68
|
+
"pdfjs-dist": "^5.4.296",
|
|
64
69
|
"playwright": "^1.59.1",
|
|
65
|
-
"node-emoji": "^2.2.0",
|
|
66
70
|
"store": "^2.0.12",
|
|
67
71
|
"zod": "^4.3.6",
|
|
68
72
|
"@ixo/logger": "0.0.2",
|
|
69
|
-
"@ixo/matrix": "1.2.
|
|
70
|
-
"@ixo/oracles-chain-client": "1.
|
|
73
|
+
"@ixo/matrix": "1.2.33",
|
|
74
|
+
"@ixo/oracles-chain-client": "1.3.2"
|
|
71
75
|
},
|
|
72
76
|
"scripts": {
|
|
73
77
|
"build": "tsc && tsc-alias",
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { Logger } from '@ixo/logger';
|
|
2
2
|
import { DocxLoader } from '@langchain/community/document_loaders/fs/docx';
|
|
3
|
-
import { PDFLoader } from '@langchain/community/document_loaders/fs/pdf';
|
|
4
3
|
import { HtmlToTextTransformer } from '@langchain/community/document_transformers/html_to_text';
|
|
5
4
|
import { Document } from '@langchain/core/documents';
|
|
6
5
|
import { RecursiveCharacterTextSplitter } from '@langchain/textsplitters';
|
|
7
6
|
import fs from 'node:fs/promises';
|
|
7
|
+
// `@langchain/community`'s `PDFLoader` / `WebPDFLoader` both import
|
|
8
|
+
// `pdf-parse/lib/pdf.js/v1.10.100/build/pdf.js` — a subpath that pdf-parse 2.x
|
|
9
|
+
// no longer exposes in its `exports` field, throwing `ERR_PACKAGE_PATH_NOT_EXPORTED`
|
|
10
|
+
// at runtime. We use pdfjs-dist (the same engine LangChain wraps) directly
|
|
11
|
+
// and keep one Document per page so callers can preserve page boundaries.
|
|
12
|
+
import { getDocument } from 'pdfjs-dist/legacy/build/pdf.mjs';
|
|
8
13
|
|
|
9
14
|
type SupportedFileType = 'pdf' | 'markdown' | 'html' | 'text' | 'doc';
|
|
10
15
|
const splitter = new RecursiveCharacterTextSplitter({
|
|
@@ -130,8 +135,7 @@ const processFile = async (
|
|
|
130
135
|
): Promise<Document[]> => {
|
|
131
136
|
switch (fileType) {
|
|
132
137
|
case 'pdf': {
|
|
133
|
-
|
|
134
|
-
return pdfLoader.load();
|
|
138
|
+
return loadPdf(blob);
|
|
135
139
|
}
|
|
136
140
|
|
|
137
141
|
case 'markdown': {
|
|
@@ -169,6 +173,51 @@ const loadMarkdown = async (blob: Blob): Promise<Document[]> => {
|
|
|
169
173
|
return splitter.createDocuments([markdown]);
|
|
170
174
|
};
|
|
171
175
|
|
|
176
|
+
const loadPdf = async (blob: Blob): Promise<Document[]> => {
|
|
177
|
+
const data = new Uint8Array(await blob.arrayBuffer());
|
|
178
|
+
// Mirror the parser options LangChain's WebPDFLoader used — disable worker
|
|
179
|
+
// fetch / eval so this runs cleanly in a Node server context.
|
|
180
|
+
const pdf = await getDocument({
|
|
181
|
+
data,
|
|
182
|
+
useWorkerFetch: false,
|
|
183
|
+
useSystemFonts: true,
|
|
184
|
+
}).promise;
|
|
185
|
+
const meta = await pdf.getMetadata().catch(() => null);
|
|
186
|
+
const documents: Document[] = [];
|
|
187
|
+
for (let i = 1; i <= pdf.numPages; i++) {
|
|
188
|
+
const page = await pdf.getPage(i);
|
|
189
|
+
const content = await page.getTextContent();
|
|
190
|
+
if (content.items.length === 0) continue;
|
|
191
|
+
let lastY: number | undefined;
|
|
192
|
+
const parts: string[] = [];
|
|
193
|
+
for (const item of content.items) {
|
|
194
|
+
if (!('str' in item)) continue;
|
|
195
|
+
// Insert a newline when the y-coordinate changes — preserves visual
|
|
196
|
+
// line breaks instead of running text together.
|
|
197
|
+
if (lastY !== undefined && lastY !== item.transform[5]) {
|
|
198
|
+
parts.push('\n');
|
|
199
|
+
}
|
|
200
|
+
parts.push(item.str);
|
|
201
|
+
lastY = item.transform[5];
|
|
202
|
+
}
|
|
203
|
+
documents.push(
|
|
204
|
+
new Document({
|
|
205
|
+
pageContent: parts.join(''),
|
|
206
|
+
metadata: {
|
|
207
|
+
pdf: {
|
|
208
|
+
version: (pdf as unknown as { _pdfInfo?: { fingerprint?: string } })
|
|
209
|
+
._pdfInfo?.fingerprint,
|
|
210
|
+
info: meta?.info,
|
|
211
|
+
totalPages: pdf.numPages,
|
|
212
|
+
},
|
|
213
|
+
loc: { pageNumber: i },
|
|
214
|
+
},
|
|
215
|
+
}),
|
|
216
|
+
);
|
|
217
|
+
}
|
|
218
|
+
return documents;
|
|
219
|
+
};
|
|
220
|
+
|
|
172
221
|
const blobToString = async (blob: Blob): Promise<string> => {
|
|
173
222
|
const buffer = await blob.arrayBuffer(); // Convert Blob to ArrayBuffer
|
|
174
223
|
return Buffer.from(buffer).toString('utf-8'); // Convert ArrayBuffer to string
|
|
@@ -11,7 +11,7 @@ export class EnvService<T extends z.ZodType> {
|
|
|
11
11
|
private constructor(schema: T, onError?: (error: z.ZodError) => void) {
|
|
12
12
|
try {
|
|
13
13
|
// Parse and validate environment variables
|
|
14
|
-
this.validatedEnv = schema.parse(process.env)
|
|
14
|
+
this.validatedEnv = schema.parse(process.env);
|
|
15
15
|
} catch (error) {
|
|
16
16
|
if (error instanceof z.ZodError) {
|
|
17
17
|
if (onError) {
|
|
@@ -33,7 +33,7 @@ export class EnvService<T extends z.ZodType> {
|
|
|
33
33
|
if (EnvService.instance === null) {
|
|
34
34
|
EnvService.instance = new EnvService(schema);
|
|
35
35
|
}
|
|
36
|
-
return EnvService.instance
|
|
36
|
+
return EnvService.instance;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
/**
|
|
@@ -44,7 +44,7 @@ export class EnvService<T extends z.ZodType> {
|
|
|
44
44
|
if (EnvService.instance === null) {
|
|
45
45
|
throw new Error('EnvService must be initialized with a schema first');
|
|
46
46
|
}
|
|
47
|
-
return EnvService.instance
|
|
47
|
+
return EnvService.instance;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
/**
|