@inkeep/agents-core 0.1.4 → 0.1.7

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 (278) hide show
  1. package/README.md +2 -2
  2. package/SUPPLEMENTAL_TERMS.md +40 -0
  3. package/dist/chunk-BMKWVKI2.js +126 -0
  4. package/dist/chunk-H2F72PDA.js +15 -0
  5. package/dist/chunk-MKBO26DX.js +9 -0
  6. package/dist/chunk-MXQKLGQK.js +925 -0
  7. package/dist/chunk-R3VVJXX7.js +575 -0
  8. package/dist/chunk-SVGQSPW4.js +24 -0
  9. package/dist/client-exports.cjs +1702 -0
  10. package/dist/client-exports.js +202 -246
  11. package/dist/db/schema.cjs +922 -0
  12. package/dist/db/schema.js +1 -696
  13. package/dist/index.cjs +10122 -0
  14. package/dist/index.js +7989 -13
  15. package/dist/types/index.cjs +45 -0
  16. package/dist/types/index.js +2 -6
  17. package/dist/validation/index.cjs +1772 -0
  18. package/dist/validation/index.js +2 -5
  19. package/package.json +11 -6
  20. package/dist/__tests__/integration/helpers.d.ts +0 -5
  21. package/dist/__tests__/integration/helpers.d.ts.map +0 -1
  22. package/dist/__tests__/integration/helpers.js +0 -37
  23. package/dist/__tests__/integration/helpers.js.map +0 -1
  24. package/dist/__tests__/setup.d.ts +0 -3
  25. package/dist/__tests__/setup.d.ts.map +0 -1
  26. package/dist/__tests__/setup.js +0 -29
  27. package/dist/__tests__/setup.js.map +0 -1
  28. package/dist/client-exports.d.ts +0 -300
  29. package/dist/client-exports.d.ts.map +0 -1
  30. package/dist/client-exports.js.map +0 -1
  31. package/dist/context/ContextConfig.d.ts +0 -54
  32. package/dist/context/ContextConfig.d.ts.map +0 -1
  33. package/dist/context/ContextConfig.js +0 -302
  34. package/dist/context/ContextConfig.js.map +0 -1
  35. package/dist/context/ContextFetcher.d.ts +0 -64
  36. package/dist/context/ContextFetcher.d.ts.map +0 -1
  37. package/dist/context/ContextFetcher.js +0 -325
  38. package/dist/context/ContextFetcher.js.map +0 -1
  39. package/dist/context/ContextResolver.d.ts +0 -52
  40. package/dist/context/ContextResolver.d.ts.map +0 -1
  41. package/dist/context/ContextResolver.js +0 -298
  42. package/dist/context/ContextResolver.js.map +0 -1
  43. package/dist/context/TemplateEngine.d.ts +0 -46
  44. package/dist/context/TemplateEngine.d.ts.map +0 -1
  45. package/dist/context/TemplateEngine.js +0 -175
  46. package/dist/context/TemplateEngine.js.map +0 -1
  47. package/dist/context/context.d.ts +0 -8
  48. package/dist/context/context.d.ts.map +0 -1
  49. package/dist/context/context.js +0 -157
  50. package/dist/context/context.js.map +0 -1
  51. package/dist/context/contextCache.d.ts +0 -50
  52. package/dist/context/contextCache.d.ts.map +0 -1
  53. package/dist/context/contextCache.js +0 -175
  54. package/dist/context/contextCache.js.map +0 -1
  55. package/dist/context/index.d.ts +0 -11
  56. package/dist/context/index.d.ts.map +0 -1
  57. package/dist/context/index.js +0 -8
  58. package/dist/context/index.js.map +0 -1
  59. package/dist/credential-stores/CredentialStoreRegistry.d.ts +0 -39
  60. package/dist/credential-stores/CredentialStoreRegistry.d.ts.map +0 -1
  61. package/dist/credential-stores/CredentialStoreRegistry.js +0 -65
  62. package/dist/credential-stores/CredentialStoreRegistry.js.map +0 -1
  63. package/dist/credential-stores/defaults.d.ts +0 -6
  64. package/dist/credential-stores/defaults.d.ts.map +0 -1
  65. package/dist/credential-stores/defaults.js +0 -22
  66. package/dist/credential-stores/defaults.js.map +0 -1
  67. package/dist/credential-stores/index.d.ts +0 -6
  68. package/dist/credential-stores/index.d.ts.map +0 -1
  69. package/dist/credential-stores/index.js +0 -6
  70. package/dist/credential-stores/index.js.map +0 -1
  71. package/dist/credential-stores/keychain-store.d.ts +0 -100
  72. package/dist/credential-stores/keychain-store.d.ts.map +0 -1
  73. package/dist/credential-stores/keychain-store.js +0 -225
  74. package/dist/credential-stores/keychain-store.js.map +0 -1
  75. package/dist/credential-stores/memory-store.d.ts +0 -39
  76. package/dist/credential-stores/memory-store.d.ts.map +0 -1
  77. package/dist/credential-stores/memory-store.js +0 -58
  78. package/dist/credential-stores/memory-store.js.map +0 -1
  79. package/dist/credential-stores/nango-store.d.ts +0 -59
  80. package/dist/credential-stores/nango-store.d.ts.map +0 -1
  81. package/dist/credential-stores/nango-store.js +0 -264
  82. package/dist/credential-stores/nango-store.js.map +0 -1
  83. package/dist/credential-stuffer/CredentialStuffer.d.ts +0 -80
  84. package/dist/credential-stuffer/CredentialStuffer.d.ts.map +0 -1
  85. package/dist/credential-stuffer/CredentialStuffer.js +0 -186
  86. package/dist/credential-stuffer/CredentialStuffer.js.map +0 -1
  87. package/dist/credential-stuffer/index.d.ts +0 -2
  88. package/dist/credential-stuffer/index.d.ts.map +0 -1
  89. package/dist/credential-stuffer/index.js +0 -2
  90. package/dist/credential-stuffer/index.js.map +0 -1
  91. package/dist/data-access/agentDataComponents.d.ts +0 -1
  92. package/dist/data-access/agentDataComponents.d.ts.map +0 -1
  93. package/dist/data-access/agentDataComponents.js +0 -2
  94. package/dist/data-access/agentDataComponents.js.map +0 -1
  95. package/dist/data-access/agentGraphs.d.ts +0 -406
  96. package/dist/data-access/agentGraphs.d.ts.map +0 -1
  97. package/dist/data-access/agentGraphs.js +0 -551
  98. package/dist/data-access/agentGraphs.js.map +0 -1
  99. package/dist/data-access/agentRelations.d.ts +0 -456
  100. package/dist/data-access/agentRelations.d.ts.map +0 -1
  101. package/dist/data-access/agentRelations.js +0 -471
  102. package/dist/data-access/agentRelations.js.map +0 -1
  103. package/dist/data-access/agents.d.ts +0 -218
  104. package/dist/data-access/agents.d.ts.map +0 -1
  105. package/dist/data-access/agents.js +0 -130
  106. package/dist/data-access/agents.js.map +0 -1
  107. package/dist/data-access/apiKeys.d.ts +0 -114
  108. package/dist/data-access/apiKeys.d.ts.map +0 -1
  109. package/dist/data-access/apiKeys.js +0 -185
  110. package/dist/data-access/apiKeys.js.map +0 -1
  111. package/dist/data-access/artifactComponents.d.ts +0 -152
  112. package/dist/data-access/artifactComponents.d.ts.map +0 -1
  113. package/dist/data-access/artifactComponents.js +0 -214
  114. package/dist/data-access/artifactComponents.js.map +0 -1
  115. package/dist/data-access/contextCache.d.ts +0 -68
  116. package/dist/data-access/contextCache.d.ts.map +0 -1
  117. package/dist/data-access/contextCache.js +0 -160
  118. package/dist/data-access/contextCache.js.map +0 -1
  119. package/dist/data-access/contextConfigs.d.ts +0 -110
  120. package/dist/data-access/contextConfigs.d.ts.map +0 -1
  121. package/dist/data-access/contextConfigs.js +0 -156
  122. package/dist/data-access/contextConfigs.js.map +0 -1
  123. package/dist/data-access/conversations.d.ts +0 -125
  124. package/dist/data-access/conversations.d.ts.map +0 -1
  125. package/dist/data-access/conversations.js +0 -244
  126. package/dist/data-access/conversations.js.map +0 -1
  127. package/dist/data-access/credentialReferences.d.ts +0 -86
  128. package/dist/data-access/credentialReferences.d.ts.map +0 -1
  129. package/dist/data-access/credentialReferences.js +0 -175
  130. package/dist/data-access/credentialReferences.js.map +0 -1
  131. package/dist/data-access/dataComponents.d.ts +0 -129
  132. package/dist/data-access/dataComponents.d.ts.map +0 -1
  133. package/dist/data-access/dataComponents.js +0 -213
  134. package/dist/data-access/dataComponents.js.map +0 -1
  135. package/dist/data-access/externalAgents.d.ts +0 -83
  136. package/dist/data-access/externalAgents.d.ts.map +0 -1
  137. package/dist/data-access/externalAgents.js +0 -163
  138. package/dist/data-access/externalAgents.js.map +0 -1
  139. package/dist/data-access/graphFull.d.ts +0 -32
  140. package/dist/data-access/graphFull.d.ts.map +0 -1
  141. package/dist/data-access/graphFull.js +0 -996
  142. package/dist/data-access/graphFull.js.map +0 -1
  143. package/dist/data-access/index.d.ts +0 -21
  144. package/dist/data-access/index.d.ts.map +0 -1
  145. package/dist/data-access/index.js +0 -22
  146. package/dist/data-access/index.js.map +0 -1
  147. package/dist/data-access/ledgerArtifacts.d.ts +0 -49
  148. package/dist/data-access/ledgerArtifacts.d.ts.map +0 -1
  149. package/dist/data-access/ledgerArtifacts.js +0 -112
  150. package/dist/data-access/ledgerArtifacts.js.map +0 -1
  151. package/dist/data-access/messages.d.ts +0 -209
  152. package/dist/data-access/messages.d.ts.map +0 -1
  153. package/dist/data-access/messages.js +0 -100
  154. package/dist/data-access/messages.js.map +0 -1
  155. package/dist/data-access/projects.d.ts +0 -67
  156. package/dist/data-access/projects.d.ts.map +0 -1
  157. package/dist/data-access/projects.js +0 -337
  158. package/dist/data-access/projects.js.map +0 -1
  159. package/dist/data-access/tasks.d.ts +0 -37
  160. package/dist/data-access/tasks.d.ts.map +0 -1
  161. package/dist/data-access/tasks.js +0 -40
  162. package/dist/data-access/tasks.js.map +0 -1
  163. package/dist/data-access/tools.d.ts +0 -277
  164. package/dist/data-access/tools.d.ts.map +0 -1
  165. package/dist/data-access/tools.js +0 -183
  166. package/dist/data-access/tools.js.map +0 -1
  167. package/dist/data-access/validation.d.ts +0 -17
  168. package/dist/data-access/validation.d.ts.map +0 -1
  169. package/dist/data-access/validation.js +0 -52
  170. package/dist/data-access/validation.js.map +0 -1
  171. package/dist/db/clean.d.ts +0 -6
  172. package/dist/db/clean.d.ts.map +0 -1
  173. package/dist/db/clean.js +0 -81
  174. package/dist/db/clean.js.map +0 -1
  175. package/dist/db/client.d.ts +0 -19
  176. package/dist/db/client.d.ts.map +0 -1
  177. package/dist/db/client.js +0 -24
  178. package/dist/db/client.js.map +0 -1
  179. package/dist/db/schema.d.ts +0 -4337
  180. package/dist/db/schema.d.ts.map +0 -1
  181. package/dist/db/schema.js.map +0 -1
  182. package/dist/db/test-client.d.ts +0 -25
  183. package/dist/db/test-client.d.ts.map +0 -1
  184. package/dist/db/test-client.js +0 -136
  185. package/dist/db/test-client.js.map +0 -1
  186. package/dist/env.d.ts +0 -19
  187. package/dist/env.d.ts.map +0 -1
  188. package/dist/env.js +0 -49
  189. package/dist/env.js.map +0 -1
  190. package/dist/index.d.ts +0 -12
  191. package/dist/index.d.ts.map +0 -1
  192. package/dist/index.js.map +0 -1
  193. package/dist/middleware/contextValidation.d.ts +0 -49
  194. package/dist/middleware/contextValidation.d.ts.map +0 -1
  195. package/dist/middleware/contextValidation.js +0 -473
  196. package/dist/middleware/contextValidation.js.map +0 -1
  197. package/dist/middleware/index.d.ts +0 -2
  198. package/dist/middleware/index.d.ts.map +0 -1
  199. package/dist/middleware/index.js +0 -2
  200. package/dist/middleware/index.js.map +0 -1
  201. package/dist/server/BaseServer.d.ts +0 -83
  202. package/dist/server/BaseServer.d.ts.map +0 -1
  203. package/dist/server/BaseServer.js +0 -218
  204. package/dist/server/BaseServer.js.map +0 -1
  205. package/dist/types/a2a.d.ts +0 -373
  206. package/dist/types/a2a.d.ts.map +0 -1
  207. package/dist/types/a2a.js +0 -14
  208. package/dist/types/a2a.js.map +0 -1
  209. package/dist/types/entities.d.ts +0 -147
  210. package/dist/types/entities.d.ts.map +0 -1
  211. package/dist/types/entities.js +0 -2
  212. package/dist/types/entities.js.map +0 -1
  213. package/dist/types/index.d.ts +0 -5
  214. package/dist/types/index.d.ts.map +0 -1
  215. package/dist/types/index.js.map +0 -1
  216. package/dist/types/server.d.ts +0 -116
  217. package/dist/types/server.d.ts.map +0 -1
  218. package/dist/types/server.js +0 -2
  219. package/dist/types/server.js.map +0 -1
  220. package/dist/types/utility.d.ts +0 -213
  221. package/dist/types/utility.d.ts.map +0 -1
  222. package/dist/types/utility.js +0 -9
  223. package/dist/types/utility.js.map +0 -1
  224. package/dist/utils/apiKeys.d.ts +0 -32
  225. package/dist/utils/apiKeys.d.ts.map +0 -1
  226. package/dist/utils/apiKeys.js +0 -117
  227. package/dist/utils/apiKeys.js.map +0 -1
  228. package/dist/utils/auth-detection.d.ts +0 -23
  229. package/dist/utils/auth-detection.d.ts.map +0 -1
  230. package/dist/utils/auth-detection.js +0 -148
  231. package/dist/utils/auth-detection.js.map +0 -1
  232. package/dist/utils/credential-store-utils.d.ts +0 -11
  233. package/dist/utils/credential-store-utils.d.ts.map +0 -1
  234. package/dist/utils/credential-store-utils.js +0 -19
  235. package/dist/utils/credential-store-utils.js.map +0 -1
  236. package/dist/utils/error.d.ts +0 -526
  237. package/dist/utils/error.d.ts.map +0 -1
  238. package/dist/utils/error.js +0 -282
  239. package/dist/utils/error.js.map +0 -1
  240. package/dist/utils/execution.d.ts +0 -18
  241. package/dist/utils/execution.d.ts.map +0 -1
  242. package/dist/utils/execution.js +0 -25
  243. package/dist/utils/execution.js.map +0 -1
  244. package/dist/utils/index.d.ts +0 -9
  245. package/dist/utils/index.d.ts.map +0 -1
  246. package/dist/utils/index.js +0 -9
  247. package/dist/utils/index.js.map +0 -1
  248. package/dist/utils/logger.d.ts +0 -79
  249. package/dist/utils/logger.d.ts.map +0 -1
  250. package/dist/utils/logger.js +0 -102
  251. package/dist/utils/logger.js.map +0 -1
  252. package/dist/utils/logging.d.ts +0 -11
  253. package/dist/utils/logging.d.ts.map +0 -1
  254. package/dist/utils/logging.js +0 -6
  255. package/dist/utils/logging.js.map +0 -1
  256. package/dist/utils/mcp-client.d.ts +0 -48
  257. package/dist/utils/mcp-client.d.ts.map +0 -1
  258. package/dist/utils/mcp-client.js +0 -174
  259. package/dist/utils/mcp-client.js.map +0 -1
  260. package/dist/utils/tracer.d.ts +0 -24
  261. package/dist/utils/tracer.d.ts.map +0 -1
  262. package/dist/utils/tracer.js +0 -110
  263. package/dist/utils/tracer.js.map +0 -1
  264. package/dist/validation/graphFull.d.ts +0 -36
  265. package/dist/validation/graphFull.d.ts.map +0 -1
  266. package/dist/validation/graphFull.js +0 -128
  267. package/dist/validation/graphFull.js.map +0 -1
  268. package/dist/validation/id-validation.d.ts +0 -38
  269. package/dist/validation/id-validation.d.ts.map +0 -1
  270. package/dist/validation/id-validation.js +0 -60
  271. package/dist/validation/id-validation.js.map +0 -1
  272. package/dist/validation/index.d.ts +0 -4
  273. package/dist/validation/index.d.ts.map +0 -1
  274. package/dist/validation/index.js.map +0 -1
  275. package/dist/validation/schemas.d.ts +0 -7238
  276. package/dist/validation/schemas.d.ts.map +0 -1
  277. package/dist/validation/schemas.js +0 -575
  278. package/dist/validation/schemas.js.map +0 -1
@@ -1,551 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"agentGraphs.js","sourceRoot":"","sources":["../../src/data-access/agentGraphs.ts"],"names":[],"mappings":"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"}