@inkeep/agents-core 0.1.3 → 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 -171
  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
@@ -0,0 +1,819 @@
1
+ 'use strict';
2
+
3
+ var drizzleOrm = require('drizzle-orm');
4
+ var sqliteCore = require('drizzle-orm/sqlite-core');
5
+
6
+ // src/db/schema.ts
7
+ var projects = sqliteCore.sqliteTable(
8
+ "projects",
9
+ {
10
+ tenantId: sqliteCore.text("tenant_id").notNull(),
11
+ id: sqliteCore.text("id").notNull(),
12
+ // This IS the project ID
13
+ name: sqliteCore.text("name").notNull(),
14
+ description: sqliteCore.text("description").notNull(),
15
+ // Project-level default model settingsuration that can be inherited by graphs and agents
16
+ models: sqliteCore.text("models", { mode: "json" }).$type(),
17
+ // Project-level stopWhen configuration that can be inherited by graphs and agents
18
+ stopWhen: sqliteCore.text("stop_when", { mode: "json" }).$type(),
19
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
20
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
21
+ },
22
+ (table) => [sqliteCore.primaryKey({ columns: [table.tenantId, table.id] })]
23
+ );
24
+ var contextConfigs = sqliteCore.sqliteTable(
25
+ "context_configs",
26
+ {
27
+ tenantId: sqliteCore.text("tenant_id").notNull(),
28
+ projectId: sqliteCore.text("project_id").notNull(),
29
+ id: sqliteCore.text("id").notNull(),
30
+ name: sqliteCore.text("name").notNull(),
31
+ description: sqliteCore.text("description").notNull(),
32
+ // Developer-defined Zod schema for validating incoming request context
33
+ requestContextSchema: sqliteCore.blob("request_context_schema", { mode: "json" }).$type(),
34
+ // Stores serialized Zod schema
35
+ // Object mapping template keys to fetch definitions that use request context data
36
+ contextVariables: sqliteCore.blob("context_variables", { mode: "json" }).$type(),
37
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
38
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
39
+ },
40
+ (table) => [sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] })]
41
+ );
42
+ var contextCache = sqliteCore.sqliteTable(
43
+ "context_cache",
44
+ {
45
+ tenantId: sqliteCore.text("tenant_id").notNull(),
46
+ projectId: sqliteCore.text("project_id").notNull(),
47
+ id: sqliteCore.text("id").notNull(),
48
+ // Always scoped to conversation for complete data isolation
49
+ conversationId: sqliteCore.text("conversation_id").notNull(),
50
+ // Reference to the context config and specific fetch definition
51
+ contextConfigId: sqliteCore.text("context_config_id").notNull(),
52
+ contextVariableKey: sqliteCore.text("context_variable_key").notNull(),
53
+ // Key from contextVariables object
54
+ // The actual cached context data
55
+ value: sqliteCore.blob("value", { mode: "json" }).$type().notNull(),
56
+ // Request hash for cache invalidation based on context changes
57
+ requestHash: sqliteCore.text("request_hash"),
58
+ // Hash of request context that triggered this cache
59
+ // Metadata for monitoring and debugging
60
+ fetchedAt: sqliteCore.text("fetched_at").notNull(),
61
+ fetchSource: sqliteCore.text("fetch_source"),
62
+ // URL or source identifier
63
+ fetchDurationMs: sqliteCore.integer("fetch_duration_ms"),
64
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
65
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
66
+ },
67
+ (table) => [
68
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
69
+ sqliteCore.index("context_cache_lookup_idx").on(
70
+ table.conversationId,
71
+ table.contextConfigId,
72
+ table.contextVariableKey
73
+ )
74
+ ]
75
+ );
76
+ var agents = sqliteCore.sqliteTable(
77
+ "agents",
78
+ {
79
+ tenantId: sqliteCore.text("tenant_id").notNull(),
80
+ projectId: sqliteCore.text("project_id").notNull(),
81
+ id: sqliteCore.text("id").notNull(),
82
+ name: sqliteCore.text("name").notNull(),
83
+ description: sqliteCore.text("description").notNull(),
84
+ prompt: sqliteCore.text("prompt").notNull(),
85
+ conversationHistoryConfig: sqliteCore.text("conversation_history_config", {
86
+ mode: "json"
87
+ }).$type(),
88
+ models: sqliteCore.text("models", { mode: "json" }).$type(),
89
+ // Agent-level stopWhen configuration (inherited from project)
90
+ stopWhen: sqliteCore.text("stop_when", { mode: "json" }).$type(),
91
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
92
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
93
+ },
94
+ (table) => [
95
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
96
+ sqliteCore.foreignKey({
97
+ columns: [table.tenantId, table.projectId],
98
+ foreignColumns: [projects.tenantId, projects.id],
99
+ name: "agents_project_fk"
100
+ })
101
+ ]
102
+ );
103
+ var agentRelations = sqliteCore.sqliteTable(
104
+ "agent_relations",
105
+ {
106
+ tenantId: sqliteCore.text("tenant_id").notNull(),
107
+ projectId: sqliteCore.text("project_id").notNull(),
108
+ id: sqliteCore.text("id").notNull(),
109
+ graphId: sqliteCore.text("graph_id").notNull(),
110
+ sourceAgentId: sqliteCore.text("source_agent_id").notNull(),
111
+ // For internal relationships
112
+ targetAgentId: sqliteCore.text("target_agent_id"),
113
+ // For external relationships
114
+ externalAgentId: sqliteCore.text("external_agent_id"),
115
+ relationType: sqliteCore.text("relation_type"),
116
+ // 'transfer' | 'delegate'
117
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
118
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
119
+ },
120
+ (table) => [
121
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
122
+ sqliteCore.foreignKey({
123
+ columns: [table.tenantId, table.projectId],
124
+ foreignColumns: [projects.tenantId, projects.id],
125
+ name: "agent_relations_project_fk"
126
+ })
127
+ ]
128
+ );
129
+ var externalAgents = sqliteCore.sqliteTable(
130
+ "external_agents",
131
+ {
132
+ tenantId: sqliteCore.text("tenant_id").notNull(),
133
+ projectId: sqliteCore.text("project_id").notNull(),
134
+ id: sqliteCore.text("id").notNull(),
135
+ name: sqliteCore.text("name").notNull(),
136
+ description: sqliteCore.text("description").notNull(),
137
+ baseUrl: sqliteCore.text("base_url").notNull(),
138
+ // A2A endpoint URL
139
+ credentialReferenceId: sqliteCore.text("credential_reference_id"),
140
+ headers: sqliteCore.blob("headers", { mode: "json" }).$type(),
141
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
142
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
143
+ },
144
+ (table) => [
145
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
146
+ sqliteCore.foreignKey({
147
+ columns: [table.tenantId, table.projectId, table.credentialReferenceId],
148
+ foreignColumns: [
149
+ credentialReferences.tenantId,
150
+ credentialReferences.projectId,
151
+ credentialReferences.id
152
+ ],
153
+ name: "external_agents_credential_reference_fk"
154
+ }).onDelete("set null")
155
+ ]
156
+ );
157
+ var agentGraph = sqliteCore.sqliteTable(
158
+ "agent_graph",
159
+ {
160
+ tenantId: sqliteCore.text("tenant_id").notNull(),
161
+ projectId: sqliteCore.text("project_id").notNull(),
162
+ id: sqliteCore.text("id").notNull(),
163
+ name: sqliteCore.text("name").notNull(),
164
+ description: sqliteCore.text("description"),
165
+ defaultAgentId: sqliteCore.text("default_agent_id").notNull(),
166
+ // Reference to shared context configuration for all agents in this graph
167
+ contextConfigId: sqliteCore.text("context_config_id"),
168
+ // Graph-level model settingsuration that can be inherited by agents
169
+ models: sqliteCore.text("models", { mode: "json" }).$type(),
170
+ // Status updates configuration for intelligent progress summaries
171
+ statusUpdates: sqliteCore.text("status_updates", { mode: "json" }).$type(),
172
+ // Graph-level prompt that can be used as additional context for agents
173
+ graphPrompt: sqliteCore.text("graph_prompt"),
174
+ // Graph-level stopWhen configuration that can be inherited by agents
175
+ stopWhen: sqliteCore.text("stop_when", { mode: "json" }).$type(),
176
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
177
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
178
+ },
179
+ (table) => [
180
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
181
+ sqliteCore.foreignKey({
182
+ columns: [table.tenantId, table.projectId],
183
+ foreignColumns: [projects.tenantId, projects.id],
184
+ name: "agent_graph_project_fk"
185
+ })
186
+ ]
187
+ );
188
+ var tasks = sqliteCore.sqliteTable(
189
+ "tasks",
190
+ {
191
+ tenantId: sqliteCore.text("tenant_id").notNull(),
192
+ projectId: sqliteCore.text("project_id").notNull(),
193
+ id: sqliteCore.text("id").notNull(),
194
+ contextId: sqliteCore.text("context_id").notNull(),
195
+ status: sqliteCore.text("status").notNull(),
196
+ metadata: sqliteCore.blob("metadata", { mode: "json" }).$type(),
197
+ agentId: sqliteCore.text("agent_id").notNull(),
198
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
199
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
200
+ },
201
+ (table) => [sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] })]
202
+ );
203
+ var taskRelations = sqliteCore.sqliteTable(
204
+ "task_relations",
205
+ {
206
+ tenantId: sqliteCore.text("tenant_id").notNull(),
207
+ projectId: sqliteCore.text("project_id").notNull(),
208
+ id: sqliteCore.text("id").notNull(),
209
+ parentTaskId: sqliteCore.text("parent_task_id").notNull(),
210
+ childTaskId: sqliteCore.text("child_task_id").notNull(),
211
+ relationType: sqliteCore.text("relation_type").default("parent_child"),
212
+ // Could be extended for other relation types
213
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
214
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
215
+ },
216
+ (table) => [sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] })]
217
+ );
218
+ var dataComponents = sqliteCore.sqliteTable(
219
+ "data_components",
220
+ {
221
+ tenantId: sqliteCore.text("tenant_id").notNull(),
222
+ projectId: sqliteCore.text("project_id").notNull(),
223
+ id: sqliteCore.text("id").notNull(),
224
+ name: sqliteCore.text("name").notNull(),
225
+ description: sqliteCore.text("description").notNull(),
226
+ props: sqliteCore.blob("props", { mode: "json" }).$type(),
227
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
228
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
229
+ },
230
+ (table) => [sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] })]
231
+ );
232
+ var agentDataComponents = sqliteCore.sqliteTable(
233
+ "agent_data_components",
234
+ {
235
+ tenantId: sqliteCore.text("tenant_id").notNull(),
236
+ projectId: sqliteCore.text("project_id").notNull(),
237
+ id: sqliteCore.text("id").notNull(),
238
+ agentId: sqliteCore.text("agent_id").notNull(),
239
+ dataComponentId: sqliteCore.text("data_component_id").notNull(),
240
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
241
+ },
242
+ (table) => [
243
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
244
+ // Foreign key constraint to agents table
245
+ sqliteCore.foreignKey({
246
+ columns: [table.tenantId, table.projectId, table.agentId],
247
+ foreignColumns: [agents.tenantId, agents.projectId, agents.id],
248
+ name: "agent_data_components_agent_fk"
249
+ }).onDelete("cascade"),
250
+ // Foreign key constraint to data_components table
251
+ sqliteCore.foreignKey({
252
+ columns: [table.tenantId, table.projectId, table.dataComponentId],
253
+ foreignColumns: [dataComponents.tenantId, dataComponents.projectId, dataComponents.id],
254
+ name: "agent_data_components_data_component_fk"
255
+ }).onDelete("cascade")
256
+ ]
257
+ );
258
+ var artifactComponents = sqliteCore.sqliteTable(
259
+ "artifact_components",
260
+ {
261
+ tenantId: sqliteCore.text("tenant_id").notNull(),
262
+ projectId: sqliteCore.text("project_id").notNull(),
263
+ id: sqliteCore.text("id").notNull(),
264
+ name: sqliteCore.text("name").notNull(),
265
+ description: sqliteCore.text("description").notNull(),
266
+ summaryProps: sqliteCore.blob("summary_props", { mode: "json" }).$type(),
267
+ fullProps: sqliteCore.blob("full_props", { mode: "json" }).$type(),
268
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
269
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
270
+ },
271
+ (table) => [sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] })]
272
+ );
273
+ var agentArtifactComponents = sqliteCore.sqliteTable(
274
+ "agent_artifact_components",
275
+ {
276
+ tenantId: sqliteCore.text("tenant_id").notNull(),
277
+ projectId: sqliteCore.text("project_id").notNull(),
278
+ id: sqliteCore.text("id").notNull(),
279
+ agentId: sqliteCore.text("agent_id").notNull(),
280
+ artifactComponentId: sqliteCore.text("artifact_component_id").notNull(),
281
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
282
+ },
283
+ (table) => [
284
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
285
+ // Foreign key constraint to agents table
286
+ sqliteCore.foreignKey({
287
+ columns: [table.tenantId, table.projectId, table.agentId],
288
+ foreignColumns: [agents.tenantId, agents.projectId, agents.id],
289
+ name: "agent_artifact_components_agent_fk"
290
+ }).onDelete("cascade"),
291
+ // Foreign key constraint to artifact_components table
292
+ sqliteCore.foreignKey({
293
+ columns: [table.tenantId, table.projectId, table.artifactComponentId],
294
+ foreignColumns: [
295
+ artifactComponents.tenantId,
296
+ artifactComponents.projectId,
297
+ artifactComponents.id
298
+ ],
299
+ name: "agent_artifact_components_artifact_component_fk"
300
+ }).onDelete("cascade")
301
+ ]
302
+ );
303
+ var tools = sqliteCore.sqliteTable(
304
+ "tools",
305
+ {
306
+ tenantId: sqliteCore.text("tenant_id").notNull(),
307
+ projectId: sqliteCore.text("project_id").notNull(),
308
+ id: sqliteCore.text("id").notNull(),
309
+ name: sqliteCore.text("name").notNull(),
310
+ // Enhanced MCP configuration
311
+ config: sqliteCore.blob("config", { mode: "json" }).$type().notNull(),
312
+ credentialReferenceId: sqliteCore.text("credential_reference_id"),
313
+ headers: sqliteCore.blob("headers", { mode: "json" }).$type(),
314
+ // Image URL for custom tool icon (supports regular URLs and base64 encoded images)
315
+ imageUrl: sqliteCore.text("image_url"),
316
+ // Server capabilities and status
317
+ capabilities: sqliteCore.blob("capabilities", { mode: "json" }).$type(),
318
+ // Connection health and monitoring
319
+ status: sqliteCore.text("status").notNull().default("unknown"),
320
+ lastHealthCheck: sqliteCore.text("last_health_check"),
321
+ lastError: sqliteCore.text("last_error"),
322
+ // Tool discovery cache
323
+ availableTools: sqliteCore.blob("available_tools", { mode: "json" }).$type(),
324
+ lastToolsSync: sqliteCore.text("last_tools_sync"),
325
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
326
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
327
+ },
328
+ (table) => [sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] })]
329
+ );
330
+ var agentToolRelations = sqliteCore.sqliteTable(
331
+ "agent_tool_relations",
332
+ {
333
+ tenantId: sqliteCore.text("tenant_id").notNull(),
334
+ projectId: sqliteCore.text("project_id").notNull(),
335
+ id: sqliteCore.text("id").notNull(),
336
+ agentId: sqliteCore.text("agent_id").notNull(),
337
+ toolId: sqliteCore.text("tool_id").notNull(),
338
+ selectedTools: sqliteCore.blob("selected_tools", { mode: "json" }).$type(),
339
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
340
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
341
+ },
342
+ (table) => [
343
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
344
+ // Foreign key constraint to agents table
345
+ sqliteCore.foreignKey({
346
+ columns: [table.tenantId, table.projectId, table.agentId],
347
+ foreignColumns: [agents.tenantId, agents.projectId, agents.id],
348
+ name: "agent_tool_relations_agent_fk"
349
+ }).onDelete("cascade"),
350
+ // Foreign key constraint to tools table
351
+ sqliteCore.foreignKey({
352
+ columns: [table.tenantId, table.projectId, table.toolId],
353
+ foreignColumns: [tools.tenantId, tools.projectId, tools.id],
354
+ name: "agent_tool_relations_tool_fk"
355
+ }).onDelete("cascade")
356
+ ]
357
+ );
358
+ var conversations = sqliteCore.sqliteTable(
359
+ "conversations",
360
+ {
361
+ tenantId: sqliteCore.text("tenant_id").notNull(),
362
+ projectId: sqliteCore.text("project_id").notNull(),
363
+ id: sqliteCore.text("id").notNull(),
364
+ userId: sqliteCore.text("user_id"),
365
+ activeAgentId: sqliteCore.text("active_agent_id").notNull(),
366
+ title: sqliteCore.text("title"),
367
+ lastContextResolution: sqliteCore.text("last_context_resolution"),
368
+ metadata: sqliteCore.blob("metadata", { mode: "json" }).$type(),
369
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
370
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
371
+ },
372
+ (table) => [sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] })]
373
+ );
374
+ var messages = sqliteCore.sqliteTable(
375
+ "messages",
376
+ {
377
+ tenantId: sqliteCore.text("tenant_id").notNull(),
378
+ projectId: sqliteCore.text("project_id").notNull(),
379
+ id: sqliteCore.text("id").notNull(),
380
+ conversationId: sqliteCore.text("conversation_id").notNull(),
381
+ // Role mapping: user, agent, system (unified for both formats)
382
+ role: sqliteCore.text("role").notNull(),
383
+ // 'user' | 'agent' | 'system'
384
+ // Agent sender/recipient tracking (nullable - only populated when relevant)
385
+ fromAgentId: sqliteCore.text("from_agent_id"),
386
+ // Populated when message is from an agent
387
+ toAgentId: sqliteCore.text("to_agent_id"),
388
+ // Populated when message is directed to a specific agent (e.g., transfers/delegations)
389
+ // External agent sender tracking
390
+ fromExternalAgentId: sqliteCore.text("from_external_agent_id"),
391
+ // Populated when message is directed from an external agent
392
+ // External agent recipient tracking
393
+ toExternalAgentId: sqliteCore.text("to_external_agent_id"),
394
+ // Populated when message is directed to an external agent
395
+ // Message content stored as JSON to support both formats
396
+ content: sqliteCore.blob("content", { mode: "json" }).$type().notNull(),
397
+ // Message classification and filtering
398
+ visibility: sqliteCore.text("visibility").notNull().default("user-facing"),
399
+ // 'user-facing' | 'internal' | 'system' | 'external'
400
+ messageType: sqliteCore.text("message_type").notNull().default("chat"),
401
+ // 'chat' | 'a2a-request' | 'a2a-response' | 'task-update' | 'tool-call'
402
+ // Legacy agent association (consider deprecating in favor of fromAgentId/toAgentId)
403
+ agentId: sqliteCore.text("agent_id"),
404
+ taskId: sqliteCore.text("task_id"),
405
+ parentMessageId: sqliteCore.text("parent_message_id"),
406
+ // Remove self-reference constraint here
407
+ // A2A specific fields
408
+ a2aTaskId: sqliteCore.text("a2a_task_id"),
409
+ // Links to A2A task when relevant
410
+ a2aSessionId: sqliteCore.text("a2a_session_id"),
411
+ // A2A session identifier
412
+ // Metadata for extensions
413
+ metadata: sqliteCore.blob("metadata", { mode: "json" }).$type(),
414
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
415
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
416
+ },
417
+ (table) => [sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] })]
418
+ );
419
+ var ledgerArtifacts = sqliteCore.sqliteTable(
420
+ "ledger_artifacts",
421
+ {
422
+ // Primary identifier (maps to `artifactId`)
423
+ tenantId: sqliteCore.text("tenant_id").notNull(),
424
+ projectId: sqliteCore.text("project_id").notNull(),
425
+ id: sqliteCore.text("id").notNull(),
426
+ // Links
427
+ taskId: sqliteCore.text("task_id"),
428
+ contextId: sqliteCore.text("context_id").notNull(),
429
+ // Core Artifact fields
430
+ type: sqliteCore.text("type").notNull().default("source"),
431
+ name: sqliteCore.text("name"),
432
+ description: sqliteCore.text("description"),
433
+ parts: sqliteCore.blob("parts", { mode: "json" }).$type(),
434
+ metadata: sqliteCore.blob("metadata", { mode: "json" }).$type(),
435
+ // Extra ledger information (not part of the Artifact spec – kept optional)
436
+ summary: sqliteCore.text("summary"),
437
+ mime: sqliteCore.blob("mime", { mode: "json" }).$type(),
438
+ visibility: sqliteCore.text("visibility").default("context"),
439
+ allowedAgents: sqliteCore.blob("allowed_agents", { mode: "json" }).$type(),
440
+ derivedFrom: sqliteCore.text("derived_from"),
441
+ // Timestamps
442
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
443
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
444
+ },
445
+ (table) => [sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] })]
446
+ );
447
+ var apiKeys = sqliteCore.sqliteTable(
448
+ "api_keys",
449
+ {
450
+ id: sqliteCore.text("id").primaryKey(),
451
+ tenantId: sqliteCore.text("tenant_id").notNull(),
452
+ projectId: sqliteCore.text("project_id").notNull(),
453
+ graphId: sqliteCore.text("graph_id").notNull(),
454
+ publicId: sqliteCore.text("public_id").notNull().unique(),
455
+ // Public ID for O(1) lookup (e.g., "abc123def456")
456
+ keyHash: sqliteCore.text("key_hash").notNull(),
457
+ // Hashed API key (never store plaintext)
458
+ keyPrefix: sqliteCore.text("key_prefix").notNull(),
459
+ // First 8 chars for identification (e.g., "sk_live_abc...")
460
+ lastUsedAt: sqliteCore.text("last_used_at"),
461
+ expiresAt: sqliteCore.text("expires_at"),
462
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
463
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
464
+ },
465
+ (t) => [
466
+ sqliteCore.foreignKey({
467
+ columns: [t.tenantId, t.projectId, t.graphId],
468
+ foreignColumns: [agentGraph.tenantId, agentGraph.projectId, agentGraph.id],
469
+ name: "api_keys_graph_fk"
470
+ }).onDelete("cascade"),
471
+ sqliteCore.index("api_keys_tenant_graph_idx").on(t.tenantId, t.graphId),
472
+ sqliteCore.index("api_keys_prefix_idx").on(t.keyPrefix),
473
+ sqliteCore.index("api_keys_public_id_idx").on(t.publicId)
474
+ ]
475
+ );
476
+ var credentialReferences = sqliteCore.sqliteTable(
477
+ "credential_references",
478
+ {
479
+ tenantId: sqliteCore.text("tenant_id").notNull(),
480
+ projectId: sqliteCore.text("project_id").notNull(),
481
+ id: sqliteCore.text("id").notNull(),
482
+ type: sqliteCore.text("type").notNull(),
483
+ // Implementation type: 'keychain', 'nango', 'memory', etc.
484
+ credentialStoreId: sqliteCore.text("credential_store_id").notNull(),
485
+ // Maps to framework.getCredentialStore(id)
486
+ retrievalParams: sqliteCore.blob("retrieval_params", { mode: "json" }).$type(),
487
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
488
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
489
+ },
490
+ (t) => [sqliteCore.primaryKey({ columns: [t.tenantId, t.projectId, t.id] })]
491
+ );
492
+ var ledgerArtifactsTaskIdIdx = sqliteCore.index("ledger_artifacts_task_id_idx").on(
493
+ ledgerArtifacts.taskId
494
+ );
495
+ var ledgerArtifactsContextIdIdx = sqliteCore.index("ledger_artifacts_context_id_idx").on(
496
+ ledgerArtifacts.contextId
497
+ );
498
+ var ledgerArtifactsTaskContextNameUnique = sqliteCore.unique(
499
+ "ledger_artifacts_task_context_name_unique"
500
+ ).on(ledgerArtifacts.taskId, ledgerArtifacts.contextId, ledgerArtifacts.name);
501
+ var tasksRelations = drizzleOrm.relations(tasks, ({ one, many }) => ({
502
+ // A task belongs to one project
503
+ project: one(projects, {
504
+ fields: [tasks.tenantId, tasks.projectId],
505
+ references: [projects.tenantId, projects.id]
506
+ }),
507
+ // A task can have many parent relationships (where it's the child)
508
+ parentRelations: many(taskRelations, {
509
+ relationName: "childTask"
510
+ }),
511
+ // A task can have many child relationships (where it's the parent)
512
+ childRelations: many(taskRelations, {
513
+ relationName: "parentTask"
514
+ }),
515
+ // A task belongs to one agent
516
+ agent: one(agents, {
517
+ fields: [tasks.agentId],
518
+ references: [agents.id]
519
+ }),
520
+ // A task can have many messages associated with it
521
+ messages: many(messages)
522
+ }));
523
+ var projectsRelations = drizzleOrm.relations(projects, ({ many }) => ({
524
+ // A project can have many agents
525
+ agents: many(agents),
526
+ // A project can have many agent graphs
527
+ agentGraphs: many(agentGraph),
528
+ // A project can have many tools
529
+ tools: many(tools),
530
+ // A project can have many context configs
531
+ contextConfigs: many(contextConfigs),
532
+ // A project can have many external agents
533
+ externalAgents: many(externalAgents),
534
+ // A project can have many conversations
535
+ conversations: many(conversations),
536
+ // A project can have many tasks
537
+ tasks: many(tasks)
538
+ }));
539
+ var taskRelationsRelations = drizzleOrm.relations(taskRelations, ({ one }) => ({
540
+ // Each relation has one parent task
541
+ parentTask: one(tasks, {
542
+ fields: [taskRelations.parentTaskId],
543
+ references: [tasks.id],
544
+ relationName: "parentTask"
545
+ }),
546
+ // Each relation has one child task
547
+ childTask: one(tasks, {
548
+ fields: [taskRelations.childTaskId],
549
+ references: [tasks.id],
550
+ relationName: "childTask"
551
+ })
552
+ }));
553
+ var contextConfigsRelations = drizzleOrm.relations(contextConfigs, ({ many, one }) => ({
554
+ // A context config belongs to one project
555
+ project: one(projects, {
556
+ fields: [contextConfigs.tenantId, contextConfigs.projectId],
557
+ references: [projects.tenantId, projects.id]
558
+ }),
559
+ // A context config can be used by many agent graphs
560
+ graphs: many(agentGraph),
561
+ // A context config can have many cached entries
562
+ cache: many(contextCache)
563
+ }));
564
+ var contextCacheRelations = drizzleOrm.relations(contextCache, ({ one }) => ({
565
+ // Each cache entry belongs to one context config
566
+ contextConfig: one(contextConfigs, {
567
+ fields: [contextCache.contextConfigId],
568
+ references: [contextConfigs.id]
569
+ })
570
+ }));
571
+ var agentsRelations = drizzleOrm.relations(agents, ({ many, one }) => ({
572
+ // A context config belongs to one project
573
+ project: one(projects, {
574
+ fields: [agents.tenantId, agents.projectId],
575
+ references: [projects.tenantId, projects.id]
576
+ }),
577
+ // An agent can have many tasks
578
+ tasks: many(tasks),
579
+ // An agent can be the default agent for many graphs
580
+ defaultForGraphs: many(agentGraph),
581
+ // Agent relation tracking
582
+ sourceRelations: many(agentRelations, {
583
+ relationName: "sourceRelations"
584
+ }),
585
+ targetRelations: many(agentRelations, {
586
+ relationName: "targetRelations"
587
+ }),
588
+ // Message tracking relations
589
+ sentMessages: many(messages, {
590
+ relationName: "sentMessages"
591
+ }),
592
+ receivedMessages: many(messages, {
593
+ relationName: "receivedMessages"
594
+ }),
595
+ // Legacy message association (consider deprecating)
596
+ associatedMessages: many(messages, {
597
+ relationName: "associatedAgent"
598
+ }),
599
+ toolRelations: many(agentToolRelations)
600
+ }));
601
+ var agentGraphRelations = drizzleOrm.relations(agentGraph, ({ one }) => ({
602
+ // An agent graph belongs to one project
603
+ project: one(projects, {
604
+ fields: [agentGraph.tenantId, agentGraph.projectId],
605
+ references: [projects.tenantId, projects.id]
606
+ }),
607
+ // An agent graph belongs to one default agent
608
+ defaultAgent: one(agents, {
609
+ fields: [agentGraph.defaultAgentId],
610
+ references: [agents.id]
611
+ }),
612
+ // An agent graph can reference one context config
613
+ contextConfig: one(contextConfigs, {
614
+ fields: [agentGraph.contextConfigId],
615
+ references: [contextConfigs.id]
616
+ })
617
+ }));
618
+ var externalAgentsRelations = drizzleOrm.relations(externalAgents, ({ one, many }) => ({
619
+ // An external agent belongs to one project
620
+ project: one(projects, {
621
+ fields: [externalAgents.tenantId, externalAgents.projectId],
622
+ references: [projects.tenantId, projects.id]
623
+ }),
624
+ // An external agent can be referenced by many agent relations
625
+ agentRelations: many(agentRelations),
626
+ // An external agent may have one credential reference
627
+ credentialReference: one(credentialReferences, {
628
+ fields: [externalAgents.credentialReferenceId],
629
+ references: [credentialReferences.id]
630
+ })
631
+ }));
632
+ var apiKeysRelations = drizzleOrm.relations(apiKeys, ({ one }) => ({
633
+ // An API key belongs to one project
634
+ project: one(projects, {
635
+ fields: [apiKeys.tenantId, apiKeys.projectId],
636
+ references: [projects.tenantId, projects.id]
637
+ }),
638
+ // An API key belongs to one tenant and graph
639
+ graph: one(agentGraph, {
640
+ fields: [apiKeys.graphId],
641
+ references: [agentGraph.id]
642
+ })
643
+ }));
644
+ var agentToolRelationsRelations = drizzleOrm.relations(agentToolRelations, ({ one }) => ({
645
+ // An agent-tool relation belongs to one agent
646
+ agent: one(agents, {
647
+ fields: [agentToolRelations.agentId],
648
+ references: [agents.id]
649
+ }),
650
+ // An agent-tool relation belongs to one tool
651
+ tool: one(tools, {
652
+ fields: [agentToolRelations.toolId],
653
+ references: [tools.id]
654
+ })
655
+ }));
656
+ var credentialReferencesRelations = drizzleOrm.relations(credentialReferences, ({ many }) => ({
657
+ tools: many(tools)
658
+ }));
659
+ var toolsRelations = drizzleOrm.relations(tools, ({ one, many }) => ({
660
+ // A tool belongs to one project
661
+ project: one(projects, {
662
+ fields: [tools.tenantId, tools.projectId],
663
+ references: [projects.tenantId, projects.id]
664
+ }),
665
+ // A tool can be used by many agents through agent-tool relations
666
+ agentRelations: many(agentToolRelations),
667
+ // A tool may have one credential reference
668
+ credentialReference: one(credentialReferences, {
669
+ fields: [tools.credentialReferenceId],
670
+ references: [credentialReferences.id]
671
+ })
672
+ }));
673
+ var conversationsRelations = drizzleOrm.relations(conversations, ({ one, many }) => ({
674
+ // A conversation belongs to one project
675
+ project: one(projects, {
676
+ fields: [conversations.tenantId, conversations.projectId],
677
+ references: [projects.tenantId, projects.id]
678
+ }),
679
+ // A conversation has many messages
680
+ messages: many(messages),
681
+ // A conversation has one active agent
682
+ activeAgent: one(agents, {
683
+ fields: [conversations.activeAgentId],
684
+ references: [agents.id]
685
+ })
686
+ }));
687
+ var messagesRelations = drizzleOrm.relations(messages, ({ one, many }) => ({
688
+ // A message belongs to one conversation
689
+ conversation: one(conversations, {
690
+ fields: [messages.conversationId],
691
+ references: [conversations.id]
692
+ }),
693
+ // Legacy agent association (consider deprecating)
694
+ agent: one(agents, {
695
+ fields: [messages.agentId],
696
+ references: [agents.id],
697
+ relationName: "associatedAgent"
698
+ }),
699
+ // Sender tracking relations
700
+ fromAgent: one(agents, {
701
+ fields: [messages.fromAgentId],
702
+ references: [agents.id],
703
+ relationName: "sentMessages"
704
+ }),
705
+ // Recipient tracking relations
706
+ toAgent: one(agents, {
707
+ fields: [messages.toAgentId],
708
+ references: [agents.id],
709
+ relationName: "receivedMessages"
710
+ }),
711
+ // External agent sender tracking relations
712
+ fromExternalAgent: one(externalAgents, {
713
+ fields: [messages.fromExternalAgentId],
714
+ references: [externalAgents.id],
715
+ relationName: "receivedExternalMessages"
716
+ }),
717
+ // External agent recipient tracking relations
718
+ toExternalAgent: one(externalAgents, {
719
+ fields: [messages.toExternalAgentId],
720
+ references: [externalAgents.id],
721
+ relationName: "sentExternalMessages"
722
+ }),
723
+ // A message may be associated with a task
724
+ task: one(tasks, {
725
+ fields: [messages.taskId],
726
+ references: [tasks.id]
727
+ }),
728
+ // A message may have a parent message (for threading)
729
+ parentMessage: one(messages, {
730
+ fields: [messages.parentMessageId],
731
+ references: [messages.id],
732
+ relationName: "parentChild"
733
+ }),
734
+ // A message may have child messages
735
+ childMessages: many(messages, {
736
+ relationName: "parentChild"
737
+ })
738
+ }));
739
+ var artifactComponentsRelations = drizzleOrm.relations(artifactComponents, ({ many }) => ({
740
+ // An artifact component can be associated with many agents
741
+ agentRelations: many(agentArtifactComponents)
742
+ }));
743
+ var agentArtifactComponentsRelations = drizzleOrm.relations(agentArtifactComponents, ({ one }) => ({
744
+ // An agent-artifact component relation belongs to one agent
745
+ agent: one(agents, {
746
+ fields: [agentArtifactComponents.agentId],
747
+ references: [agents.id]
748
+ }),
749
+ // An agent-artifact component relation belongs to one artifact component
750
+ artifactComponent: one(artifactComponents, {
751
+ fields: [agentArtifactComponents.artifactComponentId],
752
+ references: [artifactComponents.id]
753
+ })
754
+ }));
755
+ var agentRelationsRelations = drizzleOrm.relations(agentRelations, ({ one }) => ({
756
+ // An agent relation belongs to one graph
757
+ graph: one(agentGraph, {
758
+ fields: [agentRelations.graphId],
759
+ references: [agentGraph.id]
760
+ }),
761
+ // An agent relation has one source agent
762
+ sourceAgent: one(agents, {
763
+ fields: [agentRelations.sourceAgentId],
764
+ references: [agents.id],
765
+ relationName: "sourceRelations"
766
+ }),
767
+ // An agent relation may have one target agent (for internal relations)
768
+ targetAgent: one(agents, {
769
+ fields: [agentRelations.targetAgentId],
770
+ references: [agents.id],
771
+ relationName: "targetRelations"
772
+ }),
773
+ // An agent relation may have one external agent (for external relations)
774
+ externalAgent: one(externalAgents, {
775
+ fields: [agentRelations.externalAgentId],
776
+ references: [externalAgents.id]
777
+ })
778
+ }));
779
+
780
+ exports.agentArtifactComponents = agentArtifactComponents;
781
+ exports.agentArtifactComponentsRelations = agentArtifactComponentsRelations;
782
+ exports.agentDataComponents = agentDataComponents;
783
+ exports.agentGraph = agentGraph;
784
+ exports.agentGraphRelations = agentGraphRelations;
785
+ exports.agentRelations = agentRelations;
786
+ exports.agentRelationsRelations = agentRelationsRelations;
787
+ exports.agentToolRelations = agentToolRelations;
788
+ exports.agentToolRelationsRelations = agentToolRelationsRelations;
789
+ exports.agents = agents;
790
+ exports.agentsRelations = agentsRelations;
791
+ exports.apiKeys = apiKeys;
792
+ exports.apiKeysRelations = apiKeysRelations;
793
+ exports.artifactComponents = artifactComponents;
794
+ exports.artifactComponentsRelations = artifactComponentsRelations;
795
+ exports.contextCache = contextCache;
796
+ exports.contextCacheRelations = contextCacheRelations;
797
+ exports.contextConfigs = contextConfigs;
798
+ exports.contextConfigsRelations = contextConfigsRelations;
799
+ exports.conversations = conversations;
800
+ exports.conversationsRelations = conversationsRelations;
801
+ exports.credentialReferences = credentialReferences;
802
+ exports.credentialReferencesRelations = credentialReferencesRelations;
803
+ exports.dataComponents = dataComponents;
804
+ exports.externalAgents = externalAgents;
805
+ exports.externalAgentsRelations = externalAgentsRelations;
806
+ exports.ledgerArtifacts = ledgerArtifacts;
807
+ exports.ledgerArtifactsContextIdIdx = ledgerArtifactsContextIdIdx;
808
+ exports.ledgerArtifactsTaskContextNameUnique = ledgerArtifactsTaskContextNameUnique;
809
+ exports.ledgerArtifactsTaskIdIdx = ledgerArtifactsTaskIdIdx;
810
+ exports.messages = messages;
811
+ exports.messagesRelations = messagesRelations;
812
+ exports.projects = projects;
813
+ exports.projectsRelations = projectsRelations;
814
+ exports.taskRelations = taskRelations;
815
+ exports.taskRelationsRelations = taskRelationsRelations;
816
+ exports.tasks = tasks;
817
+ exports.tasksRelations = tasksRelations;
818
+ exports.tools = tools;
819
+ exports.toolsRelations = toolsRelations;