@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
@@ -0,0 +1,1702 @@
1
+ 'use strict';
2
+
3
+ var zod = require('zod');
4
+ var zodOpenapi = require('@hono/zod-openapi');
5
+ var drizzleZod = require('drizzle-zod');
6
+ var drizzleOrm = require('drizzle-orm');
7
+ var sqliteCore = require('drizzle-orm/sqlite-core');
8
+
9
+ // src/client-exports.ts
10
+
11
+ // src/types/utility.ts
12
+ var TOOL_STATUS_VALUES = [
13
+ "healthy",
14
+ "unhealthy",
15
+ "unknown",
16
+ "disabled",
17
+ "needs_auth"
18
+ ];
19
+ var VALID_RELATION_TYPES = ["transfer", "delegate"];
20
+ var MCPTransportType = {
21
+ streamableHttp: "streamable_http",
22
+ sse: "sse"
23
+ };
24
+ var MCPServerType = {
25
+ nango: "nango",
26
+ generic: "generic"
27
+ };
28
+ var CredentialStoreType = {
29
+ memory: "memory",
30
+ keychain: "keychain",
31
+ nango: "nango"
32
+ };
33
+ var projects = sqliteCore.sqliteTable(
34
+ "projects",
35
+ {
36
+ tenantId: sqliteCore.text("tenant_id").notNull(),
37
+ id: sqliteCore.text("id").notNull(),
38
+ // This IS the project ID
39
+ name: sqliteCore.text("name").notNull(),
40
+ description: sqliteCore.text("description").notNull(),
41
+ // Project-level default model settings that can be inherited by graphs and agents
42
+ models: sqliteCore.text("models", { mode: "json" }).$type(),
43
+ // Project-level stopWhen configuration that can be inherited by graphs and agents
44
+ stopWhen: sqliteCore.text("stop_when", { mode: "json" }).$type(),
45
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
46
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
47
+ },
48
+ (table) => [sqliteCore.primaryKey({ columns: [table.tenantId, table.id] })]
49
+ );
50
+ var contextConfigs = sqliteCore.sqliteTable(
51
+ "context_configs",
52
+ {
53
+ tenantId: sqliteCore.text("tenant_id").notNull(),
54
+ projectId: sqliteCore.text("project_id").notNull(),
55
+ id: sqliteCore.text("id").notNull(),
56
+ name: sqliteCore.text("name").notNull(),
57
+ description: sqliteCore.text("description").notNull(),
58
+ // Developer-defined Zod schema for validating incoming request context
59
+ requestContextSchema: sqliteCore.blob("request_context_schema", { mode: "json" }).$type(),
60
+ // Stores serialized Zod schema
61
+ // Object mapping template keys to fetch definitions that use request context data
62
+ contextVariables: sqliteCore.blob("context_variables", { mode: "json" }).$type(),
63
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
64
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
65
+ },
66
+ (table) => [
67
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
68
+ sqliteCore.foreignKey({
69
+ columns: [table.tenantId, table.projectId],
70
+ foreignColumns: [projects.tenantId, projects.id],
71
+ name: "context_configs_project_fk"
72
+ }).onDelete("cascade")
73
+ ]
74
+ );
75
+ var contextCache = sqliteCore.sqliteTable(
76
+ "context_cache",
77
+ {
78
+ tenantId: sqliteCore.text("tenant_id").notNull(),
79
+ projectId: sqliteCore.text("project_id").notNull(),
80
+ id: sqliteCore.text("id").notNull(),
81
+ // Always scoped to conversation for complete data isolation
82
+ conversationId: sqliteCore.text("conversation_id").notNull(),
83
+ // Reference to the context config and specific fetch definition
84
+ contextConfigId: sqliteCore.text("context_config_id").notNull(),
85
+ contextVariableKey: sqliteCore.text("context_variable_key").notNull(),
86
+ // Key from contextVariables object
87
+ // The actual cached context data
88
+ value: sqliteCore.blob("value", { mode: "json" }).$type().notNull(),
89
+ // Request hash for cache invalidation based on context changes
90
+ requestHash: sqliteCore.text("request_hash"),
91
+ // Hash of request context that triggered this cache
92
+ // Metadata for monitoring and debugging
93
+ fetchedAt: sqliteCore.text("fetched_at").notNull(),
94
+ fetchSource: sqliteCore.text("fetch_source"),
95
+ // URL or source identifier
96
+ fetchDurationMs: sqliteCore.integer("fetch_duration_ms"),
97
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
98
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
99
+ },
100
+ (table) => [
101
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
102
+ sqliteCore.foreignKey({
103
+ columns: [table.tenantId, table.projectId],
104
+ foreignColumns: [projects.tenantId, projects.id],
105
+ name: "context_cache_project_fk"
106
+ }).onDelete("cascade"),
107
+ sqliteCore.index("context_cache_lookup_idx").on(
108
+ table.conversationId,
109
+ table.contextConfigId,
110
+ table.contextVariableKey
111
+ )
112
+ ]
113
+ );
114
+ var agents = sqliteCore.sqliteTable(
115
+ "agents",
116
+ {
117
+ tenantId: sqliteCore.text("tenant_id").notNull(),
118
+ projectId: sqliteCore.text("project_id").notNull(),
119
+ id: sqliteCore.text("id").notNull(),
120
+ name: sqliteCore.text("name").notNull(),
121
+ description: sqliteCore.text("description").notNull(),
122
+ prompt: sqliteCore.text("prompt").notNull(),
123
+ conversationHistoryConfig: sqliteCore.text("conversation_history_config", {
124
+ mode: "json"
125
+ }).$type(),
126
+ models: sqliteCore.text("models", { mode: "json" }).$type(),
127
+ // Agent-level stopWhen configuration (inherited from project)
128
+ stopWhen: sqliteCore.text("stop_when", { mode: "json" }).$type(),
129
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
130
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
131
+ },
132
+ (table) => [
133
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
134
+ sqliteCore.foreignKey({
135
+ columns: [table.tenantId, table.projectId],
136
+ foreignColumns: [projects.tenantId, projects.id],
137
+ name: "agents_project_fk"
138
+ }).onDelete("cascade")
139
+ ]
140
+ );
141
+ var agentRelations = sqliteCore.sqliteTable(
142
+ "agent_relations",
143
+ {
144
+ tenantId: sqliteCore.text("tenant_id").notNull(),
145
+ projectId: sqliteCore.text("project_id").notNull(),
146
+ id: sqliteCore.text("id").notNull(),
147
+ graphId: sqliteCore.text("graph_id").notNull(),
148
+ sourceAgentId: sqliteCore.text("source_agent_id").notNull(),
149
+ // For internal relationships
150
+ targetAgentId: sqliteCore.text("target_agent_id"),
151
+ // For external relationships
152
+ externalAgentId: sqliteCore.text("external_agent_id"),
153
+ relationType: sqliteCore.text("relation_type"),
154
+ // 'transfer' | 'delegate'
155
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
156
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
157
+ },
158
+ (table) => [
159
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
160
+ sqliteCore.foreignKey({
161
+ columns: [table.tenantId, table.projectId],
162
+ foreignColumns: [projects.tenantId, projects.id],
163
+ name: "agent_relations_project_fk"
164
+ }).onDelete("cascade")
165
+ ]
166
+ );
167
+ var externalAgents = sqliteCore.sqliteTable(
168
+ "external_agents",
169
+ {
170
+ tenantId: sqliteCore.text("tenant_id").notNull(),
171
+ projectId: sqliteCore.text("project_id").notNull(),
172
+ id: sqliteCore.text("id").notNull(),
173
+ name: sqliteCore.text("name").notNull(),
174
+ description: sqliteCore.text("description").notNull(),
175
+ baseUrl: sqliteCore.text("base_url").notNull(),
176
+ // A2A endpoint URL
177
+ credentialReferenceId: sqliteCore.text("credential_reference_id"),
178
+ headers: sqliteCore.blob("headers", { mode: "json" }).$type(),
179
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
180
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
181
+ },
182
+ (table) => [
183
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
184
+ sqliteCore.foreignKey({
185
+ columns: [table.tenantId, table.projectId],
186
+ foreignColumns: [projects.tenantId, projects.id],
187
+ name: "external_agents_project_fk"
188
+ }).onDelete("cascade"),
189
+ sqliteCore.foreignKey({
190
+ columns: [table.tenantId, table.projectId, table.credentialReferenceId],
191
+ foreignColumns: [
192
+ credentialReferences.tenantId,
193
+ credentialReferences.projectId,
194
+ credentialReferences.id
195
+ ],
196
+ name: "external_agents_credential_reference_fk"
197
+ }).onDelete("set null")
198
+ ]
199
+ );
200
+ var agentGraph = sqliteCore.sqliteTable(
201
+ "agent_graph",
202
+ {
203
+ tenantId: sqliteCore.text("tenant_id").notNull(),
204
+ projectId: sqliteCore.text("project_id").notNull(),
205
+ id: sqliteCore.text("id").notNull(),
206
+ name: sqliteCore.text("name").notNull(),
207
+ description: sqliteCore.text("description"),
208
+ defaultAgentId: sqliteCore.text("default_agent_id").notNull(),
209
+ // Reference to shared context configuration for all agents in this graph
210
+ contextConfigId: sqliteCore.text("context_config_id"),
211
+ // Graph-level model settingsuration that can be inherited by agents
212
+ models: sqliteCore.text("models", { mode: "json" }).$type(),
213
+ // Status updates configuration for intelligent progress summaries
214
+ statusUpdates: sqliteCore.text("status_updates", { mode: "json" }).$type(),
215
+ // Graph-level prompt that can be used as additional context for agents
216
+ graphPrompt: sqliteCore.text("graph_prompt"),
217
+ // Graph-level stopWhen configuration that can be inherited by agents
218
+ stopWhen: sqliteCore.text("stop_when", { mode: "json" }).$type(),
219
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
220
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
221
+ },
222
+ (table) => [
223
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
224
+ sqliteCore.foreignKey({
225
+ columns: [table.tenantId, table.projectId],
226
+ foreignColumns: [projects.tenantId, projects.id],
227
+ name: "agent_graph_project_fk"
228
+ }).onDelete("cascade")
229
+ ]
230
+ );
231
+ var tasks = sqliteCore.sqliteTable(
232
+ "tasks",
233
+ {
234
+ tenantId: sqliteCore.text("tenant_id").notNull(),
235
+ projectId: sqliteCore.text("project_id").notNull(),
236
+ id: sqliteCore.text("id").notNull(),
237
+ contextId: sqliteCore.text("context_id").notNull(),
238
+ status: sqliteCore.text("status").notNull(),
239
+ metadata: sqliteCore.blob("metadata", { mode: "json" }).$type(),
240
+ agentId: sqliteCore.text("agent_id").notNull(),
241
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
242
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
243
+ },
244
+ (table) => [
245
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
246
+ sqliteCore.foreignKey({
247
+ columns: [table.tenantId, table.projectId],
248
+ foreignColumns: [projects.tenantId, projects.id],
249
+ name: "tasks_project_fk"
250
+ }).onDelete("cascade")
251
+ ]
252
+ );
253
+ var taskRelations = sqliteCore.sqliteTable(
254
+ "task_relations",
255
+ {
256
+ tenantId: sqliteCore.text("tenant_id").notNull(),
257
+ projectId: sqliteCore.text("project_id").notNull(),
258
+ id: sqliteCore.text("id").notNull(),
259
+ parentTaskId: sqliteCore.text("parent_task_id").notNull(),
260
+ childTaskId: sqliteCore.text("child_task_id").notNull(),
261
+ relationType: sqliteCore.text("relation_type").default("parent_child"),
262
+ // Could be extended for other relation types
263
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
264
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
265
+ },
266
+ (table) => [
267
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
268
+ sqliteCore.foreignKey({
269
+ columns: [table.tenantId, table.projectId],
270
+ foreignColumns: [projects.tenantId, projects.id],
271
+ name: "task_relations_project_fk"
272
+ }).onDelete("cascade")
273
+ ]
274
+ );
275
+ var dataComponents = sqliteCore.sqliteTable(
276
+ "data_components",
277
+ {
278
+ tenantId: sqliteCore.text("tenant_id").notNull(),
279
+ projectId: sqliteCore.text("project_id").notNull(),
280
+ id: sqliteCore.text("id").notNull(),
281
+ name: sqliteCore.text("name").notNull(),
282
+ description: sqliteCore.text("description").notNull(),
283
+ props: sqliteCore.blob("props", { mode: "json" }).$type(),
284
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
285
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
286
+ },
287
+ (table) => [
288
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
289
+ sqliteCore.foreignKey({
290
+ columns: [table.tenantId, table.projectId],
291
+ foreignColumns: [projects.tenantId, projects.id],
292
+ name: "data_components_project_fk"
293
+ }).onDelete("cascade")
294
+ ]
295
+ );
296
+ var agentDataComponents = sqliteCore.sqliteTable(
297
+ "agent_data_components",
298
+ {
299
+ tenantId: sqliteCore.text("tenant_id").notNull(),
300
+ projectId: sqliteCore.text("project_id").notNull(),
301
+ id: sqliteCore.text("id").notNull(),
302
+ agentId: sqliteCore.text("agent_id").notNull(),
303
+ dataComponentId: sqliteCore.text("data_component_id").notNull(),
304
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
305
+ },
306
+ (table) => [
307
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
308
+ // Foreign key constraint to projects table
309
+ sqliteCore.foreignKey({
310
+ columns: [table.tenantId, table.projectId],
311
+ foreignColumns: [projects.tenantId, projects.id],
312
+ name: "agent_data_components_project_fk"
313
+ }).onDelete("cascade"),
314
+ // Foreign key constraint to agents table
315
+ sqliteCore.foreignKey({
316
+ columns: [table.tenantId, table.projectId, table.agentId],
317
+ foreignColumns: [agents.tenantId, agents.projectId, agents.id],
318
+ name: "agent_data_components_agent_fk"
319
+ }).onDelete("cascade"),
320
+ // Foreign key constraint to data_components table
321
+ sqliteCore.foreignKey({
322
+ columns: [table.tenantId, table.projectId, table.dataComponentId],
323
+ foreignColumns: [dataComponents.tenantId, dataComponents.projectId, dataComponents.id],
324
+ name: "agent_data_components_data_component_fk"
325
+ }).onDelete("cascade")
326
+ ]
327
+ );
328
+ var artifactComponents = sqliteCore.sqliteTable(
329
+ "artifact_components",
330
+ {
331
+ tenantId: sqliteCore.text("tenant_id").notNull(),
332
+ projectId: sqliteCore.text("project_id").notNull(),
333
+ id: sqliteCore.text("id").notNull(),
334
+ name: sqliteCore.text("name").notNull(),
335
+ description: sqliteCore.text("description").notNull(),
336
+ summaryProps: sqliteCore.blob("summary_props", { mode: "json" }).$type(),
337
+ fullProps: sqliteCore.blob("full_props", { mode: "json" }).$type(),
338
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
339
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
340
+ },
341
+ (table) => [
342
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
343
+ sqliteCore.foreignKey({
344
+ columns: [table.tenantId, table.projectId],
345
+ foreignColumns: [projects.tenantId, projects.id],
346
+ name: "artifact_components_project_fk"
347
+ }).onDelete("cascade")
348
+ ]
349
+ );
350
+ var agentArtifactComponents = sqliteCore.sqliteTable(
351
+ "agent_artifact_components",
352
+ {
353
+ tenantId: sqliteCore.text("tenant_id").notNull(),
354
+ projectId: sqliteCore.text("project_id").notNull(),
355
+ id: sqliteCore.text("id").notNull(),
356
+ agentId: sqliteCore.text("agent_id").notNull(),
357
+ artifactComponentId: sqliteCore.text("artifact_component_id").notNull(),
358
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
359
+ },
360
+ (table) => [
361
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
362
+ // Foreign key constraint to projects table
363
+ sqliteCore.foreignKey({
364
+ columns: [table.tenantId, table.projectId],
365
+ foreignColumns: [projects.tenantId, projects.id],
366
+ name: "agent_artifact_components_project_fk"
367
+ }).onDelete("cascade"),
368
+ // Foreign key constraint to agents table
369
+ sqliteCore.foreignKey({
370
+ columns: [table.tenantId, table.projectId, table.agentId],
371
+ foreignColumns: [agents.tenantId, agents.projectId, agents.id],
372
+ name: "agent_artifact_components_agent_fk"
373
+ }).onDelete("cascade"),
374
+ // Foreign key constraint to artifact_components table
375
+ sqliteCore.foreignKey({
376
+ columns: [table.tenantId, table.projectId, table.artifactComponentId],
377
+ foreignColumns: [
378
+ artifactComponents.tenantId,
379
+ artifactComponents.projectId,
380
+ artifactComponents.id
381
+ ],
382
+ name: "agent_artifact_components_artifact_component_fk"
383
+ }).onDelete("cascade")
384
+ ]
385
+ );
386
+ var tools = sqliteCore.sqliteTable(
387
+ "tools",
388
+ {
389
+ tenantId: sqliteCore.text("tenant_id").notNull(),
390
+ projectId: sqliteCore.text("project_id").notNull(),
391
+ id: sqliteCore.text("id").notNull(),
392
+ name: sqliteCore.text("name").notNull(),
393
+ // Enhanced MCP configuration
394
+ config: sqliteCore.blob("config", { mode: "json" }).$type().notNull(),
395
+ credentialReferenceId: sqliteCore.text("credential_reference_id"),
396
+ headers: sqliteCore.blob("headers", { mode: "json" }).$type(),
397
+ // Image URL for custom tool icon (supports regular URLs and base64 encoded images)
398
+ imageUrl: sqliteCore.text("image_url"),
399
+ // Server capabilities and status
400
+ capabilities: sqliteCore.blob("capabilities", { mode: "json" }).$type(),
401
+ // Connection health and monitoring
402
+ status: sqliteCore.text("status").notNull().default("unknown"),
403
+ lastHealthCheck: sqliteCore.text("last_health_check"),
404
+ lastError: sqliteCore.text("last_error"),
405
+ // Tool discovery cache
406
+ availableTools: sqliteCore.blob("available_tools", { mode: "json" }).$type(),
407
+ lastToolsSync: sqliteCore.text("last_tools_sync"),
408
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
409
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
410
+ },
411
+ (table) => [
412
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
413
+ sqliteCore.foreignKey({
414
+ columns: [table.tenantId, table.projectId],
415
+ foreignColumns: [projects.tenantId, projects.id],
416
+ name: "tools_project_fk"
417
+ }).onDelete("cascade")
418
+ ]
419
+ );
420
+ var agentToolRelations = sqliteCore.sqliteTable(
421
+ "agent_tool_relations",
422
+ {
423
+ tenantId: sqliteCore.text("tenant_id").notNull(),
424
+ projectId: sqliteCore.text("project_id").notNull(),
425
+ id: sqliteCore.text("id").notNull(),
426
+ agentId: sqliteCore.text("agent_id").notNull(),
427
+ toolId: sqliteCore.text("tool_id").notNull(),
428
+ selectedTools: sqliteCore.blob("selected_tools", { mode: "json" }).$type(),
429
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
430
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
431
+ },
432
+ (table) => [
433
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
434
+ // Foreign key constraint to projects table
435
+ sqliteCore.foreignKey({
436
+ columns: [table.tenantId, table.projectId],
437
+ foreignColumns: [projects.tenantId, projects.id],
438
+ name: "agent_tool_relations_project_fk"
439
+ }).onDelete("cascade"),
440
+ // Foreign key constraint to agents table
441
+ sqliteCore.foreignKey({
442
+ columns: [table.tenantId, table.projectId, table.agentId],
443
+ foreignColumns: [agents.tenantId, agents.projectId, agents.id],
444
+ name: "agent_tool_relations_agent_fk"
445
+ }).onDelete("cascade"),
446
+ // Foreign key constraint to tools table
447
+ sqliteCore.foreignKey({
448
+ columns: [table.tenantId, table.projectId, table.toolId],
449
+ foreignColumns: [tools.tenantId, tools.projectId, tools.id],
450
+ name: "agent_tool_relations_tool_fk"
451
+ }).onDelete("cascade")
452
+ ]
453
+ );
454
+ var conversations = sqliteCore.sqliteTable(
455
+ "conversations",
456
+ {
457
+ tenantId: sqliteCore.text("tenant_id").notNull(),
458
+ projectId: sqliteCore.text("project_id").notNull(),
459
+ id: sqliteCore.text("id").notNull(),
460
+ userId: sqliteCore.text("user_id"),
461
+ activeAgentId: sqliteCore.text("active_agent_id").notNull(),
462
+ title: sqliteCore.text("title"),
463
+ lastContextResolution: sqliteCore.text("last_context_resolution"),
464
+ metadata: sqliteCore.blob("metadata", { mode: "json" }).$type(),
465
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
466
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
467
+ },
468
+ (table) => [
469
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
470
+ sqliteCore.foreignKey({
471
+ columns: [table.tenantId, table.projectId],
472
+ foreignColumns: [projects.tenantId, projects.id],
473
+ name: "conversations_project_fk"
474
+ }).onDelete("cascade")
475
+ ]
476
+ );
477
+ var messages = sqliteCore.sqliteTable(
478
+ "messages",
479
+ {
480
+ tenantId: sqliteCore.text("tenant_id").notNull(),
481
+ projectId: sqliteCore.text("project_id").notNull(),
482
+ id: sqliteCore.text("id").notNull(),
483
+ conversationId: sqliteCore.text("conversation_id").notNull(),
484
+ // Role mapping: user, agent, system (unified for both formats)
485
+ role: sqliteCore.text("role").notNull(),
486
+ // 'user' | 'agent' | 'system'
487
+ // Agent sender/recipient tracking (nullable - only populated when relevant)
488
+ fromAgentId: sqliteCore.text("from_agent_id"),
489
+ // Populated when message is from an agent
490
+ toAgentId: sqliteCore.text("to_agent_id"),
491
+ // Populated when message is directed to a specific agent (e.g., transfers/delegations)
492
+ // External agent sender tracking
493
+ fromExternalAgentId: sqliteCore.text("from_external_agent_id"),
494
+ // Populated when message is directed from an external agent
495
+ // External agent recipient tracking
496
+ toExternalAgentId: sqliteCore.text("to_external_agent_id"),
497
+ // Populated when message is directed to an external agent
498
+ // Message content stored as JSON to support both formats
499
+ content: sqliteCore.blob("content", { mode: "json" }).$type().notNull(),
500
+ // Message classification and filtering
501
+ visibility: sqliteCore.text("visibility").notNull().default("user-facing"),
502
+ // 'user-facing' | 'internal' | 'system' | 'external'
503
+ messageType: sqliteCore.text("message_type").notNull().default("chat"),
504
+ // 'chat' | 'a2a-request' | 'a2a-response' | 'task-update' | 'tool-call'
505
+ // Legacy agent association (consider deprecating in favor of fromAgentId/toAgentId)
506
+ agentId: sqliteCore.text("agent_id"),
507
+ taskId: sqliteCore.text("task_id"),
508
+ parentMessageId: sqliteCore.text("parent_message_id"),
509
+ // Remove self-reference constraint here
510
+ // A2A specific fields
511
+ a2aTaskId: sqliteCore.text("a2a_task_id"),
512
+ // Links to A2A task when relevant
513
+ a2aSessionId: sqliteCore.text("a2a_session_id"),
514
+ // A2A session identifier
515
+ // Metadata for extensions
516
+ metadata: sqliteCore.blob("metadata", { mode: "json" }).$type(),
517
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
518
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
519
+ },
520
+ (table) => [
521
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
522
+ sqliteCore.foreignKey({
523
+ columns: [table.tenantId, table.projectId],
524
+ foreignColumns: [projects.tenantId, projects.id],
525
+ name: "messages_project_fk"
526
+ }).onDelete("cascade")
527
+ ]
528
+ );
529
+ var ledgerArtifacts = sqliteCore.sqliteTable(
530
+ "ledger_artifacts",
531
+ {
532
+ // Primary identifier (maps to `artifactId`)
533
+ tenantId: sqliteCore.text("tenant_id").notNull(),
534
+ projectId: sqliteCore.text("project_id").notNull(),
535
+ id: sqliteCore.text("id").notNull(),
536
+ // Links
537
+ taskId: sqliteCore.text("task_id"),
538
+ contextId: sqliteCore.text("context_id").notNull(),
539
+ // Core Artifact fields
540
+ type: sqliteCore.text("type").notNull().default("source"),
541
+ name: sqliteCore.text("name"),
542
+ description: sqliteCore.text("description"),
543
+ parts: sqliteCore.blob("parts", { mode: "json" }).$type(),
544
+ metadata: sqliteCore.blob("metadata", { mode: "json" }).$type(),
545
+ // Extra ledger information (not part of the Artifact spec – kept optional)
546
+ summary: sqliteCore.text("summary"),
547
+ mime: sqliteCore.blob("mime", { mode: "json" }).$type(),
548
+ visibility: sqliteCore.text("visibility").default("context"),
549
+ allowedAgents: sqliteCore.blob("allowed_agents", { mode: "json" }).$type(),
550
+ derivedFrom: sqliteCore.text("derived_from"),
551
+ // Timestamps
552
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
553
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
554
+ },
555
+ (table) => [
556
+ sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
557
+ sqliteCore.foreignKey({
558
+ columns: [table.tenantId, table.projectId],
559
+ foreignColumns: [projects.tenantId, projects.id],
560
+ name: "ledger_artifacts_project_fk"
561
+ }).onDelete("cascade")
562
+ ]
563
+ );
564
+ var apiKeys = sqliteCore.sqliteTable(
565
+ "api_keys",
566
+ {
567
+ id: sqliteCore.text("id").primaryKey(),
568
+ tenantId: sqliteCore.text("tenant_id").notNull(),
569
+ projectId: sqliteCore.text("project_id").notNull(),
570
+ graphId: sqliteCore.text("graph_id").notNull(),
571
+ publicId: sqliteCore.text("public_id").notNull().unique(),
572
+ // Public ID for O(1) lookup (e.g., "abc123def456")
573
+ keyHash: sqliteCore.text("key_hash").notNull(),
574
+ // Hashed API key (never store plaintext)
575
+ keyPrefix: sqliteCore.text("key_prefix").notNull(),
576
+ // First 8 chars for identification (e.g., "sk_live_abc...")
577
+ lastUsedAt: sqliteCore.text("last_used_at"),
578
+ expiresAt: sqliteCore.text("expires_at"),
579
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
580
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
581
+ },
582
+ (t) => [
583
+ sqliteCore.foreignKey({
584
+ columns: [t.tenantId, t.projectId],
585
+ foreignColumns: [projects.tenantId, projects.id],
586
+ name: "api_keys_project_fk"
587
+ }).onDelete("cascade"),
588
+ sqliteCore.foreignKey({
589
+ columns: [t.tenantId, t.projectId, t.graphId],
590
+ foreignColumns: [agentGraph.tenantId, agentGraph.projectId, agentGraph.id],
591
+ name: "api_keys_graph_fk"
592
+ }).onDelete("cascade"),
593
+ sqliteCore.index("api_keys_tenant_graph_idx").on(t.tenantId, t.graphId),
594
+ sqliteCore.index("api_keys_prefix_idx").on(t.keyPrefix),
595
+ sqliteCore.index("api_keys_public_id_idx").on(t.publicId)
596
+ ]
597
+ );
598
+ var credentialReferences = sqliteCore.sqliteTable(
599
+ "credential_references",
600
+ {
601
+ tenantId: sqliteCore.text("tenant_id").notNull(),
602
+ projectId: sqliteCore.text("project_id").notNull(),
603
+ id: sqliteCore.text("id").notNull(),
604
+ type: sqliteCore.text("type").notNull(),
605
+ // Implementation type: 'keychain', 'nango', 'memory', etc.
606
+ credentialStoreId: sqliteCore.text("credential_store_id").notNull(),
607
+ // Maps to framework.getCredentialStore(id)
608
+ retrievalParams: sqliteCore.blob("retrieval_params", { mode: "json" }).$type(),
609
+ createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
610
+ updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
611
+ },
612
+ (t) => [
613
+ sqliteCore.primaryKey({ columns: [t.tenantId, t.projectId, t.id] }),
614
+ sqliteCore.foreignKey({
615
+ columns: [t.tenantId, t.projectId],
616
+ foreignColumns: [projects.tenantId, projects.id],
617
+ name: "credential_references_project_fk"
618
+ }).onDelete("cascade")
619
+ ]
620
+ );
621
+ sqliteCore.index("ledger_artifacts_task_id_idx").on(
622
+ ledgerArtifacts.taskId
623
+ );
624
+ sqliteCore.index("ledger_artifacts_context_id_idx").on(
625
+ ledgerArtifacts.contextId
626
+ );
627
+ sqliteCore.unique(
628
+ "ledger_artifacts_task_context_name_unique"
629
+ ).on(ledgerArtifacts.taskId, ledgerArtifacts.contextId, ledgerArtifacts.name);
630
+ drizzleOrm.relations(tasks, ({ one, many }) => ({
631
+ // A task belongs to one project
632
+ project: one(projects, {
633
+ fields: [tasks.tenantId, tasks.projectId],
634
+ references: [projects.tenantId, projects.id]
635
+ }),
636
+ // A task can have many parent relationships (where it's the child)
637
+ parentRelations: many(taskRelations, {
638
+ relationName: "childTask"
639
+ }),
640
+ // A task can have many child relationships (where it's the parent)
641
+ childRelations: many(taskRelations, {
642
+ relationName: "parentTask"
643
+ }),
644
+ // A task belongs to one agent
645
+ agent: one(agents, {
646
+ fields: [tasks.agentId],
647
+ references: [agents.id]
648
+ }),
649
+ // A task can have many messages associated with it
650
+ messages: many(messages)
651
+ }));
652
+ drizzleOrm.relations(projects, ({ many }) => ({
653
+ // A project can have many agents
654
+ agents: many(agents),
655
+ // A project can have many agent graphs
656
+ agentGraphs: many(agentGraph),
657
+ // A project can have many tools
658
+ tools: many(tools),
659
+ // A project can have many context configs
660
+ contextConfigs: many(contextConfigs),
661
+ // A project can have many external agents
662
+ externalAgents: many(externalAgents),
663
+ // A project can have many conversations
664
+ conversations: many(conversations),
665
+ // A project can have many tasks
666
+ tasks: many(tasks)
667
+ }));
668
+ drizzleOrm.relations(taskRelations, ({ one }) => ({
669
+ // Each relation has one parent task
670
+ parentTask: one(tasks, {
671
+ fields: [taskRelations.parentTaskId],
672
+ references: [tasks.id],
673
+ relationName: "parentTask"
674
+ }),
675
+ // Each relation has one child task
676
+ childTask: one(tasks, {
677
+ fields: [taskRelations.childTaskId],
678
+ references: [tasks.id],
679
+ relationName: "childTask"
680
+ })
681
+ }));
682
+ drizzleOrm.relations(contextConfigs, ({ many, one }) => ({
683
+ // A context config belongs to one project
684
+ project: one(projects, {
685
+ fields: [contextConfigs.tenantId, contextConfigs.projectId],
686
+ references: [projects.tenantId, projects.id]
687
+ }),
688
+ // A context config can be used by many agent graphs
689
+ graphs: many(agentGraph),
690
+ // A context config can have many cached entries
691
+ cache: many(contextCache)
692
+ }));
693
+ drizzleOrm.relations(contextCache, ({ one }) => ({
694
+ // Each cache entry belongs to one context config
695
+ contextConfig: one(contextConfigs, {
696
+ fields: [contextCache.contextConfigId],
697
+ references: [contextConfigs.id]
698
+ })
699
+ }));
700
+ drizzleOrm.relations(agents, ({ many, one }) => ({
701
+ // A context config belongs to one project
702
+ project: one(projects, {
703
+ fields: [agents.tenantId, agents.projectId],
704
+ references: [projects.tenantId, projects.id]
705
+ }),
706
+ // An agent can have many tasks
707
+ tasks: many(tasks),
708
+ // An agent can be the default agent for many graphs
709
+ defaultForGraphs: many(agentGraph),
710
+ // Agent relation tracking
711
+ sourceRelations: many(agentRelations, {
712
+ relationName: "sourceRelations"
713
+ }),
714
+ targetRelations: many(agentRelations, {
715
+ relationName: "targetRelations"
716
+ }),
717
+ // Message tracking relations
718
+ sentMessages: many(messages, {
719
+ relationName: "sentMessages"
720
+ }),
721
+ receivedMessages: many(messages, {
722
+ relationName: "receivedMessages"
723
+ }),
724
+ // Legacy message association (consider deprecating)
725
+ associatedMessages: many(messages, {
726
+ relationName: "associatedAgent"
727
+ }),
728
+ toolRelations: many(agentToolRelations)
729
+ }));
730
+ drizzleOrm.relations(agentGraph, ({ one }) => ({
731
+ // An agent graph belongs to one project
732
+ project: one(projects, {
733
+ fields: [agentGraph.tenantId, agentGraph.projectId],
734
+ references: [projects.tenantId, projects.id]
735
+ }),
736
+ // An agent graph belongs to one default agent
737
+ defaultAgent: one(agents, {
738
+ fields: [agentGraph.defaultAgentId],
739
+ references: [agents.id]
740
+ }),
741
+ // An agent graph can reference one context config
742
+ contextConfig: one(contextConfigs, {
743
+ fields: [agentGraph.contextConfigId],
744
+ references: [contextConfigs.id]
745
+ })
746
+ }));
747
+ drizzleOrm.relations(externalAgents, ({ one, many }) => ({
748
+ // An external agent belongs to one project
749
+ project: one(projects, {
750
+ fields: [externalAgents.tenantId, externalAgents.projectId],
751
+ references: [projects.tenantId, projects.id]
752
+ }),
753
+ // An external agent can be referenced by many agent relations
754
+ agentRelations: many(agentRelations),
755
+ // An external agent may have one credential reference
756
+ credentialReference: one(credentialReferences, {
757
+ fields: [externalAgents.credentialReferenceId],
758
+ references: [credentialReferences.id]
759
+ })
760
+ }));
761
+ drizzleOrm.relations(apiKeys, ({ one }) => ({
762
+ // An API key belongs to one project
763
+ project: one(projects, {
764
+ fields: [apiKeys.tenantId, apiKeys.projectId],
765
+ references: [projects.tenantId, projects.id]
766
+ }),
767
+ // An API key belongs to one tenant and graph
768
+ graph: one(agentGraph, {
769
+ fields: [apiKeys.graphId],
770
+ references: [agentGraph.id]
771
+ })
772
+ }));
773
+ drizzleOrm.relations(agentToolRelations, ({ one }) => ({
774
+ // An agent-tool relation belongs to one agent
775
+ agent: one(agents, {
776
+ fields: [agentToolRelations.agentId],
777
+ references: [agents.id]
778
+ }),
779
+ // An agent-tool relation belongs to one tool
780
+ tool: one(tools, {
781
+ fields: [agentToolRelations.toolId],
782
+ references: [tools.id]
783
+ })
784
+ }));
785
+ drizzleOrm.relations(credentialReferences, ({ many }) => ({
786
+ tools: many(tools)
787
+ }));
788
+ drizzleOrm.relations(tools, ({ one, many }) => ({
789
+ // A tool belongs to one project
790
+ project: one(projects, {
791
+ fields: [tools.tenantId, tools.projectId],
792
+ references: [projects.tenantId, projects.id]
793
+ }),
794
+ // A tool can be used by many agents through agent-tool relations
795
+ agentRelations: many(agentToolRelations),
796
+ // A tool may have one credential reference
797
+ credentialReference: one(credentialReferences, {
798
+ fields: [tools.credentialReferenceId],
799
+ references: [credentialReferences.id]
800
+ })
801
+ }));
802
+ drizzleOrm.relations(conversations, ({ one, many }) => ({
803
+ // A conversation belongs to one project
804
+ project: one(projects, {
805
+ fields: [conversations.tenantId, conversations.projectId],
806
+ references: [projects.tenantId, projects.id]
807
+ }),
808
+ // A conversation has many messages
809
+ messages: many(messages),
810
+ // A conversation has one active agent
811
+ activeAgent: one(agents, {
812
+ fields: [conversations.activeAgentId],
813
+ references: [agents.id]
814
+ })
815
+ }));
816
+ drizzleOrm.relations(messages, ({ one, many }) => ({
817
+ // A message belongs to one conversation
818
+ conversation: one(conversations, {
819
+ fields: [messages.conversationId],
820
+ references: [conversations.id]
821
+ }),
822
+ // Legacy agent association (consider deprecating)
823
+ agent: one(agents, {
824
+ fields: [messages.agentId],
825
+ references: [agents.id],
826
+ relationName: "associatedAgent"
827
+ }),
828
+ // Sender tracking relations
829
+ fromAgent: one(agents, {
830
+ fields: [messages.fromAgentId],
831
+ references: [agents.id],
832
+ relationName: "sentMessages"
833
+ }),
834
+ // Recipient tracking relations
835
+ toAgent: one(agents, {
836
+ fields: [messages.toAgentId],
837
+ references: [agents.id],
838
+ relationName: "receivedMessages"
839
+ }),
840
+ // External agent sender tracking relations
841
+ fromExternalAgent: one(externalAgents, {
842
+ fields: [messages.fromExternalAgentId],
843
+ references: [externalAgents.id],
844
+ relationName: "receivedExternalMessages"
845
+ }),
846
+ // External agent recipient tracking relations
847
+ toExternalAgent: one(externalAgents, {
848
+ fields: [messages.toExternalAgentId],
849
+ references: [externalAgents.id],
850
+ relationName: "sentExternalMessages"
851
+ }),
852
+ // A message may be associated with a task
853
+ task: one(tasks, {
854
+ fields: [messages.taskId],
855
+ references: [tasks.id]
856
+ }),
857
+ // A message may have a parent message (for threading)
858
+ parentMessage: one(messages, {
859
+ fields: [messages.parentMessageId],
860
+ references: [messages.id],
861
+ relationName: "parentChild"
862
+ }),
863
+ // A message may have child messages
864
+ childMessages: many(messages, {
865
+ relationName: "parentChild"
866
+ })
867
+ }));
868
+ drizzleOrm.relations(artifactComponents, ({ many }) => ({
869
+ // An artifact component can be associated with many agents
870
+ agentRelations: many(agentArtifactComponents)
871
+ }));
872
+ drizzleOrm.relations(agentArtifactComponents, ({ one }) => ({
873
+ // An agent-artifact component relation belongs to one agent
874
+ agent: one(agents, {
875
+ fields: [agentArtifactComponents.agentId],
876
+ references: [agents.id]
877
+ }),
878
+ // An agent-artifact component relation belongs to one artifact component
879
+ artifactComponent: one(artifactComponents, {
880
+ fields: [agentArtifactComponents.artifactComponentId],
881
+ references: [artifactComponents.id]
882
+ })
883
+ }));
884
+ drizzleOrm.relations(agentRelations, ({ one }) => ({
885
+ // An agent relation belongs to one graph
886
+ graph: one(agentGraph, {
887
+ fields: [agentRelations.graphId],
888
+ references: [agentGraph.id]
889
+ }),
890
+ // An agent relation has one source agent
891
+ sourceAgent: one(agents, {
892
+ fields: [agentRelations.sourceAgentId],
893
+ references: [agents.id],
894
+ relationName: "sourceRelations"
895
+ }),
896
+ // An agent relation may have one target agent (for internal relations)
897
+ targetAgent: one(agents, {
898
+ fields: [agentRelations.targetAgentId],
899
+ references: [agents.id],
900
+ relationName: "targetRelations"
901
+ }),
902
+ // An agent relation may have one external agent (for external relations)
903
+ externalAgent: one(externalAgents, {
904
+ fields: [agentRelations.externalAgentId],
905
+ references: [externalAgents.id]
906
+ })
907
+ }));
908
+
909
+ // src/validation/schemas.ts
910
+ var StopWhenSchema = zodOpenapi.z.object({
911
+ transferCountIs: zodOpenapi.z.number().min(1).max(100).optional(),
912
+ stepCountIs: zodOpenapi.z.number().min(1).max(1e3).optional()
913
+ });
914
+ var GraphStopWhenSchema = StopWhenSchema.pick({ transferCountIs: true });
915
+ var AgentStopWhenSchema = StopWhenSchema.pick({ stepCountIs: true });
916
+ var MIN_ID_LENGTH = 1;
917
+ var MAX_ID_LENGTH = 255;
918
+ var URL_SAFE_ID_PATTERN = /^[a-zA-Z0-9\-_.]+$/;
919
+ var resourceIdSchema = zodOpenapi.z.string().min(MIN_ID_LENGTH).max(MAX_ID_LENGTH).regex(URL_SAFE_ID_PATTERN, {
920
+ message: "ID must contain only letters, numbers, hyphens, underscores, and dots"
921
+ }).openapi({
922
+ description: "Resource identifier",
923
+ example: "resource_789"
924
+ });
925
+ var ModelSettingsSchema = zodOpenapi.z.object({
926
+ model: zodOpenapi.z.string().optional(),
927
+ providerOptions: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.unknown()).optional()
928
+ });
929
+ var ModelSchema = zodOpenapi.z.object({
930
+ base: ModelSettingsSchema.optional(),
931
+ structuredOutput: ModelSettingsSchema.optional(),
932
+ summarizer: ModelSettingsSchema.optional()
933
+ });
934
+ var ProjectModelSchema = zodOpenapi.z.object({
935
+ base: ModelSettingsSchema,
936
+ structuredOutput: ModelSettingsSchema.optional(),
937
+ summarizer: ModelSettingsSchema.optional()
938
+ });
939
+ var createApiSchema = (schema) => schema.omit({ tenantId: true, projectId: true });
940
+ var createApiInsertSchema = (schema) => schema.omit({ tenantId: true, projectId: true });
941
+ var createApiUpdateSchema = (schema) => schema.omit({ tenantId: true, projectId: true }).partial();
942
+ var AgentSelectSchema = drizzleZod.createSelectSchema(agents);
943
+ var AgentInsertSchema = drizzleZod.createInsertSchema(agents).extend({
944
+ id: resourceIdSchema,
945
+ models: ModelSchema.optional()
946
+ });
947
+ var AgentUpdateSchema = AgentInsertSchema.partial();
948
+ var AgentApiSelectSchema = createApiSchema(AgentSelectSchema);
949
+ var AgentApiInsertSchema = createApiInsertSchema(AgentInsertSchema);
950
+ createApiUpdateSchema(AgentUpdateSchema);
951
+ var AgentRelationSelectSchema = drizzleZod.createSelectSchema(agentRelations);
952
+ var AgentRelationInsertSchema = drizzleZod.createInsertSchema(agentRelations).extend({
953
+ id: resourceIdSchema,
954
+ graphId: resourceIdSchema,
955
+ sourceAgentId: resourceIdSchema,
956
+ targetAgentId: resourceIdSchema.optional(),
957
+ externalAgentId: resourceIdSchema.optional()
958
+ });
959
+ var AgentRelationUpdateSchema = AgentRelationInsertSchema.partial();
960
+ createApiSchema(AgentRelationSelectSchema);
961
+ createApiInsertSchema(AgentRelationInsertSchema).extend({
962
+ relationType: zodOpenapi.z.enum(VALID_RELATION_TYPES)
963
+ }).refine(
964
+ (data) => {
965
+ const hasTarget = data.targetAgentId != null;
966
+ const hasExternal = data.externalAgentId != null;
967
+ return hasTarget !== hasExternal;
968
+ },
969
+ {
970
+ message: "Must specify exactly one of targetAgentId or externalAgentId",
971
+ path: ["targetAgentId", "externalAgentId"]
972
+ }
973
+ );
974
+ createApiUpdateSchema(AgentRelationUpdateSchema).extend({
975
+ relationType: zodOpenapi.z.enum(VALID_RELATION_TYPES).optional()
976
+ }).refine(
977
+ (data) => {
978
+ const hasTarget = data.targetAgentId != null;
979
+ const hasExternal = data.externalAgentId != null;
980
+ if (!hasTarget && !hasExternal) {
981
+ return true;
982
+ }
983
+ return hasTarget !== hasExternal;
984
+ },
985
+ {
986
+ message: "Must specify exactly one of targetAgentId or externalAgentId when updating agent relationships",
987
+ path: ["targetAgentId", "externalAgentId"]
988
+ }
989
+ );
990
+ zodOpenapi.z.object({
991
+ sourceAgentId: zodOpenapi.z.string().optional(),
992
+ targetAgentId: zodOpenapi.z.string().optional(),
993
+ externalAgentId: zodOpenapi.z.string().optional()
994
+ });
995
+ var ExternalAgentRelationInsertSchema = drizzleZod.createInsertSchema(agentRelations).extend({
996
+ id: resourceIdSchema,
997
+ graphId: resourceIdSchema,
998
+ sourceAgentId: resourceIdSchema,
999
+ externalAgentId: resourceIdSchema
1000
+ });
1001
+ createApiInsertSchema(
1002
+ ExternalAgentRelationInsertSchema
1003
+ );
1004
+ var AgentGraphSelectSchema = drizzleZod.createSelectSchema(agentGraph);
1005
+ var AgentGraphInsertSchema = drizzleZod.createInsertSchema(agentGraph).extend({
1006
+ id: resourceIdSchema
1007
+ });
1008
+ var AgentGraphUpdateSchema = AgentGraphInsertSchema.partial();
1009
+ createApiSchema(AgentGraphSelectSchema);
1010
+ var AgentGraphApiInsertSchema = createApiInsertSchema(AgentGraphInsertSchema).extend({
1011
+ id: resourceIdSchema.optional()
1012
+ });
1013
+ createApiUpdateSchema(AgentGraphUpdateSchema);
1014
+ var TaskSelectSchema = drizzleZod.createSelectSchema(tasks);
1015
+ var TaskInsertSchema = drizzleZod.createInsertSchema(tasks).extend({
1016
+ id: resourceIdSchema,
1017
+ conversationId: resourceIdSchema.optional()
1018
+ });
1019
+ var TaskUpdateSchema = TaskInsertSchema.partial();
1020
+ createApiSchema(TaskSelectSchema);
1021
+ createApiInsertSchema(TaskInsertSchema);
1022
+ createApiUpdateSchema(TaskUpdateSchema);
1023
+ var TaskRelationSelectSchema = drizzleZod.createSelectSchema(taskRelations);
1024
+ var TaskRelationInsertSchema = drizzleZod.createInsertSchema(taskRelations).extend({
1025
+ id: resourceIdSchema,
1026
+ parentTaskId: resourceIdSchema,
1027
+ childTaskId: resourceIdSchema
1028
+ });
1029
+ var TaskRelationUpdateSchema = TaskRelationInsertSchema.partial();
1030
+ createApiSchema(TaskRelationSelectSchema);
1031
+ createApiInsertSchema(TaskRelationInsertSchema);
1032
+ createApiUpdateSchema(TaskRelationUpdateSchema);
1033
+ var imageUrlSchema = zodOpenapi.z.string().optional().refine(
1034
+ (url) => {
1035
+ if (!url) return true;
1036
+ if (url.startsWith("data:image/")) {
1037
+ const base64Part = url.split(",")[1];
1038
+ if (!base64Part) return false;
1039
+ return base64Part.length < 14e5;
1040
+ }
1041
+ try {
1042
+ const parsed = new URL(url);
1043
+ return parsed.protocol === "http:" || parsed.protocol === "https:";
1044
+ } catch {
1045
+ return false;
1046
+ }
1047
+ },
1048
+ {
1049
+ message: "Image URL must be a valid HTTP(S) URL or a base64 data URL (max 1MB)"
1050
+ }
1051
+ );
1052
+ var McpTransportConfigSchema = zodOpenapi.z.object({
1053
+ type: zodOpenapi.z.enum(MCPTransportType),
1054
+ requestInit: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.unknown()).optional(),
1055
+ eventSourceInit: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.unknown()).optional(),
1056
+ reconnectionOptions: zodOpenapi.z.custom().optional(),
1057
+ sessionId: zodOpenapi.z.string().optional()
1058
+ });
1059
+ var ToolStatusSchema = zodOpenapi.z.enum(TOOL_STATUS_VALUES);
1060
+ zodOpenapi.z.object({
1061
+ name: zodOpenapi.z.string(),
1062
+ description: zodOpenapi.z.string().optional(),
1063
+ inputSchema: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.unknown()).optional()
1064
+ });
1065
+ var ToolSelectSchema = drizzleZod.createSelectSchema(tools);
1066
+ var ToolInsertSchema = drizzleZod.createInsertSchema(tools).extend({
1067
+ id: resourceIdSchema,
1068
+ imageUrl: imageUrlSchema
1069
+ });
1070
+ var ConversationSelectSchema = drizzleZod.createSelectSchema(conversations);
1071
+ var ConversationInsertSchema = drizzleZod.createInsertSchema(conversations).extend({
1072
+ id: resourceIdSchema,
1073
+ contextConfigId: resourceIdSchema.optional()
1074
+ });
1075
+ var ConversationUpdateSchema = ConversationInsertSchema.partial();
1076
+ createApiSchema(ConversationSelectSchema);
1077
+ createApiInsertSchema(ConversationInsertSchema);
1078
+ createApiUpdateSchema(ConversationUpdateSchema);
1079
+ var MessageSelectSchema = drizzleZod.createSelectSchema(messages);
1080
+ var MessageInsertSchema = drizzleZod.createInsertSchema(messages).extend({
1081
+ id: resourceIdSchema,
1082
+ conversationId: resourceIdSchema,
1083
+ taskId: resourceIdSchema.optional()
1084
+ });
1085
+ var MessageUpdateSchema = MessageInsertSchema.partial();
1086
+ createApiSchema(MessageSelectSchema);
1087
+ createApiInsertSchema(MessageInsertSchema);
1088
+ createApiUpdateSchema(MessageUpdateSchema);
1089
+ var ContextCacheSelectSchema = drizzleZod.createSelectSchema(contextCache);
1090
+ var ContextCacheInsertSchema = drizzleZod.createInsertSchema(contextCache);
1091
+ var ContextCacheUpdateSchema = ContextCacheInsertSchema.partial();
1092
+ createApiSchema(ContextCacheSelectSchema);
1093
+ createApiInsertSchema(ContextCacheInsertSchema);
1094
+ createApiUpdateSchema(ContextCacheUpdateSchema);
1095
+ var DataComponentSelectSchema = drizzleZod.createSelectSchema(dataComponents);
1096
+ var DataComponentInsertSchema = drizzleZod.createInsertSchema(dataComponents).extend({
1097
+ id: resourceIdSchema
1098
+ });
1099
+ DataComponentInsertSchema.omit({
1100
+ createdAt: true,
1101
+ updatedAt: true
1102
+ });
1103
+ var DataComponentUpdateSchema = DataComponentInsertSchema.partial();
1104
+ createApiSchema(DataComponentSelectSchema);
1105
+ var DataComponentApiInsertSchema = createApiInsertSchema(DataComponentInsertSchema);
1106
+ createApiUpdateSchema(DataComponentUpdateSchema);
1107
+ var AgentDataComponentSelectSchema = drizzleZod.createSelectSchema(agentDataComponents);
1108
+ var AgentDataComponentInsertSchema = drizzleZod.createInsertSchema(agentDataComponents);
1109
+ var AgentDataComponentUpdateSchema = AgentDataComponentInsertSchema.partial();
1110
+ createApiSchema(AgentDataComponentSelectSchema);
1111
+ createApiInsertSchema(
1112
+ AgentDataComponentInsertSchema
1113
+ );
1114
+ createApiUpdateSchema(
1115
+ AgentDataComponentUpdateSchema
1116
+ );
1117
+ var ArtifactComponentSelectSchema = drizzleZod.createSelectSchema(artifactComponents);
1118
+ var ArtifactComponentInsertSchema = drizzleZod.createInsertSchema(artifactComponents).extend({
1119
+ id: resourceIdSchema
1120
+ });
1121
+ var ArtifactComponentUpdateSchema = ArtifactComponentInsertSchema.partial();
1122
+ createApiSchema(ArtifactComponentSelectSchema);
1123
+ var ArtifactComponentApiInsertSchema = ArtifactComponentInsertSchema.omit({
1124
+ tenantId: true,
1125
+ projectId: true,
1126
+ createdAt: true,
1127
+ updatedAt: true
1128
+ }).extend({
1129
+ id: resourceIdSchema.optional()
1130
+ });
1131
+ createApiUpdateSchema(
1132
+ ArtifactComponentUpdateSchema
1133
+ );
1134
+ var AgentArtifactComponentSelectSchema = drizzleZod.createSelectSchema(agentArtifactComponents);
1135
+ var AgentArtifactComponentInsertSchema = drizzleZod.createInsertSchema(
1136
+ agentArtifactComponents
1137
+ ).extend({
1138
+ id: resourceIdSchema,
1139
+ agentId: resourceIdSchema,
1140
+ artifactComponentId: resourceIdSchema
1141
+ });
1142
+ var AgentArtifactComponentUpdateSchema = AgentArtifactComponentInsertSchema.partial();
1143
+ createApiSchema(
1144
+ AgentArtifactComponentSelectSchema
1145
+ );
1146
+ AgentArtifactComponentInsertSchema.omit({
1147
+ tenantId: true,
1148
+ projectId: true,
1149
+ id: true,
1150
+ createdAt: true
1151
+ });
1152
+ createApiUpdateSchema(
1153
+ AgentArtifactComponentUpdateSchema
1154
+ );
1155
+ var ExternalAgentSelectSchema = drizzleZod.createSelectSchema(externalAgents).extend({
1156
+ credentialReferenceId: zodOpenapi.z.string().nullable().optional(),
1157
+ headers: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.string()).nullable().optional()
1158
+ });
1159
+ var ExternalAgentInsertSchema = drizzleZod.createInsertSchema(externalAgents).extend({
1160
+ id: resourceIdSchema
1161
+ });
1162
+ var ExternalAgentUpdateSchema = ExternalAgentInsertSchema.partial();
1163
+ var ExternalAgentApiSelectSchema = createApiSchema(ExternalAgentSelectSchema);
1164
+ var ExternalAgentApiInsertSchema = createApiInsertSchema(ExternalAgentInsertSchema);
1165
+ createApiUpdateSchema(ExternalAgentUpdateSchema);
1166
+ zodOpenapi.z.discriminatedUnion("type", [
1167
+ AgentApiSelectSchema.extend({ type: zodOpenapi.z.literal("internal") }),
1168
+ ExternalAgentApiSelectSchema.extend({ type: zodOpenapi.z.literal("external") })
1169
+ ]);
1170
+ var ApiKeySelectSchema = drizzleZod.createSelectSchema(apiKeys);
1171
+ var ApiKeyInsertSchema = drizzleZod.createInsertSchema(apiKeys).extend({
1172
+ id: resourceIdSchema,
1173
+ graphId: resourceIdSchema
1174
+ });
1175
+ ApiKeyInsertSchema.partial().omit({
1176
+ tenantId: true,
1177
+ projectId: true,
1178
+ id: true,
1179
+ publicId: true,
1180
+ keyHash: true,
1181
+ keyPrefix: true,
1182
+ createdAt: true
1183
+ });
1184
+ var ApiKeyApiSelectSchema = ApiKeySelectSchema.omit({
1185
+ tenantId: true,
1186
+ projectId: true,
1187
+ keyHash: true
1188
+ // Never expose the hash
1189
+ });
1190
+ zodOpenapi.z.object({
1191
+ data: zodOpenapi.z.object({
1192
+ apiKey: ApiKeyApiSelectSchema,
1193
+ key: zodOpenapi.z.string().describe("The full API key (shown only once)")
1194
+ })
1195
+ });
1196
+ ApiKeyInsertSchema.omit({
1197
+ tenantId: true,
1198
+ projectId: true,
1199
+ id: true,
1200
+ // Auto-generated
1201
+ publicId: true,
1202
+ // Auto-generated
1203
+ keyHash: true,
1204
+ // Auto-generated
1205
+ keyPrefix: true,
1206
+ // Auto-generated
1207
+ lastUsedAt: true
1208
+ // Not set on creation
1209
+ });
1210
+ var CredentialReferenceSelectSchema = zodOpenapi.z.object({
1211
+ id: zodOpenapi.z.string(),
1212
+ tenantId: zodOpenapi.z.string(),
1213
+ projectId: zodOpenapi.z.string(),
1214
+ type: zodOpenapi.z.string(),
1215
+ credentialStoreId: zodOpenapi.z.string(),
1216
+ retrievalParams: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.unknown()).nullish(),
1217
+ createdAt: zodOpenapi.z.string(),
1218
+ updatedAt: zodOpenapi.z.string()
1219
+ });
1220
+ var CredentialReferenceInsertSchema = zodOpenapi.z.object({
1221
+ id: resourceIdSchema,
1222
+ tenantId: zodOpenapi.z.string(),
1223
+ projectId: zodOpenapi.z.string(),
1224
+ type: zodOpenapi.z.string(),
1225
+ credentialStoreId: resourceIdSchema,
1226
+ retrievalParams: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.unknown()).nullish()
1227
+ });
1228
+ var CredentialReferenceUpdateSchema = CredentialReferenceInsertSchema.partial();
1229
+ createApiSchema(
1230
+ CredentialReferenceSelectSchema
1231
+ ).extend({
1232
+ type: zodOpenapi.z.enum(CredentialStoreType)
1233
+ });
1234
+ var CredentialReferenceApiInsertSchema = createApiInsertSchema(
1235
+ CredentialReferenceInsertSchema
1236
+ ).extend({
1237
+ type: zodOpenapi.z.enum(CredentialStoreType)
1238
+ });
1239
+ createApiUpdateSchema(
1240
+ CredentialReferenceUpdateSchema
1241
+ ).extend({
1242
+ type: zodOpenapi.z.enum(CredentialStoreType).optional()
1243
+ });
1244
+ var McpToolSchema = ToolInsertSchema.extend({
1245
+ imageUrl: imageUrlSchema,
1246
+ status: ToolStatusSchema.default("unknown"),
1247
+ lastHealthCheck: zodOpenapi.z.date().optional(),
1248
+ lastToolsSync: zodOpenapi.z.date().optional(),
1249
+ version: zodOpenapi.z.string().optional(),
1250
+ createdAt: zodOpenapi.z.date(),
1251
+ updatedAt: zodOpenapi.z.date()
1252
+ });
1253
+ McpToolSchema.omit({
1254
+ config: true,
1255
+ tenantId: true,
1256
+ projectId: true,
1257
+ status: true,
1258
+ lastHealthCheck: true,
1259
+ lastToolsSync: true,
1260
+ version: true,
1261
+ createdAt: true,
1262
+ updatedAt: true,
1263
+ credentialReferenceId: true
1264
+ }).extend({
1265
+ tenantId: zodOpenapi.z.string().optional(),
1266
+ projectId: zodOpenapi.z.string().optional(),
1267
+ description: zodOpenapi.z.string().optional(),
1268
+ serverUrl: zodOpenapi.z.url(),
1269
+ activeTools: zodOpenapi.z.array(zodOpenapi.z.string()).optional(),
1270
+ mcpType: zodOpenapi.z.enum(MCPServerType).optional(),
1271
+ transport: McpTransportConfigSchema.optional(),
1272
+ credential: CredentialReferenceApiInsertSchema.optional()
1273
+ });
1274
+ var ToolUpdateSchema = ToolInsertSchema.partial();
1275
+ createApiSchema(ToolSelectSchema);
1276
+ var ToolApiInsertSchema = createApiInsertSchema(ToolInsertSchema);
1277
+ createApiUpdateSchema(ToolUpdateSchema);
1278
+ var FetchConfigSchema = zodOpenapi.z.object({
1279
+ url: zodOpenapi.z.string().min(1, "URL is required"),
1280
+ method: zodOpenapi.z.enum(["GET", "POST", "PUT", "DELETE", "PATCH"]).optional().default("GET"),
1281
+ headers: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.string()).optional(),
1282
+ body: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.unknown()).optional(),
1283
+ transform: zodOpenapi.z.string().optional(),
1284
+ // JSONPath or JS transform function
1285
+ timeout: zodOpenapi.z.number().min(0).optional().default(1e4).optional()
1286
+ });
1287
+ zodOpenapi.z.object({
1288
+ id: zodOpenapi.z.string().min(1, "Fetch definition ID is required"),
1289
+ name: zodOpenapi.z.string().optional(),
1290
+ trigger: zodOpenapi.z.enum(["initialization", "invocation"]),
1291
+ fetchConfig: FetchConfigSchema,
1292
+ responseSchema: zodOpenapi.z.any().optional(),
1293
+ // JSON Schema for validating HTTP response
1294
+ defaultValue: zodOpenapi.z.unknown().optional(),
1295
+ credential: CredentialReferenceApiInsertSchema.optional()
1296
+ });
1297
+ var ContextConfigSelectSchema = drizzleZod.createSelectSchema(contextConfigs).extend({
1298
+ requestContextSchema: zodOpenapi.z.unknown().optional()
1299
+ });
1300
+ var ContextConfigInsertSchema = drizzleZod.createInsertSchema(contextConfigs).extend({
1301
+ id: resourceIdSchema,
1302
+ requestContextSchema: zodOpenapi.z.unknown().optional()
1303
+ }).omit({
1304
+ createdAt: true,
1305
+ updatedAt: true
1306
+ });
1307
+ var ContextConfigUpdateSchema = ContextConfigInsertSchema.partial();
1308
+ createApiSchema(ContextConfigSelectSchema);
1309
+ var ContextConfigApiInsertSchema = createApiInsertSchema(ContextConfigInsertSchema);
1310
+ createApiUpdateSchema(ContextConfigUpdateSchema);
1311
+ var AgentToolRelationSelectSchema = drizzleZod.createSelectSchema(agentToolRelations);
1312
+ var AgentToolRelationInsertSchema = drizzleZod.createInsertSchema(agentToolRelations).extend({
1313
+ id: resourceIdSchema,
1314
+ agentId: resourceIdSchema,
1315
+ toolId: resourceIdSchema,
1316
+ selectedTools: zodOpenapi.z.array(zodOpenapi.z.string()).nullish()
1317
+ });
1318
+ var AgentToolRelationUpdateSchema = AgentToolRelationInsertSchema.partial();
1319
+ createApiSchema(AgentToolRelationSelectSchema);
1320
+ createApiInsertSchema(
1321
+ AgentToolRelationInsertSchema
1322
+ );
1323
+ createApiUpdateSchema(
1324
+ AgentToolRelationUpdateSchema
1325
+ );
1326
+ var LedgerArtifactSelectSchema = drizzleZod.createSelectSchema(ledgerArtifacts);
1327
+ var LedgerArtifactInsertSchema = drizzleZod.createInsertSchema(ledgerArtifacts);
1328
+ var LedgerArtifactUpdateSchema = LedgerArtifactInsertSchema.partial();
1329
+ createApiSchema(LedgerArtifactSelectSchema);
1330
+ createApiInsertSchema(LedgerArtifactInsertSchema);
1331
+ createApiUpdateSchema(LedgerArtifactUpdateSchema);
1332
+ var StatusComponentSchema = zodOpenapi.z.object({
1333
+ type: zodOpenapi.z.string(),
1334
+ description: zodOpenapi.z.string().optional(),
1335
+ detailsSchema: zodOpenapi.z.object({
1336
+ type: zodOpenapi.z.literal("object"),
1337
+ properties: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.any()),
1338
+ required: zodOpenapi.z.array(zodOpenapi.z.string()).optional()
1339
+ }).optional()
1340
+ });
1341
+ var StatusUpdateSchema = zodOpenapi.z.object({
1342
+ enabled: zodOpenapi.z.boolean().optional(),
1343
+ numEvents: zodOpenapi.z.number().min(1).max(100).optional(),
1344
+ timeInSeconds: zodOpenapi.z.number().min(1).max(600).optional(),
1345
+ prompt: zodOpenapi.z.string().max(2e3, "Custom prompt cannot exceed 2000 characters").optional(),
1346
+ statusComponents: zodOpenapi.z.array(StatusComponentSchema).optional()
1347
+ });
1348
+ var FullGraphAgentInsertSchema = AgentApiInsertSchema.extend({
1349
+ tools: zodOpenapi.z.array(zodOpenapi.z.string()),
1350
+ selectedTools: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.array(zodOpenapi.z.string())).optional(),
1351
+ dataComponents: zodOpenapi.z.array(zodOpenapi.z.string()).optional(),
1352
+ artifactComponents: zodOpenapi.z.array(zodOpenapi.z.string()).optional(),
1353
+ canTransferTo: zodOpenapi.z.array(zodOpenapi.z.string()).optional(),
1354
+ canDelegateTo: zodOpenapi.z.array(zodOpenapi.z.string()).optional()
1355
+ });
1356
+ AgentGraphApiInsertSchema.extend({
1357
+ agents: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.union([FullGraphAgentInsertSchema, ExternalAgentApiInsertSchema])),
1358
+ tools: zodOpenapi.z.record(zodOpenapi.z.string(), ToolApiInsertSchema).optional(),
1359
+ credentialReferences: zodOpenapi.z.array(CredentialReferenceApiInsertSchema).optional(),
1360
+ dataComponents: zodOpenapi.z.record(zodOpenapi.z.string(), DataComponentApiInsertSchema).optional(),
1361
+ artifactComponents: zodOpenapi.z.record(zodOpenapi.z.string(), ArtifactComponentApiInsertSchema).optional(),
1362
+ contextConfig: zodOpenapi.z.optional(ContextConfigApiInsertSchema),
1363
+ statusUpdates: zodOpenapi.z.optional(StatusUpdateSchema),
1364
+ models: ModelSchema.optional(),
1365
+ stopWhen: GraphStopWhenSchema.optional(),
1366
+ graphPrompt: zodOpenapi.z.string().max(5e3, "Graph prompt cannot exceed 5000 characters").optional()
1367
+ });
1368
+ var GraphWithinContextOfProjectSchema = AgentGraphApiInsertSchema.extend({
1369
+ agents: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.union([FullGraphAgentInsertSchema, ExternalAgentApiInsertSchema])),
1370
+ models: ModelSchema.optional(),
1371
+ stopWhen: GraphStopWhenSchema.optional(),
1372
+ graphPrompt: zodOpenapi.z.string().max(5e3, "Graph prompt cannot exceed 5000 characters").optional()
1373
+ });
1374
+ zodOpenapi.z.object({
1375
+ page: zodOpenapi.z.coerce.number().min(1).default(1),
1376
+ limit: zodOpenapi.z.coerce.number().min(1).max(100).default(10),
1377
+ total: zodOpenapi.z.number(),
1378
+ pages: zodOpenapi.z.number()
1379
+ });
1380
+ zodOpenapi.z.object({
1381
+ error: zodOpenapi.z.string(),
1382
+ message: zodOpenapi.z.string().optional(),
1383
+ details: zodOpenapi.z.unknown().optional()
1384
+ });
1385
+ zodOpenapi.z.object({
1386
+ exists: zodOpenapi.z.boolean()
1387
+ });
1388
+ zodOpenapi.z.object({
1389
+ message: zodOpenapi.z.string(),
1390
+ removed: zodOpenapi.z.boolean()
1391
+ });
1392
+ var ProjectSelectSchema = drizzleZod.createSelectSchema(projects);
1393
+ var ProjectInsertSchema = drizzleZod.createInsertSchema(projects).extend({
1394
+ models: ProjectModelSchema.optional(),
1395
+ stopWhen: StopWhenSchema.optional()
1396
+ }).omit({
1397
+ createdAt: true,
1398
+ updatedAt: true
1399
+ });
1400
+ var ProjectUpdateSchema = ProjectInsertSchema.partial();
1401
+ ProjectSelectSchema.omit({ tenantId: true });
1402
+ var ProjectApiInsertSchema = ProjectInsertSchema.omit({ tenantId: true });
1403
+ ProjectUpdateSchema.omit({ tenantId: true });
1404
+ ProjectApiInsertSchema.extend({
1405
+ graphs: zodOpenapi.z.record(zodOpenapi.z.string(), GraphWithinContextOfProjectSchema),
1406
+ tools: zodOpenapi.z.record(zodOpenapi.z.string(), ToolApiInsertSchema),
1407
+ dataComponents: zodOpenapi.z.record(zodOpenapi.z.string(), DataComponentApiInsertSchema).optional(),
1408
+ artifactComponents: zodOpenapi.z.record(zodOpenapi.z.string(), ArtifactComponentApiInsertSchema).optional(),
1409
+ contextConfig: zodOpenapi.z.record(zodOpenapi.z.string(), ContextConfigApiInsertSchema).optional(),
1410
+ statusUpdates: zodOpenapi.z.optional(StatusUpdateSchema),
1411
+ credentialReferences: zodOpenapi.z.array(CredentialReferenceApiInsertSchema).optional(),
1412
+ createdAt: zodOpenapi.z.string().optional(),
1413
+ updatedAt: zodOpenapi.z.string().optional()
1414
+ });
1415
+ zodOpenapi.z.object({
1416
+ "x-inkeep-tenant-id": zodOpenapi.z.string().optional().openapi({
1417
+ description: "Tenant identifier",
1418
+ example: "tenant_123"
1419
+ }),
1420
+ "x-inkeep-project-id": zodOpenapi.z.string().optional().openapi({
1421
+ description: "Project identifier",
1422
+ example: "project_456"
1423
+ }),
1424
+ "x-inkeep-graph-id": zodOpenapi.z.string().optional().openapi({
1425
+ description: "Graph identifier",
1426
+ example: "graph_789"
1427
+ })
1428
+ });
1429
+ zodOpenapi.z.object({
1430
+ tenantId: zodOpenapi.z.string().openapi({
1431
+ description: "Tenant identifier",
1432
+ example: "tenant_123"
1433
+ })
1434
+ }).openapi("TenantParams");
1435
+ zodOpenapi.z.object({
1436
+ tenantId: zodOpenapi.z.string().openapi({
1437
+ description: "Tenant identifier",
1438
+ example: "tenant_123"
1439
+ }),
1440
+ projectId: zodOpenapi.z.string().openapi({
1441
+ description: "Project identifier",
1442
+ example: "project_456"
1443
+ })
1444
+ }).openapi("TenantProjectParams");
1445
+ zodOpenapi.z.object({
1446
+ tenantId: zodOpenapi.z.string().openapi({
1447
+ description: "Tenant identifier",
1448
+ example: "tenant_123"
1449
+ }),
1450
+ projectId: zodOpenapi.z.string().openapi({
1451
+ description: "Project identifier",
1452
+ example: "project_456"
1453
+ }),
1454
+ id: resourceIdSchema
1455
+ }).openapi("TenantProjectIdParams");
1456
+ zodOpenapi.z.object({
1457
+ tenantId: zodOpenapi.z.string().openapi({
1458
+ description: "Tenant identifier",
1459
+ example: "tenant_123"
1460
+ }),
1461
+ id: resourceIdSchema
1462
+ }).openapi("TenantIdParams");
1463
+ zodOpenapi.z.object({
1464
+ id: resourceIdSchema
1465
+ }).openapi("IdParams");
1466
+ zodOpenapi.z.object({
1467
+ page: zodOpenapi.z.coerce.number().min(1).default(1),
1468
+ limit: zodOpenapi.z.coerce.number().min(1).max(100).default(10)
1469
+ });
1470
+
1471
+ // src/client-exports.ts
1472
+ var TenantParamsSchema2 = zod.z.object({
1473
+ tenantId: zod.z.string()
1474
+ });
1475
+ var TenantProjectParamsSchema2 = TenantParamsSchema2.extend({
1476
+ projectId: zod.z.string()
1477
+ });
1478
+ var TenantProjectIdParamsSchema2 = TenantProjectParamsSchema2.extend({
1479
+ id: zod.z.string()
1480
+ });
1481
+ var IdParamsSchema2 = zod.z.object({
1482
+ id: zod.z.string()
1483
+ });
1484
+ var PaginationSchema2 = zod.z.object({
1485
+ page: zod.z.coerce.number().min(1).default(1),
1486
+ limit: zod.z.coerce.number().min(1).max(100).default(10),
1487
+ total: zod.z.number(),
1488
+ pages: zod.z.number()
1489
+ });
1490
+ var ListResponseSchema = (itemSchema) => zod.z.object({
1491
+ data: zod.z.array(itemSchema),
1492
+ pagination: PaginationSchema2
1493
+ });
1494
+ var SingleResponseSchema = (itemSchema) => zod.z.object({
1495
+ data: itemSchema
1496
+ });
1497
+ var ErrorResponseSchema2 = zod.z.object({
1498
+ error: zod.z.string(),
1499
+ message: zod.z.string().optional(),
1500
+ details: zod.z.unknown().optional()
1501
+ });
1502
+ var ModelSettingsSchema2 = zod.z.object({
1503
+ model: zod.z.string().optional(),
1504
+ structuredOutput: zod.z.string().optional(),
1505
+ summarizer: zod.z.string().optional(),
1506
+ providerOptions: zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), zod.z.unknown())).optional()
1507
+ });
1508
+ var AgentApiInsertSchema2 = zod.z.object({
1509
+ id: zod.z.string().optional(),
1510
+ name: zod.z.string(),
1511
+ description: zod.z.string().optional(),
1512
+ prompt: zod.z.string().optional(),
1513
+ model: ModelSettingsSchema2.optional(),
1514
+ tools: zod.z.array(zod.z.string()).optional(),
1515
+ dataComponents: zod.z.array(zod.z.string()).optional(),
1516
+ artifactComponents: zod.z.array(zod.z.string()).optional(),
1517
+ canTransferTo: zod.z.array(zod.z.string()).optional(),
1518
+ canDelegateTo: zod.z.array(zod.z.string()).optional(),
1519
+ type: zod.z.enum(["internal", "external"]).optional()
1520
+ });
1521
+ var ToolApiInsertSchema2 = zod.z.object({
1522
+ id: zod.z.string().optional(),
1523
+ name: zod.z.string(),
1524
+ description: zod.z.string().optional(),
1525
+ type: zod.z.enum(["mcp", "hosted"]),
1526
+ config: zod.z.record(zod.z.string(), zod.z.unknown()),
1527
+ credentialReferenceId: zod.z.string().optional()
1528
+ });
1529
+ var ApiKeyApiSelectSchema2 = zod.z.object({
1530
+ id: zod.z.string(),
1531
+ tenantId: zod.z.string(),
1532
+ projectId: zod.z.string(),
1533
+ graphId: zod.z.string(),
1534
+ publicId: zod.z.string(),
1535
+ keyHash: zod.z.string(),
1536
+ keyPrefix: zod.z.string(),
1537
+ name: zod.z.string().optional(),
1538
+ lastUsedAt: zod.z.string().optional(),
1539
+ expiresAt: zod.z.string().optional(),
1540
+ createdAt: zod.z.string(),
1541
+ updatedAt: zod.z.string()
1542
+ });
1543
+ var ApiKeyApiCreationResponseSchema2 = zod.z.object({
1544
+ data: zod.z.object({
1545
+ apiKey: ApiKeyApiSelectSchema2,
1546
+ key: zod.z.string()
1547
+ })
1548
+ });
1549
+ var CredentialReferenceApiInsertSchema2 = zod.z.object({
1550
+ id: zod.z.string(),
1551
+ tenantId: zod.z.string().optional(),
1552
+ projectId: zod.z.string().optional(),
1553
+ type: zod.z.enum(CredentialStoreType),
1554
+ credentialStoreId: zod.z.string(),
1555
+ retrievalParams: zod.z.record(zod.z.string(), zod.z.unknown()).nullish()
1556
+ });
1557
+ var DataComponentApiInsertSchema2 = zod.z.object({
1558
+ id: zod.z.string().optional(),
1559
+ name: zod.z.string(),
1560
+ description: zod.z.string().optional(),
1561
+ props: zod.z.record(zod.z.string(), zod.z.unknown())
1562
+ });
1563
+ var ArtifactComponentApiInsertSchema2 = zod.z.object({
1564
+ id: zod.z.string().optional(),
1565
+ name: zod.z.string(),
1566
+ description: zod.z.string().optional(),
1567
+ summaryProps: zod.z.record(zod.z.string(), zod.z.unknown()),
1568
+ fullProps: zod.z.record(zod.z.string(), zod.z.unknown())
1569
+ });
1570
+ var ContextConfigApiInsertSchema2 = zod.z.object({
1571
+ id: zod.z.string().optional(),
1572
+ name: zod.z.string().optional(),
1573
+ description: zod.z.string().optional(),
1574
+ type: zod.z.string().optional(),
1575
+ config: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
1576
+ });
1577
+ var ExternalAgentApiInsertSchema2 = zod.z.object({
1578
+ id: zod.z.string().optional(),
1579
+ name: zod.z.string(),
1580
+ description: zod.z.string().optional(),
1581
+ baseUrl: zod.z.string(),
1582
+ type: zod.z.literal("external").optional()
1583
+ });
1584
+ var AgentGraphApiInsertSchema2 = zod.z.object({
1585
+ id: zod.z.string().optional(),
1586
+ name: zod.z.string(),
1587
+ description: zod.z.string().optional(),
1588
+ defaultAgentId: zod.z.string().optional()
1589
+ });
1590
+ var FullGraphDefinitionSchema2 = AgentGraphApiInsertSchema2.extend({
1591
+ agents: zod.z.record(
1592
+ zod.z.string(),
1593
+ zod.z.union([
1594
+ AgentApiInsertSchema2.extend({
1595
+ id: zod.z.string(),
1596
+ tools: zod.z.array(zod.z.string()),
1597
+ dataComponents: zod.z.array(zod.z.string()).optional(),
1598
+ artifactComponents: zod.z.array(zod.z.string()).optional(),
1599
+ canTransferTo: zod.z.array(zod.z.string()).optional(),
1600
+ canDelegateTo: zod.z.array(zod.z.string()).optional(),
1601
+ type: zod.z.enum(["internal", "external"]).optional(),
1602
+ models: zod.z.object({
1603
+ base: zod.z.object({
1604
+ model: zod.z.string(),
1605
+ providerOptions: zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), zod.z.unknown())).optional()
1606
+ }).optional(),
1607
+ structuredOutput: zod.z.object({
1608
+ model: zod.z.string(),
1609
+ providerOptions: zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), zod.z.unknown())).optional()
1610
+ }).optional(),
1611
+ summarizer: zod.z.object({
1612
+ model: zod.z.string(),
1613
+ providerOptions: zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), zod.z.unknown())).optional()
1614
+ }).optional()
1615
+ }).optional()
1616
+ }),
1617
+ ExternalAgentApiInsertSchema2.extend({
1618
+ id: zod.z.string()
1619
+ })
1620
+ ])
1621
+ ),
1622
+ tools: zod.z.record(zod.z.string(), ToolApiInsertSchema2),
1623
+ credentialReferences: zod.z.array(CredentialReferenceApiInsertSchema2).optional(),
1624
+ dataComponents: zod.z.record(zod.z.string(), DataComponentApiInsertSchema2).optional(),
1625
+ artifactComponents: zod.z.record(zod.z.string(), ArtifactComponentApiInsertSchema2).optional(),
1626
+ contextConfig: zod.z.optional(ContextConfigApiInsertSchema2),
1627
+ models: zod.z.object({
1628
+ base: zod.z.object({
1629
+ model: zod.z.string(),
1630
+ providerOptions: zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), zod.z.unknown())).optional()
1631
+ }).optional(),
1632
+ structuredOutput: zod.z.object({
1633
+ model: zod.z.string(),
1634
+ providerOptions: zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), zod.z.unknown())).optional()
1635
+ }).optional(),
1636
+ summarizer: zod.z.object({
1637
+ model: zod.z.string(),
1638
+ providerOptions: zod.z.record(zod.z.string(), zod.z.record(zod.z.string(), zod.z.unknown())).optional()
1639
+ }).optional()
1640
+ }).optional(),
1641
+ stopWhen: zod.z.object({
1642
+ transferCountIs: zod.z.number().min(1).max(100).optional()
1643
+ }).optional(),
1644
+ graphPrompt: zod.z.string().max(5e3).optional(),
1645
+ statusUpdates: zod.z.object({
1646
+ enabled: zod.z.boolean().optional(),
1647
+ numEvents: zod.z.number().min(1).max(100).optional(),
1648
+ timeInSeconds: zod.z.number().min(1).max(600).optional(),
1649
+ prompt: zod.z.string().max(2e3).optional(),
1650
+ statusComponents: zod.z.array(
1651
+ zod.z.object({
1652
+ type: zod.z.string(),
1653
+ description: zod.z.string().optional(),
1654
+ detailsSchema: zod.z.object({
1655
+ type: zod.z.literal("object"),
1656
+ properties: zod.z.record(zod.z.string(), zod.z.any()),
1657
+ required: zod.z.array(zod.z.string()).optional()
1658
+ }).optional()
1659
+ })
1660
+ ).optional()
1661
+ }).optional()
1662
+ });
1663
+ var MIN_ID_LENGTH2 = 1;
1664
+ var MAX_ID_LENGTH2 = 255;
1665
+ var URL_SAFE_ID_PATTERN2 = /^[a-zA-Z0-9\-_.]+$/;
1666
+ var resourceIdSchema2 = zod.z.string().min(MIN_ID_LENGTH2).max(MAX_ID_LENGTH2).regex(URL_SAFE_ID_PATTERN2, {
1667
+ message: "ID must contain only letters, numbers, hyphens, underscores, and dots"
1668
+ });
1669
+ function generateIdFromName(name) {
1670
+ return name.toLowerCase().replace(/[^a-zA-Z0-9]/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "").slice(0, MAX_ID_LENGTH2);
1671
+ }
1672
+
1673
+ exports.AgentApiInsertSchema = AgentApiInsertSchema2;
1674
+ exports.AgentGraphApiInsertSchema = AgentGraphApiInsertSchema2;
1675
+ exports.AgentStopWhenSchema = AgentStopWhenSchema;
1676
+ exports.ApiKeyApiCreationResponseSchema = ApiKeyApiCreationResponseSchema2;
1677
+ exports.ApiKeyApiSelectSchema = ApiKeyApiSelectSchema2;
1678
+ exports.ArtifactComponentApiInsertSchema = ArtifactComponentApiInsertSchema2;
1679
+ exports.ContextConfigApiInsertSchema = ContextConfigApiInsertSchema2;
1680
+ exports.CredentialReferenceApiInsertSchema = CredentialReferenceApiInsertSchema2;
1681
+ exports.CredentialStoreType = CredentialStoreType;
1682
+ exports.DataComponentApiInsertSchema = DataComponentApiInsertSchema2;
1683
+ exports.ErrorResponseSchema = ErrorResponseSchema2;
1684
+ exports.ExternalAgentApiInsertSchema = ExternalAgentApiInsertSchema2;
1685
+ exports.FullGraphDefinitionSchema = FullGraphDefinitionSchema2;
1686
+ exports.GraphStopWhenSchema = GraphStopWhenSchema;
1687
+ exports.IdParamsSchema = IdParamsSchema2;
1688
+ exports.ListResponseSchema = ListResponseSchema;
1689
+ exports.MAX_ID_LENGTH = MAX_ID_LENGTH2;
1690
+ exports.MCPTransportType = MCPTransportType;
1691
+ exports.MIN_ID_LENGTH = MIN_ID_LENGTH2;
1692
+ exports.ModelSettingsSchema = ModelSettingsSchema2;
1693
+ exports.PaginationSchema = PaginationSchema2;
1694
+ exports.SingleResponseSchema = SingleResponseSchema;
1695
+ exports.StopWhenSchema = StopWhenSchema;
1696
+ exports.TenantParamsSchema = TenantParamsSchema2;
1697
+ exports.TenantProjectIdParamsSchema = TenantProjectIdParamsSchema2;
1698
+ exports.TenantProjectParamsSchema = TenantProjectParamsSchema2;
1699
+ exports.ToolApiInsertSchema = ToolApiInsertSchema2;
1700
+ exports.URL_SAFE_ID_PATTERN = URL_SAFE_ID_PATTERN2;
1701
+ exports.generateIdFromName = generateIdFromName;
1702
+ exports.resourceIdSchema = resourceIdSchema2;