@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.
Files changed (223) hide show
  1. package/dist/matcher/ast-eval.d.ts +27 -0
  2. package/dist/matcher/ast-eval.js +132 -0
  3. package/dist/matcher/ast-eval.js.map +1 -0
  4. package/dist/matcher/finding.d.ts +76 -0
  5. package/dist/matcher/finding.js +14 -0
  6. package/dist/matcher/finding.js.map +1 -0
  7. package/dist/matcher/index.d.ts +30 -0
  8. package/dist/matcher/index.js +255 -0
  9. package/dist/matcher/index.js.map +1 -0
  10. package/dist/matcher/inference-candidates.d.ts +54 -0
  11. package/dist/matcher/inference-candidates.js +106 -0
  12. package/dist/matcher/inference-candidates.js.map +1 -0
  13. package/dist/matcher/walker.d.ts +14 -0
  14. package/dist/matcher/walker.js +79 -0
  15. package/dist/matcher/walker.js.map +1 -0
  16. package/dist/pattern-pack/index.d.ts +154 -0
  17. package/dist/pattern-pack/index.js +224 -0
  18. package/dist/pattern-pack/index.js.map +1 -0
  19. package/dist/pattern-packs/zivis-public-0.1.0/capsules/agents/privilege-separation.yaml +224 -0
  20. package/dist/pattern-packs/zivis-public-0.1.0/capsules/prompting/self-consistency-no-isolation.yaml +237 -0
  21. package/dist/pattern-packs/zivis-public-0.1.0/capsules/security/late-org-filter.yaml +266 -0
  22. package/dist/pattern-packs/zivis-public-0.1.0/controls/external_validator_on_facts.yaml +37 -0
  23. package/dist/pattern-packs/zivis-public-0.1.0/controls/human_approval_gate.yaml +44 -0
  24. package/dist/pattern-packs/zivis-public-0.1.0/controls/langgraph_state_machine_with_per_node_tools.yaml +35 -0
  25. package/dist/pattern-packs/zivis-public-0.1.0/controls/per_sample_retrieval_diversification.yaml +38 -0
  26. package/dist/pattern-packs/zivis-public-0.1.0/controls/prisma_extension_or_middleware_attaching_org_filter.yaml +31 -0
  27. package/dist/pattern-packs/zivis-public-0.1.0/controls/row_level_security_policy.yaml +37 -0
  28. package/dist/pattern-packs/zivis-public-0.1.0/manifest.json +129 -0
  29. package/dist/pattern-packs/zivis-public-0.1.0/prompts/agents/privilege-separation/identify.md +54 -0
  30. package/dist/pattern-packs/zivis-public-0.1.0/prompts/prompting/self-consistency-no-isolation/identify.md +60 -0
  31. package/dist/pattern-packs/zivis-public-0.1.0/prompts/security/late-org-filter/identify.md +78 -0
  32. package/dist/prompts/index.d.ts +1 -1
  33. package/dist/prompts/index.js +1 -7
  34. package/dist/prompts/index.js.map +1 -1
  35. package/dist/server.js +36 -166
  36. package/dist/server.js.map +1 -1
  37. package/dist/tools/enterprise/get-threat-model-artifact.d.ts +30 -0
  38. package/dist/tools/enterprise/get-threat-model-artifact.js +80 -0
  39. package/dist/tools/enterprise/get-threat-model-artifact.js.map +1 -0
  40. package/dist/tools/enterprise/get-threat-model.d.ts +1 -1
  41. package/dist/tools/enterprise/get-threat-model.js +59 -11
  42. package/dist/tools/enterprise/get-threat-model.js.map +1 -1
  43. package/dist/tools/enterprise/list-threat-model-artifacts.d.ts +67 -0
  44. package/dist/tools/enterprise/list-threat-model-artifacts.js +121 -0
  45. package/dist/tools/enterprise/list-threat-model-artifacts.js.map +1 -0
  46. package/dist/tools/enterprise/manage-actor.d.ts +1 -1
  47. package/dist/tools/enterprise/manage-actor.js +14 -1
  48. package/dist/tools/enterprise/manage-actor.js.map +1 -1
  49. package/dist/tools/enterprise/manage-attack-scenario.d.ts +1 -1
  50. package/dist/tools/enterprise/manage-attack-scenario.js +13 -1
  51. package/dist/tools/enterprise/manage-attack-scenario.js.map +1 -1
  52. package/dist/tools/enterprise/manage-component.d.ts +1 -1
  53. package/dist/tools/enterprise/manage-component.js +20 -1
  54. package/dist/tools/enterprise/manage-component.js.map +1 -1
  55. package/dist/tools/enterprise/manage-data-asset.d.ts +2 -2
  56. package/dist/tools/enterprise/manage-data-asset.js +17 -1
  57. package/dist/tools/enterprise/manage-data-asset.js.map +1 -1
  58. package/dist/tools/enterprise/manage-data-flow.d.ts +2 -2
  59. package/dist/tools/enterprise/manage-data-flow.js +19 -1
  60. package/dist/tools/enterprise/manage-data-flow.js.map +1 -1
  61. package/dist/tools/enterprise/manage-security-control.d.ts +1 -1
  62. package/dist/tools/enterprise/manage-security-control.js +18 -1
  63. package/dist/tools/enterprise/manage-security-control.js.map +1 -1
  64. package/dist/tools/enterprise/manage-test-case.d.ts +2 -2
  65. package/dist/tools/enterprise/manage-test-case.js +8 -0
  66. package/dist/tools/enterprise/manage-test-case.js.map +1 -1
  67. package/dist/tools/get-started.d.ts +1 -1
  68. package/dist/tools/get-started.js +185 -8
  69. package/dist/tools/get-started.js.map +1 -1
  70. package/dist/tools/inspect.d.ts +38 -0
  71. package/dist/tools/inspect.js +252 -0
  72. package/dist/tools/inspect.js.map +1 -0
  73. package/dist/tools/manage-application.d.ts +1 -1
  74. package/dist/tools/security-review.js +67 -50
  75. package/dist/tools/security-review.js.map +1 -1
  76. package/dist/tools/threat-get-capsule.d.ts +25 -0
  77. package/dist/tools/threat-get-capsule.js +64 -0
  78. package/dist/tools/threat-get-capsule.js.map +1 -0
  79. package/dist/tools/threat-get-inference-prompt.d.ts +32 -0
  80. package/dist/tools/threat-get-inference-prompt.js +91 -0
  81. package/dist/tools/threat-get-inference-prompt.js.map +1 -0
  82. package/dist/tools/threat-guide.d.ts +39 -0
  83. package/dist/tools/threat-guide.js +111 -0
  84. package/dist/tools/threat-guide.js.map +1 -0
  85. package/dist/tools/threat-list-relevant-capsules.d.ts +30 -0
  86. package/dist/tools/threat-list-relevant-capsules.js +176 -0
  87. package/dist/tools/threat-list-relevant-capsules.js.map +1 -0
  88. package/dist/tools/threat-run-matcher.d.ts +27 -0
  89. package/dist/tools/threat-run-matcher.js +164 -0
  90. package/dist/tools/threat-run-matcher.js.map +1 -0
  91. package/package.json +13 -3
  92. package/dist/prompts/prep-for-launch.d.ts +0 -9
  93. package/dist/prompts/prep-for-launch.js +0 -62
  94. package/dist/prompts/prep-for-launch.js.map +0 -1
  95. package/dist/prompts/secure-my-app.d.ts +0 -9
  96. package/dist/prompts/secure-my-app.js +0 -70
  97. package/dist/prompts/secure-my-app.js.map +0 -1
  98. package/dist/prompts/weekly-check.d.ts +0 -9
  99. package/dist/prompts/weekly-check.js +0 -48
  100. package/dist/prompts/weekly-check.js.map +0 -1
  101. package/dist/tools/enterprise/capture-evidence.d.ts +0 -54
  102. package/dist/tools/enterprise/capture-evidence.js +0 -72
  103. package/dist/tools/enterprise/capture-evidence.js.map +0 -1
  104. package/dist/tools/enterprise/create-report-ticket.d.ts +0 -34
  105. package/dist/tools/enterprise/create-report-ticket.js +0 -44
  106. package/dist/tools/enterprise/create-report-ticket.js.map +0 -1
  107. package/dist/tools/enterprise/end-pentest-session.d.ts +0 -33
  108. package/dist/tools/enterprise/end-pentest-session.js +0 -42
  109. package/dist/tools/enterprise/end-pentest-session.js.map +0 -1
  110. package/dist/tools/enterprise/generate-report.d.ts +0 -55
  111. package/dist/tools/enterprise/generate-report.js +0 -111
  112. package/dist/tools/enterprise/generate-report.js.map +0 -1
  113. package/dist/tools/enterprise/get-campaign.d.ts +0 -27
  114. package/dist/tools/enterprise/get-campaign.js +0 -31
  115. package/dist/tools/enterprise/get-campaign.js.map +0 -1
  116. package/dist/tools/enterprise/get-report-status.d.ts +0 -27
  117. package/dist/tools/enterprise/get-report-status.js +0 -38
  118. package/dist/tools/enterprise/get-report-status.js.map +0 -1
  119. package/dist/tools/enterprise/list-agents.d.ts +0 -42
  120. package/dist/tools/enterprise/list-agents.js +0 -95
  121. package/dist/tools/enterprise/list-agents.js.map +0 -1
  122. package/dist/tools/enterprise/list-campaigns.d.ts +0 -37
  123. package/dist/tools/enterprise/list-campaigns.js +0 -60
  124. package/dist/tools/enterprise/list-campaigns.js.map +0 -1
  125. package/dist/tools/enterprise/list-report-issues.d.ts +0 -36
  126. package/dist/tools/enterprise/list-report-issues.js +0 -50
  127. package/dist/tools/enterprise/list-report-issues.js.map +0 -1
  128. package/dist/tools/enterprise/manage-campaign-agent-instance.d.ts +0 -42
  129. package/dist/tools/enterprise/manage-campaign-agent-instance.js +0 -68
  130. package/dist/tools/enterprise/manage-campaign-agent-instance.js.map +0 -1
  131. package/dist/tools/enterprise/manage-campaign-target.d.ts +0 -44
  132. package/dist/tools/enterprise/manage-campaign-target.js +0 -70
  133. package/dist/tools/enterprise/manage-campaign-target.js.map +0 -1
  134. package/dist/tools/enterprise/manage-campaign.d.ts +0 -62
  135. package/dist/tools/enterprise/manage-campaign.js +0 -114
  136. package/dist/tools/enterprise/manage-campaign.js.map +0 -1
  137. package/dist/tools/enterprise/manage-finding.d.ts +0 -69
  138. package/dist/tools/enterprise/manage-finding.js +0 -106
  139. package/dist/tools/enterprise/manage-finding.js.map +0 -1
  140. package/dist/tools/enterprise/promote-finding-to-issue.d.ts +0 -36
  141. package/dist/tools/enterprise/promote-finding-to-issue.js +0 -65
  142. package/dist/tools/enterprise/promote-finding-to-issue.js.map +0 -1
  143. package/dist/tools/enterprise/publish-report-version.d.ts +0 -34
  144. package/dist/tools/enterprise/publish-report-version.js +0 -75
  145. package/dist/tools/enterprise/publish-report-version.js.map +0 -1
  146. package/dist/tools/enterprise/publish-test-to-library.d.ts +0 -31
  147. package/dist/tools/enterprise/publish-test-to-library.js +0 -40
  148. package/dist/tools/enterprise/publish-test-to-library.js.map +0 -1
  149. package/dist/tools/enterprise/record-test-result.d.ts +0 -67
  150. package/dist/tools/enterprise/record-test-result.js +0 -75
  151. package/dist/tools/enterprise/record-test-result.js.map +0 -1
  152. package/dist/tools/enterprise/start-pentest-session.d.ts +0 -35
  153. package/dist/tools/enterprise/start-pentest-session.js +0 -50
  154. package/dist/tools/enterprise/start-pentest-session.js.map +0 -1
  155. package/dist/tools/enterprise/sync-report-section.d.ts +0 -41
  156. package/dist/tools/enterprise/sync-report-section.js +0 -79
  157. package/dist/tools/enterprise/sync-report-section.js.map +0 -1
  158. package/dist/tools/enterprise/update-report-issue.d.ts +0 -55
  159. package/dist/tools/enterprise/update-report-issue.js +0 -69
  160. package/dist/tools/enterprise/update-report-issue.js.map +0 -1
  161. package/dist/tools/get-agent-test-results.d.ts +0 -41
  162. package/dist/tools/get-agent-test-results.js +0 -86
  163. package/dist/tools/get-agent-test-results.js.map +0 -1
  164. package/dist/tools/get-application-auth-config.d.ts +0 -27
  165. package/dist/tools/get-application-auth-config.js +0 -44
  166. package/dist/tools/get-application-auth-config.js.map +0 -1
  167. package/dist/tools/get-artifact-content.d.ts +0 -29
  168. package/dist/tools/get-artifact-content.js +0 -86
  169. package/dist/tools/get-artifact-content.js.map +0 -1
  170. package/dist/tools/get-finding-details.d.ts +0 -22
  171. package/dist/tools/get-finding-details.js +0 -61
  172. package/dist/tools/get-finding-details.js.map +0 -1
  173. package/dist/tools/get-findings.d.ts +0 -51
  174. package/dist/tools/get-findings.js +0 -124
  175. package/dist/tools/get-findings.js.map +0 -1
  176. package/dist/tools/get-recon-scan.d.ts +0 -27
  177. package/dist/tools/get-recon-scan.js +0 -46
  178. package/dist/tools/get-recon-scan.js.map +0 -1
  179. package/dist/tools/get-scan-output.d.ts +0 -27
  180. package/dist/tools/get-scan-output.js +0 -64
  181. package/dist/tools/get-scan-output.js.map +0 -1
  182. package/dist/tools/get-scenario-details.d.ts +0 -27
  183. package/dist/tools/get-scenario-details.js +0 -46
  184. package/dist/tools/get-scenario-details.js.map +0 -1
  185. package/dist/tools/get-test-case-results.d.ts +0 -37
  186. package/dist/tools/get-test-case-results.js +0 -66
  187. package/dist/tools/get-test-case-results.js.map +0 -1
  188. package/dist/tools/get-test-details.d.ts +0 -29
  189. package/dist/tools/get-test-details.js +0 -49
  190. package/dist/tools/get-test-details.js.map +0 -1
  191. package/dist/tools/list-agent-test-cases.d.ts +0 -41
  192. package/dist/tools/list-agent-test-cases.js +0 -73
  193. package/dist/tools/list-agent-test-cases.js.map +0 -1
  194. package/dist/tools/list-recon-scans.d.ts +0 -36
  195. package/dist/tools/list-recon-scans.js +0 -74
  196. package/dist/tools/list-recon-scans.js.map +0 -1
  197. package/dist/tools/list-scan-artifacts.d.ts +0 -41
  198. package/dist/tools/list-scan-artifacts.js +0 -63
  199. package/dist/tools/list-scan-artifacts.js.map +0 -1
  200. package/dist/tools/list-scans.d.ts +0 -38
  201. package/dist/tools/list-scans.js +0 -125
  202. package/dist/tools/list-scans.js.map +0 -1
  203. package/dist/tools/list-test-library.d.ts +0 -44
  204. package/dist/tools/list-test-library.js +0 -83
  205. package/dist/tools/list-test-library.js.map +0 -1
  206. package/dist/tools/list-test-scenarios.d.ts +0 -25
  207. package/dist/tools/list-test-scenarios.js +0 -94
  208. package/dist/tools/list-test-scenarios.js.map +0 -1
  209. package/dist/tools/local-scan.d.ts +0 -40
  210. package/dist/tools/local-scan.js +0 -261
  211. package/dist/tools/local-scan.js.map +0 -1
  212. package/dist/tools/run-test-scenario.d.ts +0 -37
  213. package/dist/tools/run-test-scenario.js +0 -70
  214. package/dist/tools/run-test-scenario.js.map +0 -1
  215. package/dist/tools/scan-pr.d.ts +0 -27
  216. package/dist/tools/scan-pr.js +0 -51
  217. package/dist/tools/scan-pr.js.map +0 -1
  218. package/dist/tools/setup-red-team-target.d.ts +0 -73
  219. package/dist/tools/setup-red-team-target.js +0 -461
  220. package/dist/tools/setup-red-team-target.js.map +0 -1
  221. package/dist/tools/triage-finding.d.ts +0 -41
  222. package/dist/tools/triage-finding.js +0 -125
  223. package/dist/tools/triage-finding.js.map +0 -1
@@ -0,0 +1,80 @@
1
+ /**
2
+ * zivis_get_threat_model_artifact — Get a single threat-model artifact with its
3
+ * full content (Mermaid source, canvas-state JSON, attack-chain diagram, etc.).
4
+ *
5
+ * Maps to: GET /api/threat-models/:id/artifacts/:artifactId
6
+ */
7
+ import { z } from "zod";
8
+ import { sanitizeResponse } from "../../sanitize.js";
9
+ export const GET_THREAT_MODEL_ARTIFACT_NAME = "zivis_get_threat_model_artifact";
10
+ export const GET_THREAT_MODEL_ARTIFACT_DESCRIPTION = `Get the full content of a threat-model artifact — the Mermaid diagram source, canvas-state JSON, attack-chain Mermaid, asset inventory markdown, etc.
11
+
12
+ Use this after \`zivis_list_threat_model_artifacts\` to fetch the actual diagram content. The \`content\` field is the renderable payload (Mermaid for diagram artifacts; React Flow JSON for \`canvas_state\` artifacts). The \`metadata\` field carries node positions, linked finding IDs, and other structured side-data.
13
+
14
+ Returns staleness signals (\`is_stale\`, \`stale_reason\`, \`depends_on_files\`, \`depends_on_commit\`, \`changed_files_since\`) — useful before suggesting regeneration.`;
15
+ export const GET_THREAT_MODEL_ARTIFACT_SCHEMA = {
16
+ threat_model_id: z
17
+ .string()
18
+ .describe("Threat model UUID (from zivis_list_threat_models)"),
19
+ artifact_id: z
20
+ .string()
21
+ .describe("Artifact UUID (from zivis_list_threat_model_artifacts)"),
22
+ };
23
+ export function createGetThreatModelArtifactHandler(apiClient) {
24
+ return async (params) => {
25
+ try {
26
+ const path = `/api/threat-models/${params.threat_model_id}/artifacts/${params.artifact_id}`;
27
+ const a = await apiClient.get(path);
28
+ const result = {
29
+ artifact_id: a.id,
30
+ threat_model_id: params.threat_model_id,
31
+ version_id: a.versionId,
32
+ title: a.title,
33
+ description: a.description || null,
34
+ artifact_type: a.artifactType,
35
+ content_type: a.contentType,
36
+ tags: a.tags || [],
37
+ content: a.content ?? null,
38
+ metadata: a.metadata ?? null,
39
+ // Provenance
40
+ source_type: a.sourceType,
41
+ source_agent_instance_id: a.sourceAgentInstanceId || null,
42
+ source_run_id: a.sourceRunId || null,
43
+ // Edit history
44
+ is_edited: a.isEdited ?? false,
45
+ edited_at: a.editedAt || null,
46
+ edited_by: a.editedBy || null,
47
+ // Staleness
48
+ is_stale: a.isStale ?? false,
49
+ stale_reason: a.staleReason || null,
50
+ last_generated_at: a.lastGeneratedAt || null,
51
+ changed_files_since: a.changedFilesSince ?? null,
52
+ depends_on_files: a.dependsOnFiles || [],
53
+ depends_on_commit: a.dependsOnCommit || null,
54
+ // Organisation
55
+ sort_order: a.sortOrder ?? 0,
56
+ scope_id: a.scopeId || null,
57
+ group_id: a.groupId || null,
58
+ promoted_diagram_id: a.diagramId || null,
59
+ // Canvas-specific (only populated when artifact_type === "canvas_state")
60
+ canvas_version: a.canvasVersion ?? null,
61
+ approval_status: a.approvalStatus || null,
62
+ approved_by: a.approvedBy || null,
63
+ approved_at: a.approvedAt || null,
64
+ created_at: a.createdAt,
65
+ };
66
+ const sanitized = sanitizeResponse(result);
67
+ return {
68
+ content: [{ type: "text", text: JSON.stringify(sanitized, null, 2) }],
69
+ };
70
+ }
71
+ catch (err) {
72
+ const message = err instanceof Error ? err.message : "Failed to get threat model artifact";
73
+ return {
74
+ content: [{ type: "text", text: `Error: ${message}` }],
75
+ isError: true,
76
+ };
77
+ }
78
+ };
79
+ }
80
+ //# sourceMappingURL=get-threat-model-artifact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-threat-model-artifact.js","sourceRoot":"","sources":["../../../src/tools/enterprise/get-threat-model-artifact.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,8BAA8B,GAAG,iCAAiC,CAAC;AAEhF,MAAM,CAAC,MAAM,qCAAqC,GAAG;;;;0KAIqH,CAAC;AAE3K,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,CAAC,mDAAmD,CAAC;IAChE,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,CAAC,wDAAwD,CAAC;CACtE,CAAC;AAmCF,MAAM,UAAU,mCAAmC,CAAC,SAAoB;IACtE,OAAO,KAAK,EAAE,MAAwD,EAAE,EAAE;QACxE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,sBAAsB,MAAM,CAAC,eAAe,cAAc,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5F,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,GAAG,CAAc,IAAI,CAAC,CAAC;YAEjD,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,CAAC,CAAC,EAAE;gBACjB,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,UAAU,EAAE,CAAC,CAAC,SAAS;gBACvB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;gBAClC,aAAa,EAAE,CAAC,CAAC,YAAY;gBAC7B,YAAY,EAAE,CAAC,CAAC,WAAW;gBAC3B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;gBAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;gBAE5B,aAAa;gBACb,WAAW,EAAE,CAAC,CAAC,UAAU;gBACzB,wBAAwB,EAAE,CAAC,CAAC,qBAAqB,IAAI,IAAI;gBACzD,aAAa,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;gBAEpC,eAAe;gBACf,SAAS,EAAE,CAAC,CAAC,QAAQ,IAAI,KAAK;gBAC9B,SAAS,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;gBAC7B,SAAS,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;gBAE7B,YAAY;gBACZ,QAAQ,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK;gBAC5B,YAAY,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;gBACnC,iBAAiB,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI;gBAC5C,mBAAmB,EAAE,CAAC,CAAC,iBAAiB,IAAI,IAAI;gBAChD,gBAAgB,EAAE,CAAC,CAAC,cAAc,IAAI,EAAE;gBACxC,iBAAiB,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI;gBAE5C,eAAe;gBACf,UAAU,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC;gBAC5B,QAAQ,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;gBAC3B,QAAQ,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;gBAC3B,mBAAmB,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;gBAExC,yEAAyE;gBACzE,cAAc,EAAE,CAAC,CAAC,aAAa,IAAI,IAAI;gBACvC,eAAe,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;gBACzC,WAAW,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;gBACjC,WAAW,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;gBAEjC,UAAU,EAAE,CAAC,CAAC,SAAS;aACxB,CAAC;YAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAE3C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC/E,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GACX,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,qCAAqC,CAAC;YAC7E,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBAC/D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -6,7 +6,7 @@
6
6
  import { z } from "zod";
7
7
  import type { ApiClient } from "../../api-client.js";
8
8
  export declare const GET_THREAT_MODEL_NAME = "zivis_get_threat_model";
9
- export declare const GET_THREAT_MODEL_DESCRIPTION = "Get a threat model with ALL its entities \u2014 actors, components, data flows, attack scenarios, security controls, data assets, test cases, findings, AND any linked diagrams.\n\nReturns the complete threat model including:\n- **Actors**: Who interacts with the system (external users, attackers, internal services)\n- **Components**: System parts (APIs, databases, frontends, services) with technology and trust level\n- **Data Flows**: How data moves between components (protocol, encryption, auth mechanism)\n- **Attack Scenarios**: STRIDE-categorized threats with severity, likelihood, attack vectors\n- **Security Controls**: Existing mitigations (preventive, detective, corrective) with effectiveness\n- **Data Assets**: What sensitive data exists and how it's classified\n- **Test Cases**: Security tests with results (pass/fail/partial/not_tested)\n- **Findings**: Discovered vulnerabilities with severity and remediation recommendations\n- **Linked Diagrams**: Architecture, data flow, trust boundary, and other diagrams associated with this threat model\n\nIMPORTANT: The threat_model_id must be a threat model UUID from zivis_list_threat_models, NOT a scan ID or agent instance ID.\n\nUse this to understand the full security posture before making changes, adding entities, or running pen tests.\nAfter viewing, use zivis_manage_actor, zivis_manage_component, zivis_manage_data_flow, etc. to add or update entities.\nUse zivis_get_diagram with a diagram_id from the linked_diagrams to view full diagram details (nodes, connections, boundaries).";
9
+ export declare const GET_THREAT_MODEL_DESCRIPTION = "Get a threat model with ALL its entities \u2014 actors, components, data flows, attack scenarios, security controls, data assets, test cases, findings, AND any linked diagrams/artifacts.\n\nReturns the complete threat model. Sub-entities live on the latest ThreatModelVersion. For convenience this tool surfaces them at BOTH levels:\n- Top-level: `actors`, `components`, `dataFlows`, `attackScenarios`, `securityControls`, `dataAssets`, `testCases`, `findings` \u2014 copied from the latest version\n- Nested: `versions[0].<entity>` \u2014 authoritative source. Older versions in `versions[N]` (N\u22651) only carry summary metrics, not entities.\n\nEntity contents:\n- **Actors**: Who interacts with the system (external users, attackers, internal services)\n- **Components**: System parts (APIs, databases, frontends, services) with technology and trust level\n- **Data Flows**: How data moves between components (protocol, encryption, auth mechanism)\n- **Attack Scenarios**: STRIDE-categorized threats with severity, likelihood, narrative\n- **Security Controls**: Existing mitigations (preventive, detective, corrective) with effectiveness\n- **Data Assets**: What sensitive data exists and how it's classified\n- **Test Cases**: Security tests with results (pass/fail/partial/not_tested)\n- **Findings**: Discovered vulnerabilities with severity and remediation recommendations\n- **Linked Diagrams** (`linked_diagrams`): First-class `Diagram` entities \u2014 used for app-level / cross-TM views.\n- **Artifacts** (`artifacts_summary`): The diagrams the TM detail page itself displays (Mermaid, canvas state, attack chains, asset inventories). Use `zivis_list_threat_model_artifacts` and `zivis_get_threat_model_artifact` for full content. NOTE: the platform is mid-migration from artifacts \u2192 first-class diagrams; today most TM-internal diagrams live as artifacts.\n\nIMPORTANT: The threat_model_id must be a threat model UUID from zivis_list_threat_models, NOT a scan ID or agent instance ID.\n\nUse this to understand the full security posture before making changes, adding entities, or running pen tests.\nAfter viewing, use zivis_manage_actor, zivis_manage_component, zivis_manage_data_flow, etc. to add or update entities.";
10
10
  export declare const GET_THREAT_MODEL_SCHEMA: {
11
11
  threat_model_id: z.ZodString;
12
12
  include_test_cases: z.ZodDefault<z.ZodBoolean>;
@@ -6,24 +6,28 @@
6
6
  import { z } from "zod";
7
7
  import { sanitizeResponse } from "../../sanitize.js";
8
8
  export const GET_THREAT_MODEL_NAME = "zivis_get_threat_model";
9
- export const GET_THREAT_MODEL_DESCRIPTION = `Get a threat model with ALL its entities — actors, components, data flows, attack scenarios, security controls, data assets, test cases, findings, AND any linked diagrams.
9
+ export const GET_THREAT_MODEL_DESCRIPTION = `Get a threat model with ALL its entities — actors, components, data flows, attack scenarios, security controls, data assets, test cases, findings, AND any linked diagrams/artifacts.
10
10
 
11
- Returns the complete threat model including:
11
+ Returns the complete threat model. Sub-entities live on the latest ThreatModelVersion. For convenience this tool surfaces them at BOTH levels:
12
+ - Top-level: \`actors\`, \`components\`, \`dataFlows\`, \`attackScenarios\`, \`securityControls\`, \`dataAssets\`, \`testCases\`, \`findings\` — copied from the latest version
13
+ - Nested: \`versions[0].<entity>\` — authoritative source. Older versions in \`versions[N]\` (N≥1) only carry summary metrics, not entities.
14
+
15
+ Entity contents:
12
16
  - **Actors**: Who interacts with the system (external users, attackers, internal services)
13
17
  - **Components**: System parts (APIs, databases, frontends, services) with technology and trust level
14
18
  - **Data Flows**: How data moves between components (protocol, encryption, auth mechanism)
15
- - **Attack Scenarios**: STRIDE-categorized threats with severity, likelihood, attack vectors
19
+ - **Attack Scenarios**: STRIDE-categorized threats with severity, likelihood, narrative
16
20
  - **Security Controls**: Existing mitigations (preventive, detective, corrective) with effectiveness
17
21
  - **Data Assets**: What sensitive data exists and how it's classified
18
22
  - **Test Cases**: Security tests with results (pass/fail/partial/not_tested)
19
23
  - **Findings**: Discovered vulnerabilities with severity and remediation recommendations
20
- - **Linked Diagrams**: Architecture, data flow, trust boundary, and other diagrams associated with this threat model
24
+ - **Linked Diagrams** (\`linked_diagrams\`): First-class \`Diagram\` entities used for app-level / cross-TM views.
25
+ - **Artifacts** (\`artifacts_summary\`): The diagrams the TM detail page itself displays (Mermaid, canvas state, attack chains, asset inventories). Use \`zivis_list_threat_model_artifacts\` and \`zivis_get_threat_model_artifact\` for full content. NOTE: the platform is mid-migration from artifacts → first-class diagrams; today most TM-internal diagrams live as artifacts.
21
26
 
22
27
  IMPORTANT: The threat_model_id must be a threat model UUID from zivis_list_threat_models, NOT a scan ID or agent instance ID.
23
28
 
24
29
  Use this to understand the full security posture before making changes, adding entities, or running pen tests.
25
- After viewing, use zivis_manage_actor, zivis_manage_component, zivis_manage_data_flow, etc. to add or update entities.
26
- Use zivis_get_diagram with a diagram_id from the linked_diagrams to view full diagram details (nodes, connections, boundaries).`;
30
+ After viewing, use zivis_manage_actor, zivis_manage_component, zivis_manage_data_flow, etc. to add or update entities.`;
27
31
  export const GET_THREAT_MODEL_SCHEMA = {
28
32
  threat_model_id: z
29
33
  .string()
@@ -36,16 +40,39 @@ export const GET_THREAT_MODEL_SCHEMA = {
36
40
  export function createGetThreatModelHandler(apiClient) {
37
41
  return async (params) => {
38
42
  try {
39
- // Fetch threat model and linked diagrams in parallel
40
- const [threatModelData, diagramsData] = await Promise.all([
43
+ // Fetch threat model, linked diagrams, and the latest version's artifacts in parallel.
44
+ // Artifacts are the diagram surface the TM detail page itself uses; first-class
45
+ // diagrams are an org-scoped overlay (mid-migration today).
46
+ const [threatModelData, diagramsData, artifactsData] = await Promise.all([
41
47
  apiClient.get(`/api/threat-models/${params.threat_model_id}?include=all`),
42
48
  apiClient
43
49
  .get(`/api/diagrams?linkedThreatModelId=${params.threat_model_id}&take=50`)
44
50
  .catch(() => ({ diagrams: [], total: 0 })),
51
+ apiClient
52
+ .get(`/api/threat-models/${params.threat_model_id}/artifacts`)
53
+ .catch(() => []),
45
54
  ]);
46
55
  const sanitized = sanitizeResponse(threatModelData);
47
- // Attach linked diagrams summary to the response
48
- const diagrams = Array.isArray(diagramsData.diagrams)
56
+ // Lift sub-entities from versions[0] to the top level for LLM convenience.
57
+ // Authoritative location remains versions[0]; this is a non-destructive shim.
58
+ const versions = Array.isArray(sanitized.versions) ? sanitized.versions : [];
59
+ const latestVersion = (versions[0] || {});
60
+ const lifted = {};
61
+ for (const key of [
62
+ "actors",
63
+ "components",
64
+ "dataFlows",
65
+ "attackScenarios",
66
+ "securityControls",
67
+ "dataAssets",
68
+ "testCases",
69
+ "findings",
70
+ ]) {
71
+ if (Array.isArray(latestVersion[key])) {
72
+ lifted[key] = latestVersion[key];
73
+ }
74
+ }
75
+ const linkedDiagrams = Array.isArray(diagramsData.diagrams)
49
76
  ? diagramsData.diagrams.map((d) => ({
50
77
  diagram_id: d.id,
51
78
  name: d.name,
@@ -57,10 +84,31 @@ export function createGetThreatModelHandler(apiClient) {
57
84
  updated_at: d.updatedAt,
58
85
  }))
59
86
  : [];
87
+ // Artifact summary — content omitted to keep the payload light. Use
88
+ // zivis_get_threat_model_artifact for the Mermaid / canvas content.
89
+ const artifactsRaw = Array.isArray(artifactsData) ? artifactsData : [];
90
+ const artifactsSummary = artifactsRaw.map((a) => ({
91
+ artifact_id: a.id,
92
+ title: a.title,
93
+ artifact_type: a.artifactType,
94
+ content_type: a.contentType,
95
+ tags: a.tags || [],
96
+ description: a.description || null,
97
+ is_stale: a.isStale ?? false,
98
+ stale_reason: a.staleReason || null,
99
+ is_edited: a.isEdited ?? false,
100
+ group_id: a.groupId || null,
101
+ scope_id: a.scopeId || null,
102
+ promoted_diagram_id: a.diagramId || null,
103
+ sort_order: a.sortOrder ?? 0,
104
+ }));
60
105
  const result = {
61
106
  ...sanitized,
62
- linked_diagrams: diagrams,
107
+ ...lifted,
108
+ linked_diagrams: linkedDiagrams,
63
109
  linked_diagrams_count: diagramsData.total,
110
+ artifacts_summary: artifactsSummary,
111
+ artifacts_count: artifactsSummary.length,
64
112
  };
65
113
  return {
66
114
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"get-threat-model.js","sourceRoot":"","sources":["../../../src/tools/enterprise/get-threat-model.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAE9D,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;gIAiBoF,CAAC;AAEjI,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,CAAC,8EAA8E,CAAC;IAC3F,kBAAkB,EAAE,CAAC;SAClB,OAAO,EAAE;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,+CAA+C,CAAC;CAC7D,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,SAAoB;IAC9D,OAAO,KAAK,EAAE,MAAiE,EAAE,EAAE;QACjF,IAAI,CAAC;YACH,qDAAqD;YACrD,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACxD,SAAS,CAAC,GAAG,CACX,sBAAsB,MAAM,CAAC,eAAe,cAAc,CAC3D;gBACD,SAAS;qBACN,GAAG,CACF,qCAAqC,MAAM,CAAC,eAAe,UAAU,CACtE;qBACA,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;aAC7C,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,gBAAgB,CAAC,eAAe,CAA4B,CAAC;YAE/E,iDAAiD;YACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC;gBACnD,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC;oBACzD,UAAU,EAAE,CAAC,CAAC,EAAE;oBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,YAAY,EAAE,CAAC,CAAC,WAAW;oBAC3B,YAAY,EAAE,CAAC,CAAC,WAAW;oBAC3B,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;oBAClC,UAAU,EAAG,CAAC,CAAC,MAAiC,EAAE,KAAK,IAAI,IAAI;oBAC/D,gBAAgB,EAAG,CAAC,CAAC,MAAiC,EAAE,WAAW,IAAI,IAAI;oBAC3E,UAAU,EAAE,CAAC,CAAC,SAAS;iBACxB,CAAC,CAAC;gBACL,CAAC,CAAC,EAAE,CAAC;YAEP,MAAM,MAAM,GAAG;gBACb,GAAG,SAAS;gBACZ,eAAe,EAAE,QAAQ;gBACzB,qBAAqB,EAAE,YAAY,CAAC,KAAK;aAC1C,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC;YAClF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBAC/D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"get-threat-model.js","sourceRoot":"","sources":["../../../src/tools/enterprise/get-threat-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * zivis_list_threat_model_artifacts — List the diagrams/artifacts attached to a
3
+ * threat model version (Mermaid diagrams, attack chains, asset inventories,
4
+ * canvas state, etc.).
5
+ *
6
+ * IMPORTANT: This is the surface the TM detail page itself reads. It is
7
+ * distinct from `zivis_list_diagrams`, which queries the org-wide first-class
8
+ * `Diagram` table. The platform is mid-migration — for any TM today, look here
9
+ * first; only fall back to `zivis_list_diagrams` for app-level / cross-TM views.
10
+ *
11
+ * Maps to: GET /api/threat-models/:id/artifacts[?versionId=...&artifactType=...]
12
+ */
13
+ import { z } from "zod";
14
+ import type { ApiClient } from "../../api-client.js";
15
+ export declare const LIST_THREAT_MODEL_ARTIFACTS_NAME = "zivis_list_threat_model_artifacts";
16
+ export declare const LIST_THREAT_MODEL_ARTIFACTS_DESCRIPTION = "List the diagrams/artifacts attached to a threat model \u2014 these are the diagrams the TM detail page actually displays (Mermaid code, canvas state, attack-chain diagrams, asset inventories, trust boundaries, sequence diagrams, etc.).\n\nIf you are looking for \"the diagrams for a threat model\" \u2014 start here, NOT `zivis_list_diagrams`. The platform is mid-migration from this artifact model to a first-class `Diagram` entity; today most TM-internal diagrams still live as artifacts.\n\nReturns a summary list (no content blob). Use `zivis_get_threat_model_artifact` to fetch the full Mermaid source or canvas JSON for a specific artifact.\n\nBy default scopes to the threat model's CURRENT version. Pass `version_id` to inspect a historical version.";
17
+ export declare const LIST_THREAT_MODEL_ARTIFACTS_SCHEMA: {
18
+ threat_model_id: z.ZodString;
19
+ version_id: z.ZodOptional<z.ZodString>;
20
+ artifact_type: z.ZodOptional<z.ZodEnum<{
21
+ trust_boundary: "trust_boundary";
22
+ data_flow_diagram: "data_flow_diagram";
23
+ dfd_level_1: "dfd_level_1";
24
+ dfd_level_2: "dfd_level_2";
25
+ system_context: "system_context";
26
+ asset_inventory: "asset_inventory";
27
+ sequence_diagram: "sequence_diagram";
28
+ network_topology: "network_topology";
29
+ cloud_architecture: "cloud_architecture";
30
+ component_diagram: "component_diagram";
31
+ api_integration: "api_integration";
32
+ identity_access_flow: "identity_access_flow";
33
+ deployment_diagram: "deployment_diagram";
34
+ ci_cd_pipeline: "ci_cd_pipeline";
35
+ secrets_flow: "secrets_flow";
36
+ attack_tree: "attack_tree";
37
+ kill_chain: "kill_chain";
38
+ swimlane_process: "swimlane_process";
39
+ entity_relationship: "entity_relationship";
40
+ state_machine: "state_machine";
41
+ misuse_case: "misuse_case";
42
+ stride_annotated: "stride_annotated";
43
+ encryption_boundary: "encryption_boundary";
44
+ backup_recovery: "backup_recovery";
45
+ logging_monitoring: "logging_monitoring";
46
+ entry_point: "entry_point";
47
+ assumption: "assumption";
48
+ canvas_state: "canvas_state";
49
+ }>>;
50
+ };
51
+ export declare function createListThreatModelArtifactsHandler(apiClient: ApiClient): (params: {
52
+ threat_model_id: string;
53
+ version_id?: string;
54
+ artifact_type?: string;
55
+ }) => Promise<{
56
+ content: {
57
+ type: "text";
58
+ text: string;
59
+ }[];
60
+ isError?: undefined;
61
+ } | {
62
+ content: {
63
+ type: "text";
64
+ text: string;
65
+ }[];
66
+ isError: boolean;
67
+ }>;
@@ -0,0 +1,121 @@
1
+ /**
2
+ * zivis_list_threat_model_artifacts — List the diagrams/artifacts attached to a
3
+ * threat model version (Mermaid diagrams, attack chains, asset inventories,
4
+ * canvas state, etc.).
5
+ *
6
+ * IMPORTANT: This is the surface the TM detail page itself reads. It is
7
+ * distinct from `zivis_list_diagrams`, which queries the org-wide first-class
8
+ * `Diagram` table. The platform is mid-migration — for any TM today, look here
9
+ * first; only fall back to `zivis_list_diagrams` for app-level / cross-TM views.
10
+ *
11
+ * Maps to: GET /api/threat-models/:id/artifacts[?versionId=...&artifactType=...]
12
+ */
13
+ import { z } from "zod";
14
+ import { sanitizeResponse } from "../../sanitize.js";
15
+ export const LIST_THREAT_MODEL_ARTIFACTS_NAME = "zivis_list_threat_model_artifacts";
16
+ export const LIST_THREAT_MODEL_ARTIFACTS_DESCRIPTION = `List the diagrams/artifacts attached to a threat model — these are the diagrams the TM detail page actually displays (Mermaid code, canvas state, attack-chain diagrams, asset inventories, trust boundaries, sequence diagrams, etc.).
17
+
18
+ If you are looking for "the diagrams for a threat model" — start here, NOT \`zivis_list_diagrams\`. The platform is mid-migration from this artifact model to a first-class \`Diagram\` entity; today most TM-internal diagrams still live as artifacts.
19
+
20
+ Returns a summary list (no content blob). Use \`zivis_get_threat_model_artifact\` to fetch the full Mermaid source or canvas JSON for a specific artifact.
21
+
22
+ By default scopes to the threat model's CURRENT version. Pass \`version_id\` to inspect a historical version.`;
23
+ export const LIST_THREAT_MODEL_ARTIFACTS_SCHEMA = {
24
+ threat_model_id: z
25
+ .string()
26
+ .describe("Threat model UUID (from zivis_list_threat_models)"),
27
+ version_id: z
28
+ .string()
29
+ .optional()
30
+ .describe("Optional ThreatModelVersion UUID. If omitted, the threat model's current/latest version is used."),
31
+ artifact_type: z
32
+ .enum([
33
+ "data_flow_diagram",
34
+ "dfd_level_1",
35
+ "dfd_level_2",
36
+ "trust_boundary",
37
+ "system_context",
38
+ "asset_inventory",
39
+ "sequence_diagram",
40
+ "network_topology",
41
+ "cloud_architecture",
42
+ "component_diagram",
43
+ "api_integration",
44
+ "identity_access_flow",
45
+ "deployment_diagram",
46
+ "ci_cd_pipeline",
47
+ "secrets_flow",
48
+ "attack_tree",
49
+ "kill_chain",
50
+ "swimlane_process",
51
+ "entity_relationship",
52
+ "state_machine",
53
+ "misuse_case",
54
+ "stride_annotated",
55
+ "encryption_boundary",
56
+ "backup_recovery",
57
+ "logging_monitoring",
58
+ "entry_point",
59
+ "assumption",
60
+ "canvas_state",
61
+ ])
62
+ .optional()
63
+ .describe("Filter by artifact type (e.g., data_flow_diagram, attack_tree, canvas_state). Note: artifactType is being deprecated in favor of free-form tags; filter by tag client-side if needed."),
64
+ };
65
+ export function createListThreatModelArtifactsHandler(apiClient) {
66
+ return async (params) => {
67
+ try {
68
+ const query = new URLSearchParams();
69
+ if (params.version_id)
70
+ query.set("versionId", params.version_id);
71
+ if (params.artifact_type)
72
+ query.set("artifactType", params.artifact_type);
73
+ const queryStr = query.toString();
74
+ const path = `/api/threat-models/${params.threat_model_id}/artifacts${queryStr ? `?${queryStr}` : ""}`;
75
+ const artifacts = await apiClient.get(path);
76
+ const rows = Array.isArray(artifacts) ? artifacts : [];
77
+ const summary = rows.map((a) => ({
78
+ artifact_id: a.id,
79
+ version_id: a.versionId,
80
+ title: a.title,
81
+ artifact_type: a.artifactType,
82
+ content_type: a.contentType,
83
+ tags: a.tags || [],
84
+ description: a.description || null,
85
+ sort_order: a.sortOrder ?? 0,
86
+ is_stale: a.isStale ?? false,
87
+ stale_reason: a.staleReason || null,
88
+ is_edited: a.isEdited ?? false,
89
+ edited_at: a.editedAt || null,
90
+ last_generated_at: a.lastGeneratedAt || null,
91
+ changed_files_since: a.changedFilesSince ?? null,
92
+ source_type: a.sourceType,
93
+ source_agent_instance_id: a.sourceAgentInstanceId || null,
94
+ source_run_id: a.sourceRunId || null,
95
+ scope_id: a.scopeId || null,
96
+ group_id: a.groupId || null,
97
+ promoted_diagram_id: a.diagramId || null,
98
+ canvas_version: a.canvasVersion ?? null,
99
+ approval_status: a.approvalStatus || null,
100
+ created_at: a.createdAt,
101
+ }));
102
+ const sanitized = sanitizeResponse({
103
+ threat_model_id: params.threat_model_id,
104
+ version_id: params.version_id || null,
105
+ total: summary.length,
106
+ artifacts: summary,
107
+ });
108
+ return {
109
+ content: [{ type: "text", text: JSON.stringify(sanitized, null, 2) }],
110
+ };
111
+ }
112
+ catch (err) {
113
+ const message = err instanceof Error ? err.message : "Failed to list threat model artifacts";
114
+ return {
115
+ content: [{ type: "text", text: `Error: ${message}` }],
116
+ isError: true,
117
+ };
118
+ }
119
+ };
120
+ }
121
+ //# sourceMappingURL=list-threat-model-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-threat-model-artifacts.js","sourceRoot":"","sources":["../../../src/tools/enterprise/list-threat-model-artifacts.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_ACTOR_NAME = "zivis_manage_actor";
9
- export declare const MANAGE_ACTOR_DESCRIPTION = "Create, update, or delete a threat actor in a threat model.\n\nThreat actors represent entities that interact with or threaten the system (e.g., external users, attackers, services). Each actor has a trust level, type, and capabilities.\n\nActions:\n- create: Add a new threat actor (requires name, actor_type, trust_level)\n- update: Modify an existing actor (requires actor_id)\n- delete: Remove an actor (requires actor_id)";
9
+ export declare const MANAGE_ACTOR_DESCRIPTION = "Create, update, or delete a threat actor in a threat model.\n\nWhen to use (plain English): call this when the user describes who interacts with or threatens the app. Common phrasings:\n- \"users / end users / customers / our users can ...\"\n- \"admins / support team / internal employees ...\"\n- \"attacker / adversary / bad actor / malicious user ...\"\n- \"insider / rogue employee ...\"\n- \"vendor / partner / integration partner ...\"\n- \"bot / scraper / automated agent ...\"\n- \"<external service> calls our API\" (the external service is an actor too)\n\nIf you got here from zivis_threat_guide, the args_preview already maps actor_type and trust_level \u2014 start from those and confirm only what's unclear.\n\nThreat actors represent entities that interact with or threaten the system. Each actor has a trust level, type, and capabilities.\n\nAfter create: ask which components this actor interacts with so a data flow can be modeled.\n\nActions:\n- create: Add a new threat actor (requires name, actor_type, trust_level)\n- update: Modify an existing actor (requires actor_id)\n- delete: Remove an actor (requires actor_id)";
10
10
  export declare const MANAGE_ACTOR_SCHEMA: {
11
11
  threat_model_id: z.ZodString;
12
12
  action: z.ZodEnum<{
@@ -8,7 +8,20 @@ import { sanitizeResponse } from "../../sanitize.js";
8
8
  export const MANAGE_ACTOR_NAME = "zivis_manage_actor";
9
9
  export const MANAGE_ACTOR_DESCRIPTION = `Create, update, or delete a threat actor in a threat model.
10
10
 
11
- Threat actors represent entities that interact with or threaten the system (e.g., external users, attackers, services). Each actor has a trust level, type, and capabilities.
11
+ When to use (plain English): call this when the user describes who interacts with or threatens the app. Common phrasings:
12
+ - "users / end users / customers / our users can ..."
13
+ - "admins / support team / internal employees ..."
14
+ - "attacker / adversary / bad actor / malicious user ..."
15
+ - "insider / rogue employee ..."
16
+ - "vendor / partner / integration partner ..."
17
+ - "bot / scraper / automated agent ..."
18
+ - "<external service> calls our API" (the external service is an actor too)
19
+
20
+ If you got here from zivis_threat_guide, the args_preview already maps actor_type and trust_level — start from those and confirm only what's unclear.
21
+
22
+ Threat actors represent entities that interact with or threaten the system. Each actor has a trust level, type, and capabilities.
23
+
24
+ After create: ask which components this actor interacts with so a data flow can be modeled.
12
25
 
13
26
  Actions:
14
27
  - create: Add a new threat actor (requires name, actor_type, trust_level)
@@ -1 +1 @@
1
- {"version":3,"file":"manage-actor.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-actor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manage-actor.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-actor.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_ATTACK_SCENARIO_NAME = "zivis_manage_attack_scenario";
9
- export declare const MANAGE_ATTACK_SCENARIO_DESCRIPTION = "Create, update, or delete an attack scenario in a threat model.\n\nAttack scenarios describe specific attack paths \u2014 how a threat actor could exploit vulnerabilities to achieve their objective. They link actors, components, and attack vectors into a cohesive narrative.\n\nActions:\n- create: Add a new scenario (requires title, narrative, entry_point_id, target_id)\n- update: Update scenario status/notes (requires scenario_id)\n- delete: Remove a scenario (requires scenario_id)";
9
+ export declare const MANAGE_ATTACK_SCENARIO_DESCRIPTION = "Create, update, or delete an attack scenario in a threat model.\n\nWhen to use (plain English): call this when the user describes a security worry, \"what if\" question, or specific failure mode. Common phrasings:\n- \"what if <bad thing happens>\"\n- \"could someone <attack action>\"\n- \"I'm worried about <X> being abused / leaked / hacked\"\n- \"how would an attacker <do X>\"\n- \"is <Y> safe from <Z>\"\n- mentions of: prompt injection, jailbreak, data exfiltration, privilege escalation, account takeover, supply chain, abuse\n\nBefore creating a scenario, the threat model needs at least one entry_point component (where the attack starts) and a target component (where the attacker wants to go). If either is missing, model components first.\n\nThe narrative should be a 2\u20135 sentence story: who attacks, where they enter, what they exploit, what they achieve. Don't write a textbook chapter.\n\nAfter create: ask which test cases should validate this scenario. zivis_manage_test_case curates tests against the scenario; the platform later uses those to drive automated red-team runs.\n\nActions:\n- create: Add a new scenario (requires title, narrative, entry_point_id, target_id)\n- update: Update scenario status/notes (requires scenario_id)\n- delete: Remove a scenario (requires scenario_id)";
10
10
  export declare const MANAGE_ATTACK_SCENARIO_SCHEMA: {
11
11
  threat_model_id: z.ZodString;
12
12
  action: z.ZodEnum<{
@@ -8,7 +8,19 @@ import { sanitizeResponse } from "../../sanitize.js";
8
8
  export const MANAGE_ATTACK_SCENARIO_NAME = "zivis_manage_attack_scenario";
9
9
  export const MANAGE_ATTACK_SCENARIO_DESCRIPTION = `Create, update, or delete an attack scenario in a threat model.
10
10
 
11
- Attack scenarios describe specific attack paths how a threat actor could exploit vulnerabilities to achieve their objective. They link actors, components, and attack vectors into a cohesive narrative.
11
+ When to use (plain English): call this when the user describes a security worry, "what if" question, or specific failure mode. Common phrasings:
12
+ - "what if <bad thing happens>"
13
+ - "could someone <attack action>"
14
+ - "I'm worried about <X> being abused / leaked / hacked"
15
+ - "how would an attacker <do X>"
16
+ - "is <Y> safe from <Z>"
17
+ - mentions of: prompt injection, jailbreak, data exfiltration, privilege escalation, account takeover, supply chain, abuse
18
+
19
+ Before creating a scenario, the threat model needs at least one entry_point component (where the attack starts) and a target component (where the attacker wants to go). If either is missing, model components first.
20
+
21
+ The narrative should be a 2–5 sentence story: who attacks, where they enter, what they exploit, what they achieve. Don't write a textbook chapter.
22
+
23
+ After create: ask which test cases should validate this scenario. zivis_manage_test_case curates tests against the scenario; the platform later uses those to drive automated red-team runs.
12
24
 
13
25
  Actions:
14
26
  - create: Add a new scenario (requires title, narrative, entry_point_id, target_id)
@@ -1 +1 @@
1
- {"version":3,"file":"manage-attack-scenario.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-attack-scenario.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manage-attack-scenario.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-attack-scenario.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,2BAA2B,GAAG,8BAA8B,CAAC;AAE1E,MAAM,CAAC,MAAM,kCAAkC,GAAG;;;;;;;;;;;;;;;;;;;mDAmBC,CAAC;AAEpD,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;IACpH,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACjF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACzF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;IACpH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kFAAkF,CAAC;IAC7H,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAClG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACxF,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IAC7H,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACxJ,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;IAC1G,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACpF,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACnG,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IACtG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACtE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACxE,CAAC;AAEF,MAAM,UAAU,iCAAiC,CAAC,SAAoB;IACpE,OAAO,KAAK,EAAE,MAgBb,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;YAExD,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjE,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kDAAkD,EAAE,CAAC;oBAC9F,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,IAAI,IAA6B,CAAC;YAElC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBACtF,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gFAAgF,EAAE,CAAC;wBAC5H,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CACzB,sBAAsB,eAAe,mBAAmB,EACxD;oBACE,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,YAAY,EAAE,MAAM,CAAC,cAAc;oBACnC,QAAQ,EAAE,MAAM,CAAC,SAAS;oBAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,OAAO,EAAE,MAAM,CAAC,QAAQ;oBACxB,YAAY,EAAE,MAAM,CAAC,aAAa;oBAClC,eAAe,EAAE,MAAM,CAAC,gBAAgB;oBACxC,cAAc,EAAE,MAAM,CAAC,eAAe;iBACvC,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAA4B,EAAE,CAAC;gBACzC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;oBAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC7D,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;oBAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;gBAExE,IAAI,GAAG,MAAM,SAAS,CAAC,KAAK,CAC1B,sBAAsB,eAAe,qBAAqB,WAAW,EAAE,EACvE,IAAI,CACL,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,CACxB,sBAAsB,eAAe,qBAAqB,WAAW,EAAE,CACxE,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5F,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAkC,CAAC;YACxF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBAC/D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -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_COMPONENT_NAME = "zivis_manage_component";
9
- export declare const MANAGE_COMPONENT_DESCRIPTION = "Create, update, or delete an architectural component in a threat model.\n\nComponents represent the building blocks of the system being modeled (e.g., API Gateway, Database, Frontend App, Authentication Service).\n\nActions:\n- create: Add a new component (requires name, component_type)\n- update: Modify an existing component (requires component_id)\n- delete: Remove a component (requires component_id)";
9
+ export declare const MANAGE_COMPONENT_DESCRIPTION = "Create, update, or delete an architectural component in a threat model.\n\nWhen to use (plain English): call this when the user describes a piece of their system or an external service that's part of the architecture. Common phrasings:\n- \"we have a <X> service / our backend / the API gateway / our frontend\"\n- \"we just added <Stripe / OpenAI / Auth0 / Twilio / Datadog / S3>\"\n- \"we use <library / framework> for X\"\n- \"<service> talks to / calls / sends data to <other service>\" \u2014 both endpoints are components\n- \"we deploy on <Vercel / Lambda / k8s>\" (compute platform is a component)\n- mentions of any external SaaS, identity provider, message queue, CDN, secrets manager\n\nPick component_type:\n- entry_point \u2014 anything users hit first (login, public API, webhook receiver)\n- orchestrator \u2014 controllers, routers, API gateways, workflow engines\n- data_store \u2014 DBs, caches, blob storage\n- external_service \u2014 any third-party SaaS the app integrates with (Stripe, OpenAI, etc.)\n- identity_provider \u2014 auth systems (Auth0, Okta, WorkOS)\n- worker \u2014 background processors, queue consumers\n- secrets_manager, message_queue, cdn, proxy \u2014 when those specific terms apply\n\nIf you got here from zivis_threat_guide, args_preview already maps trust + category for known vendors. Use those.\n\nAfter create: ask what data flows in/out of this component so data flows can be modeled.\n\nActions:\n- create: Add a new component (requires name, component_type)\n- update: Modify an existing component (requires component_id)\n- delete: Remove a component (requires component_id)";
10
10
  export declare const MANAGE_COMPONENT_SCHEMA: {
11
11
  threat_model_id: z.ZodString;
12
12
  action: z.ZodEnum<{
@@ -8,7 +8,26 @@ import { sanitizeResponse } from "../../sanitize.js";
8
8
  export const MANAGE_COMPONENT_NAME = "zivis_manage_component";
9
9
  export const MANAGE_COMPONENT_DESCRIPTION = `Create, update, or delete an architectural component in a threat model.
10
10
 
11
- Components represent the building blocks of the system being modeled (e.g., API Gateway, Database, Frontend App, Authentication Service).
11
+ When to use (plain English): call this when the user describes a piece of their system or an external service that's part of the architecture. Common phrasings:
12
+ - "we have a <X> service / our backend / the API gateway / our frontend"
13
+ - "we just added <Stripe / OpenAI / Auth0 / Twilio / Datadog / S3>"
14
+ - "we use <library / framework> for X"
15
+ - "<service> talks to / calls / sends data to <other service>" — both endpoints are components
16
+ - "we deploy on <Vercel / Lambda / k8s>" (compute platform is a component)
17
+ - mentions of any external SaaS, identity provider, message queue, CDN, secrets manager
18
+
19
+ Pick component_type:
20
+ - entry_point — anything users hit first (login, public API, webhook receiver)
21
+ - orchestrator — controllers, routers, API gateways, workflow engines
22
+ - data_store — DBs, caches, blob storage
23
+ - external_service — any third-party SaaS the app integrates with (Stripe, OpenAI, etc.)
24
+ - identity_provider — auth systems (Auth0, Okta, WorkOS)
25
+ - worker — background processors, queue consumers
26
+ - secrets_manager, message_queue, cdn, proxy — when those specific terms apply
27
+
28
+ If you got here from zivis_threat_guide, args_preview already maps trust + category for known vendors. Use those.
29
+
30
+ After create: ask what data flows in/out of this component so data flows can be modeled.
12
31
 
13
32
  Actions:
14
33
  - create: Add a new component (requires name, component_type)
@@ -1 +1 @@
1
- {"version":3,"file":"manage-component.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manage-component.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-component.ts"],"names":[],"mappings":"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"}