@inkeep/agents-core 0.1.4 → 0.1.6

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