@inkeep/agents-core 0.31.7 → 0.32.0

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 (61) hide show
  1. package/dist/{chunk-RBUBOGX6.js → chunk-FUJJ4OQ2.js} +62 -10
  2. package/dist/chunk-SVXWB2HF.js +592 -0
  3. package/dist/{chunk-T5TTDZ6L.js → chunk-VSQY72K5.js} +133 -133
  4. package/dist/{chunk-PPBBIDK4.js → chunk-X6ZMJ3G6.js} +1 -1
  5. package/dist/client-exports.cjs +283 -224
  6. package/dist/client-exports.d.cts +7 -7
  7. package/dist/client-exports.d.ts +7 -7
  8. package/dist/client-exports.js +15 -7
  9. package/dist/db/schema.cjs +211 -211
  10. package/dist/db/schema.d.cts +3 -3
  11. package/dist/db/schema.d.ts +3 -3
  12. package/dist/db/schema.js +1 -1
  13. package/dist/index.cjs +18511 -12300
  14. package/dist/index.d.cts +409 -352
  15. package/dist/index.d.ts +409 -352
  16. package/dist/index.js +16250 -11076
  17. package/dist/nodefs-X2JO4ZHZ.js +21 -0
  18. package/dist/opfs-ahp-2UFDGV73.js +318 -0
  19. package/dist/{schema-lEFnfOQ-.d.ts → schema-CuEjPQt7.d.ts} +876 -1014
  20. package/dist/{schema-ztSm-Iv6.d.cts → schema-D1P8r3qm.d.cts} +876 -1014
  21. package/dist/types/index.d.cts +3 -3
  22. package/dist/types/index.d.ts +3 -3
  23. package/dist/{utility-qLyZ45lb.d.cts → utility-DF5IUC9K.d.cts} +1230 -1394
  24. package/dist/{utility-qLyZ45lb.d.ts → utility-DF5IUC9K.d.ts} +1230 -1394
  25. package/dist/validation/index.cjs +270 -219
  26. package/dist/validation/index.d.cts +3 -3
  27. package/dist/validation/index.d.ts +3 -3
  28. package/dist/validation/index.js +2 -2
  29. package/drizzle/0000_exotic_mysterio.sql +398 -0
  30. package/drizzle/meta/0000_snapshot.json +1683 -1223
  31. package/drizzle/meta/_journal.json +4 -102
  32. package/package.json +6 -3
  33. package/drizzle/0000_material_menace.sql +0 -326
  34. package/drizzle/0001_eminent_fixer.sql +0 -43
  35. package/drizzle/0002_bumpy_romulus.sql +0 -3
  36. package/drizzle/0003_soft_forgotten_one.sql +0 -39
  37. package/drizzle/0004_melted_omega_flight.sql +0 -3
  38. package/drizzle/0005_wide_shriek.sql +0 -127
  39. package/drizzle/0006_damp_lenny_balinger.sql +0 -52
  40. package/drizzle/0007_mighty_typhoid_mary.sql +0 -227
  41. package/drizzle/0008_mysterious_crusher_hogan.sql +0 -20
  42. package/drizzle/0009_old_black_cat.sql +0 -1
  43. package/drizzle/0010_wet_vampiro.sql +0 -2
  44. package/drizzle/0011_slippery_korg.sql +0 -36
  45. package/drizzle/0012_salty_psynapse.sql +0 -17
  46. package/drizzle/0013_shocking_blur.sql +0 -19
  47. package/drizzle/0014_broad_hellfire_club.sql +0 -29
  48. package/drizzle/meta/0001_snapshot.json +0 -2435
  49. package/drizzle/meta/0002_snapshot.json +0 -2428
  50. package/drizzle/meta/0003_snapshot.json +0 -2559
  51. package/drizzle/meta/0004_snapshot.json +0 -2547
  52. package/drizzle/meta/0005_snapshot.json +0 -2558
  53. package/drizzle/meta/0006_snapshot.json +0 -2751
  54. package/drizzle/meta/0007_snapshot.json +0 -2766
  55. package/drizzle/meta/0008_snapshot.json +0 -2753
  56. package/drizzle/meta/0009_snapshot.json +0 -2744
  57. package/drizzle/meta/0010_snapshot.json +0 -2751
  58. package/drizzle/meta/0011_snapshot.json +0 -2849
  59. package/drizzle/meta/0012_snapshot.json +0 -2985
  60. package/drizzle/meta/0013_snapshot.json +0 -2988
  61. package/drizzle/meta/0014_snapshot.json +0 -2992
@@ -3,7 +3,7 @@
3
3
  var zodOpenapi = require('@hono/zod-openapi');
4
4
  var drizzleZod = require('drizzle-zod');
5
5
  var drizzleOrm = require('drizzle-orm');
6
- var sqliteCore = require('drizzle-orm/sqlite-core');
6
+ var pgCore = require('drizzle-orm/pg-core');
7
7
  var zod = require('zod');
8
8
  var Ajv = require('ajv');
9
9
 
@@ -55,166 +55,198 @@ function buildDelegationGraph(agentData) {
55
55
  }
56
56
  return graph;
57
57
  }
58
+
59
+ // src/constants/schema-validation/defaults.ts
60
+ var schemaValidationDefaults = {
61
+ // Agent Execution Transfer Count
62
+ // Controls how many times an agent can transfer control to sub-agents in a single conversation turn.
63
+ // This prevents infinite transfer loops while allowing multi-agent collaboration workflows.
64
+ AGENT_EXECUTION_TRANSFER_COUNT_MIN: 1,
65
+ AGENT_EXECUTION_TRANSFER_COUNT_MAX: 1e3,
66
+ // Sub-Agent Turn Generation Steps
67
+ // Limits how many AI generation steps a sub-agent can perform within a single turn.
68
+ // Each generation step typically involves sending a prompt to the LLM and processing its response.
69
+ // This prevents runaway token usage while allowing complex multi-step reasoning.
70
+ SUB_AGENT_TURN_GENERATION_STEPS_MIN: 1,
71
+ SUB_AGENT_TURN_GENERATION_STEPS_MAX: 1e3,
72
+ // Status Update Thresholds
73
+ // Real-time status updates are triggered when either threshold is exceeded during longer operations.
74
+ // MAX_NUM_EVENTS: Maximum number of internal events before forcing a status update to the client.
75
+ // MAX_INTERVAL_SECONDS: Maximum time between status updates regardless of event count.
76
+ STATUS_UPDATE_MAX_NUM_EVENTS: 100,
77
+ STATUS_UPDATE_MAX_INTERVAL_SECONDS: 600,
78
+ // 10 minutes
79
+ // Prompt Text Length Validation
80
+ // Maximum character limits for agent and sub-agent system prompts to prevent excessive token usage.
81
+ // Enforced during agent configuration to ensure prompts remain focused and manageable.
82
+ VALIDATION_SUB_AGENT_PROMPT_MAX_CHARS: 2e3,
83
+ VALIDATION_AGENT_PROMPT_MAX_CHARS: 5e3,
84
+ // Context Fetcher HTTP Timeout
85
+ // Maximum time allowed for HTTP requests made by Context Fetchers (e.g., CRM lookups, external API calls).
86
+ // Context Fetchers automatically retrieve external data at the start of a conversation to enrich agent context.
87
+ CONTEXT_FETCHER_HTTP_TIMEOUT_MS_DEFAULT: 1e4
88
+ // 10 seconds
89
+ };
58
90
  var tenantScoped = {
59
- tenantId: sqliteCore.text("tenant_id").notNull(),
60
- id: sqliteCore.text("id").notNull()
91
+ tenantId: pgCore.varchar("tenant_id", { length: 256 }).notNull(),
92
+ id: pgCore.varchar("id", { length: 256 }).notNull()
61
93
  };
62
94
  var projectScoped = {
63
95
  ...tenantScoped,
64
- projectId: sqliteCore.text("project_id").notNull()
96
+ projectId: pgCore.varchar("project_id", { length: 256 }).notNull()
65
97
  };
66
98
  var agentScoped = {
67
99
  ...projectScoped,
68
- agentId: sqliteCore.text("agent_id").notNull()
100
+ agentId: pgCore.varchar("agent_id", { length: 256 }).notNull()
69
101
  };
70
102
  var subAgentScoped = {
71
103
  ...agentScoped,
72
- subAgentId: sqliteCore.text("sub_agent_id").notNull()
104
+ subAgentId: pgCore.varchar("sub_agent_id", { length: 256 }).notNull()
73
105
  };
74
106
  var uiProperties = {
75
- name: sqliteCore.text("name").notNull(),
76
- description: sqliteCore.text("description").notNull()
107
+ name: pgCore.varchar("name", { length: 256 }).notNull(),
108
+ description: pgCore.text("description").notNull()
77
109
  };
78
110
  var timestamps = {
79
- createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`),
80
- updatedAt: sqliteCore.text("updated_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
111
+ createdAt: pgCore.timestamp("created_at", { mode: "string" }).notNull().defaultNow(),
112
+ updatedAt: pgCore.timestamp("updated_at", { mode: "string" }).notNull().defaultNow()
81
113
  };
82
- var projects = sqliteCore.sqliteTable(
114
+ var projects = pgCore.pgTable(
83
115
  "projects",
84
116
  {
85
117
  ...tenantScoped,
86
118
  ...uiProperties,
87
- models: sqliteCore.text("models", { mode: "json" }).$type(),
88
- stopWhen: sqliteCore.text("stop_when", { mode: "json" }).$type(),
119
+ models: pgCore.jsonb("models").$type(),
120
+ stopWhen: pgCore.jsonb("stop_when").$type(),
89
121
  ...timestamps
90
122
  },
91
- (table) => [sqliteCore.primaryKey({ columns: [table.tenantId, table.id] })]
123
+ (table) => [pgCore.primaryKey({ columns: [table.tenantId, table.id] })]
92
124
  );
93
- var agents = sqliteCore.sqliteTable(
125
+ var agents = pgCore.pgTable(
94
126
  "agent",
95
127
  {
96
128
  ...projectScoped,
97
- name: sqliteCore.text("name").notNull(),
98
- description: sqliteCore.text("description"),
99
- defaultSubAgentId: sqliteCore.text("default_sub_agent_id"),
100
- contextConfigId: sqliteCore.text("context_config_id"),
101
- models: sqliteCore.text("models", { mode: "json" }).$type(),
102
- statusUpdates: sqliteCore.text("status_updates", { mode: "json" }).$type(),
103
- prompt: sqliteCore.text("prompt"),
104
- stopWhen: sqliteCore.text("stop_when", { mode: "json" }).$type(),
129
+ name: pgCore.varchar("name", { length: 256 }).notNull(),
130
+ description: pgCore.text("description"),
131
+ defaultSubAgentId: pgCore.varchar("default_sub_agent_id", { length: 256 }),
132
+ contextConfigId: pgCore.varchar("context_config_id", { length: 256 }),
133
+ models: pgCore.jsonb("models").$type(),
134
+ statusUpdates: pgCore.jsonb("status_updates").$type(),
135
+ prompt: pgCore.text("prompt"),
136
+ stopWhen: pgCore.jsonb("stop_when").$type(),
105
137
  ...timestamps
106
138
  },
107
139
  (table) => [
108
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
109
- sqliteCore.foreignKey({
140
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
141
+ pgCore.foreignKey({
110
142
  columns: [table.tenantId, table.projectId],
111
143
  foreignColumns: [projects.tenantId, projects.id],
112
144
  name: "agent_project_fk"
113
145
  }).onDelete("cascade")
114
146
  ]
115
147
  );
116
- var contextConfigs = sqliteCore.sqliteTable(
148
+ var contextConfigs = pgCore.pgTable(
117
149
  "context_configs",
118
150
  {
119
151
  ...agentScoped,
120
- headersSchema: sqliteCore.blob("headers_schema", { mode: "json" }).$type(),
121
- contextVariables: sqliteCore.blob("context_variables", { mode: "json" }).$type(),
152
+ headersSchema: pgCore.jsonb("headers_schema").$type(),
153
+ contextVariables: pgCore.jsonb("context_variables").$type(),
122
154
  ...timestamps
123
155
  },
124
156
  (table) => [
125
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
126
- sqliteCore.foreignKey({
157
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
158
+ pgCore.foreignKey({
127
159
  columns: [table.tenantId, table.projectId, table.agentId],
128
160
  foreignColumns: [agents.tenantId, agents.projectId, agents.id],
129
161
  name: "context_configs_agent_fk"
130
162
  }).onDelete("cascade")
131
163
  ]
132
164
  );
133
- var contextCache = sqliteCore.sqliteTable(
165
+ var contextCache = pgCore.pgTable(
134
166
  "context_cache",
135
167
  {
136
168
  ...projectScoped,
137
- conversationId: sqliteCore.text("conversation_id").notNull(),
138
- contextConfigId: sqliteCore.text("context_config_id").notNull(),
139
- contextVariableKey: sqliteCore.text("context_variable_key").notNull(),
140
- value: sqliteCore.blob("value", { mode: "json" }).$type().notNull(),
141
- requestHash: sqliteCore.text("request_hash"),
142
- fetchedAt: sqliteCore.text("fetched_at").notNull(),
143
- fetchSource: sqliteCore.text("fetch_source"),
144
- fetchDurationMs: sqliteCore.integer("fetch_duration_ms"),
169
+ conversationId: pgCore.varchar("conversation_id", { length: 256 }).notNull(),
170
+ contextConfigId: pgCore.varchar("context_config_id", { length: 256 }).notNull(),
171
+ contextVariableKey: pgCore.varchar("context_variable_key", { length: 256 }).notNull(),
172
+ value: pgCore.jsonb("value").$type().notNull(),
173
+ requestHash: pgCore.varchar("request_hash", { length: 256 }),
174
+ fetchedAt: pgCore.timestamp("fetched_at", { mode: "string" }).notNull().defaultNow(),
175
+ fetchSource: pgCore.varchar("fetch_source", { length: 256 }),
176
+ fetchDurationMs: pgCore.integer("fetch_duration_ms"),
145
177
  ...timestamps
146
178
  },
147
179
  (table) => [
148
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
149
- sqliteCore.foreignKey({
180
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
181
+ pgCore.foreignKey({
150
182
  columns: [table.tenantId, table.projectId],
151
183
  foreignColumns: [projects.tenantId, projects.id],
152
184
  name: "context_cache_project_fk"
153
185
  }).onDelete("cascade"),
154
- sqliteCore.index("context_cache_lookup_idx").on(
186
+ pgCore.index("context_cache_lookup_idx").on(
155
187
  table.conversationId,
156
188
  table.contextConfigId,
157
189
  table.contextVariableKey
158
190
  )
159
191
  ]
160
192
  );
161
- var subAgents = sqliteCore.sqliteTable(
193
+ var subAgents = pgCore.pgTable(
162
194
  "sub_agents",
163
195
  {
164
196
  ...agentScoped,
165
197
  ...uiProperties,
166
- prompt: sqliteCore.text("prompt").notNull(),
167
- conversationHistoryConfig: sqliteCore.text("conversation_history_config", {
168
- mode: "json"
169
- }).$type(),
170
- models: sqliteCore.text("models", { mode: "json" }).$type(),
171
- stopWhen: sqliteCore.text("stop_when", { mode: "json" }).$type(),
198
+ prompt: pgCore.text("prompt").notNull(),
199
+ conversationHistoryConfig: pgCore.jsonb(
200
+ "conversation_history_config"
201
+ ).$type(),
202
+ models: pgCore.jsonb("models").$type(),
203
+ stopWhen: pgCore.jsonb("stop_when").$type(),
172
204
  ...timestamps
173
205
  },
174
206
  (table) => [
175
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
176
- sqliteCore.foreignKey({
207
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
208
+ pgCore.foreignKey({
177
209
  columns: [table.tenantId, table.projectId, table.agentId],
178
210
  foreignColumns: [agents.tenantId, agents.projectId, agents.id],
179
211
  name: "sub_agents_agents_fk"
180
212
  }).onDelete("cascade")
181
213
  ]
182
214
  );
183
- var subAgentRelations = sqliteCore.sqliteTable(
215
+ var subAgentRelations = pgCore.pgTable(
184
216
  "sub_agent_relations",
185
217
  {
186
218
  ...agentScoped,
187
- sourceSubAgentId: sqliteCore.text("source_sub_agent_id").notNull(),
188
- targetSubAgentId: sqliteCore.text("target_sub_agent_id"),
189
- relationType: sqliteCore.text("relation_type"),
219
+ sourceSubAgentId: pgCore.varchar("source_sub_agent_id", { length: 256 }).notNull(),
220
+ targetSubAgentId: pgCore.varchar("target_sub_agent_id", { length: 256 }),
221
+ relationType: pgCore.varchar("relation_type", { length: 256 }),
190
222
  ...timestamps
191
223
  },
192
224
  (table) => [
193
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
194
- sqliteCore.foreignKey({
225
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
226
+ pgCore.foreignKey({
195
227
  columns: [table.tenantId, table.projectId, table.agentId],
196
228
  foreignColumns: [agents.tenantId, agents.projectId, agents.id],
197
229
  name: "sub_agent_relations_agent_fk"
198
230
  }).onDelete("cascade")
199
231
  ]
200
232
  );
201
- var externalAgents = sqliteCore.sqliteTable(
233
+ var externalAgents = pgCore.pgTable(
202
234
  "external_agents",
203
235
  {
204
236
  ...projectScoped,
205
237
  ...uiProperties,
206
- baseUrl: sqliteCore.text("base_url").notNull(),
207
- credentialReferenceId: sqliteCore.text("credential_reference_id"),
238
+ baseUrl: pgCore.text("base_url").notNull(),
239
+ credentialReferenceId: pgCore.varchar("credential_reference_id", { length: 256 }),
208
240
  ...timestamps
209
241
  },
210
242
  (table) => [
211
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
212
- sqliteCore.foreignKey({
243
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
244
+ pgCore.foreignKey({
213
245
  columns: [table.tenantId, table.projectId],
214
246
  foreignColumns: [projects.tenantId, projects.id],
215
247
  name: "external_agents_project_fk"
216
248
  }).onDelete("cascade"),
217
- sqliteCore.foreignKey({
249
+ pgCore.foreignKey({
218
250
  columns: [table.tenantId, table.projectId, table.credentialReferenceId],
219
251
  foreignColumns: [
220
252
  credentialReferences.tenantId,
@@ -222,118 +254,118 @@ var externalAgents = sqliteCore.sqliteTable(
222
254
  credentialReferences.id
223
255
  ],
224
256
  name: "external_agents_credential_reference_fk"
225
- }).onDelete("set null")
257
+ }).onDelete("cascade")
226
258
  ]
227
259
  );
228
- var tasks = sqliteCore.sqliteTable(
260
+ var tasks = pgCore.pgTable(
229
261
  "tasks",
230
262
  {
231
263
  ...subAgentScoped,
232
- contextId: sqliteCore.text("context_id").notNull(),
233
- status: sqliteCore.text("status").notNull(),
234
- metadata: sqliteCore.blob("metadata", { mode: "json" }).$type(),
264
+ contextId: pgCore.varchar("context_id", { length: 256 }).notNull(),
265
+ status: pgCore.varchar("status", { length: 256 }).notNull(),
266
+ metadata: pgCore.jsonb("metadata").$type(),
235
267
  ...timestamps
236
268
  },
237
269
  (table) => [
238
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
239
- sqliteCore.foreignKey({
270
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
271
+ pgCore.foreignKey({
240
272
  columns: [table.tenantId, table.projectId, table.agentId, table.subAgentId],
241
273
  foreignColumns: [subAgents.tenantId, subAgents.projectId, subAgents.agentId, subAgents.id],
242
274
  name: "tasks_sub_agent_fk"
243
275
  }).onDelete("cascade")
244
276
  ]
245
277
  );
246
- var taskRelations = sqliteCore.sqliteTable(
278
+ var taskRelations = pgCore.pgTable(
247
279
  "task_relations",
248
280
  {
249
281
  ...projectScoped,
250
- parentTaskId: sqliteCore.text("parent_task_id").notNull(),
251
- childTaskId: sqliteCore.text("child_task_id").notNull(),
252
- relationType: sqliteCore.text("relation_type").default("parent_child"),
282
+ parentTaskId: pgCore.varchar("parent_task_id", { length: 256 }).notNull(),
283
+ childTaskId: pgCore.varchar("child_task_id", { length: 256 }).notNull(),
284
+ relationType: pgCore.varchar("relation_type", { length: 256 }).default("parent_child"),
253
285
  ...timestamps
254
286
  },
255
287
  (table) => [
256
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
257
- sqliteCore.foreignKey({
288
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
289
+ pgCore.foreignKey({
258
290
  columns: [table.tenantId, table.projectId],
259
291
  foreignColumns: [projects.tenantId, projects.id],
260
292
  name: "task_relations_project_fk"
261
293
  }).onDelete("cascade")
262
294
  ]
263
295
  );
264
- var dataComponents = sqliteCore.sqliteTable(
296
+ var dataComponents = pgCore.pgTable(
265
297
  "data_components",
266
298
  {
267
299
  ...projectScoped,
268
300
  ...uiProperties,
269
- props: sqliteCore.blob("props", { mode: "json" }).$type(),
270
- render: sqliteCore.blob("render", { mode: "json" }).$type(),
301
+ props: pgCore.jsonb("props").$type(),
302
+ render: pgCore.jsonb("render").$type(),
271
303
  ...timestamps
272
304
  },
273
305
  (table) => [
274
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
275
- sqliteCore.foreignKey({
306
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
307
+ pgCore.foreignKey({
276
308
  columns: [table.tenantId, table.projectId],
277
309
  foreignColumns: [projects.tenantId, projects.id],
278
310
  name: "data_components_project_fk"
279
311
  }).onDelete("cascade")
280
312
  ]
281
313
  );
282
- var subAgentDataComponents = sqliteCore.sqliteTable(
314
+ var subAgentDataComponents = pgCore.pgTable(
283
315
  "sub_agent_data_components",
284
316
  {
285
317
  ...subAgentScoped,
286
- dataComponentId: sqliteCore.text("data_component_id").notNull(),
287
- createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
318
+ dataComponentId: pgCore.varchar("data_component_id", { length: 256 }).notNull(),
319
+ createdAt: pgCore.timestamp("created_at", { mode: "string" }).notNull().defaultNow()
288
320
  },
289
321
  (table) => [
290
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
291
- sqliteCore.foreignKey({
322
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
323
+ pgCore.foreignKey({
292
324
  columns: [table.tenantId, table.projectId, table.agentId, table.subAgentId],
293
325
  foreignColumns: [subAgents.tenantId, subAgents.projectId, subAgents.agentId, subAgents.id],
294
326
  name: "sub_agent_data_components_sub_agent_fk"
295
327
  }).onDelete("cascade"),
296
- sqliteCore.foreignKey({
328
+ pgCore.foreignKey({
297
329
  columns: [table.tenantId, table.projectId, table.dataComponentId],
298
330
  foreignColumns: [dataComponents.tenantId, dataComponents.projectId, dataComponents.id],
299
331
  name: "sub_agent_data_components_data_component_fk"
300
332
  }).onDelete("cascade")
301
333
  ]
302
334
  );
303
- var artifactComponents = sqliteCore.sqliteTable(
335
+ var artifactComponents = pgCore.pgTable(
304
336
  "artifact_components",
305
337
  {
306
338
  ...projectScoped,
307
339
  ...uiProperties,
308
- props: sqliteCore.blob("props", { mode: "json" }).$type(),
340
+ props: pgCore.jsonb("props").$type(),
309
341
  ...timestamps
310
342
  },
311
343
  (table) => [
312
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
313
- sqliteCore.foreignKey({
344
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
345
+ pgCore.foreignKey({
314
346
  columns: [table.tenantId, table.projectId],
315
347
  foreignColumns: [projects.tenantId, projects.id],
316
348
  name: "artifact_components_project_fk"
317
349
  }).onDelete("cascade")
318
350
  ]
319
351
  );
320
- var subAgentArtifactComponents = sqliteCore.sqliteTable(
352
+ var subAgentArtifactComponents = pgCore.pgTable(
321
353
  "sub_agent_artifact_components",
322
354
  {
323
355
  ...subAgentScoped,
324
- artifactComponentId: sqliteCore.text("artifact_component_id").notNull(),
325
- createdAt: sqliteCore.text("created_at").notNull().default(drizzleOrm.sql`CURRENT_TIMESTAMP`)
356
+ artifactComponentId: pgCore.varchar("artifact_component_id", { length: 256 }).notNull(),
357
+ createdAt: pgCore.timestamp("created_at", { mode: "string" }).notNull().defaultNow()
326
358
  },
327
359
  (table) => [
328
- sqliteCore.primaryKey({
360
+ pgCore.primaryKey({
329
361
  columns: [table.tenantId, table.projectId, table.agentId, table.subAgentId, table.id]
330
362
  }),
331
- sqliteCore.foreignKey({
363
+ pgCore.foreignKey({
332
364
  columns: [table.tenantId, table.projectId, table.agentId, table.subAgentId],
333
365
  foreignColumns: [subAgents.tenantId, subAgents.projectId, subAgents.agentId, subAgents.id],
334
366
  name: "sub_agent_artifact_components_sub_agent_fk"
335
367
  }).onDelete("cascade"),
336
- sqliteCore.foreignKey({
368
+ pgCore.foreignKey({
337
369
  columns: [table.tenantId, table.projectId, table.artifactComponentId],
338
370
  foreignColumns: [
339
371
  artifactComponents.tenantId,
@@ -344,152 +376,152 @@ var subAgentArtifactComponents = sqliteCore.sqliteTable(
344
376
  }).onDelete("cascade")
345
377
  ]
346
378
  );
347
- var tools = sqliteCore.sqliteTable(
379
+ var tools = pgCore.pgTable(
348
380
  "tools",
349
381
  {
350
382
  ...projectScoped,
351
- name: sqliteCore.text("name").notNull(),
352
- description: sqliteCore.text("description"),
353
- config: sqliteCore.blob("config", { mode: "json" }).$type().notNull(),
354
- credentialReferenceId: sqliteCore.text("credential_reference_id"),
355
- headers: sqliteCore.blob("headers", { mode: "json" }).$type(),
356
- imageUrl: sqliteCore.text("image_url"),
357
- capabilities: sqliteCore.blob("capabilities", { mode: "json" }).$type(),
358
- lastError: sqliteCore.text("last_error"),
383
+ name: pgCore.varchar("name", { length: 256 }).notNull(),
384
+ description: pgCore.text("description"),
385
+ config: pgCore.jsonb("config").$type().notNull(),
386
+ credentialReferenceId: pgCore.varchar("credential_reference_id", { length: 256 }),
387
+ headers: pgCore.jsonb("headers").$type(),
388
+ imageUrl: pgCore.text("image_url"),
389
+ capabilities: pgCore.jsonb("capabilities").$type(),
390
+ lastError: pgCore.text("last_error"),
359
391
  ...timestamps
360
392
  },
361
393
  (table) => [
362
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
363
- sqliteCore.foreignKey({
394
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
395
+ pgCore.foreignKey({
364
396
  columns: [table.tenantId, table.projectId],
365
397
  foreignColumns: [projects.tenantId, projects.id],
366
398
  name: "tools_project_fk"
367
399
  }).onDelete("cascade")
368
400
  ]
369
401
  );
370
- var functionTools = sqliteCore.sqliteTable(
402
+ var functionTools = pgCore.pgTable(
371
403
  "function_tools",
372
404
  {
373
405
  ...agentScoped,
374
- name: sqliteCore.text("name").notNull(),
375
- description: sqliteCore.text("description"),
376
- functionId: sqliteCore.text("function_id").notNull(),
406
+ name: pgCore.varchar("name", { length: 256 }).notNull(),
407
+ description: pgCore.text("description"),
408
+ functionId: pgCore.varchar("function_id", { length: 256 }).notNull(),
377
409
  ...timestamps
378
410
  },
379
411
  (table) => [
380
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
381
- sqliteCore.foreignKey({
412
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
413
+ pgCore.foreignKey({
382
414
  columns: [table.tenantId, table.projectId, table.agentId],
383
415
  foreignColumns: [agents.tenantId, agents.projectId, agents.id],
384
416
  name: "function_tools_agent_fk"
385
417
  }).onDelete("cascade"),
386
- sqliteCore.foreignKey({
418
+ pgCore.foreignKey({
387
419
  columns: [table.tenantId, table.projectId, table.functionId],
388
420
  foreignColumns: [functions.tenantId, functions.projectId, functions.id],
389
421
  name: "function_tools_function_fk"
390
422
  }).onDelete("cascade")
391
423
  ]
392
424
  );
393
- var functions = sqliteCore.sqliteTable(
425
+ var functions = pgCore.pgTable(
394
426
  "functions",
395
427
  {
396
428
  ...projectScoped,
397
- inputSchema: sqliteCore.blob("input_schema", { mode: "json" }).$type(),
398
- executeCode: sqliteCore.text("execute_code").notNull(),
399
- dependencies: sqliteCore.blob("dependencies", { mode: "json" }).$type(),
429
+ inputSchema: pgCore.jsonb("input_schema").$type(),
430
+ executeCode: pgCore.text("execute_code").notNull(),
431
+ dependencies: pgCore.jsonb("dependencies").$type(),
400
432
  ...timestamps
401
433
  },
402
434
  (table) => [
403
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
404
- sqliteCore.foreignKey({
435
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
436
+ pgCore.foreignKey({
405
437
  columns: [table.tenantId, table.projectId],
406
438
  foreignColumns: [projects.tenantId, projects.id],
407
439
  name: "functions_project_fk"
408
440
  }).onDelete("cascade")
409
441
  ]
410
442
  );
411
- var subAgentToolRelations = sqliteCore.sqliteTable(
443
+ var subAgentToolRelations = pgCore.pgTable(
412
444
  "sub_agent_tool_relations",
413
445
  {
414
446
  ...subAgentScoped,
415
- toolId: sqliteCore.text("tool_id").notNull(),
416
- selectedTools: sqliteCore.blob("selected_tools", { mode: "json" }).$type(),
417
- headers: sqliteCore.blob("headers", { mode: "json" }).$type(),
447
+ toolId: pgCore.varchar("tool_id", { length: 256 }).notNull(),
448
+ selectedTools: pgCore.jsonb("selected_tools").$type(),
449
+ headers: pgCore.jsonb("headers").$type(),
418
450
  ...timestamps
419
451
  },
420
452
  (table) => [
421
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
422
- sqliteCore.foreignKey({
453
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
454
+ pgCore.foreignKey({
423
455
  columns: [table.tenantId, table.projectId, table.agentId, table.subAgentId],
424
456
  foreignColumns: [subAgents.tenantId, subAgents.projectId, subAgents.agentId, subAgents.id],
425
457
  name: "sub_agent_tool_relations_agent_fk"
426
458
  }).onDelete("cascade"),
427
- sqliteCore.foreignKey({
459
+ pgCore.foreignKey({
428
460
  columns: [table.tenantId, table.projectId, table.toolId],
429
461
  foreignColumns: [tools.tenantId, tools.projectId, tools.id],
430
462
  name: "sub_agent_tool_relations_tool_fk"
431
463
  }).onDelete("cascade")
432
464
  ]
433
465
  );
434
- var subAgentExternalAgentRelations = sqliteCore.sqliteTable(
466
+ var subAgentExternalAgentRelations = pgCore.pgTable(
435
467
  "sub_agent_external_agent_relations",
436
468
  {
437
469
  ...subAgentScoped,
438
- externalAgentId: sqliteCore.text("external_agent_id").notNull(),
439
- headers: sqliteCore.blob("headers", { mode: "json" }).$type(),
470
+ externalAgentId: pgCore.varchar("external_agent_id", { length: 256 }).notNull(),
471
+ headers: pgCore.jsonb("headers").$type(),
440
472
  ...timestamps
441
473
  },
442
474
  (table) => [
443
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
444
- sqliteCore.foreignKey({
475
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
476
+ pgCore.foreignKey({
445
477
  columns: [table.tenantId, table.projectId, table.agentId, table.subAgentId],
446
478
  foreignColumns: [subAgents.tenantId, subAgents.projectId, subAgents.agentId, subAgents.id],
447
479
  name: "sub_agent_external_agent_relations_sub_agent_fk"
448
480
  }).onDelete("cascade"),
449
- sqliteCore.foreignKey({
481
+ pgCore.foreignKey({
450
482
  columns: [table.tenantId, table.projectId, table.externalAgentId],
451
483
  foreignColumns: [externalAgents.tenantId, externalAgents.projectId, externalAgents.id],
452
484
  name: "sub_agent_external_agent_relations_external_agent_fk"
453
485
  }).onDelete("cascade")
454
486
  ]
455
487
  );
456
- var subAgentTeamAgentRelations = sqliteCore.sqliteTable(
488
+ var subAgentTeamAgentRelations = pgCore.pgTable(
457
489
  "sub_agent_team_agent_relations",
458
490
  {
459
491
  ...subAgentScoped,
460
- targetAgentId: sqliteCore.text("target_agent_id").notNull(),
461
- headers: sqliteCore.blob("headers", { mode: "json" }).$type(),
492
+ targetAgentId: pgCore.varchar("target_agent_id", { length: 256 }).notNull(),
493
+ headers: pgCore.jsonb("headers").$type(),
462
494
  ...timestamps
463
495
  },
464
496
  (table) => [
465
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
466
- sqliteCore.foreignKey({
497
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
498
+ pgCore.foreignKey({
467
499
  columns: [table.tenantId, table.projectId, table.agentId, table.subAgentId],
468
500
  foreignColumns: [subAgents.tenantId, subAgents.projectId, subAgents.agentId, subAgents.id],
469
501
  name: "sub_agent_team_agent_relations_sub_agent_fk"
470
502
  }).onDelete("cascade"),
471
- sqliteCore.foreignKey({
503
+ pgCore.foreignKey({
472
504
  columns: [table.tenantId, table.projectId, table.targetAgentId],
473
505
  foreignColumns: [agents.tenantId, agents.projectId, agents.id],
474
506
  name: "sub_agent_team_agent_relations_target_agent_fk"
475
507
  }).onDelete("cascade")
476
508
  ]
477
509
  );
478
- var subAgentFunctionToolRelations = sqliteCore.sqliteTable(
510
+ var subAgentFunctionToolRelations = pgCore.pgTable(
479
511
  "sub_agent_function_tool_relations",
480
512
  {
481
513
  ...subAgentScoped,
482
- functionToolId: sqliteCore.text("function_tool_id").notNull(),
514
+ functionToolId: pgCore.varchar("function_tool_id", { length: 256 }).notNull(),
483
515
  ...timestamps
484
516
  },
485
517
  (table) => [
486
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
487
- sqliteCore.foreignKey({
518
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.agentId, table.id] }),
519
+ pgCore.foreignKey({
488
520
  columns: [table.tenantId, table.projectId, table.agentId, table.subAgentId],
489
521
  foreignColumns: [subAgents.tenantId, subAgents.projectId, subAgents.agentId, subAgents.id],
490
522
  name: "sub_agent_function_tool_relations_sub_agent_fk"
491
523
  }).onDelete("cascade"),
492
- sqliteCore.foreignKey({
524
+ pgCore.foreignKey({
493
525
  columns: [table.tenantId, table.projectId, table.agentId, table.functionToolId],
494
526
  foreignColumns: [
495
527
  functionTools.tenantId,
@@ -501,134 +533,134 @@ var subAgentFunctionToolRelations = sqliteCore.sqliteTable(
501
533
  }).onDelete("cascade")
502
534
  ]
503
535
  );
504
- var conversations = sqliteCore.sqliteTable(
536
+ var conversations = pgCore.pgTable(
505
537
  "conversations",
506
538
  {
507
539
  ...projectScoped,
508
- userId: sqliteCore.text("user_id"),
509
- activeSubAgentId: sqliteCore.text("active_sub_agent_id").notNull(),
510
- title: sqliteCore.text("title"),
511
- lastContextResolution: sqliteCore.text("last_context_resolution"),
512
- metadata: sqliteCore.blob("metadata", { mode: "json" }).$type(),
540
+ userId: pgCore.varchar("user_id", { length: 256 }),
541
+ activeSubAgentId: pgCore.varchar("active_sub_agent_id", { length: 256 }).notNull(),
542
+ title: pgCore.text("title"),
543
+ lastContextResolution: pgCore.timestamp("last_context_resolution", { mode: "string" }),
544
+ metadata: pgCore.jsonb("metadata").$type(),
513
545
  ...timestamps
514
546
  },
515
547
  (table) => [
516
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
517
- sqliteCore.foreignKey({
548
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
549
+ pgCore.foreignKey({
518
550
  columns: [table.tenantId, table.projectId],
519
551
  foreignColumns: [projects.tenantId, projects.id],
520
552
  name: "conversations_project_fk"
521
553
  }).onDelete("cascade")
522
554
  ]
523
555
  );
524
- var messages = sqliteCore.sqliteTable(
556
+ var messages = pgCore.pgTable(
525
557
  "messages",
526
558
  {
527
559
  ...projectScoped,
528
- conversationId: sqliteCore.text("conversation_id").notNull(),
529
- role: sqliteCore.text("role").notNull(),
530
- fromSubAgentId: sqliteCore.text("from_sub_agent_id"),
531
- toSubAgentId: sqliteCore.text("to_sub_agent_id"),
532
- fromExternalAgentId: sqliteCore.text("from_external_sub_agent_id"),
533
- toExternalAgentId: sqliteCore.text("to_external_sub_agent_id"),
534
- fromTeamAgentId: sqliteCore.text("from_team_agent_id"),
535
- toTeamAgentId: sqliteCore.text("to_team_agent_id"),
536
- content: sqliteCore.blob("content", { mode: "json" }).$type().notNull(),
537
- visibility: sqliteCore.text("visibility").notNull().default("user-facing"),
538
- messageType: sqliteCore.text("message_type").notNull().default("chat"),
539
- taskId: sqliteCore.text("task_id"),
540
- parentMessageId: sqliteCore.text("parent_message_id"),
541
- a2aTaskId: sqliteCore.text("a2a_task_id"),
542
- a2aSessionId: sqliteCore.text("a2a_session_id"),
543
- metadata: sqliteCore.blob("metadata", { mode: "json" }).$type(),
560
+ conversationId: pgCore.varchar("conversation_id", { length: 256 }).notNull(),
561
+ role: pgCore.varchar("role", { length: 256 }).notNull(),
562
+ fromSubAgentId: pgCore.varchar("from_sub_agent_id", { length: 256 }),
563
+ toSubAgentId: pgCore.varchar("to_sub_agent_id", { length: 256 }),
564
+ fromExternalAgentId: pgCore.varchar("from_external_sub_agent_id", { length: 256 }),
565
+ toExternalAgentId: pgCore.varchar("to_external_sub_agent_id", { length: 256 }),
566
+ fromTeamAgentId: pgCore.varchar("from_team_agent_id", { length: 256 }),
567
+ toTeamAgentId: pgCore.varchar("to_team_agent_id", { length: 256 }),
568
+ content: pgCore.jsonb("content").$type().notNull(),
569
+ visibility: pgCore.varchar("visibility", { length: 256 }).notNull().default("user-facing"),
570
+ messageType: pgCore.varchar("message_type", { length: 256 }).notNull().default("chat"),
571
+ taskId: pgCore.varchar("task_id", { length: 256 }),
572
+ parentMessageId: pgCore.varchar("parent_message_id", { length: 256 }),
573
+ a2aTaskId: pgCore.varchar("a2a_task_id", { length: 256 }),
574
+ a2aSessionId: pgCore.varchar("a2a_session_id", { length: 256 }),
575
+ metadata: pgCore.jsonb("metadata").$type(),
544
576
  ...timestamps
545
577
  },
546
578
  (table) => [
547
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
548
- sqliteCore.foreignKey({
579
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id] }),
580
+ pgCore.foreignKey({
549
581
  columns: [table.tenantId, table.projectId],
550
582
  foreignColumns: [projects.tenantId, projects.id],
551
583
  name: "messages_project_fk"
552
584
  }).onDelete("cascade")
553
585
  ]
554
586
  );
555
- var ledgerArtifacts = sqliteCore.sqliteTable(
587
+ var ledgerArtifacts = pgCore.pgTable(
556
588
  "ledger_artifacts",
557
589
  {
558
590
  ...projectScoped,
559
- taskId: sqliteCore.text("task_id").notNull(),
560
- toolCallId: sqliteCore.text("tool_call_id"),
561
- contextId: sqliteCore.text("context_id").notNull(),
562
- type: sqliteCore.text("type").notNull().default("source"),
563
- name: sqliteCore.text("name"),
564
- description: sqliteCore.text("description"),
565
- parts: sqliteCore.blob("parts", { mode: "json" }).$type(),
566
- metadata: sqliteCore.blob("metadata", { mode: "json" }).$type(),
567
- summary: sqliteCore.text("summary"),
568
- mime: sqliteCore.blob("mime", { mode: "json" }).$type(),
569
- visibility: sqliteCore.text("visibility").default("context"),
570
- allowedAgents: sqliteCore.blob("allowed_agents", { mode: "json" }).$type(),
571
- derivedFrom: sqliteCore.text("derived_from"),
591
+ taskId: pgCore.varchar("task_id", { length: 256 }).notNull(),
592
+ toolCallId: pgCore.varchar("tool_call_id", { length: 256 }),
593
+ contextId: pgCore.varchar("context_id", { length: 256 }).notNull(),
594
+ type: pgCore.varchar("type", { length: 256 }).notNull().default("source"),
595
+ name: pgCore.varchar("name", { length: 256 }),
596
+ description: pgCore.text("description"),
597
+ parts: pgCore.jsonb("parts").$type(),
598
+ metadata: pgCore.jsonb("metadata").$type(),
599
+ summary: pgCore.text("summary"),
600
+ mime: pgCore.jsonb("mime").$type(),
601
+ visibility: pgCore.varchar("visibility", { length: 256 }).default("context"),
602
+ allowedAgents: pgCore.jsonb("allowed_agents").$type(),
603
+ derivedFrom: pgCore.varchar("derived_from", { length: 256 }),
572
604
  ...timestamps
573
605
  },
574
606
  (table) => [
575
- sqliteCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id, table.taskId] }),
576
- sqliteCore.foreignKey({
607
+ pgCore.primaryKey({ columns: [table.tenantId, table.projectId, table.id, table.taskId] }),
608
+ pgCore.foreignKey({
577
609
  columns: [table.tenantId, table.projectId],
578
610
  foreignColumns: [projects.tenantId, projects.id],
579
611
  name: "ledger_artifacts_project_fk"
580
612
  }).onDelete("cascade"),
581
- sqliteCore.index("ledger_artifacts_task_id_idx").on(table.taskId),
582
- sqliteCore.index("ledger_artifacts_tool_call_id_idx").on(table.toolCallId),
583
- sqliteCore.index("ledger_artifacts_context_id_idx").on(table.contextId),
584
- sqliteCore.unique("ledger_artifacts_task_context_name_unique").on(
613
+ pgCore.index("ledger_artifacts_task_id_idx").on(table.taskId),
614
+ pgCore.index("ledger_artifacts_tool_call_id_idx").on(table.toolCallId),
615
+ pgCore.index("ledger_artifacts_context_id_idx").on(table.contextId),
616
+ pgCore.unique("ledger_artifacts_task_context_name_unique").on(
585
617
  table.taskId,
586
618
  table.contextId,
587
619
  table.name
588
620
  )
589
621
  ]
590
622
  );
591
- var apiKeys = sqliteCore.sqliteTable(
623
+ var apiKeys = pgCore.pgTable(
592
624
  "api_keys",
593
625
  {
594
626
  ...agentScoped,
595
- publicId: sqliteCore.text("public_id").notNull().unique(),
596
- keyHash: sqliteCore.text("key_hash").notNull(),
597
- keyPrefix: sqliteCore.text("key_prefix").notNull(),
598
- name: sqliteCore.text("name"),
599
- lastUsedAt: sqliteCore.text("last_used_at"),
600
- expiresAt: sqliteCore.text("expires_at"),
627
+ publicId: pgCore.varchar("public_id", { length: 256 }).notNull().unique(),
628
+ keyHash: pgCore.varchar("key_hash", { length: 256 }).notNull(),
629
+ keyPrefix: pgCore.varchar("key_prefix", { length: 256 }).notNull(),
630
+ name: pgCore.varchar("name", { length: 256 }),
631
+ lastUsedAt: pgCore.timestamp("last_used_at", { mode: "string" }),
632
+ expiresAt: pgCore.timestamp("expires_at", { mode: "string" }),
601
633
  ...timestamps
602
634
  },
603
635
  (t) => [
604
- sqliteCore.foreignKey({
636
+ pgCore.foreignKey({
605
637
  columns: [t.tenantId, t.projectId],
606
638
  foreignColumns: [projects.tenantId, projects.id],
607
639
  name: "api_keys_project_fk"
608
640
  }).onDelete("cascade"),
609
- sqliteCore.foreignKey({
641
+ pgCore.foreignKey({
610
642
  columns: [t.tenantId, t.projectId, t.agentId],
611
643
  foreignColumns: [agents.tenantId, agents.projectId, agents.id],
612
644
  name: "api_keys_agent_fk"
613
645
  }).onDelete("cascade"),
614
- sqliteCore.index("api_keys_tenant_agent_idx").on(t.tenantId, t.agentId),
615
- sqliteCore.index("api_keys_prefix_idx").on(t.keyPrefix),
616
- sqliteCore.index("api_keys_public_id_idx").on(t.publicId)
646
+ pgCore.index("api_keys_tenant_agent_idx").on(t.tenantId, t.agentId),
647
+ pgCore.index("api_keys_prefix_idx").on(t.keyPrefix),
648
+ pgCore.index("api_keys_public_id_idx").on(t.publicId)
617
649
  ]
618
650
  );
619
- var credentialReferences = sqliteCore.sqliteTable(
651
+ var credentialReferences = pgCore.pgTable(
620
652
  "credential_references",
621
653
  {
622
654
  ...projectScoped,
623
- name: sqliteCore.text("name").notNull(),
624
- type: sqliteCore.text("type").notNull(),
625
- credentialStoreId: sqliteCore.text("credential_store_id").notNull(),
626
- retrievalParams: sqliteCore.blob("retrieval_params", { mode: "json" }).$type(),
655
+ name: pgCore.varchar("name", { length: 256 }).notNull(),
656
+ type: pgCore.varchar("type", { length: 256 }).notNull(),
657
+ credentialStoreId: pgCore.varchar("credential_store_id", { length: 256 }).notNull(),
658
+ retrievalParams: pgCore.jsonb("retrieval_params").$type(),
627
659
  ...timestamps
628
660
  },
629
661
  (t) => [
630
- sqliteCore.primaryKey({ columns: [t.tenantId, t.projectId, t.id] }),
631
- sqliteCore.foreignKey({
662
+ pgCore.primaryKey({ columns: [t.tenantId, t.projectId, t.id] }),
663
+ pgCore.foreignKey({
632
664
  columns: [t.tenantId, t.projectId],
633
665
  foreignColumns: [projects.tenantId, projects.id],
634
666
  name: "credential_references_project_fk"
@@ -1004,9 +1036,20 @@ var CredentialStoreType = {
1004
1036
  };
1005
1037
 
1006
1038
  // src/validation/schemas.ts
1039
+ var {
1040
+ AGENT_EXECUTION_TRANSFER_COUNT_MAX,
1041
+ AGENT_EXECUTION_TRANSFER_COUNT_MIN,
1042
+ CONTEXT_FETCHER_HTTP_TIMEOUT_MS_DEFAULT,
1043
+ STATUS_UPDATE_MAX_INTERVAL_SECONDS,
1044
+ STATUS_UPDATE_MAX_NUM_EVENTS,
1045
+ SUB_AGENT_TURN_GENERATION_STEPS_MAX,
1046
+ SUB_AGENT_TURN_GENERATION_STEPS_MIN,
1047
+ VALIDATION_AGENT_PROMPT_MAX_CHARS,
1048
+ VALIDATION_SUB_AGENT_PROMPT_MAX_CHARS
1049
+ } = schemaValidationDefaults;
1007
1050
  var StopWhenSchema = zodOpenapi.z.object({
1008
- transferCountIs: zodOpenapi.z.number().min(1).max(100).optional().describe("The maximum number of transfers to trigger the stop condition."),
1009
- stepCountIs: zodOpenapi.z.number().min(1).max(1e3).optional().describe("The maximum number of steps to trigger the stop condition.")
1051
+ transferCountIs: zodOpenapi.z.number().min(AGENT_EXECUTION_TRANSFER_COUNT_MIN).max(AGENT_EXECUTION_TRANSFER_COUNT_MAX).optional().describe("The maximum number of transfers to trigger the stop condition."),
1052
+ stepCountIs: zodOpenapi.z.number().min(SUB_AGENT_TURN_GENERATION_STEPS_MIN).max(SUB_AGENT_TURN_GENERATION_STEPS_MAX).optional().describe("The maximum number of steps to trigger the stop condition.")
1010
1053
  }).openapi("StopWhen");
1011
1054
  var AgentStopWhenSchema = StopWhenSchema.pick({ transferCountIs: true }).openapi(
1012
1055
  "AgentStopWhen"
@@ -1125,7 +1168,8 @@ var ExternalSubAgentRelationApiInsertSchema = createApiInsertSchema(
1125
1168
  );
1126
1169
  var AgentSelectSchema = drizzleZod.createSelectSchema(agents);
1127
1170
  var AgentInsertSchema = drizzleZod.createInsertSchema(agents).extend({
1128
- id: resourceIdSchema
1171
+ id: resourceIdSchema,
1172
+ name: zodOpenapi.z.string().trim().nonempty()
1129
1173
  });
1130
1174
  var AgentUpdateSchema = AgentInsertSchema.partial();
1131
1175
  var AgentApiSelectSchema = createApiSchema(AgentSelectSchema).openapi("Agent");
@@ -1485,7 +1529,7 @@ var FetchConfigSchema = zodOpenapi.z.object({
1485
1529
  body: zodOpenapi.z.record(zodOpenapi.z.string(), zodOpenapi.z.unknown()).optional(),
1486
1530
  transform: zodOpenapi.z.string().optional(),
1487
1531
  // JSONPath or JS transform function
1488
- timeout: zodOpenapi.z.number().min(0).optional().default(1e4).optional()
1532
+ timeout: zodOpenapi.z.number().min(0).optional().default(CONTEXT_FETCHER_HTTP_TIMEOUT_MS_DEFAULT).optional()
1489
1533
  }).openapi("FetchConfig");
1490
1534
  var FetchDefinitionSchema = zodOpenapi.z.object({
1491
1535
  id: zodOpenapi.z.string().min(1, "Fetch definition ID is required"),
@@ -1604,9 +1648,12 @@ var StatusComponentSchema = zodOpenapi.z.object({
1604
1648
  }).openapi("StatusComponent");
1605
1649
  var StatusUpdateSchema = zodOpenapi.z.object({
1606
1650
  enabled: zodOpenapi.z.boolean().optional(),
1607
- numEvents: zodOpenapi.z.number().min(1).max(100).optional(),
1608
- timeInSeconds: zodOpenapi.z.number().min(1).max(600).optional(),
1609
- prompt: zodOpenapi.z.string().max(2e3, "Custom prompt cannot exceed 2000 characters").optional(),
1651
+ numEvents: zodOpenapi.z.number().min(1).max(STATUS_UPDATE_MAX_NUM_EVENTS).optional(),
1652
+ timeInSeconds: zodOpenapi.z.number().min(1).max(STATUS_UPDATE_MAX_INTERVAL_SECONDS).optional(),
1653
+ prompt: zodOpenapi.z.string().max(
1654
+ VALIDATION_SUB_AGENT_PROMPT_MAX_CHARS,
1655
+ `Custom prompt cannot exceed ${VALIDATION_SUB_AGENT_PROMPT_MAX_CHARS} characters`
1656
+ ).optional(),
1610
1657
  statusComponents: zodOpenapi.z.array(StatusComponentSchema).optional()
1611
1658
  }).openapi("StatusUpdate");
1612
1659
  var CanUseItemSchema = zodOpenapi.z.object({
@@ -1637,6 +1684,7 @@ var FullAgentAgentInsertSchema = SubAgentApiInsertSchema.extend({
1637
1684
  dataComponents: zodOpenapi.z.array(zodOpenapi.z.string()).optional(),
1638
1685
  artifactComponents: zodOpenapi.z.array(zodOpenapi.z.string()).optional(),
1639
1686
  canTransferTo: zodOpenapi.z.array(zodOpenapi.z.string()).optional(),
1687
+ prompt: zodOpenapi.z.string().trim().nonempty(),
1640
1688
  canDelegateTo: zodOpenapi.z.array(
1641
1689
  zodOpenapi.z.union([
1642
1690
  zodOpenapi.z.string(),
@@ -1665,7 +1713,10 @@ var AgentWithinContextOfProjectSchema = AgentApiInsertSchema.extend({
1665
1713
  statusUpdates: zodOpenapi.z.optional(StatusUpdateSchema),
1666
1714
  models: ModelSchema.optional(),
1667
1715
  stopWhen: AgentStopWhenSchema.optional(),
1668
- prompt: zodOpenapi.z.string().max(5e3, "Agent prompt cannot exceed 5000 characters").optional()
1716
+ prompt: zodOpenapi.z.string().max(
1717
+ VALIDATION_AGENT_PROMPT_MAX_CHARS,
1718
+ `Agent prompt cannot exceed ${VALIDATION_AGENT_PROMPT_MAX_CHARS} characters`
1719
+ ).optional()
1669
1720
  });
1670
1721
  var PaginationSchema = zodOpenapi.z.object({
1671
1722
  page: zodOpenapi.z.coerce.number().min(1).default(1),