@inkeep/agents-core 0.0.0-dev-20250910233133
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/LICENSE.md +56 -0
- package/README.md +464 -0
- package/dist/__tests__/integration/helpers.d.ts +5 -0
- package/dist/__tests__/integration/helpers.d.ts.map +1 -0
- package/dist/__tests__/integration/helpers.js +37 -0
- package/dist/__tests__/integration/helpers.js.map +1 -0
- package/dist/__tests__/setup.d.ts +3 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +29 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/client-exports.d.ts +299 -0
- package/dist/client-exports.d.ts.map +1 -0
- package/dist/client-exports.js +252 -0
- package/dist/client-exports.js.map +1 -0
- package/dist/context/ContextConfig.d.ts +54 -0
- package/dist/context/ContextConfig.d.ts.map +1 -0
- package/dist/context/ContextConfig.js +302 -0
- package/dist/context/ContextConfig.js.map +1 -0
- package/dist/context/ContextFetcher.d.ts +64 -0
- package/dist/context/ContextFetcher.d.ts.map +1 -0
- package/dist/context/ContextFetcher.js +325 -0
- package/dist/context/ContextFetcher.js.map +1 -0
- package/dist/context/ContextResolver.d.ts +52 -0
- package/dist/context/ContextResolver.d.ts.map +1 -0
- package/dist/context/ContextResolver.js +298 -0
- package/dist/context/ContextResolver.js.map +1 -0
- package/dist/context/TemplateEngine.d.ts +46 -0
- package/dist/context/TemplateEngine.d.ts.map +1 -0
- package/dist/context/TemplateEngine.js +175 -0
- package/dist/context/TemplateEngine.js.map +1 -0
- package/dist/context/context.d.ts +8 -0
- package/dist/context/context.d.ts.map +1 -0
- package/dist/context/context.js +157 -0
- package/dist/context/context.js.map +1 -0
- package/dist/context/contextCache.d.ts +50 -0
- package/dist/context/contextCache.d.ts.map +1 -0
- package/dist/context/contextCache.js +175 -0
- package/dist/context/contextCache.js.map +1 -0
- package/dist/context/index.d.ts +11 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +8 -0
- package/dist/context/index.js.map +1 -0
- package/dist/credential-stores/CredentialStoreRegistry.d.ts +39 -0
- package/dist/credential-stores/CredentialStoreRegistry.d.ts.map +1 -0
- package/dist/credential-stores/CredentialStoreRegistry.js +65 -0
- package/dist/credential-stores/CredentialStoreRegistry.js.map +1 -0
- package/dist/credential-stores/defaults.d.ts +6 -0
- package/dist/credential-stores/defaults.d.ts.map +1 -0
- package/dist/credential-stores/defaults.js +22 -0
- package/dist/credential-stores/defaults.js.map +1 -0
- package/dist/credential-stores/index.d.ts +6 -0
- package/dist/credential-stores/index.d.ts.map +1 -0
- package/dist/credential-stores/index.js +6 -0
- package/dist/credential-stores/index.js.map +1 -0
- package/dist/credential-stores/keychain-store.d.ts +100 -0
- package/dist/credential-stores/keychain-store.d.ts.map +1 -0
- package/dist/credential-stores/keychain-store.js +225 -0
- package/dist/credential-stores/keychain-store.js.map +1 -0
- package/dist/credential-stores/memory-store.d.ts +39 -0
- package/dist/credential-stores/memory-store.d.ts.map +1 -0
- package/dist/credential-stores/memory-store.js +58 -0
- package/dist/credential-stores/memory-store.js.map +1 -0
- package/dist/credential-stores/nango-store.d.ts +59 -0
- package/dist/credential-stores/nango-store.d.ts.map +1 -0
- package/dist/credential-stores/nango-store.js +264 -0
- package/dist/credential-stores/nango-store.js.map +1 -0
- package/dist/credential-stuffer/CredentialStuffer.d.ts +80 -0
- package/dist/credential-stuffer/CredentialStuffer.d.ts.map +1 -0
- package/dist/credential-stuffer/CredentialStuffer.js +186 -0
- package/dist/credential-stuffer/CredentialStuffer.js.map +1 -0
- package/dist/credential-stuffer/index.d.ts +2 -0
- package/dist/credential-stuffer/index.d.ts.map +1 -0
- package/dist/credential-stuffer/index.js +2 -0
- package/dist/credential-stuffer/index.js.map +1 -0
- package/dist/data-access/agentDataComponents.d.ts +1 -0
- package/dist/data-access/agentDataComponents.d.ts.map +1 -0
- package/dist/data-access/agentDataComponents.js +2 -0
- package/dist/data-access/agentDataComponents.js.map +1 -0
- package/dist/data-access/agentGraphs.d.ts +399 -0
- package/dist/data-access/agentGraphs.d.ts.map +1 -0
- package/dist/data-access/agentGraphs.js +551 -0
- package/dist/data-access/agentGraphs.js.map +1 -0
- package/dist/data-access/agentRelations.d.ts +456 -0
- package/dist/data-access/agentRelations.d.ts.map +1 -0
- package/dist/data-access/agentRelations.js +471 -0
- package/dist/data-access/agentRelations.js.map +1 -0
- package/dist/data-access/agents.d.ts +218 -0
- package/dist/data-access/agents.d.ts.map +1 -0
- package/dist/data-access/agents.js +130 -0
- package/dist/data-access/agents.js.map +1 -0
- package/dist/data-access/apiKeys.d.ts +114 -0
- package/dist/data-access/apiKeys.d.ts.map +1 -0
- package/dist/data-access/apiKeys.js +185 -0
- package/dist/data-access/apiKeys.js.map +1 -0
- package/dist/data-access/artifactComponents.d.ts +152 -0
- package/dist/data-access/artifactComponents.d.ts.map +1 -0
- package/dist/data-access/artifactComponents.js +214 -0
- package/dist/data-access/artifactComponents.js.map +1 -0
- package/dist/data-access/contextCache.d.ts +68 -0
- package/dist/data-access/contextCache.d.ts.map +1 -0
- package/dist/data-access/contextCache.js +135 -0
- package/dist/data-access/contextCache.js.map +1 -0
- package/dist/data-access/contextConfigs.d.ts +110 -0
- package/dist/data-access/contextConfigs.d.ts.map +1 -0
- package/dist/data-access/contextConfigs.js +156 -0
- package/dist/data-access/contextConfigs.js.map +1 -0
- package/dist/data-access/conversations.d.ts +125 -0
- package/dist/data-access/conversations.d.ts.map +1 -0
- package/dist/data-access/conversations.js +244 -0
- package/dist/data-access/conversations.js.map +1 -0
- package/dist/data-access/credentialReferences.d.ts +86 -0
- package/dist/data-access/credentialReferences.d.ts.map +1 -0
- package/dist/data-access/credentialReferences.js +175 -0
- package/dist/data-access/credentialReferences.js.map +1 -0
- package/dist/data-access/dataComponents.d.ts +129 -0
- package/dist/data-access/dataComponents.d.ts.map +1 -0
- package/dist/data-access/dataComponents.js +213 -0
- package/dist/data-access/dataComponents.js.map +1 -0
- package/dist/data-access/externalAgents.d.ts +83 -0
- package/dist/data-access/externalAgents.d.ts.map +1 -0
- package/dist/data-access/externalAgents.js +163 -0
- package/dist/data-access/externalAgents.js.map +1 -0
- package/dist/data-access/graphFull.d.ts +32 -0
- package/dist/data-access/graphFull.d.ts.map +1 -0
- package/dist/data-access/graphFull.js +996 -0
- package/dist/data-access/graphFull.js.map +1 -0
- package/dist/data-access/index.d.ts +21 -0
- package/dist/data-access/index.d.ts.map +1 -0
- package/dist/data-access/index.js +22 -0
- package/dist/data-access/index.js.map +1 -0
- package/dist/data-access/ledgerArtifacts.d.ts +49 -0
- package/dist/data-access/ledgerArtifacts.d.ts.map +1 -0
- package/dist/data-access/ledgerArtifacts.js +112 -0
- package/dist/data-access/ledgerArtifacts.js.map +1 -0
- package/dist/data-access/messages.d.ts +209 -0
- package/dist/data-access/messages.d.ts.map +1 -0
- package/dist/data-access/messages.js +100 -0
- package/dist/data-access/messages.js.map +1 -0
- package/dist/data-access/projects.d.ts +67 -0
- package/dist/data-access/projects.d.ts.map +1 -0
- package/dist/data-access/projects.js +337 -0
- package/dist/data-access/projects.js.map +1 -0
- package/dist/data-access/tasks.d.ts +37 -0
- package/dist/data-access/tasks.d.ts.map +1 -0
- package/dist/data-access/tasks.js +40 -0
- package/dist/data-access/tasks.js.map +1 -0
- package/dist/data-access/tools.d.ts +277 -0
- package/dist/data-access/tools.d.ts.map +1 -0
- package/dist/data-access/tools.js +183 -0
- package/dist/data-access/tools.js.map +1 -0
- package/dist/data-access/validation.d.ts +17 -0
- package/dist/data-access/validation.d.ts.map +1 -0
- package/dist/data-access/validation.js +52 -0
- package/dist/data-access/validation.js.map +1 -0
- package/dist/db/clean.d.ts +6 -0
- package/dist/db/clean.d.ts.map +1 -0
- package/dist/db/clean.js +81 -0
- package/dist/db/clean.js.map +1 -0
- package/dist/db/client.d.ts +19 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +24 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/schema.d.ts +4335 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +696 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/test-client.d.ts +25 -0
- package/dist/db/test-client.d.ts.map +1 -0
- package/dist/db/test-client.js +136 -0
- package/dist/db/test-client.js.map +1 -0
- package/dist/env.d.ts +19 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +49 -0
- package/dist/env.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/contextValidation.d.ts +49 -0
- package/dist/middleware/contextValidation.d.ts.map +1 -0
- package/dist/middleware/contextValidation.js +473 -0
- package/dist/middleware/contextValidation.js.map +1 -0
- package/dist/middleware/index.d.ts +2 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +2 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/types/a2a.d.ts +373 -0
- package/dist/types/a2a.d.ts.map +1 -0
- package/dist/types/a2a.js +14 -0
- package/dist/types/a2a.js.map +1 -0
- package/dist/types/entities.d.ts +147 -0
- package/dist/types/entities.d.ts.map +1 -0
- package/dist/types/entities.js +2 -0
- package/dist/types/entities.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/server.d.ts +116 -0
- package/dist/types/server.d.ts.map +1 -0
- package/dist/types/server.js +2 -0
- package/dist/types/server.js.map +1 -0
- package/dist/types/utility.d.ts +213 -0
- package/dist/types/utility.d.ts.map +1 -0
- package/dist/types/utility.js +9 -0
- package/dist/types/utility.js.map +1 -0
- package/dist/utils/apiKeys.d.ts +32 -0
- package/dist/utils/apiKeys.d.ts.map +1 -0
- package/dist/utils/apiKeys.js +117 -0
- package/dist/utils/apiKeys.js.map +1 -0
- package/dist/utils/auth-detection.d.ts +23 -0
- package/dist/utils/auth-detection.d.ts.map +1 -0
- package/dist/utils/auth-detection.js +148 -0
- package/dist/utils/auth-detection.js.map +1 -0
- package/dist/utils/credential-store-utils.d.ts +11 -0
- package/dist/utils/credential-store-utils.d.ts.map +1 -0
- package/dist/utils/credential-store-utils.js +19 -0
- package/dist/utils/credential-store-utils.js.map +1 -0
- package/dist/utils/error.d.ts +526 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +282 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/execution.d.ts +18 -0
- package/dist/utils/execution.d.ts.map +1 -0
- package/dist/utils/execution.js +25 -0
- package/dist/utils/execution.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +79 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +102 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/logging.d.ts +11 -0
- package/dist/utils/logging.d.ts.map +1 -0
- package/dist/utils/logging.js +6 -0
- package/dist/utils/logging.js.map +1 -0
- package/dist/utils/mcp-client.d.ts +48 -0
- package/dist/utils/mcp-client.d.ts.map +1 -0
- package/dist/utils/mcp-client.js +174 -0
- package/dist/utils/mcp-client.js.map +1 -0
- package/dist/utils/tracer.d.ts +24 -0
- package/dist/utils/tracer.d.ts.map +1 -0
- package/dist/utils/tracer.js +110 -0
- package/dist/utils/tracer.js.map +1 -0
- package/dist/validation/graphFull.d.ts +36 -0
- package/dist/validation/graphFull.d.ts.map +1 -0
- package/dist/validation/graphFull.js +128 -0
- package/dist/validation/graphFull.js.map +1 -0
- package/dist/validation/id-validation.d.ts +38 -0
- package/dist/validation/id-validation.d.ts.map +1 -0
- package/dist/validation/id-validation.js +60 -0
- package/dist/validation/id-validation.js.map +1 -0
- package/dist/validation/index.d.ts +4 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +5 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/schemas.d.ts +7213 -0
- package/dist/validation/schemas.d.ts.map +1 -0
- package/dist/validation/schemas.js +576 -0
- package/dist/validation/schemas.js.map +1 -0
- package/package.json +95 -0
|
@@ -0,0 +1,551 @@
|
|
|
1
|
+
import { and, count, desc, eq, inArray, like } from 'drizzle-orm';
|
|
2
|
+
import { nanoid } from 'nanoid';
|
|
3
|
+
import { agentArtifactComponents, agentDataComponents, agentGraph, agents, agentToolRelations, artifactComponents, dataComponents, projects, tools, } from '../db/schema';
|
|
4
|
+
import { getAgentRelations, getAgentRelationsByGraph } from './agentRelations';
|
|
5
|
+
import { getAgentById } from './agents';
|
|
6
|
+
import { getContextConfigById } from './contextConfigs';
|
|
7
|
+
import { getExternalAgent } from './externalAgents';
|
|
8
|
+
export const getAgentGraph = (db) => async (params) => {
|
|
9
|
+
return await db.query.agentGraph.findFirst({
|
|
10
|
+
where: and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId), eq(agentGraph.id, params.graphId)),
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
export const getAgentGraphById = (db) => async (params) => {
|
|
14
|
+
const result = await db.query.agentGraph.findFirst({
|
|
15
|
+
where: and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId), eq(agentGraph.id, params.graphId)),
|
|
16
|
+
});
|
|
17
|
+
return result ?? null;
|
|
18
|
+
};
|
|
19
|
+
export const getAgentGraphWithDefaultAgent = (db) => async (params) => {
|
|
20
|
+
const result = await db.query.agentGraph.findFirst({
|
|
21
|
+
where: and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId), eq(agentGraph.id, params.graphId)),
|
|
22
|
+
with: {
|
|
23
|
+
defaultAgent: true,
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
return result ?? null;
|
|
27
|
+
};
|
|
28
|
+
export const listAgentGraphs = (db) => async (params) => {
|
|
29
|
+
return await db.query.agentGraph.findMany({
|
|
30
|
+
where: and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId)),
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
export const listAgentGraphsPaginated = (db) => async (params) => {
|
|
34
|
+
const page = params.pagination?.page || 1;
|
|
35
|
+
const limit = Math.min(params.pagination?.limit || 10, 100);
|
|
36
|
+
const offset = (page - 1) * limit;
|
|
37
|
+
const whereClause = and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId));
|
|
38
|
+
const query = db
|
|
39
|
+
.select()
|
|
40
|
+
.from(agentGraph)
|
|
41
|
+
.where(whereClause)
|
|
42
|
+
.limit(limit)
|
|
43
|
+
.offset(offset)
|
|
44
|
+
.orderBy(desc(agentGraph.createdAt));
|
|
45
|
+
const [data, totalResult] = await Promise.all([
|
|
46
|
+
query,
|
|
47
|
+
db.select({ count: count() }).from(agentGraph).where(whereClause),
|
|
48
|
+
]);
|
|
49
|
+
const total = totalResult[0]?.count || 0;
|
|
50
|
+
const pages = Math.ceil(total / limit);
|
|
51
|
+
return {
|
|
52
|
+
data,
|
|
53
|
+
pagination: { page, limit, total, pages },
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
export const createAgentGraph = (db) => async (data) => {
|
|
57
|
+
const now = new Date().toISOString();
|
|
58
|
+
const insertData = {
|
|
59
|
+
...data,
|
|
60
|
+
createdAt: now,
|
|
61
|
+
updatedAt: now,
|
|
62
|
+
};
|
|
63
|
+
if (data.description !== undefined) {
|
|
64
|
+
insertData.description = data.description;
|
|
65
|
+
}
|
|
66
|
+
if (data.contextConfigId !== undefined) {
|
|
67
|
+
insertData.contextConfigId = data.contextConfigId;
|
|
68
|
+
}
|
|
69
|
+
if (data.models !== undefined) {
|
|
70
|
+
insertData.models = data.models;
|
|
71
|
+
}
|
|
72
|
+
if (data.statusUpdates !== undefined) {
|
|
73
|
+
insertData.statusUpdates = data.statusUpdates;
|
|
74
|
+
}
|
|
75
|
+
if (data.graphPrompt !== undefined) {
|
|
76
|
+
insertData.graphPrompt = data.graphPrompt;
|
|
77
|
+
}
|
|
78
|
+
if (data.stopWhen !== undefined) {
|
|
79
|
+
insertData.stopWhen = data.stopWhen;
|
|
80
|
+
}
|
|
81
|
+
const graph = await db.insert(agentGraph).values(insertData).returning();
|
|
82
|
+
return graph[0];
|
|
83
|
+
};
|
|
84
|
+
export const updateAgentGraph = (db) => async (params) => {
|
|
85
|
+
const data = params.data;
|
|
86
|
+
// Handle model settings clearing - if empty object or no model field, set to null
|
|
87
|
+
if (data.models !== undefined) {
|
|
88
|
+
if (!data.models ||
|
|
89
|
+
(!data.models.base?.model &&
|
|
90
|
+
!data.models.structuredOutput?.model &&
|
|
91
|
+
!data.models.summarizer?.model &&
|
|
92
|
+
!data.models.base?.providerOptions &&
|
|
93
|
+
!data.models.structuredOutput?.providerOptions &&
|
|
94
|
+
!data.models.summarizer?.providerOptions)) {
|
|
95
|
+
data.models = null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (data.statusUpdates !== undefined) {
|
|
99
|
+
// If statusUpdates is null, set to null to clear it
|
|
100
|
+
if (!data.statusUpdates) {
|
|
101
|
+
data.statusUpdates = null;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Handle contextConfigId clearing
|
|
105
|
+
if (data.contextConfigId !== undefined && !data.contextConfigId) {
|
|
106
|
+
data.contextConfigId = null;
|
|
107
|
+
}
|
|
108
|
+
// Handle graphPrompt clearing
|
|
109
|
+
if (data.graphPrompt !== undefined && !data.graphPrompt) {
|
|
110
|
+
data.graphPrompt = null;
|
|
111
|
+
}
|
|
112
|
+
// Handle stopWhen clearing
|
|
113
|
+
if (data.stopWhen !== undefined && !data.stopWhen) {
|
|
114
|
+
data.stopWhen = null;
|
|
115
|
+
}
|
|
116
|
+
const updateData = {
|
|
117
|
+
...data,
|
|
118
|
+
updatedAt: new Date().toISOString(),
|
|
119
|
+
};
|
|
120
|
+
const graph = await db
|
|
121
|
+
.update(agentGraph)
|
|
122
|
+
.set(updateData)
|
|
123
|
+
.where(and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId), eq(agentGraph.id, params.graphId)))
|
|
124
|
+
.returning();
|
|
125
|
+
return graph[0] ?? null;
|
|
126
|
+
};
|
|
127
|
+
export const deleteAgentGraph = (db) => async (params) => {
|
|
128
|
+
const result = await db
|
|
129
|
+
.delete(agentGraph)
|
|
130
|
+
.where(and(eq(agentGraph.tenantId, params.scopes.tenantId), eq(agentGraph.projectId, params.scopes.projectId), eq(agentGraph.id, params.graphId)))
|
|
131
|
+
.returning();
|
|
132
|
+
return result.length > 0;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Helper function to fetch component relationships using efficient joins
|
|
136
|
+
*/
|
|
137
|
+
export const fetchComponentRelationships = (db) => async (scopes, agentIds, config) => {
|
|
138
|
+
const componentsObject = {};
|
|
139
|
+
if (agentIds.length > 0) {
|
|
140
|
+
const results = await db
|
|
141
|
+
.select(config.selectFields)
|
|
142
|
+
.from(config.relationTable)
|
|
143
|
+
.innerJoin(config.componentTable, eq(config.relationIdField, config.componentIdField))
|
|
144
|
+
.where(and(eq(config.relationTable.tenantId, scopes.tenantId), eq(config.relationTable.projectId, scopes.projectId), inArray(config.relationTable.agentId, agentIds)));
|
|
145
|
+
for (const component of results) {
|
|
146
|
+
componentsObject[component.id] = component;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return componentsObject;
|
|
150
|
+
};
|
|
151
|
+
export const getGraphAgentInfos = (db) => async ({ scopes, graphId, agentId, }) => {
|
|
152
|
+
const { tenantId, projectId } = scopes;
|
|
153
|
+
// First, verify that the graph exists
|
|
154
|
+
const graph = await getAgentGraph(db)({
|
|
155
|
+
scopes: { tenantId, projectId },
|
|
156
|
+
graphId,
|
|
157
|
+
});
|
|
158
|
+
if (!graph) {
|
|
159
|
+
throw new Error(`Agent graph with ID ${graphId} not found for tenant ${tenantId}`);
|
|
160
|
+
}
|
|
161
|
+
// Get all relations for the agent within the tenant
|
|
162
|
+
// For now, this works without graph-specific filtering until schema is properly updated
|
|
163
|
+
const relations = await getAgentRelations(db)({
|
|
164
|
+
scopes: { tenantId, projectId },
|
|
165
|
+
graphId,
|
|
166
|
+
agentId,
|
|
167
|
+
});
|
|
168
|
+
const targetAgentIds = relations
|
|
169
|
+
.map((relation) => relation.targetAgentId)
|
|
170
|
+
.filter((id) => id !== null);
|
|
171
|
+
// If no relations found, return empty array
|
|
172
|
+
if (targetAgentIds.length === 0) {
|
|
173
|
+
return [];
|
|
174
|
+
}
|
|
175
|
+
// Get agent information for each target agent
|
|
176
|
+
const agentInfos = await Promise.all(targetAgentIds.map(async (targetAgentId) => {
|
|
177
|
+
const agent = await getAgentById(db)({
|
|
178
|
+
scopes: { tenantId, projectId },
|
|
179
|
+
agentId: targetAgentId,
|
|
180
|
+
});
|
|
181
|
+
if (agent !== undefined) {
|
|
182
|
+
return { id: agent.id, name: agent.name, description: agent.description };
|
|
183
|
+
}
|
|
184
|
+
return null;
|
|
185
|
+
}));
|
|
186
|
+
// Filter out null results
|
|
187
|
+
return agentInfos.filter((agent) => agent !== null);
|
|
188
|
+
};
|
|
189
|
+
// NEW METHOD: Get full graph definition with all agents, relationships, and tools
|
|
190
|
+
export const getFullGraphDefinition = (db) => async ({ scopes: { tenantId, projectId }, graphId, }) => {
|
|
191
|
+
// First, get the basic graph info
|
|
192
|
+
const graph = await getAgentGraphById(db)({
|
|
193
|
+
scopes: { tenantId, projectId },
|
|
194
|
+
graphId,
|
|
195
|
+
});
|
|
196
|
+
if (!graph) {
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
// Get all agents that are part of this graph through relations
|
|
200
|
+
// First get all unique agent IDs in this graph (both source and target agents)
|
|
201
|
+
const graphRelations = await getAgentRelationsByGraph(db)({
|
|
202
|
+
scopes: { tenantId, projectId },
|
|
203
|
+
graphId,
|
|
204
|
+
});
|
|
205
|
+
// Get unique agent IDs from multiple sources:
|
|
206
|
+
// 1. Default agent (always included)
|
|
207
|
+
// 2. Agents with relationships in this graph
|
|
208
|
+
// 3. Agents that have tools assigned to this graph
|
|
209
|
+
const internalAgentIds = new Set();
|
|
210
|
+
const externalAgentIds = new Set();
|
|
211
|
+
internalAgentIds.add(graph.defaultAgentId);
|
|
212
|
+
// Add agents from relationships
|
|
213
|
+
for (const relation of graphRelations) {
|
|
214
|
+
// Add both source and target agents to the set
|
|
215
|
+
if (relation.sourceAgentId) {
|
|
216
|
+
internalAgentIds.add(relation.sourceAgentId);
|
|
217
|
+
}
|
|
218
|
+
if (relation.targetAgentId) {
|
|
219
|
+
internalAgentIds.add(relation.targetAgentId);
|
|
220
|
+
}
|
|
221
|
+
if (relation.externalAgentId) {
|
|
222
|
+
externalAgentIds.add(relation.externalAgentId);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// Add agents that have tools associated with this graph
|
|
226
|
+
// This is crucial for graphs where agents don't have relationships but do have tools
|
|
227
|
+
const agentsWithTools = await db
|
|
228
|
+
.selectDistinct({ agentId: agentToolRelations.agentId })
|
|
229
|
+
.from(agentToolRelations)
|
|
230
|
+
.innerJoin(tools, eq(agentToolRelations.toolId, tools.id))
|
|
231
|
+
.where(and(eq(agentToolRelations.tenantId, tenantId), eq(agentToolRelations.projectId, projectId),
|
|
232
|
+
// We need to find tools that belong to this graph
|
|
233
|
+
// Tools created as part of a graph have IDs that include the graph ID
|
|
234
|
+
like(tools.id, `%${graphId}%`)));
|
|
235
|
+
for (const agentTool of agentsWithTools) {
|
|
236
|
+
internalAgentIds.add(agentTool.agentId);
|
|
237
|
+
}
|
|
238
|
+
// Get full agent details for all agents in the graph
|
|
239
|
+
const graphAgents = await Promise.all(Array.from(internalAgentIds).map(async (agentId) => {
|
|
240
|
+
const agent = await getAgentById(db)({
|
|
241
|
+
scopes: { tenantId, projectId },
|
|
242
|
+
agentId,
|
|
243
|
+
});
|
|
244
|
+
if (!agent)
|
|
245
|
+
return null;
|
|
246
|
+
// Get relationships for this agent
|
|
247
|
+
const agentRelationsList = graphRelations.filter((relation) => relation.sourceAgentId === agentId);
|
|
248
|
+
// Group relationships by type
|
|
249
|
+
const canTransferTo = agentRelationsList
|
|
250
|
+
.filter((rel) => rel.relationType === 'transfer' || rel.relationType === 'transfer_to')
|
|
251
|
+
.map((rel) => rel.targetAgentId)
|
|
252
|
+
.filter((id) => id !== null);
|
|
253
|
+
const canDelegateTo = agentRelationsList
|
|
254
|
+
.filter((rel) => rel.relationType === 'delegate' || rel.relationType === 'delegate_to')
|
|
255
|
+
.map((rel) => rel.targetAgentId || rel.externalAgentId) // Delegations can be to internal or external agents
|
|
256
|
+
.filter((id) => id !== null);
|
|
257
|
+
// Get tools for this agent
|
|
258
|
+
const agentTools = await db
|
|
259
|
+
.select({
|
|
260
|
+
id: tools.id,
|
|
261
|
+
name: tools.name,
|
|
262
|
+
config: tools.config,
|
|
263
|
+
imageUrl: tools.imageUrl,
|
|
264
|
+
status: tools.status,
|
|
265
|
+
capabilities: tools.capabilities,
|
|
266
|
+
lastHealthCheck: tools.lastHealthCheck,
|
|
267
|
+
lastError: tools.lastError,
|
|
268
|
+
availableTools: tools.availableTools,
|
|
269
|
+
lastToolsSync: tools.lastToolsSync,
|
|
270
|
+
})
|
|
271
|
+
.from(agentToolRelations)
|
|
272
|
+
.innerJoin(tools, eq(agentToolRelations.toolId, tools.id))
|
|
273
|
+
.where(and(eq(agentToolRelations.tenantId, tenantId), eq(agentToolRelations.agentId, agentId)));
|
|
274
|
+
// Get dataComponents for this agent
|
|
275
|
+
const agentDataComponentRelations = await db.query.agentDataComponents.findMany({
|
|
276
|
+
where: and(eq(agentDataComponents.tenantId, tenantId), eq(agentDataComponents.agentId, agentId)),
|
|
277
|
+
});
|
|
278
|
+
const agentDataComponentIds = agentDataComponentRelations.map((rel) => rel.dataComponentId);
|
|
279
|
+
// Get artifactComponents for this agent
|
|
280
|
+
const agentArtifactComponentRelations = await db.query.agentArtifactComponents.findMany({
|
|
281
|
+
where: and(eq(agentArtifactComponents.tenantId, tenantId), eq(agentArtifactComponents.agentId, agentId)),
|
|
282
|
+
});
|
|
283
|
+
const agentArtifactComponentIds = agentArtifactComponentRelations.map((rel) => rel.artifactComponentId);
|
|
284
|
+
return {
|
|
285
|
+
id: agent.id,
|
|
286
|
+
name: agent.name,
|
|
287
|
+
description: agent.description,
|
|
288
|
+
prompt: agent.prompt,
|
|
289
|
+
models: agent.models,
|
|
290
|
+
stopWhen: agent.stopWhen,
|
|
291
|
+
canTransferTo,
|
|
292
|
+
canDelegateTo,
|
|
293
|
+
dataComponents: agentDataComponentIds,
|
|
294
|
+
artifactComponents: agentArtifactComponentIds,
|
|
295
|
+
tools: agentTools.map((tool) => ({
|
|
296
|
+
id: tool.id,
|
|
297
|
+
name: tool.name,
|
|
298
|
+
config: tool.config,
|
|
299
|
+
imageUrl: tool.imageUrl || undefined,
|
|
300
|
+
status: tool.status,
|
|
301
|
+
capabilities: tool.capabilities || undefined,
|
|
302
|
+
lastHealthCheck: tool.lastHealthCheck && !Number.isNaN(new Date(tool.lastHealthCheck).getTime())
|
|
303
|
+
? new Date(tool.lastHealthCheck).toISOString()
|
|
304
|
+
: undefined,
|
|
305
|
+
lastError: tool.lastError || undefined,
|
|
306
|
+
availableTools: tool.availableTools || undefined,
|
|
307
|
+
activeTools: tool.config?.mcp?.activeTools || undefined,
|
|
308
|
+
lastToolsSync: tool.lastToolsSync && !Number.isNaN(new Date(tool.lastToolsSync).getTime())
|
|
309
|
+
? new Date(tool.lastToolsSync).toISOString()
|
|
310
|
+
: undefined,
|
|
311
|
+
})),
|
|
312
|
+
};
|
|
313
|
+
}));
|
|
314
|
+
const externalAgents = await Promise.all(Array.from(externalAgentIds).map(async (agentId) => {
|
|
315
|
+
const agent = await getExternalAgent(db)({
|
|
316
|
+
scopes: { tenantId, projectId },
|
|
317
|
+
agentId,
|
|
318
|
+
});
|
|
319
|
+
if (!agent)
|
|
320
|
+
return null;
|
|
321
|
+
// External agents need to match the FullGraphAgentSchema structure
|
|
322
|
+
return {
|
|
323
|
+
id: agent.id,
|
|
324
|
+
name: agent.name,
|
|
325
|
+
description: agent.description,
|
|
326
|
+
baseUrl: agent.baseUrl,
|
|
327
|
+
};
|
|
328
|
+
}));
|
|
329
|
+
// Filter out null results
|
|
330
|
+
const validAgents = [...graphAgents, ...externalAgents].filter((agent) => agent !== null);
|
|
331
|
+
// Convert agents array to object with agentId as key
|
|
332
|
+
const agentsObject = {};
|
|
333
|
+
const toolsObject = {};
|
|
334
|
+
for (const agent of validAgents) {
|
|
335
|
+
// Check if this is an external agent (has baseUrl property)
|
|
336
|
+
const isExternalAgent = 'baseUrl' in agent && agent.baseUrl;
|
|
337
|
+
if (isExternalAgent) {
|
|
338
|
+
// External agent - only include basic fields
|
|
339
|
+
agentsObject[agent.id] = {
|
|
340
|
+
id: agent.id,
|
|
341
|
+
name: agent.name,
|
|
342
|
+
description: agent.description,
|
|
343
|
+
baseUrl: agent.baseUrl,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
// Internal agent - extract tools and include all fields
|
|
348
|
+
const toolsData = agent.tools || [];
|
|
349
|
+
const toolIds = [];
|
|
350
|
+
// Build tools object and collect tool IDs for the agent
|
|
351
|
+
for (const tool of toolsData) {
|
|
352
|
+
toolsObject[tool.id] = tool;
|
|
353
|
+
toolIds.push(tool.id);
|
|
354
|
+
}
|
|
355
|
+
agentsObject[agent.id] = {
|
|
356
|
+
...agent,
|
|
357
|
+
tools: toolIds, // Replace tool objects with tool IDs
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
// Get contextConfig if it exists
|
|
362
|
+
let contextConfig = null;
|
|
363
|
+
if (graph.contextConfigId) {
|
|
364
|
+
try {
|
|
365
|
+
contextConfig = await getContextConfigById(db)({
|
|
366
|
+
scopes: { tenantId, projectId },
|
|
367
|
+
id: graph.contextConfigId,
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
catch (error) {
|
|
371
|
+
// Don't fail the entire request if contextConfig retrieval fails
|
|
372
|
+
console.warn(`Failed to retrieve contextConfig ${graph.contextConfigId}:`, error);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
// Get dataComponents for all agents in this graph
|
|
376
|
+
let dataComponentsObject = {};
|
|
377
|
+
try {
|
|
378
|
+
const agentIds = Array.from(internalAgentIds);
|
|
379
|
+
dataComponentsObject = await fetchComponentRelationships(db)({ tenantId, projectId }, agentIds, {
|
|
380
|
+
relationTable: agentDataComponents,
|
|
381
|
+
componentTable: dataComponents,
|
|
382
|
+
relationIdField: agentDataComponents.dataComponentId,
|
|
383
|
+
componentIdField: dataComponents.id,
|
|
384
|
+
selectFields: {
|
|
385
|
+
id: dataComponents.id,
|
|
386
|
+
name: dataComponents.name,
|
|
387
|
+
description: dataComponents.description,
|
|
388
|
+
props: dataComponents.props,
|
|
389
|
+
},
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
catch (error) {
|
|
393
|
+
// Don't fail the entire request if dataComponents retrieval fails
|
|
394
|
+
console.warn('Failed to retrieve dataComponents:', error);
|
|
395
|
+
}
|
|
396
|
+
// Get artifactComponents for all agents in this graph
|
|
397
|
+
let artifactComponentsObject = {};
|
|
398
|
+
try {
|
|
399
|
+
const agentIds = Array.from(internalAgentIds);
|
|
400
|
+
artifactComponentsObject = await fetchComponentRelationships(db)({ tenantId, projectId }, agentIds, {
|
|
401
|
+
relationTable: agentArtifactComponents,
|
|
402
|
+
componentTable: artifactComponents,
|
|
403
|
+
relationIdField: agentArtifactComponents.artifactComponentId,
|
|
404
|
+
componentIdField: artifactComponents.id,
|
|
405
|
+
selectFields: {
|
|
406
|
+
id: artifactComponents.id,
|
|
407
|
+
name: artifactComponents.name,
|
|
408
|
+
description: artifactComponents.description,
|
|
409
|
+
summaryProps: artifactComponents.summaryProps,
|
|
410
|
+
fullProps: artifactComponents.fullProps,
|
|
411
|
+
},
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
catch (error) {
|
|
415
|
+
// Don't fail the entire request if artifactComponents retrieval fails
|
|
416
|
+
console.warn('Failed to retrieve artifactComponents:', error);
|
|
417
|
+
}
|
|
418
|
+
const result = {
|
|
419
|
+
id: graph.id,
|
|
420
|
+
name: graph.name,
|
|
421
|
+
description: graph.description,
|
|
422
|
+
defaultAgentId: graph.defaultAgentId,
|
|
423
|
+
agents: agentsObject,
|
|
424
|
+
tools: toolsObject,
|
|
425
|
+
createdAt: graph.createdAt && !Number.isNaN(new Date(graph.createdAt).getTime())
|
|
426
|
+
? new Date(graph.createdAt).toISOString()
|
|
427
|
+
: new Date().toISOString(),
|
|
428
|
+
updatedAt: graph.updatedAt && !Number.isNaN(new Date(graph.updatedAt).getTime())
|
|
429
|
+
? new Date(graph.updatedAt).toISOString()
|
|
430
|
+
: new Date().toISOString(),
|
|
431
|
+
};
|
|
432
|
+
// Add optional fields if they exist
|
|
433
|
+
if (graph.models) {
|
|
434
|
+
result.models = graph.models;
|
|
435
|
+
}
|
|
436
|
+
if (graph.statusUpdates) {
|
|
437
|
+
result.statusUpdates = graph.statusUpdates;
|
|
438
|
+
}
|
|
439
|
+
if (graph.graphPrompt) {
|
|
440
|
+
result.graphPrompt = graph.graphPrompt;
|
|
441
|
+
}
|
|
442
|
+
if (graph.stopWhen) {
|
|
443
|
+
result.stopWhen = graph.stopWhen;
|
|
444
|
+
}
|
|
445
|
+
if (contextConfig) {
|
|
446
|
+
result.contextConfig = {
|
|
447
|
+
id: contextConfig.id,
|
|
448
|
+
name: contextConfig.name,
|
|
449
|
+
description: contextConfig.description,
|
|
450
|
+
requestContextSchema: contextConfig.requestContextSchema,
|
|
451
|
+
contextVariables: contextConfig.contextVariables,
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
if (Object.keys(dataComponentsObject).length > 0) {
|
|
455
|
+
result.dataComponents = dataComponentsObject;
|
|
456
|
+
}
|
|
457
|
+
if (Object.keys(artifactComponentsObject).length > 0) {
|
|
458
|
+
result.artifactComponents = artifactComponentsObject;
|
|
459
|
+
}
|
|
460
|
+
// Apply agent stepCountIs inheritance from project
|
|
461
|
+
try {
|
|
462
|
+
// Check if projects query is available (may not be in test environments)
|
|
463
|
+
if (!db.query?.projects?.findFirst) {
|
|
464
|
+
return result;
|
|
465
|
+
}
|
|
466
|
+
// Get project stopWhen configuration
|
|
467
|
+
const project = await db.query.projects.findFirst({
|
|
468
|
+
where: and(eq(projects.tenantId, tenantId), eq(projects.id, projectId)),
|
|
469
|
+
});
|
|
470
|
+
if (project?.stopWhen) {
|
|
471
|
+
const projectStopWhen = project.stopWhen;
|
|
472
|
+
// Propagate stepCountIs from project to agents
|
|
473
|
+
if (projectStopWhen?.stepCountIs !== undefined) {
|
|
474
|
+
for (const [agentId, agentData] of Object.entries(result.agents)) {
|
|
475
|
+
// Only apply to internal agents (not external agents with baseUrl)
|
|
476
|
+
if (agentData && typeof agentData === 'object' && !('baseUrl' in agentData)) {
|
|
477
|
+
const agent = agentData;
|
|
478
|
+
// Check if agent needs to inherit stepCountIs
|
|
479
|
+
const needsInheritance = !agent.stopWhen || agent.stopWhen.stepCountIs === undefined;
|
|
480
|
+
if (needsInheritance) {
|
|
481
|
+
// Initialize agent stopWhen if it doesn't exist or is null
|
|
482
|
+
if (!agent.stopWhen) {
|
|
483
|
+
agent.stopWhen = {};
|
|
484
|
+
}
|
|
485
|
+
// Set stepCountIs in stopWhen
|
|
486
|
+
agent.stopWhen.stepCountIs = projectStopWhen.stepCountIs;
|
|
487
|
+
// Persist the inherited value to the database
|
|
488
|
+
try {
|
|
489
|
+
await db
|
|
490
|
+
.update(agents)
|
|
491
|
+
.set({
|
|
492
|
+
stopWhen: agent.stopWhen,
|
|
493
|
+
updatedAt: new Date().toISOString(),
|
|
494
|
+
})
|
|
495
|
+
.where(and(eq(agents.tenantId, tenantId), eq(agents.projectId, projectId), eq(agents.id, agentId)));
|
|
496
|
+
// Update the in-memory agent data to reflect the persisted values
|
|
497
|
+
// This ensures the UI gets the updated data
|
|
498
|
+
result.agents[agentId] = {
|
|
499
|
+
...result.agents[agentId],
|
|
500
|
+
stopWhen: agent.stopWhen,
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
catch (dbError) {
|
|
504
|
+
console.warn(`Failed to persist stopWhen for agent ${agentId}:`, dbError);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
catch (error) {
|
|
513
|
+
// Don't fail the entire request if inheritance fails
|
|
514
|
+
console.warn('Failed to apply agent stepCountIs inheritance:', error);
|
|
515
|
+
}
|
|
516
|
+
return result;
|
|
517
|
+
};
|
|
518
|
+
/**
|
|
519
|
+
* Upsert an agent graph (create if it doesn't exist, update if it does)
|
|
520
|
+
*/
|
|
521
|
+
export const upsertAgentGraph = (db) => async (params) => {
|
|
522
|
+
const scopes = { tenantId: params.data.tenantId, projectId: params.data.projectId };
|
|
523
|
+
const graphId = params.data.id || nanoid();
|
|
524
|
+
const existing = await getAgentGraphById(db)({
|
|
525
|
+
scopes,
|
|
526
|
+
graphId,
|
|
527
|
+
});
|
|
528
|
+
if (existing) {
|
|
529
|
+
// Update existing agent graph
|
|
530
|
+
return await updateAgentGraph(db)({
|
|
531
|
+
scopes,
|
|
532
|
+
graphId,
|
|
533
|
+
data: {
|
|
534
|
+
name: params.data.name,
|
|
535
|
+
defaultAgentId: params.data.defaultAgentId,
|
|
536
|
+
description: params.data.description,
|
|
537
|
+
contextConfigId: params.data.contextConfigId,
|
|
538
|
+
models: params.data.models,
|
|
539
|
+
statusUpdates: params.data.statusUpdates,
|
|
540
|
+
},
|
|
541
|
+
});
|
|
542
|
+
}
|
|
543
|
+
else {
|
|
544
|
+
// Create new agent graph
|
|
545
|
+
return await createAgentGraph(db)({
|
|
546
|
+
...params.data,
|
|
547
|
+
id: graphId,
|
|
548
|
+
});
|
|
549
|
+
}
|
|
550
|
+
};
|
|
551
|
+
//# sourceMappingURL=agentGraphs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentGraphs.js","sourceRoot":"","sources":["../../src/data-access/agentGraphs.ts"],"names":[],"mappings":"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"}
|