@zivis/mcp 0.1.0-alpha.2 → 0.1.0-alpha.21
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/api-client.d.ts +11 -11
- package/dist/api-client.js +41 -36
- package/dist/api-client.js.map +1 -1
- package/dist/auth/index.d.ts +9 -5
- package/dist/auth/index.js +33 -17
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/keychain.d.ts +6 -5
- package/dist/auth/keychain.js +82 -69
- package/dist/auth/keychain.js.map +1 -1
- package/dist/auth/oauth.d.ts +18 -0
- package/dist/auth/oauth.js +55 -6
- package/dist/auth/oauth.js.map +1 -1
- package/dist/auth/sessions.d.ts +5 -4
- package/dist/auth/sessions.js +20 -14
- package/dist/auth/sessions.js.map +1 -1
- package/dist/auth/token-refresh.d.ts +2 -2
- package/dist/auth/token-refresh.js +42 -9
- package/dist/auth/token-refresh.js.map +1 -1
- package/dist/cli.d.ts +7 -15
- package/dist/cli.js +36 -904
- package/dist/cli.js.map +1 -1
- package/dist/lib/next-steps.d.ts +57 -0
- package/dist/lib/next-steps.js +45 -0
- package/dist/lib/next-steps.js.map +1 -0
- package/dist/project-binding.d.ts +19 -2
- package/dist/project-binding.js +57 -3
- package/dist/project-binding.js.map +1 -1
- package/dist/prompts/audit-dependencies.d.ts +10 -0
- package/dist/prompts/audit-dependencies.js +56 -0
- package/dist/prompts/audit-dependencies.js.map +1 -0
- package/dist/prompts/getting-started.d.ts +12 -0
- package/dist/prompts/getting-started.js +48 -0
- package/dist/prompts/getting-started.js.map +1 -0
- package/dist/prompts/index.d.ts +14 -0
- package/dist/prompts/index.js +25 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/prep-for-launch.d.ts +9 -0
- package/dist/prompts/prep-for-launch.js +62 -0
- package/dist/prompts/prep-for-launch.js.map +1 -0
- package/dist/prompts/secure-my-app.d.ts +9 -0
- package/dist/prompts/secure-my-app.js +70 -0
- package/dist/prompts/secure-my-app.js.map +1 -0
- package/dist/prompts/weekly-check.d.ts +9 -0
- package/dist/prompts/weekly-check.js +48 -0
- package/dist/prompts/weekly-check.js.map +1 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.js +119 -43
- package/dist/server.js.map +1 -1
- package/dist/tools/check-project.d.ts +7 -7
- package/dist/tools/check-project.js +127 -95
- package/dist/tools/check-project.js.map +1 -1
- package/dist/tools/check-repo-trust.d.ts +4 -10
- package/dist/tools/check-repo-trust.js +56 -27
- package/dist/tools/check-repo-trust.js.map +1 -1
- package/dist/tools/enterprise/get-campaign.d.ts +27 -0
- package/dist/tools/enterprise/get-campaign.js +31 -0
- package/dist/tools/enterprise/get-campaign.js.map +1 -0
- package/dist/tools/enterprise/list-agents.d.ts +1 -1
- package/dist/tools/enterprise/list-attack-scenarios.d.ts +29 -0
- package/dist/tools/enterprise/list-attack-scenarios.js +69 -0
- package/dist/tools/enterprise/list-attack-scenarios.js.map +1 -0
- package/dist/tools/enterprise/list-attack-step-library-tests.d.ts +29 -0
- package/dist/tools/enterprise/list-attack-step-library-tests.js +61 -0
- package/dist/tools/enterprise/list-attack-step-library-tests.js.map +1 -0
- package/dist/tools/enterprise/list-campaigns.d.ts +37 -0
- package/dist/tools/enterprise/list-campaigns.js +60 -0
- package/dist/tools/enterprise/list-campaigns.js.map +1 -0
- package/dist/tools/enterprise/list-threat-model-review-items.d.ts +35 -0
- package/dist/tools/enterprise/list-threat-model-review-items.js +60 -0
- package/dist/tools/enterprise/list-threat-model-review-items.js.map +1 -0
- package/dist/tools/enterprise/list-threat-model-versions.d.ts +29 -0
- package/dist/tools/enterprise/list-threat-model-versions.js +60 -0
- package/dist/tools/enterprise/list-threat-model-versions.js.map +1 -0
- package/dist/tools/enterprise/manage-campaign-agent-instance.d.ts +42 -0
- package/dist/tools/enterprise/manage-campaign-agent-instance.js +68 -0
- package/dist/tools/enterprise/manage-campaign-agent-instance.js.map +1 -0
- package/dist/tools/enterprise/manage-campaign-target.d.ts +44 -0
- package/dist/tools/enterprise/manage-campaign-target.js +70 -0
- package/dist/tools/enterprise/manage-campaign-target.js.map +1 -0
- package/dist/tools/enterprise/manage-campaign.d.ts +62 -0
- package/dist/tools/enterprise/manage-campaign.js +114 -0
- package/dist/tools/enterprise/manage-campaign.js.map +1 -0
- package/dist/tools/enterprise/manage-finding.d.ts +1 -1
- package/dist/tools/enterprise/manage-threat-model-analysis.d.ts +52 -0
- package/dist/tools/enterprise/manage-threat-model-analysis.js +92 -0
- package/dist/tools/enterprise/manage-threat-model-analysis.js.map +1 -0
- package/dist/tools/enterprise/manage-threat-model-review.d.ts +47 -0
- package/dist/tools/enterprise/manage-threat-model-review.js +82 -0
- package/dist/tools/enterprise/manage-threat-model-review.js.map +1 -0
- package/dist/tools/get-application-auth-config.d.ts +27 -0
- package/dist/tools/get-application-auth-config.js +44 -0
- package/dist/tools/get-application-auth-config.js.map +1 -0
- package/dist/tools/get-finding-details.d.ts +4 -10
- package/dist/tools/get-finding-details.js +28 -10
- package/dist/tools/get-finding-details.js.map +1 -1
- package/dist/tools/get-findings.d.ts +4 -10
- package/dist/tools/get-findings.js +44 -23
- package/dist/tools/get-findings.js.map +1 -1
- package/dist/tools/get-started.d.ts +28 -0
- package/dist/tools/get-started.js +364 -0
- package/dist/tools/get-started.js.map +1 -0
- package/dist/tools/list-applications.d.ts +1 -1
- package/dist/tools/list-scans.d.ts +4 -10
- package/dist/tools/list-scans.js +55 -21
- package/dist/tools/list-scans.js.map +1 -1
- package/dist/tools/list-test-scenarios.d.ts +4 -10
- package/dist/tools/list-test-scenarios.js +41 -13
- package/dist/tools/list-test-scenarios.js.map +1 -1
- package/dist/tools/local-scan.d.ts +1 -1
- package/dist/tools/manage-application.d.ts +72 -0
- package/dist/tools/manage-application.js +138 -0
- package/dist/tools/manage-application.js.map +1 -0
- package/dist/tools/manage-endpoint-lifecycle.d.ts +90 -0
- package/dist/tools/manage-endpoint-lifecycle.js +191 -0
- package/dist/tools/manage-endpoint-lifecycle.js.map +1 -0
- package/dist/tools/open-in-ide.d.ts +1 -1
- package/dist/tools/setup-red-team-target.d.ts +6 -12
- package/dist/tools/setup-red-team-target.js +51 -20
- package/dist/tools/setup-red-team-target.js.map +1 -1
- package/dist/tools/triage-finding.d.ts +4 -10
- package/dist/tools/triage-finding.js +30 -21
- package/dist/tools/triage-finding.js.map +1 -1
- package/dist/types.d.ts +42 -2
- package/dist/types.js +29 -23
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_manage_campaign_target — Add/update/remove target link on campaign
|
|
3
|
+
*
|
|
4
|
+
* Maps to:
|
|
5
|
+
* - POST /api/redteam/campaigns/:id/targets
|
|
6
|
+
* - PATCH /api/redteam/campaigns/:id/targets/:targetId
|
|
7
|
+
* - DELETE /api/redteam/campaigns/:id/targets/:targetId
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { sanitizeResponse } from "../../sanitize.js";
|
|
11
|
+
export const MANAGE_CAMPAIGN_TARGET_NAME = "zivis_manage_campaign_target";
|
|
12
|
+
export const MANAGE_CAMPAIGN_TARGET_DESCRIPTION = `Manage target assignments for a campaign.
|
|
13
|
+
|
|
14
|
+
Actions:
|
|
15
|
+
- add: add a target to campaign
|
|
16
|
+
- update: update target link settings (enabled/priority/custom_config)
|
|
17
|
+
- remove: remove target from campaign`;
|
|
18
|
+
export const MANAGE_CAMPAIGN_TARGET_SCHEMA = {
|
|
19
|
+
campaign_id: z.string().describe("Campaign UUID"),
|
|
20
|
+
action: z.enum(["add", "update", "remove"]).describe("Target link action"),
|
|
21
|
+
target_id: z.string().describe("Target UUID"),
|
|
22
|
+
enabled: z.boolean().optional().describe("Enable/disable target within campaign"),
|
|
23
|
+
priority: z.number().min(0).max(1000).optional().describe("Execution priority"),
|
|
24
|
+
custom_config: z.record(z.string(), z.unknown()).optional().describe("Per-target config"),
|
|
25
|
+
};
|
|
26
|
+
export function createManageCampaignTargetHandler(apiClient) {
|
|
27
|
+
return async (params) => {
|
|
28
|
+
try {
|
|
29
|
+
const { campaign_id, action, target_id } = params;
|
|
30
|
+
let data;
|
|
31
|
+
if (action === "add") {
|
|
32
|
+
data = await apiClient.post(`/api/redteam/campaigns/${campaign_id}/targets`, {
|
|
33
|
+
targetId: target_id,
|
|
34
|
+
priority: params.priority,
|
|
35
|
+
customConfig: params.custom_config,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else if (action === "update") {
|
|
39
|
+
const body = {};
|
|
40
|
+
if (params.enabled !== undefined)
|
|
41
|
+
body.enabled = params.enabled;
|
|
42
|
+
if (params.priority !== undefined)
|
|
43
|
+
body.priority = params.priority;
|
|
44
|
+
if (params.custom_config !== undefined)
|
|
45
|
+
body.customConfig = params.custom_config;
|
|
46
|
+
data = await apiClient.patch(`/api/redteam/campaigns/${campaign_id}/targets/${target_id}`, body);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
data = await apiClient.del(`/api/redteam/campaigns/${campaign_id}/targets/${target_id}`);
|
|
50
|
+
}
|
|
51
|
+
const sanitized = sanitizeResponse({
|
|
52
|
+
action,
|
|
53
|
+
campaign_id,
|
|
54
|
+
target_id,
|
|
55
|
+
result: data,
|
|
56
|
+
});
|
|
57
|
+
return {
|
|
58
|
+
content: [{ type: "text", text: JSON.stringify(sanitized, null, 2) }],
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
const message = err instanceof Error ? err.message : "Failed to manage campaign target";
|
|
63
|
+
return {
|
|
64
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
65
|
+
isError: true,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=manage-campaign-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-campaign-target.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-campaign-target.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_manage_campaign — Create/update/delete campaign
|
|
3
|
+
*
|
|
4
|
+
* Maps to:
|
|
5
|
+
* - POST /api/redteam/campaigns
|
|
6
|
+
* - PATCH /api/redteam/campaigns/:id
|
|
7
|
+
* - DELETE /api/redteam/campaigns/:id
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import type { ApiClient } from "../../api-client.js";
|
|
11
|
+
export declare const MANAGE_CAMPAIGN_NAME = "zivis_manage_campaign";
|
|
12
|
+
export declare const MANAGE_CAMPAIGN_DESCRIPTION = "Create, update, or delete a red-team campaign.\n\nActions:\n- create: create a new campaign (requires name)\n- update: patch campaign fields (requires campaign_id)\n- delete: remove campaign (requires campaign_id)";
|
|
13
|
+
export declare const MANAGE_CAMPAIGN_SCHEMA: {
|
|
14
|
+
action: z.ZodEnum<{
|
|
15
|
+
create: "create";
|
|
16
|
+
update: "update";
|
|
17
|
+
delete: "delete";
|
|
18
|
+
}>;
|
|
19
|
+
campaign_id: z.ZodOptional<z.ZodString>;
|
|
20
|
+
name: z.ZodOptional<z.ZodString>;
|
|
21
|
+
description: z.ZodOptional<z.ZodString>;
|
|
22
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
23
|
+
completed: "completed";
|
|
24
|
+
draft: "draft";
|
|
25
|
+
archived: "archived";
|
|
26
|
+
active: "active";
|
|
27
|
+
paused: "paused";
|
|
28
|
+
}>>;
|
|
29
|
+
objective: z.ZodOptional<z.ZodString>;
|
|
30
|
+
methodology: z.ZodOptional<z.ZodString>;
|
|
31
|
+
assessment_context_id: z.ZodOptional<z.ZodString>;
|
|
32
|
+
categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
33
|
+
target_endpoint: z.ZodOptional<z.ZodString>;
|
|
34
|
+
target_model: z.ZodOptional<z.ZodString>;
|
|
35
|
+
target_provider: z.ZodOptional<z.ZodString>;
|
|
36
|
+
};
|
|
37
|
+
export declare function createManageCampaignHandler(apiClient: ApiClient): (params: {
|
|
38
|
+
action: "create" | "update" | "delete";
|
|
39
|
+
campaign_id?: string;
|
|
40
|
+
name?: string;
|
|
41
|
+
description?: string;
|
|
42
|
+
status?: "draft" | "active" | "paused" | "completed" | "archived";
|
|
43
|
+
objective?: string;
|
|
44
|
+
methodology?: string;
|
|
45
|
+
assessment_context_id?: string;
|
|
46
|
+
categories?: string[];
|
|
47
|
+
target_endpoint?: string;
|
|
48
|
+
target_model?: string;
|
|
49
|
+
target_provider?: string;
|
|
50
|
+
}) => Promise<{
|
|
51
|
+
content: {
|
|
52
|
+
type: "text";
|
|
53
|
+
text: string;
|
|
54
|
+
}[];
|
|
55
|
+
isError: boolean;
|
|
56
|
+
} | {
|
|
57
|
+
content: {
|
|
58
|
+
type: "text";
|
|
59
|
+
text: string;
|
|
60
|
+
}[];
|
|
61
|
+
isError?: undefined;
|
|
62
|
+
}>;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_manage_campaign — Create/update/delete campaign
|
|
3
|
+
*
|
|
4
|
+
* Maps to:
|
|
5
|
+
* - POST /api/redteam/campaigns
|
|
6
|
+
* - PATCH /api/redteam/campaigns/:id
|
|
7
|
+
* - DELETE /api/redteam/campaigns/:id
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { sanitizeResponse } from "../../sanitize.js";
|
|
11
|
+
export const MANAGE_CAMPAIGN_NAME = "zivis_manage_campaign";
|
|
12
|
+
export const MANAGE_CAMPAIGN_DESCRIPTION = `Create, update, or delete a red-team campaign.
|
|
13
|
+
|
|
14
|
+
Actions:
|
|
15
|
+
- create: create a new campaign (requires name)
|
|
16
|
+
- update: patch campaign fields (requires campaign_id)
|
|
17
|
+
- delete: remove campaign (requires campaign_id)`;
|
|
18
|
+
export const MANAGE_CAMPAIGN_SCHEMA = {
|
|
19
|
+
action: z.enum(["create", "update", "delete"]).describe("CRUD action"),
|
|
20
|
+
campaign_id: z.string().optional().describe("Required for update/delete"),
|
|
21
|
+
name: z.string().optional().describe("Campaign name (required for create)"),
|
|
22
|
+
description: z.string().optional().describe("Campaign description"),
|
|
23
|
+
status: z
|
|
24
|
+
.enum(["draft", "active", "paused", "completed", "archived"])
|
|
25
|
+
.optional()
|
|
26
|
+
.describe("Campaign status (for update)"),
|
|
27
|
+
objective: z.string().optional().describe("Campaign objective"),
|
|
28
|
+
methodology: z.string().optional().describe("Methodology (e.g., stride, owasp)"),
|
|
29
|
+
assessment_context_id: z.string().optional().describe("Assessment context UUID"),
|
|
30
|
+
categories: z.array(z.string()).optional().describe("Category tags"),
|
|
31
|
+
target_endpoint: z.string().optional().describe("Legacy single-target endpoint"),
|
|
32
|
+
target_model: z.string().optional().describe("Legacy single-target model name"),
|
|
33
|
+
target_provider: z.string().optional().describe("Legacy single-target provider"),
|
|
34
|
+
};
|
|
35
|
+
export function createManageCampaignHandler(apiClient) {
|
|
36
|
+
return async (params) => {
|
|
37
|
+
try {
|
|
38
|
+
const { action, campaign_id } = params;
|
|
39
|
+
let data;
|
|
40
|
+
if ((action === "update" || action === "delete") && !campaign_id) {
|
|
41
|
+
return {
|
|
42
|
+
content: [
|
|
43
|
+
{ type: "text", text: "Error: campaign_id is required for update/delete" },
|
|
44
|
+
],
|
|
45
|
+
isError: true,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (action === "create" && !params.name) {
|
|
49
|
+
return {
|
|
50
|
+
content: [{ type: "text", text: "Error: name is required for create" }],
|
|
51
|
+
isError: true,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if (action === "create") {
|
|
55
|
+
data = await apiClient.post("/api/redteam/campaigns", {
|
|
56
|
+
name: params.name,
|
|
57
|
+
description: params.description,
|
|
58
|
+
status: params.status,
|
|
59
|
+
objective: params.objective,
|
|
60
|
+
methodology: params.methodology,
|
|
61
|
+
assessmentContextId: params.assessment_context_id,
|
|
62
|
+
categories: params.categories,
|
|
63
|
+
targetEndpoint: params.target_endpoint,
|
|
64
|
+
targetModel: params.target_model,
|
|
65
|
+
targetProvider: params.target_provider,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else if (action === "update") {
|
|
69
|
+
const body = {};
|
|
70
|
+
if (params.name !== undefined)
|
|
71
|
+
body.name = params.name;
|
|
72
|
+
if (params.description !== undefined)
|
|
73
|
+
body.description = params.description;
|
|
74
|
+
if (params.status !== undefined)
|
|
75
|
+
body.status = params.status;
|
|
76
|
+
if (params.objective !== undefined)
|
|
77
|
+
body.objective = params.objective;
|
|
78
|
+
if (params.methodology !== undefined)
|
|
79
|
+
body.methodology = params.methodology;
|
|
80
|
+
if (params.assessment_context_id !== undefined) {
|
|
81
|
+
body.assessmentContextId = params.assessment_context_id;
|
|
82
|
+
}
|
|
83
|
+
if (params.categories !== undefined)
|
|
84
|
+
body.categories = params.categories;
|
|
85
|
+
if (params.target_endpoint !== undefined)
|
|
86
|
+
body.targetEndpoint = params.target_endpoint;
|
|
87
|
+
if (params.target_model !== undefined)
|
|
88
|
+
body.targetModel = params.target_model;
|
|
89
|
+
if (params.target_provider !== undefined)
|
|
90
|
+
body.targetProvider = params.target_provider;
|
|
91
|
+
data = await apiClient.patch(`/api/redteam/campaigns/${campaign_id}`, body);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
data = await apiClient.del(`/api/redteam/campaigns/${campaign_id}`);
|
|
95
|
+
}
|
|
96
|
+
const sanitized = sanitizeResponse({
|
|
97
|
+
action,
|
|
98
|
+
campaign_id,
|
|
99
|
+
result: data,
|
|
100
|
+
});
|
|
101
|
+
return {
|
|
102
|
+
content: [{ type: "text", text: JSON.stringify(sanitized, null, 2) }],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
const message = err instanceof Error ? err.message : "Failed to manage campaign";
|
|
107
|
+
return {
|
|
108
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
109
|
+
isError: true,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=manage-campaign.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-campaign.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-campaign.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,8 +24,8 @@ export declare const MANAGE_FINDING_SCHEMA: {
|
|
|
24
24
|
info: "info";
|
|
25
25
|
}>>;
|
|
26
26
|
status: z.ZodOptional<z.ZodEnum<{
|
|
27
|
-
false_positive: "false_positive";
|
|
28
27
|
open: "open";
|
|
28
|
+
false_positive: "false_positive";
|
|
29
29
|
in_progress: "in_progress";
|
|
30
30
|
mitigated: "mitigated";
|
|
31
31
|
verified: "verified";
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_manage_threat_model_analysis — Start/status/regenerate analysis
|
|
3
|
+
*
|
|
4
|
+
* Maps to:
|
|
5
|
+
* - POST /api/threat-models/:id/analyze
|
|
6
|
+
* - GET /api/threat-models/:id/analyze/status
|
|
7
|
+
* - POST /api/threat-models/:id/regenerate
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import type { ApiClient } from "../../api-client.js";
|
|
11
|
+
export declare const MANAGE_THREAT_MODEL_ANALYSIS_NAME = "zivis_manage_threat_model_analysis";
|
|
12
|
+
export declare const MANAGE_THREAT_MODEL_ANALYSIS_DESCRIPTION = "Manage threat model analysis lifecycle.\n\nActions:\n- status: get current analysis status\n- start: trigger a new analysis run\n- regenerate: queue regeneration for stale scopes\n\nUse threat_model_id from zivis_list_threat_models.";
|
|
13
|
+
export declare const MANAGE_THREAT_MODEL_ANALYSIS_SCHEMA: {
|
|
14
|
+
threat_model_id: z.ZodString;
|
|
15
|
+
action: z.ZodEnum<{
|
|
16
|
+
status: "status";
|
|
17
|
+
start: "start";
|
|
18
|
+
regenerate: "regenerate";
|
|
19
|
+
}>;
|
|
20
|
+
analysis_config: z.ZodOptional<z.ZodObject<{
|
|
21
|
+
generate_dfd: z.ZodOptional<z.ZodBoolean>;
|
|
22
|
+
map_to_mitre: z.ZodOptional<z.ZodBoolean>;
|
|
23
|
+
include_dread: z.ZodOptional<z.ZodBoolean>;
|
|
24
|
+
include_compliance: z.ZodOptional<z.ZodBoolean>;
|
|
25
|
+
}, z.core.$strip>>;
|
|
26
|
+
scope_ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
27
|
+
regenerate_all: z.ZodOptional<z.ZodBoolean>;
|
|
28
|
+
};
|
|
29
|
+
export declare function createManageThreatModelAnalysisHandler(apiClient: ApiClient): (params: {
|
|
30
|
+
threat_model_id: string;
|
|
31
|
+
action: "status" | "start" | "regenerate";
|
|
32
|
+
analysis_config?: {
|
|
33
|
+
generate_dfd?: boolean;
|
|
34
|
+
map_to_mitre?: boolean;
|
|
35
|
+
include_dread?: boolean;
|
|
36
|
+
include_compliance?: boolean;
|
|
37
|
+
};
|
|
38
|
+
scope_ids?: string[];
|
|
39
|
+
regenerate_all?: boolean;
|
|
40
|
+
}) => Promise<{
|
|
41
|
+
content: {
|
|
42
|
+
type: "text";
|
|
43
|
+
text: string;
|
|
44
|
+
}[];
|
|
45
|
+
isError?: undefined;
|
|
46
|
+
} | {
|
|
47
|
+
content: {
|
|
48
|
+
type: "text";
|
|
49
|
+
text: string;
|
|
50
|
+
}[];
|
|
51
|
+
isError: boolean;
|
|
52
|
+
}>;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_manage_threat_model_analysis — Start/status/regenerate analysis
|
|
3
|
+
*
|
|
4
|
+
* Maps to:
|
|
5
|
+
* - POST /api/threat-models/:id/analyze
|
|
6
|
+
* - GET /api/threat-models/:id/analyze/status
|
|
7
|
+
* - POST /api/threat-models/:id/regenerate
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { sanitizeResponse } from "../../sanitize.js";
|
|
11
|
+
export const MANAGE_THREAT_MODEL_ANALYSIS_NAME = "zivis_manage_threat_model_analysis";
|
|
12
|
+
export const MANAGE_THREAT_MODEL_ANALYSIS_DESCRIPTION = `Manage threat model analysis lifecycle.
|
|
13
|
+
|
|
14
|
+
Actions:
|
|
15
|
+
- status: get current analysis status
|
|
16
|
+
- start: trigger a new analysis run
|
|
17
|
+
- regenerate: queue regeneration for stale scopes
|
|
18
|
+
|
|
19
|
+
Use threat_model_id from zivis_list_threat_models.`;
|
|
20
|
+
export const MANAGE_THREAT_MODEL_ANALYSIS_SCHEMA = {
|
|
21
|
+
threat_model_id: z
|
|
22
|
+
.string()
|
|
23
|
+
.describe("Threat model UUID (from zivis_list_threat_models)"),
|
|
24
|
+
action: z
|
|
25
|
+
.enum(["status", "start", "regenerate"])
|
|
26
|
+
.describe("Analysis action to perform"),
|
|
27
|
+
analysis_config: z
|
|
28
|
+
.object({
|
|
29
|
+
generate_dfd: z.boolean().optional(),
|
|
30
|
+
map_to_mitre: z.boolean().optional(),
|
|
31
|
+
include_dread: z.boolean().optional(),
|
|
32
|
+
include_compliance: z.boolean().optional(),
|
|
33
|
+
})
|
|
34
|
+
.optional()
|
|
35
|
+
.describe("Optional analysis config (used for start action)"),
|
|
36
|
+
scope_ids: z
|
|
37
|
+
.array(z.string())
|
|
38
|
+
.optional()
|
|
39
|
+
.describe("Scope IDs to regenerate (used for regenerate action)"),
|
|
40
|
+
regenerate_all: z
|
|
41
|
+
.boolean()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe("Regenerate all stale scopes (used for regenerate action)"),
|
|
44
|
+
};
|
|
45
|
+
export function createManageThreatModelAnalysisHandler(apiClient) {
|
|
46
|
+
return async (params) => {
|
|
47
|
+
try {
|
|
48
|
+
let data;
|
|
49
|
+
const { threat_model_id, action } = params;
|
|
50
|
+
if (action === "status") {
|
|
51
|
+
data = await apiClient.get(`/api/threat-models/${threat_model_id}/analyze/status`);
|
|
52
|
+
}
|
|
53
|
+
else if (action === "start") {
|
|
54
|
+
const config = params.analysis_config;
|
|
55
|
+
data = await apiClient.post(`/api/threat-models/${threat_model_id}/analyze`, {
|
|
56
|
+
analysisConfig: config
|
|
57
|
+
? {
|
|
58
|
+
generateDfd: config.generate_dfd,
|
|
59
|
+
mapToMitre: config.map_to_mitre,
|
|
60
|
+
includeDread: config.include_dread,
|
|
61
|
+
includeCompliance: config.include_compliance,
|
|
62
|
+
}
|
|
63
|
+
: undefined,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
data = await apiClient.post(`/api/threat-models/${threat_model_id}/regenerate`, {
|
|
68
|
+
scopeIds: params.scope_ids || [],
|
|
69
|
+
regenerateAll: params.regenerate_all ?? false,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
const sanitized = sanitizeResponse({
|
|
73
|
+
action,
|
|
74
|
+
threat_model_id,
|
|
75
|
+
result: data,
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
content: [{ type: "text", text: JSON.stringify(sanitized, null, 2) }],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
const message = err instanceof Error
|
|
83
|
+
? err.message
|
|
84
|
+
: "Failed to manage threat model analysis";
|
|
85
|
+
return {
|
|
86
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
87
|
+
isError: true,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=manage-threat-model-analysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-threat-model-analysis.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-threat-model-analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_manage_threat_model_review — Accept/reject AI review items
|
|
3
|
+
*
|
|
4
|
+
* Maps to:
|
|
5
|
+
* - POST /api/threat-models/:id/review-items/:type/:itemId/accept
|
|
6
|
+
* - POST /api/threat-models/:id/review-items/:type/:itemId/reject
|
|
7
|
+
* - POST /api/threat-models/:id/review-items/accept-all
|
|
8
|
+
* - POST /api/threat-models/:id/review-items/reject-all
|
|
9
|
+
*/
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
import type { ApiClient } from "../../api-client.js";
|
|
12
|
+
export declare const MANAGE_THREAT_MODEL_REVIEW_NAME = "zivis_manage_threat_model_review";
|
|
13
|
+
export declare const MANAGE_THREAT_MODEL_REVIEW_DESCRIPTION = "Accept or reject pending AI-generated threat model review items.\n\nActions:\n- accept_item: accept one pending item\n- reject_item: reject one pending item\n- accept_all: accept all pending items\n- reject_all: reject all pending items";
|
|
14
|
+
export declare const MANAGE_THREAT_MODEL_REVIEW_SCHEMA: {
|
|
15
|
+
threat_model_id: z.ZodString;
|
|
16
|
+
action: z.ZodEnum<{
|
|
17
|
+
accept_item: "accept_item";
|
|
18
|
+
reject_item: "reject_item";
|
|
19
|
+
accept_all: "accept_all";
|
|
20
|
+
reject_all: "reject_all";
|
|
21
|
+
}>;
|
|
22
|
+
item_type: z.ZodOptional<z.ZodEnum<{
|
|
23
|
+
finding: "finding";
|
|
24
|
+
asset: "asset";
|
|
25
|
+
scenario: "scenario";
|
|
26
|
+
component: "component";
|
|
27
|
+
}>>;
|
|
28
|
+
item_id: z.ZodOptional<z.ZodString>;
|
|
29
|
+
};
|
|
30
|
+
export declare function createManageThreatModelReviewHandler(apiClient: ApiClient): (params: {
|
|
31
|
+
threat_model_id: string;
|
|
32
|
+
action: "accept_item" | "reject_item" | "accept_all" | "reject_all";
|
|
33
|
+
item_type?: "finding" | "asset" | "scenario" | "component";
|
|
34
|
+
item_id?: string;
|
|
35
|
+
}) => Promise<{
|
|
36
|
+
content: {
|
|
37
|
+
type: "text";
|
|
38
|
+
text: string;
|
|
39
|
+
}[];
|
|
40
|
+
isError: boolean;
|
|
41
|
+
} | {
|
|
42
|
+
content: {
|
|
43
|
+
type: "text";
|
|
44
|
+
text: string;
|
|
45
|
+
}[];
|
|
46
|
+
isError?: undefined;
|
|
47
|
+
}>;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_manage_threat_model_review — Accept/reject AI review items
|
|
3
|
+
*
|
|
4
|
+
* Maps to:
|
|
5
|
+
* - POST /api/threat-models/:id/review-items/:type/:itemId/accept
|
|
6
|
+
* - POST /api/threat-models/:id/review-items/:type/:itemId/reject
|
|
7
|
+
* - POST /api/threat-models/:id/review-items/accept-all
|
|
8
|
+
* - POST /api/threat-models/:id/review-items/reject-all
|
|
9
|
+
*/
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
import { sanitizeResponse } from "../../sanitize.js";
|
|
12
|
+
export const MANAGE_THREAT_MODEL_REVIEW_NAME = "zivis_manage_threat_model_review";
|
|
13
|
+
export const MANAGE_THREAT_MODEL_REVIEW_DESCRIPTION = `Accept or reject pending AI-generated threat model review items.
|
|
14
|
+
|
|
15
|
+
Actions:
|
|
16
|
+
- accept_item: accept one pending item
|
|
17
|
+
- reject_item: reject one pending item
|
|
18
|
+
- accept_all: accept all pending items
|
|
19
|
+
- reject_all: reject all pending items`;
|
|
20
|
+
export const MANAGE_THREAT_MODEL_REVIEW_SCHEMA = {
|
|
21
|
+
threat_model_id: z
|
|
22
|
+
.string()
|
|
23
|
+
.describe("Threat model UUID (from zivis_list_threat_models)"),
|
|
24
|
+
action: z
|
|
25
|
+
.enum(["accept_item", "reject_item", "accept_all", "reject_all"])
|
|
26
|
+
.describe("Review action"),
|
|
27
|
+
item_type: z
|
|
28
|
+
.enum(["finding", "asset", "scenario", "component"])
|
|
29
|
+
.optional()
|
|
30
|
+
.describe("Required for *_item actions"),
|
|
31
|
+
item_id: z
|
|
32
|
+
.string()
|
|
33
|
+
.optional()
|
|
34
|
+
.describe("Required for *_item actions"),
|
|
35
|
+
};
|
|
36
|
+
export function createManageThreatModelReviewHandler(apiClient) {
|
|
37
|
+
return async (params) => {
|
|
38
|
+
try {
|
|
39
|
+
const { threat_model_id, action } = params;
|
|
40
|
+
let data;
|
|
41
|
+
if (action === "accept_all") {
|
|
42
|
+
data = await apiClient.post(`/api/threat-models/${threat_model_id}/review-items/accept-all`, {});
|
|
43
|
+
}
|
|
44
|
+
else if (action === "reject_all") {
|
|
45
|
+
data = await apiClient.post(`/api/threat-models/${threat_model_id}/review-items/reject-all`, {});
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
if (!params.item_type || !params.item_id) {
|
|
49
|
+
return {
|
|
50
|
+
content: [
|
|
51
|
+
{
|
|
52
|
+
type: "text",
|
|
53
|
+
text: "Error: item_type and item_id are required for accept_item/reject_item actions",
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
isError: true,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const verb = action === "accept_item" ? "accept" : "reject";
|
|
60
|
+
data = await apiClient.post(`/api/threat-models/${threat_model_id}/review-items/${params.item_type}/${params.item_id}/${verb}`, {});
|
|
61
|
+
}
|
|
62
|
+
const sanitized = sanitizeResponse({
|
|
63
|
+
action,
|
|
64
|
+
threat_model_id,
|
|
65
|
+
item_type: params.item_type,
|
|
66
|
+
item_id: params.item_id,
|
|
67
|
+
result: data,
|
|
68
|
+
});
|
|
69
|
+
return {
|
|
70
|
+
content: [{ type: "text", text: JSON.stringify(sanitized, null, 2) }],
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
const message = err instanceof Error ? err.message : "Failed to manage threat model review";
|
|
75
|
+
return {
|
|
76
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
77
|
+
isError: true,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=manage-threat-model-review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-threat-model-review.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-threat-model-review.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_get_application_auth_config — Get app auth config for CLI PKCE/token workflows
|
|
3
|
+
*
|
|
4
|
+
* Maps to: GET /api/applications/:appId/auth-config
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import type { ApiClient } from "../api-client.js";
|
|
8
|
+
export declare const GET_APPLICATION_AUTH_CONFIG_NAME = "zivis_get_application_auth_config";
|
|
9
|
+
export declare const GET_APPLICATION_AUTH_CONFIG_DESCRIPTION = "Get authentication config for an application, including PKCE metadata when applicable.\n\nIf application_id is omitted, this uses applicationId from .zivis/project.json when present.";
|
|
10
|
+
export declare const GET_APPLICATION_AUTH_CONFIG_SCHEMA: {
|
|
11
|
+
application_id: z.ZodOptional<z.ZodString>;
|
|
12
|
+
};
|
|
13
|
+
export declare function createGetApplicationAuthConfigHandler(apiClient: ApiClient): (params: {
|
|
14
|
+
application_id?: string;
|
|
15
|
+
}) => Promise<{
|
|
16
|
+
content: {
|
|
17
|
+
type: "text";
|
|
18
|
+
text: string;
|
|
19
|
+
}[];
|
|
20
|
+
isError: boolean;
|
|
21
|
+
} | {
|
|
22
|
+
content: {
|
|
23
|
+
type: "text";
|
|
24
|
+
text: string;
|
|
25
|
+
}[];
|
|
26
|
+
isError?: undefined;
|
|
27
|
+
}>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_get_application_auth_config — Get app auth config for CLI PKCE/token workflows
|
|
3
|
+
*
|
|
4
|
+
* Maps to: GET /api/applications/:appId/auth-config
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { requireApplicationId } from "../resolve-application-id.js";
|
|
8
|
+
import { sanitizeResponse } from "../sanitize.js";
|
|
9
|
+
export const GET_APPLICATION_AUTH_CONFIG_NAME = "zivis_get_application_auth_config";
|
|
10
|
+
export const GET_APPLICATION_AUTH_CONFIG_DESCRIPTION = `Get authentication config for an application, including PKCE metadata when applicable.
|
|
11
|
+
|
|
12
|
+
If application_id is omitted, this uses applicationId from .zivis/project.json when present.`;
|
|
13
|
+
export const GET_APPLICATION_AUTH_CONFIG_SCHEMA = {
|
|
14
|
+
application_id: z
|
|
15
|
+
.string()
|
|
16
|
+
.optional()
|
|
17
|
+
.describe("Application UUID. If omitted, uses applicationId from .zivis/project.json when set."),
|
|
18
|
+
};
|
|
19
|
+
export function createGetApplicationAuthConfigHandler(apiClient) {
|
|
20
|
+
return async (params) => {
|
|
21
|
+
const req = requireApplicationId(params.application_id);
|
|
22
|
+
if (!req.ok) {
|
|
23
|
+
return {
|
|
24
|
+
content: [{ type: "text", text: `Error: ${req.message}` }],
|
|
25
|
+
isError: true,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
const data = await apiClient.get(`/api/applications/${req.id}/auth-config`);
|
|
30
|
+
const sanitized = sanitizeResponse(data);
|
|
31
|
+
return {
|
|
32
|
+
content: [{ type: "text", text: JSON.stringify(sanitized, null, 2) }],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
const message = err instanceof Error ? err.message : "Failed to get application auth config";
|
|
37
|
+
return {
|
|
38
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
39
|
+
isError: true,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=get-application-auth-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-application-auth-config.js","sourceRoot":"","sources":["../../src/tools/get-application-auth-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,CAAC,MAAM,gCAAgC,GAAG,mCAAmC,CAAC;AAEpF,MAAM,CAAC,MAAM,uCAAuC,GAAG;;6FAEsC,CAAC;AAE9F,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,qFAAqF,CACtF;CACJ,CAAC;AAEF,MAAM,UAAU,qCAAqC,CAAC,SAAoB;IACxE,OAAO,KAAK,EAAE,MAAmC,EAAE,EAAE;QACnD,MAAM,GAAG,GAAG,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;gBACnE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,CAC9B,qBAAqB,GAAG,CAAC,EAAE,cAAc,CAC1C,CAAC;YAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC/E,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GACX,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uCAAuC,CAAC;YAC/E,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBAC/D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|