@inkeep/agents-core 0.66.0 → 0.67.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 (56) hide show
  1. package/dist/auth/auth-schema.d.ts +86 -86
  2. package/dist/auth/auth-validation-schemas.d.ts +154 -154
  3. package/dist/auth/permissions.d.ts +9 -9
  4. package/dist/client-exports.d.ts +2 -2
  5. package/dist/client-exports.js +2 -2
  6. package/dist/constants/otel-attributes.d.ts +2 -0
  7. package/dist/constants/otel-attributes.js +2 -0
  8. package/dist/data-access/index.d.ts +2 -2
  9. package/dist/data-access/index.js +2 -2
  10. package/dist/data-access/manage/agentFull.js +23 -3
  11. package/dist/data-access/manage/agents.d.ts +27 -27
  12. package/dist/data-access/manage/agents.js +12 -1
  13. package/dist/data-access/manage/artifactComponents.d.ts +4 -4
  14. package/dist/data-access/manage/contextConfigs.d.ts +12 -12
  15. package/dist/data-access/manage/dataComponents.d.ts +2 -2
  16. package/dist/data-access/manage/functionTools.d.ts +6 -6
  17. package/dist/data-access/manage/skills.d.ts +7 -7
  18. package/dist/data-access/manage/subAgentExternalAgentRelations.d.ts +12 -12
  19. package/dist/data-access/manage/subAgentRelations.d.ts +10 -10
  20. package/dist/data-access/manage/subAgentTeamAgentRelations.d.ts +12 -12
  21. package/dist/data-access/manage/subAgents.d.ts +9 -9
  22. package/dist/data-access/manage/tools.d.ts +12 -12
  23. package/dist/data-access/manage/triggerCleanup.js +6 -1
  24. package/dist/data-access/manage/triggers.d.ts +64 -5
  25. package/dist/data-access/manage/triggers.js +88 -3
  26. package/dist/data-access/runtime/apiKeys.d.ts +8 -8
  27. package/dist/data-access/runtime/apps.d.ts +6 -6
  28. package/dist/data-access/runtime/conversations.d.ts +24 -24
  29. package/dist/data-access/runtime/feedback.d.ts +2 -2
  30. package/dist/data-access/runtime/messages.d.ts +9 -9
  31. package/dist/data-access/runtime/scheduledTriggerUsers.d.ts +1 -1
  32. package/dist/data-access/runtime/tasks.d.ts +5 -5
  33. package/dist/data-access/runtime/triggerInvocations.d.ts +2 -0
  34. package/dist/db/manage/dolt-safe-jsonb.d.ts +2 -2
  35. package/dist/db/manage/manage-schema.d.ts +496 -360
  36. package/dist/db/manage/manage-schema.js +43 -2
  37. package/dist/db/runtime/runtime-schema.d.ts +409 -371
  38. package/dist/db/runtime/runtime-schema.js +4 -1
  39. package/dist/index.d.ts +4 -4
  40. package/dist/index.js +4 -4
  41. package/dist/utils/error.d.ts +51 -51
  42. package/dist/utils/signature-validation.d.ts +2 -2
  43. package/dist/utils/signature-validation.js +2 -2
  44. package/dist/validation/drizzle-schema-helpers.d.ts +3 -3
  45. package/dist/validation/index.d.ts +2 -2
  46. package/dist/validation/index.js +2 -2
  47. package/dist/validation/schemas/skills.d.ts +46 -46
  48. package/dist/validation/schemas.d.ts +2193 -1999
  49. package/dist/validation/schemas.js +35 -13
  50. package/drizzle/manage/0018_gorgeous_captain_america.sql +14 -0
  51. package/drizzle/manage/meta/0018_snapshot.json +3884 -0
  52. package/drizzle/manage/meta/_journal.json +7 -0
  53. package/drizzle/runtime/0035_many_steel_serpent.sql +3 -0
  54. package/drizzle/runtime/meta/0035_snapshot.json +5321 -0
  55. package/drizzle/runtime/meta/_journal.json +7 -0
  56. package/package.json +1 -1
@@ -12,11 +12,11 @@ declare const getSubAgentTeamAgentRelationById: (db: AgentsManageDatabaseClient)
12
12
  id: string;
13
13
  createdAt: string;
14
14
  updatedAt: string;
15
- headers: Record<string, string> | null;
16
- agentId: string;
17
15
  projectId: string;
18
16
  tenantId: string;
17
+ agentId: string;
19
18
  subAgentId: string;
19
+ headers: Record<string, string> | null;
20
20
  targetAgentId: string;
21
21
  } | undefined>;
22
22
  declare const listSubAgentTeamAgentRelations: (db: AgentsManageDatabaseClient) => (params: {
@@ -47,11 +47,11 @@ declare const getSubAgentTeamAgentRelations: (db: AgentsManageDatabaseClient) =>
47
47
  id: string;
48
48
  createdAt: string;
49
49
  updatedAt: string;
50
- headers: Record<string, string> | null;
51
- agentId: string;
52
50
  projectId: string;
53
51
  tenantId: string;
52
+ agentId: string;
54
53
  subAgentId: string;
54
+ headers: Record<string, string> | null;
55
55
  targetAgentId: string;
56
56
  }[]>;
57
57
  declare const getSubAgentTeamAgentRelationsByAgent: (db: AgentsManageDatabaseClient) => (params: {
@@ -60,11 +60,11 @@ declare const getSubAgentTeamAgentRelationsByAgent: (db: AgentsManageDatabaseCli
60
60
  id: string;
61
61
  createdAt: string;
62
62
  updatedAt: string;
63
- headers: Record<string, string> | null;
64
- agentId: string;
65
63
  projectId: string;
66
64
  tenantId: string;
65
+ agentId: string;
67
66
  subAgentId: string;
67
+ headers: Record<string, string> | null;
68
68
  targetAgentId: string;
69
69
  }[]>;
70
70
  declare const getSubAgentTeamAgentRelationsByTeamAgent: (db: AgentsManageDatabaseClient) => (params: {
@@ -225,11 +225,11 @@ declare const createSubAgentTeamAgentRelation: (db: AgentsManageDatabaseClient)
225
225
  id: string;
226
226
  createdAt: string;
227
227
  updatedAt: string;
228
- headers: Record<string, string> | null;
229
- agentId: string;
230
228
  projectId: string;
231
229
  tenantId: string;
230
+ agentId: string;
232
231
  subAgentId: string;
232
+ headers: Record<string, string> | null;
233
233
  targetAgentId: string;
234
234
  }>;
235
235
  /**
@@ -242,11 +242,11 @@ declare const getSubAgentTeamAgentRelationByParams: (db: AgentsManageDatabaseCli
242
242
  id: string;
243
243
  createdAt: string;
244
244
  updatedAt: string;
245
- headers: Record<string, string> | null;
246
- agentId: string;
247
245
  projectId: string;
248
246
  tenantId: string;
247
+ agentId: string;
249
248
  subAgentId: string;
249
+ headers: Record<string, string> | null;
250
250
  targetAgentId: string;
251
251
  } | undefined>;
252
252
  /**
@@ -263,11 +263,11 @@ declare const upsertSubAgentTeamAgentRelation: (db: AgentsManageDatabaseClient)
263
263
  id: string;
264
264
  createdAt: string;
265
265
  updatedAt: string;
266
- headers: Record<string, string> | null;
267
- agentId: string;
268
266
  projectId: string;
269
267
  tenantId: string;
268
+ agentId: string;
270
269
  subAgentId: string;
270
+ headers: Record<string, string> | null;
271
271
  targetAgentId: string;
272
272
  }>;
273
273
  declare const updateSubAgentTeamAgentRelation: (db: AgentsManageDatabaseClient) => (params: {
@@ -9,12 +9,11 @@ declare const getSubAgentById: (db: AgentsManageDatabaseClient) => (params: {
9
9
  scopes: AgentScopeConfig;
10
10
  subAgentId: string;
11
11
  }) => Promise<{
12
+ description: string | null;
12
13
  id: string;
13
14
  name: string;
14
15
  createdAt: string;
15
16
  updatedAt: string;
16
- description: string | null;
17
- agentId: string;
18
17
  projectId: string;
19
18
  tenantId: string;
20
19
  models: {
@@ -37,21 +36,21 @@ declare const getSubAgentById: (db: AgentsManageDatabaseClient) => (params: {
37
36
  allowedProviders?: string[] | undefined;
38
37
  } | undefined;
39
38
  } | null;
40
- prompt: string | null;
41
39
  stopWhen: {
42
40
  stepCountIs?: number | undefined;
43
41
  } | null;
42
+ agentId: string;
43
+ prompt: string | null;
44
44
  conversationHistoryConfig: ConversationHistoryConfig | null;
45
45
  } | undefined>;
46
46
  declare const listSubAgents: (db: AgentsManageDatabaseClient) => (params: {
47
47
  scopes: AgentScopeConfig;
48
48
  }) => Promise<{
49
+ description: string | null;
49
50
  id: string;
50
51
  name: string;
51
52
  createdAt: string;
52
53
  updatedAt: string;
53
- description: string | null;
54
- agentId: string;
55
54
  projectId: string;
56
55
  tenantId: string;
57
56
  models: {
@@ -74,10 +73,11 @@ declare const listSubAgents: (db: AgentsManageDatabaseClient) => (params: {
74
73
  allowedProviders?: string[] | undefined;
75
74
  } | undefined;
76
75
  } | null;
77
- prompt: string | null;
78
76
  stopWhen: {
79
77
  stepCountIs?: number | undefined;
80
78
  } | null;
79
+ agentId: string;
80
+ prompt: string | null;
81
81
  conversationHistoryConfig: ConversationHistoryConfig | null;
82
82
  }[]>;
83
83
  declare const listSubAgentsPaginated: (db: AgentsManageDatabaseClient) => (params: {
@@ -127,12 +127,11 @@ declare const listSubAgentsPaginated: (db: AgentsManageDatabaseClient) => (param
127
127
  };
128
128
  }>;
129
129
  declare const createSubAgent: (db: AgentsManageDatabaseClient) => (params: SubAgentInsert) => Promise<{
130
+ description: string | null;
130
131
  id: string;
131
132
  name: string;
132
133
  createdAt: string;
133
134
  updatedAt: string;
134
- description: string | null;
135
- agentId: string;
136
135
  projectId: string;
137
136
  tenantId: string;
138
137
  models: {
@@ -155,10 +154,11 @@ declare const createSubAgent: (db: AgentsManageDatabaseClient) => (params: SubAg
155
154
  allowedProviders?: string[] | undefined;
156
155
  } | undefined;
157
156
  } | null;
158
- prompt: string | null;
159
157
  stopWhen: {
160
158
  stepCountIs?: number | undefined;
161
159
  } | null;
160
+ agentId: string;
161
+ prompt: string | null;
162
162
  conversationHistoryConfig: ConversationHistoryConfig | null;
163
163
  }>;
164
164
  declare const updateSubAgent: (db: AgentsManageDatabaseClient) => (params: {
@@ -20,14 +20,14 @@ declare const getToolById: (db: AgentsManageDatabaseClient) => (params: {
20
20
  scopes: ProjectScopeConfig;
21
21
  toolId: string;
22
22
  }) => Promise<{
23
+ description: string | null;
23
24
  id: string;
24
25
  name: string;
25
26
  createdAt: string;
26
27
  updatedAt: string;
27
- description: string | null;
28
- headers: Record<string, string> | null;
29
28
  projectId: string;
30
29
  tenantId: string;
30
+ headers: Record<string, string> | null;
31
31
  config: {
32
32
  type: "mcp";
33
33
  mcp: ToolMcpConfig;
@@ -78,14 +78,14 @@ declare const listTools: (db: AgentsManageDatabaseClient) => (params: {
78
78
  };
79
79
  }>;
80
80
  declare const createTool: (db: AgentsManageDatabaseClient) => (params: ToolInsert) => Promise<{
81
+ description: string | null;
81
82
  id: string;
82
83
  name: string;
83
84
  createdAt: string;
84
85
  updatedAt: string;
85
- description: string | null;
86
- headers: Record<string, string> | null;
87
86
  projectId: string;
88
87
  tenantId: string;
88
+ headers: Record<string, string> | null;
89
89
  config: {
90
90
  type: "mcp";
91
91
  mcp: ToolMcpConfig;
@@ -138,12 +138,12 @@ declare const addToolToAgent: (db: AgentsManageDatabaseClient) => (params: {
138
138
  id: string;
139
139
  createdAt: string;
140
140
  updatedAt: string;
141
- headers: Record<string, string> | null;
142
- agentId: string;
143
141
  projectId: string;
144
142
  tenantId: string;
143
+ agentId: string;
145
144
  subAgentId: string;
146
145
  toolId: string;
146
+ headers: Record<string, string> | null;
147
147
  toolPolicies: Record<string, {
148
148
  needsApproval?: boolean;
149
149
  }> | null;
@@ -157,12 +157,12 @@ declare const removeToolFromAgent: (db: AgentsManageDatabaseClient) => (params:
157
157
  id: string;
158
158
  createdAt: string;
159
159
  updatedAt: string;
160
- headers: Record<string, string> | null;
161
- agentId: string;
162
160
  projectId: string;
163
161
  tenantId: string;
162
+ agentId: string;
164
163
  subAgentId: string;
165
164
  toolId: string;
165
+ headers: Record<string, string> | null;
166
166
  toolPolicies: Record<string, {
167
167
  needsApproval?: boolean;
168
168
  }> | null;
@@ -185,12 +185,12 @@ declare const upsertSubAgentToolRelation: (db: AgentsManageDatabaseClient) => (p
185
185
  id: string;
186
186
  createdAt: string;
187
187
  updatedAt: string;
188
- headers: Record<string, string> | null;
189
- agentId: string;
190
188
  projectId: string;
191
189
  tenantId: string;
190
+ agentId: string;
192
191
  subAgentId: string;
193
192
  toolId: string;
193
+ headers: Record<string, string> | null;
194
194
  toolPolicies: Record<string, {
195
195
  needsApproval?: boolean;
196
196
  }> | null;
@@ -202,14 +202,14 @@ declare const upsertSubAgentToolRelation: (db: AgentsManageDatabaseClient) => (p
202
202
  declare const upsertTool: (db: AgentsManageDatabaseClient) => (params: {
203
203
  data: ToolInsert;
204
204
  }) => Promise<{
205
+ description: string | null;
205
206
  id: string;
206
207
  name: string;
207
208
  createdAt: string;
208
209
  updatedAt: string;
209
- description: string | null;
210
- headers: Record<string, string> | null;
211
210
  projectId: string;
212
211
  tenantId: string;
212
+ headers: Record<string, string> | null;
213
213
  config: {
214
214
  type: "mcp";
215
215
  mcp: ToolMcpConfig;
@@ -2,7 +2,7 @@ import { manage_schema_exports } from "../../db/manage/manage-schema.js";
2
2
  import { getLogger } from "../../utils/logger.js";
3
3
  import { resolveProjectMainRefs } from "../../dolt/ref-helpers.js";
4
4
  import { listProjectsMetadata } from "../runtime/projects.js";
5
- import { deleteTriggersByRunAsUserId } from "./triggers.js";
5
+ import { deleteTriggersByRunAsUserId, removeUserFromProjectTriggerUsers } from "./triggers.js";
6
6
  import { deleteScheduledTriggersByRunAsUserId } from "../runtime/scheduledTriggers.js";
7
7
  import { withRef } from "../../dolt/ref-scope.js";
8
8
  import { drizzle } from "drizzle-orm/node-postgres";
@@ -42,6 +42,11 @@ async function cleanupUserTriggers(params) {
42
42
  projectId,
43
43
  runAsUserId: userId
44
44
  });
45
+ await removeUserFromProjectTriggerUsers(db)({
46
+ tenantId,
47
+ projectId,
48
+ userId
49
+ });
45
50
  }, {
46
51
  commit: true,
47
52
  commitMessage: `Remove triggers for departing user ${userId}`
@@ -37,16 +37,16 @@ declare const listTriggersPaginated: (db: AgentsManageDatabaseClient) => (params
37
37
  authentication: unknown;
38
38
  signingSecretCredentialReferenceId: string | null;
39
39
  signatureVerification: {
40
- algorithm: "md5" | "sha256" | "sha512" | "sha384" | "sha1";
41
- encoding: "base64" | "hex";
40
+ algorithm: "sha256" | "sha512" | "sha384" | "sha1" | "md5";
41
+ encoding: "hex" | "base64";
42
42
  signature: {
43
- source: "query" | "body" | "header";
43
+ source: "query" | "header" | "body";
44
44
  key: string;
45
45
  prefix?: string | undefined;
46
46
  regex?: string | undefined;
47
47
  };
48
48
  signedComponents: {
49
- source: "literal" | "body" | "header";
49
+ source: "literal" | "header" | "body";
50
50
  required: boolean;
51
51
  key?: string | undefined;
52
52
  value?: string | undefined;
@@ -63,6 +63,7 @@ declare const listTriggersPaginated: (db: AgentsManageDatabaseClient) => (params
63
63
  } | undefined;
64
64
  } | null;
65
65
  runAsUserId: string | null;
66
+ dispatchDelayMs: number | null;
66
67
  createdBy: string | null;
67
68
  name: string;
68
69
  description: string | null;
@@ -82,6 +83,10 @@ declare const listTriggersPaginated: (db: AgentsManageDatabaseClient) => (params
82
83
  * Create a new trigger (agent-scoped)
83
84
  */
84
85
  declare const createTrigger: (db: AgentsManageDatabaseClient) => (params: TriggerInsert) => Promise<TriggerSelect>;
86
+ declare const createTriggerWithUsers: (db: AgentsManageDatabaseClient) => (params: {
87
+ trigger: TriggerInsert;
88
+ userIds: string[];
89
+ }) => Promise<TriggerSelect>;
85
90
  /**
86
91
  * Update a trigger (agent-scoped)
87
92
  */
@@ -106,6 +111,60 @@ declare const deleteTriggersByRunAsUserId: (db: AgentsManageDatabaseClient) => (
106
111
  projectId: string;
107
112
  runAsUserId: string;
108
113
  }) => Promise<void>;
114
+ declare const getTriggerUsers: (db: AgentsManageDatabaseClient) => (params: {
115
+ scopes: AgentScopeConfig;
116
+ triggerId: string;
117
+ }) => Promise<{
118
+ tenantId: string;
119
+ projectId: string;
120
+ agentId: string;
121
+ triggerId: string;
122
+ userId: string;
123
+ createdAt: string;
124
+ }[]>;
125
+ declare const getTriggerUsersBatch: (db: AgentsManageDatabaseClient) => (params: {
126
+ scopes: AgentScopeConfig;
127
+ triggerIds: string[];
128
+ }) => Promise<Map<string, string[]>>;
129
+ declare const createTriggerUser: (db: AgentsManageDatabaseClient) => (params: {
130
+ scopes: AgentScopeConfig;
131
+ triggerId: string;
132
+ userId: string;
133
+ }) => Promise<{
134
+ createdAt: string;
135
+ projectId: string;
136
+ tenantId: string;
137
+ agentId: string;
138
+ userId: string;
139
+ triggerId: string;
140
+ }>;
141
+ declare const deleteTriggerUser: (db: AgentsManageDatabaseClient) => (params: {
142
+ scopes: AgentScopeConfig;
143
+ triggerId: string;
144
+ userId: string;
145
+ }) => Promise<void>;
146
+ declare const setTriggerUsers: (db: AgentsManageDatabaseClient) => (params: {
147
+ scopes: AgentScopeConfig;
148
+ triggerId: string;
149
+ userIds: string[];
150
+ }) => Promise<void>;
151
+ declare const getTriggerUserCount: (db: AgentsManageDatabaseClient) => (params: {
152
+ scopes: AgentScopeConfig;
153
+ triggerId: string;
154
+ }) => Promise<number>;
155
+ declare const getWebhookTriggerIdsWithUser: (db: AgentsManageDatabaseClient) => (params: {
156
+ tenantId: string;
157
+ projectId: string;
158
+ userId: string;
159
+ }) => Promise<{
160
+ agentId: string;
161
+ id: string;
162
+ }[]>;
163
+ declare const removeUserFromProjectTriggerUsers: (db: AgentsManageDatabaseClient) => (params: {
164
+ tenantId: string;
165
+ projectId: string;
166
+ userId: string;
167
+ }) => Promise<void>;
109
168
  /**
110
169
  * Upsert a trigger (create or update based on existence)
111
170
  */
@@ -114,4 +173,4 @@ declare const upsertTrigger: (db: AgentsManageDatabaseClient) => (params: {
114
173
  data: TriggerInsert;
115
174
  }) => Promise<TriggerSelect>;
116
175
  //#endregion
117
- export { createTrigger, deleteTrigger, deleteTriggersByRunAsUserId, getTriggerById, listTriggers, listTriggersPaginated, updateTrigger, upsertTrigger };
176
+ export { createTrigger, createTriggerUser, createTriggerWithUsers, deleteTrigger, deleteTriggerUser, deleteTriggersByRunAsUserId, getTriggerById, getTriggerUserCount, getTriggerUsers, getTriggerUsersBatch, getWebhookTriggerIdsWithUser, listTriggers, listTriggersPaginated, removeUserFromProjectTriggerUsers, setTriggerUsers, updateTrigger, upsertTrigger };
@@ -1,6 +1,6 @@
1
- import { triggers } from "../../db/manage/manage-schema.js";
1
+ import { triggerUsers, triggers } from "../../db/manage/manage-schema.js";
2
2
  import { agentScopedWhere, projectScopedWhere } from "./scope-helpers.js";
3
- import { and, count, desc, eq } from "drizzle-orm";
3
+ import { and, asc, count, desc, eq, inArray } from "drizzle-orm";
4
4
 
5
5
  //#region src/data-access/manage/triggers.ts
6
6
  /**
@@ -42,6 +42,19 @@ const listTriggersPaginated = (db) => async (params) => {
42
42
  const createTrigger = (db) => async (params) => {
43
43
  return (await db.insert(triggers).values(params).returning())[0];
44
44
  };
45
+ const createTriggerWithUsers = (db) => async (params) => {
46
+ return db.transaction(async (tx) => {
47
+ const trigger = await createTrigger(tx)(params.trigger);
48
+ if (params.userIds.length > 0) await tx.insert(triggerUsers).values(params.userIds.map((userId) => ({
49
+ tenantId: trigger.tenantId,
50
+ projectId: trigger.projectId,
51
+ agentId: trigger.agentId,
52
+ triggerId: trigger.id,
53
+ userId
54
+ })));
55
+ return trigger;
56
+ });
57
+ };
45
58
  /**
46
59
  * Update a trigger (agent-scoped)
47
60
  */
@@ -68,6 +81,78 @@ const deleteTriggersByRunAsUserId = (db) => async (params) => {
68
81
  projectId: params.projectId
69
82
  }), eq(triggers.runAsUserId, params.runAsUserId)));
70
83
  };
84
+ const getTriggerUsers = (db) => async (params) => {
85
+ return db.select().from(triggerUsers).where(and(agentScopedWhere(triggerUsers, params.scopes), eq(triggerUsers.triggerId, params.triggerId))).orderBy(asc(triggerUsers.createdAt));
86
+ };
87
+ const getTriggerUsersBatch = (db) => async (params) => {
88
+ if (params.triggerIds.length === 0) return /* @__PURE__ */ new Map();
89
+ const rows = await db.select().from(triggerUsers).where(and(agentScopedWhere(triggerUsers, params.scopes), inArray(triggerUsers.triggerId, params.triggerIds))).orderBy(asc(triggerUsers.createdAt));
90
+ const result = /* @__PURE__ */ new Map();
91
+ for (const triggerId of params.triggerIds) result.set(triggerId, []);
92
+ for (const row of rows) {
93
+ const userIds = result.get(row.triggerId);
94
+ if (userIds) userIds.push(row.userId);
95
+ }
96
+ return result;
97
+ };
98
+ const createTriggerUser = (db) => async (params) => {
99
+ return (await db.insert(triggerUsers).values({
100
+ tenantId: params.scopes.tenantId,
101
+ projectId: params.scopes.projectId,
102
+ agentId: params.scopes.agentId,
103
+ triggerId: params.triggerId,
104
+ userId: params.userId
105
+ }).onConflictDoNothing().returning())[0];
106
+ };
107
+ const deleteTriggerUser = (db) => async (params) => {
108
+ await db.delete(triggerUsers).where(and(agentScopedWhere(triggerUsers, params.scopes), eq(triggerUsers.triggerId, params.triggerId), eq(triggerUsers.userId, params.userId)));
109
+ };
110
+ const setTriggerUsers = (db) => async (params) => {
111
+ await db.delete(triggerUsers).where(and(agentScopedWhere(triggerUsers, params.scopes), eq(triggerUsers.triggerId, params.triggerId)));
112
+ if (params.userIds.length > 0) await db.insert(triggerUsers).values(params.userIds.map((userId) => ({
113
+ tenantId: params.scopes.tenantId,
114
+ projectId: params.scopes.projectId,
115
+ agentId: params.scopes.agentId,
116
+ triggerId: params.triggerId,
117
+ userId
118
+ })));
119
+ };
120
+ const getTriggerUserCount = (db) => async (params) => {
121
+ return (await db.select({ count: count() }).from(triggerUsers).where(and(agentScopedWhere(triggerUsers, params.scopes), eq(triggerUsers.triggerId, params.triggerId))))[0]?.count ?? 0;
122
+ };
123
+ const getWebhookTriggerIdsWithUser = (db) => async (params) => {
124
+ return db.select({
125
+ agentId: triggers.agentId,
126
+ id: triggers.id
127
+ }).from(triggers).innerJoin(triggerUsers, and(eq(triggerUsers.tenantId, triggers.tenantId), eq(triggerUsers.projectId, triggers.projectId), eq(triggerUsers.agentId, triggers.agentId), eq(triggerUsers.triggerId, triggers.id))).where(and(projectScopedWhere(triggers, {
128
+ tenantId: params.tenantId,
129
+ projectId: params.projectId
130
+ }), eq(triggerUsers.userId, params.userId)));
131
+ };
132
+ const removeUserFromProjectTriggerUsers = (db) => async (params) => {
133
+ await db.transaction(async (tx) => {
134
+ const triggerRows = await getWebhookTriggerIdsWithUser(tx)(params);
135
+ if (triggerRows.length === 0) return;
136
+ const triggerIds = triggerRows.map((row) => row.id);
137
+ await tx.delete(triggerUsers).where(and(projectScopedWhere(triggerUsers, {
138
+ tenantId: params.tenantId,
139
+ projectId: params.projectId
140
+ }), inArray(triggerUsers.triggerId, triggerIds), eq(triggerUsers.userId, params.userId)));
141
+ const triggersWithRemainingUsers = await tx.select({ triggerId: triggerUsers.triggerId }).from(triggerUsers).where(and(projectScopedWhere(triggerUsers, {
142
+ tenantId: params.tenantId,
143
+ projectId: params.projectId
144
+ }), inArray(triggerUsers.triggerId, triggerIds))).groupBy(triggerUsers.triggerId);
145
+ const triggerIdsWithRemainingUsers = new Set(triggersWithRemainingUsers.map((row) => row.triggerId));
146
+ const emptyTriggerIds = triggerIds.filter((id) => !triggerIdsWithRemainingUsers.has(id));
147
+ if (emptyTriggerIds.length > 0) await tx.update(triggers).set({
148
+ enabled: false,
149
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
150
+ }).where(and(projectScopedWhere(triggers, {
151
+ tenantId: params.tenantId,
152
+ projectId: params.projectId
153
+ }), inArray(triggers.id, emptyTriggerIds), eq(triggers.enabled, true)));
154
+ });
155
+ };
71
156
  /**
72
157
  * Upsert a trigger (create or update based on existence)
73
158
  */
@@ -89,4 +174,4 @@ const upsertTrigger = (db) => async (params) => {
89
174
  };
90
175
 
91
176
  //#endregion
92
- export { createTrigger, deleteTrigger, deleteTriggersByRunAsUserId, getTriggerById, listTriggers, listTriggersPaginated, updateTrigger, upsertTrigger };
177
+ export { createTrigger, createTriggerUser, createTriggerWithUsers, deleteTrigger, deleteTriggerUser, deleteTriggersByRunAsUserId, getTriggerById, getTriggerUserCount, getTriggerUsers, getTriggerUsersBatch, getWebhookTriggerIdsWithUser, listTriggers, listTriggersPaginated, removeUserFromProjectTriggerUsers, setTriggerUsers, updateTrigger, upsertTrigger };
@@ -12,28 +12,28 @@ declare const getApiKeyById: (db: AgentsRunDatabaseClient) => (params: {
12
12
  name: string | null;
13
13
  createdAt: string;
14
14
  updatedAt: string;
15
- expiresAt: string | null;
16
- agentId: string;
17
15
  projectId: string;
18
16
  tenantId: string;
17
+ agentId: string;
19
18
  publicId: string;
20
19
  keyHash: string;
21
20
  keyPrefix: string;
22
21
  lastUsedAt: string | null;
22
+ expiresAt: string | null;
23
23
  } | undefined>;
24
24
  declare const getApiKeyByPublicId: (db: AgentsRunDatabaseClient) => (publicId: string) => Promise<{
25
25
  id: string;
26
26
  name: string | null;
27
27
  createdAt: string;
28
28
  updatedAt: string;
29
- expiresAt: string | null;
30
- agentId: string;
31
29
  projectId: string;
32
30
  tenantId: string;
31
+ agentId: string;
33
32
  publicId: string;
34
33
  keyHash: string;
35
34
  keyPrefix: string;
36
35
  lastUsedAt: string | null;
36
+ expiresAt: string | null;
37
37
  } | undefined>;
38
38
  declare const listApiKeys: (db: AgentsRunDatabaseClient) => (params: {
39
39
  scopes: ProjectScopeConfig;
@@ -43,14 +43,14 @@ declare const listApiKeys: (db: AgentsRunDatabaseClient) => (params: {
43
43
  name: string | null;
44
44
  createdAt: string;
45
45
  updatedAt: string;
46
- expiresAt: string | null;
47
- agentId: string;
48
46
  projectId: string;
49
47
  tenantId: string;
48
+ agentId: string;
50
49
  publicId: string;
51
50
  keyHash: string;
52
51
  keyPrefix: string;
53
52
  lastUsedAt: string | null;
53
+ expiresAt: string | null;
54
54
  }[]>;
55
55
  declare const listApiKeysPaginated: (db: AgentsRunDatabaseClient) => (params: {
56
56
  scopes: ProjectScopeConfig;
@@ -70,14 +70,14 @@ declare const createApiKey: (db: AgentsRunDatabaseClient) => (params: ApiKeyInse
70
70
  name: string | null;
71
71
  createdAt: string;
72
72
  updatedAt: string;
73
- expiresAt: string | null;
74
- agentId: string;
75
73
  projectId: string;
76
74
  tenantId: string;
75
+ agentId: string;
77
76
  publicId: string;
78
77
  keyHash: string;
79
78
  keyPrefix: string;
80
79
  lastUsedAt: string | null;
80
+ expiresAt: string | null;
81
81
  }>;
82
82
  declare const updateApiKey: (db: AgentsRunDatabaseClient) => (params: {
83
83
  scopes: ProjectScopeConfig;
@@ -5,16 +5,16 @@ import { AppInsert, AppSelect, AppUpdate } from "../../types/entities.js";
5
5
 
6
6
  //#region src/data-access/runtime/apps.d.ts
7
7
  declare const getAppById: (db: AgentsRunDatabaseClient) => (id: string) => Promise<{
8
+ type: AppType;
9
+ description: string | null;
8
10
  id: string;
9
11
  name: string;
10
12
  createdAt: string;
11
13
  updatedAt: string;
12
- description: string | null;
13
- enabled: boolean;
14
- type: AppType;
15
14
  projectId: string | null;
16
15
  tenantId: string | null;
17
16
  prompt: string | null;
17
+ enabled: boolean;
18
18
  config: {
19
19
  type: "web_client";
20
20
  webClient: {
@@ -61,16 +61,16 @@ declare const listAppsPaginated: (db: AgentsRunDatabaseClient) => (params: {
61
61
  };
62
62
  }>;
63
63
  declare const createApp: (db: AgentsRunDatabaseClient) => (params: AppInsert) => Promise<{
64
+ type: AppType;
65
+ description: string | null;
64
66
  id: string;
65
67
  name: string;
66
68
  createdAt: string;
67
69
  updatedAt: string;
68
- description: string | null;
69
- enabled: boolean;
70
- type: AppType;
71
70
  projectId: string | null;
72
71
  tenantId: string | null;
73
72
  prompt: string | null;
73
+ enabled: boolean;
74
74
  config: {
75
75
  type: "web_client";
76
76
  webClient: {