@inkeep/agents-core 0.58.2 → 0.58.4

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 (59) hide show
  1. package/dist/auth/auth-schema.d.ts +85 -85
  2. package/dist/auth/auth-validation-schemas.d.ts +152 -152
  3. package/dist/auth/auth.d.ts +9 -9
  4. package/dist/auth/permissions.d.ts +9 -9
  5. package/dist/client-exports.d.ts +5 -5
  6. package/dist/client-exports.js +2 -2
  7. package/dist/constants/models.d.ts +34 -2
  8. package/dist/constants/models.js +37 -5
  9. package/dist/data-access/index.d.ts +2 -1
  10. package/dist/data-access/index.js +2 -1
  11. package/dist/data-access/manage/agents.d.ts +21 -21
  12. package/dist/data-access/manage/artifactComponents.d.ts +8 -8
  13. package/dist/data-access/manage/contextConfigs.d.ts +8 -8
  14. package/dist/data-access/manage/dataComponents.d.ts +4 -4
  15. package/dist/data-access/manage/functionTools.d.ts +10 -10
  16. package/dist/data-access/manage/skills.d.ts +12 -12
  17. package/dist/data-access/manage/subAgentExternalAgentRelations.d.ts +18 -18
  18. package/dist/data-access/manage/subAgentRelations.d.ts +18 -18
  19. package/dist/data-access/manage/subAgentTeamAgentRelations.d.ts +18 -18
  20. package/dist/data-access/manage/subAgents.d.ts +15 -15
  21. package/dist/data-access/manage/tools.d.ts +15 -15
  22. package/dist/data-access/manage/tools.js +16 -2
  23. package/dist/data-access/manage/triggers.d.ts +2 -2
  24. package/dist/data-access/runtime/apiKeys.d.ts +12 -12
  25. package/dist/data-access/runtime/cascade-delete.d.ts +3 -0
  26. package/dist/data-access/runtime/cascade-delete.js +11 -4
  27. package/dist/data-access/runtime/conversations.d.ts +31 -31
  28. package/dist/data-access/runtime/github-work-app-installations.d.ts +25 -5
  29. package/dist/data-access/runtime/github-work-app-installations.js +20 -17
  30. package/dist/data-access/runtime/messages.d.ts +9 -9
  31. package/dist/data-access/runtime/slack-work-app-mcp.d.ts +26 -0
  32. package/dist/data-access/runtime/slack-work-app-mcp.js +69 -0
  33. package/dist/data-access/runtime/tasks.d.ts +9 -9
  34. package/dist/data-access/runtime/workAppSlack.js +2 -2
  35. package/dist/db/manage/manage-schema.d.ts +453 -453
  36. package/dist/db/manage/scope-definitions.d.ts +3 -1
  37. package/dist/db/manage/scope-definitions.js +5 -0
  38. package/dist/db/runtime/runtime-schema.d.ts +465 -311
  39. package/dist/db/runtime/runtime-schema.js +29 -2
  40. package/dist/env.d.ts +2 -0
  41. package/dist/env.js +1 -0
  42. package/dist/index.d.ts +5 -4
  43. package/dist/index.js +4 -3
  44. package/dist/middleware/no-auth.d.ts +2 -2
  45. package/dist/setup/setup.js +14 -3
  46. package/dist/types/index.d.ts +2 -2
  47. package/dist/types/utility.d.ts +9 -2
  48. package/dist/validation/dolt-schemas.d.ts +1 -1
  49. package/dist/validation/drizzle-schema-helpers.d.ts +3 -3
  50. package/dist/validation/index.d.ts +2 -2
  51. package/dist/validation/index.js +2 -2
  52. package/dist/validation/schemas.d.ts +1922 -1893
  53. package/dist/validation/schemas.js +16 -2
  54. package/drizzle/runtime/0020_tiny_killmonger.sql +15 -0
  55. package/drizzle/runtime/0021_careful_xorn.sql +2 -0
  56. package/drizzle/runtime/meta/0020_snapshot.json +4122 -0
  57. package/drizzle/runtime/meta/0021_snapshot.json +4124 -0
  58. package/drizzle/runtime/meta/_journal.json +14 -0
  59. package/package.json +1 -1
@@ -17,19 +17,19 @@ declare const listConversations: (db: AgentsRunDatabaseClient) => (params: {
17
17
  }>;
18
18
  declare const createConversation: (db: AgentsRunDatabaseClient) => (params: ConversationInsert) => Promise<{
19
19
  id: string;
20
+ tenantId: string;
21
+ projectId: string;
22
+ agentId: string | null;
23
+ title: string | null;
20
24
  createdAt: string;
21
25
  updatedAt: string;
26
+ metadata: ConversationMetadata | null;
27
+ userId: string | null;
22
28
  ref: {
23
- type: "commit" | "tag" | "branch";
29
+ type: "tag" | "commit" | "branch";
24
30
  name: string;
25
31
  hash: string;
26
32
  } | null;
27
- userId: string | null;
28
- metadata: ConversationMetadata | null;
29
- title: string | null;
30
- tenantId: string;
31
- projectId: string;
32
- agentId: string | null;
33
33
  activeSubAgentId: string;
34
34
  lastContextResolution: string | null;
35
35
  }>;
@@ -44,7 +44,7 @@ declare const updateConversation: (db: AgentsRunDatabaseClient) => (params: {
44
44
  agentId: string | null;
45
45
  activeSubAgentId: string;
46
46
  ref: {
47
- type: "commit" | "tag" | "branch";
47
+ type: "tag" | "commit" | "branch";
48
48
  name: string;
49
49
  hash: string;
50
50
  } | null;
@@ -70,7 +70,7 @@ declare const updateConversationActiveSubAgent: (db: AgentsRunDatabaseClient) =>
70
70
  agentId: string | null;
71
71
  activeSubAgentId: string;
72
72
  ref: {
73
- type: "commit" | "tag" | "branch";
73
+ type: "tag" | "commit" | "branch";
74
74
  name: string;
75
75
  hash: string;
76
76
  } | null;
@@ -86,19 +86,19 @@ declare const getConversation: (db: AgentsRunDatabaseClient) => (params: {
86
86
  conversationId: string;
87
87
  }) => Promise<{
88
88
  id: string;
89
+ tenantId: string;
90
+ projectId: string;
91
+ agentId: string | null;
92
+ title: string | null;
89
93
  createdAt: string;
90
94
  updatedAt: string;
95
+ metadata: ConversationMetadata | null;
96
+ userId: string | null;
91
97
  ref: {
92
- type: "commit" | "tag" | "branch";
98
+ type: "tag" | "commit" | "branch";
93
99
  name: string;
94
100
  hash: string;
95
101
  } | null;
96
- userId: string | null;
97
- metadata: ConversationMetadata | null;
98
- title: string | null;
99
- tenantId: string;
100
- projectId: string;
101
- agentId: string | null;
102
102
  activeSubAgentId: string;
103
103
  lastContextResolution: string | null;
104
104
  } | undefined>;
@@ -108,7 +108,7 @@ declare const createOrGetConversation: (db: AgentsRunDatabaseClient) => (input:
108
108
  tenantId: string;
109
109
  id: string;
110
110
  ref: {
111
- type: "commit" | "tag" | "branch";
111
+ type: "tag" | "commit" | "branch";
112
112
  name: string;
113
113
  hash: string;
114
114
  };
@@ -122,19 +122,19 @@ declare const createOrGetConversation: (db: AgentsRunDatabaseClient) => (input:
122
122
  contextConfigId?: string | undefined;
123
123
  } | {
124
124
  id: string;
125
+ tenantId: string;
126
+ projectId: string;
127
+ agentId: string | null;
128
+ title: string | null;
125
129
  createdAt: string;
126
130
  updatedAt: string;
131
+ metadata: ConversationMetadata | null;
132
+ userId: string | null;
127
133
  ref: {
128
- type: "commit" | "tag" | "branch";
134
+ type: "tag" | "commit" | "branch";
129
135
  name: string;
130
136
  hash: string;
131
137
  } | null;
132
- userId: string | null;
133
- metadata: ConversationMetadata | null;
134
- title: string | null;
135
- tenantId: string;
136
- projectId: string;
137
- agentId: string | null;
138
138
  activeSubAgentId: string;
139
139
  lastContextResolution: string | null;
140
140
  }>;
@@ -154,19 +154,19 @@ declare const getActiveAgentForConversation: (db: AgentsRunDatabaseClient) => (p
154
154
  conversationId: string;
155
155
  }) => Promise<{
156
156
  id: string;
157
+ tenantId: string;
158
+ projectId: string;
159
+ agentId: string | null;
160
+ title: string | null;
157
161
  createdAt: string;
158
162
  updatedAt: string;
163
+ metadata: ConversationMetadata | null;
164
+ userId: string | null;
159
165
  ref: {
160
- type: "commit" | "tag" | "branch";
166
+ type: "tag" | "commit" | "branch";
161
167
  name: string;
162
168
  hash: string;
163
169
  } | null;
164
- userId: string | null;
165
- metadata: ConversationMetadata | null;
166
- title: string | null;
167
- tenantId: string;
168
- projectId: string;
169
- agentId: string | null;
170
170
  activeSubAgentId: string;
171
171
  lastContextResolution: string | null;
172
172
  } | undefined>;
@@ -187,7 +187,11 @@ declare const setMcpToolRepositoryAccess: (db: AgentsRunDatabaseClient) => (para
187
187
  * Get MCP tool repository access entries
188
188
  * These entries are used when mode='selected'. Check mode via getMcpToolAccessMode().
189
189
  */
190
- declare const getMcpToolRepositoryAccess: (db: AgentsRunDatabaseClient) => (toolId: string) => Promise<{
190
+ declare const getMcpToolRepositoryAccess: (db: AgentsRunDatabaseClient) => (scope: {
191
+ tenantId: string;
192
+ projectId: string;
193
+ toolId: string;
194
+ }) => Promise<{
191
195
  id: string;
192
196
  toolId: string;
193
197
  tenantId: string;
@@ -201,7 +205,11 @@ declare const getMcpToolRepositoryAccess: (db: AgentsRunDatabaseClient) => (tool
201
205
  * If the tool's access mode is 'all', returns all repositories the project has access to.
202
206
  * If mode is 'selected' (or not set), returns only explicitly granted repositories.
203
207
  */
204
- declare const getMcpToolRepositoryAccessWithDetails: (db: AgentsRunDatabaseClient) => (toolId: string) => Promise<(WorkAppGitHubRepositorySelect & {
208
+ declare const getMcpToolRepositoryAccessWithDetails: (db: AgentsRunDatabaseClient) => (scope: {
209
+ tenantId: string;
210
+ projectId: string;
211
+ toolId: string;
212
+ }) => Promise<(WorkAppGitHubRepositorySelect & {
205
213
  accessId: string;
206
214
  installationAccountLogin: string;
207
215
  installationId: string;
@@ -209,7 +217,11 @@ declare const getMcpToolRepositoryAccessWithDetails: (db: AgentsRunDatabaseClien
209
217
  /**
210
218
  * Remove all MCP tool repository access for a specific tool
211
219
  */
212
- declare const clearMcpToolRepositoryAccess: (db: AgentsRunDatabaseClient) => (toolId: string) => Promise<number>;
220
+ declare const clearMcpToolRepositoryAccess: (db: AgentsRunDatabaseClient) => (scope: {
221
+ tenantId: string;
222
+ projectId: string;
223
+ toolId: string;
224
+ }) => Promise<number>;
213
225
  declare const isGithubWorkAppTool: (tool: ToolSelect | McpTool) => boolean | undefined;
214
226
  type WorkAppGitHubAccessMode = 'all' | 'selected';
215
227
  /**
@@ -252,10 +264,18 @@ declare const setMcpToolAccessMode: (db: AgentsRunDatabaseClient) => (params: {
252
264
  * Get the access mode for an MCP tool's GitHub repository access.
253
265
  * Returns 'selected' if no mode is explicitly set (fail-safe default).
254
266
  */
255
- declare const getMcpToolAccessMode: (db: AgentsRunDatabaseClient) => (toolId: string) => Promise<WorkAppGitHubAccessMode>;
267
+ declare const getMcpToolAccessMode: (db: AgentsRunDatabaseClient) => (scope: {
268
+ tenantId: string;
269
+ projectId: string;
270
+ toolId: string;
271
+ }) => Promise<WorkAppGitHubAccessMode>;
256
272
  /**
257
273
  * Delete the access mode entry for an MCP tool
258
274
  */
259
- declare const deleteMcpToolAccessMode: (db: AgentsRunDatabaseClient) => (toolId: string) => Promise<boolean>;
275
+ declare const deleteMcpToolAccessMode: (db: AgentsRunDatabaseClient) => (scope: {
276
+ tenantId: string;
277
+ projectId: string;
278
+ toolId: string;
279
+ }) => Promise<boolean>;
260
280
  //#endregion
261
281
  export { WorkAppGitHubAccessMode, addRepositories, checkProjectRepositoryAccess, clearMcpToolRepositoryAccess, clearProjectRepositoryAccess, createInstallation, deleteInstallation, deleteMcpToolAccessMode, deleteProjectAccessMode, disconnectInstallation, getInstallationByGitHubId, getInstallationById, getInstallationsByTenantId, getMcpToolAccessMode, getMcpToolRepositoryAccess, getMcpToolRepositoryAccessWithDetails, getProjectAccessMode, getProjectRepositoryAccess, getProjectRepositoryAccessWithDetails, getRepositoriesByInstallationId, getRepositoriesByTenantId, getRepositoryByFullName, getRepositoryById, getRepositoryCount, getRepositoryCountsByTenantId, isGithubWorkAppTool, removeRepositories, setMcpToolAccessMode, setMcpToolRepositoryAccess, setProjectAccessMode, setProjectRepositoryAccess, syncRepositories, updateInstallationStatus, updateInstallationStatusByGitHubId, validateRepositoryOwnership };
@@ -327,7 +327,7 @@ const getRepositoryCountsByTenantId = (db) => async (params) => {
327
327
  */
328
328
  const setMcpToolRepositoryAccess = (db) => async (params) => {
329
329
  const now = (/* @__PURE__ */ new Date()).toISOString();
330
- await db.delete(workAppGitHubMcpToolRepositoryAccess).where(eq(workAppGitHubMcpToolRepositoryAccess.toolId, params.toolId));
330
+ await db.delete(workAppGitHubMcpToolRepositoryAccess).where(and(eq(workAppGitHubMcpToolRepositoryAccess.tenantId, params.tenantId), eq(workAppGitHubMcpToolRepositoryAccess.projectId, params.projectId), eq(workAppGitHubMcpToolRepositoryAccess.toolId, params.toolId)));
331
331
  if (params.repositoryIds.length > 0) await db.insert(workAppGitHubMcpToolRepositoryAccess).values(params.repositoryIds.map((repoId) => ({
332
332
  id: generateId(),
333
333
  toolId: params.toolId,
@@ -342,23 +342,22 @@ const setMcpToolRepositoryAccess = (db) => async (params) => {
342
342
  * Get MCP tool repository access entries
343
343
  * These entries are used when mode='selected'. Check mode via getMcpToolAccessMode().
344
344
  */
345
- const getMcpToolRepositoryAccess = (db) => async (toolId) => {
346
- return await db.select().from(workAppGitHubMcpToolRepositoryAccess).where(eq(workAppGitHubMcpToolRepositoryAccess.toolId, toolId));
345
+ const getMcpToolRepositoryAccess = (db) => async (scope) => {
346
+ return await db.select().from(workAppGitHubMcpToolRepositoryAccess).where(and(eq(workAppGitHubMcpToolRepositoryAccess.tenantId, scope.tenantId), eq(workAppGitHubMcpToolRepositoryAccess.projectId, scope.projectId), eq(workAppGitHubMcpToolRepositoryAccess.toolId, scope.toolId)));
347
347
  };
348
348
  /**
349
349
  * Get MCP tool repository access with full repository details.
350
350
  * If the tool's access mode is 'all', returns all repositories the project has access to.
351
351
  * If mode is 'selected' (or not set), returns only explicitly granted repositories.
352
352
  */
353
- const getMcpToolRepositoryAccessWithDetails = (db) => async (toolId) => {
354
- const accessMode = (await db.select({
353
+ const getMcpToolRepositoryAccessWithDetails = (db) => async (scope) => {
354
+ if ((await db.select({
355
355
  mode: workAppGitHubMcpToolAccessMode.mode,
356
356
  projectId: workAppGitHubMcpToolAccessMode.projectId,
357
357
  tenantId: workAppGitHubMcpToolAccessMode.tenantId
358
- }).from(workAppGitHubMcpToolAccessMode).where(eq(workAppGitHubMcpToolAccessMode.toolId, toolId)).limit(1))[0];
359
- if (accessMode?.mode === "all") return getProjectRepositoryAccessWithDetails(db)({
360
- tenantId: accessMode.tenantId,
361
- projectId: accessMode.projectId
358
+ }).from(workAppGitHubMcpToolAccessMode).where(and(eq(workAppGitHubMcpToolAccessMode.tenantId, scope.tenantId), eq(workAppGitHubMcpToolAccessMode.projectId, scope.projectId), eq(workAppGitHubMcpToolAccessMode.toolId, scope.toolId))).limit(1))[0]?.mode === "all") return getProjectRepositoryAccessWithDetails(db)({
359
+ tenantId: scope.tenantId,
360
+ projectId: scope.projectId
362
361
  });
363
362
  return await db.select({
364
363
  accessId: workAppGitHubMcpToolRepositoryAccess.id,
@@ -372,13 +371,13 @@ const getMcpToolRepositoryAccessWithDetails = (db) => async (toolId) => {
372
371
  createdAt: workAppGitHubRepositories.createdAt,
373
372
  updatedAt: workAppGitHubRepositories.updatedAt,
374
373
  installationAccountLogin: workAppGitHubInstallations.accountLogin
375
- }).from(workAppGitHubMcpToolRepositoryAccess).innerJoin(workAppGitHubRepositories, eq(workAppGitHubMcpToolRepositoryAccess.repositoryDbId, workAppGitHubRepositories.id)).innerJoin(workAppGitHubInstallations, eq(workAppGitHubRepositories.installationDbId, workAppGitHubInstallations.id)).where(eq(workAppGitHubMcpToolRepositoryAccess.toolId, toolId));
374
+ }).from(workAppGitHubMcpToolRepositoryAccess).innerJoin(workAppGitHubRepositories, eq(workAppGitHubMcpToolRepositoryAccess.repositoryDbId, workAppGitHubRepositories.id)).innerJoin(workAppGitHubInstallations, eq(workAppGitHubRepositories.installationDbId, workAppGitHubInstallations.id)).where(and(eq(workAppGitHubMcpToolRepositoryAccess.tenantId, scope.tenantId), eq(workAppGitHubMcpToolRepositoryAccess.projectId, scope.projectId), eq(workAppGitHubMcpToolRepositoryAccess.toolId, scope.toolId)));
376
375
  };
377
376
  /**
378
377
  * Remove all MCP tool repository access for a specific tool
379
378
  */
380
- const clearMcpToolRepositoryAccess = (db) => async (toolId) => {
381
- return (await db.delete(workAppGitHubMcpToolRepositoryAccess).where(eq(workAppGitHubMcpToolRepositoryAccess.toolId, toolId)).returning()).length;
379
+ const clearMcpToolRepositoryAccess = (db) => async (scope) => {
380
+ return (await db.delete(workAppGitHubMcpToolRepositoryAccess).where(and(eq(workAppGitHubMcpToolRepositoryAccess.tenantId, scope.tenantId), eq(workAppGitHubMcpToolRepositoryAccess.projectId, scope.projectId), eq(workAppGitHubMcpToolRepositoryAccess.toolId, scope.toolId))).returning()).length;
382
381
  };
383
382
  const isGithubWorkAppTool = (tool) => {
384
383
  return tool.isWorkApp && tool.config.mcp.server.url.includes("/github/mcp");
@@ -432,7 +431,11 @@ const setMcpToolAccessMode = (db) => async (params) => {
432
431
  createdAt: now,
433
432
  updatedAt: now
434
433
  }).onConflictDoUpdate({
435
- target: [workAppGitHubMcpToolAccessMode.toolId],
434
+ target: [
435
+ workAppGitHubMcpToolAccessMode.tenantId,
436
+ workAppGitHubMcpToolAccessMode.projectId,
437
+ workAppGitHubMcpToolAccessMode.toolId
438
+ ],
436
439
  set: {
437
440
  mode: params.mode,
438
441
  updatedAt: now
@@ -443,14 +446,14 @@ const setMcpToolAccessMode = (db) => async (params) => {
443
446
  * Get the access mode for an MCP tool's GitHub repository access.
444
447
  * Returns 'selected' if no mode is explicitly set (fail-safe default).
445
448
  */
446
- const getMcpToolAccessMode = (db) => async (toolId) => {
447
- return (await db.select({ mode: workAppGitHubMcpToolAccessMode.mode }).from(workAppGitHubMcpToolAccessMode).where(eq(workAppGitHubMcpToolAccessMode.toolId, toolId)).limit(1))[0]?.mode ?? "selected";
449
+ const getMcpToolAccessMode = (db) => async (scope) => {
450
+ return (await db.select({ mode: workAppGitHubMcpToolAccessMode.mode }).from(workAppGitHubMcpToolAccessMode).where(and(eq(workAppGitHubMcpToolAccessMode.tenantId, scope.tenantId), eq(workAppGitHubMcpToolAccessMode.projectId, scope.projectId), eq(workAppGitHubMcpToolAccessMode.toolId, scope.toolId))).limit(1))[0]?.mode ?? "selected";
448
451
  };
449
452
  /**
450
453
  * Delete the access mode entry for an MCP tool
451
454
  */
452
- const deleteMcpToolAccessMode = (db) => async (toolId) => {
453
- return (await db.delete(workAppGitHubMcpToolAccessMode).where(eq(workAppGitHubMcpToolAccessMode.toolId, toolId)).returning()).length > 0;
455
+ const deleteMcpToolAccessMode = (db) => async (scope) => {
456
+ return (await db.delete(workAppGitHubMcpToolAccessMode).where(and(eq(workAppGitHubMcpToolAccessMode.tenantId, scope.tenantId), eq(workAppGitHubMcpToolAccessMode.projectId, scope.projectId), eq(workAppGitHubMcpToolAccessMode.toolId, scope.toolId))).returning()).length > 0;
454
457
  };
455
458
 
456
459
  //#endregion
@@ -11,13 +11,13 @@ declare const getMessageById: (db: AgentsRunDatabaseClient) => (params: {
11
11
  messageId: string;
12
12
  }) => Promise<{
13
13
  id: string;
14
+ tenantId: string;
15
+ projectId: string;
14
16
  createdAt: string;
15
17
  updatedAt: string;
16
18
  metadata: MessageMetadata | null;
17
- role: string;
18
19
  content: MessageContent;
19
- tenantId: string;
20
- projectId: string;
20
+ role: string;
21
21
  fromSubAgentId: string | null;
22
22
  toSubAgentId: string | null;
23
23
  fromExternalAgentId: string | null;
@@ -142,13 +142,13 @@ declare const getVisibleMessages: (db: AgentsRunDatabaseClient) => (params: {
142
142
  }[]>;
143
143
  declare const createMessage: (db: AgentsRunDatabaseClient) => (params: MessageInsert) => Promise<{
144
144
  id: string;
145
+ tenantId: string;
146
+ projectId: string;
145
147
  createdAt: string;
146
148
  updatedAt: string;
147
149
  metadata: MessageMetadata | null;
148
- role: string;
149
150
  content: MessageContent;
150
- tenantId: string;
151
- projectId: string;
151
+ role: string;
152
152
  fromSubAgentId: string | null;
153
153
  toSubAgentId: string | null;
154
154
  fromExternalAgentId: string | null;
@@ -195,13 +195,13 @@ declare const deleteMessage: (db: AgentsRunDatabaseClient) => (params: {
195
195
  messageId: string;
196
196
  }) => Promise<{
197
197
  id: string;
198
+ tenantId: string;
199
+ projectId: string;
198
200
  createdAt: string;
199
201
  updatedAt: string;
200
202
  metadata: MessageMetadata | null;
201
- role: string;
202
203
  content: MessageContent;
203
- tenantId: string;
204
- projectId: string;
204
+ role: string;
205
205
  fromSubAgentId: string | null;
206
206
  toSubAgentId: string | null;
207
207
  fromExternalAgentId: string | null;
@@ -0,0 +1,26 @@
1
+ import { ToolScopeConfig } from "../../db/manage/scope-definitions.js";
2
+ import { AgentsRunDatabaseClient } from "../../db/runtime/runtime-client.js";
3
+ import { McpTool, ToolSelect } from "../../types/entities.js";
4
+
5
+ //#region src/data-access/runtime/slack-work-app-mcp.d.ts
6
+ type SlackMcpToolAccessConfig = {
7
+ channelAccessMode: 'all' | 'selected';
8
+ dmEnabled: boolean;
9
+ channelIds: string[];
10
+ };
11
+ declare const getSlackMcpToolAccessConfig: (db: AgentsRunDatabaseClient) => (scope: ToolScopeConfig) => Promise<SlackMcpToolAccessConfig>;
12
+ declare const setSlackMcpToolAccessConfig: (db: AgentsRunDatabaseClient) => (params: {
13
+ toolId: string;
14
+ tenantId: string;
15
+ projectId: string;
16
+ channelAccessMode: "all" | "selected";
17
+ dmEnabled: boolean;
18
+ channelIds: string[];
19
+ }) => Promise<void>;
20
+ declare const updateSlackMcpToolAccessChannelIds: (db: AgentsRunDatabaseClient) => (scope: ToolScopeConfig, channelIds: string[]) => Promise<void>;
21
+ declare const deleteSlackMcpToolAccessConfig: (db: AgentsRunDatabaseClient) => (scope: ToolScopeConfig) => Promise<boolean>;
22
+ declare const deleteAllSlackMcpToolAccessConfigsByTenant: (db: AgentsRunDatabaseClient) => (tenantId: string) => Promise<number>;
23
+ declare const isSlackWorkAppTool: (tool: ToolSelect | McpTool) => boolean | undefined;
24
+ declare const resolveSlackUserContext: (db: AgentsRunDatabaseClient) => (inkeepUserId: string) => Promise<string | undefined>;
25
+ //#endregion
26
+ export { SlackMcpToolAccessConfig, deleteAllSlackMcpToolAccessConfigsByTenant, deleteSlackMcpToolAccessConfig, getSlackMcpToolAccessConfig, isSlackWorkAppTool, resolveSlackUserContext, setSlackMcpToolAccessConfig, updateSlackMcpToolAccessChannelIds };
@@ -0,0 +1,69 @@
1
+ import { workAppSlackMcpToolAccessConfig, workAppSlackUserMappings } from "../../db/runtime/runtime-schema.js";
2
+ import { and, eq } from "drizzle-orm";
3
+
4
+ //#region src/data-access/runtime/slack-work-app-mcp.ts
5
+ const getSlackMcpToolAccessConfig = (db) => async (scope) => {
6
+ return (await db.select({
7
+ channelAccessMode: workAppSlackMcpToolAccessConfig.channelAccessMode,
8
+ dmEnabled: workAppSlackMcpToolAccessConfig.dmEnabled,
9
+ channelIds: workAppSlackMcpToolAccessConfig.channelIds
10
+ }).from(workAppSlackMcpToolAccessConfig).where(and(eq(workAppSlackMcpToolAccessConfig.tenantId, scope.tenantId), eq(workAppSlackMcpToolAccessConfig.projectId, scope.projectId), eq(workAppSlackMcpToolAccessConfig.toolId, scope.toolId))).limit(1))[0] ?? {
11
+ channelAccessMode: "selected",
12
+ dmEnabled: false,
13
+ channelIds: []
14
+ };
15
+ };
16
+ const setSlackMcpToolAccessConfig = (db) => async (params) => {
17
+ const now = (/* @__PURE__ */ new Date()).toISOString();
18
+ await db.insert(workAppSlackMcpToolAccessConfig).values({
19
+ toolId: params.toolId,
20
+ tenantId: params.tenantId,
21
+ projectId: params.projectId,
22
+ channelAccessMode: params.channelAccessMode,
23
+ dmEnabled: params.dmEnabled,
24
+ channelIds: params.channelIds,
25
+ createdAt: now,
26
+ updatedAt: now
27
+ }).onConflictDoUpdate({
28
+ target: [
29
+ workAppSlackMcpToolAccessConfig.tenantId,
30
+ workAppSlackMcpToolAccessConfig.projectId,
31
+ workAppSlackMcpToolAccessConfig.toolId
32
+ ],
33
+ set: {
34
+ channelAccessMode: params.channelAccessMode,
35
+ dmEnabled: params.dmEnabled,
36
+ channelIds: params.channelIds,
37
+ updatedAt: now
38
+ }
39
+ });
40
+ };
41
+ const updateSlackMcpToolAccessChannelIds = (db) => async (scope, channelIds) => {
42
+ await db.update(workAppSlackMcpToolAccessConfig).set({
43
+ channelIds,
44
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
45
+ }).where(and(eq(workAppSlackMcpToolAccessConfig.tenantId, scope.tenantId), eq(workAppSlackMcpToolAccessConfig.projectId, scope.projectId), eq(workAppSlackMcpToolAccessConfig.toolId, scope.toolId)));
46
+ };
47
+ const deleteSlackMcpToolAccessConfig = (db) => async (scope) => {
48
+ return (await db.delete(workAppSlackMcpToolAccessConfig).where(and(eq(workAppSlackMcpToolAccessConfig.tenantId, scope.tenantId), eq(workAppSlackMcpToolAccessConfig.projectId, scope.projectId), eq(workAppSlackMcpToolAccessConfig.toolId, scope.toolId))).returning()).length > 0;
49
+ };
50
+ const deleteAllSlackMcpToolAccessConfigsByTenant = (db) => async (tenantId) => {
51
+ return (await db.delete(workAppSlackMcpToolAccessConfig).where(eq(workAppSlackMcpToolAccessConfig.tenantId, tenantId)).returning()).length;
52
+ };
53
+ const isSlackWorkAppTool = (tool) => {
54
+ return tool.isWorkApp && tool.config.mcp.server.url.includes("/slack/mcp");
55
+ };
56
+ const resolveSlackUserContext = (db) => async (inkeepUserId) => {
57
+ const mappings = await db.select({
58
+ slackUserId: workAppSlackUserMappings.slackUserId,
59
+ slackUsername: workAppSlackUserMappings.slackUsername
60
+ }).from(workAppSlackUserMappings).where(eq(workAppSlackUserMappings.inkeepUserId, inkeepUserId)).limit(1);
61
+ if (mappings.length === 0) return void 0;
62
+ const mapping = mappings[0];
63
+ const parts = [`The current user's Slack user ID is ${mapping.slackUserId}.`];
64
+ if (mapping.slackUsername) parts.push(`Their Slack username is @${mapping.slackUsername}.`);
65
+ return parts.join(" ");
66
+ };
67
+
68
+ //#endregion
69
+ export { deleteAllSlackMcpToolAccessConfigsByTenant, deleteSlackMcpToolAccessConfig, getSlackMcpToolAccessConfig, isSlackWorkAppTool, resolveSlackUserContext, setSlackMcpToolAccessConfig, updateSlackMcpToolAccessChannelIds };
@@ -7,20 +7,20 @@ import { TaskInsert, TaskSelect } from "../../types/entities.js";
7
7
  //#region src/data-access/runtime/tasks.d.ts
8
8
  declare const createTask: (db: AgentsRunDatabaseClient) => (params: TaskInsert) => Promise<{
9
9
  id: string;
10
+ tenantId: string;
11
+ projectId: string;
12
+ agentId: string;
10
13
  createdAt: string;
11
14
  updatedAt: string;
12
- ref: {
13
- type: "commit" | "tag" | "branch";
14
- name: string;
15
- hash: string;
16
- } | null;
17
15
  metadata: TaskMetadataConfig | null;
18
16
  status: string;
19
- tenantId: string;
20
- projectId: string;
21
17
  subAgentId: string;
22
- agentId: string;
23
18
  contextId: string;
19
+ ref: {
20
+ type: "tag" | "commit" | "branch";
21
+ name: string;
22
+ hash: string;
23
+ } | null;
24
24
  }>;
25
25
  declare const getTask: (db: AgentsRunDatabaseClient) => (params: {
26
26
  id: string;
@@ -36,7 +36,7 @@ declare const updateTask: (db: AgentsRunDatabaseClient) => (params: {
36
36
  updatedAt: string;
37
37
  contextId: string;
38
38
  ref: {
39
- type: "commit" | "tag" | "branch";
39
+ type: "tag" | "commit" | "branch";
40
40
  name: string;
41
41
  hash: string;
42
42
  } | null;
@@ -187,7 +187,7 @@ function clearDevConfigWorkspaceDefaultsByAgent(projectId, agentId) {
187
187
  const defaultAgent = JSON.parse(config.metadata.default_agent);
188
188
  if (defaultAgent.agentId === agentId && defaultAgent.projectId === projectId) {
189
189
  config.metadata.default_agent = "";
190
- writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n", "utf-8");
190
+ writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf-8");
191
191
  }
192
192
  } catch {}
193
193
  }
@@ -199,7 +199,7 @@ function clearDevConfigWorkspaceDefaultsByProject(projectId) {
199
199
  if (!config?.metadata?.default_agent) return;
200
200
  if (JSON.parse(config.metadata.default_agent).projectId === projectId) {
201
201
  config.metadata.default_agent = "";
202
- writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n", "utf-8");
202
+ writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf-8");
203
203
  }
204
204
  } catch {}
205
205
  }