@backendkit-labs/agent-enterprise 0.4.0 → 0.4.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/__tests__/integration/ObsidianRAGProvider.test.js +54 -54
- package/dist/__tests__/integration/ObsidianRAGProvider.test.js.map +1 -1
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +12 -15
- package/dist/factory.js.map +1 -1
- package/dist/rag/ObsidianRAGProvider.d.ts +22 -0
- package/dist/rag/ObsidianRAGProvider.d.ts.map +1 -1
- package/dist/rag/ObsidianRAGProvider.js +36 -2
- package/dist/rag/ObsidianRAGProvider.js.map +1 -1
- package/dist/rag/OllamaEmbedder.d.ts.map +1 -1
- package/dist/rag/OllamaEmbedder.js +11 -21
- package/dist/rag/OllamaEmbedder.js.map +1 -1
- package/dist/rag/SimpleEmbedder.d.ts +24 -2
- package/dist/rag/SimpleEmbedder.d.ts.map +1 -1
- package/dist/rag/SimpleEmbedder.js +121 -22
- package/dist/rag/SimpleEmbedder.js.map +1 -1
- package/dist/rag/VaultWriter.d.ts.map +1 -1
- package/dist/rag/VaultWriter.js +12 -20
- package/dist/rag/VaultWriter.js.map +1 -1
- package/dist/reflection/EnterpriseReflection.d.ts +1 -1
- package/dist/reflection/EnterpriseReflection.d.ts.map +1 -1
- package/dist/reflection/GateReflectionBridge.d.ts +1 -1
- package/dist/reflection/GateReflectionBridge.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -41,61 +41,61 @@ const OLLAMA_HOST = process.env.OLLAMA_HOST ?? 'http://localhost:11434';
|
|
|
41
41
|
const EMBED_MODEL = process.env.EMBEDDING_MODEL ?? 'nomic-embed-text';
|
|
42
42
|
// ── Vault de fixtures ─────────────────────────────────────────────────────────
|
|
43
43
|
const FIXTURES = {
|
|
44
|
-
'agentes-orquestacion.md': `---
|
|
45
|
-
title: Orquestación de Agentes IA
|
|
46
|
-
tags: [área/arquitectura, stack/typescript]
|
|
47
|
-
description: Patrones para coordinar múltiples agentes especializados
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## Patrón orquestador-especialista
|
|
51
|
-
|
|
52
|
-
El orquestador recibe la tarea del usuario y la descompone en subtareas.
|
|
53
|
-
Cada subtarea se delega a un agente especialista a través del tool ask_agent.
|
|
54
|
-
Los especialistas devuelven su resultado al orquestador, que sintetiza la respuesta final.
|
|
55
|
-
|
|
56
|
-
## Delegación paralela
|
|
57
|
-
|
|
58
|
-
Cuando las subtareas son independientes entre sí, el orquestador puede lanzar
|
|
59
|
-
múltiples ask_agent en el mismo turno. El engine ejecuta todas las delegaciones
|
|
60
|
-
en paralelo, limitado por el bulkhead de 6 slots concurrentes.
|
|
44
|
+
'agentes-orquestacion.md': `---
|
|
45
|
+
title: Orquestación de Agentes IA
|
|
46
|
+
tags: [área/arquitectura, stack/typescript]
|
|
47
|
+
description: Patrones para coordinar múltiples agentes especializados
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Patrón orquestador-especialista
|
|
51
|
+
|
|
52
|
+
El orquestador recibe la tarea del usuario y la descompone en subtareas.
|
|
53
|
+
Cada subtarea se delega a un agente especialista a través del tool ask_agent.
|
|
54
|
+
Los especialistas devuelven su resultado al orquestador, que sintetiza la respuesta final.
|
|
55
|
+
|
|
56
|
+
## Delegación paralela
|
|
57
|
+
|
|
58
|
+
Cuando las subtareas son independientes entre sí, el orquestador puede lanzar
|
|
59
|
+
múltiples ask_agent en el mismo turno. El engine ejecuta todas las delegaciones
|
|
60
|
+
en paralelo, limitado por el bulkhead de 6 slots concurrentes.
|
|
61
61
|
`,
|
|
62
|
-
'rag-vectorial.md': `---
|
|
63
|
-
title: RAG con Vector Store Local
|
|
64
|
-
tags: [área/ia, stack/typescript]
|
|
65
|
-
description: Implementación de Retrieval Augmented Generation sin dependencias externas
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Embeddings con Ollama
|
|
69
|
-
|
|
70
|
-
Los embeddings se generan usando el modelo nomic-embed-text de Ollama.
|
|
71
|
-
La API es POST /api/embed con el texto y el nombre del modelo.
|
|
72
|
-
El resultado es un vector de 768 dimensiones para nomic-embed-text.
|
|
73
|
-
|
|
74
|
-
## Similitud coseno
|
|
75
|
-
|
|
76
|
-
La búsqueda semántica compara el embedding de la consulta con los embeddings
|
|
77
|
-
almacenados usando similitud coseno. El resultado más cercano a 1.0 es el más relevante.
|
|
78
|
-
|
|
79
|
-
## Indexación incremental
|
|
80
|
-
|
|
81
|
-
El VectorStore guarda el mtime de cada archivo. En el siguiente índice,
|
|
82
|
-
solo se re-embeden los archivos nuevos o modificados.
|
|
62
|
+
'rag-vectorial.md': `---
|
|
63
|
+
title: RAG con Vector Store Local
|
|
64
|
+
tags: [área/ia, stack/typescript]
|
|
65
|
+
description: Implementación de Retrieval Augmented Generation sin dependencias externas
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Embeddings con Ollama
|
|
69
|
+
|
|
70
|
+
Los embeddings se generan usando el modelo nomic-embed-text de Ollama.
|
|
71
|
+
La API es POST /api/embed con el texto y el nombre del modelo.
|
|
72
|
+
El resultado es un vector de 768 dimensiones para nomic-embed-text.
|
|
73
|
+
|
|
74
|
+
## Similitud coseno
|
|
75
|
+
|
|
76
|
+
La búsqueda semántica compara el embedding de la consulta con los embeddings
|
|
77
|
+
almacenados usando similitud coseno. El resultado más cercano a 1.0 es el más relevante.
|
|
78
|
+
|
|
79
|
+
## Indexación incremental
|
|
80
|
+
|
|
81
|
+
El VectorStore guarda el mtime de cada archivo. En el siguiente índice,
|
|
82
|
+
solo se re-embeden los archivos nuevos o modificados.
|
|
83
83
|
`,
|
|
84
|
-
'typescript-patterns.md': `---
|
|
85
|
-
title: Patrones TypeScript en el Framework
|
|
86
|
-
tags: [stack/typescript, área/arquitectura]
|
|
87
|
-
description: Convenciones de código usadas en el proyecto
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## Tipos estrictos
|
|
91
|
-
|
|
92
|
-
El proyecto usa strict mode de TypeScript. Todos los parámetros opcionales
|
|
93
|
-
deben declararse explícitamente. No se permite any sin justificación.
|
|
94
|
-
|
|
95
|
-
## Inyección de dependencias
|
|
96
|
-
|
|
97
|
-
Los providers se registran en ProviderRegistry y se resuelven por nombre.
|
|
98
|
-
Esto permite intercambiar OllamaProvider por otros providers en tests.
|
|
84
|
+
'typescript-patterns.md': `---
|
|
85
|
+
title: Patrones TypeScript en el Framework
|
|
86
|
+
tags: [stack/typescript, área/arquitectura]
|
|
87
|
+
description: Convenciones de código usadas en el proyecto
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Tipos estrictos
|
|
91
|
+
|
|
92
|
+
El proyecto usa strict mode de TypeScript. Todos los parámetros opcionales
|
|
93
|
+
deben declararse explícitamente. No se permite any sin justificación.
|
|
94
|
+
|
|
95
|
+
## Inyección de dependencias
|
|
96
|
+
|
|
97
|
+
Los providers se registran en ProviderRegistry y se resuelven por nombre.
|
|
98
|
+
Esto permite intercambiar OllamaProvider por otros providers en tests.
|
|
99
99
|
`,
|
|
100
100
|
};
|
|
101
101
|
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
@@ -183,7 +183,7 @@ describe('ObsidianRAGProvider — integración', () => {
|
|
|
183
183
|
minScore: 0.1,
|
|
184
184
|
});
|
|
185
185
|
const result = await rag.search('patrón orquestador especialista delegación');
|
|
186
|
-
expect(result).
|
|
186
|
+
expect(result).toMatch(/orquestaci/i); // título o contenido del archivo relevante
|
|
187
187
|
expect(result).not.toBe('No se encontró información relevante en la base de conocimiento para esa consulta.');
|
|
188
188
|
});
|
|
189
189
|
test('search devuelve mensaje de no-resultados para consulta sin match', async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObsidianRAGProvider.test.js","sourceRoot":"","sources":["../../../src/__tests__/integration/ObsidianRAGProvider.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ObsidianRAGProvider.test.js","sourceRoot":"","sources":["../../../src/__tests__/integration/ObsidianRAGProvider.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkC;AAClC,uCAAyB;AACzB,2CAA6B;AAC7B,uEAAoE;AAEpE,MAAM,WAAW,GAAK,OAAO,CAAC,GAAG,CAAC,WAAW,IAAO,wBAAwB,CAAC;AAC7E,MAAM,WAAW,GAAK,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,kBAAkB,CAAC;AAExE,iFAAiF;AAEjF,MAAM,QAAQ,GAA2B;IACrC,yBAAyB,EAAE;;;;;;;;;;;;;;;;;CAiB9B;IAEG,kBAAkB,EAAE;;;;;;;;;;;;;;;;;;;;;CAqBvB;IAEG,wBAAwB,EAAE;;;;;;;;;;;;;;;CAe7B;CACA,CAAC;AAEF,iFAAiF;AAEjF,KAAK,UAAU,eAAe;IAC1B,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,WAAW,EAAE;YAC/C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA0C,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,GAAW;IACzC,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAC/C,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IAErB,SAAS,CAAC,KAAK,IAAI,EAAE;QACjB,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CACR,qEAAqE,WAAW,GAAG;gBACnF,aAAa,WAAW,oBAAoB;gBAC5C,oDAAoD,WAAW,IAAI,CACtE,CAAC;YACF,OAAO;QACX,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACrE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzB,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzB,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;QAChB,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,GAAG,GAAG,IAAI,yCAAmB,CAAC;YAChC,SAAS,EAAO,QAAQ;YACxB,SAAS,EAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;YACjD,UAAU,EAAM,WAAW;YAC3B,cAAc,EAAE,WAAW;SAC9B,CAAC,CAAC;QAEH,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjE,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAI,gCAAgC;QACvE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,yCAAmB,CAAC;YAChC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW;SACvF,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,+BAA+B;QAElD,MAAM,IAAI,GAAG,IAAI,yCAAmB,CAAC;YACjC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW;SACvF,CAAC,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,+BAA+B;QAEvE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,GAAG,GAAG,IAAI,yCAAmB,CAAC;YAChC,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;YAClD,UAAU,EAAE,WAAW;YACvB,cAAc,EAAE,WAAW;YAC3B,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,GAAG;SAChB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC;QAE9E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,2CAA2C;QAClF,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IAClH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,GAAG,GAAG,IAAI,yCAAmB,CAAC;YAChC,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;YAC/C,UAAU,EAAE,WAAW;YACvB,cAAc,EAAE,WAAW;YAC3B,QAAQ,EAAE,IAAI,EAAE,+BAA+B;SAClD,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,GAAG,GAAG,IAAI,yCAAmB,CAAC;YAChC,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;YAClD,UAAU,EAAE,WAAW;YACvB,cAAc,EAAE,WAAW;YAC3B,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,GAAG;SAChB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAI,MAAM,GAAG,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC;QAEpF,uDAAuD;QACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChE,MAAM,OAAO,GAAI,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,GAAG,GAAG,IAAI,yCAAmB,CAAC;YAChC,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;YAChD,UAAU,EAAE,WAAW;YACvB,cAAc,EAAE,WAAW;SAC9B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,EAAE,KAAK,EAAE,wBAAwB,EAAE,EACnC,EAAW,CACd,CAAC;QACF,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/dist/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,WAAW,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,WAAW,EACX,gBAAgB,EAKnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAkB,MAAM,6BAA6B,CAAC;AAE3F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAY1D,MAAM,WAAW,sBAAsB;IACnC,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sEAAsE;IACtE,SAAS,EAAE,gBAAgB,CAAC;IAC5B,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC5B,uDAAuD;IACvD,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,iFAAiF;IACjF,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,KAAK,WAAW,CAAC;CAC3E;AAcD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,GAAG,eAAe,CAmGnF"}
|
package/dist/factory.js
CHANGED
|
@@ -99,13 +99,11 @@ function createEnterpriseSetup(opts) {
|
|
|
99
99
|
}
|
|
100
100
|
// ── Engine factory ────────────────────────────────────────────────────────
|
|
101
101
|
function engineFactory(sessionId, transport) {
|
|
102
|
-
const tools =
|
|
103
|
-
// Global search (General agent)
|
|
104
|
-
tools.register(globalRAG.createTool());
|
|
102
|
+
const tools = [globalRAG.createTool()];
|
|
105
103
|
// Department search tools
|
|
106
104
|
for (const [toolName, rag] of deptRAGs) {
|
|
107
105
|
const deptRag = rag;
|
|
108
|
-
tools.
|
|
106
|
+
tools.push((0, agent_core_1.defineTool)({
|
|
109
107
|
name: toolName,
|
|
110
108
|
description: `Search the ${toolName.replace('search_', '').replace('_kb', '')} department knowledge base.`,
|
|
111
109
|
input: agent_core_1.z.object({
|
|
@@ -115,17 +113,15 @@ function createEnterpriseSetup(opts) {
|
|
|
115
113
|
}));
|
|
116
114
|
}
|
|
117
115
|
// Write to vault
|
|
118
|
-
tools.
|
|
116
|
+
tools.push(writer.createTool('general'));
|
|
119
117
|
// n8n integration (opt-in — only when a webhook URL is configured)
|
|
120
118
|
const n8nUrl = opts.n8nWebhookUrl ?? process.env.N8N_WEBHOOK_URL;
|
|
121
119
|
if (n8nUrl) {
|
|
122
|
-
tools.
|
|
120
|
+
tools.push((0, integrations_1.createN8nTriggerTool)({ webhookUrl: n8nUrl }));
|
|
123
121
|
}
|
|
124
122
|
// Agents
|
|
125
|
-
const agents =
|
|
126
|
-
const
|
|
127
|
-
for (const profile of profiles)
|
|
128
|
-
agents.register(profile);
|
|
123
|
+
const agents = [...profiles_1.ALL_ENTERPRISE_PROFILES, ...(opts.extraProfiles ?? [])];
|
|
124
|
+
const providers = opts.providers.getAll();
|
|
129
125
|
// Per-session memory
|
|
130
126
|
const memory = (0, agent_core_1.createMemorySystem)({
|
|
131
127
|
episodic: { provider: 'json', path: path.join(sessionsDir, sessionId, 'ep.json') },
|
|
@@ -133,19 +129,20 @@ function createEnterpriseSetup(opts) {
|
|
|
133
129
|
procedural: { provider: 'json', path: path.join(sessionsDir, sessionId, 'proc.json') },
|
|
134
130
|
retention: { maxEpisodes: 100 },
|
|
135
131
|
});
|
|
136
|
-
|
|
137
|
-
model: { provider: opts.defaultProvider, id: '' },
|
|
132
|
+
const engine = (0, agent_core_1.createBaseEngine)({
|
|
138
133
|
agents,
|
|
139
134
|
tools,
|
|
140
|
-
providers
|
|
135
|
+
providers,
|
|
141
136
|
defaultProvider: opts.defaultProvider,
|
|
142
|
-
|
|
137
|
+
defaultAgent: 'general',
|
|
143
138
|
transport,
|
|
144
139
|
maxIterations: opts.maxIterations ?? 20,
|
|
145
|
-
iterationMode: 'auto',
|
|
146
140
|
memorySystem: memory,
|
|
147
141
|
sessionId,
|
|
148
142
|
});
|
|
143
|
+
// createBaseEngine defaults to 'interactive' — enterprise sessions run unattended per WS turn.
|
|
144
|
+
engine.setIterationMode('auto');
|
|
145
|
+
return engine;
|
|
149
146
|
}
|
|
150
147
|
return { indexAll, engineFactory };
|
|
151
148
|
}
|
package/dist/factory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,21 @@ export interface ObsidianRAGOptions {
|
|
|
24
24
|
minScore?: number;
|
|
25
25
|
/** Tags del frontmatter a excluir de la indexación. Default: ['skill'] */
|
|
26
26
|
excludeTags?: string[];
|
|
27
|
+
/**
|
|
28
|
+
* Milisegundos de pausa entre batches durante index(). Un reindex grande (cientos
|
|
29
|
+
* de archivos) corre CPU-bound sostenido a través de embed() sin dar respiro al
|
|
30
|
+
* resto de la máquina; esta pausa le da al SO/otros procesos una ventana entre
|
|
31
|
+
* batches. Default: 300ms. 0 desactiva el pacing.
|
|
32
|
+
*/
|
|
33
|
+
batchPacingMs?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Cantidad de archivos por etapa. Cada vez que el reindex completa una etapa,
|
|
36
|
+
* pausa stagePacingMs en vez del batchPacingMs normal — un respiro más largo y
|
|
37
|
+
* periódico además del pacing entre batches, para vaults muy grandes. Default: 50.
|
|
38
|
+
*/
|
|
39
|
+
stageSize?: number;
|
|
40
|
+
/** Milisegundos de pausa al completar cada etapa (stageSize archivos). Default: 3000ms. */
|
|
41
|
+
stagePacingMs?: number;
|
|
27
42
|
}
|
|
28
43
|
export declare class ObsidianRAGProvider {
|
|
29
44
|
private readonly embedder;
|
|
@@ -31,6 +46,9 @@ export declare class ObsidianRAGProvider {
|
|
|
31
46
|
private readonly indexer;
|
|
32
47
|
private readonly topK;
|
|
33
48
|
private readonly minScore;
|
|
49
|
+
private readonly batchPacingMs;
|
|
50
|
+
private readonly stageSize;
|
|
51
|
+
private readonly stagePacingMs;
|
|
34
52
|
private indexed;
|
|
35
53
|
constructor(opts: ObsidianRAGOptions);
|
|
36
54
|
/**
|
|
@@ -39,6 +57,10 @@ export declare class ObsidianRAGProvider {
|
|
|
39
57
|
*/
|
|
40
58
|
index(opts?: {
|
|
41
59
|
verbose?: boolean;
|
|
60
|
+
onProgress?: (p: {
|
|
61
|
+
processed: number;
|
|
62
|
+
total: number;
|
|
63
|
+
}) => void;
|
|
42
64
|
}): Promise<{
|
|
43
65
|
indexed: number;
|
|
44
66
|
removed: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObsidianRAGProvider.d.ts","sourceRoot":"","sources":["../../src/rag/ObsidianRAGProvider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAKlE,mDAAmD;AACnD,MAAM,WAAW,QAAQ;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IAC/B,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"ObsidianRAGProvider.d.ts","sourceRoot":"","sources":["../../src/rag/ObsidianRAGProvider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAKlE,mDAAmD;AACnD,MAAM,WAAW,QAAQ;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IAC/B,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAWD,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,kBAAkB;IA8BpC;;;OAGG;IACG,KAAK,CACP,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAA;KAAO,GACjG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAgEhD,oDAAoD;IAC9C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2B3D,8EAA8E;IAC9E,UAAU,IAAI,cAAc;IAkB5B,IAAI,UAAU,IAAI,MAAM,CAEvB;CACJ"}
|
|
@@ -41,12 +41,21 @@ const OllamaEmbedder_1 = require("./OllamaEmbedder");
|
|
|
41
41
|
const VectorStore_1 = require("./VectorStore");
|
|
42
42
|
const VaultIndexer_1 = require("./VaultIndexer");
|
|
43
43
|
const BATCH_SIZE = 10;
|
|
44
|
+
const DEFAULT_BATCH_PACING_MS = 300;
|
|
45
|
+
const DEFAULT_STAGE_SIZE = 50;
|
|
46
|
+
const DEFAULT_STAGE_PACING_MS = 3000;
|
|
47
|
+
function sleep(ms) {
|
|
48
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
49
|
+
}
|
|
44
50
|
class ObsidianRAGProvider {
|
|
45
51
|
embedder;
|
|
46
52
|
store;
|
|
47
53
|
indexer;
|
|
48
54
|
topK;
|
|
49
55
|
minScore;
|
|
56
|
+
batchPacingMs;
|
|
57
|
+
stageSize;
|
|
58
|
+
stagePacingMs;
|
|
50
59
|
indexed = false;
|
|
51
60
|
constructor(opts) {
|
|
52
61
|
if (opts.embedder) {
|
|
@@ -66,6 +75,9 @@ class ObsidianRAGProvider {
|
|
|
66
75
|
});
|
|
67
76
|
this.topK = opts.topK ?? 5;
|
|
68
77
|
this.minScore = opts.minScore ?? 0.3;
|
|
78
|
+
this.batchPacingMs = opts.batchPacingMs ?? DEFAULT_BATCH_PACING_MS;
|
|
79
|
+
this.stageSize = opts.stageSize ?? DEFAULT_STAGE_SIZE;
|
|
80
|
+
this.stagePacingMs = opts.stagePacingMs ?? DEFAULT_STAGE_PACING_MS;
|
|
69
81
|
}
|
|
70
82
|
/**
|
|
71
83
|
* Indexa el vault de forma incremental.
|
|
@@ -81,18 +93,40 @@ class ObsidianRAGProvider {
|
|
|
81
93
|
let indexed = 0;
|
|
82
94
|
for (let i = 0; i < toIndex.length; i += BATCH_SIZE) {
|
|
83
95
|
const batch = toIndex.slice(i, i + BATCH_SIZE);
|
|
96
|
+
const processedSoFar = Math.min(i + BATCH_SIZE, toIndex.length);
|
|
84
97
|
const rawChunksBatch = await Promise.all(batch.map(f => this.indexer.buildChunks(f.filePath, f.mtime)));
|
|
85
98
|
const allRaw = rawChunksBatch.flat();
|
|
86
|
-
if (allRaw.length === 0)
|
|
99
|
+
if (allRaw.length === 0) {
|
|
100
|
+
opts.onProgress?.({ processed: processedSoFar, total: toIndex.length });
|
|
87
101
|
continue;
|
|
102
|
+
}
|
|
88
103
|
const embeddings = await this.embedder.embed(allRaw.map(c => c.text));
|
|
89
104
|
const vectorChunks = allRaw.map((raw, idx) => this.indexer.toVectorChunk(raw, embeddings[idx] ?? []));
|
|
90
105
|
for (const f of batch)
|
|
91
106
|
this.store.removeFile(f.filePath);
|
|
92
107
|
this.store.addChunks(vectorChunks);
|
|
93
108
|
indexed += vectorChunks.length;
|
|
109
|
+
// Checkpoint per batch, not just at the end — a crash mid-index (e.g. a large
|
|
110
|
+
// first-time vault reindex) must resume from here instead of re-embedding
|
|
111
|
+
// everything from scratch. Mirrors the manifest-per-batch pattern already used
|
|
112
|
+
// for curate_path.
|
|
113
|
+
await this.store.save();
|
|
114
|
+
opts.onProgress?.({ processed: processedSoFar, total: toIndex.length });
|
|
94
115
|
if (opts.verbose) {
|
|
95
|
-
console.log(`[RAG] Indexados ${
|
|
116
|
+
console.log(`[RAG] Indexados ${processedSoFar}/${toIndex.length} archivos`);
|
|
117
|
+
}
|
|
118
|
+
// Pace between batches so a large reindex doesn't hold the CPU/memory
|
|
119
|
+
// sustained for its whole duration. Skipped after the last batch. Every
|
|
120
|
+
// stageSize files, take the longer stage pause instead of the regular one —
|
|
121
|
+
// a periodic deeper breather on top of the per-batch pacing, for large vaults.
|
|
122
|
+
const hasMoreBatches = i + BATCH_SIZE < toIndex.length;
|
|
123
|
+
if (hasMoreBatches) {
|
|
124
|
+
const processedSoFar = i + BATCH_SIZE;
|
|
125
|
+
const crossedStageBoundary = Math.floor(processedSoFar / this.stageSize) >
|
|
126
|
+
Math.floor((processedSoFar - BATCH_SIZE) / this.stageSize);
|
|
127
|
+
const pauseMs = crossedStageBoundary ? this.stagePacingMs : this.batchPacingMs;
|
|
128
|
+
if (pauseMs > 0)
|
|
129
|
+
await sleep(pauseMs);
|
|
96
130
|
}
|
|
97
131
|
}
|
|
98
132
|
await this.store.save();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObsidianRAGProvider.js","sourceRoot":"","sources":["../../src/rag/ObsidianRAGProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,uCAAyB;AACzB,4DAA4D;AAE5D,qDAAyG;AACzG,+CAA4C;AAC5C,iDAA8C;
|
|
1
|
+
{"version":3,"file":"ObsidianRAGProvider.js","sourceRoot":"","sources":["../../src/rag/ObsidianRAGProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OllamaEmbedder.d.ts","sourceRoot":"","sources":["../../src/rag/OllamaEmbedder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OllamaEmbedder.d.ts","sourceRoot":"","sources":["../../src/rag/OllamaEmbedder.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAC7D,eAAO,MAAM,yBAAyB,2BAA4B,CAAC;AAMnE,MAAM,WAAW,qBAAqB;IAClC,IAAI,CAAC,EAAQ,MAAM,CAAC;IACpB,KAAK,CAAC,EAAO,MAAM,CAAC;IACpB,SAAS,CAAC,EAAG,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,IAAI,GAAE,qBAA0B;IAOtC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAK3C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKzC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAmBxB,eAAe;YA2Cf,SAAS;CAY1B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OllamaEmbedder = exports.OLLAMA_EMBED_DEFAULT_HOST = exports.OLLAMA_EMBED_DEFAULT_MODEL = void 0;
|
|
4
|
+
const retry_1 = require("@backendkit-labs/retry");
|
|
4
5
|
exports.OLLAMA_EMBED_DEFAULT_MODEL = 'nomic-embed-text';
|
|
5
6
|
exports.OLLAMA_EMBED_DEFAULT_HOST = 'http://localhost:11434';
|
|
6
7
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
@@ -82,28 +83,17 @@ class OllamaEmbedder {
|
|
|
82
83
|
}
|
|
83
84
|
}
|
|
84
85
|
async withRetry(fn) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
throw lastErr;
|
|
96
|
-
if (attempt < this.maxRetries - 1) {
|
|
97
|
-
const delay = BACKOFF_BASE_MS * 2 ** attempt;
|
|
98
|
-
await sleep(delay);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
throw lastErr;
|
|
86
|
+
const result = await (0, retry_1.retry)(fn, {
|
|
87
|
+
maxAttempts: this.maxRetries,
|
|
88
|
+
backoff: { type: 'exponential', baseDelay: BACKOFF_BASE_MS, jitter: 'full' },
|
|
89
|
+
// Non-retryable errors (bad model name, 4xx) bubble immediately
|
|
90
|
+
retryIf: (e) => e.cause?.code !== 'FATAL',
|
|
91
|
+
});
|
|
92
|
+
if (result.ok)
|
|
93
|
+
return result.value;
|
|
94
|
+
const cause = result.error.cause;
|
|
95
|
+
throw cause instanceof Error ? cause : new Error(result.error.message);
|
|
103
96
|
}
|
|
104
97
|
}
|
|
105
98
|
exports.OllamaEmbedder = OllamaEmbedder;
|
|
106
|
-
function sleep(ms) {
|
|
107
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
108
|
-
}
|
|
109
99
|
//# sourceMappingURL=OllamaEmbedder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OllamaEmbedder.js","sourceRoot":"","sources":["../../src/rag/OllamaEmbedder.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"OllamaEmbedder.js","sourceRoot":"","sources":["../../src/rag/OllamaEmbedder.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,19 +5,41 @@
|
|
|
5
5
|
* 1. Tokenising text into lowercase alphanumeric tokens
|
|
6
6
|
* 2. Mapping each token to a bucket via djb2 hash % DIMS
|
|
7
7
|
* 3. Accumulating term-frequency counts in the bucket
|
|
8
|
-
* 4.
|
|
8
|
+
* 4. Weighting each bucket by inverse document frequency (rarer buckets score higher)
|
|
9
|
+
* 5. L2-normalising to a unit vector
|
|
9
10
|
*
|
|
10
11
|
* Not semantically equivalent to transformer embeddings, but clusters texts
|
|
11
12
|
* with shared vocabulary close together — sufficient to find notes whose
|
|
12
|
-
* content matches the query's key terms
|
|
13
|
+
* content matches the query's key terms, and the IDF term keeps common
|
|
14
|
+
* words (the, and, sistema, ...) from drowning out the words that actually
|
|
15
|
+
* distinguish one note from another.
|
|
13
16
|
*
|
|
14
17
|
* Use this when Ollama is not available (dev, CI, pilot). For production,
|
|
15
18
|
* prefer OllamaEmbedder with nomic-embed-text for semantic accuracy.
|
|
16
19
|
*/
|
|
17
20
|
import type { Embedder } from './ObsidianRAGProvider';
|
|
18
21
|
export declare class SimpleEmbedder implements Embedder {
|
|
22
|
+
private readonly statsPath?;
|
|
19
23
|
readonly model = "simple-tfidf-256";
|
|
24
|
+
private docCount;
|
|
25
|
+
private readonly docFreq;
|
|
26
|
+
private loaded;
|
|
27
|
+
/**
|
|
28
|
+
* @param statsPath Optional path to persist document-frequency stats across
|
|
29
|
+
* process restarts. Without it, IDF starts fresh (pure TF) every time the
|
|
30
|
+
* process starts and improves as more text gets embedded during that run.
|
|
31
|
+
*/
|
|
32
|
+
constructor(statsPath?: string | undefined);
|
|
33
|
+
private ensureLoaded;
|
|
34
|
+
private persist;
|
|
35
|
+
/** Smoothed IDF — always positive, well-defined even when a bucket has never been seen (df=0). */
|
|
36
|
+
private idf;
|
|
37
|
+
private vectorise;
|
|
38
|
+
/** Registers `text` as a corpus document (updates docFreq/docCount), then vectorises it against the updated stats. */
|
|
39
|
+
private observe;
|
|
40
|
+
/** Indexing path — each text counts toward the corpus's document-frequency stats. */
|
|
20
41
|
embed(texts: string[]): Promise<number[][]>;
|
|
42
|
+
/** Query path — a search query is not a new corpus document, so it's weighted read-only against current stats, never counted. */
|
|
21
43
|
embedOne(text: string): Promise<number[]>;
|
|
22
44
|
}
|
|
23
45
|
//# sourceMappingURL=SimpleEmbedder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleEmbedder.d.ts","sourceRoot":"","sources":["../../src/rag/SimpleEmbedder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"SimpleEmbedder.d.ts","sourceRoot":"","sources":["../../src/rag/SimpleEmbedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AA4BtD,qBAAa,cAAe,YAAW,QAAQ;IAY/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAXvC,QAAQ,CAAC,KAAK,sBAAsB;IAEpC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,MAAM,CAAS;IAEvB;;;;OAIG;gBAC0B,SAAS,CAAC,EAAE,MAAM,YAAA;YAEjC,YAAY;YAgBZ,OAAO;IAUrB,kGAAkG;IAClG,OAAO,CAAC,GAAG;IAKX,OAAO,CAAC,SAAS;IAuBjB,sHAAsH;IACtH,OAAO,CAAC,OAAO;IAOf,qFAAqF;IAC/E,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAOjD,iIAAiI;IAC3H,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAIlD"}
|
|
@@ -6,17 +6,54 @@
|
|
|
6
6
|
* 1. Tokenising text into lowercase alphanumeric tokens
|
|
7
7
|
* 2. Mapping each token to a bucket via djb2 hash % DIMS
|
|
8
8
|
* 3. Accumulating term-frequency counts in the bucket
|
|
9
|
-
* 4.
|
|
9
|
+
* 4. Weighting each bucket by inverse document frequency (rarer buckets score higher)
|
|
10
|
+
* 5. L2-normalising to a unit vector
|
|
10
11
|
*
|
|
11
12
|
* Not semantically equivalent to transformer embeddings, but clusters texts
|
|
12
13
|
* with shared vocabulary close together — sufficient to find notes whose
|
|
13
|
-
* content matches the query's key terms
|
|
14
|
+
* content matches the query's key terms, and the IDF term keeps common
|
|
15
|
+
* words (the, and, sistema, ...) from drowning out the words that actually
|
|
16
|
+
* distinguish one note from another.
|
|
14
17
|
*
|
|
15
18
|
* Use this when Ollama is not available (dev, CI, pilot). For production,
|
|
16
19
|
* prefer OllamaEmbedder with nomic-embed-text for semantic accuracy.
|
|
17
20
|
*/
|
|
21
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
24
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
25
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
26
|
+
}
|
|
27
|
+
Object.defineProperty(o, k2, desc);
|
|
28
|
+
}) : (function(o, m, k, k2) {
|
|
29
|
+
if (k2 === undefined) k2 = k;
|
|
30
|
+
o[k2] = m[k];
|
|
31
|
+
}));
|
|
32
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
33
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
34
|
+
}) : function(o, v) {
|
|
35
|
+
o["default"] = v;
|
|
36
|
+
});
|
|
37
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
38
|
+
var ownKeys = function(o) {
|
|
39
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
40
|
+
var ar = [];
|
|
41
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
42
|
+
return ar;
|
|
43
|
+
};
|
|
44
|
+
return ownKeys(o);
|
|
45
|
+
};
|
|
46
|
+
return function (mod) {
|
|
47
|
+
if (mod && mod.__esModule) return mod;
|
|
48
|
+
var result = {};
|
|
49
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
50
|
+
__setModuleDefault(result, mod);
|
|
51
|
+
return result;
|
|
52
|
+
};
|
|
53
|
+
})();
|
|
18
54
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
55
|
exports.SimpleEmbedder = void 0;
|
|
56
|
+
const fs = __importStar(require("fs/promises"));
|
|
20
57
|
const DIMS = 256;
|
|
21
58
|
function djb2(str) {
|
|
22
59
|
let h = 5381;
|
|
@@ -33,32 +70,94 @@ function tokenise(text) {
|
|
|
33
70
|
.split(/[^a-z0-9]+/)
|
|
34
71
|
.filter(t => t.length > 2); // skip 1-2 char noise tokens
|
|
35
72
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
73
|
+
class SimpleEmbedder {
|
|
74
|
+
statsPath;
|
|
75
|
+
model = 'simple-tfidf-256';
|
|
76
|
+
docCount = 0;
|
|
77
|
+
docFreq = new Map();
|
|
78
|
+
loaded = false;
|
|
79
|
+
/**
|
|
80
|
+
* @param statsPath Optional path to persist document-frequency stats across
|
|
81
|
+
* process restarts. Without it, IDF starts fresh (pure TF) every time the
|
|
82
|
+
* process starts and improves as more text gets embedded during that run.
|
|
83
|
+
*/
|
|
84
|
+
constructor(statsPath) {
|
|
85
|
+
this.statsPath = statsPath;
|
|
86
|
+
}
|
|
87
|
+
async ensureLoaded() {
|
|
88
|
+
if (this.loaded)
|
|
89
|
+
return;
|
|
90
|
+
this.loaded = true;
|
|
91
|
+
if (!this.statsPath)
|
|
92
|
+
return;
|
|
93
|
+
try {
|
|
94
|
+
const raw = await fs.readFile(this.statsPath, 'utf-8');
|
|
95
|
+
const data = JSON.parse(raw);
|
|
96
|
+
this.docCount = data.docCount;
|
|
97
|
+
for (const [bucket, count] of Object.entries(data.docFreq)) {
|
|
98
|
+
this.docFreq.set(Number(bucket), count);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// No stats file yet — start fresh.
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async persist() {
|
|
106
|
+
if (!this.statsPath)
|
|
107
|
+
return;
|
|
108
|
+
const data = {
|
|
109
|
+
version: 1,
|
|
110
|
+
docCount: this.docCount,
|
|
111
|
+
docFreq: Object.fromEntries(this.docFreq),
|
|
112
|
+
};
|
|
113
|
+
await fs.writeFile(this.statsPath, JSON.stringify(data), 'utf-8');
|
|
114
|
+
}
|
|
115
|
+
/** Smoothed IDF — always positive, well-defined even when a bucket has never been seen (df=0). */
|
|
116
|
+
idf(bucket) {
|
|
117
|
+
const df = this.docFreq.get(bucket) ?? 0;
|
|
118
|
+
return Math.log((this.docCount + 1) / (df + 1)) + 1;
|
|
119
|
+
}
|
|
120
|
+
vectorise(text) {
|
|
121
|
+
const vec = new Array(DIMS).fill(0);
|
|
122
|
+
const tokens = tokenise(text);
|
|
123
|
+
if (tokens.length === 0)
|
|
124
|
+
return vec;
|
|
125
|
+
for (const t of tokens) {
|
|
126
|
+
vec[djb2(t) % DIMS] += 1;
|
|
127
|
+
}
|
|
128
|
+
// Weight each occupied bucket by IDF, then L2-normalise.
|
|
129
|
+
let norm = 0;
|
|
130
|
+
for (let i = 0; i < DIMS; i++) {
|
|
131
|
+
if (vec[i] > 0)
|
|
132
|
+
vec[i] *= this.idf(i);
|
|
133
|
+
norm += vec[i] * vec[i];
|
|
134
|
+
}
|
|
135
|
+
norm = Math.sqrt(norm);
|
|
136
|
+
if (norm > 0) {
|
|
137
|
+
for (let i = 0; i < DIMS; i++)
|
|
138
|
+
vec[i] /= norm;
|
|
139
|
+
}
|
|
40
140
|
return vec;
|
|
41
|
-
for (const t of tokens) {
|
|
42
|
-
vec[djb2(t) % DIMS] += 1;
|
|
43
141
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
vec[i] /= norm;
|
|
142
|
+
/** Registers `text` as a corpus document (updates docFreq/docCount), then vectorises it against the updated stats. */
|
|
143
|
+
observe(text) {
|
|
144
|
+
const buckets = new Set(tokenise(text).map(t => djb2(t) % DIMS));
|
|
145
|
+
for (const b of buckets)
|
|
146
|
+
this.docFreq.set(b, (this.docFreq.get(b) ?? 0) + 1);
|
|
147
|
+
this.docCount++;
|
|
148
|
+
return this.vectorise(text);
|
|
52
149
|
}
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
class SimpleEmbedder {
|
|
56
|
-
model = 'simple-tfidf-256';
|
|
150
|
+
/** Indexing path — each text counts toward the corpus's document-frequency stats. */
|
|
57
151
|
async embed(texts) {
|
|
58
|
-
|
|
152
|
+
await this.ensureLoaded();
|
|
153
|
+
const vectors = texts.map(t => this.observe(t));
|
|
154
|
+
await this.persist();
|
|
155
|
+
return vectors;
|
|
59
156
|
}
|
|
157
|
+
/** Query path — a search query is not a new corpus document, so it's weighted read-only against current stats, never counted. */
|
|
60
158
|
async embedOne(text) {
|
|
61
|
-
|
|
159
|
+
await this.ensureLoaded();
|
|
160
|
+
return this.vectorise(text);
|
|
62
161
|
}
|
|
63
162
|
}
|
|
64
163
|
exports.SimpleEmbedder = SimpleEmbedder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleEmbedder.js","sourceRoot":"","sources":["../../src/rag/SimpleEmbedder.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"SimpleEmbedder.js","sourceRoot":"","sources":["../../src/rag/SimpleEmbedder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VaultWriter.d.ts","sourceRoot":"","sources":["../../src/rag/VaultWriter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"VaultWriter.d.ts","sourceRoot":"","sources":["../../src/rag/VaultWriter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,MAAM,WAAW,kBAAkB;IAC/B,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,IAAI,EAAE,kBAAkB;IAK9B,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBzD;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;CAgC9C"}
|
package/dist/rag/VaultWriter.js
CHANGED
|
@@ -37,6 +37,7 @@ exports.VaultWriter = void 0;
|
|
|
37
37
|
const fs = __importStar(require("fs/promises"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
39
|
const agent_core_1 = require("@backendkit-labs/agent-core");
|
|
40
|
+
const retry_1 = require("@backendkit-labs/retry");
|
|
40
41
|
/**
|
|
41
42
|
* Writes structured Markdown notes to a shared Obsidian vault.
|
|
42
43
|
*
|
|
@@ -129,24 +130,18 @@ function buildNote(p) {
|
|
|
129
130
|
*/
|
|
130
131
|
async function withFileLock(filePath, fn) {
|
|
131
132
|
const lockPath = `${filePath}.lock`;
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
if (attempt < maxRetries - 1) {
|
|
143
|
-
await sleep(baseDelay * 2 ** attempt + Math.random() * baseDelay);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
throw new Error(`Could not acquire lock for ${path.basename(filePath)} after ${maxRetries} attempts`);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
133
|
+
const maxAttempts = 10;
|
|
134
|
+
// wx = O_WRONLY | O_CREAT | O_EXCL — fails atomically if lock exists
|
|
135
|
+
const acquired = await (0, retry_1.retry)(() => fs.open(lockPath, 'wx'), {
|
|
136
|
+
maxAttempts,
|
|
137
|
+
backoff: { type: 'exponential', baseDelay: 50, jitter: 'full' },
|
|
138
|
+
// lock contention (EEXIST) is a plain Error, not an HTTP-like failure: always retry
|
|
139
|
+
retryIf: () => true,
|
|
140
|
+
});
|
|
141
|
+
if (!acquired.ok) {
|
|
142
|
+
throw new Error(`Could not acquire lock for ${path.basename(filePath)} after ${maxAttempts} attempts`);
|
|
149
143
|
}
|
|
144
|
+
const fd = acquired.value;
|
|
150
145
|
try {
|
|
151
146
|
return await fn();
|
|
152
147
|
}
|
|
@@ -157,7 +152,4 @@ async function withFileLock(filePath, fn) {
|
|
|
157
152
|
}
|
|
158
153
|
}
|
|
159
154
|
}
|
|
160
|
-
function sleep(ms) {
|
|
161
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
162
|
-
}
|
|
163
155
|
//# sourceMappingURL=VaultWriter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VaultWriter.js","sourceRoot":"","sources":["../../src/rag/VaultWriter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAoC;AAEpC,2CAA6B;AAC7B,4DAA4D;
|
|
1
|
+
{"version":3,"file":"VaultWriter.js","sourceRoot":"","sources":["../../src/rag/VaultWriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FailureRecord, DetectedPattern, ManifestPolicyRule } from '@backendkit-labs/agent-core/
|
|
1
|
+
import type { FailureRecord, DetectedPattern, ManifestPolicyRule } from '@backendkit-labs/agent-core/reflection';
|
|
2
2
|
import type { GateRecord } from '../flow/ComplianceGate.js';
|
|
3
3
|
export interface EnterpriseReflectionOptions {
|
|
4
4
|
/** Absolute path to the Obsidian vault. Generated manifest lives inside it. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnterpriseReflection.d.ts","sourceRoot":"","sources":["../../src/reflection/EnterpriseReflection.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"EnterpriseReflection.d.ts","sourceRoot":"","sources":["../../src/reflection/EnterpriseReflection.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAM5D,MAAM,WAAW,2BAA2B;IACxC,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAI,eAAe,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACtB;AAID;;;;;;;;;;GAUG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAW;IACzC,OAAO,CAAU,WAAW,CAAY;IAIxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuC;gBAEtD,IAAI,EAAE,2BAA2B;IA0B7C;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC;;;;OAIG;IACG,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAQrE;;;OAGG;IACG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA+BzD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAOtD;;;;;OAKG;IACG,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgB/F;;;OAGG;IACG,eAAe,CACjB,OAAO,EAAG,eAAe,EACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAI,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAoBhB;;;OAGG;IACG,WAAW,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAQ9E;;;;OAIG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtF;;;;;;OAMG;IACG,kBAAkB,CAAC,IAAI,GAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAanH;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBnF,KAAK;IAOX,OAAO,CAAC,iBAAiB;YAMX,gBAAgB;CAgBjC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReflectionEngine } from '@backendkit-labs/agent-core';
|
|
2
|
-
import type { FailureRecord } from '@backendkit-labs/agent-core/
|
|
2
|
+
import type { FailureRecord } from '@backendkit-labs/agent-core/reflection';
|
|
3
3
|
import type { GateRecord } from '../flow/ComplianceGate.js';
|
|
4
4
|
export interface GateBridgeResult {
|
|
5
5
|
incidents: FailureRecord[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GateReflectionBridge.d.ts","sourceRoot":"","sources":["../../src/reflection/GateReflectionBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"GateReflectionBridge.d.ts","sourceRoot":"","sources":["../../src/reflection/GateReflectionBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AA8B5D,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAG,aAAa,EAAE,CAAC;IAC5B,SAAS,EAAG,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACnC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAG,gBAAgB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAgE3B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backendkit-labs/agent-enterprise",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Business agents with local LLM and RAG knowledge base for agent-core",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"prepublishOnly": "npm run build"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@backendkit-labs/agent-core": "
|
|
19
|
+
"@backendkit-labs/agent-core": "^0.26.0",
|
|
20
|
+
"@backendkit-labs/retry": "^0.1.2",
|
|
20
21
|
"yaml": "^2.4.0"
|
|
21
22
|
},
|
|
22
23
|
"optionalDependencies": {
|