@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,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_create_diagram — Create a new diagram with nodes, connections, and boundaries
|
|
3
|
+
*
|
|
4
|
+
* Maps to: POST /api/diagrams + optional POST /api/diagrams/:id/link
|
|
5
|
+
*/
|
|
1
6
|
import { z } from "zod";
|
|
2
7
|
import { sanitizeResponse } from "../sanitize.js";
|
|
3
8
|
export const CREATE_DIAGRAM_NAME = "zivis_create_diagram";
|
|
@@ -76,6 +81,7 @@ export const CREATE_DIAGRAM_SCHEMA = {
|
|
|
76
81
|
export function createCreateDiagramHandler(apiClient) {
|
|
77
82
|
return async (params) => {
|
|
78
83
|
try {
|
|
84
|
+
// Transform snake_case to camelCase for API
|
|
79
85
|
const apiNodes = params.nodes?.map((n) => ({
|
|
80
86
|
tempId: n.temp_id,
|
|
81
87
|
name: n.name,
|
|
@@ -124,6 +130,7 @@ export function createCreateDiagramHandler(apiClient) {
|
|
|
124
130
|
});
|
|
125
131
|
const sanitized = sanitizeResponse(data);
|
|
126
132
|
const diagramId = sanitized.id;
|
|
133
|
+
// Link to threat model if requested
|
|
127
134
|
let linkedThreatModelId = null;
|
|
128
135
|
if (params.linked_threat_model_id && diagramId) {
|
|
129
136
|
try {
|
|
@@ -133,8 +140,10 @@ export function createCreateDiagramHandler(apiClient) {
|
|
|
133
140
|
linkedThreatModelId = params.linked_threat_model_id;
|
|
134
141
|
}
|
|
135
142
|
catch {
|
|
143
|
+
// Non-fatal — diagram was created, link just failed
|
|
136
144
|
}
|
|
137
145
|
}
|
|
146
|
+
// Count created entities
|
|
138
147
|
const nodeCount = Array.isArray(sanitized.nodes) ? sanitized.nodes.length : 0;
|
|
139
148
|
const connCount = Array.isArray(sanitized.connections) ? sanitized.connections.length : 0;
|
|
140
149
|
const boundaryCount = Array.isArray(sanitized.boundaries) ? sanitized.boundaries.length : 0;
|
|
@@ -164,3 +173,4 @@ export function createCreateDiagramHandler(apiClient) {
|
|
|
164
173
|
}
|
|
165
174
|
};
|
|
166
175
|
}
|
|
176
|
+
//# sourceMappingURL=create-diagram.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-diagram.js","sourceRoot":"","sources":["../../src/tools/create-diagram.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_create_document — Create a new document under a threat model.
|
|
3
|
+
*
|
|
4
|
+
* Maps to: POST /api/documents
|
|
5
|
+
*/
|
|
1
6
|
import { z } from "zod";
|
|
2
7
|
import type { ApiClient } from "../api-client.js";
|
|
3
8
|
export declare const CREATE_DOCUMENT_NAME = "zivis_create_document";
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_create_document — Create a new document under a threat model.
|
|
3
|
+
*
|
|
4
|
+
* Maps to: POST /api/documents
|
|
5
|
+
*/
|
|
1
6
|
import { z } from "zod";
|
|
2
7
|
import { sanitizeResponse } from "../sanitize.js";
|
|
3
8
|
export const CREATE_DOCUMENT_NAME = "zivis_create_document";
|
|
@@ -45,3 +50,4 @@ export function createCreateDocumentHandler(apiClient) {
|
|
|
45
50
|
}
|
|
46
51
|
};
|
|
47
52
|
}
|
|
53
|
+
//# sourceMappingURL=create-document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-document.js","sourceRoot":"","sources":["../../src/tools/create-document.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D,MAAM,CAAC,MAAM,2BAA2B,GAAG;;gNAEqK,CAAC;AAEjN,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACvE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;IACpF,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2GAA2G,CAAC;IACxH,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;CAC/D,CAAC;AASF,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;QAC/D,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,OAAO;QACL,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;KAC5F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,SAAoB;IAC9D,OAAO,KAAK,EAAE,MAA4B,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;YACzD,IAAI,CAAC,eAAe;gBAAE,OAAO,WAAW,CAAC,6BAA6B,CAAC,CAAC;YACxE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBAAE,OAAO,WAAW,CAAC,mBAAmB,CAAC,CAAC;YAErE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAClD,aAAa,EAAE,eAAe;gBAC9B,KAAK;gBACL,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,IAAI,EAAE,IAAI,IAAI,EAAE;aACjB,CAAC,CAAC;YACH,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,WAAW,CAAC,GAAG,EAAE,OAAO,IAAI,2BAA2B,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_discover_local_infra — Discover AI infrastructure in a local project
|
|
3
|
+
*
|
|
4
|
+
* Reads Docker, compose, and dependency files to understand the local AI
|
|
5
|
+
* infrastructure. Returns structured recommendations for red team testing
|
|
6
|
+
* via zivis_local_scan.
|
|
7
|
+
*
|
|
8
|
+
* This is a local-only tool — no API calls or authentication required.
|
|
9
|
+
* Env values are always redacted for safety.
|
|
10
|
+
*/
|
|
1
11
|
import { z } from "zod";
|
|
2
12
|
export declare const DISCOVER_LOCAL_INFRA_NAME = "zivis_discover_local_infra";
|
|
3
13
|
export declare const DISCOVER_LOCAL_INFRA_DESCRIPTION = "Discover AI infrastructure in a local project directory by reading Docker, compose, and dependency files.\n\nAnalyzes the project to understand what services are defined, which are running, and what AI/LLM frameworks are in use. Returns structured recommendations for red team testing via zivis_local_scan.\n\nWhat it reads:\n- docker-compose.yml / docker-compose.yaml / compose.yml / compose.yaml\n- Dockerfile(s) in the project root and subdirectories\n- .env files (structure only \u2014 values are redacted for safety)\n- package.json, requirements.txt, pyproject.toml, go.mod (to detect AI frameworks)\n\nWhat it checks:\n- Docker daemon status\n- Currently running containers (docker compose ps)\n- Port mappings and exposed services\n\nWhat it returns:\n- List of services with ports and images\n- Running vs stopped status per service\n- Detected AI/LLM patterns (OpenAI, Anthropic, LangChain, etc.)\n- Suggested target_url, chat_endpoint, target_type for zivis_local_scan\n- Whether the zivis-local-runner Docker image is available\n\nThis tool makes NO network requests and requires NO authentication. It only reads local files and queries the Docker daemon.";
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_discover_local_infra — Discover AI infrastructure in a local project
|
|
3
|
+
*
|
|
4
|
+
* Reads Docker, compose, and dependency files to understand the local AI
|
|
5
|
+
* infrastructure. Returns structured recommendations for red team testing
|
|
6
|
+
* via zivis_local_scan.
|
|
7
|
+
*
|
|
8
|
+
* This is a local-only tool — no API calls or authentication required.
|
|
9
|
+
* Env values are always redacted for safety.
|
|
10
|
+
*/
|
|
1
11
|
import { z } from "zod";
|
|
2
12
|
import { readFile, readdir, stat } from "fs/promises";
|
|
3
13
|
import { join } from "path";
|
|
4
14
|
import { exec } from "child_process";
|
|
5
15
|
import { promisify } from "util";
|
|
6
16
|
const execAsync = promisify(exec);
|
|
17
|
+
// ── Constants ──
|
|
7
18
|
export const DISCOVER_LOCAL_INFRA_NAME = "zivis_discover_local_infra";
|
|
8
19
|
export const DISCOVER_LOCAL_INFRA_DESCRIPTION = `Discover AI infrastructure in a local project directory by reading Docker, compose, and dependency files.
|
|
9
20
|
|
|
@@ -34,6 +45,7 @@ export const DISCOVER_LOCAL_INFRA_SCHEMA = {
|
|
|
34
45
|
.optional()
|
|
35
46
|
.describe("Path to the project directory to analyze. Defaults to the current working directory."),
|
|
36
47
|
};
|
|
48
|
+
// ── AI Framework Detection Maps ──
|
|
37
49
|
const NPM_AI_PACKAGES = [
|
|
38
50
|
{ package: "openai", name: "OpenAI SDK" },
|
|
39
51
|
{ package: "@anthropic-ai/sdk", name: "Anthropic SDK" },
|
|
@@ -116,7 +128,8 @@ const INFRA_IMAGES = [
|
|
|
116
128
|
"jaeger",
|
|
117
129
|
"memcached",
|
|
118
130
|
];
|
|
119
|
-
const MAX_FILE_SIZE = 100 * 1024;
|
|
131
|
+
const MAX_FILE_SIZE = 100 * 1024; // 100KB cap
|
|
132
|
+
// ── Handler ──
|
|
120
133
|
export function createDiscoverLocalInfraHandler() {
|
|
121
134
|
return async (params) => {
|
|
122
135
|
const projectDir = params.project_dir || process.cwd();
|
|
@@ -129,6 +142,7 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
129
142
|
suggestion: null,
|
|
130
143
|
localScanCommand: null,
|
|
131
144
|
};
|
|
145
|
+
// Step 1: Check Docker daemon
|
|
132
146
|
try {
|
|
133
147
|
const { stdout } = await execAsync("docker version --format '{{.Server.Version}}'", {
|
|
134
148
|
timeout: 5000,
|
|
@@ -138,6 +152,7 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
138
152
|
catch {
|
|
139
153
|
result.docker = { running: false };
|
|
140
154
|
}
|
|
155
|
+
// Step 2: Find and parse compose files (check root and common subdirs)
|
|
141
156
|
const composeFileNames = [
|
|
142
157
|
"docker-compose.yml",
|
|
143
158
|
"docker-compose.yaml",
|
|
@@ -159,8 +174,10 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
159
174
|
}
|
|
160
175
|
}
|
|
161
176
|
}
|
|
177
|
+
// Step 3: Check running containers
|
|
162
178
|
if (result.docker.running && result.compose.found) {
|
|
163
179
|
try {
|
|
180
|
+
// Use the directory containing the compose file
|
|
164
181
|
const composeDir = result.compose.file?.includes("/")
|
|
165
182
|
? join(projectDir, result.compose.file.split("/").slice(0, -1).join("/"))
|
|
166
183
|
: projectDir;
|
|
@@ -175,9 +192,12 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
175
192
|
}
|
|
176
193
|
}
|
|
177
194
|
catch {
|
|
195
|
+
// docker compose ps failed, leave statuses as unknown
|
|
178
196
|
}
|
|
179
197
|
}
|
|
198
|
+
// Step 4: Read dependency files and detect AI frameworks
|
|
180
199
|
const detected = [];
|
|
200
|
+
// package.json
|
|
181
201
|
const pkgJson = await safeReadFile(join(projectDir, "package.json"));
|
|
182
202
|
if (pkgJson) {
|
|
183
203
|
try {
|
|
@@ -198,14 +218,17 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
198
218
|
}
|
|
199
219
|
}
|
|
200
220
|
catch {
|
|
221
|
+
// Invalid JSON, skip
|
|
201
222
|
}
|
|
202
223
|
}
|
|
224
|
+
// Search subdirectories (up to 2 levels deep) for dependency files
|
|
203
225
|
const subdirs = await safeReaddir(projectDir);
|
|
204
226
|
const searchDirs = [""];
|
|
205
227
|
for (const dir of subdirs) {
|
|
206
228
|
if (dir.startsWith(".") || dir === "node_modules" || dir === "vendor")
|
|
207
229
|
continue;
|
|
208
230
|
searchDirs.push(dir);
|
|
231
|
+
// Also check one more level (e.g., demo-app/api/, apps/api/)
|
|
209
232
|
const subSubDirs = await safeReaddir(join(projectDir, dir));
|
|
210
233
|
for (const sub of subSubDirs) {
|
|
211
234
|
if (sub.startsWith(".") || sub === "node_modules" || sub === "vendor")
|
|
@@ -216,6 +239,7 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
216
239
|
for (const dir of searchDirs) {
|
|
217
240
|
const base = dir ? join(projectDir, dir) : projectDir;
|
|
218
241
|
const prefix = dir ? `${dir}/` : "";
|
|
242
|
+
// package.json
|
|
219
243
|
const subPkgJson = await safeReadFile(join(base, "package.json"));
|
|
220
244
|
if (subPkgJson) {
|
|
221
245
|
try {
|
|
@@ -233,8 +257,10 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
233
257
|
}
|
|
234
258
|
}
|
|
235
259
|
catch {
|
|
260
|
+
// Skip
|
|
236
261
|
}
|
|
237
262
|
}
|
|
263
|
+
// requirements.txt
|
|
238
264
|
const reqTxt = await safeReadFile(join(base, "requirements.txt"));
|
|
239
265
|
if (reqTxt) {
|
|
240
266
|
const lines = reqTxt.toLowerCase().split("\n");
|
|
@@ -252,6 +278,7 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
252
278
|
}
|
|
253
279
|
}
|
|
254
280
|
}
|
|
281
|
+
// pyproject.toml
|
|
255
282
|
const pyproject = await safeReadFile(join(base, "pyproject.toml"));
|
|
256
283
|
if (pyproject) {
|
|
257
284
|
for (const ai of PIP_AI_PACKAGES) {
|
|
@@ -268,6 +295,7 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
268
295
|
}
|
|
269
296
|
}
|
|
270
297
|
}
|
|
298
|
+
// go.mod
|
|
271
299
|
const goMod = await safeReadFile(join(base, "go.mod"));
|
|
272
300
|
if (goMod) {
|
|
273
301
|
for (const ai of GO_AI_PACKAGES) {
|
|
@@ -284,8 +312,10 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
284
312
|
}
|
|
285
313
|
}
|
|
286
314
|
result.aiFrameworks.detected = detected;
|
|
315
|
+
// Step 5: Read .env files, redact values, flag AI keys
|
|
287
316
|
const envFileNames = [".env", ".env.local", ".env.development"];
|
|
288
317
|
const envHints = [];
|
|
318
|
+
// Check root and subdirs for .env files
|
|
289
319
|
for (const dir of ["", "infra", "docker"]) {
|
|
290
320
|
for (const envFile of envFileNames) {
|
|
291
321
|
const filePath = dir ? join(projectDir, dir, envFile) : join(projectDir, envFile);
|
|
@@ -305,6 +335,7 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
305
335
|
}
|
|
306
336
|
}
|
|
307
337
|
result.aiFrameworks.envHints = [...new Set(envHints)];
|
|
338
|
+
// Step 6: Scan for Dockerfiles (reuse searchDirs from dependency scan)
|
|
308
339
|
const dockerfiles = [];
|
|
309
340
|
for (const dir of searchDirs) {
|
|
310
341
|
const base = dir ? join(projectDir, dir) : projectDir;
|
|
@@ -321,6 +352,7 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
321
352
|
}
|
|
322
353
|
}
|
|
323
354
|
result.dockerfiles = dockerfiles;
|
|
355
|
+
// Step 7: Check if local runner image exists
|
|
324
356
|
if (result.docker.running) {
|
|
325
357
|
try {
|
|
326
358
|
const { stdout } = await execAsync("docker images ghcr.io/zivisai/zivis-local-runner --format '{{.Tag}}'", { timeout: 5000 });
|
|
@@ -342,6 +374,7 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
342
374
|
};
|
|
343
375
|
}
|
|
344
376
|
}
|
|
377
|
+
// Step 8: Generate suggestion
|
|
345
378
|
result.suggestion = generateSuggestion(result.compose.services, result.aiFrameworks.detected, result.aiFrameworks.envHints, result.dockerfiles);
|
|
346
379
|
if (result.suggestion) {
|
|
347
380
|
const parts = [`target_url="${result.suggestion.target_url}"`];
|
|
@@ -368,6 +401,7 @@ export function createDiscoverLocalInfraHandler() {
|
|
|
368
401
|
};
|
|
369
402
|
};
|
|
370
403
|
}
|
|
404
|
+
// ── Helpers ──
|
|
371
405
|
async function safeReadFile(filePath) {
|
|
372
406
|
try {
|
|
373
407
|
const stats = await stat(filePath);
|
|
@@ -389,12 +423,16 @@ async function safeReaddir(dirPath) {
|
|
|
389
423
|
return [];
|
|
390
424
|
}
|
|
391
425
|
}
|
|
426
|
+
/**
|
|
427
|
+
* Parse a docker-compose file using line-by-line analysis.
|
|
428
|
+
* Extracts service names, images, ports, environment keys, and depends_on.
|
|
429
|
+
*/
|
|
392
430
|
function parseComposeServices(content) {
|
|
393
431
|
const lines = content.split("\n");
|
|
394
432
|
const services = [];
|
|
395
433
|
let inServices = false;
|
|
396
434
|
let currentService = null;
|
|
397
|
-
let currentSection = "";
|
|
435
|
+
let currentSection = ""; // "ports", "environment", "depends_on", ""
|
|
398
436
|
let serviceIndent = -1;
|
|
399
437
|
let sectionIndent = -1;
|
|
400
438
|
for (const line of lines) {
|
|
@@ -403,11 +441,13 @@ function parseComposeServices(content) {
|
|
|
403
441
|
if (trimmed === "" || trimmed.startsWith("#"))
|
|
404
442
|
continue;
|
|
405
443
|
const indent = raw.length - raw.trimStart().length;
|
|
444
|
+
// Top-level "services:" key (indent 0)
|
|
406
445
|
if (indent === 0 && /^services:\s*$/.test(trimmed)) {
|
|
407
446
|
inServices = true;
|
|
408
447
|
serviceIndent = -1;
|
|
409
448
|
continue;
|
|
410
449
|
}
|
|
450
|
+
// Another top-level key ends the services block
|
|
411
451
|
if (inServices && indent === 0) {
|
|
412
452
|
inServices = false;
|
|
413
453
|
if (currentService)
|
|
@@ -417,6 +457,8 @@ function parseComposeServices(content) {
|
|
|
417
457
|
}
|
|
418
458
|
if (!inServices)
|
|
419
459
|
continue;
|
|
460
|
+
// Detect service names: lines at the first indent level under services
|
|
461
|
+
// that end with ":" and contain only word/dash chars
|
|
420
462
|
if (serviceIndent === -1 && /^[\w][\w.-]*:\s*$/.test(trimmed)) {
|
|
421
463
|
serviceIndent = indent;
|
|
422
464
|
}
|
|
@@ -437,7 +479,9 @@ function parseComposeServices(content) {
|
|
|
437
479
|
}
|
|
438
480
|
if (!currentService)
|
|
439
481
|
continue;
|
|
482
|
+
// Service properties (indent > serviceIndent)
|
|
440
483
|
if (indent > serviceIndent) {
|
|
484
|
+
// Check for property keys
|
|
441
485
|
const propMatch = trimmed.match(/^(image|ports|environment|depends_on|build):\s*(.*)/);
|
|
442
486
|
if (propMatch) {
|
|
443
487
|
const key = propMatch[1];
|
|
@@ -455,6 +499,7 @@ function parseComposeServices(content) {
|
|
|
455
499
|
currentSection = "";
|
|
456
500
|
continue;
|
|
457
501
|
}
|
|
502
|
+
// If we're at a deeper indent than section, parse items
|
|
458
503
|
if (currentSection && sectionIndent >= 0 && indent > sectionIndent) {
|
|
459
504
|
if (trimmed.startsWith("-")) {
|
|
460
505
|
const value = trimmed.replace(/^-\s*/, "").replace(/["']/g, "").trim();
|
|
@@ -477,14 +522,17 @@ function parseComposeServices(content) {
|
|
|
477
522
|
}
|
|
478
523
|
}
|
|
479
524
|
else if (currentSection === "environment" && trimmed.includes(":")) {
|
|
525
|
+
// Environment as mapping (KEY: value)
|
|
480
526
|
const envKey = trimmed.split(":")[0].trim();
|
|
481
527
|
if (envKey)
|
|
482
528
|
currentService.environmentKeys.push(envKey);
|
|
483
529
|
}
|
|
484
530
|
}
|
|
485
531
|
else if (indent <= sectionIndent) {
|
|
532
|
+
// Back to service property level, reset section
|
|
486
533
|
currentSection = "";
|
|
487
534
|
sectionIndent = -1;
|
|
535
|
+
// Re-check for property match
|
|
488
536
|
const rePropMatch = trimmed.match(/^(image|ports|environment|depends_on|build):\s*(.*)/);
|
|
489
537
|
if (rePropMatch) {
|
|
490
538
|
const key = rePropMatch[1];
|
|
@@ -506,6 +554,7 @@ function parseComposeServices(content) {
|
|
|
506
554
|
}
|
|
507
555
|
function parseDockerComposePsOutput(stdout) {
|
|
508
556
|
const containers = [];
|
|
557
|
+
// docker compose ps --format json outputs one JSON object per line
|
|
509
558
|
for (const line of stdout.split("\n")) {
|
|
510
559
|
const trimmed = line.trim();
|
|
511
560
|
if (!trimmed)
|
|
@@ -518,6 +567,7 @@ function parseDockerComposePsOutput(stdout) {
|
|
|
518
567
|
});
|
|
519
568
|
}
|
|
520
569
|
catch {
|
|
570
|
+
// Not JSON, skip
|
|
521
571
|
}
|
|
522
572
|
}
|
|
523
573
|
return containers;
|
|
@@ -534,12 +584,14 @@ async function parseDockerfile(dir, filename) {
|
|
|
534
584
|
};
|
|
535
585
|
for (const line of content.split("\n")) {
|
|
536
586
|
const trimmed = line.trim();
|
|
587
|
+
// FROM instruction
|
|
537
588
|
if (/^FROM\s+/i.test(trimmed)) {
|
|
538
589
|
const fromMatch = trimmed.match(/^FROM\s+(\S+)/i);
|
|
539
590
|
if (fromMatch && !info.baseImage) {
|
|
540
591
|
info.baseImage = fromMatch[1];
|
|
541
592
|
}
|
|
542
593
|
}
|
|
594
|
+
// EXPOSE instruction
|
|
543
595
|
if (/^EXPOSE\s+/i.test(trimmed)) {
|
|
544
596
|
const ports = trimmed
|
|
545
597
|
.replace(/^EXPOSE\s+/i, "")
|
|
@@ -548,6 +600,7 @@ async function parseDockerfile(dir, filename) {
|
|
|
548
600
|
.filter((p) => !isNaN(p));
|
|
549
601
|
info.exposedPorts.push(...ports);
|
|
550
602
|
}
|
|
603
|
+
// AI hints from pip install / npm install
|
|
551
604
|
if (trimmed.includes("pip install") || trimmed.includes("pip3 install")) {
|
|
552
605
|
for (const ai of PIP_AI_PACKAGES) {
|
|
553
606
|
if (trimmed.includes(ai.package)) {
|
|
@@ -562,6 +615,7 @@ async function parseDockerfile(dir, filename) {
|
|
|
562
615
|
}
|
|
563
616
|
}
|
|
564
617
|
}
|
|
618
|
+
// Known AI base images
|
|
565
619
|
if (/^FROM\s+/i.test(trimmed)) {
|
|
566
620
|
const image = trimmed.replace(/^FROM\s+/i, "").split(/\s+/)[0].toLowerCase();
|
|
567
621
|
if (image.includes("ollama"))
|
|
@@ -576,10 +630,12 @@ async function parseDockerfile(dir, filename) {
|
|
|
576
630
|
}
|
|
577
631
|
function generateSuggestion(services, frameworks, envHints, dockerfiles) {
|
|
578
632
|
const reasons = [];
|
|
633
|
+
// Filter out infrastructure services
|
|
579
634
|
const appServices = services.filter((svc) => {
|
|
580
635
|
const image = (svc.image || "").toLowerCase();
|
|
581
636
|
return !INFRA_IMAGES.some((infra) => image.includes(infra));
|
|
582
637
|
});
|
|
638
|
+
// Determine target type
|
|
583
639
|
const hasAiFrameworks = frameworks.length > 0;
|
|
584
640
|
const hasAiEnvKeys = envHints.length > 0;
|
|
585
641
|
const targetType = hasAiFrameworks || hasAiEnvKeys ? "ai_chat" : "api";
|
|
@@ -589,21 +645,26 @@ function generateSuggestion(services, frameworks, envHints, dockerfiles) {
|
|
|
589
645
|
if (hasAiEnvKeys) {
|
|
590
646
|
reasons.push(`Found AI-related env vars: ${envHints.join(", ")}`);
|
|
591
647
|
}
|
|
648
|
+
// Find the best service to target
|
|
592
649
|
let targetPort = null;
|
|
650
|
+
// Prefer running app services with ports
|
|
593
651
|
const runningApps = appServices.filter((svc) => svc.status === "running" && svc.ports.length > 0);
|
|
594
652
|
if (runningApps.length > 0) {
|
|
653
|
+
// Pick the first one with a port in the typical app range
|
|
595
654
|
const preferred = runningApps.find((svc) => svc.ports.some((p) => p.host >= 3000 && p.host <= 9000));
|
|
596
655
|
const target = preferred || runningApps[0];
|
|
597
656
|
targetPort = target.ports[0].host;
|
|
598
657
|
reasons.push(`Service "${target.name}" is running on port ${targetPort}`);
|
|
599
658
|
}
|
|
600
659
|
else if (appServices.length > 0) {
|
|
660
|
+
// Use any app service with ports
|
|
601
661
|
const withPorts = appServices.find((svc) => svc.ports.length > 0);
|
|
602
662
|
if (withPorts) {
|
|
603
663
|
targetPort = withPorts.ports[0].host;
|
|
604
664
|
reasons.push(`Service "${withPorts.name}" has port ${targetPort} mapped`);
|
|
605
665
|
}
|
|
606
666
|
}
|
|
667
|
+
// Fallback: check Dockerfiles for EXPOSE
|
|
607
668
|
if (!targetPort) {
|
|
608
669
|
for (const df of dockerfiles) {
|
|
609
670
|
if (df.exposedPorts.length > 0) {
|
|
@@ -613,15 +674,19 @@ function generateSuggestion(services, frameworks, envHints, dockerfiles) {
|
|
|
613
674
|
}
|
|
614
675
|
}
|
|
615
676
|
}
|
|
677
|
+
// If still no port, try common defaults
|
|
616
678
|
if (!targetPort) {
|
|
617
679
|
targetPort = 3000;
|
|
618
680
|
reasons.push("Using default port 3000 (no port mapping found)");
|
|
619
681
|
}
|
|
682
|
+
// Infer chat endpoint from frameworks
|
|
620
683
|
const chatEndpoint = inferChatEndpoint(frameworks);
|
|
621
684
|
if (chatEndpoint) {
|
|
622
685
|
reasons.push(`Inferred endpoint ${chatEndpoint} from framework detection`);
|
|
623
686
|
}
|
|
687
|
+
// Infer request template and response path
|
|
624
688
|
const { requestTemplate, responsePath } = inferRequestFormat(frameworks);
|
|
689
|
+
// Calculate confidence
|
|
625
690
|
let confidence = "low";
|
|
626
691
|
if (hasAiFrameworks && targetPort && runningApps.length > 0) {
|
|
627
692
|
confidence = "high";
|
|
@@ -653,12 +718,14 @@ function inferChatEndpoint(frameworks) {
|
|
|
653
718
|
return "/v1/chat/completions";
|
|
654
719
|
if (names.has("Gradio"))
|
|
655
720
|
return "/api/predict";
|
|
721
|
+
// Default for any detected AI framework
|
|
656
722
|
if (frameworks.length > 0)
|
|
657
723
|
return "/api/chat";
|
|
658
724
|
return undefined;
|
|
659
725
|
}
|
|
660
726
|
function inferRequestFormat(frameworks) {
|
|
661
727
|
const names = new Set(frameworks.map((f) => f.name));
|
|
728
|
+
// OpenAI-compatible APIs
|
|
662
729
|
if (names.has("OpenAI SDK") ||
|
|
663
730
|
names.has("Azure OpenAI") ||
|
|
664
731
|
names.has("vLLM") ||
|
|
@@ -671,14 +738,16 @@ function inferRequestFormat(frameworks) {
|
|
|
671
738
|
responsePath: "choices[0].message.content",
|
|
672
739
|
};
|
|
673
740
|
}
|
|
741
|
+
// Vercel AI SDK
|
|
674
742
|
if (names.has("Vercel AI SDK") || names.has("Vercel AI SDK (OpenAI)") || names.has("Vercel AI SDK (Anthropic)")) {
|
|
675
743
|
return {
|
|
676
744
|
requestTemplate: JSON.stringify({
|
|
677
745
|
messages: [{ role: "user", content: "{{message}}" }],
|
|
678
746
|
}),
|
|
679
|
-
responsePath: undefined,
|
|
747
|
+
responsePath: undefined, // Vercel AI SDK streams by default
|
|
680
748
|
};
|
|
681
749
|
}
|
|
750
|
+
// Ollama
|
|
682
751
|
if (names.has("Ollama")) {
|
|
683
752
|
return {
|
|
684
753
|
requestTemplate: JSON.stringify({
|
|
@@ -691,3 +760,4 @@ function inferRequestFormat(frameworks) {
|
|
|
691
760
|
}
|
|
692
761
|
return {};
|
|
693
762
|
}
|
|
763
|
+
//# sourceMappingURL=discover-local-infra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover-local-infra.js","sourceRoot":"","sources":["../../src/tools/discover-local-infra.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
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 type { ApiClient } from "../../api-client.js";
|
|
8
|
+
export declare const CAPTURE_EVIDENCE_NAME = "zivis_capture_evidence";
|
|
9
|
+
export declare const CAPTURE_EVIDENCE_DESCRIPTION = "Capture and upload evidence from your pen testing session.\n\nSupports 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.\n\nReturns an evidence ID that you can reference in zivis_record_test_result.\n\nFor screenshots: provide base64-encoded image data in the content field.\nFor code/text: provide plain text in the content field.";
|
|
10
|
+
export declare const CAPTURE_EVIDENCE_SCHEMA: {
|
|
11
|
+
name: z.ZodString;
|
|
12
|
+
type: z.ZodEnum<{
|
|
13
|
+
code_snippet: "code_snippet";
|
|
14
|
+
note: "note";
|
|
15
|
+
screenshot: "screenshot";
|
|
16
|
+
http_request: "http_request";
|
|
17
|
+
terminal_output: "terminal_output";
|
|
18
|
+
http_response: "http_response";
|
|
19
|
+
}>;
|
|
20
|
+
content: z.ZodString;
|
|
21
|
+
mime_type: z.ZodOptional<z.ZodString>;
|
|
22
|
+
description: z.ZodOptional<z.ZodString>;
|
|
23
|
+
threat_model_id: z.ZodOptional<z.ZodString>;
|
|
24
|
+
finding_id: z.ZodOptional<z.ZodString>;
|
|
25
|
+
test_case_id: z.ZodOptional<z.ZodString>;
|
|
26
|
+
pentest_session_id: z.ZodOptional<z.ZodString>;
|
|
27
|
+
source_file: z.ZodOptional<z.ZodString>;
|
|
28
|
+
source_line: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
};
|
|
30
|
+
export declare function createCaptureEvidenceHandler(apiClient: ApiClient): (params: {
|
|
31
|
+
name: string;
|
|
32
|
+
type: string;
|
|
33
|
+
content: string;
|
|
34
|
+
mime_type?: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
threat_model_id?: string;
|
|
37
|
+
finding_id?: string;
|
|
38
|
+
test_case_id?: string;
|
|
39
|
+
pentest_session_id?: string;
|
|
40
|
+
source_file?: string;
|
|
41
|
+
source_line?: number;
|
|
42
|
+
}) => Promise<{
|
|
43
|
+
content: {
|
|
44
|
+
type: "text";
|
|
45
|
+
text: string;
|
|
46
|
+
}[];
|
|
47
|
+
isError?: undefined;
|
|
48
|
+
} | {
|
|
49
|
+
content: {
|
|
50
|
+
type: "text";
|
|
51
|
+
text: string;
|
|
52
|
+
}[];
|
|
53
|
+
isError: boolean;
|
|
54
|
+
}>;
|