@memberjunction/ai-agents 5.27.1 → 5.29.0

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 (55) hide show
  1. package/dist/AgentRunner.d.ts +39 -0
  2. package/dist/AgentRunner.d.ts.map +1 -1
  3. package/dist/AgentRunner.js +300 -5
  4. package/dist/AgentRunner.js.map +1 -1
  5. package/dist/ArtifactToolManager.d.ts +165 -0
  6. package/dist/ArtifactToolManager.d.ts.map +1 -0
  7. package/dist/ArtifactToolManager.js +534 -0
  8. package/dist/ArtifactToolManager.js.map +1 -0
  9. package/dist/agent-types/loop-agent-prompt-params.d.ts +14 -0
  10. package/dist/agent-types/loop-agent-prompt-params.d.ts.map +1 -1
  11. package/dist/agent-types/loop-agent-prompt-params.js +3 -1
  12. package/dist/agent-types/loop-agent-prompt-params.js.map +1 -1
  13. package/dist/agent-types/loop-agent-response-type.d.ts +9 -1
  14. package/dist/agent-types/loop-agent-response-type.d.ts.map +1 -1
  15. package/dist/agent-types/loop-agent-response-type.js.map +1 -1
  16. package/dist/agent-types/loop-agent-type.d.ts.map +1 -1
  17. package/dist/agent-types/loop-agent-type.js +3 -0
  18. package/dist/agent-types/loop-agent-type.js.map +1 -1
  19. package/dist/artifact-tools/DataSnapshotToolLibrary.d.ts +18 -0
  20. package/dist/artifact-tools/DataSnapshotToolLibrary.d.ts.map +1 -0
  21. package/dist/artifact-tools/DataSnapshotToolLibrary.js +365 -0
  22. package/dist/artifact-tools/DataSnapshotToolLibrary.js.map +1 -0
  23. package/dist/artifact-tools/DocxToolLibrary.d.ts +15 -0
  24. package/dist/artifact-tools/DocxToolLibrary.d.ts.map +1 -0
  25. package/dist/artifact-tools/DocxToolLibrary.js +160 -0
  26. package/dist/artifact-tools/DocxToolLibrary.js.map +1 -0
  27. package/dist/artifact-tools/ExcelToolLibrary.d.ts +16 -0
  28. package/dist/artifact-tools/ExcelToolLibrary.d.ts.map +1 -0
  29. package/dist/artifact-tools/ExcelToolLibrary.js +300 -0
  30. package/dist/artifact-tools/ExcelToolLibrary.js.map +1 -0
  31. package/dist/artifact-tools/JSONToolLibrary.d.ts +18 -0
  32. package/dist/artifact-tools/JSONToolLibrary.d.ts.map +1 -0
  33. package/dist/artifact-tools/JSONToolLibrary.js +178 -0
  34. package/dist/artifact-tools/JSONToolLibrary.js.map +1 -0
  35. package/dist/artifact-tools/PDFToolLibrary.d.ts +14 -0
  36. package/dist/artifact-tools/PDFToolLibrary.d.ts.map +1 -0
  37. package/dist/artifact-tools/PDFToolLibrary.js +172 -0
  38. package/dist/artifact-tools/PDFToolLibrary.js.map +1 -0
  39. package/dist/artifact-tools/TextToolLibrary.d.ts +12 -0
  40. package/dist/artifact-tools/TextToolLibrary.d.ts.map +1 -0
  41. package/dist/artifact-tools/TextToolLibrary.js +82 -0
  42. package/dist/artifact-tools/TextToolLibrary.js.map +1 -0
  43. package/dist/base-agent.d.ts +5 -0
  44. package/dist/base-agent.d.ts.map +1 -1
  45. package/dist/base-agent.js +87 -6
  46. package/dist/base-agent.js.map +1 -1
  47. package/dist/file-input-resolver.d.ts +2 -0
  48. package/dist/file-input-resolver.d.ts.map +1 -0
  49. package/dist/file-input-resolver.js +4 -0
  50. package/dist/file-input-resolver.js.map +1 -0
  51. package/dist/index.d.ts +9 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +9 -1
  54. package/dist/index.js.map +1 -1
  55. package/package.json +18 -15
@@ -0,0 +1,160 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ /**
8
+ * @fileoverview Artifact tool library for DOCX content.
9
+ *
10
+ * Parses a DOCX Buffer and exposes tools for extracting text,
11
+ * HTML, searching, reading lines, and splitting into sections.
12
+ */
13
+ import { RegisterClass } from '@memberjunction/global';
14
+ import { BaseArtifactToolLibrary } from '@memberjunction/ai-core-plus';
15
+ let DocxToolLibrary = class DocxToolLibrary extends BaseArtifactToolLibrary {
16
+ GetToolList() {
17
+ return [
18
+ {
19
+ name: 'get_text',
20
+ description: 'Extracts raw text from the DOCX and returns it with character and word counts.',
21
+ inputSchema: { type: 'object', properties: {}, required: [] },
22
+ },
23
+ {
24
+ name: 'get_html',
25
+ description: 'Converts the DOCX to HTML, useful for understanding document structure.',
26
+ inputSchema: { type: 'object', properties: {}, required: [] },
27
+ },
28
+ {
29
+ name: 'search_text',
30
+ description: 'Regex search on the extracted text. Returns matching lines with line numbers.',
31
+ inputSchema: {
32
+ type: 'object',
33
+ properties: {
34
+ pattern: { type: 'string', description: 'Regex pattern to search for' },
35
+ flags: { type: 'string', description: 'Regex flags (default: "g")' },
36
+ },
37
+ required: ['pattern'],
38
+ },
39
+ },
40
+ {
41
+ name: 'get_lines',
42
+ description: 'Returns a range of lines from the extracted text (0-based start).',
43
+ inputSchema: {
44
+ type: 'object',
45
+ properties: {
46
+ start: { type: 'number', description: 'Zero-based start line index' },
47
+ count: { type: 'number', description: 'Number of lines to return' },
48
+ },
49
+ required: ['start', 'count'],
50
+ },
51
+ },
52
+ {
53
+ name: 'get_sections',
54
+ description: 'Splits text by double newlines into logical sections, each with a 200-char preview.',
55
+ inputSchema: { type: 'object', properties: {}, required: [] },
56
+ },
57
+ ];
58
+ }
59
+ async InvokeTool(toolName, input, artifactContent) {
60
+ let extractedText;
61
+ try {
62
+ const buffer = this.toBuffer(artifactContent);
63
+ const mammoth = await this.loadMammoth();
64
+ const result = await mammoth.default.extractRawText({ buffer });
65
+ extractedText = result.value;
66
+ }
67
+ catch (err) {
68
+ const message = err instanceof Error ? err.message : String(err);
69
+ return this.errorResult(`Failed to parse DOCX: ${message}`);
70
+ }
71
+ switch (toolName) {
72
+ case 'get_text':
73
+ return this.handleGetText(extractedText);
74
+ case 'get_html':
75
+ return this.handleGetHtml(artifactContent);
76
+ case 'search_text':
77
+ return this.handleSearchText(extractedText, input);
78
+ case 'get_lines':
79
+ return this.handleGetLines(extractedText, input);
80
+ case 'get_sections':
81
+ return this.handleGetSections(extractedText);
82
+ default:
83
+ return this.errorResult(`Unknown tool: "${toolName}".`);
84
+ }
85
+ }
86
+ handleGetText(text) {
87
+ return this.successResult({
88
+ text,
89
+ characterCount: text.length,
90
+ wordCount: text.length > 0 ? text.split(/\s+/).filter((w) => w.length > 0).length : 0,
91
+ });
92
+ }
93
+ async handleGetHtml(artifactContent) {
94
+ try {
95
+ const buffer = this.toBuffer(artifactContent);
96
+ const mammoth = await this.loadMammoth();
97
+ const result = await mammoth.default.convertToHtml({ buffer });
98
+ return this.successResult({ html: result.value });
99
+ }
100
+ catch (err) {
101
+ const message = err instanceof Error ? err.message : String(err);
102
+ return this.errorResult(`Failed to convert DOCX to HTML: ${message}`);
103
+ }
104
+ }
105
+ handleSearchText(text, input) {
106
+ const pattern = input.pattern;
107
+ const flags = input.flags ?? 'g';
108
+ let regex;
109
+ try {
110
+ regex = new RegExp(pattern, flags);
111
+ }
112
+ catch {
113
+ return this.errorResult(`Invalid regex pattern: "${pattern}".`);
114
+ }
115
+ const lines = text.split('\n');
116
+ const matches = [];
117
+ for (let i = 0; i < lines.length; i++) {
118
+ if (regex.test(lines[i])) {
119
+ matches.push({ lineNumber: i, text: lines[i] });
120
+ }
121
+ regex.lastIndex = 0;
122
+ }
123
+ return this.successResult({ matches });
124
+ }
125
+ handleGetLines(text, input) {
126
+ const start = input.start;
127
+ const count = input.count;
128
+ const lines = text.split('\n');
129
+ if (start < 0 || start >= lines.length) {
130
+ return this.errorResult(`Start index ${start} is out of range (0–${lines.length - 1}).`);
131
+ }
132
+ const sliced = lines.slice(start, start + count);
133
+ return this.successResult({ lines: sliced, start, count: sliced.length });
134
+ }
135
+ handleGetSections(text) {
136
+ const parts = text.split(/\n\s*\n/).filter((s) => s.trim().length > 0);
137
+ const sections = parts.map((section, index) => ({
138
+ index,
139
+ preview: section.substring(0, 200),
140
+ }));
141
+ return this.successResult({ sections });
142
+ }
143
+ toBuffer(content) {
144
+ return Buffer.isBuffer(content) ? content : Buffer.from(content, 'utf-8');
145
+ }
146
+ async loadMammoth() {
147
+ return import('mammoth');
148
+ }
149
+ successResult(data) {
150
+ return { success: true, data };
151
+ }
152
+ errorResult(errorMessage) {
153
+ return { success: false, data: null, errorMessage };
154
+ }
155
+ };
156
+ DocxToolLibrary = __decorate([
157
+ RegisterClass(BaseArtifactToolLibrary, 'DocxToolLibrary')
158
+ ], DocxToolLibrary);
159
+ export { DocxToolLibrary };
160
+ //# sourceMappingURL=DocxToolLibrary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocxToolLibrary.js","sourceRoot":"","sources":["../../src/artifact-tools/DocxToolLibrary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { BaseArtifactToolLibrary, type ArtifactToolDefinition, type ArtifactToolResult } from '@memberjunction/ai-core-plus';
2
+ export declare class ExcelToolLibrary extends BaseArtifactToolLibrary {
3
+ GetToolList(): ArtifactToolDefinition[];
4
+ InvokeTool(toolName: string, input: Record<string, unknown>, artifactContent: string | Buffer): Promise<ArtifactToolResult>;
5
+ private handleGetSheets;
6
+ private handleGetSheetData;
7
+ private handleSearchCells;
8
+ private handleAggregateColumn;
9
+ private handleGetFormulas;
10
+ private computeAggregate;
11
+ private buildHeaderMap;
12
+ private toBuffer;
13
+ private successResult;
14
+ private errorResult;
15
+ }
16
+ //# sourceMappingURL=ExcelToolLibrary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExcelToolLibrary.d.ts","sourceRoot":"","sources":["../../src/artifact-tools/ExcelToolLibrary.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,uBAAuB,EAAE,KAAK,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AA6D7H,qBACa,gBAAiB,SAAQ,uBAAuB;IAKpD,WAAW,IAAI,sBAAsB,EAAE;IA+DjC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiCxI,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,iBAAiB;IAuCzB,OAAO,CAAC,qBAAqB;IAkD7B,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;CAGpB"}
@@ -0,0 +1,300 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ /**
8
+ * @fileoverview Artifact tool library for Excel (.xlsx) content.
9
+ *
10
+ * Parses an Excel workbook from a Buffer and exposes tools for inspecting
11
+ * sheets, reading rows, searching cells, aggregating columns, and listing formulas.
12
+ */
13
+ import { RegisterClass } from '@memberjunction/global';
14
+ import { BaseArtifactToolLibrary } from '@memberjunction/ai-core-plus';
15
+ const VALID_AGGREGATE_OPS = new Set(['sum', 'avg', 'count', 'min', 'max']);
16
+ // ---------------------------------------------------------------------------
17
+ // ExcelToolLibrary
18
+ // ---------------------------------------------------------------------------
19
+ let ExcelToolLibrary = class ExcelToolLibrary extends BaseArtifactToolLibrary {
20
+ // -----------------------------------------------------------------------
21
+ // GetToolList
22
+ // -----------------------------------------------------------------------
23
+ GetToolList() {
24
+ return [
25
+ {
26
+ name: 'get_sheets',
27
+ description: 'Returns sheet names, row counts, and column counts for every sheet in the workbook.',
28
+ inputSchema: { type: 'object', properties: {}, required: [] },
29
+ },
30
+ {
31
+ name: 'get_sheet_data',
32
+ description: 'Returns rows from a sheet as key-value objects using the header row as keys. Defaults to first 50 data rows.',
33
+ inputSchema: {
34
+ type: 'object',
35
+ properties: {
36
+ sheet: { type: 'string', description: 'Sheet name' },
37
+ startRow: { type: 'number', description: '1-based data row to start from (after header). Default: 1' },
38
+ rowCount: { type: 'number', description: 'Number of data rows to return. Default: 50' },
39
+ },
40
+ required: ['sheet'],
41
+ },
42
+ },
43
+ {
44
+ name: 'search_cells',
45
+ description: 'Regex search across all cells. Optionally scope to a single sheet. Returns up to 100 matches.',
46
+ inputSchema: {
47
+ type: 'object',
48
+ properties: {
49
+ query: { type: 'string', description: 'Regex pattern to search for' },
50
+ sheet: { type: 'string', description: 'Optional sheet name to limit search scope' },
51
+ },
52
+ required: ['query'],
53
+ },
54
+ },
55
+ {
56
+ name: 'aggregate_column',
57
+ description: 'Computes an aggregate (sum, avg, count, min, max) on a column identified by its header name.',
58
+ inputSchema: {
59
+ type: 'object',
60
+ properties: {
61
+ sheet: { type: 'string', description: 'Sheet name' },
62
+ column: { type: 'string', description: 'Column header name' },
63
+ operation: { type: 'string', description: 'Aggregate operation: sum, avg, count, min, max' },
64
+ },
65
+ required: ['sheet', 'column', 'operation'],
66
+ },
67
+ },
68
+ {
69
+ name: 'get_formulas',
70
+ description: 'Returns all cells containing formulas in a given sheet.',
71
+ inputSchema: {
72
+ type: 'object',
73
+ properties: {
74
+ sheet: { type: 'string', description: 'Sheet name' },
75
+ },
76
+ required: ['sheet'],
77
+ },
78
+ },
79
+ ];
80
+ }
81
+ // -----------------------------------------------------------------------
82
+ // InvokeTool — dispatcher
83
+ // -----------------------------------------------------------------------
84
+ async InvokeTool(toolName, input, artifactContent) {
85
+ const buffer = this.toBuffer(artifactContent);
86
+ let workbook;
87
+ try {
88
+ const ExcelJS = await import('exceljs');
89
+ workbook = new ExcelJS.default.Workbook();
90
+ await workbook.xlsx.load(buffer);
91
+ }
92
+ catch (err) {
93
+ const message = err instanceof Error ? err.message : String(err);
94
+ return this.errorResult(`Failed to parse Excel content: ${message}`);
95
+ }
96
+ switch (toolName) {
97
+ case 'get_sheets':
98
+ return this.handleGetSheets(workbook);
99
+ case 'get_sheet_data':
100
+ return this.handleGetSheetData(workbook, input);
101
+ case 'search_cells':
102
+ return this.handleSearchCells(workbook, input);
103
+ case 'aggregate_column':
104
+ return this.handleAggregateColumn(workbook, input);
105
+ case 'get_formulas':
106
+ return this.handleGetFormulas(workbook, input);
107
+ default:
108
+ return this.errorResult(`Unknown tool: "${toolName}".`);
109
+ }
110
+ }
111
+ // -----------------------------------------------------------------------
112
+ // Tool handlers
113
+ // -----------------------------------------------------------------------
114
+ handleGetSheets(workbook) {
115
+ const sheets = workbook.worksheets.map((ws) => ({
116
+ name: ws.name,
117
+ rowCount: ws.rowCount,
118
+ columnCount: ws.columnCount,
119
+ }));
120
+ return this.successResult({ sheets });
121
+ }
122
+ handleGetSheetData(workbook, input) {
123
+ const sheetName = input.sheet;
124
+ const ws = workbook.getWorksheet(sheetName);
125
+ if (!ws) {
126
+ return this.errorResult(`Sheet "${sheetName}" not found.`);
127
+ }
128
+ const startRow = input.startRow ?? 1;
129
+ const rowCount = input.rowCount ?? 50;
130
+ const headerMap = this.buildHeaderMap(ws);
131
+ if (headerMap.size === 0) {
132
+ return this.successResult({ rows: [] });
133
+ }
134
+ const rows = [];
135
+ // Row 1 is header, data starts at row 2. startRow is 1-based offset after header.
136
+ const firstDataRow = 1 + startRow;
137
+ const lastDataRow = Math.min(1 + startRow + rowCount - 1, ws.rowCount);
138
+ for (let r = firstDataRow; r <= lastDataRow; r++) {
139
+ const row = ws.getRow(r);
140
+ if (!row || !row.values || row.values.length === 0)
141
+ continue;
142
+ const record = {};
143
+ const values = row.values;
144
+ for (const [colIndex, colName] of headerMap.entries()) {
145
+ record[colName] = values[colIndex] ?? null;
146
+ }
147
+ rows.push(record);
148
+ }
149
+ return this.successResult({ rows });
150
+ }
151
+ handleSearchCells(workbook, input) {
152
+ const query = input.query;
153
+ let regex;
154
+ try {
155
+ regex = new RegExp(query, 'i');
156
+ }
157
+ catch {
158
+ return this.errorResult(`Invalid regex pattern: "${query}".`);
159
+ }
160
+ const targetSheets = input.sheet ? [workbook.getWorksheet(input.sheet)] : workbook.worksheets;
161
+ const matches = [];
162
+ const MATCH_LIMIT = 100;
163
+ for (const ws of targetSheets) {
164
+ if (!ws)
165
+ continue;
166
+ ws.eachRow({ includeEmpty: false }, (row) => {
167
+ if (matches.length >= MATCH_LIMIT)
168
+ return;
169
+ row.eachCell({ includeEmpty: false }, (cell) => {
170
+ if (matches.length >= MATCH_LIMIT)
171
+ return;
172
+ const text = cell.text ?? String(cell.value ?? '');
173
+ if (regex.test(text)) {
174
+ matches.push({
175
+ sheet: ws.name,
176
+ cell: cell.address,
177
+ value: text,
178
+ });
179
+ }
180
+ });
181
+ });
182
+ }
183
+ if (input.sheet && !targetSheets[0]) {
184
+ return this.errorResult(`Sheet "${input.sheet}" not found.`);
185
+ }
186
+ return this.successResult({ matches });
187
+ }
188
+ handleAggregateColumn(workbook, input) {
189
+ const sheetName = input.sheet;
190
+ const columnName = input.column;
191
+ const operation = input.operation;
192
+ const ws = workbook.getWorksheet(sheetName);
193
+ if (!ws) {
194
+ return this.errorResult(`Sheet "${sheetName}" not found.`);
195
+ }
196
+ if (!VALID_AGGREGATE_OPS.has(operation)) {
197
+ return this.errorResult(`Unsupported aggregate operation: "${operation}". Valid operations: ${[...VALID_AGGREGATE_OPS].join(', ')}.`);
198
+ }
199
+ const headerMap = this.buildHeaderMap(ws);
200
+ let targetCol = -1;
201
+ for (const [colIdx, name] of headerMap.entries()) {
202
+ if (name === columnName) {
203
+ targetCol = colIdx;
204
+ break;
205
+ }
206
+ }
207
+ if (targetCol === -1) {
208
+ return this.errorResult(`Column "${columnName}" not found in sheet "${sheetName}". Available columns: ${[...headerMap.values()].join(', ')}.`);
209
+ }
210
+ const numericValues = [];
211
+ for (let r = 2; r <= ws.rowCount; r++) {
212
+ const row = ws.getRow(r);
213
+ const values = row.values;
214
+ const raw = values[targetCol];
215
+ if (raw == null)
216
+ continue;
217
+ const num = Number(raw);
218
+ if (!isNaN(num)) {
219
+ numericValues.push(num);
220
+ }
221
+ }
222
+ if (operation === 'count') {
223
+ return this.successResult({ operation, column: columnName, value: numericValues.length });
224
+ }
225
+ if (numericValues.length === 0) {
226
+ return this.errorResult(`No numeric values found in column "${columnName}".`);
227
+ }
228
+ const result = this.computeAggregate(numericValues, operation);
229
+ return this.successResult({ operation, column: columnName, value: result });
230
+ }
231
+ handleGetFormulas(workbook, input) {
232
+ const sheetName = input.sheet;
233
+ const ws = workbook.getWorksheet(sheetName);
234
+ if (!ws) {
235
+ return this.errorResult(`Sheet "${sheetName}" not found.`);
236
+ }
237
+ const formulas = [];
238
+ ws.eachRow({ includeEmpty: false }, (row) => {
239
+ row.eachCell({ includeEmpty: false }, (cell) => {
240
+ if (cell.formula) {
241
+ formulas.push({
242
+ cell: cell.address,
243
+ formula: cell.formula,
244
+ });
245
+ }
246
+ });
247
+ });
248
+ return this.successResult({ formulas });
249
+ }
250
+ // -----------------------------------------------------------------------
251
+ // Aggregate computation (pure)
252
+ // -----------------------------------------------------------------------
253
+ computeAggregate(values, operation) {
254
+ switch (operation) {
255
+ case 'sum':
256
+ return values.reduce((acc, v) => acc + v, 0);
257
+ case 'avg': {
258
+ const sum = values.reduce((acc, v) => acc + v, 0);
259
+ return values.length > 0 ? sum / values.length : 0;
260
+ }
261
+ case 'count':
262
+ return values.length;
263
+ case 'min':
264
+ return Math.min(...values);
265
+ case 'max':
266
+ return Math.max(...values);
267
+ }
268
+ }
269
+ // -----------------------------------------------------------------------
270
+ // Helpers
271
+ // -----------------------------------------------------------------------
272
+ buildHeaderMap(ws) {
273
+ const headerRow = ws.getRow(1);
274
+ const headerMap = new Map();
275
+ if (!headerRow || !headerRow.values)
276
+ return headerMap;
277
+ const values = headerRow.values;
278
+ for (let i = 1; i < values.length; i++) {
279
+ const val = values[i];
280
+ if (val != null && String(val).trim() !== '') {
281
+ headerMap.set(i, String(val).trim());
282
+ }
283
+ }
284
+ return headerMap;
285
+ }
286
+ toBuffer(content) {
287
+ return typeof content === 'string' ? Buffer.from(content, 'base64') : content;
288
+ }
289
+ successResult(data) {
290
+ return { success: true, data };
291
+ }
292
+ errorResult(errorMessage) {
293
+ return { success: false, data: null, errorMessage };
294
+ }
295
+ };
296
+ ExcelToolLibrary = __decorate([
297
+ RegisterClass(BaseArtifactToolLibrary, 'ExcelToolLibrary')
298
+ ], ExcelToolLibrary);
299
+ export { ExcelToolLibrary };
300
+ //# sourceMappingURL=ExcelToolLibrary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExcelToolLibrary.js","sourceRoot":"","sources":["../../src/artifact-tools/ExcelToolLibrary.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAwD,MAAM,8BAA8B,CAAC;AAuD7H,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAEpH,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAGvE,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,uBAAuB;IAC3D,0EAA0E;IAC1E,cAAc;IACd,0EAA0E;IAEnE,WAAW;QAChB,OAAO;YACL;gBACE,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,qFAAqF;gBAClG,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;aAC9D;YACD;gBACE,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,8GAA8G;gBAC3H,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;wBACpD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2DAA2D,EAAE;wBACtG,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;qBACxF;oBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACpB;aACF;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,+FAA+F;gBAC5G,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;wBACrE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;qBACpF;oBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACpB;aACF;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,8FAA8F;gBAC3G,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;wBACpD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;wBAC7D,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,EAAE;qBAC7F;oBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC;iBAC3C;aACF;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,yDAAyD;gBACtE,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;qBACrD;oBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACpB;aACF;SACF,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,0BAA0B;IAC1B,0EAA0E;IAEnE,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,KAA8B,EAAE,eAAgC;QACxG,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAE9C,IAAI,QAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,QAAQ,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,EAA8B,CAAC;YACtE,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC,WAAW,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,YAAY;gBACf,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACxC,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAClD,KAAK,cAAc;gBACjB,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACjD,KAAK,kBAAkB;gBACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACrD,KAAK,cAAc;gBACjB,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACjD;gBACE,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,QAAQ,IAAI,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,gBAAgB;IAChB,0EAA0E;IAElE,eAAe,CAAC,QAAuB;QAC7C,MAAM,MAAM,GAAgB,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3D,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,QAAQ,EAAE,EAAE,CAAC,QAAQ;YACrB,WAAW,EAAE,EAAE,CAAC,WAAW;SAC5B,CAAC,CAAC,CAAC;QACJ,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IAEO,kBAAkB,CAAC,QAAuB,EAAE,KAA8B;QAChF,MAAM,SAAS,GAAG,KAAK,CAAC,KAAe,CAAC;QACxC,MAAM,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,SAAS,cAAc,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,QAAQ,GAAI,KAAK,CAAC,QAAmB,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAI,KAAK,CAAC,QAAmB,IAAI,EAAE,CAAC;QAElD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,GAAmC,EAAE,CAAC;QAChD,kFAAkF;QAClF,MAAM,YAAY,GAAG,CAAC,GAAG,QAAQ,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QAEvE,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAK,GAAG,CAAC,MAAoB,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAE5E,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAmB,CAAC;YACvC,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;gBACtD,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAEO,iBAAiB,CAAC,QAAuB,EAAE,KAA8B;QAC/E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAe,CAAC;QACpC,IAAI,KAAa,CAAC;QAClB,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,WAAW,CAAC,2BAA2B,KAAK,IAAI,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAExG,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,GAAG,CAAC;QAExB,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,EAAE;gBAAE,SAAS;YAClB,EAAE,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC1C,IAAI,OAAO,CAAC,MAAM,IAAI,WAAW;oBAAE,OAAO;gBAC1C,GAAG,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC7C,IAAI,OAAO,CAAC,MAAM,IAAI,WAAW;wBAAE,OAAO;oBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBACnD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,CAAC;4BACX,KAAK,EAAE,EAAE,CAAC,IAAI;4BACd,IAAI,EAAE,IAAI,CAAC,OAAO;4BAClB,KAAK,EAAE,IAAI;yBACZ,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,CAAC,KAAe,cAAc,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;IAEO,qBAAqB,CAAC,QAAuB,EAAE,KAA8B;QACnF,MAAM,SAAS,GAAG,KAAK,CAAC,KAAe,CAAC;QACxC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAgB,CAAC;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAmB,CAAC;QAE5C,MAAM,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,SAAS,cAAc,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,WAAW,CAAC,qCAAqC,SAAS,wBAAwB,CAAC,GAAG,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxI,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;QACnB,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YACjD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxB,SAAS,GAAG,MAAM,CAAC;gBACnB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,UAAU,yBAAyB,SAAS,yBAAyB,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjJ,CAAC;QAED,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAmB,CAAC;YACvC,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,GAAG,IAAI,IAAI;gBAAE,SAAS;YAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,sCAAsC,UAAU,IAAI,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,SAA+B,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IAEO,iBAAiB,CAAC,QAAuB,EAAE,KAA8B;QAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,KAAe,CAAC;QACxC,MAAM,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,SAAS,cAAc,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,EAAE,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YAC1C,GAAG,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC7C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,IAAI,CAAC,OAAO;wBAClB,OAAO,EAAE,IAAI,CAAC,OAAO;qBACtB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,0EAA0E;IAC1E,+BAA+B;IAC/B,0EAA0E;IAElE,gBAAgB,CAAC,MAAgB,EAAE,SAA6B;QACtE,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,KAAK;gBACR,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/C,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,MAAM,CAAC;YACvB,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;YAC7B,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,UAAU;IACV,0EAA0E;IAElE,cAAc,CAAC,EAAkB;QACvC,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAEtD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAmB,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,GAAG,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC7C,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,QAAQ,CAAC,OAAwB;QACvC,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChF,CAAC;IAEO,aAAa,CAAC,IAAa;QACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAEO,WAAW,CAAC,YAAoB;QACtC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IACtD,CAAC;CACF,CAAA;AAnTY,gBAAgB;IAD5B,aAAa,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;GAC9C,gBAAgB,CAmT5B"}
@@ -0,0 +1,18 @@
1
+ import { BaseArtifactToolLibrary, ArtifactToolDefinition, ArtifactToolResult } from '@memberjunction/ai-core-plus';
2
+ /**
3
+ * Tool library for navigating and querying JSON artifact content.
4
+ * Provides path navigation, key listing, recursive search, and array iteration.
5
+ */
6
+ export declare class JSONToolLibrary extends BaseArtifactToolLibrary {
7
+ GetToolList(): ArtifactToolDefinition[];
8
+ InvokeTool(toolName: string, input: Record<string, unknown>, artifactContent: string | Buffer): Promise<ArtifactToolResult>;
9
+ private handleJsonPath;
10
+ private handleJsonKeys;
11
+ private handleJsonSearch;
12
+ private handleJsonIterate;
13
+ /** Navigate a dot-separated path through a parsed JSON value. */
14
+ private navigatePath;
15
+ /** Recursively search for keys matching `targetKey` with string values matching `pattern`. */
16
+ private searchRecursive;
17
+ }
18
+ //# sourceMappingURL=JSONToolLibrary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSONToolLibrary.d.ts","sourceRoot":"","sources":["../../src/artifact-tools/JSONToolLibrary.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAOnH;;;GAGG;AACH,qBACa,eAAgB,SAAQ,uBAAuB;IACxD,WAAW,IAAI,sBAAsB,EAAE;IAmDjC,UAAU,CACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,eAAe,EAAE,MAAM,GAAG,MAAM,GACjC,OAAO,CAAC,kBAAkB,CAAC;IAwB9B,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,iBAAiB;IAYzB,iEAAiE;IACjE,OAAO,CAAC,YAAY;IA2BpB,8FAA8F;IAC9F,OAAO,CAAC,eAAe;CA8B1B"}