@inkeep/agents-run-api 0.1.10 → 0.2.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/dist/index.cjs CHANGED
@@ -10,12 +10,13 @@ var agentsCore = require('@inkeep/agents-core');
10
10
  var nanoid = require('nanoid');
11
11
  var autoInstrumentationsNode = require('@opentelemetry/auto-instrumentations-node');
12
12
  var baggageSpanProcessor = require('@opentelemetry/baggage-span-processor');
13
+ var contextAsyncHooks = require('@opentelemetry/context-async-hooks');
14
+ var core = require('@opentelemetry/core');
13
15
  var exporterTraceOtlpHttp = require('@opentelemetry/exporter-trace-otlp-http');
16
+ var resources = require('@opentelemetry/resources');
14
17
  var sdkNode = require('@opentelemetry/sdk-node');
15
18
  var sdkTraceBase = require('@opentelemetry/sdk-trace-base');
16
19
  var semanticConventions = require('@opentelemetry/semantic-conventions');
17
- var resources = require('@opentelemetry/resources');
18
- var contextAsyncHooks = require('@opentelemetry/context-async-hooks');
19
20
  var zodOpenapi = require('@hono/zod-openapi');
20
21
  var api = require('@opentelemetry/api');
21
22
  var hono = require('hono');
@@ -35,6 +36,7 @@ var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
35
36
  var streamableHttp_js = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
36
37
  var v3 = require('zod/v3');
37
38
  var fetchToNode = require('fetch-to-node');
39
+ var otel = require('@hono/otel');
38
40
 
39
41
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
40
42
 
@@ -334,6 +336,9 @@ var resource = resources.resourceFromAttributes({
334
336
  var sdk = new sdkNode.NodeSDK({
335
337
  resource,
336
338
  contextManager: new contextAsyncHooks.AsyncLocalStorageContextManager(),
339
+ textMapPropagator: new core.CompositePropagator({
340
+ propagators: [new core.W3CTraceContextPropagator(), new core.W3CBaggagePropagator()]
341
+ }),
337
342
  spanProcessors: [new baggageSpanProcessor.BaggageSpanProcessor(baggageSpanProcessor.ALLOW_ALL_BAGGAGE_KEYS), batchProcessor],
338
343
  instrumentations: [
339
344
  autoInstrumentationsNode.getNodeAutoInstrumentations({
@@ -2985,13 +2990,13 @@ var IncrementalStreamParser = class {
2985
2990
  if (part.type === "tool-call-delta" && part.toolName === targetToolName) {
2986
2991
  const delta = part.argsTextDelta || "";
2987
2992
  if (jsonBuffer.length + delta.length > MAX_BUFFER_SIZE) {
2988
- logger7.warn("JSON buffer exceeded maximum size, truncating");
2993
+ logger7.warn({ bufferSize: jsonBuffer.length + delta.length, maxSize: MAX_BUFFER_SIZE }, "JSON buffer exceeded maximum size, truncating");
2989
2994
  jsonBuffer = jsonBuffer.slice(-MAX_BUFFER_SIZE / 2);
2990
2995
  }
2991
2996
  jsonBuffer += delta;
2992
2997
  for (const char of delta) {
2993
2998
  if (componentBuffer.length > MAX_BUFFER_SIZE) {
2994
- logger7.warn("Component buffer exceeded maximum size, resetting");
2999
+ logger7.warn({ bufferSize: componentBuffer.length, maxSize: MAX_BUFFER_SIZE }, "Component buffer exceeded maximum size, resetting");
2995
3000
  componentBuffer = "";
2996
3001
  depth = 0;
2997
3002
  continue;
@@ -3019,7 +3024,7 @@ var IncrementalStreamParser = class {
3019
3024
  try {
3020
3025
  const component = JSON.parse(componentMatch[0]);
3021
3026
  if (typeof component !== "object" || !component.id) {
3022
- logger7.warn("Invalid component structure, skipping");
3027
+ logger7.warn({ component }, "Invalid component structure, skipping");
3023
3028
  componentBuffer = "";
3024
3029
  continue;
3025
3030
  }
@@ -4615,7 +4620,7 @@ function createDelegateToAgentTool({
4615
4620
  }
4616
4621
  } else {
4617
4622
  resolvedHeaders = {
4618
- Authorization: `Bearer ${delegateConfig.config.apiKey}`,
4623
+ Authorization: `Bearer ${metadata.apiKey}`,
4619
4624
  "x-inkeep-tenant-id": tenantId,
4620
4625
  "x-inkeep-project-id": projectId,
4621
4626
  "x-inkeep-graph-id": graphId,
@@ -4731,7 +4736,7 @@ var SystemPromptBuilder = class {
4731
4736
  this.templates.set(name, content);
4732
4737
  }
4733
4738
  this.loaded = true;
4734
- logger13.debug(`Loaded ${this.templates.size} templates for version ${this.version}`);
4739
+ logger13.debug({ templateCount: this.templates.size, version: this.version }, `Loaded ${this.templates.size} templates for version ${this.version}`);
4735
4740
  } catch (error) {
4736
4741
  logger13.error({ error }, `Failed to load templates for version ${this.version}`);
4737
4742
  throw new Error(`Template loading failed: ${error}`);
@@ -5968,7 +5973,7 @@ Key requirements:
5968
5973
  }
5969
5974
  );
5970
5975
  } catch (error) {
5971
- logger14.debug("Failed to track agent reasoning");
5976
+ logger14.debug({ error }, "Failed to track agent reasoning");
5972
5977
  }
5973
5978
  }
5974
5979
  if (last && "toolCalls" in last && last.toolCalls) {
@@ -6051,7 +6056,7 @@ Key requirements:
6051
6056
  }
6052
6057
  );
6053
6058
  } catch (error) {
6054
- logger14.debug("Failed to track agent reasoning");
6059
+ logger14.debug({ error }, "Failed to track agent reasoning");
6055
6060
  }
6056
6061
  }
6057
6062
  if (last && "toolCalls" in last && last.toolCalls) {
@@ -6462,7 +6467,8 @@ var createTaskHandler = (config2, credentialStoreRegistry) => {
6462
6467
  taskId: task.id,
6463
6468
  threadId: contextId,
6464
6469
  // using conversationId as threadId for now
6465
- streamRequestId
6470
+ streamRequestId,
6471
+ ...config2.apiKey ? { apiKey: config2.apiKey } : {}
6466
6472
  }
6467
6473
  });
6468
6474
  const stepContents = response.steps && Array.isArray(response.steps) ? response.steps.flatMap((step) => {
@@ -6710,7 +6716,7 @@ async function hydrateAgent({
6710
6716
  }
6711
6717
  }
6712
6718
  async function getRegisteredAgent(executionContext, credentialStoreRegistry) {
6713
- const { tenantId, projectId, graphId, agentId, baseUrl } = executionContext;
6719
+ const { tenantId, projectId, graphId, agentId, baseUrl, apiKey } = executionContext;
6714
6720
  if (!agentId) {
6715
6721
  throw new Error("Agent ID is required");
6716
6722
  }
@@ -6726,7 +6732,8 @@ async function getRegisteredAgent(executionContext, credentialStoreRegistry) {
6726
6732
  dbAgent,
6727
6733
  graphId,
6728
6734
  baseUrl: agentFrameworkBaseUrl,
6729
- credentialStoreRegistry
6735
+ credentialStoreRegistry,
6736
+ apiKey
6730
6737
  });
6731
6738
  }
6732
6739
 
@@ -8828,11 +8835,10 @@ app4.delete("/", async (c) => {
8828
8835
  );
8829
8836
  });
8830
8837
  var mcp_default = app4;
8831
-
8832
- // src/app.ts
8833
8838
  var logger22 = agentsCore.getLogger("agents-run-api");
8834
8839
  function createExecutionHono(serverConfig, credentialStores) {
8835
8840
  const app6 = new zodOpenapi.OpenAPIHono();
8841
+ app6.use("*", otel.otel());
8836
8842
  app6.use("*", requestId.requestId());
8837
8843
  app6.use("*", async (c, next) => {
8838
8844
  c.set("serverConfig", serverConfig);
package/dist/index.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import { env, __publicField, dbClient_default, getFormattedConversationHistory, createDefaultConversationHistoryConfig, saveA2AMessageResponse } from './chunk-HO5J26MO.js';
2
2
  import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
3
3
  import { BaggageSpanProcessor, ALLOW_ALL_BAGGAGE_KEYS } from '@opentelemetry/baggage-span-processor';
4
+ import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';
5
+ import { CompositePropagator, W3CTraceContextPropagator, W3CBaggagePropagator } from '@opentelemetry/core';
4
6
  import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
7
+ import { resourceFromAttributes } from '@opentelemetry/resources';
5
8
  import { NodeSDK } from '@opentelemetry/sdk-node';
6
9
  import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
7
10
  import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';
8
- import { resourceFromAttributes } from '@opentelemetry/resources';
9
- import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';
10
11
  import { getLogger, getTracer, HeadersScopeSchema, getRequestExecutionContext, getAgentGraphWithDefaultAgent, contextValidationMiddleware, getFullGraph, createOrGetConversation, getActiveAgentForConversation, setActiveAgentForConversation, getAgentById, handleContextResolution, createMessage, commonGetErrorResponses, createDefaultCredentialStores, CredentialStoreRegistry, listTaskIdsByContextId, getTask, getLedgerArtifacts, getAgentGraph, createTask, updateTask, updateConversation, handleApiError, setSpanWithError, TaskState, setActiveAgentForThread, getConversation, getRelatedAgentsForGraph, getToolsForAgent, getDataComponentsForAgent, getArtifactComponentsForAgent, validateAndGetApiKey, getProject, ContextResolver, CredentialStuffer, MCPServerType, getCredentialReference, McpClient, getContextConfigById, getFullGraphDefinition, TemplateEngine, graphHasArtifactComponents, MCPTransportType, getExternalAgent } from '@inkeep/agents-core';
11
12
  import { OpenAPIHono, createRoute, z as z$1 } from '@hono/zod-openapi';
12
13
  import { trace, propagation, context, SpanStatusCode } from '@opentelemetry/api';
@@ -29,6 +30,7 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
29
30
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
30
31
  import { z as z$2 } from 'zod/v3';
31
32
  import { toReqRes, toFetchResponse } from 'fetch-to-node';
33
+ import { otel } from '@hono/otel';
32
34
 
33
35
  var maxExportBatchSize = env.OTEL_MAX_EXPORT_BATCH_SIZE ?? (env.ENVIRONMENT === "development" ? 1 : 512);
34
36
  var otlpExporter = new OTLPTraceExporter();
@@ -41,6 +43,9 @@ var resource = resourceFromAttributes({
41
43
  var sdk = new NodeSDK({
42
44
  resource,
43
45
  contextManager: new AsyncLocalStorageContextManager(),
46
+ textMapPropagator: new CompositePropagator({
47
+ propagators: [new W3CTraceContextPropagator(), new W3CBaggagePropagator()]
48
+ }),
44
49
  spanProcessors: [new BaggageSpanProcessor(ALLOW_ALL_BAGGAGE_KEYS), batchProcessor],
45
50
  instrumentations: [
46
51
  getNodeAutoInstrumentations({
@@ -2670,13 +2675,13 @@ var IncrementalStreamParser = class {
2670
2675
  if (part.type === "tool-call-delta" && part.toolName === targetToolName) {
2671
2676
  const delta = part.argsTextDelta || "";
2672
2677
  if (jsonBuffer.length + delta.length > MAX_BUFFER_SIZE) {
2673
- logger7.warn("JSON buffer exceeded maximum size, truncating");
2678
+ logger7.warn({ bufferSize: jsonBuffer.length + delta.length, maxSize: MAX_BUFFER_SIZE }, "JSON buffer exceeded maximum size, truncating");
2674
2679
  jsonBuffer = jsonBuffer.slice(-MAX_BUFFER_SIZE / 2);
2675
2680
  }
2676
2681
  jsonBuffer += delta;
2677
2682
  for (const char of delta) {
2678
2683
  if (componentBuffer.length > MAX_BUFFER_SIZE) {
2679
- logger7.warn("Component buffer exceeded maximum size, resetting");
2684
+ logger7.warn({ bufferSize: componentBuffer.length, maxSize: MAX_BUFFER_SIZE }, "Component buffer exceeded maximum size, resetting");
2680
2685
  componentBuffer = "";
2681
2686
  depth = 0;
2682
2687
  continue;
@@ -2704,7 +2709,7 @@ var IncrementalStreamParser = class {
2704
2709
  try {
2705
2710
  const component = JSON.parse(componentMatch[0]);
2706
2711
  if (typeof component !== "object" || !component.id) {
2707
- logger7.warn("Invalid component structure, skipping");
2712
+ logger7.warn({ component }, "Invalid component structure, skipping");
2708
2713
  componentBuffer = "";
2709
2714
  continue;
2710
2715
  }
@@ -4298,7 +4303,7 @@ function createDelegateToAgentTool({
4298
4303
  }
4299
4304
  } else {
4300
4305
  resolvedHeaders = {
4301
- Authorization: `Bearer ${delegateConfig.config.apiKey}`,
4306
+ Authorization: `Bearer ${metadata.apiKey}`,
4302
4307
  "x-inkeep-tenant-id": tenantId,
4303
4308
  "x-inkeep-project-id": projectId,
4304
4309
  "x-inkeep-graph-id": graphId,
@@ -4414,7 +4419,7 @@ var SystemPromptBuilder = class {
4414
4419
  this.templates.set(name, content);
4415
4420
  }
4416
4421
  this.loaded = true;
4417
- logger13.debug(`Loaded ${this.templates.size} templates for version ${this.version}`);
4422
+ logger13.debug({ templateCount: this.templates.size, version: this.version }, `Loaded ${this.templates.size} templates for version ${this.version}`);
4418
4423
  } catch (error) {
4419
4424
  logger13.error({ error }, `Failed to load templates for version ${this.version}`);
4420
4425
  throw new Error(`Template loading failed: ${error}`);
@@ -5651,7 +5656,7 @@ Key requirements:
5651
5656
  }
5652
5657
  );
5653
5658
  } catch (error) {
5654
- logger14.debug("Failed to track agent reasoning");
5659
+ logger14.debug({ error }, "Failed to track agent reasoning");
5655
5660
  }
5656
5661
  }
5657
5662
  if (last && "toolCalls" in last && last.toolCalls) {
@@ -5734,7 +5739,7 @@ Key requirements:
5734
5739
  }
5735
5740
  );
5736
5741
  } catch (error) {
5737
- logger14.debug("Failed to track agent reasoning");
5742
+ logger14.debug({ error }, "Failed to track agent reasoning");
5738
5743
  }
5739
5744
  }
5740
5745
  if (last && "toolCalls" in last && last.toolCalls) {
@@ -6142,7 +6147,8 @@ var createTaskHandler = (config, credentialStoreRegistry) => {
6142
6147
  taskId: task.id,
6143
6148
  threadId: contextId,
6144
6149
  // using conversationId as threadId for now
6145
- streamRequestId
6150
+ streamRequestId,
6151
+ ...config.apiKey ? { apiKey: config.apiKey } : {}
6146
6152
  }
6147
6153
  });
6148
6154
  const stepContents = response.steps && Array.isArray(response.steps) ? response.steps.flatMap((step) => {
@@ -6388,7 +6394,7 @@ async function hydrateAgent({
6388
6394
  }
6389
6395
  }
6390
6396
  async function getRegisteredAgent(executionContext, credentialStoreRegistry) {
6391
- const { tenantId, projectId, graphId, agentId, baseUrl } = executionContext;
6397
+ const { tenantId, projectId, graphId, agentId, baseUrl, apiKey } = executionContext;
6392
6398
  if (!agentId) {
6393
6399
  throw new Error("Agent ID is required");
6394
6400
  }
@@ -6404,7 +6410,8 @@ async function getRegisteredAgent(executionContext, credentialStoreRegistry) {
6404
6410
  dbAgent,
6405
6411
  graphId,
6406
6412
  baseUrl: agentFrameworkBaseUrl,
6407
- credentialStoreRegistry
6413
+ credentialStoreRegistry,
6414
+ apiKey
6408
6415
  });
6409
6416
  }
6410
6417
 
@@ -8490,11 +8497,10 @@ app4.delete("/", async (c) => {
8490
8497
  );
8491
8498
  });
8492
8499
  var mcp_default = app4;
8493
-
8494
- // src/app.ts
8495
8500
  var logger22 = getLogger("agents-run-api");
8496
8501
  function createExecutionHono(serverConfig, credentialStores) {
8497
8502
  const app6 = new OpenAPIHono();
8503
+ app6.use("*", otel());
8498
8504
  app6.use("*", requestId());
8499
8505
  app6.use("*", async (c, next) => {
8500
8506
  c.set("serverConfig", serverConfig);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/agents-run-api",
3
- "version": "0.1.10",
3
+ "version": "0.2.0",
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",
@@ -22,6 +22,7 @@
22
22
  "@opentelemetry/auto-instrumentations-node": "^0.64.1",
23
23
  "@opentelemetry/baggage-span-processor": "^0.4.0",
24
24
  "@opentelemetry/context-async-hooks": "^2.1.0",
25
+ "@opentelemetry/core": "^2.1.0",
25
26
  "@opentelemetry/exporter-trace-otlp-http": "^0.205.0",
26
27
  "@opentelemetry/resources": "^2.1.0",
27
28
  "@opentelemetry/sdk-node": "^0.205.0",
@@ -36,13 +37,14 @@
36
37
  "drizzle-orm": "^0.44.4",
37
38
  "exit-hook": "^4.0.0",
38
39
  "fetch-to-node": "^2.1.0",
39
- "hono": "^4.8.10",
40
+ "hono": "^4.9.7",
40
41
  "jmespath": "^0.16.0",
42
+ "keytar": "^7.9.0",
41
43
  "nanoid": "^5.1.5",
42
44
  "traverse": "^0.6.11",
43
45
  "ts-pattern": "^5.7.1",
44
46
  "zod": "^4.1.5",
45
- "@inkeep/agents-core": "^0.1.10"
47
+ "@inkeep/agents-core": "^0.2.0"
46
48
  },
47
49
  "devDependencies": {
48
50
  "@hono/vite-dev-server": "^0.20.1",