@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 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, invokeTool, userTimeZone }) => {
102
+ post_process_response: async ({ adminforth, output, inputs, userTimeZone }) => {
111
103
  if (hasToolError(output)) {
112
104
  return output;
113
105
  }
114
106
 
115
- const resourceId = inputs?.resourceId as string;
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
- const response = output as GetResourceDataToolResponse;
127
- formatDateTimeColumns(response.data, dateTimeColumnNames, localizedTimeZone);
121
+ formatDateTimeColumns(output.data, dateTimeColumnNames, localizedTimeZone);
128
122
 
129
- return response;
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 getDateTimeColumnNames(output: unknown): string[] {
304
- const resource = (output as GetResourceToolResponse).resource;
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
- return resource.columns
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,935 bytes received 562 bytes 416,994.00 bytes/sec
41
+ sent 207,931 bytes received 558 bytes 416,978.00 bytes/sec
42
42
  total size is 205,621 speedup is 0.99
@@ -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, invokeTool, userTimeZone }) {
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 resourceId = inputs === null || inputs === void 0 ? void 0 : inputs.resourceId;
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
- const response = output;
71
- formatDateTimeColumns(response.data, dateTimeColumnNames, localizedTimeZone);
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 getDateTimeColumnNames(output) {
200
- const resource = output.resource;
201
- return resource.columns
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,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adminforth/agent",
3
- "version": "1.26.7",
3
+ "version": "1.26.9",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",