@inkeep/agents-run-api 0.0.0-dev-20260113172432 → 0.0.0-dev-20260115183047
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/README.md +2 -1
- package/dist/a2a/client.d.ts +3 -1
- package/dist/a2a/client.js +23 -9
- package/dist/a2a/handlers.js +11 -5
- package/dist/a2a/transfer.d.ts +6 -1
- package/dist/a2a/transfer.js +10 -6
- package/dist/agents/Agent.d.ts +8 -4
- package/dist/agents/Agent.js +226 -92
- package/dist/agents/ToolSessionManager.js +2 -2
- package/dist/agents/generateTaskHandler.d.ts +4 -9
- package/dist/agents/generateTaskHandler.js +107 -246
- package/dist/agents/relationTools.d.ts +19 -8
- package/dist/agents/relationTools.js +105 -14
- package/dist/agents/types.d.ts +4 -2
- package/dist/agents/versions/v1/Phase1Config.d.ts +4 -3
- package/dist/agents/versions/v1/Phase1Config.js +33 -20
- package/dist/constants/execution-limits/index.js +1 -1
- package/dist/context/ContextFetcher.d.ts +68 -0
- package/dist/context/ContextFetcher.js +276 -0
- package/dist/context/ContextResolver.d.ts +56 -0
- package/dist/context/ContextResolver.js +273 -0
- package/dist/context/context.d.ts +19 -0
- package/dist/context/context.js +108 -0
- package/dist/context/contextCache.d.ts +56 -0
- package/dist/context/contextCache.js +175 -0
- package/dist/context/index.d.ts +6 -0
- package/dist/context/index.js +7 -0
- package/dist/context/validation.d.ts +39 -0
- package/dist/context/validation.js +255 -0
- package/dist/create-app.d.ts +2 -2
- package/dist/create-app.js +7 -2
- package/dist/data/agent.d.ts +2 -2
- package/dist/data/agent.js +17 -22
- package/dist/data/agents.d.ts +2 -2
- package/dist/data/agents.js +34 -42
- package/dist/data/conversations.d.ts +2 -1
- package/dist/data/conversations.js +7 -8
- package/dist/data/db/dbClient.d.ts +2 -2
- package/dist/data/db/dbClient.js +2 -10
- package/dist/env.d.ts +6 -2
- package/dist/env.js +3 -1
- package/dist/handlers/executionHandler.d.ts +3 -2
- package/dist/handlers/executionHandler.js +46 -22
- package/dist/index.d.ts +3 -3
- package/dist/middleware/api-key-auth.d.ts +4 -10
- package/dist/middleware/api-key-auth.js +164 -163
- package/dist/middleware/index.d.ts +3 -2
- package/dist/middleware/index.js +3 -2
- package/dist/middleware/projectConfig.d.ts +19 -0
- package/dist/middleware/projectConfig.js +80 -0
- package/dist/routes/agents.d.ts +2 -1
- package/dist/routes/agents.js +7 -13
- package/dist/routes/chat.d.ts +2 -1
- package/dist/routes/chat.js +29 -52
- package/dist/routes/chatDataStream.d.ts +2 -1
- package/dist/routes/chatDataStream.js +28 -30
- package/dist/routes/mcp.d.ts +2 -1
- package/dist/routes/mcp.js +25 -37
- package/dist/services/AgentSession.d.ts +5 -7
- package/dist/services/AgentSession.js +25 -34
- package/dist/services/ArtifactParser.d.ts +2 -2
- package/dist/services/ArtifactParser.js +2 -2
- package/dist/services/ArtifactService.d.ts +2 -3
- package/dist/services/ArtifactService.js +23 -20
- package/dist/services/BaseCompressor.js +2 -2
- package/dist/services/IncrementalStreamParser.d.ts +2 -2
- package/dist/services/IncrementalStreamParser.js +2 -2
- package/dist/services/ResponseFormatter.d.ts +2 -2
- package/dist/services/ResponseFormatter.js +2 -2
- package/dist/services/evaluationHttpClient.d.ts +21 -0
- package/dist/services/evaluationHttpClient.js +48 -0
- package/dist/services/evaluationRunConfigMatcher.d.ts +6 -0
- package/dist/services/evaluationRunConfigMatcher.js +7 -0
- package/dist/tools/NativeSandboxExecutor.js +1 -1
- package/dist/tools/distill-conversation-history-tool.js +2 -2
- package/dist/tools/distill-conversation-tool.js +2 -2
- package/dist/types/execution-context.d.ts +8 -14
- package/dist/types/execution-context.js +3 -2
- package/dist/utils/model-resolver.d.ts +2 -2
- package/dist/utils/model-resolver.js +3 -13
- package/dist/utils/project.d.ts +207 -0
- package/dist/utils/project.js +315 -0
- package/dist/utils/token-estimator.d.ts +6 -52
- package/dist/utils/token-estimator.js +2 -38
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -44,7 +44,8 @@ pnpm db:migrate
|
|
|
44
44
|
```env
|
|
45
45
|
ENVIRONMENT=development|production|test
|
|
46
46
|
PORT=3003
|
|
47
|
-
|
|
47
|
+
INKEEP_AGENTS_MANAGE_DATABASE_URL=postgresql://dbuser:secretpassword@database.server.com:3211/mydb
|
|
48
|
+
INKEEP_AGENTS_RUN_DATABASE_URL=postgresql://dbuser:secretpassword@database.server.com:3212/mydb
|
|
48
49
|
ANTHROPIC_API_KEY=required
|
|
49
50
|
OPENAI_API_KEY=optional
|
|
50
51
|
LOG_LEVEL=debug|info|warn|error
|
package/dist/a2a/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AgentCard, CancelTaskResponse, GetTaskPushNotificationConfigResponse, GetTaskResponse, Message, MessageSendParams, SendMessageResponse, SetTaskPushNotificationConfigResponse, Task, TaskArtifactUpdateEvent, TaskIdParams, TaskPushNotificationConfig, TaskQueryParams, TaskStatusUpdateEvent } from "@inkeep/agents-core";
|
|
1
|
+
import { AgentCard, CancelTaskResponse, GetTaskPushNotificationConfigResponse, GetTaskResponse, Message, MessageSendParams, ResolvedRef, SendMessageResponse, SetTaskPushNotificationConfigResponse, Task, TaskArtifactUpdateEvent, TaskIdParams, TaskPushNotificationConfig, TaskQueryParams, TaskStatusUpdateEvent } from "@inkeep/agents-core";
|
|
2
2
|
|
|
3
3
|
//#region src/a2a/client.d.ts
|
|
4
4
|
type A2AStreamEventData = Message | Task | TaskStatusUpdateEvent | TaskArtifactUpdateEvent;
|
|
@@ -18,6 +18,7 @@ type RetryConfig = {
|
|
|
18
18
|
};
|
|
19
19
|
interface A2AClientOptions {
|
|
20
20
|
retryConfig?: RetryConfig;
|
|
21
|
+
ref?: ResolvedRef;
|
|
21
22
|
headers?: Record<string, string>;
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
@@ -89,6 +90,7 @@ declare class A2AClient {
|
|
|
89
90
|
getAgentCard(agentBaseUrl?: string): Promise<AgentCard>;
|
|
90
91
|
/**
|
|
91
92
|
* Gets the RPC service endpoint URL. Ensures the agent card has been fetched first.
|
|
93
|
+
* Adds ref as query parameter if it exists.
|
|
92
94
|
* @returns A Promise that resolves to the service endpoint URL string.
|
|
93
95
|
*/
|
|
94
96
|
private _getServiceEndpoint;
|
package/dist/a2a/client.js
CHANGED
|
@@ -110,16 +110,18 @@ var A2AClient = class {
|
|
|
110
110
|
*/
|
|
111
111
|
async _fetchAndCacheAgentCard() {
|
|
112
112
|
const agentCardUrl = `${this.agentBaseUrl}/.well-known/agent.json`;
|
|
113
|
+
const url = new URL(agentCardUrl);
|
|
114
|
+
if (this.options.ref) url.searchParams.set("ref", this.options.ref.name);
|
|
113
115
|
getLogger("a2a").info({
|
|
114
|
-
agentCardUrl,
|
|
116
|
+
agentCardUrl: url.toString(),
|
|
115
117
|
agentBaseUrl: this.agentBaseUrl
|
|
116
118
|
}, "agentCardUrl");
|
|
117
119
|
try {
|
|
118
|
-
const response = await fetch(
|
|
120
|
+
const response = await fetch(url.toString(), { headers: {
|
|
119
121
|
Accept: "application/json",
|
|
120
122
|
...this.options.headers || {}
|
|
121
123
|
} });
|
|
122
|
-
if (!response.ok) throw new Error(`Failed to fetch Agent Card from ${
|
|
124
|
+
if (!response.ok) throw new Error(`Failed to fetch Agent Card from ${url.toString()}: ${response.status} ${response.statusText}`);
|
|
123
125
|
const agentCard = await response.json();
|
|
124
126
|
if (!agentCard.url) throw new Error("Fetched Agent Card does not contain a valid 'url' for the service endpoint.");
|
|
125
127
|
this.serviceEndpointUrl = agentCard.url;
|
|
@@ -140,24 +142,36 @@ var A2AClient = class {
|
|
|
140
142
|
async getAgentCard(agentBaseUrl) {
|
|
141
143
|
if (agentBaseUrl) {
|
|
142
144
|
const agentCardUrl = `${agentBaseUrl.replace(/\/$/, "")}/.well-known/agent.json`;
|
|
143
|
-
const
|
|
145
|
+
const url = new URL(agentCardUrl);
|
|
146
|
+
if (this.options.ref) url.searchParams.set("ref", this.options.ref.name);
|
|
147
|
+
const response = await fetch(url.toString(), { headers: {
|
|
144
148
|
Accept: "application/json",
|
|
145
149
|
...this.options.headers || {}
|
|
146
150
|
} });
|
|
147
|
-
if (!response.ok) throw new Error(`Failed to fetch Agent Card from ${
|
|
151
|
+
if (!response.ok) throw new Error(`Failed to fetch Agent Card from ${url.toString()}: ${response.status} ${response.statusText}`);
|
|
148
152
|
return await response.json();
|
|
149
153
|
}
|
|
150
154
|
return this.agentCardPromise;
|
|
151
155
|
}
|
|
152
156
|
/**
|
|
153
157
|
* Gets the RPC service endpoint URL. Ensures the agent card has been fetched first.
|
|
158
|
+
* Adds ref as query parameter if it exists.
|
|
154
159
|
* @returns A Promise that resolves to the service endpoint URL string.
|
|
155
160
|
*/
|
|
156
161
|
async _getServiceEndpoint() {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
162
|
+
let endpoint;
|
|
163
|
+
if (this.serviceEndpointUrl) endpoint = this.serviceEndpointUrl;
|
|
164
|
+
else {
|
|
165
|
+
await this.agentCardPromise;
|
|
166
|
+
if (!this.serviceEndpointUrl) throw new Error("Agent Card URL for RPC endpoint is not available. Fetching might have failed.");
|
|
167
|
+
endpoint = this.serviceEndpointUrl;
|
|
168
|
+
}
|
|
169
|
+
if (this.options.ref) {
|
|
170
|
+
const url = new URL(endpoint);
|
|
171
|
+
url.searchParams.set("ref", this.options.ref.name);
|
|
172
|
+
return url.toString();
|
|
173
|
+
}
|
|
174
|
+
return endpoint;
|
|
161
175
|
}
|
|
162
176
|
/**
|
|
163
177
|
* Retry utility functions
|
package/dist/a2a/handlers.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { getLogger } from "../logger.js";
|
|
1
|
+
import { getLogger as getLogger$1 } from "../logger.js";
|
|
2
2
|
import dbClient_default from "../data/db/dbClient.js";
|
|
3
|
-
import { TaskState, createMessage, createTask, generateId,
|
|
3
|
+
import { TaskState, createMessage, createTask, generateId, updateTask } from "@inkeep/agents-core";
|
|
4
4
|
import { streamSSE } from "hono/streaming";
|
|
5
5
|
|
|
6
6
|
//#region src/a2a/handlers.ts
|
|
7
|
-
const logger = getLogger("a2aHandler");
|
|
7
|
+
const logger = getLogger$1("a2aHandler");
|
|
8
8
|
async function a2aHandler(c, agent) {
|
|
9
9
|
try {
|
|
10
10
|
const rpcRequest = c.get("requestBody");
|
|
@@ -49,7 +49,7 @@ async function a2aHandler(c, agent) {
|
|
|
49
49
|
async function handleMessageSend(c, agent, request) {
|
|
50
50
|
try {
|
|
51
51
|
const params = request.params;
|
|
52
|
-
const { agentId } =
|
|
52
|
+
const { agentId, resolvedRef } = c.get("executionContext");
|
|
53
53
|
const forwardedHeaders = {};
|
|
54
54
|
const xForwardedCookie = c.req.header("x-forwarded-cookie");
|
|
55
55
|
const cookie = c.req.header("cookie");
|
|
@@ -135,6 +135,7 @@ async function handleMessageSend(c, agent, request) {
|
|
|
135
135
|
agent_id: agentId || "",
|
|
136
136
|
stream_request_id: params.message.metadata?.stream_request_id
|
|
137
137
|
},
|
|
138
|
+
ref: resolvedRef,
|
|
138
139
|
subAgentId: agent.subAgentId,
|
|
139
140
|
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
140
141
|
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
@@ -280,6 +281,11 @@ async function handleMessageSend(c, agent, request) {
|
|
|
280
281
|
id: request.id
|
|
281
282
|
});
|
|
282
283
|
} catch (error) {
|
|
284
|
+
logger.error({
|
|
285
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
286
|
+
stack: error instanceof Error ? error.stack : void 0,
|
|
287
|
+
subAgentId: agent.subAgentId
|
|
288
|
+
}, "Error in handleMessageSend");
|
|
283
289
|
return c.json({
|
|
284
290
|
jsonrpc: "2.0",
|
|
285
291
|
error: {
|
|
@@ -294,7 +300,7 @@ async function handleMessageSend(c, agent, request) {
|
|
|
294
300
|
async function handleMessageStream(c, agent, request) {
|
|
295
301
|
try {
|
|
296
302
|
const params = request.params;
|
|
297
|
-
const { agentId } =
|
|
303
|
+
const { agentId } = c.get("executionContext");
|
|
298
304
|
if (!agent.agentCard.capabilities.streaming) return c.json({
|
|
299
305
|
jsonrpc: "2.0",
|
|
300
306
|
error: {
|
package/dist/a2a/transfer.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { extractTransferData, isTransferTask } from "./types.js";
|
|
2
|
+
import { ResolvedRef } from "@inkeep/agents-core";
|
|
2
3
|
|
|
3
4
|
//#region src/a2a/transfer.d.ts
|
|
4
5
|
/**
|
|
@@ -8,12 +9,16 @@ declare function executeTransfer({
|
|
|
8
9
|
tenantId,
|
|
9
10
|
threadId,
|
|
10
11
|
projectId,
|
|
11
|
-
|
|
12
|
+
agentId,
|
|
13
|
+
targetSubAgentId,
|
|
14
|
+
ref
|
|
12
15
|
}: {
|
|
13
16
|
tenantId: string;
|
|
14
17
|
threadId: string;
|
|
15
18
|
projectId: string;
|
|
19
|
+
agentId: string;
|
|
16
20
|
targetSubAgentId: string;
|
|
21
|
+
ref: ResolvedRef;
|
|
17
22
|
}): Promise<{
|
|
18
23
|
success: boolean;
|
|
19
24
|
targetSubAgentId: string;
|
package/dist/a2a/transfer.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { getLogger } from "../logger.js";
|
|
1
|
+
import { getLogger as getLogger$1 } from "../logger.js";
|
|
2
2
|
import dbClient_default from "../data/db/dbClient.js";
|
|
3
3
|
import { extractTransferData, isTransferTask } from "./types.js";
|
|
4
4
|
import { setActiveAgentForThread } from "@inkeep/agents-core";
|
|
5
5
|
|
|
6
6
|
//#region src/a2a/transfer.ts
|
|
7
|
-
const logger = getLogger("Transfer");
|
|
7
|
+
const logger = getLogger$1("Transfer");
|
|
8
8
|
/**
|
|
9
9
|
* Executes a transfer by sending the original message to the target agent
|
|
10
10
|
*/
|
|
11
|
-
async function executeTransfer({ tenantId, threadId, projectId, targetSubAgentId }) {
|
|
11
|
+
async function executeTransfer({ tenantId, threadId, projectId, agentId, targetSubAgentId, ref }) {
|
|
12
12
|
logger.info({
|
|
13
13
|
targetAgent: targetSubAgentId,
|
|
14
14
|
threadId,
|
|
@@ -22,17 +22,21 @@ async function executeTransfer({ tenantId, threadId, projectId, targetSubAgentId
|
|
|
22
22
|
projectId
|
|
23
23
|
},
|
|
24
24
|
threadId,
|
|
25
|
-
subAgentId: targetSubAgentId
|
|
25
|
+
subAgentId: targetSubAgentId,
|
|
26
|
+
agentId,
|
|
27
|
+
ref
|
|
26
28
|
});
|
|
27
29
|
logger.info({
|
|
28
30
|
targetAgent: targetSubAgentId,
|
|
29
|
-
threadId
|
|
31
|
+
threadId,
|
|
32
|
+
agentId
|
|
30
33
|
}, "Successfully updated active_sub_agent_id in database");
|
|
31
34
|
} catch (error) {
|
|
32
35
|
logger.error({
|
|
33
36
|
error,
|
|
34
37
|
targetAgent: targetSubAgentId,
|
|
35
|
-
threadId
|
|
38
|
+
threadId,
|
|
39
|
+
agentId
|
|
36
40
|
}, "Failed to update active_sub_agent_id");
|
|
37
41
|
throw error;
|
|
38
42
|
}
|
package/dist/agents/Agent.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SandboxConfig } from "../types/execution-context.js";
|
|
2
2
|
import { StreamHelper } from "../utils/stream-helpers.js";
|
|
3
|
-
import { AgentConversationHistoryConfig, Artifact, ArtifactComponentApiInsert, CredentialStoreRegistry, DataComponentApiInsert, McpTool, Models, SubAgentStopWhen } from "@inkeep/agents-core";
|
|
3
|
+
import { AgentConversationHistoryConfig, Artifact, ArtifactComponentApiInsert, CredentialStoreRegistry, DataComponentApiInsert, FullExecutionContext, McpTool, Models, ResolvedRef, SubAgentStopWhen } from "@inkeep/agents-core";
|
|
4
4
|
import { ToolSet } from "ai";
|
|
5
5
|
|
|
6
6
|
//#region src/agents/Agent.d.ts
|
|
@@ -56,6 +56,7 @@ type ExternalAgentRelationConfig = {
|
|
|
56
56
|
id: string;
|
|
57
57
|
name: string;
|
|
58
58
|
description: string;
|
|
59
|
+
ref: ResolvedRef;
|
|
59
60
|
baseUrl: string;
|
|
60
61
|
credentialReferenceId?: string | null;
|
|
61
62
|
headers?: Record<string, string> | null;
|
|
@@ -64,6 +65,7 @@ type ExternalAgentRelationConfig = {
|
|
|
64
65
|
type TeamAgentRelationConfig = {
|
|
65
66
|
relationId: string;
|
|
66
67
|
id: string;
|
|
68
|
+
ref: ResolvedRef;
|
|
67
69
|
name: string;
|
|
68
70
|
description: string;
|
|
69
71
|
baseUrl: string;
|
|
@@ -96,7 +98,8 @@ declare class Agent {
|
|
|
96
98
|
private mcpClientCache;
|
|
97
99
|
private mcpConnectionLocks;
|
|
98
100
|
private currentCompressor;
|
|
99
|
-
|
|
101
|
+
private executionContext;
|
|
102
|
+
constructor(config: AgentConfig, executionContext: FullExecutionContext, credentialStoreRegistry?: CredentialStoreRegistry);
|
|
100
103
|
/**
|
|
101
104
|
* Get the maximum number of generation steps for this agent
|
|
102
105
|
* Uses agent's stopWhen.stepCountIs config or defaults to AGENT_EXECUTION_MAX_GENERATION_STEPS
|
|
@@ -160,9 +163,9 @@ declare class Agent {
|
|
|
160
163
|
*/
|
|
161
164
|
private convertToMCPToolConfig;
|
|
162
165
|
getMcpTool(tool: McpTool): Promise<{
|
|
163
|
-
tools:
|
|
166
|
+
tools: any;
|
|
164
167
|
toolPolicies: Record<string, {
|
|
165
|
-
needsApproval?: boolean;
|
|
168
|
+
needsApproval?: boolean | undefined;
|
|
166
169
|
}>;
|
|
167
170
|
mcpServerId: string;
|
|
168
171
|
mcpServerName: string;
|
|
@@ -191,6 +194,7 @@ declare class Agent {
|
|
|
191
194
|
private createThinkingCompleteTool;
|
|
192
195
|
private getDefaultTools;
|
|
193
196
|
private getStreamRequestId;
|
|
197
|
+
private applyToolOverrides;
|
|
194
198
|
/**
|
|
195
199
|
* Format tool result for storage in conversation history
|
|
196
200
|
*/
|