@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.
- package/dist/auth/auth-schema.d.ts +85 -85
- package/dist/auth/auth-validation-schemas.d.ts +152 -152
- package/dist/auth/auth.d.ts +9 -9
- package/dist/auth/permissions.d.ts +9 -9
- package/dist/client-exports.d.ts +5 -5
- package/dist/client-exports.js +2 -2
- package/dist/constants/models.d.ts +34 -2
- package/dist/constants/models.js +37 -5
- package/dist/data-access/index.d.ts +2 -1
- package/dist/data-access/index.js +2 -1
- package/dist/data-access/manage/agents.d.ts +21 -21
- package/dist/data-access/manage/artifactComponents.d.ts +8 -8
- package/dist/data-access/manage/contextConfigs.d.ts +8 -8
- package/dist/data-access/manage/dataComponents.d.ts +4 -4
- package/dist/data-access/manage/functionTools.d.ts +10 -10
- package/dist/data-access/manage/skills.d.ts +12 -12
- package/dist/data-access/manage/subAgentExternalAgentRelations.d.ts +18 -18
- package/dist/data-access/manage/subAgentRelations.d.ts +18 -18
- package/dist/data-access/manage/subAgentTeamAgentRelations.d.ts +18 -18
- package/dist/data-access/manage/subAgents.d.ts +15 -15
- package/dist/data-access/manage/tools.d.ts +15 -15
- package/dist/data-access/manage/tools.js +16 -2
- package/dist/data-access/manage/triggers.d.ts +2 -2
- package/dist/data-access/runtime/apiKeys.d.ts +12 -12
- package/dist/data-access/runtime/cascade-delete.d.ts +3 -0
- package/dist/data-access/runtime/cascade-delete.js +11 -4
- package/dist/data-access/runtime/conversations.d.ts +31 -31
- package/dist/data-access/runtime/github-work-app-installations.d.ts +25 -5
- package/dist/data-access/runtime/github-work-app-installations.js +20 -17
- package/dist/data-access/runtime/messages.d.ts +9 -9
- package/dist/data-access/runtime/slack-work-app-mcp.d.ts +26 -0
- package/dist/data-access/runtime/slack-work-app-mcp.js +69 -0
- package/dist/data-access/runtime/tasks.d.ts +9 -9
- package/dist/data-access/runtime/workAppSlack.js +2 -2
- package/dist/db/manage/manage-schema.d.ts +453 -453
- package/dist/db/manage/scope-definitions.d.ts +3 -1
- package/dist/db/manage/scope-definitions.js +5 -0
- package/dist/db/runtime/runtime-schema.d.ts +465 -311
- package/dist/db/runtime/runtime-schema.js +29 -2
- package/dist/env.d.ts +2 -0
- package/dist/env.js +1 -0
- package/dist/index.d.ts +5 -4
- package/dist/index.js +4 -3
- package/dist/middleware/no-auth.d.ts +2 -2
- package/dist/setup/setup.js +14 -3
- package/dist/types/index.d.ts +2 -2
- package/dist/types/utility.d.ts +9 -2
- package/dist/validation/dolt-schemas.d.ts +1 -1
- package/dist/validation/drizzle-schema-helpers.d.ts +3 -3
- package/dist/validation/index.d.ts +2 -2
- package/dist/validation/index.js +2 -2
- package/dist/validation/schemas.d.ts +1922 -1893
- package/dist/validation/schemas.js +16 -2
- package/drizzle/runtime/0020_tiny_killmonger.sql +15 -0
- package/drizzle/runtime/0021_careful_xorn.sql +2 -0
- package/drizzle/runtime/meta/0020_snapshot.json +4122 -0
- package/drizzle/runtime/meta/0021_snapshot.json +4124 -0
- package/drizzle/runtime/meta/_journal.json +14 -0
- 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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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) => (
|
|
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) => (
|
|
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) => (
|
|
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) => (
|
|
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) => (
|
|
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 (
|
|
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 (
|
|
354
|
-
|
|
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
|
-
|
|
360
|
-
|
|
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 (
|
|
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: [
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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: "
|
|
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)
|
|
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)
|
|
202
|
+
writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf-8");
|
|
203
203
|
}
|
|
204
204
|
} catch {}
|
|
205
205
|
}
|