agentlang 0.10.1 → 0.10.3

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.
Files changed (178) hide show
  1. package/README.md +7 -14
  2. package/out/api/http.d.ts +4 -0
  3. package/out/api/http.d.ts.map +1 -1
  4. package/out/api/http.js +307 -26
  5. package/out/api/http.js.map +1 -1
  6. package/out/cli/main.d.ts.map +1 -1
  7. package/out/cli/main.js +3 -0
  8. package/out/cli/main.js.map +1 -1
  9. package/out/extension/main.cjs +250 -250
  10. package/out/extension/main.cjs.map +2 -2
  11. package/out/language/agentlang-validator.d.ts.map +1 -1
  12. package/out/language/agentlang-validator.js +4 -0
  13. package/out/language/agentlang-validator.js.map +1 -1
  14. package/out/language/error-reporter.d.ts +53 -0
  15. package/out/language/error-reporter.d.ts.map +1 -0
  16. package/out/language/error-reporter.js +879 -0
  17. package/out/language/error-reporter.js.map +1 -0
  18. package/out/language/generated/ast.d.ts +77 -2
  19. package/out/language/generated/ast.d.ts.map +1 -1
  20. package/out/language/generated/ast.js +60 -0
  21. package/out/language/generated/ast.js.map +1 -1
  22. package/out/language/generated/grammar.d.ts.map +1 -1
  23. package/out/language/generated/grammar.js +342 -206
  24. package/out/language/generated/grammar.js.map +1 -1
  25. package/out/language/main.cjs +901 -710
  26. package/out/language/main.cjs.map +3 -3
  27. package/out/language/parser.d.ts +4 -2
  28. package/out/language/parser.d.ts.map +1 -1
  29. package/out/language/parser.js +58 -99
  30. package/out/language/parser.js.map +1 -1
  31. package/out/language/syntax.d.ts +16 -0
  32. package/out/language/syntax.d.ts.map +1 -1
  33. package/out/language/syntax.js +66 -27
  34. package/out/language/syntax.js.map +1 -1
  35. package/out/runtime/api.d.ts +2 -0
  36. package/out/runtime/api.d.ts.map +1 -1
  37. package/out/runtime/api.js +25 -0
  38. package/out/runtime/api.js.map +1 -1
  39. package/out/runtime/datefns.d.ts +34 -0
  40. package/out/runtime/datefns.d.ts.map +1 -0
  41. package/out/runtime/datefns.js +82 -0
  42. package/out/runtime/datefns.js.map +1 -0
  43. package/out/runtime/defs.d.ts +1 -0
  44. package/out/runtime/defs.d.ts.map +1 -1
  45. package/out/runtime/defs.js +2 -1
  46. package/out/runtime/defs.js.map +1 -1
  47. package/out/runtime/document-retriever.d.ts +24 -0
  48. package/out/runtime/document-retriever.d.ts.map +1 -0
  49. package/out/runtime/document-retriever.js +258 -0
  50. package/out/runtime/document-retriever.js.map +1 -0
  51. package/out/runtime/embeddings/chunker.d.ts +18 -0
  52. package/out/runtime/embeddings/chunker.d.ts.map +1 -1
  53. package/out/runtime/embeddings/chunker.js +47 -15
  54. package/out/runtime/embeddings/chunker.js.map +1 -1
  55. package/out/runtime/embeddings/openai.d.ts.map +1 -1
  56. package/out/runtime/embeddings/openai.js +22 -9
  57. package/out/runtime/embeddings/openai.js.map +1 -1
  58. package/out/runtime/embeddings/provider.d.ts +1 -0
  59. package/out/runtime/embeddings/provider.d.ts.map +1 -1
  60. package/out/runtime/embeddings/provider.js +20 -1
  61. package/out/runtime/embeddings/provider.js.map +1 -1
  62. package/out/runtime/exec-graph.d.ts.map +1 -1
  63. package/out/runtime/exec-graph.js +22 -3
  64. package/out/runtime/exec-graph.js.map +1 -1
  65. package/out/runtime/integration-client.d.ts +21 -0
  66. package/out/runtime/integration-client.d.ts.map +1 -0
  67. package/out/runtime/integration-client.js +112 -0
  68. package/out/runtime/integration-client.js.map +1 -0
  69. package/out/runtime/integrations.d.ts.map +1 -1
  70. package/out/runtime/integrations.js +20 -9
  71. package/out/runtime/integrations.js.map +1 -1
  72. package/out/runtime/interpreter.d.ts +10 -0
  73. package/out/runtime/interpreter.d.ts.map +1 -1
  74. package/out/runtime/interpreter.js +221 -22
  75. package/out/runtime/interpreter.js.map +1 -1
  76. package/out/runtime/loader.d.ts.map +1 -1
  77. package/out/runtime/loader.js +70 -7
  78. package/out/runtime/loader.js.map +1 -1
  79. package/out/runtime/logger.d.ts.map +1 -1
  80. package/out/runtime/logger.js +8 -1
  81. package/out/runtime/logger.js.map +1 -1
  82. package/out/runtime/module.d.ts +18 -0
  83. package/out/runtime/module.d.ts.map +1 -1
  84. package/out/runtime/module.js +91 -3
  85. package/out/runtime/module.js.map +1 -1
  86. package/out/runtime/modules/ai.d.ts +16 -5
  87. package/out/runtime/modules/ai.d.ts.map +1 -1
  88. package/out/runtime/modules/ai.js +286 -88
  89. package/out/runtime/modules/ai.js.map +1 -1
  90. package/out/runtime/modules/core.d.ts.map +1 -1
  91. package/out/runtime/modules/core.js +5 -1
  92. package/out/runtime/modules/core.js.map +1 -1
  93. package/out/runtime/monitor.d.ts +6 -0
  94. package/out/runtime/monitor.d.ts.map +1 -1
  95. package/out/runtime/monitor.js +21 -1
  96. package/out/runtime/monitor.js.map +1 -1
  97. package/out/runtime/relgraph.d.ts.map +1 -1
  98. package/out/runtime/relgraph.js +7 -3
  99. package/out/runtime/relgraph.js.map +1 -1
  100. package/out/runtime/resolvers/interface.d.ts +7 -2
  101. package/out/runtime/resolvers/interface.d.ts.map +1 -1
  102. package/out/runtime/resolvers/interface.js +17 -3
  103. package/out/runtime/resolvers/interface.js.map +1 -1
  104. package/out/runtime/resolvers/sqldb/database.d.ts +2 -0
  105. package/out/runtime/resolvers/sqldb/database.d.ts.map +1 -1
  106. package/out/runtime/resolvers/sqldb/database.js +142 -126
  107. package/out/runtime/resolvers/sqldb/database.js.map +1 -1
  108. package/out/runtime/resolvers/sqldb/dbutil.d.ts.map +1 -1
  109. package/out/runtime/resolvers/sqldb/dbutil.js +25 -4
  110. package/out/runtime/resolvers/sqldb/dbutil.js.map +1 -1
  111. package/out/runtime/resolvers/sqldb/impl.d.ts +2 -1
  112. package/out/runtime/resolvers/sqldb/impl.d.ts.map +1 -1
  113. package/out/runtime/resolvers/sqldb/impl.js +24 -7
  114. package/out/runtime/resolvers/sqldb/impl.js.map +1 -1
  115. package/out/runtime/resolvers/vector/lancedb-store.d.ts +16 -0
  116. package/out/runtime/resolvers/vector/lancedb-store.d.ts.map +1 -0
  117. package/out/runtime/resolvers/vector/lancedb-store.js +159 -0
  118. package/out/runtime/resolvers/vector/lancedb-store.js.map +1 -0
  119. package/out/runtime/resolvers/vector/types.d.ts +32 -0
  120. package/out/runtime/resolvers/vector/types.d.ts.map +1 -0
  121. package/out/runtime/resolvers/vector/types.js +2 -0
  122. package/out/runtime/resolvers/vector/types.js.map +1 -0
  123. package/out/runtime/services/documentFetcher.d.ts.map +1 -1
  124. package/out/runtime/services/documentFetcher.js +21 -6
  125. package/out/runtime/services/documentFetcher.js.map +1 -1
  126. package/out/runtime/state.d.ts +19 -1
  127. package/out/runtime/state.d.ts.map +1 -1
  128. package/out/runtime/state.js +36 -1
  129. package/out/runtime/state.js.map +1 -1
  130. package/out/runtime/util.d.ts +3 -2
  131. package/out/runtime/util.d.ts.map +1 -1
  132. package/out/runtime/util.js +13 -2
  133. package/out/runtime/util.js.map +1 -1
  134. package/out/syntaxes/agentlang.monarch.js +1 -1
  135. package/out/syntaxes/agentlang.monarch.js.map +1 -1
  136. package/out/test-harness.d.ts +36 -0
  137. package/out/test-harness.d.ts.map +1 -0
  138. package/out/test-harness.js +341 -0
  139. package/out/test-harness.js.map +1 -0
  140. package/package.json +22 -19
  141. package/src/api/http.ts +336 -38
  142. package/src/cli/main.ts +3 -0
  143. package/src/language/agentlang-validator.ts +3 -0
  144. package/src/language/agentlang.langium +6 -2
  145. package/src/language/error-reporter.ts +1028 -0
  146. package/src/language/generated/ast.ts +94 -1
  147. package/src/language/generated/grammar.ts +342 -206
  148. package/src/language/parser.ts +64 -101
  149. package/src/language/syntax.ts +79 -24
  150. package/src/runtime/api.ts +36 -0
  151. package/src/runtime/datefns.ts +112 -0
  152. package/src/runtime/defs.ts +2 -1
  153. package/src/runtime/document-retriever.ts +311 -0
  154. package/src/runtime/embeddings/chunker.ts +52 -14
  155. package/src/runtime/embeddings/openai.ts +27 -9
  156. package/src/runtime/embeddings/provider.ts +22 -1
  157. package/src/runtime/exec-graph.ts +23 -2
  158. package/src/runtime/integration-client.ts +158 -0
  159. package/src/runtime/integrations.ts +20 -11
  160. package/src/runtime/interpreter.ts +221 -15
  161. package/src/runtime/loader.ts +83 -5
  162. package/src/runtime/logger.ts +12 -1
  163. package/src/runtime/module.ts +104 -3
  164. package/src/runtime/modules/ai.ts +341 -107
  165. package/src/runtime/modules/core.ts +5 -1
  166. package/src/runtime/monitor.ts +27 -1
  167. package/src/runtime/relgraph.ts +7 -3
  168. package/src/runtime/resolvers/interface.ts +23 -3
  169. package/src/runtime/resolvers/sqldb/database.ts +158 -130
  170. package/src/runtime/resolvers/sqldb/dbutil.ts +28 -6
  171. package/src/runtime/resolvers/sqldb/impl.ts +25 -7
  172. package/src/runtime/resolvers/vector/lancedb-store.ts +187 -0
  173. package/src/runtime/resolvers/vector/types.ts +39 -0
  174. package/src/runtime/services/documentFetcher.ts +21 -6
  175. package/src/runtime/state.ts +40 -1
  176. package/src/runtime/util.ts +19 -2
  177. package/src/syntaxes/agentlang.monarch.ts +1 -1
  178. package/src/test-harness.ts +423 -0
@@ -0,0 +1,258 @@
1
+ import { logger } from './logger.js';
2
+ import { AppConfig } from './state.js';
3
+ import { TextChunker } from './embeddings/chunker.js';
4
+ import { OpenAIEmbeddingProvider } from './embeddings/openai.js';
5
+ import { LanceDBVectorStore } from './resolvers/vector/lancedb-store.js';
6
+ import crypto from 'crypto';
7
+ import { readFileSync } from 'fs';
8
+ import { resolve as pathResolve } from 'path';
9
+ const VECTOR_DIMENSION = 1536;
10
+ function usePgvector() {
11
+ var _a, _b, _c;
12
+ if (((_a = AppConfig === null || AppConfig === void 0 ? void 0 : AppConfig.vectorStore) === null || _a === void 0 ? void 0 : _a.type) === 'pgvector')
13
+ return true;
14
+ if (((_b = AppConfig === null || AppConfig === void 0 ? void 0 : AppConfig.vectorStore) === null || _b === void 0 ? void 0 : _b.type) === 'lancedb')
15
+ return false;
16
+ return ((_c = AppConfig === null || AppConfig === void 0 ? void 0 : AppConfig.store) === null || _c === void 0 ? void 0 : _c.type) === 'postgres';
17
+ }
18
+ /**
19
+ * Local document retriever — embeds documents into pgvector or LanceDB
20
+ * and retrieves relevant chunks via vector similarity search.
21
+ */
22
+ class DocumentRetriever {
23
+ constructor() {
24
+ this.vectorStore = null;
25
+ this.embeddingProvider = null;
26
+ this.chunker = null;
27
+ this.localChunks = new Map();
28
+ this.processedDocuments = new Set();
29
+ this.initialized = false;
30
+ }
31
+ async ensureInit() {
32
+ var _a;
33
+ if (this.initialized)
34
+ return;
35
+ this.chunker = new TextChunker(1000, 200);
36
+ this.embeddingProvider = new OpenAIEmbeddingProvider({
37
+ model: 'text-embedding-3-small',
38
+ });
39
+ if (!usePgvector()) {
40
+ const dbPath = ((_a = AppConfig === null || AppConfig === void 0 ? void 0 : AppConfig.vectorStore) === null || _a === void 0 ? void 0 : _a.type) === 'lancedb'
41
+ ? AppConfig.vectorStore.dbname || './data/document-vectors.lance'
42
+ : './data/document-vectors.lance';
43
+ this.vectorStore = new LanceDBVectorStore({
44
+ moduleName: 'documents',
45
+ vectorDimension: VECTOR_DIMENSION,
46
+ dbname: dbPath,
47
+ });
48
+ await this.vectorStore.init();
49
+ logger.info(`[DOCUMENT-RETRIEVER] LanceDB vector store initialized at ${dbPath}`);
50
+ }
51
+ else {
52
+ try {
53
+ const ag = globalThis.agentlang;
54
+ if (ag === null || ag === void 0 ? void 0 : ag.rawQuery) {
55
+ await ag.rawQuery(`
56
+ CREATE TABLE IF NOT EXISTS document_local_chunks (
57
+ id TEXT PRIMARY KEY,
58
+ content TEXT NOT NULL,
59
+ document_title TEXT NOT NULL,
60
+ chunk_index INTEGER NOT NULL,
61
+ embedding vector(${VECTOR_DIMENSION})
62
+ )
63
+ `);
64
+ try {
65
+ await ag.rawQuery(`
66
+ CREATE INDEX IF NOT EXISTS idx_document_local_chunks_embedding
67
+ ON document_local_chunks USING hnsw (embedding vector_cosine_ops)
68
+ `);
69
+ }
70
+ catch (_b) {
71
+ // Index may already exist or pgvector extension not loaded
72
+ }
73
+ logger.info('[DOCUMENT-RETRIEVER] pgvector local chunks table initialized');
74
+ }
75
+ }
76
+ catch (err) {
77
+ logger.warn(`[DOCUMENT-RETRIEVER] Failed to initialize pgvector table: ${err}`);
78
+ }
79
+ }
80
+ this.initialized = true;
81
+ }
82
+ async processDocument(title, url) {
83
+ if (this.processedDocuments.has(title))
84
+ return;
85
+ await this.ensureInit();
86
+ try {
87
+ let content;
88
+ if (url.startsWith('http://') || url.startsWith('https://')) {
89
+ const resp = await fetch(url);
90
+ if (!resp.ok) {
91
+ logger.warn(`[DOCUMENT-RETRIEVER] Failed to fetch "${title}" from ${url}: ${resp.status}`);
92
+ return;
93
+ }
94
+ content = await resp.text();
95
+ }
96
+ else {
97
+ const filePath = pathResolve(url);
98
+ try {
99
+ content = readFileSync(filePath, 'utf-8');
100
+ }
101
+ catch (err) {
102
+ logger.warn(`[DOCUMENT-RETRIEVER] Failed to read "${title}" from ${filePath}: ${err}`);
103
+ return;
104
+ }
105
+ }
106
+ if (!content || content.trim().length === 0) {
107
+ logger.debug(`[DOCUMENT-RETRIEVER] Document "${title}" is empty, skipping`);
108
+ this.processedDocuments.add(title);
109
+ return;
110
+ }
111
+ const chunks = this.chunker.splitText(content);
112
+ logger.debug(`[DOCUMENT-RETRIEVER] Document "${title}": ${chunks.length} chunks`);
113
+ if (chunks.length === 0) {
114
+ this.processedDocuments.add(title);
115
+ return;
116
+ }
117
+ const embeddings = await this.embeddingProvider.embedTexts(chunks);
118
+ if (usePgvector()) {
119
+ await this.storePgvectorChunks(title, chunks, embeddings);
120
+ }
121
+ else {
122
+ await this.storeLanceDBChunks(title, chunks, embeddings);
123
+ }
124
+ this.processedDocuments.add(title);
125
+ logger.info(`[DOCUMENT-RETRIEVER] Processed "${title}": ${chunks.length} chunks embedded and stored`);
126
+ }
127
+ catch (err) {
128
+ logger.warn(`[DOCUMENT-RETRIEVER] Error processing "${title}": ${err}`);
129
+ }
130
+ }
131
+ async storePgvectorChunks(title, chunks, embeddings) {
132
+ const ag = globalThis.agentlang;
133
+ if (!(ag === null || ag === void 0 ? void 0 : ag.rawQuery))
134
+ return;
135
+ for (let i = 0; i < chunks.length; i++) {
136
+ const id = crypto.randomUUID();
137
+ const embeddingStr = `[${embeddings[i].join(',')}]`;
138
+ await ag.rawQuery(`INSERT INTO document_local_chunks (id, content, document_title, chunk_index, embedding)
139
+ VALUES ($1, $2, $3, $4, $5::vector)
140
+ ON CONFLICT (id) DO NOTHING`, [id, chunks[i], title, i, embeddingStr]);
141
+ this.localChunks.set(id, {
142
+ id,
143
+ content: chunks[i],
144
+ documentTitle: title,
145
+ chunkIndex: i,
146
+ });
147
+ }
148
+ }
149
+ async storeLanceDBChunks(title, chunks, embeddings) {
150
+ if (!this.vectorStore)
151
+ return;
152
+ for (let i = 0; i < chunks.length; i++) {
153
+ const id = crypto.randomUUID();
154
+ await this.vectorStore.addEmbedding({
155
+ id,
156
+ embedding: embeddings[i],
157
+ documentId: title,
158
+ });
159
+ this.localChunks.set(id, {
160
+ id,
161
+ content: chunks[i],
162
+ documentTitle: title,
163
+ chunkIndex: i,
164
+ });
165
+ }
166
+ }
167
+ async query(queryText, documentTitles, limit = 10) {
168
+ await this.ensureInit();
169
+ try {
170
+ const results = usePgvector()
171
+ ? await this.queryPgvector(queryText, documentTitles, limit)
172
+ : await this.queryLanceDB(queryText, documentTitles, limit);
173
+ if (results.length === 0)
174
+ return '';
175
+ return results.map(r => r.content).join('\n\n---\n\n');
176
+ }
177
+ catch (err) {
178
+ logger.debug(`[DOCUMENT-RETRIEVER] Query failed: ${err}`);
179
+ return '';
180
+ }
181
+ }
182
+ async queryPgvector(queryText, documentTitles, limit = 10) {
183
+ const ag = globalThis.agentlang;
184
+ if (!(ag === null || ag === void 0 ? void 0 : ag.rawQuery))
185
+ return [];
186
+ const queryEmbedding = await this.embeddingProvider.embedText(queryText);
187
+ const embeddingStr = `[${queryEmbedding.join(',')}]`;
188
+ let sql;
189
+ let params;
190
+ if (documentTitles && documentTitles.length > 0) {
191
+ const placeholders = documentTitles.map((_, i) => `$${i + 2}`).join(', ');
192
+ sql = `SELECT id, content, document_title, 1 - (embedding <=> $1::vector) AS similarity
193
+ FROM document_local_chunks
194
+ WHERE document_title IN (${placeholders})
195
+ ORDER BY embedding <=> $1::vector
196
+ LIMIT ${limit}`;
197
+ params = [embeddingStr, ...documentTitles];
198
+ }
199
+ else {
200
+ sql = `SELECT id, content, document_title, 1 - (embedding <=> $1::vector) AS similarity
201
+ FROM document_local_chunks
202
+ ORDER BY embedding <=> $1::vector
203
+ LIMIT ${limit}`;
204
+ params = [embeddingStr];
205
+ }
206
+ const rows = await ag.rawQuery(sql, params);
207
+ return (rows || []).map((r) => ({
208
+ id: r.id,
209
+ content: r.content,
210
+ similarity: parseFloat(r.similarity) || 0,
211
+ }));
212
+ }
213
+ async queryLanceDB(queryText, documentTitles, limit = 10) {
214
+ if (!this.vectorStore)
215
+ return [];
216
+ const queryEmbedding = await this.embeddingProvider.embedText(queryText);
217
+ const searchResults = await this.vectorStore.search(queryEmbedding, undefined, undefined, limit);
218
+ const results = [];
219
+ for (const sr of searchResults) {
220
+ const chunk = this.localChunks.get(sr.id);
221
+ if (!chunk)
222
+ continue;
223
+ if (documentTitles && documentTitles.length > 0) {
224
+ if (!documentTitles.includes(chunk.documentTitle))
225
+ continue;
226
+ }
227
+ results.push({
228
+ id: sr.id,
229
+ content: chunk.content,
230
+ similarity: 1 - (sr.distance || 0),
231
+ });
232
+ }
233
+ return results.slice(0, limit);
234
+ }
235
+ async close() {
236
+ if (this.vectorStore) {
237
+ await this.vectorStore.close();
238
+ this.vectorStore = null;
239
+ }
240
+ this.localChunks.clear();
241
+ this.processedDocuments.clear();
242
+ this.initialized = false;
243
+ }
244
+ }
245
+ let retrieverInstance = null;
246
+ export function getDocumentRetriever() {
247
+ if (!retrieverInstance) {
248
+ retrieverInstance = new DocumentRetriever();
249
+ }
250
+ return retrieverInstance;
251
+ }
252
+ export function resetDocumentRetriever() {
253
+ if (retrieverInstance) {
254
+ retrieverInstance.close().catch(() => { });
255
+ retrieverInstance = null;
256
+ }
257
+ }
258
+ //# sourceMappingURL=document-retriever.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-retriever.js","sourceRoot":"","sources":["../../src/runtime/document-retriever.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,26 @@
1
+ /**
2
+ * Streaming text chunker - yields chunks one at a time without storing all in memory.
3
+ */
1
4
  export declare class TextChunker {
2
5
  private chunkSize;
3
6
  private chunkOverlap;
4
7
  private separators;
5
8
  constructor(chunkSize?: number, chunkOverlap?: number);
9
+ /**
10
+ * Calculate total chunks without creating them all in memory.
11
+ * Used for logging/progress tracking.
12
+ */
13
+ estimateChunks(text: string): number;
14
+ /**
15
+ * Streaming generator that yields chunks one at a time.
16
+ * Memory-efficient: doesn't store all chunks in an array.
17
+ */
18
+ streamChunks(text: string): Generator<string, void, unknown>;
19
+ /**
20
+ * Legacy method for backwards compatibility.
21
+ * ⚠️ WARNING: This creates all chunks in memory and can cause OOM on large documents.
22
+ * Prefer streamChunks() for large documents.
23
+ */
6
24
  splitText(text: string): string[];
7
25
  private findBestSplitPoint;
8
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../../src/runtime/embeddings/chunker.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,SAAS,GAAE,MAAa,EAAE,YAAY,GAAE,MAAY;IAKhE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IA8BjC,OAAO,CAAC,kBAAkB;CAS3B"}
1
+ {"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../../src/runtime/embeddings/chunker.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,SAAS,GAAE,MAAa,EAAE,YAAY,GAAE,MAAY;IAUhE;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IASpC;;;OAGG;IACF,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;IAkC7D;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAIjC,OAAO,CAAC,kBAAkB;CAS3B"}
@@ -1,32 +1,64 @@
1
+ /**
2
+ * Streaming text chunker - yields chunks one at a time without storing all in memory.
3
+ */
1
4
  export class TextChunker {
2
5
  constructor(chunkSize = 1000, chunkOverlap = 200) {
3
6
  this.separators = ['\n\n', '\n', '. ', ' ', ''];
4
- this.chunkSize = chunkSize;
5
- this.chunkOverlap = chunkOverlap;
7
+ // Ensure valid values - overlap must be less than chunk size to avoid infinite loop
8
+ this.chunkSize = Math.max(100, chunkSize || 1000);
9
+ // Cap overlap to at most 20% of chunk size to ensure progress
10
+ this.chunkOverlap = Math.max(0, Math.min(chunkOverlap || 200, Math.floor(this.chunkSize * 0.2)));
6
11
  }
7
- splitText(text) {
12
+ /**
13
+ * Calculate total chunks without creating them all in memory.
14
+ * Used for logging/progress tracking.
15
+ */
16
+ estimateChunks(text) {
17
+ if (text.length <= this.chunkSize) {
18
+ return 1;
19
+ }
20
+ // Rough estimate: (text length / effective chunk size) + 1
21
+ const effectiveChunkSize = this.chunkSize - this.chunkOverlap;
22
+ return Math.ceil(text.length / effectiveChunkSize);
23
+ }
24
+ /**
25
+ * Streaming generator that yields chunks one at a time.
26
+ * Memory-efficient: doesn't store all chunks in an array.
27
+ */
28
+ *streamChunks(text) {
8
29
  if (text.length <= this.chunkSize) {
9
- return [text];
30
+ yield text;
31
+ return;
10
32
  }
11
- const chunks = [];
12
33
  let start = 0;
34
+ const minAdvance = Math.max(50, this.chunkSize - this.chunkOverlap); // Ensure we always advance
13
35
  while (start < text.length) {
14
36
  let end = Math.min(start + this.chunkSize, text.length);
15
37
  if (end < text.length) {
16
- end = this.findBestSplitPoint(text, start, end);
17
- }
18
- chunks.push(text.substring(start, end));
19
- start = end - this.chunkOverlap;
20
- if (start < 0)
21
- start = 0;
22
- if (start >= text.length - this.chunkOverlap) {
23
- if (start < text.length) {
24
- chunks.push(text.substring(start));
38
+ // Try to find a good split point, but ensure we advance by at least minAdvance
39
+ const splitPoint = this.findBestSplitPoint(text, start, end);
40
+ // Only use split point if it gives us reasonable progress
41
+ if (splitPoint - start >= minAdvance * 0.5) {
42
+ end = splitPoint;
25
43
  }
44
+ // Otherwise use the hard end to ensure progress
45
+ }
46
+ yield text.substring(start, end);
47
+ // Advance by at least minAdvance characters to avoid infinite loops
48
+ const nextStart = end - this.chunkOverlap;
49
+ start = Math.max(nextStart, start + minAdvance * 0.5);
50
+ if (start >= text.length) {
26
51
  break;
27
52
  }
28
53
  }
29
- return chunks;
54
+ }
55
+ /**
56
+ * Legacy method for backwards compatibility.
57
+ * ⚠️ WARNING: This creates all chunks in memory and can cause OOM on large documents.
58
+ * Prefer streamChunks() for large documents.
59
+ */
60
+ splitText(text) {
61
+ return Array.from(this.streamChunks(text));
30
62
  }
31
63
  findBestSplitPoint(text, start, end) {
32
64
  for (const sep of this.separators) {
@@ -1 +1 @@
1
- {"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../../src/runtime/embeddings/chunker.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IAKtB,YAAY,YAAoB,IAAI,EAAE,eAAuB,GAAG;QAFxD,eAAU,GAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAG3D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAExD,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACtB,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACxC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;YAEhC,IAAI,KAAK,GAAG,CAAC;gBAAE,KAAK,GAAG,CAAC,CAAC;YACzB,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;oBACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;gBACrC,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,kBAAkB,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;QACjE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC3C,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
1
+ {"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../../src/runtime/embeddings/chunker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/runtime/embeddings/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAG3E,MAAM,WAAW,qBAAsB,SAAQ,uBAAuB;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,uBAAwB,SAAQ,iBAAiB;IAC5D,OAAO,CAAC,YAAY,CAAwB;gBAEhC,MAAM,CAAC,EAAE,uBAAuB;IAK5C,SAAS,CAAC,gBAAgB,IAAI,gBAAgB;IAoB9C,SAAS,CAAC,aAAa,IAAI,MAAM;IAOjC,eAAe,IAAI,MAAM;CAG1B"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/runtime/embeddings/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAI3E,MAAM,WAAW,qBAAsB,SAAQ,uBAAuB;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,uBAAwB,SAAQ,iBAAiB;IAC5D,OAAO,CAAC,YAAY,CAAwB;gBAEhC,MAAM,CAAC,EAAE,uBAAuB;IAQ5C,SAAS,CAAC,gBAAgB,IAAI,gBAAgB;IAwB9C,SAAS,CAAC,aAAa,IAAI,MAAM;IAiBjC,eAAe,IAAI,MAAM;CAG1B"}
@@ -1,31 +1,44 @@
1
1
  import { OpenAIEmbeddings } from '@langchain/openai';
2
2
  import { EmbeddingProvider } from './provider.js';
3
3
  import { getLocalEnv } from '../auth/defs.js';
4
+ import { logger } from '../logger.js';
4
5
  export class OpenAIEmbeddingProvider extends EmbeddingProvider {
5
6
  constructor(config) {
6
7
  super(config || {});
7
8
  this.openaiConfig = this.config || {};
9
+ logger.debug(`[OPENAI-EMBEDDING] Provider created with model: ${this.openaiConfig.model || 'default'}`);
8
10
  }
9
11
  createEmbeddings() {
10
12
  const config = {
11
13
  apiKey: this.resolveApiKey(),
12
14
  };
13
- if (this.openaiConfig.model) {
14
- config.model = this.openaiConfig.model;
15
+ // Use this.config directly since this.openaiConfig is not initialized yet
16
+ // during parent constructor (super() calls createEmbeddings before child init)
17
+ const openaiConfig = this.config || {};
18
+ if (openaiConfig === null || openaiConfig === void 0 ? void 0 : openaiConfig.model) {
19
+ config.model = openaiConfig.model;
15
20
  }
16
- if (this.openaiConfig.dimensions) {
17
- config.dimensions = this.openaiConfig.dimensions;
21
+ if (openaiConfig === null || openaiConfig === void 0 ? void 0 : openaiConfig.dimensions) {
22
+ config.dimensions = openaiConfig.dimensions;
18
23
  }
19
- if (this.openaiConfig.maxRetries !== undefined) {
20
- config.maxRetries = this.openaiConfig.maxRetries;
24
+ if ((openaiConfig === null || openaiConfig === void 0 ? void 0 : openaiConfig.maxRetries) !== undefined) {
25
+ config.maxRetries = openaiConfig.maxRetries;
21
26
  }
22
27
  return new OpenAIEmbeddings(config);
23
28
  }
24
29
  resolveApiKey() {
25
- if (this.openaiConfig.apiKey) {
26
- return this.openaiConfig.apiKey;
30
+ // Use this.config directly since this.openaiConfig may not be initialized yet
31
+ // during constructor (createEmbeddings is called during super())
32
+ const config = this.openaiConfig || this.config || {};
33
+ if (config.apiKey) {
34
+ return config.apiKey;
27
35
  }
28
- return process.env.AGENTLANG_OPENAI_KEY || getLocalEnv('AGENTLANG_OPENAI_KEY') || '';
36
+ const envKey = process.env.AGENTLANG_OPENAI_KEY || getLocalEnv('AGENTLANG_OPENAI_KEY');
37
+ if (envKey) {
38
+ return envKey;
39
+ }
40
+ logger.warn(`[OPENAI-EMBEDDING] No API key found! Set AGENTLANG_OPENAI_KEY environment variable.`);
41
+ return '';
29
42
  }
30
43
  getProviderName() {
31
44
  return 'openai';
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/runtime/embeddings/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAA2B,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAQ9C,MAAM,OAAO,uBAAwB,SAAQ,iBAAiB;IAG5D,YAAY,MAAgC;QAC1C,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACpB,IAAI,CAAC,YAAY,GAAI,IAAI,CAAC,MAAgC,IAAI,EAAE,CAAC;IACnE,CAAC;IAES,gBAAgB;QACxB,MAAM,MAAM,GAAQ;YAClB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;SAC7B,CAAC;QAEF,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QACzC,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC/C,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;QACnD,CAAC;QAED,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAES,aAAa;QACrB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAClC,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,WAAW,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;IACvF,CAAC;IAED,eAAe;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/runtime/embeddings/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAA2B,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAQtC,MAAM,OAAO,uBAAwB,SAAQ,iBAAiB;IAG5D,YAAY,MAAgC;QAC1C,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACpB,IAAI,CAAC,YAAY,GAAI,IAAI,CAAC,MAAgC,IAAI,EAAE,CAAC;QACjE,MAAM,CAAC,KAAK,CACV,mDAAmD,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,SAAS,EAAE,CAC1F,CAAC;IACJ,CAAC;IAES,gBAAgB;QACxB,MAAM,MAAM,GAAQ;YAClB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;SAC7B,CAAC;QAEF,0EAA0E;QAC1E,+EAA+E;QAC/E,MAAM,YAAY,GAAI,IAAI,CAAC,MAAgC,IAAI,EAAE,CAAC;QAElE,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QACpC,CAAC;QAED,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,EAAE,CAAC;YAC7B,MAAM,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;QAC9C,CAAC;QAED,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,MAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAES,aAAa;QACrB,8EAA8E;QAC9E,iEAAiE;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAK,IAAI,CAAC,MAAgC,IAAI,EAAE,CAAC;QACjF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,WAAW,CAAC,sBAAsB,CAAC,CAAC;QACvF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,CAAC,IAAI,CACT,qFAAqF,CACtF,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,eAAe;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
@@ -14,6 +14,7 @@ export declare abstract class EmbeddingProvider {
14
14
  protected abstract resolveApiKey(): string;
15
15
  abstract getProviderName(): string;
16
16
  embedText(text: string): Promise<number[]>;
17
+ embedTexts(texts: string[]): Promise<number[][]>;
17
18
  getConfig(): EmbeddingProviderConfig;
18
19
  updateConfig(newConfig: Partial<EmbeddingProviderConfig>): void;
19
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/runtime/embeddings/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,8BAAsB,iBAAiB;IACrC,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC;IAC1C,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;gBAErB,MAAM,GAAE,uBAA4B;IAKhD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,IAAI,UAAU;IACjD,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,MAAM;IAE1C,QAAQ,CAAC,eAAe,IAAI,MAAM;IAE5B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIhD,SAAS,IAAI,uBAAuB;IAIpC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI;CAIhE"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/runtime/embeddings/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,8BAAsB,iBAAiB;IACrC,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC;IAC1C,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;gBAErB,MAAM,GAAE,uBAA4B;IAKhD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,IAAI,UAAU;IACjD,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,MAAM;IAE1C,QAAQ,CAAC,eAAe,IAAI,MAAM;IAE5B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAW1C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAatD,SAAS,IAAI,uBAAuB;IAIpC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI;CAIhE"}
@@ -1,10 +1,29 @@
1
+ import { logger } from '../logger.js';
1
2
  export class EmbeddingProvider {
2
3
  constructor(config = {}) {
3
4
  this.config = config;
4
5
  this.embeddings = this.createEmbeddings();
5
6
  }
6
7
  async embedText(text) {
7
- return await this.embeddings.embedQuery(text);
8
+ logger.debug(`[EMBEDDING-PROVIDER] embedText called (${text.length} chars)`);
9
+ const startTime = Date.now();
10
+ const result = await this.embeddings.embedQuery(text);
11
+ const duration = Date.now() - startTime;
12
+ logger.debug(`[EMBEDDING-PROVIDER] embedText completed in ${duration}ms (${result.length} dimensions)`);
13
+ return result;
14
+ }
15
+ async embedTexts(texts) {
16
+ var _a;
17
+ if (texts.length === 0)
18
+ return [];
19
+ if (texts.length === 1)
20
+ return [await this.embedText(texts[0])];
21
+ logger.debug(`[EMBEDDING-PROVIDER] embedTexts called (${texts.length} texts)`);
22
+ const startTime = Date.now();
23
+ const results = await this.embeddings.embedDocuments(texts);
24
+ const duration = Date.now() - startTime;
25
+ logger.debug(`[EMBEDDING-PROVIDER] embedTexts completed in ${duration}ms (${texts.length} texts, ${((_a = results[0]) === null || _a === void 0 ? void 0 : _a.length) || 0} dimensions)`);
26
+ return results;
8
27
  }
9
28
  getConfig() {
10
29
  return Object.assign({}, this.config);
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/runtime/embeddings/provider.ts"],"names":[],"mappings":"AAUA,MAAM,OAAgB,iBAAiB;IAIrC,YAAY,SAAkC,EAAE;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC;IAOD,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,SAAS;QACP,yBAAY,IAAI,CAAC,MAAM,EAAG;IAC5B,CAAC;IAED,YAAY,CAAC,SAA2C;QACtD,IAAI,CAAC,MAAM,mCAAQ,IAAI,CAAC,MAAM,GAAK,SAAS,CAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC;CACF"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/runtime/embeddings/provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAUtC,MAAM,OAAgB,iBAAiB;IAIrC,YAAY,SAAkC,EAAE;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC;IAOD,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,CAAC,KAAK,CAAC,0CAA0C,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,CAAC,KAAK,CACV,+CAA+C,QAAQ,OAAO,MAAM,CAAC,MAAM,cAAc,CAC1F,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAe;;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,KAAK,CAAC,2CAA2C,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,CAAC,KAAK,CACV,gDAAgD,QAAQ,OAAO,KAAK,CAAC,MAAM,WAAW,CAAA,MAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,MAAM,KAAI,CAAC,cAAc,CAC5H,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,SAAS;QACP,yBAAY,IAAI,CAAC,MAAM,EAAG;IAC5B,CAAC;IAED,YAAY,CAAC,SAA2C;QACtD,IAAI,CAAC,MAAM,mCAAQ,IAAI,CAAC,MAAM,GAAK,SAAS,CAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"exec-graph.d.ts","sourceRoot":"","sources":["../../src/runtime/exec-graph.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,SAAS,EAAgD,MAAM,WAAW,CAAC;AACpF,OAAO,EAEL,WAAW,EAaZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,QAAQ,EAMT,MAAM,aAAa,CAAC;AAerB,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAY9F;AAmJD,wBAAsB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAgGvF;AA8FD,wBAAsB,YAAY,CAChC,aAAa,EAAE,QAAQ,EACvB,YAAY,CAAC,EAAE,QAAQ,EACvB,SAAS,CAAC,EAAE,WAAW,EACvB,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAAC,GAAG,CAAC,CAoCd;AAED,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAqDjG;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,WAAW,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,GAAG,CAAC,CAEd;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,CAAC,EAAE,WAAW,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,GAAG,CAAC,CASd;AAuCD,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,WAAW,GACtB,OAAO,CAAC,GAAG,CAAC,CA0Bd;AAqBD,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,yBAAyB,EAAE,QAAQ,CAAC;CACrC,CAAC;AAEF,wBAAgB,oBAAoB,IAAI,OAAO,CAI9C;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAO9D"}
1
+ {"version":3,"file":"exec-graph.d.ts","sourceRoot":"","sources":["../../src/runtime/exec-graph.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,SAAS,EAAgD,MAAM,WAAW,CAAC;AACpF,OAAO,EAEL,WAAW,EAaZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,QAAQ,EAMT,MAAM,aAAa,CAAC;AAerB,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAY9F;AAmJD,wBAAsB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAgGvF;AA8FD,wBAAsB,YAAY,CAChC,aAAa,EAAE,QAAQ,EACvB,YAAY,CAAC,EAAE,QAAQ,EACvB,SAAS,CAAC,EAAE,WAAW,EACvB,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAAC,GAAG,CAAC,CAsDd;AAED,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAwDjG;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,WAAW,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,GAAG,CAAC,CAEd;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,CAAC,EAAE,WAAW,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,GAAG,CAAC,CASd;AAuCD,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,WAAW,GACtB,OAAO,CAAC,GAAG,CAAC,CA0Bd;AAqBD,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,yBAAyB,EAAE,QAAQ,CAAC;CACrC,CAAC;AAEF,wBAAgB,oBAAoB,IAAI,OAAO,CAI9C;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAO9D"}
@@ -233,9 +233,9 @@ export async function executeGraph(execGraph, env) {
233
233
  }
234
234
  finally {
235
235
  if (monitoringEnabled) {
236
+ env.setMonitorEntryResult(env.getLastResult());
236
237
  if (monitorIncr)
237
238
  env.decrementMonitor();
238
- env.setMonitorEntryResult(env.getLastResult());
239
239
  }
240
240
  }
241
241
  }
@@ -340,11 +340,27 @@ export async function executeEvent(eventInstance, continuation, activeEnv, kerne
340
340
  await executeEventHelper(eventInstance, env);
341
341
  }
342
342
  else if (isAgentEventInstance(eventInstance)) {
343
+ env.setActiveEvent(eventInstance);
344
+ if (isMonitoringEnabled()) {
345
+ env.appendEntryToMonitor(`{${eventInstance.getFqName()} {message "${eventInstance.lookup('message')}"}}`);
346
+ }
343
347
  await handleAgentInvocation(eventInstance, env);
348
+ if (isMonitoringEnabled()) {
349
+ env.setMonitorEntryResult(env.getLastResult());
350
+ }
344
351
  }
345
352
  const r = env.getLastResult();
346
- if (continuation)
347
- continuation(r);
353
+ if (continuation) {
354
+ if (env.getLastPattern() && isAgentEventInstance(eventInstance)) {
355
+ continuation({
356
+ result: r.map((res) => (res.attributes ? Object.fromEntries(res.attributes) : res)),
357
+ pattern: env.getLastPattern(),
358
+ });
359
+ }
360
+ else {
361
+ continuation(r);
362
+ }
363
+ }
348
364
  return r;
349
365
  }
350
366
  catch (err) {
@@ -409,6 +425,9 @@ export async function executeEventHelper(eventInstance, env) {
409
425
  env.appendEntryToMonitor(`{${eventInstance.getFqName()} {message "${eventInstance.lookup('message')}"}}`);
410
426
  }
411
427
  await handleAgentInvocation(eventInstance, env);
428
+ if (isMonitoringEnabled()) {
429
+ env.setMonitorEntryResult(env.getLastResult());
430
+ }
412
431
  }
413
432
  if (isLocalEnv) {
414
433
  await env.commitAllTransactions();