@a2anet/a2a-utils 0.1.0 → 0.4.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.
- package/README.md +1412 -2
- package/dist/artifacts/data.d.ts +118 -0
- package/dist/artifacts/data.d.ts.map +1 -0
- package/dist/artifacts/data.js +583 -0
- package/dist/artifacts/data.js.map +1 -0
- package/dist/artifacts/index.d.ts +33 -0
- package/dist/artifacts/index.d.ts.map +1 -0
- package/dist/artifacts/index.js +131 -0
- package/dist/artifacts/index.js.map +1 -0
- package/dist/artifacts/text.d.ts +54 -0
- package/dist/artifacts/text.d.ts.map +1 -0
- package/dist/artifacts/text.js +151 -0
- package/dist/artifacts/text.js.map +1 -0
- package/dist/client/a2a-agents.d.ts +94 -0
- package/dist/client/a2a-agents.d.ts.map +1 -0
- package/dist/client/a2a-agents.js +243 -0
- package/dist/client/a2a-agents.js.map +1 -0
- package/dist/client/a2a-session.d.ts +94 -0
- package/dist/client/a2a-session.d.ts.map +1 -0
- package/dist/client/a2a-session.js +264 -0
- package/dist/client/a2a-session.js.map +1 -0
- package/dist/client/a2a-tools.d.ts +152 -0
- package/dist/client/a2a-tools.d.ts.map +1 -0
- package/dist/client/a2a-tools.js +470 -0
- package/dist/client/a2a-tools.js.map +1 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +7 -0
- package/dist/client/index.js.map +1 -0
- package/dist/files/file-store.d.ts +24 -0
- package/dist/files/file-store.d.ts.map +1 -0
- package/dist/files/file-store.js +5 -0
- package/dist/files/file-store.js.map +1 -0
- package/dist/files/index.d.ts +3 -0
- package/dist/files/index.d.ts.map +1 -0
- package/dist/files/index.js +5 -0
- package/dist/files/index.js.map +1 -0
- package/dist/files/local-file-store.d.ts +26 -0
- package/dist/files/local-file-store.d.ts.map +1 -0
- package/dist/files/local-file-store.js +99 -0
- package/dist/files/local-file-store.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/tasks/index.d.ts +2 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +5 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/json-task-store.d.ts +32 -0
- package/dist/tasks/json-task-store.d.ts.map +1 -0
- package/dist/tasks/json-task-store.js +66 -0
- package/dist/tasks/json-task-store.js.map +1 -0
- package/dist/types.d.ts +65 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +23 -0
- package/dist/types.js.map +1 -0
- package/package.json +17 -4
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2025-present A2A Net <hello@a2anet.com>
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
/**
|
|
5
|
+
* Data artifact viewing, minimization, selection, summary, and JSON path utilities.
|
|
6
|
+
*/
|
|
7
|
+
import { TextArtifacts } from "./text.js";
|
|
8
|
+
function stableStringify(v) {
|
|
9
|
+
if (v === null || v === undefined || typeof v !== "object") {
|
|
10
|
+
return JSON.stringify(v);
|
|
11
|
+
}
|
|
12
|
+
if (Array.isArray(v)) {
|
|
13
|
+
return `[${v.map(stableStringify).join(",")}]`;
|
|
14
|
+
}
|
|
15
|
+
const keys = Object.keys(v).sort();
|
|
16
|
+
const pairs = keys.map((k) => `${JSON.stringify(k)}:${stableStringify(v[k])}`);
|
|
17
|
+
return `{${pairs.join(",")}}`;
|
|
18
|
+
}
|
|
19
|
+
function mean(values) {
|
|
20
|
+
return values.reduce((a, b) => a + b, 0) / values.length;
|
|
21
|
+
}
|
|
22
|
+
function stdev(values) {
|
|
23
|
+
const m = mean(values);
|
|
24
|
+
const variance = values.reduce((sum, v) => sum + (v - m) ** 2, 0) / (values.length - 1);
|
|
25
|
+
return Math.sqrt(variance);
|
|
26
|
+
}
|
|
27
|
+
function getTypeName(v) {
|
|
28
|
+
if (v === null || v === undefined)
|
|
29
|
+
return "null";
|
|
30
|
+
if (typeof v === "boolean")
|
|
31
|
+
return "bool";
|
|
32
|
+
if (typeof v === "number")
|
|
33
|
+
return Number.isInteger(v) ? "int" : "float";
|
|
34
|
+
if (typeof v === "string")
|
|
35
|
+
return "string";
|
|
36
|
+
if (Array.isArray(v))
|
|
37
|
+
return "list";
|
|
38
|
+
if (typeof v === "object")
|
|
39
|
+
return "object";
|
|
40
|
+
return typeof v;
|
|
41
|
+
}
|
|
42
|
+
/** Format a number with comma separators (locale-independent, matching Python's `f"{n:,}"`). */
|
|
43
|
+
function formatNumber(n) {
|
|
44
|
+
return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
45
|
+
}
|
|
46
|
+
function uniqueColumns(data) {
|
|
47
|
+
const seen = new Set();
|
|
48
|
+
const result = [];
|
|
49
|
+
for (const item of data) {
|
|
50
|
+
if (item !== null && typeof item === "object" && !Array.isArray(item)) {
|
|
51
|
+
for (const key of Object.keys(item)) {
|
|
52
|
+
if (!seen.has(key)) {
|
|
53
|
+
seen.add(key);
|
|
54
|
+
result.push(key);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
/** Data artifact operations: viewing and minimization. */
|
|
62
|
+
export class DataArtifacts {
|
|
63
|
+
/**
|
|
64
|
+
* View structured data with optional filtering.
|
|
65
|
+
*
|
|
66
|
+
* @param data - The data to view.
|
|
67
|
+
* @param opts.jsonPath - Optional dot-separated path to extract specific fields.
|
|
68
|
+
* @param opts.rows - Optional row selection.
|
|
69
|
+
* @param opts.columns - Optional column selection.
|
|
70
|
+
* @param opts.characterLimit - Maximum output size in characters.
|
|
71
|
+
*
|
|
72
|
+
* @returns Filtered data.
|
|
73
|
+
*
|
|
74
|
+
* @throws Error if parameters are invalid.
|
|
75
|
+
*/
|
|
76
|
+
static view(data, opts) {
|
|
77
|
+
const jsonPath = opts?.jsonPath ?? null;
|
|
78
|
+
const rows = opts?.rows ?? null;
|
|
79
|
+
const columns = opts?.columns ?? null;
|
|
80
|
+
const characterLimit = opts?.characterLimit ?? 50_000;
|
|
81
|
+
let current = data;
|
|
82
|
+
if (jsonPath) {
|
|
83
|
+
current = DataArtifacts.evaluateJsonPath(current, jsonPath);
|
|
84
|
+
}
|
|
85
|
+
if (rows !== null || columns !== null) {
|
|
86
|
+
if (!Array.isArray(current)) {
|
|
87
|
+
const typeName = current === null ? "null" : typeof current;
|
|
88
|
+
throw new Error(`rows/columns parameters require list data. The data at this path is a ${typeName}. Use json_path to navigate to a list field first.`);
|
|
89
|
+
}
|
|
90
|
+
if (current.length === 0) {
|
|
91
|
+
throw new Error("Cannot filter empty list.");
|
|
92
|
+
}
|
|
93
|
+
const isTabular = current[0] !== null && typeof current[0] === "object" && !Array.isArray(current[0]);
|
|
94
|
+
if (isTabular) {
|
|
95
|
+
const tableData = current;
|
|
96
|
+
const availableColumns = uniqueColumns(tableData);
|
|
97
|
+
const rowIndices = DataArtifacts.parseRowSelection(rows !== null ? rows : "all", current.length);
|
|
98
|
+
const columnNames = DataArtifacts.parseColumnSelection(columns !== null ? columns : "all", availableColumns);
|
|
99
|
+
const filteredData = DataArtifacts.filterDataByRowsAndColumns(tableData, rowIndices, columnNames);
|
|
100
|
+
const outputJson = JSON.stringify(filteredData, null, 2);
|
|
101
|
+
if (outputJson.length > characterLimit) {
|
|
102
|
+
throw new Error(`The selection (${rowIndices.length} row(s) and ${columnNames.length} column(s)) resulted in ${formatNumber(outputJson.length)} characters, which exceeds the limit of ${formatNumber(characterLimit)} characters. Try selecting fewer rows or columns.`);
|
|
103
|
+
}
|
|
104
|
+
return filteredData;
|
|
105
|
+
}
|
|
106
|
+
if (columns !== null) {
|
|
107
|
+
throw new Error("columns parameter is only valid for lists of objects. " +
|
|
108
|
+
"This list contains basic values. Use rows parameter only.");
|
|
109
|
+
}
|
|
110
|
+
const rowIndices = DataArtifacts.parseRowSelection(rows !== null ? rows : "all", current.length);
|
|
111
|
+
const filteredData = rowIndices.map((i) => current[i]);
|
|
112
|
+
const outputJson = JSON.stringify(filteredData, null, 2);
|
|
113
|
+
if (outputJson.length > characterLimit) {
|
|
114
|
+
throw new Error(`The selection (${rowIndices.length} item(s)) resulted in ` +
|
|
115
|
+
`${formatNumber(outputJson.length)} characters, which exceeds the limit of ` +
|
|
116
|
+
`${formatNumber(characterLimit)} characters. Try selecting fewer items.`);
|
|
117
|
+
}
|
|
118
|
+
return filteredData;
|
|
119
|
+
}
|
|
120
|
+
const outputJson = JSON.stringify(current, null, 2);
|
|
121
|
+
if (outputJson.length > characterLimit) {
|
|
122
|
+
throw new Error(`Data output (${formatNumber(outputJson.length)} characters) exceeds the maximum size of ${formatNumber(characterLimit)} characters. Try using json_path to access specific fields, or rows/columns to filter list data.`);
|
|
123
|
+
}
|
|
124
|
+
return current;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Minimize data content for display based on type.
|
|
128
|
+
*
|
|
129
|
+
* @param data - The data to minimize.
|
|
130
|
+
* @param opts.characterLimit - Character limit above which to minimize.
|
|
131
|
+
* @param opts.minimizedObjectStringLength - Max length for string values in objects.
|
|
132
|
+
* @param opts.tip - Tip to include. Defaults to null (no tip); pass a string to include one.
|
|
133
|
+
*
|
|
134
|
+
* @returns Minimized representation with "data" or "text" key.
|
|
135
|
+
*/
|
|
136
|
+
static minimize(data, opts) {
|
|
137
|
+
const characterLimit = opts?.characterLimit ?? 50_000;
|
|
138
|
+
const minimizedObjectStringLength = opts?.minimizedObjectStringLength ?? 5_000;
|
|
139
|
+
const tip = opts?.tip ?? null;
|
|
140
|
+
const jsonStr = typeof data !== "string" ? JSON.stringify(data, null, 2) : data;
|
|
141
|
+
const strLen = jsonStr.length;
|
|
142
|
+
if (strLen <= characterLimit) {
|
|
143
|
+
return { data };
|
|
144
|
+
}
|
|
145
|
+
if (Array.isArray(data) && data.length > 0) {
|
|
146
|
+
if (data[0] !== null && typeof data[0] === "object" && !Array.isArray(data[0])) {
|
|
147
|
+
// List of objects
|
|
148
|
+
const summary = DataArtifacts.summarizeTable(data);
|
|
149
|
+
const resultData = {
|
|
150
|
+
_total_rows: data.length,
|
|
151
|
+
_columns: summary,
|
|
152
|
+
};
|
|
153
|
+
if (tip !== null) {
|
|
154
|
+
resultData._tip = tip;
|
|
155
|
+
}
|
|
156
|
+
const result = { data: resultData };
|
|
157
|
+
// Inflation guard
|
|
158
|
+
const minimizedSize = JSON.stringify(result, null, 2).length;
|
|
159
|
+
if (minimizedSize > strLen) {
|
|
160
|
+
return { data };
|
|
161
|
+
}
|
|
162
|
+
return result;
|
|
163
|
+
}
|
|
164
|
+
// Basic list
|
|
165
|
+
const summaryVal = DataArtifacts.summarizeValues(data);
|
|
166
|
+
const resultData = {
|
|
167
|
+
_total_items: data.length,
|
|
168
|
+
_summary: summaryVal,
|
|
169
|
+
};
|
|
170
|
+
if (tip !== null) {
|
|
171
|
+
resultData._tip = tip;
|
|
172
|
+
}
|
|
173
|
+
const result = { data: resultData };
|
|
174
|
+
// Inflation guard
|
|
175
|
+
const minimizedSize = JSON.stringify(result, null, 2).length;
|
|
176
|
+
if (minimizedSize > strLen) {
|
|
177
|
+
return { data };
|
|
178
|
+
}
|
|
179
|
+
return result;
|
|
180
|
+
}
|
|
181
|
+
if (data !== null && typeof data === "object" && !Array.isArray(data)) {
|
|
182
|
+
return DataArtifacts.minimizeObject(data, {
|
|
183
|
+
characterLimit,
|
|
184
|
+
minimizedObjectStringLength,
|
|
185
|
+
tip,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
if (Array.isArray(data)) {
|
|
189
|
+
return { data };
|
|
190
|
+
}
|
|
191
|
+
if (typeof data === "string") {
|
|
192
|
+
return TextArtifacts.minimize(data, { characterLimit, tip });
|
|
193
|
+
}
|
|
194
|
+
return { data };
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Generate a comprehensive summary of tabular data (list of objects).
|
|
198
|
+
*
|
|
199
|
+
* @param data - List of objects representing table rows.
|
|
200
|
+
*
|
|
201
|
+
* @returns List of column summaries, or the original data if the summary
|
|
202
|
+
* would be larger (inflation guard).
|
|
203
|
+
*/
|
|
204
|
+
static summarizeTable(data) {
|
|
205
|
+
if (data.length === 0) {
|
|
206
|
+
return [];
|
|
207
|
+
}
|
|
208
|
+
const columnNames = uniqueColumns(data);
|
|
209
|
+
const columns = [];
|
|
210
|
+
for (const columnName of columnNames) {
|
|
211
|
+
const values = [];
|
|
212
|
+
for (const item of data) {
|
|
213
|
+
if (item !== null && typeof item === "object" && columnName in item) {
|
|
214
|
+
values.push(item[columnName]);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
const columnSummary = DataArtifacts.summarizeValues(values);
|
|
218
|
+
if (Array.isArray(columnSummary)) {
|
|
219
|
+
columns.push({ name: columnName, values: columnSummary });
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
const entry = { ...columnSummary, name: columnName };
|
|
223
|
+
columns.push(entry);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Overall inflation guard
|
|
227
|
+
if (JSON.stringify(columns).length > JSON.stringify(data).length) {
|
|
228
|
+
return data;
|
|
229
|
+
}
|
|
230
|
+
return columns;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Generate a summary of a list of values (like a single column).
|
|
234
|
+
*
|
|
235
|
+
* @param values - List of values to summarize.
|
|
236
|
+
*
|
|
237
|
+
* @returns Object with column-like statistics, or the original list if
|
|
238
|
+
* the summary would be larger (inflation guard).
|
|
239
|
+
*/
|
|
240
|
+
static summarizeValues(values) {
|
|
241
|
+
if (values.length === 0) {
|
|
242
|
+
return { count: 0, types: [] };
|
|
243
|
+
}
|
|
244
|
+
const count = values.length;
|
|
245
|
+
// Calculate unique count
|
|
246
|
+
const uniqueValues = [];
|
|
247
|
+
for (const v of values) {
|
|
248
|
+
if (v !== null && typeof v === "object") {
|
|
249
|
+
uniqueValues.push(stableStringify(v));
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
uniqueValues.push(v);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
const uniqueCount = new Set(uniqueValues).size;
|
|
256
|
+
// Group values by type
|
|
257
|
+
const typeGroups = new Map();
|
|
258
|
+
for (const v of values) {
|
|
259
|
+
const typeName = getTypeName(v);
|
|
260
|
+
if (!typeGroups.has(typeName)) {
|
|
261
|
+
typeGroups.set(typeName, []);
|
|
262
|
+
}
|
|
263
|
+
typeGroups.get(typeName)?.push(v);
|
|
264
|
+
}
|
|
265
|
+
// Sort by count descending
|
|
266
|
+
const sortedEntries = [...typeGroups.entries()].sort((a, b) => b[1].length - a[1].length);
|
|
267
|
+
const types = [];
|
|
268
|
+
for (const [typeName, typeValues] of sortedEntries) {
|
|
269
|
+
const typeCount = typeValues.length;
|
|
270
|
+
const percentage = (typeCount / count) * 100;
|
|
271
|
+
const typeEntry = {
|
|
272
|
+
name: typeName,
|
|
273
|
+
count: typeCount,
|
|
274
|
+
percentage: Math.round(percentage * 10) / 10,
|
|
275
|
+
};
|
|
276
|
+
// Add sample value
|
|
277
|
+
typeEntry.sample_value = typeValues[Math.floor(Math.random() * typeValues.length)];
|
|
278
|
+
// Add type-specific statistics
|
|
279
|
+
if (typeName === "string") {
|
|
280
|
+
const lengths = typeValues.map((s) => s.length);
|
|
281
|
+
typeEntry.length_minimum = Math.min(...lengths);
|
|
282
|
+
typeEntry.length_maximum = Math.max(...lengths);
|
|
283
|
+
typeEntry.length_average = Math.round(mean(lengths) * 100) / 100;
|
|
284
|
+
if (lengths.length > 1) {
|
|
285
|
+
typeEntry.length_stdev = Math.round(stdev(lengths) * 100) / 100;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
else if (typeName === "int" || typeName === "float") {
|
|
289
|
+
const nums = typeValues;
|
|
290
|
+
typeEntry.minimum = Math.min(...nums);
|
|
291
|
+
typeEntry.maximum = Math.max(...nums);
|
|
292
|
+
typeEntry.average = Math.round(mean(nums) * 100) / 100;
|
|
293
|
+
if (nums.length > 1) {
|
|
294
|
+
typeEntry.stdev = Math.round(stdev(nums) * 100) / 100;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
else if (typeName === "object") {
|
|
298
|
+
const jsonLengths = typeValues.map((obj) => JSON.stringify(obj).length);
|
|
299
|
+
typeEntry.json_length_minimum = Math.min(...jsonLengths);
|
|
300
|
+
typeEntry.json_length_maximum = Math.max(...jsonLengths);
|
|
301
|
+
typeEntry.json_length_average = Math.round(mean(jsonLengths) * 100) / 100;
|
|
302
|
+
if (jsonLengths.length > 1) {
|
|
303
|
+
typeEntry.json_length_stdev = Math.round(stdev(jsonLengths) * 100) / 100;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
else if (typeName === "list") {
|
|
307
|
+
const listLengths = typeValues.map((lst) => lst.length);
|
|
308
|
+
typeEntry.length_minimum = Math.min(...listLengths);
|
|
309
|
+
typeEntry.length_maximum = Math.max(...listLengths);
|
|
310
|
+
typeEntry.length_average = Math.round(mean(listLengths) * 100) / 100;
|
|
311
|
+
if (listLengths.length > 1) {
|
|
312
|
+
typeEntry.length_stdev = Math.round(stdev(listLengths) * 100) / 100;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
types.push(typeEntry);
|
|
316
|
+
}
|
|
317
|
+
const summary = {
|
|
318
|
+
count,
|
|
319
|
+
unique_count: uniqueCount,
|
|
320
|
+
types,
|
|
321
|
+
};
|
|
322
|
+
// Inflation guard
|
|
323
|
+
if (JSON.stringify(summary).length > JSON.stringify(values).length) {
|
|
324
|
+
return values;
|
|
325
|
+
}
|
|
326
|
+
return summary;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Minimize an object for display.
|
|
330
|
+
*
|
|
331
|
+
* If JSON-stringified length is <= characterLimit chars, return it in full.
|
|
332
|
+
* If > characterLimit chars, show all keys but truncate string values and summarize lists.
|
|
333
|
+
*
|
|
334
|
+
* @param obj - The object to minimize.
|
|
335
|
+
* @param opts.characterLimit - Character limit above which to minimize.
|
|
336
|
+
* @param opts.minimizedObjectStringLength - Max length for string values.
|
|
337
|
+
* @param opts.tip - Tip to include. Defaults to null (no tip); pass a string to include one.
|
|
338
|
+
*
|
|
339
|
+
* @returns Object with "data" key containing the minimized content.
|
|
340
|
+
*/
|
|
341
|
+
static minimizeObject(obj, opts) {
|
|
342
|
+
const characterLimit = opts?.characterLimit ?? 50_000;
|
|
343
|
+
const minimizedObjectStringLength = opts?.minimizedObjectStringLength ?? 5_000;
|
|
344
|
+
const tip = opts?.tip ?? null;
|
|
345
|
+
const jsonStr = JSON.stringify(obj, null, 2);
|
|
346
|
+
if (jsonStr.length <= characterLimit) {
|
|
347
|
+
return { data: obj };
|
|
348
|
+
}
|
|
349
|
+
const minimized = DataArtifacts.minimizeObjectValues(obj, {
|
|
350
|
+
minimizedObjectStringLength,
|
|
351
|
+
});
|
|
352
|
+
if (tip !== null) {
|
|
353
|
+
minimized._tip = tip;
|
|
354
|
+
}
|
|
355
|
+
const result = { data: minimized };
|
|
356
|
+
// Inflation guard
|
|
357
|
+
const minimizedSize = JSON.stringify(result, null, 2).length;
|
|
358
|
+
const originalSize = jsonStr.length;
|
|
359
|
+
if (minimizedSize > originalSize) {
|
|
360
|
+
return { data: obj };
|
|
361
|
+
}
|
|
362
|
+
return result;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Evaluate a JSONPath-like expression for field access only.
|
|
366
|
+
*
|
|
367
|
+
* Supports:
|
|
368
|
+
* - "field" - top-level field
|
|
369
|
+
* - "field.nested" - nested field access
|
|
370
|
+
*
|
|
371
|
+
* Does NOT support array indexing - use rows/columns parameters instead.
|
|
372
|
+
*
|
|
373
|
+
* @param data - The data to query.
|
|
374
|
+
* @param path - The dot-separated field path.
|
|
375
|
+
*
|
|
376
|
+
* @returns The extracted value.
|
|
377
|
+
*
|
|
378
|
+
* @throws TypeError if trying to access field on non-object.
|
|
379
|
+
* @throws Error if field doesn't exist.
|
|
380
|
+
*/
|
|
381
|
+
static evaluateJsonPath(data, path) {
|
|
382
|
+
if (!path) {
|
|
383
|
+
return data;
|
|
384
|
+
}
|
|
385
|
+
const parts = path.split(".");
|
|
386
|
+
let current = data;
|
|
387
|
+
for (const part of parts) {
|
|
388
|
+
if (current === null || typeof current !== "object" || Array.isArray(current)) {
|
|
389
|
+
const typeName = current === null ? "null" : Array.isArray(current) ? "list" : typeof current;
|
|
390
|
+
throw new TypeError(`Cannot access field '${part}' on ${typeName}. Use rows/columns parameters to filter list data.`);
|
|
391
|
+
}
|
|
392
|
+
const obj = current;
|
|
393
|
+
if (!(part in obj)) {
|
|
394
|
+
const available = Object.keys(obj).length > 0 ? Object.keys(obj).join(", ") : "(empty)";
|
|
395
|
+
throw new Error(`Field '${part}' not found. Available fields: ${available}`);
|
|
396
|
+
}
|
|
397
|
+
current = obj[part];
|
|
398
|
+
}
|
|
399
|
+
return current;
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Parse the row selection parameter into a list of row indices.
|
|
403
|
+
*
|
|
404
|
+
* @param rows - Can be a single row index (number), list of indices, range string ("0-10"), or "all".
|
|
405
|
+
* @param totalRows - Total number of rows in the dataset.
|
|
406
|
+
*
|
|
407
|
+
* @returns List of row indices to include.
|
|
408
|
+
*/
|
|
409
|
+
static parseRowSelection(rows, totalRows) {
|
|
410
|
+
if (typeof rows === "number") {
|
|
411
|
+
let row = rows;
|
|
412
|
+
if (row < 0) {
|
|
413
|
+
row = totalRows + row;
|
|
414
|
+
}
|
|
415
|
+
if (row < 0 || row >= totalRows) {
|
|
416
|
+
throw new Error(`Row index ${row} is out of range for dataset with ${totalRows} rows`);
|
|
417
|
+
}
|
|
418
|
+
return [row];
|
|
419
|
+
}
|
|
420
|
+
if (Array.isArray(rows)) {
|
|
421
|
+
const validatedRows = [];
|
|
422
|
+
for (let row of rows) {
|
|
423
|
+
if (row < 0) {
|
|
424
|
+
row = totalRows + row;
|
|
425
|
+
}
|
|
426
|
+
if (row < 0 || row >= totalRows) {
|
|
427
|
+
throw new Error(`Row index ${row} is out of range for dataset with ${totalRows} rows`);
|
|
428
|
+
}
|
|
429
|
+
validatedRows.push(row);
|
|
430
|
+
}
|
|
431
|
+
return validatedRows;
|
|
432
|
+
}
|
|
433
|
+
if (typeof rows === "string") {
|
|
434
|
+
if (rows === "all") {
|
|
435
|
+
return Array.from({ length: totalRows }, (_, i) => i);
|
|
436
|
+
}
|
|
437
|
+
if (rows.includes("-")) {
|
|
438
|
+
const parts = rows.split("-", 2);
|
|
439
|
+
if (parts.length !== 2) {
|
|
440
|
+
throw new Error(`Invalid range format: ${rows}. Expected format: 'start-end' (e.g., '0-10')`);
|
|
441
|
+
}
|
|
442
|
+
const startStr = parts[0];
|
|
443
|
+
const endStr = parts[1];
|
|
444
|
+
let start = startStr ? Number.parseInt(startStr, 10) : 0;
|
|
445
|
+
let end = endStr ? Number.parseInt(endStr, 10) : totalRows;
|
|
446
|
+
if (Number.isNaN(start) || Number.isNaN(end)) {
|
|
447
|
+
throw new Error(`Invalid range format: ${rows}. Expected integers in 'start-end' format.`);
|
|
448
|
+
}
|
|
449
|
+
if (start < 0)
|
|
450
|
+
start = totalRows + start;
|
|
451
|
+
if (end < 0)
|
|
452
|
+
end = totalRows + end;
|
|
453
|
+
if (start < 0 || start >= totalRows) {
|
|
454
|
+
throw new Error(`Start index ${start} is out of range`);
|
|
455
|
+
}
|
|
456
|
+
if (end < 0 || end > totalRows) {
|
|
457
|
+
throw new Error(`End index ${end} is out of range`);
|
|
458
|
+
}
|
|
459
|
+
if (start > end) {
|
|
460
|
+
throw new Error(`Start index ${start} is greater than end index ${end}`);
|
|
461
|
+
}
|
|
462
|
+
return Array.from({ length: end - start }, (_, i) => start + i);
|
|
463
|
+
}
|
|
464
|
+
throw new Error(`Invalid row selection: ${rows}. Must be an integer, list of integers, 'all', or a range like '0-10'`);
|
|
465
|
+
}
|
|
466
|
+
throw new Error(`Invalid row selection type: ${typeof rows}`);
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Parse the column selection parameter into a list of column names.
|
|
470
|
+
*
|
|
471
|
+
* @param columns - Can be a single column name (string), list of column names, or "all".
|
|
472
|
+
* @param availableColumns - List of all available column names in the dataset.
|
|
473
|
+
*
|
|
474
|
+
* @returns List of column names to include.
|
|
475
|
+
*/
|
|
476
|
+
static parseColumnSelection(columns, availableColumns) {
|
|
477
|
+
if (typeof columns === "string") {
|
|
478
|
+
if (columns === "all") {
|
|
479
|
+
return availableColumns;
|
|
480
|
+
}
|
|
481
|
+
if (!availableColumns.includes(columns)) {
|
|
482
|
+
throw new Error(`Column '${columns}' not found. Available columns: ${availableColumns.join(", ")}`);
|
|
483
|
+
}
|
|
484
|
+
return [columns];
|
|
485
|
+
}
|
|
486
|
+
if (Array.isArray(columns)) {
|
|
487
|
+
for (const col of columns) {
|
|
488
|
+
if (!availableColumns.includes(col)) {
|
|
489
|
+
throw new Error(`Column '${col}' not found. Available columns: ${availableColumns.join(", ")}`);
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
return columns;
|
|
493
|
+
}
|
|
494
|
+
throw new Error(`Invalid column selection type: ${typeof columns}`);
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Filter data by row indices and column names.
|
|
498
|
+
*
|
|
499
|
+
* @param data - The full dataset.
|
|
500
|
+
* @param rowIndices - List of row indices to include.
|
|
501
|
+
* @param columnNames - List of column names to include.
|
|
502
|
+
*
|
|
503
|
+
* @returns Filtered data.
|
|
504
|
+
*/
|
|
505
|
+
static filterDataByRowsAndColumns(data, rowIndices, columnNames) {
|
|
506
|
+
const filteredData = [];
|
|
507
|
+
for (const rowIdx of rowIndices) {
|
|
508
|
+
if (rowIdx >= data.length) {
|
|
509
|
+
continue;
|
|
510
|
+
}
|
|
511
|
+
const row = data[rowIdx];
|
|
512
|
+
const filteredRow = {};
|
|
513
|
+
for (const col of columnNames) {
|
|
514
|
+
if (col in row) {
|
|
515
|
+
filteredRow[col] = row[col];
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
filteredData.push(filteredRow);
|
|
519
|
+
}
|
|
520
|
+
return filteredData;
|
|
521
|
+
}
|
|
522
|
+
/** Recursively minimize values in an object. */
|
|
523
|
+
static minimizeObjectValues(value, opts) {
|
|
524
|
+
const minimizedObjectStringLength = opts?.minimizedObjectStringLength ?? 5_000;
|
|
525
|
+
const depth = opts?.depth ?? 0;
|
|
526
|
+
const path = opts?.path ?? "";
|
|
527
|
+
if (depth > 10) {
|
|
528
|
+
return "...";
|
|
529
|
+
}
|
|
530
|
+
if (typeof value === "string") {
|
|
531
|
+
if (value.length > minimizedObjectStringLength) {
|
|
532
|
+
const remaining = value.length - minimizedObjectStringLength;
|
|
533
|
+
return `${value.slice(0, minimizedObjectStringLength)}... [${formatNumber(remaining)} more chars]`;
|
|
534
|
+
}
|
|
535
|
+
return value;
|
|
536
|
+
}
|
|
537
|
+
if (value !== null && typeof value === "object" && !Array.isArray(value)) {
|
|
538
|
+
const obj = value;
|
|
539
|
+
const result = {};
|
|
540
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
541
|
+
result[k] = DataArtifacts.minimizeObjectValues(v, {
|
|
542
|
+
minimizedObjectStringLength,
|
|
543
|
+
depth: depth + 1,
|
|
544
|
+
path: path ? `${path}.${k}` : k,
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
return result;
|
|
548
|
+
}
|
|
549
|
+
if (Array.isArray(value)) {
|
|
550
|
+
if (value.length === 0) {
|
|
551
|
+
return value;
|
|
552
|
+
}
|
|
553
|
+
if (value[0] !== null && typeof value[0] === "object" && !Array.isArray(value[0])) {
|
|
554
|
+
const tableResult = DataArtifacts.summarizeTable(value);
|
|
555
|
+
const summaryDict = {
|
|
556
|
+
_total_rows: value.length,
|
|
557
|
+
_columns: tableResult,
|
|
558
|
+
};
|
|
559
|
+
if (path) {
|
|
560
|
+
summaryDict._json_path = path;
|
|
561
|
+
}
|
|
562
|
+
if (JSON.stringify(summaryDict).length > JSON.stringify(value).length) {
|
|
563
|
+
return value;
|
|
564
|
+
}
|
|
565
|
+
return summaryDict;
|
|
566
|
+
}
|
|
567
|
+
const valResult = DataArtifacts.summarizeValues(value);
|
|
568
|
+
const summaryDict = {
|
|
569
|
+
_total_items: value.length,
|
|
570
|
+
_summary: valResult,
|
|
571
|
+
};
|
|
572
|
+
if (path) {
|
|
573
|
+
summaryDict._json_path = path;
|
|
574
|
+
}
|
|
575
|
+
if (JSON.stringify(summaryDict).length > JSON.stringify(value).length) {
|
|
576
|
+
return value;
|
|
577
|
+
}
|
|
578
|
+
return summaryDict;
|
|
579
|
+
}
|
|
580
|
+
return value;
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
//# sourceMappingURL=data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/artifacts/data.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact viewing and minimization utilities.
|
|
3
|
+
*/
|
|
4
|
+
import type { Artifact } from "@a2a-js/sdk";
|
|
5
|
+
import type { ArtifactForLLM } from "../types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Minimize artifact list for LLM display.
|
|
8
|
+
*
|
|
9
|
+
* Combines all TextParts within each artifact into a single TextPartForLLM.
|
|
10
|
+
* Handles FileParts by including file metadata and saved paths.
|
|
11
|
+
*
|
|
12
|
+
* @param artifacts - List of artifacts to minimize.
|
|
13
|
+
* @param opts.characterLimit - Character limit above which to minimize.
|
|
14
|
+
* @param opts.minimizedObjectStringLength - Max length for string values in objects.
|
|
15
|
+
* @param opts.savedFilePaths - Mapping of artifactId to saved file paths.
|
|
16
|
+
* When provided, file parts show saved locations.
|
|
17
|
+
* When null, FileWithBytes parts show an error and FileWithUri parts
|
|
18
|
+
* show the raw URI.
|
|
19
|
+
* @param opts.textTip - Tip string for minimized text artifacts. null = no tip.
|
|
20
|
+
* @param opts.dataTip - Tip string for minimized data artifacts. null = no tip.
|
|
21
|
+
*
|
|
22
|
+
* @returns List of ArtifactForLLM objects.
|
|
23
|
+
*/
|
|
24
|
+
export declare function minimizeArtifacts(artifacts: Artifact[], opts?: {
|
|
25
|
+
characterLimit?: number;
|
|
26
|
+
minimizedObjectStringLength?: number;
|
|
27
|
+
savedFilePaths?: Record<string, string[]> | null;
|
|
28
|
+
textTip?: string | null;
|
|
29
|
+
dataTip?: string | null;
|
|
30
|
+
}): ArtifactForLLM[];
|
|
31
|
+
export { DataArtifacts } from "./data.js";
|
|
32
|
+
export { TextArtifacts } from "./text.js";
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/artifacts/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAA8B,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAkD,MAAM,aAAa,CAAC;AAIlG;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,CAAC,EAAE;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GACF,cAAc,EAAE,CAiHlB;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
|