@zivis/mcp 0.1.0-alpha.21 → 0.1.0-alpha.23
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/matcher/ast-eval.d.ts +27 -0
- package/dist/matcher/ast-eval.js +132 -0
- package/dist/matcher/ast-eval.js.map +1 -0
- package/dist/matcher/finding.d.ts +76 -0
- package/dist/matcher/finding.js +14 -0
- package/dist/matcher/finding.js.map +1 -0
- package/dist/matcher/index.d.ts +30 -0
- package/dist/matcher/index.js +255 -0
- package/dist/matcher/index.js.map +1 -0
- package/dist/matcher/inference-candidates.d.ts +54 -0
- package/dist/matcher/inference-candidates.js +106 -0
- package/dist/matcher/inference-candidates.js.map +1 -0
- package/dist/matcher/walker.d.ts +14 -0
- package/dist/matcher/walker.js +79 -0
- package/dist/matcher/walker.js.map +1 -0
- package/dist/pattern-pack/index.d.ts +154 -0
- package/dist/pattern-pack/index.js +224 -0
- package/dist/pattern-pack/index.js.map +1 -0
- package/dist/pattern-packs/zivis-public-0.1.0/capsules/agents/privilege-separation.yaml +224 -0
- package/dist/pattern-packs/zivis-public-0.1.0/capsules/prompting/self-consistency-no-isolation.yaml +237 -0
- package/dist/pattern-packs/zivis-public-0.1.0/capsules/security/late-org-filter.yaml +266 -0
- package/dist/pattern-packs/zivis-public-0.1.0/controls/external_validator_on_facts.yaml +37 -0
- package/dist/pattern-packs/zivis-public-0.1.0/controls/human_approval_gate.yaml +44 -0
- package/dist/pattern-packs/zivis-public-0.1.0/controls/langgraph_state_machine_with_per_node_tools.yaml +35 -0
- package/dist/pattern-packs/zivis-public-0.1.0/controls/per_sample_retrieval_diversification.yaml +38 -0
- package/dist/pattern-packs/zivis-public-0.1.0/controls/prisma_extension_or_middleware_attaching_org_filter.yaml +31 -0
- package/dist/pattern-packs/zivis-public-0.1.0/controls/row_level_security_policy.yaml +37 -0
- package/dist/pattern-packs/zivis-public-0.1.0/manifest.json +129 -0
- package/dist/pattern-packs/zivis-public-0.1.0/prompts/agents/privilege-separation/identify.md +54 -0
- package/dist/pattern-packs/zivis-public-0.1.0/prompts/prompting/self-consistency-no-isolation/identify.md +60 -0
- package/dist/pattern-packs/zivis-public-0.1.0/prompts/security/late-org-filter/identify.md +78 -0
- package/dist/prompts/index.d.ts +1 -1
- package/dist/prompts/index.js +1 -7
- package/dist/prompts/index.js.map +1 -1
- package/dist/server.js +36 -166
- package/dist/server.js.map +1 -1
- package/dist/tools/enterprise/get-threat-model-artifact.d.ts +30 -0
- package/dist/tools/enterprise/get-threat-model-artifact.js +80 -0
- package/dist/tools/enterprise/get-threat-model-artifact.js.map +1 -0
- package/dist/tools/enterprise/get-threat-model.d.ts +1 -1
- package/dist/tools/enterprise/get-threat-model.js +59 -11
- package/dist/tools/enterprise/get-threat-model.js.map +1 -1
- package/dist/tools/enterprise/list-threat-model-artifacts.d.ts +67 -0
- package/dist/tools/enterprise/list-threat-model-artifacts.js +121 -0
- package/dist/tools/enterprise/list-threat-model-artifacts.js.map +1 -0
- package/dist/tools/enterprise/manage-actor.d.ts +1 -1
- package/dist/tools/enterprise/manage-actor.js +14 -1
- package/dist/tools/enterprise/manage-actor.js.map +1 -1
- package/dist/tools/enterprise/manage-attack-scenario.d.ts +1 -1
- package/dist/tools/enterprise/manage-attack-scenario.js +13 -1
- package/dist/tools/enterprise/manage-attack-scenario.js.map +1 -1
- package/dist/tools/enterprise/manage-component.d.ts +1 -1
- package/dist/tools/enterprise/manage-component.js +20 -1
- package/dist/tools/enterprise/manage-component.js.map +1 -1
- package/dist/tools/enterprise/manage-data-asset.d.ts +2 -2
- package/dist/tools/enterprise/manage-data-asset.js +17 -1
- package/dist/tools/enterprise/manage-data-asset.js.map +1 -1
- package/dist/tools/enterprise/manage-data-flow.d.ts +2 -2
- package/dist/tools/enterprise/manage-data-flow.js +19 -1
- package/dist/tools/enterprise/manage-data-flow.js.map +1 -1
- package/dist/tools/enterprise/manage-security-control.d.ts +1 -1
- package/dist/tools/enterprise/manage-security-control.js +18 -1
- package/dist/tools/enterprise/manage-security-control.js.map +1 -1
- package/dist/tools/enterprise/manage-test-case.d.ts +2 -2
- package/dist/tools/enterprise/manage-test-case.js +8 -0
- package/dist/tools/enterprise/manage-test-case.js.map +1 -1
- package/dist/tools/get-started.d.ts +1 -1
- package/dist/tools/get-started.js +185 -8
- package/dist/tools/get-started.js.map +1 -1
- package/dist/tools/inspect.d.ts +38 -0
- package/dist/tools/inspect.js +252 -0
- package/dist/tools/inspect.js.map +1 -0
- package/dist/tools/manage-application.d.ts +1 -1
- package/dist/tools/security-review.js +67 -50
- package/dist/tools/security-review.js.map +1 -1
- package/dist/tools/threat-get-capsule.d.ts +25 -0
- package/dist/tools/threat-get-capsule.js +64 -0
- package/dist/tools/threat-get-capsule.js.map +1 -0
- package/dist/tools/threat-get-inference-prompt.d.ts +32 -0
- package/dist/tools/threat-get-inference-prompt.js +91 -0
- package/dist/tools/threat-get-inference-prompt.js.map +1 -0
- package/dist/tools/threat-guide.d.ts +39 -0
- package/dist/tools/threat-guide.js +111 -0
- package/dist/tools/threat-guide.js.map +1 -0
- package/dist/tools/threat-list-relevant-capsules.d.ts +30 -0
- package/dist/tools/threat-list-relevant-capsules.js +176 -0
- package/dist/tools/threat-list-relevant-capsules.js.map +1 -0
- package/dist/tools/threat-run-matcher.d.ts +27 -0
- package/dist/tools/threat-run-matcher.js +164 -0
- package/dist/tools/threat-run-matcher.js.map +1 -0
- package/package.json +13 -3
- package/dist/prompts/prep-for-launch.d.ts +0 -9
- package/dist/prompts/prep-for-launch.js +0 -62
- package/dist/prompts/prep-for-launch.js.map +0 -1
- package/dist/prompts/secure-my-app.d.ts +0 -9
- package/dist/prompts/secure-my-app.js +0 -70
- package/dist/prompts/secure-my-app.js.map +0 -1
- package/dist/prompts/weekly-check.d.ts +0 -9
- package/dist/prompts/weekly-check.js +0 -48
- package/dist/prompts/weekly-check.js.map +0 -1
- package/dist/tools/enterprise/capture-evidence.d.ts +0 -54
- package/dist/tools/enterprise/capture-evidence.js +0 -72
- package/dist/tools/enterprise/capture-evidence.js.map +0 -1
- package/dist/tools/enterprise/create-report-ticket.d.ts +0 -34
- package/dist/tools/enterprise/create-report-ticket.js +0 -44
- package/dist/tools/enterprise/create-report-ticket.js.map +0 -1
- package/dist/tools/enterprise/end-pentest-session.d.ts +0 -33
- package/dist/tools/enterprise/end-pentest-session.js +0 -42
- package/dist/tools/enterprise/end-pentest-session.js.map +0 -1
- package/dist/tools/enterprise/generate-report.d.ts +0 -55
- package/dist/tools/enterprise/generate-report.js +0 -111
- package/dist/tools/enterprise/generate-report.js.map +0 -1
- package/dist/tools/enterprise/get-campaign.d.ts +0 -27
- package/dist/tools/enterprise/get-campaign.js +0 -31
- package/dist/tools/enterprise/get-campaign.js.map +0 -1
- package/dist/tools/enterprise/get-report-status.d.ts +0 -27
- package/dist/tools/enterprise/get-report-status.js +0 -38
- package/dist/tools/enterprise/get-report-status.js.map +0 -1
- package/dist/tools/enterprise/list-agents.d.ts +0 -42
- package/dist/tools/enterprise/list-agents.js +0 -95
- package/dist/tools/enterprise/list-agents.js.map +0 -1
- package/dist/tools/enterprise/list-campaigns.d.ts +0 -37
- package/dist/tools/enterprise/list-campaigns.js +0 -60
- package/dist/tools/enterprise/list-campaigns.js.map +0 -1
- package/dist/tools/enterprise/list-report-issues.d.ts +0 -36
- package/dist/tools/enterprise/list-report-issues.js +0 -50
- package/dist/tools/enterprise/list-report-issues.js.map +0 -1
- package/dist/tools/enterprise/manage-campaign-agent-instance.d.ts +0 -42
- package/dist/tools/enterprise/manage-campaign-agent-instance.js +0 -68
- package/dist/tools/enterprise/manage-campaign-agent-instance.js.map +0 -1
- package/dist/tools/enterprise/manage-campaign-target.d.ts +0 -44
- package/dist/tools/enterprise/manage-campaign-target.js +0 -70
- package/dist/tools/enterprise/manage-campaign-target.js.map +0 -1
- package/dist/tools/enterprise/manage-campaign.d.ts +0 -62
- package/dist/tools/enterprise/manage-campaign.js +0 -114
- package/dist/tools/enterprise/manage-campaign.js.map +0 -1
- package/dist/tools/enterprise/manage-finding.d.ts +0 -69
- package/dist/tools/enterprise/manage-finding.js +0 -106
- package/dist/tools/enterprise/manage-finding.js.map +0 -1
- package/dist/tools/enterprise/promote-finding-to-issue.d.ts +0 -36
- package/dist/tools/enterprise/promote-finding-to-issue.js +0 -65
- package/dist/tools/enterprise/promote-finding-to-issue.js.map +0 -1
- package/dist/tools/enterprise/publish-report-version.d.ts +0 -34
- package/dist/tools/enterprise/publish-report-version.js +0 -75
- package/dist/tools/enterprise/publish-report-version.js.map +0 -1
- package/dist/tools/enterprise/publish-test-to-library.d.ts +0 -31
- package/dist/tools/enterprise/publish-test-to-library.js +0 -40
- package/dist/tools/enterprise/publish-test-to-library.js.map +0 -1
- package/dist/tools/enterprise/record-test-result.d.ts +0 -67
- package/dist/tools/enterprise/record-test-result.js +0 -75
- package/dist/tools/enterprise/record-test-result.js.map +0 -1
- package/dist/tools/enterprise/start-pentest-session.d.ts +0 -35
- package/dist/tools/enterprise/start-pentest-session.js +0 -50
- package/dist/tools/enterprise/start-pentest-session.js.map +0 -1
- package/dist/tools/enterprise/sync-report-section.d.ts +0 -41
- package/dist/tools/enterprise/sync-report-section.js +0 -79
- package/dist/tools/enterprise/sync-report-section.js.map +0 -1
- package/dist/tools/enterprise/update-report-issue.d.ts +0 -55
- package/dist/tools/enterprise/update-report-issue.js +0 -69
- package/dist/tools/enterprise/update-report-issue.js.map +0 -1
- package/dist/tools/get-agent-test-results.d.ts +0 -41
- package/dist/tools/get-agent-test-results.js +0 -86
- package/dist/tools/get-agent-test-results.js.map +0 -1
- package/dist/tools/get-application-auth-config.d.ts +0 -27
- package/dist/tools/get-application-auth-config.js +0 -44
- package/dist/tools/get-application-auth-config.js.map +0 -1
- package/dist/tools/get-artifact-content.d.ts +0 -29
- package/dist/tools/get-artifact-content.js +0 -86
- package/dist/tools/get-artifact-content.js.map +0 -1
- package/dist/tools/get-finding-details.d.ts +0 -22
- package/dist/tools/get-finding-details.js +0 -61
- package/dist/tools/get-finding-details.js.map +0 -1
- package/dist/tools/get-findings.d.ts +0 -51
- package/dist/tools/get-findings.js +0 -124
- package/dist/tools/get-findings.js.map +0 -1
- package/dist/tools/get-recon-scan.d.ts +0 -27
- package/dist/tools/get-recon-scan.js +0 -46
- package/dist/tools/get-recon-scan.js.map +0 -1
- package/dist/tools/get-scan-output.d.ts +0 -27
- package/dist/tools/get-scan-output.js +0 -64
- package/dist/tools/get-scan-output.js.map +0 -1
- package/dist/tools/get-scenario-details.d.ts +0 -27
- package/dist/tools/get-scenario-details.js +0 -46
- package/dist/tools/get-scenario-details.js.map +0 -1
- package/dist/tools/get-test-case-results.d.ts +0 -37
- package/dist/tools/get-test-case-results.js +0 -66
- package/dist/tools/get-test-case-results.js.map +0 -1
- package/dist/tools/get-test-details.d.ts +0 -29
- package/dist/tools/get-test-details.js +0 -49
- package/dist/tools/get-test-details.js.map +0 -1
- package/dist/tools/list-agent-test-cases.d.ts +0 -41
- package/dist/tools/list-agent-test-cases.js +0 -73
- package/dist/tools/list-agent-test-cases.js.map +0 -1
- package/dist/tools/list-recon-scans.d.ts +0 -36
- package/dist/tools/list-recon-scans.js +0 -74
- package/dist/tools/list-recon-scans.js.map +0 -1
- package/dist/tools/list-scan-artifacts.d.ts +0 -41
- package/dist/tools/list-scan-artifacts.js +0 -63
- package/dist/tools/list-scan-artifacts.js.map +0 -1
- package/dist/tools/list-scans.d.ts +0 -38
- package/dist/tools/list-scans.js +0 -125
- package/dist/tools/list-scans.js.map +0 -1
- package/dist/tools/list-test-library.d.ts +0 -44
- package/dist/tools/list-test-library.js +0 -83
- package/dist/tools/list-test-library.js.map +0 -1
- package/dist/tools/list-test-scenarios.d.ts +0 -25
- package/dist/tools/list-test-scenarios.js +0 -94
- package/dist/tools/list-test-scenarios.js.map +0 -1
- package/dist/tools/local-scan.d.ts +0 -40
- package/dist/tools/local-scan.js +0 -261
- package/dist/tools/local-scan.js.map +0 -1
- package/dist/tools/run-test-scenario.d.ts +0 -37
- package/dist/tools/run-test-scenario.js +0 -70
- package/dist/tools/run-test-scenario.js.map +0 -1
- package/dist/tools/scan-pr.d.ts +0 -27
- package/dist/tools/scan-pr.js +0 -51
- package/dist/tools/scan-pr.js.map +0 -1
- package/dist/tools/setup-red-team-target.d.ts +0 -73
- package/dist/tools/setup-red-team-target.js +0 -461
- package/dist/tools/setup-red-team-target.js.map +0 -1
- package/dist/tools/triage-finding.d.ts +0 -41
- package/dist/tools/triage-finding.js +0 -125
- package/dist/tools/triage-finding.js.map +0 -1
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import type { ApiClient } from "../../api-client.js";
|
|
8
8
|
export declare const MANAGE_DATA_ASSET_NAME = "zivis_manage_data_asset";
|
|
9
|
-
export declare const MANAGE_DATA_ASSET_DESCRIPTION = "Create, update, or delete a data asset in a threat model.\n\
|
|
9
|
+
export declare const MANAGE_DATA_ASSET_DESCRIPTION = "Create, update, or delete a data asset in a threat model.\n\nWhen to use (plain English): call this when the user names something the app stores or processes. Common phrasings:\n- \"we store <PII / credit card / passwords / session tokens / api keys / audit logs>\"\n- \"the <user / customer / patient> data is in <storage>\"\n- \"we keep <emails / phone numbers / SSN / addresses>\"\n- \"<asset> is encrypted at rest\" \u2014 model the asset, then a security control on top of it\n- \"we hold cardholder data\" / \"we handle payment cards\" \u2192 classification=restricted, data_type=payment_data\n\nPick classification:\n- public \u2014 anyone can see (marketing copy)\n- internal \u2014 employees only (org chart, internal docs)\n- confidential \u2014 PII, business confidential\n- restricted \u2014 payment data, health records, anything regulated\n- critical \u2014 credentials, secrets, root keys, anything an attacker would target first\n\nIf you got here from zivis_threat_guide, args_preview maps the category and sensitivity for known asset types. Use those.\n\nAfter create: ask which components store, process, or transmit this asset so coverage can be linked. If the asset is sensitive (confidential or higher) and no security control covers it, surface that gap.\n\nActions:\n- create: Add a new data asset (requires name, classification)\n- update: Modify an existing data asset (requires asset_id)\n- delete: Remove a data asset (requires asset_id)";
|
|
10
10
|
export declare const MANAGE_DATA_ASSET_SCHEMA: {
|
|
11
11
|
threat_model_id: z.ZodString;
|
|
12
12
|
action: z.ZodEnum<{
|
|
@@ -18,8 +18,8 @@ export declare const MANAGE_DATA_ASSET_SCHEMA: {
|
|
|
18
18
|
name: z.ZodOptional<z.ZodString>;
|
|
19
19
|
classification: z.ZodOptional<z.ZodEnum<{
|
|
20
20
|
critical: "critical";
|
|
21
|
-
internal: "internal";
|
|
22
21
|
public: "public";
|
|
22
|
+
internal: "internal";
|
|
23
23
|
confidential: "confidential";
|
|
24
24
|
restricted: "restricted";
|
|
25
25
|
}>>;
|
|
@@ -8,7 +8,23 @@ import { sanitizeResponse } from "../../sanitize.js";
|
|
|
8
8
|
export const MANAGE_DATA_ASSET_NAME = "zivis_manage_data_asset";
|
|
9
9
|
export const MANAGE_DATA_ASSET_DESCRIPTION = `Create, update, or delete a data asset in a threat model.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
When to use (plain English): call this when the user names something the app stores or processes. Common phrasings:
|
|
12
|
+
- "we store <PII / credit card / passwords / session tokens / api keys / audit logs>"
|
|
13
|
+
- "the <user / customer / patient> data is in <storage>"
|
|
14
|
+
- "we keep <emails / phone numbers / SSN / addresses>"
|
|
15
|
+
- "<asset> is encrypted at rest" — model the asset, then a security control on top of it
|
|
16
|
+
- "we hold cardholder data" / "we handle payment cards" → classification=restricted, data_type=payment_data
|
|
17
|
+
|
|
18
|
+
Pick classification:
|
|
19
|
+
- public — anyone can see (marketing copy)
|
|
20
|
+
- internal — employees only (org chart, internal docs)
|
|
21
|
+
- confidential — PII, business confidential
|
|
22
|
+
- restricted — payment data, health records, anything regulated
|
|
23
|
+
- critical — credentials, secrets, root keys, anything an attacker would target first
|
|
24
|
+
|
|
25
|
+
If you got here from zivis_threat_guide, args_preview maps the category and sensitivity for known asset types. Use those.
|
|
26
|
+
|
|
27
|
+
After create: ask which components store, process, or transmit this asset so coverage can be linked. If the asset is sensitive (confidential or higher) and no security control covers it, surface that gap.
|
|
12
28
|
|
|
13
29
|
Actions:
|
|
14
30
|
- create: Add a new data asset (requires name, classification)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manage-data-asset.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-data-asset.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAEhE,MAAM,CAAC,MAAM,6BAA6B,GAAG
|
|
1
|
+
{"version":3,"file":"manage-data-asset.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-data-asset.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import type { ApiClient } from "../../api-client.js";
|
|
8
8
|
export declare const MANAGE_DATA_FLOW_NAME = "zivis_manage_data_flow";
|
|
9
|
-
export declare const MANAGE_DATA_FLOW_DESCRIPTION = "Create, update, or delete a data flow between components in a threat model.\n\
|
|
9
|
+
export declare const MANAGE_DATA_FLOW_DESCRIPTION = "Create, update, or delete a data flow between components in a threat model.\n\nWhen to use (plain English): call this whenever the user describes data moving between two parts of the system. Common phrasings:\n- \"<A> sends / posts / pushes <data> to <B>\"\n- \"<A> calls / fetches / reads / streams from <B>\"\n- \"we publish events to <queue/broker>\"\n- \"we get a webhook from <vendor>\"\n- \"<service> syncs with <other service>\"\n\nBoth ends must already exist as components \u2014 if either is missing, call zivis_manage_component first to create them, then come back here.\n\nFor data_classification:\n- public \u2014 no restrictions\n- internal \u2014 fine for employees only\n- confidential \u2014 PII, business confidential\n- restricted \u2014 payment data, health records, regulated\n- critical \u2014 credentials, secrets, root keys\n\nSet crosses_trust_boundary=true when the source and target are in different trust zones (e.g., browser\u2192API, internal\u2192third-party).\n\nAfter create: ask what specific data asset travels on this flow so the data asset can be modeled and linked.\n\nActions:\n- create: Add a new data flow (requires name, source_component_id, target_component_id)\n- update: Modify an existing data flow (requires flow_id)\n- delete: Remove a data flow (requires flow_id)";
|
|
10
10
|
export declare const MANAGE_DATA_FLOW_SCHEMA: {
|
|
11
11
|
threat_model_id: z.ZodString;
|
|
12
12
|
action: z.ZodEnum<{
|
|
@@ -22,8 +22,8 @@ export declare const MANAGE_DATA_FLOW_SCHEMA: {
|
|
|
22
22
|
protocol: z.ZodOptional<z.ZodString>;
|
|
23
23
|
data_classification: z.ZodOptional<z.ZodEnum<{
|
|
24
24
|
critical: "critical";
|
|
25
|
-
internal: "internal";
|
|
26
25
|
public: "public";
|
|
26
|
+
internal: "internal";
|
|
27
27
|
confidential: "confidential";
|
|
28
28
|
restricted: "restricted";
|
|
29
29
|
}>>;
|
|
@@ -8,7 +8,25 @@ import { sanitizeResponse } from "../../sanitize.js";
|
|
|
8
8
|
export const MANAGE_DATA_FLOW_NAME = "zivis_manage_data_flow";
|
|
9
9
|
export const MANAGE_DATA_FLOW_DESCRIPTION = `Create, update, or delete a data flow between components in a threat model.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
When to use (plain English): call this whenever the user describes data moving between two parts of the system. Common phrasings:
|
|
12
|
+
- "<A> sends / posts / pushes <data> to <B>"
|
|
13
|
+
- "<A> calls / fetches / reads / streams from <B>"
|
|
14
|
+
- "we publish events to <queue/broker>"
|
|
15
|
+
- "we get a webhook from <vendor>"
|
|
16
|
+
- "<service> syncs with <other service>"
|
|
17
|
+
|
|
18
|
+
Both ends must already exist as components — if either is missing, call zivis_manage_component first to create them, then come back here.
|
|
19
|
+
|
|
20
|
+
For data_classification:
|
|
21
|
+
- public — no restrictions
|
|
22
|
+
- internal — fine for employees only
|
|
23
|
+
- confidential — PII, business confidential
|
|
24
|
+
- restricted — payment data, health records, regulated
|
|
25
|
+
- critical — credentials, secrets, root keys
|
|
26
|
+
|
|
27
|
+
Set crosses_trust_boundary=true when the source and target are in different trust zones (e.g., browser→API, internal→third-party).
|
|
28
|
+
|
|
29
|
+
After create: ask what specific data asset travels on this flow so the data asset can be modeled and linked.
|
|
12
30
|
|
|
13
31
|
Actions:
|
|
14
32
|
- create: Add a new data flow (requires name, source_component_id, target_component_id)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manage-data-flow.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-data-flow.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
|
|
1
|
+
{"version":3,"file":"manage-data-flow.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-data-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import type { ApiClient } from "../../api-client.js";
|
|
8
8
|
export declare const MANAGE_SECURITY_CONTROL_NAME = "zivis_manage_security_control";
|
|
9
|
-
export declare const MANAGE_SECURITY_CONTROL_DESCRIPTION = "Create, update, or delete a security control in a threat model.\n\
|
|
9
|
+
export declare const MANAGE_SECURITY_CONTROL_DESCRIPTION = "Create, update, or delete a security control in a threat model.\n\nWhen to use (plain English): call this when the user mentions a protective mechanism that's in place (or planned). Common phrasings:\n- \"we have <rate limiting / WAF / firewall / MFA / 2FA / encryption>\"\n- \"we sanitize / validate <inputs>\"\n- \"we encrypt <X> at rest / in transit\"\n- \"we audit log all <Y>\"\n- \"<Z> is behind auth / behind a VPN\"\n- \"we use TLS for everything\"\n\nPick control_type:\n- preventive \u2014 stops the threat before it happens (input validation, rate limiting, encryption, MFA)\n- detective \u2014 notices when something bad happens (audit logging, monitoring, alerts, anomaly detection)\n- responsive \u2014 reacts to a known incident (auto-block, key rotation, account lockout)\n\nSet component_id when the control applies to one specific component. Leave it blank for org-wide controls (e.g., \"we use a WAF in front of everything\").\n\nIf you got here from zivis_threat_guide, args_preview already maps the category. Use that to seed name/control_type.\n\nAfter create: if a sensitive data asset (PII / payment / credentials) exists with no controls covering it, that's a high-priority gap \u2014 flag it.\n\nActions:\n- create: Add a new control (requires name, control_type)\n- update: Modify an existing control (requires control_id)\n- delete: Remove a control (requires control_id)";
|
|
10
10
|
export declare const MANAGE_SECURITY_CONTROL_SCHEMA: {
|
|
11
11
|
threat_model_id: z.ZodString;
|
|
12
12
|
action: z.ZodEnum<{
|
|
@@ -8,7 +8,24 @@ import { sanitizeResponse } from "../../sanitize.js";
|
|
|
8
8
|
export const MANAGE_SECURITY_CONTROL_NAME = "zivis_manage_security_control";
|
|
9
9
|
export const MANAGE_SECURITY_CONTROL_DESCRIPTION = `Create, update, or delete a security control in a threat model.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
When to use (plain English): call this when the user mentions a protective mechanism that's in place (or planned). Common phrasings:
|
|
12
|
+
- "we have <rate limiting / WAF / firewall / MFA / 2FA / encryption>"
|
|
13
|
+
- "we sanitize / validate <inputs>"
|
|
14
|
+
- "we encrypt <X> at rest / in transit"
|
|
15
|
+
- "we audit log all <Y>"
|
|
16
|
+
- "<Z> is behind auth / behind a VPN"
|
|
17
|
+
- "we use TLS for everything"
|
|
18
|
+
|
|
19
|
+
Pick control_type:
|
|
20
|
+
- preventive — stops the threat before it happens (input validation, rate limiting, encryption, MFA)
|
|
21
|
+
- detective — notices when something bad happens (audit logging, monitoring, alerts, anomaly detection)
|
|
22
|
+
- responsive — reacts to a known incident (auto-block, key rotation, account lockout)
|
|
23
|
+
|
|
24
|
+
Set component_id when the control applies to one specific component. Leave it blank for org-wide controls (e.g., "we use a WAF in front of everything").
|
|
25
|
+
|
|
26
|
+
If you got here from zivis_threat_guide, args_preview already maps the category. Use that to seed name/control_type.
|
|
27
|
+
|
|
28
|
+
After create: if a sensitive data asset (PII / payment / credentials) exists with no controls covering it, that's a high-priority gap — flag it.
|
|
12
29
|
|
|
13
30
|
Actions:
|
|
14
31
|
- create: Add a new control (requires name, control_type)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manage-security-control.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-security-control.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,4BAA4B,GAAG,+BAA+B,CAAC;AAE5E,MAAM,CAAC,MAAM,mCAAmC,GAAG
|
|
1
|
+
{"version":3,"file":"manage-security-control.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-security-control.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import type { ApiClient } from "../../api-client.js";
|
|
8
8
|
export declare const MANAGE_TEST_CASE_NAME = "zivis_manage_test_case";
|
|
9
|
-
export declare const MANAGE_TEST_CASE_DESCRIPTION = "Create, update, or delete a test case in a threat model.\n\nTest cases define specific security tests to validate whether vulnerabilities exist. They link to attack scenarios and can be automated or manual. Test case IDs follow the TC-X.Y format.\n\nActions:\n- create: Add a new test case (requires name, description, success_criteria)\n- update: Modify an existing test case (requires test_case_id) \u2014 use this to record test results\n- delete: Remove a test case (requires test_case_id)";
|
|
9
|
+
export declare const MANAGE_TEST_CASE_DESCRIPTION = "Create, update, or delete a test case in a threat model.\n\nWhen to use (plain English): call this after an attack scenario exists and the user wants to specify how it gets validated. Common phrasings:\n- \"let's test for <attack pattern>\"\n- \"we want to check that <attack> doesn't work\"\n- \"I want to validate that <scenario> is mitigated\"\n- \"add a test for <vulnerability> on <endpoint/component>\"\n\nCuration pattern: every meaningful test case should have an attack_scenario_id. Tests without a parent scenario are noise. The Threat Model owns this curation \u2014 automated red-team runs later consume the curated tests.\n\nTest cases define specific security tests to validate whether vulnerabilities exist. They link to attack scenarios and can be automated or manual. Test case IDs follow the TC-X.Y format.\n\nActions:\n- create: Add a new test case (requires name, description, success_criteria)\n- update: Modify an existing test case (requires test_case_id) \u2014 use this to record test results\n- delete: Remove a test case (requires test_case_id)";
|
|
10
10
|
export declare const MANAGE_TEST_CASE_SCHEMA: {
|
|
11
11
|
threat_model_id: z.ZodString;
|
|
12
12
|
action: z.ZodEnum<{
|
|
@@ -28,10 +28,10 @@ export declare const MANAGE_TEST_CASE_SCHEMA: {
|
|
|
28
28
|
success_criteria: z.ZodOptional<z.ZodString>;
|
|
29
29
|
evidence_type: z.ZodOptional<z.ZodEnum<{
|
|
30
30
|
code_snippet: "code_snippet";
|
|
31
|
-
video: "video";
|
|
32
31
|
screenshot: "screenshot";
|
|
33
32
|
http_request: "http_request";
|
|
34
33
|
log_entry: "log_entry";
|
|
34
|
+
video: "video";
|
|
35
35
|
manual_notes: "manual_notes";
|
|
36
36
|
}>>;
|
|
37
37
|
result: z.ZodOptional<z.ZodEnum<{
|
|
@@ -8,6 +8,14 @@ import { sanitizeResponse } from "../../sanitize.js";
|
|
|
8
8
|
export const MANAGE_TEST_CASE_NAME = "zivis_manage_test_case";
|
|
9
9
|
export const MANAGE_TEST_CASE_DESCRIPTION = `Create, update, or delete a test case in a threat model.
|
|
10
10
|
|
|
11
|
+
When to use (plain English): call this after an attack scenario exists and the user wants to specify how it gets validated. Common phrasings:
|
|
12
|
+
- "let's test for <attack pattern>"
|
|
13
|
+
- "we want to check that <attack> doesn't work"
|
|
14
|
+
- "I want to validate that <scenario> is mitigated"
|
|
15
|
+
- "add a test for <vulnerability> on <endpoint/component>"
|
|
16
|
+
|
|
17
|
+
Curation pattern: every meaningful test case should have an attack_scenario_id. Tests without a parent scenario are noise. The Threat Model owns this curation — automated red-team runs later consume the curated tests.
|
|
18
|
+
|
|
11
19
|
Test cases define specific security tests to validate whether vulnerabilities exist. They link to attack scenarios and can be automated or manual. Test case IDs follow the TC-X.Y format.
|
|
12
20
|
|
|
13
21
|
Actions:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manage-test-case.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-test-case.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
|
|
1
|
+
{"version":3,"file":"manage-test-case.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-test-case.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import { z } from "zod";
|
|
|
12
12
|
import type { ApiClient } from "../api-client.js";
|
|
13
13
|
import type { ZivisConfig } from "../types.js";
|
|
14
14
|
export declare const GET_STARTED_NAME = "zivis_get_started";
|
|
15
|
-
export declare const GET_STARTED_DESCRIPTION = "Start here if you're new to ZIVIS or unsure what to do next for security.\n\nUse this when the user says any of:\n- \"what should I do for security on this app\"\n- \"uhh, where do I start\"\n- \"is my app safe\" / \"is my chatbot safe\"\n- \"I need to do security stuff before launch\"\n- \"I have an audit / pen test / customer asking about security\"\n- \"check my dependencies / libraries / repos\"\n- \"how do I use ZIVIS\"\n- \"what can ZIVIS do for me\"\n\nThis tool inspects the current project state
|
|
15
|
+
export declare const GET_STARTED_DESCRIPTION = "Start here if you're new to ZIVIS or unsure what to do next for security.\n\nUse this when the user says any of:\n- \"what should I do for security on this app\"\n- \"uhh, where do I start\"\n- \"is my app safe\" / \"is my chatbot safe\"\n- \"I need to do security stuff before launch\"\n- \"I have an audit / pen test / customer asking about security\"\n- \"check my dependencies / libraries / repos\"\n- \"how do I use ZIVIS\"\n- \"what can ZIVIS do for me\"\n\nThis tool inspects the current project state \u2014 binding, application, scans, findings \u2014\nAND if a recent 'zivis inspect' artifact exists for this repo, evaluates the local\nthreat library against it to surface architectural patterns ZIVIS thinks may apply\n(self-consistency without context isolation, late org filter, privilege separation, etc.).\nThe 'relevant_threats' field in the response is what makes this tool different from a\ngeneric security menu: ZIVIS is reading the user's actual codebase via the graph\nartifact and naming threats by their architectural shape.\n\nAlways speak to the user in threat-model language: components, flows, trust boundaries,\nattack scenarios. Even when they don't yet know those terms \u2014 that's how they learn.\n\nOutput is a structured JSON object. Present recommended_next_steps as a numbered list\nto the user, in order, and ask them to pick one. If relevant_threats is non-empty, lead\nwith that \u2014 it's the most concrete thing ZIVIS knows about their repo. Use the label\nand why fields verbatim; do not invent new steps. If the user is unsure which to pick,\nrecommend the item flagged in if_user_unsure.";
|
|
16
16
|
export declare const GET_STARTED_SCHEMA: {
|
|
17
17
|
concern: z.ZodOptional<z.ZodString>;
|
|
18
18
|
cwd: z.ZodOptional<z.ZodString>;
|
|
@@ -8,8 +8,17 @@
|
|
|
8
8
|
* Does NOT require a project binding or auth — gracefully adapts
|
|
9
9
|
* to whatever state exists so the very first interaction succeeds.
|
|
10
10
|
*/
|
|
11
|
+
import * as fs from "node:fs/promises";
|
|
12
|
+
import * as fssync from "node:fs";
|
|
13
|
+
import * as os from "node:os";
|
|
14
|
+
import * as path from "node:path";
|
|
15
|
+
import * as crypto from "node:crypto";
|
|
16
|
+
import { exec } from "node:child_process";
|
|
17
|
+
import { promisify } from "node:util";
|
|
11
18
|
import { z } from "zod";
|
|
19
|
+
const execAsync = promisify(exec);
|
|
12
20
|
import { detectProjectBinding } from "../project-binding.js";
|
|
21
|
+
import { loadActivePack, findRelevantCapsules, } from "../pattern-pack/index.js";
|
|
13
22
|
// ── Constants ──
|
|
14
23
|
export const GET_STARTED_NAME = "zivis_get_started";
|
|
15
24
|
export const GET_STARTED_DESCRIPTION = `Start here if you're new to ZIVIS or unsure what to do next for security.
|
|
@@ -24,14 +33,21 @@ Use this when the user says any of:
|
|
|
24
33
|
- "how do I use ZIVIS"
|
|
25
34
|
- "what can ZIVIS do for me"
|
|
26
35
|
|
|
27
|
-
This tool inspects the current project state
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
36
|
+
This tool inspects the current project state — binding, application, scans, findings —
|
|
37
|
+
AND if a recent 'zivis inspect' artifact exists for this repo, evaluates the local
|
|
38
|
+
threat library against it to surface architectural patterns ZIVIS thinks may apply
|
|
39
|
+
(self-consistency without context isolation, late org filter, privilege separation, etc.).
|
|
40
|
+
The 'relevant_threats' field in the response is what makes this tool different from a
|
|
41
|
+
generic security menu: ZIVIS is reading the user's actual codebase via the graph
|
|
42
|
+
artifact and naming threats by their architectural shape.
|
|
31
43
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
44
|
+
Always speak to the user in threat-model language: components, flows, trust boundaries,
|
|
45
|
+
attack scenarios. Even when they don't yet know those terms — that's how they learn.
|
|
46
|
+
|
|
47
|
+
Output is a structured JSON object. Present recommended_next_steps as a numbered list
|
|
48
|
+
to the user, in order, and ask them to pick one. If relevant_threats is non-empty, lead
|
|
49
|
+
with that — it's the most concrete thing ZIVIS knows about their repo. Use the label
|
|
50
|
+
and why fields verbatim; do not invent new steps. If the user is unsure which to pick,
|
|
35
51
|
recommend the item flagged in if_user_unsure.`;
|
|
36
52
|
export const GET_STARTED_SCHEMA = {
|
|
37
53
|
concern: z
|
|
@@ -338,18 +354,179 @@ function buildMenu(intent, state, concern) {
|
|
|
338
354
|
if_user_unsure: "Recommend option 2 (check_dependencies) — it's free, fast, and shows value without setup.",
|
|
339
355
|
};
|
|
340
356
|
}
|
|
341
|
-
|
|
357
|
+
async function findRelevantThreats(cwd) {
|
|
358
|
+
const artifactPath = await locateLatestArtifact(cwd);
|
|
359
|
+
if (!artifactPath) {
|
|
360
|
+
return {
|
|
361
|
+
threats: [],
|
|
362
|
+
reason: "No 'zivis inspect' artifact found in user cache. Run 'zivis inspect' from the repo to populate the threat library against this codebase.",
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
let artifact;
|
|
366
|
+
try {
|
|
367
|
+
const raw = await fs.readFile(artifactPath, "utf8");
|
|
368
|
+
artifact = JSON.parse(raw);
|
|
369
|
+
}
|
|
370
|
+
catch {
|
|
371
|
+
return { threats: [], reason: `Failed to read artifact at ${artifactPath}.` };
|
|
372
|
+
}
|
|
373
|
+
let handle;
|
|
374
|
+
try {
|
|
375
|
+
handle = await loadActivePack();
|
|
376
|
+
}
|
|
377
|
+
catch {
|
|
378
|
+
return {
|
|
379
|
+
threats: [],
|
|
380
|
+
artifact_path: artifactPath,
|
|
381
|
+
reason: "Pattern pack not available — run 'pnpm build' to bundle the public pack.",
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
const relevant = await findRelevantCapsules(handle, artifact);
|
|
385
|
+
return {
|
|
386
|
+
threats: relevant.map((cap) => summarizeCapsule(cap, artifact)),
|
|
387
|
+
artifact_path: artifactPath,
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
function summarizeCapsule(cap, artifact) {
|
|
391
|
+
const matched = [];
|
|
392
|
+
const pkgs = new Set();
|
|
393
|
+
for (const node of artifact.nodes) {
|
|
394
|
+
if (node.type === "external_dependency" && node.attributes?.package) {
|
|
395
|
+
pkgs.add(node.attributes.package);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
const langs = new Set(artifact.scope.languages ?? []);
|
|
399
|
+
const f = cap.relevance_filter;
|
|
400
|
+
if (f) {
|
|
401
|
+
for (const term of [...(f.any_of ?? []), ...(f.all_of ?? [])]) {
|
|
402
|
+
if (term.dependency && pkgs.has(term.dependency))
|
|
403
|
+
matched.push(`dep:${term.dependency}`);
|
|
404
|
+
if (term.language && langs.has(term.language))
|
|
405
|
+
matched.push(`language:${term.language}`);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
if (matched.length === 0)
|
|
409
|
+
matched.push("language match only");
|
|
410
|
+
return {
|
|
411
|
+
pattern_id: cap.id,
|
|
412
|
+
title: cap.title,
|
|
413
|
+
category: cap.category,
|
|
414
|
+
safe_summary: cap.safe_summary,
|
|
415
|
+
matched_on: matched,
|
|
416
|
+
next_action_tool: "zivis_threat_run_matcher",
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
function userCacheRoot() {
|
|
420
|
+
const home = os.homedir();
|
|
421
|
+
if (process.platform === "darwin") {
|
|
422
|
+
return path.join(home, "Library", "Caches", "zivis");
|
|
423
|
+
}
|
|
424
|
+
if (process.platform === "win32") {
|
|
425
|
+
const localAppData = process.env.LOCALAPPDATA ?? path.join(home, "AppData", "Local");
|
|
426
|
+
return path.join(localAppData, "zivis", "Cache");
|
|
427
|
+
}
|
|
428
|
+
const xdg = process.env.XDG_CACHE_HOME;
|
|
429
|
+
return path.join(xdg ?? path.join(home, ".cache"), "zivis");
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Locate the most recent inspect artifact for THIS repo. Derives the
|
|
433
|
+
* repo_id with the same algorithm `zivis inspect` uses (git remote URL
|
|
434
|
+
* hash, falling back to root-path hash) so the cache lookup is scoped.
|
|
435
|
+
*
|
|
436
|
+
* Returns undefined if no runs exist for this repo, even when other
|
|
437
|
+
* repos have artifacts.
|
|
438
|
+
*/
|
|
439
|
+
async function locateLatestArtifact(cwd) {
|
|
440
|
+
const repoId = await deriveRepoId(cwd);
|
|
441
|
+
const runsDir = path.join(userCacheRoot(), "repos", repoId, "inspect", "runs");
|
|
442
|
+
if (!fssync.existsSync(runsDir))
|
|
443
|
+
return undefined;
|
|
444
|
+
const candidates = [];
|
|
445
|
+
for (const entry of await fs.readdir(runsDir)) {
|
|
446
|
+
if (!entry.endsWith(".json"))
|
|
447
|
+
continue;
|
|
448
|
+
const full = path.join(runsDir, entry);
|
|
449
|
+
try {
|
|
450
|
+
const stat = await fs.stat(full);
|
|
451
|
+
candidates.push({ file: full, mtime: stat.mtimeMs });
|
|
452
|
+
}
|
|
453
|
+
catch {
|
|
454
|
+
// skip
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
if (candidates.length === 0)
|
|
458
|
+
return undefined;
|
|
459
|
+
candidates.sort((a, b) => b.mtime - a.mtime);
|
|
460
|
+
return candidates[0].file;
|
|
461
|
+
}
|
|
462
|
+
async function deriveRepoId(cwd) {
|
|
463
|
+
const remote = await tryGit(cwd, "remote get-url origin");
|
|
464
|
+
if (remote) {
|
|
465
|
+
return "remote-" + sha256Short(remote);
|
|
466
|
+
}
|
|
467
|
+
return "path-" + sha256Short(cwd);
|
|
468
|
+
}
|
|
469
|
+
async function tryGit(cwd, args) {
|
|
470
|
+
try {
|
|
471
|
+
const { stdout } = await execAsync(`git ${args}`, { cwd });
|
|
472
|
+
const value = stdout.trim();
|
|
473
|
+
return value || undefined;
|
|
474
|
+
}
|
|
475
|
+
catch {
|
|
476
|
+
return undefined;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
function sha256Short(value) {
|
|
480
|
+
return crypto.createHash("sha256").update(value).digest("hex").slice(0, 16);
|
|
481
|
+
}
|
|
342
482
|
export function createGetStartedHandler(apiClient, _config) {
|
|
343
483
|
return async (params) => {
|
|
344
484
|
const cwd = params.cwd ?? process.cwd();
|
|
345
485
|
const intent = detectIntent(params.concern);
|
|
346
486
|
const state = await fetchState(apiClient, cwd);
|
|
347
487
|
const menu = buildMenu(intent, state, params.concern);
|
|
488
|
+
// Threat-library awareness: surface relevant capsules from any cached
|
|
489
|
+
// inspect artifact so the response speaks in threat-model terms instead
|
|
490
|
+
// of a generic action menu. Best-effort — never blocks the response.
|
|
491
|
+
let threatHit = { threats: [] };
|
|
492
|
+
try {
|
|
493
|
+
threatHit = await findRelevantThreats(cwd);
|
|
494
|
+
}
|
|
495
|
+
catch (err) {
|
|
496
|
+
threatHit = {
|
|
497
|
+
threats: [],
|
|
498
|
+
reason: `threat-library lookup failed: ${err.message}`,
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
// If we found relevant threats, prepend a "review threat library" step
|
|
502
|
+
// so it's the user's first option.
|
|
503
|
+
if (threatHit.threats.length > 0) {
|
|
504
|
+
menu.recommended_next_steps = [
|
|
505
|
+
{
|
|
506
|
+
id: "review_relevant_threats",
|
|
507
|
+
label: `Review the ${threatHit.threats.length} architectural pattern${threatHit.threats.length === 1 ? "" : "s"} ZIVIS sees in this repo`,
|
|
508
|
+
tool: "zivis_threat_run_matcher",
|
|
509
|
+
why: "ZIVIS read your codebase via the inspect artifact and identified threat-model patterns that match your architecture. Run the matcher to see exactly which lines fire each pattern.",
|
|
510
|
+
estimated_time: "30 seconds",
|
|
511
|
+
requires_auth: false,
|
|
512
|
+
},
|
|
513
|
+
...menu.recommended_next_steps,
|
|
514
|
+
];
|
|
515
|
+
menu.headline =
|
|
516
|
+
`ZIVIS read this repo's threat library and sees ${threatHit.threats.length} architectural pattern${threatHit.threats.length === 1 ? "" : "s"} that may apply. ` +
|
|
517
|
+
menu.headline;
|
|
518
|
+
menu.if_user_unsure = `Recommend option 1 (review_relevant_threats) — that's the most repo-specific thing ZIVIS knows.`;
|
|
519
|
+
}
|
|
348
520
|
const payload = {
|
|
349
521
|
current_state: state,
|
|
350
522
|
intent_detected: intent,
|
|
351
523
|
concern_received: params.concern ?? null,
|
|
352
524
|
...menu,
|
|
525
|
+
relevant_threats: threatHit.threats,
|
|
526
|
+
threat_library: {
|
|
527
|
+
artifact_used: threatHit.artifact_path ?? null,
|
|
528
|
+
reason_no_threats: threatHit.threats.length === 0 ? threatHit.reason ?? null : null,
|
|
529
|
+
},
|
|
353
530
|
};
|
|
354
531
|
return {
|
|
355
532
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-started.js","sourceRoot":"","sources":["../../src/tools/get-started.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"get-started.js","sourceRoot":"","sources":["../../src/tools/get-started.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zivis_inspect — local repo graph build + matcher run.
|
|
3
|
+
*
|
|
4
|
+
* Spawns `zivis inspect` (the CLI binary) to build the graph artifact, then
|
|
5
|
+
* runs the matcher to emit findings — both local-only, no network. The
|
|
6
|
+
* binding is verified up front so the resulting findings can attach to
|
|
7
|
+
* the right Application + org when the user later promotes them.
|
|
8
|
+
*
|
|
9
|
+
* Plan: docs/plans/LOCAL-REPO-GRAPH-IMPLEMENTATION.md (Phase 4 — /inspect orchestration)
|
|
10
|
+
*
|
|
11
|
+
* Spawn strategy:
|
|
12
|
+
* 1. ZIVIS_CLI_BIN env override (for tests / unusual installs)
|
|
13
|
+
* 2. `zivis` on PATH
|
|
14
|
+
* 3. Resolved sibling under @zivis/cli's dist/index.js (workspace symlink)
|
|
15
|
+
*
|
|
16
|
+
* If none works, returns a structured error pointing the user at the install.
|
|
17
|
+
*/
|
|
18
|
+
import { z } from "zod";
|
|
19
|
+
import type { ApiClient } from "../api-client.js";
|
|
20
|
+
import type { ZivisConfig } from "../types.js";
|
|
21
|
+
export declare const INSPECT_NAME = "zivis_inspect";
|
|
22
|
+
export declare const INSPECT_DESCRIPTION = "Build a local repo graph and run the local pattern matcher to emit threat-model findings. The threat-model-first conversion event.\n\nUse this when the user says any of:\n- \"model this app\" / \"threat model this repo\"\n- \"what should we be worried about in this code\"\n- \"set up security for this project\" (after auth/binding is done)\n- \"/inspect\"\n\nWhat it does, all locally (no source code leaves the machine):\n 1. Spawns 'zivis inspect' to walk the repo and produce a typed graph artifact\n (services, endpoints, external dependencies; auth boundaries + dataflow are Phase 1.5)\n 2. Runs the local matcher against the public pattern pack:\n - AST strategies fire via @ast-grep/napi for TS/JS/Python/Go\n - META strategies fire via the controls library (when no defending control is present)\n - INFER strategies emit candidates the host LLM picks up via zivis_threat_get_inference_prompt\n 3. Returns normalized findings with lane (trusted/inferred), confidence, and evidence spans\n\nTrusted-lane findings are evidence-backed (deterministic strategies fired) and ready for the threat model. Inferred-lane findings need host-LLM confirmation via zivis_threat_get_inference_prompt before promotion. Proprietary platform-side eval (Phase 4 cloud upload) and trust-promoted aggregation are separate steps.\n\nThis is the conversion moment for the threat-model-first sidekick \u2014 the user sees specific patterns naming specific files in their repo, in their IDE, in under 30 seconds.";
|
|
23
|
+
export declare const INSPECT_SCHEMA: {
|
|
24
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
25
|
+
application_id: z.ZodOptional<z.ZodString>;
|
|
26
|
+
skip_matcher: z.ZodOptional<z.ZodBoolean>;
|
|
27
|
+
};
|
|
28
|
+
export declare function createInspectHandler(_apiClient: ApiClient, _config: ZivisConfig): (params: {
|
|
29
|
+
cwd?: string;
|
|
30
|
+
application_id?: string;
|
|
31
|
+
skip_matcher?: boolean;
|
|
32
|
+
}) => Promise<{
|
|
33
|
+
content: Array<{
|
|
34
|
+
type: "text";
|
|
35
|
+
text: string;
|
|
36
|
+
}>;
|
|
37
|
+
isError?: boolean;
|
|
38
|
+
}>;
|