@inkeep/agents-run-api 0.0.0-dev-20250913035831 → 0.0.0-dev-20250915163022

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({
@@ -456,6 +461,7 @@ var apiKeyAuth = () => factory.createMiddleware(async (c, next) => {
456
461
  return;
457
462
  } else if (apiKey) {
458
463
  const executionContext = await extractContextFromApiKey(apiKey);
464
+ executionContext.agentId = agentId;
459
465
  c.set("executionContext", executionContext);
460
466
  logger.info({}, "API key authenticated successfully");
461
467
  await next();
@@ -473,12 +479,14 @@ var apiKeyAuth = () => factory.createMiddleware(async (c, next) => {
473
479
  }
474
480
  try {
475
481
  const executionContext = await extractContextFromApiKey(apiKey);
482
+ executionContext.agentId = agentId;
476
483
  c.set("executionContext", executionContext);
477
484
  logger.debug(
478
485
  {
479
486
  tenantId: executionContext.tenantId,
480
487
  projectId: executionContext.projectId,
481
- graphId: executionContext.graphId
488
+ graphId: executionContext.graphId,
489
+ agentId: executionContext.agentId
482
490
  },
483
491
  "API key authenticated successfully"
484
492
  );
@@ -2985,13 +2993,13 @@ var IncrementalStreamParser = class {
2985
2993
  if (part.type === "tool-call-delta" && part.toolName === targetToolName) {
2986
2994
  const delta = part.argsTextDelta || "";
2987
2995
  if (jsonBuffer.length + delta.length > MAX_BUFFER_SIZE) {
2988
- logger7.warn("JSON buffer exceeded maximum size, truncating");
2996
+ logger7.warn({ bufferSize: jsonBuffer.length + delta.length, maxSize: MAX_BUFFER_SIZE }, "JSON buffer exceeded maximum size, truncating");
2989
2997
  jsonBuffer = jsonBuffer.slice(-MAX_BUFFER_SIZE / 2);
2990
2998
  }
2991
2999
  jsonBuffer += delta;
2992
3000
  for (const char of delta) {
2993
3001
  if (componentBuffer.length > MAX_BUFFER_SIZE) {
2994
- logger7.warn("Component buffer exceeded maximum size, resetting");
3002
+ logger7.warn({ bufferSize: componentBuffer.length, maxSize: MAX_BUFFER_SIZE }, "Component buffer exceeded maximum size, resetting");
2995
3003
  componentBuffer = "";
2996
3004
  depth = 0;
2997
3005
  continue;
@@ -3019,7 +3027,7 @@ var IncrementalStreamParser = class {
3019
3027
  try {
3020
3028
  const component = JSON.parse(componentMatch[0]);
3021
3029
  if (typeof component !== "object" || !component.id) {
3022
- logger7.warn("Invalid component structure, skipping");
3030
+ logger7.warn({ component }, "Invalid component structure, skipping");
3023
3031
  componentBuffer = "";
3024
3032
  continue;
3025
3033
  }
@@ -4615,7 +4623,7 @@ function createDelegateToAgentTool({
4615
4623
  }
4616
4624
  } else {
4617
4625
  resolvedHeaders = {
4618
- Authorization: `Bearer ${delegateConfig.config.apiKey}`,
4626
+ Authorization: `Bearer ${metadata.apiKey}`,
4619
4627
  "x-inkeep-tenant-id": tenantId,
4620
4628
  "x-inkeep-project-id": projectId,
4621
4629
  "x-inkeep-graph-id": graphId,
@@ -4731,7 +4739,7 @@ var SystemPromptBuilder = class {
4731
4739
  this.templates.set(name, content);
4732
4740
  }
4733
4741
  this.loaded = true;
4734
- logger13.debug(`Loaded ${this.templates.size} templates for version ${this.version}`);
4742
+ logger13.debug({ templateCount: this.templates.size, version: this.version }, `Loaded ${this.templates.size} templates for version ${this.version}`);
4735
4743
  } catch (error) {
4736
4744
  logger13.error({ error }, `Failed to load templates for version ${this.version}`);
4737
4745
  throw new Error(`Template loading failed: ${error}`);
@@ -5968,7 +5976,7 @@ Key requirements:
5968
5976
  }
5969
5977
  );
5970
5978
  } catch (error) {
5971
- logger14.debug("Failed to track agent reasoning");
5979
+ logger14.debug({ error }, "Failed to track agent reasoning");
5972
5980
  }
5973
5981
  }
5974
5982
  if (last && "toolCalls" in last && last.toolCalls) {
@@ -6051,7 +6059,7 @@ Key requirements:
6051
6059
  }
6052
6060
  );
6053
6061
  } catch (error) {
6054
- logger14.debug("Failed to track agent reasoning");
6062
+ logger14.debug({ error }, "Failed to track agent reasoning");
6055
6063
  }
6056
6064
  }
6057
6065
  if (last && "toolCalls" in last && last.toolCalls) {
@@ -6462,7 +6470,8 @@ var createTaskHandler = (config2, credentialStoreRegistry) => {
6462
6470
  taskId: task.id,
6463
6471
  threadId: contextId,
6464
6472
  // using conversationId as threadId for now
6465
- streamRequestId
6473
+ streamRequestId,
6474
+ ...config2.apiKey ? { apiKey: config2.apiKey } : {}
6466
6475
  }
6467
6476
  });
6468
6477
  const stepContents = response.steps && Array.isArray(response.steps) ? response.steps.flatMap((step) => {
@@ -6710,7 +6719,7 @@ async function hydrateAgent({
6710
6719
  }
6711
6720
  }
6712
6721
  async function getRegisteredAgent(executionContext, credentialStoreRegistry) {
6713
- const { tenantId, projectId, graphId, agentId, baseUrl } = executionContext;
6722
+ const { tenantId, projectId, graphId, agentId, baseUrl, apiKey } = executionContext;
6714
6723
  if (!agentId) {
6715
6724
  throw new Error("Agent ID is required");
6716
6725
  }
@@ -6726,7 +6735,8 @@ async function getRegisteredAgent(executionContext, credentialStoreRegistry) {
6726
6735
  dbAgent,
6727
6736
  graphId,
6728
6737
  baseUrl: agentFrameworkBaseUrl,
6729
- credentialStoreRegistry
6738
+ credentialStoreRegistry,
6739
+ apiKey
6730
6740
  });
6731
6741
  }
6732
6742
 
@@ -8828,11 +8838,10 @@ app4.delete("/", async (c) => {
8828
8838
  );
8829
8839
  });
8830
8840
  var mcp_default = app4;
8831
-
8832
- // src/app.ts
8833
8841
  var logger22 = agentsCore.getLogger("agents-run-api");
8834
8842
  function createExecutionHono(serverConfig, credentialStores) {
8835
8843
  const app6 = new zodOpenapi.OpenAPIHono();
8844
+ app6.use("*", otel.otel());
8836
8845
  app6.use("*", requestId.requestId());
8837
8846
  app6.use("*", async (c, next) => {
8838
8847
  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({
@@ -161,6 +166,7 @@ var apiKeyAuth = () => createMiddleware(async (c, next) => {
161
166
  return;
162
167
  } else if (apiKey) {
163
168
  const executionContext = await extractContextFromApiKey(apiKey);
169
+ executionContext.agentId = agentId;
164
170
  c.set("executionContext", executionContext);
165
171
  logger.info({}, "API key authenticated successfully");
166
172
  await next();
@@ -178,12 +184,14 @@ var apiKeyAuth = () => createMiddleware(async (c, next) => {
178
184
  }
179
185
  try {
180
186
  const executionContext = await extractContextFromApiKey(apiKey);
187
+ executionContext.agentId = agentId;
181
188
  c.set("executionContext", executionContext);
182
189
  logger.debug(
183
190
  {
184
191
  tenantId: executionContext.tenantId,
185
192
  projectId: executionContext.projectId,
186
- graphId: executionContext.graphId
193
+ graphId: executionContext.graphId,
194
+ agentId: executionContext.agentId
187
195
  },
188
196
  "API key authenticated successfully"
189
197
  );
@@ -2670,13 +2678,13 @@ var IncrementalStreamParser = class {
2670
2678
  if (part.type === "tool-call-delta" && part.toolName === targetToolName) {
2671
2679
  const delta = part.argsTextDelta || "";
2672
2680
  if (jsonBuffer.length + delta.length > MAX_BUFFER_SIZE) {
2673
- logger7.warn("JSON buffer exceeded maximum size, truncating");
2681
+ logger7.warn({ bufferSize: jsonBuffer.length + delta.length, maxSize: MAX_BUFFER_SIZE }, "JSON buffer exceeded maximum size, truncating");
2674
2682
  jsonBuffer = jsonBuffer.slice(-MAX_BUFFER_SIZE / 2);
2675
2683
  }
2676
2684
  jsonBuffer += delta;
2677
2685
  for (const char of delta) {
2678
2686
  if (componentBuffer.length > MAX_BUFFER_SIZE) {
2679
- logger7.warn("Component buffer exceeded maximum size, resetting");
2687
+ logger7.warn({ bufferSize: componentBuffer.length, maxSize: MAX_BUFFER_SIZE }, "Component buffer exceeded maximum size, resetting");
2680
2688
  componentBuffer = "";
2681
2689
  depth = 0;
2682
2690
  continue;
@@ -2704,7 +2712,7 @@ var IncrementalStreamParser = class {
2704
2712
  try {
2705
2713
  const component = JSON.parse(componentMatch[0]);
2706
2714
  if (typeof component !== "object" || !component.id) {
2707
- logger7.warn("Invalid component structure, skipping");
2715
+ logger7.warn({ component }, "Invalid component structure, skipping");
2708
2716
  componentBuffer = "";
2709
2717
  continue;
2710
2718
  }
@@ -4298,7 +4306,7 @@ function createDelegateToAgentTool({
4298
4306
  }
4299
4307
  } else {
4300
4308
  resolvedHeaders = {
4301
- Authorization: `Bearer ${delegateConfig.config.apiKey}`,
4309
+ Authorization: `Bearer ${metadata.apiKey}`,
4302
4310
  "x-inkeep-tenant-id": tenantId,
4303
4311
  "x-inkeep-project-id": projectId,
4304
4312
  "x-inkeep-graph-id": graphId,
@@ -4414,7 +4422,7 @@ var SystemPromptBuilder = class {
4414
4422
  this.templates.set(name, content);
4415
4423
  }
4416
4424
  this.loaded = true;
4417
- logger13.debug(`Loaded ${this.templates.size} templates for version ${this.version}`);
4425
+ logger13.debug({ templateCount: this.templates.size, version: this.version }, `Loaded ${this.templates.size} templates for version ${this.version}`);
4418
4426
  } catch (error) {
4419
4427
  logger13.error({ error }, `Failed to load templates for version ${this.version}`);
4420
4428
  throw new Error(`Template loading failed: ${error}`);
@@ -5651,7 +5659,7 @@ Key requirements:
5651
5659
  }
5652
5660
  );
5653
5661
  } catch (error) {
5654
- logger14.debug("Failed to track agent reasoning");
5662
+ logger14.debug({ error }, "Failed to track agent reasoning");
5655
5663
  }
5656
5664
  }
5657
5665
  if (last && "toolCalls" in last && last.toolCalls) {
@@ -5734,7 +5742,7 @@ Key requirements:
5734
5742
  }
5735
5743
  );
5736
5744
  } catch (error) {
5737
- logger14.debug("Failed to track agent reasoning");
5745
+ logger14.debug({ error }, "Failed to track agent reasoning");
5738
5746
  }
5739
5747
  }
5740
5748
  if (last && "toolCalls" in last && last.toolCalls) {
@@ -6142,7 +6150,8 @@ var createTaskHandler = (config, credentialStoreRegistry) => {
6142
6150
  taskId: task.id,
6143
6151
  threadId: contextId,
6144
6152
  // using conversationId as threadId for now
6145
- streamRequestId
6153
+ streamRequestId,
6154
+ ...config.apiKey ? { apiKey: config.apiKey } : {}
6146
6155
  }
6147
6156
  });
6148
6157
  const stepContents = response.steps && Array.isArray(response.steps) ? response.steps.flatMap((step) => {
@@ -6388,7 +6397,7 @@ async function hydrateAgent({
6388
6397
  }
6389
6398
  }
6390
6399
  async function getRegisteredAgent(executionContext, credentialStoreRegistry) {
6391
- const { tenantId, projectId, graphId, agentId, baseUrl } = executionContext;
6400
+ const { tenantId, projectId, graphId, agentId, baseUrl, apiKey } = executionContext;
6392
6401
  if (!agentId) {
6393
6402
  throw new Error("Agent ID is required");
6394
6403
  }
@@ -6404,7 +6413,8 @@ async function getRegisteredAgent(executionContext, credentialStoreRegistry) {
6404
6413
  dbAgent,
6405
6414
  graphId,
6406
6415
  baseUrl: agentFrameworkBaseUrl,
6407
- credentialStoreRegistry
6416
+ credentialStoreRegistry,
6417
+ apiKey
6408
6418
  });
6409
6419
  }
6410
6420
 
@@ -8490,11 +8500,10 @@ app4.delete("/", async (c) => {
8490
8500
  );
8491
8501
  });
8492
8502
  var mcp_default = app4;
8493
-
8494
- // src/app.ts
8495
8503
  var logger22 = getLogger("agents-run-api");
8496
8504
  function createExecutionHono(serverConfig, credentialStores) {
8497
8505
  const app6 = new OpenAPIHono();
8506
+ app6.use("*", otel());
8498
8507
  app6.use("*", requestId());
8499
8508
  app6.use("*", async (c, next) => {
8500
8509
  c.set("serverConfig", serverConfig);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/agents-run-api",
3
- "version": "0.0.0-dev-20250913035831",
3
+ "version": "0.0.0-dev-20250915163022",
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.0.0-dev-20250913035831"
47
+ "@inkeep/agents-core": "^0.0.0-dev-20250915163022"
46
48
  },
47
49
  "devDependencies": {
48
50
  "@hono/vite-dev-server": "^0.20.1",