@inkeep/agents-run-api 0.39.1 → 0.39.2

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/dist/index.cjs CHANGED
@@ -35,8 +35,6 @@ var jmespath = require('jmespath');
35
35
  var schemaConversion = require('@inkeep/agents-core/utils/schema-conversion');
36
36
  var Ajv = require('ajv');
37
37
  var zod = require('zod');
38
- var destr = require('destr');
39
- var traverse = require('traverse');
40
38
  var mcp_js = require('@alcyone-labs/modelcontextprotocol-sdk/server/mcp.js');
41
39
  var streamableHttp_js = require('@alcyone-labs/modelcontextprotocol-sdk/server/streamableHttp.js');
42
40
  var fetchToNode = require('fetch-to-node');
@@ -68,8 +66,6 @@ var schema__namespace = /*#__PURE__*/_interopNamespace(schema);
68
66
  var crypto2__default = /*#__PURE__*/_interopDefault(crypto2);
69
67
  var jmespath__default = /*#__PURE__*/_interopDefault(jmespath);
70
68
  var Ajv__default = /*#__PURE__*/_interopDefault(Ajv);
71
- var destr__default = /*#__PURE__*/_interopDefault(destr);
72
- var traverse__default = /*#__PURE__*/_interopDefault(traverse);
73
69
 
74
70
  var __defProp = Object.defineProperty;
75
71
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -13201,16 +13197,6 @@ var ArtifactCreateSchema = class {
13201
13197
  });
13202
13198
  }
13203
13199
  };
13204
- function parseEmbeddedJson(data) {
13205
- return traverse__default.default(data).map(function(x6) {
13206
- if (typeof x6 === "string") {
13207
- const v3 = destr__default.default(x6);
13208
- if (v3 !== x6 && (Array.isArray(v3) || v3 && typeof v3 === "object")) {
13209
- this.update(v3);
13210
- }
13211
- }
13212
- });
13213
- }
13214
13200
 
13215
13201
  // src/a2a/client.ts
13216
13202
  init_logger();
@@ -15779,9 +15765,26 @@ var Agent = class {
15779
15765
  description: originalTool.description,
15780
15766
  inputSchema: originalTool.inputSchema,
15781
15767
  execute: async (args2, { toolCallId }) => {
15768
+ let processedArgs;
15769
+ try {
15770
+ processedArgs = agentsCore.parseEmbeddedJson(args2);
15771
+ if (JSON.stringify(args2) !== JSON.stringify(processedArgs)) {
15772
+ logger20.warn(
15773
+ { toolName, toolCallId },
15774
+ "Fixed stringified JSON parameters (indicates schema ambiguity)"
15775
+ );
15776
+ }
15777
+ } catch (error) {
15778
+ logger20.warn(
15779
+ { toolName, toolCallId, error: error.message },
15780
+ "Failed to parse embedded JSON, using original args"
15781
+ );
15782
+ processedArgs = args2;
15783
+ }
15784
+ const finalArgs = processedArgs;
15782
15785
  if (needsApproval) {
15783
15786
  logger20.info(
15784
- { toolName, toolCallId, args: args2 },
15787
+ { toolName, toolCallId, args: finalArgs },
15785
15788
  "Tool requires approval - waiting for user response"
15786
15789
  );
15787
15790
  const currentSpan = api.trace.getActiveSpan();
@@ -15855,7 +15858,7 @@ var Agent = class {
15855
15858
  }
15856
15859
  logger20.debug({ toolName, toolCallId }, "MCP Tool Called");
15857
15860
  try {
15858
- const rawResult = await originalTool.execute(args2, { toolCallId });
15861
+ const rawResult = await originalTool.execute(finalArgs, { toolCallId });
15859
15862
  if (rawResult && typeof rawResult === "object" && rawResult.isError) {
15860
15863
  const errorMessage = rawResult.content?.[0]?.text || "MCP tool returned an error";
15861
15864
  logger20.error(
@@ -15865,7 +15868,7 @@ var Agent = class {
15865
15868
  toolSessionManager.recordToolResult(sessionId, {
15866
15869
  toolCallId,
15867
15870
  toolName,
15868
- args: args2,
15871
+ args: finalArgs,
15869
15872
  result: { error: errorMessage, failed: true },
15870
15873
  timestamp: Date.now()
15871
15874
  });
@@ -15898,12 +15901,12 @@ var Agent = class {
15898
15901
  `Tool "${toolName}" failed: ${errorMessage}. This tool is currently unavailable. Please try a different approach or inform the user of the issue.`
15899
15902
  );
15900
15903
  }
15901
- const parsedResult = parseEmbeddedJson(rawResult);
15904
+ const parsedResult = agentsCore.parseEmbeddedJson(rawResult);
15902
15905
  const enhancedResult = this.enhanceToolResultWithStructureHints(parsedResult);
15903
15906
  toolSessionManager.recordToolResult(sessionId, {
15904
15907
  toolCallId,
15905
15908
  toolName,
15906
- args: args2,
15909
+ args: finalArgs,
15907
15910
  result: enhancedResult,
15908
15911
  timestamp: Date.now()
15909
15912
  });
@@ -16231,8 +16234,25 @@ var Agent = class {
16231
16234
  description: functionToolDef.description || functionToolDef.name,
16232
16235
  inputSchema: zodSchema,
16233
16236
  execute: async (args2, { toolCallId }) => {
16237
+ let processedArgs;
16238
+ try {
16239
+ processedArgs = agentsCore.parseEmbeddedJson(args2);
16240
+ if (JSON.stringify(args2) !== JSON.stringify(processedArgs)) {
16241
+ logger20.warn(
16242
+ { toolName: functionToolDef.name, toolCallId },
16243
+ "Fixed stringified JSON parameters (indicates schema ambiguity)"
16244
+ );
16245
+ }
16246
+ } catch (error) {
16247
+ logger20.warn(
16248
+ { toolName: functionToolDef.name, toolCallId, error: error.message },
16249
+ "Failed to parse embedded JSON, using original args"
16250
+ );
16251
+ processedArgs = args2;
16252
+ }
16253
+ const finalArgs = processedArgs;
16234
16254
  logger20.debug(
16235
- { toolName: functionToolDef.name, toolCallId, args: args2 },
16255
+ { toolName: functionToolDef.name, toolCallId, args: finalArgs },
16236
16256
  "Function Tool Called"
16237
16257
  );
16238
16258
  try {
@@ -16242,17 +16262,21 @@ var Agent = class {
16242
16262
  timeout: FUNCTION_TOOL_EXECUTION_TIMEOUT_MS_DEFAULT,
16243
16263
  vcpus: FUNCTION_TOOL_SANDBOX_VCPUS_DEFAULT
16244
16264
  };
16245
- const result = await sandboxExecutor.executeFunctionTool(functionToolDef.id, args2, {
16246
- description: functionToolDef.description || functionToolDef.name,
16247
- inputSchema: functionData.inputSchema || {},
16248
- executeCode: functionData.executeCode,
16249
- dependencies: functionData.dependencies || {},
16250
- sandboxConfig: this.config.sandboxConfig || defaultSandboxConfig
16251
- });
16265
+ const result = await sandboxExecutor.executeFunctionTool(
16266
+ functionToolDef.id,
16267
+ finalArgs,
16268
+ {
16269
+ description: functionToolDef.description || functionToolDef.name,
16270
+ inputSchema: functionData.inputSchema || {},
16271
+ executeCode: functionData.executeCode,
16272
+ dependencies: functionData.dependencies || {},
16273
+ sandboxConfig: this.config.sandboxConfig || defaultSandboxConfig
16274
+ }
16275
+ );
16252
16276
  toolSessionManager.recordToolResult(sessionId || "", {
16253
16277
  toolCallId,
16254
16278
  toolName: functionToolDef.name,
16255
- args: args2,
16279
+ args: finalArgs,
16256
16280
  result,
16257
16281
  timestamp: Date.now()
16258
16282
  });
@@ -16686,7 +16710,7 @@ ${output}`;
16686
16710
  let parsedForAnalysis = result;
16687
16711
  if (typeof result === "string") {
16688
16712
  try {
16689
- parsedForAnalysis = parseEmbeddedJson(result);
16713
+ parsedForAnalysis = agentsCore.parseEmbeddedJson(result);
16690
16714
  } catch (_error) {
16691
16715
  parsedForAnalysis = result;
16692
16716
  }
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import { dbClient_default } from './chunk-EVOISBFH.js';
4
4
  import { env } from './chunk-KBZIYCPJ.js';
5
5
  import { getLogger } from './chunk-A2S7GSHL.js';
6
6
  import { SESSION_CLEANUP_INTERVAL_MS, AGENT_EXECUTION_MAX_CONSECUTIVE_ERRORS, SESSION_TOOL_RESULT_CACHE_TIMEOUT_MS, STREAM_MAX_LIFETIME_MS, STREAM_BUFFER_MAX_SIZE_BYTES, STREAM_TEXT_GAP_THRESHOLD_MS, ARTIFACT_GENERATION_MAX_RETRIES, ARTIFACT_SESSION_MAX_PENDING, STATUS_UPDATE_DEFAULT_INTERVAL_SECONDS, STATUS_UPDATE_DEFAULT_NUM_EVENTS, ARTIFACT_SESSION_MAX_PREVIOUS_SUMMARIES, AGENT_EXECUTION_MAX_GENERATION_STEPS, FUNCTION_TOOL_SANDBOX_VCPUS_DEFAULT, FUNCTION_TOOL_EXECUTION_TIMEOUT_MS_DEFAULT, LLM_GENERATION_MAX_ALLOWED_TIMEOUT_MS, ARTIFACT_GENERATION_BACKOFF_INITIAL_MS, ARTIFACT_GENERATION_BACKOFF_MAX_MS, LLM_GENERATION_FIRST_CALL_TIMEOUT_MS_STREAMING, LLM_GENERATION_FIRST_CALL_TIMEOUT_MS_NON_STREAMING, LLM_GENERATION_SUBSEQUENT_CALL_TIMEOUT_MS, DELEGATION_TOOL_BACKOFF_MAX_ELAPSED_TIME_MS, DELEGATION_TOOL_BACKOFF_EXPONENT, DELEGATION_TOOL_BACKOFF_MAX_INTERVAL_MS, DELEGATION_TOOL_BACKOFF_INITIAL_INTERVAL_MS, STREAM_PARSER_MAX_SNAPSHOT_SIZE, STREAM_PARSER_MAX_STREAMED_SIZE, STREAM_PARSER_MAX_COLLECTED_PARTS } from './chunk-THWNUGWP.js';
7
- import { getTracer, HeadersScopeSchema, getRequestExecutionContext, createApiError, getAgentWithDefaultSubAgent, contextValidationMiddleware, getConversationId, getFullAgent, createOrGetConversation, getActiveAgentForConversation, setActiveAgentForConversation, getSubAgentById, handleContextResolution, createMessage, generateId, commonGetErrorResponses, loggerFactory, getConversation, createDefaultCredentialStores, CredentialStoreRegistry, createTask, getTask, updateTask, setSpanWithError, AGENT_EXECUTION_TRANSFER_COUNT_DEFAULT, updateConversation, handleApiError, TaskState, getAgentById, getProject, setActiveAgentForThread, getRelatedAgentsForAgent, getExternalAgentsForSubAgent, getTeamAgentsForSubAgent, getToolsForAgent, getDataComponentsForAgent, getArtifactComponentsForAgent, dbResultToMcpTool, CONVERSATION_HISTORY_MAX_OUTPUT_TOKENS_DEFAULT, CONVERSATION_HISTORY_DEFAULT_LIMIT, ModelFactory, getLedgerArtifacts, verifyTempToken, validateAndGetApiKey, verifyServiceToken, validateTargetAgent, ContextResolver, CredentialStuffer, MCPServerType, getUserScopedCredentialReference, getCredentialReference, McpClient, getFunctionToolsForSubAgent, getFunction, jsonSchemaToZod, getContextConfigById, getFullAgentDefinition, TemplateEngine, listTaskIdsByContextId, agentHasArtifactComponents, upsertLedgerArtifact, MCPTransportType, SPAN_KEYS, headers, generateServiceToken } from '@inkeep/agents-core';
7
+ import { getTracer, HeadersScopeSchema, getRequestExecutionContext, createApiError, getAgentWithDefaultSubAgent, contextValidationMiddleware, getConversationId, getFullAgent, createOrGetConversation, getActiveAgentForConversation, setActiveAgentForConversation, getSubAgentById, handleContextResolution, createMessage, generateId, commonGetErrorResponses, loggerFactory, getConversation, createDefaultCredentialStores, CredentialStoreRegistry, createTask, getTask, updateTask, setSpanWithError, AGENT_EXECUTION_TRANSFER_COUNT_DEFAULT, updateConversation, handleApiError, TaskState, getAgentById, getProject, setActiveAgentForThread, getRelatedAgentsForAgent, getExternalAgentsForSubAgent, getTeamAgentsForSubAgent, getToolsForAgent, getDataComponentsForAgent, getArtifactComponentsForAgent, dbResultToMcpTool, CONVERSATION_HISTORY_MAX_OUTPUT_TOKENS_DEFAULT, CONVERSATION_HISTORY_DEFAULT_LIMIT, ModelFactory, getLedgerArtifacts, verifyTempToken, validateAndGetApiKey, verifyServiceToken, validateTargetAgent, ContextResolver, CredentialStuffer, parseEmbeddedJson, MCPServerType, getUserScopedCredentialReference, getCredentialReference, McpClient, getFunctionToolsForSubAgent, getFunction, jsonSchemaToZod, getContextConfigById, getFullAgentDefinition, TemplateEngine, listTaskIdsByContextId, agentHasArtifactComponents, upsertLedgerArtifact, MCPTransportType, SPAN_KEYS, headers, generateServiceToken } from '@inkeep/agents-core';
8
8
  import { otel } from '@hono/otel';
9
9
  import { OpenAPIHono, createRoute, z as z$1 } from '@hono/zod-openapi';
10
10
  import { trace, propagation, context, SpanStatusCode } from '@opentelemetry/api';
@@ -21,8 +21,6 @@ import { isZodSchema, convertZodToJsonSchema } from '@inkeep/agents-core/utils/s
21
21
  import Ajv from 'ajv';
22
22
  import { randomUUID } from 'crypto';
23
23
  import { z } from 'zod';
24
- import destr from 'destr';
25
- import traverse from 'traverse';
26
24
  import { McpServer } from '@alcyone-labs/modelcontextprotocol-sdk/server/mcp.js';
27
25
  import { StreamableHTTPServerTransport } from '@alcyone-labs/modelcontextprotocol-sdk/server/streamableHttp.js';
28
26
  import { toReqRes, toFetchResponse } from 'fetch-to-node';
@@ -5556,16 +5554,6 @@ var ArtifactCreateSchema = class {
5556
5554
  });
5557
5555
  }
5558
5556
  };
5559
- function parseEmbeddedJson(data) {
5560
- return traverse(data).map(function(x) {
5561
- if (typeof x === "string") {
5562
- const v = destr(x);
5563
- if (v !== x && (Array.isArray(v) || v && typeof v === "object")) {
5564
- this.update(v);
5565
- }
5566
- }
5567
- });
5568
- }
5569
5557
 
5570
5558
  // src/a2a/client.ts
5571
5559
  var logger13 = getLogger("a2aClient");
@@ -8127,9 +8115,26 @@ var Agent = class {
8127
8115
  description: originalTool.description,
8128
8116
  inputSchema: originalTool.inputSchema,
8129
8117
  execute: async (args, { toolCallId }) => {
8118
+ let processedArgs;
8119
+ try {
8120
+ processedArgs = parseEmbeddedJson(args);
8121
+ if (JSON.stringify(args) !== JSON.stringify(processedArgs)) {
8122
+ logger16.warn(
8123
+ { toolName, toolCallId },
8124
+ "Fixed stringified JSON parameters (indicates schema ambiguity)"
8125
+ );
8126
+ }
8127
+ } catch (error) {
8128
+ logger16.warn(
8129
+ { toolName, toolCallId, error: error.message },
8130
+ "Failed to parse embedded JSON, using original args"
8131
+ );
8132
+ processedArgs = args;
8133
+ }
8134
+ const finalArgs = processedArgs;
8130
8135
  if (needsApproval) {
8131
8136
  logger16.info(
8132
- { toolName, toolCallId, args },
8137
+ { toolName, toolCallId, args: finalArgs },
8133
8138
  "Tool requires approval - waiting for user response"
8134
8139
  );
8135
8140
  const currentSpan = trace.getActiveSpan();
@@ -8203,7 +8208,7 @@ var Agent = class {
8203
8208
  }
8204
8209
  logger16.debug({ toolName, toolCallId }, "MCP Tool Called");
8205
8210
  try {
8206
- const rawResult = await originalTool.execute(args, { toolCallId });
8211
+ const rawResult = await originalTool.execute(finalArgs, { toolCallId });
8207
8212
  if (rawResult && typeof rawResult === "object" && rawResult.isError) {
8208
8213
  const errorMessage = rawResult.content?.[0]?.text || "MCP tool returned an error";
8209
8214
  logger16.error(
@@ -8213,7 +8218,7 @@ var Agent = class {
8213
8218
  toolSessionManager.recordToolResult(sessionId, {
8214
8219
  toolCallId,
8215
8220
  toolName,
8216
- args,
8221
+ args: finalArgs,
8217
8222
  result: { error: errorMessage, failed: true },
8218
8223
  timestamp: Date.now()
8219
8224
  });
@@ -8251,7 +8256,7 @@ var Agent = class {
8251
8256
  toolSessionManager.recordToolResult(sessionId, {
8252
8257
  toolCallId,
8253
8258
  toolName,
8254
- args,
8259
+ args: finalArgs,
8255
8260
  result: enhancedResult,
8256
8261
  timestamp: Date.now()
8257
8262
  });
@@ -8579,8 +8584,25 @@ var Agent = class {
8579
8584
  description: functionToolDef.description || functionToolDef.name,
8580
8585
  inputSchema: zodSchema,
8581
8586
  execute: async (args, { toolCallId }) => {
8587
+ let processedArgs;
8588
+ try {
8589
+ processedArgs = parseEmbeddedJson(args);
8590
+ if (JSON.stringify(args) !== JSON.stringify(processedArgs)) {
8591
+ logger16.warn(
8592
+ { toolName: functionToolDef.name, toolCallId },
8593
+ "Fixed stringified JSON parameters (indicates schema ambiguity)"
8594
+ );
8595
+ }
8596
+ } catch (error) {
8597
+ logger16.warn(
8598
+ { toolName: functionToolDef.name, toolCallId, error: error.message },
8599
+ "Failed to parse embedded JSON, using original args"
8600
+ );
8601
+ processedArgs = args;
8602
+ }
8603
+ const finalArgs = processedArgs;
8582
8604
  logger16.debug(
8583
- { toolName: functionToolDef.name, toolCallId, args },
8605
+ { toolName: functionToolDef.name, toolCallId, args: finalArgs },
8584
8606
  "Function Tool Called"
8585
8607
  );
8586
8608
  try {
@@ -8590,17 +8612,21 @@ var Agent = class {
8590
8612
  timeout: FUNCTION_TOOL_EXECUTION_TIMEOUT_MS_DEFAULT,
8591
8613
  vcpus: FUNCTION_TOOL_SANDBOX_VCPUS_DEFAULT
8592
8614
  };
8593
- const result = await sandboxExecutor.executeFunctionTool(functionToolDef.id, args, {
8594
- description: functionToolDef.description || functionToolDef.name,
8595
- inputSchema: functionData.inputSchema || {},
8596
- executeCode: functionData.executeCode,
8597
- dependencies: functionData.dependencies || {},
8598
- sandboxConfig: this.config.sandboxConfig || defaultSandboxConfig
8599
- });
8615
+ const result = await sandboxExecutor.executeFunctionTool(
8616
+ functionToolDef.id,
8617
+ finalArgs,
8618
+ {
8619
+ description: functionToolDef.description || functionToolDef.name,
8620
+ inputSchema: functionData.inputSchema || {},
8621
+ executeCode: functionData.executeCode,
8622
+ dependencies: functionData.dependencies || {},
8623
+ sandboxConfig: this.config.sandboxConfig || defaultSandboxConfig
8624
+ }
8625
+ );
8600
8626
  toolSessionManager.recordToolResult(sessionId || "", {
8601
8627
  toolCallId,
8602
8628
  toolName: functionToolDef.name,
8603
- args,
8629
+ args: finalArgs,
8604
8630
  result,
8605
8631
  timestamp: Date.now()
8606
8632
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/agents-run-api",
3
- "version": "0.39.1",
3
+ "version": "0.39.2",
4
4
  "description": "Agents Run API for Inkeep Agent Framework - handles chat, agent execution, and streaming",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -53,7 +53,7 @@
53
53
  "pino": "^9.11.0",
54
54
  "traverse": "^0.6.11",
55
55
  "ts-pattern": "^5.7.1",
56
- "@inkeep/agents-core": "^0.39.1"
56
+ "@inkeep/agents-core": "^0.39.2"
57
57
  },
58
58
  "peerDependencies": {
59
59
  "@hono/zod-openapi": "^1.1.5",