@luanpoppe/ai 1.1.1 → 1.1.2
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/dist/@types/agent.d.ts +3 -0
- package/dist/@types/agent.d.ts.map +1 -0
- package/dist/@types/agent.js +3 -0
- package/dist/@types/agent.js.map +1 -0
- package/dist/@types/ai-call.d.ts +2 -0
- package/dist/@types/ai-call.d.ts.map +1 -1
- package/dist/@types/checkpointers.d.ts +106 -0
- package/dist/@types/checkpointers.d.ts.map +1 -0
- package/dist/@types/checkpointers.js +3 -0
- package/dist/@types/checkpointers.js.map +1 -0
- package/dist/ai.d.ts +17 -5
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +51 -17
- package/dist/ai.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/langchain/checkpointers.d.ts +74 -73
- package/dist/langchain/checkpointers.d.ts.map +1 -1
- package/dist/langchain/checkpointers.js +215 -62
- package/dist/langchain/checkpointers.js.map +1 -1
- package/package.json +1 -1
- package/src/@types/agent.ts +3 -0
- package/src/@types/ai-call.ts +2 -0
- package/src/@types/checkpointers.ts +117 -0
- package/src/ai.ts +89 -32
- package/src/index.ts +6 -1
- package/src/langchain/checkpointers.ts +302 -150
- package/tests/e2e/ai-retry-fallback.test.ts +213 -0
- package/tests/e2e/ai.test.ts +91 -40
- package/tests/unit/index.test.ts +240 -19
- package/tests/unit/langchain/checkpointers.test.ts +131 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/@types/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/@types/agent.ts"],"names":[],"mappings":""}
|
package/dist/@types/ai-call.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export type AICallParams = {
|
|
|
11
11
|
};
|
|
12
12
|
modelConfig?: Omit<LLMModelConfig, "apiKey" | "model">;
|
|
13
13
|
aiModel: AIModelNames;
|
|
14
|
+
/** Lista de modelos de fallback quando o principal falhar após todos os retries (suporta OpenRouter, Gemini, GPT) */
|
|
15
|
+
aiModelsFallback?: AIModelNames[];
|
|
14
16
|
messages: MessageInput[];
|
|
15
17
|
systemPrompt?: string;
|
|
16
18
|
maxRetries?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-call.d.ts","sourceRoot":"","sources":["../../src/@types/ai-call.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;QAC/B,KAAK,CAAC,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC;KACrC,CAAC;IAEF,WAAW,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC;IAEvD,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+GAA+G;IAC/G,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,4BAA4B,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,IAC5D,YAAY,GAAG;IACb,YAAY,EAAE,CAAC,CAAC;CACjB,CAAC;AAEJ,MAAM,MAAM,4BAA4B,CAAC,CAAC,IAAI,OAAO,CAAC;IACpD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACtB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ai-call.d.ts","sourceRoot":"","sources":["../../src/@types/ai-call.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;QAC/B,KAAK,CAAC,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC;KACrC,CAAC;IAEF,WAAW,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC;IAEvD,OAAO,EAAE,YAAY,CAAC;IACtB,qHAAqH;IACrH,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;IAClC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+GAA+G;IAC/G,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,4BAA4B,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,IAC5D,YAAY,GAAG;IACb,YAAY,EAAE,CAAC,CAAC;CACjB,CAAC;AAEJ,MAAM,MAAM,4BAA4B,CAAC,CAAC,IAAI,OAAO,CAAC;IACpD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACtB,CAAC,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { StateSnapshot } from "@langchain/langgraph";
|
|
2
|
+
/**
|
|
3
|
+
* Interface mínima para um grafo compilado com checkpointer.
|
|
4
|
+
* Usado para acessar o histórico de conversas via getStateHistory.
|
|
5
|
+
*
|
|
6
|
+
* @see https://docs.langchain.com/oss/javascript/langgraph/persistence#get-state-history
|
|
7
|
+
* @see https://docs.langchain.com/oss/javascript/langgraph/add-memory#manage-checkpoints
|
|
8
|
+
*/
|
|
9
|
+
export interface GraphWithStateHistory {
|
|
10
|
+
/**
|
|
11
|
+
* Retorna o histórico completo de checkpoints de uma thread.
|
|
12
|
+
* Ordenado cronologicamente (mais recente primeiro).
|
|
13
|
+
*/
|
|
14
|
+
getStateHistory(config: {
|
|
15
|
+
configurable: {
|
|
16
|
+
thread_id: string;
|
|
17
|
+
checkpoint_id?: string;
|
|
18
|
+
};
|
|
19
|
+
}): AsyncIterable<StateSnapshot>;
|
|
20
|
+
/**
|
|
21
|
+
* Retorna o estado atual (último checkpoint) da thread.
|
|
22
|
+
*/
|
|
23
|
+
getState?(config: {
|
|
24
|
+
configurable: {
|
|
25
|
+
thread_id: string;
|
|
26
|
+
checkpoint_id?: string;
|
|
27
|
+
};
|
|
28
|
+
}): Promise<StateSnapshot>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Configuração para checkpointer em memória (desenvolvimento/testes).
|
|
32
|
+
*/
|
|
33
|
+
export type MemoryCheckpointerConfig = {
|
|
34
|
+
type: "memory";
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Configuração para checkpointer SQLite.
|
|
38
|
+
* Use ":memory:" para testes ou path para arquivo persistente.
|
|
39
|
+
*/
|
|
40
|
+
export type SqliteCheckpointerConfig = {
|
|
41
|
+
type: "sqlite";
|
|
42
|
+
connectionString: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Configuração para checkpointer Postgres.
|
|
46
|
+
*/
|
|
47
|
+
export type PostgresCheckpointerConfig = {
|
|
48
|
+
type: "postgres";
|
|
49
|
+
connectionString: string;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Configuração para checkpointer Redis.
|
|
53
|
+
* Requer Redis 8+ ou Redis Stack (RedisJSON, RediSearch).
|
|
54
|
+
*/
|
|
55
|
+
export type RedisCheckpointerConfig = {
|
|
56
|
+
type: "redis";
|
|
57
|
+
url: string;
|
|
58
|
+
options?: {
|
|
59
|
+
defaultTTL?: number;
|
|
60
|
+
refreshOnRead?: boolean;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Configuração para checkpointer MongoDB com cliente existente.
|
|
65
|
+
*/
|
|
66
|
+
export type MongoDBCheckpointerConfigWithClient = {
|
|
67
|
+
type: "mongodb";
|
|
68
|
+
client: {
|
|
69
|
+
close?: () => Promise<void>;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Configuração para checkpointer MongoDB com URL.
|
|
74
|
+
*/
|
|
75
|
+
export type MongoDBCheckpointerConfigWithUrl = {
|
|
76
|
+
type: "mongodb";
|
|
77
|
+
url: string;
|
|
78
|
+
};
|
|
79
|
+
export type MongoDBCheckpointerConfig = MongoDBCheckpointerConfigWithClient | MongoDBCheckpointerConfigWithUrl;
|
|
80
|
+
/**
|
|
81
|
+
* Configuração para persistência de histórico de conversas.
|
|
82
|
+
* Permite escolher o backend de armazenamento.
|
|
83
|
+
*/
|
|
84
|
+
export type MemoryConfig = MemoryCheckpointerConfig | SqliteCheckpointerConfig | PostgresCheckpointerConfig | RedisCheckpointerConfig | MongoDBCheckpointerConfig;
|
|
85
|
+
/**
|
|
86
|
+
* Tipo de mensagem no histórico (Human, AI ou Tool).
|
|
87
|
+
*/
|
|
88
|
+
export type MessageRole = "human" | "ai" | "tool";
|
|
89
|
+
/**
|
|
90
|
+
* Item de mensagem extraído do histórico, com role, horário e conteúdo.
|
|
91
|
+
*/
|
|
92
|
+
export type HistoryMessageItem = {
|
|
93
|
+
role: MessageRole;
|
|
94
|
+
createdAt: string;
|
|
95
|
+
content: string;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Retorno do método getHistory com histórico completo e lista de mensagens.
|
|
99
|
+
*/
|
|
100
|
+
export type GetHistoryResult = {
|
|
101
|
+
/** Histórico completo de checkpoints (mais recente primeiro). */
|
|
102
|
+
fullHistory: StateSnapshot[];
|
|
103
|
+
/** Lista de mensagens em ordem cronológica, com role, horário e conteúdo. */
|
|
104
|
+
messages: HistoryMessageItem[];
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=checkpointers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpointers.d.ts","sourceRoot":"","sources":["../../src/@types/checkpointers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE;QACtB,YAAY,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,aAAa,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7D,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,CAAC,MAAM,EAAE;QAChB,YAAY,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,aAAa,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7D,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,UAAU,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAChD,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC7C,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,yBAAyB,GACjC,mCAAmC,GACnC,gCAAgC,CAAC;AAErC;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB,wBAAwB,GACxB,wBAAwB,GACxB,0BAA0B,GAC1B,uBAAuB,GACvB,yBAAyB,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iEAAiE;IACjE,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,6EAA6E;IAC7E,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpointers.js","sourceRoot":"","sources":["../../src/@types/checkpointers.ts"],"names":[],"mappings":""}
|
package/dist/ai.d.ts
CHANGED
|
@@ -1,24 +1,36 @@
|
|
|
1
1
|
import z from "zod";
|
|
2
|
-
import {
|
|
3
|
-
import { type BaseCheckpointSaver, type MemoryConfig } from "./langchain/checkpointers";
|
|
2
|
+
import type { AIAgent } from "./@types/agent";
|
|
3
|
+
import { AIMemory, type BaseCheckpointSaver, type MemoryConfig } from "./langchain/checkpointers";
|
|
4
|
+
import type { AIModelNames } from "./@types/model-names";
|
|
4
5
|
import type { AICallParams, AICallReturn, AICallStructuredOutputParams, AICallStructuredOutputReturn } from "./@types/ai-call";
|
|
5
6
|
export type { AICallParams, AICallReturn, AICallStructuredOutputParams, AICallStructuredOutputReturn, } from "./@types/ai-call";
|
|
6
7
|
type AIConstructor = {
|
|
7
8
|
googleGeminiToken?: string;
|
|
8
9
|
openAIApiKey?: string;
|
|
9
10
|
openRouterApiKey?: string;
|
|
10
|
-
/**
|
|
11
|
-
|
|
11
|
+
/** Lista padrão de modelos de fallback (usada em call/callStructuredOutput quando não passada no método) */
|
|
12
|
+
aiModelsFallback?: AIModelNames[];
|
|
13
|
+
/** Configuração de persistência de histórico (memory, sqlite, postgres, redis, mongodb) ou instância AIMemory */
|
|
14
|
+
memory?: MemoryConfig | AIMemory;
|
|
12
15
|
/** Instância de checkpointer para usuários avançados (alternativa a memory) */
|
|
13
16
|
checkpointer?: BaseCheckpointSaver;
|
|
14
17
|
};
|
|
15
18
|
export declare class AI {
|
|
16
19
|
private config;
|
|
20
|
+
private _memory;
|
|
21
|
+
/**
|
|
22
|
+
* Instância de AIMemory. Lança exceção se memory não estiver configurado.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* const { fullHistory, messages } = await ai.memory.getHistory(threadId);
|
|
26
|
+
*/
|
|
27
|
+
get memory(): AIMemory;
|
|
17
28
|
private checkpointer;
|
|
18
29
|
private checkpointerPromise;
|
|
19
30
|
constructor(config: AIConstructor);
|
|
20
31
|
private getCheckpointer;
|
|
21
32
|
private ensureThreadIdWhenCheckpointer;
|
|
33
|
+
private invokeWithRetryAndFallback;
|
|
22
34
|
call(params: AICallParams): AICallReturn;
|
|
23
35
|
callStructuredOutput<T extends z.ZodSchema>(params: AICallStructuredOutputParams<T>): AICallStructuredOutputReturn<typeof params.outputSchema>;
|
|
24
36
|
/**
|
|
@@ -28,7 +40,7 @@ export declare class AI {
|
|
|
28
40
|
*/
|
|
29
41
|
private normalizeSchemaForOpenAI;
|
|
30
42
|
getRawAgent(params: AICallParams, outputSchema?: z.ZodSchema | undefined): Promise<{
|
|
31
|
-
agent:
|
|
43
|
+
agent: AIAgent;
|
|
32
44
|
}>;
|
|
33
45
|
private getModel;
|
|
34
46
|
private standardAgent;
|
package/dist/ai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EACL,QAAQ,EACR,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAE1B,KAAK,aAAa,GAAG;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4GAA4G;IAC5G,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;IAClC,iHAAiH;IACjH,MAAM,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC;IACjC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC,CAAC;AAEF,qBAAa,EAAE;IAqBD,OAAO,CAAC,MAAM;IApB1B,OAAO,CAAC,OAAO,CAAuB;IAEtC;;;;;OAKG;IACH,IAAI,MAAM,IAAI,QAAQ,CAOrB;IAED,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,mBAAmB,CAA2C;gBAElD,MAAM,EAAE,aAAa;YAY3B,eAAe;IAY7B,OAAO,CAAC,8BAA8B;YAWxB,0BAA0B;IAyBlC,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY;IAiCxC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAC9C,MAAM,EAAE,4BAA4B,CAAC,CAAC,CAAC,GACtC,4BAA4B,CAAC,OAAO,MAAM,CAAC,YAAY,CAAC;IA+B3D;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAoC1B,WAAW,CACf,MAAM,EAAE,YAAY,EACpB,YAAY,CAAC,EAAE,CAAC,CAAC,SAAS,GAAG,SAAS,GACrC,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAc9B,OAAO,CAAC,QAAQ;IAiChB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,mBAAmB;CAU5B"}
|
package/dist/ai.js
CHANGED
|
@@ -10,6 +10,19 @@ const langchain_1 = require("langchain");
|
|
|
10
10
|
const checkpointers_1 = require("./langchain/checkpointers");
|
|
11
11
|
class AI {
|
|
12
12
|
config;
|
|
13
|
+
_memory;
|
|
14
|
+
/**
|
|
15
|
+
* Instância de AIMemory. Lança exceção se memory não estiver configurado.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* const { fullHistory, messages } = await ai.memory.getHistory(threadId);
|
|
19
|
+
*/
|
|
20
|
+
get memory() {
|
|
21
|
+
if (!this._memory) {
|
|
22
|
+
throw new Error("memory não está configurado. Passe memory no construtor do AI (ex: memory: { type: 'memory' }).");
|
|
23
|
+
}
|
|
24
|
+
return this._memory;
|
|
25
|
+
}
|
|
13
26
|
checkpointer;
|
|
14
27
|
checkpointerPromise;
|
|
15
28
|
constructor(config) {
|
|
@@ -17,13 +30,19 @@ class AI {
|
|
|
17
30
|
if (config.checkpointer) {
|
|
18
31
|
this.checkpointer = config.checkpointer;
|
|
19
32
|
}
|
|
33
|
+
if (config.memory) {
|
|
34
|
+
this._memory =
|
|
35
|
+
config.memory instanceof checkpointers_1.AIMemory
|
|
36
|
+
? config.memory
|
|
37
|
+
: new checkpointers_1.AIMemory(config.memory);
|
|
38
|
+
}
|
|
20
39
|
}
|
|
21
40
|
async getCheckpointer() {
|
|
22
41
|
if (this.checkpointer)
|
|
23
42
|
return this.checkpointer;
|
|
24
|
-
if (this.
|
|
43
|
+
if (this._memory) {
|
|
25
44
|
if (!this.checkpointerPromise) {
|
|
26
|
-
this.checkpointerPromise =
|
|
45
|
+
this.checkpointerPromise = this._memory.getCheckpointer();
|
|
27
46
|
}
|
|
28
47
|
this.checkpointer = await this.checkpointerPromise;
|
|
29
48
|
return this.checkpointer;
|
|
@@ -31,24 +50,41 @@ class AI {
|
|
|
31
50
|
return undefined;
|
|
32
51
|
}
|
|
33
52
|
ensureThreadIdWhenCheckpointer(params) {
|
|
34
|
-
if (this.config.checkpointer || this.config.memory) {
|
|
53
|
+
if (this.config.checkpointer || this.config.memory !== undefined) {
|
|
35
54
|
if (!params.threadId) {
|
|
36
55
|
throw new Error("threadId é obrigatório quando memory ou checkpointer está configurado. " +
|
|
37
56
|
"Passe threadId em AICallParams para identificar a conversa.");
|
|
38
57
|
}
|
|
39
58
|
}
|
|
40
59
|
}
|
|
60
|
+
async invokeWithRetryAndFallback(params, createAgentForModel, execute) {
|
|
61
|
+
const fallback = params.aiModelsFallback ?? this.config.aiModelsFallback ?? [];
|
|
62
|
+
const models = [params.aiModel, ...fallback];
|
|
63
|
+
let lastError;
|
|
64
|
+
for (const aiModel of models) {
|
|
65
|
+
const paramsForModel = { ...params, aiModel };
|
|
66
|
+
const agent = createAgentForModel(paramsForModel);
|
|
67
|
+
try {
|
|
68
|
+
const result = await execute(agent);
|
|
69
|
+
return { result, agent };
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
lastError = error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
throw lastError;
|
|
76
|
+
}
|
|
41
77
|
async call(params) {
|
|
42
78
|
const { messages } = params;
|
|
43
79
|
this.ensureThreadIdWhenCheckpointer(params);
|
|
44
80
|
const checkpointer = await this.getCheckpointer();
|
|
45
|
-
const agent = (0, langchain_1.createAgent)({
|
|
46
|
-
...this.standardAgent(params, checkpointer),
|
|
47
|
-
});
|
|
48
81
|
const invokeConfig = params.threadId && checkpointer
|
|
49
82
|
? { configurable: { thread_id: params.threadId } }
|
|
50
83
|
: undefined;
|
|
51
|
-
const response = await
|
|
84
|
+
const { result: response, agent } = await this.invokeWithRetryAndFallback(params, (paramsForModel) => (0, langchain_1.createAgent)({
|
|
85
|
+
...this.standardAgent(paramsForModel, checkpointer),
|
|
86
|
+
}), (agent) => agent.invoke({ messages }, invokeConfig));
|
|
87
|
+
this._memory?.setAgent(agent);
|
|
52
88
|
const rawContent = response.messages.at(-1)?.content;
|
|
53
89
|
const text = typeof rawContent === "string" && rawContent.trim()
|
|
54
90
|
? rawContent
|
|
@@ -59,20 +95,17 @@ class AI {
|
|
|
59
95
|
};
|
|
60
96
|
}
|
|
61
97
|
async callStructuredOutput(params) {
|
|
62
|
-
const { outputSchema, messages
|
|
98
|
+
const { outputSchema, messages } = params;
|
|
63
99
|
this.ensureThreadIdWhenCheckpointer(params);
|
|
64
100
|
const checkpointer = await this.getCheckpointer();
|
|
65
|
-
// Normaliza o schema para compatibilidade com OpenAI/OpenRouter
|
|
66
|
-
// OpenAI exige que todos os campos em properties estejam no array required
|
|
67
|
-
const normalizedSchema = this.normalizeSchemaForOpenAI(outputSchema, aiModel);
|
|
68
|
-
const agent = (0, langchain_1.createAgent)({
|
|
69
|
-
...this.standardAgent(params, checkpointer),
|
|
70
|
-
responseFormat: normalizedSchema,
|
|
71
|
-
});
|
|
72
101
|
const invokeConfig = params.threadId && checkpointer
|
|
73
102
|
? { configurable: { thread_id: params.threadId } }
|
|
74
103
|
: undefined;
|
|
75
|
-
const response = await
|
|
104
|
+
const { result: response, agent } = await this.invokeWithRetryAndFallback(params, (paramsForModel) => (0, langchain_1.createAgent)({
|
|
105
|
+
...this.standardAgent(paramsForModel, checkpointer),
|
|
106
|
+
responseFormat: this.normalizeSchemaForOpenAI(outputSchema, paramsForModel.aiModel),
|
|
107
|
+
}), (agent) => agent.invoke({ messages }, invokeConfig));
|
|
108
|
+
this._memory?.setAgent(agent);
|
|
76
109
|
const parsedResponse = outputSchema.parse(response?.structuredResponse);
|
|
77
110
|
return { response: parsedResponse };
|
|
78
111
|
}
|
|
@@ -115,6 +148,7 @@ class AI {
|
|
|
115
148
|
...this.standardAgent(params, checkpointer),
|
|
116
149
|
responseFormat: outputSchema,
|
|
117
150
|
});
|
|
151
|
+
this._memory?.setAgent(agent);
|
|
118
152
|
return { agent };
|
|
119
153
|
}
|
|
120
154
|
getModel(params) {
|
|
@@ -163,8 +197,8 @@ class AI {
|
|
|
163
197
|
maxRetries,
|
|
164
198
|
backoffFactor: 2.0,
|
|
165
199
|
initialDelayMs: 1000,
|
|
200
|
+
onFailure: "error",
|
|
166
201
|
}),
|
|
167
|
-
(0, langchain_1.modelFallbackMiddleware)("gemini-2.5-flash", "gpt-4o-mini"),
|
|
168
202
|
];
|
|
169
203
|
}
|
|
170
204
|
}
|
package/dist/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":";;;;;;AAAA,+CAA8D;AAC9D,8CAAoB;AACpB,
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,12 +2,13 @@ import z from "zod";
|
|
|
2
2
|
import { AI } from "./ai";
|
|
3
3
|
import type { AICallParams, AICallReturn, AICallStructuredOutputParams, AICallStructuredOutputReturn } from "./@types/ai-call";
|
|
4
4
|
export { AI };
|
|
5
|
+
export type { AIAgent } from "./@types/agent";
|
|
5
6
|
export type { AICallParams, AICallReturn, AICallStructuredOutputParams, AICallStructuredOutputReturn, } from "./@types/ai-call";
|
|
6
7
|
export { AIModels } from "./langchain/models";
|
|
7
8
|
export { AIMessages } from "./langchain/messages";
|
|
8
9
|
export { AITools } from "./langchain/tools";
|
|
9
|
-
export {
|
|
10
|
-
export type { MemoryConfig, BaseCheckpointSaver, MemoryCheckpointerConfig, SqliteCheckpointerConfig, PostgresCheckpointerConfig, RedisCheckpointerConfig, MongoDBCheckpointerConfig, } from "./langchain/checkpointers";
|
|
10
|
+
export { AIMemory } from "./langchain/checkpointers";
|
|
11
|
+
export type { MemoryConfig, BaseCheckpointSaver, MemoryCheckpointerConfig, SqliteCheckpointerConfig, PostgresCheckpointerConfig, RedisCheckpointerConfig, MongoDBCheckpointerConfig, GraphWithStateHistory, MessageRole, HistoryMessageItem, GetHistoryResult, } from "./langchain/checkpointers";
|
|
11
12
|
export { AIAudioTranscription } from "./langchain/audio-transcription";
|
|
12
13
|
export { AudioUtils } from "./utils/audio-utils";
|
|
13
14
|
export type { AudioBuffer, AudioMimeType } from "./@types/audio";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,EAAE,EAAE,CAAC;AACd,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,EAAE,EAAE,CAAC;AACd,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjE,YAAY,EACV,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,YAAY,EACZ,2BAA2B,GAC5B,MAAM,iCAAiC,CAAC;AAGzC,2DAA2D;AAC3D,OAAO,EAAE,EAAE,IAAI,SAAS,EAAE,CAAC;AAC3B,qEAAqE;AACrE,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAC/C,qEAAqE;AACrE,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAC/C,qFAAqF;AACrF,MAAM,MAAM,mCAAmC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,IACnE,4BAA4B,CAAC,CAAC,CAAC,CAAC;AAClC,qFAAqF;AACrF,MAAM,MAAM,mCAAmC,CAAC,CAAC,IAC/C,4BAA4B,CAAC,CAAC,CAAC,CAAC;AAClC,iEAAiE;AACjE,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACjE,mEAAmE;AACnE,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvE,gEAAgE;AAChE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9D,6EAA6E;AAC7E,OAAO,EAAE,oBAAoB,IAAI,2BAA2B,EAAE,MAAM,iCAAiC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LangchainAudioTranscription = exports.LangchainTools = exports.LangchainMessages = exports.LangchainModels = exports.Langchain = exports.AudioUtils = exports.AIAudioTranscription = exports.
|
|
3
|
+
exports.LangchainAudioTranscription = exports.LangchainTools = exports.LangchainMessages = exports.LangchainModels = exports.Langchain = exports.AudioUtils = exports.AIAudioTranscription = exports.AIMemory = exports.AITools = exports.AIMessages = exports.AIModels = exports.AI = void 0;
|
|
4
4
|
const ai_1 = require("./ai");
|
|
5
5
|
Object.defineProperty(exports, "AI", { enumerable: true, get: function () { return ai_1.AI; } });
|
|
6
6
|
Object.defineProperty(exports, "Langchain", { enumerable: true, get: function () { return ai_1.AI; } });
|
|
@@ -11,7 +11,7 @@ Object.defineProperty(exports, "AIMessages", { enumerable: true, get: function (
|
|
|
11
11
|
var tools_1 = require("./langchain/tools");
|
|
12
12
|
Object.defineProperty(exports, "AITools", { enumerable: true, get: function () { return tools_1.AITools; } });
|
|
13
13
|
var checkpointers_1 = require("./langchain/checkpointers");
|
|
14
|
-
Object.defineProperty(exports, "
|
|
14
|
+
Object.defineProperty(exports, "AIMemory", { enumerable: true, get: function () { return checkpointers_1.AIMemory; } });
|
|
15
15
|
var audio_transcription_1 = require("./langchain/audio-transcription");
|
|
16
16
|
Object.defineProperty(exports, "AIAudioTranscription", { enumerable: true, get: function () { return audio_transcription_1.AIAudioTranscription; } });
|
|
17
17
|
var audio_utils_1 = require("./utils/audio-utils");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,6BAA0B;AAQjB,mFARA,OAAE,OAQA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,6BAA0B;AAQjB,mFARA,OAAE,OAQA;AAwCI,0FAhDN,OAAE,OAgDa;AA/BxB,6CAA8C;AAArC,kGAAA,QAAQ,OAAA;AACjB,iDAAkD;AAAzC,sGAAA,UAAU,OAAA;AACnB,2CAA4C;AAAnC,gGAAA,OAAO,OAAA;AAChB,2DAAqD;AAA5C,yGAAA,QAAQ,OAAA;AAcjB,uEAAuE;AAA9D,2HAAA,oBAAoB,OAAA;AAC7B,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AAwBnB,iEAAiE;AACjE,6CAAiE;AAAxD,yGAAA,QAAQ,OAAmB;AACpC,mEAAmE;AACnE,iDAAuE;AAA9D,6GAAA,UAAU,OAAqB;AACxC,gEAAgE;AAChE,2CAA8D;AAArD,uGAAA,OAAO,OAAkB;AAClC,6EAA6E;AAC7E,uEAAsG;AAA7F,kIAAA,oBAAoB,OAA+B"}
|
|
@@ -1,85 +1,86 @@
|
|
|
1
|
-
import { BaseCheckpointSaver } from "@langchain/langgraph";
|
|
1
|
+
import { BaseCheckpointSaver, type StateSnapshot } from "@langchain/langgraph";
|
|
2
|
+
import type { GetHistoryResult, GraphWithStateHistory, MemoryConfig } from "../@types/checkpointers";
|
|
2
3
|
export type { BaseCheckpointSaver };
|
|
4
|
+
export type { MemoryConfig, MemoryCheckpointerConfig, SqliteCheckpointerConfig, PostgresCheckpointerConfig, RedisCheckpointerConfig, MongoDBCheckpointerConfig, GraphWithStateHistory, MessageRole, HistoryMessageItem, GetHistoryResult, } from "../@types/checkpointers";
|
|
3
5
|
/**
|
|
4
|
-
*
|
|
5
|
-
*/
|
|
6
|
-
export type MemoryCheckpointerConfig = {
|
|
7
|
-
type: "memory";
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Configuração para checkpointer SQLite.
|
|
11
|
-
* Use ":memory:" para testes ou path para arquivo persistente.
|
|
12
|
-
*/
|
|
13
|
-
export type SqliteCheckpointerConfig = {
|
|
14
|
-
type: "sqlite";
|
|
15
|
-
connectionString: string;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* Configuração para checkpointer Postgres.
|
|
19
|
-
*/
|
|
20
|
-
export type PostgresCheckpointerConfig = {
|
|
21
|
-
type: "postgres";
|
|
22
|
-
connectionString: string;
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Configuração para checkpointer Redis.
|
|
26
|
-
* Requer Redis 8+ ou Redis Stack (RedisJSON, RediSearch).
|
|
27
|
-
*/
|
|
28
|
-
export type RedisCheckpointerConfig = {
|
|
29
|
-
type: "redis";
|
|
30
|
-
url: string;
|
|
31
|
-
options?: {
|
|
32
|
-
defaultTTL?: number;
|
|
33
|
-
refreshOnRead?: boolean;
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Configuração para checkpointer MongoDB com cliente existente.
|
|
38
|
-
*/
|
|
39
|
-
export type MongoDBCheckpointerConfigWithClient = {
|
|
40
|
-
type: "mongodb";
|
|
41
|
-
client: {
|
|
42
|
-
close?: () => Promise<void>;
|
|
43
|
-
};
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* Configuração para checkpointer MongoDB com URL.
|
|
47
|
-
*/
|
|
48
|
-
export type MongoDBCheckpointerConfigWithUrl = {
|
|
49
|
-
type: "mongodb";
|
|
50
|
-
url: string;
|
|
51
|
-
};
|
|
52
|
-
export type MongoDBCheckpointerConfig = MongoDBCheckpointerConfigWithClient | MongoDBCheckpointerConfigWithUrl;
|
|
53
|
-
/**
|
|
54
|
-
* Configuração para persistência de histórico de conversas.
|
|
55
|
-
* Permite escolher o backend de armazenamento.
|
|
56
|
-
*/
|
|
57
|
-
export type MemoryConfig = MemoryCheckpointerConfig | SqliteCheckpointerConfig | PostgresCheckpointerConfig | RedisCheckpointerConfig | MongoDBCheckpointerConfig;
|
|
58
|
-
/**
|
|
59
|
-
* Cria uma instância de checkpointer baseada na configuração fornecida.
|
|
6
|
+
* Classe para gerenciar memória e checkpointers de conversas LangGraph.
|
|
60
7
|
*
|
|
61
8
|
* @example
|
|
62
9
|
* // Memória (desenvolvimento)
|
|
63
|
-
* const
|
|
10
|
+
* const memory = new AIMemory({ type: "memory" });
|
|
11
|
+
* const checkpointer = await memory.getCheckpointer();
|
|
64
12
|
*
|
|
65
13
|
* @example
|
|
66
14
|
* // SQLite
|
|
67
|
-
* const
|
|
68
|
-
*
|
|
69
|
-
* @example
|
|
70
|
-
* // Postgres
|
|
71
|
-
* const cp = await createCheckpointer({
|
|
72
|
-
* type: "postgres",
|
|
73
|
-
* connectionString: process.env.DATABASE_URL!,
|
|
74
|
-
* });
|
|
75
|
-
*
|
|
76
|
-
* @example
|
|
77
|
-
* // Redis
|
|
78
|
-
* const cp = await createCheckpointer({ type: "redis", url: "redis://localhost:6379" });
|
|
15
|
+
* const memory = new AIMemory({ type: "sqlite", connectionString: "./data.db" });
|
|
79
16
|
*
|
|
80
17
|
* @example
|
|
81
|
-
* //
|
|
82
|
-
* const
|
|
18
|
+
* // Acessar histórico de conversa
|
|
19
|
+
* const { agent } = await ai.getRawAgent({ ... });
|
|
20
|
+
* const history = await memory.getHistory("thread-1", agent);
|
|
21
|
+
* const messages = history[0]?.values?.messages ?? [];
|
|
83
22
|
*/
|
|
84
|
-
export declare
|
|
23
|
+
export declare class AIMemory {
|
|
24
|
+
private config;
|
|
25
|
+
private checkpointer;
|
|
26
|
+
private checkpointerPromise;
|
|
27
|
+
private agent;
|
|
28
|
+
constructor(config: MemoryConfig, agent?: GraphWithStateHistory);
|
|
29
|
+
/**
|
|
30
|
+
* Define o agent/grafo para uso em getHistory quando graph não é passado.
|
|
31
|
+
* Chamado automaticamente por AI.getRawAgent() quando a instância está vinculada ao AI.
|
|
32
|
+
*/
|
|
33
|
+
setAgent(agent: GraphWithStateHistory): void;
|
|
34
|
+
/**
|
|
35
|
+
* Cria ou retorna a instância de checkpointer baseada na configuração.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* const cp = await memory.getCheckpointer();
|
|
39
|
+
* const graph = workflow.compile({ checkpointer: cp });
|
|
40
|
+
*/
|
|
41
|
+
getCheckpointer(): Promise<BaseCheckpointSaver>;
|
|
42
|
+
/**
|
|
43
|
+
* Retorna o histórico de checkpoints e lista de mensagens de uma thread.
|
|
44
|
+
*
|
|
45
|
+
* @param threadId - ID da thread/conversa
|
|
46
|
+
* @param graph - Opcional. Grafo compilado com checkpointer. Se não passado, usa o agent
|
|
47
|
+
* definido no construtor ou via setAgent (ex: agent de ai.getRawAgent).
|
|
48
|
+
* @returns Objeto com fullHistory (checkpoints) e messages (lista com role, createdAt, content)
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* // Com ai.memory (agent definido automaticamente em call/getRawAgent)
|
|
52
|
+
* await ai.call({ messages: [...], threadId: "1" });
|
|
53
|
+
* const { fullHistory, messages } = await ai.memory.getHistory("1");
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* // Passando graph explicitamente
|
|
57
|
+
* const { fullHistory, messages } = await memory.getHistory("1", agent);
|
|
58
|
+
*
|
|
59
|
+
* @see https://docs.langchain.com/oss/javascript/langgraph/persistence#get-state-history
|
|
60
|
+
* @see https://docs.langchain.com/oss/javascript/langgraph/add-memory#manage-checkpoints
|
|
61
|
+
*/
|
|
62
|
+
getHistory(threadId: string, graph?: GraphWithStateHistory): Promise<GetHistoryResult>;
|
|
63
|
+
/**
|
|
64
|
+
* Extrai lista de mensagens com role, createdAt e content a partir do histórico.
|
|
65
|
+
* Percorre os checkpoints do mais antigo ao mais recente para atribuir createdAt correto.
|
|
66
|
+
*/
|
|
67
|
+
private extractMessagesFromHistory;
|
|
68
|
+
private getMessageRole;
|
|
69
|
+
private extractContent;
|
|
70
|
+
/**
|
|
71
|
+
* Retorna o estado atual (último checkpoint) de uma thread.
|
|
72
|
+
*
|
|
73
|
+
* @param threadId - ID da thread/conversa
|
|
74
|
+
* @param graph - Grafo compilado com checkpointer
|
|
75
|
+
* @param checkpointId - Opcional: ID de um checkpoint específico
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* const state = await memory.getState("1", agent);
|
|
79
|
+
* const messages = state?.values?.messages ?? [];
|
|
80
|
+
*
|
|
81
|
+
* @see https://docs.langchain.com/oss/javascript/langgraph/persistence#get-state
|
|
82
|
+
*/
|
|
83
|
+
getState(threadId: string, graph?: GraphWithStateHistory, checkpointId?: string): Promise<StateSnapshot | null>;
|
|
84
|
+
private createCheckpointer;
|
|
85
|
+
}
|
|
85
86
|
//# sourceMappingURL=checkpointers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpointers.d.ts","sourceRoot":"","sources":["../../src/langchain/checkpointers.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"checkpointers.d.ts","sourceRoot":"","sources":["../../src/langchain/checkpointers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAEnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EAErB,YAAY,EAEb,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EAAE,mBAAmB,EAAE,CAAC;AACpC,YAAY,EACV,YAAY,EACZ,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,QAAQ;IAMjB,OAAO,CAAC,MAAM;IALhB,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,mBAAmB,CAA2C;IACtE,OAAO,CAAC,KAAK,CAAoC;gBAGvC,MAAM,EAAE,YAAY,EAC5B,KAAK,CAAC,EAAE,qBAAqB;IAK/B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;IAI5C;;;;;;OAMG;IACG,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC;IASrD;;;;;;;;;;;;;;;;;;;OAmBG;IACG,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,qBAAqB,GAC5B,OAAO,CAAC,gBAAgB,CAAC;IAiB5B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAwClC,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,cAAc;IAgBtB;;;;;;;;;;;;OAYG;IACG,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,qBAAqB,EAC7B,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;YAiBlB,kBAAkB;CA4FjC"}
|