@zivis/mcp 0.1.0-alpha.21 → 0.1.0-alpha.22
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/pattern-pack/index.d.ts +133 -0
- package/dist/pattern-pack/index.js +212 -0
- package/dist/pattern-pack/index.js.map +1 -0
- package/dist/pattern-packs/zivis-public-0.1.0/capsules/agents/privilege-separation.yaml +228 -0
- package/dist/pattern-packs/zivis-public-0.1.0/capsules/prompting/self-consistency-no-isolation.yaml +240 -0
- package/dist/pattern-packs/zivis-public-0.1.0/capsules/security/late-org-filter.yaml +270 -0
- package/dist/pattern-packs/zivis-public-0.1.0/manifest.json +68 -0
- package/dist/pattern-packs/zivis-public-0.1.0/prompts/agents/privilege-separation/identify.md +54 -0
- package/dist/pattern-packs/zivis-public-0.1.0/prompts/prompting/self-consistency-no-isolation/identify.md +60 -0
- package/dist/pattern-packs/zivis-public-0.1.0/prompts/security/late-org-filter/identify.md +78 -0
- package/dist/prompts/index.d.ts +1 -1
- package/dist/prompts/index.js +1 -7
- package/dist/prompts/index.js.map +1 -1
- package/dist/server.js +26 -166
- package/dist/server.js.map +1 -1
- package/dist/tools/enterprise/get-threat-model-artifact.d.ts +30 -0
- package/dist/tools/enterprise/get-threat-model-artifact.js +80 -0
- package/dist/tools/enterprise/get-threat-model-artifact.js.map +1 -0
- package/dist/tools/enterprise/get-threat-model.d.ts +1 -1
- package/dist/tools/enterprise/get-threat-model.js +59 -11
- package/dist/tools/enterprise/get-threat-model.js.map +1 -1
- package/dist/tools/enterprise/list-threat-model-artifacts.d.ts +67 -0
- package/dist/tools/enterprise/list-threat-model-artifacts.js +121 -0
- package/dist/tools/enterprise/list-threat-model-artifacts.js.map +1 -0
- package/dist/tools/enterprise/manage-data-asset.d.ts +1 -1
- package/dist/tools/enterprise/manage-data-flow.d.ts +1 -1
- package/dist/tools/enterprise/manage-test-case.d.ts +1 -1
- package/dist/tools/inspect.d.ts +31 -0
- package/dist/tools/inspect.js +100 -0
- package/dist/tools/inspect.js.map +1 -0
- package/dist/tools/manage-application.d.ts +1 -1
- package/dist/tools/security-review.js +67 -50
- package/dist/tools/security-review.js.map +1 -1
- package/dist/tools/threat-get-capsule.d.ts +25 -0
- package/dist/tools/threat-get-capsule.js +64 -0
- package/dist/tools/threat-get-capsule.js.map +1 -0
- package/dist/tools/threat-get-inference-prompt.d.ts +32 -0
- package/dist/tools/threat-get-inference-prompt.js +91 -0
- package/dist/tools/threat-get-inference-prompt.js.map +1 -0
- package/dist/tools/threat-list-relevant-capsules.d.ts +30 -0
- package/dist/tools/threat-list-relevant-capsules.js +176 -0
- package/dist/tools/threat-list-relevant-capsules.js.map +1 -0
- package/package.json +10 -3
- package/dist/prompts/prep-for-launch.d.ts +0 -9
- package/dist/prompts/prep-for-launch.js +0 -62
- package/dist/prompts/prep-for-launch.js.map +0 -1
- package/dist/prompts/secure-my-app.d.ts +0 -9
- package/dist/prompts/secure-my-app.js +0 -70
- package/dist/prompts/secure-my-app.js.map +0 -1
- package/dist/prompts/weekly-check.d.ts +0 -9
- package/dist/prompts/weekly-check.js +0 -48
- package/dist/prompts/weekly-check.js.map +0 -1
- package/dist/tools/enterprise/capture-evidence.d.ts +0 -54
- package/dist/tools/enterprise/capture-evidence.js +0 -72
- package/dist/tools/enterprise/capture-evidence.js.map +0 -1
- package/dist/tools/enterprise/create-report-ticket.d.ts +0 -34
- package/dist/tools/enterprise/create-report-ticket.js +0 -44
- package/dist/tools/enterprise/create-report-ticket.js.map +0 -1
- package/dist/tools/enterprise/end-pentest-session.d.ts +0 -33
- package/dist/tools/enterprise/end-pentest-session.js +0 -42
- package/dist/tools/enterprise/end-pentest-session.js.map +0 -1
- package/dist/tools/enterprise/generate-report.d.ts +0 -55
- package/dist/tools/enterprise/generate-report.js +0 -111
- package/dist/tools/enterprise/generate-report.js.map +0 -1
- package/dist/tools/enterprise/get-campaign.d.ts +0 -27
- package/dist/tools/enterprise/get-campaign.js +0 -31
- package/dist/tools/enterprise/get-campaign.js.map +0 -1
- package/dist/tools/enterprise/get-report-status.d.ts +0 -27
- package/dist/tools/enterprise/get-report-status.js +0 -38
- package/dist/tools/enterprise/get-report-status.js.map +0 -1
- package/dist/tools/enterprise/list-agents.d.ts +0 -42
- package/dist/tools/enterprise/list-agents.js +0 -95
- package/dist/tools/enterprise/list-agents.js.map +0 -1
- package/dist/tools/enterprise/list-campaigns.d.ts +0 -37
- package/dist/tools/enterprise/list-campaigns.js +0 -60
- package/dist/tools/enterprise/list-campaigns.js.map +0 -1
- package/dist/tools/enterprise/list-report-issues.d.ts +0 -36
- package/dist/tools/enterprise/list-report-issues.js +0 -50
- package/dist/tools/enterprise/list-report-issues.js.map +0 -1
- package/dist/tools/enterprise/manage-campaign-agent-instance.d.ts +0 -42
- package/dist/tools/enterprise/manage-campaign-agent-instance.js +0 -68
- package/dist/tools/enterprise/manage-campaign-agent-instance.js.map +0 -1
- package/dist/tools/enterprise/manage-campaign-target.d.ts +0 -44
- package/dist/tools/enterprise/manage-campaign-target.js +0 -70
- package/dist/tools/enterprise/manage-campaign-target.js.map +0 -1
- package/dist/tools/enterprise/manage-campaign.d.ts +0 -62
- package/dist/tools/enterprise/manage-campaign.js +0 -114
- package/dist/tools/enterprise/manage-campaign.js.map +0 -1
- package/dist/tools/enterprise/manage-finding.d.ts +0 -69
- package/dist/tools/enterprise/manage-finding.js +0 -106
- package/dist/tools/enterprise/manage-finding.js.map +0 -1
- package/dist/tools/enterprise/promote-finding-to-issue.d.ts +0 -36
- package/dist/tools/enterprise/promote-finding-to-issue.js +0 -65
- package/dist/tools/enterprise/promote-finding-to-issue.js.map +0 -1
- package/dist/tools/enterprise/publish-report-version.d.ts +0 -34
- package/dist/tools/enterprise/publish-report-version.js +0 -75
- package/dist/tools/enterprise/publish-report-version.js.map +0 -1
- package/dist/tools/enterprise/publish-test-to-library.d.ts +0 -31
- package/dist/tools/enterprise/publish-test-to-library.js +0 -40
- package/dist/tools/enterprise/publish-test-to-library.js.map +0 -1
- package/dist/tools/enterprise/record-test-result.d.ts +0 -67
- package/dist/tools/enterprise/record-test-result.js +0 -75
- package/dist/tools/enterprise/record-test-result.js.map +0 -1
- package/dist/tools/enterprise/start-pentest-session.d.ts +0 -35
- package/dist/tools/enterprise/start-pentest-session.js +0 -50
- package/dist/tools/enterprise/start-pentest-session.js.map +0 -1
- package/dist/tools/enterprise/sync-report-section.d.ts +0 -41
- package/dist/tools/enterprise/sync-report-section.js +0 -79
- package/dist/tools/enterprise/sync-report-section.js.map +0 -1
- package/dist/tools/enterprise/update-report-issue.d.ts +0 -55
- package/dist/tools/enterprise/update-report-issue.js +0 -69
- package/dist/tools/enterprise/update-report-issue.js.map +0 -1
- package/dist/tools/get-agent-test-results.d.ts +0 -41
- package/dist/tools/get-agent-test-results.js +0 -86
- package/dist/tools/get-agent-test-results.js.map +0 -1
- package/dist/tools/get-application-auth-config.d.ts +0 -27
- package/dist/tools/get-application-auth-config.js +0 -44
- package/dist/tools/get-application-auth-config.js.map +0 -1
- package/dist/tools/get-artifact-content.d.ts +0 -29
- package/dist/tools/get-artifact-content.js +0 -86
- package/dist/tools/get-artifact-content.js.map +0 -1
- package/dist/tools/get-finding-details.d.ts +0 -22
- package/dist/tools/get-finding-details.js +0 -61
- package/dist/tools/get-finding-details.js.map +0 -1
- package/dist/tools/get-findings.d.ts +0 -51
- package/dist/tools/get-findings.js +0 -124
- package/dist/tools/get-findings.js.map +0 -1
- package/dist/tools/get-recon-scan.d.ts +0 -27
- package/dist/tools/get-recon-scan.js +0 -46
- package/dist/tools/get-recon-scan.js.map +0 -1
- package/dist/tools/get-scan-output.d.ts +0 -27
- package/dist/tools/get-scan-output.js +0 -64
- package/dist/tools/get-scan-output.js.map +0 -1
- package/dist/tools/get-scenario-details.d.ts +0 -27
- package/dist/tools/get-scenario-details.js +0 -46
- package/dist/tools/get-scenario-details.js.map +0 -1
- package/dist/tools/get-test-case-results.d.ts +0 -37
- package/dist/tools/get-test-case-results.js +0 -66
- package/dist/tools/get-test-case-results.js.map +0 -1
- package/dist/tools/get-test-details.d.ts +0 -29
- package/dist/tools/get-test-details.js +0 -49
- package/dist/tools/get-test-details.js.map +0 -1
- package/dist/tools/list-agent-test-cases.d.ts +0 -41
- package/dist/tools/list-agent-test-cases.js +0 -73
- package/dist/tools/list-agent-test-cases.js.map +0 -1
- package/dist/tools/list-recon-scans.d.ts +0 -36
- package/dist/tools/list-recon-scans.js +0 -74
- package/dist/tools/list-recon-scans.js.map +0 -1
- package/dist/tools/list-scan-artifacts.d.ts +0 -41
- package/dist/tools/list-scan-artifacts.js +0 -63
- package/dist/tools/list-scan-artifacts.js.map +0 -1
- package/dist/tools/list-scans.d.ts +0 -38
- package/dist/tools/list-scans.js +0 -125
- package/dist/tools/list-scans.js.map +0 -1
- package/dist/tools/list-test-library.d.ts +0 -44
- package/dist/tools/list-test-library.js +0 -83
- package/dist/tools/list-test-library.js.map +0 -1
- package/dist/tools/list-test-scenarios.d.ts +0 -25
- package/dist/tools/list-test-scenarios.js +0 -94
- package/dist/tools/list-test-scenarios.js.map +0 -1
- package/dist/tools/local-scan.d.ts +0 -40
- package/dist/tools/local-scan.js +0 -261
- package/dist/tools/local-scan.js.map +0 -1
- package/dist/tools/run-test-scenario.d.ts +0 -37
- package/dist/tools/run-test-scenario.js +0 -70
- package/dist/tools/run-test-scenario.js.map +0 -1
- package/dist/tools/scan-pr.d.ts +0 -27
- package/dist/tools/scan-pr.js +0 -51
- package/dist/tools/scan-pr.js.map +0 -1
- package/dist/tools/setup-red-team-target.d.ts +0 -73
- package/dist/tools/setup-red-team-target.js +0 -461
- package/dist/tools/setup-red-team-target.js.map +0 -1
- package/dist/tools/triage-finding.d.ts +0 -41
- package/dist/tools/triage-finding.js +0 -125
- package/dist/tools/triage-finding.js.map +0 -1
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_manage_campaign_agent_instance — Add/update/remove agent instance link on campaign
|
|
3
|
-
*
|
|
4
|
-
* Maps to:
|
|
5
|
-
* - POST /api/redteam/campaigns/:id/agent-instances
|
|
6
|
-
* - PATCH /api/redteam/campaigns/:id/agent-instances/:instanceId
|
|
7
|
-
* - DELETE /api/redteam/campaigns/:id/agent-instances/:instanceId
|
|
8
|
-
*/
|
|
9
|
-
import { z } from "zod";
|
|
10
|
-
import { sanitizeResponse } from "../../sanitize.js";
|
|
11
|
-
export const MANAGE_CAMPAIGN_AGENT_INSTANCE_NAME = "zivis_manage_campaign_agent_instance";
|
|
12
|
-
export const MANAGE_CAMPAIGN_AGENT_INSTANCE_DESCRIPTION = `Manage agent instance links for a campaign.
|
|
13
|
-
|
|
14
|
-
Actions:
|
|
15
|
-
- add: link agent instance to campaign
|
|
16
|
-
- update: update link settings (enabled/priority)
|
|
17
|
-
- remove: unlink agent instance from campaign`;
|
|
18
|
-
export const MANAGE_CAMPAIGN_AGENT_INSTANCE_SCHEMA = {
|
|
19
|
-
campaign_id: z.string().describe("Campaign UUID"),
|
|
20
|
-
action: z.enum(["add", "update", "remove"]).describe("Agent instance link action"),
|
|
21
|
-
agent_instance_id: z.string().describe("Agent instance UUID"),
|
|
22
|
-
enabled: z.boolean().optional().describe("Enable/disable this link"),
|
|
23
|
-
priority: z.number().min(0).max(1000).optional().describe("Execution priority"),
|
|
24
|
-
};
|
|
25
|
-
export function createManageCampaignAgentInstanceHandler(apiClient) {
|
|
26
|
-
return async (params) => {
|
|
27
|
-
try {
|
|
28
|
-
const { campaign_id, action, agent_instance_id } = params;
|
|
29
|
-
let data;
|
|
30
|
-
if (action === "add") {
|
|
31
|
-
data = await apiClient.post(`/api/redteam/campaigns/${campaign_id}/agent-instances`, {
|
|
32
|
-
agentInstanceId: agent_instance_id,
|
|
33
|
-
priority: params.priority,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
else if (action === "update") {
|
|
37
|
-
const body = {};
|
|
38
|
-
if (params.enabled !== undefined)
|
|
39
|
-
body.enabled = params.enabled;
|
|
40
|
-
if (params.priority !== undefined)
|
|
41
|
-
body.priority = params.priority;
|
|
42
|
-
data = await apiClient.patch(`/api/redteam/campaigns/${campaign_id}/agent-instances/${agent_instance_id}`, body);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
data = await apiClient.del(`/api/redteam/campaigns/${campaign_id}/agent-instances/${agent_instance_id}`);
|
|
46
|
-
}
|
|
47
|
-
const sanitized = sanitizeResponse({
|
|
48
|
-
action,
|
|
49
|
-
campaign_id,
|
|
50
|
-
agent_instance_id,
|
|
51
|
-
result: data,
|
|
52
|
-
});
|
|
53
|
-
return {
|
|
54
|
-
content: [{ type: "text", text: JSON.stringify(sanitized, null, 2) }],
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
catch (err) {
|
|
58
|
-
const message = err instanceof Error
|
|
59
|
-
? err.message
|
|
60
|
-
: "Failed to manage campaign agent instance";
|
|
61
|
-
return {
|
|
62
|
-
content: [{ type: "text", text: `Error: ${message}` }],
|
|
63
|
-
isError: true,
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=manage-campaign-agent-instance.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manage-campaign-agent-instance.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-campaign-agent-instance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
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 type { ApiClient } from "../../api-client.js";
|
|
11
|
-
export declare const MANAGE_CAMPAIGN_TARGET_NAME = "zivis_manage_campaign_target";
|
|
12
|
-
export declare const MANAGE_CAMPAIGN_TARGET_DESCRIPTION = "Manage target assignments for a campaign.\n\nActions:\n- add: add a target to campaign\n- update: update target link settings (enabled/priority/custom_config)\n- remove: remove target from campaign";
|
|
13
|
-
export declare const MANAGE_CAMPAIGN_TARGET_SCHEMA: {
|
|
14
|
-
campaign_id: z.ZodString;
|
|
15
|
-
action: z.ZodEnum<{
|
|
16
|
-
update: "update";
|
|
17
|
-
add: "add";
|
|
18
|
-
remove: "remove";
|
|
19
|
-
}>;
|
|
20
|
-
target_id: z.ZodString;
|
|
21
|
-
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
22
|
-
priority: z.ZodOptional<z.ZodNumber>;
|
|
23
|
-
custom_config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
24
|
-
};
|
|
25
|
-
export declare function createManageCampaignTargetHandler(apiClient: ApiClient): (params: {
|
|
26
|
-
campaign_id: string;
|
|
27
|
-
action: "add" | "update" | "remove";
|
|
28
|
-
target_id: string;
|
|
29
|
-
enabled?: boolean;
|
|
30
|
-
priority?: number;
|
|
31
|
-
custom_config?: Record<string, unknown>;
|
|
32
|
-
}) => Promise<{
|
|
33
|
-
content: {
|
|
34
|
-
type: "text";
|
|
35
|
-
text: string;
|
|
36
|
-
}[];
|
|
37
|
-
isError?: undefined;
|
|
38
|
-
} | {
|
|
39
|
-
content: {
|
|
40
|
-
type: "text";
|
|
41
|
-
text: string;
|
|
42
|
-
}[];
|
|
43
|
-
isError: boolean;
|
|
44
|
-
}>;
|
|
@@ -1,70 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manage-campaign-target.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-campaign-target.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,62 +0,0 @@
|
|
|
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
|
-
}>;
|
|
@@ -1,114 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manage-campaign.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-campaign.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_manage_finding — Create or update findings in a threat model
|
|
3
|
-
*
|
|
4
|
-
* Maps to: POST/PATCH /api/threat-models/:id/findings
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import type { ApiClient } from "../../api-client.js";
|
|
8
|
-
export declare const MANAGE_FINDING_NAME = "zivis_manage_finding";
|
|
9
|
-
export declare const MANAGE_FINDING_DESCRIPTION = "Create or update a finding (vulnerability) in a threat model.\n\nFindings represent confirmed or suspected vulnerabilities discovered during analysis or pen testing. They link to components, attack scenarios, and can be tracked through remediation.\n\nActions:\n- create: Add a new finding (requires title, severity)\n- update: Modify an existing finding (requires finding_id) \u2014 use to update status, add notes, etc.";
|
|
10
|
-
export declare const MANAGE_FINDING_SCHEMA: {
|
|
11
|
-
threat_model_id: z.ZodString;
|
|
12
|
-
action: z.ZodEnum<{
|
|
13
|
-
create: "create";
|
|
14
|
-
update: "update";
|
|
15
|
-
}>;
|
|
16
|
-
finding_id: z.ZodOptional<z.ZodString>;
|
|
17
|
-
title: z.ZodOptional<z.ZodString>;
|
|
18
|
-
description: z.ZodOptional<z.ZodString>;
|
|
19
|
-
severity: z.ZodOptional<z.ZodEnum<{
|
|
20
|
-
critical: "critical";
|
|
21
|
-
high: "high";
|
|
22
|
-
medium: "medium";
|
|
23
|
-
low: "low";
|
|
24
|
-
info: "info";
|
|
25
|
-
}>>;
|
|
26
|
-
status: z.ZodOptional<z.ZodEnum<{
|
|
27
|
-
open: "open";
|
|
28
|
-
false_positive: "false_positive";
|
|
29
|
-
in_progress: "in_progress";
|
|
30
|
-
mitigated: "mitigated";
|
|
31
|
-
verified: "verified";
|
|
32
|
-
accepted_risk: "accepted_risk";
|
|
33
|
-
}>>;
|
|
34
|
-
category: z.ZodOptional<z.ZodString>;
|
|
35
|
-
component_id: z.ZodOptional<z.ZodString>;
|
|
36
|
-
attack_scenario_id: z.ZodOptional<z.ZodString>;
|
|
37
|
-
cwe_id: z.ZodOptional<z.ZodString>;
|
|
38
|
-
cvss_score: z.ZodOptional<z.ZodNumber>;
|
|
39
|
-
remediation: z.ZodOptional<z.ZodString>;
|
|
40
|
-
proof_of_concept: z.ZodOptional<z.ZodString>;
|
|
41
|
-
};
|
|
42
|
-
export declare function createManageFindingHandler(apiClient: ApiClient): (params: {
|
|
43
|
-
threat_model_id: string;
|
|
44
|
-
action: "create" | "update";
|
|
45
|
-
finding_id?: string;
|
|
46
|
-
title?: string;
|
|
47
|
-
description?: string;
|
|
48
|
-
severity?: string;
|
|
49
|
-
status?: string;
|
|
50
|
-
category?: string;
|
|
51
|
-
component_id?: string;
|
|
52
|
-
attack_scenario_id?: string;
|
|
53
|
-
cwe_id?: string;
|
|
54
|
-
cvss_score?: number;
|
|
55
|
-
remediation?: string;
|
|
56
|
-
proof_of_concept?: string;
|
|
57
|
-
}) => Promise<{
|
|
58
|
-
content: {
|
|
59
|
-
type: "text";
|
|
60
|
-
text: string;
|
|
61
|
-
}[];
|
|
62
|
-
isError: boolean;
|
|
63
|
-
} | {
|
|
64
|
-
content: {
|
|
65
|
-
type: "text";
|
|
66
|
-
text: string;
|
|
67
|
-
}[];
|
|
68
|
-
isError?: undefined;
|
|
69
|
-
}>;
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_manage_finding — Create or update findings in a threat model
|
|
3
|
-
*
|
|
4
|
-
* Maps to: POST/PATCH /api/threat-models/:id/findings
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import { sanitizeResponse } from "../../sanitize.js";
|
|
8
|
-
export const MANAGE_FINDING_NAME = "zivis_manage_finding";
|
|
9
|
-
export const MANAGE_FINDING_DESCRIPTION = `Create or update a finding (vulnerability) in a threat model.
|
|
10
|
-
|
|
11
|
-
Findings represent confirmed or suspected vulnerabilities discovered during analysis or pen testing. They link to components, attack scenarios, and can be tracked through remediation.
|
|
12
|
-
|
|
13
|
-
Actions:
|
|
14
|
-
- create: Add a new finding (requires title, severity)
|
|
15
|
-
- update: Modify an existing finding (requires finding_id) — use to update status, add notes, etc.`;
|
|
16
|
-
export const MANAGE_FINDING_SCHEMA = {
|
|
17
|
-
threat_model_id: z.string().describe("Threat model UUID (from zivis_list_threat_models, NOT a scan ID or agent ID)"),
|
|
18
|
-
action: z.enum(["create", "update"]).describe("Action to perform"),
|
|
19
|
-
finding_id: z.string().optional().describe("Finding UUID (required for update)"),
|
|
20
|
-
title: z.string().optional().describe("Finding title (e.g., 'SQL Injection in user search endpoint')"),
|
|
21
|
-
description: z.string().optional().describe("Detailed description of the vulnerability"),
|
|
22
|
-
severity: z.enum(["critical", "high", "medium", "low", "info"]).optional().describe("Severity level"),
|
|
23
|
-
status: z
|
|
24
|
-
.enum(["open", "in_progress", "mitigated", "verified", "accepted_risk", "false_positive"])
|
|
25
|
-
.optional()
|
|
26
|
-
.describe("Finding status"),
|
|
27
|
-
category: z.string().optional().describe("Category (e.g., 'injection', 'authentication', 'authorization')"),
|
|
28
|
-
component_id: z.string().optional().describe("Affected component UUID"),
|
|
29
|
-
attack_scenario_id: z.string().optional().describe("Related attack scenario UUID"),
|
|
30
|
-
cwe_id: z.string().optional().describe("CWE identifier (e.g., 'CWE-89')"),
|
|
31
|
-
cvss_score: z.number().min(0).max(10).optional().describe("CVSS score (0-10)"),
|
|
32
|
-
remediation: z.string().optional().describe("Recommended remediation steps"),
|
|
33
|
-
proof_of_concept: z.string().optional().describe("Proof of concept or reproduction steps"),
|
|
34
|
-
};
|
|
35
|
-
export function createManageFindingHandler(apiClient) {
|
|
36
|
-
return async (params) => {
|
|
37
|
-
try {
|
|
38
|
-
const { threat_model_id, action, finding_id } = params;
|
|
39
|
-
if (action === "update" && !finding_id) {
|
|
40
|
-
return {
|
|
41
|
-
content: [{ type: "text", text: "Error: finding_id is required for update" }],
|
|
42
|
-
isError: true,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
let data;
|
|
46
|
-
if (action === "create") {
|
|
47
|
-
if (!params.title || !params.severity) {
|
|
48
|
-
return {
|
|
49
|
-
content: [{ type: "text", text: "Error: title and severity are required for create" }],
|
|
50
|
-
isError: true,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
data = await apiClient.post(`/api/threat-models/${threat_model_id}/findings`, {
|
|
54
|
-
title: params.title,
|
|
55
|
-
description: params.description,
|
|
56
|
-
severity: params.severity,
|
|
57
|
-
status: params.status || "open",
|
|
58
|
-
category: params.category,
|
|
59
|
-
componentId: params.component_id,
|
|
60
|
-
attackScenarioId: params.attack_scenario_id,
|
|
61
|
-
cweId: params.cwe_id,
|
|
62
|
-
cvssScore: params.cvss_score,
|
|
63
|
-
remediation: params.remediation,
|
|
64
|
-
proofOfConcept: params.proof_of_concept,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
const body = {};
|
|
69
|
-
if (params.title)
|
|
70
|
-
body.title = params.title;
|
|
71
|
-
if (params.description !== undefined)
|
|
72
|
-
body.description = params.description;
|
|
73
|
-
if (params.severity)
|
|
74
|
-
body.severity = params.severity;
|
|
75
|
-
if (params.status)
|
|
76
|
-
body.status = params.status;
|
|
77
|
-
if (params.category)
|
|
78
|
-
body.category = params.category;
|
|
79
|
-
if (params.component_id)
|
|
80
|
-
body.componentId = params.component_id;
|
|
81
|
-
if (params.attack_scenario_id)
|
|
82
|
-
body.attackScenarioId = params.attack_scenario_id;
|
|
83
|
-
if (params.cwe_id)
|
|
84
|
-
body.cweId = params.cwe_id;
|
|
85
|
-
if (params.cvss_score !== undefined)
|
|
86
|
-
body.cvssScore = params.cvss_score;
|
|
87
|
-
if (params.remediation !== undefined)
|
|
88
|
-
body.remediation = params.remediation;
|
|
89
|
-
if (params.proof_of_concept !== undefined)
|
|
90
|
-
body.proofOfConcept = params.proof_of_concept;
|
|
91
|
-
data = await apiClient.patch(`/api/threat-models/${threat_model_id}/findings/${finding_id}`, body);
|
|
92
|
-
}
|
|
93
|
-
return {
|
|
94
|
-
content: [{ type: "text", text: JSON.stringify(sanitizeResponse(data), null, 2) }],
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
catch (err) {
|
|
98
|
-
const message = err instanceof Error ? err.message : "Failed to manage finding";
|
|
99
|
-
return {
|
|
100
|
-
content: [{ type: "text", text: `Error: ${message}` }],
|
|
101
|
-
isError: true,
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=manage-finding.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manage-finding.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-finding.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_promote_finding_to_issue — Promote campaign findings to report issues
|
|
3
|
-
*
|
|
4
|
-
* Maps to: POST /api/reports/:reportId/issues/promote
|
|
5
|
-
* Also uses: POST /api/reports/for-campaign/:campaignId to auto-create report
|
|
6
|
-
*/
|
|
7
|
-
import { z } from "zod";
|
|
8
|
-
import type { ApiClient } from "../../api-client.js";
|
|
9
|
-
export declare const PROMOTE_FINDING_TO_ISSUE_NAME = "zivis_promote_finding_to_issue";
|
|
10
|
-
export declare const PROMOTE_FINDING_TO_ISSUE_DESCRIPTION = "Promote one or more campaign findings to a report issue for the remediation checklist.\n\nCreates a curated report issue from raw scan findings. Multiple findings can be grouped into a single issue (e.g., same root cause across different URLs). The issue gets its own title, description, and recommendation that can differ from the raw finding.\n\nIf no report exists for the campaign yet, one is automatically created.\n\nUse this after reviewing findings to build the official pen test report.";
|
|
11
|
-
export declare const PROMOTE_FINDING_TO_ISSUE_SCHEMA: {
|
|
12
|
-
campaign_id: z.ZodString;
|
|
13
|
-
finding_ids: z.ZodArray<z.ZodString>;
|
|
14
|
-
title: z.ZodOptional<z.ZodString>;
|
|
15
|
-
description: z.ZodOptional<z.ZodString>;
|
|
16
|
-
recommendation: z.ZodOptional<z.ZodString>;
|
|
17
|
-
};
|
|
18
|
-
export declare function createPromoteFindingToIssueHandler(apiClient: ApiClient): (params: {
|
|
19
|
-
campaign_id: string;
|
|
20
|
-
finding_ids: string[];
|
|
21
|
-
title?: string;
|
|
22
|
-
description?: string;
|
|
23
|
-
recommendation?: string;
|
|
24
|
-
}) => Promise<{
|
|
25
|
-
content: {
|
|
26
|
-
type: "text";
|
|
27
|
-
text: string;
|
|
28
|
-
}[];
|
|
29
|
-
isError: boolean;
|
|
30
|
-
} | {
|
|
31
|
-
content: {
|
|
32
|
-
type: "text";
|
|
33
|
-
text: string;
|
|
34
|
-
}[];
|
|
35
|
-
isError?: undefined;
|
|
36
|
-
}>;
|