@zivis/mcp 0.1.8 → 0.1.10
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/LICENSE +201 -0
- package/README.md +19 -0
- package/dist/api-client.d.ts +2 -24
- package/dist/api-client.js +32 -52
- package/dist/auth/index.d.ts +1 -22
- package/dist/auth/index.js +17 -38
- package/dist/auth/jwt.d.ts +0 -16
- package/dist/auth/jwt.js +0 -13
- package/dist/auth/keychain.d.ts +6 -32
- package/dist/auth/keychain.js +83 -114
- package/dist/auth/oauth.d.ts +3 -32
- package/dist/auth/oauth.js +67 -61
- package/dist/auth/sessions.d.ts +5 -25
- package/dist/auth/sessions.js +20 -39
- package/dist/auth/token-refresh.d.ts +2 -22
- package/dist/auth/token-refresh.js +33 -36
- package/dist/cli.d.ts +1 -18
- package/dist/cli.js +30 -908
- package/dist/index.d.ts +0 -6
- package/dist/index.js +0 -7
- package/dist/lib/inspect-cache.d.ts +10 -0
- package/dist/lib/inspect-cache.js +75 -0
- package/dist/lib/next-steps.d.ts +27 -0
- package/dist/lib/next-steps.js +21 -0
- package/dist/matcher/ast-eval.d.ts +8 -0
- package/dist/matcher/ast-eval.js +95 -0
- package/dist/matcher/finding.d.ts +55 -0
- package/dist/matcher/finding.js +1 -0
- package/dist/matcher/index.d.ts +8 -0
- package/dist/matcher/index.js +202 -0
- package/dist/matcher/inference-candidates.d.ts +26 -0
- package/dist/matcher/inference-candidates.js +81 -0
- package/dist/matcher/walker.d.ts +7 -0
- package/dist/matcher/walker.js +71 -0
- package/dist/pattern-pack/index.d.ts +125 -0
- package/dist/pattern-pack/index.js +189 -0
- package/dist/pattern-packs/zivis-public-0.2.0/capsules/agents/privilege-separation.yaml +224 -0
- package/dist/pattern-packs/zivis-public-0.2.0/capsules/prompting/self-consistency-no-isolation.yaml +237 -0
- package/dist/pattern-packs/zivis-public-0.2.0/capsules/retrieval/context-injection-no-validator.yaml +348 -0
- package/dist/pattern-packs/zivis-public-0.2.0/capsules/security/late-org-filter.yaml +266 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/external_validator_on_facts.yaml +37 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/fact_validator_present.yaml +68 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/human_approval_gate.yaml +44 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/langgraph_state_machine_with_per_node_tools.yaml +35 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/per_sample_retrieval_diversification.yaml +38 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/prisma_extension_or_middleware_attaching_org_filter.yaml +31 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/row_level_security_policy.yaml +37 -0
- package/dist/pattern-packs/zivis-public-0.2.0/controls/source_attribution_present.yaml +58 -0
- package/dist/pattern-packs/zivis-public-0.2.0/manifest.json +167 -0
- package/dist/pattern-packs/zivis-public-0.2.0/prompts/agents/privilege-separation/identify.md +54 -0
- package/dist/pattern-packs/zivis-public-0.2.0/prompts/prompting/self-consistency-no-isolation/identify.md +60 -0
- package/dist/pattern-packs/zivis-public-0.2.0/prompts/retrieval/context-injection-no-validator/identify.md +109 -0
- package/dist/pattern-packs/zivis-public-0.2.0/prompts/security/late-org-filter/identify.md +78 -0
- package/dist/project-binding.d.ts +2 -19
- package/dist/project-binding.js +38 -21
- package/dist/prompts/audit-dependencies.d.ts +2 -0
- package/dist/prompts/audit-dependencies.js +47 -0
- package/dist/prompts/getting-started.d.ts +2 -0
- package/dist/prompts/getting-started.js +37 -0
- package/dist/prompts/index.d.ts +2 -0
- package/dist/prompts/index.js +6 -0
- package/dist/resolve-application-id.d.ts +0 -4
- package/dist/resolve-application-id.js +0 -5
- package/dist/sanitize.d.ts +1 -21
- package/dist/sanitize.js +7 -41
- package/dist/server.d.ts +1 -13
- package/dist/server.js +142 -265
- package/dist/tools/artifacts.d.ts +76 -0
- package/dist/tools/artifacts.js +178 -0
- package/dist/tools/check-project.d.ts +5 -18
- package/dist/tools/check-project.js +122 -110
- package/dist/tools/check-repo-trust.d.ts +4 -19
- package/dist/tools/check-repo-trust.js +56 -47
- package/dist/tools/create-diagram.d.ts +0 -5
- package/dist/tools/create-diagram.js +0 -10
- package/dist/tools/create-document.d.ts +0 -5
- package/dist/tools/create-document.js +3 -9
- package/dist/tools/create-finding.d.ts +85 -0
- package/dist/tools/create-finding.js +136 -0
- package/dist/tools/delete-finding.d.ts +19 -0
- package/dist/tools/delete-finding.js +36 -0
- package/dist/tools/devx-run.d.ts +88 -0
- package/dist/tools/devx-run.js +175 -0
- package/dist/tools/discover-local-infra.d.ts +0 -10
- package/dist/tools/discover-local-infra.js +3 -73
- package/dist/tools/enterprise/get-org-zat.d.ts +0 -5
- package/dist/tools/enterprise/get-org-zat.js +0 -6
- package/dist/tools/explain-signal-for-diff.d.ts +34 -0
- package/dist/tools/explain-signal-for-diff.js +75 -0
- package/dist/tools/generate-diagram.d.ts +0 -6
- package/dist/tools/generate-diagram.js +21 -13
- package/dist/tools/get-application-overview.d.ts +0 -5
- package/dist/tools/get-application-overview.js +0 -6
- package/dist/tools/get-application.d.ts +0 -5
- package/dist/tools/get-application.js +0 -6
- package/dist/tools/get-diagram.d.ts +0 -5
- package/dist/tools/get-diagram.js +1 -11
- package/dist/tools/get-document.d.ts +0 -5
- package/dist/tools/get-document.js +0 -6
- package/dist/tools/get-oss-zat.d.ts +0 -5
- package/dist/tools/get-oss-zat.js +0 -7
- package/dist/tools/get-signal.d.ts +24 -0
- package/dist/tools/get-signal.js +75 -0
- package/dist/tools/get-started.d.ts +18 -0
- package/dist/tools/get-started.js +470 -0
- package/dist/tools/get-trust-keys.d.ts +0 -5
- package/dist/tools/get-trust-keys.js +0 -6
- package/dist/tools/import-openapi-endpoints.d.ts +0 -5
- package/dist/tools/import-openapi-endpoints.js +0 -6
- package/dist/tools/inspect-zat.d.ts +0 -5
- package/dist/tools/inspect-zat.js +0 -19
- package/dist/tools/inspect.d.ts +21 -0
- package/dist/tools/inspect.js +222 -0
- package/dist/tools/list-applications.d.ts +1 -6
- package/dist/tools/list-applications.js +0 -6
- package/dist/tools/list-diagrams.d.ts +0 -5
- package/dist/tools/list-diagrams.js +0 -6
- package/dist/tools/list-documents.d.ts +0 -5
- package/dist/tools/list-documents.js +0 -6
- package/dist/tools/list-endpoints.d.ts +1 -6
- package/dist/tools/list-endpoints.js +0 -6
- package/dist/tools/list-signals.d.ts +37 -0
- package/dist/tools/list-signals.js +83 -0
- package/dist/tools/manage-application.d.ts +64 -0
- package/dist/tools/manage-application.js +129 -0
- package/dist/tools/manage-diagram.d.ts +0 -5
- package/dist/tools/manage-diagram.js +0 -16
- package/dist/tools/manage-endpoint-lifecycle.d.ts +80 -0
- package/dist/tools/manage-endpoint-lifecycle.js +180 -0
- package/dist/tools/open-in-ide.d.ts +2 -14
- package/dist/tools/open-in-ide.js +0 -13
- package/dist/tools/review-change.d.ts +34 -0
- package/dist/tools/review-change.js +93 -0
- package/dist/tools/security-memory.d.ts +76 -0
- package/dist/tools/security-memory.js +202 -0
- package/dist/tools/security-review.d.ts +1 -21
- package/dist/tools/security-review.js +8 -108
- package/dist/tools/threat-get-capsule.d.ts +15 -0
- package/dist/tools/threat-get-capsule.js +53 -0
- package/dist/tools/threat-get-inference-prompt.d.ts +15 -0
- package/dist/tools/threat-get-inference-prompt.js +73 -0
- package/dist/tools/threat-list-relevant-capsules.d.ts +17 -0
- package/dist/tools/threat-list-relevant-capsules.js +158 -0
- package/dist/tools/threat-run-matcher.d.ts +17 -0
- package/dist/tools/threat-run-matcher.js +145 -0
- package/dist/tools/update-document.d.ts +0 -5
- package/dist/tools/update-document.js +3 -9
- package/dist/tools/update-endpoint.d.ts +1 -6
- package/dist/tools/update-endpoint.js +0 -7
- package/dist/tools/update-finding.d.ts +61 -0
- package/dist/tools/update-finding.js +80 -0
- package/dist/tools/update-mermaid-source.d.ts +0 -13
- package/dist/tools/update-mermaid-source.js +0 -14
- package/dist/tools/verify-trust-mark.d.ts +0 -5
- package/dist/tools/verify-trust-mark.js +0 -6
- package/dist/types.d.ts +14 -14
- package/dist/types.js +22 -28
- package/package.json +38 -15
- package/dist/api-client.js.map +0 -1
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/jwt.js.map +0 -1
- package/dist/auth/keychain.js.map +0 -1
- package/dist/auth/oauth.js.map +0 -1
- package/dist/auth/sessions.js.map +0 -1
- package/dist/auth/token-refresh.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/project-binding.js.map +0 -1
- package/dist/resolve-application-id.js.map +0 -1
- package/dist/sanitize.js.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/tools/check-project.js.map +0 -1
- package/dist/tools/check-repo-trust.js.map +0 -1
- package/dist/tools/create-diagram.js.map +0 -1
- package/dist/tools/create-document.js.map +0 -1
- package/dist/tools/discover-local-infra.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-org-zat.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/get-threat-model.d.ts +0 -29
- package/dist/tools/enterprise/get-threat-model.js +0 -83
- package/dist/tools/enterprise/get-threat-model.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-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/list-threat-models.d.ts +0 -36
- package/dist/tools/enterprise/list-threat-models.js +0 -82
- package/dist/tools/enterprise/list-threat-models.js.map +0 -1
- package/dist/tools/enterprise/manage-actor.d.ts +0 -58
- package/dist/tools/enterprise/manage-actor.js +0 -99
- package/dist/tools/enterprise/manage-actor.js.map +0 -1
- package/dist/tools/enterprise/manage-attack-scenario.d.ts +0 -70
- package/dist/tools/enterprise/manage-attack-scenario.js +0 -89
- package/dist/tools/enterprise/manage-attack-scenario.js.map +0 -1
- package/dist/tools/enterprise/manage-component.d.ts +0 -58
- package/dist/tools/enterprise/manage-component.js +0 -90
- package/dist/tools/enterprise/manage-component.js.map +0 -1
- package/dist/tools/enterprise/manage-data-asset.d.ts +0 -53
- package/dist/tools/enterprise/manage-data-asset.js +0 -90
- package/dist/tools/enterprise/manage-data-asset.js.map +0 -1
- package/dist/tools/enterprise/manage-data-flow.d.ts +0 -57
- package/dist/tools/enterprise/manage-data-flow.js +0 -98
- package/dist/tools/enterprise/manage-data-flow.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/manage-security-control.d.ts +0 -59
- package/dist/tools/enterprise/manage-security-control.js +0 -96
- package/dist/tools/enterprise/manage-security-control.js.map +0 -1
- package/dist/tools/enterprise/manage-test-case.d.ts +0 -88
- package/dist/tools/enterprise/manage-test-case.js +0 -119
- package/dist/tools/enterprise/manage-test-case.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/generate-diagram.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-overview.js.map +0 -1
- package/dist/tools/get-application.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-diagram.js.map +0 -1
- package/dist/tools/get-document.js.map +0 -1
- package/dist/tools/get-finding-details.d.ts +0 -28
- package/dist/tools/get-finding-details.js +0 -43
- package/dist/tools/get-finding-details.js.map +0 -1
- package/dist/tools/get-findings.d.ts +0 -57
- package/dist/tools/get-findings.js +0 -103
- package/dist/tools/get-findings.js.map +0 -1
- package/dist/tools/get-oss-zat.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/get-trust-keys.js.map +0 -1
- package/dist/tools/import-openapi-endpoints.js.map +0 -1
- package/dist/tools/inspect-zat.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-applications.js.map +0 -1
- package/dist/tools/list-diagrams.js.map +0 -1
- package/dist/tools/list-documents.js.map +0 -1
- package/dist/tools/list-endpoints.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 -44
- package/dist/tools/list-scans.js +0 -91
- 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 -31
- package/dist/tools/list-test-scenarios.js +0 -66
- 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/manage-diagram.js.map +0 -1
- package/dist/tools/open-in-ide.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/security-review.js.map +0 -1
- package/dist/tools/setup-red-team-target.d.ts +0 -79
- package/dist/tools/setup-red-team-target.js +0 -430
- package/dist/tools/setup-red-team-target.js.map +0 -1
- package/dist/tools/triage-finding.d.ts +0 -47
- package/dist/tools/triage-finding.js +0 -116
- package/dist/tools/triage-finding.js.map +0 -1
- package/dist/tools/update-document.js.map +0 -1
- package/dist/tools/update-endpoint.js.map +0 -1
- package/dist/tools/update-mermaid-source.js.map +0 -1
- package/dist/tools/verify-trust-mark.js.map +0 -1
- package/dist/types.js.map +0 -1
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_capture_evidence — Capture evidence (screenshots, code, terminal output)
|
|
3
|
-
*
|
|
4
|
-
* Maps to: POST /api/evidence/mcp-capture
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import { sanitizeResponse } from "../../sanitize.js";
|
|
8
|
-
export const CAPTURE_EVIDENCE_NAME = "zivis_capture_evidence";
|
|
9
|
-
export const CAPTURE_EVIDENCE_DESCRIPTION = `Capture and upload evidence from your pen testing session.
|
|
10
|
-
|
|
11
|
-
Supports screenshots (base64-encoded images), code snippets, terminal output, HTTP requests/responses, and notes. Evidence is stored in ZIVIS and can be linked to threat model findings, test cases, and pen test sessions.
|
|
12
|
-
|
|
13
|
-
Returns an evidence ID that you can reference in zivis_record_test_result.
|
|
14
|
-
|
|
15
|
-
For screenshots: provide base64-encoded image data in the content field.
|
|
16
|
-
For code/text: provide plain text in the content field.`;
|
|
17
|
-
export const CAPTURE_EVIDENCE_SCHEMA = {
|
|
18
|
-
name: z.string().describe("Evidence name (e.g., 'SQLi payload response', 'Auth bypass screenshot')"),
|
|
19
|
-
type: z
|
|
20
|
-
.enum(["screenshot", "code_snippet", "terminal_output", "http_request", "http_response", "note"])
|
|
21
|
-
.describe("Type of evidence being captured"),
|
|
22
|
-
content: z
|
|
23
|
-
.string()
|
|
24
|
-
.describe("Content: base64-encoded data for screenshots, plain text for code/terminal/notes"),
|
|
25
|
-
mime_type: z
|
|
26
|
-
.string()
|
|
27
|
-
.optional()
|
|
28
|
-
.describe("MIME type (e.g., 'image/png'). Auto-detected from type if not provided."),
|
|
29
|
-
description: z.string().optional().describe("Description of what this evidence shows"),
|
|
30
|
-
threat_model_id: z.string().optional().describe("Threat model UUID to link evidence to"),
|
|
31
|
-
finding_id: z.string().optional().describe("Finding UUID to link evidence to"),
|
|
32
|
-
test_case_id: z.string().optional().describe("Test case UUID to link evidence to"),
|
|
33
|
-
pentest_session_id: z.string().optional().describe("Pen test session UUID to associate with"),
|
|
34
|
-
source_file: z.string().optional().describe("Source file path (for code snippets)"),
|
|
35
|
-
source_line: z.number().optional().describe("Source line number (for code snippets)"),
|
|
36
|
-
};
|
|
37
|
-
export function createCaptureEvidenceHandler(apiClient) {
|
|
38
|
-
return async (params) => {
|
|
39
|
-
try {
|
|
40
|
-
const data = await apiClient.post("/api/evidence/mcp-capture", {
|
|
41
|
-
name: params.name,
|
|
42
|
-
type: params.type,
|
|
43
|
-
content: params.content,
|
|
44
|
-
mimeType: params.mime_type,
|
|
45
|
-
description: params.description,
|
|
46
|
-
threatModelId: params.threat_model_id,
|
|
47
|
-
findingId: params.finding_id,
|
|
48
|
-
testCaseId: params.test_case_id,
|
|
49
|
-
pentestSessionId: params.pentest_session_id,
|
|
50
|
-
sourceFile: params.source_file,
|
|
51
|
-
sourceLine: params.source_line,
|
|
52
|
-
});
|
|
53
|
-
const sanitized = sanitizeResponse(data);
|
|
54
|
-
return {
|
|
55
|
-
content: [
|
|
56
|
-
{
|
|
57
|
-
type: "text",
|
|
58
|
-
text: JSON.stringify(sanitized, null, 2),
|
|
59
|
-
},
|
|
60
|
-
],
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
catch (err) {
|
|
64
|
-
const message = err instanceof Error ? err.message : "Failed to capture evidence";
|
|
65
|
-
return {
|
|
66
|
-
content: [{ type: "text", text: `Error: ${message}` }],
|
|
67
|
-
isError: true,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=capture-evidence.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capture-evidence.js","sourceRoot":"","sources":["../../../src/tools/enterprise/capture-evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_create_report_ticket — Create a Jira or Linear ticket from a report issue
|
|
3
|
-
*
|
|
4
|
-
* Maps to: POST /api/reports/:reportId/issues/:issueId/create-ticket
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import type { ApiClient } from "../../api-client.js";
|
|
8
|
-
export declare const CREATE_REPORT_TICKET_NAME = "zivis_create_report_ticket";
|
|
9
|
-
export declare const CREATE_REPORT_TICKET_DESCRIPTION = "Create a Jira or Linear ticket from a report issue.\n\nLinks the report issue to an external ticket tracker so remediation can be tracked in the customer's project management tool. The ticket includes the issue title, description, recommendation, severity, and metadata (CWE, OWASP, CVSS).\n\nPrerequisites:\n- Jira: Active Jira integration with a default project configured\n- Linear: Active Linear integration with a default team configured\n\nThe ticket reference is stored on the issue and displayed in the remediation checklist.";
|
|
10
|
-
export declare const CREATE_REPORT_TICKET_SCHEMA: {
|
|
11
|
-
report_id: z.ZodString;
|
|
12
|
-
issue_id: z.ZodString;
|
|
13
|
-
provider: z.ZodEnum<{
|
|
14
|
-
jira: "jira";
|
|
15
|
-
linear: "linear";
|
|
16
|
-
}>;
|
|
17
|
-
};
|
|
18
|
-
export declare function createCreateReportTicketHandler(apiClient: ApiClient): (params: {
|
|
19
|
-
report_id: string;
|
|
20
|
-
issue_id: string;
|
|
21
|
-
provider: "jira" | "linear";
|
|
22
|
-
}) => Promise<{
|
|
23
|
-
content: {
|
|
24
|
-
type: "text";
|
|
25
|
-
text: string;
|
|
26
|
-
}[];
|
|
27
|
-
isError?: undefined;
|
|
28
|
-
} | {
|
|
29
|
-
content: {
|
|
30
|
-
type: "text";
|
|
31
|
-
text: string;
|
|
32
|
-
}[];
|
|
33
|
-
isError: boolean;
|
|
34
|
-
}>;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_create_report_ticket — Create a Jira or Linear ticket from a report issue
|
|
3
|
-
*
|
|
4
|
-
* Maps to: POST /api/reports/:reportId/issues/:issueId/create-ticket
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import { sanitizeResponse } from "../../sanitize.js";
|
|
8
|
-
export const CREATE_REPORT_TICKET_NAME = "zivis_create_report_ticket";
|
|
9
|
-
export const CREATE_REPORT_TICKET_DESCRIPTION = `Create a Jira or Linear ticket from a report issue.
|
|
10
|
-
|
|
11
|
-
Links the report issue to an external ticket tracker so remediation can be tracked in the customer's project management tool. The ticket includes the issue title, description, recommendation, severity, and metadata (CWE, OWASP, CVSS).
|
|
12
|
-
|
|
13
|
-
Prerequisites:
|
|
14
|
-
- Jira: Active Jira integration with a default project configured
|
|
15
|
-
- Linear: Active Linear integration with a default team configured
|
|
16
|
-
|
|
17
|
-
The ticket reference is stored on the issue and displayed in the remediation checklist.`;
|
|
18
|
-
export const CREATE_REPORT_TICKET_SCHEMA = {
|
|
19
|
-
report_id: z.string().describe("Report UUID"),
|
|
20
|
-
issue_id: z.string().describe("Report issue UUID"),
|
|
21
|
-
provider: z.enum(["jira", "linear"]).describe("Ticket provider to use"),
|
|
22
|
-
};
|
|
23
|
-
export function createCreateReportTicketHandler(apiClient) {
|
|
24
|
-
return async (params) => {
|
|
25
|
-
try {
|
|
26
|
-
const data = await apiClient.post(`/api/reports/${params.report_id}/issues/${params.issue_id}/create-ticket`, { provider: params.provider });
|
|
27
|
-
const result = sanitizeResponse({
|
|
28
|
-
...data,
|
|
29
|
-
message: `${params.provider === "jira" ? "Jira" : "Linear"} ticket created and linked to issue.`,
|
|
30
|
-
});
|
|
31
|
-
return {
|
|
32
|
-
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
const message = err instanceof Error ? err.message : "Failed to create ticket";
|
|
37
|
-
return {
|
|
38
|
-
content: [{ type: "text", text: `Error: ${message}` }],
|
|
39
|
-
isError: true,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=create-report-ticket.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-report-ticket.js","sourceRoot":"","sources":["../../../src/tools/enterprise/create-report-ticket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,yBAAyB,GAAG,4BAA4B,CAAC;AAEtE,MAAM,CAAC,MAAM,gCAAgC,GAAG;;;;;;;;wFAQwC,CAAC;AAEzF,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC7C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CACxE,CAAC;AAEF,MAAM,UAAU,+BAA+B,CAAC,SAAoB;IAClE,OAAO,KAAK,EAAE,MAIb,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAC/B,gBAAgB,MAAM,CAAC,SAAS,WAAW,MAAM,CAAC,QAAQ,gBAAgB,EAC1E,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAC9B,CAAC;YAEF,MAAM,MAAM,GAAG,gBAAgB,CAAC;gBAC9B,GAAG,IAAI;gBACP,OAAO,EAAE,GAAG,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,sCAAsC;aACjG,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_end_pentest_session — End a pen test session
|
|
3
|
-
*
|
|
4
|
-
* Maps to: PATCH /api/pentest-sessions/:id
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import type { ApiClient } from "../../api-client.js";
|
|
8
|
-
export declare const END_PENTEST_SESSION_NAME = "zivis_end_pentest_session";
|
|
9
|
-
export declare const END_PENTEST_SESSION_DESCRIPTION = "End a pen test session by marking it as completed or abandoned.\n\nCall this when you're done with your pen testing work. The session results will be preserved for report generation.";
|
|
10
|
-
export declare const END_PENTEST_SESSION_SCHEMA: {
|
|
11
|
-
session_id: z.ZodString;
|
|
12
|
-
status: z.ZodDefault<z.ZodEnum<{
|
|
13
|
-
completed: "completed";
|
|
14
|
-
paused: "paused";
|
|
15
|
-
abandoned: "abandoned";
|
|
16
|
-
}>>;
|
|
17
|
-
};
|
|
18
|
-
export declare function createEndPentestSessionHandler(apiClient: ApiClient): (params: {
|
|
19
|
-
session_id: string;
|
|
20
|
-
status?: string;
|
|
21
|
-
}) => Promise<{
|
|
22
|
-
content: {
|
|
23
|
-
type: "text";
|
|
24
|
-
text: string;
|
|
25
|
-
}[];
|
|
26
|
-
isError?: undefined;
|
|
27
|
-
} | {
|
|
28
|
-
content: {
|
|
29
|
-
type: "text";
|
|
30
|
-
text: string;
|
|
31
|
-
}[];
|
|
32
|
-
isError: boolean;
|
|
33
|
-
}>;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_end_pentest_session — End a pen test session
|
|
3
|
-
*
|
|
4
|
-
* Maps to: PATCH /api/pentest-sessions/:id
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import { sanitizeResponse } from "../../sanitize.js";
|
|
8
|
-
export const END_PENTEST_SESSION_NAME = "zivis_end_pentest_session";
|
|
9
|
-
export const END_PENTEST_SESSION_DESCRIPTION = `End a pen test session by marking it as completed or abandoned.
|
|
10
|
-
|
|
11
|
-
Call this when you're done with your pen testing work. The session results will be preserved for report generation.`;
|
|
12
|
-
export const END_PENTEST_SESSION_SCHEMA = {
|
|
13
|
-
session_id: z.string().describe("Pen test session UUID"),
|
|
14
|
-
status: z
|
|
15
|
-
.enum(["completed", "paused", "abandoned"])
|
|
16
|
-
.default("completed")
|
|
17
|
-
.describe("Final status (completed = normal end, abandoned = incomplete)"),
|
|
18
|
-
};
|
|
19
|
-
export function createEndPentestSessionHandler(apiClient) {
|
|
20
|
-
return async (params) => {
|
|
21
|
-
try {
|
|
22
|
-
const data = await apiClient.patch(`/api/pentest-sessions/${params.session_id}`, { status: params.status || "completed" });
|
|
23
|
-
const sanitized = sanitizeResponse(data);
|
|
24
|
-
return {
|
|
25
|
-
content: [
|
|
26
|
-
{
|
|
27
|
-
type: "text",
|
|
28
|
-
text: JSON.stringify(sanitized, null, 2),
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
catch (err) {
|
|
34
|
-
const message = err instanceof Error ? err.message : "Failed to end pentest session";
|
|
35
|
-
return {
|
|
36
|
-
content: [{ type: "text", text: `Error: ${message}` }],
|
|
37
|
-
isError: true,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=end-pentest-session.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"end-pentest-session.js","sourceRoot":"","sources":["../../../src/tools/enterprise/end-pentest-session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,wBAAwB,GAAG,2BAA2B,CAAC;AAEpE,MAAM,CAAC,MAAM,+BAA+B,GAAG;;oHAEqE,CAAC;AAErH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACxD,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;SAC1C,OAAO,CAAC,WAAW,CAAC;SACpB,QAAQ,CAAC,+DAA+D,CAAC;CAC7E,CAAC;AAEF,MAAM,UAAU,8BAA8B,CAAC,SAAoB;IACjE,OAAO,KAAK,EAAE,MAA+C,EAAE,EAAE;QAC/D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,KAAK,CAChC,yBAAyB,MAAM,CAAC,UAAU,EAAE,EAC5C,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE,CACzC,CAAC;YAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAEzC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;qBACzC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC;YACrF,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"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_generate_report — Generate a pen test report with PDF export
|
|
3
|
-
*
|
|
4
|
-
* Maps to: POST /api/reports + POST /api/reports/:id/regenerate + POST /api/reports/:id/export
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import type { ApiClient } from "../../api-client.js";
|
|
8
|
-
export declare const GENERATE_REPORT_NAME = "zivis_generate_report";
|
|
9
|
-
export declare const GENERATE_REPORT_DESCRIPTION = "Generate a professional pen test report with optional PDF export.\n\nCreates a report from campaign findings, pen test session results, and threat model data. The report is generated section by section using AI, then can be exported as a branded PDF.\n\nAssessment types: web_pentest, api_pentest, ai_red_team, full_assessment, recon_only";
|
|
10
|
-
export declare const GENERATE_REPORT_SCHEMA: {
|
|
11
|
-
name: z.ZodString;
|
|
12
|
-
assessment_type: z.ZodEnum<{
|
|
13
|
-
ai_red_team: "ai_red_team";
|
|
14
|
-
web_pentest: "web_pentest";
|
|
15
|
-
api_pentest: "api_pentest";
|
|
16
|
-
full_assessment: "full_assessment";
|
|
17
|
-
recon_only: "recon_only";
|
|
18
|
-
}>;
|
|
19
|
-
customer_name: z.ZodString;
|
|
20
|
-
analyst_name: z.ZodString;
|
|
21
|
-
engagement_start: z.ZodString;
|
|
22
|
-
engagement_end: z.ZodString;
|
|
23
|
-
campaign_id: z.ZodOptional<z.ZodString>;
|
|
24
|
-
application_id: z.ZodOptional<z.ZodString>;
|
|
25
|
-
description: z.ZodOptional<z.ZodString>;
|
|
26
|
-
customer_industry: z.ZodOptional<z.ZodString>;
|
|
27
|
-
reviewer_name: z.ZodOptional<z.ZodString>;
|
|
28
|
-
export_pdf: z.ZodDefault<z.ZodBoolean>;
|
|
29
|
-
};
|
|
30
|
-
export declare function createGenerateReportHandler(apiClient: ApiClient): (params: {
|
|
31
|
-
name: string;
|
|
32
|
-
assessment_type: string;
|
|
33
|
-
customer_name: string;
|
|
34
|
-
analyst_name: string;
|
|
35
|
-
engagement_start: string;
|
|
36
|
-
engagement_end: string;
|
|
37
|
-
campaign_id?: string;
|
|
38
|
-
application_id?: string;
|
|
39
|
-
description?: string;
|
|
40
|
-
customer_industry?: string;
|
|
41
|
-
reviewer_name?: string;
|
|
42
|
-
export_pdf?: boolean;
|
|
43
|
-
}) => Promise<{
|
|
44
|
-
content: {
|
|
45
|
-
type: "text";
|
|
46
|
-
text: string;
|
|
47
|
-
}[];
|
|
48
|
-
isError: boolean;
|
|
49
|
-
} | {
|
|
50
|
-
content: {
|
|
51
|
-
type: "text";
|
|
52
|
-
text: string;
|
|
53
|
-
}[];
|
|
54
|
-
isError?: undefined;
|
|
55
|
-
}>;
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_generate_report — Generate a pen test report with PDF export
|
|
3
|
-
*
|
|
4
|
-
* Maps to: POST /api/reports + POST /api/reports/:id/regenerate + POST /api/reports/:id/export
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import { resolveApplicationId } from "../../resolve-application-id.js";
|
|
8
|
-
import { sanitizeResponse } from "../../sanitize.js";
|
|
9
|
-
export const GENERATE_REPORT_NAME = "zivis_generate_report";
|
|
10
|
-
export const GENERATE_REPORT_DESCRIPTION = `Generate a professional pen test report with optional PDF export.
|
|
11
|
-
|
|
12
|
-
Creates a report from campaign findings, pen test session results, and threat model data. The report is generated section by section using AI, then can be exported as a branded PDF.
|
|
13
|
-
|
|
14
|
-
Assessment types: web_pentest, api_pentest, ai_red_team, full_assessment, recon_only`;
|
|
15
|
-
export const GENERATE_REPORT_SCHEMA = {
|
|
16
|
-
name: z.string().describe("Report name (e.g., 'Q1 2026 Web Application Penetration Test')"),
|
|
17
|
-
assessment_type: z
|
|
18
|
-
.enum(["web_pentest", "api_pentest", "ai_red_team", "full_assessment", "recon_only"])
|
|
19
|
-
.describe("Type of assessment report to generate"),
|
|
20
|
-
customer_name: z.string().describe("Customer/client name"),
|
|
21
|
-
analyst_name: z.string().describe("Name of the security analyst"),
|
|
22
|
-
engagement_start: z.string().describe("Engagement start date (ISO 8601, e.g., '2026-03-01')"),
|
|
23
|
-
engagement_end: z.string().describe("Engagement end date (ISO 8601, e.g., '2026-03-15')"),
|
|
24
|
-
campaign_id: z.string().optional().describe("Campaign UUID to pull findings from"),
|
|
25
|
-
application_id: z
|
|
26
|
-
.string()
|
|
27
|
-
.optional()
|
|
28
|
-
.describe("Application UUID for context. If omitted, uses applicationId from .zivis/project.json when set."),
|
|
29
|
-
description: z.string().optional().describe("Report description or executive summary notes"),
|
|
30
|
-
customer_industry: z.string().optional().describe("Customer's industry (for context in report)"),
|
|
31
|
-
reviewer_name: z.string().optional().describe("Name of the report reviewer"),
|
|
32
|
-
export_pdf: z.boolean().default(false).describe("Whether to also generate a PDF export"),
|
|
33
|
-
};
|
|
34
|
-
export function createGenerateReportHandler(apiClient) {
|
|
35
|
-
return async (params) => {
|
|
36
|
-
try {
|
|
37
|
-
const applicationId = resolveApplicationId(params.application_id);
|
|
38
|
-
// Step 1: Create the report
|
|
39
|
-
const report = await apiClient.post("/api/reports", {
|
|
40
|
-
name: params.name,
|
|
41
|
-
assessmentType: params.assessment_type,
|
|
42
|
-
customerName: params.customer_name,
|
|
43
|
-
analystName: params.analyst_name,
|
|
44
|
-
engagementStart: params.engagement_start,
|
|
45
|
-
engagementEnd: params.engagement_end,
|
|
46
|
-
campaignId: params.campaign_id,
|
|
47
|
-
applicationId,
|
|
48
|
-
description: params.description,
|
|
49
|
-
customerIndustry: params.customer_industry,
|
|
50
|
-
reviewerName: params.reviewer_name,
|
|
51
|
-
});
|
|
52
|
-
const reportId = report.report?.id;
|
|
53
|
-
if (!reportId) {
|
|
54
|
-
return {
|
|
55
|
-
content: [{ type: "text", text: "Error: Report created but no ID returned" }],
|
|
56
|
-
isError: true,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
// Step 2: Trigger content generation
|
|
60
|
-
let generationJob = null;
|
|
61
|
-
try {
|
|
62
|
-
generationJob = await apiClient.post(`/api/reports/${reportId}/regenerate`, {});
|
|
63
|
-
}
|
|
64
|
-
catch (genErr) {
|
|
65
|
-
// Generation may fail if no credits — still return the report
|
|
66
|
-
console.error("Report generation failed:", genErr);
|
|
67
|
-
}
|
|
68
|
-
// Step 3: If PDF export requested, trigger it (async)
|
|
69
|
-
let pdfJob = null;
|
|
70
|
-
if (params.export_pdf) {
|
|
71
|
-
try {
|
|
72
|
-
pdfJob = await apiClient.post(`/api/reports/${reportId}/export`, {});
|
|
73
|
-
}
|
|
74
|
-
catch (pdfErr) {
|
|
75
|
-
console.error("PDF export failed:", pdfErr);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
const result = sanitizeResponse({
|
|
79
|
-
report,
|
|
80
|
-
generationJob,
|
|
81
|
-
pdfExport: pdfJob,
|
|
82
|
-
nextSteps: [
|
|
83
|
-
generationJob
|
|
84
|
-
? "Report generation started. Content will be generated section by section."
|
|
85
|
-
: "Report created but generation could not start. Check credits.",
|
|
86
|
-
params.export_pdf
|
|
87
|
-
? pdfJob
|
|
88
|
-
? "PDF export triggered. Check status with zivis_get_report_status."
|
|
89
|
-
: "PDF export could not start."
|
|
90
|
-
: "Use export_pdf: true to generate a PDF when ready.",
|
|
91
|
-
],
|
|
92
|
-
});
|
|
93
|
-
return {
|
|
94
|
-
content: [
|
|
95
|
-
{
|
|
96
|
-
type: "text",
|
|
97
|
-
text: JSON.stringify(result, null, 2),
|
|
98
|
-
},
|
|
99
|
-
],
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
catch (err) {
|
|
103
|
-
const message = err instanceof Error ? err.message : "Failed to generate report";
|
|
104
|
-
return {
|
|
105
|
-
content: [{ type: "text", text: `Error: ${message}` }],
|
|
106
|
-
isError: true,
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=generate-report.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-report.js","sourceRoot":"","sources":["../../../src/tools/enterprise/generate-report.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;qFAI0C,CAAC;AAEtF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;IAC3F,eAAe,EAAE,CAAC;SACf,IAAI,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;SACpF,QAAQ,CAAC,uCAAuC,CAAC;IACpD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC1D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACjE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IAC7F,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IACzF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAClF,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,iGAAiG,CAClG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IAC5F,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IAChG,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC5E,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACzF,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,SAAoB;IAC9D,OAAO,KAAK,EAAE,MAab,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClE,4BAA4B;YAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CACjC,cAAc,EACd;gBACE,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,cAAc,EAAE,MAAM,CAAC,eAAe;gBACtC,YAAY,EAAE,MAAM,CAAC,aAAa;gBAClC,WAAW,EAAE,MAAM,CAAC,YAAY;gBAChC,eAAe,EAAE,MAAM,CAAC,gBAAgB;gBACxC,aAAa,EAAE,MAAM,CAAC,cAAc;gBACpC,UAAU,EAAE,MAAM,CAAC,WAAW;gBAC9B,aAAa;gBACb,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,gBAAgB,EAAE,MAAM,CAAC,iBAAiB;gBAC1C,YAAY,EAAE,MAAM,CAAC,aAAa;aACnC,CACF,CAAC;YAEF,MAAM,QAAQ,GAAI,MAAiD,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/E,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,0CAA0C,EAAE,CAAC;oBACtF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,qCAAqC;YACrC,IAAI,aAAa,GAAmC,IAAI,CAAC;YACzD,IAAI,CAAC;gBACH,aAAa,GAAG,MAAM,SAAS,CAAC,IAAI,CAClC,gBAAgB,QAAQ,aAAa,EACrC,EAAE,CACH,CAAC;YACJ,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,8DAA8D;gBAC9D,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;YACrD,CAAC;YAED,sDAAsD;YACtD,IAAI,MAAM,GAAmC,IAAI,CAAC;YAClD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAC3B,gBAAgB,QAAQ,SAAS,EACjC,EAAE,CACH,CAAC;gBACJ,CAAC;gBAAC,OAAO,MAAM,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,gBAAgB,CAAC;gBAC9B,MAAM;gBACN,aAAa;gBACb,SAAS,EAAE,MAAM;gBACjB,SAAS,EAAE;oBACT,aAAa;wBACX,CAAC,CAAC,0EAA0E;wBAC5E,CAAC,CAAC,+DAA+D;oBACnE,MAAM,CAAC,UAAU;wBACf,CAAC,CAAC,MAAM;4BACN,CAAC,CAAC,kEAAkE;4BACpE,CAAC,CAAC,6BAA6B;wBACjC,CAAC,CAAC,oDAAoD;iBACzD;aACF,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC;YACjF,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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-org-zat.js","sourceRoot":"","sources":["../../../src/tools/enterprise/get-org-zat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;qDAwBc,CAAC;AAEtD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8EAA8E,CAAC;CAC5F,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,SAAoB;IACzD,OAAO,KAAK,EAAE,MAA8B,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,CAC9B,WAAW,KAAK,EAAE,CACnB,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;qBACpC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;YAC7E,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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_get_report_status — Check report generation and PDF export status
|
|
3
|
-
*
|
|
4
|
-
* Maps to: GET /api/reports/:id
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import type { ApiClient } from "../../api-client.js";
|
|
8
|
-
export declare const GET_REPORT_STATUS_NAME = "zivis_get_report_status";
|
|
9
|
-
export declare const GET_REPORT_STATUS_DESCRIPTION = "Check the status of a report, including content generation progress and PDF export status.\n\nUse this after calling zivis_generate_report to monitor progress.";
|
|
10
|
-
export declare const GET_REPORT_STATUS_SCHEMA: {
|
|
11
|
-
report_id: z.ZodString;
|
|
12
|
-
};
|
|
13
|
-
export declare function createGetReportStatusHandler(apiClient: ApiClient): (params: {
|
|
14
|
-
report_id: string;
|
|
15
|
-
}) => Promise<{
|
|
16
|
-
content: {
|
|
17
|
-
type: "text";
|
|
18
|
-
text: string;
|
|
19
|
-
}[];
|
|
20
|
-
isError?: undefined;
|
|
21
|
-
} | {
|
|
22
|
-
content: {
|
|
23
|
-
type: "text";
|
|
24
|
-
text: string;
|
|
25
|
-
}[];
|
|
26
|
-
isError: boolean;
|
|
27
|
-
}>;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_get_report_status — Check report generation and PDF export status
|
|
3
|
-
*
|
|
4
|
-
* Maps to: GET /api/reports/:id
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import { sanitizeResponse } from "../../sanitize.js";
|
|
8
|
-
export const GET_REPORT_STATUS_NAME = "zivis_get_report_status";
|
|
9
|
-
export const GET_REPORT_STATUS_DESCRIPTION = `Check the status of a report, including content generation progress and PDF export status.
|
|
10
|
-
|
|
11
|
-
Use this after calling zivis_generate_report to monitor progress.`;
|
|
12
|
-
export const GET_REPORT_STATUS_SCHEMA = {
|
|
13
|
-
report_id: z.string().describe("Report UUID to check status for"),
|
|
14
|
-
};
|
|
15
|
-
export function createGetReportStatusHandler(apiClient) {
|
|
16
|
-
return async (params) => {
|
|
17
|
-
try {
|
|
18
|
-
const data = await apiClient.get(`/api/reports/${params.report_id}`);
|
|
19
|
-
const sanitized = sanitizeResponse(data);
|
|
20
|
-
return {
|
|
21
|
-
content: [
|
|
22
|
-
{
|
|
23
|
-
type: "text",
|
|
24
|
-
text: JSON.stringify(sanitized, null, 2),
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
catch (err) {
|
|
30
|
-
const message = err instanceof Error ? err.message : "Failed to get report status";
|
|
31
|
-
return {
|
|
32
|
-
content: [{ type: "text", text: `Error: ${message}` }],
|
|
33
|
-
isError: true,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=get-report-status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-report-status.js","sourceRoot":"","sources":["../../../src/tools/enterprise/get-report-status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAEhE,MAAM,CAAC,MAAM,6BAA6B,GAAG;;kEAEqB,CAAC;AAEnE,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CAClE,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAAC,SAAoB;IAC/D,OAAO,KAAK,EAAE,MAA6B,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,CAC9B,gBAAgB,MAAM,CAAC,SAAS,EAAE,CACnC,CAAC;YAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAEzC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;qBACzC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;YACnF,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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_get_threat_model — Get a threat model with all entities
|
|
3
|
-
*
|
|
4
|
-
* Maps to: GET /api/threat-models/:id
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import type { ApiClient } from "../../api-client.js";
|
|
8
|
-
export declare const GET_THREAT_MODEL_NAME = "zivis_get_threat_model";
|
|
9
|
-
export declare const GET_THREAT_MODEL_DESCRIPTION = "Get a threat model with ALL its entities \u2014 actors, components, data flows, attack scenarios, security controls, data assets, test cases, findings, AND any linked diagrams.\n\nReturns the complete threat model including:\n- **Actors**: Who interacts with the system (external users, attackers, internal services)\n- **Components**: System parts (APIs, databases, frontends, services) with technology and trust level\n- **Data Flows**: How data moves between components (protocol, encryption, auth mechanism)\n- **Attack Scenarios**: STRIDE-categorized threats with severity, likelihood, attack vectors\n- **Security Controls**: Existing mitigations (preventive, detective, corrective) with effectiveness\n- **Data Assets**: What sensitive data exists and how it's classified\n- **Test Cases**: Security tests with results (pass/fail/partial/not_tested)\n- **Findings**: Discovered vulnerabilities with severity and remediation recommendations\n- **Linked Diagrams**: Architecture, data flow, trust boundary, and other diagrams associated with this threat model\n\nIMPORTANT: The threat_model_id must be a threat model UUID from zivis_list_threat_models, NOT a scan ID or agent instance ID.\n\nUse this to understand the full security posture before making changes, adding entities, or running pen tests.\nAfter viewing, use zivis_manage_actor, zivis_manage_component, zivis_manage_data_flow, etc. to add or update entities.\nUse zivis_get_diagram with a diagram_id from the linked_diagrams to view full diagram details (nodes, connections, boundaries).";
|
|
10
|
-
export declare const GET_THREAT_MODEL_SCHEMA: {
|
|
11
|
-
threat_model_id: z.ZodString;
|
|
12
|
-
include_test_cases: z.ZodDefault<z.ZodBoolean>;
|
|
13
|
-
};
|
|
14
|
-
export declare function createGetThreatModelHandler(apiClient: ApiClient): (params: {
|
|
15
|
-
threat_model_id: string;
|
|
16
|
-
include_test_cases?: boolean;
|
|
17
|
-
}) => Promise<{
|
|
18
|
-
content: {
|
|
19
|
-
type: "text";
|
|
20
|
-
text: string;
|
|
21
|
-
}[];
|
|
22
|
-
isError?: undefined;
|
|
23
|
-
} | {
|
|
24
|
-
content: {
|
|
25
|
-
type: "text";
|
|
26
|
-
text: string;
|
|
27
|
-
}[];
|
|
28
|
-
isError: boolean;
|
|
29
|
-
}>;
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* zivis_get_threat_model — Get a threat model with all entities
|
|
3
|
-
*
|
|
4
|
-
* Maps to: GET /api/threat-models/:id
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import { sanitizeResponse } from "../../sanitize.js";
|
|
8
|
-
export const GET_THREAT_MODEL_NAME = "zivis_get_threat_model";
|
|
9
|
-
export const GET_THREAT_MODEL_DESCRIPTION = `Get a threat model with ALL its entities — actors, components, data flows, attack scenarios, security controls, data assets, test cases, findings, AND any linked diagrams.
|
|
10
|
-
|
|
11
|
-
Returns the complete threat model including:
|
|
12
|
-
- **Actors**: Who interacts with the system (external users, attackers, internal services)
|
|
13
|
-
- **Components**: System parts (APIs, databases, frontends, services) with technology and trust level
|
|
14
|
-
- **Data Flows**: How data moves between components (protocol, encryption, auth mechanism)
|
|
15
|
-
- **Attack Scenarios**: STRIDE-categorized threats with severity, likelihood, attack vectors
|
|
16
|
-
- **Security Controls**: Existing mitigations (preventive, detective, corrective) with effectiveness
|
|
17
|
-
- **Data Assets**: What sensitive data exists and how it's classified
|
|
18
|
-
- **Test Cases**: Security tests with results (pass/fail/partial/not_tested)
|
|
19
|
-
- **Findings**: Discovered vulnerabilities with severity and remediation recommendations
|
|
20
|
-
- **Linked Diagrams**: Architecture, data flow, trust boundary, and other diagrams associated with this threat model
|
|
21
|
-
|
|
22
|
-
IMPORTANT: The threat_model_id must be a threat model UUID from zivis_list_threat_models, NOT a scan ID or agent instance ID.
|
|
23
|
-
|
|
24
|
-
Use this to understand the full security posture before making changes, adding entities, or running pen tests.
|
|
25
|
-
After viewing, use zivis_manage_actor, zivis_manage_component, zivis_manage_data_flow, etc. to add or update entities.
|
|
26
|
-
Use zivis_get_diagram with a diagram_id from the linked_diagrams to view full diagram details (nodes, connections, boundaries).`;
|
|
27
|
-
export const GET_THREAT_MODEL_SCHEMA = {
|
|
28
|
-
threat_model_id: z
|
|
29
|
-
.string()
|
|
30
|
-
.describe("Threat model UUID (from zivis_list_threat_models, NOT a scan ID or agent ID)"),
|
|
31
|
-
include_test_cases: z
|
|
32
|
-
.boolean()
|
|
33
|
-
.default(true)
|
|
34
|
-
.describe("Whether to include test cases in the response"),
|
|
35
|
-
};
|
|
36
|
-
export function createGetThreatModelHandler(apiClient) {
|
|
37
|
-
return async (params) => {
|
|
38
|
-
try {
|
|
39
|
-
// Fetch threat model and linked diagrams in parallel
|
|
40
|
-
const [threatModelData, diagramsData] = await Promise.all([
|
|
41
|
-
apiClient.get(`/api/threat-models/${params.threat_model_id}?include=all`),
|
|
42
|
-
apiClient
|
|
43
|
-
.get(`/api/diagrams?linkedThreatModelId=${params.threat_model_id}&take=50`)
|
|
44
|
-
.catch(() => ({ diagrams: [], total: 0 })),
|
|
45
|
-
]);
|
|
46
|
-
const sanitized = sanitizeResponse(threatModelData);
|
|
47
|
-
// Attach linked diagrams summary to the response
|
|
48
|
-
const diagrams = Array.isArray(diagramsData.diagrams)
|
|
49
|
-
? diagramsData.diagrams.map((d) => ({
|
|
50
|
-
diagram_id: d.id,
|
|
51
|
-
name: d.name,
|
|
52
|
-
diagram_type: d.diagramType,
|
|
53
|
-
content_type: d.contentType,
|
|
54
|
-
description: d.description || null,
|
|
55
|
-
node_count: d._count?.nodes ?? null,
|
|
56
|
-
connection_count: d._count?.connections ?? null,
|
|
57
|
-
updated_at: d.updatedAt,
|
|
58
|
-
}))
|
|
59
|
-
: [];
|
|
60
|
-
const result = {
|
|
61
|
-
...sanitized,
|
|
62
|
-
linked_diagrams: diagrams,
|
|
63
|
-
linked_diagrams_count: diagramsData.total,
|
|
64
|
-
};
|
|
65
|
-
return {
|
|
66
|
-
content: [
|
|
67
|
-
{
|
|
68
|
-
type: "text",
|
|
69
|
-
text: JSON.stringify(result, null, 2),
|
|
70
|
-
},
|
|
71
|
-
],
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
catch (err) {
|
|
75
|
-
const message = err instanceof Error ? err.message : "Failed to get threat model";
|
|
76
|
-
return {
|
|
77
|
-
content: [{ type: "text", text: `Error: ${message}` }],
|
|
78
|
-
isError: true,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=get-threat-model.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-threat-model.js","sourceRoot":"","sources":["../../../src/tools/enterprise/get-threat-model.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAE9D,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;gIAiBoF,CAAC;AAEjI,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,CAAC,8EAA8E,CAAC;IAC3F,kBAAkB,EAAE,CAAC;SAClB,OAAO,EAAE;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,+CAA+C,CAAC;CAC7D,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,SAAoB;IAC9D,OAAO,KAAK,EAAE,MAAiE,EAAE,EAAE;QACjF,IAAI,CAAC;YACH,qDAAqD;YACrD,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACxD,SAAS,CAAC,GAAG,CACX,sBAAsB,MAAM,CAAC,eAAe,cAAc,CAC3D;gBACD,SAAS;qBACN,GAAG,CACF,qCAAqC,MAAM,CAAC,eAAe,UAAU,CACtE;qBACA,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;aAC7C,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,gBAAgB,CAAC,eAAe,CAA4B,CAAC;YAE/E,iDAAiD;YACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC;gBACnD,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC;oBACzD,UAAU,EAAE,CAAC,CAAC,EAAE;oBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,YAAY,EAAE,CAAC,CAAC,WAAW;oBAC3B,YAAY,EAAE,CAAC,CAAC,WAAW;oBAC3B,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;oBAClC,UAAU,EAAG,CAAC,CAAC,MAAiC,EAAE,KAAK,IAAI,IAAI;oBAC/D,gBAAgB,EAAG,CAAC,CAAC,MAAiC,EAAE,WAAW,IAAI,IAAI;oBAC3E,UAAU,EAAE,CAAC,CAAC,SAAS;iBACxB,CAAC,CAAC;gBACL,CAAC,CAAC,EAAE,CAAC;YAEP,MAAM,MAAM,GAAG;gBACb,GAAG,SAAS;gBACZ,eAAe,EAAE,QAAQ;gBACzB,qBAAqB,EAAE,YAAY,CAAC,KAAK;aAC1C,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC;YAClF,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"}
|