Skip to content

Commit 9213d5c

Browse files
authored
Merge pull request #312 from ShipSecAI/feat/studio-mcp-tools
feat(studio-mcp): add 25+ MCP tools for full agent coverage
2 parents b66be74 + dbbf485 commit 9213d5c

20 files changed

+3091
-691
lines changed

backend/src/api-keys/dto/api-key.dto.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,36 @@ export const ApiKeyPermissionsSchema = z.object({
1919
audit: z.object({
2020
read: z.boolean(),
2121
}),
22+
artifacts: z
23+
.object({
24+
read: z.boolean().optional(),
25+
delete: z.boolean().optional(),
26+
})
27+
.optional(),
28+
schedules: z
29+
.object({
30+
list: z.boolean().optional(),
31+
read: z.boolean().optional(),
32+
create: z.boolean().optional(),
33+
update: z.boolean().optional(),
34+
delete: z.boolean().optional(),
35+
})
36+
.optional(),
37+
secrets: z
38+
.object({
39+
list: z.boolean().optional(),
40+
read: z.boolean().optional(),
41+
create: z.boolean().optional(),
42+
update: z.boolean().optional(),
43+
delete: z.boolean().optional(),
44+
})
45+
.optional(),
46+
'human-inputs': z
47+
.object({
48+
read: z.boolean().optional(),
49+
resolve: z.boolean().optional(),
50+
})
51+
.optional(),
2252
});
2353

2454
export const CreateApiKeySchema = z.object({

backend/src/auth/auth.guard.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,28 @@ export class AuthGuard implements CanActivate {
135135
audit: {
136136
read: Boolean(permissions.audit?.read),
137137
},
138+
artifacts: {
139+
read: Boolean(permissions.artifacts?.read),
140+
delete: Boolean(permissions.artifacts?.delete),
141+
},
142+
schedules: {
143+
list: Boolean(permissions.schedules?.list),
144+
read: Boolean(permissions.schedules?.read),
145+
create: Boolean(permissions.schedules?.create),
146+
update: Boolean(permissions.schedules?.update),
147+
delete: Boolean(permissions.schedules?.delete),
148+
},
149+
secrets: {
150+
list: Boolean(permissions.secrets?.list),
151+
read: Boolean(permissions.secrets?.read),
152+
create: Boolean(permissions.secrets?.create),
153+
update: Boolean(permissions.secrets?.update),
154+
delete: Boolean(permissions.secrets?.delete),
155+
},
156+
'human-inputs': {
157+
read: Boolean(permissions['human-inputs']?.read),
158+
resolve: Boolean(permissions['human-inputs']?.resolve),
159+
},
138160
};
139161

140162
return {

backend/src/database/schema/api-keys.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,28 @@ export interface ApiKeyPermissions {
2626
audit: {
2727
read: boolean;
2828
};
29+
artifacts?: {
30+
read?: boolean;
31+
delete?: boolean;
32+
};
33+
schedules?: {
34+
list?: boolean;
35+
read?: boolean;
36+
create?: boolean;
37+
update?: boolean;
38+
delete?: boolean;
39+
};
40+
secrets?: {
41+
list?: boolean;
42+
read?: boolean;
43+
create?: boolean;
44+
update?: boolean;
45+
delete?: boolean;
46+
};
47+
'human-inputs'?: {
48+
read?: boolean;
49+
resolve?: boolean;
50+
};
2951
}
3052

3153
export const apiKeys = pgTable(

backend/src/schedules/schedules.module.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ import { SchedulesService } from './schedules.service';
1111
imports: [DatabaseModule, TemporalModule, WorkflowsModule],
1212
controllers: [SchedulesController],
1313
providers: [SchedulesService, ScheduleRepository],
14+
exports: [SchedulesService],
1415
})
1516
export class SchedulesModule {}

0 commit comments

Comments
 (0)