@inkeep/agents-run-api 0.1.1 → 0.1.3

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.
Files changed (116) hide show
  1. package/LICENSE.md +22 -17
  2. package/README.md +1 -1
  3. package/dist/AgentExecutionServer.d.ts +6 -1
  4. package/dist/AgentExecutionServer.d.ts.map +1 -1
  5. package/dist/AgentExecutionServer.js +10 -1
  6. package/dist/__tests__/setup.d.ts.map +1 -1
  7. package/dist/__tests__/setup.js +32 -2
  8. package/dist/__tests__/utils/testProject.js +1 -1
  9. package/dist/__tests__/utils/testRequest.js +1 -1
  10. package/dist/__tests__/utils/testTenant.d.ts +3 -3
  11. package/dist/__tests__/utils/testTenant.js +3 -3
  12. package/dist/a2a/client.d.ts.map +1 -1
  13. package/dist/a2a/client.js +1 -1
  14. package/dist/a2a/handlers.d.ts +1 -1
  15. package/dist/a2a/handlers.d.ts.map +1 -1
  16. package/dist/a2a/handlers.js +3 -4
  17. package/dist/a2a/transfer.d.ts +1 -1
  18. package/dist/a2a/transfer.d.ts.map +1 -1
  19. package/dist/a2a/transfer.js +2 -2
  20. package/dist/agents/Agent.d.ts +4 -4
  21. package/dist/agents/Agent.d.ts.map +1 -1
  22. package/dist/agents/Agent.js +31 -26
  23. package/dist/agents/ModelFactory.d.ts.map +1 -1
  24. package/dist/agents/ModelFactory.js +3 -3
  25. package/dist/agents/SystemPromptBuilder.d.ts +1 -1
  26. package/dist/agents/SystemPromptBuilder.d.ts.map +1 -1
  27. package/dist/agents/SystemPromptBuilder.js +2 -2
  28. package/dist/agents/ToolSessionManager.js +1 -1
  29. package/dist/agents/artifactTools.d.ts.map +1 -1
  30. package/dist/agents/artifactTools.js +4 -4
  31. package/dist/agents/generateTaskHandler.d.ts +3 -3
  32. package/dist/agents/generateTaskHandler.d.ts.map +1 -1
  33. package/dist/agents/generateTaskHandler.js +6 -6
  34. package/dist/agents/relationTools.d.ts +4 -2
  35. package/dist/agents/relationTools.d.ts.map +1 -1
  36. package/dist/agents/relationTools.js +13 -12
  37. package/dist/agents/types.d.ts +1 -1
  38. package/dist/agents/types.d.ts.map +1 -1
  39. package/dist/agents/versions/V1Config.d.ts +1 -1
  40. package/dist/agents/versions/V1Config.d.ts.map +1 -1
  41. package/dist/app.d.ts +11 -3
  42. package/dist/app.d.ts.map +1 -1
  43. package/dist/app.js +195 -173
  44. package/dist/data/agentGraph.d.ts +1 -1
  45. package/dist/data/agentGraph.d.ts.map +1 -1
  46. package/dist/data/agentGraph.js +2 -2
  47. package/dist/data/agents.d.ts +3 -3
  48. package/dist/data/agents.d.ts.map +1 -1
  49. package/dist/data/agents.js +11 -6
  50. package/dist/data/conversations.d.ts +1 -1
  51. package/dist/data/conversations.d.ts.map +1 -1
  52. package/dist/data/conversations.js +2 -2
  53. package/dist/data/db/clean.js +3 -3
  54. package/dist/data/db/dbClient.js +1 -1
  55. package/dist/env.d.ts +7 -5
  56. package/dist/env.d.ts.map +1 -1
  57. package/dist/env.js +1 -0
  58. package/dist/handlers/executionHandler.d.ts +1 -1
  59. package/dist/handlers/executionHandler.d.ts.map +1 -1
  60. package/dist/handlers/executionHandler.js +10 -13
  61. package/dist/index.d.ts +22 -4
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +22 -37
  64. package/dist/instrumentation.js +3 -3
  65. package/dist/logger.js +1 -1
  66. package/dist/middleware/api-key-auth.d.ts.map +1 -1
  67. package/dist/middleware/api-key-auth.js +4 -4
  68. package/dist/middleware/index.d.ts +1 -1
  69. package/dist/middleware/index.d.ts.map +1 -1
  70. package/dist/middleware/index.js +1 -1
  71. package/dist/openapi.js +1 -1
  72. package/dist/routes/agents.d.ts +7 -1
  73. package/dist/routes/agents.d.ts.map +1 -1
  74. package/dist/routes/agents.js +12 -9
  75. package/dist/routes/chat.d.ts +7 -1
  76. package/dist/routes/chat.d.ts.map +1 -1
  77. package/dist/routes/chat.js +7 -8
  78. package/dist/routes/chatDataStream.d.ts +7 -1
  79. package/dist/routes/chatDataStream.d.ts.map +1 -1
  80. package/dist/routes/chatDataStream.js +7 -7
  81. package/dist/routes/mcp.d.ts +7 -1
  82. package/dist/routes/mcp.d.ts.map +1 -1
  83. package/dist/routes/mcp.js +15 -15
  84. package/dist/server.d.ts +5 -0
  85. package/dist/server.d.ts.map +1 -0
  86. package/dist/server.js +61 -0
  87. package/dist/tracer.d.ts.map +1 -1
  88. package/dist/tracer.js +11 -1
  89. package/dist/utils/agent-operations.d.ts +14 -1
  90. package/dist/utils/agent-operations.d.ts.map +1 -1
  91. package/dist/utils/agent-operations.js +11 -0
  92. package/dist/utils/artifact-component-schema.d.ts +1 -1
  93. package/dist/utils/artifact-component-schema.d.ts.map +1 -1
  94. package/dist/utils/artifact-component-schema.js +4 -4
  95. package/dist/utils/artifact-parser.js +2 -2
  96. package/dist/utils/cleanup.js +1 -1
  97. package/dist/utils/data-component-schema.js +1 -1
  98. package/dist/utils/graph-session.d.ts +1 -1
  99. package/dist/utils/graph-session.d.ts.map +1 -1
  100. package/dist/utils/graph-session.js +22 -15
  101. package/dist/utils/incremental-stream-parser.d.ts +2 -2
  102. package/dist/utils/incremental-stream-parser.d.ts.map +1 -1
  103. package/dist/utils/incremental-stream-parser.js +5 -3
  104. package/dist/utils/response-formatter.d.ts.map +1 -1
  105. package/dist/utils/response-formatter.js +3 -3
  106. package/dist/utils/stream-helpers.d.ts +13 -1
  107. package/dist/utils/stream-helpers.d.ts.map +1 -1
  108. package/dist/utils/stream-helpers.js +111 -30
  109. package/dist/utils/stream-registry.d.ts +1 -1
  110. package/dist/utils/stream-registry.d.ts.map +1 -1
  111. package/package.json +19 -12
  112. package/templates/v1/artifact.xml +7 -0
  113. package/templates/v1/data-component.xml +9 -0
  114. package/templates/v1/system-prompt.xml +52 -0
  115. package/templates/v1/thinking-preparation.xml +34 -0
  116. package/templates/v1/tool.xml +12 -0
@@ -1,4 +1,5 @@
1
- import type { AgentConfig, DelegateRelation } from './Agent.js';
1
+ import { type CredentialStoreRegistry } from '@inkeep/agents-core';
2
+ import type { AgentConfig, DelegateRelation } from './Agent';
2
3
  export declare const createTransferToAgentTool: ({ transferConfig, callingAgentId, agent, streamRequestId, }: {
3
4
  transferConfig: AgentConfig;
4
5
  callingAgentId: string;
@@ -9,7 +10,7 @@ export declare const createTransferToAgentTool: ({ transferConfig, callingAgentI
9
10
  target: string;
10
11
  fromAgentId: string;
11
12
  }>;
12
- export declare function createDelegateToAgentTool({ delegateConfig, callingAgentId, tenantId, projectId, graphId, contextId, metadata, sessionId, agent, }: {
13
+ export declare function createDelegateToAgentTool({ delegateConfig, callingAgentId, tenantId, projectId, graphId, contextId, metadata, sessionId, agent, credentialStoreRegistry, }: {
13
14
  delegateConfig: DelegateRelation;
14
15
  callingAgentId: string;
15
16
  tenantId: string;
@@ -24,6 +25,7 @@ export declare function createDelegateToAgentTool({ delegateConfig, callingAgent
24
25
  };
25
26
  sessionId?: string;
26
27
  agent: any;
28
+ credentialStoreRegistry?: CredentialStoreRegistry;
27
29
  }): import("ai").Tool<{
28
30
  message: string;
29
31
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"relationTools.d.ts","sourceRoot":"","sources":["../../src/agents/relationTools.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA2BhE,eAAO,MAAM,yBAAyB,GAAI,6DAKvC;IACD,cAAc,EAAE,WAAW,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,GAAG,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;;;;EAsCA,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,EACxC,cAAc,EACd,cAAc,EACd,QAAQ,EACR,SAAS,EACT,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,KAAK,GACN,EAAE;IACD,cAAc,EAAE,gBAAgB,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QACR,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,GAAG,CAAC;CACZ;;;;;GAkNA"}
1
+ {"version":3,"file":"relationTools.d.ts","sourceRoot":"","sources":["../../src/agents/relationTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,uBAAuB,EAK7B,MAAM,qBAAqB,CAAC;AAW7B,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA2B7D,eAAO,MAAM,yBAAyB,GAAI,6DAKvC;IACD,cAAc,EAAE,WAAW,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,GAAG,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;;;;EAsCA,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,EACxC,cAAc,EACd,cAAc,EACd,QAAQ,EACR,SAAS,EACT,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,KAAK,EACL,uBAAuB,GACxB,EAAE;IACD,cAAc,EAAE,gBAAgB,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QACR,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,GAAG,CAAC;IACX,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;CACnD;;;;;GAsNA"}
@@ -1,15 +1,14 @@
1
+ import { ContextResolver, CredentialStuffer, createMessage, getCredentialReference, getExternalAgent, } from '@inkeep/agents-core';
1
2
  import { trace } from '@opentelemetry/api';
2
3
  import { tool } from 'ai';
3
4
  import { nanoid } from 'nanoid';
4
5
  import z from 'zod';
5
- import { A2AClient } from '../a2a/client.js';
6
- import { createMessage, getCredentialReference, getExternalAgent, CredentialStuffer, ContextResolver, } from '@inkeep/agents-core';
7
- import { saveA2AMessageResponse } from '../data/conversations.js';
8
- import dbClient from '../data/db/dbClient.js';
9
- import { executionServer } from '../index.js';
10
- import { getLogger } from '../logger.js';
11
- import { graphSessionManager } from '../utils/graph-session.js';
12
- import { toolSessionManager } from './ToolSessionManager.js';
6
+ import { A2AClient } from '../a2a/client';
7
+ import { saveA2AMessageResponse } from '../data/conversations';
8
+ import dbClient from '../data/db/dbClient';
9
+ import { getLogger } from '../logger';
10
+ import { graphSessionManager } from '../utils/graph-session';
11
+ import { toolSessionManager } from './ToolSessionManager';
13
12
  const logger = getLogger('relationships Tools');
14
13
  const generateTransferToolDescription = (config) => {
15
14
  return `Hand off the conversation to agent ${config.id}.
@@ -64,7 +63,7 @@ export const createTransferToAgentTool = ({ transferConfig, callingAgentId, agen
64
63
  },
65
64
  });
66
65
  };
67
- export function createDelegateToAgentTool({ delegateConfig, callingAgentId, tenantId, projectId, graphId, contextId, metadata, sessionId, agent, }) {
66
+ export function createDelegateToAgentTool({ delegateConfig, callingAgentId, tenantId, projectId, graphId, contextId, metadata, sessionId, agent, credentialStoreRegistry, }) {
68
67
  return tool({
69
68
  description: generateDelegateToolDescription(delegateConfig.config),
70
69
  inputSchema: z.object({ message: z.string() }),
@@ -104,9 +103,11 @@ export function createDelegateToAgentTool({ delegateConfig, callingAgentId, tena
104
103
  agentId: delegateConfig.config.id,
105
104
  });
106
105
  // If the external agent has a credential reference ID or headers, resolve them
107
- if (externalAgent && (externalAgent.credentialReferenceId || externalAgent.headers)) {
108
- const contextResolver = new ContextResolver(tenantId, projectId, dbClient, executionServer);
109
- const credentialStuffer = new CredentialStuffer(executionServer, contextResolver);
106
+ if (externalAgent &&
107
+ (externalAgent.credentialReferenceId || externalAgent.headers) &&
108
+ credentialStoreRegistry) {
109
+ const contextResolver = new ContextResolver(tenantId, projectId, dbClient, credentialStoreRegistry);
110
+ const credentialStuffer = new CredentialStuffer(credentialStoreRegistry, contextResolver);
110
111
  const credentialContext = {
111
112
  tenantId,
112
113
  projectId,
@@ -1,4 +1,4 @@
1
- import type { DataComponentApiInsert, ArtifactComponentApiInsert, Artifact } from '@inkeep/agents-core';
1
+ import type { Artifact, ArtifactComponentApiInsert, DataComponentApiInsert } from '@inkeep/agents-core';
2
2
  export interface VersionConfig<TConfig> {
3
3
  templateFiles: string[];
4
4
  assemble(templates: Map<string, string>, config: TConfig): string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGxG,MAAM,WAAW,aAAa,CAAC,OAAO;IACpC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;CACnE;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,cAAc,EAAE,sBAAsB,EAAE,CAAC;IACzC,kBAAkB,CAAC,EAAE,0BAA0B,EAAE,CAAC;IAClD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,aAAa,CAAC,OAAO;IACpC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;CACnE;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,cAAc,EAAE,sBAAsB,EAAE,CAAC;IACzC,kBAAkB,CAAC,EAAE,0BAA0B,EAAE,CAAC;IAClD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B"}
@@ -1,5 +1,5 @@
1
1
  import type { McpTool } from '@inkeep/agents-core';
2
- import type { SystemPromptV1, ToolData, VersionConfig } from '../types.js';
2
+ import type { SystemPromptV1, ToolData, VersionConfig } from '../types';
3
3
  export declare class V1Config implements VersionConfig<SystemPromptV1> {
4
4
  readonly templateFiles: string[];
5
5
  static convertMcpToolsToToolData(mcpTools: McpTool[] | undefined): ToolData[];
@@ -1 +1 @@
1
- {"version":3,"file":"V1Config.d.ts","sourceRoot":"","sources":["../../../src/agents/versions/V1Config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA0B,OAAO,EAAY,MAAM,qBAAqB,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3E,qBAAa,QAAS,YAAW,aAAa,CAAC,cAAc,CAAC;IAC5D,QAAQ,CAAC,aAAa,WAMpB;IAEF,MAAM,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,QAAQ,EAAE;IAoB7E,OAAO,CAAC,eAAe;IAOvB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM;IAwDxE,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,kCAAkC;IAgB1C,OAAO,CAAC,4BAA4B;IAQpC,OAAO,CAAC,8BAA8B;IAQtC,OAAO,CAAC,2BAA2B;IAqEnC,OAAO,CAAC,wBAAwB;IA4BhC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,6BAA6B;IAiCrC,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,qBAAqB;CAqB9B"}
1
+ {"version":3,"file":"V1Config.d.ts","sourceRoot":"","sources":["../../../src/agents/versions/V1Config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoC,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExE,qBAAa,QAAS,YAAW,aAAa,CAAC,cAAc,CAAC;IAC5D,QAAQ,CAAC,aAAa,WAMpB;IAEF,MAAM,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,QAAQ,EAAE;IAoB7E,OAAO,CAAC,eAAe;IAOvB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM;IAwDxE,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,kCAAkC;IAgB1C,OAAO,CAAC,4BAA4B;IAQpC,OAAO,CAAC,8BAA8B;IAQtC,OAAO,CAAC,2BAA2B;IAqEnC,OAAO,CAAC,wBAAwB;IA4BhC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,6BAA6B;IAiCrC,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,qBAAqB;CAqB9B"}
package/dist/app.d.ts CHANGED
@@ -1,4 +1,12 @@
1
- import { OpenApiHonoWithExecutionContext } from '@inkeep/agents-core';
2
- declare const app: OpenApiHonoWithExecutionContext;
3
- export default app;
1
+ import { OpenAPIHono } from '@hono/zod-openapi';
2
+ import { type CredentialStoreRegistry, type ExecutionContext, type ServerConfig } from '@inkeep/agents-core';
3
+ type AppVariables = {
4
+ executionContext: ExecutionContext;
5
+ serverConfig: ServerConfig;
6
+ credentialStores: CredentialStoreRegistry;
7
+ };
8
+ declare function createExecutionHono(serverConfig: ServerConfig, credentialStores: CredentialStoreRegistry): OpenAPIHono<{
9
+ Variables: AppVariables;
10
+ }, {}, "/">;
11
+ export { createExecutionHono };
4
12
  //# sourceMappingURL=app.d.ts.map
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAgBtE,QAAA,MAAM,GAAG,iCAAwC,CAAC;AAuNlD,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAgB7B,KAAK,YAAY,GAAG;IAClB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,uBAAuB,CAAC;CAC3C,CAAC;AAEF,iBAAS,mBAAmB,CAC1B,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,uBAAuB;eAEA,YAAY;YA4OtD;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
package/dist/app.js CHANGED
@@ -1,194 +1,216 @@
1
- import { createRoute } from '@hono/zod-openapi';
2
- import { OpenApiHonoWithExecutionContext } from '@inkeep/agents-core';
1
+ import { createRoute, OpenAPIHono } from '@hono/zod-openapi';
2
+ import { handleApiError, } from '@inkeep/agents-core';
3
3
  import { context as otelContext, propagation } from '@opentelemetry/api';
4
4
  import { cors } from 'hono/cors';
5
5
  import { HTTPException } from 'hono/http-exception';
6
6
  import { requestId } from 'hono/request-id';
7
7
  import { pinoLogger } from 'hono-pino';
8
- import { handleApiError } from '@inkeep/agents-core';
9
- import { getLogger } from './logger.js';
10
- import { apiKeyAuth } from './middleware/api-key-auth.js';
11
- import { setupOpenAPIRoutes } from './openapi.js';
12
- import agentRoutes from './routes/agents.js';
13
- import chatRoutes from './routes/chat.js';
14
- import chatDataRoutes from './routes/chatDataStream.js';
15
- import mcpRoutes from './routes/mcp.js';
16
- const app = new OpenApiHonoWithExecutionContext();
17
- // Request ID middleware
18
- app.use('*', requestId());
19
- // OpenTelemetry baggage middleware
20
- app.use('*', async (c, next) => {
21
- const reqId = c.get('requestId');
22
- let bag = propagation.getBaggage(otelContext.active());
23
- if (!bag) {
24
- bag = propagation.createBaggage();
25
- }
26
- bag = bag.setEntry('request.id', { value: String(reqId ?? 'unknown') });
27
- const ctxWithBag = propagation.setBaggage(otelContext.active(), bag);
28
- return otelContext.with(ctxWithBag, () => next());
29
- });
30
- // Baggage middleware for execution API - extracts context from API key authentication
31
- app.use('*', async (c, next) => {
32
- // Get the API key context if available (set by auth middleware)
33
- const executionContext = c.get('executionContext');
34
- if (!executionContext) {
35
- // No API key context, skip baggage setup
8
+ import { pino } from 'pino';
9
+ import { getLogger } from './logger';
10
+ import { apiKeyAuth } from './middleware/api-key-auth';
11
+ import { setupOpenAPIRoutes } from './openapi';
12
+ import agentRoutes from './routes/agents';
13
+ import chatRoutes from './routes/chat';
14
+ import chatDataRoutes from './routes/chatDataStream';
15
+ import mcpRoutes from './routes/mcp';
16
+ function createExecutionHono(serverConfig, credentialStores) {
17
+ const app = new OpenAPIHono();
18
+ // Request ID middleware
19
+ app.use('*', requestId());
20
+ // Server config and credential stores middleware
21
+ app.use('*', async (c, next) => {
22
+ c.set('serverConfig', serverConfig);
23
+ c.set('credentialStores', credentialStores);
36
24
  return next();
37
- }
38
- const { tenantId, projectId, graphId } = executionContext;
39
- // Extract conversation ID from JSON body if present
40
- let conversationId;
41
- if (c.req.header('content-type')?.includes('application/json')) {
42
- try {
43
- const body = await c.req.json();
44
- conversationId = body?.conversationId;
25
+ });
26
+ // OpenTelemetry baggage middleware
27
+ app.use('*', async (c, next) => {
28
+ const reqId = c.get('requestId');
29
+ let bag = propagation.getBaggage(otelContext.active());
30
+ if (!bag) {
31
+ bag = propagation.createBaggage();
45
32
  }
46
- catch (_) {
47
- // Silently ignore parse errors for non-JSON bodies
33
+ // Safety check for test environment where createBaggage might return undefined
34
+ if (bag && typeof bag.setEntry === 'function') {
35
+ bag = bag.setEntry('request.id', { value: String(reqId ?? 'unknown') });
36
+ const ctxWithBag = propagation.setBaggage(otelContext.active(), bag);
37
+ return otelContext.with(ctxWithBag, () => next());
48
38
  }
49
- }
50
- const entries = Object.fromEntries(Object.entries({
51
- 'graph.id': graphId,
52
- 'tenant.id': tenantId,
53
- 'project.id': projectId,
54
- 'conversation.id': conversationId,
55
- }).filter((entry) => {
56
- const [, v] = entry;
57
- return typeof v === 'string' && v.length > 0;
58
- }));
59
- if (!Object.keys(entries).length) {
60
39
  return next();
61
- }
62
- const bag = Object.entries(entries).reduce((b, [key, value]) => b.setEntry(key, { value: value || '' }), propagation.getBaggage(otelContext.active()) ?? propagation.createBaggage());
63
- const ctxWithBag = propagation.setBaggage(otelContext.active(), bag);
64
- return otelContext.with(ctxWithBag, () => next());
65
- });
66
- // Logging middleware
67
- app.use(pinoLogger({
68
- pino: getLogger(),
69
- http: {
70
- onResLevel(c) {
71
- if (c.res.status >= 500) {
72
- return 'error';
73
- }
74
- return 'info';
40
+ });
41
+ // Logging middleware
42
+ app.use(pinoLogger({
43
+ pino: getLogger() || pino({ level: 'debug' }),
44
+ http: {
45
+ onResLevel(c) {
46
+ if (c.res.status >= 500) {
47
+ return 'error';
48
+ }
49
+ return 'info';
50
+ },
75
51
  },
76
- },
77
- }));
78
- // Error handling
79
- app.onError(async (err, c) => {
80
- const isExpectedError = err instanceof HTTPException;
81
- const status = isExpectedError ? err.status : 500;
82
- const requestId = c.get('requestId') || 'unknown';
83
- // Zod validation error detection
84
- let zodIssues;
85
- if (err && typeof err === 'object') {
86
- if (err.cause && Array.isArray(err.cause.issues)) {
87
- zodIssues = err.cause.issues;
52
+ }));
53
+ // Error handling
54
+ app.onError(async (err, c) => {
55
+ const isExpectedError = err instanceof HTTPException;
56
+ const status = isExpectedError ? err.status : 500;
57
+ const requestId = c.get('requestId') || 'unknown';
58
+ // Zod validation error detection
59
+ let zodIssues;
60
+ if (err && typeof err === 'object') {
61
+ if (err.cause && Array.isArray(err.cause.issues)) {
62
+ zodIssues = err.cause.issues;
63
+ }
64
+ else if (Array.isArray(err.issues)) {
65
+ zodIssues = err.issues;
66
+ }
67
+ }
68
+ if (status === 400 && Array.isArray(zodIssues)) {
69
+ c.status(400);
70
+ c.header('Content-Type', 'application/problem+json');
71
+ c.header('X-Content-Type-Options', 'nosniff');
72
+ return c.json({
73
+ type: 'https://docs.inkeep.com/agents-api/errors#bad_request',
74
+ title: 'Validation Failed',
75
+ status: 400,
76
+ detail: 'Request validation failed',
77
+ errors: zodIssues.map((issue) => ({
78
+ detail: issue.message,
79
+ pointer: issue.path ? `/${issue.path.join('/')}` : undefined,
80
+ name: issue.path ? issue.path.join('.') : undefined,
81
+ reason: issue.message,
82
+ })),
83
+ });
84
+ }
85
+ if (status >= 500) {
86
+ if (!isExpectedError) {
87
+ const errorMessage = err instanceof Error ? err.message : String(err);
88
+ const errorStack = err instanceof Error ? err.stack : undefined;
89
+ const logger = getLogger();
90
+ if (logger) {
91
+ logger.error({
92
+ error: err,
93
+ message: errorMessage,
94
+ stack: errorStack,
95
+ path: c.req.path,
96
+ requestId,
97
+ }, 'Unexpected server error occurred');
98
+ }
99
+ }
100
+ else {
101
+ const logger = getLogger();
102
+ if (logger) {
103
+ logger.error({
104
+ error: err,
105
+ path: c.req.path,
106
+ requestId,
107
+ status,
108
+ }, 'Server error occurred');
109
+ }
110
+ }
88
111
  }
89
- else if (Array.isArray(err.issues)) {
90
- zodIssues = err.issues;
112
+ if (isExpectedError) {
113
+ try {
114
+ const response = err.getResponse();
115
+ return response;
116
+ }
117
+ catch (responseError) {
118
+ const logger = getLogger();
119
+ if (logger) {
120
+ logger.error({ error: responseError }, 'Error while handling HTTPException response');
121
+ }
122
+ }
91
123
  }
92
- }
93
- if (status === 400 && Array.isArray(zodIssues)) {
94
- c.status(400);
124
+ const { status: respStatus, title, detail, instance } = await handleApiError(err, requestId);
125
+ c.status(respStatus);
95
126
  c.header('Content-Type', 'application/problem+json');
96
127
  c.header('X-Content-Type-Options', 'nosniff');
97
128
  return c.json({
98
- type: 'https://docs.inkeep.com/agents-api/errors#bad_request',
99
- title: 'Validation Failed',
100
- status: 400,
101
- detail: 'Request validation failed',
102
- errors: zodIssues.map((issue) => ({
103
- detail: issue.message,
104
- pointer: issue.path ? `/${issue.path.join('/')}` : undefined,
105
- name: issue.path ? issue.path.join('.') : undefined,
106
- reason: issue.message,
107
- })),
129
+ type: 'https://docs.inkeep.com/agents-api/errors#internal_server_error',
130
+ title,
131
+ status: respStatus,
132
+ detail,
133
+ ...(instance && { instance }),
108
134
  });
109
- }
110
- if (status >= 500) {
111
- if (!isExpectedError) {
112
- const errorMessage = err instanceof Error ? err.message : String(err);
113
- const errorStack = err instanceof Error ? err.stack : undefined;
114
- getLogger().error({
115
- error: err,
116
- message: errorMessage,
117
- stack: errorStack,
118
- path: c.req.path,
119
- requestId,
120
- }, 'Unexpected server error occurred');
121
- }
122
- else {
123
- getLogger().error({
124
- error: err,
125
- path: c.req.path,
126
- requestId,
127
- status,
128
- }, 'Server error occurred');
135
+ });
136
+ // CORS middleware
137
+ app.use('*', cors({
138
+ origin: (origin) => {
139
+ if (!origin)
140
+ return origin;
141
+ return origin.startsWith('http://localhost:') || origin.startsWith('https://localhost:')
142
+ ? origin
143
+ : null;
144
+ },
145
+ allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
146
+ allowHeaders: ['*'],
147
+ exposeHeaders: ['Content-Length'],
148
+ maxAge: 86400,
149
+ credentials: true,
150
+ }));
151
+ // Apply API key authentication to all routes except health and docs
152
+ app.use('/tenants/*', apiKeyAuth());
153
+ app.use('/agents/*', apiKeyAuth());
154
+ app.use('/v1/*', apiKeyAuth());
155
+ app.use('/api/*', apiKeyAuth());
156
+ // Baggage middleware for execution API - extracts context from API key authentication
157
+ app.use('*', async (c, next) => {
158
+ // Get the API key context if available (set by auth middleware)
159
+ const executionContext = c.get('executionContext');
160
+ if (!executionContext) {
161
+ // No API key context, skip baggage setup
162
+ return next();
129
163
  }
130
- }
131
- if (isExpectedError) {
132
- try {
133
- const response = err.getResponse();
134
- return response;
164
+ const { tenantId, projectId, graphId } = executionContext;
165
+ // Extract conversation ID from JSON body if present
166
+ let conversationId;
167
+ if (c.req.header('content-type')?.includes('application/json')) {
168
+ try {
169
+ const body = await c.req.json();
170
+ conversationId = body?.conversationId;
171
+ }
172
+ catch (_) {
173
+ // Silently ignore parse errors for non-JSON bodies
174
+ }
135
175
  }
136
- catch (responseError) {
137
- getLogger().error({ error: responseError }, 'Error while handling HTTPException response');
176
+ const entries = Object.fromEntries(Object.entries({
177
+ 'graph.id': graphId,
178
+ 'tenant.id': tenantId,
179
+ 'project.id': projectId,
180
+ 'conversation.id': conversationId,
181
+ }).filter((entry) => {
182
+ const [, v] = entry;
183
+ return typeof v === 'string' && v.length > 0;
184
+ }));
185
+ if (!Object.keys(entries).length) {
186
+ return next();
138
187
  }
139
- }
140
- const { status: respStatus, title, detail, instance } = await handleApiError(err, requestId);
141
- c.status(respStatus);
142
- c.header('Content-Type', 'application/problem+json');
143
- c.header('X-Content-Type-Options', 'nosniff');
144
- return c.json({
145
- type: 'https://docs.inkeep.com/agents-api/errors#internal_server_error',
146
- title,
147
- status: respStatus,
148
- detail,
149
- ...(instance && { instance }),
188
+ const bag = Object.entries(entries).reduce((b, [key, value]) => b.setEntry(key, { value: value || '' }), propagation.getBaggage(otelContext.active()) ?? propagation.createBaggage());
189
+ const ctxWithBag = propagation.setBaggage(otelContext.active(), bag);
190
+ return otelContext.with(ctxWithBag, () => next());
150
191
  });
151
- });
152
- // CORS middleware
153
- app.use('*', cors({
154
- origin: (origin) => {
155
- if (!origin)
156
- return origin;
157
- return origin.startsWith('http://localhost:') || origin.startsWith('https://localhost:')
158
- ? origin
159
- : null;
160
- },
161
- allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
162
- allowHeaders: ['*'],
163
- exposeHeaders: ['Content-Length'],
164
- maxAge: 86400,
165
- credentials: true,
166
- }));
167
- // Apply API key authentication to all routes except health and docs
168
- app.use('/tenants/*', apiKeyAuth());
169
- app.use('/agents/*', apiKeyAuth());
170
- app.use('/v1/*', apiKeyAuth());
171
- app.use('/api/*', apiKeyAuth());
172
- // Health check endpoint (no auth required)
173
- app.openapi(createRoute({
174
- method: 'get',
175
- path: '/health',
176
- tags: ['health'],
177
- summary: 'Health check',
178
- description: 'Check if the execution service is healthy',
179
- responses: {
180
- 204: {
181
- description: 'Service is healthy',
192
+ // Health check endpoint (no auth required)
193
+ app.openapi(createRoute({
194
+ method: 'get',
195
+ path: '/health',
196
+ tags: ['health'],
197
+ summary: 'Health check',
198
+ description: 'Check if the execution service is healthy',
199
+ responses: {
200
+ 204: {
201
+ description: 'Service is healthy',
202
+ },
182
203
  },
183
- },
184
- }), (c) => {
185
- return c.body(null, 204);
186
- });
187
- // Mount execution routes - API key provides tenant, project, and graph context
188
- app.route('/v1/chat', chatRoutes);
189
- app.route('/api', chatDataRoutes);
190
- app.route('/v1/mcp', mcpRoutes);
191
- app.route('/agents', agentRoutes);
192
- // Setup OpenAPI documentation endpoints (/openapi.json and /docs)
193
- setupOpenAPIRoutes(app);
194
- export default app;
204
+ }), (c) => {
205
+ return c.body(null, 204);
206
+ });
207
+ // Mount execution routes - API key provides tenant, project, and graph context
208
+ app.route('/v1/chat', chatRoutes);
209
+ app.route('/api', chatDataRoutes);
210
+ app.route('/v1/mcp', mcpRoutes);
211
+ app.route('/agents', agentRoutes);
212
+ // Setup OpenAPI documentation endpoints (/openapi.json and /docs)
213
+ setupOpenAPIRoutes(app);
214
+ return app;
215
+ }
216
+ export { createExecutionHono };
@@ -1,4 +1,4 @@
1
- import type { RegisteredAgent } from '../a2a/types.js';
2
1
  import type { ExecutionContext } from '@inkeep/agents-core';
2
+ import type { RegisteredAgent } from '../a2a/types';
3
3
  export declare function getRegisteredGraph(executionContext: ExecutionContext): Promise<RegisteredAgent | null>;
4
4
  //# sourceMappingURL=agentGraph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agentGraph.d.ts","sourceRoot":"","sources":["../../src/data/agentGraph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAa,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA6EvE,wBAAsB,kBAAkB,CACtC,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAUjC"}
1
+ {"version":3,"file":"agentGraph.d.ts","sourceRoot":"","sources":["../../src/data/agentGraph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AA6EpD,wBAAsB,kBAAkB,CACtC,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAUjC"}
@@ -1,6 +1,6 @@
1
- import { createTaskHandler, createTaskHandlerConfig } from '../agents/generateTaskHandler.js';
2
1
  import { getAgentById, getAgentGraph } from '@inkeep/agents-core';
3
- import dbClient from './db/dbClient.js';
2
+ import { createTaskHandler, createTaskHandlerConfig } from '../agents/generateTaskHandler';
3
+ import dbClient from './db/dbClient';
4
4
  // Hydrate graph function
5
5
  async function hydrateGraph({ dbGraph, baseUrl, apiKey, }) {
6
6
  try {
@@ -1,4 +1,4 @@
1
- import type { RegisteredAgent } from '../a2a/types.js';
2
- import { ExecutionContext } from '@inkeep/agents-core';
3
- export declare function getRegisteredAgent(executionContext: ExecutionContext): Promise<RegisteredAgent | null>;
1
+ import { type CredentialStoreRegistry, type ExecutionContext } from '@inkeep/agents-core';
2
+ import type { RegisteredAgent } from '../a2a/types';
3
+ export declare function getRegisteredAgent(executionContext: ExecutionContext, credentialStoreRegistry?: CredentialStoreRegistry): Promise<RegisteredAgent | null>;
4
4
  //# sourceMappingURL=agents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/data/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlE,OAAO,EAEL,gBAAgB,EAIjB,MAAM,qBAAqB,CAAC;AAuE7B,wBAAsB,kBAAkB,CACtC,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAiBjC"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/data/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EAItB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAa,eAAe,EAAE,MAAM,cAAc,CAAC;AA2E/D,wBAAsB,kBAAkB,CACtC,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,CAAC,EAAE,uBAAuB,GAChD,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAsBjC"}
@@ -1,13 +1,13 @@
1
- import { createTaskHandler, createTaskHandlerConfig } from '../agents/generateTaskHandler.js';
2
- import dbClient from './db/dbClient.js';
3
1
  import { getAgentById, getLogger, } from '@inkeep/agents-core';
2
+ import { createTaskHandler, createTaskHandlerConfig } from '../agents/generateTaskHandler';
3
+ import dbClient from './db/dbClient';
4
4
  // Agent hydration functions
5
5
  const logger = getLogger('agents');
6
6
  /**
7
7
  * Create a RegisteredAgent from database agent data
8
8
  * Hydrates agent directly from database schema using types from schema.ts
9
9
  */
10
- async function hydrateAgent({ dbAgent, graphId, baseUrl, apiKey, }) {
10
+ async function hydrateAgent({ dbAgent, graphId, baseUrl, apiKey, credentialStoreRegistry, }) {
11
11
  try {
12
12
  // Create task handler for the agent
13
13
  const taskHandlerConfig = await createTaskHandlerConfig({
@@ -18,7 +18,7 @@ async function hydrateAgent({ dbAgent, graphId, baseUrl, apiKey, }) {
18
18
  baseUrl: baseUrl,
19
19
  apiKey: apiKey,
20
20
  });
21
- const taskHandler = createTaskHandler(taskHandlerConfig);
21
+ const taskHandler = createTaskHandler(taskHandlerConfig, credentialStoreRegistry);
22
22
  // Create AgentCard from database data using schema.ts types
23
23
  const agentCard = {
24
24
  name: dbAgent.name,
@@ -56,7 +56,7 @@ async function hydrateAgent({ dbAgent, graphId, baseUrl, apiKey, }) {
56
56
  }
57
57
  }
58
58
  // A2A functions that hydrate agents on-demand
59
- export async function getRegisteredAgent(executionContext) {
59
+ export async function getRegisteredAgent(executionContext, credentialStoreRegistry) {
60
60
  const { tenantId, projectId, graphId, agentId, baseUrl } = executionContext;
61
61
  if (!agentId) {
62
62
  throw new Error('Agent ID is required');
@@ -69,5 +69,10 @@ export async function getRegisteredAgent(executionContext) {
69
69
  return null;
70
70
  }
71
71
  const agentFrameworkBaseUrl = `${baseUrl}/agents`;
72
- return hydrateAgent({ dbAgent, graphId, baseUrl: agentFrameworkBaseUrl });
72
+ return hydrateAgent({
73
+ dbAgent,
74
+ graphId,
75
+ baseUrl: agentFrameworkBaseUrl,
76
+ credentialStoreRegistry,
77
+ });
73
78
  }
@@ -1,4 +1,4 @@
1
- import { type ConversationScopeOptions, type ConversationHistoryConfig, type AgentConversationHistoryConfig } from '@inkeep/agents-core';
1
+ import { type AgentConversationHistoryConfig, type ConversationHistoryConfig, type ConversationScopeOptions } from '@inkeep/agents-core';
2
2
  /**
3
3
  * Creates default conversation history configuration
4
4
  * @param mode - The conversation history mode ('full' | 'scoped' | 'none')
@@ -1 +1 @@
1
- {"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/data/conversations.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EAEpC,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,wBAAgB,sCAAsC,CACpD,IAAI,GAAE,MAAM,GAAG,QAAQ,GAAG,MAAe,GACxC,8BAA8B,CAQhC;AAYD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,GAAG,EAAE,2BAA2B;AAC1C,MAAM,EAAE;IACN,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,cAAc,GAAG,aAAa,CAAC;IAC5C,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GACA,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAkDrB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,QAAQ,EACR,SAAS,EACT,cAAc,EACd,OAAO,EACP,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,OAAO,CAAC,EAAE,yBAAyB,CAAC;CACrC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAyDjB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,KAAK,SAAK,GACT,OAAO,CAAC,GAAG,EAAE,CAAC,CAUhB;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,GAAG,EAAE,CAAC,CAUhB;AAED;;GAEG;AACH,wBAAsB,+BAA+B,CAAC,EACpD,QAAQ,EACR,SAAS,EACT,cAAc,EACd,cAAc,EACd,OAAO,EACP,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,OAAO,CAAC,EAAE,wBAAwB,CAAC;CACpC,GAAG,OAAO,CAAC,MAAM,CAAC,CAuDlB"}
1
+ {"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/data/conversations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAG9B,MAAM,qBAAqB,CAAC;AAI7B;;;;GAIG;AACH,wBAAgB,sCAAsC,CACpD,IAAI,GAAE,MAAM,GAAG,QAAQ,GAAG,MAAe,GACxC,8BAA8B,CAQhC;AAYD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,GAAG,EAAE,2BAA2B;AAC1C,MAAM,EAAE;IACN,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,cAAc,GAAG,aAAa,CAAC;IAC5C,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GACA,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAkDrB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,QAAQ,EACR,SAAS,EACT,cAAc,EACd,OAAO,EACP,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,OAAO,CAAC,EAAE,yBAAyB,CAAC;CACrC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAyDjB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,KAAK,SAAK,GACT,OAAO,CAAC,GAAG,EAAE,CAAC,CAUhB;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,GAAG,EAAE,CAAC,CAUhB;AAED;;GAEG;AACH,wBAAsB,+BAA+B,CAAC,EACpD,QAAQ,EACR,SAAS,EACT,cAAc,EACd,cAAc,EACd,OAAO,EACP,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,OAAO,CAAC,EAAE,wBAAwB,CAAC;CACpC,GAAG,OAAO,CAAC,MAAM,CAAC,CAuDlB"}