@adminforth/agent 1.26.7 → 1.26.9
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/apiBasedTools.ts +33 -21
- package/build.log +1 -1
- package/dist/apiBasedTools.js +24 -12
- package/package.json +1 -1
package/apiBasedTools.ts
CHANGED
|
@@ -23,6 +23,7 @@ type CookieItem = {
|
|
|
23
23
|
type ToolOverrideCallParams = Pick<ApiBasedToolCallParams, 'httpExtra' | 'inputs' | 'userTimeZone'>;
|
|
24
24
|
|
|
25
25
|
type ToolOverrideContext = {
|
|
26
|
+
adminforth: IAdminForth;
|
|
26
27
|
output?: unknown;
|
|
27
28
|
adminUser?: AdminUser;
|
|
28
29
|
httpExtra?: Partial<HttpExtra>;
|
|
@@ -38,15 +39,6 @@ type ToolOverride = {
|
|
|
38
39
|
post_process_response?: (params: ToolOverrideContext) => Promise<unknown> | unknown;
|
|
39
40
|
};
|
|
40
41
|
|
|
41
|
-
type GetResourceToolResponse = {
|
|
42
|
-
resource: {
|
|
43
|
-
columns: Array<{
|
|
44
|
-
name: string;
|
|
45
|
-
type?: string;
|
|
46
|
-
}>;
|
|
47
|
-
};
|
|
48
|
-
};
|
|
49
|
-
|
|
50
42
|
type GetResourceDataToolResponse = {
|
|
51
43
|
data: Array<Record<string, unknown>>;
|
|
52
44
|
total?: number;
|
|
@@ -107,26 +99,28 @@ const TOOL_OVERRIDES: Record<string, ToolOverride> = {
|
|
|
107
99
|
format_tool: ({ inputs, resourceLabel }) => (
|
|
108
100
|
`Get ${getDataPrefix(inputs)}${resourceLabel}`
|
|
109
101
|
),
|
|
110
|
-
post_process_response: async ({ output, inputs,
|
|
102
|
+
post_process_response: async ({ adminforth, output, inputs, userTimeZone }) => {
|
|
111
103
|
if (hasToolError(output)) {
|
|
112
104
|
return output;
|
|
113
105
|
}
|
|
114
106
|
|
|
115
|
-
const
|
|
116
|
-
const getResourceOutput = await invokeTool('get_resource', {
|
|
117
|
-
inputs: { resourceId },
|
|
118
|
-
});
|
|
119
|
-
const dateTimeColumnNames = getDateTimeColumnNames(getResourceOutput);
|
|
107
|
+
const dateTimeColumnNames = getDateTimeColumnNames(adminforth, inputs);
|
|
120
108
|
|
|
121
109
|
if (dateTimeColumnNames.length === 0) {
|
|
122
110
|
return output;
|
|
123
111
|
}
|
|
124
112
|
|
|
113
|
+
if (!hasGetResourceDataRows(output)) {
|
|
114
|
+
logger.warn(
|
|
115
|
+
`Skipping datetime formatting for get_resource_data because response.data is not an array for resource ${getInputString(inputs, 'resourceId') ?? 'unknown'}`,
|
|
116
|
+
);
|
|
117
|
+
return output;
|
|
118
|
+
}
|
|
119
|
+
|
|
125
120
|
const localizedTimeZone = userTimeZone ?? DEFAULT_USER_TIME_ZONE;
|
|
126
|
-
|
|
127
|
-
formatDateTimeColumns(response.data, dateTimeColumnNames, localizedTimeZone);
|
|
121
|
+
formatDateTimeColumns(output.data, dateTimeColumnNames, localizedTimeZone);
|
|
128
122
|
|
|
129
|
-
return
|
|
123
|
+
return output;
|
|
130
124
|
},
|
|
131
125
|
},
|
|
132
126
|
aggregate: {
|
|
@@ -300,10 +294,26 @@ function hasToolError(output: unknown): output is { error: unknown } {
|
|
|
300
294
|
return typeof output === 'object' && output !== null && 'error' in output;
|
|
301
295
|
}
|
|
302
296
|
|
|
303
|
-
function
|
|
304
|
-
|
|
297
|
+
function hasGetResourceDataRows(output: unknown): output is GetResourceDataToolResponse {
|
|
298
|
+
if (typeof output !== 'object' || output === null || !('data' in output)) {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
return Array.isArray((output as { data?: unknown }).data);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
function getDateTimeColumnNames(
|
|
306
|
+
adminforth: IAdminForth,
|
|
307
|
+
inputs: Record<string, unknown> | undefined,
|
|
308
|
+
): string[] {
|
|
309
|
+
const resourceId = getInputString(inputs, 'resourceId');
|
|
310
|
+
const resource = adminforth.config.resources.find((res) => res.resourceId === resourceId);
|
|
305
311
|
|
|
306
|
-
|
|
312
|
+
if (!resource) {
|
|
313
|
+
return [];
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
return resource.dataSourceColumns
|
|
307
317
|
.filter((column) => column.type === AdminForthDataTypes.DATETIME)
|
|
308
318
|
.map((column) => column.name);
|
|
309
319
|
}
|
|
@@ -378,6 +388,7 @@ async function applyToolOverride(params: {
|
|
|
378
388
|
}
|
|
379
389
|
|
|
380
390
|
const postProcessedOutput = await override.post_process_response({
|
|
391
|
+
adminforth,
|
|
381
392
|
output: sanitizedOutput,
|
|
382
393
|
adminUser,
|
|
383
394
|
httpExtra,
|
|
@@ -450,6 +461,7 @@ export async function formatApiBasedToolCall(params: {
|
|
|
450
461
|
const formatTool = TOOL_OVERRIDES[params.toolName]?.format_tool;
|
|
451
462
|
|
|
452
463
|
return await formatTool?.({
|
|
464
|
+
adminforth: params.adminforth,
|
|
453
465
|
adminUser: params.adminUser,
|
|
454
466
|
httpExtra: params.httpExtra,
|
|
455
467
|
inputs: params.inputs,
|
package/build.log
CHANGED
|
@@ -38,5 +38,5 @@ custom/skills/fetch_data/SKILL.md
|
|
|
38
38
|
custom/skills/mutate_data/
|
|
39
39
|
custom/skills/mutate_data/SKILL.md
|
|
40
40
|
|
|
41
|
-
sent 207,
|
|
41
|
+
sent 207,931 bytes received 558 bytes 416,978.00 bytes/sec
|
|
42
42
|
total size is 205,621 speedup is 0.99
|
package/dist/apiBasedTools.js
CHANGED
|
@@ -54,22 +54,22 @@ const TOOL_OVERRIDES = {
|
|
|
54
54
|
},
|
|
55
55
|
get_resource_data: {
|
|
56
56
|
format_tool: ({ inputs, resourceLabel }) => (`Get ${getDataPrefix(inputs)}${resourceLabel}`),
|
|
57
|
-
post_process_response: (_a) => __awaiter(void 0, [_a], void 0, function* ({ output, inputs,
|
|
57
|
+
post_process_response: (_a) => __awaiter(void 0, [_a], void 0, function* ({ adminforth, output, inputs, userTimeZone }) {
|
|
58
|
+
var _b;
|
|
58
59
|
if (hasToolError(output)) {
|
|
59
60
|
return output;
|
|
60
61
|
}
|
|
61
|
-
const
|
|
62
|
-
const getResourceOutput = yield invokeTool('get_resource', {
|
|
63
|
-
inputs: { resourceId },
|
|
64
|
-
});
|
|
65
|
-
const dateTimeColumnNames = getDateTimeColumnNames(getResourceOutput);
|
|
62
|
+
const dateTimeColumnNames = getDateTimeColumnNames(adminforth, inputs);
|
|
66
63
|
if (dateTimeColumnNames.length === 0) {
|
|
67
64
|
return output;
|
|
68
65
|
}
|
|
66
|
+
if (!hasGetResourceDataRows(output)) {
|
|
67
|
+
logger.warn(`Skipping datetime formatting for get_resource_data because response.data is not an array for resource ${(_b = getInputString(inputs, 'resourceId')) !== null && _b !== void 0 ? _b : 'unknown'}`);
|
|
68
|
+
return output;
|
|
69
|
+
}
|
|
69
70
|
const localizedTimeZone = userTimeZone !== null && userTimeZone !== void 0 ? userTimeZone : DEFAULT_USER_TIME_ZONE;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return response;
|
|
71
|
+
formatDateTimeColumns(output.data, dateTimeColumnNames, localizedTimeZone);
|
|
72
|
+
return output;
|
|
73
73
|
}),
|
|
74
74
|
},
|
|
75
75
|
aggregate: {
|
|
@@ -196,9 +196,19 @@ function wipePath(target, pathParts) {
|
|
|
196
196
|
function hasToolError(output) {
|
|
197
197
|
return typeof output === 'object' && output !== null && 'error' in output;
|
|
198
198
|
}
|
|
199
|
-
function
|
|
200
|
-
|
|
201
|
-
|
|
199
|
+
function hasGetResourceDataRows(output) {
|
|
200
|
+
if (typeof output !== 'object' || output === null || !('data' in output)) {
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
return Array.isArray(output.data);
|
|
204
|
+
}
|
|
205
|
+
function getDateTimeColumnNames(adminforth, inputs) {
|
|
206
|
+
const resourceId = getInputString(inputs, 'resourceId');
|
|
207
|
+
const resource = adminforth.config.resources.find((res) => res.resourceId === resourceId);
|
|
208
|
+
if (!resource) {
|
|
209
|
+
return [];
|
|
210
|
+
}
|
|
211
|
+
return resource.dataSourceColumns
|
|
202
212
|
.filter((column) => column.type === AdminForthDataTypes.DATETIME)
|
|
203
213
|
.map((column) => column.name);
|
|
204
214
|
}
|
|
@@ -242,6 +252,7 @@ function applyToolOverride(params) {
|
|
|
242
252
|
return sanitizedOutput;
|
|
243
253
|
}
|
|
244
254
|
const postProcessedOutput = yield override.post_process_response({
|
|
255
|
+
adminforth,
|
|
245
256
|
output: sanitizedOutput,
|
|
246
257
|
adminUser,
|
|
247
258
|
httpExtra,
|
|
@@ -301,6 +312,7 @@ export function formatApiBasedToolCall(params) {
|
|
|
301
312
|
var _a;
|
|
302
313
|
const formatTool = (_a = TOOL_OVERRIDES[params.toolName]) === null || _a === void 0 ? void 0 : _a.format_tool;
|
|
303
314
|
return yield (formatTool === null || formatTool === void 0 ? void 0 : formatTool({
|
|
315
|
+
adminforth: params.adminforth,
|
|
304
316
|
adminUser: params.adminUser,
|
|
305
317
|
httpExtra: params.httpExtra,
|
|
306
318
|
inputs: params.inputs,
|