@zivis/mcp 0.1.0-alpha.26 → 0.1.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-client.d.ts +24 -1
- package/dist/api-client.js +52 -29
- package/dist/api-client.js.map +1 -0
- package/dist/auth/index.d.ts +22 -1
- package/dist/auth/index.js +38 -17
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/jwt.d.ts +16 -0
- package/dist/auth/jwt.js +13 -0
- package/dist/auth/jwt.js.map +1 -0
- package/dist/auth/keychain.d.ts +32 -6
- package/dist/auth/keychain.js +114 -83
- package/dist/auth/keychain.js.map +1 -0
- package/dist/auth/oauth.d.ts +37 -2
- package/dist/auth/oauth.js +48 -38
- package/dist/auth/oauth.js.map +1 -0
- package/dist/auth/sessions.d.ts +25 -5
- package/dist/auth/sessions.js +39 -20
- package/dist/auth/sessions.js.map +1 -0
- package/dist/auth/token-refresh.d.ts +22 -2
- package/dist/auth/token-refresh.js +35 -32
- package/dist/auth/token-refresh.js.map +1 -0
- package/dist/cli.d.ts +18 -1
- package/dist/cli.js +908 -30
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/project-binding.d.ts +19 -2
- package/dist/project-binding.js +21 -38
- package/dist/project-binding.js.map +1 -0
- package/dist/resolve-application-id.d.ts +4 -0
- package/dist/resolve-application-id.js +5 -0
- package/dist/resolve-application-id.js.map +1 -0
- package/dist/sanitize.d.ts +21 -0
- package/dist/sanitize.js +41 -0
- package/dist/sanitize.js.map +1 -0
- package/dist/server.d.ts +13 -1
- package/dist/server.js +247 -122
- package/dist/server.js.map +1 -0
- package/dist/tools/check-project.d.ts +18 -5
- package/dist/tools/check-project.js +110 -122
- package/dist/tools/check-project.js.map +1 -0
- package/dist/tools/check-repo-trust.d.ts +19 -4
- package/dist/tools/check-repo-trust.js +47 -56
- package/dist/tools/check-repo-trust.js.map +1 -0
- package/dist/tools/create-diagram.d.ts +5 -0
- package/dist/tools/create-diagram.js +10 -0
- package/dist/tools/create-diagram.js.map +1 -0
- package/dist/tools/create-document.d.ts +5 -0
- package/dist/tools/create-document.js +6 -0
- package/dist/tools/create-document.js.map +1 -0
- package/dist/tools/discover-local-infra.d.ts +10 -0
- package/dist/tools/discover-local-infra.js +73 -3
- package/dist/tools/discover-local-infra.js.map +1 -0
- package/dist/tools/enterprise/capture-evidence.d.ts +54 -0
- package/dist/tools/enterprise/capture-evidence.js +72 -0
- package/dist/tools/enterprise/capture-evidence.js.map +1 -0
- package/dist/tools/enterprise/create-report-ticket.d.ts +34 -0
- package/dist/tools/enterprise/create-report-ticket.js +44 -0
- package/dist/tools/enterprise/create-report-ticket.js.map +1 -0
- package/dist/tools/enterprise/end-pentest-session.d.ts +33 -0
- package/dist/tools/enterprise/end-pentest-session.js +42 -0
- package/dist/tools/enterprise/end-pentest-session.js.map +1 -0
- package/dist/tools/enterprise/generate-report.d.ts +55 -0
- package/dist/tools/enterprise/generate-report.js +111 -0
- package/dist/tools/enterprise/generate-report.js.map +1 -0
- package/dist/tools/enterprise/get-org-zat.d.ts +5 -0
- package/dist/tools/enterprise/get-org-zat.js +6 -0
- package/dist/tools/enterprise/get-org-zat.js.map +1 -0
- package/dist/tools/enterprise/get-report-status.d.ts +27 -0
- package/dist/tools/enterprise/get-report-status.js +38 -0
- package/dist/tools/enterprise/get-report-status.js.map +1 -0
- package/dist/tools/enterprise/get-threat-model.d.ts +6 -1
- package/dist/tools/enterprise/get-threat-model.js +17 -52
- package/dist/tools/enterprise/get-threat-model.js.map +1 -0
- package/dist/tools/enterprise/list-agents.d.ts +42 -0
- package/dist/tools/enterprise/list-agents.js +95 -0
- package/dist/tools/enterprise/list-agents.js.map +1 -0
- package/dist/tools/enterprise/list-report-issues.d.ts +36 -0
- package/dist/tools/enterprise/list-report-issues.js +50 -0
- package/dist/tools/enterprise/list-report-issues.js.map +1 -0
- package/dist/tools/enterprise/list-threat-models.d.ts +5 -0
- package/dist/tools/enterprise/list-threat-models.js +8 -0
- package/dist/tools/enterprise/list-threat-models.js.map +1 -0
- package/dist/tools/enterprise/manage-actor.d.ts +6 -1
- package/dist/tools/enterprise/manage-actor.js +7 -14
- package/dist/tools/enterprise/manage-actor.js.map +1 -0
- package/dist/tools/enterprise/manage-attack-scenario.d.ts +6 -1
- package/dist/tools/enterprise/manage-attack-scenario.js +7 -13
- package/dist/tools/enterprise/manage-attack-scenario.js.map +1 -0
- package/dist/tools/enterprise/manage-component.d.ts +6 -1
- package/dist/tools/enterprise/manage-component.js +7 -20
- package/dist/tools/enterprise/manage-component.js.map +1 -0
- package/dist/tools/enterprise/manage-data-asset.d.ts +7 -2
- package/dist/tools/enterprise/manage-data-asset.js +7 -17
- package/dist/tools/enterprise/manage-data-asset.js.map +1 -0
- package/dist/tools/enterprise/manage-data-flow.d.ts +7 -2
- package/dist/tools/enterprise/manage-data-flow.js +7 -19
- package/dist/tools/enterprise/manage-data-flow.js.map +1 -0
- package/dist/tools/enterprise/manage-finding.d.ts +69 -0
- package/dist/tools/enterprise/manage-finding.js +106 -0
- package/dist/tools/enterprise/manage-finding.js.map +1 -0
- package/dist/tools/enterprise/manage-security-control.d.ts +6 -1
- package/dist/tools/enterprise/manage-security-control.js +7 -18
- package/dist/tools/enterprise/manage-security-control.js.map +1 -0
- package/dist/tools/enterprise/manage-test-case.d.ts +7 -2
- package/dist/tools/enterprise/manage-test-case.js +6 -8
- package/dist/tools/enterprise/manage-test-case.js.map +1 -0
- package/dist/tools/enterprise/promote-finding-to-issue.d.ts +36 -0
- package/dist/tools/enterprise/promote-finding-to-issue.js +65 -0
- package/dist/tools/enterprise/promote-finding-to-issue.js.map +1 -0
- package/dist/tools/enterprise/publish-report-version.d.ts +34 -0
- package/dist/tools/enterprise/publish-report-version.js +75 -0
- package/dist/tools/enterprise/publish-report-version.js.map +1 -0
- package/dist/tools/enterprise/publish-test-to-library.d.ts +31 -0
- package/dist/tools/enterprise/publish-test-to-library.js +40 -0
- package/dist/tools/enterprise/publish-test-to-library.js.map +1 -0
- package/dist/tools/enterprise/record-test-result.d.ts +67 -0
- package/dist/tools/enterprise/record-test-result.js +75 -0
- package/dist/tools/enterprise/record-test-result.js.map +1 -0
- package/dist/tools/enterprise/start-pentest-session.d.ts +35 -0
- package/dist/tools/enterprise/start-pentest-session.js +50 -0
- package/dist/tools/enterprise/start-pentest-session.js.map +1 -0
- package/dist/tools/enterprise/sync-report-section.d.ts +41 -0
- package/dist/tools/enterprise/sync-report-section.js +79 -0
- package/dist/tools/enterprise/sync-report-section.js.map +1 -0
- package/dist/tools/enterprise/update-report-issue.d.ts +55 -0
- package/dist/tools/enterprise/update-report-issue.js +69 -0
- package/dist/tools/enterprise/update-report-issue.js.map +1 -0
- package/dist/tools/generate-diagram.d.ts +6 -0
- package/dist/tools/generate-diagram.js +9 -0
- package/dist/tools/generate-diagram.js.map +1 -0
- package/dist/tools/get-agent-test-results.d.ts +41 -0
- package/dist/tools/get-agent-test-results.js +86 -0
- package/dist/tools/get-agent-test-results.js.map +1 -0
- package/dist/tools/get-application-overview.d.ts +5 -0
- package/dist/tools/get-application-overview.js +6 -0
- package/dist/tools/get-application-overview.js.map +1 -0
- package/dist/tools/get-application.d.ts +5 -0
- package/dist/tools/get-application.js +6 -0
- package/dist/tools/get-application.js.map +1 -0
- package/dist/tools/get-artifact-content.d.ts +29 -0
- package/dist/tools/get-artifact-content.js +86 -0
- package/dist/tools/get-artifact-content.js.map +1 -0
- package/dist/tools/get-diagram.d.ts +5 -0
- package/dist/tools/get-diagram.js +11 -1
- package/dist/tools/get-diagram.js.map +1 -0
- package/dist/tools/get-document.d.ts +5 -0
- package/dist/tools/get-document.js +6 -0
- package/dist/tools/get-document.js.map +1 -0
- package/dist/tools/get-finding-details.d.ts +28 -0
- package/dist/tools/get-finding-details.js +43 -0
- package/dist/tools/get-finding-details.js.map +1 -0
- package/dist/tools/get-findings.d.ts +57 -0
- package/dist/tools/get-findings.js +103 -0
- package/dist/tools/get-findings.js.map +1 -0
- package/dist/tools/get-oss-zat.d.ts +5 -0
- package/dist/tools/get-oss-zat.js +7 -0
- package/dist/tools/get-oss-zat.js.map +1 -0
- package/dist/tools/get-recon-scan.d.ts +27 -0
- package/dist/tools/get-recon-scan.js +46 -0
- package/dist/tools/get-recon-scan.js.map +1 -0
- package/dist/tools/get-scan-output.d.ts +27 -0
- package/dist/tools/get-scan-output.js +64 -0
- package/dist/tools/get-scan-output.js.map +1 -0
- package/dist/tools/get-scenario-details.d.ts +27 -0
- package/dist/tools/get-scenario-details.js +46 -0
- package/dist/tools/get-scenario-details.js.map +1 -0
- package/dist/tools/get-test-case-results.d.ts +37 -0
- package/dist/tools/get-test-case-results.js +66 -0
- package/dist/tools/get-test-case-results.js.map +1 -0
- package/dist/tools/get-test-details.d.ts +29 -0
- package/dist/tools/get-test-details.js +49 -0
- package/dist/tools/get-test-details.js.map +1 -0
- package/dist/tools/get-trust-keys.d.ts +5 -0
- package/dist/tools/get-trust-keys.js +6 -0
- package/dist/tools/get-trust-keys.js.map +1 -0
- package/dist/tools/import-openapi-endpoints.d.ts +5 -0
- package/dist/tools/import-openapi-endpoints.js +6 -0
- package/dist/tools/import-openapi-endpoints.js.map +1 -0
- package/dist/tools/inspect-zat.d.ts +5 -0
- package/dist/tools/inspect-zat.js +19 -0
- package/dist/tools/inspect-zat.js.map +1 -0
- package/dist/tools/list-agent-test-cases.d.ts +41 -0
- package/dist/tools/list-agent-test-cases.js +73 -0
- package/dist/tools/list-agent-test-cases.js.map +1 -0
- package/dist/tools/list-applications.d.ts +6 -1
- package/dist/tools/list-applications.js +6 -0
- package/dist/tools/list-applications.js.map +1 -0
- package/dist/tools/list-diagrams.d.ts +5 -0
- package/dist/tools/list-diagrams.js +6 -0
- package/dist/tools/list-diagrams.js.map +1 -0
- package/dist/tools/list-documents.d.ts +5 -0
- package/dist/tools/list-documents.js +6 -0
- package/dist/tools/list-documents.js.map +1 -0
- package/dist/tools/list-endpoints.d.ts +5 -0
- package/dist/tools/list-endpoints.js +6 -0
- package/dist/tools/list-endpoints.js.map +1 -0
- package/dist/tools/list-recon-scans.d.ts +36 -0
- package/dist/tools/list-recon-scans.js +74 -0
- package/dist/tools/list-recon-scans.js.map +1 -0
- package/dist/tools/list-scan-artifacts.d.ts +41 -0
- package/dist/tools/list-scan-artifacts.js +63 -0
- package/dist/tools/list-scan-artifacts.js.map +1 -0
- package/dist/tools/list-scans.d.ts +44 -0
- package/dist/tools/list-scans.js +91 -0
- package/dist/tools/list-scans.js.map +1 -0
- package/dist/tools/list-test-library.d.ts +44 -0
- package/dist/tools/list-test-library.js +83 -0
- package/dist/tools/list-test-library.js.map +1 -0
- package/dist/tools/list-test-scenarios.d.ts +31 -0
- package/dist/tools/list-test-scenarios.js +66 -0
- package/dist/tools/list-test-scenarios.js.map +1 -0
- package/dist/tools/local-scan.d.ts +40 -0
- package/dist/tools/local-scan.js +261 -0
- package/dist/tools/local-scan.js.map +1 -0
- package/dist/tools/manage-diagram.d.ts +5 -0
- package/dist/tools/manage-diagram.js +16 -0
- package/dist/tools/manage-diagram.js.map +1 -0
- package/dist/tools/open-in-ide.d.ts +13 -1
- package/dist/tools/open-in-ide.js +13 -0
- package/dist/tools/open-in-ide.js.map +1 -0
- package/dist/tools/run-test-scenario.d.ts +37 -0
- package/dist/tools/run-test-scenario.js +70 -0
- package/dist/tools/run-test-scenario.js.map +1 -0
- package/dist/tools/scan-pr.d.ts +27 -0
- package/dist/tools/scan-pr.js +51 -0
- package/dist/tools/scan-pr.js.map +1 -0
- package/dist/tools/security-review.d.ts +16 -0
- package/dist/tools/security-review.js +77 -63
- package/dist/tools/security-review.js.map +1 -0
- package/dist/tools/setup-red-team-target.d.ts +79 -0
- package/dist/tools/setup-red-team-target.js +430 -0
- package/dist/tools/setup-red-team-target.js.map +1 -0
- package/dist/tools/triage-finding.d.ts +47 -0
- package/dist/tools/triage-finding.js +116 -0
- package/dist/tools/triage-finding.js.map +1 -0
- package/dist/tools/update-document.d.ts +5 -0
- package/dist/tools/update-document.js +6 -0
- package/dist/tools/update-document.js.map +1 -0
- package/dist/tools/update-endpoint.d.ts +5 -0
- package/dist/tools/update-endpoint.js +7 -0
- package/dist/tools/update-endpoint.js.map +1 -0
- package/dist/tools/update-mermaid-source.d.ts +13 -0
- package/dist/tools/update-mermaid-source.js +14 -0
- package/dist/tools/update-mermaid-source.js.map +1 -0
- package/dist/tools/verify-trust-mark.d.ts +5 -0
- package/dist/tools/verify-trust-mark.js +6 -0
- package/dist/tools/verify-trust-mark.js.map +1 -0
- package/dist/types.d.ts +14 -14
- package/dist/types.js +28 -22
- package/dist/types.js.map +1 -0
- package/package.json +4 -24
- package/LICENSE +0 -201
- package/README.md +0 -19
- package/dist/lib/inspect-cache.d.ts +0 -10
- package/dist/lib/inspect-cache.js +0 -75
- package/dist/lib/next-steps.d.ts +0 -27
- package/dist/lib/next-steps.js +0 -21
- package/dist/matcher/ast-eval.d.ts +0 -8
- package/dist/matcher/ast-eval.js +0 -95
- package/dist/matcher/finding.d.ts +0 -55
- package/dist/matcher/finding.js +0 -1
- package/dist/matcher/index.d.ts +0 -8
- package/dist/matcher/index.js +0 -202
- package/dist/matcher/inference-candidates.d.ts +0 -26
- package/dist/matcher/inference-candidates.js +0 -81
- package/dist/matcher/walker.d.ts +0 -7
- package/dist/matcher/walker.js +0 -71
- package/dist/pattern-pack/index.d.ts +0 -125
- package/dist/pattern-pack/index.js +0 -189
- package/dist/pattern-packs/zivis-public-0.2.0/capsules/agents/privilege-separation.yaml +0 -224
- package/dist/pattern-packs/zivis-public-0.2.0/capsules/prompting/self-consistency-no-isolation.yaml +0 -237
- package/dist/pattern-packs/zivis-public-0.2.0/capsules/retrieval/context-injection-no-validator.yaml +0 -348
- package/dist/pattern-packs/zivis-public-0.2.0/capsules/security/late-org-filter.yaml +0 -266
- package/dist/pattern-packs/zivis-public-0.2.0/controls/external_validator_on_facts.yaml +0 -37
- package/dist/pattern-packs/zivis-public-0.2.0/controls/fact_validator_present.yaml +0 -68
- package/dist/pattern-packs/zivis-public-0.2.0/controls/human_approval_gate.yaml +0 -44
- package/dist/pattern-packs/zivis-public-0.2.0/controls/langgraph_state_machine_with_per_node_tools.yaml +0 -35
- package/dist/pattern-packs/zivis-public-0.2.0/controls/per_sample_retrieval_diversification.yaml +0 -38
- package/dist/pattern-packs/zivis-public-0.2.0/controls/prisma_extension_or_middleware_attaching_org_filter.yaml +0 -31
- package/dist/pattern-packs/zivis-public-0.2.0/controls/row_level_security_policy.yaml +0 -37
- package/dist/pattern-packs/zivis-public-0.2.0/controls/source_attribution_present.yaml +0 -58
- package/dist/pattern-packs/zivis-public-0.2.0/manifest.json +0 -167
- package/dist/pattern-packs/zivis-public-0.2.0/prompts/agents/privilege-separation/identify.md +0 -54
- package/dist/pattern-packs/zivis-public-0.2.0/prompts/prompting/self-consistency-no-isolation/identify.md +0 -60
- package/dist/pattern-packs/zivis-public-0.2.0/prompts/retrieval/context-injection-no-validator/identify.md +0 -109
- package/dist/pattern-packs/zivis-public-0.2.0/prompts/security/late-org-filter/identify.md +0 -78
- package/dist/prompts/audit-dependencies.d.ts +0 -2
- package/dist/prompts/audit-dependencies.js +0 -47
- package/dist/prompts/getting-started.d.ts +0 -2
- package/dist/prompts/getting-started.js +0 -37
- package/dist/prompts/index.d.ts +0 -2
- package/dist/prompts/index.js +0 -6
- package/dist/tools/enterprise/get-threat-model-artifact.d.ts +0 -24
- package/dist/tools/enterprise/get-threat-model-artifact.js +0 -68
- package/dist/tools/enterprise/list-attack-scenarios.d.ts +0 -24
- package/dist/tools/enterprise/list-attack-scenarios.js +0 -63
- package/dist/tools/enterprise/list-attack-step-library-tests.d.ts +0 -24
- package/dist/tools/enterprise/list-attack-step-library-tests.js +0 -55
- package/dist/tools/enterprise/list-threat-model-artifacts.d.ts +0 -55
- package/dist/tools/enterprise/list-threat-model-artifacts.js +0 -108
- package/dist/tools/enterprise/list-threat-model-review-items.d.ts +0 -30
- package/dist/tools/enterprise/list-threat-model-review-items.js +0 -54
- package/dist/tools/enterprise/list-threat-model-versions.d.ts +0 -24
- package/dist/tools/enterprise/list-threat-model-versions.js +0 -54
- package/dist/tools/enterprise/manage-threat-model-analysis.d.ts +0 -44
- package/dist/tools/enterprise/manage-threat-model-analysis.js +0 -83
- package/dist/tools/enterprise/manage-threat-model-review.d.ts +0 -38
- package/dist/tools/enterprise/manage-threat-model-review.js +0 -72
- package/dist/tools/get-started.d.ts +0 -18
- package/dist/tools/get-started.js +0 -470
- package/dist/tools/inspect.d.ts +0 -21
- package/dist/tools/inspect.js +0 -222
- package/dist/tools/manage-application.d.ts +0 -64
- package/dist/tools/manage-application.js +0 -129
- package/dist/tools/manage-endpoint-lifecycle.d.ts +0 -80
- package/dist/tools/manage-endpoint-lifecycle.js +0 -180
- package/dist/tools/threat-get-capsule.d.ts +0 -15
- package/dist/tools/threat-get-capsule.js +0 -53
- package/dist/tools/threat-get-inference-prompt.d.ts +0 -15
- package/dist/tools/threat-get-inference-prompt.js +0 -73
- package/dist/tools/threat-guide.d.ts +0 -28
- package/dist/tools/threat-guide.js +0 -175
- package/dist/tools/threat-list-relevant-capsules.d.ts +0 -17
- package/dist/tools/threat-list-relevant-capsules.js +0 -158
- package/dist/tools/threat-run-matcher.d.ts +0 -17
- package/dist/tools/threat-run-matcher.js +0 -145
|
@@ -1,28 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_get_threat_model — Get a threat model with all entities
|
|
3
|
+
*
|
|
4
|
+
* Maps to: GET /api/threat-models/:id
|
|
5
|
+
*/
|
|
1
6
|
import { z } from "zod";
|
|
2
7
|
import { sanitizeResponse } from "../../sanitize.js";
|
|
3
8
|
export const GET_THREAT_MODEL_NAME = "zivis_get_threat_model";
|
|
4
|
-
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
|
|
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.
|
|
5
10
|
|
|
6
|
-
Returns the complete threat model
|
|
7
|
-
- Top-level: \`actors\`, \`components\`, \`dataFlows\`, \`attackScenarios\`, \`securityControls\`, \`dataAssets\`, \`testCases\`, \`findings\` — copied from the latest version
|
|
8
|
-
- Nested: \`versions[0].<entity>\` — authoritative source. Older versions in \`versions[N]\` (N≥1) only carry summary metrics, not entities.
|
|
9
|
-
|
|
10
|
-
Entity contents:
|
|
11
|
+
Returns the complete threat model including:
|
|
11
12
|
- **Actors**: Who interacts with the system (external users, attackers, internal services)
|
|
12
13
|
- **Components**: System parts (APIs, databases, frontends, services) with technology and trust level
|
|
13
14
|
- **Data Flows**: How data moves between components (protocol, encryption, auth mechanism)
|
|
14
|
-
- **Attack Scenarios**: STRIDE-categorized threats with severity, likelihood,
|
|
15
|
+
- **Attack Scenarios**: STRIDE-categorized threats with severity, likelihood, attack vectors
|
|
15
16
|
- **Security Controls**: Existing mitigations (preventive, detective, corrective) with effectiveness
|
|
16
17
|
- **Data Assets**: What sensitive data exists and how it's classified
|
|
17
18
|
- **Test Cases**: Security tests with results (pass/fail/partial/not_tested)
|
|
18
19
|
- **Findings**: Discovered vulnerabilities with severity and remediation recommendations
|
|
19
|
-
- **Linked Diagrams
|
|
20
|
-
- **Artifacts** (\`artifacts_summary\`): The diagrams the TM detail page itself displays (Mermaid, canvas state, attack chains, asset inventories). Use \`zivis_list_threat_model_artifacts\` and \`zivis_get_threat_model_artifact\` for full content. NOTE: the platform is mid-migration from artifacts → first-class diagrams; today most TM-internal diagrams live as artifacts.
|
|
20
|
+
- **Linked Diagrams**: Architecture, data flow, trust boundary, and other diagrams associated with this threat model
|
|
21
21
|
|
|
22
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
23
|
|
|
24
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
|
|
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).`;
|
|
26
27
|
export const GET_THREAT_MODEL_SCHEMA = {
|
|
27
28
|
threat_model_id: z
|
|
28
29
|
.string()
|
|
@@ -35,34 +36,16 @@ export const GET_THREAT_MODEL_SCHEMA = {
|
|
|
35
36
|
export function createGetThreatModelHandler(apiClient) {
|
|
36
37
|
return async (params) => {
|
|
37
38
|
try {
|
|
38
|
-
|
|
39
|
+
// Fetch threat model and linked diagrams in parallel
|
|
40
|
+
const [threatModelData, diagramsData] = await Promise.all([
|
|
39
41
|
apiClient.get(`/api/threat-models/${params.threat_model_id}?include=all`),
|
|
40
42
|
apiClient
|
|
41
43
|
.get(`/api/diagrams?linkedThreatModelId=${params.threat_model_id}&take=50`)
|
|
42
44
|
.catch(() => ({ diagrams: [], total: 0 })),
|
|
43
|
-
apiClient
|
|
44
|
-
.get(`/api/threat-models/${params.threat_model_id}/artifacts`)
|
|
45
|
-
.catch(() => []),
|
|
46
45
|
]);
|
|
47
46
|
const sanitized = sanitizeResponse(threatModelData);
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
const lifted = {};
|
|
51
|
-
for (const key of [
|
|
52
|
-
"actors",
|
|
53
|
-
"components",
|
|
54
|
-
"dataFlows",
|
|
55
|
-
"attackScenarios",
|
|
56
|
-
"securityControls",
|
|
57
|
-
"dataAssets",
|
|
58
|
-
"testCases",
|
|
59
|
-
"findings",
|
|
60
|
-
]) {
|
|
61
|
-
if (Array.isArray(latestVersion[key])) {
|
|
62
|
-
lifted[key] = latestVersion[key];
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
const linkedDiagrams = Array.isArray(diagramsData.diagrams)
|
|
47
|
+
// Attach linked diagrams summary to the response
|
|
48
|
+
const diagrams = Array.isArray(diagramsData.diagrams)
|
|
66
49
|
? diagramsData.diagrams.map((d) => ({
|
|
67
50
|
diagram_id: d.id,
|
|
68
51
|
name: d.name,
|
|
@@ -74,29 +57,10 @@ export function createGetThreatModelHandler(apiClient) {
|
|
|
74
57
|
updated_at: d.updatedAt,
|
|
75
58
|
}))
|
|
76
59
|
: [];
|
|
77
|
-
const artifactsRaw = Array.isArray(artifactsData) ? artifactsData : [];
|
|
78
|
-
const artifactsSummary = artifactsRaw.map((a) => ({
|
|
79
|
-
artifact_id: a.id,
|
|
80
|
-
title: a.title,
|
|
81
|
-
artifact_type: a.artifactType,
|
|
82
|
-
content_type: a.contentType,
|
|
83
|
-
tags: a.tags || [],
|
|
84
|
-
description: a.description || null,
|
|
85
|
-
is_stale: a.isStale ?? false,
|
|
86
|
-
stale_reason: a.staleReason || null,
|
|
87
|
-
is_edited: a.isEdited ?? false,
|
|
88
|
-
group_id: a.groupId || null,
|
|
89
|
-
scope_id: a.scopeId || null,
|
|
90
|
-
promoted_diagram_id: a.diagramId || null,
|
|
91
|
-
sort_order: a.sortOrder ?? 0,
|
|
92
|
-
}));
|
|
93
60
|
const result = {
|
|
94
61
|
...sanitized,
|
|
95
|
-
|
|
96
|
-
linked_diagrams: linkedDiagrams,
|
|
62
|
+
linked_diagrams: diagrams,
|
|
97
63
|
linked_diagrams_count: diagramsData.total,
|
|
98
|
-
artifacts_summary: artifactsSummary,
|
|
99
|
-
artifacts_count: artifactsSummary.length,
|
|
100
64
|
};
|
|
101
65
|
return {
|
|
102
66
|
content: [
|
|
@@ -116,3 +80,4 @@ export function createGetThreatModelHandler(apiClient) {
|
|
|
116
80
|
}
|
|
117
81
|
};
|
|
118
82
|
}
|
|
83
|
+
//# sourceMappingURL=get-threat-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_list_agents — List agent instances for the org
|
|
3
|
+
*
|
|
4
|
+
* Maps to: GET /api/agent-instances
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import type { ApiClient } from "../../api-client.js";
|
|
8
|
+
export declare const LIST_AGENTS_NAME = "zivis_list_agents";
|
|
9
|
+
export declare const LIST_AGENTS_DESCRIPTION = "List all configured agent instances for your organization.\n\nIMPORTANT \u2014 Understand the ZIVIS entity hierarchy:\n- **Agent instance** = a configured agent (e.g., \"Production Recon Agent\", \"API Pen Test Agent\"). Each has a UUID, an agent type, a target URL, and configuration. This tool lists these.\n- **Scan** = a single execution run of an agent instance. One agent can have many scans. Use zivis_list_scans to see scan runs.\n- **Threat model** = a structured security model (components, data flows, actors, findings). Created/updated by threat-analysis agent scans. Use zivis_list_threat_models to see these.\n\nAgent types:\n- **recon**: Reconnaissance \u2014 discovers attack surface, endpoints, technologies\n- **pen-test**: Penetration testing \u2014 actively tests for vulnerabilities\n- **ai-red-team**: AI/LLM red teaming \u2014 tests AI systems for prompt injection, jailbreaks, etc.\n- **threat-analysis**: Threat modeling \u2014 builds structured threat models (automated LLM threat ID is pipeline-specific)\n- **code-monitor**: Code monitoring \u2014 continuous scanning of repositories\n- **evidence**: Evidence collection \u2014 gathers compliance evidence\n\nWhen users ask about \"the threat model agent\" or \"the recon agent\", use this tool to find the agent instance, NOT zivis_list_scans.";
|
|
10
|
+
export declare const LIST_AGENTS_SCHEMA: {
|
|
11
|
+
agent_type: z.ZodOptional<z.ZodEnum<{
|
|
12
|
+
"pen-test": "pen-test";
|
|
13
|
+
recon: "recon";
|
|
14
|
+
"ai-red-team": "ai-red-team";
|
|
15
|
+
"threat-analysis": "threat-analysis";
|
|
16
|
+
"code-monitor": "code-monitor";
|
|
17
|
+
evidence: "evidence";
|
|
18
|
+
}>>;
|
|
19
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
20
|
+
archived: "archived";
|
|
21
|
+
paused: "paused";
|
|
22
|
+
active: "active";
|
|
23
|
+
}>>;
|
|
24
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
25
|
+
};
|
|
26
|
+
export declare function createListAgentsHandler(apiClient: ApiClient): (params: {
|
|
27
|
+
agent_type?: string;
|
|
28
|
+
status?: string;
|
|
29
|
+
limit?: number;
|
|
30
|
+
}) => Promise<{
|
|
31
|
+
content: {
|
|
32
|
+
type: "text";
|
|
33
|
+
text: string;
|
|
34
|
+
}[];
|
|
35
|
+
isError?: undefined;
|
|
36
|
+
} | {
|
|
37
|
+
content: {
|
|
38
|
+
type: "text";
|
|
39
|
+
text: string;
|
|
40
|
+
}[];
|
|
41
|
+
isError: boolean;
|
|
42
|
+
}>;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_list_agents — List agent instances for the org
|
|
3
|
+
*
|
|
4
|
+
* Maps to: GET /api/agent-instances
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { sanitizeResponse } from "../../sanitize.js";
|
|
8
|
+
export const LIST_AGENTS_NAME = "zivis_list_agents";
|
|
9
|
+
export const LIST_AGENTS_DESCRIPTION = `List all configured agent instances for your organization.
|
|
10
|
+
|
|
11
|
+
IMPORTANT — Understand the ZIVIS entity hierarchy:
|
|
12
|
+
- **Agent instance** = a configured agent (e.g., "Production Recon Agent", "API Pen Test Agent"). Each has a UUID, an agent type, a target URL, and configuration. This tool lists these.
|
|
13
|
+
- **Scan** = a single execution run of an agent instance. One agent can have many scans. Use zivis_list_scans to see scan runs.
|
|
14
|
+
- **Threat model** = a structured security model (components, data flows, actors, findings). Created/updated by threat-analysis agent scans. Use zivis_list_threat_models to see these.
|
|
15
|
+
|
|
16
|
+
Agent types:
|
|
17
|
+
- **recon**: Reconnaissance — discovers attack surface, endpoints, technologies
|
|
18
|
+
- **pen-test**: Penetration testing — actively tests for vulnerabilities
|
|
19
|
+
- **ai-red-team**: AI/LLM red teaming — tests AI systems for prompt injection, jailbreaks, etc.
|
|
20
|
+
- **threat-analysis**: Threat modeling — builds structured threat models (automated LLM threat ID is pipeline-specific)
|
|
21
|
+
- **code-monitor**: Code monitoring — continuous scanning of repositories
|
|
22
|
+
- **evidence**: Evidence collection — gathers compliance evidence
|
|
23
|
+
|
|
24
|
+
When users ask about "the threat model agent" or "the recon agent", use this tool to find the agent instance, NOT zivis_list_scans.`;
|
|
25
|
+
export const LIST_AGENTS_SCHEMA = {
|
|
26
|
+
agent_type: z
|
|
27
|
+
.enum(["pen-test", "ai-red-team", "recon", "threat-analysis", "code-monitor", "evidence"])
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("Filter by agent type"),
|
|
30
|
+
status: z
|
|
31
|
+
.enum(["active", "paused", "archived"])
|
|
32
|
+
.optional()
|
|
33
|
+
.describe("Filter by agent status"),
|
|
34
|
+
limit: z
|
|
35
|
+
.number()
|
|
36
|
+
.min(1)
|
|
37
|
+
.max(50)
|
|
38
|
+
.default(20)
|
|
39
|
+
.describe("Maximum number of results (1-50, default 20)"),
|
|
40
|
+
};
|
|
41
|
+
export function createListAgentsHandler(apiClient) {
|
|
42
|
+
return async (params) => {
|
|
43
|
+
try {
|
|
44
|
+
const query = new URLSearchParams();
|
|
45
|
+
if (params.agent_type)
|
|
46
|
+
query.set("agentType", params.agent_type);
|
|
47
|
+
if (params.status)
|
|
48
|
+
query.set("status", params.status);
|
|
49
|
+
if (params.limit)
|
|
50
|
+
query.set("limit", String(params.limit));
|
|
51
|
+
query.set("includeOpenStats", "true");
|
|
52
|
+
const queryStr = query.toString();
|
|
53
|
+
const path = `/api/agent-instances${queryStr ? `?${queryStr}` : ""}`;
|
|
54
|
+
const data = await apiClient.get(path);
|
|
55
|
+
const sanitized = sanitizeResponse(data);
|
|
56
|
+
const instances = Array.isArray(sanitized.instances) ? sanitized.instances : [];
|
|
57
|
+
const summary = instances.map((agent) => ({
|
|
58
|
+
agent_instance_id: agent.id,
|
|
59
|
+
name: agent.name,
|
|
60
|
+
agent_type: agent.agentType,
|
|
61
|
+
status: agent.status,
|
|
62
|
+
target_url: agent.targetUrl,
|
|
63
|
+
description: agent.description || null,
|
|
64
|
+
is_enabled: agent.isEnabled,
|
|
65
|
+
last_scan_at: agent.lastScanAt || null,
|
|
66
|
+
created_at: agent.createdAt,
|
|
67
|
+
updated_at: agent.updatedAt,
|
|
68
|
+
open_critical_count: agent.openCriticalCount ?? null,
|
|
69
|
+
open_findings_total: agent.openFindingsTotal ?? null,
|
|
70
|
+
campaigns: Array.isArray(agent.campaignLinks)
|
|
71
|
+
? agent.campaignLinks.map((link) => {
|
|
72
|
+
const campaign = link.campaign;
|
|
73
|
+
return campaign ? { id: campaign.id, name: campaign.name } : null;
|
|
74
|
+
}).filter(Boolean)
|
|
75
|
+
: [],
|
|
76
|
+
}));
|
|
77
|
+
return {
|
|
78
|
+
content: [
|
|
79
|
+
{
|
|
80
|
+
type: "text",
|
|
81
|
+
text: JSON.stringify({ total: data.total, agents: summary }, null, 2),
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
const message = err instanceof Error ? err.message : "Failed to list agents";
|
|
88
|
+
return {
|
|
89
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
90
|
+
isError: true,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=list-agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-agents.js","sourceRoot":"","sources":["../../../src/tools/enterprise/list-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_list_report_issues — List remediation checklist issues for a campaign report
|
|
3
|
+
*
|
|
4
|
+
* Maps to: GET /api/reports/:reportId/issues
|
|
5
|
+
* Also uses: POST /api/reports/for-campaign/:campaignId
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import type { ApiClient } from "../../api-client.js";
|
|
9
|
+
export declare const LIST_REPORT_ISSUES_NAME = "zivis_list_report_issues";
|
|
10
|
+
export declare const LIST_REPORT_ISSUES_DESCRIPTION = "List all issues in a campaign's remediation checklist with status summary.\n\nReturns issues grouped by severity with stats (open/in_progress/done counts). Use campaign_id to auto-resolve the report, or provide report_id directly.\n\nFilter by status to see only open, in-progress, or completed items.";
|
|
11
|
+
export declare const LIST_REPORT_ISSUES_SCHEMA: {
|
|
12
|
+
campaign_id: z.ZodOptional<z.ZodString>;
|
|
13
|
+
report_id: z.ZodOptional<z.ZodString>;
|
|
14
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
15
|
+
open: "open";
|
|
16
|
+
in_progress: "in_progress";
|
|
17
|
+
done: "done";
|
|
18
|
+
}>>;
|
|
19
|
+
};
|
|
20
|
+
export declare function createListReportIssuesHandler(apiClient: ApiClient): (params: {
|
|
21
|
+
campaign_id?: string;
|
|
22
|
+
report_id?: string;
|
|
23
|
+
status?: 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
|
+
}>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_list_report_issues — List remediation checklist issues for a campaign report
|
|
3
|
+
*
|
|
4
|
+
* Maps to: GET /api/reports/:reportId/issues
|
|
5
|
+
* Also uses: POST /api/reports/for-campaign/:campaignId
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { sanitizeResponse } from "../../sanitize.js";
|
|
9
|
+
export const LIST_REPORT_ISSUES_NAME = "zivis_list_report_issues";
|
|
10
|
+
export const LIST_REPORT_ISSUES_DESCRIPTION = `List all issues in a campaign's remediation checklist with status summary.
|
|
11
|
+
|
|
12
|
+
Returns issues grouped by severity with stats (open/in_progress/done counts). Use campaign_id to auto-resolve the report, or provide report_id directly.
|
|
13
|
+
|
|
14
|
+
Filter by status to see only open, in-progress, or completed items.`;
|
|
15
|
+
export const LIST_REPORT_ISSUES_SCHEMA = {
|
|
16
|
+
campaign_id: z.string().optional().describe("Campaign UUID — auto-resolves to report"),
|
|
17
|
+
report_id: z.string().optional().describe("Report UUID (alternative to campaign_id)"),
|
|
18
|
+
status: z.enum(["open", "in_progress", "done"]).optional().describe("Filter by status"),
|
|
19
|
+
};
|
|
20
|
+
export function createListReportIssuesHandler(apiClient) {
|
|
21
|
+
return async (params) => {
|
|
22
|
+
try {
|
|
23
|
+
let reportId = params.report_id;
|
|
24
|
+
// Resolve campaign → report if needed
|
|
25
|
+
if (!reportId && params.campaign_id) {
|
|
26
|
+
const reportData = await apiClient.post(`/api/reports/for-campaign/${params.campaign_id}`, {});
|
|
27
|
+
reportId = reportData.reportId;
|
|
28
|
+
}
|
|
29
|
+
if (!reportId) {
|
|
30
|
+
return {
|
|
31
|
+
content: [{ type: "text", text: "Error: Provide either campaign_id or report_id" }],
|
|
32
|
+
isError: true,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const queryParams = params.status ? `?status=${params.status}` : "";
|
|
36
|
+
const data = await apiClient.get(`/api/reports/${reportId}/issues${queryParams}`);
|
|
37
|
+
return {
|
|
38
|
+
content: [{ type: "text", text: JSON.stringify(sanitizeResponse(data), null, 2) }],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
const message = err instanceof Error ? err.message : "Failed to list report issues";
|
|
43
|
+
return {
|
|
44
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
45
|
+
isError: true,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=list-report-issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-report-issues.js","sourceRoot":"","sources":["../../../src/tools/enterprise/list-report-issues.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,uBAAuB,GAAG,0BAA0B,CAAC;AAElE,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;oEAIsB,CAAC;AAErE,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACtF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACrF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;CACxF,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAAC,SAAoB;IAChE,OAAO,KAAK,EAAE,MAIb,EAAE,EAAE;QACH,IAAI,CAAC;YACH,IAAI,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;YAEhC,sCAAsC;YACtC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,CACrC,6BAA6B,MAAM,CAAC,WAAW,EAAE,EACjD,EAAE,CACH,CAAC;gBACF,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;YACjC,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gDAAgD,EAAE,CAAC;oBAC5F,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,CAC9B,gBAAgB,QAAQ,UAAU,WAAW,EAAE,CAChD,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5F,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC;YACpF,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,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_list_threat_models — List threat models for the org
|
|
3
|
+
*
|
|
4
|
+
* Maps to: GET /api/threat-models
|
|
5
|
+
*/
|
|
1
6
|
import { z } from "zod";
|
|
2
7
|
import type { ApiClient } from "../../api-client.js";
|
|
3
8
|
export declare const LIST_THREAT_MODELS_NAME = "zivis_list_threat_models";
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_list_threat_models — List threat models for the org
|
|
3
|
+
*
|
|
4
|
+
* Maps to: GET /api/threat-models
|
|
5
|
+
*/
|
|
1
6
|
import { z } from "zod";
|
|
2
7
|
import { sanitizeResponse } from "../../sanitize.js";
|
|
3
8
|
export const LIST_THREAT_MODELS_NAME = "zivis_list_threat_models";
|
|
@@ -35,11 +40,13 @@ export function createListThreatModelsHandler(apiClient) {
|
|
|
35
40
|
const path = `/api/threat-models${queryStr ? `?${queryStr}` : ""}`;
|
|
36
41
|
const data = await apiClient.get(path);
|
|
37
42
|
const sanitized = sanitizeResponse(data);
|
|
43
|
+
// Fetch diagram counts for each threat model in parallel
|
|
38
44
|
const threatModels = Array.isArray(sanitized) ? sanitized : [];
|
|
39
45
|
const diagramCounts = await Promise.all(threatModels.map((tm) => apiClient
|
|
40
46
|
.get(`/api/diagrams?linkedThreatModelId=${tm.id}&take=1`)
|
|
41
47
|
.then((res) => res.total ?? 0)
|
|
42
48
|
.catch(() => 0)));
|
|
49
|
+
// Format with clear ID labeling to prevent confusion with scan/agent IDs
|
|
43
50
|
const summary = Array.isArray(sanitized)
|
|
44
51
|
? sanitized.map((tm, i) => ({
|
|
45
52
|
threat_model_id: tm.id,
|
|
@@ -72,3 +79,4 @@ export function createListThreatModelsHandler(apiClient) {
|
|
|
72
79
|
}
|
|
73
80
|
};
|
|
74
81
|
}
|
|
82
|
+
//# sourceMappingURL=list-threat-models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-threat-models.js","sourceRoot":"","sources":["../../../src/tools/enterprise/list-threat-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_manage_actor — Create, update, or delete threat actors in a threat model
|
|
3
|
+
*
|
|
4
|
+
* Maps to: POST/PATCH/DELETE /api/threat-models/:id/actors
|
|
5
|
+
*/
|
|
1
6
|
import { z } from "zod";
|
|
2
7
|
import type { ApiClient } from "../../api-client.js";
|
|
3
8
|
export declare const MANAGE_ACTOR_NAME = "zivis_manage_actor";
|
|
4
|
-
export declare const MANAGE_ACTOR_DESCRIPTION = "Create, update, or delete a threat actor in a threat model.\n\
|
|
9
|
+
export declare const MANAGE_ACTOR_DESCRIPTION = "Create, update, or delete a threat actor in a threat model.\n\nThreat actors represent entities that interact with or threaten the system (e.g., external users, attackers, services). Each actor has a trust level, type, and capabilities.\n\nActions:\n- create: Add a new threat actor (requires name, actor_type, trust_level)\n- update: Modify an existing actor (requires actor_id)\n- delete: Remove an actor (requires actor_id)";
|
|
5
10
|
export declare const MANAGE_ACTOR_SCHEMA: {
|
|
6
11
|
threat_model_id: z.ZodString;
|
|
7
12
|
action: z.ZodEnum<{
|
|
@@ -1,22 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_manage_actor — Create, update, or delete threat actors in a threat model
|
|
3
|
+
*
|
|
4
|
+
* Maps to: POST/PATCH/DELETE /api/threat-models/:id/actors
|
|
5
|
+
*/
|
|
1
6
|
import { z } from "zod";
|
|
2
7
|
import { sanitizeResponse } from "../../sanitize.js";
|
|
3
8
|
export const MANAGE_ACTOR_NAME = "zivis_manage_actor";
|
|
4
9
|
export const MANAGE_ACTOR_DESCRIPTION = `Create, update, or delete a threat actor in a threat model.
|
|
5
10
|
|
|
6
|
-
|
|
7
|
-
- "users / end users / customers / our users can ..."
|
|
8
|
-
- "admins / support team / internal employees ..."
|
|
9
|
-
- "attacker / adversary / bad actor / malicious user ..."
|
|
10
|
-
- "insider / rogue employee ..."
|
|
11
|
-
- "vendor / partner / integration partner ..."
|
|
12
|
-
- "bot / scraper / automated agent ..."
|
|
13
|
-
- "<external service> calls our API" (the external service is an actor too)
|
|
14
|
-
|
|
15
|
-
If you got here from zivis_threat_guide, the args_preview already maps actor_type and trust_level — start from those and confirm only what's unclear.
|
|
16
|
-
|
|
17
|
-
Threat actors represent entities that interact with or threaten the system. Each actor has a trust level, type, and capabilities.
|
|
18
|
-
|
|
19
|
-
After create: ask which components this actor interacts with so a data flow can be modeled.
|
|
11
|
+
Threat actors represent entities that interact with or threaten the system (e.g., external users, attackers, services). Each actor has a trust level, type, and capabilities.
|
|
20
12
|
|
|
21
13
|
Actions:
|
|
22
14
|
- create: Add a new threat actor (requires name, actor_type, trust_level)
|
|
@@ -104,3 +96,4 @@ export function createManageActorHandler(apiClient) {
|
|
|
104
96
|
}
|
|
105
97
|
};
|
|
106
98
|
}
|
|
99
|
+
//# sourceMappingURL=manage-actor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-actor.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-actor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_manage_attack_scenario — Create, update, or delete attack scenarios
|
|
3
|
+
*
|
|
4
|
+
* Maps to: POST/PATCH/DELETE /api/threat-models/:id/attack-scenarios
|
|
5
|
+
*/
|
|
1
6
|
import { z } from "zod";
|
|
2
7
|
import type { ApiClient } from "../../api-client.js";
|
|
3
8
|
export declare const MANAGE_ATTACK_SCENARIO_NAME = "zivis_manage_attack_scenario";
|
|
4
|
-
export declare const MANAGE_ATTACK_SCENARIO_DESCRIPTION = "Create, update, or delete an attack scenario in a threat model.\n\
|
|
9
|
+
export declare const MANAGE_ATTACK_SCENARIO_DESCRIPTION = "Create, update, or delete an attack scenario in a threat model.\n\nAttack scenarios describe specific attack paths \u2014 how a threat actor could exploit vulnerabilities to achieve their objective. They link actors, components, and attack vectors into a cohesive narrative.\n\nActions:\n- create: Add a new scenario (requires title, narrative, entry_point_id, target_id)\n- update: Update scenario status/notes (requires scenario_id)\n- delete: Remove a scenario (requires scenario_id)";
|
|
5
10
|
export declare const MANAGE_ATTACK_SCENARIO_SCHEMA: {
|
|
6
11
|
threat_model_id: z.ZodString;
|
|
7
12
|
action: z.ZodEnum<{
|
|
@@ -1,21 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_manage_attack_scenario — Create, update, or delete attack scenarios
|
|
3
|
+
*
|
|
4
|
+
* Maps to: POST/PATCH/DELETE /api/threat-models/:id/attack-scenarios
|
|
5
|
+
*/
|
|
1
6
|
import { z } from "zod";
|
|
2
7
|
import { sanitizeResponse } from "../../sanitize.js";
|
|
3
8
|
export const MANAGE_ATTACK_SCENARIO_NAME = "zivis_manage_attack_scenario";
|
|
4
9
|
export const MANAGE_ATTACK_SCENARIO_DESCRIPTION = `Create, update, or delete an attack scenario in a threat model.
|
|
5
10
|
|
|
6
|
-
|
|
7
|
-
- "what if <bad thing happens>"
|
|
8
|
-
- "could someone <attack action>"
|
|
9
|
-
- "I'm worried about <X> being abused / leaked / hacked"
|
|
10
|
-
- "how would an attacker <do X>"
|
|
11
|
-
- "is <Y> safe from <Z>"
|
|
12
|
-
- mentions of: prompt injection, jailbreak, data exfiltration, privilege escalation, account takeover, supply chain, abuse
|
|
13
|
-
|
|
14
|
-
Before creating a scenario, the threat model needs at least one entry_point component (where the attack starts) and a target component (where the attacker wants to go). If either is missing, model components first.
|
|
15
|
-
|
|
16
|
-
The narrative should be a 2–5 sentence story: who attacks, where they enter, what they exploit, what they achieve. Don't write a textbook chapter.
|
|
17
|
-
|
|
18
|
-
After create: ask which test cases should validate this scenario. zivis_manage_test_case curates tests against the scenario; the platform later uses those to drive automated red-team runs.
|
|
11
|
+
Attack scenarios describe specific attack paths — how a threat actor could exploit vulnerabilities to achieve their objective. They link actors, components, and attack vectors into a cohesive narrative.
|
|
19
12
|
|
|
20
13
|
Actions:
|
|
21
14
|
- create: Add a new scenario (requires title, narrative, entry_point_id, target_id)
|
|
@@ -93,3 +86,4 @@ export function createManageAttackScenarioHandler(apiClient) {
|
|
|
93
86
|
}
|
|
94
87
|
};
|
|
95
88
|
}
|
|
89
|
+
//# sourceMappingURL=manage-attack-scenario.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-attack-scenario.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-attack-scenario.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_manage_component — Create, update, or delete components in a threat model
|
|
3
|
+
*
|
|
4
|
+
* Maps to: POST/PATCH/DELETE /api/threat-models/:id/components
|
|
5
|
+
*/
|
|
1
6
|
import { z } from "zod";
|
|
2
7
|
import type { ApiClient } from "../../api-client.js";
|
|
3
8
|
export declare const MANAGE_COMPONENT_NAME = "zivis_manage_component";
|
|
4
|
-
export declare const MANAGE_COMPONENT_DESCRIPTION = "Create, update, or delete an architectural component in a threat model.\n\
|
|
9
|
+
export declare const MANAGE_COMPONENT_DESCRIPTION = "Create, update, or delete an architectural component in a threat model.\n\nComponents represent the building blocks of the system being modeled (e.g., API Gateway, Database, Frontend App, Authentication Service).\n\nActions:\n- create: Add a new component (requires name, component_type)\n- update: Modify an existing component (requires component_id)\n- delete: Remove a component (requires component_id)";
|
|
5
10
|
export declare const MANAGE_COMPONENT_SCHEMA: {
|
|
6
11
|
threat_model_id: z.ZodString;
|
|
7
12
|
action: z.ZodEnum<{
|
|
@@ -1,28 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_manage_component — Create, update, or delete components in a threat model
|
|
3
|
+
*
|
|
4
|
+
* Maps to: POST/PATCH/DELETE /api/threat-models/:id/components
|
|
5
|
+
*/
|
|
1
6
|
import { z } from "zod";
|
|
2
7
|
import { sanitizeResponse } from "../../sanitize.js";
|
|
3
8
|
export const MANAGE_COMPONENT_NAME = "zivis_manage_component";
|
|
4
9
|
export const MANAGE_COMPONENT_DESCRIPTION = `Create, update, or delete an architectural component in a threat model.
|
|
5
10
|
|
|
6
|
-
|
|
7
|
-
- "we have a <X> service / our backend / the API gateway / our frontend"
|
|
8
|
-
- "we just added <Stripe / OpenAI / Auth0 / Twilio / Datadog / S3>"
|
|
9
|
-
- "we use <library / framework> for X"
|
|
10
|
-
- "<service> talks to / calls / sends data to <other service>" — both endpoints are components
|
|
11
|
-
- "we deploy on <Vercel / Lambda / k8s>" (compute platform is a component)
|
|
12
|
-
- mentions of any external SaaS, identity provider, message queue, CDN, secrets manager
|
|
13
|
-
|
|
14
|
-
Pick component_type:
|
|
15
|
-
- entry_point — anything users hit first (login, public API, webhook receiver)
|
|
16
|
-
- orchestrator — controllers, routers, API gateways, workflow engines
|
|
17
|
-
- data_store — DBs, caches, blob storage
|
|
18
|
-
- external_service — any third-party SaaS the app integrates with (Stripe, OpenAI, etc.)
|
|
19
|
-
- identity_provider — auth systems (Auth0, Okta, WorkOS)
|
|
20
|
-
- worker — background processors, queue consumers
|
|
21
|
-
- secrets_manager, message_queue, cdn, proxy — when those specific terms apply
|
|
22
|
-
|
|
23
|
-
If you got here from zivis_threat_guide, args_preview already maps trust + category for known vendors. Use those.
|
|
24
|
-
|
|
25
|
-
After create: ask what data flows in/out of this component so data flows can be modeled.
|
|
11
|
+
Components represent the building blocks of the system being modeled (e.g., API Gateway, Database, Frontend App, Authentication Service).
|
|
26
12
|
|
|
27
13
|
Actions:
|
|
28
14
|
- create: Add a new component (requires name, component_type)
|
|
@@ -101,3 +87,4 @@ export function createManageComponentHandler(apiClient) {
|
|
|
101
87
|
}
|
|
102
88
|
};
|
|
103
89
|
}
|
|
90
|
+
//# sourceMappingURL=manage-component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-component.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-component.ts"],"names":[],"mappings":"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"}
|